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

Diff for /OpenXM_contrib2/asir2000/engine/nd.c between version 1.78 and 1.80

version 1.78, 2003/10/10 01:51:09 version 1.80, 2003/10/10 10:07:18
Line 1 
Line 1 
 /* $OpenXM: OpenXM_contrib2/asir2000/engine/nd.c,v 1.77 2003/10/08 09:09:04 noro Exp $ */  /* $OpenXM: OpenXM_contrib2/asir2000/engine/nd.c,v 1.79 2003/10/10 07:18:12 noro Exp $ */
   
 #include "ca.h"  #include "ca.h"
 #include "parse.h"  #include "parse.h"
Line 2832  int nd_get_exporigin(struct order_spec *ord)
Line 2832  int nd_get_exporigin(struct order_spec *ord)
 }  }
   
 void nd_setup_parameters(int nvar,int max) {  void nd_setup_parameters(int nvar,int max) {
         int i,j,n,elen,ord_o,ord_l,l,s;          int i,j,n,elen,ord_o,ord_l,l,s,wpd;
         struct order_pair *op;          struct order_pair *op;
         int bpe;  
   
         if ( !max ) bpe = nd_bpe;  
         else if ( max < 2 ) bpe = 1;  
         else if ( max < 4 ) bpe = 2;  
         else if ( max < 8 ) bpe = 3;  
         else if ( max < 16 ) bpe = 4;  
         else if ( max < 32 ) bpe = 5;  
         else if ( max < 64 ) bpe = 6;  
         else if ( max < 256 ) bpe = 8;  
         else if ( max < 1024 ) bpe = 10;  
         else if ( max < 65536 ) bpe = 16;  
         else bpe = 32;  
         if ( bpe != nd_bpe || nvar != nd_nvar )  
                 nd_free_private_storage();  
         nd_bpe = bpe;  
         nd_nvar = nvar;          nd_nvar = nvar;
           if ( max ) {
                   if ( max < 2 ) nd_bpe = 1;
                   else if ( max < 4 ) nd_bpe = 2;
                   else if ( max < 8 ) nd_bpe = 3;
                   else if ( max < 16 ) nd_bpe = 4;
                   else if ( max < 32 ) nd_bpe = 5;
                   else if ( max < 64 ) nd_bpe = 6;
                   else if ( max < 256 ) nd_bpe = 8;
                   else if ( max < 1024 ) nd_bpe = 10;
                   else if ( max < 65536 ) nd_bpe = 16;
                   else nd_bpe = 32;
           }
         nd_epw = (sizeof(UINT)*8)/nd_bpe;          nd_epw = (sizeof(UINT)*8)/nd_bpe;
         elen = nd_nvar/nd_epw+(nd_nvar%nd_epw?1:0);          elen = nd_nvar/nd_epw+(nd_nvar%nd_epw?1:0);
   
         nd_exporigin = nd_get_exporigin(nd_ord);          nd_exporigin = nd_get_exporigin(nd_ord);
         nd_wpd = nd_exporigin+elen;          wpd = nd_exporigin+elen;
           if ( wpd != nd_wpd ) {
                   nd_free_private_storage();
                   nd_wpd = wpd;
           }
         if ( nd_bpe < 32 ) {          if ( nd_bpe < 32 ) {
                 nd_mask0 = (1<<nd_bpe)-1;                  nd_mask0 = (1<<nd_bpe)-1;
         } else {          } else {
Line 4143  NODE nd_f4_red(int m,ND_pairs sp0,UINT *s0vect,int col
Line 4142  NODE nd_f4_red(int m,ND_pairs sp0,UINT *s0vect,int col
         int **spmat;          int **spmat;
         UINT *svect,*v;          UINT *svect,*v;
         int *colstat;          int *colstat;
         struct oEGT eg0,eg1,eg_f4;          struct oEGT eg0,eg1,eg2,eg_f4,eg_f4_1,eg_f4_2;
         NM_ind_pair *rvect;          NM_ind_pair *rvect;
         int maxrs;          int maxrs;
         int *spsugar;          int *spsugar;
Line 4185  NODE nd_f4_red(int m,ND_pairs sp0,UINT *s0vect,int col
Line 4184  NODE nd_f4_red(int m,ND_pairs sp0,UINT *s0vect,int col
                 }                  }
                 nd_free(spol);                  nd_free(spol);
         }          }
           get_eg(&eg1); init_eg(&eg_f4_1); add_eg(&eg_f4_1,&eg0,&eg1);
           if ( DP_Print ) {
                   fprintf(asir_out,"elim1=%fsec,",eg_f4_1.exectime+eg_f4_1.gctime);
                   fflush(asir_out);
           }
         /* free index arrays */          /* free index arrays */
         for ( i = 0; i < nred; i++ ) GC_free(imat[i]->index.c);          for ( i = 0; i < nred; i++ ) GC_free(imat[i]->index.c);
   
Line 4202  NODE nd_f4_red(int m,ND_pairs sp0,UINT *s0vect,int col
Line 4206  NODE nd_f4_red(int m,ND_pairs sp0,UINT *s0vect,int col
                 GC_free(spmat[i]);                  GC_free(spmat[i]);
         }          }
         for ( ; i < sprow; i++ ) GC_free(spmat[i]);          for ( ; i < sprow; i++ ) GC_free(spmat[i]);
         get_eg(&eg1); init_eg(&eg_f4); add_eg(&eg_f4,&eg0,&eg1);          get_eg(&eg2); init_eg(&eg_f4_2); add_eg(&eg_f4_2,&eg1,&eg2);
           init_eg(&eg_f4); add_eg(&eg_f4,&eg0,&eg2);
         if ( DP_Print ) {          if ( DP_Print ) {
                   fprintf(asir_out,"elim2=%fsec\n",eg_f4_2.exectime+eg_f4_2.gctime);
                 fprintf(asir_out,"nsp=%d,nred=%d,spmat=(%d,%d),rank=%d  ",                  fprintf(asir_out,"nsp=%d,nred=%d,spmat=(%d,%d),rank=%d  ",
                         nsp,nred,sprow,spcol,rank);                          nsp,nred,sprow,spcol,rank);
                 fprintf(asir_out,"%fsec\n",eg_f4.exectime+eg_f4.gctime);                  fprintf(asir_out,"%fsec\n",eg_f4.exectime+eg_f4.gctime);

Legend:
Removed from v.1.78  
changed lines
  Added in v.1.80

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