version 1.194, 2011/01/06 04:41:47 |
version 1.196, 2011/06/16 08:17:15 |
|
|
/* $OpenXM: OpenXM_contrib2/asir2000/engine/nd.c,v 1.193 2010/12/22 09:33:57 noro Exp $ */ |
/* $OpenXM: OpenXM_contrib2/asir2000/engine/nd.c,v 1.195 2011/02/18 02:54:48 noro Exp $ */ |
|
|
#include "nd.h" |
#include "nd.h" |
|
|
Line 49 static int nd_demand; |
|
Line 49 static int nd_demand; |
|
static int nd_module,nd_ispot,nd_mpos,nd_pot_nelim; |
static int nd_module,nd_ispot,nd_mpos,nd_pot_nelim; |
static NODE nd_tracelist; |
static NODE nd_tracelist; |
static NODE nd_alltracelist; |
static NODE nd_alltracelist; |
static int nd_gentrace,nd_gensyz,nd_nora,nd_newelim; |
static int nd_gentrace,nd_gensyz,nd_nora,nd_newelim,nd_intersect; |
static int *nd_gbblock; |
static int *nd_gbblock; |
|
|
NumberField get_numberfield(); |
NumberField get_numberfield(); |
|
|
if ( nd_gentrace ) { |
if ( nd_gentrace ) { |
cont = ndc_div(m,hc,HCU(nf)); |
cont = ndc_div(m,hc,HCU(nf)); |
if ( m || !UNIQ(cont) ) { |
if ( m || !UNIQ(cont) ) { |
t = mknode(4,0,0,0,cont); |
t = mknode(4,NULLP,NULLP,NULLP,cont); |
MKLIST(list,t); MKNODE(t,list,nd_tracelist); |
MKLIST(list,t); MKNODE(t,list,nd_tracelist); |
nd_tracelist = t; |
nd_tracelist = t; |
} |
} |
|
|
if ( nd_gentrace ) { |
if ( nd_gentrace ) { |
cont = ndc_div(0,hnfq,HCU(nfqv)); |
cont = ndc_div(0,hnfq,HCU(nfqv)); |
if ( !UNIQ(cont) ) { |
if ( !UNIQ(cont) ) { |
t = mknode(4,0,0,0,cont); |
t = mknode(4,NULLP,NULLP,NULLP,cont); |
MKLIST(list,t); MKNODE(t,list,nd_tracelist); |
MKLIST(list,t); MKNODE(t,list,nd_tracelist); |
nd_tracelist = t; |
nd_tracelist = t; |
} |
} |
Line 2311 ND_pairs nd_newpairs( NODE g, int t ) |
|
Line 2311 ND_pairs nd_newpairs( NODE g, int t ) |
|
|
|
dl = DL(nd_psh[t]); |
dl = DL(nd_psh[t]); |
ts = SG(nd_psh[t]) - TD(dl); |
ts = SG(nd_psh[t]) - TD(dl); |
|
if ( nd_module && nd_intersect && (MPOS(dl) > 1) ) return 0; |
for ( r0 = 0, h = g; h; h = NEXT(h) ) { |
for ( r0 = 0, h = g; h; h = NEXT(h) ) { |
if ( nd_module && (MPOS(DL(nd_psh[(long)BDY(h)])) != MPOS(dl)) ) |
if ( nd_module && (MPOS(DL(nd_psh[(long)BDY(h)])) != MPOS(dl)) ) |
continue; |
continue; |
Line 2925 void nd_gr(LIST f,LIST v,int m,int homo,int f4,struct |
|
Line 2926 void nd_gr(LIST f,LIST v,int m,int homo,int f4,struct |
|
nd_setup_parameters(nvar,0); |
nd_setup_parameters(nvar,0); |
} |
} |
nd_demand = 0; |
nd_demand = 0; |
|
if ( nd_module && nd_intersect ) { |
|
for ( j = nd_psn-1, x = 0; j >= 0; j-- ) |
|
if ( MPOS(DL(nd_psh[j])) > 1 ) { |
|
MKNODE(xx,(pointer)j,x); x = xx; |
|
} |
|
conv_ilist(nd_demand,0,x,0); |
|
goto FINAL; |
|
} |
x = ndv_reducebase(x,perm); |
x = ndv_reducebase(x,perm); |
if ( nd_gentrace ) { tl1 = nd_alltracelist; nd_alltracelist = 0; } |
if ( nd_gentrace ) { tl1 = nd_alltracelist; nd_alltracelist = 0; } |
x = ndv_reduceall(m,x); |
x = ndv_reduceall(m,x); |
Line 2942 void nd_gr(LIST f,LIST v,int m,int homo,int f4,struct |
|
Line 2951 void nd_gr(LIST f,LIST v,int m,int homo,int f4,struct |
|
} |
} |
nd_bpe = cbpe; |
nd_bpe = cbpe; |
nd_setup_parameters(nd_nvar,0); |
nd_setup_parameters(nd_nvar,0); |
|
FINAL: |
for ( r0 = 0, t = x; t; t = NEXT(t) ) { |
for ( r0 = 0, t = x; t; t = NEXT(t) ) { |
NEXTNODE(r0,r); |
NEXTNODE(r0,r); |
if ( nd_module ) BDY(r) = ndvtopl(m,CO,vv,BDY(t),mrank); |
if ( nd_module ) BDY(r) = ndvtopl(m,CO,vv,BDY(t),mrank); |
Line 6923 void finalize_tracelist(int i,P cont) |
|
Line 6933 void finalize_tracelist(int i,P cont) |
|
Q iq; |
Q iq; |
|
|
if ( !UNIQ(cont) ) { |
if ( !UNIQ(cont) ) { |
node = mknode(4,0,0,0,cont); |
node = mknode(4,NULLP,NULLP,NULLP,cont); |
MKLIST(l,node); MKNODE(node,l,nd_tracelist); |
MKLIST(l,node); MKNODE(node,l,nd_tracelist); |
nd_tracelist = node; |
nd_tracelist = node; |
} |
} |
Line 6958 void parse_nd_option(NODE opt) |
|
Line 6968 void parse_nd_option(NODE opt) |
|
Obj value; |
Obj value; |
|
|
nd_gentrace = 0; nd_gensyz = 0; nd_nora = 0; nd_gbblock = 0; |
nd_gentrace = 0; nd_gensyz = 0; nd_nora = 0; nd_gbblock = 0; |
nd_newelim = 0; |
nd_newelim = 0; nd_intersect = 0; |
for ( t = opt; t; t = NEXT(t) ) { |
for ( t = opt; t; t = NEXT(t) ) { |
p = BDY((LIST)BDY(t)); |
p = BDY((LIST)BDY(t)); |
key = BDY((STRING)BDY(p)); |
key = BDY((STRING)BDY(p)); |
Line 6982 void parse_nd_option(NODE opt) |
|
Line 6992 void parse_nd_option(NODE opt) |
|
nd_gbblock[i] = -1; |
nd_gbblock[i] = -1; |
} else if ( !strcmp(key,"newelim") ) |
} else if ( !strcmp(key,"newelim") ) |
nd_newelim = value?1:0; |
nd_newelim = value?1:0; |
|
else if ( !strcmp(key,"intersect") ) |
|
nd_intersect = value?1:0; |
} |
} |
} |
} |