version 1.2, 2000/08/21 08:31:42 |
version 1.8, 2006/10/03 08:16:55 |
|
|
* shall be made on your publication or presentation in any form of the |
* shall be made on your publication or presentation in any form of the |
* results obtained by use of the SOFTWARE. |
* results obtained by use of the SOFTWARE. |
* (4) In the event that you modify the SOFTWARE, you shall notify FLL by |
* (4) In the event that you modify the SOFTWARE, you shall notify FLL by |
* e-mail at risa-admin@flab.fujitsu.co.jp of the detailed specification |
* e-mail at risa-admin@sec.flab.fujitsu.co.jp of the detailed specification |
* for such modification or the source code of the modified part of the |
* for such modification or the source code of the modified part of the |
* SOFTWARE. |
* SOFTWARE. |
* |
* |
|
|
* 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/lib/primdec,v 1.1.1.1 1999/12/03 07:39:11 noro Exp $ |
* $OpenXM: OpenXM_contrib2/asir2000/lib/primdec,v 1.7 2006/02/24 01:15:56 noro Exp $ |
*/ |
*/ |
/* Primary decomposition & Radical decomposition program */ |
/* Primary decomposition & Radical decomposition program */ |
/* written by T.Shimoyama, Fujitsu Lab. Date: 1995.10.12 */ |
/* written by T.Shimoyama, Fujitsu Lab. Date: 1995.10.12 */ |
Line 64 COMMONCHECK if 1 : redundancy check by intersection (i |
|
Line 64 COMMONCHECK if 1 : redundancy check by intersection (i |
|
SELECTFLAG selection strategy of separators (0 -- 3) |
SELECTFLAG selection strategy of separators (0 -- 3) |
*/ |
*/ |
|
|
if (vtype(minipoly) != 3) load("gr")$$ |
if (!module_definedp("gr")) load("gr")$ else {}$ |
|
module primdec $ |
|
/* Empty for now. It will be used in a future. */ |
|
endmodule$ |
|
|
|
|
#define GR(R,F,V,O) T2=newvect(4,time());R=dp_gr_main(F,V,0,0,O);GRTIME+=newvect(4,time())-T2; |
#define GR(R,F,V,O) T2=newvect(4,time());R=dp_gr_main(F,V,0,0,O);GRTIME+=newvect(4,time())-T2; |
#define HGRM(R,F,V,O) T2=newvect(4,time());R=dp_gr_main(F,V,1,1,O);GRTIME+=newvect(4,time())-T2; |
#define HGRM(R,F,V,O) T2=newvect(4,time());R=dp_gr_main(F,V,1,1,O);GRTIME+=newvect(4,time())-T2; |
#define NF(R,IN,F,G,O) T2=newvect(4,time());R=dp_nf(IN,F,G,O);NFTIME+=newvect(4,time())-T2; |
#define NF(R,IN,F,G,O) T2=newvect(4,time());R=dp_nf(IN,F,G,O);NFTIME+=newvect(4,time())-T2; |
Line 297 def primadec_main(F,REMS,H,VL) |
|
Line 301 def primadec_main(F,REMS,H,VL) |
|
def isolated(IP,F,GF,RA,H,SC,VL) |
def isolated(IP,F,GF,RA,H,SC,VL) |
{ |
{ |
T0 = newvect(4,time()); |
T0 = newvect(4,time()); |
if ( RA[0] == "begin" ) |
if ( RA[0] == "begin" ) { |
PD = primedec_main([RA[1]],VL); |
PD = primedec_main([RA[1]],VL); |
else if ( RA[0] == "ext" || RA[0] == "sep" ) { |
PD = map(dp_gr_main,PD,VL,0,1,PRIMEORD); /* XXX */ |
|
} else if ( RA[0] == "ext" || RA[0] == "sep" ) { |
if ( RA[0] == "sep" ) |
if ( RA[0] == "sep" ) |
T = prime_irred(idealsav(RA[1]),VL); |
T = prime_irred(idealsav(RA[1]),VL); |
else |
else |
Line 452 def extraction(GF,Pr,VL) |
|
Line 457 def extraction(GF,Pr,VL) |
|
V = minalgdep(Pr,VL,PRIMEORD); |
V = minalgdep(Pr,VL,PRIMEORD); |
U = listminus(VL,V); |
U = listminus(VL,V); |
V0 = append(V,U); |
V0 = append(V,U); |
|
#if 0 |
|
/* This may be a bug. GF is not a GB w.r.t the elimination order */ |
if ( V0 != VL ) { |
if ( V0 != VL ) { |
ORD = [[TMPORD1,length(V)],[TMPORD2,length(U)]]; |
ORD = [[TMPORD1,length(V)],[TMPORD2,length(U)]]; |
GR(G,GF,V0,ORD); |
GR(G,GF,V0,ORD); |
} else |
} else |
G = GF; |
G = GF; |
|
#else |
|
ORD = [[TMPORD1,length(V)],[TMPORD2,length(U)]]; |
|
GR(G,GF,V0,ORD); |
|
#endif |
dp_ord(TMPORD1); |
dp_ord(TMPORD1); |
for (LL = [],HC = 1,I = 0; I < length(G); I++) |
for (LL = [],HC = 1,I = 0; I < length(G); I++) |
LL = append(LL,cdr(fctr(dp_hc(dp_ptod(G[I],V))))); |
LL = append(LL,cdr(fctr(dp_hc(dp_ptod(G[I],V))))); |
Line 1383 def zraddec(F,X) |
|
Line 1394 def zraddec(F,X) |
|
/* contraction from V to X */ |
/* contraction from V to X */ |
def radcont(Q,V,X) |
def radcont(Q,V,X) |
{ |
{ |
dp_ord(irem(PRIMEORD,3)); |
|
for (R=[],I=length(Q)-1;I>=0;I--) { |
for (R=[],I=length(Q)-1;I>=0;I--) { |
|
dp_ord(irem(PRIMEORD,3)); |
G=Q[I]; |
G=Q[I]; |
for (E=1,J=0;J<length(G);J++) |
for (E=1,J=0;J<length(G);J++) |
E = lcm(E,dp_hc(dp_ptod(G[J],V))); |
E = lcm(E,dp_hc(dp_ptod(G[J],V))); |