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

# double

Convert symbolic values to MATLAB double precision

## Syntax

``double(s)``

## Description

````double(s)` converts the symbolic value `s` to double precision. Converting symbolic values to double precision is useful when a MATLAB® function does not accept symbolic values. For differences between symbolic and double-precision numbers, see Choose Symbolic or Numeric Arithmetic.```

## Examples

### Convert Symbolic Number to Double Precision

Convert symbolic numbers to double precision by using `double`. Symbolic numbers are exact while double-precision numbers have round-off errors.

Convert `pi` and `1/3` from symbolic form to double precision.

`symN = sym([pi 1/3])`
```symN = [ pi, 1/3]```
`doubleN = double(symN)`
```doubleN = 3.1416 0.3333```

For information on round-off errors, see Recognize and Avoid Round-Off Errors.

### Convert Variable Precision to Double Precision

Variable-precision numbers created by `vpa` are symbolic values. When a MATLAB function does not accept symbolic values, convert variable precision to double precision by using `double`.

Convert `pi` and `1/3` from variable-precision form to double precision.

`vpaN = vpa([pi 1/3])`
```vpaN = [ 3.1415926535897932384626433832795, 0.33333333333333333333333333333333]```
`doubleN = double(vpaN)`
```doubleN = 3.1416 0.3333```

### Convert Symbolic Matrix to Double-Precision Matrix

Convert the symbolic numbers in matrix `symM` to double-precision numbers by using `double`.

```a = sym(sqrt(2)); b = sym(2/3); symM = [a b; a*b b/a]```
```symM = [ 2^(1/2), 2/3] [ (2*2^(1/2))/3, 2^(1/2)/3]```
`doubleM = double(symM)`
```doubleM = 1.4142 0.6667 0.9428 0.4714```

### High-Precision Conversion

When converting symbolic expressions that suffer from internal cancelation or round-off errors, increase the working precision by using `digits` before converting the number.

Convert a numerically unstable expression `Y` with `double`. Then, increase precision to `100` digits by using `digits` and convert `Y` again. This high-precision conversion is accurate while the low-precision conversion is not.

```Y = ((exp(sym(200)) + 1)/(exp(sym(200)) - 1)) - 1; lowPrecisionY = double(Y)```
```lowPrecisionY = 0```
```digitsOld = digits(100); highPrecisionY = double(Y) ```
```highPrecisionY = 2.7678e-87```

Restore the old precision used by `digits` for further calculations.

`digits(digitsOld)`

## Input Arguments

collapse all

Symbolic input, specified as a symbolic number, or a vector, matrix, or multidimensional array of symbolic numbers.