Introduction to GMP
Maple uses the GMP library to perform arbitrary-precision integer arithmetic. For more information about GMP, see ?gmp.
Arbitrary-precision integer arithmetic involves working with numbers that are too large to fit into hardware integers. In Maple, the greatest number that can be represented by hardware integer is given by
kernelopts(maximmediate);
1073741823
Integers greater than the above are represented by software integers. Arithmetic for software integers requires special algorithms for large integer arithmetic. To illustrate exact arbitrary-precision integer arithmetic in Maple, consider the following examples.
Basic Integer Arithmetic
133!/2^31 + 141^41;
6925643915732790384946627966972556011134669767252667946977921895027177206466475387284570431649485529262010621410775946996419339625678451697092071645327788798391886636201011896058568576028156266004571607362761713517741
p := nextprime(%); # Find the smallest prime greater than the previous number
p:=6925643915732790384946627966972556011134669767252667946977921895027177206466475387284570431649485529262010621410775946996419339625678451697092071645327788798391886636201011896058568576028156266004571607362761713518651
isprime(p);
true
igcd(p, 2*p); # Greatest common divisor of p and 2*p is p
6925643915732790384946627966972556011134669767252667946977921895027177206466475387284570431649485529262010621410775946996419339625678451697092071645327788798391886636201011896058568576028156266004571607362761713518651
Fermat's Little Theorem
Fermat's Little Theorem states "If p is prime and a is an integer, then a^p = a (mod p)"
Consider this Mersenne prime (that is, prime of the form 2^n-1), which is more than 600 digits long.
p := 2^2281-1:
Let a be a random integer between 2 and p-1.
a := rand(2..p-1)():
Verify the correctness of Fermat's Little Theorem.
evalb(a &^p mod p = a);
A Very Large Summation
This example demonstrates the improvement of Maple 9 with arbitrary-precision integer arithmetic with GMP. Maple 9 computes this summation 25 times faster than Maple 8 (tested on a Pentium 4 1.5 GHz)
S := add(1/k^2, k=1..100000):
You can verify that the above sum is computed correctly by using the knowledge that it asymptotically approaches Pi^2/6.
evalf(sqrt(6*S)); # This should be approximately Pi
3.141583104
Return to Index for Example Worksheets
Download Help Document