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 no (or 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, dense and sparse matrices, multidimensional arrays
- Elementary mathematical functions and constants
- Solvers for linear system of equations, including sparse solvers
- Matrix analysis functions
- Eigenvalues and eigenvectors (including generalized problem)
- Singular value decomposition
- Matrix and array functions
- Numerical integration (including full set of Gaussian quadrature)
- Optimization and polynomial roots finding
- Ordinary Differential Equations Solvers
- Data analysis and Fourier transform
- Special functions
Please visit the Function Reference page for a complete list of supported functions.
Toolbox outperforms famous competitors by a large margin. Timing comparison of various decomposition types of a dense 100×100 matrix:
|Factorization||Timing (sec)||Speed-up (times)|
|VPA||Maple||Advanpix||Over VPA||Over Maple|
|A is a general real matrix (100×100):|
|[L,U] = lu(A)||1.67||0.61||0.02||78.26||28.29|
|[Q,R] = qr(A)||3.46||2.60||0.08||44.44||33.46|
|[U,S,V] = svd(A)||30.85||20.99||0.30||101.66||69.17|
|S = svd(A)||15.88||2.51||0.07||223.54||35.35|
|[V,D] = eig(A)||57.25||29.54||0.72||79.20||40.86|
|lambda = eig(A)||21.21||26.90||0.34||62.31||79.01|
|A is a general complex matrix (100×100):|
|[L,U] = lu(A)||2.74||2.56||0.07||41.63||38.89|
|[Q,R] = qr(A)||10.99||11.39||0.25||43.38||44.99|
|[U,S,V] = svd(A)||65.56||57.53||0.81||80.96||71.04|
|S = svd(A)||25.28||10.22||0.26||98.24||39.71|
|[V,D] = eig(A)||89.30||129.54||2.85||31.34||45.46|
|lambda = eig(A)||33.14||113.99||1.29||25.67||88.32|
The two plots below demonstrate the advantage of the Multiprecision Computing Toolbox when compared to the standard MATLAB. Figures 1 and 2 show the eigenvalues of the Grcar matrix computed by MATLAB and the toolbox, respectively.
The eigenvalues of the Grcar matrix are displayed in black, and the eigenvalues of the transposed Grcar matrix – in red. In theory they should coincide:
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. finding roots of polynomials or solving ill-conditioned matrices).
- 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).
- 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, quad, ode45, fminsearch), 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 calculations done with 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 Arbitrary precision Gauss-Legendre Quadrature, Iterative Solver – GMRES, Gauss-Kronrod Quadrature.
- Algorithms. Multiprecision Computing Toolbox stands on the shoulders of giants – comprehensive open source libraries for matrix computations – LAPACK, Eigen with arbitrary precision support. Also, Toolbox utilizes the best multiprecision arithmetic engines available – GMP/MPIR, MPFR and MPC. They are the de facto standards for high quality algorithms, both in performance and accuracy.
- 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 computations with quadruple precision.
- 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. Both 32-bit and 64-bit versions are available for 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.
We encourage inquiries – please contact us with any questions, suggestion, or other feedback.