High Precision Numerics

Why do we need more than double precision? Here are five problems that may require more than double precision arithmetic.

1. recognizing algebraic numbers

2. discovering identities

For example, find integers and such that . They can also be found by using a lattice basis reduction algorithm if we have sufficiently accurate approximations (at least 79 digits) to and ,

3. symbolic computation

Many algorithms which compute with polynomials inevitably generate large coefficients. An example is to find the square root of a polynomial by using a single point evaluation algorithm.

4. moment problem

The momemt problem is the problem of reconstructing a function , given its first few moments. For a given continuous function defined on an interval (say [0,1]) ,its first few moments are the integrals for an integer from to . To solve the moment problem we assume the solution is a linear combination of some basis functions, usually the monomials for from to . We compute the moments of our solution function and equate them to the given moments. This leads to the problem of inverting a Hilbert matrix, which is a known ill-conditioned problem. One way to combat the ill-conditioning is to increase the precision.

5. root of a polynomial

Suppose we expand the polynomial and round its coefficients to 16 digits. Are the roots of the rounded coefficient polynomial close to the exact roots of the original polynomial? If we round the roots of the rounded coefficient polynomial, will the first 16 digits of the roots agree with the first 16 digits of the roots of the exact coefficient polynomial?

Fast operations

The classical algorithm for multiplying 2 integers with d digits costs order d^2 hardware operations. This means that if we double the precision of the input numbers, then a multiplication will take four times longer to compute. New in Maple V release 5 is a faster integer multiplication algorithm. Maple uses the divide and conquer algorithm ( Karatsuba's algorithm). For this algorithm if we double the precision of the input numbers, then a multiplication will take three times longer to compute. We intend to use this algorithm to speed up the other basic operations , such as division, square root, factorial etc. For really large precision, an even faster method can be based on the fast Fourier transform. We intend to try this method to see if it has a break even point within the range of numbers that Maple can represent.

Fast symbolic computation

Maple already uses the divide and conquer algorithm to multiply 2 dense univariate polynomials. We intend to try other methods such as

(a) modular methods with Chinese remaindering to reconstruct the answer.

(b) Single point evaluation with genpoly used to reconstruct the answer.

(c) the fast Fourier transform method.

After multiplication has been sped up, then we can go on to speed up other operations such as division, gcd and factor.

GCD's with algebraic number coefficients

We are also trying to improve the speed of computing the greatest common divisor of two polynomials, in the case where the coefficients contain algebraic numbers. Here is a sample gcd problem. We then want to extend our methods to the multivariate case.

Bernoulli numbers

We can use high precision numerical computation to compute Bernoulli numbers exactly. For example the one thousandth Bernoulli number is a rational number with a 1779 digit numerator and a 9 digit denominator. We can use Euler's formula for Zeta(1000) and solve it for the one thousandth Bernoulli number and compute Zeta(1000) and Pi^1000 with 1800 digit precision and recover the exact rational Bernoulli number. This is faster than using the Maple command .