=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/engine/nd.c,v retrieving revision 1.215 retrieving revision 1.217 diff -u -p -r1.215 -r1.217 --- OpenXM_contrib2/asir2000/engine/nd.c 2013/12/20 02:02:24 1.215 +++ OpenXM_contrib2/asir2000/engine/nd.c 2014/02/03 02:43:05 1.217 @@ -1,4 +1,4 @@ -/* $OpenXM: OpenXM_contrib2/asir2000/engine/nd.c,v 1.214 2013/09/27 07:00:45 noro Exp $ */ +/* $OpenXM: OpenXM_contrib2/asir2000/engine/nd.c,v 1.216 2013/12/20 04:35:34 noro Exp $ */ #include "nd.h" @@ -2703,7 +2703,7 @@ int ndv_newps(int m,NDV a,NDV aq,int f4) nd_ps[nd_psn] = a; if ( aq ) { nd_ps_trace[nd_psn] = aq; - nd_ps_gz[nd_psn] = ndvtondvgz(aq); + if ( !nd_vc ) nd_ps_gz[nd_psn] = ndvtondvgz(aq); register_hcf(aq); nd_bound[nd_psn] = ndv_compute_bound(aq); SG(r) = SG(aq); ndl_copy(HDL(aq),DL(r)); @@ -2711,7 +2711,7 @@ int ndv_newps(int m,NDV a,NDV aq,int f4) if ( !m ) register_hcf(a); nd_bound[nd_psn] = ndv_compute_bound(a); SG(r) = SG(a); ndl_copy(HDL(a),DL(r)); - if ( !m ) nd_ps_gz[nd_psn] = ndvtondvgz(a); + if ( !m && !nd_vc ) nd_ps_gz[nd_psn] = ndvtondvgz(a); } if ( nd_demand ) { if ( aq ) { @@ -2789,7 +2789,7 @@ int ndv_setup(int mod,int trace,NODE f,int dont_sort,i hc = HCU(w[i].p); if ( trace ) { a = nd_ps_trace[i] = ndv_dup(0,w[i].p); - nd_ps_gz[i] = ndvtondvgz(a); + if ( !nd_vc ) nd_ps_gz[i] = ndvtondvgz(a); if ( !dont_removecont) ndv_removecont(0,a); register_hcf(a); am = nd_ps[i] = ndv_dup(mod,a); @@ -2799,7 +2799,7 @@ int ndv_setup(int mod,int trace,NODE f,int dont_sort,i ndv_removecont(mod,am); } else { a = nd_ps[i] = ndv_dup(mod,w[i].p); - if ( !mod ) nd_ps_gz[i] = ndvtondvgz(a); + if ( !mod && !nd_vc ) nd_ps_gz[i] = ndvtondvgz(a); if ( mod || !dont_removecont ) ndv_removecont(mod,a); if ( !mod ) register_hcf(a); } @@ -6978,18 +6978,17 @@ int nd_gauss_elim_gz(GZ **mat0,int *sugar,int row,int { int i,j,t,c,rank,inv; int *ci,*ri; - GZ *dn; + GZ dn; MAT m,nm; NEWMAT(m); m->row = row; m->col = col; m->body = (pointer **)mat0; - dn = (GZ *)MALLOC(row*sizeof(GZ)); - rank = gz_generic_gauss_elim2(m,&nm,dn,&ri,&ci); + rank = gz_generic_gauss_elim(m,&nm,&dn,&ri,&ci); for ( i = 0; i < row; i++ ) for ( j = 0; j < col; j++ ) mat0[i][j] = 0; c = col-rank; for ( i = 0; i < rank; i++ ) { - mat0[i][ri[i]] = dn[i]; + mat0[i][ri[i]] = dn; for ( j = 0; j < c; j++ ) mat0[i][ci[j]] = (GZ)BDY(nm)[i][j]; }