[BACK]Return to init.c CVS log [TXT][DIR] Up to [local] / OpenXM_contrib2 / asir2000 / engine

Diff for /OpenXM_contrib2/asir2000/engine/init.c between version 1.26 and 1.34

version 1.26, 2006/02/25 06:33:31 version 1.34, 2018/03/29 01:32:52
Line 45 
Line 45 
  * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE,   * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE,
  * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE.   * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE.
  *   *
  * $OpenXM: OpenXM_contrib2/asir2000/engine/init.c,v 1.25 2006/02/13 11:41:11 noro Exp $   * $OpenXM: OpenXM_contrib2/asir2000/engine/init.c,v 1.33 2015/08/04 06:20:45 noro Exp $
 */  */
 #include "ca.h"  #include "ca.h"
   #include "parse.h"
 #include "version.h"  #include "version.h"
 #include "prime.h"  #include "prime.h"
   
Line 81  C IU = &oIU;
Line 82  C IU = &oIU;
 USINT VOIDobj = &oVOID;  USINT VOIDobj = &oVOID;
   
 int bigfloat;  int bigfloat;
   int evalef = 0;
 int nez = 1;  int nez = 1;
 int current_mod = 0;  int current_mod = 0;
 int StrassenSize = 0;  int StrassenSize = 0;
 int outputstyle = 0;  int outputstyle = 0;
   int Itvplot = 33;
   
 static int *lprime;  static int *lprime;
 static int lprime_size;  static int lprime_size;
   
 #if defined(PARI)  
 int paristack = 1<<16;  
 #define ADDBF addbf  #define ADDBF addbf
 #define SUBBF subbf  #define SUBBF subbf
 #define MULBF mulbf  #define MULBF mulbf
Line 98  int paristack = 1<<16;
Line 99  int paristack = 1<<16;
 #define PWRBF pwrbf  #define PWRBF pwrbf
 #define CHSGNBF chsgnbf  #define CHSGNBF chsgnbf
 #define CMPBF cmpbf  #define CMPBF cmpbf
 # else  
 #define ADDBF 0  
 #define SUBBF 0  
 #define MULBF 0  
 #define DIVBF 0  
 #define PWRBF 0  
 #define CHSGNBF 0  
 #define CMPBF 0  
 #endif  
   
 #if defined(INTERVAL)  #if defined(INTERVAL)
 int zerorewrite = 0;  int zerorewrite = 0;
Line 131  double get_current_time();
Line 123  double get_current_time();
 void init_lprime();  void init_lprime();
   
 void nglob_init() {  void nglob_init() {
         PL(&oUNIN) = 1; BD(&oUNIN)[0] = 1;    PL(&oUNIN) = 1; BD(&oUNIN)[0] = 1;
         PL(&oTWON) = 1; BD(&oTWON)[0] = 2;    PL(&oTWON) = 1; BD(&oTWON)[0] = 2;
         PL(&oTHREEN) = 1; BD(&oTHREEN)[0] = 3;    PL(&oTHREEN) = 1; BD(&oTHREEN)[0] = 3;
         PL(&oFOURN) = 1; BD(&oFOURN)[0] = 4;    PL(&oFOURN) = 1; BD(&oFOURN)[0] = 4;
         PL(&oFIVEN) = 1; BD(&oFIVEN)[0] = 5;    PL(&oFIVEN) = 1; BD(&oFIVEN)[0] = 5;
         PL(&oSIXN) = 1; BD(&oSIXN)[0] = 6;    PL(&oSIXN) = 1; BD(&oSIXN)[0] = 6;
         PL(&oSEVENN) = 1; BD(&oSEVENN)[0] = 7;    PL(&oSEVENN) = 1; BD(&oSEVENN)[0] = 7;
         PL(&oEIGHTN) = 1; BD(&oEIGHTN)[0] = 8;    PL(&oEIGHTN) = 1; BD(&oEIGHTN)[0] = 8;
   
         oONEUP2.w = 1; oONEUP2.b[0] = 1;    oONEUP2.w = 1; oONEUP2.b[0] = 1;
   
         OID(&oUNIQ) = O_N; NID(&oUNIQ) = N_Q;    OID(&oUNIQ) = O_N; NID(&oUNIQ) = N_Q;
         SGN(&oUNIQ) = 1; NM(&oUNIQ) = &oUNIN; DN(&oUNIQ) = 0;    SGN(&oUNIQ) = 1; NM(&oUNIQ) = &oUNIN; DN(&oUNIQ) = 0;
   
         OID(&oTWOQ) = O_N; NID(&oTWOQ) = N_Q;    OID(&oTWOQ) = O_N; NID(&oTWOQ) = N_Q;
         SGN(&oTWOQ) = 1; NM(&oTWOQ) = &oTWON; DN(&oTWOQ) = 0;    SGN(&oTWOQ) = 1; NM(&oTWOQ) = &oTWON; DN(&oTWOQ) = 0;
   
         OID(&oTHREEQ) = O_N; NID(&oTHREEQ) = N_Q;    OID(&oTHREEQ) = O_N; NID(&oTHREEQ) = N_Q;
         SGN(&oTHREEQ) = 1; NM(&oTHREEQ) = &oTHREEN; DN(&oTHREEQ) = 0;    SGN(&oTHREEQ) = 1; NM(&oTHREEQ) = &oTHREEN; DN(&oTHREEQ) = 0;
   
         OID(&oFOURQ) = O_N; NID(&oFOURQ) = N_Q;    OID(&oFOURQ) = O_N; NID(&oFOURQ) = N_Q;
         SGN(&oFOURQ) = 1; NM(&oFOURQ) = &oFOURN; DN(&oFOURQ) = 0;    SGN(&oFOURQ) = 1; NM(&oFOURQ) = &oFOURN; DN(&oFOURQ) = 0;
   
         OID(&oFIVEQ) = O_N; NID(&oFIVEQ) = N_Q;    OID(&oFIVEQ) = O_N; NID(&oFIVEQ) = N_Q;
         SGN(&oFIVEQ) = 1; NM(&oFIVEQ) = &oFIVEN; DN(&oFIVEQ) = 0;    SGN(&oFIVEQ) = 1; NM(&oFIVEQ) = &oFIVEN; DN(&oFIVEQ) = 0;
   
         OID(&oSIXQ) = O_N; NID(&oSIXQ) = N_Q;    OID(&oSIXQ) = O_N; NID(&oSIXQ) = N_Q;
         SGN(&oSIXQ) = 1; NM(&oSIXQ) = &oSIXN; DN(&oSIXQ) = 0;    SGN(&oSIXQ) = 1; NM(&oSIXQ) = &oSIXN; DN(&oSIXQ) = 0;
   
         OID(&oSEVENQ) = O_N; NID(&oSEVENQ) = N_Q;    OID(&oSEVENQ) = O_N; NID(&oSEVENQ) = N_Q;
         SGN(&oSEVENQ) = 1; NM(&oSEVENQ) = &oSEVENN; DN(&oSEVENQ) = 0;    SGN(&oSEVENQ) = 1; NM(&oSEVENQ) = &oSEVENN; DN(&oSEVENQ) = 0;
   
         OID(&oEIGHTQ) = O_N; NID(&oEIGHTQ) = N_Q;    OID(&oEIGHTQ) = O_N; NID(&oEIGHTQ) = N_Q;
         SGN(&oEIGHTQ) = 1; NM(&oEIGHTQ) = &oEIGHTN; DN(&oEIGHTQ) = 0;    SGN(&oEIGHTQ) = 1; NM(&oEIGHTQ) = &oEIGHTN; DN(&oEIGHTQ) = 0;
   
         OID(&oUNIR) = O_R; NM(&oUNIR) = (P)&oUNIQ; DN(&oUNIR) = (P)&oUNIQ; oUNIR.reduced = 1;    OID(&oUNIR) = O_R; NM(&oUNIR) = (P)&oUNIQ; DN(&oUNIR) = (P)&oUNIQ; oUNIR.reduced = 1;
         OID(&oUNIMQ) = O_N; NID(&oUNIMQ) = N_M; CONT(&oUNIMQ) = 1;    OID(&oUNIMQ) = O_N; NID(&oUNIMQ) = N_M; CONT(&oUNIMQ) = 1;
         OID(&oUNILM) = O_N; NID(&oUNILM) = N_LM; BDY(&oUNILM) = ONEN;    OID(&oUNILM) = O_N; NID(&oUNILM) = N_LM; BDY(&oUNILM) = ONEN;
         OID(&oIU) = O_N; NID(&oIU) = N_C; oIU.r = 0; oIU.i = (Num)ONE;    OID(&oIU) = O_N; NID(&oIU) = N_C; oIU.r = 0; oIU.i = (Num)ONE;
   
         MKLM(&oTHREEN,THREE_LM);    MKLM(&oTHREEN,THREE_LM);
         MKLM(&oFOURN,FOUR_LM);    MKLM(&oFOURN,FOUR_LM);
         MKLM(&oEIGHTN,EIGHT_LM);    MKLM(&oEIGHTN,EIGHT_LM);
   
         OID(&oVOID) = O_VOID;    OID(&oVOID) = O_VOID;
   
 /* moved to parse/main.c */  /* moved to parse/main.c */
 #if 0  #if 0
 #if defined(PARI)  #if defined(PARI)
         risa_pari_init();    risa_pari_init();
 #endif  #endif
         srandom((int)get_current_time());    srandom((int)get_current_time());
 #endif  #endif
         init_up2_tab();    init_up2_tab();
   
         init_lprime();    init_lprime();
     init_gmpq();
 }  }
   
 extern double gctime;  extern double GC_get_gctime();
 double suspend_start;  double suspend_start;
 double suspended_time=0;  double suspended_time=0;
   
 void get_eg(struct oEGT *p)  void get_eg(struct oEGT *p)
 {  {
         p->exectime = get_clock() - gctime - suspended_time; p->gctime = gctime;    double gctime = GC_get_gctime();
     p->exectime = get_clock() - gctime - suspended_time; p->gctime = gctime;
 }  }
   
 void init_eg(struct oEGT *eg)  void init_eg(struct oEGT *eg)
 {  {
         bzero((char *)eg,sizeof(struct oEGT));    bzero((char *)eg,sizeof(struct oEGT));
 }  }
   
 void add_eg(struct oEGT *base,struct oEGT *start,struct oEGT *end)  void add_eg(struct oEGT *base,struct oEGT *start,struct oEGT *end)
 {  {
         base->exectime += end->exectime - start->exectime;    base->exectime += end->exectime - start->exectime;
         base->gctime += end->gctime - start->gctime;    base->gctime += end->gctime - start->gctime;
 }  }
   
 void print_eg(char *item,struct oEGT *eg)  void print_eg(char *item,struct oEGT *eg)
 {  {
         printf("%s=(%.4g,%.4g)",item,eg->exectime,eg->gctime);    printf("%s=(%.4g,%.4g)",item,eg->exectime,eg->gctime);
 }  }
   
 void print_split_eg(struct oEGT *start,struct oEGT *end)  void print_split_eg(struct oEGT *start,struct oEGT *end)
 {  {
         struct oEGT base;    struct oEGT base;
   
         init_eg(&base); add_eg(&base,start,end);    init_eg(&base); add_eg(&base,start,end);
         printf("(%.4g,%.4g)",base.exectime,base.gctime);    printf("(%.4g,%.4g)",base.exectime,base.gctime);
 }  }
   
 void print_split_e(struct oEGT *start,struct oEGT *end)  void print_split_e(struct oEGT *start,struct oEGT *end)
 {  {
         struct oEGT base;    struct oEGT base;
   
         init_eg(&base); add_eg(&base,start,end);    init_eg(&base); add_eg(&base,start,end);
         printf("(%.4g)",base.exectime);    printf("(%.4g)",base.exectime);
 }  }
   
 void suspend_timer() {  void suspend_timer() {
         suspend_start = get_clock();    suspend_start = get_clock();
 }  }
   
 void resume_timer() {  void resume_timer() {
         suspended_time += get_clock()-suspend_start;    suspended_time += get_clock()-suspend_start;
 }  }
   
 extern int lm_lazy, up_lazy;  extern int lm_lazy, up_lazy;
Line 244  extern int do_weyl;
Line 238  extern int do_weyl;
 extern int dp_fcoeffs;  extern int dp_fcoeffs;
   
 void reset_engine() {  void reset_engine() {
         lm_lazy = 0;    lm_lazy = 0;
         up_lazy = 0;    up_lazy = 0;
         do_weyl = 0;    do_weyl = 0;
         dp_fcoeffs = 0;    dp_fcoeffs = 0;
         GC_dont_gc = 0;    GC_dont_gc = 0;
 }  }
   
 unsigned int get_asir_version() {  unsigned int get_asir_version() {
         return ASIR_VERSION;    return ASIR_VERSION;
 }  }
   
 char *get_asir_distribution() {  char *get_asir_distribution() {
         return ASIR_DISTRIBUTION;    return ASIR_DISTRIBUTION;
 }  }
   
   
 void create_error(ERR *err,unsigned int serial,char *msg,LIST trace)  void create_error(ERR *err,unsigned int serial,char *msg,LIST trace)
 {  {
         int len;    int len;
         USINT ui,notsupp;    USINT ui,notsupp;
         NODE n,n1;    NODE n,n1;
         LIST list;    LIST list;
         char *msg1;    char *msg1;
         STRING errmsg;    STRING errmsg;
   
         MKUSINT(ui,serial);    MKUSINT(ui,serial);
         MKUSINT(notsupp,-1);    MKUSINT(notsupp,-1);
         len = strlen(msg);    len = strlen(msg);
         msg1 = (char *)MALLOC(len+1);    msg1 = (char *)MALLOC(len+1);
         strcpy(msg1,msg);    strcpy(msg1,msg);
         MKSTR(errmsg,msg1);    MKSTR(errmsg,msg1);
         if ( !trace )    if ( !trace )
                 MKLIST(trace,0);      MKLIST(trace,0);
         n = mknode(4,ui,notsupp,errmsg,trace); MKLIST(list,n);    n = mknode(4,ui,notsupp,errmsg,trace); MKLIST(list,n);
         MKERR(*err,list);    MKERR(*err,list);
 }  }
   
 void init_lprime()  void init_lprime()
 {  {
         int s,i;    int s,i;
   
         s = sizeof(lprime_init);    s = sizeof(lprime_init);
         lprime = (int *)GC_malloc_atomic(s);    lprime = (int *)MALLOC_ATOMIC(s);
         lprime_size = s/sizeof(int);    lprime_size = s/sizeof(int);
         for ( i = 0; i < lprime_size; i++ )    for ( i = 0; i < lprime_size; i++ )
                 lprime[i] = lprime_init[lprime_size-i-1];      lprime[i] = lprime_init[lprime_size-i-1];
 }  }
   
 void create_new_lprimes(int);  void create_new_lprimes(int);
   
 int get_lprime(index)  int get_lprime(index)
 {  {
         if ( index >= lprime_size )    if ( index >= lprime_size )
                 create_new_lprimes(index);      create_new_lprimes(index);
         return lprime[index];    return lprime[index];
 }  }
   
 void create_new_lprimes(int index)  void create_new_lprimes(int index)
 {  {
         int count,p,i,j,d;    int count,p,i,j,d;
   
         if ( index < lprime_size )    if ( index < lprime_size )
                 return;      return;
         count = index-lprime_size+1;    count = index-lprime_size+1;
         if ( count < 256 )    if ( count < 256 )
                 count = 256;      count = 256;
         lprime = (int *)GC_realloc(lprime,(lprime_size+count)*sizeof(int));    lprime = (int *)GC_realloc(lprime,(lprime_size+count)*sizeof(int));
         p = lprime[lprime_size-1]+2;    p = lprime[lprime_size-1]+2;
         for ( i = 0; i < count; p += 2 ) {    for ( i = 0; i < count; p += 2 ) {
                 for ( j = 0; d = sprime[j]; j++ ) {      for ( j = 0; d = sprime[j]; j++ ) {
                         if ( d*d > p ) {        if ( d*d > p ) {
                                 lprime[i+lprime_size] = p;          lprime[i+lprime_size] = p;
                                 i++;          i++;
                                 break;          break;
                         }        }
                         if ( !(p%d) )        if ( !(p%d) )
                                 break;          break;
                 }      }
         }    }
         lprime_size += count;    lprime_size += count;
 }  }

Legend:
Removed from v.1.26  
changed lines
  Added in v.1.34

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>