# sqrt

Square root of `fi` object

## Syntax

``c = sqrt(a)``
``c = sqrt(a,T)``
``c = sqrt(a,F)``
``c = sqrt(a,T,F)``

## Description

This function computes the square root of a `fi` object using a bisection algorithm.

````c = sqrt(a)` returns the square root of `fi` object `a`. Intermediate quantities are calculated using the `fimath` associated with `a`. The `numerictype` object of `c` is determined automatically using an Internal Rule.```
````c = sqrt(a,T)` returns the square root of `fi` object `a` with `numerictype` object `T`. Intermediate quantities are calculated using the `fimath` associated with `a`. See Data Type Propagation Rules.```
````c = sqrt(a,F)` returns the square root of `fi` object `a`. Intermediate quantities are calculated using the `fimath` object `F`. The `numerictype` object of `c` is determined automatically using an Internal Rule.When `a` is a built-in `double` or `single` data type, this syntax is equivalent to ```c = sqrt(a)``` and the `fimath` object `F` is ignored.```
````c = sqrt(a,T,F)` returns the square root `fi` object `a` with `numerictype` object `T`. Intermediate quantities are also calculated using the `fimath` object `F`. See Data Type Propagation Rules.```

## Input Arguments

collapse all

Input `fi` array, specified as a scalar, vector, matrix, or multidimensional array.

`sqrt` does not support complex, negative-valued, or [Slope Bias] inputs.

Example: `a = fi(pi,1,8,3)`

Data Types: `fi`

`numerictype` of the output `c`, specified as a `numerictype` object.

Example: `T = numerictype(1,32,30)`

`fimath` used for calculations of intermediate quantities, specified as a `fimath` object.

Example: ```F = fimath('OverflowAction','Saturate','RoundingMethod','Convergent')```

## Algorithms

collapse all

### Internal Rule

For syntaxes where the `numerictype` object of the output is not specified as an input to the `sqrt` function, it is automatically calculated according to the following internal rule:

`$sig{n}_{c}=sig{n}_{a}$`
`$W{L}_{c}=\mathrm{ceil}\left(\frac{W{L}_{a}}{2}\right)$`
`$F{L}_{c}=W{L}_{c}-\mathrm{ceil}\left(\frac{W{L}_{a}-F{L}_{a}}{2}\right)$`

### Data Type Propagation Rules

For syntaxes for which you specify a `numerictype` object `T`, the `sqrt` function follows the data type propagation rules listed in the following table. In general, these rules can be summarized as “floating-point data types are propagated.” This allows you to write code that can be used with both fixed-point and floating-point inputs.

Data Type of Input fi Object aData Type of numerictype object TData Type of Output c

Built-in `double`

Any

Built-in `double`

Built-in `single`

Any

Built-in `single`

`fi` `Fixed`

`fi` `Fixed`

Data type of `numerictype` object `T`

`fi` `ScaledDouble`

`fi` `Fixed`

`ScaledDouble` with properties of `numerictype` object `T`

`fi` `double`

`fi` `Fixed`

`fi` `double`

`fi` `single`

`fi` `Fixed`

`fi` `single`

Any `fi` data type

`fi` `double`

`fi` `double`

Any `fi` data type

`fi` `single`

`fi` `single`

## Version History

Introduced in R2006b