version 1.1, 2018/09/19 05:45:05 |
version 1.2, 2018/09/28 08:20:27 |
|
|
* 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/builtin/fctr.c,v 1.1 2018/09/19 05:45:05 noro Exp $ |
*/ |
*/ |
#include "ca.h" |
#include "ca.h" |
#include "parse.h" |
#include "parse.h" |
Line 110 void Pbivariate_hensel_special(NODE arg,LIST *rp) |
|
Line 110 void Pbivariate_hensel_special(NODE arg,LIST *rp) |
|
h0 = (P)ARG2(arg); |
h0 = (P)ARG2(arg); |
vx = VR((P)ARG3(arg)); |
vx = VR((P)ARG3(arg)); |
vy = VR((P)ARG4(arg)); |
vy = VR((P)ARG4(arg)); |
d = QTOS((Q)ARG5(arg)); |
d = ZTOS((Q)ARG5(arg)); |
NEWVL(nvl); nvl->v = vx; |
NEWVL(nvl); nvl->v = vx; |
NEWVL(NEXT(nvl)); NEXT(nvl)->v = vy; |
NEWVL(NEXT(nvl)); NEXT(nvl)->v = vy; |
NEXT(NEXT(nvl)) = 0; |
NEXT(NEXT(nvl)) = 0; |
Line 158 void Pgcd(NODE arg,P *rp) |
|
Line 158 void Pgcd(NODE arg,P *rp) |
|
else { |
else { |
m = (Num)ARG2(arg); |
m = (Num)ARG2(arg); |
asir_assert(m,O_P,"gcd"); |
asir_assert(m,O_P,"gcd"); |
mod = QTOS((Q)m); |
mod = ZTOS((Q)m); |
ptomp(mod,p1,&g1); ptomp(mod,p2,&g2); |
ptomp(mod,p1,&g1); ptomp(mod,p2,&g2); |
gcdprsmp(CO,mod,g1,g2,&g); |
gcdprsmp(CO,mod,g1,g2,&g); |
mptop(g,rp); |
mptop(g,rp); |
Line 233 void Pufctrhint(NODE arg,LIST *rp) |
|
Line 233 void Pufctrhint(NODE arg,LIST *rp) |
|
|
|
asir_assert(ARG0(arg),O_P,"ufctrhint"); |
asir_assert(ARG0(arg),O_P,"ufctrhint"); |
asir_assert(ARG1(arg),O_N,"ufctrhint"); |
asir_assert(ARG1(arg),O_N,"ufctrhint"); |
ufctr((P)ARG0(arg),QTOS((Q)ARG1(arg)),&dc); |
ufctr((P)ARG0(arg),ZTOS((Q)ARG1(arg)),&dc); |
dcptolist(dc,rp); |
dcptolist(dc,rp); |
} |
} |
|
|
Line 404 void Pmodfctr(NODE arg,LIST *rp) |
|
Line 404 void Pmodfctr(NODE arg,LIST *rp) |
|
Obj u; |
Obj u; |
VL vl; |
VL vl; |
|
|
mod = QTOS((Q)ARG1(arg)); |
mod = ZTOS((Q)ARG1(arg)); |
if ( mod < 0 ) |
if ( mod < 0 ) |
error("modfctr : invalid modulus"); |
error("modfctr : invalid modulus"); |
p = (P)ARG0(arg); |
p = (P)ARG0(arg); |
Line 476 void Psfbfctr(NODE arg,LIST *rp) |
|
Line 476 void Psfbfctr(NODE arg,LIST *rp) |
|
vl2.v = y; vl2.next = 0; |
vl2.v = y; vl2.next = 0; |
vl = &vl1; |
vl = &vl1; |
if ( argc(arg) == 4 ) |
if ( argc(arg) == 4 ) |
degbound = QTOS((Q)ARG3(arg)); |
degbound = ZTOS((Q)ARG3(arg)); |
else |
else |
degbound = -1; |
degbound = -1; |
|
|
Line 500 void Psfmintdeg(NODE arg,P *rp) |
|
Line 500 void Psfmintdeg(NODE arg,P *rp) |
|
vl1.v = x; vl1.next = &vl2; |
vl1.v = x; vl1.next = &vl2; |
vl2.v = y; vl2.next = 0; |
vl2.v = y; vl2.next = 0; |
vl = &vl1; |
vl = &vl1; |
dy = QTOS((Q)ARG3(arg)); |
dy = ZTOS((Q)ARG3(arg)); |
c = QTOS((Q)ARG4(arg)); |
c = ZTOS((Q)ARG4(arg)); |
sfmintdeg(vl,(P)ARG0(arg),dy,c,&r); |
sfmintdeg(vl,(P)ARG0(arg),dy,c,&r); |
reorderp(CO,vl,r,rp); |
reorderp(CO,vl,r,rp); |
} |
} |
Line 513 void Pmodsqfr(NODE arg,LIST *rp) |
|
Line 513 void Pmodsqfr(NODE arg,LIST *rp) |
|
if ( !ARG0(arg) ) { |
if ( !ARG0(arg) ) { |
NEWDC(dc); COEF(dc) = 0; DEG(dc) = ONE; NEXT(dc) = 0; |
NEWDC(dc); COEF(dc) = 0; DEG(dc) = ONE; NEXT(dc) = 0; |
} else |
} else |
modfctrp(ARG0(arg),QTOS((Q)ARG1(arg)),SQFR,&dc); |
modfctrp(ARG0(arg),ZTOS((Q)ARG1(arg)),SQFR,&dc); |
dcptolist(dc,rp); |
dcptolist(dc,rp); |
} |
} |
|
|
Line 524 void Pddd(NODE arg,LIST *rp) |
|
Line 524 void Pddd(NODE arg,LIST *rp) |
|
if ( !ARG0(arg) ) { |
if ( !ARG0(arg) ) { |
NEWDC(dc); COEF(dc) = 0; DEG(dc) = ONE; NEXT(dc) = 0; |
NEWDC(dc); COEF(dc) = 0; DEG(dc) = ONE; NEXT(dc) = 0; |
} else |
} else |
modfctrp(ARG0(arg),QTOS((Q)ARG1(arg)),DDD,&dc); |
modfctrp(ARG0(arg),ZTOS((Q)ARG1(arg)),DDD,&dc); |
dcptolist(dc,rp); |
dcptolist(dc,rp); |
} |
} |
|
|
Line 535 void Pnewddd(NODE arg,LIST *rp) |
|
Line 535 void Pnewddd(NODE arg,LIST *rp) |
|
if ( !ARG0(arg) ) { |
if ( !ARG0(arg) ) { |
NEWDC(dc); COEF(dc) = 0; DEG(dc) = ONE; NEXT(dc) = 0; |
NEWDC(dc); COEF(dc) = 0; DEG(dc) = ONE; NEXT(dc) = 0; |
} else |
} else |
modfctrp(ARG0(arg),QTOS((Q)ARG1(arg)),NEWDDD,&dc); |
modfctrp(ARG0(arg),ZTOS((Q)ARG1(arg)),NEWDDD,&dc); |
dcptolist(dc,rp); |
dcptolist(dc,rp); |
} |
} |
|
|
Line 550 void Pirred_check(NODE arg,Z *rp) |
|
Line 550 void Pirred_check(NODE arg,Z *rp) |
|
*rp = 0; return; |
*rp = 0; return; |
} |
} |
mp = W_UMALLOC(UDEG(p)); |
mp = W_UMALLOC(UDEG(p)); |
mod = QTOS((Q)ARG1(arg)); |
mod = ZTOS((Q)ARG1(arg)); |
ptoum(mod,p,mp); |
ptoum(mod,p,mp); |
r = irred_check(mp,mod); |
r = irred_check(mp,mod); |
if ( r ) |
if ( r ) |
Line 570 void Pnfctr_mod(NODE arg,Z *rp) |
|
Line 570 void Pnfctr_mod(NODE arg,Z *rp) |
|
*rp = 0; return; |
*rp = 0; return; |
} |
} |
mp = W_UMALLOC(UDEG(p)); |
mp = W_UMALLOC(UDEG(p)); |
mod = QTOS((Q)ARG1(arg)); |
mod = ZTOS((Q)ARG1(arg)); |
ptoum(mod,p,mp); |
ptoum(mod,p,mp); |
r = nfctr_mod(mp,mod); |
r = nfctr_mod(mp,mod); |
STOQ(r,*rp); |
STOZ(r,*rp); |
} |
} |
|
|
void Pddd_tab(NODE arg,VECT *rp) |
void Pddd_tab(NODE arg,VECT *rp) |
Line 585 void Pddd_tab(NODE arg,VECT *rp) |
|
Line 585 void Pddd_tab(NODE arg,VECT *rp) |
|
VECT result; |
VECT result; |
V v; |
V v; |
|
|
p = (P)ARG0(arg); mod = QTOS((Q)ARG1(arg)); |
p = (P)ARG0(arg); mod = ZTOS((Q)ARG1(arg)); |
v = VR(p); |
v = VR(p); |
n = UDEG(p); mp = W_UMALLOC(n); |
n = UDEG(p); mp = W_UMALLOC(n); |
ptoum(mod,p,mp); |
ptoum(mod,p,mp); |