version 1.97, 2016/03/31 07:33:32 |
version 1.98, 2016/03/31 08:43:25 |
|
|
* 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_contrib2/asir2000/builtin/dp.c,v 1.96 2015/09/24 04:43:12 noro Exp $ |
* $OpenXM: OpenXM_contrib2/asir2000/builtin/dp.c,v 1.97 2016/03/31 07:33:32 noro Exp $ |
*/ |
*/ |
#include "ca.h" |
#include "ca.h" |
#include "base.h" |
#include "base.h" |
Line 69 void Pdp_set_sugar(); |
|
Line 69 void Pdp_set_sugar(); |
|
void Pdp_cri1(),Pdp_cri2(),Pdp_subd(),Pdp_mod(),Pdp_red_mod(),Pdp_tdiv(); |
void Pdp_cri1(),Pdp_cri2(),Pdp_subd(),Pdp_mod(),Pdp_red_mod(),Pdp_tdiv(); |
void Pdp_prim(),Pdp_red_coef(),Pdp_mag(),Pdp_set_kara(),Pdp_rat(); |
void Pdp_prim(),Pdp_red_coef(),Pdp_mag(),Pdp_set_kara(),Pdp_rat(); |
void Pdp_nf(),Pdp_true_nf(),Pdp_true_nf_marked(),Pdp_true_nf_marked_mod(); |
void Pdp_nf(),Pdp_true_nf(),Pdp_true_nf_marked(),Pdp_true_nf_marked_mod(); |
void Pdp_true_nf_and_quotient(); |
|
|
void Pdp_true_nf_and_quotient(),Pdp_true_nf_and_quotient_mod(); |
void Pdp_true_nf_and_quotient_marked(),Pdp_true_nf_and_quotient_marked_mod(); |
void Pdp_true_nf_and_quotient_marked(),Pdp_true_nf_and_quotient_marked_mod(); |
|
|
void Pdp_nf_mod(),Pdp_true_nf_mod(); |
void Pdp_nf_mod(),Pdp_true_nf_mod(); |
void Pdp_criB(),Pdp_nelim(); |
void Pdp_criB(),Pdp_nelim(); |
void Pdp_minp(),Pdp_sp_mod(); |
void Pdp_minp(),Pdp_sp_mod(); |
Line 88 void Pdp_ltod(),Pdpv_ord(),Pdpv_ht(),Pdpv_hm(),Pdpv_hc |
|
Line 90 void Pdp_ltod(),Pdpv_ord(),Pdpv_ht(),Pdpv_hm(),Pdpv_hc |
|
|
|
void Pdp_weyl_red(); |
void Pdp_weyl_red(); |
void Pdp_weyl_sp(); |
void Pdp_weyl_sp(); |
|
|
void Pdp_weyl_nf(),Pdp_weyl_nf_mod(); |
void Pdp_weyl_nf(),Pdp_weyl_nf_mod(); |
|
void Pdp_weyl_true_nf_and_quotient(),Pdp_weyl_true_nf_and_quotient_mod(); |
|
void Pdp_weyl_true_nf_and_quotient_marked(),Pdp_weyl_true_nf_and_quotient_marked_mod(); |
|
|
void Pdp_weyl_gr_main(),Pdp_weyl_gr_mod_main(),Pdp_weyl_gr_f_main(); |
void Pdp_weyl_gr_main(),Pdp_weyl_gr_mod_main(),Pdp_weyl_gr_f_main(); |
void Pdp_weyl_f4_main(),Pdp_weyl_f4_mod_main(),Pdp_weyl_f4_f_main(); |
void Pdp_weyl_f4_main(),Pdp_weyl_f4_mod_main(),Pdp_weyl_f4_f_main(); |
void Pdp_weyl_mul(),Pdp_weyl_mul_mod(),Pdp_weyl_act(); |
void Pdp_weyl_mul(),Pdp_weyl_mul_mod(),Pdp_weyl_act(); |
Line 144 struct ftab dp_tab[] = { |
|
Line 150 struct ftab dp_tab[] = { |
|
|
|
/* normal form */ |
/* normal form */ |
{"dp_nf",Pdp_nf,4}, |
{"dp_nf",Pdp_nf,4}, |
|
{"dp_nf_mod",Pdp_nf_mod,5}, |
{"dp_nf_f",Pdp_nf_f,4}, |
{"dp_nf_f",Pdp_nf_f,4}, |
|
|
{"dp_true_nf",Pdp_true_nf,4}, |
{"dp_true_nf",Pdp_true_nf,4}, |
{"dp_true_nf_and_quotient",Pdp_true_nf_and_quotient,4}, |
{"dp_true_nf_mod",Pdp_true_nf_mod,5}, |
{"dp_true_nf_marked",Pdp_true_nf_marked,4}, |
{"dp_true_nf_marked",Pdp_true_nf_marked,4}, |
|
{"dp_true_nf_marked_mod",Pdp_true_nf_marked_mod,5}, |
|
|
|
{"dp_true_nf_and_quotient",Pdp_true_nf_and_quotient,3}, |
|
{"dp_true_nf_and_quotient_mod",Pdp_true_nf_and_quotient_mod,4}, |
{"dp_true_nf_and_quotient_marked",Pdp_true_nf_and_quotient_marked,4}, |
{"dp_true_nf_and_quotient_marked",Pdp_true_nf_and_quotient_marked,4}, |
{"dp_true_nf_and_quotient_marked_mod",Pdp_true_nf_and_quotient_marked_mod,5}, |
{"dp_true_nf_and_quotient_marked_mod",Pdp_true_nf_and_quotient_marked_mod,5}, |
{"dp_true_nf_marked_mod",Pdp_true_nf_marked_mod,5}, |
|
{"dp_nf_mod",Pdp_nf_mod,5}, |
|
{"dp_true_nf_mod",Pdp_true_nf_mod,5}, |
|
{"dp_lnf_mod",Pdp_lnf_mod,3}, |
{"dp_lnf_mod",Pdp_lnf_mod,3}, |
{"dp_nf_tab_f",Pdp_nf_tab_f,2}, |
{"dp_nf_tab_f",Pdp_nf_tab_f,2}, |
{"dp_nf_tab_mod",Pdp_nf_tab_mod,3}, |
{"dp_nf_tab_mod",Pdp_nf_tab_mod,3}, |
Line 198 struct ftab dp_tab[] = { |
|
Line 208 struct ftab dp_tab[] = { |
|
{"dp_weyl_nf_mod",Pdp_weyl_nf_mod,5}, |
{"dp_weyl_nf_mod",Pdp_weyl_nf_mod,5}, |
{"dp_weyl_nf_f",Pdp_weyl_nf_f,4}, |
{"dp_weyl_nf_f",Pdp_weyl_nf_f,4}, |
|
|
|
{"dp_weyl_true_nf_and_quotient",Pdp_weyl_true_nf_and_quotient,3}, |
|
{"dp_weyl_true_nf_and_quotient_mod",Pdp_weyl_true_nf_and_quotient_mod,4}, |
|
{"dp_weyl_true_nf_and_quotient_marked",Pdp_weyl_true_nf_and_quotient_marked,4}, |
|
{"dp_weyl_true_nf_and_quotient_marked_mod",Pdp_weyl_true_nf_and_quotient_marked_mod,5}, |
|
|
|
|
/* Buchberger algorithm */ |
/* Buchberger algorithm */ |
{"dp_weyl_gr_main",Pdp_weyl_gr_main,-5}, |
{"dp_weyl_gr_main",Pdp_weyl_gr_main,-5}, |
{"dp_weyl_gr_mod_main",Pdp_weyl_gr_mod_main,5}, |
{"dp_weyl_gr_mod_main",Pdp_weyl_gr_mod_main,5}, |
Line 932 void Pdp_true_nf(NODE arg,LIST *rp) |
|
Line 948 void Pdp_true_nf(NODE arg,LIST *rp) |
|
NEXT(NEXT(n)) = 0; MKLIST(*rp,n); |
NEXT(NEXT(n)) = 0; MKLIST(*rp,n); |
} |
} |
|
|
DP *dp_true_nf_and_quotient(NODE b,DP g,DP *ps,DP *rp,P *dnp); |
DP *dp_true_nf_and_quotient_marked(NODE b,DP g,DP *ps,DP *hps,DP *rp,P *dnp); |
|
|
void Pdp_true_nf_and_quotient(NODE arg,LIST *rp) |
|
{ |
|
NODE b,n; |
|
DP *ps; |
|
DP g; |
|
DP nm; |
|
VECT quo; |
|
P dn; |
|
int full; |
|
|
|
do_weyl = 0; dp_fcoeffs = 0; |
|
asir_assert(ARG0(arg),O_LIST,"dp_true_nf_and_quotient"); |
|
asir_assert(ARG1(arg),O_DP,"dp_true_nf_and_quotient"); |
|
asir_assert(ARG2(arg),O_VECT,"dp_true_nf_and_quotient"); |
|
if ( !(g = (DP)ARG1(arg)) ) { |
|
nm = 0; dn = (P)ONE; |
|
} else { |
|
b = BDY((LIST)ARG0(arg)); |
|
ps = (DP *)BDY((VECT)ARG2(arg)); |
|
NEWVECT(quo); quo->len = ((VECT)ARG2(arg))->len; |
|
quo->body = (pointer *)dp_true_nf_and_quotient(b,g,ps,&nm,&dn); |
|
} |
|
n = mknode(3,nm,dn,quo); |
|
MKLIST(*rp,n); |
|
} |
|
|
|
DP *dp_true_nf_and_quotient_marked (NODE b,DP g,DP *ps,DP *hps,DP *rp,P *dnp); |
|
|
|
void Pdp_true_nf_and_quotient_marked(NODE arg,LIST *rp) |
void Pdp_true_nf_and_quotient_marked(NODE arg,LIST *rp) |
{ |
{ |
NODE b,n; |
NODE b,n; |
Line 990 void Pdp_true_nf_and_quotient_marked(NODE arg,LIST *rp |
|
Line 978 void Pdp_true_nf_and_quotient_marked(NODE arg,LIST *rp |
|
MKLIST(*rp,n); |
MKLIST(*rp,n); |
} |
} |
|
|
|
void Pdp_true_nf_and_quotient(NODE arg,LIST *rp) |
|
{ |
|
NODE narg = mknode(4,ARG0(arg),ARG1(arg),ARG2(arg),ARG2(arg)); |
|
Pdp_true_nf_and_quotient_marked(narg,rp); |
|
} |
|
|
|
|
DP *dp_true_nf_and_quotient_marked_mod (NODE b,DP g,DP *ps,DP *hps,int mod,DP *rp,P *dnp); |
DP *dp_true_nf_and_quotient_marked_mod (NODE b,DP g,DP *ps,DP *hps,int mod,DP *rp,P *dnp); |
|
|
void Pdp_true_nf_and_quotient_marked_mod(NODE arg,LIST *rp) |
void Pdp_true_nf_and_quotient_marked_mod(NODE arg,LIST *rp) |
Line 1022 void Pdp_true_nf_and_quotient_marked_mod(NODE arg,LIST |
|
Line 1017 void Pdp_true_nf_and_quotient_marked_mod(NODE arg,LIST |
|
MKLIST(*rp,n); |
MKLIST(*rp,n); |
} |
} |
|
|
|
void Pdp_true_nf_and_quotient_mod(NODE arg,LIST *rp) |
|
{ |
|
NODE narg = mknode(5,ARG0(arg),ARG1(arg),ARG2(arg),ARG2(arg),ARG3(arg)); |
|
Pdp_true_nf_and_quotient_marked_mod(narg,rp); |
|
} |
|
|
void Pdp_true_nf_marked(NODE arg,LIST *rp) |
void Pdp_true_nf_marked(NODE arg,LIST *rp) |
{ |
{ |
NODE b,n; |
NODE b,n; |
Line 1133 void Pdp_true_nf_mod(NODE arg,LIST *rp) |
|
Line 1134 void Pdp_true_nf_mod(NODE arg,LIST *rp) |
|
NEWNODE(NEXT(n)); BDY(NEXT(n)) = (pointer)dn; |
NEWNODE(NEXT(n)); BDY(NEXT(n)) = (pointer)dn; |
NEXT(NEXT(n)) = 0; MKLIST(*rp,n); |
NEXT(NEXT(n)) = 0; MKLIST(*rp,n); |
} |
} |
|
|
|
void Pdp_weyl_true_nf_and_quotient_marked(NODE arg,LIST *rp) |
|
{ |
|
NODE b,n; |
|
DP *ps,*hps; |
|
DP g; |
|
DP nm; |
|
VECT quo; |
|
P dn; |
|
int full; |
|
|
|
do_weyl = 1; dp_fcoeffs = 0; |
|
asir_assert(ARG0(arg),O_LIST,"dp_weyl_true_nf_and_quotient_marked"); |
|
asir_assert(ARG1(arg),O_DP,"dp_weyl_true_nf_and_quotient_marked"); |
|
asir_assert(ARG2(arg),O_VECT,"dp_weyl_true_nf_and_quotient_marked"); |
|
asir_assert(ARG3(arg),O_VECT,"dp_weyl_true_nf_and_quotient_marked"); |
|
if ( !(g = (DP)ARG1(arg)) ) { |
|
nm = 0; dn = (P)ONE; |
|
} else { |
|
b = BDY((LIST)ARG0(arg)); |
|
ps = (DP *)BDY((VECT)ARG2(arg)); |
|
hps = (DP *)BDY((VECT)ARG3(arg)); |
|
NEWVECT(quo); quo->len = ((VECT)ARG2(arg))->len; |
|
quo->body = (pointer *)dp_true_nf_and_quotient_marked(b,g,ps,hps,&nm,&dn); |
|
} |
|
n = mknode(3,nm,dn,quo); |
|
MKLIST(*rp,n); |
|
} |
|
|
|
void Pdp_weyl_true_nf_and_quotient(NODE arg,LIST *rp) |
|
{ |
|
NODE narg = mknode(4,ARG0(arg),ARG1(arg),ARG2(arg),ARG2(arg)); |
|
Pdp_weyl_true_nf_and_quotient_marked(narg,rp); |
|
} |
|
|
|
|
|
void Pdp_weyl_true_nf_and_quotient_marked_mod(NODE arg,LIST *rp) |
|
{ |
|
NODE b,n; |
|
DP *ps,*hps; |
|
DP g; |
|
DP nm; |
|
VECT quo; |
|
P dn; |
|
int full,mod; |
|
|
|
do_weyl = 1; dp_fcoeffs = 0; |
|
asir_assert(ARG0(arg),O_LIST,"dp_weyl_true_nf_and_quotient_marked_mod"); |
|
asir_assert(ARG1(arg),O_DP,"dp_weyl_true_nf_and_quotient_marked_mod"); |
|
asir_assert(ARG2(arg),O_VECT,"dp_weyl_true_nf_and_quotient_marked_mod"); |
|
asir_assert(ARG3(arg),O_VECT,"dp_weyl_true_nf_and_quotient_marked_mod"); |
|
asir_assert(ARG4(arg),O_N,"dp_weyl_true_nf_and_quotient_marked_mod"); |
|
if ( !(g = (DP)ARG1(arg)) ) { |
|
nm = 0; dn = (P)ONE; |
|
} else { |
|
b = BDY((LIST)ARG0(arg)); |
|
ps = (DP *)BDY((VECT)ARG2(arg)); |
|
hps = (DP *)BDY((VECT)ARG3(arg)); |
|
mod = QTOS((Q)ARG4(arg)); |
|
NEWVECT(quo); quo->len = ((VECT)ARG2(arg))->len; |
|
quo->body = (pointer *)dp_true_nf_and_quotient_marked_mod(b,g,ps,hps,mod,&nm,&dn); |
|
} |
|
n = mknode(3,nm,dn,quo); |
|
MKLIST(*rp,n); |
|
} |
|
|
|
void Pdp_weyl_true_nf_and_quotient_mod(NODE arg,LIST *rp) |
|
{ |
|
NODE narg = mknode(5,ARG0(arg),ARG1(arg),ARG2(arg),ARG2(arg),ARG3(arg)); |
|
Pdp_weyl_true_nf_and_quotient_marked_mod(narg,rp); |
|
} |
|
|
|
|
void Pdp_tdiv(NODE arg,DP *rp) |
void Pdp_tdiv(NODE arg,DP *rp) |
{ |
{ |