fmod






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


  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);



x       Vector or scalar numerator

y       Vector or scalar denominator

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.

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 */
  }

fmod is supported in all profiles but fp20.

abs, frac