version 1.8, 2018/10/01 07:48:01 |
version 1.9, 2018/10/02 09:06:15 |
|
|
/* $OpenXM: OpenXM_contrib2/asir2018/engine/nd.c,v 1.7 2018/10/01 05:49:06 noro Exp $ */ |
/* $OpenXM: OpenXM_contrib2/asir2018/engine/nd.c,v 1.8 2018/10/01 07:48:01 noro Exp $ */ |
|
|
#include "nd.h" |
#include "nd.h" |
|
|
Line 6042 int ndv_reduce_vect_q(Z *svect,int trace,int col,IndAr |
|
Line 6042 int ndv_reduce_vect_q(Z *svect,int trace,int col,IndAr |
|
return maxrs; |
return maxrs; |
} |
} |
#else |
#else |
|
|
/* direct mpz version */ |
/* direct mpz version */ |
int ndv_reduce_vect_q(Z *svect0,int trace,int col,IndArray *imat,NM_ind_pair *rp0,int nred) |
int ndv_reduce_vect_q(Z *svect0,int trace,int col,IndArray *imat,NM_ind_pair *rp0,int nred) |
{ |
{ |
Line 6084 int ndv_reduce_vect_q(Z *svect0,int trace,int col,IndA |
|
Line 6085 int ndv_reduce_vect_q(Z *svect0,int trace,int col,IndA |
|
mpz_div(cs,svect[k],gcd); |
mpz_div(cs,svect[k],gcd); |
mpz_div(cr,BDY(CZ(mr)),gcd); |
mpz_div(cr,BDY(CZ(mr)),gcd); |
mpz_neg(cs,cs); |
mpz_neg(cs,cs); |
for ( j = 0; j < col; j++ ) |
if ( MUNIMPZ(cr) ) |
mpz_mul(svect[j],svect[j],cr); |
for ( j = 0; j < col; j++ ) mpz_neg(svect[j],svect[j]); |
|
else if ( !UNIMPZ(cr) ) |
|
for ( j = 0; j < col; j++ ) { |
|
if ( mpz_sgn(svect[j]) ) mpz_mul(svect[j],svect[j],cr); |
|
} |
mpz_set_ui(svect[k],0); |
mpz_set_ui(svect[k],0); |
prev = k; |
prev = k; |
switch ( ivect->width ) { |
switch ( ivect->width ) { |