Size: 946
Comment:
|
Size: 1399
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 3: | Line 3: |
MuPAD {{{ >> A := linalg::randomMatrix(50,50,Dom::Integer, 10); Warning: This matrix is too large for display. If you want to see all non-zero entries of large matrices, use doprint(..). [(Dom::Matrix(Dom::Integer))::print] |
|
Line 4: | Line 8: |
Dom::Matrix(Dom::Integer)(50, 50, ["..."]) >> time(linalg::hermiteForm(A)); 26445 }}} |
Fast Hermite Normal Form over ZZ
MuPAD
>> A := linalg::randomMatrix(50,50,Dom::Integer, 10); Warning: This matrix is too large for display. If you want to see all non-zero entries of large matrices, use doprint(..). [(Dom::Matrix(Dom::Integer))::print] Dom::Matrix(Dom::Integer)(50, 50, ["..."]) >> time(linalg::hermiteForm(A)); 26445
Benchmark 1: Random 200x200 single-digit matrix
Mathematica code:
sage: mathematica.eval('a = Table[RandomInteger[{0,9}], {i,200}, {j,200}];') sage: mathematica.eval('Timing[HermiteDecomposition[a];]') {98.9791, Null}
Maple code:
> with(LinearAlgebra); n := 200: k := 9: A := RandomMatrix(n,n,generator=rand(-k..k)): time( HermiteForm(A,output=['H', 'U']) ); 60.431 seconds
Sage (via PARI):
sage: a = random_matrix(ZZ,200) sage: time v = a.echelon_form() CPU times: user 43.72 s, sys: 0.27 s, total: 43.98 s Wall time: 44.36
sage: a = random_matrix(ZZ,200) sage: z = magma(a) sage: t = magma.cputime() sage: time w = z.HermiteForm() CPU times: user 0.00 s, sys: 0.00 s, total: 0.00 s Wall time: 0.82 sage: magma.cputime(t) 0.68999999999999995