@fncts/test 0.0.50 → 0.0.52

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 (416) hide show
  1. package/LICENSE +26 -0
  2. package/_cjs/Fragment.cjs +424 -0
  3. package/_cjs/Fragment.cjs.map +1 -0
  4. package/_cjs/api.cjs +97 -83
  5. package/_cjs/api.cjs.map +1 -1
  6. package/_cjs/chunk.cjs +28 -0
  7. package/_cjs/control/AbstractRunnableSpec.cjs +83 -86
  8. package/_cjs/control/AbstractRunnableSpec.cjs.map +1 -1
  9. package/_cjs/control/Annotations/api.cjs +25 -24
  10. package/_cjs/control/Annotations/api.cjs.map +1 -1
  11. package/_cjs/control/Annotations/definition.cjs +20 -23
  12. package/_cjs/control/Annotations/definition.cjs.map +1 -1
  13. package/_cjs/control/Annotations/live.cjs +50 -39
  14. package/_cjs/control/Annotations/live.cjs.map +1 -1
  15. package/_cjs/control/Annotations.cjs +13 -39
  16. package/_cjs/control/Assertion/api.cjs +170 -156
  17. package/_cjs/control/Assertion/api.cjs.map +1 -1
  18. package/_cjs/control/Assertion/definition.cjs +21 -19
  19. package/_cjs/control/Assertion/definition.cjs.map +1 -1
  20. package/_cjs/control/Assertion.cjs +39 -28
  21. package/_cjs/control/AssertionIO/api.cjs +33 -31
  22. package/_cjs/control/AssertionIO/api.cjs.map +1 -1
  23. package/_cjs/control/AssertionIO/definition.cjs +27 -27
  24. package/_cjs/control/AssertionIO/definition.cjs.map +1 -1
  25. package/_cjs/control/AssertionIO.cjs +9 -28
  26. package/_cjs/control/DefaultRunnableSpec.cjs +14 -18
  27. package/_cjs/control/DefaultRunnableSpec.cjs.map +1 -1
  28. package/_cjs/control/DefaultTestReporter/definition.cjs +5 -6
  29. package/_cjs/control/DefaultTestReporter/definition.cjs.map +1 -1
  30. package/_cjs/control/DefaultTestReporter/render.cjs +184 -176
  31. package/_cjs/control/DefaultTestReporter/render.cjs.map +1 -1
  32. package/_cjs/control/DefaultTestReporter.cjs +10 -28
  33. package/_cjs/control/FreeBooleanAlgebraIO/api.cjs +47 -46
  34. package/_cjs/control/FreeBooleanAlgebraIO/api.cjs.map +1 -1
  35. package/_cjs/control/FreeBooleanAlgebraIO/definition.cjs +5 -6
  36. package/_cjs/control/FreeBooleanAlgebraIO/definition.cjs.map +1 -1
  37. package/_cjs/control/FreeBooleanAlgebraIO.cjs +12 -28
  38. package/_cjs/control/Gen/api.cjs +653 -614
  39. package/_cjs/control/Gen/api.cjs.map +1 -1
  40. package/_cjs/control/Gen/constraints.cjs +0 -2
  41. package/_cjs/control/Gen/definition.cjs +13 -14
  42. package/_cjs/control/Gen/definition.cjs.map +1 -1
  43. package/_cjs/control/Gen.cjs +84 -39
  44. package/_cjs/control/Live/definition.cjs +43 -38
  45. package/_cjs/control/Live/definition.cjs.map +1 -1
  46. package/_cjs/control/Live.cjs +6 -17
  47. package/_cjs/control/Sample/api.cjs +143 -145
  48. package/_cjs/control/Sample/api.cjs.map +1 -1
  49. package/_cjs/control/Sample/definition.cjs +15 -15
  50. package/_cjs/control/Sample/definition.cjs.map +1 -1
  51. package/_cjs/control/Sample.cjs +18 -28
  52. package/_cjs/control/Sized/api.cjs +17 -16
  53. package/_cjs/control/Sized/api.cjs.map +1 -1
  54. package/_cjs/control/Sized/definition.cjs +15 -15
  55. package/_cjs/control/Sized/definition.cjs.map +1 -1
  56. package/_cjs/control/Sized/live.cjs +25 -24
  57. package/_cjs/control/Sized/live.cjs.map +1 -1
  58. package/_cjs/control/Sized.cjs +9 -39
  59. package/_cjs/control/Spec/api.cjs +288 -385
  60. package/_cjs/control/Spec/api.cjs.map +1 -1
  61. package/_cjs/control/Spec/definition.cjs +86 -72
  62. package/_cjs/control/Spec/definition.cjs.map +1 -1
  63. package/_cjs/control/Spec.cjs +38 -28
  64. package/_cjs/control/SummaryBuilder.cjs +48 -56
  65. package/_cjs/control/SummaryBuilder.cjs.map +1 -1
  66. package/_cjs/control/Test.cjs +21 -17
  67. package/_cjs/control/Test.cjs.map +1 -1
  68. package/_cjs/control/TestAnnotationRenderer/api.cjs +63 -57
  69. package/_cjs/control/TestAnnotationRenderer/api.cjs.map +1 -1
  70. package/_cjs/control/TestAnnotationRenderer/definition.cjs +36 -31
  71. package/_cjs/control/TestAnnotationRenderer/definition.cjs.map +1 -1
  72. package/_cjs/control/TestAnnotationRenderer.cjs +14 -28
  73. package/_cjs/control/TestAspect/api.cjs +81 -80
  74. package/_cjs/control/TestAspect/api.cjs.map +1 -1
  75. package/_cjs/control/TestAspect/definition.cjs +0 -2
  76. package/_cjs/control/TestAspect.cjs +14 -28
  77. package/_cjs/control/TestClock/api.cjs +44 -32
  78. package/_cjs/control/TestClock/api.cjs.map +1 -1
  79. package/_cjs/control/TestClock/definition.cjs +175 -156
  80. package/_cjs/control/TestClock/definition.cjs.map +1 -1
  81. package/_cjs/control/TestClock.cjs +13 -28
  82. package/_cjs/control/TestConsole/api.cjs +45 -34
  83. package/_cjs/control/TestConsole/api.cjs.map +1 -1
  84. package/_cjs/control/TestConsole/definition.cjs +76 -68
  85. package/_cjs/control/TestConsole/definition.cjs.map +1 -1
  86. package/_cjs/control/TestConsole.cjs +8 -28
  87. package/_cjs/control/TestEnvironment.cjs +31 -23
  88. package/_cjs/control/TestEnvironment.cjs.map +1 -1
  89. package/_cjs/control/TestLogger.cjs +36 -31
  90. package/_cjs/control/TestLogger.cjs.map +1 -1
  91. package/_cjs/control/TestRandom/api.cjs +67 -58
  92. package/_cjs/control/TestRandom/api.cjs.map +1 -1
  93. package/_cjs/control/TestRandom/definition.cjs +332 -343
  94. package/_cjs/control/TestRandom/definition.cjs.map +1 -1
  95. package/_cjs/control/TestRandom.cjs +20 -28
  96. package/_cjs/control/TestRenderer/ConsoleRenderer.cjs +78 -82
  97. package/_cjs/control/TestRenderer/ConsoleRenderer.cjs.map +1 -1
  98. package/_cjs/control/TestRenderer/definition.cjs +0 -2
  99. package/_cjs/control.cjs +0 -2
  100. package/_cjs/data/AssertionData.cjs +35 -31
  101. package/_cjs/data/AssertionData.cjs.map +1 -1
  102. package/_cjs/data/AssertionResult.cjs +23 -21
  103. package/_cjs/data/AssertionResult.cjs.map +1 -1
  104. package/_cjs/data/AssertionValue/api.cjs +39 -40
  105. package/_cjs/data/AssertionValue/api.cjs.map +1 -1
  106. package/_cjs/data/AssertionValue/definition.cjs +27 -24
  107. package/_cjs/data/AssertionValue/definition.cjs.map +1 -1
  108. package/_cjs/data/AssertionValue.cjs +10 -28
  109. package/_cjs/data/ExecutedSpec/api.cjs +71 -90
  110. package/_cjs/data/ExecutedSpec/api.cjs.map +1 -1
  111. package/_cjs/data/ExecutedSpec/definition.cjs +39 -35
  112. package/_cjs/data/ExecutedSpec/definition.cjs.map +1 -1
  113. package/_cjs/data/ExecutedSpec.cjs +15 -28
  114. package/_cjs/data/ExecutionResult.cjs +78 -97
  115. package/_cjs/data/ExecutionResult.cjs.map +1 -1
  116. package/_cjs/data/FailureDetails.cjs +12 -12
  117. package/_cjs/data/FailureDetails.cjs.map +1 -1
  118. package/_cjs/data/FreeBooleanAlgebra/api.cjs +129 -127
  119. package/_cjs/data/FreeBooleanAlgebra/api.cjs.map +1 -1
  120. package/_cjs/data/FreeBooleanAlgebra/definition.cjs +40 -35
  121. package/_cjs/data/FreeBooleanAlgebra/definition.cjs.map +1 -1
  122. package/_cjs/data/FreeBooleanAlgebra.cjs +22 -28
  123. package/_cjs/data/GenFailureDetails.cjs +14 -13
  124. package/_cjs/data/GenFailureDetails.cjs.map +1 -1
  125. package/_cjs/data/LogLine/Fragment.cjs +10 -71
  126. package/_cjs/data/LogLine/Line.cjs +13 -110
  127. package/_cjs/data/LogLine/Message.cjs +13 -114
  128. package/_cjs/data/LogLine/Style.cjs +56 -65
  129. package/_cjs/data/LogLine/Style.cjs.map +1 -1
  130. package/_cjs/data/LogLine/api.cjs +30 -29
  131. package/_cjs/data/LogLine/api.cjs.map +1 -1
  132. package/_cjs/data/LogLine.cjs +24 -28
  133. package/_cjs/data/Render/api.cjs +13 -14
  134. package/_cjs/data/Render/api.cjs.map +1 -1
  135. package/_cjs/data/Render/definition.cjs +37 -31
  136. package/_cjs/data/Render/definition.cjs.map +1 -1
  137. package/_cjs/data/Render.cjs +8 -28
  138. package/_cjs/data/RenderParam/api.cjs +18 -22
  139. package/_cjs/data/RenderParam/api.cjs.map +1 -1
  140. package/_cjs/data/RenderParam/definition.cjs +20 -19
  141. package/_cjs/data/RenderParam/definition.cjs.map +1 -1
  142. package/_cjs/data/RenderParam.cjs +8 -28
  143. package/_cjs/data/Summary.cjs +19 -15
  144. package/_cjs/data/Summary.cjs.map +1 -1
  145. package/_cjs/data/TestAnnotation/api.cjs +55 -40
  146. package/_cjs/data/TestAnnotation/api.cjs.map +1 -1
  147. package/_cjs/data/TestAnnotation/definition.cjs +44 -36
  148. package/_cjs/data/TestAnnotation/definition.cjs.map +1 -1
  149. package/_cjs/data/TestAnnotation.cjs +19 -28
  150. package/_cjs/data/TestAnnotationMap.cjs +36 -33
  151. package/_cjs/data/TestAnnotationMap.cjs.map +1 -1
  152. package/_cjs/data/TestArgs/definition.cjs +14 -13
  153. package/_cjs/data/TestArgs/definition.cjs.map +1 -1
  154. package/_cjs/data/TestArgs.cjs +3 -17
  155. package/_cjs/data/TestConfig.cjs +46 -44
  156. package/_cjs/data/TestConfig.cjs.map +1 -1
  157. package/_cjs/data/TestFailure.cjs +41 -39
  158. package/_cjs/data/TestFailure.cjs.map +1 -1
  159. package/_cjs/data/TestSuccess.cjs +26 -27
  160. package/_cjs/data/TestSuccess.cjs.map +1 -1
  161. package/_cjs/data/TestTimeoutException.cjs +9 -11
  162. package/_cjs/data/TestTimeoutException.cjs.map +1 -1
  163. package/_cjs/data.cjs +0 -2
  164. package/_cjs/global.cjs +0 -2
  165. package/_cjs/index.cjs +0 -2
  166. package/_cjs/util/math.cjs +319 -440
  167. package/_cjs/util/math.cjs.map +1 -1
  168. package/_cjs/util.cjs +0 -2
  169. package/_cjs/vitest.cjs +115 -104
  170. package/_cjs/vitest.cjs.map +1 -1
  171. package/_mjs/Fragment.mjs +237 -0
  172. package/_mjs/Fragment.mjs.map +1 -0
  173. package/_mjs/api.mjs +67 -64
  174. package/_mjs/api.mjs.map +1 -1
  175. package/_mjs/control/AbstractRunnableSpec.mjs +53 -70
  176. package/_mjs/control/AbstractRunnableSpec.mjs.map +1 -1
  177. package/_mjs/control/Annotations/api.mjs +21 -17
  178. package/_mjs/control/Annotations/api.mjs.map +1 -1
  179. package/_mjs/control/Annotations/definition.mjs +14 -14
  180. package/_mjs/control/Annotations/definition.mjs.map +1 -1
  181. package/_mjs/control/Annotations/live.mjs +32 -27
  182. package/_mjs/control/Annotations/live.mjs.map +1 -1
  183. package/_mjs/control/Annotations.mjs +4 -5
  184. package/_mjs/control/Assertion/api.mjs +140 -142
  185. package/_mjs/control/Assertion/api.mjs.map +1 -1
  186. package/_mjs/control/Assertion/definition.mjs +19 -12
  187. package/_mjs/control/Assertion/definition.mjs.map +1 -1
  188. package/_mjs/control/Assertion.mjs +3 -4
  189. package/_mjs/control/AssertionIO/api.mjs +26 -22
  190. package/_mjs/control/AssertionIO/api.mjs.map +1 -1
  191. package/_mjs/control/AssertionIO/definition.mjs +22 -18
  192. package/_mjs/control/AssertionIO/definition.mjs.map +1 -1
  193. package/_mjs/control/AssertionIO.mjs +3 -4
  194. package/_mjs/control/DefaultRunnableSpec.mjs +9 -8
  195. package/_mjs/control/DefaultRunnableSpec.mjs.map +1 -1
  196. package/_mjs/control/DefaultTestReporter/definition.mjs +5 -1
  197. package/_mjs/control/DefaultTestReporter/definition.mjs.map +1 -1
  198. package/_mjs/control/DefaultTestReporter/render.mjs +152 -165
  199. package/_mjs/control/DefaultTestReporter/render.mjs.map +1 -1
  200. package/_mjs/control/DefaultTestReporter.mjs +3 -4
  201. package/_mjs/control/FreeBooleanAlgebraIO/api.mjs +43 -39
  202. package/_mjs/control/FreeBooleanAlgebraIO/api.mjs.map +1 -1
  203. package/_mjs/control/FreeBooleanAlgebraIO/definition.mjs +5 -1
  204. package/_mjs/control/FreeBooleanAlgebraIO/definition.mjs.map +1 -1
  205. package/_mjs/control/FreeBooleanAlgebraIO.mjs +3 -4
  206. package/_mjs/control/Gen/api.mjs +570 -591
  207. package/_mjs/control/Gen/api.mjs.map +1 -1
  208. package/_mjs/control/Gen/constraints.mjs +0 -2
  209. package/_mjs/control/Gen/definition.mjs +13 -8
  210. package/_mjs/control/Gen/definition.mjs.map +1 -1
  211. package/_mjs/control/Gen.mjs +4 -5
  212. package/_mjs/control/Live/definition.mjs +31 -27
  213. package/_mjs/control/Live/definition.mjs.map +1 -1
  214. package/_mjs/control/Live.mjs +2 -3
  215. package/_mjs/control/Sample/api.mjs +109 -126
  216. package/_mjs/control/Sample/api.mjs.map +1 -1
  217. package/_mjs/control/Sample/definition.mjs +15 -9
  218. package/_mjs/control/Sample/definition.mjs.map +1 -1
  219. package/_mjs/control/Sample.mjs +3 -4
  220. package/_mjs/control/Sized/api.mjs +13 -9
  221. package/_mjs/control/Sized/api.mjs.map +1 -1
  222. package/_mjs/control/Sized/definition.mjs +11 -7
  223. package/_mjs/control/Sized/definition.mjs.map +1 -1
  224. package/_mjs/control/Sized/live.mjs +18 -17
  225. package/_mjs/control/Sized/live.mjs.map +1 -1
  226. package/_mjs/control/Sized.mjs +4 -5
  227. package/_mjs/control/Spec/api.mjs +245 -366
  228. package/_mjs/control/Spec/api.mjs.map +1 -1
  229. package/_mjs/control/Spec/definition.mjs +79 -60
  230. package/_mjs/control/Spec/definition.mjs.map +1 -1
  231. package/_mjs/control/Spec.mjs +3 -4
  232. package/_mjs/control/SummaryBuilder.mjs +31 -41
  233. package/_mjs/control/SummaryBuilder.mjs.map +1 -1
  234. package/_mjs/control/Test.mjs +13 -9
  235. package/_mjs/control/Test.mjs.map +1 -1
  236. package/_mjs/control/TestAnnotationRenderer/api.mjs +53 -55
  237. package/_mjs/control/TestAnnotationRenderer/api.mjs.map +1 -1
  238. package/_mjs/control/TestAnnotationRenderer/definition.mjs +25 -19
  239. package/_mjs/control/TestAnnotationRenderer/definition.mjs.map +1 -1
  240. package/_mjs/control/TestAnnotationRenderer.mjs +3 -4
  241. package/_mjs/control/TestAspect/api.mjs +49 -63
  242. package/_mjs/control/TestAspect/api.mjs.map +1 -1
  243. package/_mjs/control/TestAspect/definition.mjs +0 -2
  244. package/_mjs/control/TestAspect.mjs +3 -4
  245. package/_mjs/control/TestClock/api.mjs +24 -20
  246. package/_mjs/control/TestClock/api.mjs.map +1 -1
  247. package/_mjs/control/TestClock/definition.mjs +128 -133
  248. package/_mjs/control/TestClock/definition.mjs.map +1 -1
  249. package/_mjs/control/TestClock.mjs +3 -4
  250. package/_mjs/control/TestConsole/api.mjs +27 -24
  251. package/_mjs/control/TestConsole/api.mjs.map +1 -1
  252. package/_mjs/control/TestConsole/definition.mjs +62 -57
  253. package/_mjs/control/TestConsole/definition.mjs.map +1 -1
  254. package/_mjs/control/TestConsole.mjs +3 -4
  255. package/_mjs/control/TestEnvironment.mjs +14 -10
  256. package/_mjs/control/TestEnvironment.mjs.map +1 -1
  257. package/_mjs/control/TestLogger.mjs +25 -21
  258. package/_mjs/control/TestLogger.mjs.map +1 -1
  259. package/_mjs/control/TestRandom/api.mjs +46 -43
  260. package/_mjs/control/TestRandom/api.mjs.map +1 -1
  261. package/_mjs/control/TestRandom/definition.mjs +311 -327
  262. package/_mjs/control/TestRandom/definition.mjs.map +1 -1
  263. package/_mjs/control/TestRandom.mjs +3 -4
  264. package/_mjs/control/TestRenderer/ConsoleRenderer.mjs +66 -72
  265. package/_mjs/control/TestRenderer/ConsoleRenderer.mjs.map +1 -1
  266. package/_mjs/control/TestRenderer/definition.mjs +0 -2
  267. package/_mjs/control.mjs +0 -2
  268. package/_mjs/data/AssertionData.mjs +27 -22
  269. package/_mjs/data/AssertionData.mjs.map +1 -1
  270. package/_mjs/data/AssertionResult.mjs +18 -12
  271. package/_mjs/data/AssertionResult.mjs.map +1 -1
  272. package/_mjs/data/AssertionValue/api.mjs +34 -32
  273. package/_mjs/data/AssertionValue/api.mjs.map +1 -1
  274. package/_mjs/data/AssertionValue/definition.mjs +24 -17
  275. package/_mjs/data/AssertionValue/definition.mjs.map +1 -1
  276. package/_mjs/data/AssertionValue.mjs +3 -4
  277. package/_mjs/data/ExecutedSpec/api.mjs +64 -80
  278. package/_mjs/data/ExecutedSpec/api.mjs.map +1 -1
  279. package/_mjs/data/ExecutedSpec/definition.mjs +38 -28
  280. package/_mjs/data/ExecutedSpec/definition.mjs.map +1 -1
  281. package/_mjs/data/ExecutedSpec.mjs +3 -4
  282. package/_mjs/data/ExecutionResult.mjs +63 -85
  283. package/_mjs/data/ExecutionResult.mjs.map +1 -1
  284. package/_mjs/data/FailureDetails.mjs +12 -6
  285. package/_mjs/data/FailureDetails.mjs.map +1 -1
  286. package/_mjs/data/FreeBooleanAlgebra/api.mjs +107 -111
  287. package/_mjs/data/FreeBooleanAlgebra/api.mjs.map +1 -1
  288. package/_mjs/data/FreeBooleanAlgebra/definition.mjs +37 -27
  289. package/_mjs/data/FreeBooleanAlgebra/definition.mjs.map +1 -1
  290. package/_mjs/data/FreeBooleanAlgebra.mjs +3 -4
  291. package/_mjs/data/GenFailureDetails.mjs +14 -7
  292. package/_mjs/data/GenFailureDetails.mjs.map +1 -1
  293. package/_mjs/data/LogLine/Fragment.mjs +2 -56
  294. package/_mjs/data/LogLine/Line.mjs +2 -92
  295. package/_mjs/data/LogLine/Message.mjs +2 -98
  296. package/_mjs/data/LogLine/Style.mjs +56 -66
  297. package/_mjs/data/LogLine/Style.mjs.map +1 -1
  298. package/_mjs/data/LogLine/api.mjs +24 -20
  299. package/_mjs/data/LogLine/api.mjs.map +1 -1
  300. package/_mjs/data/LogLine.mjs +3 -3
  301. package/_mjs/data/Render/api.mjs +12 -8
  302. package/_mjs/data/Render/api.mjs.map +1 -1
  303. package/_mjs/data/Render/definition.mjs +31 -22
  304. package/_mjs/data/Render/definition.mjs.map +1 -1
  305. package/_mjs/data/Render.mjs +3 -4
  306. package/_mjs/data/RenderParam/api.mjs +15 -15
  307. package/_mjs/data/RenderParam/api.mjs.map +1 -1
  308. package/_mjs/data/RenderParam/definition.mjs +19 -13
  309. package/_mjs/data/RenderParam/definition.mjs.map +1 -1
  310. package/_mjs/data/RenderParam.mjs +3 -4
  311. package/_mjs/data/Summary.mjs +19 -9
  312. package/_mjs/data/Summary.mjs.map +1 -1
  313. package/_mjs/data/TestAnnotation/api.mjs +34 -30
  314. package/_mjs/data/TestAnnotation/api.mjs.map +1 -1
  315. package/_mjs/data/TestAnnotation/definition.mjs +31 -24
  316. package/_mjs/data/TestAnnotation/definition.mjs.map +1 -1
  317. package/_mjs/data/TestAnnotation.mjs +3 -4
  318. package/_mjs/data/TestAnnotationMap.mjs +28 -23
  319. package/_mjs/data/TestAnnotationMap.mjs.map +1 -1
  320. package/_mjs/data/TestArgs/definition.mjs +14 -7
  321. package/_mjs/data/TestArgs/definition.mjs.map +1 -1
  322. package/_mjs/data/TestArgs.mjs +2 -3
  323. package/_mjs/data/TestConfig.mjs +34 -33
  324. package/_mjs/data/TestConfig.mjs.map +1 -1
  325. package/_mjs/data/TestFailure.mjs +35 -29
  326. package/_mjs/data/TestFailure.mjs.map +1 -1
  327. package/_mjs/data/TestSuccess.mjs +22 -19
  328. package/_mjs/data/TestSuccess.mjs.map +1 -1
  329. package/_mjs/data/TestTimeoutException.mjs +9 -5
  330. package/_mjs/data/TestTimeoutException.mjs.map +1 -1
  331. package/_mjs/data.mjs +0 -2
  332. package/_mjs/global.mjs +0 -2
  333. package/_mjs/index.mjs +0 -2
  334. package/_mjs/util/math.mjs +310 -432
  335. package/_mjs/util/math.mjs.map +1 -1
  336. package/_mjs/util.mjs +0 -2
  337. package/_mjs/vitest.mjs +80 -80
  338. package/_mjs/vitest.mjs.map +1 -1
  339. package/_src/control/TestClock/definition.ts +26 -18
  340. package/_src/control/TestConsole/definition.ts +19 -9
  341. package/_src/control/TestRandom/definition.ts +39 -17
  342. package/_src/data/Summary.ts +3 -1
  343. package/_src/vitest.ts +1 -1
  344. package/control/TestClock/definition.d.ts +4 -4
  345. package/control/TestConsole/definition.d.ts +5 -5
  346. package/control/TestRandom/definition.d.ts +13 -13
  347. package/data/Summary.d.ts +1 -1
  348. package/package.json +14 -5
  349. package/_cjs/control/Annotations.cjs.map +0 -1
  350. package/_cjs/control/Assertion.cjs.map +0 -1
  351. package/_cjs/control/AssertionIO.cjs.map +0 -1
  352. package/_cjs/control/DefaultTestReporter.cjs.map +0 -1
  353. package/_cjs/control/FreeBooleanAlgebraIO.cjs.map +0 -1
  354. package/_cjs/control/Gen/constraints.cjs.map +0 -1
  355. package/_cjs/control/Gen.cjs.map +0 -1
  356. package/_cjs/control/Live.cjs.map +0 -1
  357. package/_cjs/control/Sample.cjs.map +0 -1
  358. package/_cjs/control/Sized.cjs.map +0 -1
  359. package/_cjs/control/Spec.cjs.map +0 -1
  360. package/_cjs/control/TestAnnotationRenderer.cjs.map +0 -1
  361. package/_cjs/control/TestAspect/definition.cjs.map +0 -1
  362. package/_cjs/control/TestAspect.cjs.map +0 -1
  363. package/_cjs/control/TestClock.cjs.map +0 -1
  364. package/_cjs/control/TestConsole.cjs.map +0 -1
  365. package/_cjs/control/TestRandom.cjs.map +0 -1
  366. package/_cjs/control/TestRenderer/definition.cjs.map +0 -1
  367. package/_cjs/control.cjs.map +0 -1
  368. package/_cjs/data/AssertionValue.cjs.map +0 -1
  369. package/_cjs/data/ExecutedSpec.cjs.map +0 -1
  370. package/_cjs/data/FreeBooleanAlgebra.cjs.map +0 -1
  371. package/_cjs/data/LogLine/Fragment.cjs.map +0 -1
  372. package/_cjs/data/LogLine/Line.cjs.map +0 -1
  373. package/_cjs/data/LogLine/Message.cjs.map +0 -1
  374. package/_cjs/data/LogLine.cjs.map +0 -1
  375. package/_cjs/data/Render.cjs.map +0 -1
  376. package/_cjs/data/RenderParam.cjs.map +0 -1
  377. package/_cjs/data/TestAnnotation.cjs.map +0 -1
  378. package/_cjs/data/TestArgs.cjs.map +0 -1
  379. package/_cjs/data.cjs.map +0 -1
  380. package/_cjs/global.cjs.map +0 -1
  381. package/_cjs/index.cjs.map +0 -1
  382. package/_cjs/util.cjs.map +0 -1
  383. package/_mjs/control/Annotations.mjs.map +0 -1
  384. package/_mjs/control/Assertion.mjs.map +0 -1
  385. package/_mjs/control/AssertionIO.mjs.map +0 -1
  386. package/_mjs/control/DefaultTestReporter.mjs.map +0 -1
  387. package/_mjs/control/FreeBooleanAlgebraIO.mjs.map +0 -1
  388. package/_mjs/control/Gen/constraints.mjs.map +0 -1
  389. package/_mjs/control/Gen.mjs.map +0 -1
  390. package/_mjs/control/Live.mjs.map +0 -1
  391. package/_mjs/control/Sample.mjs.map +0 -1
  392. package/_mjs/control/Sized.mjs.map +0 -1
  393. package/_mjs/control/Spec.mjs.map +0 -1
  394. package/_mjs/control/TestAnnotationRenderer.mjs.map +0 -1
  395. package/_mjs/control/TestAspect/definition.mjs.map +0 -1
  396. package/_mjs/control/TestAspect.mjs.map +0 -1
  397. package/_mjs/control/TestClock.mjs.map +0 -1
  398. package/_mjs/control/TestConsole.mjs.map +0 -1
  399. package/_mjs/control/TestRandom.mjs.map +0 -1
  400. package/_mjs/control/TestRenderer/definition.mjs.map +0 -1
  401. package/_mjs/control.mjs.map +0 -1
  402. package/_mjs/data/AssertionValue.mjs.map +0 -1
  403. package/_mjs/data/ExecutedSpec.mjs.map +0 -1
  404. package/_mjs/data/FreeBooleanAlgebra.mjs.map +0 -1
  405. package/_mjs/data/LogLine/Fragment.mjs.map +0 -1
  406. package/_mjs/data/LogLine/Line.mjs.map +0 -1
  407. package/_mjs/data/LogLine/Message.mjs.map +0 -1
  408. package/_mjs/data/LogLine.mjs.map +0 -1
  409. package/_mjs/data/Render.mjs.map +0 -1
  410. package/_mjs/data/RenderParam.mjs.map +0 -1
  411. package/_mjs/data/TestAnnotation.mjs.map +0 -1
  412. package/_mjs/data/TestArgs.mjs.map +0 -1
  413. package/_mjs/data.mjs.map +0 -1
  414. package/_mjs/global.mjs.map +0 -1
  415. package/_mjs/index.mjs.map +0 -1
  416. package/_mjs/util.mjs.map +0 -1
@@ -1,537 +1,416 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.Zero64 = exports.Unit64 = exports.MIN_VALUE_32 = exports.MAX_VALUE_32 = exports.EPSILON_32 = void 0;
7
- exports.add64 = add64;
8
- exports.clamp = clamp;
9
- exports.clone64 = clone64;
10
- exports.computeArrayInt64GenerateRange = computeArrayInt64GenerateRange;
11
- exports.computeBiasedRanges = computeBiasedRanges;
12
- exports.decomposeDouble = decomposeDouble;
13
- exports.decomposeFloat = decomposeFloat;
14
- exports.doubleToIndex = doubleToIndex;
15
- exports.floatToIndex = floatToIndex;
16
- exports.halve64 = halve64;
17
- exports.indexInFloatFromDecomp = indexInFloatFromDecomp;
18
- exports.indexToDouble = indexToDouble;
19
- exports.indexToFloat = indexToFloat;
20
- exports.isEqual64 = isEqual64;
21
- exports.isStrictlyNegative64 = isStrictlyNegative64;
22
- exports.isStrictlyPositive64 = isStrictlyPositive64;
23
- exports.isStrictlySmaller64 = isStrictlySmaller64;
24
- exports.isZero64 = isZero64;
25
- exports.logLike64 = logLike64;
26
- exports.negative64 = negative64;
27
- exports.nextAfter = nextAfter;
28
- exports.nextUp = nextUp;
29
- exports.safeDoubleToIndex = safeDoubleToIndex;
30
- exports.safeFloatToIndex = safeFloatToIndex;
31
- exports.substract64 = substract64;
32
- var tsplus_module_1 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/io/IO/api"));
33
- var tsplus_module_2 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/io/Random/api"));
34
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_chunk = require("../chunk.cjs");
3
+ let _fncts_io_IO_api = require("@fncts/io/IO/api");
4
+ _fncts_io_IO_api = require_chunk.__toESM(_fncts_io_IO_api, 1);
5
+ let _fncts_io_Random_api = require("@fncts/io/Random/api");
6
+ _fncts_io_Random_api = require_chunk.__toESM(_fncts_io_Random_api, 1);
7
+ //#region build/esm/util/math.js
35
8
  const fileName_1 = "(@fncts/test) src/util/math.ts";
36
9
  /** @internal */
37
- const MIN_VALUE_32 = exports.MIN_VALUE_32 = 2 ** -126 * 2 ** -23;
10
+ const MIN_VALUE_32 = 2 ** -126 * 2 ** -23;
38
11
  /** @internal */
39
- const MAX_VALUE_32 = exports.MAX_VALUE_32 = 2 ** 127 * (1 + (2 ** 23 - 1) / 2 ** 23);
12
+ const MAX_VALUE_32 = 2 ** 127 * (1 + (2 ** 23 - 1) / 2 ** 23);
40
13
  /** @internal */
41
- const EPSILON_32 = exports.EPSILON_32 = 2 ** -23;
14
+ const EPSILON_32 = 2 ** -23;
42
15
  /** @internal */
43
- const INDEX_POSITIVE_INFINITY_32 = 2139095040; // floatToIndex(MAX_VALUE_32) + 1;
16
+ const INDEX_POSITIVE_INFINITY_32 = 2139095040;
44
17
  /** @internal */
45
- const INDEX_NEGATIVE_INFINITY_32 = -2139095041; // floatToIndex(-MAX_VALUE_32) - 1
18
+ const INDEX_NEGATIVE_INFINITY_32 = -2139095041;
46
19
  function safeFloatToIndex(f, label) {
47
- const conversionTrick = "you can convert any double to a 32-bit float by using `new Float32Array([myDouble])[0]`";
48
- const errorMessage = "fc.floatNext constraints." + label + " must be a 32-bit float - " + conversionTrick;
49
- if (Number.isNaN(f) || Number.isFinite(f) && (f < -MAX_VALUE_32 || f > MAX_VALUE_32)) {
50
- return tsplus_module_1.haltNow(new Error(errorMessage), fileName_1 + ":16:22");
51
- }
52
- const index = floatToIndex(f);
53
- if (!Number.isInteger(index)) {
54
- return tsplus_module_1.haltNow(new Error(errorMessage), fileName_1 + ":20:22");
55
- }
56
- return tsplus_module_1.succeedNow(index, fileName_1 + ":22:23");
20
+ const errorMessage = "fc.floatNext constraints." + label + " must be a 32-bit float - you can convert any double to a 32-bit float by using `new Float32Array([myDouble])[0]`";
21
+ if (Number.isNaN(f) || Number.isFinite(f) && (f < -MAX_VALUE_32 || f > MAX_VALUE_32)) return _fncts_io_IO_api.haltNow(new Error(errorMessage), fileName_1 + ":16:22");
22
+ const index = floatToIndex(f);
23
+ if (!Number.isInteger(index)) return _fncts_io_IO_api.haltNow(new Error(errorMessage), fileName_1 + ":20:22");
24
+ return _fncts_io_IO_api.succeedNow(index, fileName_1 + ":22:23");
57
25
  }
58
26
  function decomposeFloat(f) {
59
- // 1 => significand 0b1 - exponent 1 (will be preferred)
60
- // => significand 0b0.1 - exponent 2
61
- const maxSignificand = 1 + (2 ** 23 - 1) / 2 ** 23;
62
- for (let exponent = -126; exponent !== 128; ++exponent) {
63
- const powExponent = 2 ** exponent;
64
- const maxForExponent = maxSignificand * powExponent;
65
- if (Math.abs(f) <= maxForExponent) {
66
- return {
67
- exponent,
68
- significand: f / powExponent
69
- };
70
- }
71
- }
72
- return {
73
- exponent: Number.NaN,
74
- significand: Number.NaN
75
- };
27
+ const maxSignificand = 1 + (2 ** 23 - 1) / 2 ** 23;
28
+ for (let exponent = -126; exponent !== 128; ++exponent) {
29
+ const powExponent = 2 ** exponent;
30
+ const maxForExponent = maxSignificand * powExponent;
31
+ if (Math.abs(f) <= maxForExponent) return {
32
+ exponent,
33
+ significand: f / powExponent
34
+ };
35
+ }
36
+ return {
37
+ exponent: NaN,
38
+ significand: NaN
39
+ };
76
40
  }
77
41
  function floatToIndex(f) {
78
- if (f === Number.POSITIVE_INFINITY) {
79
- return INDEX_POSITIVE_INFINITY_32;
80
- }
81
- if (f === Number.NEGATIVE_INFINITY) {
82
- return INDEX_NEGATIVE_INFINITY_32;
83
- }
84
- const {
85
- exponent,
86
- significand
87
- } = decomposeFloat(f);
88
- if (Number.isNaN(exponent) || Number.isNaN(significand) || !Number.isInteger(significand * 0x800000)) {
89
- return Number.NaN;
90
- }
91
- if (f > 0 || f === 0 && 1 / f === Number.POSITIVE_INFINITY) {
92
- return indexInFloatFromDecomp(exponent, significand);
93
- } else {
94
- return -indexInFloatFromDecomp(exponent, -significand) - 1;
95
- }
42
+ if (f === Number.POSITIVE_INFINITY) return INDEX_POSITIVE_INFINITY_32;
43
+ if (f === Number.NEGATIVE_INFINITY) return INDEX_NEGATIVE_INFINITY_32;
44
+ const { exponent, significand } = decomposeFloat(f);
45
+ if (Number.isNaN(exponent) || Number.isNaN(significand) || !Number.isInteger(significand * 8388608)) return NaN;
46
+ if (f > 0 || f === 0 && 1 / f === Number.POSITIVE_INFINITY) return indexInFloatFromDecomp(exponent, significand);
47
+ else return -indexInFloatFromDecomp(exponent, -significand) - 1;
96
48
  }
97
49
  /** @internal */
98
50
  function indexInFloatFromDecomp(exponent, significand) {
99
- // WARNING: significand >= 0
100
- // By construct of significand in decomposeFloat,
101
- // significand is always max-ed.
102
- // The float close to zero are the only one having a significand <1, they also have an exponent of -126.
103
- // They are in range: [2**(-126) * 2**(-23), 2**(-126) * (2 - 2 ** 23)]
104
- // In other words there are 2**24 elements in that range if we include zero.
105
- // All other ranges (other exponents) have a length of 2**23 elements.
106
- if (exponent === -126) {
107
- return significand * 0x800000; // significand * 2**23
108
- }
109
- // Offset due to exp = -126 + Offset of previous exp (excl. -126) + Offset in current exp
110
- // 2**24 + (exponent - (-126) -1) * 2**23 + (significand - 1) * 2**23
111
- return (exponent + 127) * 0x800000 + (significand - 1) * 0x800000;
51
+ if (exponent === -126) return significand * 8388608;
52
+ return (exponent + 127) * 8388608 + (significand - 1) * 8388608;
112
53
  }
113
54
  /**
114
- * Compute the 32-bit floating point number corresponding to the provided indexes
115
- *
116
- * @param n - index of the float
117
- *
118
- * @internal
119
- */
55
+ * Compute the 32-bit floating point number corresponding to the provided indexes
56
+ *
57
+ * @param n - index of the float
58
+ *
59
+ * @internal
60
+ */
120
61
  function indexToFloat(index) {
121
- if (index < 0) {
122
- return -indexToFloat(-index - 1);
123
- }
124
- if (index === INDEX_POSITIVE_INFINITY_32) {
125
- return Number.POSITIVE_INFINITY;
126
- }
127
- if (index < 0x1000000) {
128
- // The first 2**24 elements correspond to values having
129
- // exponent = -126 and significand = index * 2**(-23)
130
- return index * 2 ** -149;
131
- }
132
- const postIndex = index - 0x1000000;
133
- // Math.floor(postIndex / 0x800000) = Math.floor(postIndex / 2**23) = (postIndex >> 23)
134
- const exponent = -125 + (postIndex >> 23);
135
- // (postIndex % 0x800000) / 0x800000 = (postIndex & 0x7fffff) / 0x800000
136
- const significand = 1 + (postIndex & 0x7fffff) / 0x800000;
137
- return significand * 2 ** exponent;
62
+ if (index < 0) return -indexToFloat(-index - 1);
63
+ if (index === INDEX_POSITIVE_INFINITY_32) return Number.POSITIVE_INFINITY;
64
+ if (index < 16777216) return index * 2 ** -149;
65
+ const postIndex = index - 16777216;
66
+ const exponent = -125 + (postIndex >> 23);
67
+ return (1 + (postIndex & 8388607) / 8388608) * 2 ** exponent;
138
68
  }
139
69
  /** @internal */
140
- const Zero64 = exports.Zero64 = {
141
- sign: 1,
142
- data: [0, 0]
70
+ const Zero64 = {
71
+ sign: 1,
72
+ data: [0, 0]
143
73
  };
144
74
  /** @internal */
145
- const Unit64 = exports.Unit64 = {
146
- sign: 1,
147
- data: [0, 1]
75
+ const Unit64 = {
76
+ sign: 1,
77
+ data: [0, 1]
148
78
  };
149
79
  /** @internal */
150
80
  function isZero64(a) {
151
- return a.data[0] === 0 && a.data[1] === 0;
81
+ return a.data[0] === 0 && a.data[1] === 0;
152
82
  }
153
83
  /** @internal */
154
84
  function isStrictlyNegative64(a) {
155
- return a.sign === -1 && !isZero64(a);
85
+ return a.sign === -1 && !isZero64(a);
156
86
  }
157
87
  /** @internal */
158
88
  function isStrictlyPositive64(a) {
159
- return a.sign === 1 && !isZero64(a);
89
+ return a.sign === 1 && !isZero64(a);
160
90
  }
161
91
  /** @internal */
162
92
  function isEqual64(a, b) {
163
- if (a.data[0] === b.data[0] && a.data[1] === b.data[1]) {
164
- return a.sign === b.sign || a.data[0] === 0 && a.data[1] === 0; // either the same or both zero
165
- }
166
- return false;
93
+ if (a.data[0] === b.data[0] && a.data[1] === b.data[1]) return a.sign === b.sign || a.data[0] === 0 && a.data[1] === 0;
94
+ return false;
167
95
  }
168
96
  /** @internal */
169
97
  function isStrictlySmaller64Internal(a, b) {
170
- return a[0] < b[0] || a[0] === b[0] && a[1] < b[1];
98
+ return a[0] < b[0] || a[0] === b[0] && a[1] < b[1];
171
99
  }
172
100
  /** @internal */
173
101
  function isStrictlySmaller64(a, b) {
174
- if (a.sign === b.sign) {
175
- return a.sign === 1 ? isStrictlySmaller64Internal(a.data, b.data) // a.sign = +1, b.sign = +1
176
- : isStrictlySmaller64Internal(b.data, a.data); // a.sign = -1, b.sign = -1
177
- }
178
- // a.sign = +1, b.sign = -1 is always false
179
- return a.sign === -1 && (!isZero64(a) || !isZero64(b)); // a.sign = -1, b.sign = +1
102
+ if (a.sign === b.sign) return a.sign === 1 ? isStrictlySmaller64Internal(a.data, b.data) : isStrictlySmaller64Internal(b.data, a.data);
103
+ return a.sign === -1 && (!isZero64(a) || !isZero64(b));
180
104
  }
181
105
  /** @internal */
182
106
  function clone64(a) {
183
- return {
184
- sign: a.sign,
185
- data: [a.data[0], a.data[1]]
186
- };
107
+ return {
108
+ sign: a.sign,
109
+ data: [a.data[0], a.data[1]]
110
+ };
187
111
  }
188
112
  /** @internal */
189
113
  function substract64DataInternal(a, b) {
190
- let reminderLow = 0;
191
- let low = a[1] - b[1];
192
- if (low < 0) {
193
- reminderLow = 1;
194
- low = low >>> 0;
195
- }
196
- return [a[0] - b[0] - reminderLow, low];
114
+ let reminderLow = 0;
115
+ let low = a[1] - b[1];
116
+ if (low < 0) {
117
+ reminderLow = 1;
118
+ low = low >>> 0;
119
+ }
120
+ return [a[0] - b[0] - reminderLow, low];
197
121
  }
198
122
  /**
199
- * Expects a >= b
200
- * @internal
201
- */
123
+ * Expects a >= b
124
+ * @internal
125
+ */
202
126
  function substract64Internal(a, b) {
203
- if (a.sign === 1 && b.sign === -1) {
204
- // Operation is a simple sum of a + abs(b)
205
- const low = a.data[1] + b.data[1];
206
- const high = a.data[0] + b.data[0] + (low > 0xffffffff ? 1 : 0);
207
- return {
208
- sign: 1,
209
- data: [high >>> 0, low >>> 0]
210
- };
211
- }
212
- // a.sign === -1 with b.sign === 1 is impossible given: a - b >= 0, except for a = 0 and b = 0
213
- // Operation is a substraction
214
- return {
215
- sign: 1,
216
- data: a.sign === 1 ? substract64DataInternal(a.data, b.data) : substract64DataInternal(b.data, a.data)
217
- };
127
+ if (a.sign === 1 && b.sign === -1) {
128
+ const low = a.data[1] + b.data[1];
129
+ return {
130
+ sign: 1,
131
+ data: [a.data[0] + b.data[0] + (low > 4294967295 ? 1 : 0) >>> 0, low >>> 0]
132
+ };
133
+ }
134
+ return {
135
+ sign: 1,
136
+ data: a.sign === 1 ? substract64DataInternal(a.data, b.data) : substract64DataInternal(b.data, a.data)
137
+ };
218
138
  }
219
139
  /**
220
- * Substract two ArrayInt64
221
- * @returns When result is zero always with sign=1
222
- * @internal
223
- */
140
+ * Substract two ArrayInt64
141
+ * @returns When result is zero always with sign=1
142
+ * @internal
143
+ */
224
144
  function substract64(arrayIntA, arrayIntB) {
225
- if (isStrictlySmaller64(arrayIntA, arrayIntB)) {
226
- const out = substract64Internal(arrayIntB, arrayIntA);
227
- out.sign = -1;
228
- return out;
229
- }
230
- return substract64Internal(arrayIntA, arrayIntB);
145
+ if (isStrictlySmaller64(arrayIntA, arrayIntB)) {
146
+ const out = substract64Internal(arrayIntB, arrayIntA);
147
+ out.sign = -1;
148
+ return out;
149
+ }
150
+ return substract64Internal(arrayIntA, arrayIntB);
231
151
  }
232
152
  /**
233
- * Negative version of an ArrayInt64
234
- * @internal
235
- */
153
+ * Negative version of an ArrayInt64
154
+ * @internal
155
+ */
236
156
  function negative64(arrayIntA) {
237
- return {
238
- sign: -arrayIntA.sign,
239
- data: [arrayIntA.data[0], arrayIntA.data[1]]
240
- };
157
+ return {
158
+ sign: -arrayIntA.sign,
159
+ data: [arrayIntA.data[0], arrayIntA.data[1]]
160
+ };
241
161
  }
242
162
  /**
243
- * Add two ArrayInt64
244
- * @returns When result is zero always with sign=1
245
- * @internal
246
- */
163
+ * Add two ArrayInt64
164
+ * @returns When result is zero always with sign=1
165
+ * @internal
166
+ */
247
167
  function add64(arrayIntA, arrayIntB) {
248
- if (isZero64(arrayIntB)) {
249
- if (isZero64(arrayIntA)) {
250
- return clone64(Zero64);
251
- }
252
- return clone64(arrayIntA);
253
- }
254
- return substract64(arrayIntA, negative64(arrayIntB));
168
+ if (isZero64(arrayIntB)) {
169
+ if (isZero64(arrayIntA)) return clone64(Zero64);
170
+ return clone64(arrayIntA);
171
+ }
172
+ return substract64(arrayIntA, negative64(arrayIntB));
255
173
  }
256
174
  /**
257
- * Halve an ArrayInt64
258
- * @internal
259
- */
175
+ * Halve an ArrayInt64
176
+ * @internal
177
+ */
260
178
  function halve64(a) {
261
- return {
262
- sign: a.sign,
263
- data: [Math.floor(a.data[0] / 2), (a.data[0] % 2 === 1 ? 0x80000000 : 0) + Math.floor(a.data[1] / 2)]
264
- };
179
+ return {
180
+ sign: a.sign,
181
+ data: [Math.floor(a.data[0] / 2), (a.data[0] % 2 === 1 ? 2147483648 : 0) + Math.floor(a.data[1] / 2)]
182
+ };
265
183
  }
266
184
  /**
267
- * Apply log2 to an ArrayInt64 (preserve sign)
268
- * @internal
269
- */
185
+ * Apply log2 to an ArrayInt64 (preserve sign)
186
+ * @internal
187
+ */
270
188
  function logLike64(a) {
271
- // Math.floor(Math.log(hi * 2**32 + low) / Math.log(2)) <= Math.floor(Math.log(2**64) / Math.log(2)) = 64
272
- return {
273
- sign: a.sign,
274
- data: [0, Math.floor(Math.log(a.data[0] * 0x100000000 + a.data[1]) / Math.log(2))]
275
- };
189
+ return {
190
+ sign: a.sign,
191
+ data: [0, Math.floor(Math.log(a.data[0] * 4294967296 + a.data[1]) / Math.log(2))]
192
+ };
276
193
  }
277
194
  /** @internal */
278
195
  const INDEX_POSITIVE_INFINITY = {
279
- sign: 1,
280
- data: [2146435072, 0]
281
- }; // doubleToIndex(Number.MAX_VALUE) + 1;
196
+ sign: 1,
197
+ data: [2146435072, 0]
198
+ };
282
199
  /** @internal */
283
200
  const INDEX_NEGATIVE_INFINITY = {
284
- sign: -1,
285
- data: [2146435072, 1]
286
- }; // doubleToIndex(-Number.MAX_VALUE) - 1
201
+ sign: -1,
202
+ data: [2146435072, 1]
203
+ };
287
204
  /**
288
- * Decompose a 64-bit floating point number into a significand and exponent
289
- * such that:
290
- * - significand over 53 bits including sign (also referred as fraction)
291
- * - exponent over 11 bits including sign
292
- * - whenever there are multiple possibilities we take the one having the highest significand (in abs)
293
- * - Number.MAX_VALUE = 2**1023 * (1 + (2**52-1)/2**52)
294
- * = 2**1023 * (2 - Number.EPSILON)
295
- * - Number.MIN_VALUE = 2**(-1022) * 2**(-52)
296
- * - Number.EPSILON = 2**(-52)
297
- *
298
- * @param d - 64-bit floating point number to be decomposed into (significand, exponent)
299
- *
300
- * @internal
301
- */
205
+ * Decompose a 64-bit floating point number into a significand and exponent
206
+ * such that:
207
+ * - significand over 53 bits including sign (also referred as fraction)
208
+ * - exponent over 11 bits including sign
209
+ * - whenever there are multiple possibilities we take the one having the highest significand (in abs)
210
+ * - Number.MAX_VALUE = 2**1023 * (1 + (2**52-1)/2**52)
211
+ * = 2**1023 * (2 - Number.EPSILON)
212
+ * - Number.MIN_VALUE = 2**(-1022) * 2**(-52)
213
+ * - Number.EPSILON = 2**(-52)
214
+ *
215
+ * @param d - 64-bit floating point number to be decomposed into (significand, exponent)
216
+ *
217
+ * @internal
218
+ */
302
219
  function decomposeDouble(d) {
303
- // 1 => significand 0b1 - exponent 1 (will be preferred)
304
- // => significand 0b0.1 - exponent 2
305
- const maxSignificand = 2 - Number.EPSILON;
306
- for (let exponent = -1022; exponent !== 1024; ++exponent) {
307
- const powExponent = 2 ** exponent;
308
- const maxForExponent = maxSignificand * powExponent;
309
- if (Math.abs(d) <= maxForExponent) {
310
- return {
311
- exponent,
312
- significand: d / powExponent
313
- };
314
- }
315
- }
316
- return {
317
- exponent: Number.NaN,
318
- significand: Number.NaN
319
- };
220
+ const maxSignificand = 2 - Number.EPSILON;
221
+ for (let exponent = -1022; exponent !== 1024; ++exponent) {
222
+ const powExponent = 2 ** exponent;
223
+ const maxForExponent = maxSignificand * powExponent;
224
+ if (Math.abs(d) <= maxForExponent) return {
225
+ exponent,
226
+ significand: d / powExponent
227
+ };
228
+ }
229
+ return {
230
+ exponent: NaN,
231
+ significand: NaN
232
+ };
320
233
  }
321
234
  /** @internal */
322
235
  function positiveNumberToInt64(n) {
323
- return [~~(n / 0x100000000), n >>> 0];
236
+ return [~~(n / 4294967296), n >>> 0];
324
237
  }
325
238
  /** @internal */
326
239
  function indexInDoubleFromDecomp(exponent, significand) {
327
- // WARNING: significand >= 0
328
- // By construct of significand in decomposeDouble,
329
- // significand is always max-ed.
330
- // The double close to zero are the only one having a significand <1, they also have an exponent of -1022.
331
- // They are in range: [2**(-1022) * 2**(-52), 2**(-1022) * (2 - 2 ** 52)]
332
- // In other words there are 2**53 elements in that range if we include zero.
333
- // All other ranges (other exponents) have a length of 2**52 elements.
334
- if (exponent === -1022) {
335
- // We want the significand to be an integer value (like an index)
336
- const rescaledSignificand = significand * 2 ** 52; // significand * 2**52
337
- return positiveNumberToInt64(rescaledSignificand);
338
- }
339
- // Offset due to exp = -1022 + Offset of previous exp (excl. -1022) + Offset in current exp
340
- // 2**53 + (exponent - (-1022) -1) * 2**52 + (significand - 1) * 2**52
341
- // (exponent + 1023) * 2**52 + (significand - 1) * 2**52
342
- const rescaledSignificand = (significand - 1) * 2 ** 52; // (significand-1) * 2**52
343
- const exponentOnlyHigh = (exponent + 1023) * 2 ** 20; // (exponent + 1023) * 2**52 => [high: (exponent + 1023) * 2**20, low: 0]
344
- const index = positiveNumberToInt64(rescaledSignificand);
345
- index[0] += exponentOnlyHigh;
346
- return index;
240
+ if (exponent === -1022) return positiveNumberToInt64(significand * 2 ** 52);
241
+ const rescaledSignificand = (significand - 1) * 2 ** 52;
242
+ const exponentOnlyHigh = (exponent + 1023) * 2 ** 20;
243
+ const index = positiveNumberToInt64(rescaledSignificand);
244
+ index[0] += exponentOnlyHigh;
245
+ return index;
347
246
  }
348
247
  /**
349
- * Compute the index of d relative to other available 64-bit floating point numbers
350
- * Rq: Produces negative indexes for negative doubles
351
- *
352
- * @param d - 64-bit floating point number, anything except NaN
353
- *
354
- * @internal
355
- */
248
+ * Compute the index of d relative to other available 64-bit floating point numbers
249
+ * Rq: Produces negative indexes for negative doubles
250
+ *
251
+ * @param d - 64-bit floating point number, anything except NaN
252
+ *
253
+ * @internal
254
+ */
356
255
  function doubleToIndex(d) {
357
- if (d === Number.POSITIVE_INFINITY) {
358
- return clone64(INDEX_POSITIVE_INFINITY);
359
- }
360
- if (d === Number.NEGATIVE_INFINITY) {
361
- return clone64(INDEX_NEGATIVE_INFINITY);
362
- }
363
- const decomp = decomposeDouble(d);
364
- const exponent = decomp.exponent;
365
- const significand = decomp.significand;
366
- if (d > 0 || d === 0 && 1 / d === Number.POSITIVE_INFINITY) {
367
- return {
368
- sign: 1,
369
- data: indexInDoubleFromDecomp(exponent, significand)
370
- };
371
- } else {
372
- const indexOpposite = indexInDoubleFromDecomp(exponent, -significand);
373
- if (indexOpposite[1] === 0xffffffff) {
374
- indexOpposite[0] += 1;
375
- indexOpposite[1] = 0;
376
- } else {
377
- indexOpposite[1] += 1;
378
- }
379
- return {
380
- sign: -1,
381
- data: indexOpposite
382
- }; // -indexInDoubleFromDecomp(exponent, -significand) - 1
383
- }
256
+ if (d === Number.POSITIVE_INFINITY) return clone64(INDEX_POSITIVE_INFINITY);
257
+ if (d === Number.NEGATIVE_INFINITY) return clone64(INDEX_NEGATIVE_INFINITY);
258
+ const decomp = decomposeDouble(d);
259
+ const exponent = decomp.exponent;
260
+ const significand = decomp.significand;
261
+ if (d > 0 || d === 0 && 1 / d === Number.POSITIVE_INFINITY) return {
262
+ sign: 1,
263
+ data: indexInDoubleFromDecomp(exponent, significand)
264
+ };
265
+ else {
266
+ const indexOpposite = indexInDoubleFromDecomp(exponent, -significand);
267
+ if (indexOpposite[1] === 4294967295) {
268
+ indexOpposite[0] += 1;
269
+ indexOpposite[1] = 0;
270
+ } else indexOpposite[1] += 1;
271
+ return {
272
+ sign: -1,
273
+ data: indexOpposite
274
+ };
275
+ }
384
276
  }
385
277
  /**
386
- * Compute the 64-bit floating point number corresponding to the provided indexes
387
- *
388
- * @param n - index of the double
389
- *
390
- * @internal
391
- */
278
+ * Compute the 64-bit floating point number corresponding to the provided indexes
279
+ *
280
+ * @param n - index of the double
281
+ *
282
+ * @internal
283
+ */
392
284
  function indexToDouble(index) {
393
- if (index.sign === -1) {
394
- const indexOpposite = {
395
- sign: 1,
396
- data: [index.data[0], index.data[1]]
397
- };
398
- if (indexOpposite.data[1] === 0) {
399
- indexOpposite.data[0] -= 1;
400
- indexOpposite.data[1] = 0xffffffff;
401
- } else {
402
- indexOpposite.data[1] -= 1;
403
- }
404
- return -indexToDouble(indexOpposite); // -indexToDouble(-index - 1);
405
- }
406
- if (isEqual64(index, INDEX_POSITIVE_INFINITY)) {
407
- return Number.POSITIVE_INFINITY;
408
- }
409
- if (index.data[0] < 0x200000) {
410
- // if: index < 2 ** 53 <--> index[0] < 2 ** (53-32) = 0x20_0000
411
- // The first 2**53 elements correspond to values having
412
- // exponent = -1022 and significand = index * Number.EPSILON
413
- // double value = index * 2 ** -1022 * Number.EPSILON
414
- // = index * 2 ** -1022 * 2 ** -52
415
- // = index * 2 ** -1074
416
- return (index.data[0] * 0x100000000 + index.data[1]) * 2 ** -1074;
417
- }
418
- const postIndexHigh = index.data[0] - 0x200000; // postIndex = index - 2 ** 53
419
- // exponent = -1021 + Math.floor(postIndex / 2**52)
420
- // = -1021 + Math.floor(postIndexHigh / 2**(52-32))
421
- // = -1021 + Math.floor(postIndexHigh / 2**20)
422
- // = -1021 + (postIndexHigh >> 20)
423
- const exponent = -1021 + (postIndexHigh >> 20);
424
- // significand = 1 + (postIndex % 2**52) / 2**52
425
- // = 1 + ((postIndexHigh * 2**32 + postIndexLow) % 2**52) / 2**52
426
- // = 1 + ((postIndexHigh % 2**20) * 2**32 + postIndexLow) / 2**52
427
- // = 1 + ((postIndexHigh & 0xfffff) * 2**32 + postIndexLow) / 2**52
428
- // = 1 + ((postIndexHigh & 0xfffff) * 2**32 + postIndexLow) * Number.EPSILON
429
- const significand = 1 + ((postIndexHigh & 0xfffff) * 2 ** 32 + index.data[1]) * Number.EPSILON;
430
- return significand * 2 ** exponent;
285
+ if (index.sign === -1) {
286
+ const indexOpposite = {
287
+ sign: 1,
288
+ data: [index.data[0], index.data[1]]
289
+ };
290
+ if (indexOpposite.data[1] === 0) {
291
+ indexOpposite.data[0] -= 1;
292
+ indexOpposite.data[1] = 4294967295;
293
+ } else indexOpposite.data[1] -= 1;
294
+ return -indexToDouble(indexOpposite);
295
+ }
296
+ if (isEqual64(index, INDEX_POSITIVE_INFINITY)) return Number.POSITIVE_INFINITY;
297
+ if (index.data[0] < 2097152) return (index.data[0] * 4294967296 + index.data[1]) * 2 ** -1074;
298
+ const postIndexHigh = index.data[0] - 2097152;
299
+ const exponent = -1021 + (postIndexHigh >> 20);
300
+ return (1 + ((postIndexHigh & 1048575) * 2 ** 32 + index.data[1]) * Number.EPSILON) * 2 ** exponent;
431
301
  }
432
302
  /**
433
- * Same as {@link doubleToIndex} except it throws in case of invalid double
434
- *
435
- * @internal
436
- */
303
+ * Same as {@link doubleToIndex} except it throws in case of invalid double
304
+ *
305
+ * @internal
306
+ */
437
307
  function safeDoubleToIndex(d, label) {
438
- if (Number.isNaN(d)) {
439
- // Number.NaN does not have any associated index in the current implementation
440
- return tsplus_module_1.haltNow(new Error("fc.doubleNext constraints." + label + " must be a 32-bit float"), fileName_1 + ":403:22");
441
- }
442
- return tsplus_module_1.succeedNow(doubleToIndex(d), fileName_1 + ":405:23");
308
+ if (Number.isNaN(d)) return _fncts_io_IO_api.haltNow(/* @__PURE__ */ new Error("fc.doubleNext constraints." + label + " must be a 32-bit float"), fileName_1 + ":403:22");
309
+ return _fncts_io_IO_api.succeedNow(doubleToIndex(d), fileName_1 + ":405:23");
443
310
  }
444
- const EPSILON = /*#__PURE__*/Math.pow(2, -52);
445
- const MAX_VALUE = (2 - EPSILON) * /*#__PURE__*/Math.pow(2, 1023);
446
- const MIN_VALUE = /*#__PURE__*/Math.pow(2, -1022);
311
+ const EPSILON = Math.pow(2, -52);
312
+ const MAX_VALUE = (2 - EPSILON) * Math.pow(2, 1023);
313
+ const MIN_VALUE = Math.pow(2, -1022);
447
314
  function nextUp(x) {
448
- if (x !== x) {
449
- return x;
450
- }
451
- if (x === -1 / 0) {
452
- return -MAX_VALUE;
453
- }
454
- if (x === +1 / 0) {
455
- return +1 / 0;
456
- }
457
- if (x === +MAX_VALUE) {
458
- return +1 / 0;
459
- }
460
- let y = x * (x < 0 ? 1 - EPSILON / 2 : 1 + EPSILON);
461
- if (y === x) {
462
- y = MIN_VALUE * EPSILON > 0 ? x + MIN_VALUE * EPSILON : x + MIN_VALUE;
463
- }
464
- if (y === +1 / 0) {
465
- y = +MAX_VALUE;
466
- }
467
- const b = x + (y - x) / 2;
468
- if (x < b && b < y) {
469
- y = b;
470
- }
471
- const c = (y + x) / 2;
472
- if (x < c && c < y) {
473
- y = c;
474
- }
475
- return y === 0 ? -0 : y;
315
+ if (x !== x) return x;
316
+ if (x === -Infinity) return -MAX_VALUE;
317
+ if (x === Infinity) return Infinity;
318
+ if (x === +MAX_VALUE) return Infinity;
319
+ let y = x * (x < 0 ? 1 - EPSILON / 2 : 1 + EPSILON);
320
+ if (y === x) y = MIN_VALUE * EPSILON > 0 ? x + MIN_VALUE * EPSILON : x + MIN_VALUE;
321
+ if (y === Infinity) y = +MAX_VALUE;
322
+ const b = x + (y - x) / 2;
323
+ if (x < b && b < y) y = b;
324
+ const c = (y + x) / 2;
325
+ if (x < c && c < y) y = c;
326
+ return y === 0 ? -0 : y;
476
327
  }
477
328
  function nextAfter(x, y) {
478
- return y < x ? -nextUp(-x) : y > x ? nextUp(x) : x !== x ? x : y;
329
+ return y < x ? -nextUp(-x) : y > x ? nextUp(x) : x !== x ? x : y;
479
330
  }
480
331
  function computeBiasedRanges(min, max, biasedRanges) {
481
- if (biasedRanges != null) {
482
- return biasedRanges;
483
- }
484
- if (isEqual64(min, max)) {
485
- return [{
486
- min,
487
- max
488
- }];
489
- }
490
- const minStrictlySmallerThanZero = isStrictlyNegative64(min);
491
- const maxStrictlyGreaterThanZero = isStrictlyPositive64(max);
492
- if (minStrictlySmallerThanZero && maxStrictlyGreaterThanZero) {
493
- const logMin = logLike64(min);
494
- const logMax = logLike64(max);
495
- return [{
496
- min: logMin,
497
- max: logMax
498
- }, {
499
- min: substract64(max, logMax),
500
- max
501
- }, {
502
- min,
503
- max: substract64(min, logMin)
504
- }];
505
- } else {
506
- const logGap = logLike64(substract64(max, min));
507
- const closeToMin = {
508
- min,
509
- max: add64(min, logGap)
510
- };
511
- const closeToMax = {
512
- min: substract64(max, logGap),
513
- max
514
- };
515
- return minStrictlySmallerThanZero ? [closeToMax, closeToMin] : [closeToMin, closeToMax];
516
- }
332
+ if (biasedRanges != null) return biasedRanges;
333
+ if (isEqual64(min, max)) return [{
334
+ min,
335
+ max
336
+ }];
337
+ const minStrictlySmallerThanZero = isStrictlyNegative64(min);
338
+ const maxStrictlyGreaterThanZero = isStrictlyPositive64(max);
339
+ if (minStrictlySmallerThanZero && maxStrictlyGreaterThanZero) {
340
+ const logMin = logLike64(min);
341
+ const logMax = logLike64(max);
342
+ return [
343
+ {
344
+ min: logMin,
345
+ max: logMax
346
+ },
347
+ {
348
+ min: substract64(max, logMax),
349
+ max
350
+ },
351
+ {
352
+ min,
353
+ max: substract64(min, logMin)
354
+ }
355
+ ];
356
+ } else {
357
+ const logGap = logLike64(substract64(max, min));
358
+ const closeToMin = {
359
+ min,
360
+ max: add64(min, logGap)
361
+ };
362
+ const closeToMax = {
363
+ min: substract64(max, logGap),
364
+ max
365
+ };
366
+ return minStrictlySmallerThanZero ? [closeToMax, closeToMin] : [closeToMin, closeToMax];
367
+ }
517
368
  }
518
369
  function computeArrayInt64GenerateRange(min, max, biasFactor, biasedRanges) {
519
- return tsplus_module_1.gen(function* (_) {
520
- if (biasFactor === undefined || (yield* _(tsplus_module_2.nextIntBetween(1, biasFactor, fileName_1 + ":497:68"), fileName_1 + ":497:46")) !== 1) {
521
- return {
522
- min,
523
- max
524
- };
525
- }
526
- const ranges = computeBiasedRanges(min, max, biasedRanges);
527
- if (ranges.length === 1) {
528
- return ranges[0];
529
- }
530
- const id = yield* _(tsplus_module_2.nextIntBetween(-2 * (ranges.length - 1), ranges.length - 2, fileName_1 + ":504:46"), fileName_1 + ":504:24");
531
- return id < 0 ? ranges[0] : ranges[id + 1];
532
- }, fileName_1 + ":496:16");
370
+ return _fncts_io_IO_api.gen(function* (_) {
371
+ if (biasFactor === void 0 || (yield* _(_fncts_io_Random_api.nextIntBetween(1, biasFactor, fileName_1 + ":497:68"), fileName_1 + ":497:46")) !== 1) return {
372
+ min,
373
+ max
374
+ };
375
+ const ranges = computeBiasedRanges(min, max, biasedRanges);
376
+ if (ranges.length === 1) return ranges[0];
377
+ const id = yield* _(_fncts_io_Random_api.nextIntBetween(-2 * (ranges.length - 1), ranges.length - 2, fileName_1 + ":504:46"), fileName_1 + ":504:24");
378
+ return id < 0 ? ranges[0] : ranges[id + 1];
379
+ }, fileName_1 + ":496:16");
533
380
  }
534
381
  function clamp(n, min, max) {
535
- return n < min ? min : n > max ? max : n;
382
+ return n < min ? min : n > max ? max : n;
536
383
  }
384
+ //#endregion
385
+ exports.EPSILON_32 = EPSILON_32;
386
+ exports.MAX_VALUE_32 = MAX_VALUE_32;
387
+ exports.MIN_VALUE_32 = MIN_VALUE_32;
388
+ exports.Unit64 = Unit64;
389
+ exports.Zero64 = Zero64;
390
+ exports.add64 = add64;
391
+ exports.clamp = clamp;
392
+ exports.clone64 = clone64;
393
+ exports.computeArrayInt64GenerateRange = computeArrayInt64GenerateRange;
394
+ exports.computeBiasedRanges = computeBiasedRanges;
395
+ exports.decomposeDouble = decomposeDouble;
396
+ exports.decomposeFloat = decomposeFloat;
397
+ exports.doubleToIndex = doubleToIndex;
398
+ exports.floatToIndex = floatToIndex;
399
+ exports.halve64 = halve64;
400
+ exports.indexInFloatFromDecomp = indexInFloatFromDecomp;
401
+ exports.indexToDouble = indexToDouble;
402
+ exports.indexToFloat = indexToFloat;
403
+ exports.isEqual64 = isEqual64;
404
+ exports.isStrictlyNegative64 = isStrictlyNegative64;
405
+ exports.isStrictlyPositive64 = isStrictlyPositive64;
406
+ exports.isStrictlySmaller64 = isStrictlySmaller64;
407
+ exports.isZero64 = isZero64;
408
+ exports.logLike64 = logLike64;
409
+ exports.negative64 = negative64;
410
+ exports.nextAfter = nextAfter;
411
+ exports.nextUp = nextUp;
412
+ exports.safeDoubleToIndex = safeDoubleToIndex;
413
+ exports.safeFloatToIndex = safeFloatToIndex;
414
+ exports.substract64 = substract64;
415
+
537
416
  //# sourceMappingURL=math.cjs.map