const_soft_float 0.1.0

Const Soft Float Point
Documentation

Rust float-point in constant context

Float-point code is from compiler_builtins = "0.1.87" and the code has been rewrite so that make it work in a constant context.

If there is any inconsistent behavior, please open an issues.

features:

  • no_std
  • const_trait_impl
  • const_mut_refs

work in stable:

# use const_soft_float::soft_f32::SoftF32;
const fn const_f32_add(a: f32, b: f32) -> f32 {
    SoftF32(a).add(SoftF32(b)).to_f32()
}

with const_trait_impl usage:

# #![feature(const_trait_impl)]
# use const_soft_float::soft_f32::SoftF32;
const fn const_f32_add(a: f32, b: f32) -> f32 {
    (SoftF32(a) + SoftF32(b)).to_f32()
}

with const_mut_refs usage:

# #![feature(const_trait_impl)]
# #![feature(const_mut_refs)]
# use const_soft_float::soft_f32::SoftF32;
const fn const_f32_add(a: f32, b: f32) -> f32 {
    let mut x = SoftF32(a);
    x += SoftF32(b);
    x.to_f32()
}