> ## Name

> sqrt - returns square root of scalars and vectors.

> ## Synopsis

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

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

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

> ## Parameters

> a
>   Vector or scalar of which to determine the square root.

> ## Description

> Returns the square root of a.

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

> The square root of zero is zero.

> Ideally, the square root of negative values returns NaN (Not a Number).

> sqrt often implemented as the reciprocal of a reciporcal squrare root approximation in older profiles.

> ## Reference Implementation

> sqrt is best implemented as a native square root instruction, however sqrt may be implemented via a rsqrt function:

>     float3 sqrt(float3 a)
>     {
>       return 1.0 / rsqrt(a);
>     }

> ## Profile Support

> sqrt is fully supported in all profiles unless otherwise specified. sqrt is unsupported in the fp20 profile.

> ## See Also

> normalize, pow, rsqrt