Open as PDF
Overview of IEEE Standard Single- and Double-Precision Formats
3.3 Overview of IEEE Standard Single- and Double-Precision Formats
Floating-point operands are classified as single-precision (SP) and double-
precision (DP). Single-precision floating-point values are 32-bit values stored
in a single register. Double-precision floating-point values are 64-bit values
stored in a register pair. The register pair consists of consecutive even and odd
registers from the same register file. The 32 least-significant-bits are loaded
into the even register; the 32 most-significant-bits containing the sign bit and
exponent are loaded into the next register (that is always the odd register). The
register pair syntax places the odd register first, followed by a colon, then the
even register (that is, A1:A0, B1:B0, A3:A2, B3:B2, etc.).
Instructions that use DP sources fall in two categories: instructions that read
the upper and lower 32-bit words on separate cycles, and instructions that
read both 32-bit words on the same cycle. All instructions that produce a
double-precision result write the low 32-bit word one cycle before writing the
high 32-bit word. If an instruction that writes a DP result is followed by an
instruction that uses the result as its DP source and it reads the upper and low-
er words on separate cycles, then the second instruction can be scheduled on
the same cycle that the high 32-bit word of the result is written. The lower result
is written on the previous cycle. This is because the second instruction reads
the low word of the DP source one cycle before the high word of the DP source.
IEEE floating-point numbers consist of normal numbers, denormalized
numbers, NaNs (not a number), and infinity numbers. Denormalized numbers
are nonzero numbers that are smaller than the smallest nonzero normal
number. Infinity is a value that represents an infinite floating-point number.
NaN values represent results for invalid operations, such as (+infinity +
Normal single-precision values are always accurate to at least six decimal
places, sometimes up to nine decimal places. Normal double-precision values
are always accurate to at least 15 decimal places, sometimes up to 17 decimal
Table 3−3 shows notations used in discussing floating-point numbers.