version 1.2, 2003/11/15 09:06:20 |
version 1.4, 2008/09/19 10:55:40 |
|
|
/* $OpenXM: OpenXM/src/ox_ntl/ntl.rr,v 1.1 2003/11/03 03:11:21 iwane Exp $ */ |
/* $OpenXM: OpenXM/src/ox_ntl/ntl.rr,v 1.3 2003/11/25 13:48:50 iwane Exp $ */ |
|
|
module ntl; |
module ntl; |
localf factor$ |
localf factor$ |
|
|
/* extern variables */ |
/* extern variables */ |
|
|
#if 1 |
#if 1 |
localf test$ |
localf test_factor$ |
|
localf test_lll$ |
|
|
/*&usage begin: ntl.test(PID, POLY) |
/*&usage begin: ntl.test_factor(PID, POLY) |
compare on ox_NTL and on asir. |
compare on ox_NTL and on asir. |
|
|
example: |
example: |
|
[1027] PID=ox_launch(ox_ntl); |
[1028] F=ntl.ex_data(4); |
[1028] F=ntl.ex_data(4); |
x^16-136*x^14+6476*x^12-141912*x^10+1513334*x^8-7453176*x^6+13950764*x^4-5596840*x^2+46225 |
x^16-136*x^14+6476*x^12-141912*x^10+1513334*x^8-7453176*x^6+13950764*x^4-5596840*x^2+46225 |
[1029] F = F * subst(F, x, x + 1)$ |
[1029] F = F * subst(F, x, x + 1)$ |
Line 28 x^16-136*x^14+6476*x^12-141912*x^10+1513334*x^8-745317 |
|
Line 30 x^16-136*x^14+6476*x^12-141912*x^10+1513334*x^8-745317 |
|
[1031] ntl.test(PID, F); |
[1031] ntl.test(PID, F); |
[CPU,0.121539,0.001354,GC,0.0222,0] |
[CPU,0.121539,0.001354,GC,0.0222,0] |
|
|
|
|
end: */ |
end: */ |
def test(PID, F) |
def test_factor(PID, F) |
{ |
{ |
T0 = time(); |
T0 = time(); |
fctr(F); |
fctr(F); |
|
|
return (["CPU", T1[0]-T0[0],T2[0]-T1[0],"GC",T1[1]-T0[1],T2[1]-T1[1]]); |
return (["CPU", T1[0]-T0[0],T2[0]-T1[0],"GC",T1[1]-T0[1],T2[1]-T1[1]]); |
} |
} |
|
|
|
def test_lll(PID, F) |
|
{ |
|
T0 = time(); |
|
pari(lllint, F); |
|
T1 = time(); |
|
ntl.lll(PID, F); |
|
T2 = time(); |
|
|
|
return (["CPU", T1[0]-T0[0],T2[0]-T1[0],"GC",T1[1]-T0[1],T2[1]-T1[1]]); |
|
} |
|
|
#endif |
#endif |
|
|
/*&usage begin: ntl.factor(PID, POLY) |
/*&usage begin: ntl.factor(PID, POLY) |
|
|
if (type(COL) == 10) |
if (type(COL) == 10) |
COL = int32ton(COL); |
COL = int32ton(COL); |
|
|
A = newmat(2, 2); /*, [[1, 0],[0, 1]]); /* COL, COL); */ |
A = newmat(ROW, COL); |
|
|
C = 2; |
C = 2; |
for (I = 0; I < ROW; I++) { |
for (I = 0; I < ROW; I++) { |
|
|
Matrix which element is Integer. |
Matrix which element is Integer. |
|
|
example: |
example: |
[1081] M=newmat(2,2,[[10,0],[-7,3]]); |
[1046] def trans(M) { |
[ 10 0 ] |
RET = newmat(size(M)[1], size(M)[0]); |
[ -7 3 ] |
for (I = 0; I < size(M)[0]; I++) |
[1082] ntl.lll(PID, M); |
for (J = 0; J < size(M)[1]; J++) |
[ 3 3 ] |
RET[J][I] = M[I][J]; |
[ 4 -6 ] |
return (RET); |
[1083] pari(lll, M); |
} |
[ 0 1 ] |
[1047] def lllpari(A) { |
[ 1 2 ] <== why ? |
return (trans(trans(A) * pari(lllint, trans(A)))); |
|
} |
|
[1048] M=newmat(3, 3, [[10,0, 10], [-7,3, 30], [7, 3, 20]]); |
|
[ 10 0 10 ] |
|
[ -7 3 30 ] |
|
[ 7 3 20 ] |
|
[1049] ntl.lll(PID, M); |
|
[ 2 -6 0 ] |
|
[ -1 -3 10 ] |
|
[ 11 3 0 ] |
|
[1050] lllpari(M); |
|
[ 2 -6 0 ] |
|
[ -1 -3 10 ] |
|
[ 11 3 0 ] |
|
|
|
|
ref: |
ref: |
|
|
/* parameter check */ |
/* parameter check */ |
TYPE = type(M); |
TYPE = type(M); |
if (TYPE != 6) { /* matrix */ |
if (TYPE != 6) { /* matrix */ |
error("ntl.lll: invalid argument"); |
MES = "ntl.lll: invalid argument: " + TYPE; |
|
error(MES); |
} |
} |
|
|
A = mat2list(M); |
A = mat2list(M); |