> ## Name

> acos - returns arccosine of scalars and vectors.

> ## Synopsis

>     float  acos(float a);
>     float1 acos(float1 a);
>     float2 acos(float2 a);
>     float3 acos(float3 a);
>     float4 acos(float4 a);

>     half   acos(half a);
>     half1  acos(half1 a);
>     half2  acos(half2 a);
>     half3  acos(half3 a);
>     half4  acos(half4 a);

>     fixed  acos(fixed a);
>     fixed1 acos(fixed1 a);
>     fixed2 acos(fixed2 a);
>     fixed3 acos(fixed3 a);
>     fixed4 acos(fixed4 a);

> ## Parameters

> a
>   Vector or scalar of which to determine the arccosine.

> ## Description

> Returns the arccosine of a in the range [0,pi], expecting a to be in the range [-1,+1].

> For vectors, the returned vector contains the arccosine of each element of the input vector.

> ## Reference Implementation

> acos for a float scalar could be implemented like this.

>     // Handbook of Mathematical Functions
>     // M. Abramowitz and I.A. Stegun, Ed.

>     // Absolute error <= 6.7e-5
>     float acos(float x) {
>       float negate = float(x < 0);
>       x = abs(x);
>       float ret = -0.0187293;
>       ret = ret * x;
>       ret = ret + 0.0742610;
>       ret = ret * x;
>       ret = ret - 0.2121144;
>       ret = ret * x;
>       ret = ret + 1.5707288;
>       ret = ret * sqrt(1.0-x);
>       ret = ret - 2 * negate * ret;
>       return negate * 3.14159265358979 + ret;
>     }

> ## Profile Support

> acos is supported in all profiles.

> Support in the fp20 is limited.

> ## See Also

> abs, asin, cos, sqrt