NAME
    clamp - returns smallest integer not less than a scalar or each vector
    component.

SYNOPSIS
      float  clamp( float  x, float  a, float  b );
      float1 clamp( float1 x, float1 a, float1 b );
      float2 clamp( float2 x, float2 a, float2 b );
      float3 clamp( float3 x, float3 a, float3 b );
      float4 clamp( float4 x, float4 a, float4 b );
 
      half   clamp( half  x, half  a, half  b );
      half1  clamp( half1 x, half1 a, half1 b );
      half2  clamp( half2 x, half2 a, half2 b );
      half3  clamp( half3 x, half3 a, half3 b );
      half4  clamp( half4 x, half4 a, half4 b );
 
      fixed  clamp( fixed  x, fixed  a, fixed  b );
      fixed1 clamp( fixed1 x, fixed1 a, fixed1 b );
      fixed2 clamp( fixed2 x, fixed2 a, fixed2 b );
      fixed3 clamp( fixed3 x, fixed3 a, fixed3 b );
      fixed4 clamp( fixed4 x, fixed4 a, fixed4 b );

PARAMETERS
    x       Vector or scalar to clamp.

    a       Vector or scalar for bottom of clamp range.

    b       Vector or scalar for top of clamp range.

DESCRIPTION
    Returns *x* clamped to the range [*a*,*b*] as follows:

            1) Returns *a* if *x* is less than *a*; else

            2) Returns *b* if *x* is greater than *b*; else

            3) Returns *x* otherwise.

    For vectors, the returned vector contains the clamped result of each
    element of the vector *x* clamped using the respective element of
    vectors *a* and *b*.

REFERENCE IMPLEMENTATION
    clamp for float scalars could be implemented like this.

      float clamp(float x, float a, float b)
      {
        return max(a, min(b, x));
      }

PROFILE SUPPORT
    clamp is supported in all profiles except fp20.

SEE ALSO
    the max manpage, the min manpage, the saturate manpage

