use crate::Rational;
use crate::gaussian_rational::GaussianRational;
use crate::gaussian_rational::random::{
striped_random_gaussian_rationals, striped_random_imaginary_gaussian_rationals,
striped_random_real_gaussian_rationals,
};
use crate::rational::random::{
RandomRationalsFromDoubleAndSign, striped_random_negative_rationals,
striped_random_non_negative_rationals, striped_random_nonzero_rationals,
striped_random_positive_rationals, striped_random_rationals,
};
use crate::rational_polynomial::RationalPolynomial;
use crate::rational_polynomial::random::striped_random_rational_polynomials;
use crate::rational_vector::RationalVector;
use crate::rational_vector::random::striped_random_rational_vectors;
use crate::test_util::extra_variadic::{
random_ordered_unique_triples, random_quadruples, random_quadruples_from_single,
random_quadruples_xxxy, random_quadruples_xxyz, random_triples, random_triples_from_single,
random_triples_xxy, random_triples_xyy,
};
use crate::test_util::generators::round_to_multiple_rational_filter;
use malachite_base::bools::random::random_bools;
use malachite_base::num::arithmetic::traits::{IsPowerOf2, Square};
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::{One, Two};
use malachite_base::num::basic::unsigneds::PrimitiveUnsigned;
use malachite_base::num::comparison::traits::PartialOrdAbs;
use malachite_base::num::conversion::string::options::ToSciOptions;
use malachite_base::num::conversion::string::options::random::random_to_sci_options;
use malachite_base::num::conversion::traits::{ConvertibleFrom, ExactFrom, IsInteger, ToSci};
use malachite_base::num::logic::traits::SignificantBits;
use malachite_base::num::random::geometric::{
geometric_random_nonzero_signeds, geometric_random_positive_unsigneds,
geometric_random_signeds, geometric_random_unsigned_inclusive_range,
geometric_random_unsigneds,
};
use malachite_base::num::random::random_unsigned_inclusive_range;
use malachite_base::num::random::striped::{
striped_random_signeds, striped_random_unsigned_inclusive_range, striped_random_unsigneds,
};
use malachite_base::num::random::{
random_finite_primitive_floats, random_nonzero_finite_primitive_floats, random_primitive_floats,
};
use malachite_base::polynomial::ComposePowerOfX;
use malachite_base::random::EXAMPLE_SEED;
use malachite_base::rounding_modes::RoundingMode::{self, *};
use malachite_base::rounding_modes::random::random_rounding_modes;
use malachite_base::test_util::generators::common::{GenConfig, It};
use malachite_base::tuples::random::{
random_ordered_unique_pairs, random_pairs, random_pairs_from_single,
};
use malachite_base::unions::Union2;
use malachite_base::unions::random::random_union2s;
use malachite_base::unsigned_polynomial::UnsignedPolynomial;
use malachite_base::unsigned_polynomial::random::striped_random_unsigned_polynomials;
use malachite_base::unsigned_vector::UnsignedVector;
use malachite_base::unsigned_vector::random::striped_random_unsigned_vectors;
use malachite_base::vecs::random::random_vecs;
use malachite_nz::gaussian_integer::GaussianInteger;
use malachite_nz::gaussian_integer::random::striped_random_gaussian_integers;
use malachite_nz::integer::Integer;
use malachite_nz::integer::random::striped_random_integers;
use malachite_nz::integer_polynomial::IntegerPolynomial;
use malachite_nz::integer_polynomial::random::{
striped_random_integer_polynomials, striped_random_integer_polynomials_min_degree,
};
use malachite_nz::integer_vector::IntegerVector;
use malachite_nz::integer_vector::random::striped_random_integer_vectors;
use malachite_nz::natural::Natural;
use malachite_nz::natural::random::{
striped_random_natural_range_to_infinity, striped_random_naturals,
striped_random_positive_naturals,
};
use malachite_nz::natural_polynomial::NaturalPolynomial;
use malachite_nz::natural_polynomial::random::striped_random_natural_polynomials;
use malachite_nz::natural_vector::NaturalVector;
use malachite_nz::natural_vector::random::striped_random_natural_vectors;
use malachite_nz::test_util::generators::random::random_gmp_format_strings;
use num::BigRational;
use std::ops::Shr;
pub fn special_random_gaussian_rational_gen(config: &GenConfig) -> It<GaussianRational> {
Box::new(striped_random_gaussian_rationals(
EXAMPLE_SEED,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
))
}
pub fn special_random_gaussian_rational_pair_gen(
config: &GenConfig,
) -> It<(GaussianRational, GaussianRational)> {
Box::new(random_pairs_from_single(striped_random_gaussian_rationals(
EXAMPLE_SEED,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)))
}
pub fn special_random_gaussian_rational_pair_gen_var_1(
config: &GenConfig,
) -> It<(GaussianRational, GaussianRational)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_gaussian_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
striped_random_gaussian_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
.filter(|x| x.real != 0u32 || x.imaginary != 0u32)
},
))
}
pub fn special_random_gaussian_rational_triple_gen(
config: &GenConfig,
) -> It<(GaussianRational, GaussianRational, GaussianRational)> {
Box::new(random_triples_from_single(
striped_random_gaussian_rationals(
EXAMPLE_SEED,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
),
))
}
pub fn special_random_gaussian_rational_gen_var_1(config: &GenConfig) -> It<GaussianRational> {
Box::new(striped_random_real_gaussian_rationals(
EXAMPLE_SEED,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
))
}
pub fn special_random_gaussian_rational_gen_var_2(config: &GenConfig) -> It<GaussianRational> {
Box::new(striped_random_imaginary_gaussian_rationals(
EXAMPLE_SEED,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
))
}
pub fn special_random_gaussian_rational_gen_var_3(config: &GenConfig) -> It<GaussianRational> {
Box::new(
striped_random_gaussian_rationals(
EXAMPLE_SEED,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
.filter(|x| x.real != 0u32 || x.imaginary != 0u32),
)
}
pub fn special_random_gaussian_rational_gen_var_4(config: &GenConfig) -> It<GaussianRational> {
Box::new(
striped_random_gaussian_rationals(
EXAMPLE_SEED,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
.map(Square::square),
)
}
pub fn special_random_gaussian_rational_gaussian_integer_pair_gen(
config: &GenConfig,
) -> It<(GaussianRational, GaussianInteger)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_gaussian_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
striped_random_gaussian_integers(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
))
}
pub fn special_random_gaussian_rational_integer_pair_gen(
config: &GenConfig,
) -> It<(GaussianRational, Integer)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_gaussian_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
striped_random_integers(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
))
}
pub fn special_random_gaussian_rational_natural_pair_gen(
config: &GenConfig,
) -> It<(GaussianRational, Natural)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_gaussian_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
striped_random_naturals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
))
}
pub fn special_random_gaussian_rational_primitive_float_pair_gen<T: PrimitiveFloat>(
config: &GenConfig,
) -> It<(GaussianRational, T)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_gaussian_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&random_primitive_floats,
))
}
pub fn special_random_gaussian_rational_signed_pair_gen<T: PrimitiveSigned>(
config: &GenConfig,
) -> It<(GaussianRational, T)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_gaussian_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
striped_random_signeds(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
)
},
))
}
pub fn special_random_gaussian_rational_unsigned_pair_gen<T: PrimitiveUnsigned>(
config: &GenConfig,
) -> It<(GaussianRational, T)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_gaussian_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
striped_random_unsigneds(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
)
},
))
}
pub fn special_random_gaussian_rational_signed_pair_gen_var_1<T: PrimitiveSigned>(
config: &GenConfig,
) -> It<(GaussianRational, T)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_gaussian_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
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),
)
},
))
}
pub fn special_random_gaussian_rational_unsigned_pair_gen_var_1<T: PrimitiveUnsigned>(
config: &GenConfig,
) -> It<(GaussianRational, T)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_gaussian_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
))
}
pub fn special_random_gaussian_rational_unsigned_pair_gen_var_2<T: PrimitiveUnsigned>(
config: &GenConfig,
) -> It<(GaussianRational, T)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_gaussian_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
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 special_random_gaussian_rational_rational_pair_gen(
config: &GenConfig,
) -> It<(GaussianRational, Rational)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_gaussian_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
striped_random_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
))
}
pub fn special_random_natural_pair_gen_var_1(config: &GenConfig) -> It<(Natural, Natural)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_naturals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
striped_random_positive_naturals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
)
.map(|(a, d)| {
let m = &a + d;
(a, m)
})
.filter(|(_, m)| *m > 2u32),
)
}
pub fn special_random_natural_quadruple_gen_var_1(
config: &GenConfig,
) -> It<(Natural, Natural, Natural, Natural)> {
Box::new(
random_quadruples(
EXAMPLE_SEED,
&|seed| {
striped_random_naturals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
striped_random_positive_naturals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
striped_random_positive_naturals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
striped_random_positive_naturals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
)
.map(|(a, d, n_bound, d_bound)| {
let m = &a + d;
(a, m, n_bound, d_bound)
}),
)
}
pub fn special_random_rational_gen(config: &GenConfig) -> It<Rational> {
Box::new(striped_random_rationals(
EXAMPLE_SEED,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
))
}
pub fn special_random_rational_gen_var_1(config: &GenConfig) -> It<Rational> {
Box::new(striped_random_nonzero_rationals(
EXAMPLE_SEED,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
))
}
pub fn special_random_rational_gen_var_2(config: &GenConfig) -> It<Rational> {
Box::new(striped_random_positive_rationals(
EXAMPLE_SEED,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
))
}
pub fn special_random_rational_gen_var_3(config: &GenConfig) -> It<Rational> {
Box::new(striped_random_non_negative_rationals(
EXAMPLE_SEED,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
))
}
pub fn special_random_rational_gen_var_4<T: PrimitiveFloat>(_config: &GenConfig) -> It<Rational>
where
Rational: TryFrom<T>,
{
Box::new(random_finite_primitive_floats(EXAMPLE_SEED).map(Rational::exact_from))
}
pub fn special_random_rational_gen_var_5<
T: for<'a> ConvertibleFrom<&'a Rational> + PrimitiveFloat,
>(
config: &GenConfig,
) -> It<Rational> {
Box::new(
striped_random_rationals(
EXAMPLE_SEED,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
.filter(|q| !T::convertible_from(q)),
)
}
pub fn special_random_rational_gen_var_6<T: PrimitiveFloat>(_config: &GenConfig) -> It<Rational>
where
Rational: TryFrom<T>,
{
Box::new(
random_nonzero_finite_primitive_floats(EXAMPLE_SEED).map(|f| {
let x = Rational::exact_from(f);
let y = Rational::exact_from(if f > T::ZERO {
f.next_lower()
} else {
f.next_higher()
});
(x + y) >> 1u32
}),
)
}
pub fn special_random_rational_gen_var_7(config: &GenConfig) -> It<Rational> {
Box::new(
striped_random_positive_rationals(
EXAMPLE_SEED,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
.filter(|x| *x != 1u32),
)
}
pub fn special_random_rational_integer_pair_gen(config: &GenConfig) -> It<(Rational, Integer)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
striped_random_integers(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
))
}
pub fn special_random_rational_integer_integer_triple_gen(
config: &GenConfig,
) -> It<(Rational, Integer, Integer)> {
Box::new(random_triples_xyy(
EXAMPLE_SEED,
&|seed| {
striped_random_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
striped_random_integers(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
))
}
pub fn special_random_rational_natural_pair_gen(config: &GenConfig) -> It<(Rational, Natural)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
striped_random_naturals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
))
}
pub fn special_random_rational_natural_pair_gen_var_1(
config: &GenConfig,
) -> It<(Rational, Natural)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
striped_random_natural_range_to_infinity(
seed,
Natural::TWO,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
))
}
pub fn special_random_rational_natural_pair_gen_var_2(
config: &GenConfig,
) -> It<(Rational, Natural)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| RandomRationalsFromDoubleAndSign {
bs: random_bools(seed.fork("sign")),
xs: geometric_random_unsigneds::<u32>(
seed.fork("numerator"),
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
.map(Natural::from),
ys: geometric_random_positive_unsigneds::<u32>(
seed.fork("denominator"),
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
.map(Natural::from),
},
&|seed| {
striped_random_natural_range_to_infinity(
seed,
Natural::TWO,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
))
}
pub fn special_random_rational_natural_pair_gen_var_3(
config: &GenConfig,
) -> It<(Rational, Natural)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
striped_random_positive_naturals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
))
}
pub fn special_random_rational_natural_pair_gen_var_4(
config: &GenConfig,
) -> It<(Rational, Natural)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds::<u64>(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
.map(Natural::from)
},
))
}
pub fn special_random_rational_natural_pair_gen_var_5(
config: &GenConfig,
) -> It<(Rational, Natural)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds::<u64>(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
.map(Natural::from)
},
)
.map(|(x, n)| {
let d = x.to_denominator();
(x, n + d)
}),
)
}
pub fn special_random_rational_natural_natural_triple_gen(
config: &GenConfig,
) -> It<(Rational, Natural, Natural)> {
Box::new(random_triples_xyy(
EXAMPLE_SEED,
&|seed| {
striped_random_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
striped_random_naturals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
))
}
pub fn special_random_rational_natural_natural_triple_gen_var_1(
config: &GenConfig,
) -> It<(Rational, Natural, Natural)> {
Box::new(
random_triples_xyy(
EXAMPLE_SEED,
&|seed| {
striped_random_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
striped_random_positive_naturals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
)
.filter(|(_, x, y)| x < y),
)
}
pub fn special_random_rational_primitive_float_pair_gen<T: PrimitiveFloat>(
config: &GenConfig,
) -> It<(Rational, T)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&random_primitive_floats,
))
}
pub fn special_random_rational_primitive_float_primitive_float_triple_gen<T: PrimitiveFloat>(
config: &GenConfig,
) -> It<(Rational, T, T)> {
Box::new(random_triples_xyy(
EXAMPLE_SEED,
&|seed| {
striped_random_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&random_primitive_floats,
))
}
pub fn special_random_rational_signed_pair_gen<T: PrimitiveSigned>(
config: &GenConfig,
) -> It<(Rational, T)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
striped_random_signeds(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
)
},
))
}
pub fn special_random_rational_signed_pair_gen_var_1<T: PrimitiveSigned>(
config: &GenConfig,
) -> It<(Rational, T)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
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),
)
},
))
}
pub fn special_random_rational_signed_pair_gen_var_2<T: PrimitiveSigned>(
config: &GenConfig,
) -> It<(Rational, T)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
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),
)
},
)
.filter(|(x, exp)| *exp >= T::ZERO || *x != 0u32),
)
}
pub fn special_random_rational_signed_pair_gen_var_3<T: PrimitiveSigned>(
config: &GenConfig,
) -> It<(Rational, T)>
where
for<'a> &'a Rational: Shr<T, Output = Rational>,
{
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_signeds::<T>(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
)
.filter(|(x, pow)| !x.denominator_ref().is_power_of_2() || !(x >> *pow).is_integer()),
)
}
pub fn special_random_rational_signed_pair_gen_var_4<T: PrimitiveSigned>(
config: &GenConfig,
) -> It<(Rational, T)> {
Box::new(
random_union2s(
EXAMPLE_SEED,
&|seed| {
random_pairs(
seed,
&|seed_2| {
striped_random_non_negative_rationals(
seed_2,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed_2| {
geometric_random_nonzero_signeds(
seed_2,
config.get_or("small_unsigned_mean_n", 32),
config.get_or("small_unsigned_mean_d", 1),
)
},
)
.filter(|(q, i)| *i > T::ZERO || *q != 0u32)
},
&|seed| {
random_pairs(
seed,
&|seed_2| {
striped_random_negative_rationals(
seed_2,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed_2| {
geometric_random_signeds::<T>(
seed_2,
config.get_or("small_unsigned_mean_n", 32),
config.get_or("small_unsigned_mean_d", 1),
)
.filter_map(|i| i.arithmetic_checked_shl(1).map(|j| j | T::ONE))
},
)
},
)
.map(Union2::unwrap),
)
}
pub fn special_random_rational_signed_pair_gen_var_5<T: PrimitiveSigned>(
config: &GenConfig,
) -> It<(Rational, T)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_positive_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
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),
)
},
))
}
pub fn special_random_rational_signed_signed_triple_gen<T: PrimitiveSigned>(
config: &GenConfig,
) -> It<(Rational, T, T)> {
Box::new(random_triples_xyy(
EXAMPLE_SEED,
&|seed| {
striped_random_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
striped_random_signeds(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
)
},
))
}
pub fn special_random_rational_signed_signed_triple_gen_var_1<T: PrimitiveSigned>(
config: &GenConfig,
) -> It<(Rational, T, T)> {
Box::new(
random_triples_xyy(
EXAMPLE_SEED,
&|seed| {
striped_random_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_signeds::<T>(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
)
.filter(|(x, e, f)| *e >= T::ZERO && *f >= T::ZERO || *x != 0u32),
)
}
pub fn special_random_rational_signed_unsigned_triple_gen_var_1<
T: PrimitiveSigned,
U: PrimitiveUnsigned,
>(
config: &GenConfig,
) -> It<(Rational, T, U)> {
Box::new(random_triples(
EXAMPLE_SEED,
&|seed| {
striped_random_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_signeds::<T>(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds::<U>(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
))
}
pub fn special_random_rational_signed_unsigned_triple_gen_var_2<
T: PrimitiveSigned,
U: PrimitiveUnsigned,
>(
config: &GenConfig,
) -> It<(Rational, T, U)> {
Box::new(random_triples(
EXAMPLE_SEED,
&|seed| {
striped_random_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_nonzero_signeds::<T>(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&|seed| {
geometric_random_positive_unsigneds::<U>(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
))
}
pub fn special_random_rational_signed_rounding_mode_triple_gen_var_1(
config: &GenConfig,
) -> It<(Rational, i64, RoundingMode)> {
Box::new(
random_triples(
EXAMPLE_SEED,
&|seed| {
striped_random_rationals(
seed.fork("xs"),
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_signeds::<i64>(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, i, rm)| {
*rm != Exact || x.denominator_ref().is_power_of_2() && (x >> *i).is_integer()
}),
)
}
pub fn special_random_rational_unsigned_pair_gen<T: PrimitiveUnsigned>(
config: &GenConfig,
) -> It<(Rational, T)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
striped_random_unsigneds(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
)
},
))
}
pub fn special_random_rational_unsigned_pair_gen_var_1<T: PrimitiveUnsigned>(
config: &GenConfig,
) -> It<(Rational, T)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
))
}
pub fn special_random_rational_unsigned_pair_gen_var_2<T: PrimitiveUnsigned>(
config: &GenConfig,
) -> It<(Rational, T)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
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 special_random_rational_unsigned_pair_gen_var_3<T: PrimitiveUnsigned>(
config: &GenConfig,
) -> It<(Rational, T)> {
Box::new(
random_union2s(
EXAMPLE_SEED,
&|seed| {
random_pairs(
seed,
&|seed_2| {
striped_random_non_negative_rationals(
seed_2,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed_2| {
geometric_random_positive_unsigneds(
seed_2,
config.get_or("small_unsigned_mean_n", 32),
config.get_or("small_unsigned_mean_d", 1),
)
},
)
},
&|seed| {
random_pairs(
seed,
&|seed_2| {
striped_random_negative_rationals(
seed_2,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed_2| {
geometric_random_unsigneds::<T>(
seed_2,
config.get_or("small_unsigned_mean_n", 32),
config.get_or("small_unsigned_mean_d", 1),
)
.filter_map(|i| i.arithmetic_checked_shl(1).map(|j| j | T::ONE))
},
)
},
)
.map(Union2::unwrap),
)
}
pub fn special_random_rational_unsigned_pair_gen_var_4(config: &GenConfig) -> It<(Rational, u8)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
striped_random_unsigned_inclusive_range(
seed,
2,
36,
config.get_or("mean_stripe_n", 4),
config.get_or("mean_stripe_d", 1),
)
},
))
}
pub fn special_random_rational_unsigned_pair_gen_var_5<T: PrimitiveUnsigned>(
config: &GenConfig,
) -> It<(Rational, T)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_nonzero_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
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 special_random_rational_unsigned_pair_gen_var_6<T: PrimitiveUnsigned>(
config: &GenConfig,
) -> It<(Rational, T)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_non_negative_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
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 special_random_rational_unsigned_pair_gen_var_7<T: PrimitiveUnsigned>(
config: &GenConfig,
) -> It<(Rational, T)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_positive_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_unsigned_inclusive_range(
seed,
T::TWO,
T::MAX,
config.get_or("mean_small_unsigned_n", 32),
config.get_or("mean_small_unsigned_d", 1),
)
},
))
}
pub fn special_random_rational_unsigned_pair_gen_var_8(config: &GenConfig) -> It<(Rational, u8)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
striped_random_unsigned_inclusive_range(
seed,
2,
62,
config.get_or("mean_stripe_n", 4),
config.get_or("mean_stripe_d", 1),
)
},
))
}
pub fn special_random_rational_unsigned_unsigned_triple_gen<T: PrimitiveUnsigned>(
config: &GenConfig,
) -> It<(Rational, T, T)> {
Box::new(random_triples_xyy(
EXAMPLE_SEED,
&|seed| {
striped_random_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
striped_random_unsigneds(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
)
},
))
}
pub fn special_random_rational_unsigned_unsigned_triple_gen_var_1<T: PrimitiveUnsigned>(
config: &GenConfig,
) -> It<(Rational, T, T)> {
Box::new(random_triples_xyy(
EXAMPLE_SEED,
&|seed| {
striped_random_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
))
}
pub fn special_random_rational_pair_gen(config: &GenConfig) -> It<(Rational, Rational)> {
Box::new(random_pairs_from_single(striped_random_rationals(
EXAMPLE_SEED,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)))
}
pub fn special_random_rational_pair_gen_var_1(config: &GenConfig) -> It<(Rational, Rational)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
striped_random_nonzero_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
))
}
pub fn special_random_rational_pair_gen_var_2(config: &GenConfig) -> It<(Rational, Rational)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
striped_random_nonzero_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
)
.filter(|(x, y)| !(x / y).is_integer()),
)
}
pub fn special_random_rational_pair_gen_var_3(config: &GenConfig) -> It<(Rational, Rational)> {
Box::new(random_ordered_unique_pairs(striped_random_rationals(
EXAMPLE_SEED,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)))
}
pub fn special_random_rational_pair_gen_var_4(config: &GenConfig) -> It<(Rational, Rational)> {
Box::new(
random_pairs_from_single(striped_random_rationals(
EXAMPLE_SEED,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
))
.map(|(x, y)| if x <= y { (x, y) } else { (y, x) }),
)
}
pub fn special_random_rational_pair_gen_var_5(config: &GenConfig) -> It<(Rational, Rational)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_positive_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
striped_random_positive_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
.filter(|q| (q - Rational::ONE).gt_abs(&Rational::from_signeds(1, 1000)))
},
))
}
pub fn special_random_rational_pair_gen_var_6(config: &GenConfig) -> It<(Rational, Rational)> {
Box::new(random_pairs_from_single(striped_random_nonzero_rationals(
EXAMPLE_SEED,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)))
}
pub fn special_random_rational_rational_integer_triple_gen(
config: &GenConfig,
) -> It<(Rational, Rational, Integer)> {
Box::new(random_triples_xxy(
EXAMPLE_SEED,
&|seed| {
striped_random_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
striped_random_integers(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
))
}
pub fn special_random_rational_rational_natural_triple_gen(
config: &GenConfig,
) -> It<(Rational, Rational, Natural)> {
Box::new(random_triples_xxy(
EXAMPLE_SEED,
&|seed| {
striped_random_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
striped_random_naturals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
))
}
pub fn special_random_rational_rational_natural_triple_gen_var_1(
config: &GenConfig,
) -> It<(Rational, Rational, Natural)> {
Box::new(random_triples_xxy(
EXAMPLE_SEED,
&|seed| {
striped_random_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
striped_random_positive_naturals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
))
}
pub fn special_random_rational_rational_natural_natural_quadruple_gen_var_1(
config: &GenConfig,
) -> It<(Rational, Rational, Natural, Natural)> {
Box::new(random_quadruples_xxyz(
EXAMPLE_SEED,
&|seed| {
striped_random_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
striped_random_naturals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
striped_random_positive_naturals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
))
}
pub fn special_random_rational_rational_primitive_float_triple_gen<T: PrimitiveFloat>(
config: &GenConfig,
) -> It<(Rational, Rational, T)> {
Box::new(random_triples_xxy(
EXAMPLE_SEED,
&|seed| {
striped_random_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&random_primitive_floats,
))
}
pub fn special_random_rational_rational_signed_triple_gen<T: PrimitiveSigned>(
config: &GenConfig,
) -> It<(Rational, Rational, T)> {
Box::new(random_triples_xxy(
EXAMPLE_SEED,
&|seed| {
striped_random_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
striped_random_signeds(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
)
},
))
}
pub fn special_random_rational_rational_signed_triple_gen_var_1<T: PrimitiveSigned>(
config: &GenConfig,
) -> It<(Rational, Rational, T)> {
Box::new(
random_triples_xxy(
EXAMPLE_SEED,
&|seed| {
striped_random_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
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),
)
},
)
.filter(|(x, y, exp)| *exp >= T::ZERO || *x != 0u32 && *y != 0u32),
)
}
pub fn special_random_rational_rational_unsigned_triple_gen<T: PrimitiveUnsigned>(
config: &GenConfig,
) -> It<(Rational, Rational, T)> {
Box::new(random_triples_xxy(
EXAMPLE_SEED,
&|seed| {
striped_random_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
striped_random_unsigneds(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
)
},
))
}
pub fn special_random_rational_rational_unsigned_triple_gen_var_1<T: PrimitiveUnsigned>(
config: &GenConfig,
) -> It<(Rational, Rational, T)> {
Box::new(random_triples_xxy(
EXAMPLE_SEED,
&|seed| {
striped_random_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
))
}
pub fn special_random_rational_rational_rational_unsigned_quadruple_gen_var_1<
T: PrimitiveUnsigned,
>(
config: &GenConfig,
) -> It<(Rational, Rational, Rational, T)> {
Box::new(random_quadruples_xxxy(
EXAMPLE_SEED,
&|seed| {
striped_random_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
))
}
pub fn special_random_rational_rational_unsigned_triple_gen_var_2<T: PrimitiveUnsigned>(
config: &GenConfig,
) -> It<(Rational, Rational, T)> {
Box::new(random_triples_xxy(
EXAMPLE_SEED,
&|seed| {
striped_random_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
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 special_random_rational_pair_gen_var_9(config: &GenConfig) -> It<(Rational, Rational)> {
Box::new(
striped_random_rationals(
EXAMPLE_SEED,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 2000),
config.get_or("mean_bits_d", 1),
)
.filter(|x| *x != 0u32)
.map(|x| {
let y = &x + (Rational::ONE >> (x.significant_bits() << 1));
(x, y)
}),
)
}
pub fn special_random_rational_triple_gen(
config: &GenConfig,
) -> It<(Rational, Rational, Rational)> {
Box::new(random_triples_from_single(striped_random_rationals(
EXAMPLE_SEED,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)))
}
pub fn special_random_rational_quadruple_gen(
config: &GenConfig,
) -> It<(Rational, Rational, Rational, Rational)> {
Box::new(random_quadruples_from_single(striped_random_rationals(
EXAMPLE_SEED,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)))
}
pub fn special_random_rational_triple_gen_var_1(
config: &GenConfig,
) -> It<(Rational, Rational, Rational)> {
Box::new(random_triples_xxy(
EXAMPLE_SEED,
&|seed| {
striped_random_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
striped_random_nonzero_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
))
}
pub fn special_random_rational_triple_gen_var_2(
config: &GenConfig,
) -> It<(Rational, Rational, Rational)> {
Box::new(random_ordered_unique_triples(striped_random_rationals(
EXAMPLE_SEED,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)))
}
pub fn special_random_rational_triple_gen_var_3(
config: &GenConfig,
) -> It<(Rational, Rational, Rational)> {
Box::new(
random_triples_from_single(striped_random_rationals(
EXAMPLE_SEED,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
))
.map(|(x, y, z)| {
let mut xs = vec![x, y, z];
xs.sort_unstable();
let mut xs = xs.into_iter();
(xs.next().unwrap(), xs.next().unwrap(), xs.next().unwrap())
}),
)
}
pub fn special_random_rational_rational_rounding_mode_triple_gen_var_1(
config: &GenConfig,
) -> It<(Rational, Rational, RoundingMode)> {
Box::new(
random_triples_xxy(
EXAMPLE_SEED,
&|seed| {
striped_random_rationals(
seed.fork("xs"),
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&random_rounding_modes,
)
.filter(round_to_multiple_rational_filter),
)
}
pub fn special_random_rational_rounding_mode_pair_gen(
config: &GenConfig,
) -> It<(Rational, RoundingMode)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&random_rounding_modes,
))
}
pub fn special_random_rational_rounding_mode_pair_gen_var_1(
config: &GenConfig,
) -> It<(Rational, RoundingMode)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, rm)| match rm {
Floor | Up => *x >= 0u32,
Exact => Natural::convertible_from(x),
_ => true,
}),
)
}
pub fn special_random_rational_rounding_mode_pair_gen_var_2(
config: &GenConfig,
) -> It<(Rational, RoundingMode)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, rm)| *rm != Exact || x.is_integer()),
)
}
pub fn special_random_rational_rounding_mode_pair_gen_var_3<
T: for<'a> ConvertibleFrom<&'a Rational> + PrimitiveInt,
>(
config: &GenConfig,
) -> It<(Rational, RoundingMode)>
where
Rational: PartialOrd<T>,
{
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&random_rounding_modes,
)
.filter(|(x, rm)| match rm {
Floor => *x >= T::MIN,
Ceiling => *x <= T::MAX,
Up => *x >= T::MIN && *x <= T::MAX,
Exact => T::convertible_from(x),
_ => true,
}),
)
}
pub fn special_random_rational_rounding_mode_pair_gen_var_4(
config: &GenConfig,
) -> It<(Rational, RoundingMode)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_nonzero_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&random_rounding_modes,
))
}
pub fn special_random_rational_rounding_mode_pair_gen_var_5<
T: for<'a> ConvertibleFrom<&'a Rational> + PrimitiveFloat,
>(
config: &GenConfig,
) -> It<(Rational, RoundingMode)>
where
Rational: TryFrom<T>,
{
let max = Rational::exact_from(T::MAX_FINITE);
let min = -&max;
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&random_rounding_modes,
)
.filter(move |(x, rm)| match rm {
Floor => *x >= min,
Ceiling => *x <= max,
Up => *x >= min && *x <= max,
Exact => T::convertible_from(x),
_ => true,
}),
)
}
pub fn special_random_rational_string_pair_gen_var_1(config: &GenConfig) -> It<(Rational, String)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| random_gmp_format_strings(seed, config).map(|s| s.replace('Z', "Q")),
))
}
pub fn special_random_rational_to_sci_options_pair_gen(
config: &GenConfig,
) -> It<(Rational, ToSciOptions)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_rationals(
seed.fork("xs"),
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
random_to_sci_options(
seed,
config.get_or("small_mean_n", 4),
config.get_or("small_mean_d", 1),
)
},
))
}
pub fn special_random_rational_to_sci_options_pair_gen_var_1(
config: &GenConfig,
) -> It<(Rational, ToSciOptions)> {
Box::new(
random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_rationals(
seed.fork("xs"),
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
&|seed| {
random_to_sci_options(
seed,
config.get_or("small_mean_n", 4),
config.get_or("small_mean_d", 1),
)
},
)
.filter(|(x, options)| x.fmt_sci_valid(*options)),
)
}
pub fn special_random_string_gen_var_2(config: &GenConfig) -> It<String> {
Box::new(
striped_random_rationals(
EXAMPLE_SEED,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
.map(|r| serde_json::to_string(&r).unwrap()),
)
}
pub fn special_random_string_gen_var_3(config: &GenConfig) -> It<String> {
Box::new(
striped_random_rationals(
EXAMPLE_SEED,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
.map(|x| x.to_string()),
)
}
pub fn special_random_string_triple_gen_var_3(config: &GenConfig) -> It<(String, String, String)> {
Box::new(
striped_random_rationals(
EXAMPLE_SEED,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
.map(|x| {
(
serde_json::to_string(&BigRational::from(&x)).unwrap(),
serde_json::to_string(&rug::Rational::from(&x)).unwrap(),
serde_json::to_string(&x).unwrap(),
)
}),
)
}
pub fn special_random_gaussian_rational_vec_gen(config: &GenConfig) -> It<Vec<GaussianRational>> {
Box::new(random_vecs(
EXAMPLE_SEED,
&|seed| {
striped_random_gaussian_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
config.get_or("mean_len_n", 4),
config.get_or("mean_len_d", 1),
))
}
pub fn special_random_rational_vector_gen(config: &GenConfig) -> It<RationalVector> {
Box::new(striped_random_rational_vectors(
EXAMPLE_SEED,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
config.get_or("mean_length_n", 4),
config.get_or("mean_length_d", 1),
))
}
pub fn special_random_rational_vector_pair_gen(
config: &GenConfig,
) -> It<(RationalVector, RationalVector)> {
Box::new(random_pairs_from_single(striped_random_rational_vectors(
EXAMPLE_SEED,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
config.get_or("mean_length_n", 4),
config.get_or("mean_length_d", 1),
)))
}
pub fn special_random_rational_vector_unsigned_pair_gen_var_1(
config: &GenConfig,
) -> It<(RationalVector, usize)> {
Box::new(
special_random_rational_vector_gen(config)
.flat_map(|v| (0..v.elements.len()).map(move |i| (v.clone(), i))),
)
}
pub fn special_random_rational_vector_unsigned_pair_gen_var_2<T: PrimitiveUnsigned>(
config: &GenConfig,
) -> It<(RationalVector, T)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_rational_vectors(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
config.get_or("mean_length_n", 4),
config.get_or("mean_length_d", 1),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
))
}
pub fn special_random_rational_vector_signed_pair_gen_var_1<T: PrimitiveSigned>(
config: &GenConfig,
) -> It<(RationalVector, T)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_rational_vectors(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
config.get_or("mean_length_n", 4),
config.get_or("mean_length_d", 1),
)
},
&|seed| {
geometric_random_signeds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
))
}
pub fn special_random_rational_vector_integer_vector_pair_gen(
config: &GenConfig,
) -> It<(RationalVector, IntegerVector)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_rational_vectors(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
config.get_or("mean_length_n", 4),
config.get_or("mean_length_d", 1),
)
},
&|seed| {
striped_random_integer_vectors(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
config.get_or("mean_length_n", 4),
config.get_or("mean_length_d", 1),
)
},
))
}
pub fn special_random_rational_vector_natural_vector_pair_gen(
config: &GenConfig,
) -> It<(RationalVector, NaturalVector)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_rational_vectors(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
config.get_or("mean_length_n", 4),
config.get_or("mean_length_d", 1),
)
},
&|seed| {
striped_random_natural_vectors(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
config.get_or("mean_length_n", 4),
config.get_or("mean_length_d", 1),
)
},
))
}
pub fn special_random_rational_vector_unsigned_vector_pair_gen<T: PrimitiveUnsigned>(
config: &GenConfig,
) -> It<(RationalVector, UnsignedVector<T>)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_rational_vectors(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
config.get_or("mean_length_n", 4),
config.get_or("mean_length_d", 1),
)
},
&|seed| {
striped_random_unsigned_vectors(
seed,
config.get_or("mean_unsigned_stripe_n", T::WIDTH >> 1),
config.get_or("mean_unsigned_stripe_d", 1),
config.get_or("mean_length_n", 4),
config.get_or("mean_length_d", 1),
)
},
))
}
pub fn special_random_rational_vector_triple_gen(
config: &GenConfig,
) -> It<(RationalVector, RationalVector, RationalVector)> {
Box::new(random_triples_from_single(striped_random_rational_vectors(
EXAMPLE_SEED,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
config.get_or("mean_length_n", 4),
config.get_or("mean_length_d", 1),
)))
}
pub fn special_random_rational_vector_pair_gen_var_1(
config: &GenConfig,
) -> It<(RationalVector, RationalVector)> {
Box::new(
random_vecs(
EXAMPLE_SEED,
&|seed| {
random_pairs_from_single(striped_random_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
))
},
config.get_or("mean_length_n", 4),
config.get_or("mean_length_d", 1),
)
.map(|ps| {
let (xs, ys) = ps.into_iter().unzip();
(
RationalVector { elements: xs },
RationalVector { elements: ys },
)
}),
)
}
pub fn special_random_rational_vector_rational_vector_rational_triple_gen_var_1(
config: &GenConfig,
) -> It<(RationalVector, RationalVector, Rational)> {
Box::new(
special_random_rational_vector_pair_gen_var_1(config)
.zip(striped_random_rationals(
EXAMPLE_SEED.fork("c"),
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
))
.map(|((v, w), c)| (v, w, c)),
)
}
pub fn special_random_rational_vector_rational_vector_rational_unsigned_quadruple_gen_var_1(
config: &GenConfig,
) -> It<(RationalVector, RationalVector, Rational, u64)> {
Box::new(
special_random_rational_vector_rational_vector_rational_triple_gen_var_1(config)
.zip(geometric_random_unsigneds::<u64>(
EXAMPLE_SEED.fork("bits"),
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
))
.map(|((v, w, c), bits)| (v, w, c, bits)),
)
}
pub fn special_random_rational_vector_triple_gen_var_1(
config: &GenConfig,
) -> It<(RationalVector, RationalVector, RationalVector)> {
Box::new(
random_vecs(
EXAMPLE_SEED,
&|seed| {
random_triples_from_single(striped_random_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
))
},
config.get_or("mean_length_n", 4),
config.get_or("mean_length_d", 1),
)
.map(|ts| {
let mut xs = Vec::with_capacity(ts.len());
let mut ys = Vec::with_capacity(ts.len());
let mut zs = Vec::with_capacity(ts.len());
for (x, y, z) in ts {
xs.push(x);
ys.push(y);
zs.push(z);
}
(
RationalVector { elements: xs },
RationalVector { elements: ys },
RationalVector { elements: zs },
)
}),
)
}
pub fn special_random_rational_vector_rational_pair_gen(
config: &GenConfig,
) -> It<(RationalVector, Rational)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_rational_vectors(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
config.get_or("mean_length_n", 4),
config.get_or("mean_length_d", 1),
)
},
&|seed| {
striped_random_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
))
}
pub fn special_random_rational_vector_rational_pair_gen_var_1(
config: &GenConfig,
) -> It<(RationalVector, Rational)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_rational_vectors(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
config.get_or("mean_length_n", 4),
config.get_or("mean_length_d", 1),
)
},
&|seed| {
striped_random_nonzero_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
))
}
pub fn special_random_rational_vec_gen(config: &GenConfig) -> It<Vec<Rational>> {
Box::new(random_vecs(
EXAMPLE_SEED,
&|seed| {
striped_random_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
config.get_or("mean_len_n", 4),
config.get_or("mean_len_d", 1),
))
}
pub fn special_random_rational_polynomial_gen(config: &GenConfig) -> It<RationalPolynomial> {
Box::new(striped_random_rational_polynomials(
EXAMPLE_SEED,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
config.get_or("mean_length_n", 4),
config.get_or("mean_length_d", 1),
))
}
pub fn special_random_rational_polynomial_pair_gen(
config: &GenConfig,
) -> It<(RationalPolynomial, RationalPolynomial)> {
Box::new(random_pairs_from_single(
striped_random_rational_polynomials(
EXAMPLE_SEED,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
config.get_or("mean_length_n", 4),
config.get_or("mean_length_d", 1),
),
))
}
pub fn special_random_rational_polynomial_rational_polynomial_unsigned_triple_gen_var_1(
config: &GenConfig,
) -> It<(RationalPolynomial, RationalPolynomial, u64)> {
Box::new(random_triples_xxy(
EXAMPLE_SEED,
&|seed| {
striped_random_rational_polynomials(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
config.get_or("mean_length_n", 4),
config.get_or("mean_length_d", 1),
)
},
&|seed| random_unsigned_inclusive_range(seed, 0, 19),
))
}
pub fn special_random_rational_polynomial_triple_gen(
config: &GenConfig,
) -> It<(RationalPolynomial, RationalPolynomial, RationalPolynomial)> {
Box::new(random_triples_from_single(
striped_random_rational_polynomials(
EXAMPLE_SEED,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
config.get_or("mean_length_n", 4),
config.get_or("mean_length_d", 1),
),
))
}
pub fn special_random_rational_polynomial_unsigned_polynomial_pair_gen<T: PrimitiveUnsigned>(
config: &GenConfig,
) -> It<(RationalPolynomial, UnsignedPolynomial<T>)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_rational_polynomials(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
config.get_or("mean_length_n", 4),
config.get_or("mean_length_d", 1),
)
},
&|seed| {
striped_random_unsigned_polynomials(
seed,
config.get_or("mean_unsigned_stripe_n", T::WIDTH >> 1),
config.get_or("mean_unsigned_stripe_d", 1),
config.get_or("mean_length_n", 4),
config.get_or("mean_length_d", 1),
)
},
))
}
pub fn special_random_rational_polynomial_unsigned_polynomial_unsigned_triple_gen_var_1<
T: PrimitiveUnsigned,
>(
config: &GenConfig,
) -> It<(RationalPolynomial, UnsignedPolynomial<T>, u64)> {
Box::new(random_triples(
EXAMPLE_SEED,
&|seed| {
striped_random_rational_polynomials(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
config.get_or("mean_length_n", 4),
config.get_or("mean_length_d", 1),
)
},
&|seed| {
striped_random_unsigned_polynomials(
seed,
config.get_or("mean_unsigned_stripe_n", T::WIDTH >> 1),
config.get_or("mean_unsigned_stripe_d", 1),
config.get_or("mean_length_n", 4),
config.get_or("mean_length_d", 1),
)
},
&|seed| random_unsigned_inclusive_range(seed, 0, 19),
))
}
pub fn special_random_rational_polynomial_integer_polynomial_pair_gen(
config: &GenConfig,
) -> It<(RationalPolynomial, IntegerPolynomial)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_rational_polynomials(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
config.get_or("mean_length_n", 4),
config.get_or("mean_length_d", 1),
)
},
&|seed| {
striped_random_integer_polynomials(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
config.get_or("mean_length_n", 4),
config.get_or("mean_length_d", 1),
)
},
))
}
pub fn special_random_rational_polynomial_integer_polynomial_unsigned_triple_gen_var_1(
config: &GenConfig,
) -> It<(RationalPolynomial, IntegerPolynomial, u64)> {
Box::new(random_triples(
EXAMPLE_SEED,
&|seed| {
striped_random_rational_polynomials(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
config.get_or("mean_length_n", 4),
config.get_or("mean_length_d", 1),
)
},
&|seed| {
striped_random_integer_polynomials(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
config.get_or("mean_length_n", 4),
config.get_or("mean_length_d", 1),
)
},
&|seed| random_unsigned_inclusive_range(seed, 0, 19),
))
}
pub fn special_random_integer_polynomial_rational_pair_gen(
config: &GenConfig,
) -> It<(IntegerPolynomial, Rational)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_integer_polynomials(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
config.get_or("mean_length_n", 4),
config.get_or("mean_length_d", 1),
)
},
&|seed| {
striped_random_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
))
}
pub fn special_random_integer_polynomial_rational_vec_pair_gen(
config: &GenConfig,
) -> It<(IntegerPolynomial, Vec<Rational>)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_integer_polynomials(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
config.get_or("mean_length_n", 4),
config.get_or("mean_length_d", 1),
)
},
&|seed| {
random_vecs(
seed,
&|seed_2| {
striped_random_rationals(
seed_2,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
config.get_or("mean_points_n", 8),
config.get_or("mean_points_d", 1),
)
},
))
}
pub fn special_random_integer_polynomial_rational_pair_gen_var_1(
config: &GenConfig,
) -> It<(IntegerPolynomial, Rational)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_integer_polynomials_min_degree(
seed,
40,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
config.get_or("mean_length_n", 64),
config.get_or("mean_length_d", 1),
)
},
&|seed| {
striped_random_rationals(
seed,
config.get_or("mean_stripe_n", 4),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_small_bits_n", 8),
config.get_or("mean_small_bits_d", 1),
)
},
))
}
pub fn special_random_rational_polynomial_natural_polynomial_pair_gen(
config: &GenConfig,
) -> It<(RationalPolynomial, NaturalPolynomial)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_rational_polynomials(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
config.get_or("mean_length_n", 4),
config.get_or("mean_length_d", 1),
)
},
&|seed| {
striped_random_natural_polynomials(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
config.get_or("mean_length_n", 4),
config.get_or("mean_length_d", 1),
)
},
))
}
pub fn special_random_rational_polynomial_natural_polynomial_unsigned_triple_gen_var_1(
config: &GenConfig,
) -> It<(RationalPolynomial, NaturalPolynomial, u64)> {
Box::new(random_triples(
EXAMPLE_SEED,
&|seed| {
striped_random_rational_polynomials(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
config.get_or("mean_length_n", 4),
config.get_or("mean_length_d", 1),
)
},
&|seed| {
striped_random_natural_polynomials(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
config.get_or("mean_length_n", 4),
config.get_or("mean_length_d", 1),
)
},
&|seed| random_unsigned_inclusive_range(seed, 0, 19),
))
}
pub fn special_random_rational_polynomial_gaussian_rational_pair_gen(
config: &GenConfig,
) -> It<(RationalPolynomial, GaussianRational)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_rational_polynomials(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
config.get_or("mean_length_n", 4),
config.get_or("mean_length_d", 1),
)
},
&|seed| {
striped_random_gaussian_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
))
}
pub fn special_random_rational_polynomial_gaussian_integer_pair_gen(
config: &GenConfig,
) -> It<(RationalPolynomial, GaussianInteger)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_rational_polynomials(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
config.get_or("mean_length_n", 4),
config.get_or("mean_length_d", 1),
)
},
&|seed| {
striped_random_gaussian_integers(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
))
}
pub fn special_random_rational_polynomial_rational_pair_gen(
config: &GenConfig,
) -> It<(RationalPolynomial, Rational)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_rational_polynomials(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
config.get_or("mean_length_n", 4),
config.get_or("mean_length_d", 1),
)
},
&|seed| {
striped_random_rationals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
))
}
pub fn special_random_rational_polynomial_rational_vec_pair_gen(
config: &GenConfig,
) -> It<(RationalPolynomial, Vec<Rational>)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_rational_polynomials(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
config.get_or("mean_length_n", 4),
config.get_or("mean_length_d", 1),
)
},
&|seed| {
random_vecs(
seed,
&|seed_2| {
striped_random_rationals(
seed_2,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
config.get_or("mean_points_n", 8),
config.get_or("mean_points_d", 1),
)
},
))
}
pub fn special_random_rational_polynomial_integer_pair_gen(
config: &GenConfig,
) -> It<(RationalPolynomial, Integer)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_rational_polynomials(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
config.get_or("mean_length_n", 4),
config.get_or("mean_length_d", 1),
)
},
&|seed| {
striped_random_integers(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
))
}
pub fn special_random_rational_polynomial_integer_vec_pair_gen(
config: &GenConfig,
) -> It<(RationalPolynomial, Vec<Integer>)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_rational_polynomials(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
config.get_or("mean_length_n", 4),
config.get_or("mean_length_d", 1),
)
},
&|seed| {
random_vecs(
seed,
&|seed_2| {
striped_random_integers(
seed_2,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
config.get_or("mean_points_n", 8),
config.get_or("mean_points_d", 1),
)
},
))
}
pub fn special_random_rational_polynomial_natural_pair_gen(
config: &GenConfig,
) -> It<(RationalPolynomial, Natural)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_rational_polynomials(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
config.get_or("mean_length_n", 4),
config.get_or("mean_length_d", 1),
)
},
&|seed| {
striped_random_naturals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
))
}
pub fn special_random_rational_polynomial_natural_pair_gen_var_1(
config: &GenConfig,
) -> It<(RationalPolynomial, Natural)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_rational_polynomials(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
config.get_or("mean_length_n", 4),
config.get_or("mean_length_d", 1),
)
},
&|seed| {
striped_random_positive_naturals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
))
}
pub fn special_random_rational_polynomial_integer_polynomial_natural_triple_gen_var_1(
config: &GenConfig,
) -> It<(RationalPolynomial, IntegerPolynomial, Natural)> {
Box::new(random_triples(
EXAMPLE_SEED,
&|seed| {
striped_random_rational_polynomials(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
config.get_or("mean_length_n", 4),
config.get_or("mean_length_d", 1),
)
},
&|seed| {
striped_random_integer_polynomials(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
config.get_or("mean_length_n", 4),
config.get_or("mean_length_d", 1),
)
},
&|seed| {
striped_random_positive_naturals(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
)
},
))
}
pub fn special_random_rational_polynomial_unsigned_pair_gen<T: PrimitiveUnsigned>(
config: &GenConfig,
) -> It<(RationalPolynomial, T)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_rational_polynomials(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
config.get_or("mean_length_n", 4),
config.get_or("mean_length_d", 1),
)
},
&|seed| {
striped_random_unsigneds(
seed,
config.get_or("mean_unsigned_stripe_n", T::WIDTH >> 1),
config.get_or("mean_unsigned_stripe_d", 1),
)
},
))
}
pub fn special_random_rational_polynomial_signed_pair_gen<T: PrimitiveSigned>(
config: &GenConfig,
) -> It<(RationalPolynomial, T)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_rational_polynomials(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
config.get_or("mean_length_n", 4),
config.get_or("mean_length_d", 1),
)
},
&|seed| {
striped_random_signeds(
seed,
config.get_or("mean_signed_stripe_n", T::WIDTH >> 1),
config.get_or("mean_signed_stripe_d", 1),
)
},
))
}
pub fn special_random_rational_polynomial_unsigned_pair_gen_var_1(
config: &GenConfig,
) -> It<(RationalPolynomial, u64)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_rational_polynomials(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
config.get_or("mean_length_n", 4),
config.get_or("mean_length_d", 1),
)
},
&|seed| random_unsigned_inclusive_range(seed, 0, 19),
))
}
pub fn special_random_rational_polynomial_unsigned_unsigned_triple_gen_var_2(
config: &GenConfig,
) -> It<(RationalPolynomial, u64, u64)> {
Box::new(
random_triples_xyy(
EXAMPLE_SEED,
&|seed| {
striped_random_rational_polynomials(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
config.get_or("mean_length_n", 4),
config.get_or("mean_length_d", 1),
)
},
&|seed| random_unsigned_inclusive_range(seed, 0, 19),
)
.map(|(p, start, len)| (p, start, start + len)),
)
}
pub fn special_random_rational_polynomial_unsigned_unsigned_triple_gen_var_1(
config: &GenConfig,
) -> It<(RationalPolynomial, u64, u64)> {
Box::new(random_triples(
EXAMPLE_SEED,
&|seed| {
striped_random_rational_polynomials(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
config.get_or("mean_length_n", 4),
config.get_or("mean_length_d", 1),
)
},
&|seed| random_unsigned_inclusive_range(seed, 0, 19),
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_small_n", 8),
config.get_or("mean_small_d", 1),
)
},
))
}
pub fn special_random_rational_polynomial_unsigned_pair_gen_var_2(
config: &GenConfig,
) -> It<(RationalPolynomial, u64)> {
Box::new(
special_random_rational_polynomial_unsigned_pair_gen_var_1(config)
.filter(|&(_, k)| k != 0)
.map(|(p, k)| (p.compose_power_of_x(k), k)),
)
}
pub fn special_random_rational_polynomial_unsigned_pair_gen_var_3<T: PrimitiveUnsigned>(
config: &GenConfig,
) -> It<(RationalPolynomial, T)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_rational_polynomials(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
config.get_or("mean_length_n", 4),
config.get_or("mean_length_d", 1),
)
},
&|seed| {
geometric_random_unsigneds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
))
}
pub fn special_random_rational_polynomial_signed_pair_gen_var_1<T: PrimitiveSigned>(
config: &GenConfig,
) -> It<(RationalPolynomial, T)> {
Box::new(random_pairs(
EXAMPLE_SEED,
&|seed| {
striped_random_rational_polynomials(
seed,
config.get_or("mean_stripe_n", 32),
config.get_or("mean_stripe_d", 1),
config.get_or("mean_bits_n", 64),
config.get_or("mean_bits_d", 1),
config.get_or("mean_length_n", 4),
config.get_or("mean_length_d", 1),
)
},
&|seed| {
geometric_random_signeds(
seed,
config.get_or("mean_small_n", 64),
config.get_or("mean_small_d", 1),
)
},
))
}