version 1.1, 2018/09/19 05:45:06 |
version 1.2, 2018/09/28 08:20:28 |
|
|
* DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, |
* DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, |
* PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. |
* PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. |
* |
* |
* $OpenXM$ |
* $OpenXM: OpenXM_contrib2/asir2018/engine/C.c,v 1.1 2018/09/19 05:45:06 noro Exp $ |
*/ |
*/ |
#include "ca.h" |
#include "ca.h" |
#include "inline.h" |
#include "inline.h" |
Line 210 void mptop(P f,P *gp) |
|
Line 210 void mptop(P f,P *gp) |
|
if ( !f ) |
if ( !f ) |
*gp = 0; |
*gp = 0; |
else if ( NUM(f) ) |
else if ( NUM(f) ) |
STOQ(CONT((MQ)f),q),*gp = (P)q; |
STOZ(CONT((MQ)f),q),*gp = (P)q; |
else { |
else { |
for ( dc = DC(f), dcr0 = 0; dc; dc = NEXT(dc) ) { |
for ( dc = DC(f), dcr0 = 0; dc; dc = NEXT(dc) ) { |
NEXTDC(dcr0,dcr); DEG(dcr) = DEG(dc); mptop(COEF(dc),&COEF(dcr)); |
NEXTDC(dcr0,dcr); DEG(dcr) = DEG(dc); mptop(COEF(dc),&COEF(dcr)); |
Line 258 void sfptop(P f,P *gp) |
|
Line 258 void sfptop(P f,P *gp) |
|
*gp = 0; |
*gp = 0; |
else if ( NUM(f) ) { |
else if ( NUM(f) ) { |
gfstomq((GFS)f,&fq); |
gfstomq((GFS)f,&fq); |
STOQ(CONT(fq),q); |
STOZ(CONT(fq),q); |
*gp = (P)q; |
*gp = (P)q; |
} else { |
} else { |
for ( dc = DC(f), dcr0 = 0; dc; dc = NEXT(dc) ) { |
for ( dc = DC(f), dcr0 = 0; dc; dc = NEXT(dc) ) { |
Line 392 void ptoum(int m,P f,UM wf) |
|
Line 392 void ptoum(int m,P f,UM wf) |
|
|
|
for ( dc = DC(f); dc; dc = NEXT(dc) ) { |
for ( dc = DC(f); dc; dc = NEXT(dc) ) { |
r = remqi(((Q)COEF(dc)),m); |
r = remqi(((Q)COEF(dc)),m); |
COEF(wf)[QTOS(DEG(dc))] = r; |
COEF(wf)[ZTOS(DEG(dc))] = r; |
} |
} |
degum(wf,UDEG(f)); |
degum(wf,UDEG(f)); |
} |
} |
Line 407 void umtop(V v,UM w,P *f) |
|
Line 407 void umtop(V v,UM w,P *f) |
|
if ( DEG(w) < 0 ) |
if ( DEG(w) < 0 ) |
*f = 0; |
*f = 0; |
else if ( DEG(w) == 0 ) |
else if ( DEG(w) == 0 ) |
STOQ(COEF(w)[0],q), *f = (P)q; |
STOZ(COEF(w)[0],q), *f = (P)q; |
else { |
else { |
for ( i = DEG(w), c = COEF(w), dc0 = 0; i >= 0; i-- ) |
for ( i = DEG(w), c = COEF(w), dc0 = 0; i >= 0; i-- ) |
if ( c[i] ) { |
if ( c[i] ) { |
NEXTDC(dc0,dc); |
NEXTDC(dc0,dc); |
STOQ(i,DEG(dc)); |
STOZ(i,DEG(dc)); |
STOQ(c[i],q), COEF(dc) = (P)q; |
STOZ(c[i],q), COEF(dc) = (P)q; |
} |
} |
NEXT(dc) = 0; |
NEXT(dc) = 0; |
MKP(v,dc0,*f); |
MKP(v,dc0,*f); |
Line 439 void ptosfum(P f,UM wf) |
|
Line 439 void ptosfum(P f,UM wf) |
|
for ( dc = DC(f); dc; dc = NEXT(dc) ) { |
for ( dc = DC(f); dc; dc = NEXT(dc) ) { |
ntogfs((Obj)COEF(dc),&c); |
ntogfs((Obj)COEF(dc),&c); |
if ( c ) |
if ( c ) |
COEF(wf)[QTOS(DEG(dc))] = FTOIF(CONT(c)); |
COEF(wf)[ZTOS(DEG(dc))] = FTOIF(CONT(c)); |
} |
} |
degum(wf,UDEG(f)); |
degum(wf,UDEG(f)); |
} |
} |
Line 462 void sfumtop(V v,UM w,P *f) |
|
Line 462 void sfumtop(V v,UM w,P *f) |
|
for ( i = DEG(w), c = COEF(w), dc0 = 0; i >= 0; i-- ) |
for ( i = DEG(w), c = COEF(w), dc0 = 0; i >= 0; i-- ) |
if ( c[i] ) { |
if ( c[i] ) { |
NEXTDC(dc0,dc); |
NEXTDC(dc0,dc); |
STOQ(i,DEG(dc)); |
STOZ(i,DEG(dc)); |
t = COEF(w)[i]; |
t = COEF(w)[i]; |
t = IFTOF(t); |
t = IFTOF(t); |
MKGFS(t,q); |
MKGFS(t,q); |
Line 489 void ptoup(P n,UP *nr) |
|
Line 489 void ptoup(P n,UP *nr) |
|
up_var = VR(n); |
up_var = VR(n); |
*nr = r = UPALLOC(d); DEG(r) = d; |
*nr = r = UPALLOC(d); DEG(r) = d; |
for ( dc = DC(n); dc; dc = NEXT(dc) ) { |
for ( dc = DC(n); dc; dc = NEXT(dc) ) { |
COEF(r)[QTOS(DEG(dc))] = (Num)COEF(dc); |
COEF(r)[ZTOS(DEG(dc))] = (Num)COEF(dc); |
} |
} |
} |
} |
} |
} |
Line 506 void uptop(UP n,P *nr) |
|
Line 506 void uptop(UP n,P *nr) |
|
else { |
else { |
for ( i = DEG(n), dc0 = 0; i >= 0; i-- ) |
for ( i = DEG(n), dc0 = 0; i >= 0; i-- ) |
if ( COEF(n)[i] ) { |
if ( COEF(n)[i] ) { |
NEXTDC(dc0,dc); STOQ(i,DEG(dc)); COEF(dc) = (P)COEF(n)[i]; |
NEXTDC(dc0,dc); STOZ(i,DEG(dc)); COEF(dc) = (P)COEF(n)[i]; |
} |
} |
if ( !up_var ) |
if ( !up_var ) |
up_var = CO->v; |
up_var = CO->v; |
Line 543 void mptoum(P p,UM pr) |
|
Line 543 void mptoum(P p,UM pr) |
|
} else { |
} else { |
bzero((char *)pr,(int)((UDEG(p)+2)*sizeof(int))); |
bzero((char *)pr,(int)((UDEG(p)+2)*sizeof(int))); |
for ( dc = DC(p); dc; dc = NEXT(dc) ) |
for ( dc = DC(p); dc; dc = NEXT(dc) ) |
COEF(pr)[QTOS(DEG(dc))] = CONT((MQ)COEF(dc)); |
COEF(pr)[ZTOS(DEG(dc))] = CONT((MQ)COEF(dc)); |
degum(pr,UDEG(p)); |
degum(pr,UDEG(p)); |
} |
} |
} |
} |
Line 561 void umtomp(V v,UM p,P *pr) |
|
Line 561 void umtomp(V v,UM p,P *pr) |
|
else { |
else { |
for ( dc0 = 0, i = DEG(p); i >= 0; i-- ) |
for ( dc0 = 0, i = DEG(p); i >= 0; i-- ) |
if ( COEF(p)[i] ) { |
if ( COEF(p)[i] ) { |
NEXTDC(dc0,dc); STOQ(i,DEG(dc)); |
NEXTDC(dc0,dc); STOZ(i,DEG(dc)); |
STOMQ(COEF(p)[i],q), COEF(dc) = (P)q; |
STOMQ(COEF(p)[i],q), COEF(dc) = (P)q; |
} |
} |
NEXT(dc) = 0; MKP(v,dc0,*pr); |
NEXT(dc) = 0; MKP(v,dc0,*pr); |
Line 580 void enc_to_p(int p,int a,V v,P *pr) |
|
Line 580 void enc_to_p(int p,int a,V v,P *pr) |
|
for ( i = 0; a; i++, a /= p ) { |
for ( i = 0; a; i++, a /= p ) { |
c = a%p; |
c = a%p; |
if ( c ) { |
if ( c ) { |
STOQ(i,dq); STOQ(c,cq); |
STOZ(i,dq); STOZ(c,cq); |
NEWDC(dct); DEG(dct) = dq; COEF(dct) = (P)cq; |
NEWDC(dct); DEG(dct) = dq; COEF(dct) = (P)cq; |
NEXT(dct) = dc; dc = dct; |
NEXT(dct) = dc; dc = dct; |
} |
} |