=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/engine/nd.c,v retrieving revision 1.226 retrieving revision 1.228 diff -u -p -r1.226 -r1.228 --- OpenXM_contrib2/asir2000/engine/nd.c 2016/04/05 04:21:18 1.226 +++ OpenXM_contrib2/asir2000/engine/nd.c 2016/08/08 07:18:10 1.228 @@ -1,4 +1,4 @@ -/* $OpenXM: OpenXM_contrib2/asir2000/engine/nd.c,v 1.225 2016/03/31 02:42:43 noro Exp $ */ +/* $OpenXM: OpenXM_contrib2/asir2000/engine/nd.c,v 1.227 2016/07/11 08:00:30 noro Exp $ */ #include "nd.h" @@ -93,7 +93,7 @@ ND ndgztond(ND p); void Pdp_set_weight(NODE,VECT *); void Pox_cmo_rpc(NODE,Obj *); -extern int Denominator,DP_Multiple; +extern int Denominator,DP_Multiple,MaxDeg; #define BLEN (8*sizeof(unsigned long)) @@ -2005,6 +2005,7 @@ NODE nd_gb(int m,int ishomo,int checkonly,int gensyz,i while ( d ) { again: l = nd_minp(d,&d); + if ( MaxDeg > 0 && SG(l) > MaxDeg ) break; if ( SG(l) != sugar ) { if ( ishomo ) { diag_count = 0; @@ -2263,6 +2264,7 @@ NODE nd_gb_trace(int m,int ishomo,int **indp) while ( d ) { again: l = nd_minp(d,&d); + if ( MaxDeg > 0 && SG(l) > MaxDeg ) break; if ( SG(l) != sugar ) { #if 1 if ( ishomo ) { @@ -2360,9 +2362,11 @@ again: FREENDP(l); } if ( nd_nalg ) { - print_eg("monic",&eg_monic); - print_eg("invdalg",&eg_invdalg); - print_eg("le",&eg_le); + if ( DP_Print ) { + print_eg("monic",&eg_monic); + print_eg("invdalg",&eg_invdalg); + print_eg("le",&eg_le); + } } conv_ilist(nd_demand,1,g,indp); if ( DP_Print ) { printf("nd_gb_trace done.\n"); fflush(stdout); } @@ -3562,6 +3566,7 @@ void nd_gr_trace(LIST f,LIST v,int trace,int homo,int for ( t = fd0; t; t = NEXT(t) ) ndv_homogenize((NDV)BDY(t),obpe,oadv,oepos,ompos); } + if ( MaxDeg > 0 ) nocheck = 1; while ( 1 ) { tl1 = tl2 = tl3 = tl4 = 0; if ( Demand ) @@ -6201,6 +6206,7 @@ NODE nd_f4(int m,int **indp) get_eg(&eg0); l = nd_minsugarp(d,&d); sugar = SG(l); + if ( MaxDeg > 0 && sugar > MaxDeg ) break; if ( nd_nzlist ) { for ( tn = nd_nzlist; tn; tn = NEXT(tn) ) { node = BDY((LIST)BDY(tn)); @@ -6313,6 +6319,7 @@ NODE nd_f4_trace(int m,int **indp) get_eg(&eg0); l = nd_minsugarp(d,&d); sugar = SG(l); + if ( MaxDeg > 0 && sugar > MaxDeg ) break; bucket = create_pbucket(); stat = nd_sp_f4(m,0,l,bucket); if ( !stat ) { @@ -6622,7 +6629,9 @@ init_eg(&eg_search); } } mat->row = i; - fprintf(asir_out,"%dx%d,",mat->row,mat->col); fflush(asir_out); + if ( DP_Print ) { + fprintf(asir_out,"%dx%d,",mat->row,mat->col); fflush(asir_out); + } size = ((col+BLEN-1)/BLEN)*sizeof(unsigned long); v = CALLOC((col+BLEN-1)/BLEN,sizeof(unsigned long)); for ( rp = rp0, i = 0; rp; rp = NEXT(rp), i++ ) { @@ -6676,7 +6685,9 @@ init_eg(&eg_search); for ( i = 0; i < col; i++ ) rhead[i] = 0; /* construction of index arrays */ - fprintf(stderr,"%dx%d,",nsp+nred,col); + if ( DP_Print ) { + fprintf(stderr,"%dx%d,",nsp+nred,col); + } rvect = (NM_ind_pair *)ALLOCA(nred*sizeof(NM_ind_pair)); s0hash = (int *)ALLOCA(col*sizeof(int)); for ( i = 0, s = s0vect; i < col; i++, s += nd_wpd ) @@ -6690,7 +6701,7 @@ init_eg(&eg_search); r0 = nd_f4_red_main(m,sp0,nsp,s0vect,col,rvect,rhead,imat,nred,nz); else r0 = nd_f4_red_gz_main(sp0,nsp,trace,s0vect,col,rvect,rhead,imat,nred); -print_eg("search",&eg_search); + if ( DP_Print ) print_eg("search",&eg_search); return r0; }