[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.79 and 1.81

version 1.79, 2003/10/10 07:18:12 version 1.81, 2003/10/11 02:14:19
Line 1 
Line 1 
 /* $OpenXM: OpenXM_contrib2/asir2000/engine/nd.c,v 1.78 2003/10/10 01:51:09 noro Exp $ */  /* $OpenXM: OpenXM_contrib2/asir2000/engine/nd.c,v 1.80 2003/10/10 10:07:18 noro Exp $ */
   
 #include "ca.h"  #include "ca.h"
 #include "parse.h"  #include "parse.h"
Line 784  INLINE int ndl_equal(UINT *d1,UINT *d2)
Line 784  INLINE int ndl_equal(UINT *d1,UINT *d2)
 {  {
         int i;          int i;
   
         for ( i = 0; i < nd_wpd; i++ )          switch ( nd_wpd ) {
                 if ( *d1++ != *d2++ )                  case 2:
                         return 0;                          if ( TD(d2) != TD(d1) ) return 0;
         return 1;                          if ( d2[1] != d1[1] ) return 0;
                           return 1;
                           break;
                   case 3:
                           if ( TD(d2) != TD(d1) ) return 0;
                           if ( d2[1] != d1[1] ) return 0;
                           if ( d2[2] != d1[2] ) return 0;
                           return 1;
                           break;
                   default:
                           for ( i = 0; i < nd_wpd; i++ )
                                   if ( *d1++ != *d2++ ) return 0;
                           return 1;
                           break;
           }
 }  }
   
 INLINE void ndl_copy(UINT *d1,UINT *d2)  INLINE void ndl_copy(UINT *d1,UINT *d2)
Line 3823  IndArray nm_ind_pair_to_vect_compress(int mod,UINT *s0
Line 3837  IndArray nm_ind_pair_to_vect_compress(int mod,UINT *s0
         NDV p;          NDV p;
         unsigned char *ivc;          unsigned char *ivc;
         unsigned short *ivs;          unsigned short *ivs;
         UINT *v,*ivi;          UINT *v,*ivi,*s0v;
         int i,j,len,prev,diff,cdiff;          int i,j,len,prev,diff,cdiff;
         IndArray r;          IndArray r;
   
Line 3832  IndArray nm_ind_pair_to_vect_compress(int mod,UINT *s0
Line 3846  IndArray nm_ind_pair_to_vect_compress(int mod,UINT *s0
         p = nd_ps[pair->index];          p = nd_ps[pair->index];
         len = LEN(p);          len = LEN(p);
         t = (UINT *)ALLOCA(nd_wpd*sizeof(UINT));          t = (UINT *)ALLOCA(nd_wpd*sizeof(UINT));
         r = (IndArray)MALLOC(sizeof(struct oIndArray));  
         v = (unsigned int *)ALLOCA(len*sizeof(unsigned int));          v = (unsigned int *)ALLOCA(len*sizeof(unsigned int));
         for ( i = j = 0, s = s0, mr = BDY(p); j < len; j++, NMV_ADV(mr) ) {          for ( i = j = 0, s = s0, mr = BDY(p); j < len; j++, NMV_ADV(mr) ) {
                 ndl_add(d,DL(mr),t);                  ndl_add(d,DL(mr),t);
                 for ( ; !ndl_equal(t,s); s += nd_wpd, i++ );                  for ( ; !ndl_equal(t,s); s += nd_wpd, i++ );
                 v[j] = i;                  v[j] = i;
         }          }
           r = (IndArray)MALLOC(sizeof(struct oIndArray));
         r->head = v[0];          r->head = v[0];
         diff = 0;          diff = 0;
         for ( i = 1; i < len; i++ ) {          for ( i = 1; i < len; i++ ) {
Line 4142  NODE nd_f4_red(int m,ND_pairs sp0,UINT *s0vect,int col
Line 4156  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 4184  NODE nd_f4_red(int m,ND_pairs sp0,UINT *s0vect,int col
Line 4198  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 4201  NODE nd_f4_red(int m,ND_pairs sp0,UINT *s0vect,int col
Line 4220  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.79  
changed lines
  Added in v.1.81

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