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

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

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