FLOATTOINTBITS(3Cg)

NAME
floatToIntBits - returns the 32-bit integer representation of an IEEE 754 floating-point scalar or vector

SYNOPSIS
  int  floatToIntBits(float  x);
  int1 floatToIntBits(float1 x);
  int2 floatToIntBits(float2 x);
  int3 floatToIntBits(float3 x);
  int4 floatToIntBits(float4 x);

PARAMETERS

x   Floating-point vector or scalar to cast to a scalar int or vector of ints.

DESCRIPTION
Returns a representation of the specified floating-point scalar value or vector values according to the IEEE 754 floating-point "single format" bit layout.

Not-A-Number (NaN) floating-point values are cannonicalized to the integer value 0x7fc00000 regardless of the specific NaN encoding. The sign bit of the NaN is discarded.

This function is based on Java's jave.lang.Float method of the same name. See:

  http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Float.html

floatToIntBits requires instructions to be generated to cannonicalize NaN values so floatToIntBits is typically more expensive than floatToRawIntBits.

REFERENCE IMPLEMENTATION
floatToIntBits operates consistent with the following ANSI C code:

  int floatToIntBits(float  x)
  {
    union {
      float f;  // assuming 32-bit IEEE 754 single-precision
      int i;    // assuming 32-bit 2's complement int
    } u;

    if (isnan(x)) {
      return 0x7fc00000;
    } else {
      u.f = x;
      return u.i;
    }
  }

PROFILE SUPPORT
floatToIntBits is supported by the gp4vp, gp4gp, and gp4vp profiles.

floatToIntBits is not supported by pre-G80 profiles.

SEE ALSO
ceil, floatToRawIntBits, floor, intBitsToFloat, round, trunc