version 1.5, 2000/05/29 08:54:45 |
version 1.6, 2000/07/13 05:09:00 |
|
|
/* $OpenXM: OpenXM_contrib2/asir2000/builtin/gr.c,v 1.4 2000/04/25 04:07:58 noro Exp $ */ |
/* $OpenXM: OpenXM_contrib2/asir2000/builtin/gr.c,v 1.5 2000/05/29 08:54:45 noro Exp $ */ |
#include "ca.h" |
#include "ca.h" |
#include "parse.h" |
#include "parse.h" |
#include "base.h" |
#include "base.h" |
|
|
dltod(BDY(s),nv,&tdp); |
dltod(BDY(s),nv,&tdp); |
dp_subd(tdp,ps[(int)BDY(r)],&sd); |
dp_subd(tdp,ps[(int)BDY(r)],&sd); |
_dp_mod(sd,m,0,&sdm); |
_dp_mod(sd,m,0,&sdm); |
_mulmd(CO,m,ps[(int)BDY(r)],sdm,&f2); |
_mulmd(CO,m,sdm,ps[(int)BDY(r)],&f2); |
MKNODE(bt,f2,blist); blist = bt; |
MKNODE(bt,f2,blist); blist = bt; |
s = symb_merge(s,dp_dllist(f2),nv); |
s = symb_merge(s,dp_dllist(f2),nv); |
nred++; |
nred++; |
|
|
struct oEGT tnf0,tnf1,tnfm0,tnfm1,tpz0,tpz1,tsp0,tsp1,tspm0,tspm1,tnp0,tnp1,tmp0,tmp1; |
struct oEGT tnf0,tnf1,tnfm0,tnfm1,tpz0,tpz1,tsp0,tsp1,tspm0,tspm1,tnp0,tnp1,tmp0,tmp1; |
int skip_nf_flag; |
int skip_nf_flag; |
double t_0; |
double t_0; |
|
int new_sugar; |
static prev_sugar = -1; |
static prev_sugar = -1; |
|
|
Max_mag = 0; |
Max_mag = 0; |
|
|
get_eg(&tmp1); add_eg(&eg_mp,&tmp0,&tmp1); |
get_eg(&tmp1); add_eg(&eg_mp,&tmp0,&tmp1); |
if ( m ) { |
if ( m ) { |
get_eg(&tspm0); |
get_eg(&tspm0); |
_dp_sp_mod(psm[l->dp1],psm[l->dp2],m,&h); |
_dp_sp_mod_dup(psm[l->dp1],psm[l->dp2],m,&h); |
|
new_sugar = h->sugar; |
get_eg(&tspm1); add_eg(&eg_spm,&tspm0,&tspm1); |
get_eg(&tspm1); add_eg(&eg_spm,&tspm0,&tspm1); |
get_eg(&tnfm0); |
get_eg(&tnfm0); |
_dp_nf_mod(gall,h,psm,m,0,&nfm); |
_dp_nf_mod_destructive(gall,h,psm,m,0,&nfm); |
get_eg(&tnfm1); add_eg(&eg_nfm,&tnfm0,&tnfm1); |
get_eg(&tnfm1); add_eg(&eg_nfm,&tnfm0,&tnfm1); |
} else |
} else |
nfm = (DP)1; |
nfm = (DP)1; |
|
|
} |
} |
} else |
} else |
dp_sp(ps[l->dp1],ps[l->dp2],&h); |
dp_sp(ps[l->dp1],ps[l->dp2],&h); |
|
new_sugar = h->sugar; |
get_eg(&tsp1); add_eg(&eg_sp,&tsp0,&tsp1); |
get_eg(&tsp1); add_eg(&eg_sp,&tsp0,&tsp1); |
get_eg(&tnf0); |
get_eg(&tnf0); |
t_0 = get_rtime(); |
t_0 = get_rtime(); |
|
|
add_eg(&eg_znfm,&tnfm0,&tnfm1); |
add_eg(&eg_znfm,&tnfm0,&tnfm1); |
ZR++; |
ZR++; |
if ( Print || PrintShort ) { |
if ( Print || PrintShort ) { |
if ( h && (h->sugar != prev_sugar) ) { |
if ( new_sugar != prev_sugar ) { |
fprintf(asir_out,"[%d]",h->sugar); |
fprintf(asir_out,"[%d]",new_sugar); |
prev_sugar = h->sugar; |
prev_sugar = new_sugar; |
} |
} |
fprintf(asir_out,"."); fflush(asir_out); prev = 0; |
fprintf(asir_out,"."); fflush(asir_out); prev = 0; |
} |
} |
|
|
l->dp2 = QTOS((Q)BDY(pair)); |
l->dp2 = QTOS((Q)BDY(pair)); |
if ( m ) { |
if ( m ) { |
get_eg(&tspm0); |
get_eg(&tspm0); |
_dp_sp_mod(psm[l->dp1],psm[l->dp2],m,&h); |
_dp_sp_mod_dup(ps[l->dp1],ps[l->dp2],m,&h); |
get_eg(&tspm1); add_eg(&eg_spm,&tspm0,&tspm1); |
get_eg(&tspm1); add_eg(&eg_spm,&tspm0,&tspm1); |
get_eg(&tnfm0); |
get_eg(&tnfm0); |
_dp_nf_mod(gall,h,psm,m,0,&nfm); |
_dp_nf_mod_destructive(gall,h,ps,m,!Top,&nf); |
get_eg(&tnfm1); add_eg(&eg_nfm,&tnfm0,&tnfm1); |
get_eg(&tnfm1); add_eg(&eg_nfm,&tnfm0,&tnfm1); |
} else |
} else |
nfm = (DP)1; |
nfm = (DP)1; |
|
|
get_eg(&tspm1); add_eg(&eg_spm,&tspm0,&tspm1); get_eg(&tnfm0); |
get_eg(&tspm1); add_eg(&eg_spm,&tspm0,&tspm1); get_eg(&tnfm0); |
dp_nf_mod(gall,h,ps,m,!Top,&nf); |
dp_nf_mod(gall,h,ps,m,!Top,&nf); |
} else { |
} else { |
_dp_sp_mod(ps[l->dp1],ps[l->dp2],m,&h); |
_dp_sp_mod_dup(ps[l->dp1],ps[l->dp2],m,&h); |
get_eg(&tspm1); add_eg(&eg_spm,&tspm0,&tspm1); get_eg(&tnfm0); |
get_eg(&tspm1); add_eg(&eg_spm,&tspm0,&tspm1); get_eg(&tnfm0); |
_dp_nf_mod(gall,h,ps,m,!Top,&nf); |
_dp_nf_mod_destructive(gall,h,ps,m,!Top,&nf); |
} |
} |
get_eg(&tnfm1); add_eg(&eg_nfm,&tnfm0,&tnfm1); |
get_eg(&tnfm1); add_eg(&eg_nfm,&tnfm0,&tnfm1); |
if ( nf ) { |
if ( nf ) { |
|
|
print_split_eg(&tnfm0,&tnfm1); fflush(asir_out); |
print_split_eg(&tnfm0,&tnfm1); fflush(asir_out); |
fprintf(asir_out,"(%d,%d),nb=%d,nab=%d,rp=%d,sugar=%d",l->dp1,l->dp2,length(g),length(gall),DPPlength(d),pss[nh]); |
fprintf(asir_out,"(%d,%d),nb=%d,nab=%d,rp=%d,sugar=%d",l->dp1,l->dp2,length(g),length(gall),DPPlength(d),pss[nh]); |
printdl(psh[nh]); fprintf(asir_out,"\n"); fflush(asir_out); |
printdl(psh[nh]); fprintf(asir_out,"\n"); fflush(asir_out); |
|
} else if ( PrintShort ) { |
|
fprintf(asir_out,"+"); fflush(asir_out); |
} |
} |
prev = 1; |
prev = 1; |
} else { |
} else { |
add_eg(&eg_znfm,&tnfm0,&tnfm1); |
add_eg(&eg_znfm,&tnfm0,&tnfm1); |
ZR++; |
ZR++; |
if ( Print ) { |
if ( Print || PrintShort ) { |
fprintf(asir_out,"."); fflush(asir_out); prev = 0; |
fprintf(asir_out,"."); fflush(asir_out); prev = 0; |
} |
} |
} |
} |
} |
} |
if ( Print ) |
if ( Print || PrintShort ) |
fprintf(asir_out,"gb_mod done\n"); |
fprintf(asir_out,"gb_mod done\n"); |
return g; |
return g; |
} |
} |