The GL must perform a number of floating-point operations during the
course of its operation.
We do not specify how floating-point numbers are to be represented or
how operations on them are to be performed.
We require simply that numbers' floating-point parts contain enough bits
and that their exponent fields are large enough so that individual results of
floating-point operations are accurate to about **1** part in .
The maximum representable magnitude of a floating-point number used
to represent positional or normal coordinates must
be at least ;
the maximum representable magnitude for colors or texture coordinates
must be at least .
The maximum representable magnitude for all other floating-point
values must be at least .
for any non-infinite and non-NaN **x**.
. **x + 0 = 0 + x = x**. .
(Occasionally further requirements will be specified.)
Most single-precision floating-point formats meet these requirements.

Any representable floating-point value is legal as input to a GL command that requires floating-point data. The result of providing a value that is not a floating-point number to such a command is unspecified, but must not lead to GL interruption or termination. In IEEE arithmetic, for example, providing a negative zero or a denormalized number to a GL command yields predictable results, while providing a NaN or an infinity yields unspecified results.

Some calculations require division. In such cases (including implied divisions required by vector normalizations), a division by zero produces an unspecified result but must not lead to GL interruption or termination.

Sat Mar 29 02:23:21 PST 1997