version 1.1, 2018/09/19 05:45:07 |
version 1.3, 2018/09/24 22:26:43 |
|
|
/* $OpenXM$ */ |
/* $OpenXM: OpenXM_contrib2/asir2018/engine/nd.c,v 1.2 2018/09/21 07:06:51 noro Exp $ */ |
|
|
#include "nd.h" |
#include "nd.h" |
|
|
Line 5796 int nd_to_vect_q(UINT *s0,int n,ND d,Z *r) |
|
Line 5796 int nd_to_vect_q(UINT *s0,int n,ND d,Z *r) |
|
for ( i = 0, s = s0, m = BDY(d); m; m = NEXT(m) ) { |
for ( i = 0, s = s0, m = BDY(d); m; m = NEXT(m) ) { |
t = DL(m); |
t = DL(m); |
for ( ; !ndl_equal(t,s); s += nd_wpd, i++ ); |
for ( ; !ndl_equal(t,s); s += nd_wpd, i++ ); |
r[i] = CQ(m); |
dupz(CQ(m),&r[i]); |
} |
} |
for ( i = 0; !r[i]; i++ ); |
for ( i = 0; !r[i]; i++ ); |
return i; |
return i; |
Line 5966 int ndv_reduce_vect_q(Z *svect,int trace,int col,IndAr |
|
Line 5966 int ndv_reduce_vect_q(Z *svect,int trace,int col,IndAr |
|
int maxrs; |
int maxrs; |
double hmag; |
double hmag; |
Z *cvect; |
Z *cvect; |
|
int l; |
|
|
maxrs = 0; |
maxrs = 0; |
for ( i = 0; i < col && !svect[i]; i++ ); |
for ( i = 0; i < col && !svect[i]; i++ ); |
Line 5993 int ndv_reduce_vect_q(Z *svect,int trace,int col,IndAr |
|
Line 5994 int ndv_reduce_vect_q(Z *svect,int trace,int col,IndAr |
|
ivc = ivect->index.c; |
ivc = ivect->index.c; |
for ( j = 1, NMV_ADV(mr); j < len; j++, NMV_ADV(mr) ) { |
for ( j = 1, NMV_ADV(mr); j < len; j++, NMV_ADV(mr) ) { |
pos = prev+ivc[j]; prev = pos; |
pos = prev+ivc[j]; prev = pos; |
mulz(CQ(mr),mcs,&c2); addz(svect[pos],c2,&t); svect[pos] = t; |
muladdtoz(CQ(mr),mcs,&svect[pos]); |
} |
} |
break; |
break; |
case 2: |
case 2: |
ivs = ivect->index.s; |
ivs = ivect->index.s; |
for ( j = 1, NMV_ADV(mr); j < len; j++, NMV_ADV(mr) ) { |
for ( j = 1, NMV_ADV(mr); j < len; j++, NMV_ADV(mr) ) { |
pos = prev+ivs[j]; prev = pos; |
pos = prev+ivs[j]; prev = pos; |
mulz(CQ(mr),mcs,&c2); addz(svect[pos],c2,&t); svect[pos] = t; |
muladdtoz(CQ(mr),mcs,&svect[pos]); |
} |
} |
break; |
break; |
case 4: |
case 4: |
ivi = ivect->index.i; |
ivi = ivect->index.i; |
for ( j = 1, NMV_ADV(mr); j < len; j++, NMV_ADV(mr) ) { |
for ( j = 1, NMV_ADV(mr); j < len; j++, NMV_ADV(mr) ) { |
pos = prev+ivi[j]; prev = pos; |
pos = prev+ivi[j]; prev = pos; |
mulz(CQ(mr),mcs,&c2); addz(svect[pos],c2,&t); svect[pos] = t; |
muladdtoz(CQ(mr),mcs,&svect[pos]); |
} |
} |
break; |
break; |
} |
} |
Line 6713 NODE nd_f4(int m,int checkonly,int **indp) |
|
Line 6714 NODE nd_f4(int m,int checkonly,int **indp) |
|
} |
} |
get_eg(&eg1); init_eg(&eg_f4); add_eg(&eg_f4,&eg0,&eg1); |
get_eg(&eg1); init_eg(&eg_f4); add_eg(&eg_f4,&eg0,&eg1); |
if ( DP_Print ) |
if ( DP_Print ) |
fprintf(asir_out,"sugar=%d,symb=%.3fsec,", |
fprintf(asir_out,"\nsugar=%d,symb=%.3fsec,", |
sugar,eg_f4.exectime+eg_f4.gctime); |
sugar,eg_f4.exectime+eg_f4.gctime); |
nflist = nd_f4_red(m,nd_nzlist?lh:l,0,s0vect,col,rp0,nd_gentrace?&ll:0); |
nflist = nd_f4_red(m,nd_nzlist?lh:l,0,s0vect,col,rp0,nd_gentrace?&ll:0); |
if ( checkonly && nflist ) return 0; |
if ( checkonly && nflist ) return 0; |
Line 6813 NODE nd_f4_trace(int m,int **indp) |
|
Line 6814 NODE nd_f4_trace(int m,int **indp) |
|
} |
} |
get_eg(&eg1); init_eg(&eg_f4); add_eg(&eg_f4,&eg0,&eg1); |
get_eg(&eg1); init_eg(&eg_f4); add_eg(&eg_f4,&eg0,&eg1); |
if ( DP_Print ) |
if ( DP_Print ) |
fprintf(asir_out,"sugar=%d,symb=%.3fsec,", |
fprintf(asir_out,"\nsugar=%d,symb=%.3fsec,", |
sugar,eg_f4.exectime+eg_f4.gctime); |
sugar,eg_f4.exectime+eg_f4.gctime); |
nflist = nd_f4_red(m,l,0,s0vect,col,rp0,&l0); |
nflist = nd_f4_red(m,l,0,s0vect,col,rp0,&l0); |
if ( !l0 ) continue; |
if ( !l0 ) continue; |
Line 9104 NODE nd_f4_lf_trace_main(int m,int **indp) |
|
Line 9105 NODE nd_f4_lf_trace_main(int m,int **indp) |
|
} |
} |
get_eg(&eg1); init_eg(&eg_f4); add_eg(&eg_f4,&eg0,&eg1); |
get_eg(&eg1); init_eg(&eg_f4); add_eg(&eg_f4,&eg0,&eg1); |
if ( DP_Print ) |
if ( DP_Print ) |
fprintf(asir_out,"sugar=%d,symb=%.3fsec,", |
fprintf(asir_out,"\nsugar=%d,symb=%.3fsec,", |
sugar,eg_f4.exectime+eg_f4.gctime); |
sugar,eg_f4.exectime+eg_f4.gctime); |
nflist = nd_f4_red(m,l,0,s0vect,col,rp0,&l0); |
nflist = nd_f4_red(m,l,0,s0vect,col,rp0,&l0); |
if ( !l0 ) continue; |
if ( !l0 ) continue; |