// Copyright © 2024 Mikhail Hogrefe // // This file is part of Malachite. // // Malachite is free software: you can redistribute it and/or modify it under the terms of the GNU // Lesser General Public License (LGPL) as published by the Free Software Foundation; either version // 3 of the License, or (at your option) any later version. See . use malachite_base::num::basic::floats::PrimitiveFloat; use malachite_base::num::float::NiceFloat; use malachite_base::num::random::random_positive_finite_primitive_floats; use malachite_base::random::EXAMPLE_SEED; use malachite_base::test_util::num::random::random_primitive_floats_helper_helper; use malachite_base::test_util::stats::moments::{CheckedToF64, MomentStats}; fn random_positive_finite_primitive_floats_helper( expected_values: &[T], expected_common_values: &[(T, usize)], expected_median: (T, Option), expected_moment_stats: MomentStats, ) { random_primitive_floats_helper_helper( random_positive_finite_primitive_floats::(EXAMPLE_SEED), expected_values, expected_common_values, expected_median, expected_moment_stats, ); } #[test] fn test_random_positive_finite_primitive_floats() { // f32 let values = &[ 9.5715654e26, 209.6476, 386935780.0, 7.965817e30, 0.00021030706, 0.0027270128, 3.4398167e-34, 2.3397111e14, 44567765000.0, 2.3479653e21, 0.00033502287, 2.4460542e-19, 0.0017637977, 7.956594e-26, 2.62625e-33, 0.059202384, 3.9310746e34, 1916542100000.0, 3.847343e14, 5.2843143e13, ]; let common_values = &[ (59.25553, 2), (68.23402, 2), (75936.53, 2), (9.581732, 2), (0.7711715, 2), (0.8694567, 2), (1.6738155, 2), (1168060.5, 2), (12.359466, 2), (146.89862, 2), ]; let sample_median = (1.3686414, Some(1.3686574)); let sample_moment_stats = MomentStats { mean: NiceFloat(2.0305910210122042e36), standard_deviation: NiceFloat(1.8908940416475047e37), skewness: NiceFloat(12.30495721768228), excess_kurtosis: NiceFloat(168.0100163146302), }; random_positive_finite_primitive_floats_helper::( values, common_values, sample_median, sample_moment_stats, ); // f64 let values = &[ 1.553103320279171e-146, 3.399767269777243e138, 6.920999672956352e-119, 7.798612728071752e-244, 1.7297528302435229e-274, 1.6730698009459568e253, 3.494622700146595e-115, 7.870553878200458e-50, 1.88707572126009e-10, 3.680784346523073e244, 2.2006770848831818e307, 3.0495236892779565e-279, 7.105167957384262e30, 7.68196442827874e21, 4.043761560817649e-187, 2.743276189070554e-146, 1.4322725127932769e140, 2.0686074901798122e-203, 7.761683804525804e-301, 5.6617484237282776e-21, ]; let common_values = &[ (66730.2435683, 1), (2.857475472056, 1), (2042187757.012, 1), (206.7039373431, 1), (2621701.092576, 1), (27.03018555735, 1), (3.025032765206, 1), (454348736.2729, 1), (5683730270.934, 1), (79306986.55539, 1), ]; let sample_median = (1.4868797963072014, Some(1.488082067196604)); let sample_moment_stats = MomentStats { mean: NiceFloat(1.3252967815615318e305), standard_deviation: NiceFloat(f64::INFINITY), skewness: NiceFloat(f64::NAN), excess_kurtosis: NiceFloat(f64::NAN), }; random_positive_finite_primitive_floats_helper::( values, common_values, sample_median, sample_moment_stats, ); }