=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/engine/C.c,v retrieving revision 1.12 retrieving revision 1.14 diff -u -p -r1.12 -r1.14 --- OpenXM_contrib2/asir2000/engine/C.c 2002/11/01 06:47:41 1.12 +++ OpenXM_contrib2/asir2000/engine/C.c 2003/01/16 00:33:28 1.14 @@ -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/engine/C.c,v 1.11 2001/10/09 01:36:09 noro Exp $ + * $OpenXM: OpenXM_contrib2/asir2000/engine/C.c,v 1.13 2003/01/04 09:06:17 noro Exp $ */ #include "ca.h" #include "inline.h" @@ -225,7 +225,11 @@ void ptosfp(P p,P *pr) if ( !p ) *pr = 0; else if ( NUM(p) ) { - qtogfs((Q)p,&a); *pr = (P)a; + if ( NID((Num)p) == N_GFS ) + *pr = (P)p; + else { + qtogfs((Q)p,&a); *pr = (P)a; + } } else { for ( dc = DC(p), dcr0 = 0; dc; dc = NEXT(dc) ) { ptosfp(COEF(dc),&t); @@ -256,6 +260,25 @@ void sfptop(P f,P *gp) } else { for ( dc = DC(f), dcr0 = 0; dc; dc = NEXT(dc) ) { NEXTDC(dcr0,dcr); DEG(dcr) = DEG(dc); sfptop(COEF(dc),&COEF(dcr)); + } + NEXT(dcr) = 0; MKP(VR(f),dcr0,*gp); + } +} + +void sfptopsfp(P f,V v,P *gp) +{ + DCP dc,dcr,dcr0; + Q q; + P fq; + + if ( !f ) + *gp = 0; + else if ( NUM(f) ) + gfstopgfs((GFS)f,v,gp); + else { + for ( dc = DC(f), dcr0 = 0; dc; dc = NEXT(dc) ) { + NEXTDC(dcr0,dcr); DEG(dcr) = DEG(dc); + sfptopsfp(COEF(dc),v,&COEF(dcr)); } NEXT(dcr) = 0; MKP(VR(f),dcr0,*gp); }