floatconv 0.1.0

Floating point conversion functions
Documentation

Floating point conversion functions.

Software and hardware implementations

The [native] module provides only those conversions which are natively available on the target hardware.

The [soft] module provides a software implementation of all conversion functions, for targets which do not provide them natively.

The root of the crate exposes the best version of all available functions.

Rounding mode

  • Functions named _round round the integer to the closest possible floating point number, and breaks ties to even.
  • Functions named _truncate truncate the result, which means they round towards zero.
  • Functions named _any are an alias of whichever variant is fastest on the target.
  • Functions without a rounding mode in their name do not round. These conversions are always lossless.

Speed

For conversions that aren't available natively, the software implementations in this crate seem to be both faster and smaller in almost all cases compared to the ones currently used by x as f64 (from the compiler builtins runtime support library).

Work in progress

This crate is usable, but still incomplete:

  • There's no support for f32 yet.
  • There's no support for converting to integers yet.
  • Native conversions are only available on ARM (32- and 64-bit) and x86 (32- and 64-bit).
  • The software implementations can probably be optimized further.
  • More benchmarking still needs to happen.