use crate::Float;
use crate::InnerFloat::Finite;
use crate::float::random::{
RandomPositiveFiniteFloats, random_finite_floats, random_floats,
random_non_negative_finite_floats, random_nonzero_finite_floats, random_positive_finite_floats,
random_positive_floats_with_precision,
};
use crate::test_util::extra_variadic::{
random_quadruples, random_quadruples_from_single, random_quadruples_xxxy,
random_quadruples_xxyz, random_quintuples_xxxxy, random_quintuples_xxxyz,
random_quintuples_xxyzw, random_sextuples_xxxxyz, random_sextuples_xxxyzw, random_triples,
random_triples_from_single, random_triples_xxy, random_triples_xyy,
};
use crate::test_util::generators::common::{
FLOAT_FORMAT_COMBO_COUNT, SCI_STRING_COMBO_COUNT, STRTOFR_COMBO_COUNT, STRTOFR_STRING_CHARS,
format_string_from_parts, format_string_output_is_bounded, sci_string_from_parts,
strtofr_string_from_parts, valid_float_from_sci_string_triple, valid_float_get_str_quadruple,
valid_strtofr_quadruple,
};
use crate::test_util::generators::exhaustive::{
acos_prec_round_valid, acos_rational_prec_round_valid, acos_round_valid,
acos_with_period_prec_round_valid, acos_with_period_rational_prec_round_valid,
acos_with_period_round_valid, acosh_rational_prec_round_valid, acot_prec_round_valid,
acot_rational_prec_round_valid, acot_round_valid, acot_with_period_prec_round_valid,
acot_with_period_rational_prec_round_valid, acot_with_period_round_valid,
acoth_prec_round_valid, acoth_rational_prec_round_valid, acsc_prec_round_valid,
acsc_rational_prec_round_valid, acsc_round_valid, acsc_with_period_prec_round_valid,
acsc_with_period_rational_prec_round_valid, acsc_with_period_round_valid,
add_mul_prec_round_valid, add_mul_rational_prec_round_valid, add_mul_rational_round_valid,
add_mul_round_valid, add_prec_round_valid, add_rational_prec_round_valid,
add_rational_round_valid, add_round_valid, agm_prec_round_valid, agm_rational_prec_round_valid,
agm_round_valid, asec_prec_round_valid, asec_rational_prec_round_valid, asec_round_valid,
asec_with_period_prec_round_valid, asec_with_period_rational_prec_round_valid,
asec_with_period_round_valid, asech_prec_round_valid, asech_rational_prec_round_valid,
asin_with_period_prec_round_valid, asin_with_period_rational_prec_round_valid,
asin_with_period_round_valid, atan_with_period_prec_round_valid,
atan_with_period_rational_prec_round_valid, atan_with_period_round_valid,
atan2_rational_prec_round_valid, atanh_rational_prec_round_valid, average_prec_round_valid,
cbrt_prec_round_valid, cbrt_round_valid, compound_prec_round_valid,
cos_with_period_prec_round_valid, cos_with_period_rational_prec_round_valid,
cos_with_period_round_valid, div_prec_round_valid, div_rational_prec_round_valid,
div_rational_round_valid, div_round_valid, dot_prec_round_valid, dot_round_valid,
exp_prec_round_valid, exp_rational_prec_round_valid, exp_round_valid,
float_to_sci_options_valid, from_primitive_float_prec_round_valid, hypot_prec_round_valid,
hypot_round_valid, integer_rounding_from_float_valid, ln_1_plus_x_prec_round_valid,
ln_1_plus_x_round_valid, ln_prec_round_valid, ln_rational_prec_round_valid, ln_round_valid,
log_base_1_plus_x_prec_round_valid, log_base_1_plus_x_round_valid,
log_base_2_1_plus_x_prec_round_valid, log_base_2_1_plus_x_round_valid,
log_base_2_prec_round_valid, log_base_2_rational_prec_round_valid, log_base_2_round_valid,
log_base_10_1_plus_x_prec_round_valid, log_base_10_1_plus_x_round_valid,
log_base_10_prec_round_valid, log_base_10_rational_prec_round_valid, log_base_10_round_valid,
log_base_float_base_1_plus_x_prec_round_valid, log_base_float_base_1_plus_x_round_valid,
log_base_float_base_prec_round_valid, log_base_float_base_round_valid,
log_base_power_of_2_1_plus_x_prec_round_valid, log_base_power_of_2_1_plus_x_round_valid,
log_base_power_of_2_prec_round_valid, log_base_power_of_2_rational_prec_round_valid,
log_base_power_of_2_round_valid, log_base_prec_round_valid,
log_base_rational_base_1_plus_x_prec_round_valid, log_base_rational_base_1_plus_x_round_valid,
log_base_rational_base_prec_round_valid, log_base_rational_base_round_valid,
log_base_rational_float_base_prec_round_valid, log_base_rational_prec_round_valid,
log_base_rational_rational_base_prec_round_valid, log_base_round_valid, max_prec_round_valid,
min_max_rational_prec_round_valid, min_max_rational_round_valid, min_prec_round_valid,
mul_add_mul_prec_round_valid, mul_add_mul_rational_prec_round_valid,
mul_add_mul_rational_round_valid, mul_add_mul_round_valid, mul_prec_round_valid,
mul_rational_prec_round_valid, mul_rational_round_valid, mul_round_valid,
natural_rounding_from_float_valid, positive_difference_prec_round_valid,
positive_difference_rational_prec_round_valid, positive_difference_rational_round_valid,
positive_difference_round_valid, pow_integer_prec_round_valid, pow_rational_prec_round_valid,
pow_s_prec_round_valid, pow_u_prec_round_valid, product_prec_round_valid, product_round_valid,
rational_div_float_prec_round_valid, rational_div_float_round_valid,
rational_pow_rational_prec_round_valid, rational_rem_float_prec_round_valid,
rational_rem_float_round_valid, reciprocal_prec_round_valid, reciprocal_round_valid,
reciprocal_sqrt_prec_round_valid, reciprocal_sqrt_rational_prec_round_valid,
reciprocal_sqrt_round_valid, rem_prec_round_valid, rem_rational_prec_round_valid,
rem_rational_round_valid, rem_round_valid, root_s_prec_round_valid,
root_s_rational_prec_round_valid, root_u_prec_round_valid, root_u_rational_prec_round_valid,
set_prec_round_valid, shl_prec_round_valid, shl_round_valid, shr_prec_round_valid,
shr_round_valid, signed_rounding_from_float_valid, sin_with_period_prec_round_valid,
sin_with_period_rational_prec_round_valid, sin_with_period_round_valid, sqrt_prec_round_valid,
sqrt_rational_prec_round_valid, sqrt_round_valid, square_prec_round_valid, square_round_valid,
sub_prec_round_valid, sub_rational_prec_round_valid, sub_rational_round_valid, sub_round_valid,
sum_prec_round_valid, sum_round_valid, unsigned_pow_prec_round_valid,
unsigned_pow_rational_prec_round_valid, unsigned_pow_unsigned_prec_round_valid,
unsigned_rounding_from_float_valid,
};
use malachite_base::bools::random::{
RandomBools, WeightedRandomBools, random_bools, weighted_random_bools,
};
use malachite_base::iterators::{WithSpecialValues, with_special_values};
use malachite_base::num::arithmetic::traits::{IsPowerOf2, NegModPowerOf2, Reciprocal};
use malachite_base::num::basic::floats::PrimitiveFloat;
use malachite_base::num::basic::integers::PrimitiveInt;
use malachite_base::num::basic::signeds::PrimitiveSigned;
use malachite_base::num::basic::traits::{Infinity, NaN, NegativeInfinity, One, Zero};
use malachite_base::num::basic::unsigneds::PrimitiveUnsigned;
use malachite_base::num::conversion::string::options::random::random_to_sci_options;
use malachite_base::num::conversion::string::options::{FromSciStringOptions, ToSciOptions};
use malachite_base::num::conversion::traits::{ConvertibleFrom, ExactFrom, SaturatingFrom};
use malachite_base::num::logic::traits::SignificantBits;
use malachite_base::num::random::geometric::{
GeometricRandomNaturalValues, geometric_random_natural_signeds,
geometric_random_nonzero_signeds, geometric_random_positive_unsigneds,
geometric_random_signeds, geometric_random_unsigned_inclusive_range,
geometric_random_unsigneds,
};
use malachite_base::num::random::striped::striped_random_signeds;
use malachite_base::num::random::{
RandomUnsignedInclusiveRange, random_primitive_ints, random_unsigned_inclusive_range,
special_random_primitive_floats,
};
use malachite_base::options::random::random_options;
use malachite_base::orderings::random::random_orderings;
use malachite_base::random::{EXAMPLE_SEED, Seed};
use malachite_base::rounding_modes::RoundingMode::{self, *};
use malachite_base::rounding_modes::random::random_rounding_modes;
use malachite_base::strings::random::random_strings_using_chars;
use malachite_base::test_util::generators::common::{GenConfig, It, reshape_2_1_to_3};
use malachite_base::test_util::generators::random as base_gen;
use malachite_base::tuples::random::{random_pairs, random_pairs_from_single};
use malachite_base::vecs::random::{random_vecs, random_vecs_min_length};
use malachite_base::vecs::random_values_from_vec;
use malachite_nz::gaussian_integer::GaussianInteger;
use malachite_nz::gaussian_integer::random::random_gaussian_integers;
use malachite_nz::integer::Integer;
use malachite_nz::integer::random::random_integers;
use malachite_nz::natural::Natural;
use malachite_nz::natural::random::{
RandomNaturals, UniformRandomNaturalRange, random_naturals, random_positive_naturals,
};
use malachite_nz::platform::Limb;
use malachite_q::Rational;
use malachite_q::gaussian_rational::GaussianRational;
use malachite_q::gaussian_rational::random::random_gaussian_rationals;
use malachite_q::rational::random::{random_non_negative_rationals, random_rationals};
use std::cmp::Ordering;
use std::collections::HashMap;
pub fn random_float_gen(config: &GenConfig) -> It<Float> {
Box::new(random_floats(
EXAMPLE_SEED,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
))
}
pub fn random_float_gen_var_1(config: &GenConfig) -> It<Float> {
Box::new(random_positive_finite_floats(
EXAMPLE_SEED,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
))
}
pub fn random_float_gen_var_2(config: &GenConfig) -> It<Float> {
Box::new(
random_floats(
EXAMPLE_SEED,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
.filter(|f| !f.is_nan()),
)
}
pub fn random_float_gen_var_3(config: &GenConfig) -> It<Float> {
Box::new(random_nonzero_finite_floats(
EXAMPLE_SEED,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
))
}
pub fn random_float_gen_var_4(config: &GenConfig) -> It<Float> {
Box::new(random_finite_floats(
EXAMPLE_SEED,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
))
}
pub fn random_float_gen_var_5(config: &GenConfig) -> It<Float> {
Box::new(random_non_negative_finite_floats(
EXAMPLE_SEED,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
))
}
pub fn random_float_gen_var_6(config: &GenConfig) -> It<Float> {
random_floats_with_precision_inclusive_range(EXAMPLE_SEED, config, 1, Limb::WIDTH - 1)
}
pub fn random_float_gen_var_7(config: &GenConfig) -> It<Float> {
Box::new(random_positive_floats_with_precision(
EXAMPLE_SEED,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
Limb::WIDTH,
))
}
pub fn random_float_gen_var_8(config: &GenConfig) -> It<Float> {
random_floats_with_precision_inclusive_range(
EXAMPLE_SEED,
config,
Limb::WIDTH + 1,
(Limb::WIDTH << 1) - 1,
)
}
pub fn random_float_gen_var_9(config: &GenConfig) -> It<Float> {
Box::new(random_positive_floats_with_precision(
EXAMPLE_SEED,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
Limb::WIDTH << 1,
))
}
pub fn random_float_gen_var_10(config: &GenConfig) -> It<Float> {
random_floats_with_precision_inclusive_range(
EXAMPLE_SEED,
config,
(Limb::WIDTH << 1) + 1,
Limb::WIDTH * 3 - 1,
)
}
pub fn random_float_gen_var_11(config: &GenConfig) -> It<Float> {
random_floats_with_precision_inclusive_range_to_infinity(
EXAMPLE_SEED,
config,
(Limb::WIDTH << 1) + 1,
)
}
#[derive(Clone, Debug)]
pub(crate) struct RandomExtremePositiveFiniteFloats<I: Iterator<Item = Natural>> {
pub(crate) exponents: GeometricRandomNaturalValues<i32>,
pub(crate) exponent_modes: RandomBools,
pub(crate) xs: I,
}
impl<I: Iterator<Item = Natural>> Iterator for RandomExtremePositiveFiniteFloats<I> {
type Item = Float;
fn next(&mut self) -> Option<Float> {
let x = self.xs.next().unwrap();
let precision = x.significant_bits();
assert_ne!(precision, 0);
let exponent_offset = self.exponents.next().unwrap();
let exp = if self.exponent_modes.next().unwrap() {
Float::MAX_EXPONENT - exponent_offset
} else {
Float::MIN_EXPONENT + exponent_offset
};
Some(Float(Finite {
sign: true,
exponent: exp,
precision,
significand: x << precision.neg_mod_power_of_2(Limb::LOG_WIDTH),
}))
}
}
fn random_extreme_positive_finite_floats(
seed: Seed,
mean_sci_exponent_abs_numerator: u64,
mean_sci_exponent_abs_denominator: u64,
mean_precision_numerator: u64,
mean_precision_denominator: u64,
) -> RandomExtremePositiveFiniteFloats<RandomNaturals<GeometricRandomNaturalValues<u64>>> {
RandomExtremePositiveFiniteFloats {
exponents: geometric_random_natural_signeds(
seed.fork("exponents"),
mean_sci_exponent_abs_numerator,
mean_sci_exponent_abs_denominator,
),
exponent_modes: random_bools(seed.fork("exponent_modes")),
xs: random_positive_naturals(
seed.fork("significands"),
mean_precision_numerator,
mean_precision_denominator,
),
}
}
#[derive(Clone, Debug)]
pub(crate) struct RandomExtremeNonNegativeFiniteFloats<I: Iterator<Item = Natural>> {
pub(crate) bs: WeightedRandomBools,
pub(crate) xs: RandomExtremePositiveFiniteFloats<I>,
}
impl<I: Iterator<Item = Natural>> Iterator for RandomExtremeNonNegativeFiniteFloats<I> {
type Item = Float;
#[inline]
fn next(&mut self) -> Option<Float> {
if self.bs.next().unwrap() {
Some(Float::ZERO)
} else {
self.xs.next()
}
}
}
#[inline]
fn random_extreme_non_negative_finite_floats(
seed: Seed,
mean_sci_exponent_abs_numerator: u64,
mean_sci_exponent_abs_denominator: u64,
mean_precision_numerator: u64,
mean_precision_denominator: u64,
zero_p_numerator: u64,
zero_p_denominator: u64,
) -> RandomExtremeNonNegativeFiniteFloats<RandomNaturals<GeometricRandomNaturalValues<u64>>> {
RandomExtremeNonNegativeFiniteFloats {
bs: weighted_random_bools(seed.fork("bs"), zero_p_numerator, zero_p_denominator),
xs: random_extreme_positive_finite_floats(
seed.fork("xs"),
mean_sci_exponent_abs_numerator,
mean_sci_exponent_abs_denominator,
mean_precision_numerator,
mean_precision_denominator,
),
}
}
#[derive(Clone, Debug)]
pub(crate) struct RandomExtremeNonzeroFiniteFloats<I: Iterator<Item = Natural>> {
pub(crate) bs: RandomBools,
pub(crate) xs: RandomExtremePositiveFiniteFloats<I>,
}
impl<I: Iterator<Item = Natural>> Iterator for RandomExtremeNonzeroFiniteFloats<I> {
type Item = Float;
#[inline]
fn next(&mut self) -> Option<Float> {
let x = self.xs.next().unwrap();
Some(if self.bs.next().unwrap() { x } else { -x })
}
}
#[inline]
fn random_extreme_nonzero_finite_floats(
seed: Seed,
mean_sci_exponent_abs_numerator: u64,
mean_sci_exponent_abs_denominator: u64,
mean_precision_numerator: u64,
mean_precision_denominator: u64,
) -> RandomExtremeNonzeroFiniteFloats<RandomNaturals<GeometricRandomNaturalValues<u64>>> {
RandomExtremeNonzeroFiniteFloats {
bs: random_bools(seed.fork("bs")),
xs: random_extreme_positive_finite_floats(
seed.fork("xs"),
mean_sci_exponent_abs_numerator,
mean_sci_exponent_abs_denominator,
mean_precision_numerator,
mean_precision_denominator,
),
}
}
#[derive(Clone, Debug)]
pub(crate) struct RandomExtremeFiniteFloats<I: Iterator<Item = Natural>> {
pub(crate) bs: RandomBools,
pub(crate) xs: RandomExtremeNonNegativeFiniteFloats<I>,
}
impl<I: Iterator<Item = Natural>> Iterator for RandomExtremeFiniteFloats<I> {
type Item = Float;
#[inline]
fn next(&mut self) -> Option<Float> {
let x = self.xs.next().unwrap();
Some(if self.bs.next().unwrap() { x } else { -x })
}
}
#[inline]
fn random_extreme_finite_floats(
seed: Seed,
mean_sci_exponent_abs_numerator: u64,
mean_sci_exponent_abs_denominator: u64,
mean_precision_numerator: u64,
mean_precision_denominator: u64,
zero_p_numerator: u64,
zero_p_denominator: u64,
) -> RandomExtremeFiniteFloats<RandomNaturals<GeometricRandomNaturalValues<u64>>> {
RandomExtremeFiniteFloats {
bs: random_bools(seed.fork("bs")),
xs: random_extreme_non_negative_finite_floats(
seed.fork("xs"),
mean_sci_exponent_abs_numerator,
mean_sci_exponent_abs_denominator,
mean_precision_numerator,
mean_precision_denominator,
zero_p_numerator,
zero_p_denominator,
),
}
}
#[inline]
fn random_extreme_floats(
seed: Seed,
mean_sci_exponent_abs_numerator: u64,
mean_sci_exponent_abs_denominator: u64,
mean_precision_numerator: u64,
mean_precision_denominator: u64,
mean_special_p_numerator: u64,
mean_special_p_denominator: u64,
) -> WithSpecialValues<RandomExtremeFiniteFloats<RandomNaturals<GeometricRandomNaturalValues<u64>>>>
{
with_special_values(
seed,
vec![Float::INFINITY, Float::NEGATIVE_INFINITY, Float::NAN],
mean_special_p_numerator,
mean_special_p_denominator,
&|seed_2| {
random_extreme_finite_floats(
seed_2,
mean_sci_exponent_abs_numerator,
mean_sci_exponent_abs_denominator,
mean_precision_numerator,
mean_precision_denominator,
mean_special_p_numerator,
mean_special_p_denominator,
)
},
)
}
pub fn random_float_gen_var_12(config: &GenConfig) -> It<Float> {
Box::new(random_extreme_floats(
EXAMPLE_SEED,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
))
}
pub fn random_float_gen_var_13(config: &GenConfig) -> It<Float> {
Box::new(random_extreme_nonzero_finite_floats(
EXAMPLE_SEED,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
))
}
pub fn random_float_gen_var_14(config: &GenConfig) -> It<Float> {
Box::new(
random_extreme_floats(
EXAMPLE_SEED,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
.filter(|f| !f.is_nan()),
)
}
pub fn random_float_gen_var_15(config: &GenConfig) -> It<Float> {
Box::new(
random_floats(
EXAMPLE_SEED,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
.filter(|x| *x > 0u32),
)
}
#[derive(Clone, Debug)]
pub(crate) struct RandomMixedExtremePositiveFiniteFloats<I: Iterator<Item = Natural>> {
pub(crate) exponents: GeometricRandomNaturalValues<i32>,
pub(crate) exponent_modes: RandomUnsignedInclusiveRange<u8>,
pub(crate) xs: I,
}
impl<I: Iterator<Item = Natural>> Iterator for RandomMixedExtremePositiveFiniteFloats<I> {
type Item = Float;
fn next(&mut self) -> Option<Float> {
let x = self.xs.next().unwrap();
let precision = x.significant_bits();
assert_ne!(precision, 0);
let exponent_offset = self.exponents.next().unwrap();
let exp = match self.exponent_modes.next().unwrap() {
0 => exponent_offset,
1 => -exponent_offset,
2 => Float::MAX_EXPONENT - exponent_offset,
3 => Float::MIN_EXPONENT + exponent_offset,
_ => unreachable!(),
};
Some(Float(Finite {
sign: true,
exponent: exp,
precision,
significand: x << precision.neg_mod_power_of_2(Limb::LOG_WIDTH),
}))
}
}
fn random_mixed_extreme_positive_finite_floats(
seed: Seed,
mean_sci_exponent_abs_numerator: u64,
mean_sci_exponent_abs_denominator: u64,
mean_precision_numerator: u64,
mean_precision_denominator: u64,
) -> RandomMixedExtremePositiveFiniteFloats<RandomNaturals<GeometricRandomNaturalValues<u64>>> {
RandomMixedExtremePositiveFiniteFloats {
exponents: geometric_random_natural_signeds(
seed.fork("exponents"),
mean_sci_exponent_abs_numerator,
mean_sci_exponent_abs_denominator,
),
exponent_modes: random_unsigned_inclusive_range(seed.fork("exponent_modes"), 0, 3),
xs: random_positive_naturals(
seed.fork("significands"),
mean_precision_numerator,
mean_precision_denominator,
),
}
}
#[derive(Clone, Debug)]
pub(crate) struct RandomMixedExtremeNonNegativeFiniteFloats<I: Iterator<Item = Natural>> {
pub(crate) bs: WeightedRandomBools,
pub(crate) xs: RandomMixedExtremePositiveFiniteFloats<I>,
}
impl<I: Iterator<Item = Natural>> Iterator for RandomMixedExtremeNonNegativeFiniteFloats<I> {
type Item = Float;
#[inline]
fn next(&mut self) -> Option<Float> {
if self.bs.next().unwrap() {
Some(Float::ZERO)
} else {
self.xs.next()
}
}
}
#[inline]
fn random_mixed_extreme_non_negative_finite_floats(
seed: Seed,
mean_sci_exponent_abs_numerator: u64,
mean_sci_exponent_abs_denominator: u64,
mean_precision_numerator: u64,
mean_precision_denominator: u64,
zero_p_numerator: u64,
zero_p_denominator: u64,
) -> RandomMixedExtremeNonNegativeFiniteFloats<RandomNaturals<GeometricRandomNaturalValues<u64>>> {
RandomMixedExtremeNonNegativeFiniteFloats {
bs: weighted_random_bools(seed.fork("bs"), zero_p_numerator, zero_p_denominator),
xs: random_mixed_extreme_positive_finite_floats(
seed.fork("xs"),
mean_sci_exponent_abs_numerator,
mean_sci_exponent_abs_denominator,
mean_precision_numerator,
mean_precision_denominator,
),
}
}
#[derive(Clone, Debug)]
pub(crate) struct _RandomMixedExtremeNonzeroFiniteFloats<I: Iterator<Item = Natural>> {
pub(crate) bs: RandomBools,
pub(crate) xs: RandomMixedExtremePositiveFiniteFloats<I>,
}
impl<I: Iterator<Item = Natural>> Iterator for _RandomMixedExtremeNonzeroFiniteFloats<I> {
type Item = Float;
#[inline]
fn next(&mut self) -> Option<Float> {
let x = self.xs.next().unwrap();
Some(if self.bs.next().unwrap() { x } else { -x })
}
}
#[inline]
fn _random_mixed_extreme_nonzero_finite_floats(
seed: Seed,
mean_sci_exponent_abs_numerator: u64,
mean_sci_exponent_abs_denominator: u64,
mean_precision_numerator: u64,
mean_precision_denominator: u64,
) -> _RandomMixedExtremeNonzeroFiniteFloats<RandomNaturals<GeometricRandomNaturalValues<u64>>> {
_RandomMixedExtremeNonzeroFiniteFloats {
bs: random_bools(seed.fork("bs")),
xs: random_mixed_extreme_positive_finite_floats(
seed.fork("xs"),
mean_sci_exponent_abs_numerator,
mean_sci_exponent_abs_denominator,
mean_precision_numerator,
mean_precision_denominator,
),
}
}
#[derive(Clone, Debug)]
pub(crate) struct RandomMixedExtremeFiniteFloats<I: Iterator<Item = Natural>> {
pub(crate) bs: RandomBools,
pub(crate) xs: RandomMixedExtremeNonNegativeFiniteFloats<I>,
}
impl<I: Iterator<Item = Natural>> Iterator for RandomMixedExtremeFiniteFloats<I> {
type Item = Float;
#[inline]
fn next(&mut self) -> Option<Float> {
let x = self.xs.next().unwrap();
Some(if self.bs.next().unwrap() { x } else { -x })
}
}
#[inline]
fn random_mixed_extreme_finite_floats(
seed: Seed,
mean_sci_exponent_abs_numerator: u64,
mean_sci_exponent_abs_denominator: u64,
mean_precision_numerator: u64,
mean_precision_denominator: u64,
zero_p_numerator: u64,
zero_p_denominator: u64,
) -> RandomMixedExtremeFiniteFloats<RandomNaturals<GeometricRandomNaturalValues<u64>>> {
RandomMixedExtremeFiniteFloats {
bs: random_bools(seed.fork("bs")),
xs: random_mixed_extreme_non_negative_finite_floats(
seed.fork("xs"),
mean_sci_exponent_abs_numerator,
mean_sci_exponent_abs_denominator,
mean_precision_numerator,
mean_precision_denominator,
zero_p_numerator,
zero_p_denominator,
),
}
}
#[inline]
fn random_mixed_extreme_floats(
seed: Seed,
mean_sci_exponent_abs_numerator: u64,
mean_sci_exponent_abs_denominator: u64,
mean_precision_numerator: u64,
mean_precision_denominator: u64,
mean_special_p_numerator: u64,
mean_special_p_denominator: u64,
) -> WithSpecialValues<
RandomMixedExtremeFiniteFloats<RandomNaturals<GeometricRandomNaturalValues<u64>>>,
> {
with_special_values(
seed,
vec![Float::INFINITY, Float::NEGATIVE_INFINITY, Float::NAN],
mean_special_p_numerator,
mean_special_p_denominator,
&|seed_2| {
random_mixed_extreme_finite_floats(
seed_2,
mean_sci_exponent_abs_numerator,
mean_sci_exponent_abs_denominator,
mean_precision_numerator,
mean_precision_denominator,
mean_special_p_numerator,
mean_special_p_denominator,
)
},
)
}
struct RandomFloatsWithPrecisionUniformInclusiveRange {
seed: Seed,
mean_exponent_n: u64,
mean_exponent_d: u64,
precisions: Box<dyn Iterator<Item = u64>>,
floats: HashMap<u64, RandomPositiveFiniteFloats<UniformRandomNaturalRange>>,
}
impl Iterator for RandomFloatsWithPrecisionUniformInclusiveRange {
type Item = Float;
fn next(&mut self) -> Option<Float> {
let prec = self.precisions.next().unwrap();
let xs = self
.floats
.entry(prec)
.or_insert(random_positive_floats_with_precision(
self.seed.fork(&prec.to_string()),
self.mean_exponent_n,
self.mean_exponent_d,
prec,
));
Some(xs.next().unwrap())
}
}
fn random_floats_with_precision_inclusive_range(
seed: Seed,
config: &GenConfig,
prec_lo: u64,
prec_hi: u64,
) -> It<Float> {
Box::new(RandomFloatsWithPrecisionUniformInclusiveRange {
seed: seed.fork("floats"),
mean_exponent_n: config.get_or("mean_exponent_n", 64),
mean_exponent_d: config.get_or("mean_exponent_d", 1),
precisions: Box::new(random_unsigned_inclusive_range(
seed.fork("precisions"),
prec_lo,
prec_hi,
)),
floats: HashMap::new(),
})
}
fn random_floats_with_precision_inclusive_range_to_infinity(
seed: Seed,
config: &GenConfig,
prec_lo: u64,
) -> It<Float> {
let mean_precision = Rational::from_unsigneds(
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 64),
) + Rational::from(prec_lo);
let (n, d) = mean_precision.into_numerator_and_denominator();
Box::new(RandomFloatsWithPrecisionUniformInclusiveRange {
seed: seed.fork("floats"),
mean_exponent_n: config.get_or("mean_exponent_n", 64),
mean_exponent_d: config.get_or("mean_exponent_d", 1),
precisions: Box::new(geometric_random_unsigned_inclusive_range(
seed.fork("precisions"),
prec_lo,
u64::MAX,
u64::exact_from(&n),
u64::exact_from(&d),
)),
floats: HashMap::new(),
})
}
struct RandomFloatPairsWithPrecisionUniformInclusiveRange {
seed: Seed,
mean_exponent_n: u64,
mean_exponent_d: u64,
precisions: Box<dyn Iterator<Item = u64>>,
floats: HashMap<u64, RandomPositiveFiniteFloats<UniformRandomNaturalRange>>,
}
impl Iterator for RandomFloatPairsWithPrecisionUniformInclusiveRange {
type Item = (Float, Float);
fn next(&mut self) -> Option<(Float, Float)> {
let prec = self.precisions.next().unwrap();
let xs = self
.floats
.entry(prec)
.or_insert(random_positive_floats_with_precision(
self.seed.fork(&prec.to_string()),
self.mean_exponent_n,
self.mean_exponent_d,
prec,
));
Some((xs.next().unwrap(), xs.next().unwrap()))
}
}
struct RandomFloatPairsWithPrecisions {
seed: Seed,
mean_exponent_n: u64,
mean_exponent_d: u64,
precisions: Box<dyn Iterator<Item = (u64, u64)>>,
floats: HashMap<u64, RandomPositiveFiniteFloats<UniformRandomNaturalRange>>,
}
impl Iterator for RandomFloatPairsWithPrecisions {
type Item = (Float, Float);
fn next(&mut self) -> Option<(Float, Float)> {
let precs = self.precisions.next().unwrap();
let xs = self
.floats
.entry(precs.0)
.or_insert(random_positive_floats_with_precision(
self.seed.fork(&precs.0.to_string()),
self.mean_exponent_n,
self.mean_exponent_d,
precs.0,
));
let x = xs.next().unwrap();
let ys = self
.floats
.entry(precs.1)
.or_insert(random_positive_floats_with_precision(
self.seed.fork(&precs.1.to_string()),
self.mean_exponent_n,
self.mean_exponent_d,
precs.1,
));
let y = ys.next().unwrap();
Some((x, y))
}
}
fn random_float_pairs_with_precision_inclusive_range(
seed: Seed,
config: &GenConfig,
prec_lo: u64,
prec_hi: u64,
) -> It<(Float, Float)> {
Box::new(RandomFloatPairsWithPrecisionUniformInclusiveRange {
seed: seed.fork("floats"),
mean_exponent_n: config.get_or("mean_exponent_n", 64),
mean_exponent_d: config.get_or("mean_exponent_d", 1),
precisions: Box::new(random_unsigned_inclusive_range(
seed.fork("precisions"),
prec_lo,
prec_hi,
)),
floats: HashMap::new(),
})
}
fn random_float_pairs_with_precision_inclusive_range_to_infinity(
seed: Seed,
config: &GenConfig,
prec_lo: u64,
) -> It<(Float, Float)> {
let mean_precision = Rational::from_unsigneds(
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 64),
) + Rational::from(prec_lo);
let (n, d) = mean_precision.into_numerator_and_denominator();
Box::new(RandomFloatPairsWithPrecisionUniformInclusiveRange {
seed: seed.fork("floats"),
mean_exponent_n: config.get_or("mean_exponent_n", 64),
mean_exponent_d: config.get_or("mean_exponent_d", 1),
precisions: Box::new(geometric_random_unsigned_inclusive_range(
seed.fork("precisions"),
prec_lo,
u64::MAX,
u64::exact_from(&n),
u64::exact_from(&d),
)),
floats: HashMap::new(),
})
}
fn random_float_pairs_with_precisions(
seed: Seed,
config: &GenConfig,
precisions: It<(u64, u64)>,
) -> It<(Float, Float)> {
Box::new(RandomFloatPairsWithPrecisions {
seed: seed.fork("floats"),
mean_exponent_n: config.get_or("mean_exponent_n", 64),
mean_exponent_d: config.get_or("mean_exponent_d", 1),
precisions,
floats: HashMap::new(),
})
}
pub fn random_float_pair_gen(config: &GenConfig) -> It<(Float, Float)> {
Box::new(random_pairs_from_single(random_floats(
EXAMPLE_SEED,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)))
}
pub fn random_float_pair_gen_var_1(config: &GenConfig) -> It<(Float, Float)> {
Box::new(random_pairs_from_single(random_finite_floats(
EXAMPLE_SEED,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)))
}
pub fn random_float_pair_gen_var_2(config: &GenConfig) -> It<(Float, Float)> {
random_float_pairs_with_precision_inclusive_range(EXAMPLE_SEED, config, 1, Limb::WIDTH - 1)
}
pub fn random_float_pair_gen_var_3(config: &GenConfig) -> It<(Float, Float)> {
Box::new(random_pairs_from_single(
random_positive_floats_with_precision(
EXAMPLE_SEED,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
Limb::WIDTH,
),
))
}
pub fn random_float_pair_gen_var_4(config: &GenConfig) -> It<(Float, Float)> {
random_float_pairs_with_precision_inclusive_range(
EXAMPLE_SEED,
config,
Limb::WIDTH + 1,
(Limb::WIDTH << 1) - 1,
)
}
pub fn random_float_pair_gen_var_5(config: &GenConfig) -> It<(Float, Float)> {
Box::new(random_pairs_from_single(
random_positive_floats_with_precision(
EXAMPLE_SEED,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
Limb::WIDTH << 1,
),
))
}
pub fn random_float_pair_gen_var_6(config: &GenConfig) -> It<(Float, Float)> {
random_float_pairs_with_precision_inclusive_range(
EXAMPLE_SEED,
config,
(Limb::WIDTH << 1) + 1,
Limb::WIDTH * 3 - 1,
)
}
pub fn random_float_pair_gen_var_7(config: &GenConfig) -> It<(Float, Float)> {
random_float_pairs_with_precision_inclusive_range_to_infinity(
EXAMPLE_SEED,
config,
Limb::WIDTH * 3,
)
}
pub fn random_float_pair_gen_var_8(config: &GenConfig) -> It<(Float, Float)> {
random_float_pairs_with_precisions(
EXAMPLE_SEED.fork("abc"),
config,
Box::new(random_pairs(
EXAMPLE_SEED.fork("precisions"),
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
)
},
&|seed| {
geometric_random_unsigned_inclusive_range(
seed,
1,
Limb::WIDTH,
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
)
},
)),
)
}
pub fn random_float_pair_gen_var_9(config: &GenConfig) -> It<(Float, Float)> {
random_float_pairs_with_precisions(
EXAMPLE_SEED.fork("abc"),
config,
Box::new(random_pairs(
EXAMPLE_SEED.fork("precisions"),
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
)
.map(|p: u64| p + Limb::WIDTH)
},
)),
)
}
pub fn random_float_pair_gen_var_10(config: &GenConfig) -> It<(Float, Float)> {
Box::new(random_pairs_from_single(random_mixed_extreme_floats(
EXAMPLE_SEED,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)))
}
pub fn random_float_triple_gen(config: &GenConfig) -> It<(Float, Float, Float)> {
Box::new(random_triples_from_single(random_floats(
EXAMPLE_SEED,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)))
}
pub fn random_float_float_integer_triple_gen(config: &GenConfig) -> It<(Float, Float, Integer)> {
Box::new(random_triples_xxy(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_integers(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
))
}
pub fn random_float_float_natural_triple_gen(config: &GenConfig) -> It<(Float, Float, Natural)> {
Box::new(random_triples_xxy(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_naturals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
))
}
pub fn random_float_float_primitive_float_triple_gen<T: PrimitiveFloat>(
config: &GenConfig,
) -> It<(Float, Float, T)> {
Box::new(random_triples_xxy(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
special_random_primitive_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
))
}
pub fn random_float_float_primitive_int_triple_gen<T: PrimitiveInt>(
config: &GenConfig,
) -> It<(Float, Float, T)> {
Box::new(random_triples_xxy(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| random_primitive_ints(seed),
))
}
pub fn random_float_float_unsigned_triple_gen_var_1<T: PrimitiveUnsigned>(
config: &GenConfig,
) -> It<(Float, Float, T)> {
Box::new(random_triples_xxy(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
))
}
pub fn random_float_float_unsigned_triple_gen_var_2<T: PrimitiveUnsigned>(
config: &GenConfig,
) -> It<(Float, Float, T)> {
Box::new(random_triples_xxy(
EXAMPLE_SEED,
&|seed| {
random_mixed_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
))
}
pub fn random_float_float_unsigned_rounding_mode_quadruple_gen_var_1(
config: &GenConfig,
) -> It<(Float, Float, u64, RoundingMode)> {
Box::new(
random_quadruples_xxyz(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, prec, rm)| add_prec_round_valid(x, y, *prec, *rm, false)),
)
}
pub fn random_float_float_unsigned_rounding_mode_quadruple_gen_var_15(
config: &GenConfig,
) -> It<(Float, Float, u64, RoundingMode)> {
Box::new(
random_quadruples_xxyz(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, prec, rm)| average_prec_round_valid(x, y, *prec, *rm)),
)
}
pub fn random_float_float_unsigned_rounding_mode_quadruple_gen_var_16(
config: &GenConfig,
) -> It<(Float, Float, u64, RoundingMode)> {
Box::new(
random_quadruples_xxyz(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, prec, rm)| min_prec_round_valid(x, y, *prec, *rm)),
)
}
pub fn random_float_float_unsigned_rounding_mode_quadruple_gen_var_17(
config: &GenConfig,
) -> It<(Float, Float, u64, RoundingMode)> {
Box::new(
random_quadruples_xxyz(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, prec, rm)| max_prec_round_valid(x, y, *prec, *rm)),
)
}
pub fn random_float_float_unsigned_rounding_mode_quadruple_gen_var_2(
config: &GenConfig,
) -> It<(Float, Float, u64, RoundingMode)> {
Box::new(
random_quadruples_xxyz(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, prec, rm)| sub_prec_round_valid(x, y, *prec, *rm, false)),
)
}
pub fn random_float_float_unsigned_rounding_mode_quadruple_gen_var_3(
config: &GenConfig,
) -> It<(Float, Float, u64, RoundingMode)> {
Box::new(
random_quadruples_xxyz(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, prec, rm)| mul_prec_round_valid(x, y, *prec, *rm, false)),
)
}
pub fn random_float_float_unsigned_rounding_mode_quadruple_gen_var_4(
config: &GenConfig,
) -> It<(Float, Float, u64, RoundingMode)> {
Box::new(
random_quadruples_xxyz(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, prec, rm)| div_prec_round_valid(x, y, *prec, *rm, false)),
)
}
pub fn random_float_float_unsigned_rounding_mode_quadruple_gen_var_5(
config: &GenConfig,
) -> It<(Float, Float, u64, RoundingMode)> {
Box::new(
random_quadruples_xxyz(
EXAMPLE_SEED,
&|seed| {
random_mixed_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, prec, rm)| add_prec_round_valid(x, y, *prec, *rm, true)),
)
}
pub fn random_float_float_unsigned_rounding_mode_quadruple_gen_var_6(
config: &GenConfig,
) -> It<(Float, Float, u64, RoundingMode)> {
Box::new(
random_quadruples_xxyz(
EXAMPLE_SEED,
&|seed| {
random_mixed_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, prec, rm)| sub_prec_round_valid(x, y, *prec, *rm, true)),
)
}
pub fn random_float_float_unsigned_rounding_mode_quadruple_gen_var_7(
config: &GenConfig,
) -> It<(Float, Float, u64, RoundingMode)> {
Box::new(
random_quadruples_xxyz(
EXAMPLE_SEED,
&|seed| {
random_mixed_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, prec, rm)| mul_prec_round_valid(x, y, *prec, *rm, true)),
)
}
pub fn random_float_float_unsigned_rounding_mode_quadruple_gen_var_8(
config: &GenConfig,
) -> It<(Float, Float, u64, RoundingMode)> {
Box::new(
random_quadruples_xxyz(
EXAMPLE_SEED,
&|seed| {
random_mixed_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, prec, rm)| div_prec_round_valid(x, y, *prec, *rm, true)),
)
}
pub fn random_float_float_unsigned_rounding_mode_quadruple_gen_var_9(
config: &GenConfig,
) -> It<(Float, Float, u64, RoundingMode)> {
Box::new(
random_quadruples_xxyz(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, prec, rm)| agm_prec_round_valid(x, y, *prec, *rm)),
)
}
pub fn random_float_float_unsigned_rounding_mode_quadruple_gen_var_10(
config: &GenConfig,
) -> It<(Float, Float, u64, RoundingMode)> {
Box::new(
random_quadruples_xxyz(
EXAMPLE_SEED,
&|seed| {
random_mixed_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, prec, rm)| agm_prec_round_valid(x, y, *prec, *rm)),
)
}
pub fn random_float_vec_gen(config: &GenConfig) -> It<Vec<Float>> {
Box::new(random_vecs(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
config.get_or("mean_len_n", 4),
config.get_or("mean_len_d", 1),
))
}
pub fn random_float_vec_gen_var_1(config: &GenConfig) -> It<Vec<Float>> {
Box::new(random_vecs(
EXAMPLE_SEED,
&|seed| {
random_mixed_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
config.get_or("mean_len_n", 4),
config.get_or("mean_len_d", 1),
))
}
pub fn random_primitive_float_vec_gen_var_1<T: PrimitiveFloat>(config: &GenConfig) -> It<Vec<T>> {
Box::new(random_vecs(
EXAMPLE_SEED,
&|seed| {
special_random_primitive_floats(
seed,
config.get_or("exponent_mean_n", 8),
config.get_or("exponent_mean_d", 1),
config.get_or("precision_mean_n", 8),
config.get_or("precision_mean_d", 1),
config.get_or("special_p_mean_n", 1),
config.get_or("special_p_mean_d", 64),
)
},
config.get_or("mean_len_n", 4),
config.get_or("mean_len_d", 1),
))
}
pub fn random_primitive_float_vec_pair_gen_var_1<T: PrimitiveFloat>(
config: &GenConfig,
) -> It<(Vec<T>, Vec<T>)> {
Box::new(
random_vecs(
EXAMPLE_SEED,
&|seed| {
random_pairs_from_single(special_random_primitive_floats::<T>(
seed,
config.get_or("exponent_mean_n", 8),
config.get_or("exponent_mean_d", 1),
config.get_or("precision_mean_n", 8),
config.get_or("precision_mean_d", 1),
config.get_or("special_p_mean_n", 1),
config.get_or("special_p_mean_d", 64),
))
},
config.get_or("mean_len_n", 4),
config.get_or("mean_len_d", 1),
)
.map(|ps| ps.into_iter().unzip()),
)
}
fn random_float_vec_pairs(seed: Seed, config: &GenConfig) -> It<(Vec<Float>, Vec<Float>)> {
Box::new(
random_vecs(
seed,
&|seed_2| {
random_pairs_from_single(random_floats(
seed_2,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
))
},
config.get_or("mean_len_n", 4),
config.get_or("mean_len_d", 1),
)
.map(|ps| ps.into_iter().unzip()),
)
}
fn random_mixed_extreme_float_vec_pairs(
seed: Seed,
config: &GenConfig,
) -> It<(Vec<Float>, Vec<Float>)> {
Box::new(
random_vecs(
seed,
&|seed_2| {
random_pairs_from_single(random_mixed_extreme_floats(
seed_2,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
))
},
config.get_or("mean_len_n", 4),
config.get_or("mean_len_d", 1),
)
.map(|ps| ps.into_iter().unzip()),
)
}
pub fn random_float_vec_pair_gen_var_1(config: &GenConfig) -> It<(Vec<Float>, Vec<Float>)> {
random_float_vec_pairs(EXAMPLE_SEED, config)
}
pub fn random_float_vec_pair_gen_var_2(config: &GenConfig) -> It<(Vec<Float>, Vec<Float>)> {
random_mixed_extreme_float_vec_pairs(EXAMPLE_SEED, config)
}
pub fn random_float_vec_pair_unsigned_triple_gen_var_1(
config: &GenConfig,
) -> It<(Vec<Float>, Vec<Float>, u64)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| random_float_vec_pairs(seed, config),
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
)
.map(|((xs, ys), prec)| (xs, ys, prec)),
)
}
pub fn random_float_vec_pair_unsigned_rounding_mode_quadruple_gen_var_1(
config: &GenConfig,
) -> It<(Vec<Float>, Vec<Float>, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| random_float_vec_pairs(seed, config),
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.map(|((xs, ys), prec, rm)| (xs, ys, prec, rm))
.filter(|(xs, ys, prec, rm)| dot_prec_round_valid(xs, ys, *prec, *rm)),
)
}
pub fn random_float_vec_pair_unsigned_rounding_mode_quadruple_gen_var_2(
config: &GenConfig,
) -> It<(Vec<Float>, Vec<Float>, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| random_mixed_extreme_float_vec_pairs(seed, config),
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.map(|((xs, ys), prec, rm)| (xs, ys, prec, rm))
.filter(|(xs, ys, prec, rm)| dot_prec_round_valid(xs, ys, *prec, *rm)),
)
}
pub fn random_float_vec_pair_rounding_mode_triple_gen_var_1(
config: &GenConfig,
) -> It<(Vec<Float>, Vec<Float>, RoundingMode)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| random_float_vec_pairs(seed, config),
&random_rounding_modes,
)
.map(|((xs, ys), rm)| (xs, ys, rm))
.filter(|(xs, ys, rm)| dot_round_valid(xs, ys, *rm)),
)
}
pub fn random_float_vec_pair_rounding_mode_triple_gen_var_2(
config: &GenConfig,
) -> It<(Vec<Float>, Vec<Float>, RoundingMode)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| random_mixed_extreme_float_vec_pairs(seed, config),
&random_rounding_modes,
)
.map(|((xs, ys), rm)| (xs, ys, rm))
.filter(|(xs, ys, rm)| dot_round_valid(xs, ys, *rm)),
)
}
fn random_float_vecs(seed: Seed, config: &GenConfig) -> It<Vec<Float>> {
Box::new(random_vecs(
seed,
&|seed_2| {
random_floats(
seed_2,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
config.get_or("mean_len_n", 4),
config.get_or("mean_len_d", 1),
))
}
fn random_mixed_extreme_float_vecs(seed: Seed, config: &GenConfig) -> It<Vec<Float>> {
Box::new(random_vecs(
seed,
&|seed_2| {
random_mixed_extreme_floats(
seed_2,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
config.get_or("mean_len_n", 4),
config.get_or("mean_len_d", 1),
))
}
pub fn random_float_vec_unsigned_pair_gen_var_1(config: &GenConfig) -> It<(Vec<Float>, u64)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| random_float_vecs(seed, config),
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
))
}
pub fn random_float_vec_unsigned_rounding_mode_triple_gen_var_1(
config: &GenConfig,
) -> It<(Vec<Float>, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| random_float_vecs(seed, config),
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(xs, prec, rm)| sum_prec_round_valid(xs, *prec, *rm)),
)
}
pub fn random_float_vec_unsigned_rounding_mode_triple_gen_var_2(
config: &GenConfig,
) -> It<(Vec<Float>, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| random_mixed_extreme_float_vecs(seed, config),
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(xs, prec, rm)| sum_prec_round_valid(xs, *prec, *rm)),
)
}
pub fn random_float_vec_rounding_mode_pair_gen_var_1(
config: &GenConfig,
) -> It<(Vec<Float>, RoundingMode)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| random_float_vecs(seed, config),
&random_rounding_modes,
)
.filter(|(xs, rm)| sum_round_valid(xs, *rm)),
)
}
pub fn random_float_vec_rounding_mode_pair_gen_var_2(
config: &GenConfig,
) -> It<(Vec<Float>, RoundingMode)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| random_mixed_extreme_float_vecs(seed, config),
&random_rounding_modes,
)
.filter(|(xs, rm)| sum_round_valid(xs, *rm)),
)
}
pub fn random_float_vec_unsigned_rounding_mode_triple_gen_var_3(
config: &GenConfig,
) -> It<(Vec<Float>, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| random_float_vecs(seed, config),
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(xs, prec, rm)| product_prec_round_valid(xs, *prec, *rm)),
)
}
pub fn random_float_vec_unsigned_rounding_mode_triple_gen_var_4(
config: &GenConfig,
) -> It<(Vec<Float>, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| random_mixed_extreme_float_vecs(seed, config),
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(xs, prec, rm)| product_prec_round_valid(xs, *prec, *rm)),
)
}
pub fn random_float_vec_rounding_mode_pair_gen_var_3(
config: &GenConfig,
) -> It<(Vec<Float>, RoundingMode)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| random_float_vecs(seed, config),
&random_rounding_modes,
)
.filter(|(xs, rm)| product_round_valid(xs, *rm)),
)
}
pub fn random_float_vec_rounding_mode_pair_gen_var_4(
config: &GenConfig,
) -> It<(Vec<Float>, RoundingMode)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| random_mixed_extreme_float_vecs(seed, config),
&random_rounding_modes,
)
.filter(|(xs, rm)| product_round_valid(xs, *rm)),
)
}
pub fn random_float_float_unsigned_rounding_mode_quadruple_gen_var_24(
config: &GenConfig,
) -> It<(Float, Float, u64, RoundingMode)> {
Box::new(
random_quadruples_xxyz(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, prec, rm)| hypot_prec_round_valid(x, y, *prec, *rm)),
)
}
pub fn random_float_float_unsigned_rounding_mode_quadruple_gen_var_25(
config: &GenConfig,
) -> It<(Float, Float, u64, RoundingMode)> {
Box::new(
random_quadruples_xxyz(
EXAMPLE_SEED,
&|seed| {
random_mixed_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, prec, rm)| hypot_prec_round_valid(x, y, *prec, *rm)),
)
}
pub fn random_float_float_unsigned_rounding_mode_quadruple_gen_var_11(
config: &GenConfig,
) -> It<(Float, Float, u64, RoundingMode)> {
Box::new(
random_quadruples_xxyz(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, prec, rm)| log_base_float_base_prec_round_valid(x, y, *prec, *rm)),
)
}
pub fn random_float_float_unsigned_rounding_mode_quadruple_gen_var_12(
config: &GenConfig,
) -> It<(Float, Float, u64, RoundingMode)> {
Box::new(
random_quadruples_xxyz(
EXAMPLE_SEED,
&|seed| {
random_mixed_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, prec, rm)| log_base_float_base_prec_round_valid(x, y, *prec, *rm)),
)
}
pub fn random_float_float_unsigned_rounding_mode_quadruple_gen_var_13(
config: &GenConfig,
) -> It<(Float, Float, u64, RoundingMode)> {
Box::new(
random_quadruples_xxyz(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, prec, rm)| log_base_float_base_1_plus_x_prec_round_valid(x, y, *prec, *rm)),
)
}
pub fn random_float_float_unsigned_rounding_mode_quadruple_gen_var_14(
config: &GenConfig,
) -> It<(Float, Float, u64, RoundingMode)> {
Box::new(
random_quadruples_xxyz(
EXAMPLE_SEED,
&|seed| {
random_mixed_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, prec, rm)| log_base_float_base_1_plus_x_prec_round_valid(x, y, *prec, *rm)),
)
}
pub fn random_float_float_unsigned_rounding_mode_quadruple_gen_var_18(
config: &GenConfig,
) -> It<(Float, Float, u64, RoundingMode)> {
Box::new(
random_quadruples_xxyz(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, prec, rm)| rem_prec_round_valid(x, y, *prec, *rm, false)),
)
}
pub fn random_float_float_unsigned_rounding_mode_quadruple_gen_var_19(
config: &GenConfig,
) -> It<(Float, Float, u64, RoundingMode)> {
Box::new(
random_quadruples_xxyz(
EXAMPLE_SEED,
&|seed| {
random_mixed_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, prec, rm)| rem_prec_round_valid(x, y, *prec, *rm, false)),
)
}
pub fn random_float_float_unsigned_rounding_mode_quadruple_gen_var_20(
config: &GenConfig,
) -> It<(Float, Float, u64, RoundingMode)> {
Box::new(
random_quadruples_xxyz(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, prec, rm)| rem_prec_round_valid(x, y, *prec, *rm, true)),
)
}
pub fn random_float_float_unsigned_rounding_mode_quadruple_gen_var_21(
config: &GenConfig,
) -> It<(Float, Float, u64, RoundingMode)> {
Box::new(
random_quadruples_xxyz(
EXAMPLE_SEED,
&|seed| {
random_mixed_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, prec, rm)| rem_prec_round_valid(x, y, *prec, *rm, true)),
)
}
pub fn random_float_float_unsigned_rounding_mode_quadruple_gen_var_22(
config: &GenConfig,
) -> It<(Float, Float, u64, RoundingMode)> {
Box::new(
random_quadruples_xxyz(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, prec, rm)| positive_difference_prec_round_valid(x, y, *prec, *rm)),
)
}
pub fn random_float_float_unsigned_rounding_mode_quadruple_gen_var_23(
config: &GenConfig,
) -> It<(Float, Float, u64, RoundingMode)> {
Box::new(
random_quadruples_xxyz(
EXAMPLE_SEED,
&|seed| {
random_mixed_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, prec, rm)| positive_difference_prec_round_valid(x, y, *prec, *rm)),
)
}
pub fn random_float_quadruple_gen(config: &GenConfig) -> It<(Float, Float, Float, Float)> {
Box::new(random_quadruples_from_single(random_floats(
EXAMPLE_SEED,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)))
}
pub fn random_float_float_float_float_unsigned_quintuple_gen_var_1(
config: &GenConfig,
) -> It<(Float, Float, Float, Float, u64)> {
Box::new(random_quintuples_xxxxy(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
))
}
pub fn random_float_float_float_float_unsigned_rounding_mode_sextuple_gen_var_1(
config: &GenConfig,
) -> It<(Float, Float, Float, Float, u64, RoundingMode)> {
Box::new(
random_sextuples_xxxxyz(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(a, b, c, d, prec, rm)| {
mul_add_mul_prec_round_valid(a, b, c, d, *prec, *rm, false)
}),
)
}
pub fn random_float_float_float_float_unsigned_rounding_mode_sextuple_gen_var_2(
config: &GenConfig,
) -> It<(Float, Float, Float, Float, u64, RoundingMode)> {
Box::new(
random_sextuples_xxxxyz(
EXAMPLE_SEED,
&|seed| {
random_mixed_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(a, b, c, d, prec, rm)| {
mul_add_mul_prec_round_valid(a, b, c, d, *prec, *rm, false)
}),
)
}
pub fn random_float_float_float_float_unsigned_rounding_mode_sextuple_gen_var_3(
config: &GenConfig,
) -> It<(Float, Float, Float, Float, u64, RoundingMode)> {
Box::new(
random_sextuples_xxxxyz(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(a, b, c, d, prec, rm)| {
mul_add_mul_prec_round_valid(a, b, c, d, *prec, *rm, true)
}),
)
}
pub fn random_float_float_float_float_unsigned_rounding_mode_sextuple_gen_var_4(
config: &GenConfig,
) -> It<(Float, Float, Float, Float, u64, RoundingMode)> {
Box::new(
random_sextuples_xxxxyz(
EXAMPLE_SEED,
&|seed| {
random_mixed_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(a, b, c, d, prec, rm)| {
mul_add_mul_prec_round_valid(a, b, c, d, *prec, *rm, true)
}),
)
}
pub fn random_float_float_float_float_rounding_mode_quintuple_gen_var_1(
config: &GenConfig,
) -> It<(Float, Float, Float, Float, RoundingMode)> {
Box::new(
random_quintuples_xxxxy(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(a, b, c, d, rm)| mul_add_mul_round_valid(a, b, c, d, *rm, false)),
)
}
pub fn random_float_float_float_float_rounding_mode_quintuple_gen_var_2(
config: &GenConfig,
) -> It<(Float, Float, Float, Float, RoundingMode)> {
Box::new(
random_quintuples_xxxxy(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(a, b, c, d, rm)| mul_add_mul_round_valid(a, b, c, d, *rm, true)),
)
}
pub fn random_float_float_float_unsigned_quadruple_gen_var_1(
config: &GenConfig,
) -> It<(Float, Float, Float, u64)> {
Box::new(random_quadruples_xxxy(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
))
}
pub fn random_float_float_float_rounding_mode_quadruple_gen_var_1(
config: &GenConfig,
) -> It<(Float, Float, Float, RoundingMode)> {
Box::new(
random_quadruples_xxxy(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(x, y, z, rm)| add_mul_round_valid(x, y, z, *rm, false)),
)
}
pub fn random_float_float_float_rounding_mode_quadruple_gen_var_2(
config: &GenConfig,
) -> It<(Float, Float, Float, RoundingMode)> {
Box::new(
random_quadruples_xxxy(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(x, y, z, rm)| add_mul_round_valid(x, y, z, *rm, true)),
)
}
pub fn random_float_float_float_unsigned_rounding_mode_quintuple_gen_var_1(
config: &GenConfig,
) -> It<(Float, Float, Float, u64, RoundingMode)> {
Box::new(
random_quintuples_xxxyz(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, z, prec, rm)| add_mul_prec_round_valid(x, y, z, *prec, *rm, false)),
)
}
pub fn random_float_float_float_unsigned_rounding_mode_quintuple_gen_var_2(
config: &GenConfig,
) -> It<(Float, Float, Float, u64, RoundingMode)> {
Box::new(
random_quintuples_xxxyz(
EXAMPLE_SEED,
&|seed| {
random_mixed_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, z, prec, rm)| add_mul_prec_round_valid(x, y, z, *prec, *rm, false)),
)
}
pub fn random_float_float_float_unsigned_rounding_mode_quintuple_gen_var_3(
config: &GenConfig,
) -> It<(Float, Float, Float, u64, RoundingMode)> {
Box::new(
random_quintuples_xxxyz(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, z, prec, rm)| add_mul_prec_round_valid(x, y, z, *prec, *rm, true)),
)
}
pub fn random_float_float_float_unsigned_rounding_mode_quintuple_gen_var_4(
config: &GenConfig,
) -> It<(Float, Float, Float, u64, RoundingMode)> {
Box::new(
random_quintuples_xxxyz(
EXAMPLE_SEED,
&|seed| {
random_mixed_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, z, prec, rm)| add_mul_prec_round_valid(x, y, z, *prec, *rm, true)),
)
}
pub fn random_float_float_float_rational_quadruple_gen(
config: &GenConfig,
) -> It<(Float, Float, Float, Rational)> {
Box::new(random_quadruples_xxxy(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| random_rationals(seed, 32, 1),
))
}
pub fn random_float_float_float_rational_unsigned_quintuple_gen_var_1(
config: &GenConfig,
) -> It<(Float, Float, Float, Rational, u64)> {
Box::new(random_quintuples_xxxyz(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| random_rationals(seed, 32, 1),
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
))
}
pub fn random_float_float_float_rational_unsigned_rounding_mode_sextuple_gen_var_1(
config: &GenConfig,
) -> It<(Float, Float, Float, Rational, u64, RoundingMode)> {
Box::new(
random_sextuples_xxxyzw(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| random_rationals(seed, 32, 1),
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, z, w, prec, rm)| {
mul_add_mul_rational_prec_round_valid(x, y, z, w, *prec, *rm, false)
}),
)
}
pub fn random_float_float_float_rational_unsigned_rounding_mode_sextuple_gen_var_2(
config: &GenConfig,
) -> It<(Float, Float, Float, Rational, u64, RoundingMode)> {
Box::new(
random_sextuples_xxxyzw(
EXAMPLE_SEED,
&|seed| {
random_mixed_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| random_rationals(seed, 32, 1),
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, z, w, prec, rm)| {
mul_add_mul_rational_prec_round_valid(x, y, z, w, *prec, *rm, false)
}),
)
}
pub fn random_float_float_float_rational_unsigned_rounding_mode_sextuple_gen_var_3(
config: &GenConfig,
) -> It<(Float, Float, Float, Rational, u64, RoundingMode)> {
Box::new(
random_sextuples_xxxyzw(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| random_rationals(seed, 32, 1),
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, z, w, prec, rm)| {
mul_add_mul_rational_prec_round_valid(x, y, z, w, *prec, *rm, true)
}),
)
}
pub fn random_float_float_float_rational_unsigned_rounding_mode_sextuple_gen_var_4(
config: &GenConfig,
) -> It<(Float, Float, Float, Rational, u64, RoundingMode)> {
Box::new(
random_sextuples_xxxyzw(
EXAMPLE_SEED,
&|seed| {
random_mixed_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| random_rationals(seed, 32, 1),
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, z, w, prec, rm)| {
mul_add_mul_rational_prec_round_valid(x, y, z, w, *prec, *rm, true)
}),
)
}
pub fn random_float_float_float_rational_rounding_mode_quintuple_gen_var_1(
config: &GenConfig,
) -> It<(Float, Float, Float, Rational, RoundingMode)> {
Box::new(
random_quintuples_xxxyz(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| random_rationals(seed, 32, 1),
&random_rounding_modes,
)
.filter(|(x, y, z, w, rm)| mul_add_mul_rational_round_valid(x, y, z, w, *rm, false)),
)
}
pub fn random_float_float_float_rational_rounding_mode_quintuple_gen_var_2(
config: &GenConfig,
) -> It<(Float, Float, Float, Rational, RoundingMode)> {
Box::new(
random_quintuples_xxxyz(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| random_rationals(seed, 32, 1),
&random_rounding_modes,
)
.filter(|(x, y, z, w, rm)| mul_add_mul_rational_round_valid(x, y, z, w, *rm, true)),
)
}
pub fn random_float_float_rational_triple_gen(config: &GenConfig) -> It<(Float, Float, Rational)> {
Box::new(random_triples_xxy(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
))
}
pub fn random_float_float_rounding_mode_triple_gen_var_1(
config: &GenConfig,
) -> It<(Float, Float, RoundingMode)> {
Box::new(
random_triples_xxy(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(x, y, rm)| add_round_valid(x, y, *rm, false)),
)
}
pub fn random_float_float_rounding_mode_triple_gen_var_2(
config: &GenConfig,
) -> It<(Float, Float, RoundingMode)> {
Box::new(
random_triples_xxy(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(x, y, rm)| sub_round_valid(x, y, *rm, false)),
)
}
pub fn random_float_float_rounding_mode_triple_gen_var_3(
config: &GenConfig,
) -> It<(Float, Float, RoundingMode)> {
Box::new(random_triples_xxy(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| random_rounding_modes(seed).filter(|&rm| rm != Exact),
))
}
pub fn random_float_float_rounding_mode_triple_gen_var_4(
config: &GenConfig,
) -> It<(Float, Float, RoundingMode)> {
reshape_2_1_to_3(Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_float_pairs_with_precision_inclusive_range(seed, config, 1, Limb::WIDTH - 1)
},
&random_rounding_modes,
)
.filter(|((x, y), rm)| add_round_valid(x, y, *rm, false)),
))
}
pub fn random_float_float_rounding_mode_triple_gen_var_5(
config: &GenConfig,
) -> It<(Float, Float, RoundingMode)> {
reshape_2_1_to_3(Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_pairs_from_single(random_positive_floats_with_precision(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
Limb::WIDTH,
))
},
&random_rounding_modes,
)
.filter(|((x, y), rm)| add_round_valid(x, y, *rm, false)),
))
}
pub fn random_float_float_rounding_mode_triple_gen_var_6(
config: &GenConfig,
) -> It<(Float, Float, RoundingMode)> {
reshape_2_1_to_3(Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_float_pairs_with_precision_inclusive_range(
seed,
config,
Limb::WIDTH + 1,
(Limb::WIDTH << 1) - 1,
)
},
&random_rounding_modes,
)
.filter(|((x, y), rm)| add_round_valid(x, y, *rm, false)),
))
}
pub fn random_float_float_rounding_mode_triple_gen_var_7(
config: &GenConfig,
) -> It<(Float, Float, RoundingMode)> {
reshape_2_1_to_3(Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_pairs_from_single(random_positive_floats_with_precision(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
Limb::WIDTH << 1,
))
},
&random_rounding_modes,
)
.filter(|((x, y), rm)| add_round_valid(x, y, *rm, false)),
))
}
pub fn random_float_float_rounding_mode_triple_gen_var_8(
config: &GenConfig,
) -> It<(Float, Float, RoundingMode)> {
reshape_2_1_to_3(Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_float_pairs_with_precision_inclusive_range(
seed,
config,
(Limb::WIDTH << 1) + 1,
Limb::WIDTH * 3 - 1,
)
},
&random_rounding_modes,
)
.filter(|((x, y), rm)| add_round_valid(x, y, *rm, false)),
))
}
pub fn random_float_float_rounding_mode_triple_gen_var_9(
config: &GenConfig,
) -> It<(Float, Float, RoundingMode)> {
reshape_2_1_to_3(Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_float_pairs_with_precision_inclusive_range_to_infinity(
seed,
config,
Limb::WIDTH * 3,
)
},
&random_rounding_modes,
)
.filter(|((x, y), rm)| add_round_valid(x, y, *rm, false)),
))
}
pub fn random_float_float_rounding_mode_triple_gen_var_10(
config: &GenConfig,
) -> It<(Float, Float, RoundingMode)> {
reshape_2_1_to_3(Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_float_pairs_with_precision_inclusive_range(seed, config, 1, Limb::WIDTH - 1)
},
&random_rounding_modes,
)
.filter(|((x, y), rm)| sub_round_valid(x, y, *rm, false)),
))
}
pub fn random_float_float_rounding_mode_triple_gen_var_11(
config: &GenConfig,
) -> It<(Float, Float, RoundingMode)> {
reshape_2_1_to_3(Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_pairs_from_single(random_positive_floats_with_precision(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
Limb::WIDTH,
))
},
&random_rounding_modes,
)
.filter(|((x, y), rm)| sub_round_valid(x, y, *rm, false)),
))
}
pub fn random_float_float_rounding_mode_triple_gen_var_12(
config: &GenConfig,
) -> It<(Float, Float, RoundingMode)> {
reshape_2_1_to_3(Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_float_pairs_with_precision_inclusive_range(
seed,
config,
Limb::WIDTH + 1,
(Limb::WIDTH << 1) - 1,
)
},
&random_rounding_modes,
)
.filter(|((x, y), rm)| sub_round_valid(x, y, *rm, false)),
))
}
pub fn random_float_float_rounding_mode_triple_gen_var_13(
config: &GenConfig,
) -> It<(Float, Float, RoundingMode)> {
reshape_2_1_to_3(Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_pairs_from_single(random_positive_floats_with_precision(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
Limb::WIDTH << 1,
))
},
&random_rounding_modes,
)
.filter(|((x, y), rm)| sub_round_valid(x, y, *rm, false)),
))
}
pub fn random_float_float_rounding_mode_triple_gen_var_14(
config: &GenConfig,
) -> It<(Float, Float, RoundingMode)> {
reshape_2_1_to_3(Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_float_pairs_with_precision_inclusive_range(
seed,
config,
(Limb::WIDTH << 1) + 1,
Limb::WIDTH * 3 - 1,
)
},
&random_rounding_modes,
)
.filter(|((x, y), rm)| sub_round_valid(x, y, *rm, false)),
))
}
pub fn random_float_float_rounding_mode_triple_gen_var_15(
config: &GenConfig,
) -> It<(Float, Float, RoundingMode)> {
reshape_2_1_to_3(Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_float_pairs_with_precision_inclusive_range_to_infinity(
seed,
config,
Limb::WIDTH * 3,
)
},
&random_rounding_modes,
)
.filter(|((x, y), rm)| sub_round_valid(x, y, *rm, false)),
))
}
pub fn random_float_float_rounding_mode_triple_gen_var_16(
config: &GenConfig,
) -> It<(Float, Float, RoundingMode)> {
Box::new(
random_triples_xxy(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(x, y, rm)| mul_round_valid(x, y, *rm, false)),
)
}
pub fn random_float_float_rounding_mode_triple_gen_var_17(
config: &GenConfig,
) -> It<(Float, Float, RoundingMode)> {
reshape_2_1_to_3(Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_float_pairs_with_precision_inclusive_range(seed, config, 1, Limb::WIDTH - 1)
},
&random_rounding_modes,
)
.filter(|((x, y), rm)| mul_round_valid(x, y, *rm, false)),
))
}
pub fn random_float_float_rounding_mode_triple_gen_var_18(
config: &GenConfig,
) -> It<(Float, Float, RoundingMode)> {
reshape_2_1_to_3(Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_pairs_from_single(random_positive_floats_with_precision(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
Limb::WIDTH,
))
},
&random_rounding_modes,
)
.filter(|((x, y), rm)| mul_round_valid(x, y, *rm, false)),
))
}
pub fn random_float_float_rounding_mode_triple_gen_var_19(
config: &GenConfig,
) -> It<(Float, Float, RoundingMode)> {
reshape_2_1_to_3(Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_float_pairs_with_precision_inclusive_range(
seed,
config,
Limb::WIDTH + 1,
(Limb::WIDTH << 1) - 1,
)
},
&random_rounding_modes,
)
.filter(|((x, y), rm)| mul_round_valid(x, y, *rm, false)),
))
}
pub fn random_float_float_rounding_mode_triple_gen_var_20(
config: &GenConfig,
) -> It<(Float, Float, RoundingMode)> {
reshape_2_1_to_3(Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_pairs_from_single(random_positive_floats_with_precision(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
Limb::WIDTH << 1,
))
},
&random_rounding_modes,
)
.filter(|((x, y), rm)| mul_round_valid(x, y, *rm, false)),
))
}
pub fn random_float_float_rounding_mode_triple_gen_var_21(
config: &GenConfig,
) -> It<(Float, Float, RoundingMode)> {
reshape_2_1_to_3(Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_float_pairs_with_precision_inclusive_range(
seed,
config,
(Limb::WIDTH << 1) + 1,
Limb::WIDTH * 3 - 1,
)
},
&random_rounding_modes,
)
.filter(|((x, y), rm)| mul_round_valid(x, y, *rm, false)),
))
}
pub fn random_float_float_rounding_mode_triple_gen_var_22(
config: &GenConfig,
) -> It<(Float, Float, RoundingMode)> {
reshape_2_1_to_3(Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_float_pairs_with_precision_inclusive_range_to_infinity(
seed,
config,
Limb::WIDTH * 3,
)
},
&random_rounding_modes,
)
.filter(|((x, y), rm)| mul_round_valid(x, y, *rm, false)),
))
}
pub fn random_float_float_rounding_mode_triple_gen_var_23(
config: &GenConfig,
) -> It<(Float, Float, RoundingMode)> {
Box::new(
random_triples_xxy(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(x, y, rm)| div_round_valid(x, y, *rm, false)),
)
}
pub fn random_float_float_rounding_mode_triple_gen_var_24(
config: &GenConfig,
) -> It<(Float, Float, RoundingMode)> {
reshape_2_1_to_3(Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_float_pairs_with_precision_inclusive_range(seed, config, 1, Limb::WIDTH - 1)
},
&random_rounding_modes,
)
.filter(|((x, y), rm)| div_round_valid(x, y, *rm, false)),
))
}
pub fn random_float_float_rounding_mode_triple_gen_var_25(
config: &GenConfig,
) -> It<(Float, Float, RoundingMode)> {
reshape_2_1_to_3(Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_pairs_from_single(random_positive_floats_with_precision(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
Limb::WIDTH,
))
},
&random_rounding_modes,
)
.filter(|((x, y), rm)| div_round_valid(x, y, *rm, false)),
))
}
pub fn random_float_float_rounding_mode_triple_gen_var_26(
config: &GenConfig,
) -> It<(Float, Float, RoundingMode)> {
reshape_2_1_to_3(Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_float_pairs_with_precision_inclusive_range(
seed,
config,
Limb::WIDTH + 1,
(Limb::WIDTH << 1) - 1,
)
},
&random_rounding_modes,
)
.filter(|((x, y), rm)| div_round_valid(x, y, *rm, false)),
))
}
pub fn random_float_float_rounding_mode_triple_gen_var_27(
config: &GenConfig,
) -> It<(Float, Float, RoundingMode)> {
reshape_2_1_to_3(Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_float_pairs_with_precisions(
seed.fork("abc"),
config,
Box::new(random_pairs(
seed.fork("precisions"),
&|seed_2| {
geometric_random_positive_unsigneds(
seed_2,
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
)
},
&|seed_2| {
geometric_random_unsigned_inclusive_range(
seed_2,
1,
Limb::WIDTH,
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
)
},
)),
)
},
&random_rounding_modes,
)
.filter(|((x, y), rm)| div_round_valid(x, y, *rm, false)),
))
}
pub fn random_float_float_rounding_mode_triple_gen_var_28(
config: &GenConfig,
) -> It<(Float, Float, RoundingMode)> {
reshape_2_1_to_3(Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_float_pairs_with_precisions(
seed.fork("abc"),
config,
Box::new(random_pairs(
seed.fork("precisions"),
&|seed_2| {
geometric_random_positive_unsigneds(
seed_2,
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
)
},
&|seed_2| {
geometric_random_positive_unsigneds(
seed_2,
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
)
.map(|p: u64| p + Limb::WIDTH)
},
)),
)
},
&random_rounding_modes,
)
.filter(|((x, y), rm)| div_round_valid(x, y, *rm, false)),
))
}
pub fn random_float_float_rounding_mode_triple_gen_var_29(
config: &GenConfig,
) -> It<(Float, Float, RoundingMode)> {
Box::new(
random_triples_xxy(
EXAMPLE_SEED,
&|seed| {
random_mixed_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(x, y, rm)| add_round_valid(x, y, *rm, true)),
)
}
pub fn random_float_float_rounding_mode_triple_gen_var_30(
config: &GenConfig,
) -> It<(Float, Float, RoundingMode)> {
Box::new(
random_triples_xxy(
EXAMPLE_SEED,
&|seed| {
random_mixed_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(x, y, rm)| sub_round_valid(x, y, *rm, true)),
)
}
pub fn random_float_float_rounding_mode_triple_gen_var_31(
config: &GenConfig,
) -> It<(Float, Float, RoundingMode)> {
Box::new(
random_triples_xxy(
EXAMPLE_SEED,
&|seed| {
random_mixed_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(x, y, rm)| mul_round_valid(x, y, *rm, true)),
)
}
pub fn random_float_float_rounding_mode_triple_gen_var_32(
config: &GenConfig,
) -> It<(Float, Float, RoundingMode)> {
Box::new(
random_triples_xxy(
EXAMPLE_SEED,
&|seed| {
random_mixed_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(x, y, rm)| div_round_valid(x, y, *rm, true)),
)
}
pub fn random_float_float_rounding_mode_triple_gen_var_33(
config: &GenConfig,
) -> It<(Float, Float, RoundingMode)> {
Box::new(
random_triples_xxy(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(x, y, rm)| agm_round_valid(x, y, *rm)),
)
}
pub fn random_float_float_rounding_mode_triple_gen_var_34(
config: &GenConfig,
) -> It<(Float, Float, RoundingMode)> {
Box::new(
random_triples_xxy(
EXAMPLE_SEED,
&|seed| {
random_mixed_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(x, y, rm)| agm_round_valid(x, y, *rm)),
)
}
pub fn random_float_float_rounding_mode_triple_gen_var_43(
config: &GenConfig,
) -> It<(Float, Float, RoundingMode)> {
Box::new(
random_triples_xxy(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(x, y, rm)| hypot_round_valid(x, y, *rm)),
)
}
pub fn random_float_float_rounding_mode_triple_gen_var_44(
config: &GenConfig,
) -> It<(Float, Float, RoundingMode)> {
Box::new(
random_triples_xxy(
EXAMPLE_SEED,
&|seed| {
random_mixed_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(x, y, rm)| hypot_round_valid(x, y, *rm)),
)
}
pub fn random_float_float_rounding_mode_triple_gen_var_35(
config: &GenConfig,
) -> It<(Float, Float, RoundingMode)> {
Box::new(
random_triples_xxy(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(x, y, rm)| log_base_float_base_round_valid(x, y, *rm)),
)
}
pub fn random_float_float_rounding_mode_triple_gen_var_36(
config: &GenConfig,
) -> It<(Float, Float, RoundingMode)> {
Box::new(
random_triples_xxy(
EXAMPLE_SEED,
&|seed| {
random_mixed_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(x, y, rm)| log_base_float_base_round_valid(x, y, *rm)),
)
}
pub fn random_float_float_rounding_mode_triple_gen_var_37(
config: &GenConfig,
) -> It<(Float, Float, RoundingMode)> {
Box::new(
random_triples_xxy(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(x, y, rm)| log_base_float_base_1_plus_x_round_valid(x, y, *rm)),
)
}
pub fn random_float_float_rounding_mode_triple_gen_var_38(
config: &GenConfig,
) -> It<(Float, Float, RoundingMode)> {
Box::new(
random_triples_xxy(
EXAMPLE_SEED,
&|seed| {
random_mixed_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(x, y, rm)| log_base_float_base_1_plus_x_round_valid(x, y, *rm)),
)
}
pub fn random_float_float_rounding_mode_triple_gen_var_39(
config: &GenConfig,
) -> It<(Float, Float, RoundingMode)> {
Box::new(random_triples_xxy(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
))
}
pub fn random_float_float_rounding_mode_triple_gen_var_40(
config: &GenConfig,
) -> It<(Float, Float, RoundingMode)> {
Box::new(
random_triples_xxy(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(x, y, rm)| rem_round_valid(x, y, *rm, false)),
)
}
pub fn random_float_float_rounding_mode_triple_gen_var_41(
config: &GenConfig,
) -> It<(Float, Float, RoundingMode)> {
Box::new(
random_triples_xxy(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(x, y, rm)| rem_round_valid(x, y, *rm, true)),
)
}
pub fn random_float_float_rounding_mode_triple_gen_var_42(
config: &GenConfig,
) -> It<(Float, Float, RoundingMode)> {
Box::new(
random_triples_xxy(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(x, y, rm)| positive_difference_round_valid(x, y, *rm)),
)
}
pub fn random_float_float_rational_unsigned_quadruple_gen_var_1(
config: &GenConfig,
) -> It<(Float, Float, Rational, u64)> {
Box::new(random_quadruples_xxyz(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| random_rationals(seed, 32, 1),
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
))
}
pub fn random_float_float_rational_unsigned_rounding_mode_quintuple_gen_var_1(
config: &GenConfig,
) -> It<(Float, Float, Rational, u64, RoundingMode)> {
Box::new(
random_quintuples_xxyzw(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| random_rationals(seed, 32, 1),
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, z, prec, rm)| {
add_mul_rational_prec_round_valid(x, y, z, *prec, *rm, false)
}),
)
}
pub fn random_float_float_rational_unsigned_rounding_mode_quintuple_gen_var_2(
config: &GenConfig,
) -> It<(Float, Float, Rational, u64, RoundingMode)> {
Box::new(
random_quintuples_xxyzw(
EXAMPLE_SEED,
&|seed| {
random_mixed_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| random_rationals(seed, 32, 1),
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, z, prec, rm)| {
add_mul_rational_prec_round_valid(x, y, z, *prec, *rm, false)
}),
)
}
pub fn random_float_float_rational_unsigned_rounding_mode_quintuple_gen_var_3(
config: &GenConfig,
) -> It<(Float, Float, Rational, u64, RoundingMode)> {
Box::new(
random_quintuples_xxyzw(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| random_rationals(seed, 32, 1),
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, z, prec, rm)| add_mul_rational_prec_round_valid(x, y, z, *prec, *rm, true)),
)
}
pub fn random_float_float_rational_unsigned_rounding_mode_quintuple_gen_var_4(
config: &GenConfig,
) -> It<(Float, Float, Rational, u64, RoundingMode)> {
Box::new(
random_quintuples_xxyzw(
EXAMPLE_SEED,
&|seed| {
random_mixed_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| random_rationals(seed, 32, 1),
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, z, prec, rm)| add_mul_rational_prec_round_valid(x, y, z, *prec, *rm, true)),
)
}
pub fn random_float_float_rational_rounding_mode_quadruple_gen_var_1(
config: &GenConfig,
) -> It<(Float, Float, Rational, RoundingMode)> {
Box::new(
random_quadruples_xxyz(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| random_rationals(seed, 32, 1),
&random_rounding_modes,
)
.filter(|(x, y, z, rm)| add_mul_rational_round_valid(x, y, z, *rm, false)),
)
}
pub fn random_float_float_rational_rounding_mode_quadruple_gen_var_2(
config: &GenConfig,
) -> It<(Float, Float, Rational, RoundingMode)> {
Box::new(
random_quadruples_xxyz(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| random_rationals(seed, 32, 1),
&random_rounding_modes,
)
.filter(|(x, y, z, rm)| add_mul_rational_round_valid(x, y, z, *rm, true)),
)
}
pub fn random_float_gaussian_integer_pair_gen(config: &GenConfig) -> It<(Float, GaussianInteger)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_gaussian_integers(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
))
}
pub fn random_float_gaussian_rational_pair_gen(
config: &GenConfig,
) -> It<(Float, GaussianRational)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_gaussian_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
))
}
pub fn random_float_integer_pair_gen(config: &GenConfig) -> It<(Float, Integer)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_integers(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
))
}
pub fn random_format_strings(seed: Seed, config: &GenConfig) -> It<String> {
let none_p_n = config.get_or("format_string_none_p_n", 1);
let none_p_d = config.get_or("format_string_none_p_d", 3);
let mean_width_n = config.get_or("mean_format_width_n", 8);
let mean_width_d = config.get_or("mean_format_width_d", 1);
let mean_prec_n = config.get_or("mean_format_prec_n", 8);
let mean_prec_d = config.get_or("mean_format_prec_d", 1);
Box::new(
random_triples(
seed,
&|seed| random_unsigned_inclusive_range(seed, 0, FLOAT_FORMAT_COMBO_COUNT - 1),
&move |seed| {
random_options(seed, none_p_n, none_p_d, &move |seed| {
geometric_random_unsigneds::<u64>(seed, mean_width_n, mean_width_d)
})
},
&move |seed| {
random_options(seed, none_p_n, none_p_d, &move |seed| {
geometric_random_unsigneds::<u64>(seed, mean_prec_n, mean_prec_d)
})
},
)
.map(|(combo, width, prec)| format_string_from_parts(combo, width, prec)),
)
}
pub fn random_float_string_pair_gen_var_1(config: &GenConfig) -> It<(Float, String)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| random_format_strings(seed, config),
))
}
pub fn random_float_string_pair_gen_var_2(config: &GenConfig) -> It<(Float, String)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_format_strings(seed, config).filter(|fmt| format_string_output_is_bounded(fmt))
},
))
}
pub fn random_float_integer_pair_gen_var_1(config: &GenConfig) -> It<(Float, Integer)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
random_finite_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_integers(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
))
}
pub fn random_float_integer_pair_gen_var_2(config: &GenConfig) -> It<(Float, Integer)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_integers(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
))
}
pub fn random_float_integer_unsigned_triple_gen_var_1<T: PrimitiveUnsigned>(
config: &GenConfig,
) -> It<(Float, Integer, T)> {
Box::new(random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_integers(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
))
}
pub fn random_float_integer_unsigned_rounding_mode_quadruple_gen_var_1(
config: &GenConfig,
) -> It<(Float, Integer, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_integers(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, z, prec, rm)| pow_integer_prec_round_valid(x, z, *prec, *rm)),
)
}
pub fn random_float_integer_unsigned_rounding_mode_quadruple_gen_var_2(
config: &GenConfig,
) -> It<(Float, Integer, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_mixed_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_integers(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, z, prec, rm)| pow_integer_prec_round_valid(x, z, *prec, *rm)),
)
}
pub fn random_float_integer_integer_triple_gen(
config: &GenConfig,
) -> It<(Float, Integer, Integer)> {
Box::new(random_triples_xyy(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_integers(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
))
}
pub fn random_float_natural_pair_gen(config: &GenConfig) -> It<(Float, Natural)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_naturals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
))
}
pub fn random_float_natural_pair_gen_var_1(config: &GenConfig) -> It<(Float, Natural)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
random_finite_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_naturals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
))
}
pub fn random_float_natural_pair_gen_var_2(config: &GenConfig) -> It<(Float, Natural)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_naturals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
))
}
pub fn random_float_natural_natural_triple_gen(
config: &GenConfig,
) -> It<(Float, Natural, Natural)> {
Box::new(random_triples_xyy(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_naturals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
))
}
pub fn random_float_ordering_pair_gen(config: &GenConfig) -> It<(Float, Ordering)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_orderings,
))
}
pub fn random_float_ordering_pair_gen_var_1(config: &GenConfig) -> It<(Float, Ordering)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_orderings,
))
}
pub fn random_float_primitive_float_pair_gen<T: PrimitiveFloat>(
config: &GenConfig,
) -> It<(Float, T)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
special_random_primitive_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
))
}
pub fn random_float_primitive_float_pair_gen_var_1<T: PrimitiveFloat>(
config: &GenConfig,
) -> It<(Float, T)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
special_random_primitive_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
))
}
pub fn random_float_primitive_float_primitive_float_triple_gen<T: PrimitiveFloat>(
config: &GenConfig,
) -> It<(Float, T, T)> {
Box::new(random_triples_xyy(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
special_random_primitive_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
))
}
pub fn random_float_primitive_int_primitive_int_triple_gen<T: PrimitiveInt>(
config: &GenConfig,
) -> It<(Float, T, T)> {
Box::new(random_triples_xyy(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| random_primitive_ints(seed),
))
}
pub fn random_float_signed_unsigned_triple_gen_var_1<T: PrimitiveSigned, U: PrimitiveUnsigned>(
config: &GenConfig,
) -> It<(Float, T, U)> {
Box::new(random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_signeds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
))
}
pub fn random_float_signed_unsigned_triple_gen_var_2<T: PrimitiveSigned, U: PrimitiveUnsigned>(
config: &GenConfig,
) -> It<(Float, T, U)> {
Box::new(random_triples(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_signeds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
))
}
pub fn random_float_unsigned_unsigned_triple_gen_var_1<
T: PrimitiveUnsigned,
U: PrimitiveUnsigned,
>(
config: &GenConfig,
) -> It<(Float, T, U)> {
Box::new(random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
))
}
pub fn random_float_unsigned_unsigned_triple_gen_var_2<
T: PrimitiveUnsigned,
U: PrimitiveUnsigned,
>(
config: &GenConfig,
) -> It<(Float, T, U)> {
Box::new(random_triples(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
))
}
pub fn random_float_signed_pair_gen<T: PrimitiveSigned>(config: &GenConfig) -> It<(Float, T)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_primitive_ints,
))
}
pub fn random_float_signed_pair_gen_var_1<T: PrimitiveSigned>(
config: &GenConfig,
) -> It<(Float, T)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
random_positive_finite_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
)
.map(|mut x| {
if let Float(Finite { exponent, .. }) = &mut x {
*exponent = 1;
}
x
})
},
&|seed| {
geometric_random_signeds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
))
}
pub fn random_float_signed_pair_gen_var_2<T: PrimitiveSigned>(
config: &GenConfig,
) -> It<(Float, T)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_signeds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
))
}
pub fn random_float_signed_pair_gen_var_3<T: PrimitiveSigned>(
config: &GenConfig,
) -> It<(Float, T)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_signeds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
))
}
pub fn random_float_signed_pair_gen_var_4<T: PrimitiveSigned>(
config: &GenConfig,
) -> It<(Float, T)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_primitive_ints,
))
}
pub fn random_float_signed_unsigned_rounding_mode_quadruple_gen_var_1<T: PrimitiveSigned>(
config: &GenConfig,
) -> It<(Float, T, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_signeds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, bits, prec, rm)| shl_prec_round_valid(x, bits, prec, rm)),
)
}
pub fn random_float_signed_unsigned_rounding_mode_quadruple_gen_var_2<T: PrimitiveSigned>(
config: &GenConfig,
) -> It<(Float, T, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_signeds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, bits, prec, rm)| shl_prec_round_valid(x, bits, prec, rm)),
)
}
pub fn random_float_signed_unsigned_rounding_mode_quadruple_gen_var_3<T: PrimitiveSigned>(
config: &GenConfig,
) -> It<(Float, T, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_signeds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, bits, prec, rm)| shr_prec_round_valid(x, bits, prec, rm)),
)
}
pub fn random_float_signed_unsigned_rounding_mode_quadruple_gen_var_4<T: PrimitiveSigned>(
config: &GenConfig,
) -> It<(Float, T, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_signeds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, bits, prec, rm)| shr_prec_round_valid(x, bits, prec, rm)),
)
}
pub fn random_float_signed_unsigned_rounding_mode_quadruple_gen_var_11(
config: &GenConfig,
) -> It<(Float, i64, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_signeds(
seed,
config.get_or("mean_small_n", 32),
config.get_or("mean_small_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, n, prec, rm)| pow_s_prec_round_valid(x, n, prec, rm)),
)
}
pub fn random_float_signed_unsigned_rounding_mode_quadruple_gen_var_12(
config: &GenConfig,
) -> It<(Float, i64, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_mixed_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_signeds(
seed,
config.get_or("mean_small_n", 32),
config.get_or("mean_small_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, n, prec, rm)| pow_s_prec_round_valid(x, n, prec, rm)),
)
}
pub fn random_float_signed_rounding_mode_triple_gen_var_1<T: PrimitiveSigned>(
config: &GenConfig,
) -> It<(Float, T, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_signeds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, bits, rm)| shl_round_valid(x, bits, rm)),
)
}
pub fn random_float_signed_rounding_mode_triple_gen_var_2<T: PrimitiveSigned>(
config: &GenConfig,
) -> It<(Float, T, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_signeds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, bits, rm)| shl_round_valid(x, bits, rm)),
)
}
pub fn random_float_signed_rounding_mode_triple_gen_var_3<T: PrimitiveSigned>(
config: &GenConfig,
) -> It<(Float, T, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_signeds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&|seed| random_rounding_modes(seed).filter(|&rm| rm != Exact),
)
.filter(|&(ref x, bits, rm)| shl_round_valid(x, bits, rm)),
)
}
pub fn random_float_signed_rounding_mode_triple_gen_var_4<T: PrimitiveSigned>(
config: &GenConfig,
) -> It<(Float, T, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_signeds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, bits, rm)| shr_round_valid(x, bits, rm)),
)
}
pub fn random_float_signed_rounding_mode_triple_gen_var_5<T: PrimitiveSigned>(
config: &GenConfig,
) -> It<(Float, T, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_signeds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, bits, rm)| shr_round_valid(x, bits, rm)),
)
}
pub fn random_float_signed_rounding_mode_triple_gen_var_6<T: PrimitiveSigned>(
config: &GenConfig,
) -> It<(Float, T, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_signeds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&|seed| random_rounding_modes(seed).filter(|&rm| rm != Exact),
)
.filter(|&(ref x, bits, rm)| shr_round_valid(x, bits, rm)),
)
}
pub fn random_float_unsigned_pair_gen<T: PrimitiveUnsigned>(config: &GenConfig) -> It<(Float, T)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_primitive_ints,
))
}
pub fn random_float_unsigned_pair_gen_var_1<T: PrimitiveUnsigned>(
config: &GenConfig,
) -> It<(Float, T)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
))
}
pub fn random_float_unsigned_pair_gen_var_2<T: PrimitiveUnsigned>(
config: &GenConfig,
) -> It<(Float, T)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
))
}
pub fn random_float_unsigned_pair_gen_var_3<T: PrimitiveUnsigned>(
config: &GenConfig,
) -> It<(Float, T)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
))
}
pub fn random_float_unsigned_pair_gen_var_4<T: PrimitiveUnsigned>(
config: &GenConfig,
) -> It<(Float, T)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
))
}
pub fn random_float_unsigned_pair_gen_var_5<T: PrimitiveUnsigned>(
config: &GenConfig,
) -> It<(Float, T)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_primitive_ints,
))
}
pub fn random_float_unsigned_pair_gen_var_6<T: PrimitiveUnsigned>(
config: &GenConfig,
) -> It<(Float, T)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
.filter(|x| *x > 0u32)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
))
}
pub fn random_float_unsigned_pair_gen_var_7<T: PrimitiveUnsigned>(
config: &GenConfig,
) -> It<(Float, T)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
random_finite_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
))
}
pub fn random_float_unsigned_pair_gen_var_8(config: &GenConfig) -> It<(Float, u8)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| random_unsigned_inclusive_range(seed, 2, 36),
))
}
pub fn random_float_unsigned_unsigned_rounding_mode_quadruple_gen_var_1<T: PrimitiveUnsigned>(
config: &GenConfig,
) -> It<(Float, T, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, bits, prec, rm)| shl_prec_round_valid(x, bits, prec, rm)),
)
}
pub fn random_float_unsigned_unsigned_rounding_mode_quadruple_gen_var_2<T: PrimitiveUnsigned>(
config: &GenConfig,
) -> It<(Float, T, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, bits, prec, rm)| shl_prec_round_valid(x, bits, prec, rm)),
)
}
pub fn random_float_unsigned_unsigned_rounding_mode_quadruple_gen_var_3<T: PrimitiveUnsigned>(
config: &GenConfig,
) -> It<(Float, T, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, bits, prec, rm)| shr_prec_round_valid(x, bits, prec, rm)),
)
}
pub fn random_float_unsigned_unsigned_rounding_mode_quadruple_gen_var_4<T: PrimitiveUnsigned>(
config: &GenConfig,
) -> It<(Float, T, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, bits, prec, rm)| shr_prec_round_valid(x, bits, prec, rm)),
)
}
pub fn random_float_unsigned_rounding_mode_triple_gen_var_1(
config: &GenConfig,
) -> It<(Float, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, p, rm)| set_prec_round_valid(x, p, rm)),
)
}
pub fn random_float_unsigned_rounding_mode_triple_gen_var_2(
config: &GenConfig,
) -> It<(Float, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, p, rm)| square_prec_round_valid(x, p, rm, false)),
)
}
pub fn random_float_unsigned_rounding_mode_triple_gen_var_3(
config: &GenConfig,
) -> It<(Float, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, p, rm)| reciprocal_prec_round_valid(x, p, rm, false)),
)
}
pub fn random_float_unsigned_rounding_mode_triple_gen_var_4(
config: &GenConfig,
) -> It<(Float, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, p, rm)| set_prec_round_valid(x, p, rm)),
)
}
pub fn random_float_unsigned_rounding_mode_triple_gen_var_5<T: PrimitiveUnsigned>(
config: &GenConfig,
) -> It<(Float, T, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, bits, rm)| shl_round_valid(x, bits, rm)),
)
}
pub fn random_float_unsigned_rounding_mode_triple_gen_var_6<T: PrimitiveUnsigned>(
config: &GenConfig,
) -> It<(Float, T, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, bits, rm)| shl_round_valid(x, bits, rm)),
)
}
pub fn random_float_unsigned_rounding_mode_triple_gen_var_7<T: PrimitiveUnsigned>(
config: &GenConfig,
) -> It<(Float, T, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&|seed| random_rounding_modes(seed).filter(|&rm| rm != Exact),
)
.filter(|&(ref x, bits, rm)| shl_round_valid(x, bits, rm)),
)
}
pub fn random_float_unsigned_rounding_mode_triple_gen_var_8<T: PrimitiveUnsigned>(
config: &GenConfig,
) -> It<(Float, T, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, bits, rm)| shr_round_valid(x, bits, rm)),
)
}
pub fn random_float_unsigned_rounding_mode_triple_gen_var_9<T: PrimitiveUnsigned>(
config: &GenConfig,
) -> It<(Float, T, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, bits, rm)| shr_round_valid(x, bits, rm)),
)
}
pub fn random_float_unsigned_rounding_mode_triple_gen_var_10<T: PrimitiveUnsigned>(
config: &GenConfig,
) -> It<(Float, T, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&|seed| random_rounding_modes(seed).filter(|&rm| rm != Exact),
)
.filter(|&(ref x, bits, rm)| shr_round_valid(x, bits, rm)),
)
}
pub fn random_float_unsigned_rounding_mode_triple_gen_var_11(
config: &GenConfig,
) -> It<(Float, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, p, rm)| square_prec_round_valid(x, p, rm, true)),
)
}
pub fn random_float_unsigned_rounding_mode_triple_gen_var_12(
config: &GenConfig,
) -> It<(Float, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, p, rm)| reciprocal_prec_round_valid(x, p, rm, true)),
)
}
pub fn random_float_unsigned_rounding_mode_triple_gen_var_43(
config: &GenConfig,
) -> It<(Float, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, p, rm)| acos_prec_round_valid(x, p, rm)),
)
}
pub fn random_float_unsigned_rounding_mode_triple_gen_var_46(
config: &GenConfig,
) -> It<(Float, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, p, rm)| asec_prec_round_valid(x, p, rm)),
)
}
pub fn random_float_unsigned_rounding_mode_triple_gen_var_13(
config: &GenConfig,
) -> It<(Float, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, p, rm)| sqrt_prec_round_valid(x, p, rm)),
)
}
pub fn random_float_unsigned_rounding_mode_triple_gen_var_14(
config: &GenConfig,
) -> It<(Float, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, p, rm)| sqrt_prec_round_valid(x, p, rm)),
)
}
pub fn random_float_unsigned_rounding_mode_triple_gen_var_15(
config: &GenConfig,
) -> It<(Float, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, p, rm)| reciprocal_sqrt_prec_round_valid(x, p, rm)),
)
}
pub fn random_float_unsigned_rounding_mode_triple_gen_var_16(
config: &GenConfig,
) -> It<(Float, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, p, rm)| reciprocal_sqrt_prec_round_valid(x, p, rm)),
)
}
pub fn random_float_unsigned_rounding_mode_triple_gen_var_17(
config: &GenConfig,
) -> It<(Float, u64, RoundingMode)> {
Box::new(random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
.filter(|x| *x > 0u32)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
))
}
pub fn random_float_unsigned_rounding_mode_triple_gen_var_18(
config: &GenConfig,
) -> It<(Float, u64, RoundingMode)> {
Box::new(random_triples(
EXAMPLE_SEED,
&|seed| {
random_finite_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
))
}
pub fn random_float_unsigned_rounding_mode_triple_gen_var_19(
config: &GenConfig,
) -> It<(Float, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, p, rm)| ln_prec_round_valid(x, p, rm)),
)
}
pub fn random_float_unsigned_rounding_mode_triple_gen_var_20(
config: &GenConfig,
) -> It<(Float, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, p, rm)| ln_prec_round_valid(x, p, rm)),
)
}
pub fn random_float_unsigned_rounding_mode_triple_gen_var_21(
config: &GenConfig,
) -> It<(Float, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, p, rm)| ln_1_plus_x_prec_round_valid(x, p, rm)),
)
}
pub fn random_float_unsigned_rounding_mode_triple_gen_var_22(
config: &GenConfig,
) -> It<(Float, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, p, rm)| ln_1_plus_x_prec_round_valid(x, p, rm)),
)
}
pub fn random_float_unsigned_rounding_mode_triple_gen_var_23(
config: &GenConfig,
) -> It<(Float, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, p, rm)| log_base_2_prec_round_valid(x, p, rm)),
)
}
pub fn random_float_unsigned_rounding_mode_triple_gen_var_24(
config: &GenConfig,
) -> It<(Float, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, p, rm)| log_base_2_prec_round_valid(x, p, rm)),
)
}
pub fn random_float_unsigned_rounding_mode_triple_gen_var_29(
config: &GenConfig,
) -> It<(Float, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, p, rm)| log_base_10_prec_round_valid(x, p, rm)),
)
}
pub fn random_float_unsigned_rounding_mode_triple_gen_var_30(
config: &GenConfig,
) -> It<(Float, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, p, rm)| log_base_10_prec_round_valid(x, p, rm)),
)
}
pub fn random_float_unsigned_rounding_mode_triple_gen_var_31(
config: &GenConfig,
) -> It<(Float, u64, RoundingMode)> {
Box::new(random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&|seed| random_rounding_modes(seed).filter(|&rm| rm != Exact),
))
}
pub fn random_float_signed_unsigned_rounding_mode_quadruple_gen_var_5(
config: &GenConfig,
) -> It<(Float, i64, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_nonzero_signeds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, pow, prec, rm)| log_base_power_of_2_prec_round_valid(x, pow, prec, rm)),
)
}
pub fn random_float_signed_unsigned_rounding_mode_quadruple_gen_var_6(
config: &GenConfig,
) -> It<(Float, i64, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_nonzero_signeds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, pow, prec, rm)| log_base_power_of_2_prec_round_valid(x, pow, prec, rm)),
)
}
pub fn random_float_unsigned_unsigned_rounding_mode_quadruple_gen_var_5(
config: &GenConfig,
) -> It<(Float, u64, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_unsigned_inclusive_range(
seed,
2,
u64::MAX,
config.get_or("mean_base_n", 16),
config.get_or("mean_base_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, base, prec, rm)| log_base_prec_round_valid(x, base, prec, rm)),
)
}
pub fn random_float_unsigned_unsigned_rounding_mode_quadruple_gen_var_6(
config: &GenConfig,
) -> It<(Float, u64, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_unsigned_inclusive_range(
seed,
2,
u64::MAX,
config.get_or("mean_base_n", 16),
config.get_or("mean_base_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, base, prec, rm)| log_base_prec_round_valid(x, base, prec, rm)),
)
}
pub fn random_float_unsigned_unsigned_rounding_mode_quadruple_gen_var_7(
config: &GenConfig,
) -> It<(Float, u64, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_unsigned_inclusive_range(
seed,
2,
u64::MAX,
config.get_or("mean_base_n", 16),
config.get_or("mean_base_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, base, prec, rm)| log_base_1_plus_x_prec_round_valid(x, base, prec, rm)),
)
}
pub fn random_float_unsigned_unsigned_rounding_mode_quadruple_gen_var_8(
config: &GenConfig,
) -> It<(Float, u64, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_unsigned_inclusive_range(
seed,
2,
u64::MAX,
config.get_or("mean_base_n", 16),
config.get_or("mean_base_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, base, prec, rm)| log_base_1_plus_x_prec_round_valid(x, base, prec, rm)),
)
}
pub fn random_float_signed_unsigned_rounding_mode_quadruple_gen_var_7(
config: &GenConfig,
) -> It<(Float, i64, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_nonzero_signeds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, pow, prec, rm)| {
log_base_power_of_2_1_plus_x_prec_round_valid(x, pow, prec, rm)
}),
)
}
pub fn random_float_signed_unsigned_rounding_mode_quadruple_gen_var_8(
config: &GenConfig,
) -> It<(Float, i64, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_nonzero_signeds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, pow, prec, rm)| {
log_base_power_of_2_1_plus_x_prec_round_valid(x, pow, prec, rm)
}),
)
}
pub fn random_float_unsigned_rounding_mode_triple_gen_var_25(
config: &GenConfig,
) -> It<(Float, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, p, rm)| log_base_2_1_plus_x_prec_round_valid(x, p, rm)),
)
}
pub fn random_float_unsigned_rounding_mode_triple_gen_var_26(
config: &GenConfig,
) -> It<(Float, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, p, rm)| log_base_2_1_plus_x_prec_round_valid(x, p, rm)),
)
}
pub fn random_float_unsigned_unsigned_rounding_mode_quadruple_gen_var_9(
config: &GenConfig,
) -> It<(Float, u64, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_small_n", 32),
config.get_or("mean_small_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, n, prec, rm)| pow_u_prec_round_valid(x, n, prec, rm)),
)
}
pub fn random_float_unsigned_unsigned_rounding_mode_quadruple_gen_var_10(
config: &GenConfig,
) -> It<(Float, u64, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_mixed_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_small_n", 32),
config.get_or("mean_small_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, n, prec, rm)| pow_u_prec_round_valid(x, n, prec, rm)),
)
}
pub fn random_float_unsigned_unsigned_rounding_mode_quadruple_gen_var_11(
config: &GenConfig,
) -> It<(Float, u64, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_small_n", 32),
config.get_or("mean_small_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, n, prec, rm)| unsigned_pow_prec_round_valid(x, n, prec, rm)),
)
}
pub fn random_float_unsigned_unsigned_rounding_mode_quadruple_gen_var_12(
config: &GenConfig,
) -> It<(Float, u64, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_mixed_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_small_n", 32),
config.get_or("mean_small_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, n, prec, rm)| unsigned_pow_prec_round_valid(x, n, prec, rm)),
)
}
pub fn random_unsigned_unsigned_unsigned_rounding_mode_quadruple_gen_var_1(
config: &GenConfig,
) -> It<(u64, u64, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_small_n", 32),
config.get_or("mean_small_d", 1),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_small_n", 32),
config.get_or("mean_small_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(x, y, prec, rm)| unsigned_pow_unsigned_prec_round_valid(x, y, prec, rm)),
)
}
pub fn random_float_rational_pair_gen(config: &GenConfig) -> It<(Float, Rational)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
))
}
pub fn random_float_rational_pair_gen_var_1(config: &GenConfig) -> It<(Float, Rational)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
random_finite_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
))
}
pub fn random_float_rational_pair_gen_var_2(config: &GenConfig) -> It<(Float, Rational)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
))
}
pub fn random_float_rational_unsigned_triple_gen_var_1<T: PrimitiveUnsigned>(
config: &GenConfig,
) -> It<(Float, Rational, T)> {
Box::new(random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
))
}
pub fn random_float_rational_unsigned_triple_gen_var_2<T: PrimitiveUnsigned>(
config: &GenConfig,
) -> It<(Float, Rational, T)> {
Box::new(random_triples(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
))
}
pub fn random_float_rational_unsigned_rounding_mode_quadruple_gen_var_1(
config: &GenConfig,
) -> It<(Float, Rational, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, prec, rm)| add_rational_prec_round_valid(x, y, *prec, *rm)),
)
}
pub fn random_float_rational_unsigned_rounding_mode_quadruple_gen_var_2(
config: &GenConfig,
) -> It<(Float, Rational, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, prec, rm)| sub_rational_prec_round_valid(x, y, *prec, *rm)),
)
}
pub fn random_float_rational_unsigned_rounding_mode_quadruple_gen_var_3(
config: &GenConfig,
) -> It<(Float, Rational, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, prec, rm)| mul_rational_prec_round_valid(x, y, *prec, *rm)),
)
}
pub fn random_float_rational_unsigned_rounding_mode_quadruple_gen_var_4(
config: &GenConfig,
) -> It<(Float, Rational, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, prec, rm)| div_rational_prec_round_valid(x, y, *prec, *rm)),
)
}
pub fn random_float_rational_unsigned_rounding_mode_quadruple_gen_var_5(
config: &GenConfig,
) -> It<(Float, Rational, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, prec, rm)| rational_div_float_prec_round_valid(x, y, *prec, *rm)),
)
}
pub fn random_float_rational_unsigned_rounding_mode_quadruple_gen_var_6(
config: &GenConfig,
) -> It<(Float, Rational, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, prec, rm)| add_rational_prec_round_valid(x, y, *prec, *rm)),
)
}
pub fn random_float_rational_unsigned_rounding_mode_quadruple_gen_var_7(
config: &GenConfig,
) -> It<(Float, Rational, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, prec, rm)| sub_rational_prec_round_valid(x, y, *prec, *rm)),
)
}
pub fn random_float_rational_unsigned_rounding_mode_quadruple_gen_var_8(
config: &GenConfig,
) -> It<(Float, Rational, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, prec, rm)| mul_rational_prec_round_valid(x, y, *prec, *rm)),
)
}
pub fn random_float_rational_unsigned_rounding_mode_quadruple_gen_var_9(
config: &GenConfig,
) -> It<(Float, Rational, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, prec, rm)| div_rational_prec_round_valid(x, y, *prec, *rm)),
)
}
pub fn random_float_rational_unsigned_rounding_mode_quadruple_gen_var_10(
config: &GenConfig,
) -> It<(Float, Rational, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, prec, rm)| rational_div_float_prec_round_valid(x, y, *prec, *rm)),
)
}
pub fn random_float_rational_unsigned_rounding_mode_quadruple_gen_var_11(
config: &GenConfig,
) -> It<(Float, Rational, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, prec, rm)| log_base_rational_base_prec_round_valid(x, y, *prec, *rm)),
)
}
pub fn random_float_rational_unsigned_rounding_mode_quadruple_gen_var_12(
config: &GenConfig,
) -> It<(Float, Rational, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, prec, rm)| log_base_rational_base_prec_round_valid(x, y, *prec, *rm)),
)
}
pub fn random_float_rational_unsigned_rounding_mode_quadruple_gen_var_15(
config: &GenConfig,
) -> It<(Float, Rational, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, prec, rm)| pow_rational_prec_round_valid(x, y, *prec, *rm)),
)
}
pub fn random_float_rational_unsigned_rounding_mode_quadruple_gen_var_16(
config: &GenConfig,
) -> It<(Float, Rational, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, prec, rm)| pow_rational_prec_round_valid(x, y, *prec, *rm)),
)
}
pub fn random_float_rational_unsigned_rounding_mode_quadruple_gen_var_17(
config: &GenConfig,
) -> It<(Float, Rational, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, prec, rm)| rem_rational_prec_round_valid(x, y, *prec, *rm, false)),
)
}
pub fn random_float_rational_unsigned_rounding_mode_quadruple_gen_var_18(
config: &GenConfig,
) -> It<(Float, Rational, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, prec, rm)| rem_rational_prec_round_valid(x, y, *prec, *rm, true)),
)
}
pub fn random_float_rational_unsigned_rounding_mode_quadruple_gen_var_19(
config: &GenConfig,
) -> It<(Float, Rational, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, prec, rm)| rational_rem_float_prec_round_valid(y, x, *prec, *rm, false)),
)
}
pub fn random_float_rational_unsigned_rounding_mode_quadruple_gen_var_20(
config: &GenConfig,
) -> It<(Float, Rational, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, prec, rm)| rational_rem_float_prec_round_valid(y, x, *prec, *rm, true)),
)
}
pub fn random_float_rational_unsigned_rounding_mode_quadruple_gen_var_21(
config: &GenConfig,
) -> It<(Float, Rational, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, prec, rm)| min_max_rational_prec_round_valid(x, y, *prec, *rm, false)),
)
}
pub fn random_float_rational_unsigned_rounding_mode_quadruple_gen_var_22(
config: &GenConfig,
) -> It<(Float, Rational, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, prec, rm)| min_max_rational_prec_round_valid(x, y, *prec, *rm, true)),
)
}
pub fn random_float_rational_unsigned_rounding_mode_quadruple_gen_var_23(
config: &GenConfig,
) -> It<(Float, Rational, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, prec, rm)| {
positive_difference_rational_prec_round_valid(x, y, *prec, *rm, false)
}),
)
}
pub fn random_float_rational_unsigned_rounding_mode_quadruple_gen_var_24(
config: &GenConfig,
) -> It<(Float, Rational, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, prec, rm)| {
positive_difference_rational_prec_round_valid(x, y, *prec, *rm, true)
}),
)
}
pub fn random_float_rational_unsigned_rounding_mode_quadruple_gen_var_13(
config: &GenConfig,
) -> It<(Float, Rational, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, prec, rm)| {
log_base_rational_base_1_plus_x_prec_round_valid(x, y, *prec, *rm)
}),
)
}
pub fn random_float_rational_unsigned_rounding_mode_quadruple_gen_var_14(
config: &GenConfig,
) -> It<(Float, Rational, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, prec, rm)| {
log_base_rational_base_1_plus_x_prec_round_valid(x, y, *prec, *rm)
}),
)
}
pub fn random_float_rational_rational_triple_gen(
config: &GenConfig,
) -> It<(Float, Rational, Rational)> {
Box::new(random_triples_xyy(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
))
}
pub fn random_float_rational_rounding_mode_triple_gen_var_1(
config: &GenConfig,
) -> It<(Float, Rational, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, rm)| add_rational_round_valid(x, y, *rm)),
)
}
pub fn random_float_rational_rounding_mode_triple_gen_var_2(
config: &GenConfig,
) -> It<(Float, Rational, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, rm)| sub_rational_round_valid(x, y, *rm)),
)
}
pub fn random_float_rational_rounding_mode_triple_gen_var_3(
config: &GenConfig,
) -> It<(Float, Rational, RoundingMode)> {
Box::new(random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| random_rounding_modes(seed).filter(|&rm| rm != Exact),
))
}
pub fn random_float_rational_rounding_mode_triple_gen_var_4(
config: &GenConfig,
) -> It<(Float, Rational, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, rm)| mul_rational_round_valid(x, y, *rm)),
)
}
pub fn random_float_rational_rounding_mode_triple_gen_var_5(
config: &GenConfig,
) -> It<(Float, Rational, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, rm)| div_rational_round_valid(x, y, *rm)),
)
}
pub fn random_float_rational_rounding_mode_triple_gen_var_6(
config: &GenConfig,
) -> It<(Float, Rational, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, rm)| rational_div_float_round_valid(x, y, *rm)),
)
}
pub fn random_float_rational_rounding_mode_triple_gen_var_7(
config: &GenConfig,
) -> It<(Float, Rational, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, rm)| add_rational_round_valid(x, y, *rm)),
)
}
pub fn random_float_rational_rounding_mode_triple_gen_var_8(
config: &GenConfig,
) -> It<(Float, Rational, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, rm)| sub_rational_round_valid(x, y, *rm)),
)
}
pub fn random_float_rational_rounding_mode_triple_gen_var_9(
config: &GenConfig,
) -> It<(Float, Rational, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, rm)| mul_rational_round_valid(x, y, *rm)),
)
}
pub fn random_float_rational_rounding_mode_triple_gen_var_10(
config: &GenConfig,
) -> It<(Float, Rational, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, rm)| div_rational_round_valid(x, y, *rm)),
)
}
pub fn random_float_rational_rounding_mode_triple_gen_var_11(
config: &GenConfig,
) -> It<(Float, Rational, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, rm)| rational_div_float_round_valid(x, y, *rm)),
)
}
pub fn random_float_rational_rounding_mode_triple_gen_var_12(
config: &GenConfig,
) -> It<(Float, Rational, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, rm)| log_base_rational_base_round_valid(x, y, *rm)),
)
}
pub fn random_float_rational_rounding_mode_triple_gen_var_13(
config: &GenConfig,
) -> It<(Float, Rational, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, rm)| log_base_rational_base_round_valid(x, y, *rm)),
)
}
pub fn random_float_rational_rounding_mode_triple_gen_var_14(
config: &GenConfig,
) -> It<(Float, Rational, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, rm)| log_base_rational_base_1_plus_x_round_valid(x, y, *rm)),
)
}
pub fn random_float_rational_rounding_mode_triple_gen_var_15(
config: &GenConfig,
) -> It<(Float, Rational, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, rm)| log_base_rational_base_1_plus_x_round_valid(x, y, *rm)),
)
}
pub fn random_float_rational_rounding_mode_triple_gen_var_16(
config: &GenConfig,
) -> It<(Float, Rational, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, rm)| rem_rational_round_valid(x, y, *rm, false)),
)
}
pub fn random_float_rational_rounding_mode_triple_gen_var_17(
config: &GenConfig,
) -> It<(Float, Rational, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, rm)| rem_rational_round_valid(x, y, *rm, true)),
)
}
pub fn random_float_rational_rounding_mode_triple_gen_var_18(
config: &GenConfig,
) -> It<(Float, Rational, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, rm)| rational_rem_float_round_valid(y, x, *rm, false)),
)
}
pub fn random_float_rational_rounding_mode_triple_gen_var_19(
config: &GenConfig,
) -> It<(Float, Rational, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, rm)| rational_rem_float_round_valid(y, x, *rm, true)),
)
}
pub fn random_float_rational_rounding_mode_triple_gen_var_20(
config: &GenConfig,
) -> It<(Float, Rational, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, rm)| min_max_rational_round_valid(x, y, *rm, false)),
)
}
pub fn random_float_rational_rounding_mode_triple_gen_var_21(
config: &GenConfig,
) -> It<(Float, Rational, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, rm)| min_max_rational_round_valid(x, y, *rm, true)),
)
}
pub fn random_float_rational_rounding_mode_triple_gen_var_22(
config: &GenConfig,
) -> It<(Float, Rational, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, rm)| positive_difference_rational_round_valid(x, y, *rm, false)),
)
}
pub fn random_float_rational_rounding_mode_triple_gen_var_23(
config: &GenConfig,
) -> It<(Float, Rational, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, rm)| positive_difference_rational_round_valid(x, y, *rm, true)),
)
}
pub fn random_float_rounding_mode_pair_gen(config: &GenConfig) -> It<(Float, RoundingMode)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
))
}
pub fn random_float_rounding_mode_pair_gen_var_1(config: &GenConfig) -> It<(Float, RoundingMode)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(f, rm)| natural_rounding_from_float_valid(f, *rm)),
)
}
pub fn random_float_rounding_mode_pair_gen_var_2(config: &GenConfig) -> It<(Float, RoundingMode)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(f, rm)| integer_rounding_from_float_valid(f, *rm)),
)
}
pub fn random_float_rounding_mode_pair_gen_var_3(config: &GenConfig) -> It<(Float, RoundingMode)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
random_nonzero_finite_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
)
},
&random_rounding_modes,
))
}
#[allow(clippy::type_repetition_in_bounds)]
pub fn random_float_rounding_mode_pair_gen_var_4<T: PrimitiveUnsigned>(
config: &GenConfig,
) -> It<(Float, RoundingMode)>
where
Float: PartialOrd<T>,
for<'a> T: ConvertibleFrom<&'a Float>,
{
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(f, rm)| unsigned_rounding_from_float_valid::<T>(f, *rm)),
)
}
#[allow(clippy::type_repetition_in_bounds)]
pub fn random_float_rounding_mode_pair_gen_var_5<T: PrimitiveSigned>(
config: &GenConfig,
) -> It<(Float, RoundingMode)>
where
Float: PartialOrd<T>,
for<'a> T: ConvertibleFrom<&'a Float>,
{
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(f, rm)| signed_rounding_from_float_valid::<T>(f, *rm)),
)
}
#[allow(clippy::type_repetition_in_bounds)]
pub fn random_float_rounding_mode_pair_gen_var_6<T: PrimitiveFloat>(
config: &GenConfig,
) -> It<(Float, RoundingMode)>
where
for<'a> T: ConvertibleFrom<&'a Float>,
{
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(f, rm)| *rm != Exact || T::convertible_from(f)),
)
}
pub fn random_float_rounding_mode_pair_gen_var_7(config: &GenConfig) -> It<(Float, RoundingMode)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(f, rm)| square_round_valid(f, *rm, false)),
)
}
pub fn random_float_rounding_mode_pair_gen_var_8(config: &GenConfig) -> It<(Float, RoundingMode)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| random_floats_with_precision_inclusive_range(seed, config, 1, Limb::WIDTH - 1),
&random_rounding_modes,
)
.filter(|(f, rm)| square_round_valid(f, *rm, false)),
)
}
pub fn random_float_rounding_mode_pair_gen_var_9(config: &GenConfig) -> It<(Float, RoundingMode)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_positive_floats_with_precision(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
Limb::WIDTH,
)
},
&random_rounding_modes,
)
.filter(|(f, rm)| square_round_valid(f, *rm, false)),
)
}
pub fn random_float_rounding_mode_pair_gen_var_10(config: &GenConfig) -> It<(Float, RoundingMode)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_floats_with_precision_inclusive_range(
seed,
config,
Limb::WIDTH + 1,
(Limb::WIDTH << 1) - 1,
)
},
&random_rounding_modes,
)
.filter(|(f, rm)| square_round_valid(f, *rm, false)),
)
}
pub fn random_float_rounding_mode_pair_gen_var_11(config: &GenConfig) -> It<(Float, RoundingMode)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_positive_floats_with_precision(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
Limb::WIDTH << 1,
)
},
&random_rounding_modes,
)
.filter(|(f, rm)| square_round_valid(f, *rm, false)),
)
}
pub fn random_float_rounding_mode_pair_gen_var_12(config: &GenConfig) -> It<(Float, RoundingMode)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_floats_with_precision_inclusive_range(
seed,
config,
(Limb::WIDTH << 1) + 1,
Limb::WIDTH * 3 - 1,
)
},
&random_rounding_modes,
)
.filter(|(f, rm)| square_round_valid(f, *rm, false)),
)
}
pub fn random_float_rounding_mode_pair_gen_var_13(config: &GenConfig) -> It<(Float, RoundingMode)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(f, rm)| reciprocal_round_valid(f, *rm, false)),
)
}
pub fn random_float_rounding_mode_pair_gen_var_14(config: &GenConfig) -> It<(Float, RoundingMode)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| random_floats_with_precision_inclusive_range(seed, config, 1, Limb::WIDTH - 1),
&random_rounding_modes,
)
.filter(|(f, rm)| reciprocal_round_valid(f, *rm, false)),
)
}
pub fn random_float_rounding_mode_pair_gen_var_15(config: &GenConfig) -> It<(Float, RoundingMode)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_positive_floats_with_precision(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
Limb::WIDTH,
)
},
&random_rounding_modes,
)
.filter(|(f, rm)| reciprocal_round_valid(f, *rm, false)),
)
}
pub fn random_float_rounding_mode_pair_gen_var_16(config: &GenConfig) -> It<(Float, RoundingMode)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_floats_with_precision_inclusive_range(
seed,
config,
Limb::WIDTH + 1,
(Limb::WIDTH << 1) - 1,
)
},
&random_rounding_modes,
)
.filter(|(f, rm)| reciprocal_round_valid(f, *rm, false)),
)
}
pub fn random_float_rounding_mode_pair_gen_var_17(config: &GenConfig) -> It<(Float, RoundingMode)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_floats_with_precision_inclusive_range_to_infinity(
seed,
config,
Limb::WIDTH + 1,
)
},
&random_rounding_modes,
)
.filter(|(f, rm)| reciprocal_round_valid(f, *rm, false)),
)
}
#[allow(clippy::type_repetition_in_bounds)]
pub fn random_float_rounding_mode_pair_gen_var_18<T: PrimitiveUnsigned>(
config: &GenConfig,
) -> It<(Float, RoundingMode)>
where
Float: PartialOrd<T>,
for<'a> T: ConvertibleFrom<&'a Float>,
{
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(f, rm)| unsigned_rounding_from_float_valid::<T>(f, *rm)),
)
}
#[allow(clippy::type_repetition_in_bounds)]
pub fn random_float_rounding_mode_pair_gen_var_19<T: PrimitiveSigned>(
config: &GenConfig,
) -> It<(Float, RoundingMode)>
where
Float: PartialOrd<T>,
for<'a> T: ConvertibleFrom<&'a Float>,
{
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(f, rm)| signed_rounding_from_float_valid::<T>(f, *rm)),
)
}
#[allow(clippy::type_repetition_in_bounds)]
pub fn random_float_rounding_mode_pair_gen_var_20<T: PrimitiveFloat>(
config: &GenConfig,
) -> It<(Float, RoundingMode)>
where
for<'a> T: ConvertibleFrom<&'a Float>,
{
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(f, rm)| *rm != Exact || T::convertible_from(f)),
)
}
pub fn random_float_rounding_mode_pair_gen_var_21(config: &GenConfig) -> It<(Float, RoundingMode)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
))
}
pub fn random_float_rounding_mode_pair_gen_var_22(config: &GenConfig) -> It<(Float, RoundingMode)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(f, rm)| square_round_valid(f, *rm, true)),
)
}
pub fn random_float_rounding_mode_pair_gen_var_23(config: &GenConfig) -> It<(Float, RoundingMode)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(f, rm)| reciprocal_round_valid(f, *rm, true)),
)
}
pub fn random_float_rounding_mode_pair_gen_var_24(config: &GenConfig) -> It<(Float, RoundingMode)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(f, rm)| sqrt_round_valid(f, *rm)),
)
}
pub fn random_float_rounding_mode_pair_gen_var_25(config: &GenConfig) -> It<(Float, RoundingMode)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| random_floats_with_precision_inclusive_range(seed, config, 1, Limb::WIDTH - 1),
&random_rounding_modes,
)
.filter(|(f, rm)| sqrt_round_valid(f, *rm)),
)
}
pub fn random_float_rounding_mode_pair_gen_var_26(config: &GenConfig) -> It<(Float, RoundingMode)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_positive_floats_with_precision(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
Limb::WIDTH,
)
},
&random_rounding_modes,
)
.filter(|(f, rm)| sqrt_round_valid(f, *rm)),
)
}
pub fn random_float_rounding_mode_pair_gen_var_27(config: &GenConfig) -> It<(Float, RoundingMode)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_floats_with_precision_inclusive_range(
seed,
config,
Limb::WIDTH + 1,
(Limb::WIDTH << 1) - 1,
)
},
&random_rounding_modes,
)
.filter(|(f, rm)| sqrt_round_valid(f, *rm)),
)
}
pub fn random_float_rounding_mode_pair_gen_var_28(config: &GenConfig) -> It<(Float, RoundingMode)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_floats_with_precision_inclusive_range_to_infinity(
seed,
config,
(Limb::WIDTH << 1) + 1,
)
},
&random_rounding_modes,
)
.filter(|(f, rm)| sqrt_round_valid(f, *rm)),
)
}
pub fn random_float_rounding_mode_pair_gen_var_29(config: &GenConfig) -> It<(Float, RoundingMode)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(f, rm)| sqrt_round_valid(f, *rm)),
)
}
pub fn random_float_rounding_mode_pair_gen_var_30(config: &GenConfig) -> It<(Float, RoundingMode)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(f, rm)| reciprocal_sqrt_round_valid(f, *rm)),
)
}
pub fn random_float_rounding_mode_pair_gen_var_31(config: &GenConfig) -> It<(Float, RoundingMode)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(f, rm)| reciprocal_sqrt_round_valid(f, *rm)),
)
}
pub fn random_float_rounding_mode_pair_gen_var_32(config: &GenConfig) -> It<(Float, RoundingMode)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
.filter(|x| *x > 0u32)
},
&random_rounding_modes,
))
}
pub fn random_float_rounding_mode_pair_gen_var_33(config: &GenConfig) -> It<(Float, RoundingMode)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
random_finite_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
))
}
pub fn random_float_rounding_mode_pair_gen_var_34(config: &GenConfig) -> It<(Float, RoundingMode)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(f, rm)| ln_round_valid(f, *rm)),
)
}
pub fn random_float_rounding_mode_pair_gen_var_35(config: &GenConfig) -> It<(Float, RoundingMode)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(f, rm)| ln_round_valid(f, *rm)),
)
}
pub fn random_float_rounding_mode_pair_gen_var_36(config: &GenConfig) -> It<(Float, RoundingMode)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(f, rm)| ln_1_plus_x_round_valid(f, *rm)),
)
}
pub fn random_float_rounding_mode_pair_gen_var_37(config: &GenConfig) -> It<(Float, RoundingMode)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(f, rm)| ln_1_plus_x_round_valid(f, *rm)),
)
}
pub fn random_float_rounding_mode_pair_gen_var_38(config: &GenConfig) -> It<(Float, RoundingMode)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(f, rm)| log_base_2_round_valid(f, *rm)),
)
}
pub fn random_float_rounding_mode_pair_gen_var_39(config: &GenConfig) -> It<(Float, RoundingMode)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(f, rm)| log_base_2_round_valid(f, *rm)),
)
}
pub fn random_float_rounding_mode_pair_gen_var_42(config: &GenConfig) -> It<(Float, RoundingMode)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(f, rm)| log_base_10_round_valid(f, *rm)),
)
}
pub fn random_float_rounding_mode_pair_gen_var_43(config: &GenConfig) -> It<(Float, RoundingMode)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(f, rm)| log_base_10_round_valid(f, *rm)),
)
}
pub fn random_float_rounding_mode_pair_gen_var_44(config: &GenConfig) -> It<(Float, RoundingMode)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| random_rounding_modes(seed).filter(|&rm| rm != Exact),
))
}
pub fn random_float_unsigned_rounding_mode_triple_gen_var_34(
config: &GenConfig,
) -> It<(Float, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, p, rm)| log_base_10_1_plus_x_prec_round_valid(x, p, rm)),
)
}
pub fn random_float_unsigned_rounding_mode_triple_gen_var_35(
config: &GenConfig,
) -> It<(Float, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, p, rm)| log_base_10_1_plus_x_prec_round_valid(x, p, rm)),
)
}
pub fn random_float_rounding_mode_pair_gen_var_45(config: &GenConfig) -> It<(Float, RoundingMode)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(f, rm)| log_base_10_1_plus_x_round_valid(f, *rm)),
)
}
pub fn random_float_rounding_mode_pair_gen_var_46(config: &GenConfig) -> It<(Float, RoundingMode)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(f, rm)| log_base_10_1_plus_x_round_valid(f, *rm)),
)
}
pub fn random_float_signed_rounding_mode_triple_gen_var_7(
config: &GenConfig,
) -> It<(Float, i64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_nonzero_signeds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, pow, rm)| log_base_power_of_2_round_valid(x, pow, rm)),
)
}
pub fn random_float_signed_rounding_mode_triple_gen_var_8(
config: &GenConfig,
) -> It<(Float, i64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_nonzero_signeds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, pow, rm)| log_base_power_of_2_round_valid(x, pow, rm)),
)
}
pub fn random_float_unsigned_rounding_mode_triple_gen_var_27(
config: &GenConfig,
) -> It<(Float, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_unsigned_inclusive_range(
seed,
2,
u64::MAX,
config.get_or("mean_base_n", 16),
config.get_or("mean_base_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, base, rm)| log_base_round_valid(x, base, rm)),
)
}
pub fn random_float_unsigned_rounding_mode_triple_gen_var_28(
config: &GenConfig,
) -> It<(Float, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_unsigned_inclusive_range(
seed,
2,
u64::MAX,
config.get_or("mean_base_n", 16),
config.get_or("mean_base_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, base, rm)| log_base_round_valid(x, base, rm)),
)
}
pub fn random_float_unsigned_rounding_mode_triple_gen_var_32(
config: &GenConfig,
) -> It<(Float, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_unsigned_inclusive_range(
seed,
2,
u64::MAX,
config.get_or("mean_base_n", 16),
config.get_or("mean_base_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, base, rm)| log_base_1_plus_x_round_valid(x, base, rm)),
)
}
pub fn random_float_unsigned_rounding_mode_triple_gen_var_33(
config: &GenConfig,
) -> It<(Float, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_unsigned_inclusive_range(
seed,
2,
u64::MAX,
config.get_or("mean_base_n", 16),
config.get_or("mean_base_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, base, rm)| log_base_1_plus_x_round_valid(x, base, rm)),
)
}
pub fn random_float_signed_rounding_mode_triple_gen_var_9(
config: &GenConfig,
) -> It<(Float, i64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_nonzero_signeds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, pow, rm)| log_base_power_of_2_1_plus_x_round_valid(x, pow, rm)),
)
}
pub fn random_float_signed_rounding_mode_triple_gen_var_10(
config: &GenConfig,
) -> It<(Float, i64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_nonzero_signeds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, pow, rm)| log_base_power_of_2_1_plus_x_round_valid(x, pow, rm)),
)
}
pub fn random_float_rounding_mode_pair_gen_var_40(config: &GenConfig) -> It<(Float, RoundingMode)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(f, rm)| log_base_2_1_plus_x_round_valid(f, *rm)),
)
}
pub fn random_float_rounding_mode_pair_gen_var_41(config: &GenConfig) -> It<(Float, RoundingMode)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(f, rm)| log_base_2_1_plus_x_round_valid(f, *rm)),
)
}
pub fn random_float_to_sci_options_pair_gen(config: &GenConfig) -> It<(Float, ToSciOptions)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_to_sci_options(
seed,
config.get_or("small_mean_n", 4),
config.get_or("small_mean_d", 1),
)
},
))
}
pub fn random_float_to_sci_options_pair_gen_var_1(config: &GenConfig) -> It<(Float, ToSciOptions)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_to_sci_options(
seed,
config.get_or("small_mean_n", 4),
config.get_or("small_mean_d", 1),
)
},
)
.filter(|(x, options)| float_to_sci_options_valid(x, *options)),
)
}
pub fn random_float_to_sci_options_pair_gen_var_2(config: &GenConfig) -> It<(Float, ToSciOptions)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
random_to_sci_options(
seed,
config.get_or("small_mean_n", 4),
config.get_or("small_mean_d", 1),
)
},
)
.filter(|(x, options)| float_to_sci_options_valid(x, *options)),
)
}
pub fn random_integer_unsigned_rounding_mode_triple_gen_var_3(
config: &GenConfig,
) -> It<(Integer, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_integers(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref n, prec, rm)| {
rm != Exact || *n == 0u32 || n.significant_bits() - n.trailing_zeros().unwrap() <= prec
}),
)
}
pub fn random_integer_unsigned_rounding_mode_triple_gen_var_4(
config: &GenConfig,
) -> It<(Integer, u64, RoundingMode)> {
Box::new(random_triples(
EXAMPLE_SEED,
&|seed| {
random_integers(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&|seed| random_rounding_modes(seed).filter(|rm| *rm != Exact),
))
}
pub fn random_natural_unsigned_rounding_mode_triple_gen_var_2(
config: &GenConfig,
) -> It<(Natural, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_naturals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref n, prec, rm)| {
rm != Exact || *n == 0u32 || n.significant_bits() - n.trailing_zeros().unwrap() <= prec
}),
)
}
pub fn random_natural_unsigned_rounding_mode_triple_gen_var_3(
config: &GenConfig,
) -> It<(Natural, u64, RoundingMode)> {
Box::new(random_triples(
EXAMPLE_SEED,
&|seed| {
random_naturals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&|seed| random_rounding_modes(seed).filter(|&rm| rm != Exact),
))
}
pub fn random_primitive_float_unsigned_rounding_mode_triple_gen_var_3<T: PrimitiveFloat>(
config: &GenConfig,
) -> It<(T, u64, RoundingMode)>
where
Float: From<T>,
{
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
special_random_primitive_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(x, p, rm)| from_primitive_float_prec_round_valid(x, p, rm)),
)
}
pub fn random_primitive_float_unsigned_rounding_mode_triple_gen_var_4<T: PrimitiveFloat>(
config: &GenConfig,
) -> It<(T, u64, RoundingMode)>
where
Float: From<T>,
{
Box::new(random_triples(
EXAMPLE_SEED,
&|seed| {
special_random_primitive_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&|seed| random_rounding_modes(seed).filter(|rm| *rm != Exact),
))
}
pub fn random_signed_unsigned_rounding_mode_triple_gen_var_1<T: PrimitiveSigned>(
config: &GenConfig,
) -> It<(T, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&random_primitive_ints::<T>,
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref n, prec, rm)| {
rm != Exact || *n == T::ZERO || n.significant_bits() - n.trailing_zeros() <= prec
}),
)
}
pub fn random_signed_unsigned_rounding_mode_triple_gen_var_2<T: PrimitiveSigned>(
config: &GenConfig,
) -> It<(T, u64, RoundingMode)> {
Box::new(random_triples(
EXAMPLE_SEED,
&random_primitive_ints::<T>,
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&|seed| random_rounding_modes(seed).filter(|rm| *rm != Exact),
))
}
pub fn random_signed_unsigned_rounding_mode_triple_gen_var_3(
config: &GenConfig,
) -> It<(i64, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
geometric_random_signeds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(pow, _, rm)| {
rm != Exact
|| (Float::MIN_EXPONENT..=Float::MAX_EXPONENT)
.contains(&i32::saturating_from(pow).saturating_add(1))
}),
)
}
pub fn random_signed_unsigned_rounding_mode_triple_gen_var_4(
config: &GenConfig,
) -> It<(i64, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&random_primitive_ints,
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(pow, _, rm)| {
rm != Exact
|| (Float::MIN_EXPONENT..=Float::MAX_EXPONENT)
.contains(&i32::saturating_from(pow).saturating_add(1))
}),
)
}
pub fn random_unsigned_pair_gen_var_51(config: &GenConfig) -> It<(u64, u64)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| random_unsigned_inclusive_range(seed, 2, 62),
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
))
}
pub fn random_unsigned_unsigned_rounding_mode_triple_gen_var_10(
config: &GenConfig,
) -> It<(u64, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| random_unsigned_inclusive_range(seed, 2, 62),
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(_, _, rm)| *rm != Exact),
)
}
pub fn random_unsigned_unsigned_rounding_mode_triple_gen_var_11(
config: &GenConfig,
) -> It<(u64, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
geometric_random_unsigneds::<u64>(
seed,
config.get_or("mean_small_n", 32),
config.get_or("mean_small_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds::<u64>(
seed,
config.get_or("mean_small_n", 32),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(n, prec, rm)| {
rm != Exact || Float::factorial_prec_round(n, prec, Floor).1 == Ordering::Equal
}),
)
}
pub fn random_unsigned_unsigned_rounding_mode_triple_gen_var_3<T: PrimitiveUnsigned>(
config: &GenConfig,
) -> It<(T, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&random_primitive_ints::<T>,
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref n, prec, rm)| {
rm != Exact || *n == T::ZERO || n.significant_bits() - n.trailing_zeros() <= prec
}),
)
}
pub fn random_unsigned_unsigned_rounding_mode_triple_gen_var_5<T: PrimitiveUnsigned>(
config: &GenConfig,
) -> It<(T, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&random_primitive_ints::<T>,
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref n, _prec, rm)| rm != Exact || n.significant_bits() <= 1),
)
}
pub fn random_unsigned_unsigned_rounding_mode_triple_gen_var_4<T: PrimitiveUnsigned>(
config: &GenConfig,
) -> It<(T, u64, RoundingMode)> {
Box::new(random_triples(
EXAMPLE_SEED,
&random_primitive_ints::<T>,
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&|seed| random_rounding_modes(seed).filter(|rm| *rm != Exact),
))
}
pub fn random_rational_unsigned_rounding_mode_triple_gen_var_1(
config: &GenConfig,
) -> It<(Rational, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref n, prec, rm)| {
rm != Exact
|| n.denominator_ref().is_power_of_2()
&& n.numerator_ref().significant_bits() <= prec
}),
)
}
pub fn random_rational_unsigned_rounding_mode_triple_gen_var_2(
config: &GenConfig,
) -> It<(Rational, u64, RoundingMode)> {
Box::new(random_triples(
EXAMPLE_SEED,
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&|seed| random_rounding_modes(seed).filter(|rm| *rm != Exact),
))
}
pub fn random_rational_unsigned_rounding_mode_triple_gen_var_3(
config: &GenConfig,
) -> It<(Rational, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref n, prec, rm)| sqrt_rational_prec_round_valid(n, prec, rm)),
)
}
pub fn random_rational_unsigned_rounding_mode_triple_gen_var_4(
config: &GenConfig,
) -> It<(Rational, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref n, prec, rm)| reciprocal_sqrt_rational_prec_round_valid(n, prec, rm)),
)
}
pub fn random_rational_unsigned_rounding_mode_triple_gen_var_5(
config: &GenConfig,
) -> It<(Rational, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_non_negative_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref n, prec, rm)| {
rm != Exact
|| n.denominator_ref().is_power_of_2()
&& n.numerator_ref().significant_bits() <= prec
}),
)
}
pub fn random_rational_unsigned_rounding_mode_triple_gen_var_6(
config: &GenConfig,
) -> It<(Rational, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref n, prec, rm)| ln_rational_prec_round_valid(n, prec, rm)),
)
}
pub fn random_rational_unsigned_rounding_mode_triple_gen_var_7(
config: &GenConfig,
) -> It<(Rational, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref n, prec, rm)| log_base_2_rational_prec_round_valid(n, prec, rm)),
)
}
pub fn random_rational_unsigned_rounding_mode_triple_gen_var_9(
config: &GenConfig,
) -> It<(Rational, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref n, prec, rm)| log_base_10_rational_prec_round_valid(n, prec, rm)),
)
}
pub fn random_rational_unsigned_rounding_mode_triple_gen_var_10(
config: &GenConfig,
) -> It<(Rational, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref n, prec, rm)| exp_rational_prec_round_valid(n, prec, rm)),
)
}
pub fn random_rational_unsigned_rounding_mode_triple_gen_var_11(
config: &GenConfig,
) -> It<(Rational, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref n, prec, rm)| acos_rational_prec_round_valid(n, prec, rm)),
)
}
pub fn random_rational_unsigned_rounding_mode_triple_gen_var_12(
config: &GenConfig,
) -> It<(Rational, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref n, prec, rm)| asec_rational_prec_round_valid(n, prec, rm)),
)
}
pub fn random_rational_signed_unsigned_rounding_mode_quadruple_gen_var_1(
config: &GenConfig,
) -> It<(Rational, i64, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_nonzero_signeds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref n, pow, prec, rm)| {
log_base_power_of_2_rational_prec_round_valid(n, pow, prec, rm)
}),
)
}
pub fn random_rational_unsigned_unsigned_rounding_mode_quadruple_gen_var_1(
config: &GenConfig,
) -> It<(Rational, u64, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_unsigned_inclusive_range(
seed,
2,
u64::MAX,
config.get_or("mean_base_n", 16),
config.get_or("mean_base_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref n, base, prec, rm)| log_base_rational_prec_round_valid(n, base, prec, rm)),
)
}
pub fn random_rational_unsigned_unsigned_rounding_mode_quadruple_gen_var_2(
config: &GenConfig,
) -> It<(Rational, u64, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_base_n", 16),
config.get_or("mean_base_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref q, k, prec, rm)| unsigned_pow_rational_prec_round_valid(q, k, prec, rm)),
)
}
pub fn random_rational_rational_unsigned_rounding_mode_quadruple_gen_var_1(
config: &GenConfig,
) -> It<(Rational, Rational, u64, RoundingMode)> {
Box::new(
random_quadruples_xxyz(
EXAMPLE_SEED,
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, prec, rm)| agm_rational_prec_round_valid(x, y, *prec, *rm)),
)
}
pub fn random_rational_rational_unsigned_rounding_mode_quadruple_gen_var_4(
config: &GenConfig,
) -> It<(Rational, Rational, u64, RoundingMode)> {
Box::new(
random_quadruples_xxyz(
EXAMPLE_SEED,
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(y, x, prec, rm)| atan2_rational_prec_round_valid(y, x, *prec, *rm)),
)
}
pub fn random_rational_rational_unsigned_rounding_mode_quadruple_gen_var_2(
config: &GenConfig,
) -> It<(Rational, Rational, u64, RoundingMode)> {
Box::new(
random_quadruples_xxyz(
EXAMPLE_SEED,
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, prec, rm)| {
log_base_rational_rational_base_prec_round_valid(x, y, *prec, *rm)
}),
)
}
pub fn random_rational_rational_unsigned_rounding_mode_quadruple_gen_var_3(
config: &GenConfig,
) -> It<(Rational, Rational, u64, RoundingMode)> {
Box::new(
random_quadruples_xxyz(
EXAMPLE_SEED,
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, prec, rm)| rational_pow_rational_prec_round_valid(x, y, *prec, *rm)),
)
}
pub fn random_rational_float_unsigned_rounding_mode_quadruple_gen_var_1(
config: &GenConfig,
) -> It<(Rational, Float, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, prec, rm)| log_base_rational_float_base_prec_round_valid(x, y, *prec, *rm)),
)
}
pub fn random_rational_float_unsigned_rounding_mode_quadruple_gen_var_2(
config: &GenConfig,
) -> It<(Rational, Float, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, y, prec, rm)| log_base_rational_float_base_prec_round_valid(x, y, *prec, *rm)),
)
}
pub fn random_rational_rounding_mode_pair_gen_var_6(
config: &GenConfig,
) -> It<(Rational, RoundingMode)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref n, rm)| {
rm != Exact
|| n.denominator_ref().is_power_of_2() && n.numerator_ref().significant_bits() <= 1
}),
)
}
pub fn random_float_signed_unsigned_rounding_mode_quadruple_gen_var_9(
config: &GenConfig,
) -> It<(Float, i64, usize, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_primitive_ints::<u64>,
&random_rounding_modes,
)
.map(|(x, v, rm): (Float, u64, RoundingMode)| {
{
let raw = v % 96;
let base = if raw < 61 {
i64::exact_from(2 + raw)
} else {
-i64::exact_from(raw - 59)
};
(x, base, usize::exact_from((v >> 8) % 21), rm)
}
})
.filter(|(x, b0, m, rnd)| valid_float_get_str_quadruple(x, *b0, *m, *rnd)),
)
}
pub fn random_float_signed_unsigned_rounding_mode_quadruple_gen_var_15(
config: &GenConfig,
) -> It<(Float, i64, usize, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_primitive_ints::<u64>,
&random_rounding_modes,
)
.map(|(x, v, rm): (Float, u64, RoundingMode)| {
{
let raw = v % 96;
let base = if raw < 61 {
i64::exact_from(2 + raw)
} else {
-i64::exact_from(raw - 59)
};
(x, base, usize::exact_from((v >> 8) % 21), rm)
}
})
.filter(|(x, b0, m, rnd)| valid_float_get_str_quadruple(x, *b0, *m, *rnd)),
)
}
pub fn random_float_signed_unsigned_rounding_mode_quadruple_gen_var_10(
config: &GenConfig,
) -> It<(Float, i64, usize, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_primitive_ints::<u64>,
&random_rounding_modes,
)
.map(|(x, v, rm): (Float, u64, RoundingMode)| {
let base = i64::exact_from(2 + (v % 35));
(x, base, usize::exact_from((v >> 8) % 21), rm)
})
.filter(|(_, _, _, rm): &(Float, i64, usize, RoundingMode)| *rm != Exact),
)
}
pub fn random_float_signed_unsigned_rounding_mode_quadruple_gen_var_16(
config: &GenConfig,
) -> It<(Float, i64, usize, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_primitive_ints::<u64>,
&random_rounding_modes,
)
.map(|(x, v, rm): (Float, u64, RoundingMode)| {
let base = i64::exact_from(2 + (v % 35));
(x, base, usize::exact_from((v >> 8) % 21), rm)
})
.filter(|(_, _, _, rm): &(Float, i64, usize, RoundingMode)| *rm != Exact),
)
}
pub fn random_float_unsigned_rounding_mode_triple_gen_var_36(
config: &GenConfig,
) -> It<(Float, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, p, rm)| exp_prec_round_valid(x, p, rm)),
)
}
pub fn random_float_unsigned_rounding_mode_triple_gen_var_54(
config: &GenConfig,
) -> It<(Float, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, p, rm)| asech_prec_round_valid(x, p, rm)),
)
}
pub fn random_float_unsigned_rounding_mode_triple_gen_var_55(
config: &GenConfig,
) -> It<(Float, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, p, rm)| acoth_prec_round_valid(x, p, rm)),
)
}
pub fn random_float_unsigned_rounding_mode_triple_gen_var_42(
config: &GenConfig,
) -> It<(Float, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, p, rm)| acos_prec_round_valid(x, p, rm)),
)
}
pub fn random_float_unsigned_rounding_mode_triple_gen_var_45(
config: &GenConfig,
) -> It<(Float, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, p, rm)| asec_prec_round_valid(x, p, rm)),
)
}
pub fn random_float_unsigned_rounding_mode_triple_gen_var_38(
config: &GenConfig,
) -> It<(Float, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, u, rm)| cos_with_period_round_valid(x, u, rm)),
)
}
pub fn random_float_unsigned_rounding_mode_triple_gen_var_39(
config: &GenConfig,
) -> It<(Float, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, u, rm)| sin_with_period_round_valid(x, u, rm)),
)
}
pub fn random_float_unsigned_rounding_mode_triple_gen_var_40(
config: &GenConfig,
) -> It<(Float, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, u, rm)| atan_with_period_round_valid(x, u, rm)),
)
}
pub fn random_float_unsigned_rounding_mode_triple_gen_var_41(
config: &GenConfig,
) -> It<(Float, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, u, rm)| asin_with_period_round_valid(x, u, rm)),
)
}
pub fn random_float_unsigned_rounding_mode_triple_gen_var_44(
config: &GenConfig,
) -> It<(Float, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, u, rm)| acos_with_period_round_valid(x, u, rm)),
)
}
pub fn random_float_unsigned_rounding_mode_triple_gen_var_47(
config: &GenConfig,
) -> It<(Float, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, u, rm)| asec_with_period_round_valid(x, u, rm)),
)
}
pub fn random_float_rounding_mode_pair_gen_var_47(config: &GenConfig) -> It<(Float, RoundingMode)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(f, rm)| exp_round_valid(f, *rm)),
)
}
pub fn random_float_rounding_mode_pair_gen_var_49(config: &GenConfig) -> It<(Float, RoundingMode)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(f, rm)| acos_round_valid(f, *rm)),
)
}
pub fn random_float_rounding_mode_pair_gen_var_50(config: &GenConfig) -> It<(Float, RoundingMode)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(f, rm)| asec_round_valid(f, *rm)),
)
}
pub fn random_float_unsigned_rounding_mode_triple_gen_var_37(
config: &GenConfig,
) -> It<(Float, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, p, rm)| cbrt_prec_round_valid(x, p, rm)),
)
}
pub fn random_float_rounding_mode_pair_gen_var_48(config: &GenConfig) -> It<(Float, RoundingMode)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(f, rm)| cbrt_round_valid(f, *rm)),
)
}
pub fn random_float_unsigned_unsigned_rounding_mode_quadruple_gen_var_13(
config: &GenConfig,
) -> It<(Float, u64, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_small_n", 32),
config.get_or("mean_small_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, n, prec, rm)| root_u_prec_round_valid(x, n, prec, rm)),
)
}
pub fn random_float_unsigned_unsigned_rounding_mode_quadruple_gen_var_15(
config: &GenConfig,
) -> It<(Float, u64, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_small_n", 32),
config.get_or("mean_small_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, n, prec, rm)| cos_with_period_prec_round_valid(x, n, prec, rm)),
)
}
pub fn random_float_unsigned_unsigned_rounding_mode_quadruple_gen_var_17(
config: &GenConfig,
) -> It<(Float, u64, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_small_n", 32),
config.get_or("mean_small_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, n, prec, rm)| sin_with_period_prec_round_valid(x, n, prec, rm)),
)
}
pub fn random_float_unsigned_unsigned_rounding_mode_quadruple_gen_var_19(
config: &GenConfig,
) -> It<(Float, u64, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_small_n", 32),
config.get_or("mean_small_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, n, prec, rm)| atan_with_period_prec_round_valid(x, n, prec, rm)),
)
}
pub fn random_float_unsigned_unsigned_rounding_mode_quadruple_gen_var_21(
config: &GenConfig,
) -> It<(Float, u64, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_small_n", 32),
config.get_or("mean_small_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, n, prec, rm)| asin_with_period_prec_round_valid(x, n, prec, rm)),
)
}
pub fn random_float_unsigned_unsigned_rounding_mode_quadruple_gen_var_23(
config: &GenConfig,
) -> It<(Float, u64, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_small_n", 32),
config.get_or("mean_small_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, n, prec, rm)| acos_with_period_prec_round_valid(x, n, prec, rm)),
)
}
pub fn random_float_unsigned_unsigned_rounding_mode_quadruple_gen_var_25(
config: &GenConfig,
) -> It<(Float, u64, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_small_n", 32),
config.get_or("mean_small_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, n, prec, rm)| asec_with_period_prec_round_valid(x, n, prec, rm)),
)
}
pub fn random_float_unsigned_unsigned_rounding_mode_quadruple_gen_var_14(
config: &GenConfig,
) -> It<(Float, u64, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_mixed_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_small_n", 32),
config.get_or("mean_small_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, n, prec, rm)| root_u_prec_round_valid(x, n, prec, rm)),
)
}
pub fn random_float_unsigned_unsigned_rounding_mode_quadruple_gen_var_16(
config: &GenConfig,
) -> It<(Float, u64, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_mixed_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_small_n", 32),
config.get_or("mean_small_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, n, prec, rm)| cos_with_period_prec_round_valid(x, n, prec, rm)),
)
}
pub fn random_float_unsigned_unsigned_rounding_mode_quadruple_gen_var_18(
config: &GenConfig,
) -> It<(Float, u64, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_mixed_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_small_n", 32),
config.get_or("mean_small_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, n, prec, rm)| sin_with_period_prec_round_valid(x, n, prec, rm)),
)
}
pub fn random_float_unsigned_unsigned_rounding_mode_quadruple_gen_var_20(
config: &GenConfig,
) -> It<(Float, u64, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_mixed_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_small_n", 32),
config.get_or("mean_small_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, n, prec, rm)| atan_with_period_prec_round_valid(x, n, prec, rm)),
)
}
pub fn random_float_unsigned_unsigned_rounding_mode_quadruple_gen_var_22(
config: &GenConfig,
) -> It<(Float, u64, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_mixed_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_small_n", 32),
config.get_or("mean_small_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, n, prec, rm)| asin_with_period_prec_round_valid(x, n, prec, rm)),
)
}
pub fn random_float_unsigned_unsigned_rounding_mode_quadruple_gen_var_24(
config: &GenConfig,
) -> It<(Float, u64, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_mixed_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_small_n", 32),
config.get_or("mean_small_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, n, prec, rm)| acos_with_period_prec_round_valid(x, n, prec, rm)),
)
}
pub fn random_float_unsigned_unsigned_rounding_mode_quadruple_gen_var_26(
config: &GenConfig,
) -> It<(Float, u64, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_mixed_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_small_n", 32),
config.get_or("mean_small_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, n, prec, rm)| asec_with_period_prec_round_valid(x, n, prec, rm)),
)
}
pub fn random_float_signed_unsigned_rounding_mode_quadruple_gen_var_13(
config: &GenConfig,
) -> It<(Float, i64, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_signeds(
seed,
config.get_or("mean_small_n", 32),
config.get_or("mean_small_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, n, prec, rm)| root_s_prec_round_valid(x, n, prec, rm)),
)
}
pub fn random_float_signed_unsigned_rounding_mode_quadruple_gen_var_14(
config: &GenConfig,
) -> It<(Float, i64, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_mixed_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_signeds(
seed,
config.get_or("mean_small_n", 32),
config.get_or("mean_small_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, n, prec, rm)| root_s_prec_round_valid(x, n, prec, rm)),
)
}
pub fn random_float_signed_unsigned_rounding_mode_quadruple_gen_var_17(
config: &GenConfig,
) -> It<(Float, i64, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_signeds(
seed,
config.get_or("mean_small_n", 32),
config.get_or("mean_small_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, n, prec, rm)| compound_prec_round_valid(x, n, prec, rm)),
)
}
pub fn random_float_signed_unsigned_rounding_mode_quadruple_gen_var_18(
config: &GenConfig,
) -> It<(Float, i64, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_mixed_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_signeds(
seed,
config.get_or("mean_small_n", 32),
config.get_or("mean_small_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, n, prec, rm)| compound_prec_round_valid(x, n, prec, rm)),
)
}
pub fn random_rational_unsigned_unsigned_rounding_mode_quadruple_gen_var_3(
config: &GenConfig,
) -> It<(Rational, u64, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_base_n", 16),
config.get_or("mean_base_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref n, k, prec, rm)| root_u_rational_prec_round_valid(n, k, prec, rm)),
)
}
pub fn random_rational_unsigned_unsigned_rounding_mode_quadruple_gen_var_4(
config: &GenConfig,
) -> It<(Rational, u64, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_base_n", 16),
config.get_or("mean_base_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref n, k, prec, rm)| cos_with_period_rational_prec_round_valid(n, k, prec, rm)),
)
}
pub fn random_rational_unsigned_unsigned_rounding_mode_quadruple_gen_var_5(
config: &GenConfig,
) -> It<(Rational, u64, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_base_n", 16),
config.get_or("mean_base_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref n, k, prec, rm)| sin_with_period_rational_prec_round_valid(n, k, prec, rm)),
)
}
pub fn random_rational_unsigned_unsigned_rounding_mode_quadruple_gen_var_6(
config: &GenConfig,
) -> It<(Rational, u64, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_base_n", 16),
config.get_or("mean_base_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref n, k, prec, rm)| atan_with_period_rational_prec_round_valid(n, k, prec, rm)),
)
}
pub fn random_rational_unsigned_unsigned_rounding_mode_quadruple_gen_var_7(
config: &GenConfig,
) -> It<(Rational, u64, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_base_n", 16),
config.get_or("mean_base_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref n, k, prec, rm)| asin_with_period_rational_prec_round_valid(n, k, prec, rm)),
)
}
pub fn random_rational_unsigned_unsigned_rounding_mode_quadruple_gen_var_8(
config: &GenConfig,
) -> It<(Rational, u64, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_base_n", 16),
config.get_or("mean_base_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref n, k, prec, rm)| acos_with_period_rational_prec_round_valid(n, k, prec, rm)),
)
}
pub fn random_rational_unsigned_unsigned_rounding_mode_quadruple_gen_var_9(
config: &GenConfig,
) -> It<(Rational, u64, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_base_n", 16),
config.get_or("mean_base_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref n, k, prec, rm)| asec_with_period_rational_prec_round_valid(n, k, prec, rm)),
)
}
pub fn random_rational_signed_unsigned_rounding_mode_quadruple_gen_var_2(
config: &GenConfig,
) -> It<(Rational, i64, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_signeds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref n, k, prec, rm)| root_s_rational_prec_round_valid(n, k, prec, rm)),
)
}
pub(crate) fn unpack_strtofr_parts(v: u64, rug_compatible: bool) -> (u8, u32) {
let base = if rug_compatible {
u8::exact_from(2 + v % 35)
} else {
let raw = v % 62;
if raw == 0 { 0 } else { u8::exact_from(raw + 1) }
};
(
base,
u32::exact_from((v >> 8) % u64::from(STRTOFR_COMBO_COUNT)),
)
}
fn random_strtofr_quadruples(
config: &GenConfig,
rug_compatible: bool,
) -> It<(String, u8, u64, RoundingMode)> {
let mean_digits_n = config.get_or("mean_digits_n", 8);
let mean_digits_d = config.get_or("mean_digits_d", 1);
let mean_prec_n = config.get_or("mean_small_n", 64);
let mean_prec_d = config.get_or("mean_small_d", 1);
Box::new(
random_quadruples(
EXAMPLE_SEED,
&random_primitive_ints::<u64>,
&move |seed| {
random_vecs_min_length(
seed,
1,
&|seed_2| random_unsigned_inclusive_range(seed_2, 0, 61),
mean_digits_n,
mean_digits_d,
)
},
&random_primitive_ints::<i64>,
&move |seed| {
random_pairs(
seed,
&|seed_2| geometric_random_positive_unsigneds(seed_2, mean_prec_n, mean_prec_d),
&random_rounding_modes,
)
},
)
.map(
move |(v, digits, exp, (prec, rm)): (u64, Vec<u8>, i64, (u64, RoundingMode))| {
let (base, combo) = unpack_strtofr_parts(v, rug_compatible);
(
strtofr_string_from_parts(base, combo, &digits, exp, rug_compatible),
base,
prec,
rm,
)
},
),
)
}
pub fn random_string_unsigned_unsigned_rounding_mode_quadruple_gen_var_1(
config: &GenConfig,
) -> It<(String, u8, u64, RoundingMode)> {
Box::new(
random_strtofr_quadruples(config, false)
.filter(|(s, base, prec, rm)| valid_strtofr_quadruple(s, *base, *prec, *rm)),
)
}
pub fn random_string_unsigned_unsigned_rounding_mode_quadruple_gen_var_2(
config: &GenConfig,
) -> It<(String, u8, u64, RoundingMode)> {
Box::new(random_strtofr_quadruples(config, true).filter(|(_, _, _, rm)| *rm != Exact))
}
pub fn random_string_unsigned_unsigned_rounding_mode_quadruple_gen_var_3(
config: &GenConfig,
) -> It<(String, u8, u64, RoundingMode)> {
let mean_length_n = config.get_or("mean_length_n", 16);
let mean_length_d = config.get_or("mean_length_d", 1);
let mean_prec_n = config.get_or("mean_small_n", 64);
let mean_prec_d = config.get_or("mean_small_d", 1);
Box::new(
random_triples(
EXAMPLE_SEED,
&move |seed| {
random_strings_using_chars(
seed,
&|seed_2| {
random_values_from_vec(seed_2, STRTOFR_STRING_CHARS.chars().collect())
},
mean_length_n,
mean_length_d,
)
},
&random_primitive_ints::<u64>,
&move |seed| {
random_pairs(
seed,
&|seed_2| geometric_random_positive_unsigneds(seed_2, mean_prec_n, mean_prec_d),
&random_rounding_modes,
)
},
)
.map(|(s, v, (prec, rm)): (String, u64, (u64, RoundingMode))| {
let raw = v % 62;
let base = if raw == 0 { 0 } else { u8::exact_from(raw + 1) };
(s, base, prec, rm)
})
.filter(|(s, base, prec, rm)| valid_strtofr_quadruple(s, *base, *prec, *rm)),
)
}
pub(crate) fn random_sci_string_triples(
config: &GenConfig,
striped: bool,
) -> It<(String, FromSciStringOptions, u64)> {
let mean_digits_n = config.get_or("mean_digits_n", if striped { 32 } else { 8 });
let mean_digits_d = config.get_or("mean_digits_d", 1);
let mean_stripe_n = config.get_or("mean_stripe_n", 32);
let mean_stripe_d = config.get_or("mean_stripe_d", 1);
let mean_prec_n = config.get_or("mean_small_n", 64);
let mean_prec_d = config.get_or("mean_small_d", 1);
Box::new(
random_quadruples(
EXAMPLE_SEED,
&random_primitive_ints::<u64>,
&move |seed| {
random_vecs_min_length(
seed,
1,
&|seed_2| random_unsigned_inclusive_range(seed_2, 0, 35),
mean_digits_n,
mean_digits_d,
)
},
&move |seed| {
if striped {
Box::new(striped_random_signeds::<i64>(
seed,
mean_stripe_n,
mean_stripe_d,
)) as It<i64>
} else {
Box::new(random_primitive_ints::<i64>(seed)) as It<i64>
}
},
&move |seed| {
random_pairs(
seed,
&|seed_2| geometric_random_positive_unsigneds(seed_2, mean_prec_n, mean_prec_d),
&random_rounding_modes,
)
},
)
.map(
move |(v, mut digits, exp, (prec, rm)): (u64, Vec<u8>, i64, (u64, RoundingMode))| {
let base = u8::exact_from(2 + v % 35);
let combo = u32::exact_from((v >> 8) % u64::from(SCI_STRING_COMBO_COUNT));
if striped {
let len = digits.len();
let split = usize::exact_from((v >> 16) % u64::exact_from(len + 1));
let run = u8::exact_from((v >> 24) % 36);
digits[split..].fill(run);
}
let mut options = FromSciStringOptions::default();
options.set_base(base);
options.set_rounding_mode(rm);
(
sci_string_from_parts(base, combo, &digits, exp),
options,
prec,
)
},
),
)
}
pub fn random_string_from_sci_string_options_unsigned_triple_gen_var_1(
config: &GenConfig,
) -> It<(String, FromSciStringOptions, u64)> {
Box::new(
random_sci_string_triples(config, false)
.filter(|(s, options, prec)| valid_float_from_sci_string_triple(s, *options, *prec)),
)
}
pub fn random_string_from_sci_string_options_unsigned_triple_gen_var_2(
config: &GenConfig,
) -> It<(String, FromSciStringOptions, u64)> {
let mean_prec_n = config.get_or("mean_small_n", 64);
let mean_prec_d = config.get_or("mean_small_d", 1);
Box::new(
base_gen::random_string_from_sci_string_options_pair_gen_var_1(config)
.zip(geometric_random_positive_unsigneds(
EXAMPLE_SEED.fork("prec"),
mean_prec_n,
mean_prec_d,
))
.map(|((s, options), prec)| (s, options, prec))
.filter(|(s, options, prec)| valid_float_from_sci_string_triple(s, *options, *prec)),
)
}
pub fn random_float_unsigned_rounding_mode_triple_gen_var_48(
config: &GenConfig,
) -> It<(Float, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, p, rm)| acsc_prec_round_valid(x, p, rm)),
)
}
pub fn random_float_unsigned_rounding_mode_triple_gen_var_49(
config: &GenConfig,
) -> It<(Float, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, p, rm)| acsc_prec_round_valid(x, p, rm)),
)
}
pub fn random_float_rounding_mode_pair_gen_var_51(config: &GenConfig) -> It<(Float, RoundingMode)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(f, rm)| acsc_round_valid(f, *rm)),
)
}
pub fn random_rational_unsigned_rounding_mode_triple_gen_var_13(
config: &GenConfig,
) -> It<(Rational, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref n, prec, rm)| acsc_rational_prec_round_valid(n, prec, rm)),
)
}
pub fn random_float_unsigned_unsigned_rounding_mode_quadruple_gen_var_27(
config: &GenConfig,
) -> It<(Float, u64, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_small_n", 32),
config.get_or("mean_small_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, n, prec, rm)| acsc_with_period_prec_round_valid(x, n, prec, rm)),
)
}
pub fn random_float_unsigned_unsigned_rounding_mode_quadruple_gen_var_28(
config: &GenConfig,
) -> It<(Float, u64, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_mixed_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_small_n", 32),
config.get_or("mean_small_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, n, prec, rm)| acsc_with_period_prec_round_valid(x, n, prec, rm)),
)
}
pub fn random_float_unsigned_rounding_mode_triple_gen_var_50(
config: &GenConfig,
) -> It<(Float, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, u, rm)| acsc_with_period_round_valid(x, u, rm)),
)
}
pub fn random_rational_unsigned_unsigned_rounding_mode_quadruple_gen_var_10(
config: &GenConfig,
) -> It<(Rational, u64, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_base_n", 16),
config.get_or("mean_base_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref n, k, prec, rm)| acsc_with_period_rational_prec_round_valid(n, k, prec, rm)),
)
}
pub fn random_float_unsigned_rounding_mode_triple_gen_var_51(
config: &GenConfig,
) -> It<(Float, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, p, rm)| acot_prec_round_valid(x, p, rm)),
)
}
pub fn random_float_unsigned_rounding_mode_triple_gen_var_52(
config: &GenConfig,
) -> It<(Float, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, p, rm)| acot_prec_round_valid(x, p, rm)),
)
}
pub fn random_float_rounding_mode_pair_gen_var_52(config: &GenConfig) -> It<(Float, RoundingMode)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&random_rounding_modes,
)
.filter(|(f, rm)| acot_round_valid(f, *rm)),
)
}
pub fn random_rational_unsigned_rounding_mode_triple_gen_var_14(
config: &GenConfig,
) -> It<(Rational, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref n, prec, rm)| acot_rational_prec_round_valid(n, prec, rm)),
)
}
pub fn random_rational_unsigned_rounding_mode_triple_gen_var_16(
config: &GenConfig,
) -> It<(Rational, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref n, prec, rm)| atanh_rational_prec_round_valid(n, prec, rm)),
)
}
pub fn random_rational_unsigned_rounding_mode_triple_gen_var_15(
config: &GenConfig,
) -> It<(Rational, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_non_negative_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
.map(|r| r + Rational::ONE)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref n, prec, rm)| acosh_rational_prec_round_valid(n, prec, rm)),
)
}
pub fn random_rational_unsigned_rounding_mode_triple_gen_var_18(
config: &GenConfig,
) -> It<(Rational, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
.map(|r| {
if r >= 0u32 {
r + Rational::ONE
} else {
r - Rational::ONE
}
})
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref n, prec, rm)| acoth_rational_prec_round_valid(n, prec, rm)),
)
}
pub fn random_rational_unsigned_rounding_mode_triple_gen_var_17(
config: &GenConfig,
) -> It<(Rational, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_non_negative_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
.map(|r| (r + Rational::ONE).reciprocal())
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref n, prec, rm)| asech_rational_prec_round_valid(n, prec, rm)),
)
}
pub fn random_float_unsigned_unsigned_rounding_mode_quadruple_gen_var_29(
config: &GenConfig,
) -> It<(Float, u64, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_small_n", 32),
config.get_or("mean_small_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, n, prec, rm)| acot_with_period_prec_round_valid(x, n, prec, rm)),
)
}
pub fn random_float_unsigned_unsigned_rounding_mode_quadruple_gen_var_30(
config: &GenConfig,
) -> It<(Float, u64, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_mixed_extreme_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_small_n", 32),
config.get_or("mean_small_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, n, prec, rm)| acot_with_period_prec_round_valid(x, n, prec, rm)),
)
}
pub fn random_float_unsigned_rounding_mode_triple_gen_var_53(
config: &GenConfig,
) -> It<(Float, u64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
random_floats(
seed,
config.get_or("mean_exponent_n", 64),
config.get_or("mean_exponent_d", 1),
config.get_or("mean_precision_n", 64),
config.get_or("mean_precision_d", 1),
config.get_or("mean_zero_p_n", 1),
config.get_or("mean_zero_p_d", 64),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref x, u, rm)| acot_with_period_round_valid(x, u, rm)),
)
}
pub fn random_rational_unsigned_unsigned_rounding_mode_quadruple_gen_var_11(
config: &GenConfig,
) -> It<(Rational, u64, u64, RoundingMode)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
random_rationals(
seed,
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_base_n", 16),
config.get_or("mean_base_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|&(ref n, k, prec, rm)| acot_with_period_rational_prec_round_valid(n, k, prec, rm)),
)
}