# Arccovercosine > Compute the [inverse coversed cosine][inverse-coversed-cosine].
The [inverse coversed cosine][inverse-coversed-cosine] is defined as ```math \mathop{\mathrm{acovercos}}(\theta) = \arcsin(\theta-1) ```
## Usage ```javascript var acovercos = require( '@stdlib/math/base/special/acovercos' ); ``` #### acovercos( x ) Computes the [inverse coversed cosine][inverse-coversed-cosine]. ```javascript var v = acovercos( 0.0 ); // returns ~-1.5708 v = acovercos( 3.141592653589793/2.0 ); // returns ~0.6075 v = acovercos( 3.141592653589793/6.0 ); // returns ~-0.4966 ``` If `x < 0`, `x > 2`, or `x` is `NaN`, the function returns `NaN`. ```javascript var v = acovercos( -1.0 ); // returns NaN v = acovercos( 3.14 ); // returns NaN v = acovercos( NaN ); // returns NaN ```
## Examples ```javascript var uniform = require( '@stdlib/random/array/uniform' ); var logEachMap = require( '@stdlib/console/log-each-map' ); var acovercos = require( '@stdlib/math/base/special/acovercos' ); var x = uniform( 100, 0.0, 2.0, { 'dtype': 'float64' }); logEachMap( 'acovercos(%0.4f) = %0.4f', x, acovercos ); ```
* * *
## C APIs
### Usage ```c #include "stdlib/math/base/special/acovercos.h" ``` #### stdlib_base_acovercos( x ) Computes the [inverse coversed cosine][inverse-coversed-cosine] of a double-precision floating-point number. ```c double out = stdlib_base_acovercos( 3.141592653589793/2.0 ); // returns ~0.6075 ``` The function accepts the following arguments: - **x**: `[in] double` input value. ```c double stdlib_base_acovercos( const double x ); ```
### Examples ```c #include "stdlib/math/base/special/acovercos.h" #include int main( void ) { const double x[] = { 0.0, 0.27, 0.56, 0.78, 1.67, 1.70, 1.78, 1.80, 1.89, 2.0 }; double v; int i; for ( i = 0; i < 10; i++ ) { v = stdlib_base_acovercos( x[ i ] ); printf( "acovercos(%lf) = %lf\n", x[ i ], v ); } } ```