sign

> # NAME

> sign - returns sign of scalar or each vector component.

> # SYNOPSIS

>       float  sign(float x);
>       float1 sign(float1 x);
>       float2 sign(float2 x);
>       float3 sign(float3 x);
>       float4 sign(float4 x);

>       half   sign(half x);
>       half1  sign(half1 x);
>       half2  sign(half2 x);
>       half3  sign(half3 x);
>       half4  sign(half4 x);

>       fixed  sign(fixed x);
>       fixed1 sign(fixed1 x);
>       fixed2 sign(fixed2 x);
>       fixed3 sign(fixed3 x);
>       fixed4 sign(fixed4 x);

> # PARAMETERS

> x

>   Vector or scalar to determine its sign.

> # DESCRIPTION

> Returns positive one, zero, or negative one for each of the components of x based on the component's sign.

>   1) Returns -1 component if the respective component of x is negative.

>   2) Returns 0 component if the respective component of x is zero.

>   3) Returns 1 component if the respective component of x is positive.

>   4) Ideally, NaN returns NaN.

> # REFERENCE IMPLEMENTATION

> sign for float3 could be implemented like this.

>       float3 sign(float x)
>       {
>         float3 val = a > 0;
>         return val - (a < 0);
>       }

> # PROFILE SUPPORT

> sign is supported in all profiles except fp20.

> sign is very efficient in the gp4vp, gp4gp, gp4fp, vp40, and vp30 profiles that support the native SSG instruction.

> # SEE ALSO

> max, min, saturate, step