[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.202 and 1.203

version 1.202, 2013/01/30 08:03:18 version 1.203, 2013/01/31 01:13:47
Line 1 
Line 1 
 /* $OpenXM: OpenXM_contrib2/asir2000/engine/nd.c,v 1.201 2013/01/30 07:44:48 noro Exp $ */  /* $OpenXM: OpenXM_contrib2/asir2000/engine/nd.c,v 1.202 2013/01/30 08:03:18 noro Exp $ */
   
 #include "nd.h"  #include "nd.h"
   
Line 3953  void nd_setup_parameters(int nvar,int max) {
Line 3953  void nd_setup_parameters(int nvar,int max) {
         else if ( max < 65536 ) nd_bpe = 16;          else if ( max < 65536 ) nd_bpe = 16;
         else nd_bpe = 32;          else nd_bpe = 32;
     }      }
     if ( !do_weyl && weight_check && current_dl_weight_vector ) {      if ( !do_weyl && weight_check && (current_dl_weight_vector || nd_matrix) ) {
         UINT t;          UINT t;
                 /* t = max(weights) */                  int st;
         for ( i = 0, t = 0; i < nd_nvar; i++ )          int *v;
                         if ( t < current_dl_weight_vector[i] )          /* t = max(weights) */
                                 t = current_dl_weight_vector[i];          t = 0;
                 /* i = bitsize of t */          if ( current_dl_weight_vector )
                 for ( i = 0; t; t >>=1, i++ );              for ( i = 0, t = 0; i < nd_nvar; i++ ) {
                 /* i += bitsize of nd_nvar */                  if ( (st=current_dl_weight_vector[i]) < 0 ) st = -st;
                 for ( t = nd_nvar; t; t >>=1, i++);                  if ( t < st ) t = st;
                 /* nd_bpe+i = bitsize of max(weights)*max(exp)*nd_nvar */              }
                 if ( (nd_bpe+i) >= 31 )          if ( nd_matrix )
                         error("nd_setup_parameters : too large weight");              for ( i = 0; i < nd_matrix_len; i++ )
         }                  for ( j = 0, v = nd_matrix[i]; j < nd_nvar; j++ ) {
                       if ( (st=v[j]) < 0 ) st = -st;
                       if ( t < st ) t = st;
                                   }
           /* i = bitsize of t */
           for ( i = 0; t; t >>=1, i++ );
           /* i += bitsize of nd_nvar */
           for ( t = nd_nvar; t; t >>=1, i++);
           /* nd_bpe+i = bitsize of max(weights)*max(exp)*nd_nvar */
           if ( (nd_bpe+i) >= 31 )
               error("nd_setup_parameters : too large weight");
       }
     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);
Line 4946  NODE ndv_reducebase(NODE x,int *perm)
Line 4957  NODE ndv_reducebase(NODE x,int *perm)
 void nd_init_ord(struct order_spec *ord)  void nd_init_ord(struct order_spec *ord)
 {  {
     nd_module = (ord->id >= 256);      nd_module = (ord->id >= 256);
           nd_matrix = 0;
           nd_matrix_len = 0;
     switch ( ord->id ) {      switch ( ord->id ) {
         case 0:          case 0:
             switch ( ord->ord.simple ) {              switch ( ord->ord.simple ) {

Legend:
Removed from v.1.202  
changed lines
  Added in v.1.203

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