| 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); |