The four VAX floating-point formats (32-bit F format, 64-bit D format, alternate 64-bit G format, 128-bit H format) all have three classes of floating-point data, encoded by a sign bit, an exponent field, and a significand field:
- Normal floating-point numbers, encoded with a nonzero exponent field.
- Reserved operands, encoded with zero exponent and sign bit set. Triggers reserved operand fault on input to floating-point operations, rather than propagating without a trap like a quiet NaN would. (IEEE 754 uses this encoding for negative zero or negative subnormals instead.)
- Zero, encoded with zero exponent, sign bit clear, and zero significand field.
- Dirty zero, encoded with zero exponent, sign bit clear, and nonzero significand field. Treated as zero on input to floating-point operations. (IEEE 754 uses this encoding for positive subnormals instead.)
On NetBSD/vax, the fpclassify() function has four possible return values for these cases:
- FP_NORMAL
- FP_ROP
- FP_ZERO
- FP_DIRTYZERO
FP_ROP is an example of a non-finite floating-point class other than infinity and NaN.
References: