@based/db 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. package/dist/lib/darwin_aarch64/include/selva/hll.h +2 -0
  2. package/dist/lib/darwin_aarch64/include/selva/membar.h +9 -0
  3. package/dist/lib/darwin_aarch64/libdeflate.dylib +0 -0
  4. package/dist/lib/darwin_aarch64/libjemalloc_selva.2.dylib +0 -0
  5. package/dist/lib/darwin_aarch64/libnode-v22.node +0 -0
  6. package/dist/lib/darwin_aarch64/libselva.dylib +0 -0
  7. package/dist/lib/darwin_aarch64/libxxhash.dylib +0 -0
  8. package/dist/src/client/index.d.ts +1 -2
  9. package/dist/src/client/modify/Ctx.js +1 -1
  10. package/dist/src/client/modify/cursor.d.ts +1 -1
  11. package/dist/src/client/modify/cursor.js +2 -2
  12. package/dist/src/client/modify/error.js +0 -2
  13. package/dist/src/client/modify/props/binary.js +2 -1
  14. package/dist/src/client/modify/props/cardinality.js +7 -0
  15. package/dist/src/client/modify/props/object.d.ts +2 -0
  16. package/dist/src/client/modify/props/object.js +50 -17
  17. package/dist/src/client/modify/props/vector.js +25 -7
  18. package/dist/src/client/query/BasedQueryResponse.js +3 -8
  19. package/dist/src/client/query/display.js +9 -16
  20. package/dist/src/client/query/include/toByteCode.js +14 -10
  21. package/dist/src/client/query/queryDefToReadSchema.js +7 -2
  22. package/dist/src/client/query/registerQuery.js +4 -3
  23. package/dist/src/client/query/types.d.ts +1 -0
  24. package/dist/src/client/query/validation.js +4 -1
  25. package/dist/src/client/setLocalClientSchema.d.ts +1 -1
  26. package/dist/src/hooks.d.ts +1 -2
  27. package/dist/src/native.d.ts +2 -0
  28. package/dist/src/native.js +7 -1
  29. package/dist/src/server/index.d.ts +1 -2
  30. package/dist/src/server/index.js +2 -3
  31. package/dist/src/server/migrate/index.d.ts +1 -2
  32. package/dist/src/server/migrate/index.js +3 -2
  33. package/dist/src/server/migrate/worker.js +31 -25
  34. package/dist/src/server/schema.d.ts +7 -3
  35. package/dist/src/server/schema.js +7 -56
  36. package/dist/src/server/workers/DbWorker.js +19 -5
  37. package/dist/src/shared/DbBase.d.ts +1 -1
  38. package/dist/src/shared/Emitter.d.ts +1 -1
  39. package/package.json +6 -6
  40. package/dist/lib/darwin_aarch64/libnode-v23.node +0 -0
  41. package/dist/lib/darwin_aarch64/libnode-v24.node +0 -0
  42. package/dist/lib/linux_aarch64/include/cdefs.h +0 -317
  43. package/dist/lib/linux_aarch64/include/jemalloc.h +0 -468
  44. package/dist/lib/linux_aarch64/include/libdeflate.h +0 -345
  45. package/dist/lib/linux_aarch64/include/libdeflate_strings.h +0 -35
  46. package/dist/lib/linux_aarch64/include/linker_set.h +0 -109
  47. package/dist/lib/linux_aarch64/include/queue.h +0 -627
  48. package/dist/lib/linux_aarch64/include/selva/_export.h +0 -7
  49. package/dist/lib/linux_aarch64/include/selva/align.h +0 -9
  50. package/dist/lib/linux_aarch64/include/selva/backoff_timeout.h +0 -29
  51. package/dist/lib/linux_aarch64/include/selva/bitmap.h +0 -95
  52. package/dist/lib/linux_aarch64/include/selva/colvec.h +0 -71
  53. package/dist/lib/linux_aarch64/include/selva/crc32c.h +0 -17
  54. package/dist/lib/linux_aarch64/include/selva/ctime.h +0 -135
  55. package/dist/lib/linux_aarch64/include/selva/db.h +0 -407
  56. package/dist/lib/linux_aarch64/include/selva/endian.h +0 -301
  57. package/dist/lib/linux_aarch64/include/selva/fast_linear_search.h +0 -27
  58. package/dist/lib/linux_aarch64/include/selva/fast_memcmp.h +0 -18
  59. package/dist/lib/linux_aarch64/include/selva/fast_memmem.h +0 -11
  60. package/dist/lib/linux_aarch64/include/selva/fast_parsei.h +0 -36
  61. package/dist/lib/linux_aarch64/include/selva/fields.h +0 -407
  62. package/dist/lib/linux_aarch64/include/selva/gmtime.h +0 -137
  63. package/dist/lib/linux_aarch64/include/selva/hll.h +0 -83
  64. package/dist/lib/linux_aarch64/include/selva/lpf.h +0 -28
  65. package/dist/lib/linux_aarch64/include/selva/mblen.h +0 -40
  66. package/dist/lib/linux_aarch64/include/selva/membar.h +0 -23
  67. package/dist/lib/linux_aarch64/include/selva/node_id_set.h +0 -43
  68. package/dist/lib/linux_aarch64/include/selva/poptop.h +0 -114
  69. package/dist/lib/linux_aarch64/include/selva/selva_hash128.h +0 -49
  70. package/dist/lib/linux_aarch64/include/selva/selva_lang.h +0 -105
  71. package/dist/lib/linux_aarch64/include/selva/selva_math.h +0 -37
  72. package/dist/lib/linux_aarch64/include/selva/selva_string.h +0 -679
  73. package/dist/lib/linux_aarch64/include/selva/sort.h +0 -140
  74. package/dist/lib/linux_aarch64/include/selva/strsearch.h +0 -43
  75. package/dist/lib/linux_aarch64/include/selva/thread.h +0 -37
  76. package/dist/lib/linux_aarch64/include/selva/timestamp.h +0 -25
  77. package/dist/lib/linux_aarch64/include/selva/types.h +0 -129
  78. package/dist/lib/linux_aarch64/include/selva/vector.h +0 -35
  79. package/dist/lib/linux_aarch64/include/selva_error.h +0 -140
  80. package/dist/lib/linux_aarch64/include/selva_lang_code.h +0 -160
  81. package/dist/lib/linux_aarch64/include/tree.h +0 -852
  82. package/dist/lib/linux_aarch64/libdeflate.so +0 -0
  83. package/dist/lib/linux_aarch64/libjemalloc_selva.so.2 +0 -0
  84. package/dist/lib/linux_aarch64/libnode-v22.node +0 -0
  85. package/dist/lib/linux_aarch64/libnode-v23.node +0 -0
  86. package/dist/lib/linux_aarch64/libnode-v24.node +0 -0
  87. package/dist/lib/linux_aarch64/libselva.so +0 -0
  88. package/dist/lib/linux_aarch64/libxxhash.so.0 +0 -0
  89. package/dist/lib/linux_x86_64/include/cdefs.h +0 -317
  90. package/dist/lib/linux_x86_64/include/jemalloc.h +0 -468
  91. package/dist/lib/linux_x86_64/include/libdeflate.h +0 -345
  92. package/dist/lib/linux_x86_64/include/libdeflate_strings.h +0 -35
  93. package/dist/lib/linux_x86_64/include/linker_set.h +0 -109
  94. package/dist/lib/linux_x86_64/include/queue.h +0 -627
  95. package/dist/lib/linux_x86_64/include/selva/_export.h +0 -7
  96. package/dist/lib/linux_x86_64/include/selva/align.h +0 -9
  97. package/dist/lib/linux_x86_64/include/selva/backoff_timeout.h +0 -29
  98. package/dist/lib/linux_x86_64/include/selva/bitmap.h +0 -95
  99. package/dist/lib/linux_x86_64/include/selva/colvec.h +0 -71
  100. package/dist/lib/linux_x86_64/include/selva/crc32c.h +0 -17
  101. package/dist/lib/linux_x86_64/include/selva/ctime.h +0 -135
  102. package/dist/lib/linux_x86_64/include/selva/db.h +0 -407
  103. package/dist/lib/linux_x86_64/include/selva/endian.h +0 -301
  104. package/dist/lib/linux_x86_64/include/selva/fast_linear_search.h +0 -27
  105. package/dist/lib/linux_x86_64/include/selva/fast_memcmp.h +0 -18
  106. package/dist/lib/linux_x86_64/include/selva/fast_memmem.h +0 -11
  107. package/dist/lib/linux_x86_64/include/selva/fast_parsei.h +0 -36
  108. package/dist/lib/linux_x86_64/include/selva/fields.h +0 -407
  109. package/dist/lib/linux_x86_64/include/selva/gmtime.h +0 -137
  110. package/dist/lib/linux_x86_64/include/selva/hll.h +0 -83
  111. package/dist/lib/linux_x86_64/include/selva/lpf.h +0 -28
  112. package/dist/lib/linux_x86_64/include/selva/mblen.h +0 -40
  113. package/dist/lib/linux_x86_64/include/selva/membar.h +0 -23
  114. package/dist/lib/linux_x86_64/include/selva/node_id_set.h +0 -43
  115. package/dist/lib/linux_x86_64/include/selva/poptop.h +0 -114
  116. package/dist/lib/linux_x86_64/include/selva/selva_hash128.h +0 -49
  117. package/dist/lib/linux_x86_64/include/selva/selva_lang.h +0 -105
  118. package/dist/lib/linux_x86_64/include/selva/selva_math.h +0 -37
  119. package/dist/lib/linux_x86_64/include/selva/selva_string.h +0 -679
  120. package/dist/lib/linux_x86_64/include/selva/sort.h +0 -140
  121. package/dist/lib/linux_x86_64/include/selva/strsearch.h +0 -43
  122. package/dist/lib/linux_x86_64/include/selva/thread.h +0 -37
  123. package/dist/lib/linux_x86_64/include/selva/timestamp.h +0 -25
  124. package/dist/lib/linux_x86_64/include/selva/types.h +0 -129
  125. package/dist/lib/linux_x86_64/include/selva/vector.h +0 -35
  126. package/dist/lib/linux_x86_64/include/selva_error.h +0 -140
  127. package/dist/lib/linux_x86_64/include/selva_lang_code.h +0 -160
  128. package/dist/lib/linux_x86_64/include/tree.h +0 -852
  129. package/dist/lib/linux_x86_64/libdeflate.so +0 -0
  130. package/dist/lib/linux_x86_64/libjemalloc_selva.so.2 +0 -0
  131. package/dist/lib/linux_x86_64/libnode-v22.node +0 -0
  132. package/dist/lib/linux_x86_64/libnode-v23.node +0 -0
  133. package/dist/lib/linux_x86_64/libnode-v24.node +0 -0
  134. package/dist/lib/linux_x86_64/libselva.so +0 -0
  135. package/dist/lib/linux_x86_64/libxxhash.so.0 +0 -0
  136. package/dist/src/schema.d.ts +0 -6
  137. package/dist/src/schema.js +0 -2
@@ -1,83 +0,0 @@
1
- #ifndef UTIL_HLL_H
2
- #define UTIL_HLL_H
3
-
4
- #include <stdlib.h>
5
- #include <stdint.h>
6
- #include "selva/_export.h"
7
- #include "selva_string.h"
8
- #include <stdbool.h>
9
- #include "cdefs.h"
10
-
11
- #define HLL_INIT_SIZE 8
12
-
13
- SELVA_EXPORT
14
- void hll_init(struct selva_string *hllss, uint8_t precision, bool is_sparse);
15
- SELVA_EXPORT
16
- void hll_add(struct selva_string *hllss, uint64_t element);
17
- SELVA_EXPORT
18
- uint8_t *hll_count(struct selva_string *hllss);
19
- SELVA_EXPORT
20
- void hll_array_union(struct selva_string *res, struct selva_string *hll_array, size_t count);
21
- SELVA_EXPORT
22
- void hll_union(struct selva_string *, struct selva_string *);
23
-
24
- // size_t actual_cols[13] = { 79, 159, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200 };
25
- // float raw_estimate_data[13][200] =
26
- // {
27
- // // precision 4
28
- // { 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, },
29
- // // precision 5
30
- // { 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, },
31
- // // precision 6
32
- // { 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.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, },
33
- // // precision 7
34
- // { 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, 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, },
35
- // // precision 8
36
- // { 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, 660.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, },
37
- // // precision 9 (has 201 values n the annex, last one was trimmed)
38
- // { 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,},
39
- // // precision 10
40
- // { 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.8684, 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.4174, 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, },
41
- // // precision 11 (has 201 values n the annex, last one was trimmed)
42
- // { 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,},
43
- // // precision 12 (has 201 values n the annex, last one was trimmed)
44
- // { 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.6622, 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, },
45
- // // precision 13
46
- // { 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, 18539.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, 35218.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, },
47
- // // precision 14 (has 201 values n the annex, last one was trimmed)
48
- // { 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.3266, 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,},
49
- // // precision 15 (has 201 values n the annex, last one was trimmed)
50
- // { 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, 135220.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, },
51
- // // precision 16
52
- // { 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,141085.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, 262390.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, },
53
- // };
54
-
55
- // float bias _data[13][200] = {
56
- // // precision 4
57
- // { 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,-1.1922,-1.0256,-1.2072,-1.1752,-0.919800000000002,-0.851799999999997,-1.086,-1.21899999999999,-0.819400000000002,-1.16759999999999,-1.14019999999999,-1.3754,-0.962400000000002,-0.6402,-0.940600000000003,-1.1554,-1.29859999999999,-1.607,-1.3292,-1.7606, },
58
- // // precision 5
59
- // { 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, },
60
- // // precision 6
61
- // { 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.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, },
62
- // // precision 7
63
- // { 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.25439999999998, 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.60659999999996, 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, },
64
- // // precision 8
65
- // { 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.87259999999992, 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, },
66
- // // precision 9
67
- // { 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, 36.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.96659999999997,-3.97939999999994,-0.604400000000169,-3.08260000000018,-3.39159999999993,-5.29640000000018,-5.38920000000007,-5.08759999999984,-5.23720000000003,-3.15779999999995,-4.97879999999986,-4.89899999999989,-5.94799999999987,-5.68060000000014,-6.67180000000008,-4.70499999999993,-4.6579999999999,-4.4362000000001,-4.32139999999981,-5.18859999999995,-6.48399999999992,-5.1260000000002,-4.4032000000002,-6.13500000000022,-4.16719999999987,-4.15039999999999,-7.45600000000013,-7.24080000000004,-5.80420000000004,-8.6561999999999,-6.99940000000015,-10.5473999999999,-4.69900000000007,-7.48880000000008,-7.27779999999984,-6.66879999999992,-5.80819999999994,-9.83179999999993,-7.34139999999979,-6.80999999999995,-6.29719999999998,-6.23199999999997, },
68
- // // precision 10
69
- // { 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.8683999999998, 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.98500000000013,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,-7.66799999999967,-5.69520000000011,-1.1247999999996,-5.58520000000044,-4.64840000000004,-11.6468000000004,-7.97519999999986,-5.78300000000036,-5.73719999999958,-8.04560000000038,-7.67420000000038,-10.6328000000003,-9.81720000000041, },
70
- // // precision 11
71
- // { 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, 117.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.91139999999996, 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,-8.42200000000048,-9.43740000000071, 0.161799999999857,-10.4755999999998,-5.60159999999996,-10.0823999999993,},
72
- // // precision 12
73
- // { 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, },
74
- // // precision 13
75
- // { 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.040799999999, 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,-15.5034000000014,-19.2097999999969,-15.357799999998,-28.2235999999975,-19.3271999999997,-25.6083999999973,-24.409599999999,-13.6385999999984,-32.6949999999997,-28.9063999999998,-31.7483999999968,-32.2935999999972,-47.620600000002,-39.0855999999985,-33.1434000000008,-46.1371999999974,-9.34659999999712,-30.6898000000001,-33.4473999999973,-35.8329999999987,-37.5892000000022,-46.8164000000033,-47.3142000000007,-60.2914000000019,-37.7575999999972, },
76
- // // precision 14
77
- // { 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.6042000000016, 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, },
78
- // // precision 15
79
- // { 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,2982.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, },
80
- // // precision 16
81
- // { 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.790399999998,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, },
82
- // };
83
- #endif
@@ -1,28 +0,0 @@
1
- /*
2
- * Copyright (c) 2021-2022 SAULX
3
- * SPDX-License-Identifier: MIT
4
- */
5
- #pragma once
6
- #ifndef _UTIL_LPF_H_
7
- #define _UTIL_LPF_H_
8
-
9
- /**
10
- * Calculate the alpha coefficient for the lpf.
11
- */
12
- __constfn static inline float lpf_geta(float period, float sample_interval);
13
- static inline float lpf_geta(float period, float sample_interval) {
14
- return __builtin_expf(-(sample_interval / period));
15
- }
16
-
17
- /**
18
- * Calculate the next output value of the lpf.
19
- * @param prev is the previous output of this function.
20
- * @param a is the coefficient calculated by lpf_geta().
21
- * @param sample is the current sample.
22
- */
23
- __constfn static inline float lpf_calc_next(float a, float prev, float sample);
24
- static inline float lpf_calc_next(float a, float prev, float sample) {
25
- return a * prev + (1.0f - a) * sample;
26
- }
27
-
28
- #endif /* _UTIL_LPF_H_ */
@@ -1,40 +0,0 @@
1
- /*
2
- * Copyright (c) 2025 SAULX
3
- * SPDX-License-Identifier: MIT
4
- */
5
- #pragma once
6
- #include "selva/_export.h"
7
- #include <stdint.h>
8
-
9
- /***
10
- * Get the length of multibyte char.
11
- */
12
- SELVA_EXPORT
13
- #if defined(__clang__)
14
- /*
15
- * optnone is needed at least on clang to not optimize out the clz.
16
- * Otherwise this function will always return 0.
17
- */
18
- __attribute__((optnone))
19
- #endif
20
- inline unsigned selva_mblen(char first_byte)
21
- #ifndef __zig
22
- {
23
- uint8_t x = first_byte;
24
- unsigned l = 0;
25
-
26
- if (x & 0x80) {
27
- #if __has_builtin(__builtin_clzg)
28
- l = __builtin_clzg((uint8_t)~x, 0) - 1;
29
- #elif __has_builtin(__builtin_clz)
30
- l = __builtin_clz((unsigned)(~x << 24)) - 1;
31
- #else
32
- #error "No luck"
33
- #endif
34
- }
35
-
36
- return l;
37
- }
38
- #else
39
- ;
40
- #endif /* __zig */
@@ -1,23 +0,0 @@
1
- /*
2
- * Copyright (c) 2025 SAULX
3
- * SPDX-License-Identifier: MIT
4
- */
5
- #include "selva/_export.h"
6
-
7
- /**
8
- * Read memory barrier.
9
- * Call this function before read in case another thread has potentially
10
- * written to the memory addresses the current thread is going to access.
11
- */
12
- SELVA_EXPORT
13
- __attribute__((no_reorder))
14
- void membar_sync_read(void);
15
-
16
- /**
17
- * Write memory barrier.
18
- * Call this function after write to memory when another thread is expected to
19
- * read the written data.
20
- */
21
- SELVA_EXPORT
22
- __attribute__((no_reorder))
23
- void membar_sync_write(void);
@@ -1,43 +0,0 @@
1
- /*
2
- * Copyright (c) 2024 SAULX
3
- * SPDX-License-Identifier: MIT
4
- */
5
- #pragma once
6
-
7
- #include <stddef.h>
8
- #include <sys/types.h>
9
- #include "selva/types.h"
10
-
11
- /*
12
- * node_id set is an array that is always sorted for fast lookups.
13
- */
14
-
15
- /**
16
- * Search from a node_id set.
17
- */
18
- SELVA_EXPORT
19
- ssize_t node_id_set_bsearch(const node_id_t *a, size_t n, node_id_t x)
20
- __attribute__((access(read_only, 1, 2)));
21
-
22
- static inline bool node_id_set_has(const node_id_t *set, size_t len, node_id_t id)
23
- {
24
- if (len == 0) {
25
- return false;
26
- }
27
-
28
- return node_id_set_bsearch(set, len, id) >= 0;
29
- }
30
-
31
- /**
32
- * Sorted insert to a node_id set.
33
- * @param set_p is an array allocated with jemalloc_selva.
34
- */
35
- SELVA_EXPORT
36
- bool node_id_set_add(node_id_t **set_p, size_t *len, node_id_t id);
37
-
38
- /**
39
- * Remove from a node_id set.
40
- * @param set_p is an array allocated with jemalloc_selva.
41
- */
42
- SELVA_EXPORT
43
- bool node_id_set_remove(node_id_t **set_p, size_t *len, node_id_t id);
@@ -1,114 +0,0 @@
1
- /*
2
- * Copyright (c) 2021-2022, 2025 SAULX
3
- * SPDX-License-Identifier: MIT
4
- */
5
- #pragma once
6
-
7
- #include "selva/_export.h"
8
-
9
- /**
10
- * An element in the poptop list.
11
- */
12
- struct poptop_list_el {
13
- float score;
14
- void *p;
15
- };
16
-
17
- /**
18
- * A poptop structure.
19
- * Poptop is a data structure that attempts to keep a list of the most popular
20
- * entries based on a score seen on each insert. The list is kept at least
21
- * half-full at all times.
22
- *
23
- * The data structure has a maximum size of `max_size` and a cutoff limit that's
24
- * the median of the score of elements currently on the list. A new cutoff is
25
- * calculated when `poptop_maintenance()` is called and each call to
26
- * `poptop_maintenance_drop()` removes one element falling under the cutoff
27
- * limit until every element of the list has no more elements with score under
28
- * the cutoff limit.
29
- *
30
- * The list can be iterated using the `POPTOP_FOREACH()` macro.
31
- *
32
- * The list is not guaranteed to be ordered, in fact, it's typically unordered
33
- * unless `poptop_maintenance()` was called and no new inserts have been made
34
- * since that call.
35
- */
36
- struct poptop {
37
- /**
38
- * Maximum size of the top list.
39
- */
40
- unsigned int max_size;
41
- /**
42
- * Current number of elements on the top list.
43
- */
44
- unsigned int current_size;
45
- /**
46
- * Minimum score.
47
- * A long term minimum score for an element to get into and remain in the
48
- * data structure. This is updated when poptop_maintenance() is called.
49
- */
50
- float cut_limit;
51
- struct poptop_list_el *list;
52
- };
53
-
54
- /**
55
- * An iterator for `struct poptop`.
56
- * Note that the elements in the poptop list are not returned in any
57
- * particular order.
58
- * @param[out] _el_ is a pointer to a `poptop_list_el` structure. Can be NULL.
59
- * @param _l_ is a pointer to the poptop instance to be iterated over.
60
- */
61
- #define POPTOP_FOREACH(_el_, _l_) \
62
- _el_ = (_l_)->list - 1; \
63
- while (++_el_ != ((_l_)->list + (_l_)->max_size))
64
-
65
- /**
66
- * Initialize a poptop structure.
67
- * @param l is a pointer to an uninitalized poptop structure.
68
- * @param max_size is the maximum number of elements allowed in the data
69
- * structure. Poptop will attempt to maintain a list of about half of the
70
- * maximum size.
71
- * @param initial_cut is an initial value for the cut limit.
72
- * @returns 0 if succeed; Otherwise a non-zero value is returned.
73
- */
74
- SELVA_EXPORT
75
- int poptop_init(struct poptop *l, unsigned int max_size, float initial_cut);
76
-
77
- /**
78
- * Deinit a poptop structure.
79
- * @param l is a pointer to an initialized poptop structure.
80
- */
81
- SELVA_EXPORT
82
- void poptop_deinit(struct poptop *l);
83
-
84
- /**
85
- * Add an element to the top list if it's above the self-determined score limit.
86
- * If the element already exists the score is updated.
87
- * @param l is a pointer to the poptop structure.
88
- */
89
- SELVA_EXPORT
90
- void poptop_maybe_add(struct poptop * restrict l, float score, void * restrict p);
91
-
92
- /**
93
- * Remove an element from the top list.
94
- * @param l is a pointer to the poptop structure.
95
- */
96
- SELVA_EXPORT
97
- void poptop_remove(struct poptop * restrict l, const void * restrict p);
98
-
99
- /**
100
- * Periodic maintenance.
101
- * Find the median score and establish a new cut limit.
102
- * @param l is a pointer to the poptop structure.
103
- */
104
- SELVA_EXPORT
105
- int poptop_maintenance(struct poptop *l);
106
-
107
- /**
108
- * Drop an element that has a score below the cut limit.
109
- * This function should be called repeatedly until no entry is returned.
110
- * @param l is a pointer to the poptop structure.
111
- * @returns a pointer to the element that was removed from the data structure l.
112
- */
113
- SELVA_EXPORT
114
- void *poptop_maintenance_drop(struct poptop *l);
@@ -1,49 +0,0 @@
1
- /*
2
- * Copyright (c) 2024-2025 SAULX
3
- * SPDX-License-Identifier: MIT
4
- */
5
- #pragma once
6
- #include "xxhash.h"
7
- #include "jemalloc_selva.h"
8
- #include "selva/types.h"
9
-
10
- typedef struct XXH3_state_s selva_hash_state_t;
11
-
12
- #define selva_hash_reset XXH3_128bits_reset
13
- #define selva_hash_update XXH3_128bits_update
14
-
15
- SELVA_EXPORT
16
- selva_hash_state_t *selva_hash_create_state(void);
17
-
18
- SELVA_EXPORT
19
- inline void selva_hash_free_state(selva_hash_state_t *state)
20
- #ifndef __zig
21
- {
22
- selva_free(state);
23
- }
24
- #else
25
- ;
26
- #endif
27
-
28
- SELVA_EXPORT
29
- inline selva_hash128_t selva_hash_digest(selva_hash_state_t *hash_state)
30
- #ifndef __zig
31
- {
32
- XXH128_hash_t res;
33
-
34
- retry:
35
- res = XXH3_128bits_digest(hash_state);
36
- if (res.low64 == 0 && res.high64 == 0) {
37
- /*
38
- * We don't allow zero hash.
39
- * RFE Is this a good approach?
40
- */
41
- XXH3_128bits_update(hash_state, &(int64_t){ 1 }, sizeof(int64_t));
42
- goto retry;
43
- }
44
-
45
- return (selva_hash128_t)res.low64 | (selva_hash128_t)res.high64 << 64;
46
- }
47
- #else
48
- ;
49
- #endif
@@ -1,105 +0,0 @@
1
- /*
2
- * Copyright (c) 2022, 2024-2025 SAULX
3
- * SPDX-License-Identifier: MIT
4
- */
5
- #pragma once
6
-
7
- #if defined(__APPLE__) && __MACH__
8
- #include <xlocale.h>
9
- #endif
10
- #include <locale.h>
11
- #include <wchar.h>
12
- #include <wctype.h>
13
- #include "selva/_export.h"
14
- #include "selva_lang_code.h"
15
-
16
- #define SELVA_LANG_NAME_MAX 4ul
17
-
18
- struct libdeflate_decompressor;
19
- struct libdeflate_block_state;
20
-
21
- int selva_lang_set_fallback(const char *lang_str, size_t lang_len);
22
-
23
- /**
24
- * Get locale for a lang string.
25
- * @param lang_str is a pointer to the language name.
26
- * @param lang_len is the length of lang_str excluding any possible nul-character(s).
27
- * @returns a POSIX locale.
28
- */
29
- SELVA_EXPORT
30
- locale_t selva_lang_getlocale(const char *lang_str, size_t lang_len);
31
-
32
- SELVA_EXPORT
33
- locale_t selva_lang_getlocale2(enum selva_lang_code lang);
34
-
35
- /* TODO rename these */
36
- enum selva_langs_trans {
37
- SELVA_LANGS_TRANS_NONE = 0,
38
- SELVA_LANGS_TRANS_TOUPPER,
39
- SELVA_LANGS_TRANS_TOLOWER,
40
- SELVA_LANGS_TRANS_TOJHIRA, /*!< When lang is selva_lang_ja. */
41
- SELVA_LANGS_TRANS_TOJKATA, /*!< When lang is selva_lang_ja. */
42
- };
43
-
44
- SELVA_EXPORT
45
- wctrans_t selva_lang_wctrans(enum selva_lang_code lang, enum selva_langs_trans trans);
46
-
47
- /**
48
- * Transform a multibyte string.
49
- * @returns a selva_malloc'd c-string.
50
- */
51
- SELVA_EXPORT
52
- char *selva_mbstrans(locale_t loc, const char *src, size_t len, wctrans_t trans);
53
-
54
- /**
55
- * Read a symbol from a multibyte string.
56
- * @param wc symbol read from mbs_str.
57
- * @returns bytes consumed from mbs_str.
58
- */
59
- SELVA_EXPORT
60
- size_t selva_mbstowc(wchar_t *wc, const char *mbs_str, size_t mbs_len, mbstate_t *ps, wctrans_t trans, locale_t loc);
61
-
62
- /**
63
- * Compare two multibyte strings by transforming each character.
64
- * Unicode normalization and flattening is not supported.
65
- */
66
- SELVA_EXPORT
67
- int selva_mbscmp(const char *mbs1_str, size_t mbs1_len, const char *mbs2_str, size_t mbs2_len, wctrans_t trans, locale_t loc);
68
-
69
- SELVA_EXPORT
70
- int selva_deflate_mbscmp(
71
- struct libdeflate_decompressor *decompressor,
72
- struct libdeflate_block_state *state,
73
- const char *in_buf, size_t in_len,
74
- const char *mbs2_str, size_t mbs2_len,
75
- wctrans_t trans, locale_t loc);
76
-
77
- SELVA_EXPORT
78
- const char *selva_mbsstrstr(const char *mbs1_str, size_t mbs1_len, const char *mbs2_str, size_t mbs2_len, wctrans_t trans, locale_t loc);
79
-
80
- SELVA_EXPORT
81
- bool selva_deflate_mbsstrstr(
82
- struct libdeflate_decompressor *decompressor,
83
- struct libdeflate_block_state *state,
84
- const char *in_buf, size_t in_len,
85
- const void *needle_buf, size_t needle_len,
86
- wctrans_t trans, locale_t loc);
87
-
88
- /**
89
- * Constructs a value of type wctrans_t that describes a LC_CTYPE category of wide character mapping.
90
- * - "" none
91
- * - "toupper"
92
- * - "tolower"
93
- * - "tojhira" when lang is "jp"
94
- * - "tojkata" when lang is "jp"
95
- */
96
- static inline wctrans_t selva_wctrans(const char *class_str, size_t class_len, locale_t loc)
97
- {
98
- char charclass[16] = {};
99
-
100
- if (likely(class_len < sizeof(charclass))) {
101
- __builtin_memcpy(charclass, class_str, class_len);
102
- }
103
-
104
- return wctrans_l(charclass, loc);
105
- }
@@ -1,37 +0,0 @@
1
- /*
2
- * Copyright (c) 2022-2024 SAULX
3
- * SPDX-License-Identifier: MIT
4
- */
5
- #pragma once
6
- #include <math.h>
7
-
8
- static inline double nan_undefined(void)
9
- {
10
- return nan("1");
11
- }
12
-
13
- static inline int isnan_undefined(double x)
14
- {
15
- long long i;
16
-
17
- if (!isnan(x)) {
18
- return 0;
19
- }
20
-
21
- __builtin_memcpy(&i, &x, sizeof(i));
22
-
23
- return i & 1;
24
- }
25
-
26
- /**
27
- * Mod (%) like it is in JS.
28
- */
29
- static inline double js_fmod(double x, double y)
30
- {
31
- double result = remainder(fabs(x), (y = fabs(y)));
32
- if (signbit(result)) {
33
- result += y;
34
- }
35
-
36
- return copysign(result, x);
37
- }