version 1.7, 2000/12/08 02:39:04 |
version 1.10, 2000/12/11 02:00: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.6 2000/12/05 08:29:43 noro Exp $ |
* $OpenXM: OpenXM_contrib2/asir2000/builtin/dp-supp.c,v 1.9 2000/12/08 08:26:08 noro Exp $ |
*/ |
*/ |
#include "ca.h" |
#include "ca.h" |
#include "base.h" |
#include "base.h" |
|
|
} |
} |
} |
} |
|
|
void dp_ptozp_d(dist,ndist,p,rp) |
extern int mpi_mag; |
NODE dist; |
extern int PCoeffs; |
int ndist; |
|
|
void dp_ptozp_d(p,rp) |
DP p,*rp; |
DP p,*rp; |
{ |
{ |
int i,j,k,l,n,nsep; |
int i,j,k,l,n,nsep; |
|
|
N qn,gn; |
N qn,gn; |
double get_rtime(); |
double get_rtime(); |
int blen; |
int blen; |
|
NODE dist; |
|
int ndist; |
double t0; |
double t0; |
double t_e,t_d,t_d1,t_c; |
double t_e,t_d,t_d1,t_c; |
|
extern int DP_NFStat; |
|
extern LIST Dist; |
|
|
if ( !p ) |
if ( !p ) |
*rp = 0; |
*rp = 0; |
else { |
else { |
|
if ( PCoeffs ) { |
|
dp_ptozp(p,rp); return; |
|
} |
|
if ( !Dist || p_mag(BDY(p)->c) <= mpi_mag ) { |
|
dist = 0; ndist = 0; |
|
if ( DP_NFStat ) fprintf(asir_out,"L"); |
|
} else { |
|
dist = BDY(Dist); ndist = length(dist); |
|
if ( DP_NFStat ) fprintf(asir_out,"D"); |
|
} |
for ( m = BDY(p), n = 0; m; m = NEXT(m), n++ ); |
for ( m = BDY(p), n = 0; m; m = NEXT(m), n++ ); |
nsep = ndist + 1; |
nsep = ndist + 1; |
if ( n <= nsep ) { |
if ( n <= nsep ) { |
|
|
} |
} |
} |
} |
|
|
void dp_ptozp2_d(dist,ndist,p0,p1,hp,rp) |
void dp_ptozp2_d(p0,p1,hp,rp) |
NODE dist; |
|
int ndist; |
|
DP p0,p1; |
DP p0,p1; |
DP *hp,*rp; |
DP *hp,*rp; |
{ |
{ |
DP t,s,h,r; |
DP t,s,h,r; |
MP m,mr,mr0,m0; |
MP m,mr,mr0,m0; |
|
|
addd(CO,p0,p1,&t); dp_ptozp_d(dist,ndist,t,&s); |
addd(CO,p0,p1,&t); dp_ptozp_d(t,&s); |
if ( !p0 ) { |
if ( !p0 ) { |
h = 0; r = s; |
h = 0; r = s; |
} else if ( !p1 ) { |
} else if ( !p1 ) { |
|
|
*head = h; *rest = r; *dnp = c2; |
*head = h; *rest = r; *dnp = c2; |
} |
} |
|
|
|
struct oEGT eg_red_mod; |
|
|
void _dp_red_mod_destructive(p1,p2,mod,rp) |
void _dp_red_mod_destructive(p1,p2,mod,rp) |
DP p1,p2; |
DP p1,p2; |
int mod; |
int mod; |
|
|
MP m; |
MP m; |
DP t,s; |
DP t,s; |
int c,c1; |
int c,c1; |
|
struct oEGT t0,t1; |
|
|
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; |
|
|
_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; |
_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); |
|
/* 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); */ |
} |
} |
|
|
/* |
/* |