=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/engine/nd.c,v retrieving revision 1.140 retrieving revision 1.142 diff -u -p -r1.140 -r1.142 --- OpenXM_contrib2/asir2000/engine/nd.c 2006/06/12 21:51:33 1.140 +++ OpenXM_contrib2/asir2000/engine/nd.c 2006/08/09 02:43:38 1.142 @@ -1,4 +1,4 @@ -/* $OpenXM: OpenXM_contrib2/asir2000/engine/nd.c,v 1.139 2006/06/12 00:46:48 noro Exp $ */ +/* $OpenXM: OpenXM_contrib2/asir2000/engine/nd.c,v 1.141 2006/06/17 10:12:06 noro Exp $ */ #include "nd.h" @@ -1548,7 +1548,8 @@ int do_diagonalize(int sugar,int m) Q q,num,den; union oNDC dn; - for ( i = nd_psn-1; i >= 0 && SG(nd_psh[i]) == sugar; i-- ) { + for ( i = nd_psn-1; i >= 0; i-- ) { + if ( SG(nd_psh[i]) != sugar ) continue; if ( nd_demand ) nfv = ndv_load(i); else @@ -1641,7 +1642,7 @@ again: } nfv = ndtondv(m,nf); nd_free(nf); nh = ndv_newps(m,nfv,0); - if ( ishomo && ++diag_count == diag_period ) { + if ( !m && (ishomo && ++diag_count == diag_period) ) { diag_count = 0; stat = do_diagonalize(sugar,m); if ( !stat ) { @@ -1676,7 +1677,8 @@ int do_diagonalize_trace(int sugar,int m) Q q,den,num; union oNDC dn; - for ( i = nd_psn-1; i >= 0 && SG(nd_psh[i]) == sugar; i-- ) { + for ( i = nd_psn-1; i >= 0; i-- ) { + if ( SG(nd_psh[i]) != sugar ) continue; /* for nd_ps */ s = ndvtond(m,nd_ps[i]); s = nd_separate_head(s,&head);