version 1.178, 2009/10/13 08:53:51 |
version 1.182, 2010/02/22 02:20:43 |
|
|
/* $OpenXM: OpenXM_contrib2/asir2000/engine/nd.c,v 1.177 2009/10/12 10:43:45 noro Exp $ */ |
/* $OpenXM: OpenXM_contrib2/asir2000/engine/nd.c,v 1.181 2010/02/05 05:18:38 noro Exp $ */ |
|
|
#include "nd.h" |
#include "nd.h" |
|
|
Line 3139 void nd_gr_trace(LIST f,LIST v,int trace,int homo,int |
|
Line 3139 void nd_gr_trace(LIST f,LIST v,int trace,int homo,int |
|
while ( 1 ) { |
while ( 1 ) { |
if ( Demand ) |
if ( Demand ) |
nd_demand = 1; |
nd_demand = 1; |
|
ret = ndv_setup(m,1,fd0,0,0); |
if ( nd_gentrace ) { |
if ( nd_gentrace ) { |
MKLIST(l1,nd_tracelist); MKNODE(nd_alltracelist,l1,0); |
MKLIST(l1,nd_tracelist); MKNODE(nd_alltracelist,l1,0); |
} |
} |
ret = ndv_setup(m,1,fd0,0,0); |
|
if ( ret ) |
if ( ret ) |
cand = f4?nd_f4_trace(m,&perm):nd_gb_trace(m,ishomo || homo,&perm); |
cand = f4?nd_f4_trace(m,&perm):nd_gb_trace(m,ishomo || homo,&perm); |
if ( !ret || !cand ) { |
if ( !ret || !cand ) { |
Line 4052 void weyl_mul_nm_nmv(int n,int mod,NM m0,NMV m1,NM *ta |
|
Line 4052 void weyl_mul_nm_nmv(int n,int mod,NM m0,NMV m1,NM *ta |
|
NEWNM(m); d = DL(m); |
NEWNM(m); d = DL(m); |
if ( mod ) { |
if ( mod ) { |
c0 = CM(m0); c1 = CM(m1); DMAR(c0,c1,0,mod,c); CM(m) = c; |
c0 = CM(m0); c1 = CM(m1); DMAR(c0,c1,0,mod,c); CM(m) = c; |
} else |
} else if ( nd_vc ) |
|
mulp(nd_vc,CP(m0),CP(m1),&CP(m)); |
|
else |
mulq(CQ(m0),CQ(m1),&CQ(m)); |
mulq(CQ(m0),CQ(m1),&CQ(m)); |
for ( i = 0; i < nd_wpd; i++ ) d[i] = 0; |
for ( i = 0; i < nd_wpd; i++ ) d[i] = 0; |
homo = n&1 ? 1 : 0; |
homo = n&1 ? 1 : 0; |
Line 4107 void weyl_mul_nm_nmv(int n,int mod,NM m0,NMV m1,NM *ta |
|
Line 4109 void weyl_mul_nm_nmv(int n,int mod,NM m0,NMV m1,NM *ta |
|
ndl_addto(DL(tab[u]),d); |
ndl_addto(DL(tab[u]),d); |
if ( mod ) { |
if ( mod ) { |
c0 = CM(tab[u]); DMAR(c0,c,0,mod,c1); CM(tab[u]) = c1; |
c0 = CM(tab[u]); DMAR(c0,c,0,mod,c1); CM(tab[u]) = c1; |
} else { |
} else if ( nd_vc ) |
|
mulp(nd_vc,CP(tab[u]),(P)q,&CP(tab[u])); |
|
else { |
mulq(CQ(tab[u]),q,&q1); CQ(tab[u]) = q1; |
mulq(CQ(tab[u]),q,&q1); CQ(tab[u]) = q1; |
} |
} |
} |
} |
Line 4119 void weyl_mul_nm_nmv(int n,int mod,NM m0,NMV m1,NM *ta |
|
Line 4123 void weyl_mul_nm_nmv(int n,int mod,NM m0,NMV m1,NM *ta |
|
ndl_add(DL(tab[u]),d,DL(t)); |
ndl_add(DL(tab[u]),d,DL(t)); |
if ( mod ) { |
if ( mod ) { |
c0 = CM(tab[u]); DMAR(c0,c,0,mod,c1); CM(t) = c1; |
c0 = CM(tab[u]); DMAR(c0,c,0,mod,c1); CM(t) = c1; |
} else |
} else if ( nd_vc ) |
|
mulp(nd_vc,CP(tab[u]),(P)q,&CP(t)); |
|
else |
mulq(CQ(tab[u]),q,&CQ(t)); |
mulq(CQ(tab[u]),q,&CQ(t)); |
*p = t; |
*p = t; |
} |
} |