=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/lib/gr,v retrieving revision 1.24 retrieving revision 1.27 diff -u -p -r1.24 -r1.27 --- OpenXM_contrib2/asir2000/lib/gr 2006/08/09 02:43:38 1.24 +++ OpenXM_contrib2/asir2000/lib/gr 2018/09/06 05:09:58 1.27 @@ -45,7 +45,7 @@ * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. * - * $OpenXM: OpenXM_contrib2/asir2000/lib/gr,v 1.23 2006/07/24 07:31:17 noro Exp $ + * $OpenXM: OpenXM_contrib2/asir2000/lib/gr,v 1.26 2007/07/17 08:17:42 noro Exp $ */ module gr $ @@ -64,25 +64,33 @@ extern REMOTE_MATRIX,REMOTE_NF,REMOTE_VARS$ def gr(B,V,O) { + Ord=dp_ord(); G = dp_gr_main(B,V,0,1,O); + dp_ord(Ord); return G; } def hgr(B,V,O) { + Ord=dp_ord(); G = dp_gr_main(B,V,1,1,O); + dp_ord(Ord); return G; } def gr_mod(B,V,O,M) { + Ord=dp_ord(); G = dp_gr_mod_main(B,V,0,M,O); + dp_ord(Ord); return G; } def hgr_mod(B,V,O,M) { + Ord=dp_ord(); G = dp_gr_mod_main(B,V,1,M,O); + dp_ord(Ord); return G; } @@ -153,7 +161,14 @@ def tolex(G0,V,O,W) TL = cons(dp_dtop(dp_vtoe(D),W),TL); while ( nextm(D,DL,N) ); } else { - GM = dp_gr_mod_main(G0,W,0,M,2); + HVN = "h"; + WN = map(rtostr,W); + while ( member(HVN,WN) ) HVN += "h"; + HV = strtov(HVN); + G0H = map(homogenize,G0,W,HV); + GMH = nd_gr(G0H,append(W,[HV]),M,1); + GMH=map(subst,GMH,HV,1); + GM = nd_gr_postproc(GMH,W,M,2,0); dp_ord(2); for ( T = GM, S = 0; T != []; T = cdr(T) ) for ( D = dp_ptod(car(T),V); D; D = dp_rest(D) ) @@ -197,6 +212,7 @@ def tolex_gsl(G0,V,O,W) while ( nextm(D,DL,N) ); L = npos_check(DL); NPOSV = L[0]; DIM = L[1]; if ( NPOSV >= 0 ) { + if ( dp_gr_print() ) print("shape base"); V0 = W[NPOSV]; T0 = time()[0]; NFL = gennf(G0,TL,V,O,V0,1); TNF += time()[0] - T0; @@ -1115,7 +1131,7 @@ def p_nf(P,B,V,O) { N = length(B); DB = newvect(N); for ( I = N-1, IL = []; I >= 0; I-- ) { DB[I] = dp_ptod(B[I],V); - IL = cons(I,IL); + if ( DB[I] ) IL = cons(I,IL); } return dp_dtop(dp_nf(IL,DP,DB,1),V); } @@ -1125,7 +1141,7 @@ def p_true_nf(P,B,V,O) { N = length(B); DB = newvect(N); for ( I = N-1, IL = []; I >= 0; I-- ) { DB[I] = dp_ptod(B[I],V); - IL = cons(I,IL); + if ( DB[I] ) IL = cons(I,IL); } L = dp_true_nf(IL,DP,DB,1); return [dp_dtop(L[0],V),L[1]];