pub fn negative_primitive_floats_increasing<T: PrimitiveFloat>(
) -> PrimitiveFloatIncreasingRange<T> 
Expand description

Generates all negative primitive floats, in ascending order.

Positive and negative zero are both excluded.

NEGATIVE_INFINITY is generated first and -MIN_POSITIVE_SUBNORMAL is generated last. The returned iterator is double-ended, so it may be reversed.

Let $\varphi$ be to_ordered_representation:

The output is $(\varphi^{-1}(k))_{k=0}^{2^M(2^E-1)-1}$.

The output length is $2^M(2^E-1)$.

  • For f32, this is $2^{31}-2^{23}$, or 2139095040.
  • For f64, this is $2^{63}-2^{52}$, or 9218868437227405312.

§Complexity per iteration

Constant time and additional memory.

§Examples

use malachite_base::iterators::prefix_to_string;
use malachite_base::num::basic::floats::PrimitiveFloat;
use malachite_base::num::exhaustive::negative_primitive_floats_increasing;
use malachite_base::num::float::NiceFloat;

assert_eq!(
    prefix_to_string(negative_primitive_floats_increasing::<f32>().map(NiceFloat), 20),
    "[-Infinity, -3.4028235e38, -3.4028233e38, -3.402823e38, -3.4028229e38, -3.4028227e38, \
    -3.4028225e38, -3.4028222e38, -3.402822e38, -3.4028218e38, -3.4028216e38, -3.4028214e38, \
    -3.4028212e38, -3.402821e38, -3.4028208e38, -3.4028206e38, -3.4028204e38, -3.4028202e38, \
    -3.40282e38, -3.4028198e38, ...]"
);
assert_eq!(
    prefix_to_string(negative_primitive_floats_increasing::<f32>().rev().map(NiceFloat), 20),
    "[-1.0e-45, -3.0e-45, -4.0e-45, -6.0e-45, -7.0e-45, -8.0e-45, -1.0e-44, -1.1e-44, \
    -1.3e-44, -1.4e-44, -1.5e-44, -1.7e-44, -1.8e-44, -2.0e-44, -2.1e-44, -2.2e-44, -2.4e-44, \
    -2.5e-44, -2.7e-44, -2.8e-44, ...]"
);