Multiply Integers $$({12345}^{678900} - 1) * ({67890}^{123456} - 1)$$ | |
---|---|
SageMath 4.1.1
sage: a1 = 12345^678900 - 1
sage: a2 = 67890^123456 - 1
sage: len(str(a1))
2777714
sage: len(str(a2))
596516
sage: %timeit a1*a2
10 loops, best of 3: 278 ms per loop
|
Mathematica 7
In[2]:= a1 = 12345^678900 - 1;
In[3]:= a2 = 67890^123456 - 1;
In[4]:= Timing[a1*a2][[1]]
Out[4]= 0.368023
|
Note: "ms" is Milliseconds ($$10^{-3}$$). SageMath is 32% faster. System: Intel 32bit, Linux | |
factorial 10000000! | |
SageMath 4.1.1
sage: time a = factorial(10000000)
CPU times: user 13.79 s,...
|
Mathematica 7
In[12]:= Timing[10000000!][[1]]
Out[12]= 19.2908
|
SageMath is 40% faster. System: Mac OSX | |
Integer Factorization of $$2^{512} - 1$$ | |
SageMath 4.1.1
sage: time a = factor(2^512 - 1)
CPU times: user 92.29 s,...
|
Mathematica 7
In[10]:= Timing[FactorInteger[2^512 - 1]][[1]]
Out[10]= 346.494
|
System: Intel 32bit, Linux SageMath is nearly 4 times faster. | |
Bernoulli Number $$3 * 10^5$$ | |
SageMath 4.1.1
sage: %time _ = bernoulli(3*10^5)
CPU times: user 141.04 s,...
David Harvey, A multimodular algorithm for computing Bernoulli numbers, 2008
|
Mathematica 7
In[1]:= Timing[BernoulliB[3*10^5]][[1]]
Out[1]= 214.842
Wolfram Blog about Bernoulli Numbers
|
System: Intel 32bit, Linux SageMath is 52% faster. | |
5 Million Digits of $$\pi$$ | |
SageMath 4.1.1 (pure and using mpmath)
sage: time a = N(pi, digits=5000000) CPU times: user 28.90 s,... Wall time: 28.96 s However, mpmath is (barely) faster than Mathematica: sage: from sage.libs.mpmath.all import pi as p sage: time a = p(dps=5000000) CPU times: user 12.56 s,... Wall time: 12.70 s |
Mathematica 7
In[1]:= Timing[N[Pi, 5000000]][[1]]
Out[1]= 13.21
|
Pseudoprimality Test $$2^{19937} - 1$$ | |
SageMath 4.1.1
sage: time a = is_pseudoprime(2^19937 - 1)
CPU times: user 16.61 s,...
|
Mathematica 7
In[11]:= Timing[PrimeQ[2^19937 - 1]][1]
Out[11]= {28.2604, True}[1]
|
Expanding a Symbolic Expression | |
SageMath 4.1.1
sage: R.<a1,a2,a3,a4,a5,a6,a7> = QQ[] sage: time f = (a1+a2+a3+a4+a5+a6+a7)^25 CPU times: user 8.56 s,... Wall time: 8.97 s sage: var('a1 a2 a3 a4 a5 a6 a7') (a1, a2, a3, a4, a5, a6, a7) sage: time f = expand((a1+a2+a3+a4+a5+a6+a7)^25) CPU times: user 19.94 s,... Wall time: 20.59 s |
Mathematica 7
In[15]:= Timing[Expand[(a1+a2+a3+a4+a5+a6+a7)^25]][[1]]
Out[15]= 15.981
|
System: Intel 32bit, Linux | |
Expanding a Polynomial over $$GF(13)$$ | |
SageMath 4.1.1
sage: R.<x,y,z> = PolynomialRing(GF(13))
sage: time _ = expand((x+y+z+1)**100)
CPU times: user 0.07 s,...
|
Mathematica 7
In[1]:= Timing[Expand[(x+y+z+1)^100, Modulus -> 13]][[1]]
Out[1]= 4.20826
|
SageMath is 60 times faster. System: Intel 32bit, Linux | |
Multiply and Add Random Boolean Matrices in $$GF(2)$$ | |
SageMath 4.1.1
sage: m1 = random_matrix(GF(2), 1000, 1000) sage: m2 = random_matrix(GF(2), 1000, 1000) sage: %timeit m1*m2 100 loops, best of 3: 9.76 ms per loop sage: %timeit m1+m2 1000 loops, best of 3: 344 µs per loop M4RI Performance Comparisons More about Matrix Multiplications (SageMath Days 7/LinAlg) |
Mathematica 7
In[15]:= m1 := RandomInteger[{0,1},{1000, 1000}] In[16]:= m2 := RandomInteger[{0,1},{1000, 1000}] In[17]:= Timing[Mod[m1.m2, 2]][[1]] Out[17]= 30.7219 In[18]:= Timing[Mod[m1+m2, 2]][[1]] Out[18]= 0.060003 Magma SageMath vs. Magma for this particular type of problem. |
Note: "ms" is Milliseconds ($$10^{-3} s$$); "µs" is Microseconds ($$10^{-6} s$$) System: Intel 32bit, Linux SageMath is about 3000 times faster. | |
Matrix Multiplication in SageMath vs. MATLAB and Mathematica | |
SageMath 4.1.2
age: a = random_matrix(RDF,2000)
sage: timeit('a*a')
5 loops, best of 3: 3.28 s per loop
|
MATLAB 2009a
a = rand(2000);
tic; a*a; toc
Elapsed time is 5.686150 seconds.
tic; a*a; toc
Elapsed time is 5.688004 seconds.
Mathematica 7.0
b = Table[
RandomReal[
UniformDistribution[{0, 1}]],
{2000}, {2000}];
Timing[b . b][[1]]
5.95637
|
System: Intel 32bit, Linux | |
Full SVD of a 1000x1000 Random Matrix | |
SageMath 4.3.2
sage: m = random_matrix(RDF, 1000)
sage: %time U,s,Vh = m.SVD()
CPU times: user 2.38 s, sys: 0.08 s, total: 2.77 s
Using dgesdd.f.
|
MATLAB R2009a
s = 1000;
m = randn(s,s);
tic; [u,s,v] = svd(m); toc
Elapsed time is 9.666150 seconds
Using dgesvd.f.
|
System: Intel 32bit, Linux |