http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e685fd85/gemfire-core/src/main/java/com/gemstone/gemfire/internal/redis/executor/hll/HyperLogLogPlus.java
----------------------------------------------------------------------
diff --git 
a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/redis/executor/hll/HyperLogLogPlus.java
 
b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/redis/executor/hll/HyperLogLogPlus.java
deleted file mode 100755
index 8bba36d..0000000
--- 
a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/redis/executor/hll/HyperLogLogPlus.java
+++ /dev/null
@@ -1,1068 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.gemstone.gemfire.internal.redis.executor.hll;
-
-/*
- * Copyright (C) 2011 Clearspring Technologies, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.DataInput;
-import java.io.DataInputStream;
-import java.io.DataOutput;
-import java.io.DataOutputStream;
-import java.io.Externalizable;
-import java.io.IOException;
-import java.io.ObjectInput;
-import java.io.ObjectOutput;
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-import java.util.SortedMap;
-import java.util.TreeMap;
-
-
-/**
- * Implementation of HyperLogLog++ described in
- * <p/>
- * <p>
- * 
http://static.googleusercontent.com/external_content/untrusted_dlcp/research.google.com/en/us/pubs/archive/40671.pdf
- * </p>
- * <p/>
- * Brief HyperLogLog++ Overview
- * <p/>
- * Uses 64 bit hashing instead of 32
- * Has two representation modes: sparse and normal
- * <p/>
- * 'normal' is approximately the same as regular hyperloglog (still uses 64 
bits)
- * <p/>
- * 'sparse' handles lower cardinality values with a highly accurate but poorly 
scaling
- * strategy and leverages data compression to compete with 'normal' for as 
long as possible
- * (sparse has the advantage on accuracy per unit of memory at low cardinality 
but quickly falls behind).
- */
-public class HyperLogLogPlus implements ICardinality, Serializable {
-
-  private static final long serialVersionUID = 7504952025744337762L;
-
-  private enum Format {
-    SPARSE, NORMAL
-  }
-
-  /**
-   * used to mark codec version for serialization
-   */
-  private static final int VERSION = 2;
-
-  // threshold and bias data taken from google's bias correction data set:  
https://docs.google.com/document/d/1gyjfMHy43U9OWBXxfaeG-3MjGzejW1dlpyMwEYAAWEI/view?fullscreen#
-  static final double[] thresholdData = {10, 20, 40, 80, 220, 400, 900, 1800, 
3100, 6500, 15500, 20000, 50000, 120000, 350000};
-
-  static final double[][] rawEstimateData = {
-    // precision 4
-    {11, 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, 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,},
-    // precision 6
-    {46, 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.7
 502, 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,},
-    // precision 7
-    {92, 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, 33
 2.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
-    {184.2152, 187.2454, 190.2096, 193.6652, 196.6312, 199.6822, 203.249, 
206.3296, 210.0038, 213.2074, 216.4612, 220.27, 223.5178, 227.4412, 230.8032, 
234.1634, 238.1688, 241.6074, 245.6946, 249.2664, 252.8228, 257.0432, 260.6824, 
264.9464, 268.6268, 272.2626, 276.8376, 280.4034, 284.8956, 288.8522, 292.7638, 
297.3552, 301.3556, 305.7526, 309.9292, 313.8954, 318.8198, 322.7668, 327.298, 
331.6688, 335.9466, 340.9746, 345.1672, 349.3474, 354.3028, 358.8912, 364.114, 
368.4646, 372.9744, 378.4092, 382.6022, 387.843, 392.5684, 397.1652, 402.5426, 
407.4152, 412.5388, 417.3592, 422.1366, 427.486, 432.3918, 437.5076, 442.509, 
447.3834, 453.3498, 458.0668, 463.7346, 469.1228, 473.4528, 479.7, 484.644, 
491.0518, 495.5774, 500.9068, 506.432, 512.1666, 517.434, 522.6644, 527.4894, 
533.6312, 538.3804, 544.292, 550.5496, 556.0234, 562.8206, 566.6146, 572.4188, 
579.117, 583.6762, 590.6576, 595.7864, 601.509, 607.5334, 612.9204, 619.772, 
624.2924, 630.8654, 636.1836, 642.745, 649.1316, 655.0386, 6
 60.0136, 666.6342, 671.6196, 678.1866, 684.4282, 689.3324, 695.4794, 702.5038, 
708.129, 713.528, 720.3204, 726.463, 732.7928, 739.123, 744.7418, 751.2192, 
756.5102, 762.6066, 769.0184, 775.2224, 781.4014, 787.7618, 794.1436, 798.6506, 
805.6378, 811.766, 819.7514, 824.5776, 828.7322, 837.8048, 843.6302, 849.9336, 
854.4798, 861.3388, 867.9894, 873.8196, 880.3136, 886.2308, 892.4588, 899.0816, 
905.4076, 912.0064, 917.3878, 923.619, 929.998, 937.3482, 943.9506, 947.991, 
955.1144, 962.203, 968.8222, 975.7324, 981.7826, 988.7666, 994.2648, 1000.3128, 
1007.4082, 1013.7536, 1020.3376, 1026.7156, 1031.7478, 1037.4292, 1045.393, 
1051.2278, 1058.3434, 1062.8726, 1071.884, 1076.806, 1082.9176, 1089.1678, 
1095.5032, 1102.525, 1107.2264, 1115.315, 1120.93, 1127.252, 1134.1496, 
1139.0408, 1147.5448, 1153.3296, 1158.1974, 1166.5262, 1174.3328, 1175.657, 
1184.4222, 1190.9172, 1197.1292, 1204.4606, 1210.4578, 1218.8728, 1225.3336, 
1226.6592, 1236.5768, 1241.363, 1249.4074, 1254.6566, 1260.8014, 1266.
 5454, 1274.5192,},
-    // precision 9
-    {369, 374.8294, 381.2452, 387.6698, 394.1464, 400.2024, 406.8782, 
413.6598, 420.462, 427.2826, 433.7102, 440.7416, 447.9366, 455.1046, 462.285, 
469.0668, 476.306, 483.8448, 491.301, 498.9886, 506.2422, 513.8138, 521.7074, 
529.7428, 537.8402, 545.1664, 553.3534, 561.594, 569.6886, 577.7876, 585.65, 
594.228, 602.8036, 611.1666, 620.0818, 628.0824, 637.2574, 646.302, 655.1644, 
664.0056, 672.3802, 681.7192, 690.5234, 700.2084, 708.831, 718.485, 728.1112, 
737.4764, 746.76, 756.3368, 766.5538, 775.5058, 785.2646, 795.5902, 804.3818, 
814.8998, 824.9532, 835.2062, 845.2798, 854.4728, 864.9582, 875.3292, 886.171, 
896.781, 906.5716, 916.7048, 927.5322, 937.875, 949.3972, 958.3464, 969.7274, 
980.2834, 992.1444, 1003.4264, 1013.0166, 1024.018, 1035.0438, 1046.34, 
1057.6856, 1068.9836, 1079.0312, 1091.677, 1102.3188, 1113.4846, 1124.4424, 
1135.739, 1147.1488, 1158.9202, 1169.406, 1181.5342, 1193.2834, 1203.8954, 
1216.3286, 1226.2146, 1239.6684, 1251.9946, 1262.123, 1275.4338, 1285.7378, 1296
 .076, 1308.9692, 1320.4964, 1333.0998, 1343.9864, 1357.7754, 1368.3208, 
1380.4838, 1392.7388, 1406.0758, 1416.9098, 1428.9728, 1440.9228, 1453.9292, 
1462.617, 1476.05, 1490.2996, 1500.6128, 1513.7392, 1524.5174, 1536.6322, 
1548.2584, 1562.3766, 1572.423, 1587.1232, 1596.5164, 1610.5938, 1622.5972, 
1633.1222, 1647.7674, 1658.5044, 1671.57, 1683.7044, 1695.4142, 1708.7102, 
1720.6094, 1732.6522, 1747.841, 1756.4072, 1769.9786, 1782.3276, 1797.5216, 
1808.3186, 1819.0694, 1834.354, 1844.575, 1856.2808, 1871.1288, 1880.7852, 
1893.9622, 1906.3418, 1920.6548, 1932.9302, 1945.8584, 1955.473, 1968.8248, 
1980.6446, 1995.9598, 2008.349, 2019.8556, 2033.0334, 2044.0206, 2059.3956, 
2069.9174, 2082.6084, 2093.7036, 2106.6108, 2118.9124, 2132.301, 2144.7628, 
2159.8422, 2171.0212, 2183.101, 2193.5112, 2208.052, 2221.3194, 2233.3282, 
2247.295, 2257.7222, 2273.342, 2286.5638, 2299.6786, 2310.8114, 2322.3312, 
2335.516, 2349.874, 2363.5968, 2373.865, 2387.1918, 2401.8328, 2414.8496, 
2424.544, 2436.7592,
  2447.1682, 2464.1958, 2474.3438, 2489.0006, 2497.4526, 2513.6586, 2527.19, 
2540.7028, 2553.768,},
-    // precision 10
-    {738.1256, 750.4234, 763.1064, 775.4732, 788.4636, 801.0644, 814.488, 
827.9654, 841.0832, 854.7864, 868.1992, 882.2176, 896.5228, 910.1716, 924.7752, 
938.899, 953.6126, 968.6492, 982.9474, 998.5214, 1013.1064, 1028.6364, 
1044.2468, 1059.4588, 1075.3832, 1091.0584, 1106.8606, 1123.3868, 1139.5062, 
1156.1862, 1172.463, 1189.339, 1206.1936, 1223.1292, 1240.1854, 1257.2908, 
1275.3324, 1292.8518, 1310.5204, 1328.4854, 1345.9318, 1364.552, 1381.4658, 
1400.4256, 1419.849, 1438.152, 1456.8956, 1474.8792, 1494.118, 1513.62, 
1532.5132, 1551.9322, 1570.7726, 1590.6086, 1610.5332, 1630.5918, 1650.4294, 
1669.7662, 1690.4106, 1710.7338, 1730.9012, 1750.4486, 1770.1556, 1791.6338, 
1812.7312, 1833.6264, 1853.9526, 1874.8742, 1896.8326, 1918.1966, 1939.5594, 
1961.07, 1983.037, 2003.1804, 2026.071, 2047.4884, 2070.0848, 2091.2944, 
2114.333, 2135.9626, 2158.2902, 2181.0814, 2202.0334, 2224.4832, 2246.39, 
2269.7202, 2292.1714, 2314.2358, 2338.9346, 2360.891, 2384.0264, 2408.3834, 
2430.1544, 2454.86
 84, 2476.9896, 2501.4368, 2522.8702, 2548.0408, 2570.6738, 2593.5208, 
2617.0158, 2640.2302, 2664.0962, 2687.4986, 2714.2588, 2735.3914, 2759.6244, 
2781.8378, 2808.0072, 2830.6516, 2856.2454, 2877.2136, 2903.4546, 2926.785, 
2951.2294, 2976.468, 3000.867, 3023.6508, 3049.91, 3073.5984, 3098.162, 
3121.5564, 3146.2328, 3170.9484, 3195.5902, 3221.3346, 3242.7032, 3271.6112, 
3296.5546, 3317.7376, 3345.072, 3369.9518, 3394.326, 3418.1818, 3444.6926, 
3469.086, 3494.2754, 3517.8698, 3544.248, 3565.3768, 3588.7234, 3616.979, 
3643.7504, 3668.6812, 3695.72, 3719.7392, 3742.6224, 3770.4456, 3795.6602, 
3819.9058, 3844.002, 3869.517, 3895.6824, 3920.8622, 3947.1364, 3973.985, 
3995.4772, 4021.62, 4046.628, 4074.65, 4096.2256, 4121.831, 4146.6406, 
4173.276, 4195.0744, 4223.9696, 4251.3708, 4272.9966, 4300.8046, 4326.302, 
4353.1248, 4374.312, 4403.0322, 4426.819, 4450.0598, 4478.5206, 4504.8116, 
4528.8928, 4553.9584, 4578.8712, 4603.8384, 4632.3872, 4655.5128, 4675.821, 
4704.6222, 4731.9862, 4755.417
 4, 4781.2628, 4804.332, 4832.3048, 4862.8752, 4883.4148, 4906.9544, 4935.3516, 
4954.3532, 4984.0248, 5011.217, 5035.3258, 5057.3672, 5084.1828,},
-    // precision 11
-    {1477, 1501.6014, 1526.5802, 1551.7942, 1577.3042, 1603.2062, 1629.8402, 
1656.2292, 1682.9462, 1709.9926, 1737.3026, 1765.4252, 1793.0578, 1821.6092, 
1849.626, 1878.5568, 1908.527, 1937.5154, 1967.1874, 1997.3878, 2027.37, 
2058.1972, 2089.5728, 2120.1012, 2151.9668, 2183.292, 2216.0772, 2247.8578, 
2280.6562, 2313.041, 2345.714, 2380.3112, 2414.1806, 2447.9854, 2481.656, 
2516.346, 2551.5154, 2586.8378, 2621.7448, 2656.6722, 2693.5722, 2729.1462, 
2765.4124, 2802.8728, 2838.898, 2876.408, 2913.4926, 2951.4938, 2989.6776, 
3026.282, 3065.7704, 3104.1012, 3143.7388, 3181.6876, 3221.1872, 3261.5048, 
3300.0214, 3339.806, 3381.409, 3421.4144, 3461.4294, 3502.2286, 3544.651, 
3586.6156, 3627.337, 3670.083, 3711.1538, 3753.5094, 3797.01, 3838.6686, 
3882.1678, 3922.8116, 3967.9978, 4009.9204, 4054.3286, 4097.5706, 4140.6014, 
4185.544, 4229.5976, 4274.583, 4316.9438, 4361.672, 4406.2786, 4451.8628, 
4496.1834, 4543.505, 4589.1816, 4632.5188, 4678.2294, 4724.8908, 4769.0194, 
4817.052, 4861.4588
 , 4910.1596, 4956.4344, 5002.5238, 5048.13, 5093.6374, 5142.8162, 5187.7894, 
5237.3984, 5285.6078, 5331.0858, 5379.1036, 5428.6258, 5474.6018, 5522.7618, 
5571.5822, 5618.59, 5667.9992, 5714.88, 5763.454, 5808.6982, 5860.3644, 
5910.2914, 5953.571, 6005.9232, 6055.1914, 6104.5882, 6154.5702, 6199.7036, 
6251.1764, 6298.7596, 6350.0302, 6398.061, 6448.4694, 6495.933, 6548.0474, 
6597.7166, 6646.9416, 6695.9208, 6742.6328, 6793.5276, 6842.1934, 6894.2372, 
6945.3864, 6996.9228, 7044.2372, 7094.1374, 7142.2272, 7192.2942, 7238.8338, 
7288.9006, 7344.0908, 7394.8544, 7443.5176, 7490.4148, 7542.9314, 7595.6738, 
7641.9878, 7694.3688, 7743.0448, 7797.522, 7845.53, 7899.594, 7950.3132, 
7996.455, 8050.9442, 8092.9114, 8153.1374, 8197.4472, 8252.8278, 8301.8728, 
8348.6776, 8401.4698, 8453.551, 8504.6598, 8553.8944, 8604.1276, 8657.6514, 
8710.3062, 8758.908, 8807.8706, 8862.1702, 8910.4668, 8960.77, 9007.2766, 
9063.164, 9121.0534, 9164.1354, 9218.1594, 9267.767, 9319.0594, 9372.155, 
9419.7126, 9474.
 3722, 9520.1338, 9572.368, 9622.7702, 9675.8448, 9726.5396, 9778.7378, 
9827.6554, 9878.1922, 9928.7782, 9978.3984, 10026.578, 10076.5626, 10137.1618, 
10177.5244, 10229.9176,},
-    // precision 12
-    {2954, 3003.4782, 3053.3568, 3104.3666, 3155.324, 3206.9598, 3259.648, 
3312.539, 3366.1474, 3420.2576, 3474.8376, 3530.6076, 3586.451, 3643.38, 
3700.4104, 3757.5638, 3815.9676, 3875.193, 3934.838, 3994.8548, 4055.018, 
4117.1742, 4178.4482, 4241.1294, 4304.4776, 4367.4044, 4431.8724, 4496.3732, 
4561.4304, 4627.5326, 4693.949, 4761.5532, 4828.7256, 4897.6182, 4965.5186, 
5034.4528, 5104.865, 5174.7164, 5244.6828, 5316.6708, 5387.8312, 5459.9036, 
5532.476, 5604.8652, 5679.6718, 5753.757, 5830.2072, 5905.2828, 5980.0434, 
6056.6264, 6134.3192, 6211.5746, 6290.0816, 6367.1176, 6447.9796, 6526.5576, 
6606.1858, 6686.9144, 6766.1142, 6847.0818, 6927.9664, 7010.9096, 7091.0816, 
7175.3962, 7260.3454, 7344.018, 7426.4214, 7511.3106, 7596.0686, 7679.8094, 
7765.818, 7852.4248, 7936.834, 8022.363, 8109.5066, 8200.4554, 8288.5832, 
8373.366, 8463.4808, 8549.7682, 8642.0522, 8728.3288, 8820.9528, 8907.727, 
9001.0794, 9091.2522, 9179.988, 9269.852, 9362.6394, 9453.642, 9546.9024, 
9640.6616, 9732.66
 22, 9824.3254, 9917.7484, 10007.9392, 10106.7508, 10196.2152, 10289.8114, 
10383.5494, 10482.3064, 10576.8734, 10668.7872, 10764.7156, 10862.0196, 
10952.793, 11049.9748, 11146.0702, 11241.4492, 11339.2772, 11434.2336, 
11530.741, 11627.6136, 11726.311, 11821.5964, 11918.837, 12015.3724, 
12113.0162, 12213.0424, 12306.9804, 12408.4518, 12504.8968, 12604.586, 
12700.9332, 12798.705, 12898.5142, 12997.0488, 13094.788, 13198.475, 
13292.7764, 13392.9698, 13486.8574, 13590.1616, 13686.5838, 13783.6264, 
13887.2638, 13992.0978, 14081.0844, 14189.9956, 14280.0912, 14382.4956, 
14486.4384, 14588.1082, 14686.2392, 14782.276, 14888.0284, 14985.1864, 
15088.8596, 15187.0998, 15285.027, 15383.6694, 15495.8266, 15591.3736, 
15694.2008, 15790.3246, 15898.4116, 15997.4522, 16095.5014, 16198.8514, 
16291.7492, 16402.6424, 16499.1266, 16606.2436, 16697.7186, 16796.3946, 
16902.3376, 17005.7672, 17100.814, 17206.8282, 17305.8262, 17416.0744, 
17508.4092, 17617.0178, 17715.4554, 17816.758, 17920.1748, 18012.9236,
  18119.7984, 18223.2248, 18324.2482, 18426.6276, 18525.0932, 18629.8976, 
18733.2588, 18831.0466, 18940.1366, 19032.2696, 19131.729, 19243.4864, 
19349.6932, 19442.866, 19547.9448, 19653.2798, 19754.4034, 19854.0692, 
19965.1224, 20065.1774, 20158.2212, 20253.353, 20366.3264, 20463.22,},
-    // precision 13
-    {5908.5052, 6007.2672, 6107.347, 6208.5794, 6311.2622, 6414.5514, 
6519.3376, 6625.6952, 6732.5988, 6841.3552, 6950.5972, 7061.3082, 7173.5646, 
7287.109, 7401.8216, 7516.4344, 7633.3802, 7751.2962, 7870.3784, 7990.292, 
8110.79, 8233.4574, 8356.6036, 8482.2712, 8607.7708, 8735.099, 8863.1858, 
8993.4746, 9123.8496, 9255.6794, 9388.5448, 9522.7516, 9657.3106, 9792.6094, 
9930.5642, 10068.794, 10206.7256, 10347.81, 10490.3196, 10632.0778, 10775.9916, 
10920.4662, 11066.124, 11213.073, 11358.0362, 11508.1006, 11659.1716, 
11808.7514, 11959.4884, 12112.1314, 12265.037, 12420.3756, 12578.933, 
12734.311, 12890.0006, 13047.2144, 13207.3096, 13368.5144, 13528.024, 
13689.847, 13852.7528, 14018.3168, 14180.5372, 14346.9668, 14513.5074, 
14677.867, 14846.2186, 15017.4186, 15184.9716, 15356.339, 15529.2972, 
15697.3578, 15871.8686, 16042.187, 16216.4094, 16389.4188, 16565.9126, 
16742.3272, 16919.0042, 17094.7592, 17273.965, 17451.8342, 17634.4254, 
17810.5984, 17988.9242, 18171.051, 18354.7938, 1853
 9.466, 18721.0408, 18904.9972, 19081.867, 19271.9118, 19451.8694, 19637.9816, 
19821.2922, 20013.1292, 20199.3858, 20387.8726, 20572.9514, 20770.7764, 
20955.1714, 21144.751, 21329.9952, 21520.709, 21712.7016, 21906.3868, 
22096.2626, 22286.0524, 22475.051, 22665.5098, 22862.8492, 23055.5294, 
23249.6138, 23437.848, 23636.273, 23826.093, 24020.3296, 24213.3896, 
24411.7392, 24602.9614, 24805.7952, 24998.1552, 25193.9588, 25389.0166, 
25585.8392, 25780.6976, 25981.2728, 26175.977, 26376.5252, 26570.1964, 
26773.387, 26962.9812, 27163.0586, 27368.164, 27565.0534, 27758.7428, 
27961.1276, 28163.2324, 28362.3816, 28565.7668, 28758.644, 28956.9768, 
29163.4722, 29354.7026, 29561.1186, 29767.9948, 29959.9986, 30164.0492, 
30366.9818, 30562.5338, 30762.9928, 30976.1592, 31166.274, 31376.722, 
31570.3734, 31770.809, 31974.8934, 32179.5286, 32387.5442, 32582.3504, 
32794.076, 32989.9528, 33191.842, 33392.4684, 33595.659, 33801.8672, 
34000.3414, 34200.0922, 34402.6792, 34610.0638, 34804.0084, 35011.13, 3
 5218.669, 35418.6634, 35619.0792, 35830.6534, 36028.4966, 36229.7902, 
36438.6422, 36630.7764, 36833.3102, 37048.6728, 37247.3916, 37453.5904, 
37669.3614, 37854.5526, 38059.305, 38268.0936, 38470.2516, 38674.7064, 
38876.167, 39068.3794, 39281.9144, 39492.8566, 39684.8628, 39898.4108, 
40093.1836, 40297.6858, 40489.7086, 40717.2424,},
-    // precision 14
-    {11817.475, 12015.0046, 12215.3792, 12417.7504, 12623.1814, 12830.0086, 
13040.0072, 13252.503, 13466.178, 13683.2738, 13902.0344, 14123.9798, 
14347.394, 14573.7784, 14802.6894, 15033.6824, 15266.9134, 15502.8624, 
15741.4944, 15980.7956, 16223.8916, 16468.6316, 16715.733, 16965.5726, 
17217.204, 17470.666, 17727.8516, 17986.7886, 18247.6902, 18510.9632, 
18775.304, 19044.7486, 19314.4408, 19587.202, 19862.2576, 20135.924, 
20417.0324, 20697.9788, 20979.6112, 21265.0274, 21550.723, 21841.6906, 
22132.162, 22428.1406, 22722.127, 23020.5606, 23319.7394, 23620.4014, 
23925.2728, 24226.9224, 24535.581, 24845.505, 25155.9618, 25470.3828, 
25785.9702, 26103.7764, 26420.4132, 26742.0186, 27062.8852, 27388.415, 
27714.6024, 28042.296, 28365.4494, 28701.1526, 29031.8008, 29364.2156, 
29704.497, 30037.1458, 30380.111, 30723.8168, 31059.5114, 31404.9498, 
31751.6752, 32095.2686, 32444.7792, 32794.767, 33145.204, 33498.4226, 
33847.6502, 34209.006, 34560.849, 34919.4838, 35274.9778, 35635.1322, 35996.3
 266, 36359.1394, 36722.8266, 37082.8516, 37447.7354, 37815.9606, 38191.0692, 
38559.4106, 38924.8112, 39294.6726, 39663.973, 40042.261, 40416.2036, 
40779.2036, 41161.6436, 41540.9014, 41921.1998, 42294.7698, 42678.5264, 
43061.3464, 43432.375, 43818.432, 44198.6598, 44583.0138, 44970.4794, 
45353.924, 45729.858, 46118.2224, 46511.5724, 46900.7386, 47280.6964, 
47668.1472, 48055.6796, 48446.9436, 48838.7146, 49217.7296, 49613.7796, 
50010.7508, 50410.0208, 50793.7886, 51190.2456, 51583.1882, 51971.0796, 
52376.5338, 52763.319, 53165.5534, 53556.5594, 53948.2702, 54346.352, 
54748.7914, 55138.577, 55543.4824, 55941.1748, 56333.7746, 56745.1552, 
57142.7944, 57545.2236, 57935.9956, 58348.5268, 58737.5474, 59158.5962, 
59542.6896, 59958.8004, 60349.3788, 60755.0212, 61147.6144, 61548.194, 
61946.0696, 62348.6042, 62763.603, 63162.781, 63560.635, 63974.3482, 
64366.4908, 64771.5876, 65176.7346, 65597.3916, 65995.915, 66394.0384, 
66822.9396, 67203.6336, 67612.2032, 68019.0078, 68420.0388, 68821.22, 
 69235.8388, 69640.0724, 70055.155, 70466.357, 70863.4266, 71276.2482, 
71677.0306, 72080.2006, 72493.0214, 72893.5952, 73314.5856, 73714.9852, 
74125.3022, 74521.2122, 74933.6814, 75341.5904, 75743.0244, 76166.0278, 
76572.1322, 76973.1028, 77381.6284, 77800.6092, 78189.328, 78607.0962, 
79012.2508, 79407.8358, 79825.725, 80238.701, 80646.891, 81035.6436, 
81460.0448, 81876.3884,},
-    // precision 15
-    {23635.0036, 24030.8034, 24431.4744, 24837.1524, 25246.7928, 25661.326, 
26081.3532, 26505.2806, 26933.9892, 27367.7098, 27805.318, 28248.799, 
28696.4382, 29148.8244, 29605.5138, 30066.8668, 30534.2344, 31006.32, 
31480.778, 31962.2418, 32447.3324, 32938.0232, 33432.731, 33930.728, 
34433.9896, 34944.1402, 35457.5588, 35974.5958, 36497.3296, 37021.9096, 
37554.326, 38088.0826, 38628.8816, 39171.3192, 39723.2326, 40274.5554, 
40832.3142, 41390.613, 41959.5908, 42532.5466, 43102.0344, 43683.5072, 
44266.694, 44851.2822, 45440.7862, 46038.0586, 46640.3164, 47241.064, 
47846.155, 48454.7396, 49076.9168, 49692.542, 50317.4778, 50939.65, 51572.5596, 
52210.2906, 52843.7396, 53481.3996, 54127.236, 54770.406, 55422.6598, 
56078.7958, 56736.7174, 57397.6784, 58064.5784, 58730.308, 59404.9784, 
60077.0864, 60751.9158, 61444.1386, 62115.817, 62808.7742, 63501.4774, 
64187.5454, 64883.6622, 65582.7468, 66274.5318, 66976.9276, 67688.7764, 
68402.138, 69109.6274, 69822.9706, 70543.6108, 71265.5202, 71983
 .3848, 72708.4656, 73433.384, 74158.4664, 74896.4868, 75620.9564, 76362.1434, 
77098.3204, 77835.7662, 78582.6114, 79323.9902, 80067.8658, 80814.9246, 
81567.0136, 82310.8536, 83061.9952, 83821.4096, 84580.8608, 85335.547, 
86092.5802, 86851.6506, 87612.311, 88381.2016, 89146.3296, 89907.8974, 
90676.846, 91451.4152, 92224.5518, 92995.8686, 93763.5066, 94551.2796, 
95315.1944, 96096.1806, 96881.0918, 97665.679, 98442.68, 99229.3002, 
100011.0994, 100790.6386, 101580.1564, 102377.7484, 103152.1392, 103944.2712, 
104730.216, 105528.6336, 106324.9398, 107117.6706, 107890.3988, 108695.2266, 
109485.238, 110294.7876, 111075.0958, 111878.0496, 112695.2864, 113464.5486, 
114270.0474, 115068.608, 115884.3626, 116673.2588, 117483.3716, 118275.097, 
119085.4092, 119879.2808, 120687.5868, 121499.9944, 122284.916, 123095.9254, 
123912.5038, 124709.0454, 125503.7182, 126323.259, 127138.9412, 127943.8294, 
128755.646, 129556.5354, 130375.3298, 131161.4734, 131971.1962, 132787.5458, 
133588.1056, 134431.351, 1
 35220.2906, 136023.398, 136846.6558, 137667.0004, 138463.663, 139283.7154, 
140074.6146, 140901.3072, 141721.8548, 142543.2322, 143356.1096, 144173.7412, 
144973.0948, 145794.3162, 146609.5714, 147420.003, 148237.9784, 149050.5696, 
149854.761, 150663.1966, 151494.0754, 152313.1416, 153112.6902, 153935.7206, 
154746.9262, 155559.547, 156401.9746, 157228.7036, 158008.7254, 158820.75, 
159646.9184, 160470.4458, 161279.5348, 162093.3114, 162918.542, 163729.2842,},
-    // precision 16
-    {47271, 48062.3584, 48862.7074, 49673.152, 50492.8416, 51322.9514, 
52161.03, 53009.407, 53867.6348, 54734.206, 55610.5144, 56496.2096, 57390.795, 
58297.268, 59210.6448, 60134.665, 61068.0248, 62010.4472, 62962.5204, 
63923.5742, 64895.0194, 65876.4182, 66862.6136, 67862.6968, 68868.8908, 
69882.8544, 70911.271, 71944.0924, 72990.0326, 74040.692, 75100.6336, 
76174.7826, 77252.5998, 78340.2974, 79438.2572, 80545.4976, 81657.2796, 
82784.6336, 83915.515, 85059.7362, 86205.9368, 87364.4424, 88530.3358, 
89707.3744, 90885.9638, 92080.197, 93275.5738, 94479.391, 95695.918, 
96919.2236, 98148.4602, 99382.3474, 100625.6974, 101878.0284, 103141.6278, 
104409.4588, 105686.2882, 106967.5402, 108261.6032, 109548.1578, 110852.0728, 
112162.231, 113479.0072, 114806.2626, 116137.9072, 117469.5048, 118813.5186, 
120165.4876, 121516.2556, 122875.766, 124250.5444, 125621.2222, 127003.2352, 
128387.848, 129775.2644, 131181.7776, 132577.3086, 133979.9458, 135394.1132, 
136800.9078, 138233.217, 139668.5308, 1
 41085.212, 142535.2122, 143969.0684, 145420.2872, 146878.1542, 148332.7572, 
149800.3202, 151269.66, 152743.6104, 154213.0948, 155690.288, 157169.4246, 
158672.1756, 160160.059, 161650.6854, 163145.7772, 164645.6726, 166159.1952, 
167682.1578, 169177.3328, 170700.0118, 172228.8964, 173732.6664, 175265.5556, 
176787.799, 178317.111, 179856.6914, 181400.865, 182943.4612, 184486.742, 
186033.4698, 187583.7886, 189148.1868, 190688.4526, 192250.1926, 193810.9042, 
195354.2972, 196938.7682, 198493.5898, 200079.2824, 201618.912, 203205.5492, 
204765.5798, 206356.1124, 207929.3064, 209498.7196, 211086.229, 212675.1324, 
214256.7892, 215826.2392, 217412.8474, 218995.6724, 220618.6038, 222207.1166, 
223781.0364, 225387.4332, 227005.7928, 228590.4336, 230217.8738, 231805.1054, 
233408.9, 234995.3432, 236601.4956, 238190.7904, 239817.2548, 241411.2832, 
243002.4066, 244640.1884, 246255.3128, 247849.3508, 249479.9734, 251106.8822, 
252705.027, 254332.9242, 255935.129, 257526.9014, 259154.772, 260777.625, 26
 2390.253, 264004.4906, 265643.59, 267255.4076, 268873.426, 270470.7252, 
272106.4804, 273722.4456, 275337.794, 276945.7038, 278592.9154, 280204.3726, 
281841.1606, 283489.171, 285130.1716, 286735.3362, 288364.7164, 289961.1814, 
291595.5524, 293285.683, 294899.6668, 296499.3434, 298128.0462, 299761.8946, 
301394.2424, 302997.6748, 304615.1478, 306269.7724, 307886.114, 309543.1028, 
311153.2862, 312782.8546, 314421.2008, 316033.2438, 317692.9636, 319305.2648, 
320948.7406, 322566.3364, 324228.4224, 325847.1542,},
-    // precision 17
-    {94542, 96125.811, 97728.019, 99348.558, 100987.9705, 102646.7565, 
104324.5125, 106021.7435, 107736.7865, 109469.272, 111223.9465, 112995.219, 
114787.432, 116593.152, 118422.71, 120267.2345, 122134.6765, 124020.937, 
125927.2705, 127851.255, 129788.9485, 131751.016, 133726.8225, 135722.592, 
137736.789, 139770.568, 141821.518, 143891.343, 145982.1415, 148095.387, 
150207.526, 152355.649, 154515.6415, 156696.05, 158887.7575, 161098.159, 
163329.852, 165569.053, 167837.4005, 170121.6165, 172420.4595, 174732.6265, 
177062.77, 179412.502, 181774.035, 184151.939, 186551.6895, 188965.691, 
191402.8095, 193857.949, 196305.0775, 198774.6715, 201271.2585, 203764.78, 
206299.3695, 208818.1365, 211373.115, 213946.7465, 216532.076, 219105.541, 
221714.5375, 224337.5135, 226977.5125, 229613.0655, 232270.2685, 234952.2065, 
237645.3555, 240331.1925, 243034.517, 245756.0725, 248517.6865, 251232.737, 
254011.3955, 256785.995, 259556.44, 262368.335, 265156.911, 267965.266, 
270785.583, 273616.0495, 276487.
 4835, 279346.639, 282202.509, 285074.3885, 287942.2855, 290856.018, 
293774.0345, 296678.5145, 299603.6355, 302552.6575, 305492.9785, 308466.8605, 
311392.581, 314347.538, 317319.4295, 320285.9785, 323301.7325, 326298.3235, 
329301.3105, 332301.987, 335309.791, 338370.762, 341382.923, 344431.1265, 
347464.1545, 350507.28, 353619.2345, 356631.2005, 359685.203, 362776.7845, 
365886.488, 368958.2255, 372060.6825, 375165.4335, 378237.935, 381328.311, 
384430.5225, 387576.425, 390683.242, 393839.648, 396977.8425, 400101.9805, 
403271.296, 406409.8425, 409529.5485, 412678.7, 415847.423, 419020.8035, 
422157.081, 425337.749, 428479.6165, 431700.902, 434893.1915, 438049.582, 
441210.5415, 444379.2545, 447577.356, 450741.931, 453959.548, 457137.0935, 
460329.846, 463537.4815, 466732.3345, 469960.5615, 473164.681, 476347.6345, 
479496.173, 482813.1645, 486025.6995, 489249.4885, 492460.1945, 495675.8805, 
498908.0075, 502131.802, 505374.3855, 508550.9915, 511806.7305, 515026.776, 
518217.0005, 521523.9855,
  524705.9855, 527950.997, 531210.0265, 534472.497, 537750.7315, 540926.922, 
544207.094, 547429.4345, 550666.3745, 553975.3475, 557150.7185, 560399.6165, 
563662.697, 566916.7395, 570146.1215, 573447.425, 576689.6245, 579874.5745, 
583202.337, 586503.0255, 589715.635, 592910.161, 596214.3885, 599488.035, 
602740.92, 605983.0685, 609248.67, 612491.3605, 615787.912, 619107.5245, 
622307.9555, 625577.333, 628840.4385, 632085.2155, 635317.6135, 638691.7195, 
641887.467, 645139.9405, 648441.546, 651666.252, 654941.845,},
-    // precision 18
-    {189084, 192250.913, 195456.774, 198696.946, 201977.762, 205294.444, 
208651.754, 212042.099, 215472.269, 218941.91, 222443.912, 225996.845, 
229568.199, 233193.568, 236844.457, 240543.233, 244279.475, 248044.27, 
251854.588, 255693.2, 259583.619, 263494.621, 267445.385, 271454.061, 
275468.769, 279549.456, 283646.446, 287788.198, 291966.099, 296181.164, 
300431.469, 304718.618, 309024.004, 313393.508, 317760.803, 322209.731, 
326675.061, 331160.627, 335654.47, 340241.442, 344841.833, 349467.132, 
354130.629, 358819.432, 363574.626, 368296.587, 373118.482, 377914.93, 
382782.301, 387680.669, 392601.981, 397544.323, 402529.115, 407546.018, 
412593.658, 417638.657, 422762.865, 427886.169, 433017.167, 438213.273, 
443441.254, 448692.421, 453937.533, 459239.049, 464529.569, 469910.083, 
475274.03, 480684.473, 486070.26, 491515.237, 496995.651, 502476.617, 
507973.609, 513497.19, 519083.233, 524726.509, 530305.505, 535945.728, 
541584.404, 547274.055, 552967.236, 558667.862, 564360.216, 570128.14
 8, 575965.08, 581701.952, 587532.523, 593361.144, 599246.128, 605033.418, 
610958.779, 616837.117, 622772.818, 628672.04, 634675.369, 640574.831, 
646585.739, 652574.547, 658611.217, 664642.684, 670713.914, 676737.681, 
682797.313, 688837.897, 694917.874, 701009.882, 707173.648, 713257.254, 
719415.392, 725636.761, 731710.697, 737906.209, 744103.074, 750313.39, 
756504.185, 762712.579, 768876.985, 775167.859, 781359, 787615.959, 793863.597, 
800245.477, 806464.582, 812785.294, 819005.925, 825403.057, 831676.197, 
837936.284, 844266.968, 850642.711, 856959.756, 863322.774, 869699.931, 
876102.478, 882355.787, 888694.463, 895159.952, 901536.143, 907872.631, 
914293.672, 920615.14, 927130.974, 933409.404, 939922.178, 946331.47, 
952745.93, 959209.264, 965590.224, 972077.284, 978501.961, 984953.19, 
991413.271, 997817.479, 1004222.658, 1010725.676, 1017177.138, 1023612.529, 
1030098.236, 1036493.719, 1043112.207, 1049537.036, 1056008.096, 1062476.184, 
1068942.337, 1075524.95, 1081932.864, 1088426.0
 25, 1094776.005, 1101327.448, 1107901.673, 1114423.639, 1120884.602, 
1127324.923, 1133794.24, 1140328.886, 1146849.376, 1153346.682, 1159836.502, 
1166478.703, 1172953.304, 1179391.502, 1185950.982, 1192544.052, 1198913.41, 
1205430.994, 1212015.525, 1218674.042, 1225121.683, 1231551.101, 1238126.379, 
1244673.795, 1251260.649, 1257697.86, 1264320.983, 1270736.319, 1277274.694, 
1283804.95, 1290211.514, 1296858.568, 1303455.691,}
-  };
-
-  static final double[][] biasData = {
-    // precision 4
-    {10, 9.717, 9.207, 8.7896, 8.2882, 7.8204, 7.3772, 6.9342, 6.5202, 6.161, 
5.7722, 5.4636, 5.0396, 4.6766, 4.3566, 4.0454, 3.7936, 3.4856, 3.2666, 2.9946, 
2.766, 2.4692, 2.3638, 2.0764, 1.7864, 1.7602, 1.4814, 1.433, 1.2926, 1.0664, 
0.999600000000001, 0.7956, 0.5366, 0.589399999999998, 0.573799999999999, 
0.269799999999996, 0.368200000000002, 0.0544000000000011, 0.234200000000001, 
0.0108000000000033, -0.203400000000002, -0.0701999999999998, 
-0.129600000000003, -0.364199999999997, -0.480600000000003, -0.226999999999997, 
-0.322800000000001, -0.382599999999996, -0.511200000000002, -0.669600000000003, 
-0.749400000000001, -0.500399999999999, -0.617600000000003, -0.6922, 
-0.601599999999998, -0.416200000000003, -0.338200000000001, -0.782600000000002, 
-0.648600000000002, -0.919800000000002, -0.851799999999997, -0.962400000000002, 
-0.6402, -1.1922, -1.0256, -1.086, -1.21899999999999, -0.819400000000002, 
-0.940600000000003, -1.1554, -1.2072, -1.1752, -1.16759999999999, 
-1.14019999999999, -1
 .3754, -1.29859999999999, -1.607, -1.3292, -1.7606,},
-    // precision 5
-    {22, 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,},
-    // precision 6
-    {45, 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.4
 2080000000001, 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,},
-    // precision 7
-    {91, 89.4934, 87.9758, 86.4574, 84.9718, 83.4954, 81.5302, 80.0756, 
78.6374, 77.1782, 75.7888, 73.9522, 72.592, 71.2532, 69.9086, 68.5938, 66.9474, 
65.6796, 64.4394, 63.2176, 61.9768, 60.4214, 59.2528, 58.0102, 56.8658, 
55.7278, 54.3044, 53.1316, 52.093, 51.0032, 49.9092, 48.6306, 47.5294, 46.5756, 
45.6508, 44.662, 43.552, 42.3724, 41.617, 40.5754, 39.7872, 38.8444, 37.7988, 
36.8606, 36.2118, 35.3566, 34.4476, 33.5882, 32.6816, 32.0824, 31.0258, 
30.6048, 29.4436, 28.7274, 27.957, 27.147, 26.4364, 25.7592, 25.3386, 24.781, 
23.8028, 23.656, 22.6544, 21.996, 21.4718, 21.1544, 20.6098, 19.5956, 19.0616, 
18.5758, 18.4878, 17.5244, 17.2146, 16.724, 15.8722, 15.5198, 15.0414, 14.941, 
14.9048, 13.87, 13.4304, 13.028, 12.4708, 12.37, 12.0624, 11.4668, 11.5532, 
11.4352, 11.2564, 10.2744, 10.2118, 9.74720000000002, 10.1456, 9.2928, 
8.75040000000001, 8.55279999999999, 8.97899999999998, 8.21019999999999, 
8.18340000000001, 7.3494, 7.32499999999999, 7.66140000000001, 6.90300000000002, 
7.254399
 99999998, 6.9042, 7.21499999999997, 6.28640000000001, 6.08139999999997, 
6.6764, 6.30099999999999, 5.13900000000001, 5.65800000000002, 5.17320000000001, 
4.59019999999998, 4.9538, 5.08280000000002, 4.92200000000003, 4.99020000000002, 
4.7328, 5.4538, 4.11360000000002, 4.22340000000003, 4.08780000000002, 
3.70800000000003, 4.15559999999999, 4.18520000000001, 3.63720000000001, 
3.68220000000002, 3.77960000000002, 3.6078, 2.49160000000001, 3.13099999999997, 
2.5376, 3.19880000000001, 3.21100000000001, 2.4502, 3.52820000000003, 
2.91199999999998, 3.04480000000001, 2.7432, 2.85239999999999, 2.79880000000003, 
2.78579999999999, 1.88679999999999, 2.98860000000002, 2.50639999999999, 
1.91239999999999, 2.66160000000002, 2.46820000000002, 1.58199999999999, 
1.30399999999997, 2.27379999999999, 2.68939999999998, 1.32900000000001, 
3.10599999999999, 1.69080000000002, 2.13740000000001, 2.53219999999999, 
1.88479999999998, 1.33240000000001, 1.45119999999997, 1.17899999999997, 
2.44119999999998, 1.6065999999999
 6, 2.16700000000003, 0.77940000000001, 2.37900000000002, 2.06700000000001, 
1.46000000000004, 2.91160000000002, 1.69200000000001, 0.954600000000028, 
2.49300000000005, 2.2722, 1.33500000000004, 2.44899999999996, 1.20140000000004, 
3.07380000000001, 2.09739999999999, 2.85640000000001, 2.29960000000005, 
2.40899999999999, 1.97040000000004, 0.809799999999996, 1.65279999999996, 
2.59979999999996, 0.95799999999997, 2.06799999999998, 2.32780000000002, 
4.20159999999998, 1.96320000000003, 1.86400000000003, 1.42999999999995, 
3.77940000000001, 1.27200000000005, 1.86440000000005, 2.20600000000002, 
3.21900000000005, 1.5154, 2.61019999999996,},
-    // precision 8
-    {183.2152, 180.2454, 177.2096, 173.6652, 170.6312, 167.6822, 164.249, 
161.3296, 158.0038, 155.2074, 152.4612, 149.27, 146.5178, 143.4412, 140.8032, 
138.1634, 135.1688, 132.6074, 129.6946, 127.2664, 124.8228, 122.0432, 119.6824, 
116.9464, 114.6268, 112.2626, 109.8376, 107.4034, 104.8956, 102.8522, 100.7638, 
98.3552, 96.3556, 93.7526, 91.9292, 89.8954, 87.8198, 85.7668, 83.298, 81.6688, 
79.9466, 77.9746, 76.1672, 74.3474, 72.3028, 70.8912, 69.114, 67.4646, 65.9744, 
64.4092, 62.6022, 60.843, 59.5684, 58.1652, 56.5426, 55.4152, 53.5388, 52.3592, 
51.1366, 49.486, 48.3918, 46.5076, 45.509, 44.3834, 43.3498, 42.0668, 40.7346, 
40.1228, 38.4528, 37.7, 36.644, 36.0518, 34.5774, 33.9068, 32.432, 32.1666, 
30.434, 29.6644, 28.4894, 27.6312, 26.3804, 26.292, 25.5496000000001, 25.0234, 
24.8206, 22.6146, 22.4188, 22.117, 20.6762, 20.6576, 19.7864, 19.509, 18.5334, 
17.9204, 17.772, 16.2924, 16.8654, 15.1836, 15.745, 15.1316, 15.0386, 14.0136, 
13.6342, 12.6196, 12.1866, 12.4281999999999, 11.3324,
  10.4794000000001, 11.5038, 10.129, 9.52800000000002, 10.3203999999999, 
9.46299999999997, 9.79280000000006, 9.12300000000005, 8.74180000000001, 9.2192, 
7.51020000000005, 7.60659999999996, 7.01840000000004, 7.22239999999999, 
7.40139999999997, 6.76179999999999, 7.14359999999999, 5.65060000000005, 
5.63779999999997, 5.76599999999996, 6.75139999999999, 5.57759999999996, 
3.73220000000003, 5.8048, 5.63019999999995, 4.93359999999996, 3.47979999999995, 
4.33879999999999, 3.98940000000005, 3.81960000000004, 3.31359999999995, 
3.23080000000004, 3.4588, 3.08159999999998, 3.4076, 3.00639999999999, 
2.38779999999997, 2.61900000000003, 1.99800000000005, 3.34820000000002, 
2.95060000000001, 0.990999999999985, 2.11440000000005, 2.20299999999997, 
2.82219999999995, 2.73239999999998, 2.7826, 3.76660000000004, 2.26480000000004, 
2.31280000000004, 2.40819999999997, 2.75360000000001, 3.33759999999995, 
2.71559999999999, 1.7478000000001, 1.42920000000004, 2.39300000000003, 
2.22779999999989, 2.34339999999997, 0.8
 7259999999992, 3.88400000000001, 1.80600000000004, 1.91759999999999, 
1.16779999999994, 1.50320000000011, 2.52500000000009, 0.226400000000012, 
2.31500000000005, 0.930000000000064, 1.25199999999995, 2.14959999999996, 
0.0407999999999902, 2.5447999999999, 1.32960000000003, 0.197400000000016, 
2.52620000000002, 3.33279999999991, -1.34300000000007, 0.422199999999975, 
0.917200000000093, 1.12920000000008, 1.46060000000011, 1.45779999999991, 
2.8728000000001, 3.33359999999993, -1.34079999999994, 1.57680000000005, 
0.363000000000056, 1.40740000000005, 0.656600000000026, 0.801400000000058, 
-0.454600000000028, 1.51919999999996,},
-    // precision 9
-    {368, 361.8294, 355.2452, 348.6698, 342.1464, 336.2024, 329.8782, 
323.6598, 317.462, 311.2826, 305.7102, 299.7416, 293.9366, 288.1046, 282.285, 
277.0668, 271.306, 265.8448, 260.301, 254.9886, 250.2422, 244.8138, 239.7074, 
234.7428, 229.8402, 225.1664, 220.3534, 215.594, 210.6886, 205.7876, 201.65, 
197.228, 192.8036, 188.1666, 184.0818, 180.0824, 176.2574, 172.302, 168.1644, 
164.0056, 160.3802, 156.7192, 152.5234, 149.2084, 145.831, 142.485, 139.1112, 
135.4764, 131.76, 129.3368, 126.5538, 122.5058, 119.2646, 116.5902, 113.3818, 
110.8998, 107.9532, 105.2062, 102.2798, 99.4728, 96.9582, 94.3292, 92.171, 
89.7809999999999, 87.5716, 84.7048, 82.5322, 79.875, 78.3972, 75.3464, 73.7274, 
71.2834, 70.1444, 68.4263999999999, 66.0166, 64.018, 62.0437999999999, 
60.3399999999999, 58.6856, 57.9836, 55.0311999999999, 54.6769999999999, 
52.3188, 51.4846, 49.4423999999999, 47.739, 46.1487999999999, 44.9202, 
43.4059999999999, 42.5342000000001, 41.2834, 38.8954000000001, 
38.3286000000001, 36.2146, 3
 6.6684, 35.9946, 33.123, 33.4338, 31.7378000000001, 29.076, 28.9692, 27.4964, 
27.0998, 25.9864, 26.7754, 24.3208, 23.4838, 22.7388000000001, 
24.0758000000001, 21.9097999999999, 20.9728, 19.9228000000001, 19.9292, 16.617, 
17.05, 18.2996000000001, 15.6128000000001, 15.7392, 14.5174, 13.6322, 
12.2583999999999, 13.3766000000001, 11.423, 13.1232, 9.51639999999998, 
10.5938000000001, 9.59719999999993, 8.12220000000002, 9.76739999999995, 
7.50440000000003, 7.56999999999994, 6.70440000000008, 6.41419999999994, 
6.71019999999999, 5.60940000000005, 4.65219999999999, 6.84099999999989, 
3.4072000000001, 3.97859999999991, 3.32760000000007, 5.52160000000003, 
3.31860000000006, 2.06940000000009, 4.35400000000004, 1.57500000000005, 
0.280799999999999, 2.12879999999996, -0.214799999999968, -0.0378000000000611, 
-0.658200000000079, 0.654800000000023, -0.0697999999999865, 0.858400000000074, 
-2.52700000000004, -2.1751999999999, -3.35539999999992, -1.04019999999991, 
-0.651000000000067, -2.14439999999991, -1.96
 659999999997, -3.97939999999994, -0.604400000000169, -3.08260000000018, 
-3.39159999999993, -5.29640000000018, -5.38920000000007, -5.08759999999984, 
-4.69900000000007, -5.23720000000003, -3.15779999999995, -4.97879999999986, 
-4.89899999999989, -7.48880000000008, -5.94799999999987, -5.68060000000014, 
-6.67180000000008, -4.70499999999993, -7.27779999999984, -4.6579999999999, 
-4.4362000000001, -4.32139999999981, -5.18859999999995, -6.66879999999992, 
-6.48399999999992, -5.1260000000002, -4.4032000000002, -6.13500000000022, 
-5.80819999999994, -4.16719999999987, -4.15039999999999, -7.45600000000013, 
-7.24080000000004, -9.83179999999993, -5.80420000000004, -8.6561999999999, 
-6.99940000000015, -10.5473999999999, -7.34139999999979, -6.80999999999995, 
-6.29719999999998, -6.23199999999997,},
-    // precision 10
-    {737.1256, 724.4234, 711.1064, 698.4732, 685.4636, 673.0644, 660.488, 
647.9654, 636.0832, 623.7864, 612.1992, 600.2176, 588.5228, 577.1716, 565.7752, 
554.899, 543.6126, 532.6492, 521.9474, 511.5214, 501.1064, 490.6364, 480.2468, 
470.4588, 460.3832, 451.0584, 440.8606, 431.3868, 422.5062, 413.1862, 404.463, 
395.339, 386.1936, 378.1292, 369.1854, 361.2908, 353.3324, 344.8518, 337.5204, 
329.4854, 321.9318, 314.552, 306.4658, 299.4256, 292.849, 286.152, 278.8956, 
271.8792, 265.118, 258.62, 252.5132, 245.9322, 239.7726, 233.6086, 227.5332, 
222.5918, 216.4294, 210.7662, 205.4106, 199.7338, 194.9012, 188.4486, 183.1556, 
178.6338, 173.7312, 169.6264, 163.9526, 159.8742, 155.8326, 151.1966, 147.5594, 
143.07, 140.037, 134.1804, 131.071, 127.4884, 124.0848, 120.2944, 117.333, 
112.9626, 110.2902, 107.0814, 103.0334, 99.4832000000001, 96.3899999999999, 
93.7202000000002, 90.1714000000002, 87.2357999999999, 85.9346, 
82.8910000000001, 80.0264000000002, 78.3834000000002, 75.1543999999999, 73.868
 3999999998, 70.9895999999999, 69.4367999999999, 64.8701999999998, 
65.0408000000002, 61.6738, 59.5207999999998, 57.0158000000001, 54.2302, 
53.0962, 50.4985999999999, 52.2588000000001, 47.3914, 45.6244000000002, 
42.8377999999998, 43.0072, 40.6516000000001, 40.2453999999998, 35.2136, 
36.4546, 33.7849999999999, 33.2294000000002, 32.4679999999998, 
30.8670000000002, 28.6507999999999, 28.9099999999999, 27.5983999999999, 
26.1619999999998, 24.5563999999999, 23.2328000000002, 21.9484000000002, 
21.5902000000001, 21.3346000000001, 17.7031999999999, 20.6111999999998, 
19.5545999999999, 15.7375999999999, 17.0720000000001, 16.9517999999998, 15.326, 
13.1817999999998, 14.6925999999999, 13.0859999999998, 13.2754, 
10.8697999999999, 11.248, 7.3768, 4.72339999999986, 7.97899999999981, 
8.7503999999999, 7.68119999999999, 9.7199999999998, 7.73919999999998, 
5.6224000000002, 7.44560000000001, 6.6601999999998, 5.9058, 4.00199999999995, 
4.51699999999983, 4.68240000000014, 3.86220000000003, 5.13639999999987, 5.9
 8500000000013, 2.47719999999981, 2.61999999999989, 1.62800000000016, 
4.65000000000009, 0.225599999999758, 0.831000000000131, -0.359400000000278, 
1.27599999999984, -2.92559999999958, -0.0303999999996449, 2.37079999999969, 
-2.0033999999996, 0.804600000000391, 0.30199999999968, 1.1247999999996, 
-2.6880000000001, 0.0321999999996478, -1.18099999999959, -3.9402, 
-1.47940000000017, -0.188400000000001, -2.10720000000038, -2.04159999999956, 
-3.12880000000041, -4.16160000000036, -0.612799999999879, -3.48719999999958, 
-8.17900000000009, -5.37780000000021, -4.01379999999972, -5.58259999999973, 
-5.73719999999958, -7.66799999999967, -5.69520000000011, -1.1247999999996, 
-5.58520000000044, -8.04560000000038, -4.64840000000004, -11.6468000000004, 
-7.97519999999986, -5.78300000000036, -7.67420000000038, -10.6328000000003, 
-9.81720000000041,},
-    // precision 11
-    {1476, 1449.6014, 1423.5802, 1397.7942, 1372.3042, 1347.2062, 1321.8402, 
1297.2292, 1272.9462, 1248.9926, 1225.3026, 1201.4252, 1178.0578, 1155.6092, 
1132.626, 1110.5568, 1088.527, 1066.5154, 1045.1874, 1024.3878, 1003.37, 
982.1972, 962.5728, 942.1012, 922.9668, 903.292, 884.0772, 864.8578, 846.6562, 
828.041, 809.714, 792.3112, 775.1806, 757.9854, 740.656, 724.346, 707.5154, 
691.8378, 675.7448, 659.6722, 645.5722, 630.1462, 614.4124, 600.8728, 585.898, 
572.408, 558.4926, 544.4938, 531.6776, 517.282, 505.7704, 493.1012, 480.7388, 
467.6876, 456.1872, 445.5048, 433.0214, 420.806, 411.409, 400.4144, 389.4294, 
379.2286, 369.651, 360.6156, 350.337, 342.083, 332.1538, 322.5094, 315.01, 
305.6686, 298.1678, 287.8116, 280.9978, 271.9204, 265.3286, 257.5706, 249.6014, 
242.544, 235.5976, 229.583, 220.9438, 214.672, 208.2786, 201.8628, 195.1834, 
191.505, 186.1816, 178.5188, 172.2294, 167.8908, 161.0194, 158.052, 151.4588, 
148.1596, 143.4344, 138.5238, 133.13, 127.6374, 124.8162, 118.7894, 11
 7.3984, 114.6078, 109.0858, 105.1036, 103.6258, 98.6018000000004, 
95.7618000000002, 93.5821999999998, 88.5900000000001, 86.9992000000002, 
82.8800000000001, 80.4539999999997, 74.6981999999998, 74.3644000000004, 
73.2914000000001, 65.5709999999999, 66.9232000000002, 65.1913999999997, 
62.5882000000001, 61.5702000000001, 55.7035999999998, 56.1764000000003, 
52.7596000000003, 53.0302000000001, 49.0609999999997, 48.4694, 44.933, 
46.0474000000004, 44.7165999999997, 41.9416000000001, 39.9207999999999, 
35.6328000000003, 35.5276000000003, 33.1934000000001, 33.2371999999996, 
33.3864000000003, 33.9228000000003, 30.2371999999996, 29.1373999999996, 
25.2272000000003, 24.2942000000003, 19.8338000000003, 18.9005999999999, 
23.0907999999999, 21.8544000000002, 19.5176000000001, 15.4147999999996, 
16.9314000000004, 18.6737999999996, 12.9877999999999, 14.3688000000002, 
12.0447999999997, 15.5219999999999, 12.5299999999997, 14.5940000000001, 
14.3131999999996, 9.45499999999993, 12.9441999999999, 3.911399999999
 96, 13.1373999999996, 5.44720000000052, 9.82779999999912, 7.87279999999919, 
3.67760000000089, 5.46980000000076, 5.55099999999948, 5.65979999999945, 
3.89439999999922, 3.1275999999998, 5.65140000000065, 6.3062000000009, 
3.90799999999945, 1.87060000000019, 5.17020000000048, 2.46680000000015, 
0.770000000000437, -3.72340000000077, 1.16400000000067, 8.05340000000069, 
0.135399999999208, 2.15940000000046, 0.766999999999825, 1.0594000000001, 
3.15500000000065, -0.287399999999252, 2.37219999999979, -2.86620000000039, 
-1.63199999999961, -2.22979999999916, -0.15519999999924, -1.46039999999994, 
-0.262199999999211, -2.34460000000036, -2.8078000000005, -3.22179999999935, 
-5.60159999999996, -8.42200000000048, -9.43740000000071, 0.161799999999857, 
-10.4755999999998, -10.0823999999993,},
-    // precision 12
-    {2953, 2900.4782, 2848.3568, 2796.3666, 2745.324, 2694.9598, 2644.648, 
2595.539, 2546.1474, 2498.2576, 2450.8376, 2403.6076, 2357.451, 2311.38, 
2266.4104, 2221.5638, 2176.9676, 2134.193, 2090.838, 2048.8548, 2007.018, 
1966.1742, 1925.4482, 1885.1294, 1846.4776, 1807.4044, 1768.8724, 1731.3732, 
1693.4304, 1657.5326, 1621.949, 1586.5532, 1551.7256, 1517.6182, 1483.5186, 
1450.4528, 1417.865, 1385.7164, 1352.6828, 1322.6708, 1291.8312, 1260.9036, 
1231.476, 1201.8652, 1173.6718, 1145.757, 1119.2072, 1092.2828, 1065.0434, 
1038.6264, 1014.3192, 988.5746, 965.0816, 940.1176, 917.9796, 894.5576, 
871.1858, 849.9144, 827.1142, 805.0818, 783.9664, 763.9096, 742.0816, 724.3962, 
706.3454, 688.018, 667.4214, 650.3106, 633.0686, 613.8094, 597.818, 581.4248, 
563.834, 547.363, 531.5066, 520.455400000001, 505.583199999999, 488.366, 
476.480799999999, 459.7682, 450.0522, 434.328799999999, 423.952799999999, 
408.727000000001, 399.079400000001, 387.252200000001, 373.987999999999, 
360.852000000001, 351.
 6394, 339.642, 330.902400000001, 322.661599999999, 311.662200000001, 301.3254, 
291.7484, 279.939200000001, 276.7508, 263.215200000001, 254.811400000001, 
245.5494, 242.306399999999, 234.8734, 223.787200000001, 217.7156, 212.0196, 
200.793, 195.9748, 189.0702, 182.449199999999, 177.2772, 170.2336, 164.741, 
158.613600000001, 155.311, 147.5964, 142.837, 137.3724, 132.0162, 130.0424, 
121.9804, 120.451800000001, 114.8968, 111.585999999999, 105.933199999999, 
101.705, 98.5141999999996, 95.0488000000005, 89.7880000000005, 
91.4750000000004, 83.7764000000006, 80.9698000000008, 72.8574000000008, 
73.1615999999995, 67.5838000000003, 62.6263999999992, 63.2638000000006, 
66.0977999999996, 52.0843999999997, 58.9956000000002, 47.0912000000008, 
46.4956000000002, 48.4383999999991, 47.1082000000006, 43.2392, 
37.2759999999998, 40.0283999999992, 35.1864000000005, 35.8595999999998, 
32.0998, 28.027, 23.6694000000007, 33.8266000000003, 26.3736000000008, 
27.2008000000005, 21.3245999999999, 26.4115999999995, 23.
 4521999999997, 19.5013999999992, 19.8513999999996, 10.7492000000002, 
18.6424000000006, 13.1265999999996, 18.2436000000016, 6.71860000000015, 
3.39459999999963, 6.33759999999893, 7.76719999999841, 0.813999999998487, 
3.82819999999992, 0.826199999999517, 8.07440000000133, -1.59080000000176, 
5.01780000000144, 0.455399999998917, -0.24199999999837, 0.174800000000687, 
-9.07640000000174, -4.20160000000033, -3.77520000000004, -4.75179999999818, 
-5.3724000000002, -8.90680000000066, -6.10239999999976, -5.74120000000039, 
-9.95339999999851, -3.86339999999836, -13.7304000000004, -16.2710000000006, 
-7.51359999999841, -3.30679999999847, -13.1339999999982, -10.0551999999989, 
-6.72019999999975, -8.59660000000076, -10.9307999999983, -1.8775999999998, 
-4.82259999999951, -13.7788, -21.6470000000008, -10.6735999999983, 
-15.7799999999988,},
-    // precision 13
-    {5907.5052, 5802.2672, 5697.347, 5593.5794, 5491.2622, 5390.5514, 
5290.3376, 5191.6952, 5093.5988, 4997.3552, 4902.5972, 4808.3082, 4715.5646, 
4624.109, 4533.8216, 4444.4344, 4356.3802, 4269.2962, 4183.3784, 4098.292, 
4014.79, 3932.4574, 3850.6036, 3771.2712, 3691.7708, 3615.099, 3538.1858, 
3463.4746, 3388.8496, 3315.6794, 3244.5448, 3173.7516, 3103.3106, 3033.6094, 
2966.5642, 2900.794, 2833.7256, 2769.81, 2707.3196, 2644.0778, 2583.9916, 
2523.4662, 2464.124, 2406.073, 2347.0362, 2292.1006, 2238.1716, 2182.7514, 
2128.4884, 2077.1314, 2025.037, 1975.3756, 1928.933, 1879.311, 1831.0006, 
1783.2144, 1738.3096, 1694.5144, 1649.024, 1606.847, 1564.7528, 1525.3168, 
1482.5372, 1443.9668, 1406.5074, 1365.867, 1329.2186, 1295.4186, 1257.9716, 
1225.339, 1193.2972, 1156.3578, 1125.8686, 1091.187, 1061.4094, 1029.4188, 
1000.9126, 972.3272, 944.004199999999, 915.7592, 889.965, 862.834200000001, 
840.4254, 812.598399999999, 785.924200000001, 763.050999999999, 
741.793799999999, 721.466, 699.0407
 99999999, 677.997200000002, 649.866999999998, 634.911800000002, 609.8694, 
591.981599999999, 570.2922, 557.129199999999, 538.3858, 521.872599999999, 
502.951400000002, 495.776399999999, 475.171399999999, 459.751, 
439.995200000001, 426.708999999999, 413.7016, 402.3868, 387.262599999998, 
372.0524, 357.050999999999, 342.5098, 334.849200000001, 322.529399999999, 
311.613799999999, 295.848000000002, 289.273000000001, 274.093000000001, 
263.329600000001, 251.389599999999, 245.7392, 231.9614, 229.7952, 
217.155200000001, 208.9588, 199.016599999999, 190.839199999999, 180.6976, 
176.272799999999, 166.976999999999, 162.5252, 151.196400000001, 
149.386999999999, 133.981199999998, 130.0586, 130.164000000001, 
122.053400000001, 110.7428, 108.1276, 106.232400000001, 100.381600000001, 
98.7668000000012, 86.6440000000002, 79.9768000000004, 82.4722000000002, 
68.7026000000005, 70.1186000000016, 71.9948000000004, 58.998599999999, 
59.0492000000013, 56.9818000000014, 47.5338000000011, 42.9928, 
51.1591999999982, 
 37.2740000000013, 42.7220000000016, 31.3734000000004, 26.8090000000011, 
25.8934000000008, 26.5286000000015, 29.5442000000003, 19.3503999999994, 
26.0760000000009, 17.9527999999991, 14.8419999999969, 10.4683999999979, 
8.65899999999965, 9.86720000000059, 4.34139999999752, -0.907800000000861, 
-3.32080000000133, -0.936199999996461, -11.9916000000012, -8.87000000000262, 
-6.33099999999831, -11.3366000000024, -15.9207999999999, -9.34659999999712, 
-15.5034000000014, -19.2097999999969, -15.357799999998, -28.2235999999975, 
-30.6898000000001, -19.3271999999997, -25.6083999999973, -24.409599999999, 
-13.6385999999984, -33.4473999999973, -32.6949999999997, -28.9063999999998, 
-31.7483999999968, -32.2935999999972, -35.8329999999987, -47.620600000002, 
-39.0855999999985, -33.1434000000008, -46.1371999999974, -37.5892000000022, 
-46.8164000000033, -47.3142000000007, -60.2914000000019, -37.7575999999972,},
-    // precision 14
-    {11816.475, 11605.0046, 11395.3792, 11188.7504, 10984.1814, 10782.0086, 
10582.0072, 10384.503, 10189.178, 9996.2738, 9806.0344, 9617.9798, 9431.394, 
9248.7784, 9067.6894, 8889.6824, 8712.9134, 8538.8624, 8368.4944, 8197.7956, 
8031.8916, 7866.6316, 7703.733, 7544.5726, 7386.204, 7230.666, 7077.8516, 
6926.7886, 6778.6902, 6631.9632, 6487.304, 6346.7486, 6206.4408, 6070.202, 
5935.2576, 5799.924, 5671.0324, 5541.9788, 5414.6112, 5290.0274, 5166.723, 
5047.6906, 4929.162, 4815.1406, 4699.127, 4588.5606, 4477.7394, 4369.4014, 
4264.2728, 4155.9224, 4055.581, 3955.505, 3856.9618, 3761.3828, 3666.9702, 
3575.7764, 3482.4132, 3395.0186, 3305.8852, 3221.415, 3138.6024, 3056.296, 
2970.4494, 2896.1526, 2816.8008, 2740.2156, 2670.497, 2594.1458, 2527.111, 
2460.8168, 2387.5114, 2322.9498, 2260.6752, 2194.2686, 2133.7792, 2074.767, 
2015.204, 1959.4226, 1898.6502, 1850.006, 1792.849, 1741.4838, 1687.9778, 
1638.1322, 1589.3266, 1543.1394, 1496.8266, 1447.8516, 1402.7354, 1361.9606, 
1327.0692, 1285.
 4106, 1241.8112, 1201.6726, 1161.973, 1130.261, 1094.2036, 1048.2036, 
1020.6436, 990.901400000002, 961.199800000002, 924.769800000002, 
899.526400000002, 872.346400000002, 834.375, 810.432000000001, 
780.659800000001, 756.013800000001, 733.479399999997, 707.923999999999, 
673.858, 652.222399999999, 636.572399999997, 615.738599999997, 
586.696400000001, 564.147199999999, 541.679600000003, 523.943599999999, 
505.714599999999, 475.729599999999, 461.779600000002, 449.750800000002, 
439.020799999998, 412.7886, 400.245600000002, 383.188199999997, 
362.079599999997, 357.533799999997, 334.319000000003, 327.553399999997, 
308.559399999998, 291.270199999999, 279.351999999999, 271.791400000002, 
252.576999999997, 247.482400000001, 236.174800000001, 218.774599999997, 
220.155200000001, 208.794399999999, 201.223599999998, 182.995600000002, 
185.5268, 164.547400000003, 176.5962, 150.689599999998, 157.8004, 
138.378799999999, 134.021200000003, 117.614399999999, 108.194000000003, 
97.0696000000025, 89.604200000
 0016, 95.6030000000028, 84.7810000000027, 72.635000000002, 77.3482000000004, 
59.4907999999996, 55.5875999999989, 50.7346000000034, 61.3916000000027, 
50.9149999999936, 39.0384000000049, 58.9395999999979, 29.633600000001, 
28.2032000000036, 26.0078000000067, 17.0387999999948, 9.22000000000116, 
13.8387999999977, 8.07240000000456, 14.1549999999988, 15.3570000000036, 
3.42660000000615, 6.24820000000182, -2.96940000000177, -8.79940000000352, 
-5.97860000000219, -14.4048000000039, -3.4143999999942, -13.0148000000045, 
-11.6977999999945, -25.7878000000055, -22.3185999999987, -24.409599999999, 
-31.9756000000052, -18.9722000000038, -22.8678000000073, -30.8972000000067, 
-32.3715999999986, -22.3907999999938, -43.6720000000059, -35.9038, 
-39.7492000000057, -54.1641999999993, -45.2749999999942, -42.2989999999991, 
-44.1089999999967, -64.3564000000042, -49.9551999999967, -42.6116000000038,},
-    // precision 15
-    {23634.0036, 23210.8034, 22792.4744, 22379.1524, 21969.7928, 21565.326, 
21165.3532, 20770.2806, 20379.9892, 19994.7098, 19613.318, 19236.799, 
18865.4382, 18498.8244, 18136.5138, 17778.8668, 17426.2344, 17079.32, 
16734.778, 16397.2418, 16063.3324, 15734.0232, 15409.731, 15088.728, 
14772.9896, 14464.1402, 14157.5588, 13855.5958, 13559.3296, 13264.9096, 
12978.326, 12692.0826, 12413.8816, 12137.3192, 11870.2326, 11602.5554, 
11340.3142, 11079.613, 10829.5908, 10583.5466, 10334.0344, 10095.5072, 
9859.694, 9625.2822, 9395.7862, 9174.0586, 8957.3164, 8738.064, 8524.155, 
8313.7396, 8116.9168, 7913.542, 7718.4778, 7521.65, 7335.5596, 7154.2906, 
6968.7396, 6786.3996, 6613.236, 6437.406, 6270.6598, 6107.7958, 5945.7174, 
5787.6784, 5635.5784, 5482.308, 5337.9784, 5190.0864, 5045.9158, 4919.1386, 
4771.817, 4645.7742, 4518.4774, 4385.5454, 4262.6622, 4142.74679999999, 
4015.5318, 3897.9276, 3790.7764, 3685.13800000001, 3573.6274, 3467.9706, 
3368.61079999999, 3271.5202, 3170.3848, 3076.4656, 298
 2.38400000001, 2888.4664, 2806.4868, 2711.9564, 2634.1434, 2551.3204, 
2469.7662, 2396.61139999999, 2318.9902, 2243.8658, 2171.9246, 2105.01360000001, 
2028.8536, 1960.9952, 1901.4096, 1841.86079999999, 1777.54700000001, 1714.5802, 
1654.65059999999, 1596.311, 1546.2016, 1492.3296, 1433.8974, 1383.84600000001, 
1339.4152, 1293.5518, 1245.8686, 1193.50659999999, 1162.27959999999, 
1107.19439999999, 1069.18060000001, 1035.09179999999, 999.679000000004, 
957.679999999993, 925.300199999998, 888.099400000006, 848.638600000006, 
818.156400000007, 796.748399999997, 752.139200000005, 725.271200000003, 
692.216, 671.633600000001, 647.939799999993, 621.670599999998, 
575.398799999995, 561.226599999995, 532.237999999998, 521.787599999996, 
483.095799999996, 467.049599999998, 465.286399999997, 415.548599999995, 
401.047399999996, 380.607999999993, 377.362599999993, 347.258799999996, 
338.371599999999, 310.096999999994, 301.409199999995, 276.280799999993, 
265.586800000005, 258.994399999996, 223.915999999997
 , 215.925399999993, 213.503800000006, 191.045400000003, 166.718200000003, 
166.259000000005, 162.941200000001, 148.829400000002, 141.645999999993, 
123.535399999993, 122.329800000007, 89.473399999988, 80.1962000000058, 
77.5457999999926, 59.1056000000099, 83.3509999999951, 52.2906000000075, 
36.3979999999865, 40.6558000000077, 42.0003999999899, 19.6630000000005, 
19.7153999999864, -8.38539999999921, -0.692799999989802, 0.854800000000978, 
3.23219999999856, -3.89040000000386, -5.25880000001052, -24.9052000000083, 
-22.6837999999989, -26.4286000000138, -34.997000000003, -37.0216000000073, 
-43.430400000012, -58.2390000000014, -68.8034000000043, -56.9245999999985, 
-57.8583999999973, -77.3097999999882, -73.2793999999994, -81.0738000000129, 
-87.4530000000086, -65.0254000000132, -57.296399999992, -96.2746000000043, 
-103.25, -96.081600000005, -91.5542000000132, -102.465200000006, 
-107.688599999994, -101.458000000013, -109.715800000005,},
-    // precision 16
-    {47270, 46423.3584, 45585.7074, 44757.152, 43938.8416, 43130.9514, 
42330.03, 41540.407, 40759.6348, 39988.206, 39226.5144, 38473.2096, 37729.795, 
36997.268, 36272.6448, 35558.665, 34853.0248, 34157.4472, 33470.5204, 
32793.5742, 32127.0194, 31469.4182, 30817.6136, 30178.6968, 29546.8908, 
28922.8544, 28312.271, 27707.0924, 27114.0326, 26526.692, 25948.6336, 
25383.7826, 24823.5998, 24272.2974, 23732.2572, 23201.4976, 22674.2796, 
22163.6336, 21656.515, 21161.7362, 20669.9368, 20189.4424, 19717.3358, 
19256.3744, 18795.9638, 18352.197, 17908.5738, 17474.391, 17052.918, 
16637.2236, 16228.4602, 15823.3474, 15428.6974, 15043.0284, 14667.6278, 
14297.4588, 13935.2882, 13578.5402, 13234.6032, 12882.1578, 12548.0728, 
12219.231, 11898.0072, 11587.2626, 11279.9072, 10973.5048, 10678.5186, 
10392.4876, 10105.2556, 9825.766, 9562.5444, 9294.2222, 9038.2352, 8784.848, 
8533.2644, 8301.7776, 8058.30859999999, 7822.94579999999, 7599.11319999999, 
7366.90779999999, 7161.217, 6957.53080000001, 6736.212,
  6548.21220000001, 6343.06839999999, 6156.28719999999, 5975.15419999999, 
5791.75719999999, 5621.32019999999, 5451.66, 5287.61040000001, 
5118.09479999999, 4957.288, 4798.4246, 4662.17559999999, 4512.05900000001, 
4364.68539999999, 4220.77720000001, 4082.67259999999, 3957.19519999999, 
3842.15779999999, 3699.3328, 3583.01180000001, 3473.8964, 3338.66639999999, 
3233.55559999999, 3117.799, 3008.111, 2909.69140000001, 2814.86499999999, 
2719.46119999999, 2624.742, 2532.46979999999, 2444.7886, 2370.1868, 
2272.45259999999, 2196.19260000001, 2117.90419999999, 2023.2972, 
1969.76819999999, 1885.58979999999, 1833.2824, 1733.91200000001, 
1682.54920000001, 1604.57980000001, 1556.11240000001, 1491.3064, 
1421.71960000001, 1371.22899999999, 1322.1324, 1264.7892, 1196.23920000001, 
1143.8474, 1088.67240000001, 1073.60380000001, 1023.11660000001, 
959.036400000012, 927.433199999999, 906.792799999996, 853.433599999989, 
841.873800000001, 791.1054, 756.899999999994, 704.343200000003, 
672.495599999995, 622.79
 0399999998, 611.254799999995, 567.283200000005, 519.406599999988, 
519.188400000014, 495.312800000014, 451.350799999986, 443.973399999988, 
431.882199999993, 392.027000000002, 380.924200000009, 345.128999999986, 
298.901400000002, 287.771999999997, 272.625, 247.253000000026, 
222.490600000019, 223.590000000026, 196.407599999977, 176.425999999978, 
134.725199999986, 132.4804, 110.445599999977, 86.7939999999944, 
56.7038000000175, 64.915399999998, 38.3726000000024, 37.1606000000029, 
46.170999999973, 49.1716000000015, 15.3362000000197, 6.71639999997569, 
-34.8185999999987, -39.4476000000141, 12.6830000000191, -12.3331999999937, 
-50.6565999999875, -59.9538000000175, -65.1054000000004, -70.7576000000117, 
-106.325200000021, -126.852200000023, -110.227599999984, -132.885999999999, 
-113.897200000007, -142.713800000027, -151.145399999979, -150.799200000009, 
-177.756200000003, -156.036399999983, -182.735199999996, -177.259399999981, 
-198.663600000029, -174.577600000019, -193.84580000001,},
-    // precision 17
-    {94541, 92848.811, 91174.019, 89517.558, 87879.9705, 86262.7565, 
84663.5125, 83083.7435, 81521.7865, 79977.272, 78455.9465, 76950.219, 
75465.432, 73994.152, 72546.71, 71115.2345, 69705.6765, 68314.937, 66944.2705, 
65591.255, 64252.9485, 62938.016, 61636.8225, 60355.592, 59092.789, 57850.568, 
56624.518, 55417.343, 54231.1415, 53067.387, 51903.526, 50774.649, 49657.6415, 
48561.05, 47475.7575, 46410.159, 45364.852, 44327.053, 43318.4005, 42325.6165, 
41348.4595, 40383.6265, 39436.77, 38509.502, 37594.035, 36695.939, 35818.6895, 
34955.691, 34115.8095, 33293.949, 32465.0775, 31657.6715, 30877.2585, 30093.78, 
29351.3695, 28594.1365, 27872.115, 27168.7465, 26477.076, 25774.541, 
25106.5375, 24452.5135, 23815.5125, 23174.0655, 22555.2685, 21960.2065, 
21376.3555, 20785.1925, 20211.517, 19657.0725, 19141.6865, 18579.737, 
18081.3955, 17578.995, 17073.44, 16608.335, 16119.911, 15651.266, 15194.583, 
14749.0495, 14343.4835, 13925.639, 13504.509, 13099.3885, 12691.2855, 
12328.018, 11969.0345, 11
 596.5145, 11245.6355, 10917.6575, 10580.9785, 10277.8605, 9926.58100000001, 
9605.538, 9300.42950000003, 8989.97850000003, 8728.73249999998, 8448.3235, 
8175.31050000002, 7898.98700000002, 7629.79100000003, 7413.76199999999, 
7149.92300000001, 6921.12650000001, 6677.1545, 6443.28000000003, 
6278.23450000002, 6014.20049999998, 5791.20299999998, 5605.78450000001, 
5438.48800000001, 5234.2255, 5059.6825, 4887.43349999998, 4682.935, 
4496.31099999999, 4322.52250000002, 4191.42499999999, 4021.24200000003, 
3900.64799999999, 3762.84250000003, 3609.98050000001, 3502.29599999997, 
3363.84250000003, 3206.54849999998, 3079.70000000001, 2971.42300000001, 
2867.80349999998, 2727.08100000001, 2630.74900000001, 2496.6165, 2440.902, 
2356.19150000002, 2235.58199999999, 2120.54149999999, 2012.25449999998, 
1933.35600000003, 1820.93099999998, 1761.54800000001, 1663.09350000002, 
1578.84600000002, 1509.48149999999, 1427.3345, 1379.56150000001, 
1306.68099999998, 1212.63449999999, 1084.17300000001, 1124.1645000000
 1, 1060.69949999999, 1007.48849999998, 941.194499999983, 879.880500000028, 
836.007500000007, 782.802000000025, 748.385499999975, 647.991500000004, 
626.730500000005, 570.776000000013, 484.000500000024, 513.98550000001, 
418.985499999952, 386.996999999974, 370.026500000036, 355.496999999974, 
356.731499999994, 255.92200000002, 259.094000000041, 205.434499999974, 
165.374500000034, 197.347500000033, 95.718499999959, 67.6165000000037, 
54.6970000000438, 31.7395000000251, -15.8784999999916, 8.42500000004657, 
-26.3754999999655, -118.425500000012, -66.6629999999423, -42.9745000000112, 
-107.364999999991, -189.839000000036, -162.611499999999, -164.964999999967, 
-189.079999999958, -223.931499999948, -235.329999999958, -269.639500000048, 
-249.087999999989, -206.475499999942, -283.04449999996, -290.667000000016, 
-304.561499999953, -336.784499999951, -380.386500000022, -283.280499999993, 
-364.533000000054, -389.059499999974, -364.454000000027, -415.748000000021, 
-417.155000000028,},
-    // precision 18
-    {189083, 185696.913, 182348.774, 179035.946, 175762.762, 172526.444, 
169329.754, 166166.099, 163043.269, 159958.91, 156907.912, 153906.845, 
150924.199, 147996.568, 145093.457, 142239.233, 139421.475, 136632.27, 
133889.588, 131174.2, 128511.619, 125868.621, 123265.385, 120721.061, 
118181.769, 115709.456, 113252.446, 110840.198, 108465.099, 106126.164, 
103823.469, 101556.618, 99308.004, 97124.508, 94937.803, 92833.731, 90745.061, 
88677.627, 86617.47, 84650.442, 82697.833, 80769.132, 78879.629, 77014.432, 
75215.626, 73384.587, 71652.482, 69895.93, 68209.301, 66553.669, 64921.981, 
63310.323, 61742.115, 60205.018, 58698.658, 57190.657, 55760.865, 54331.169, 
52908.167, 51550.273, 50225.254, 48922.421, 47614.533, 46362.049, 45098.569, 
43926.083, 42736.03, 41593.473, 40425.26, 39316.237, 38243.651, 37170.617, 
36114.609, 35084.19, 34117.233, 33206.509, 32231.505, 31318.728, 30403.404, 
29540.0550000001, 28679.236, 27825.862, 26965.216, 26179.148, 25462.08, 
24645.952, 23922.523, 23198.144,
  22529.128, 21762.4179999999, 21134.779, 20459.117, 19840.818, 19187.04, 
18636.3689999999, 17982.831, 17439.7389999999, 16874.547, 16358.2169999999, 
15835.684, 15352.914, 14823.681, 14329.313, 13816.897, 13342.874, 12880.882, 
12491.648, 12021.254, 11625.392, 11293.7610000001, 10813.697, 10456.209, 
10099.074, 9755.39000000001, 9393.18500000006, 9047.57900000003, 
8657.98499999999, 8395.85900000005, 8033, 7736.95900000003, 7430.59699999995, 
7258.47699999996, 6924.58200000005, 6691.29399999999, 6357.92500000005, 
6202.05700000003, 5921.19700000004, 5628.28399999999, 5404.96799999999, 
5226.71100000001, 4990.75600000005, 4799.77399999998, 4622.93099999998, 
4472.478, 4171.78700000001, 3957.46299999999, 3868.95200000005, 
3691.14300000004, 3474.63100000005, 3341.67200000002, 3109.14000000001, 
3071.97400000005, 2796.40399999998, 2756.17799999996, 2611.46999999997, 
2471.93000000005, 2382.26399999997, 2209.22400000005, 2142.28399999999, 
2013.96100000001, 1911.18999999994, 1818.27099999995, 1668.
 47900000005, 1519.65800000005, 1469.67599999998, 1367.13800000004, 
1248.52899999998, 1181.23600000003, 1022.71900000004, 1088.20700000005, 
959.03600000008, 876.095999999903, 791.183999999892, 703.337000000058, 
731.949999999953, 586.86400000006, 526.024999999907, 323.004999999888, 
320.448000000091, 340.672999999952, 309.638999999966, 216.601999999955, 
102.922999999952, 19.2399999999907, -0.114000000059605, -32.6240000000689, 
-89.3179999999702, -153.497999999905, -64.2970000000205, -143.695999999996, 
-259.497999999905, -253.017999999924, -213.948000000091, -397.590000000084, 
-434.006000000052, -403.475000000093, -297.958000000101, -404.317000000039, 
-528.898999999976, -506.621000000043, -513.205000000075, -479.351000000024, 
-596.139999999898, -527.016999999993, -664.681000000099, -680.306000000099, 
-704.050000000047, -850.486000000034, -757.43200000003, -713.308999999892,}
-  };
-
-  private Format format;
-  private RegisterSet registerSet;
-  private final int m;
-  private final int p;
-
-  //Sparse versions of m and p
-  private int sm;
-  private int sp;
-
-  private final double alphaMM;
-
-  //How big the sparse set is allowed to get before we convert to 'normal'
-  private int sparseSetThreshold;
-  //How big the temp list is allowed to get before we batch merge it into the 
sparse set
-  private int sortThreshold;
-
-  private int[] tmpSet;
-  private int tmpIndex = 0;
-  private int[] sparseSet;
-
-  /**
-   * This constructor disables the sparse set.  If the counter is likely to 
exceed
-   * the sparse set thresholds than using this constructor will help avoid the
-   * extra memory pressure created by maintaining the sparse set until that 
threshold is
-   * breached.
-   *
-   * @param p - the precision value for the normal set
-   */
-  public HyperLogLogPlus(int p) {
-    this(p, 0);
-  }
-
-  /**
-   * Basic constructor for creating a instance that supports sparse and normal
-   * representations. The values of <code>p</code> and
-   * <code>sp</code> define the precision of the Normal and Sparse set
-   * representations for the data structure.  <code>p</code> must be a value
-   * between 4 and <code>sp</code> and <code>sp</code> must be less than 32.
-   *
-   * @param p  - the precision value for the normal set
-   * @param sp - the precision value for the sparse set
-   */
-  public HyperLogLogPlus(int p, int sp) {
-    this(p, sp, null, null);
-  }
-
-  /**
-   * Constructor to support instances serialized with the legacy sparse
-   * encoding scheme.
-   *
-   * @param p            - the precision value for the normal set
-   * @param sp           - the precision value for the sparse set
-   * @param deltaByteSet - a list of varint byte arrays encoded using a delta 
encoding scheme
-   */
-  public HyperLogLogPlus(int p, int sp, List<byte[]> deltaByteSet) {
-    this(p, sp);
-    sparseSet = new int[deltaByteSet.size()];
-    int previousValue = 0;
-    for (int i = 0; i < deltaByteSet.size(); i++) {
-      int nextValue = Varint.readUnsignedVarInt(deltaByteSet.get(i));
-      sparseSet[i] = nextValue + previousValue;
-      previousValue = sparseSet[i];
-    }
-  }
-
-  // for constructing a sparse mode hllp
-  private HyperLogLogPlus(int p, int sp, int[] sparseSet) {
-    this(p, sp, sparseSet, null);
-  }
-
-  // for constructing a normal mode hllp
-  private HyperLogLogPlus(int p, int sp, RegisterSet registerSet) {
-    this(p, sp, null, registerSet);
-  }
-
-  private HyperLogLogPlus(int p, int sp, int[] sparseSet, RegisterSet 
registerSet) {
-    if (p < 4 || (p > sp && sp != 0)) {
-      throw new IllegalArgumentException("p must be between 4 and sp 
(inclusive)");
-    }
-    if (sp > 32) {
-      throw new IllegalArgumentException("sp values greater than 32 not 
supported");
-    }
-
-    this.p = p;
-    m = (int) Math.pow(2, p);
-    format = Format.NORMAL;
-    this.registerSet = registerSet;
-    if (registerSet == null) {
-      if (sp > 0) // Use sparse representation
-      {
-        format = Format.SPARSE;
-        this.sp = sp;
-        sm = (int) Math.pow(2, sp);
-        this.sparseSet = sparseSet;
-        sparseSetThreshold = (int) (m * 0.75);
-        sortThreshold = sparseSetThreshold / 4;
-      } else {
-        this.registerSet = new RegisterSet((int) Math.pow(2, p));
-      }
-    }
-
-    this.alphaMM = HyperLogLog.getAlphaMM(p, m);
-  }
-
-  @Override
-  public boolean offerHashed(long hashedLong) {
-    switch (format) {
-    case NORMAL:
-      // find first p bits of x
-      final long idx = hashedLong >>> (64 - p);
-      //Ignore the first p bits (the idx), and then find the number of leading 
zeros
-      //Push a 1 to where the bit string would have ended if we didnt just 
push the idx out of the way
-      //A one is always added to runLength for estimation calculation purposes
-      final int runLength = Long.numberOfLeadingZeros((hashedLong << this.p) | 
(1 << (this.p - 1))) + 1;
-      return registerSet.updateIfGreater((int) idx, runLength);
-    case SPARSE:
-      //Call the sparse encoding scheme which attempts to stuff as much 
helpful data into 32 bits as possible
-      int k = encodeHash(hashedLong, p, sp);
-      if (tmpSet == null) {
-        tmpSet = new int[sortThreshold + 1];
-      }
-      //Put the encoded data into the temp set
-      tmpSet[tmpIndex++] = k;
-      if (sparseSet != null && sparseSet.length > sparseSetThreshold) {
-        mergeTempList();
-        convertToNormal();
-      } else if (tmpIndex > sortThreshold) {
-        mergeTempList();
-      }
-      return true;
-    }
-    return false;
-  }
-
-  @Override
-  public boolean offerHashed(int hashedInt) {
-    throw new UnsupportedOperationException();
-  }
-
-  /**
-   * Add data to estimator based on the mode it is in
-   *
-   * @param o stream element
-   * @return Will almost always return true for sparse mode because the 
additions are batched in
-   */
-  @Override
-  public boolean offer(Object o) {
-    long x = MurmurHash.hash64(o);
-    return offerHashed(x);
-  }
-
-  /**
-   * Converts the mode of this estimator from 'sparse' to 'normal'.
-   * <p/>
-   * Each member of the set has its longer 'sparse precision (sp)' length idx
-   * truncated to length p and the associated run length is placed into a 
register.
-   * Collisions are resolved by merely taking the max.
-   */
-
-  private void convertToNormal() {
-    mergeTempList();
-    this.registerSet = new RegisterSet((int) Math.pow(2, p));
-    for (int k : sparseSet) {
-      int idx = getIndex(k, p);
-      int r = decodeRunLength(k);
-      registerSet.updateIfGreater(idx, r);
-    }
-    format = Format.NORMAL;
-    tmpSet = null;
-    sparseSet = null;
-  }
-
-  /**
-   * Encode the sp length idx and, if necessary, the run length.
-   * <p/>
-   * Start with the 64 bit hash as x.
-   * <p/>
-   * Find all the bits that belong in the first sp (roughly 25) bits. (This is 
idx')
-   * Get rid of the first p (roughly 18) bits of those. (Those were idx (not 
prime))
-   * <p/>
-   * If all the remaining bits are zero then we are going to need to find and 
encode the
-   * full run length of leading zeros, but this only happens once in 2 ^ (sp - 
p) or roughly
-   * 2 ^ 7 times.
-   * <p/>
-   * If at least one of them is not zero, then since the run length is 
determined by bits
-   * after p and the idx' contains the first (sp - p) bits of those, then just 
by putting idx'
-   * in the encoding, we will also be giving it all the information it needs 
to find the run length.
-   * <p/>
-   * The relationship looks like this:
-   * <p/>
-   * *******************************************************   <- hashed 
length of bits
-   * | p bits = idx ||     look for leading zeros here     |
-   * |      sp bits = idx'     |
-   * | all 0s? |
-   * <p/>
-   * If we have idx', we could theoretically scan it (as per zeroTest) when 
unencoding and therefore know whether
-   * to look for the extra run length information. However, for now we have 
followed the authors of
-   * the paper and put this information in a flag bit at the end of the 
encoding.
-   * <p/>
-   * Based on this flag, we know whether to adjust for the missing run length 
bits. We could also
-   * use this flag to compress all the zeros in "| all 0s? |", but saving a 
byte or so once in 128
-   * times is less than the 120 bits spent on the flag elsewhere. Of course, 
after compression, the losses
-   * are not quite so large either way.
-   * <p/>
-   * The encoding scheme now looks like:
-   * <p/>
-   * ********************************* <- smaller length of bits (half, but 
not to scale)
-   * | empty ||       sp bits     ||F|
-   * |  p bits  || has 1 ||0|
-   * <p/>
-   * <p/>
-   * or if the run length was needed (ie 'all 0s?' was indeed all 0s):
-   * <p/>
-   * *********************************
-   * |      sp bits    || run len ||F|
-   * |  p bits ||  0s  |           |1|
-   * <p/>
-   * <p/>
-   * The other notable encoding feature is the inversion of the run length, 
which just lets the lists
-   * be sorted in a convenient way. (Could alternatively sort in reverse, and 
use descending deltas).
-   *
-   * @param x  the hash bits
-   * @param p  the 'normal' mode precision
-   * @param sp the 'sparse' mode precision
-   * @return the encoded data as an integer
-   */
-  private int encodeHash(long x, int p, int sp) {
-    //Get the idx' (the first sp bits) by pushing the rest to the right (into 
oblivion >:D)
-    int idx = (int) (x >>> (64 - sp));
-    //Push to the left for all the spaces you know are between the start of 
your bits and the left 'wall'
-    //then push p bits off as well so we have just our friend "all 0s?"
-    int zeroTest = 0;
-    if (p < sp) {
-      zeroTest = idx << ((32 - sp) + p);
-    }
-    if (zeroTest == 0) {
-      //See offer
-      final int runLength = Long.numberOfLeadingZeros((x << this.p) | (1 << 
(this.p - 1))) + 1;
-      //Invert run length by xoring it with a bunch of 1s
-      int invrl = runLength ^ 63;
-      return (((idx
-          << 6)       //push the idx left 6 times to make room to put in the 
run length
-          | invrl)    //then merge in the run length
-          << 1)       //move left again to make room for the flag bit
-          | 1;        //merge in the flag bit (set to one because we needed 
the run length)
-    } else {
-      //Just push left once. A zero will appear by default and that's the flag 
we want.
-      return idx << 1;
-    }
-  }
-
-  /**
-   * More of less the opposite of the encoding function but just for getting 
out run lengths.
-   *
-   * @param k encoded int
-   * @return run length
-   */
-  private int decodeRunLength(int k) {
-    if ((k & 1) == 1) //checking the flag bit
-    {
-      //Smoosh the flag bit; it has served its purpose
-      //Then & with 63 to delete everything but the run length
-      //Then invert again to undo the inversion from before
-      return ((k >>> 1) & 63) ^ 63;
-    } else {
-      //In one of the encode diagrams there is a substring of bits
-      //labeled 'has 1'. This is where we find that one!
-
-      //First push left to clear out the empty space (that is 31-sp places)
-      //Then push left some more cause bits in precision p don't count for run 
length
-      //That is, push left p times.
-      //Lastly we add one because we love adding one to run lengths. Its our 
JAM
-      return Integer.numberOfLeadingZeros(k << p + (31 - sp)) + 1;
-    }
-  }
-
-  /**
-   * returns the hash portion of the of the integer value
-   *
-   * @param k - the encoded integer to extract the hash from
-   * @return the encoded hash value
-   */
-  private int getEncodedHash(int k) {
-    return (k << p + (31 - sp));
-  }
-
-  /**
-   * Get the idx' from an encoding
-   *
-   * @param k encoded data
-   * @return idx'
-   */
-  private static int getSparseIndex(int k) {
-    if ((k & 1) == 1) {
-      return k >>> 7;
-    } else {
-      return k >>> 1;
-    }
-  }
-
-  /**
-   * Gets the idx from an encoding (note this is idx and not idx prime)
-   *
-   * @param k encoded data
-   * @param p 'normal' precision
-   * @return index
-   */
-  private int getIndex(int k, int p) {
-    k = getSparseIndex(k);
-    return (k >>> (sp - p));
-  }
-
-  /**
-   * Gather the cardinality estimate from this estimator.
-   * <p/>
-   * Has two procedures based on current mode. 'Normal' mode works similar to 
HLL but has some
-   * new bias corrections. 'Sparse' mode is linear counting.
-   *
-   * @return cardinality
-   */
-  @Override
-  public long cardinality() {
-    switch (format) {
-    case NORMAL:
-      double registerSum = 0;
-      int count = registerSet.count;
-      double zeros = 0;
-      for (int j = 0; j < registerSet.count; j++) {
-        int val = registerSet.get(j);
-        registerSum += 1.0 / (1 << val);
-        if (val == 0) {
-          zeros++;
-        }
-      }
-
-      double estimate = alphaMM * (1 / registerSum);
-      double estimatePrime = estimate;
-      if (estimate <= (5 * m)) {
-        estimatePrime = estimate - getEstimateBias(estimate, p);
-      }
-      double H;
-      if (zeros > 0) {
-        H = HyperLogLog.linearCounting(count, zeros);
-      } else {
-        H = estimatePrime;
-      }
-      // when p is large the threshold is just 5*m
-      if ((p <= 18 && H < thresholdData[p - 4]) || (p > 18 && estimate <= 5 * 
m)) {
-        return Math.round(H);
-      } else {
-        return Math.round(estimatePrime);
-      }
-    case SPARSE:
-      mergeTempList();
-      return Math.round(HyperLogLog.linearCounting(sm, (sm - 
sparseSet.length)));
-    }
-    return 0;
-  }
-
-  private static double getEstimateBias(double estimate, int p) {
-    // get nearest neighbors for this estimate and precision
-    // above p = 18 there is no bias correction
-    if (p > 18) {
-      return 0;
-    }
-    double[] estimateVector = rawEstimateData[p - 4];
-    SortedMap<Double, Integer> estimateDistances = calcDistances(estimate, 
estimateVector);
-    int[] nearestNeighbors = getNearestNeighbors(estimateDistances);
-    return getBias(nearestNeighbors, p);
-  }
-
-  private static double getBias(int[] nearestNeighbors, int p) {
-    double[] biasVector = biasData[p - 4];
-    double biasTotal = 

<TRUNCATED>

Reply via email to