## Increase Speed by Reducing Precision

Increase MATLAB®’s speed by reducing the precision of your calculations. Reduce precision by using variable-precision arithmetic provided by the `vpa` and `digits` functions in Symbolic Math Toolbox™. When you reduce precision, you are gaining performance by reducing accuracy. For details, see Choose Numeric or Symbolic Arithmetic.

For example, finding the Riemann zeta function of the large matrix `C` takes a long time. First, initialize `C`.

```[X,Y] = meshgrid((0:0.0025:.75),(5:-0.05:0)); C = X + Y*i;```

Then, find the time taken to calculate `zeta(C)`.

```tic zeta(C); toc```
`Elapsed time is 340.204407 seconds.`

Now, repeat this operation with a lower precision by using `vpa`. First, change the precision used by `vpa` to a lower precision of `10` digits by using `digits`. Then, use `vpa` to reduce the precision of `C` and find `zeta(C)` again. The operation is significantly faster.

```digits(10) vpaC = vpa(C); tic zeta(vpaC); toc```
`Elapsed time is 113.792543 seconds.`

Note

`vpa` output is symbolic. To use symbolic output with a MATLAB function that does not accept symbolic values, convert symbolic values to double precision by using `double`.

For larger matrices, the difference in computation time can be even more significant. For example, consider the `1001`-by-`301` matrix `C`.

```[X,Y] = meshgrid((0:0.0025:.75),(5:-0.005:0)); C = X + Y*i;```

Running `zeta(vpa(C))` with 10-digit precision takes 15 minutes, while running `zeta(C)` takes three times as long.

```digits(10) vpaC = vpa(C); tic zeta(vpaC); toc```
`Elapsed time is 886.035806 seconds.`
```tic zeta(C); toc```
`Elapsed time is 2441.991572 seconds.`

Note

If you want to increase precision, see Increase Precision of Numeric Calculations.