# cordicacos

CORDIC-based approximation of inverse cosine

## Syntax

``theta = cordicacos(x)``
``theta = cordicacos(x, niters)``

## Description

example

````theta = cordicacos(x)` returns the inverse cosine of `x` based on a CORDIC approximation.```

example

````theta = cordicacos(x, niters)` returns the inverse cosine of `x` performing `niters` iterations of the CORDIC algorithm.```

## Examples

collapse all

Compute the inverse cosine of a fixed-point `fi` object using a CORDIC implementation.

```a = fi(-1:.1:1,1,16); b = cordicacos(a); plot(a,b); title('Inverse CORDIC Cosine');```

Compare the output of the `cordicacos` function and the `acos` function.

```c = acos(double(a)); error = double(b)-c; plot(a,error); title('Error');```

Find the inverse cosine of a `fi` object using a CORDIC implementation and specify the number of iterations the CORDIC kernel should perform. Plot the CORDIC approximation of the inverse cosine with varying numbers of iterations.

```a = fi(-1:.1:1, 1, 16); for i = 5:5:20 b = cordicacos(a,i); plot(a,b); hold on; end legend('5 iterations', '10 iterations', '15 iterations', '20 iterations')```

## Input Arguments

collapse all

Numeric input, specified as a scalar, vector, matrix, or multidimensional array.

Data Types: `single` | `double` | `int8` | `int16` | `int32` | `int64` | `uint8` | `uint16` | `uint32` | `uint64` | `fi`
Complex Number Support: Yes

The number of iterations that the CORDIC algorithm performs, specified as a positive, integer-valued scalar. If you do not specify `niters`, the algorithm uses a default value. For fixed-point inputs, the default value of `niters` is one less than the word length of the input array, `theta`. For double-precision inputs, the default value of `niters` is 52. For single-precision inputs, the default value is 23.

Data Types: `single` | `double` | `int8` | `int16` | `int32` | `int64` | `uint8` | `uint16` | `uint32` | `uint64` | `fi`

## Output Arguments

collapse all

Inverse cosine angle values in rad.