=================================================================== RCS file: /home/cvs/OpenXM/src/ox_ntl/ntl.rr,v retrieving revision 1.2 retrieving revision 1.3 diff -u -p -r1.2 -r1.3 --- OpenXM/src/ox_ntl/ntl.rr 2003/11/15 09:06:20 1.2 +++ OpenXM/src/ox_ntl/ntl.rr 2003/11/25 13:48:50 1.3 @@ -1,4 +1,4 @@ -/* $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.2 2003/11/15 09:06:20 iwane Exp $ */ module ntl; localf factor$ @@ -14,9 +14,10 @@ localf list2mat$ /* extern variables */ #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. example: @@ -28,9 +29,8 @@ x^16-136*x^14+6476*x^12-141912*x^10+1513334*x^8-745317 [1031] ntl.test(PID, F); [CPU,0.121539,0.001354,GC,0.0222,0] - end: */ -def test(PID, F) +def test_factor(PID, F) { T0 = time(); fctr(F); @@ -41,6 +41,17 @@ def test(PID, F) 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 /*&usage begin: ntl.factor(PID, POLY) @@ -195,7 +206,7 @@ def list2mat(L) if (type(COL) == 10) COL = int32ton(COL); - A = newmat(2, 2); /*, [[1, 0],[0, 1]]); /* COL, COL); */ + A = newmat(ROW, COL); C = 2; for (I = 0; I < ROW; I++) { @@ -218,15 +229,28 @@ def list2mat(L) Matrix which element is Integer. example: -[1081] M=newmat(2,2,[[10,0],[-7,3]]); -[ 10 0 ] -[ -7 3 ] -[1082] ntl.lll(PID, M); -[ 3 3 ] -[ 4 -6 ] -[1083] pari(lll, M); -[ 0 1 ] -[ 1 2 ] <== why ? +[1046] def trans(M) { + RET = newmat(size(M)[1], size(M)[0]); + for (I = 0; I < size(M)[0]; I++) + for (J = 0; J < size(M)[1]; J++) + RET[J][I] = M[I][J]; + return (RET); +} +[1047] def lllpari(A) { + 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: @@ -238,7 +262,8 @@ def lll(PID, M) /* parameter check */ TYPE = type(M); if (TYPE != 6) { /* matrix */ - error("ntl.lll: invalid argument"); + MES = "ntl.lll: invalid argument: " + TYPE; + error(MES); } A = mat2list(M);