Expand description

Implementations of traits for converting Floats 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"
);