#![cfg(feature = "compact")] #![allow(dead_code)] use minimal_lexical::bellerophon::bellerophon; use minimal_lexical::extended_float::{extended_to_float, ExtendedFloat}; use minimal_lexical::num::Float; use minimal_lexical::number::Number; pub fn bellerophon_test( xmant: u64, xexp: i32, many_digits: bool, ymant: u64, yexp: i32, ) { let num = Number { exponent: xexp, mantissa: xmant, many_digits, }; let xfp = bellerophon::(&num); let yfp = ExtendedFloat { mant: ymant, exp: yexp, }; // Given us useful error messages if the floats are valid. if xfp.exp >= 0 && yfp.exp >= 0 { assert!( xfp == yfp, "x != y, xfp={:?}, yfp={:?}, x={:?}, y={:?}", xfp, yfp, extended_to_float::(xfp), extended_to_float::(yfp) ); } else { assert_eq!(xfp, yfp); } } pub fn compute_float32(q: i32, w: u64) -> (i32, u64) { let num = Number { exponent: q, mantissa: w, many_digits: false, }; let fp = bellerophon::(&num); (fp.exp, fp.mant) } pub fn compute_float64(q: i32, w: u64) -> (i32, u64) { let num = Number { exponent: q, mantissa: w, many_digits: false, }; let fp = bellerophon::(&num); (fp.exp, fp.mant) }