Module malachite_float::conversion::mantissa_and_exponent
source · Expand description
Implementations of traits for converting Float
s to and from
mantissa-and-exponent representations.
The traits are
RawMantissaAndExponent
,
IntegerMantissaAndExponent
,
and SciMantissaAndExponent
.
Here are some examples of the macro-generated functions:
§sci_mantissa_and_exponent
use malachite_base::num::arithmetic::traits::Pow;
use malachite_base::num::basic::traits::One;
use malachite_base::num::conversion::traits::SciMantissaAndExponent;
use malachite_base::num::float::NiceFloat;
use malachite_float::Float;
use malachite_nz::natural::Natural;
use malachite_q::Rational;
let (m, e): (f64, i64) = (&Float::ONE).sci_mantissa_and_exponent();
assert_eq!(NiceFloat(m), NiceFloat(1.0));
assert_eq!(e, 0);
let (m, e): (f64, i64) = (&Float::from(std::f64::consts::PI)).sci_mantissa_and_exponent();
assert_eq!(NiceFloat(m), NiceFloat(std::f64::consts::FRAC_PI_2));
assert_eq!(e, 1);
let (m, e): (f64, i64) =
(&Float::from(Natural::from(3u32).pow(50u64))).sci_mantissa_and_exponent();
assert_eq!(NiceFloat(m), NiceFloat(1.187662594419065));
assert_eq!(e, 79);
let (m, e): (f64, i64) = (&Float::from_rational_prec(Rational::from(3u32).pow(-50i64), 100).0)
.sci_mantissa_and_exponent();
assert_eq!(NiceFloat(m), NiceFloat(1.6839799530592128));
assert_eq!(e, -80);
§from_sci_mantissa_and_exponent
use malachite_base::num::conversion::traits::SciMantissaAndExponent;
use malachite_float::Float;
assert_eq!(
<&Float as SciMantissaAndExponent<f64, _, _>>::from_sci_mantissa_and_exponent(1.0, 0)
.unwrap()
.to_string(),
"1.0"
);
assert_eq!(
<&Float as SciMantissaAndExponent<f64, _, _>>::from_sci_mantissa_and_exponent(
std::f64::consts::FRAC_PI_2,
1
)
.unwrap()
.to_string(),
"3.141592653589793"
);
assert_eq!(
<&Float as SciMantissaAndExponent<f64, _, _>>::from_sci_mantissa_and_exponent(
1.187662594419065,
79
)
.unwrap()
.to_string(),
"7.178979876918526e23"
);
assert_eq!(
<&Float as SciMantissaAndExponent<f64, _, _>>::from_sci_mantissa_and_exponent(
1.6839799530592128,
-80
)
.unwrap()
.to_string(),
"1.392955569098538e-24"
);