From 02a5bbef5a5ebcd2c9f0fe1d6facab6fc7f0bdef Mon Sep 17 00:00:00 2001 From: LucaCappelletti94 Date: Thu, 8 Aug 2024 11:29:20 +0200 Subject: [PATCH 1/5] Added mem-dbg across crate as optional featuew --- Cargo.toml | 1 + evaluation/src/main.rs | 3 +++ src/common.rs | 1 + src/encoding.rs | 4 ++++ src/hyperloglog.rs | 4 ++++ src/hyperloglogplus.rs | 4 ++++ 6 files changed, 17 insertions(+) diff --git a/Cargo.toml b/Cargo.toml index ef5d5f5..e4f4d36 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -37,4 +37,5 @@ serde_json = "1.0" siphasher = "0.3.3" [dependencies] +mem_dbg = {version="0.2.2", optional=true} serde = { version = "1.0", default-features = false, features = ["derive"] } diff --git a/evaluation/src/main.rs b/evaluation/src/main.rs index d1b9fc1..ce2387e 100644 --- a/evaluation/src/main.rs +++ b/evaluation/src/main.rs @@ -12,6 +12,7 @@ use rayon::prelude::*; use hyperloglogplus::{HyperLogLog, HyperLogLogPF, HyperLogLogPlus}; +#[cfg_attr(feature = "mem_dbg", derive(mem_dbg::MemDbg, mem_dbg::MemSize))] struct PassThroughHasher(u64); impl Hasher for PassThroughHasher { @@ -30,6 +31,7 @@ impl Hasher for PassThroughHasher { } } +#[cfg_attr(feature = "mem_dbg", derive(mem_dbg::MemDbg, mem_dbg::MemSize))] struct PassThroughHasherBuilder; impl BuildHasher for PassThroughHasherBuilder { @@ -40,6 +42,7 @@ impl BuildHasher for PassThroughHasherBuilder { } } +#[cfg_attr(feature = "mem_dbg", derive(mem_dbg::MemDbg, mem_dbg::MemSize))] struct Estimation(u64, u64); impl fmt::Display for Estimation { diff --git a/src/common.rs b/src/common.rs index 514a40d..d6e4196 100644 --- a/src/common.rs +++ b/src/common.rs @@ -8,6 +8,7 @@ macro_rules! registers_impls { ($len:expr, $ident:ident) => { // A Registers struct. #[derive(Clone, Debug, Serialize, Deserialize)] + #[cfg_attr(feature = "mem_dbg", derive(mem_dbg::MemDbg, mem_dbg::MemSize))] pub struct $ident { // A buffer containing registers. buf: Vec, diff --git a/src/encoding.rs b/src/encoding.rs index 83c24b5..1d61c17 100644 --- a/src/encoding.rs +++ b/src/encoding.rs @@ -2,6 +2,7 @@ use serde::{Deserialize, Serialize}; // A Vector of bytes containing variable length encoded unsigned integers. #[derive(Clone, Debug, Serialize, Deserialize)] +#[cfg_attr(feature = "mem_dbg", derive(mem_dbg::MemDbg, mem_dbg::MemSize))] pub struct VarIntVec(Vec); // A Vector containing difference encoded unsigned integers @@ -10,6 +11,7 @@ pub struct VarIntVec(Vec); // Numbers stored are assumed to be in increasing order, hence the // difference between a new number and `last` will always be positive. #[derive(Clone, Debug, Serialize, Deserialize)] +#[cfg_attr(feature = "mem_dbg", derive(mem_dbg::MemDbg, mem_dbg::MemSize))] pub struct DifIntVec { // The count of numbers stored. count: usize, @@ -19,11 +21,13 @@ pub struct DifIntVec { buf: VarIntVec, } +#[cfg_attr(feature = "mem_dbg", derive(mem_dbg::MemDbg, mem_dbg::MemSize))] pub struct VarIntVecIntoIter<'a> { index: usize, inner: &'a VarIntVec, } +#[cfg_attr(feature = "mem_dbg", derive(mem_dbg::MemDbg, mem_dbg::MemSize))] pub struct DifIntVecIntoIter<'a> { index: usize, last: u32, diff --git a/src/hyperloglog.rs b/src/hyperloglog.rs index 6bda970..5ff66bf 100644 --- a/src/hyperloglog.rs +++ b/src/hyperloglog.rs @@ -42,6 +42,7 @@ use crate::HyperLogLogError; /// Meunier.](http://algo.inria.fr/flajolet/Publications/FlFuGaMe07.pdf) /// #[derive(Clone, Debug, Serialize, Deserialize)] +#[cfg_attr(feature = "mem_dbg", derive(mem_dbg::MemDbg, mem_dbg::MemSize))] pub struct HyperLogLogPF where H: Hash + ?Sized, @@ -204,6 +205,7 @@ mod tests { use core::hash::{BuildHasher, Hasher}; use siphasher::sip::SipHasher13; + #[cfg_attr(feature = "mem_dbg", derive(mem_dbg::MemDbg, mem_dbg::MemSize))] struct PassThroughHasher(u64); impl Hasher for PassThroughHasher { @@ -222,6 +224,7 @@ mod tests { } #[derive(Serialize, Deserialize)] + #[cfg_attr(feature = "mem_dbg", derive(mem_dbg::MemDbg, mem_dbg::MemSize))] struct PassThroughHasherBuilder; impl BuildHasher for PassThroughHasherBuilder { @@ -233,6 +236,7 @@ mod tests { } #[derive(Serialize, Deserialize)] + #[cfg_attr(feature = "mem_dbg", derive(mem_dbg::MemDbg, mem_dbg::MemSize))] struct DefaultBuildHasher; impl BuildHasher for DefaultBuildHasher { diff --git a/src/hyperloglogplus.rs b/src/hyperloglogplus.rs index 9264ced..5b2cab4 100644 --- a/src/hyperloglogplus.rs +++ b/src/hyperloglogplus.rs @@ -54,6 +54,7 @@ use crate::HyperLogLogError; /// Nunkesser and Alexander Hall.](https://goo.gl/iU8Ig) /// #[derive(Clone, Debug, Serialize, Deserialize)] +#[cfg_attr(feature = "mem_dbg", derive(mem_dbg::MemDbg, mem_dbg::MemSize))] pub struct HyperLogLogPlus where H: Hash + ?Sized, @@ -534,6 +535,7 @@ mod tests { use std::collections::hash_map::DefaultHasher; use std::hash::{BuildHasher, Hasher}; + #[cfg_attr(feature = "mem_dbg", derive(mem_dbg::MemDbg, mem_dbg::MemSize))] struct PassThroughHasher(u64); impl Hasher for PassThroughHasher { @@ -552,6 +554,7 @@ mod tests { } #[derive(Serialize, Deserialize)] + #[cfg_attr(feature = "mem_dbg", derive(mem_dbg::MemDbg, mem_dbg::MemSize))] struct PassThroughHasherBuilder; impl BuildHasher for PassThroughHasherBuilder { @@ -563,6 +566,7 @@ mod tests { } #[derive(Serialize, Deserialize)] + #[cfg_attr(feature = "mem_dbg", derive(mem_dbg::MemDbg, mem_dbg::MemSize))] struct DefaultBuildHasher; impl BuildHasher for DefaultBuildHasher { From 106f089cc3a0b7f08ca296f49ad35eac76150cf2 Mon Sep 17 00:00:00 2001 From: Luca Cappelletti Date: Fri, 9 Aug 2024 14:26:09 +0200 Subject: [PATCH 2/5] Bumped mem-dbg --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index e4f4d36..09b92a9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -37,5 +37,5 @@ serde_json = "1.0" siphasher = "0.3.3" [dependencies] -mem_dbg = {version="0.2.2", optional=true} +mem_dbg = {version="0.2.4", optional=true} serde = { version = "1.0", default-features = false, features = ["derive"] } From a137c9785f5fe6ac957139581e17b5ce5f94c99f Mon Sep 17 00:00:00 2001 From: LucaCappelletti94 Date: Sun, 11 Aug 2024 10:00:48 +0200 Subject: [PATCH 3/5] Added test to verify whether estimates are sorted (spoiler: they are not) --- src/constants.rs | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/constants.rs b/src/constants.rs index 1e57fbd..478d1fc 100644 --- a/src/constants.rs +++ b/src/constants.rs @@ -4060,3 +4060,26 @@ pub const BIAS_DATA: &[&[f64]] = &[ -713.308999999892, ], ]; + + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_estimates_are_sorted() { + for (i, estimates) in RAW_ESTIMATE_DATA.iter().enumerate() { + let precision = i+4; + assert!(estimates.windows(2).all(|w| w[0] <= w[1]), "Estimates for precision {} is not sorted", precision); + } + } + + #[test] + fn test_length_compatibility() { + assert_eq!(RAW_ESTIMATE_DATA.len(), 15); + for (i, (estimates, biases)) in RAW_ESTIMATE_DATA.iter().zip(BIAS_DATA.iter()).enumerate() { + let precision = i+4; + assert_eq!(estimates.len(), biases.len(), "Estimates and biases for precision {} have different lengths", precision); + } + } +} \ No newline at end of file From 2e889ea8497dd8ce89d95f29412f036d5f9def91 Mon Sep 17 00:00:00 2001 From: LucaCappelletti94 Date: Sun, 11 Aug 2024 10:05:13 +0200 Subject: [PATCH 4/5] Sorted estimates alongside biases --- src/constants.rs | 1200 +++++++++++++++++++++++++++----------------- src/hyperloglog.rs | 2 +- 2 files changed, 748 insertions(+), 454 deletions(-) diff --git a/src/constants.rs b/src/constants.rs index 478d1fc..d970409 100644 --- a/src/constants.rs +++ b/src/constants.rs @@ -1,104 +1,402 @@ // raw estimates to determine bias as determined by Google. pub const RAW_ESTIMATE_DATA: &[&[f64]] = &[ - // precision 4 &[ - 11.0, 11.717, 12.207, 12.7896, 13.2882, 13.8204, 14.3772, 14.9342, - 15.5202, 16.161, 16.7722, 17.4636, 18.0396, 18.6766, 19.3566, 20.0454, - 20.7936, 21.4856, 22.2666, 22.9946, 23.766, 24.4692, 25.3638, 26.0764, - 26.7864, 27.7602, 28.4814, 29.433, 30.2926, 31.0664, 31.9996, 32.7956, - 33.5366, 34.5894, 35.5738, 36.2698, 37.3682, 38.0544, 39.2342, 40.0108, - 40.7966, 41.9298, 42.8704, 43.6358, 44.5194, 45.773, 46.6772, 47.6174, - 48.4888, 49.3304, 50.2506, 51.4996, 52.3824, 53.3078, 54.3984, 55.5838, - 56.6618, 57.2174, 58.3514, 59.0802, 60.1482, 61.0376, 62.3598, 62.8078, - 63.9744, 64.914, 65.781, 67.1806, 68.0594, 68.8446, 69.7928, 70.8248, - 71.8324, 72.8598, 73.6246, 74.7014, 75.393, 76.6708, 77.2394, + 11.0, 11.717, 12.207, 12.7896, 13.2882, 13.8204, 14.3772, 14.9342, 15.5202, 16.161, + 16.7722, 17.4636, 18.0396, 18.6766, 19.3566, 20.0454, 20.7936, 21.4856, 22.2666, 22.9946, + 23.766, 24.4692, 25.3638, 26.0764, 26.7864, 27.7602, 28.4814, 29.433, 30.2926, 31.0664, + 31.9996, 32.7956, 33.5366, 34.5894, 35.5738, 36.2698, 37.3682, 38.0544, 39.2342, 40.0108, + 40.7966, 41.9298, 42.8704, 43.6358, 44.5194, 45.773, 46.6772, 47.6174, 48.4888, 49.3304, + 50.2506, 51.4996, 52.3824, 53.3078, 54.3984, 55.5838, 56.6618, 57.2174, 58.3514, 59.0802, + 60.1482, 61.0376, 62.3598, 62.8078, 63.9744, 64.914, 65.781, 67.1806, 68.0594, 68.8446, + 69.7928, 70.8248, 71.8324, 72.8598, 73.6246, 74.7014, 75.393, 76.6708, 77.2394, ], - // precision 5 &[ - 23.0, 23.1194, 23.8208, 24.2318, 24.77, 25.2436, 25.7774, 26.2848, - 26.8224, 27.3742, 27.9336, 28.503, 29.0494, 29.6292, 30.2124, 30.798, - 31.367, 31.9728, 32.5944, 33.217, 33.8438, 34.3696, 35.0956, 35.7044, - 36.324, 37.0668, 37.6698, 38.3644, 39.049, 39.6918, 40.4146, 41.082, - 41.687, 42.5398, 43.2462, 43.857, 44.6606, 45.4168, 46.1248, 46.9222, - 47.6804, 48.447, 49.3454, 49.9594, 50.7636, 51.5776, 52.331, 53.19, - 53.9676, 54.7564, 55.5314, 56.4442, 57.3708, 57.9774, 58.9624, 59.8796, - 60.755, 61.472, 62.2076, 63.1024, 63.8908, 64.7338, 65.7728, 66.629, - 67.413, 68.3266, 69.1524, 70.2642, 71.1806, 72.0566, 72.9192, 73.7598, - 74.3516, 75.5802, 76.4386, 77.4916, 78.1524, 79.1892, 79.8414, 80.8798, - 81.8376, 82.4698, 83.7656, 84.331, 85.5914, 86.6012, 87.7016, 88.5582, - 89.3394, 90.3544, 91.4912, 92.308, 93.3552, 93.9746, 95.2052, 95.727, - 97.1322, 98.3944, 98.7588, 100.242, 101.1914, 102.2538, 102.8776, - 103.6292, 105.1932, 105.9152, 107.0868, 107.6728, 108.7144, 110.3114, - 110.8716, 111.245, 112.7908, 113.7064, 114.636, 115.7464, 116.1788, - 117.7464, 118.4896, 119.6166, 120.5082, 121.7798, 122.9028, 123.4426, - 124.8854, 125.705, 126.4652, 128.3464, 128.3462, 130.0398, 131.0342, - 131.0042, 132.4766, 133.511, 134.7252, 135.425, 136.5172, 138.0572, - 138.6694, 139.3712, 140.8598, 141.4594, 142.554, 143.4006, 144.7374, - 146.1634, 146.8994, 147.605, 147.9304, 149.1636, 150.2468, 151.5876, - 152.2096, 153.7032, 154.7146, 155.807, 156.9228, 157.0372, 158.5852, + 23.0, + 23.119_4, + 23.820_8, + 24.231_8, + 24.77, + 25.243_6, + 25.777_4, + 26.284_8, + 26.822_4, + 27.374_2, + 27.933_6, + 28.503, + 29.049_4, + 29.629_2, + 30.212_4, + 30.798, + 31.367, + 31.972_8, + 32.594_4, + 33.217, + 33.843_8, + 34.369_6, + 35.095_6, + 35.704_4, + 36.324, + 37.066_8, + 37.669_8, + 38.364_4, + 39.049, + 39.691_8, + 40.414_6, + 41.082, + 41.687, + 42.539_8, + 43.246_2, + 43.857, + 44.660_6, + 45.416_8, + 46.124_8, + 46.922_2, + 47.680_4, + 48.447, + 49.345_4, + 49.959_4, + 50.763_6, + 51.577_6, + 52.331, + 53.19, + 53.967_6, + 54.756_4, + 55.531_4, + 56.444_2, + 57.370_8, + 57.977_4, + 58.962_4, + 59.879_6, + 60.755, + 61.472, + 62.207_6, + 63.102_4, + 63.890_8, + 64.733_8, + 65.772_8, + 66.629, + 67.413, + 68.326_6, + 69.152_4, + 70.264_2, + 71.180_6, + 72.056_6, + 72.919_2, + 73.759_8, + 74.351_6, + 75.580_2, + 76.438_6, + 77.491_6, + 78.152_4, + 79.189_2, + 79.841_4, + 80.879_8, + 81.837_6, + 82.469_8, + 83.765_6, + 84.331, + 85.591_4, + 86.601_2, + 87.701_6, + 88.558_2, + 89.339_4, + 90.354_4, + 91.491_2, + 92.308, + 93.355_2, + 93.974_6, + 95.205_2, + 95.727, + 97.132_2, + 98.394_4, + 98.758_8, + 100.242, + 101.191_4, + 102.253_8, + 102.877_6, + 103.629_2, + 105.193_2, + 105.915_2, + 107.086_8, + 107.672_8, + 108.714_4, + 110.311_4, + 110.871_6, + 111.245, + 112.790_8, + 113.706_4, + 114.636, + 115.746_4, + 116.178_8, + 117.746_4, + 118.489_6, + 119.616_6, + 120.508_2, + 121.779_8, + 122.902_8, + 123.442_6, + 124.885_4, + 125.705, + 126.465_2, + 128.346_2, + 128.346_4, + 130.039_8, + 131.004_2, + 131.034_2, + 132.476_6, + 133.511, + 134.725_2, + 135.425, + 136.517_2, + 138.057_2, + 138.669_4, + 139.371_2, + 140.859_8, + 141.459_4, + 142.554, + 143.400_6, + 144.737_4, + 146.163_4, + 146.899_4, + 147.605, + 147.930_4, + 149.163_6, + 150.246_8, + 151.587_6, + 152.209_6, + 153.703_2, + 154.714_6, + 155.807, + 156.922_8, + 157.037_2, + 158.585_2, ], - // precision 6 &[ - 46.0, 46.1902, 47.271, 47.8358, 48.8142, 49.2854, 50.317, 51.354, - 51.8924, 52.9436, 53.4596, 54.5262, 55.6248, 56.1574, 57.2822, 57.837, - 58.9636, 60.074, 60.7042, 61.7976, 62.4772, 63.6564, 64.7942, 65.5004, - 66.686, 67.291, 68.5672, 69.8556, 70.4982, 71.8204, 72.4252, 73.7744, - 75.0786, 75.8344, 77.0294, 77.8098, 79.0794, 80.5732, 81.1878, 82.5648, - 83.2902, 84.6784, 85.3352, 86.8946, 88.3712, 89.0852, 90.499, 91.2686, - 92.6844, 94.2234, 94.9732, 96.3356, 97.2286, 98.7262, 100.3284, - 101.1048, 102.5962, 103.3562, 105.1272, 106.4184, 107.4974, 109.0822, - 109.856, 111.48, 113.2834, 114.0208, 115.637, 116.5174, 118.0576, - 119.7476, 120.427, 122.1326, 123.2372, 125.2788, 126.6776, 127.7926, - 129.1952, 129.9564, 131.6454, 133.87, 134.5428, 136.2, 137.0294, - 138.6278, 139.6782, 141.792, 143.3516, 144.2832, 146.0394, 147.0748, - 148.4912, 150.849, 151.696, 153.5404, 154.073, 156.3714, 157.7216, - 158.7328, 160.4208, 161.4184, 163.9424, 165.2772, 166.411, 168.1308, - 168.769, 170.9258, 172.6828, 173.7502, 175.706, 176.3886, 179.0186, - 180.4518, 181.927, 183.4172, 184.4114, 186.033, 188.5124, 189.5564, - 191.6008, 192.4172, 193.8044, 194.997, 197.4548, 198.8948, 200.2346, - 202.3086, 203.1548, 204.8842, 206.6508, 206.6772, 209.7254, 210.4752, - 212.7228, 214.6614, 215.1676, 217.793, 218.0006, 219.9052, 221.66, - 223.5588, 225.1636, 225.6882, 227.7126, 229.4502, 231.1978, 232.9756, - 233.1654, 236.727, 238.1974, 237.7474, 241.1346, 242.3048, 244.1948, - 245.3134, 246.879, 249.1204, 249.853, 252.6792, 253.857, 254.4486, - 257.2362, 257.9534, 260.0286, 260.5632, 262.663, 264.723, 265.7566, - 267.2566, 267.1624, 270.62, 272.8216, 273.2166, 275.2056, 276.2202, - 278.3726, 280.3344, 281.9284, 283.9728, 284.1924, 286.4872, 287.587, - 289.807, 291.1206, 292.769, 294.8708, 296.665, 297.1182, 299.4012, - 300.6352, 302.1354, 304.1756, 306.1606, 307.3462, 308.5214, 309.4134, - 310.8352, 313.9684, 315.837, 316.7796, 318.9858, + 46.0, + 46.190_2, + 47.271, + 47.835_8, + 48.814_2, + 49.285_4, + 50.317, + 51.354, + 51.892_4, + 52.943_6, + 53.459_6, + 54.526_2, + 55.624_8, + 56.157_4, + 57.282_2, + 57.837, + 58.963_6, + 60.074, + 60.704_2, + 61.797_6, + 62.477_2, + 63.656_4, + 64.794_2, + 65.500_4, + 66.686, + 67.291, + 68.567_2, + 69.855_6, + 70.498_2, + 71.820_4, + 72.425_2, + 73.774_4, + 75.078_6, + 75.834_4, + 77.029_4, + 77.809_8, + 79.079_4, + 80.573_2, + 81.187_8, + 82.564_8, + 83.290_2, + 84.678_4, + 85.335_2, + 86.894_6, + 88.371_2, + 89.085_2, + 90.499, + 91.268_6, + 92.684_4, + 94.223_4, + 94.973_2, + 96.335_6, + 97.228_6, + 98.726_2, + 100.328_4, + 101.104_8, + 102.596_2, + 103.356_2, + 105.127_2, + 106.418_4, + 107.497_4, + 109.082_2, + 109.856, + 111.48, + 113.283_4, + 114.020_8, + 115.637, + 116.517_4, + 118.057_6, + 119.747_6, + 120.427, + 122.132_6, + 123.237_2, + 125.278_8, + 126.677_6, + 127.792_6, + 129.195_2, + 129.956_4, + 131.645_4, + 133.87, + 134.542_8, + 136.2, + 137.029_4, + 138.627_8, + 139.678_2, + 141.792, + 143.351_6, + 144.283_2, + 146.039_4, + 147.074_8, + 148.491_2, + 150.849, + 151.696, + 153.540_4, + 154.073, + 156.371_4, + 157.721_6, + 158.732_8, + 160.420_8, + 161.418_4, + 163.942_4, + 165.277_2, + 166.411, + 168.130_8, + 168.769, + 170.925_8, + 172.682_8, + 173.750_2, + 175.706, + 176.388_6, + 179.018_6, + 180.451_8, + 181.927, + 183.417_2, + 184.411_4, + 186.033, + 188.512_4, + 189.556_4, + 191.600_8, + 192.417_2, + 193.804_4, + 194.997, + 197.454_8, + 198.894_8, + 200.234_6, + 202.308_6, + 203.154_8, + 204.884_2, + 206.650_8, + 206.677_2, + 209.725_4, + 210.475_2, + 212.722_8, + 214.661_4, + 215.167_6, + 217.793, + 218.000_6, + 219.905_2, + 221.66, + 223.558_8, + 225.163_6, + 225.688_2, + 227.712_6, + 229.450_2, + 231.197_8, + 232.975_6, + 233.165_4, + 236.727, + 237.747_4, + 238.197_4, + 241.134_6, + 242.304_8, + 244.194_8, + 245.313_4, + 246.879, + 249.120_4, + 249.853, + 252.679_2, + 253.857, + 254.448_6, + 257.236_2, + 257.953_4, + 260.028_6, + 260.563_2, + 262.663, + 264.723, + 265.756_6, + 267.162_4, + 267.256_6, + 270.62, + 272.821_6, + 273.216_6, + 275.205_6, + 276.220_2, + 278.372_6, + 280.334_4, + 281.928_4, + 283.972_8, + 284.192_4, + 286.487_2, + 287.587, + 289.807, + 291.120_6, + 292.769, + 294.870_8, + 296.665, + 297.118_2, + 299.401_2, + 300.635_2, + 302.135_4, + 304.175_6, + 306.160_6, + 307.346_2, + 308.521_4, + 309.413_4, + 310.835_2, + 313.968_4, + 315.837, + 316.779_6, + 318.985_8, ], - // precision 7 &[ - 92.0, 93.4934, 94.9758, 96.4574, 97.9718, 99.4954, 101.5302, 103.0756, - 104.6374, 106.1782, 107.7888, 109.9522, 111.592, 113.2532, 114.9086, - 116.5938, 118.9474, 120.6796, 122.4394, 124.2176, 125.9768, 128.4214, - 130.2528, 132.0102, 133.8658, 135.7278, 138.3044, 140.1316, 142.093, - 144.0032, 145.9092, 148.6306, 150.5294, 152.5756, 154.6508, 156.662, - 159.552, 161.3724, 163.617, 165.5754, 167.7872, 169.8444, 172.7988, - 174.8606, 177.2118, 179.3566, 181.4476, 184.5882, 186.6816, 189.0824, - 191.0258, 193.6048, 196.4436, 198.7274, 200.957, 203.147, 205.4364, - 208.7592, 211.3386, 213.781, 215.8028, 218.656, 221.6544, 223.996, - 226.4718, 229.1544, 231.6098, 234.5956, 237.0616, 239.5758, 242.4878, - 244.5244, 248.2146, 250.724, 252.8722, 255.5198, 258.0414, 261.941, - 264.9048, 266.87, 269.4304, 272.028, 274.4708, 278.37, 281.0624, - 283.4668, 286.5532, 289.4352, 293.2564, 295.2744, 298.2118, 300.7472, - 304.1456, 307.2928, 309.7504, 312.5528, 315.979, 318.2102, 322.1834, - 324.3494, 327.325, 330.6614, 332.903, 337.2544, 339.9042, 343.215, - 345.2864, 348.0814, 352.6764, 355.301, 357.139, 360.658, 363.1732, - 366.5902, 369.9538, 373.0828, 375.922, 378.9902, 382.7328, 386.4538, - 388.1136, 391.2234, 394.0878, 396.708, 401.1556, 404.1852, 406.6372, - 409.6822, 412.7796, 416.6078, 418.4916, 422.131, 424.5376, 428.1988, - 432.211, 434.4502, 438.5282, 440.912, 444.0448, 447.7432, 450.8524, - 453.7988, 456.7858, 458.8868, 463.9886, 466.5064, 468.9124, 472.6616, - 475.4682, 478.582, 481.304, 485.2738, 488.6894, 490.329, 496.106, - 497.6908, 501.1374, 504.5322, 506.8848, 510.3324, 513.4512, 516.179, - 520.4412, 522.6066, 526.167, 528.7794, 533.379, 536.067, 538.46, - 542.9116, 545.692, 547.9546, 552.493, 555.2722, 557.335, 562.449, - 564.2014, 569.0738, 571.0974, 574.8564, 578.2996, 581.409, 583.9704, - 585.8098, 589.6528, 594.5998, 595.958, 600.068, 603.3278, 608.2016, - 609.9632, 612.864, 615.43, 620.7794, 621.272, 625.8644, 629.206, - 633.219, 634.5154, 638.6102, + 92.0, 93.4934, 94.9758, 96.4574, 97.9718, 99.4954, 101.5302, 103.0756, 104.6374, 106.1782, + 107.7888, 109.9522, 111.592, 113.2532, 114.9086, 116.5938, 118.9474, 120.6796, 122.4394, + 124.2176, 125.9768, 128.4214, 130.2528, 132.0102, 133.8658, 135.7278, 138.3044, 140.1316, + 142.093, 144.0032, 145.9092, 148.6306, 150.5294, 152.5756, 154.6508, 156.662, 159.552, + 161.3724, 163.617, 165.5754, 167.7872, 169.8444, 172.7988, 174.8606, 177.2118, 179.3566, + 181.4476, 184.5882, 186.6816, 189.0824, 191.0258, 193.6048, 196.4436, 198.7274, 200.957, + 203.147, 205.4364, 208.7592, 211.3386, 213.781, 215.8028, 218.656, 221.6544, 223.996, + 226.4718, 229.1544, 231.6098, 234.5956, 237.0616, 239.5758, 242.4878, 244.5244, 248.2146, + 250.724, 252.8722, 255.5198, 258.0414, 261.941, 264.9048, 266.87, 269.4304, 272.028, + 274.4708, 278.37, 281.0624, 283.4668, 286.5532, 289.4352, 293.2564, 295.2744, 298.2118, + 300.7472, 304.1456, 307.2928, 309.7504, 312.5528, 315.979, 318.2102, 322.1834, 324.3494, + 327.325, 330.6614, 332.903, 337.2544, 339.9042, 343.215, 345.2864, 348.0814, 352.6764, + 355.301, 357.139, 360.658, 363.1732, 366.5902, 369.9538, 373.0828, 375.922, 378.9902, + 382.7328, 386.4538, 388.1136, 391.2234, 394.0878, 396.708, 401.1556, 404.1852, 406.6372, + 409.6822, 412.7796, 416.6078, 418.4916, 422.131, 424.5376, 428.1988, 432.211, 434.4502, + 438.5282, 440.912, 444.0448, 447.7432, 450.8524, 453.7988, 456.7858, 458.8868, 463.9886, + 466.5064, 468.9124, 472.6616, 475.4682, 478.582, 481.304, 485.2738, 488.6894, 490.329, + 496.106, 497.6908, 501.1374, 504.5322, 506.8848, 510.3324, 513.4512, 516.179, 520.4412, + 522.6066, 526.167, 528.7794, 533.379, 536.067, 538.46, 542.9116, 545.692, 547.9546, + 552.493, 555.2722, 557.335, 562.449, 564.2014, 569.0738, 571.0974, 574.8564, 578.2996, + 581.409, 583.9704, 585.8098, 589.6528, 594.5998, 595.958, 600.068, 603.3278, 608.2016, + 609.9632, 612.864, 615.43, 620.7794, 621.272, 625.8644, 629.206, 633.219, 634.5154, + 638.6102, ], // precision 8 &[ @@ -1170,7 +1468,6 @@ pub const RAW_ESTIMATE_DATA: &[&[f64]] = &[ // bias estimates for the corresponding raw estimate as determined by Google. pub const BIAS_DATA: &[&[f64]] = &[ - // precision 4 &[ 10.0, 9.717, @@ -1252,372 +1549,369 @@ pub const BIAS_DATA: &[&[f64]] = &[ -1.3292, -1.7606, ], - // precision 5 &[ 22.0, - 21.1194, - 20.8208, - 20.2318, - 19.77, - 19.2436, - 18.7774, - 18.2848, - 17.8224, - 17.3742, - 16.9336, - 16.503, - 16.0494, - 15.6292, - 15.2124, - 14.798, - 14.367, - 13.9728, - 13.5944, - 13.217, - 12.8438, - 12.3696, - 12.0956, - 11.7044, - 11.324, - 11.0668, - 10.6698, - 10.3644, - 10.049, - 9.6918, - 9.4146, - 9.082, - 8.687, - 8.5398, - 8.2462, - 7.857, - 7.6606, - 7.4168, - 7.1248, - 6.9222, - 6.6804, - 6.447, - 6.3454, - 5.9594, - 5.7636, - 5.5776, - 5.331, - 5.19, - 4.9676, - 4.7564, - 4.5314, - 4.4442, - 4.3708, - 3.9774, - 3.9624, - 3.8796, - 3.755, - 3.472, - 3.2076, - 3.1024, - 2.8908, - 2.7338, - 2.7728, - 2.629, - 2.413, - 2.3266, - 2.1524, - 2.2642, - 2.1806, - 2.0566, - 1.9192, - 1.7598, - 1.3516, - 1.5802, - 1.43859999999999, - 1.49160000000001, - 1.1524, - 1.1892, - 0.841399999999993, - 0.879800000000003, - 0.837599999999995, - 0.469800000000006, - 0.765600000000006, - 0.331000000000003, - 0.591399999999993, - 0.601200000000006, - 0.701599999999999, - 0.558199999999999, - 0.339399999999998, - 0.354399999999998, - 0.491200000000006, - 0.308000000000007, - 0.355199999999996, - -0.0254000000000048, - 0.205200000000005, - -0.272999999999996, - 0.132199999999997, - 0.394400000000005, - -0.241200000000006, - 0.242000000000004, - 0.191400000000002, - 0.253799999999998, - -0.122399999999999, - -0.370800000000003, - 0.193200000000004, - -0.0848000000000013, - 0.0867999999999967, - -0.327200000000005, - -0.285600000000002, - 0.311400000000006, - -0.128399999999999, - -0.754999999999995, - -0.209199999999996, - -0.293599999999998, - -0.364000000000004, - -0.253600000000006, - -0.821200000000005, - -0.253600000000006, - -0.510400000000004, - -0.383399999999995, - -0.491799999999998, - -0.220200000000006, - -0.0972000000000008, - -0.557400000000001, - -0.114599999999996, - -0.295000000000002, - -0.534800000000004, - 0.346399999999988, - -0.65379999999999, - 0.0398000000000138, - 0.0341999999999985, - -0.995800000000003, - -0.523400000000009, - -0.489000000000004, - -0.274799999999999, - -0.574999999999989, - -0.482799999999997, - 0.0571999999999946, - -0.330600000000004, - -0.628800000000012, - -0.140199999999993, - -0.540600000000012, - -0.445999999999998, - -0.599400000000003, - -0.262599999999992, - 0.163399999999996, - -0.100599999999986, - -0.39500000000001, - -1.06960000000001, - -0.836399999999998, - -0.753199999999993, - -0.412399999999991, - -0.790400000000005, - -0.29679999999999, - -0.28540000000001, - -0.193000000000012, - -0.0772000000000048, - -0.962799999999987, - -0.414800000000014, + 21.119_4, + 20.820_8, + 20.231_8, + 19.77, + 19.243_6, + 18.777_4, + 18.284_8, + 17.822_4, + 17.374_2, + 16.933_6, + 16.503, + 16.049_4, + 15.629_2, + 15.212_4, + 14.798, + 14.367, + 13.972_8, + 13.594_4, + 13.217, + 12.843_8, + 12.369_6, + 12.095_6, + 11.704_4, + 11.324, + 11.066_8, + 10.669_8, + 10.364_4, + 10.049, + 9.691_8, + 9.414_6, + 9.082, + 8.687, + 8.539_8, + 8.246_2, + 7.857, + 7.660_6, + 7.416_8, + 7.124_8, + 6.922_2, + 6.680_4, + 6.447, + 6.345_4, + 5.959_4, + 5.763_6, + 5.577_6, + 5.331, + 5.19, + 4.967_6, + 4.756_4, + 4.531_4, + 4.444_2, + 4.370_8, + 3.977_4, + 3.962_4, + 3.879_6, + 3.755, + 3.472, + 3.207_6, + 3.102_4, + 2.890_8, + 2.733_8, + 2.772_8, + 2.629, + 2.413, + 2.326_6, + 2.152_4, + 2.264_2, + 2.180_6, + 2.056_6, + 1.919_2, + 1.759_8, + 1.351_6, + 1.580_2, + 1.438_6, + 1.491_6, + 1.152_4, + 1.189_2, + 0.841_4, + 0.879_8, + 0.837_6, + 0.469_8, + 0.765_6, + 0.331, + 0.591_4, + 0.601_2, + 0.701_6, + 0.558_2, + 0.339_4, + 0.354_4, + 0.491_2, + 0.308, + 0.355_2, + -0.025_4, + 0.205_2, + -0.273, + 0.132_2, + 0.394_4, + -0.241_2, + 0.242, + 0.191_4, + 0.253_8, + -0.122_4, + -0.370_8, + 0.193_2, + -0.084_8, + 0.086_8, + -0.327_2, + -0.285_6, + 0.311_4, + -0.128_4, + -0.755, + -0.209_2, + -0.293_6, + -0.364, + -0.253_6, + -0.821_2, + -0.253_6, + -0.510_4, + -0.383_4, + -0.491_8, + -0.220_2, + -0.097_2, + -0.557_4, + -0.114_6, + -0.295, + -0.534_8, + -0.653_8, + 0.346_4, + 0.039_8, + -0.995_8, + 0.034_2, + -0.523_4, + -0.489, + -0.274_8, + -0.575, + -0.482_8, + 0.057_2, + -0.330_6, + -0.628_8, + -0.140_2, + -0.540_6, + -0.446, + -0.599_4, + -0.262_6, + 0.163_4, + -0.100_6, + -0.395, + -1.069_6, + -0.836_4, + -0.753_2, + -0.412_4, + -0.790_4, + -0.296_8, + -0.285_4, + -0.193, + -0.077_2, + -0.962_8, + -0.414_8, ], - // precision 6 &[ 45.0, - 44.1902, - 43.271, - 42.8358, - 41.8142, - 41.2854, - 40.317, - 39.354, - 38.8924, - 37.9436, - 37.4596, - 36.5262, - 35.6248, - 35.1574, - 34.2822, - 33.837, - 32.9636, - 32.074, - 31.7042, - 30.7976, - 30.4772, - 29.6564, - 28.7942, - 28.5004, - 27.686, - 27.291, - 26.5672, - 25.8556, - 25.4982, - 24.8204, - 24.4252, - 23.7744, - 23.0786, - 22.8344, - 22.0294, - 21.8098, - 21.0794, - 20.5732, - 20.1878, - 19.5648, - 19.2902, - 18.6784, - 18.3352, - 17.8946, - 17.3712, - 17.0852, - 16.499, - 16.2686, - 15.6844, - 15.2234, - 14.9732, - 14.3356, - 14.2286, - 13.7262, - 13.3284, - 13.1048, - 12.5962, - 12.3562, - 12.1272, - 11.4184, - 11.4974, - 11.0822, - 10.856, - 10.48, - 10.2834, - 10.0208, - 9.637, - 9.51739999999999, - 9.05759999999999, - 8.74760000000001, - 8.42700000000001, - 8.1326, - 8.2372, - 8.2788, - 7.6776, - 7.79259999999999, - 7.1952, - 6.9564, - 6.6454, - 6.87, - 6.5428, - 6.19999999999999, - 6.02940000000001, - 5.62780000000001, - 5.6782, - 5.792, - 5.35159999999999, - 5.28319999999999, - 5.0394, - 5.07480000000001, - 4.49119999999999, - 4.84899999999999, - 4.696, - 4.54040000000001, - 4.07300000000001, - 4.37139999999999, - 3.7216, - 3.7328, - 3.42080000000001, - 3.41839999999999, - 3.94239999999999, - 3.27719999999999, - 3.411, - 3.13079999999999, - 2.76900000000001, - 2.92580000000001, - 2.68279999999999, - 2.75020000000001, - 2.70599999999999, - 2.3886, - 3.01859999999999, - 2.45179999999999, - 2.92699999999999, - 2.41720000000001, - 2.41139999999999, - 2.03299999999999, - 2.51240000000001, - 2.5564, - 2.60079999999999, - 2.41720000000001, - 1.80439999999999, - 1.99700000000001, - 2.45480000000001, - 1.8948, - 2.2346, - 2.30860000000001, - 2.15479999999999, - 1.88419999999999, - 1.6508, - 0.677199999999999, - 1.72540000000001, - 1.4752, - 1.72280000000001, - 1.66139999999999, - 1.16759999999999, - 1.79300000000001, - 1.00059999999999, - 0.905200000000008, - 0.659999999999997, - 1.55879999999999, - 1.1636, - 0.688199999999995, - 0.712600000000009, - 0.450199999999995, - 1.1978, - 0.975599999999986, - 0.165400000000005, - 1.727, - 1.19739999999999, - -0.252600000000001, - 1.13460000000001, - 1.3048, - 1.19479999999999, - 0.313400000000001, - 0.878999999999991, - 1.12039999999999, - 0.853000000000009, - 1.67920000000001, - 0.856999999999999, - 0.448599999999999, - 1.2362, - 0.953399999999988, - 1.02859999999998, - 0.563199999999995, - 0.663000000000011, - 0.723000000000013, - 0.756599999999992, - 0.256599999999992, - -0.837600000000009, - 0.620000000000005, - 0.821599999999989, - 0.216600000000028, - 0.205600000000004, - 0.220199999999977, - 0.372599999999977, - 0.334400000000016, - 0.928400000000011, - 0.972800000000007, - 0.192400000000021, - 0.487199999999973, - -0.413000000000011, - 0.807000000000016, - 0.120600000000024, - 0.769000000000005, - 0.870799999999974, - 0.66500000000002, - 0.118200000000002, - 0.401200000000017, - 0.635199999999998, - 0.135400000000004, - 0.175599999999974, - 1.16059999999999, - 0.34620000000001, - 0.521400000000028, - -0.586599999999976, - -1.16480000000001, - 0.968399999999974, - 0.836999999999989, - 0.779600000000016, - 0.985799999999983, + 44.190_2, + 43.271, + 42.835_8, + 41.814_2, + 41.285_4, + 40.317, + 39.354, + 38.892_4, + 37.943_6, + 37.459_6, + 36.526_2, + 35.624_8, + 35.157_4, + 34.282_2, + 33.837, + 32.963_6, + 32.074, + 31.704_2, + 30.797_6, + 30.477_2, + 29.656_4, + 28.794_2, + 28.500_4, + 27.686, + 27.291, + 26.567_2, + 25.855_6, + 25.498_2, + 24.820_4, + 24.425_2, + 23.774_4, + 23.078_6, + 22.834_4, + 22.029_4, + 21.809_8, + 21.079_4, + 20.573_2, + 20.187_8, + 19.564_8, + 19.290_2, + 18.678_4, + 18.335_2, + 17.894_6, + 17.371_2, + 17.085_2, + 16.499, + 16.268_6, + 15.684_4, + 15.223_4, + 14.973_2, + 14.335_6, + 14.228_6, + 13.726_2, + 13.328_4, + 13.104_8, + 12.596_2, + 12.356_2, + 12.127_2, + 11.418_4, + 11.497_4, + 11.082_2, + 10.856, + 10.48, + 10.283_4, + 10.020_8, + 9.637, + 9.517_4, + 9.057_6, + 8.747_6, + 8.427, + 8.132_6, + 8.237_2, + 8.278_8, + 7.677_6, + 7.792_6, + 7.195_2, + 6.956_4, + 6.645_4, + 6.87, + 6.542_8, + 6.2, + 6.029_4, + 5.627_8, + 5.678_2, + 5.792, + 5.351_6, + 5.283_2, + 5.039_4, + 5.074_8, + 4.491_2, + 4.849, + 4.696, + 4.540_4, + 4.073, + 4.371_4, + 3.721_6, + 3.732_8, + 3.420_8, + 3.418_4, + 3.942_4, + 3.277_2, + 3.411, + 3.130_8, + 2.769, + 2.925_8, + 2.682_8, + 2.750_2, + 2.706, + 2.388_6, + 3.018_6, + 2.451_8, + 2.927, + 2.417_2, + 2.411_4, + 2.033, + 2.512_4, + 2.556_4, + 2.600_8, + 2.417_2, + 1.804_4, + 1.997, + 2.454_8, + 1.894_8, + 2.234_6, + 2.308_6, + 2.154_8, + 1.884_2, + 1.650_8, + 0.677_2, + 1.725_4, + 1.475_2, + 1.722_8, + 1.661_4, + 1.167_6, + 1.793, + 1.000_6, + 0.905_2, + 0.66, + 1.558_8, + 1.163_6, + 0.688_2, + 0.712_6, + 0.450_2, + 1.197_8, + 0.975_6, + 0.165_4, + 1.727, + -0.252_6, + 1.197_4, + 1.134_6, + 1.304_8, + 1.194_8, + 0.313_4, + 0.879, + 1.120_4, + 0.853, + 1.679_2, + 0.857, + 0.448_6, + 1.236_2, + 0.953_4, + 1.028_6, + 0.563_2, + 0.663, + 0.723, + 0.756_6, + -0.837_6, + 0.256_6, + 0.62, + 0.821_6, + 0.216_6, + 0.205_6, + 0.220_2, + 0.372_6, + 0.334_4, + 0.928_4, + 0.972_8, + 0.192_4, + 0.487_2, + -0.413, + 0.807, + 0.120_6, + 0.769, + 0.870_8, + 0.665, + 0.118_2, + 0.401_2, + 0.635_2, + 0.135_4, + 0.175_6, + 1.160_6, + 0.346_2, + 0.521_4, + -0.586_6, + -1.164_8, + 0.968_4, + 0.837, + 0.779_6, + 0.985_8, ], - // precision 7 &[ 91.0, 89.4934, diff --git a/src/hyperloglog.rs b/src/hyperloglog.rs index 5ff66bf..8c52caf 100644 --- a/src/hyperloglog.rs +++ b/src/hyperloglog.rs @@ -63,7 +63,7 @@ where // Minimum precision allowed. const MIN_PRECISION: u8 = 4; // Maximum precision allowed. - const MAX_PRECISION: u8 = 16; + const MAX_PRECISION: u8 = 18; /// Creates a new HyperLogLogPF instance. pub fn new(precision: u8, builder: B) -> Result { From eae51e628d1e5c06b4c1a001db9422874638e69b Mon Sep 17 00:00:00 2001 From: LucaCappelletti94 Date: Sun, 11 Aug 2024 10:05:32 +0200 Subject: [PATCH 5/5] Formatted code --- src/common.rs | 5 +- src/constants.rs | 916 +++++++++-------------------------------------- 2 files changed, 164 insertions(+), 757 deletions(-) diff --git a/src/common.rs b/src/common.rs index d6e4196..11fd0f0 100644 --- a/src/common.rs +++ b/src/common.rs @@ -8,7 +8,10 @@ macro_rules! registers_impls { ($len:expr, $ident:ident) => { // A Registers struct. #[derive(Clone, Debug, Serialize, Deserialize)] - #[cfg_attr(feature = "mem_dbg", derive(mem_dbg::MemDbg, mem_dbg::MemSize))] + #[cfg_attr( + feature = "mem_dbg", + derive(mem_dbg::MemDbg, mem_dbg::MemSize) + )] pub struct $ident { // A buffer containing registers. buf: Vec, diff --git a/src/constants.rs b/src/constants.rs index d970409..67dff66 100644 --- a/src/constants.rs +++ b/src/constants.rs @@ -1,402 +1,107 @@ // raw estimates to determine bias as determined by Google. pub const RAW_ESTIMATE_DATA: &[&[f64]] = &[ &[ - 11.0, 11.717, 12.207, 12.7896, 13.2882, 13.8204, 14.3772, 14.9342, 15.5202, 16.161, - 16.7722, 17.4636, 18.0396, 18.6766, 19.3566, 20.0454, 20.7936, 21.4856, 22.2666, 22.9946, - 23.766, 24.4692, 25.3638, 26.0764, 26.7864, 27.7602, 28.4814, 29.433, 30.2926, 31.0664, - 31.9996, 32.7956, 33.5366, 34.5894, 35.5738, 36.2698, 37.3682, 38.0544, 39.2342, 40.0108, - 40.7966, 41.9298, 42.8704, 43.6358, 44.5194, 45.773, 46.6772, 47.6174, 48.4888, 49.3304, - 50.2506, 51.4996, 52.3824, 53.3078, 54.3984, 55.5838, 56.6618, 57.2174, 58.3514, 59.0802, - 60.1482, 61.0376, 62.3598, 62.8078, 63.9744, 64.914, 65.781, 67.1806, 68.0594, 68.8446, - 69.7928, 70.8248, 71.8324, 72.8598, 73.6246, 74.7014, 75.393, 76.6708, 77.2394, + 11.0, 11.717, 12.207, 12.7896, 13.2882, 13.8204, 14.3772, 14.9342, + 15.5202, 16.161, 16.7722, 17.4636, 18.0396, 18.6766, 19.3566, 20.0454, + 20.7936, 21.4856, 22.2666, 22.9946, 23.766, 24.4692, 25.3638, 26.0764, + 26.7864, 27.7602, 28.4814, 29.433, 30.2926, 31.0664, 31.9996, 32.7956, + 33.5366, 34.5894, 35.5738, 36.2698, 37.3682, 38.0544, 39.2342, 40.0108, + 40.7966, 41.9298, 42.8704, 43.6358, 44.5194, 45.773, 46.6772, 47.6174, + 48.4888, 49.3304, 50.2506, 51.4996, 52.3824, 53.3078, 54.3984, 55.5838, + 56.6618, 57.2174, 58.3514, 59.0802, 60.1482, 61.0376, 62.3598, 62.8078, + 63.9744, 64.914, 65.781, 67.1806, 68.0594, 68.8446, 69.7928, 70.8248, + 71.8324, 72.8598, 73.6246, 74.7014, 75.393, 76.6708, 77.2394, ], &[ - 23.0, - 23.119_4, - 23.820_8, - 24.231_8, - 24.77, - 25.243_6, - 25.777_4, - 26.284_8, - 26.822_4, - 27.374_2, - 27.933_6, - 28.503, - 29.049_4, - 29.629_2, - 30.212_4, - 30.798, - 31.367, - 31.972_8, - 32.594_4, - 33.217, - 33.843_8, - 34.369_6, - 35.095_6, - 35.704_4, - 36.324, - 37.066_8, - 37.669_8, - 38.364_4, - 39.049, - 39.691_8, - 40.414_6, - 41.082, - 41.687, - 42.539_8, - 43.246_2, - 43.857, - 44.660_6, - 45.416_8, - 46.124_8, - 46.922_2, - 47.680_4, - 48.447, - 49.345_4, - 49.959_4, - 50.763_6, - 51.577_6, - 52.331, - 53.19, - 53.967_6, - 54.756_4, - 55.531_4, - 56.444_2, - 57.370_8, - 57.977_4, - 58.962_4, - 59.879_6, - 60.755, - 61.472, - 62.207_6, - 63.102_4, - 63.890_8, - 64.733_8, - 65.772_8, - 66.629, - 67.413, - 68.326_6, - 69.152_4, - 70.264_2, - 71.180_6, - 72.056_6, - 72.919_2, - 73.759_8, - 74.351_6, - 75.580_2, - 76.438_6, - 77.491_6, - 78.152_4, - 79.189_2, - 79.841_4, - 80.879_8, - 81.837_6, - 82.469_8, - 83.765_6, - 84.331, - 85.591_4, - 86.601_2, - 87.701_6, - 88.558_2, - 89.339_4, - 90.354_4, - 91.491_2, - 92.308, - 93.355_2, - 93.974_6, - 95.205_2, - 95.727, - 97.132_2, - 98.394_4, - 98.758_8, - 100.242, - 101.191_4, - 102.253_8, - 102.877_6, - 103.629_2, - 105.193_2, - 105.915_2, - 107.086_8, - 107.672_8, - 108.714_4, - 110.311_4, - 110.871_6, - 111.245, - 112.790_8, - 113.706_4, - 114.636, - 115.746_4, - 116.178_8, - 117.746_4, - 118.489_6, - 119.616_6, - 120.508_2, - 121.779_8, - 122.902_8, - 123.442_6, - 124.885_4, - 125.705, - 126.465_2, - 128.346_2, - 128.346_4, - 130.039_8, - 131.004_2, - 131.034_2, - 132.476_6, - 133.511, - 134.725_2, - 135.425, - 136.517_2, - 138.057_2, - 138.669_4, - 139.371_2, - 140.859_8, - 141.459_4, - 142.554, - 143.400_6, - 144.737_4, - 146.163_4, - 146.899_4, - 147.605, - 147.930_4, - 149.163_6, - 150.246_8, - 151.587_6, - 152.209_6, - 153.703_2, - 154.714_6, - 155.807, - 156.922_8, - 157.037_2, - 158.585_2, + 23.0, 23.119_4, 23.820_8, 24.231_8, 24.77, 25.243_6, 25.777_4, + 26.284_8, 26.822_4, 27.374_2, 27.933_6, 28.503, 29.049_4, 29.629_2, + 30.212_4, 30.798, 31.367, 31.972_8, 32.594_4, 33.217, 33.843_8, + 34.369_6, 35.095_6, 35.704_4, 36.324, 37.066_8, 37.669_8, 38.364_4, + 39.049, 39.691_8, 40.414_6, 41.082, 41.687, 42.539_8, 43.246_2, 43.857, + 44.660_6, 45.416_8, 46.124_8, 46.922_2, 47.680_4, 48.447, 49.345_4, + 49.959_4, 50.763_6, 51.577_6, 52.331, 53.19, 53.967_6, 54.756_4, + 55.531_4, 56.444_2, 57.370_8, 57.977_4, 58.962_4, 59.879_6, 60.755, + 61.472, 62.207_6, 63.102_4, 63.890_8, 64.733_8, 65.772_8, 66.629, + 67.413, 68.326_6, 69.152_4, 70.264_2, 71.180_6, 72.056_6, 72.919_2, + 73.759_8, 74.351_6, 75.580_2, 76.438_6, 77.491_6, 78.152_4, 79.189_2, + 79.841_4, 80.879_8, 81.837_6, 82.469_8, 83.765_6, 84.331, 85.591_4, + 86.601_2, 87.701_6, 88.558_2, 89.339_4, 90.354_4, 91.491_2, 92.308, + 93.355_2, 93.974_6, 95.205_2, 95.727, 97.132_2, 98.394_4, 98.758_8, + 100.242, 101.191_4, 102.253_8, 102.877_6, 103.629_2, 105.193_2, + 105.915_2, 107.086_8, 107.672_8, 108.714_4, 110.311_4, 110.871_6, + 111.245, 112.790_8, 113.706_4, 114.636, 115.746_4, 116.178_8, + 117.746_4, 118.489_6, 119.616_6, 120.508_2, 121.779_8, 122.902_8, + 123.442_6, 124.885_4, 125.705, 126.465_2, 128.346_2, 128.346_4, + 130.039_8, 131.004_2, 131.034_2, 132.476_6, 133.511, 134.725_2, + 135.425, 136.517_2, 138.057_2, 138.669_4, 139.371_2, 140.859_8, + 141.459_4, 142.554, 143.400_6, 144.737_4, 146.163_4, 146.899_4, + 147.605, 147.930_4, 149.163_6, 150.246_8, 151.587_6, 152.209_6, + 153.703_2, 154.714_6, 155.807, 156.922_8, 157.037_2, 158.585_2, ], &[ - 46.0, - 46.190_2, - 47.271, - 47.835_8, - 48.814_2, - 49.285_4, - 50.317, - 51.354, - 51.892_4, - 52.943_6, - 53.459_6, - 54.526_2, - 55.624_8, - 56.157_4, - 57.282_2, - 57.837, - 58.963_6, - 60.074, - 60.704_2, - 61.797_6, - 62.477_2, - 63.656_4, - 64.794_2, - 65.500_4, - 66.686, - 67.291, - 68.567_2, - 69.855_6, - 70.498_2, - 71.820_4, - 72.425_2, - 73.774_4, - 75.078_6, - 75.834_4, - 77.029_4, - 77.809_8, - 79.079_4, - 80.573_2, - 81.187_8, - 82.564_8, - 83.290_2, - 84.678_4, - 85.335_2, - 86.894_6, - 88.371_2, - 89.085_2, - 90.499, - 91.268_6, - 92.684_4, - 94.223_4, - 94.973_2, - 96.335_6, - 97.228_6, - 98.726_2, - 100.328_4, - 101.104_8, - 102.596_2, - 103.356_2, - 105.127_2, - 106.418_4, - 107.497_4, - 109.082_2, - 109.856, - 111.48, - 113.283_4, - 114.020_8, - 115.637, - 116.517_4, - 118.057_6, - 119.747_6, - 120.427, - 122.132_6, - 123.237_2, - 125.278_8, - 126.677_6, - 127.792_6, - 129.195_2, - 129.956_4, - 131.645_4, - 133.87, - 134.542_8, - 136.2, - 137.029_4, - 138.627_8, - 139.678_2, - 141.792, - 143.351_6, - 144.283_2, - 146.039_4, - 147.074_8, - 148.491_2, - 150.849, - 151.696, - 153.540_4, - 154.073, - 156.371_4, - 157.721_6, - 158.732_8, - 160.420_8, - 161.418_4, - 163.942_4, - 165.277_2, - 166.411, - 168.130_8, - 168.769, - 170.925_8, - 172.682_8, - 173.750_2, - 175.706, - 176.388_6, - 179.018_6, - 180.451_8, - 181.927, - 183.417_2, - 184.411_4, - 186.033, - 188.512_4, - 189.556_4, - 191.600_8, - 192.417_2, - 193.804_4, - 194.997, - 197.454_8, - 198.894_8, - 200.234_6, - 202.308_6, - 203.154_8, - 204.884_2, - 206.650_8, - 206.677_2, - 209.725_4, - 210.475_2, - 212.722_8, - 214.661_4, - 215.167_6, - 217.793, - 218.000_6, - 219.905_2, - 221.66, - 223.558_8, - 225.163_6, - 225.688_2, - 227.712_6, - 229.450_2, - 231.197_8, - 232.975_6, - 233.165_4, - 236.727, - 237.747_4, - 238.197_4, - 241.134_6, - 242.304_8, - 244.194_8, - 245.313_4, - 246.879, - 249.120_4, - 249.853, - 252.679_2, - 253.857, - 254.448_6, - 257.236_2, - 257.953_4, - 260.028_6, - 260.563_2, - 262.663, - 264.723, - 265.756_6, - 267.162_4, - 267.256_6, - 270.62, - 272.821_6, - 273.216_6, - 275.205_6, - 276.220_2, - 278.372_6, - 280.334_4, - 281.928_4, - 283.972_8, - 284.192_4, - 286.487_2, - 287.587, - 289.807, - 291.120_6, - 292.769, - 294.870_8, - 296.665, - 297.118_2, - 299.401_2, - 300.635_2, - 302.135_4, - 304.175_6, - 306.160_6, - 307.346_2, - 308.521_4, - 309.413_4, - 310.835_2, - 313.968_4, - 315.837, - 316.779_6, - 318.985_8, + 46.0, 46.190_2, 47.271, 47.835_8, 48.814_2, 49.285_4, 50.317, 51.354, + 51.892_4, 52.943_6, 53.459_6, 54.526_2, 55.624_8, 56.157_4, 57.282_2, + 57.837, 58.963_6, 60.074, 60.704_2, 61.797_6, 62.477_2, 63.656_4, + 64.794_2, 65.500_4, 66.686, 67.291, 68.567_2, 69.855_6, 70.498_2, + 71.820_4, 72.425_2, 73.774_4, 75.078_6, 75.834_4, 77.029_4, 77.809_8, + 79.079_4, 80.573_2, 81.187_8, 82.564_8, 83.290_2, 84.678_4, 85.335_2, + 86.894_6, 88.371_2, 89.085_2, 90.499, 91.268_6, 92.684_4, 94.223_4, + 94.973_2, 96.335_6, 97.228_6, 98.726_2, 100.328_4, 101.104_8, + 102.596_2, 103.356_2, 105.127_2, 106.418_4, 107.497_4, 109.082_2, + 109.856, 111.48, 113.283_4, 114.020_8, 115.637, 116.517_4, 118.057_6, + 119.747_6, 120.427, 122.132_6, 123.237_2, 125.278_8, 126.677_6, + 127.792_6, 129.195_2, 129.956_4, 131.645_4, 133.87, 134.542_8, 136.2, + 137.029_4, 138.627_8, 139.678_2, 141.792, 143.351_6, 144.283_2, + 146.039_4, 147.074_8, 148.491_2, 150.849, 151.696, 153.540_4, 154.073, + 156.371_4, 157.721_6, 158.732_8, 160.420_8, 161.418_4, 163.942_4, + 165.277_2, 166.411, 168.130_8, 168.769, 170.925_8, 172.682_8, + 173.750_2, 175.706, 176.388_6, 179.018_6, 180.451_8, 181.927, + 183.417_2, 184.411_4, 186.033, 188.512_4, 189.556_4, 191.600_8, + 192.417_2, 193.804_4, 194.997, 197.454_8, 198.894_8, 200.234_6, + 202.308_6, 203.154_8, 204.884_2, 206.650_8, 206.677_2, 209.725_4, + 210.475_2, 212.722_8, 214.661_4, 215.167_6, 217.793, 218.000_6, + 219.905_2, 221.66, 223.558_8, 225.163_6, 225.688_2, 227.712_6, + 229.450_2, 231.197_8, 232.975_6, 233.165_4, 236.727, 237.747_4, + 238.197_4, 241.134_6, 242.304_8, 244.194_8, 245.313_4, 246.879, + 249.120_4, 249.853, 252.679_2, 253.857, 254.448_6, 257.236_2, + 257.953_4, 260.028_6, 260.563_2, 262.663, 264.723, 265.756_6, + 267.162_4, 267.256_6, 270.62, 272.821_6, 273.216_6, 275.205_6, + 276.220_2, 278.372_6, 280.334_4, 281.928_4, 283.972_8, 284.192_4, + 286.487_2, 287.587, 289.807, 291.120_6, 292.769, 294.870_8, 296.665, + 297.118_2, 299.401_2, 300.635_2, 302.135_4, 304.175_6, 306.160_6, + 307.346_2, 308.521_4, 309.413_4, 310.835_2, 313.968_4, 315.837, + 316.779_6, 318.985_8, ], &[ - 92.0, 93.4934, 94.9758, 96.4574, 97.9718, 99.4954, 101.5302, 103.0756, 104.6374, 106.1782, - 107.7888, 109.9522, 111.592, 113.2532, 114.9086, 116.5938, 118.9474, 120.6796, 122.4394, - 124.2176, 125.9768, 128.4214, 130.2528, 132.0102, 133.8658, 135.7278, 138.3044, 140.1316, - 142.093, 144.0032, 145.9092, 148.6306, 150.5294, 152.5756, 154.6508, 156.662, 159.552, - 161.3724, 163.617, 165.5754, 167.7872, 169.8444, 172.7988, 174.8606, 177.2118, 179.3566, - 181.4476, 184.5882, 186.6816, 189.0824, 191.0258, 193.6048, 196.4436, 198.7274, 200.957, - 203.147, 205.4364, 208.7592, 211.3386, 213.781, 215.8028, 218.656, 221.6544, 223.996, - 226.4718, 229.1544, 231.6098, 234.5956, 237.0616, 239.5758, 242.4878, 244.5244, 248.2146, - 250.724, 252.8722, 255.5198, 258.0414, 261.941, 264.9048, 266.87, 269.4304, 272.028, - 274.4708, 278.37, 281.0624, 283.4668, 286.5532, 289.4352, 293.2564, 295.2744, 298.2118, - 300.7472, 304.1456, 307.2928, 309.7504, 312.5528, 315.979, 318.2102, 322.1834, 324.3494, - 327.325, 330.6614, 332.903, 337.2544, 339.9042, 343.215, 345.2864, 348.0814, 352.6764, - 355.301, 357.139, 360.658, 363.1732, 366.5902, 369.9538, 373.0828, 375.922, 378.9902, - 382.7328, 386.4538, 388.1136, 391.2234, 394.0878, 396.708, 401.1556, 404.1852, 406.6372, - 409.6822, 412.7796, 416.6078, 418.4916, 422.131, 424.5376, 428.1988, 432.211, 434.4502, - 438.5282, 440.912, 444.0448, 447.7432, 450.8524, 453.7988, 456.7858, 458.8868, 463.9886, - 466.5064, 468.9124, 472.6616, 475.4682, 478.582, 481.304, 485.2738, 488.6894, 490.329, - 496.106, 497.6908, 501.1374, 504.5322, 506.8848, 510.3324, 513.4512, 516.179, 520.4412, - 522.6066, 526.167, 528.7794, 533.379, 536.067, 538.46, 542.9116, 545.692, 547.9546, - 552.493, 555.2722, 557.335, 562.449, 564.2014, 569.0738, 571.0974, 574.8564, 578.2996, - 581.409, 583.9704, 585.8098, 589.6528, 594.5998, 595.958, 600.068, 603.3278, 608.2016, - 609.9632, 612.864, 615.43, 620.7794, 621.272, 625.8644, 629.206, 633.219, 634.5154, - 638.6102, + 92.0, 93.4934, 94.9758, 96.4574, 97.9718, 99.4954, 101.5302, 103.0756, + 104.6374, 106.1782, 107.7888, 109.9522, 111.592, 113.2532, 114.9086, + 116.5938, 118.9474, 120.6796, 122.4394, 124.2176, 125.9768, 128.4214, + 130.2528, 132.0102, 133.8658, 135.7278, 138.3044, 140.1316, 142.093, + 144.0032, 145.9092, 148.6306, 150.5294, 152.5756, 154.6508, 156.662, + 159.552, 161.3724, 163.617, 165.5754, 167.7872, 169.8444, 172.7988, + 174.8606, 177.2118, 179.3566, 181.4476, 184.5882, 186.6816, 189.0824, + 191.0258, 193.6048, 196.4436, 198.7274, 200.957, 203.147, 205.4364, + 208.7592, 211.3386, 213.781, 215.8028, 218.656, 221.6544, 223.996, + 226.4718, 229.1544, 231.6098, 234.5956, 237.0616, 239.5758, 242.4878, + 244.5244, 248.2146, 250.724, 252.8722, 255.5198, 258.0414, 261.941, + 264.9048, 266.87, 269.4304, 272.028, 274.4708, 278.37, 281.0624, + 283.4668, 286.5532, 289.4352, 293.2564, 295.2744, 298.2118, 300.7472, + 304.1456, 307.2928, 309.7504, 312.5528, 315.979, 318.2102, 322.1834, + 324.3494, 327.325, 330.6614, 332.903, 337.2544, 339.9042, 343.215, + 345.2864, 348.0814, 352.6764, 355.301, 357.139, 360.658, 363.1732, + 366.5902, 369.9538, 373.0828, 375.922, 378.9902, 382.7328, 386.4538, + 388.1136, 391.2234, 394.0878, 396.708, 401.1556, 404.1852, 406.6372, + 409.6822, 412.7796, 416.6078, 418.4916, 422.131, 424.5376, 428.1988, + 432.211, 434.4502, 438.5282, 440.912, 444.0448, 447.7432, 450.8524, + 453.7988, 456.7858, 458.8868, 463.9886, 466.5064, 468.9124, 472.6616, + 475.4682, 478.582, 481.304, 485.2738, 488.6894, 490.329, 496.106, + 497.6908, 501.1374, 504.5322, 506.8848, 510.3324, 513.4512, 516.179, + 520.4412, 522.6066, 526.167, 528.7794, 533.379, 536.067, 538.46, + 542.9116, 545.692, 547.9546, 552.493, 555.2722, 557.335, 562.449, + 564.2014, 569.0738, 571.0974, 574.8564, 578.2996, 581.409, 583.9704, + 585.8098, 589.6528, 594.5998, 595.958, 600.068, 603.3278, 608.2016, + 609.9632, 612.864, 615.43, 620.7794, 621.272, 625.8644, 629.206, + 633.219, 634.5154, 638.6102, ], // precision 8 &[ @@ -1550,367 +1255,56 @@ pub const BIAS_DATA: &[&[f64]] = &[ -1.7606, ], &[ - 22.0, - 21.119_4, - 20.820_8, - 20.231_8, - 19.77, - 19.243_6, - 18.777_4, - 18.284_8, - 17.822_4, - 17.374_2, - 16.933_6, - 16.503, - 16.049_4, - 15.629_2, - 15.212_4, - 14.798, - 14.367, - 13.972_8, - 13.594_4, - 13.217, - 12.843_8, - 12.369_6, - 12.095_6, - 11.704_4, - 11.324, - 11.066_8, - 10.669_8, - 10.364_4, - 10.049, - 9.691_8, - 9.414_6, - 9.082, - 8.687, - 8.539_8, - 8.246_2, - 7.857, - 7.660_6, - 7.416_8, - 7.124_8, - 6.922_2, - 6.680_4, - 6.447, - 6.345_4, - 5.959_4, - 5.763_6, - 5.577_6, - 5.331, - 5.19, - 4.967_6, - 4.756_4, - 4.531_4, - 4.444_2, - 4.370_8, - 3.977_4, - 3.962_4, - 3.879_6, - 3.755, - 3.472, - 3.207_6, - 3.102_4, - 2.890_8, - 2.733_8, - 2.772_8, - 2.629, - 2.413, - 2.326_6, - 2.152_4, - 2.264_2, - 2.180_6, - 2.056_6, - 1.919_2, - 1.759_8, - 1.351_6, - 1.580_2, - 1.438_6, - 1.491_6, - 1.152_4, - 1.189_2, - 0.841_4, - 0.879_8, - 0.837_6, - 0.469_8, - 0.765_6, - 0.331, - 0.591_4, - 0.601_2, - 0.701_6, - 0.558_2, - 0.339_4, - 0.354_4, - 0.491_2, - 0.308, - 0.355_2, - -0.025_4, - 0.205_2, - -0.273, - 0.132_2, - 0.394_4, - -0.241_2, - 0.242, - 0.191_4, - 0.253_8, - -0.122_4, - -0.370_8, - 0.193_2, - -0.084_8, - 0.086_8, - -0.327_2, - -0.285_6, - 0.311_4, - -0.128_4, - -0.755, - -0.209_2, - -0.293_6, - -0.364, - -0.253_6, - -0.821_2, - -0.253_6, - -0.510_4, - -0.383_4, - -0.491_8, - -0.220_2, - -0.097_2, - -0.557_4, - -0.114_6, - -0.295, - -0.534_8, - -0.653_8, - 0.346_4, - 0.039_8, - -0.995_8, - 0.034_2, - -0.523_4, - -0.489, - -0.274_8, - -0.575, - -0.482_8, - 0.057_2, - -0.330_6, - -0.628_8, - -0.140_2, - -0.540_6, - -0.446, - -0.599_4, - -0.262_6, - 0.163_4, - -0.100_6, - -0.395, - -1.069_6, - -0.836_4, - -0.753_2, - -0.412_4, - -0.790_4, - -0.296_8, - -0.285_4, - -0.193, - -0.077_2, - -0.962_8, - -0.414_8, + 22.0, 21.119_4, 20.820_8, 20.231_8, 19.77, 19.243_6, 18.777_4, + 18.284_8, 17.822_4, 17.374_2, 16.933_6, 16.503, 16.049_4, 15.629_2, + 15.212_4, 14.798, 14.367, 13.972_8, 13.594_4, 13.217, 12.843_8, + 12.369_6, 12.095_6, 11.704_4, 11.324, 11.066_8, 10.669_8, 10.364_4, + 10.049, 9.691_8, 9.414_6, 9.082, 8.687, 8.539_8, 8.246_2, 7.857, + 7.660_6, 7.416_8, 7.124_8, 6.922_2, 6.680_4, 6.447, 6.345_4, 5.959_4, + 5.763_6, 5.577_6, 5.331, 5.19, 4.967_6, 4.756_4, 4.531_4, 4.444_2, + 4.370_8, 3.977_4, 3.962_4, 3.879_6, 3.755, 3.472, 3.207_6, 3.102_4, + 2.890_8, 2.733_8, 2.772_8, 2.629, 2.413, 2.326_6, 2.152_4, 2.264_2, + 2.180_6, 2.056_6, 1.919_2, 1.759_8, 1.351_6, 1.580_2, 1.438_6, 1.491_6, + 1.152_4, 1.189_2, 0.841_4, 0.879_8, 0.837_6, 0.469_8, 0.765_6, 0.331, + 0.591_4, 0.601_2, 0.701_6, 0.558_2, 0.339_4, 0.354_4, 0.491_2, 0.308, + 0.355_2, -0.025_4, 0.205_2, -0.273, 0.132_2, 0.394_4, -0.241_2, 0.242, + 0.191_4, 0.253_8, -0.122_4, -0.370_8, 0.193_2, -0.084_8, 0.086_8, + -0.327_2, -0.285_6, 0.311_4, -0.128_4, -0.755, -0.209_2, -0.293_6, + -0.364, -0.253_6, -0.821_2, -0.253_6, -0.510_4, -0.383_4, -0.491_8, + -0.220_2, -0.097_2, -0.557_4, -0.114_6, -0.295, -0.534_8, -0.653_8, + 0.346_4, 0.039_8, -0.995_8, 0.034_2, -0.523_4, -0.489, -0.274_8, + -0.575, -0.482_8, 0.057_2, -0.330_6, -0.628_8, -0.140_2, -0.540_6, + -0.446, -0.599_4, -0.262_6, 0.163_4, -0.100_6, -0.395, -1.069_6, + -0.836_4, -0.753_2, -0.412_4, -0.790_4, -0.296_8, -0.285_4, -0.193, + -0.077_2, -0.962_8, -0.414_8, ], &[ - 45.0, - 44.190_2, - 43.271, - 42.835_8, - 41.814_2, - 41.285_4, - 40.317, - 39.354, - 38.892_4, - 37.943_6, - 37.459_6, - 36.526_2, - 35.624_8, - 35.157_4, - 34.282_2, - 33.837, - 32.963_6, - 32.074, - 31.704_2, - 30.797_6, - 30.477_2, - 29.656_4, - 28.794_2, - 28.500_4, - 27.686, - 27.291, - 26.567_2, - 25.855_6, - 25.498_2, - 24.820_4, - 24.425_2, - 23.774_4, - 23.078_6, - 22.834_4, - 22.029_4, - 21.809_8, - 21.079_4, - 20.573_2, - 20.187_8, - 19.564_8, - 19.290_2, - 18.678_4, - 18.335_2, - 17.894_6, - 17.371_2, - 17.085_2, - 16.499, - 16.268_6, - 15.684_4, - 15.223_4, - 14.973_2, - 14.335_6, - 14.228_6, - 13.726_2, - 13.328_4, - 13.104_8, - 12.596_2, - 12.356_2, - 12.127_2, - 11.418_4, - 11.497_4, - 11.082_2, - 10.856, - 10.48, - 10.283_4, - 10.020_8, - 9.637, - 9.517_4, - 9.057_6, - 8.747_6, - 8.427, - 8.132_6, - 8.237_2, - 8.278_8, - 7.677_6, - 7.792_6, - 7.195_2, - 6.956_4, - 6.645_4, - 6.87, - 6.542_8, - 6.2, - 6.029_4, - 5.627_8, - 5.678_2, - 5.792, - 5.351_6, - 5.283_2, - 5.039_4, - 5.074_8, - 4.491_2, - 4.849, - 4.696, - 4.540_4, - 4.073, - 4.371_4, - 3.721_6, - 3.732_8, - 3.420_8, - 3.418_4, - 3.942_4, - 3.277_2, - 3.411, - 3.130_8, - 2.769, - 2.925_8, - 2.682_8, - 2.750_2, - 2.706, - 2.388_6, - 3.018_6, - 2.451_8, - 2.927, - 2.417_2, - 2.411_4, - 2.033, - 2.512_4, - 2.556_4, - 2.600_8, - 2.417_2, - 1.804_4, - 1.997, - 2.454_8, - 1.894_8, - 2.234_6, - 2.308_6, - 2.154_8, - 1.884_2, - 1.650_8, - 0.677_2, - 1.725_4, - 1.475_2, - 1.722_8, - 1.661_4, - 1.167_6, - 1.793, - 1.000_6, - 0.905_2, - 0.66, - 1.558_8, - 1.163_6, - 0.688_2, - 0.712_6, - 0.450_2, - 1.197_8, - 0.975_6, - 0.165_4, - 1.727, - -0.252_6, - 1.197_4, - 1.134_6, - 1.304_8, - 1.194_8, - 0.313_4, - 0.879, - 1.120_4, - 0.853, - 1.679_2, - 0.857, - 0.448_6, - 1.236_2, - 0.953_4, - 1.028_6, - 0.563_2, - 0.663, - 0.723, - 0.756_6, - -0.837_6, - 0.256_6, - 0.62, - 0.821_6, - 0.216_6, - 0.205_6, - 0.220_2, - 0.372_6, - 0.334_4, - 0.928_4, - 0.972_8, - 0.192_4, - 0.487_2, - -0.413, - 0.807, - 0.120_6, - 0.769, - 0.870_8, - 0.665, - 0.118_2, - 0.401_2, - 0.635_2, - 0.135_4, - 0.175_6, - 1.160_6, - 0.346_2, - 0.521_4, - -0.586_6, - -1.164_8, - 0.968_4, - 0.837, - 0.779_6, - 0.985_8, + 45.0, 44.190_2, 43.271, 42.835_8, 41.814_2, 41.285_4, 40.317, 39.354, + 38.892_4, 37.943_6, 37.459_6, 36.526_2, 35.624_8, 35.157_4, 34.282_2, + 33.837, 32.963_6, 32.074, 31.704_2, 30.797_6, 30.477_2, 29.656_4, + 28.794_2, 28.500_4, 27.686, 27.291, 26.567_2, 25.855_6, 25.498_2, + 24.820_4, 24.425_2, 23.774_4, 23.078_6, 22.834_4, 22.029_4, 21.809_8, + 21.079_4, 20.573_2, 20.187_8, 19.564_8, 19.290_2, 18.678_4, 18.335_2, + 17.894_6, 17.371_2, 17.085_2, 16.499, 16.268_6, 15.684_4, 15.223_4, + 14.973_2, 14.335_6, 14.228_6, 13.726_2, 13.328_4, 13.104_8, 12.596_2, + 12.356_2, 12.127_2, 11.418_4, 11.497_4, 11.082_2, 10.856, 10.48, + 10.283_4, 10.020_8, 9.637, 9.517_4, 9.057_6, 8.747_6, 8.427, 8.132_6, + 8.237_2, 8.278_8, 7.677_6, 7.792_6, 7.195_2, 6.956_4, 6.645_4, 6.87, + 6.542_8, 6.2, 6.029_4, 5.627_8, 5.678_2, 5.792, 5.351_6, 5.283_2, + 5.039_4, 5.074_8, 4.491_2, 4.849, 4.696, 4.540_4, 4.073, 4.371_4, + 3.721_6, 3.732_8, 3.420_8, 3.418_4, 3.942_4, 3.277_2, 3.411, 3.130_8, + 2.769, 2.925_8, 2.682_8, 2.750_2, 2.706, 2.388_6, 3.018_6, 2.451_8, + 2.927, 2.417_2, 2.411_4, 2.033, 2.512_4, 2.556_4, 2.600_8, 2.417_2, + 1.804_4, 1.997, 2.454_8, 1.894_8, 2.234_6, 2.308_6, 2.154_8, 1.884_2, + 1.650_8, 0.677_2, 1.725_4, 1.475_2, 1.722_8, 1.661_4, 1.167_6, 1.793, + 1.000_6, 0.905_2, 0.66, 1.558_8, 1.163_6, 0.688_2, 0.712_6, 0.450_2, + 1.197_8, 0.975_6, 0.165_4, 1.727, -0.252_6, 1.197_4, 1.134_6, 1.304_8, + 1.194_8, 0.313_4, 0.879, 1.120_4, 0.853, 1.679_2, 0.857, 0.448_6, + 1.236_2, 0.953_4, 1.028_6, 0.563_2, 0.663, 0.723, 0.756_6, -0.837_6, + 0.256_6, 0.62, 0.821_6, 0.216_6, 0.205_6, 0.220_2, 0.372_6, 0.334_4, + 0.928_4, 0.972_8, 0.192_4, 0.487_2, -0.413, 0.807, 0.120_6, 0.769, + 0.870_8, 0.665, 0.118_2, 0.401_2, 0.635_2, 0.135_4, 0.175_6, 1.160_6, + 0.346_2, 0.521_4, -0.586_6, -1.164_8, 0.968_4, 0.837, 0.779_6, 0.985_8, ], &[ 91.0, @@ -4355,7 +3749,6 @@ pub const BIAS_DATA: &[&[f64]] = &[ ], ]; - #[cfg(test)] mod tests { use super::*; @@ -4363,17 +3756,28 @@ mod tests { #[test] fn test_estimates_are_sorted() { for (i, estimates) in RAW_ESTIMATE_DATA.iter().enumerate() { - let precision = i+4; - assert!(estimates.windows(2).all(|w| w[0] <= w[1]), "Estimates for precision {} is not sorted", precision); + let precision = i + 4; + assert!( + estimates.windows(2).all(|w| w[0] <= w[1]), + "Estimates for precision {} is not sorted", + precision + ); } } #[test] fn test_length_compatibility() { assert_eq!(RAW_ESTIMATE_DATA.len(), 15); - for (i, (estimates, biases)) in RAW_ESTIMATE_DATA.iter().zip(BIAS_DATA.iter()).enumerate() { - let precision = i+4; - assert_eq!(estimates.len(), biases.len(), "Estimates and biases for precision {} have different lengths", precision); + for (i, (estimates, biases)) in + RAW_ESTIMATE_DATA.iter().zip(BIAS_DATA.iter()).enumerate() + { + let precision = i + 4; + assert_eq!( + estimates.len(), + biases.len(), + "Estimates and biases for precision {} have different lengths", + precision + ); } } -} \ No newline at end of file +}