softfloat-wrapper is a safe wrapper of Berkeley SoftFloat based on softfloat-sys.
- Rust 1.64 -
core::ffi
types in stable rustfmt
- used bybindgen
to format bindingsclang
andlibclang
- used bybindgen
to generate some bindings
[dependencies.softfloat-wrapper]
git = "https://github.com/tacanslabs/softfloat-sys.git"
use softfloat_wrapper::{Float, F16, RoundingMode};
fn main() {
let a = 0x1234;
let b = 0x1479;
let a = F16::from_bits(a);
let b = F16::from_bits(b);
let d = a.add(b, RoundingMode::TiesToEven);
let a = f32::from_bits(a.to_f32(RoundingMode::TiesToEven).to_bits());
let b = f32::from_bits(b.to_f32(RoundingMode::TiesToEven).to_bits());
let d = f32::from_bits(d.to_f32(RoundingMode::TiesToEven).to_bits());
println!("{} + {} = {}", a, b, d);
}
Compared to 0.3.x, architecture specializations are chosen through target triple. Architectures properly supported ATM:
- Linux x86-64
- Wasm32
Actual feature gates:
native-float
- enables conversions from and to native floating-point typesf128
- enables quad-precisionF128
type
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.