## 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.

## Functionality

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 and factorizations
- Eigenvalues and eigenvectors (including generalized problem)
- Singular value decomposition
- Numerical integration (including full set of Gaussian quadrature)
- Optimization and polynomials
- Ordinary differential equations solvers
- Data analysis and Fourier transform
- Number theory functions
- Special functions

Please visit the Function Reference page for a complete list of supported functions.

## Performance

Toolbox outperforms famous competitors by a large margin. Timing comparison of various decomposition types of a dense matrices:

Factorization | Timing (sec) | Speed-up (times) | |||
---|---|---|---|---|---|

MATLAB (VPA) | Maple | Advanpix | Over VPA | Over Maple | |

A & B are pseudo-random real matrices (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 |

[V,D] = eig(A,B) | n/a | 55.43 | 1.28 | ∞ | 43.10 |

lambda = eig(A,B) | n/a | 33.54 | 0.82 | ∞ | 40.90 |

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.89 | 281.12 | 96.10 |

[Q,R] = qr(A) | 514.34 | 458.86 | 3.04 | 169.15 | 150.90 |

[U,S,V] = svd(A) | 5595.26 | 4317.40 | 13.83 | 404.48 | 312.10 |

S = svd(A) | 2765.11 | 645.60 | 7.47 | 370.20 | 86.43 |

[V,D] = eig(A) | 21806.30 | 6060.90 | 55.57 | 392.40 | 109.06 |

lambda = eig(A) | 3384.58 | 7822.30 | 28.43 | 119.07 | 275.19 |

[V,D] = eig(A,B) | n/a | 11358.00 | 123.18 | ∞ | 92.21 |

lambda = eig(A,B) | n/a | 5273.00 | 65.15 | ∞ | 80.94 |

Detailed comparisons: small dense matrices, large dense matrices, direct sparse solvers and basic array operations.

## Demo

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:

**Figure 1**. MATLAB is unable to effectively generate accurate results (red circles don’t coincide with black dots).

**Figure 2**. The Multiprecision Computing Toolbox computes the eigenvalues accurately. See more details…

## Applications

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.

## Key Features

**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.