> ## Name

> fmod - returns the remainder of x/y with the same sign as x

> ## Synopsis

>     float  fmod(float x, float y);
>     float1 fmod(float1 x, float1 y);
>     float2 fmod(float2 x, float2 y);
>     float3 fmod(float3 x, float3 y);
>     float4 fmod(float4 x, float4 y);

>     half   fmod(half x, half y);
>     half1  fmod(half1 x, half1 y);
>     half2  fmod(half2 x, half2 y);
>     half3  fmod(half3 x, half3 y);
>     half4  fmod(half4 x, half4 y);

>     fixed  fmod(fixed x, fixed y);
>     fixed1 fmod(fixed1 x, fixed1 y);
>     fixed2 fmod(fixed2 x, fixed2 y);
>     fixed3 fmod(fixed3 x, fixed3 y);
>     fixed4 fmod(fixed4 x, fixed4 y);

> ## Parameters

> x
>   Vector or scalar numerator
> y
>   Vector or scalar denominator

> ## Description

> fmod returns the remainder of x divided by y with the same sign as x. If y is zero, the result is implementation-defined because of division by zero.

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

> ## Reference Implementation

> fmod for an float2 vector could be implemented as:

>     float2 fmod(float2 a, float2 b)
>     {
>       float2 c = frac(abs(a/b))*abs(b);
>       return (a < 0) ? -c : c;   /* if ( a < 0 ) c = 0-c */
>     }

> ## Profile Support

> fmod is supported in all profiles but fp20.

> ## See Also

> abs, frac