# Documentation

### This is machine translation

Translated by
Mouseover text to see original. Click the button below to return to the English verison of the page.

## Numerical Computations With High Precision

This example shows how to use variable-precision arithmetic to obtain high precision computations using Symbolic Math Toolbox™.

Search for formulas that represent near-integers. A classic example is the following: compute to 30 digits. The result appears to be an integer that is displayed with a rounding error.

```digits(30); f = exp(sqrt(sym(163))*sym(pi)); vpa(f)```
`ans = `

Compute the same value to 40 digits. It turns out that this is not an integer.

```digits(40); vpa(f)```
`ans = `

Investigate this phenomenon further. Below, numbers up to occur, and the investigation needs some correct digits after the decimal point. Compute the required working precision:

`d = log10(exp(vpa(1000)))`
`d = `

Set the required precision before the first call to a function that depends on it. Among others, `round`, `vpa`, and `double` are such functions.

`digits(ceil(d) + 50);`

Look for similar examples of the form . Of course, you can obtain more such numbers n by multiplying 163 by a square. But apart from that, many more numbers of this form are close to some integer. You can see this from a histogram plot of their fractional parts:

```A = exp(pi*sqrt(vpa(1:1000))); B = A-round(A); histogram(double(B), 50)```

Calculate if there are near-integers of the form .

```A = exp(vpa(1:1000)); B = A-round(A); find(abs(B) < 1/1000)```
```ans = 1×0 empty double row vector ```

It turns out that this time the fractional parts of the elements of `A` are rather evenly distributed.

`histogram(double(B), 50)`