version 1.3, 2000/04/13 06:01:02 |
version 1.4, 2000/04/25 04:07:59 |
|
|
/* $OpenXM: OpenXM_contrib2/asir2000/engine/dist.c,v 1.2 2000/04/05 08:32:17 noro Exp $ */ |
/* $OpenXM: OpenXM_contrib2/asir2000/engine/dist.c,v 1.3 2000/04/13 06:01:02 noro Exp $ */ |
#include "ca.h" |
#include "ca.h" |
|
|
#define NV(p) ((p)->nv) |
#define NV(p) ((p)->nv) |
|
|
{ |
{ |
MP m; |
MP m; |
DP s,t,u; |
DP s,t,u; |
|
int i,l; |
|
MP *w; |
|
|
if ( !p1 || !p2 ) |
if ( !p1 || !p2 ) |
*pr = 0; |
*pr = 0; |
|
|
else if ( OID(p2) <= O_P ) |
else if ( OID(p2) <= O_P ) |
muldc(vl,p1,(P)p2,pr); |
muldc(vl,p1,(P)p2,pr); |
else { |
else { |
for ( m = BDY(p2), s = 0; m; m = NEXT(m) ) { |
for ( m = BDY(p2), l = 0; m; m = NEXT(m), l++ ); |
muldm(vl,p1,m,&t); addd(vl,s,t,&u); s = u; |
w = ALLOCA(l*sizeof(MP)); |
|
for ( m = BDY(p2), i = 0; i < l; m = NEXT(m), i++ ) |
|
w[i] = m; |
|
for ( s = 0, i = l-1; i >= 0; i-- ) { |
|
muldm(vl,p1,w[i],&t); addd(vl,s,t,&u); s = u; |
} |
} |
*pr = s; |
*pr = s; |
} |
} |
|
|
{ |
{ |
MP m; |
MP m; |
DP s,t,u; |
DP s,t,u; |
|
int i,l; |
|
MP *w; |
|
|
if ( !p1 || !p2 ) |
if ( !p1 || !p2 ) |
*pr = 0; |
*pr = 0; |
|
|
else if ( OID(p2) <= O_P ) |
else if ( OID(p2) <= O_P ) |
muldc(vl,p1,(P)p2,pr); |
muldc(vl,p1,(P)p2,pr); |
else { |
else { |
for ( m = BDY(p2), s = 0; m; m = NEXT(m) ) { |
for ( m = BDY(p2), l = 0; m; m = NEXT(m), l++ ); |
weyl_muldm(vl,p1,m,&t); addd(vl,s,t,&u); s = u; |
w = ALLOCA(l*sizeof(MP)); |
|
for ( m = BDY(p2), i = 0; i < l; m = NEXT(m), i++ ) |
|
w[i] = m; |
|
for ( s = 0, i = l-1; i >= 0; i-- ) { |
|
weyl_muldm(vl,p1,w[i],&t); addd(vl,s,t,&u); s = u; |
} |
} |
*pr = s; |
*pr = s; |
} |
} |
|
|
{ |
{ |
DP r,t,t1; |
DP r,t,t1; |
MP m; |
MP m; |
int n; |
int n,l,i; |
|
MP *w; |
|
|
if ( !p ) |
if ( !p ) |
*pr = 0; |
*pr = 0; |
else { |
else { |
for ( r = 0, m = BDY(p), n = NV(p); m; m = NEXT(m) ) { |
for ( m = BDY(p), l = 0; m; m = NEXT(m), l++ ); |
weyl_mulmm(vl,m,m0,n,&t); |
w = ALLOCA(l*sizeof(MP)); |
|
for ( m = BDY(p), i = 0; i < l; m = NEXT(m), i++ ) |
|
w[i] = m; |
|
for ( r = 0, i = l-1, n = NV(p); i >= 0; i-- ) { |
|
weyl_mulmm(vl,w[i],m0,n,&t); |
addd(vl,r,t,&t1); r = t1; |
addd(vl,r,t,&t1); r = t1; |
} |
} |
if ( r ) |
if ( r ) |