Annotation of OpenXM_contrib2/asir2000/engine/init.c, Revision 1.1
1.1 ! noro 1: /* $OpenXM: OpenXM/src/asir99/engine/init.c,v 1.1.1.1 1999/11/10 08:12:26 noro Exp $ */
! 2: #include "ca.h"
! 3: #include "version.h"
! 4:
! 5: struct oN oUNIN,oTWON,oTHREEN,oFOURN,oFIVEN,oSIXN,oSEVENN,oEIGHTN;
! 6: struct oQ oUNIQ,oTWOQ,oTHREEQ,oFOURQ,oFIVEQ,oSIXQ,oSEVENQ,oEIGHTQ;
! 7:
! 8: struct oUP2 oONEUP2;
! 9:
! 10: N ONEN = &oUNIN;
! 11: Q ONE = &oUNIQ;
! 12: Q TWO = &oTWOQ;
! 13: Q THREE = &oTHREEQ;
! 14: Q FOUR = &oFOURQ;
! 15: Q FIVE = &oFIVEQ;
! 16: Q SIX = &oSIXQ;
! 17: Q SEVEN = &oSEVENQ;
! 18: Q EIGHT = &oEIGHTQ;
! 19:
! 20: LM THREE_LM,FOUR_LM,EIGHT_LM;
! 21:
! 22: struct oR oUNIR;
! 23: struct oMQ oUNIMQ;
! 24: struct oLM oUNILM;
! 25: struct oC oIU;
! 26: struct oUSINT oVOID;
! 27:
! 28: MQ ONEM = &oUNIMQ;
! 29: LM ONELM = &oUNILM;
! 30: UP2 ONEUP2 = &oONEUP2;
! 31: C IU = &oIU;
! 32: USINT VOIDobj = &oVOID;
! 33:
! 34: int bigfloat;
! 35: int nez = 1;
! 36: int current_mod = 0;
! 37:
! 38: #if PARI
! 39: #if defined(THINK_C)
! 40: int paristack = 1<<16;
! 41: #else
! 42: int paristack = 1<<20;
! 43: #endif
! 44:
! 45: void (*addnumt[])() = { addq, addreal, addalg, addbf, addcplx, addmi, addlm, addgf2n, addgfpn };
! 46: void (*subnumt[])() = { subq, subreal, subalg, subbf, subcplx, submi, sublm, subgf2n, subgfpn };
! 47: void (*mulnumt[])() = { mulq, mulreal, mulalg, mulbf, mulcplx, mulmi, mullm, mulgf2n, mulgfpn };
! 48: void (*divnumt[])() = { divq, divreal, divalg, divbf, divcplx, divmi, divlm, divgf2n, divgfpn };
! 49: void (*pwrnumt[])() = { pwrq, pwrreal, pwralg, pwrbf, pwrcplx, pwrmi, pwrlm, pwrgf2n, pwrgfpn };
! 50: void (*chsgnnumt[])() = { chsgnq, chsgnreal, chsgnalg, chsgnbf, chsgncplx, chsgnmi, chsgnlm, chsgngf2n, chsgngfpn };
! 51: int (*cmpnumt[])() = { cmpq, cmpreal, cmpalg, cmpbf, cmpcplx, cmpmi, cmplm, cmpgf2n, cmpgfpn };
! 52: #else
! 53: void (*addnumt[])() = { addq, addreal, addalg, 0, addcplx, addmi, addlm, addgf2n, addgfpn };
! 54: void (*subnumt[])() = { subq, subreal, subalg, 0, subcplx, submi, sublm, subgf2n, subgfpn };
! 55: void (*mulnumt[])() = { mulq, mulreal, mulalg, 0, mulcplx, mulmi, mullm, mulgf2n, mulgfpn };
! 56: void (*divnumt[])() = { divq, divreal, divalg, 0, divcplx, divmi, divlm, divgf2n,divgfpn };
! 57: void (*pwrnumt[])() = { pwrq, pwrreal, pwralg, 0, pwrcplx, pwrmi, pwrlm, pwrgf2n, pwrgfpn };
! 58: void (*chsgnnumt[])() = { chsgnq, chsgnreal, chsgnalg, 0, chsgncplx, chsgnmi, chsgnlm, chsgngf2n, chsgngfpn };
! 59: int (*cmpnumt[])() = { cmpq, cmpreal, cmpalg, 0, cmpcplx, cmpmi, cmplm, cmpgf2n, cmpgfpn };
! 60: #endif
! 61:
! 62: double get_current_time();
! 63:
! 64: void nglob_init() {
! 65: PL(&oUNIN) = 1; BD(&oUNIN)[0] = 1;
! 66: PL(&oTWON) = 1; BD(&oTWON)[0] = 2;
! 67: PL(&oTHREEN) = 1; BD(&oTHREEN)[0] = 3;
! 68: PL(&oFOURN) = 1; BD(&oFOURN)[0] = 4;
! 69: PL(&oFIVEN) = 1; BD(&oFIVEN)[0] = 5;
! 70: PL(&oSIXN) = 1; BD(&oSIXN)[0] = 6;
! 71: PL(&oSEVENN) = 1; BD(&oSEVENN)[0] = 7;
! 72: PL(&oEIGHTN) = 1; BD(&oEIGHTN)[0] = 8;
! 73:
! 74: oONEUP2.w = 1; oONEUP2.b[0] = 1;
! 75:
! 76: OID(&oUNIQ) = O_N; NID(&oUNIQ) = N_Q;
! 77: SGN(&oUNIQ) = 1; NM(&oUNIQ) = &oUNIN; DN(&oUNIQ) = 0;
! 78:
! 79: OID(&oTWOQ) = O_N; NID(&oTWOQ) = N_Q;
! 80: SGN(&oTWOQ) = 1; NM(&oTWOQ) = &oTWON; DN(&oTWOQ) = 0;
! 81:
! 82: OID(&oTHREEQ) = O_N; NID(&oTHREEQ) = N_Q;
! 83: SGN(&oTHREEQ) = 1; NM(&oTHREEQ) = &oTHREEN; DN(&oTHREEQ) = 0;
! 84:
! 85: OID(&oFOURQ) = O_N; NID(&oFOURQ) = N_Q;
! 86: SGN(&oFOURQ) = 1; NM(&oFOURQ) = &oFOURN; DN(&oFOURQ) = 0;
! 87:
! 88: OID(&oFIVEQ) = O_N; NID(&oFIVEQ) = N_Q;
! 89: SGN(&oFIVEQ) = 1; NM(&oFIVEQ) = &oFIVEN; DN(&oFIVEQ) = 0;
! 90:
! 91: OID(&oSIXQ) = O_N; NID(&oSIXQ) = N_Q;
! 92: SGN(&oSIXQ) = 1; NM(&oSIXQ) = &oSIXN; DN(&oSIXQ) = 0;
! 93:
! 94: OID(&oSEVENQ) = O_N; NID(&oSEVENQ) = N_Q;
! 95: SGN(&oSEVENQ) = 1; NM(&oSEVENQ) = &oSEVENN; DN(&oSEVENQ) = 0;
! 96:
! 97: OID(&oEIGHTQ) = O_N; NID(&oEIGHTQ) = N_Q;
! 98: SGN(&oEIGHTQ) = 1; NM(&oEIGHTQ) = &oEIGHTN; DN(&oEIGHTQ) = 0;
! 99:
! 100: OID(&oUNIR) = O_R; NM(&oUNIR) = (P)&oUNIQ; DN(&oUNIR) = (P)&oUNIQ; oUNIR.reduced = 1;
! 101: OID(&oUNIMQ) = O_N; NID(&oUNIMQ) = N_M; CONT(&oUNIMQ) = 1;
! 102: OID(&oUNILM) = O_N; NID(&oUNILM) = N_LM; BDY(&oUNILM) = ONEN;
! 103: OID(&oIU) = O_N; NID(&oIU) = N_C; oIU.r = 0; oIU.i = (Num)ONE;
! 104:
! 105: MKLM(&oTHREEN,THREE_LM);
! 106: MKLM(&oFOURN,FOUR_LM);
! 107: MKLM(&oEIGHTN,EIGHT_LM);
! 108:
! 109: OID(&oVOID) = O_VOID;
! 110:
! 111: /* moved to parse/main.c */
! 112: #if 0
! 113: #if PARI
! 114: risa_pari_init();
! 115: #endif
! 116: srandom((int)get_current_time());
! 117: #endif
! 118: init_up2_tab();
! 119: }
! 120:
! 121: extern double gctime;
! 122: double suspend_start;
! 123: double suspended_time=0;
! 124:
! 125: void get_eg(p)
! 126: struct oEGT *p;
! 127: {
! 128: p->exectime = get_clock() - gctime - suspended_time; p->gctime = gctime;
! 129: }
! 130:
! 131: void init_eg(eg)
! 132: struct oEGT *eg;
! 133: {
! 134: bzero((char *)eg,sizeof(struct oEGT));
! 135: }
! 136:
! 137: void add_eg(base,start,end)
! 138: struct oEGT *base,*start,*end;
! 139: {
! 140: base->exectime += end->exectime - start->exectime;
! 141: base->gctime += end->gctime - start->gctime;
! 142: }
! 143:
! 144: void print_eg(item,eg)
! 145: char *item;
! 146: struct oEGT *eg;
! 147: {
! 148: printf("%s=(%.4g,%.4g)",item,eg->exectime,eg->gctime);
! 149: }
! 150:
! 151: void print_split_eg(start,end)
! 152: struct oEGT *start,*end;
! 153: {
! 154: struct oEGT base;
! 155:
! 156: init_eg(&base); add_eg(&base,start,end);
! 157: printf("(%.4g,%.4g)",base.exectime,base.gctime);
! 158: }
! 159:
! 160: void print_split_e(start,end)
! 161: struct oEGT *start,*end;
! 162: {
! 163: struct oEGT base;
! 164:
! 165: init_eg(&base); add_eg(&base,start,end);
! 166: printf("(%.4g)",base.exectime);
! 167: }
! 168:
! 169: void suspend_timer() {
! 170: suspend_start = get_clock();
! 171: }
! 172:
! 173: void resume_timer() {
! 174: suspended_time += get_clock()-suspend_start;
! 175: }
! 176:
! 177: extern int lm_lazy, up_lazy;
! 178: extern GC_dont_gc;
! 179:
! 180: void reset_engine() {
! 181: lm_lazy = 0; up_lazy = 0;
! 182: GC_dont_gc = 0;
! 183: }
! 184:
! 185: unsigned int get_asir_version() {
! 186: return ASIR_VERSION;
! 187: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>