What is IEEE754Lib?
IEEE754Lib is a small Java library that supports encoding and decoding floating point numbers using IEEE-754 bit streams. Numbers are represented as Java objects that are independent of encoding formats.
Supported Formats
Basic Formats
Encoding, decoding, and conversion of all basic interchange formats is supported:
Name | Common name | Exponent bits | Significand bits | Exponent bias |
---|---|---|---|---|
binary16 | Half | 5 | 10 | 15 |
binary32 | Single | 8 | 23 | 127 |
binary64 | Double | 11 | 52 | 1,023 |
binary128 | Quadruple | 15 | 112 | 16,383 |
binary256 | Octuple | 19 | 236 | 262,143 |
Arbitrary Formats
Arbitrary formats are supported by providing custom values for:
- Exponent bit-count
- Significand bit-count
- Exponent bias
Usage Examples
Reading Quadruple-Precision (binary128) from a Byte Array
byte[] quadBytes; // Input (16 bytes)
IEEE754 number = IEEE754.decode(IEEE754Format.QUADRUPLE,
BitUtils.wrapSource(quadBytes));
double converted = number.doubleValue();
Writing Double-Precision (binary64) to an OutputStream
IEEE754 number; // Input
OutputStream os; // Output
number.toBits(IEEE754Format.DOUBLE, BitUtils.wrapSink(os));
Reading Arbitrary-Precision from a Byte Array
byte[] quadBytes; // Input (16 bytes)
IEEE754Format format = new IEEE754Format(
11, // Exponent bit-count
52, // Significand bit-count
BigInteger.valueOf(1023) // Exponent bias
);
IEEE754 number = IEEE754.decode(format, BitUtils.wrapSource(quadBytes));