19

14

12

14

# DecFP: IEEE Decimal Floating-point in Julia

The DecFP package is a Julia wrapper around the Intel Decimal Floating-Point Math Library, providing a software implementation of the IEEE 754-2008 Decimal Floating-Point Arithmetic specification.

32-bit, 64-bit, and 128-bit decimal floating-point types `Dec32`, `Dec64`, and `Dec128`, respectively, are provided. This is very different from packages such as Decimals.jl, which provide arbitrary-precision decimal types analogous to `BigFloat`: arbitrary precision types are very flexible, but fixed-precision types such as those in DecFP are much faster (though still about 100x slower than the hardware binary floating-point types `Float32` and `Float64`).

The DecFP package currently requires the Julia 0.6 release or later.

## Usage

`Dec64` and the other types mentioned above can be constructed from other Julia numeric types (binary floating-point or integers) via `Dec64(3.5)` or `Dec(3)`, from strings by `parse(Dec64, "3.2")` or `d64"3.2"` (a Julia string macro); similarly for `Dec32` and `Dec128`. The string macro `d"3.2"` constructs `Dec64`.

Once a decimal float is constructed, most Julia arithmetic and special functions should work without modification. For example, `d"3.2" * d"4.5"` produces the `Dec64` result `+1440E-2` (14.4). Most basic arithmetic functions are supported, and many special functions (`sqrt`, `log`, trigonometric functions, etc.). Mixed operations involving decimal and binary floating-point or integer types are supported (the result is promoted to decimal floating-point).

In general, you should be able to use the `DecFP` types in any context where you would have used binary floating-point types: arrays, complex arithmetic, and linear algebra should all work, for the most part.

04/27/2015

14 days ago

119 commits