version 1.6, 2020/08/26 06:03:31 |
version 1.7, 2021/03/25 07:03:21 |
|
|
#include "ox_pari.h" |
#include "ox_pari.h" |
|
|
|
int with_gmp; |
|
|
|
int gmp_check() |
|
{ |
|
GEN z1,z2; |
|
|
|
// z1=[*,*,1,2], z2=[*,*,2,1] |
|
// if gmp style => z1>z2 else z1<z2 |
|
z1 = cgeti(2+2); setsigne(z1,1); setlgefint(z1,lg(z1)); |
|
z1[2] = 1; z1[3] = 2; |
|
z2 = cgeti(2+2); setsigne(z2,1); setlgefint(z2,lg(z2)); |
|
z2[2] = 2; z2[3] = 1; |
|
if ( cmpii(z1,z2) > 0 ) with_gmp = 1; |
|
else with_gmp = 0; |
|
} |
|
|
GEN cmo_int32_to_GEN(cmo_int32 *c) |
GEN cmo_int32_to_GEN(cmo_int32 *c) |
{ |
{ |
GEN z; |
GEN z; |
Line 42 GEN cmo_zz_to_GEN(cmo_zz *c) |
|
Line 58 GEN cmo_zz_to_GEN(cmo_zz *c) |
|
len = ABSIZ(mpz); |
len = ABSIZ(mpz); |
ptr = (long *)PTR(mpz); |
ptr = (long *)PTR(mpz); |
z = cgeti(len+2); |
z = cgeti(len+2); |
for ( j = 0; j < len; j++ ) |
if ( with_gmp ) // least signifcant first |
z[len-j+1] = ptr[j]; |
for ( j = 0; j < len; j++ ) |
|
z[j+2] = ptr[j]; |
|
else // most signifcant first |
|
for ( j = 0; j < len; j++ ) |
|
z[len-j+1] = ptr[j]; |
setsigne(z,sgn); |
setsigne(z,sgn); |
setlgefint(z,lg(z)); |
setlgefint(z,lg(z)); |
return z; |
return z; |
Line 166 cmo_zz *GEN_to_cmo_zz(GEN z) |
|
Line 186 cmo_zz *GEN_to_cmo_zz(GEN z) |
|
cmo_zz *c; |
cmo_zz *c; |
|
|
c = new_cmo_zz(); |
c = new_cmo_zz(); |
mpz_import(c->mpz,lg(z)-2,1,sizeof(long),0,0,&z[2]); |
// -1:least significant first, 1:most significant first |
|
mpz_import(c->mpz,lg(z)-2,with_gmp?-1:1,sizeof(long),0,0,&z[2]); |
if ( signe(z) < 0 ) |
if ( signe(z) < 0 ) |
mpz_neg(c->mpz,c->mpz); |
mpz_neg(c->mpz,c->mpz); |
return c; |
return c; |