version 1.15, 2001/09/11 08:56:47 |
version 1.18, 2001/09/17 10:32:40 |
|
|
* 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-supp.c,v 1.14 2001/09/11 03:13:42 noro Exp $ |
* $OpenXM: OpenXM_contrib2/asir2000/builtin/dp-supp.c,v 1.17 2001/09/17 02:58:27 noro Exp $ |
*/ |
*/ |
#include "ca.h" |
#include "ca.h" |
#include "base.h" |
#include "base.h" |
|
#include "inline.h" |
#include "parse.h" |
#include "parse.h" |
#include "ox.h" |
#include "ox.h" |
|
|
|
|
for ( i = 0, td = 0; i < n; i++ ) { |
for ( i = 0, td = 0; i < n; i++ ) { |
w[i] = MAX(d1->d[i],d2->d[i]); td += w[i]; |
w[i] = MAX(d1->d[i],d2->d[i]); td += w[i]; |
} |
} |
NEWDL(d,n); d->td = td - d1->td; |
NEWDL_NOINIT(d,n); d->td = td - d1->td; |
for ( i = 0; i < n; i++ ) |
for ( i = 0; i < n; i++ ) |
d->d[i] = w[i] - d1->d[i]; |
d->d[i] = w[i] - d1->d[i]; |
NEWMP(m); m->dl = d; m->c = (P)BDY(p2)->c; NEXT(m) = 0; |
NEWMP(m); m->dl = d; m->c = (P)BDY(p2)->c; NEXT(m) = 0; |
MKDP(n,m,s); s->sugar = d->td; mulmd(CO,mod,p1,s,&t); |
MKDP(n,m,s); s->sugar = d->td; mulmd(CO,mod,p1,s,&t); |
NEWDL(d,n); d->td = td - d2->td; |
NEWDL_NOINIT(d,n); d->td = td - d2->td; |
for ( i = 0; i < n; i++ ) |
for ( i = 0; i < n; i++ ) |
d->d[i] = w[i] - d2->d[i]; |
d->d[i] = w[i] - d2->d[i]; |
NEWMP(m); m->dl = d; m->c = (P)BDY(p1)->c; NEXT(m) = 0; |
NEWMP(m); m->dl = d; m->c = (P)BDY(p1)->c; NEXT(m) = 0; |
|
|
DL d1,d2,d; |
DL d1,d2,d; |
MP m; |
MP m; |
DP t,s; |
DP t,s; |
int c,c1; |
int c,c1,c2; |
struct oEGT t0,t1; |
struct oEGT t0,t1; |
|
extern int do_weyl; |
|
|
n = p1->nv; d1 = BDY(p1)->dl; d2 = BDY(p2)->dl; |
n = p1->nv; d1 = BDY(p1)->dl; d2 = BDY(p2)->dl; |
_NEWDL(d,n); d->td = d1->td - d2->td; |
_NEWDL(d,n); d->td = d1->td - d2->td; |
for ( i = 0; i < n; i++ ) |
for ( i = 0; i < n; i++ ) |
d->d[i] = d1->d[i]-d2->d[i]; |
d->d[i] = d1->d[i]-d2->d[i]; |
c = invm(ITOS(BDY(p2)->c),mod); c1 = dmar(c,ITOS(BDY(p1)->c),0,mod); |
c = invm(ITOS(BDY(p2)->c),mod); |
|
c2 = ITOS(BDY(p1)->c); |
|
DMAR(c,c2,0,mod,c1); |
_NEWMP(m); m->dl = d; m->c = STOI(mod-c1); NEXT(m) = 0; |
_NEWMP(m); m->dl = d; m->c = STOI(mod-c1); NEXT(m) = 0; |
|
#if 0 |
_MKDP(n,m,s); s->sugar = d->td; |
_MKDP(n,m,s); s->sugar = d->td; |
_mulmd_dup(mod,s,p2,&t); _free_dp(s); |
_mulmd_dup(mod,s,p2,&t); _free_dp(s); |
|
#else |
|
if ( do_weyl ) { |
|
_weyl_mulmdm_dup(mod,p2,m,&t); _FREEMP(m); |
|
} else { |
|
_mulmdm_dup(mod,p2,m,&t); _FREEMP(m); |
|
} |
|
#endif |
/* get_eg(&t0); */ |
/* get_eg(&t0); */ |
_addmd_destructive(mod,p1,t,rp); |
_addmd_destructive(mod,p1,t,rp); |
/* get_eg(&t1); add_eg(&eg_red_mod,&t0,&t1); */ |
/* get_eg(&t1); add_eg(&eg_red_mod,&t0,&t1); */ |
|
|
} |
} |
return 1; |
return 1; |
} |
} |
|
} |
|
|
|
_print_mp(nv,m) |
|
int nv; |
|
MP m; |
|
{ |
|
int i; |
|
|
|
if ( !m ) |
|
return; |
|
for ( ; m; m = NEXT(m) ) { |
|
fprintf(stderr,"%d<",ITOS(C(m))); |
|
for ( i = 0; i < nv; i++ ) { |
|
fprintf(stderr,"%d",m->dl->d[i]); |
|
if ( i != nv-1 ) |
|
fprintf(stderr," "); |
|
} |
|
fprintf(stderr,">",C(m)); |
|
} |
|
fprintf(stderr,"\n"); |
} |
} |