Multiprecision Computing Toolbox for MATLAB
The Multiprecision Computing Toolbox is the MATLAB extension for computing with arbitrary precision.
The toolbox equips MATLAB with a new multiple precision floating-point numeric type and extensive set of mathematical functions that are capable of computing with arbitrary precision.
The multiprecision numbers and matrices can be seamlessly used in place of the built-in
double entities following standard MATLAB syntax rules. As a result, existing MATLAB programs can be converted to run with arbitrary precision with minimal changes to source code.
Quadruple precision computations (compliant with IEEE 754-2008) are supported as a special case.
Toolbox provides a comprehensive library of computational routines covering the following areas:
- Real and complex numbers, full and sparse matrices, multidimensional arrays
- Elementary and special mathematical functions
- Solvers for system of linear equations (including direct and iterative sparse solvers)
- Matrix analysis functions and factorizations
- Eigenvalues and eigenvectors including generalized problem.
- Singular value decomposition
- Solvers for system of nonlinear equations (
fsolvewith Levenberg-Marquardt and other trust region methods)
- Numerical integration (including adaptive
quadgkand full set of Gaussian quadrature)
- Optimization and polynomials
- Ordinary differential equations solvers
- Data analysis and Fourier transform
- Number theory functions
There is a common misbelief that arbitrary precision computations are very slow. Indeed, mainstream numerical software packages are largely responsible for this false perception. Their codes were written decades ago using textbook algorithms, without proper optimization nor updates for the latest hardware.
We are determined to change the situation by developing high-performance numerical libraries for computations with arbitrary precision, tuned for modern CPU architectures, multi-core parallelism and relying on recent state-of-the-art algorithms. All combined makes our toolbox several orders of magnitude faster than famous competitors:
|Factorization||Timing (sec)||Speed-up (times)|
|MATLAB (VPA)||Maple||Advanpix||Over VPA||Over Maple|
|A & B are pseudo-random real matrices (500×500):|
|[L,U] = lu(A)||249.13||85.16||0.4662||534.38||182.67|
|[Q,R] = qr(A)||514.34||458.86||3.0753||167.25||149.21|
|[U,S,V] = svd(A)||5595.26||4317.40||9.5707||584.62||451.11|
|S = svd(A)||2765.11||645.60||2.9823||927.17||216.48|
|[V,D] = eig(A)||21806.30||6060.90||33.7531||646.05||179.57|
|lambda = eig(A)||3384.58||7822.30||23.5530||143.70||332.11|
|[V,D] = eig(A,B)||n/a||11358.00||112.0526||∞||101.36|
|lambda = eig(A,B)||n/a||5273.00||60.3738||∞||87.34|
|Function||Timing (sec)||Speed-up (times)|
|MATLAB (VPA)||Maple||Advanpix||Over VPA||Over Maple|
|Power & exponential:|
More detailed comparison with VPA: Symbolic Math Toolbox (VPA) vs. Multiprecision Computing Toolbox.
In some cases, the speed of quadruple precision computations in toolbox is comparable (or even higher) to double precision routines of MATLAB. Eigendecomposition of banded matrices is one of the examples.
Computation of eigenvalues and especially eigenvectors is one of classic problems requiring extended-precision. The main reason is that eigenproblem might be ill-conditioned and hard to compute even when matrix itself is well-conditioned with respect to inversion.
The two plots below show the eigenvalues of the Grcar matrix computed by MATLAB and by the toolbox, respectively. The eigenvalues of the Grcar matrix are displayed in black, and the eigenvalues of the transposed matrix – in red. In theory they should coincide:
Although condition number of the Grcar matrix is low,
cond(A) = cond(A') = 3.61, MATLAB’s
double precision routines suffer from accuracy loss. More examples can be found on Computing Eigenvalues in Extended Precision.
The toolbox removes MATLAB’s inherent limitation on computing precision, thus enabling the user to solve a variety of important problems previously impossible to handle with MATLAB:
- Allows solving of numerically unstable problems (e.g. computing eigenvalues, matrix functions, solving ill-conditioned matrices, algebraic Riccati equations, differential equations using RBF methods, finding roots, analyzing control system stability by solving Lyapunov and Sylvester equations, etc. etc.).
- Enables checking of accuracy of results by re-running existing MATLAB programs in extended precision.
- Minimizes rounding and cancellation errors in computations (e.g. summation of series with alternating signs, oscillatory integrals, etc.).
- Allows computing of reference constants and coefficients of algorithms with high accuracy.
- Comprehensive set of mathematical functions. Multiprecision Computing Toolbox supplies arbitrary-precision analogs to the majority of the functions listed in the famous MATLAB Top 500, from simple arithmetic operations to advanced numerical algorithms (e.g.
fft, eig, svd, quadgk, ode45, etc.), and adds original functionality not available in MATLAB. Please visit the Function Reference page for a complete list of supported routines.
- Easy porting of existing MATLAB programs to arbitrary precision.
The Toolbox employs an operator overloading technique which allows easy porting of pre-existing programs to arbitrary precision – with little or no modifications to the source code. In most cases the conversion is automatic, and no extra action is required by the user. For further examples, visit User’s Manual.
- Algorithms. Multiprecision Computing Toolbox stands on the shoulders of giants – we implement only state-of-the-art algorithms designed for parallelism and high-performance. Usually we convert algorithms from LAPACK to precision-independent C++ code with various optimizations for vector and multi-core execution.
Every routine in toolbox is a meta-algorithm, which analyses the input matrix and applies best suitable method for its type (symmetric/Hermitian, positive definite, triadiagonal, band, triangular, etc.). Thus, for example, we use multi-shift QR for unsymmetric eigen-decomposition whereas symmetric/Hermitian or tridiagonal problems are solved by MRRR or Divide & Conquer algorithms.
- High-performance. Our product is developed using compiled programming languages C/C++ and Assembler with only a thin M-file interface for smooth integration to MATLAB. Toolbox is specifically optimized for parallel execution on multi-core CPU.
- Ease of access and user-friendliness.
We provide comprehensive instructions and step-by-step installation help, making it easy to install and use the Multiprecision Computing Toolbox. Toolbox is available for 64-bit versions of GNU Linux, Microsoft Windows, and Apple Mac OS X. The Quick Start User’s Manual, Function Reference, and our frequently updated Blog provide examples, tips, and announcements about our product.
The part of the entire product which I find the most impressive is the customer support. Pavel Holoborodko is very prompt, efficient and professional. He constantly seeks to expand the multiprecision capability of Advanpix to different MATLAB functions and toolboxes. As an example, on my request, he quickly developed the multiprecision versions of some specialized functions in the control toolbox. As we are based on different continents, his responses and solutions usually arrive overnight, if not sooner. This all the more impressive given that the company seems to have limited human resources.
I consider Advanpix a very solid piece of scientific computing software and offer it my highest recommendation.”
Department of Mathematics & Statistics
Hamilton, Ontario, CANADA L8S 4K1
I highly recommend their product when high-precision multi-digit computations are required.”
Dept. of Mechanical and Aerospace Engineering
Old Dominion University
The implementation of numerical algorithms in the toolbox is stable and highly reliable. Therefore, it is available for professional use such as verification of computed results by our developed methods, numerical results in scientific paper and so forth.
The user support is also satisfactory. The toolbox developer kindly replies to e-mails very quickly. I hope it will continue far into the future.”
Director of the Center for Information Science
Associate Professor at Division of Mathematical Sciences,
Tokyo Woman’s Christian University
I hope to underline also the fact that the main developer of this Toolbox is simply unstoppable. The new features and updates appear with such a speed that the users get tired to download the new versions. Imagine, you are just debugging your poor program and meanwhile already two new versions of Advanpix appear with 36 new features and 10x speed improvement at each update. When I look at the version history I feel depressed and want to change immediately the profession… It is simply impossible to code like Pavel. Sometimes I suspect that “Pavel Holodoborodko” is a nickname (like Nicolas Bourbaki in Mathematics) for a group of coders who work 26h per day. The productivity of this person remains a mystery to me.”
LAMA UMR #5127
Laboratoire de Mathématiques
Université de Savoie
73376 Le Bourget-du-Lac, France
In a problem I considered recently, expansion into a series of Legendre polynomials for a highly oscillating polynomial (up to 1000 roots in the unit interval), double precision runs into trouble very early and quadruple or even higher precision is essential to get to the right result. The choice is obviously to be made among floating point high-precision calculations and symbolic, in principle exact, approaches. Running time is one important aspect which has a great impact on the decision. Advanpix is really fast and together with reliability this fact makes it a great piece of modern numerical software.”
University of Parma, Parma, Italy