@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.
- package/LICENSE +26 -0
- package/_cjs/Fragment.cjs +424 -0
- package/_cjs/Fragment.cjs.map +1 -0
- package/_cjs/api.cjs +97 -83
- package/_cjs/api.cjs.map +1 -1
- package/_cjs/chunk.cjs +28 -0
- package/_cjs/control/AbstractRunnableSpec.cjs +83 -86
- package/_cjs/control/AbstractRunnableSpec.cjs.map +1 -1
- package/_cjs/control/Annotations/api.cjs +25 -24
- package/_cjs/control/Annotations/api.cjs.map +1 -1
- package/_cjs/control/Annotations/definition.cjs +20 -23
- package/_cjs/control/Annotations/definition.cjs.map +1 -1
- package/_cjs/control/Annotations/live.cjs +50 -39
- package/_cjs/control/Annotations/live.cjs.map +1 -1
- package/_cjs/control/Annotations.cjs +13 -39
- package/_cjs/control/Assertion/api.cjs +170 -156
- package/_cjs/control/Assertion/api.cjs.map +1 -1
- package/_cjs/control/Assertion/definition.cjs +21 -19
- package/_cjs/control/Assertion/definition.cjs.map +1 -1
- package/_cjs/control/Assertion.cjs +39 -28
- package/_cjs/control/AssertionIO/api.cjs +33 -31
- package/_cjs/control/AssertionIO/api.cjs.map +1 -1
- package/_cjs/control/AssertionIO/definition.cjs +27 -27
- package/_cjs/control/AssertionIO/definition.cjs.map +1 -1
- package/_cjs/control/AssertionIO.cjs +9 -28
- package/_cjs/control/DefaultRunnableSpec.cjs +14 -18
- package/_cjs/control/DefaultRunnableSpec.cjs.map +1 -1
- package/_cjs/control/DefaultTestReporter/definition.cjs +5 -6
- package/_cjs/control/DefaultTestReporter/definition.cjs.map +1 -1
- package/_cjs/control/DefaultTestReporter/render.cjs +184 -176
- package/_cjs/control/DefaultTestReporter/render.cjs.map +1 -1
- package/_cjs/control/DefaultTestReporter.cjs +10 -28
- package/_cjs/control/FreeBooleanAlgebraIO/api.cjs +47 -46
- package/_cjs/control/FreeBooleanAlgebraIO/api.cjs.map +1 -1
- package/_cjs/control/FreeBooleanAlgebraIO/definition.cjs +5 -6
- package/_cjs/control/FreeBooleanAlgebraIO/definition.cjs.map +1 -1
- package/_cjs/control/FreeBooleanAlgebraIO.cjs +12 -28
- package/_cjs/control/Gen/api.cjs +653 -614
- package/_cjs/control/Gen/api.cjs.map +1 -1
- package/_cjs/control/Gen/constraints.cjs +0 -2
- package/_cjs/control/Gen/definition.cjs +13 -14
- package/_cjs/control/Gen/definition.cjs.map +1 -1
- package/_cjs/control/Gen.cjs +84 -39
- package/_cjs/control/Live/definition.cjs +43 -38
- package/_cjs/control/Live/definition.cjs.map +1 -1
- package/_cjs/control/Live.cjs +6 -17
- package/_cjs/control/Sample/api.cjs +143 -145
- package/_cjs/control/Sample/api.cjs.map +1 -1
- package/_cjs/control/Sample/definition.cjs +15 -15
- package/_cjs/control/Sample/definition.cjs.map +1 -1
- package/_cjs/control/Sample.cjs +18 -28
- package/_cjs/control/Sized/api.cjs +17 -16
- package/_cjs/control/Sized/api.cjs.map +1 -1
- package/_cjs/control/Sized/definition.cjs +15 -15
- package/_cjs/control/Sized/definition.cjs.map +1 -1
- package/_cjs/control/Sized/live.cjs +25 -24
- package/_cjs/control/Sized/live.cjs.map +1 -1
- package/_cjs/control/Sized.cjs +9 -39
- package/_cjs/control/Spec/api.cjs +288 -385
- package/_cjs/control/Spec/api.cjs.map +1 -1
- package/_cjs/control/Spec/definition.cjs +86 -72
- package/_cjs/control/Spec/definition.cjs.map +1 -1
- package/_cjs/control/Spec.cjs +38 -28
- package/_cjs/control/SummaryBuilder.cjs +48 -56
- package/_cjs/control/SummaryBuilder.cjs.map +1 -1
- package/_cjs/control/Test.cjs +21 -17
- package/_cjs/control/Test.cjs.map +1 -1
- package/_cjs/control/TestAnnotationRenderer/api.cjs +63 -57
- package/_cjs/control/TestAnnotationRenderer/api.cjs.map +1 -1
- package/_cjs/control/TestAnnotationRenderer/definition.cjs +36 -31
- package/_cjs/control/TestAnnotationRenderer/definition.cjs.map +1 -1
- package/_cjs/control/TestAnnotationRenderer.cjs +14 -28
- package/_cjs/control/TestAspect/api.cjs +81 -80
- package/_cjs/control/TestAspect/api.cjs.map +1 -1
- package/_cjs/control/TestAspect/definition.cjs +0 -2
- package/_cjs/control/TestAspect.cjs +14 -28
- package/_cjs/control/TestClock/api.cjs +44 -32
- package/_cjs/control/TestClock/api.cjs.map +1 -1
- package/_cjs/control/TestClock/definition.cjs +175 -156
- package/_cjs/control/TestClock/definition.cjs.map +1 -1
- package/_cjs/control/TestClock.cjs +13 -28
- package/_cjs/control/TestConsole/api.cjs +45 -34
- package/_cjs/control/TestConsole/api.cjs.map +1 -1
- package/_cjs/control/TestConsole/definition.cjs +76 -68
- package/_cjs/control/TestConsole/definition.cjs.map +1 -1
- package/_cjs/control/TestConsole.cjs +8 -28
- package/_cjs/control/TestEnvironment.cjs +31 -23
- package/_cjs/control/TestEnvironment.cjs.map +1 -1
- package/_cjs/control/TestLogger.cjs +36 -31
- package/_cjs/control/TestLogger.cjs.map +1 -1
- package/_cjs/control/TestRandom/api.cjs +67 -58
- package/_cjs/control/TestRandom/api.cjs.map +1 -1
- package/_cjs/control/TestRandom/definition.cjs +332 -343
- package/_cjs/control/TestRandom/definition.cjs.map +1 -1
- package/_cjs/control/TestRandom.cjs +20 -28
- package/_cjs/control/TestRenderer/ConsoleRenderer.cjs +78 -82
- package/_cjs/control/TestRenderer/ConsoleRenderer.cjs.map +1 -1
- package/_cjs/control/TestRenderer/definition.cjs +0 -2
- package/_cjs/control.cjs +0 -2
- package/_cjs/data/AssertionData.cjs +35 -31
- package/_cjs/data/AssertionData.cjs.map +1 -1
- package/_cjs/data/AssertionResult.cjs +23 -21
- package/_cjs/data/AssertionResult.cjs.map +1 -1
- package/_cjs/data/AssertionValue/api.cjs +39 -40
- package/_cjs/data/AssertionValue/api.cjs.map +1 -1
- package/_cjs/data/AssertionValue/definition.cjs +27 -24
- package/_cjs/data/AssertionValue/definition.cjs.map +1 -1
- package/_cjs/data/AssertionValue.cjs +10 -28
- package/_cjs/data/ExecutedSpec/api.cjs +71 -90
- package/_cjs/data/ExecutedSpec/api.cjs.map +1 -1
- package/_cjs/data/ExecutedSpec/definition.cjs +39 -35
- package/_cjs/data/ExecutedSpec/definition.cjs.map +1 -1
- package/_cjs/data/ExecutedSpec.cjs +15 -28
- package/_cjs/data/ExecutionResult.cjs +78 -97
- package/_cjs/data/ExecutionResult.cjs.map +1 -1
- package/_cjs/data/FailureDetails.cjs +12 -12
- package/_cjs/data/FailureDetails.cjs.map +1 -1
- package/_cjs/data/FreeBooleanAlgebra/api.cjs +129 -127
- package/_cjs/data/FreeBooleanAlgebra/api.cjs.map +1 -1
- package/_cjs/data/FreeBooleanAlgebra/definition.cjs +40 -35
- package/_cjs/data/FreeBooleanAlgebra/definition.cjs.map +1 -1
- package/_cjs/data/FreeBooleanAlgebra.cjs +22 -28
- package/_cjs/data/GenFailureDetails.cjs +14 -13
- package/_cjs/data/GenFailureDetails.cjs.map +1 -1
- package/_cjs/data/LogLine/Fragment.cjs +10 -71
- package/_cjs/data/LogLine/Line.cjs +13 -110
- package/_cjs/data/LogLine/Message.cjs +13 -114
- package/_cjs/data/LogLine/Style.cjs +56 -65
- package/_cjs/data/LogLine/Style.cjs.map +1 -1
- package/_cjs/data/LogLine/api.cjs +30 -29
- package/_cjs/data/LogLine/api.cjs.map +1 -1
- package/_cjs/data/LogLine.cjs +24 -28
- package/_cjs/data/Render/api.cjs +13 -14
- package/_cjs/data/Render/api.cjs.map +1 -1
- package/_cjs/data/Render/definition.cjs +37 -31
- package/_cjs/data/Render/definition.cjs.map +1 -1
- package/_cjs/data/Render.cjs +8 -28
- package/_cjs/data/RenderParam/api.cjs +18 -22
- package/_cjs/data/RenderParam/api.cjs.map +1 -1
- package/_cjs/data/RenderParam/definition.cjs +20 -19
- package/_cjs/data/RenderParam/definition.cjs.map +1 -1
- package/_cjs/data/RenderParam.cjs +8 -28
- package/_cjs/data/Summary.cjs +19 -15
- package/_cjs/data/Summary.cjs.map +1 -1
- package/_cjs/data/TestAnnotation/api.cjs +55 -40
- package/_cjs/data/TestAnnotation/api.cjs.map +1 -1
- package/_cjs/data/TestAnnotation/definition.cjs +44 -36
- package/_cjs/data/TestAnnotation/definition.cjs.map +1 -1
- package/_cjs/data/TestAnnotation.cjs +19 -28
- package/_cjs/data/TestAnnotationMap.cjs +36 -33
- package/_cjs/data/TestAnnotationMap.cjs.map +1 -1
- package/_cjs/data/TestArgs/definition.cjs +14 -13
- package/_cjs/data/TestArgs/definition.cjs.map +1 -1
- package/_cjs/data/TestArgs.cjs +3 -17
- package/_cjs/data/TestConfig.cjs +46 -44
- package/_cjs/data/TestConfig.cjs.map +1 -1
- package/_cjs/data/TestFailure.cjs +41 -39
- package/_cjs/data/TestFailure.cjs.map +1 -1
- package/_cjs/data/TestSuccess.cjs +26 -27
- package/_cjs/data/TestSuccess.cjs.map +1 -1
- package/_cjs/data/TestTimeoutException.cjs +9 -11
- package/_cjs/data/TestTimeoutException.cjs.map +1 -1
- package/_cjs/data.cjs +0 -2
- package/_cjs/global.cjs +0 -2
- package/_cjs/index.cjs +0 -2
- package/_cjs/util/math.cjs +319 -440
- package/_cjs/util/math.cjs.map +1 -1
- package/_cjs/util.cjs +0 -2
- package/_cjs/vitest.cjs +115 -104
- package/_cjs/vitest.cjs.map +1 -1
- package/_mjs/Fragment.mjs +237 -0
- package/_mjs/Fragment.mjs.map +1 -0
- package/_mjs/api.mjs +67 -64
- package/_mjs/api.mjs.map +1 -1
- package/_mjs/control/AbstractRunnableSpec.mjs +53 -70
- package/_mjs/control/AbstractRunnableSpec.mjs.map +1 -1
- package/_mjs/control/Annotations/api.mjs +21 -17
- package/_mjs/control/Annotations/api.mjs.map +1 -1
- package/_mjs/control/Annotations/definition.mjs +14 -14
- package/_mjs/control/Annotations/definition.mjs.map +1 -1
- package/_mjs/control/Annotations/live.mjs +32 -27
- package/_mjs/control/Annotations/live.mjs.map +1 -1
- package/_mjs/control/Annotations.mjs +4 -5
- package/_mjs/control/Assertion/api.mjs +140 -142
- package/_mjs/control/Assertion/api.mjs.map +1 -1
- package/_mjs/control/Assertion/definition.mjs +19 -12
- package/_mjs/control/Assertion/definition.mjs.map +1 -1
- package/_mjs/control/Assertion.mjs +3 -4
- package/_mjs/control/AssertionIO/api.mjs +26 -22
- package/_mjs/control/AssertionIO/api.mjs.map +1 -1
- package/_mjs/control/AssertionIO/definition.mjs +22 -18
- package/_mjs/control/AssertionIO/definition.mjs.map +1 -1
- package/_mjs/control/AssertionIO.mjs +3 -4
- package/_mjs/control/DefaultRunnableSpec.mjs +9 -8
- package/_mjs/control/DefaultRunnableSpec.mjs.map +1 -1
- package/_mjs/control/DefaultTestReporter/definition.mjs +5 -1
- package/_mjs/control/DefaultTestReporter/definition.mjs.map +1 -1
- package/_mjs/control/DefaultTestReporter/render.mjs +152 -165
- package/_mjs/control/DefaultTestReporter/render.mjs.map +1 -1
- package/_mjs/control/DefaultTestReporter.mjs +3 -4
- package/_mjs/control/FreeBooleanAlgebraIO/api.mjs +43 -39
- package/_mjs/control/FreeBooleanAlgebraIO/api.mjs.map +1 -1
- package/_mjs/control/FreeBooleanAlgebraIO/definition.mjs +5 -1
- package/_mjs/control/FreeBooleanAlgebraIO/definition.mjs.map +1 -1
- package/_mjs/control/FreeBooleanAlgebraIO.mjs +3 -4
- package/_mjs/control/Gen/api.mjs +570 -591
- package/_mjs/control/Gen/api.mjs.map +1 -1
- package/_mjs/control/Gen/constraints.mjs +0 -2
- package/_mjs/control/Gen/definition.mjs +13 -8
- package/_mjs/control/Gen/definition.mjs.map +1 -1
- package/_mjs/control/Gen.mjs +4 -5
- package/_mjs/control/Live/definition.mjs +31 -27
- package/_mjs/control/Live/definition.mjs.map +1 -1
- package/_mjs/control/Live.mjs +2 -3
- package/_mjs/control/Sample/api.mjs +109 -126
- package/_mjs/control/Sample/api.mjs.map +1 -1
- package/_mjs/control/Sample/definition.mjs +15 -9
- package/_mjs/control/Sample/definition.mjs.map +1 -1
- package/_mjs/control/Sample.mjs +3 -4
- package/_mjs/control/Sized/api.mjs +13 -9
- package/_mjs/control/Sized/api.mjs.map +1 -1
- package/_mjs/control/Sized/definition.mjs +11 -7
- package/_mjs/control/Sized/definition.mjs.map +1 -1
- package/_mjs/control/Sized/live.mjs +18 -17
- package/_mjs/control/Sized/live.mjs.map +1 -1
- package/_mjs/control/Sized.mjs +4 -5
- package/_mjs/control/Spec/api.mjs +245 -366
- package/_mjs/control/Spec/api.mjs.map +1 -1
- package/_mjs/control/Spec/definition.mjs +79 -60
- package/_mjs/control/Spec/definition.mjs.map +1 -1
- package/_mjs/control/Spec.mjs +3 -4
- package/_mjs/control/SummaryBuilder.mjs +31 -41
- package/_mjs/control/SummaryBuilder.mjs.map +1 -1
- package/_mjs/control/Test.mjs +13 -9
- package/_mjs/control/Test.mjs.map +1 -1
- package/_mjs/control/TestAnnotationRenderer/api.mjs +53 -55
- package/_mjs/control/TestAnnotationRenderer/api.mjs.map +1 -1
- package/_mjs/control/TestAnnotationRenderer/definition.mjs +25 -19
- package/_mjs/control/TestAnnotationRenderer/definition.mjs.map +1 -1
- package/_mjs/control/TestAnnotationRenderer.mjs +3 -4
- package/_mjs/control/TestAspect/api.mjs +49 -63
- package/_mjs/control/TestAspect/api.mjs.map +1 -1
- package/_mjs/control/TestAspect/definition.mjs +0 -2
- package/_mjs/control/TestAspect.mjs +3 -4
- package/_mjs/control/TestClock/api.mjs +24 -20
- package/_mjs/control/TestClock/api.mjs.map +1 -1
- package/_mjs/control/TestClock/definition.mjs +128 -133
- package/_mjs/control/TestClock/definition.mjs.map +1 -1
- package/_mjs/control/TestClock.mjs +3 -4
- package/_mjs/control/TestConsole/api.mjs +27 -24
- package/_mjs/control/TestConsole/api.mjs.map +1 -1
- package/_mjs/control/TestConsole/definition.mjs +62 -57
- package/_mjs/control/TestConsole/definition.mjs.map +1 -1
- package/_mjs/control/TestConsole.mjs +3 -4
- package/_mjs/control/TestEnvironment.mjs +14 -10
- package/_mjs/control/TestEnvironment.mjs.map +1 -1
- package/_mjs/control/TestLogger.mjs +25 -21
- package/_mjs/control/TestLogger.mjs.map +1 -1
- package/_mjs/control/TestRandom/api.mjs +46 -43
- package/_mjs/control/TestRandom/api.mjs.map +1 -1
- package/_mjs/control/TestRandom/definition.mjs +311 -327
- package/_mjs/control/TestRandom/definition.mjs.map +1 -1
- package/_mjs/control/TestRandom.mjs +3 -4
- package/_mjs/control/TestRenderer/ConsoleRenderer.mjs +66 -72
- package/_mjs/control/TestRenderer/ConsoleRenderer.mjs.map +1 -1
- package/_mjs/control/TestRenderer/definition.mjs +0 -2
- package/_mjs/control.mjs +0 -2
- package/_mjs/data/AssertionData.mjs +27 -22
- package/_mjs/data/AssertionData.mjs.map +1 -1
- package/_mjs/data/AssertionResult.mjs +18 -12
- package/_mjs/data/AssertionResult.mjs.map +1 -1
- package/_mjs/data/AssertionValue/api.mjs +34 -32
- package/_mjs/data/AssertionValue/api.mjs.map +1 -1
- package/_mjs/data/AssertionValue/definition.mjs +24 -17
- package/_mjs/data/AssertionValue/definition.mjs.map +1 -1
- package/_mjs/data/AssertionValue.mjs +3 -4
- package/_mjs/data/ExecutedSpec/api.mjs +64 -80
- package/_mjs/data/ExecutedSpec/api.mjs.map +1 -1
- package/_mjs/data/ExecutedSpec/definition.mjs +38 -28
- package/_mjs/data/ExecutedSpec/definition.mjs.map +1 -1
- package/_mjs/data/ExecutedSpec.mjs +3 -4
- package/_mjs/data/ExecutionResult.mjs +63 -85
- package/_mjs/data/ExecutionResult.mjs.map +1 -1
- package/_mjs/data/FailureDetails.mjs +12 -6
- package/_mjs/data/FailureDetails.mjs.map +1 -1
- package/_mjs/data/FreeBooleanAlgebra/api.mjs +107 -111
- package/_mjs/data/FreeBooleanAlgebra/api.mjs.map +1 -1
- package/_mjs/data/FreeBooleanAlgebra/definition.mjs +37 -27
- package/_mjs/data/FreeBooleanAlgebra/definition.mjs.map +1 -1
- package/_mjs/data/FreeBooleanAlgebra.mjs +3 -4
- package/_mjs/data/GenFailureDetails.mjs +14 -7
- package/_mjs/data/GenFailureDetails.mjs.map +1 -1
- package/_mjs/data/LogLine/Fragment.mjs +2 -56
- package/_mjs/data/LogLine/Line.mjs +2 -92
- package/_mjs/data/LogLine/Message.mjs +2 -98
- package/_mjs/data/LogLine/Style.mjs +56 -66
- package/_mjs/data/LogLine/Style.mjs.map +1 -1
- package/_mjs/data/LogLine/api.mjs +24 -20
- package/_mjs/data/LogLine/api.mjs.map +1 -1
- package/_mjs/data/LogLine.mjs +3 -3
- package/_mjs/data/Render/api.mjs +12 -8
- package/_mjs/data/Render/api.mjs.map +1 -1
- package/_mjs/data/Render/definition.mjs +31 -22
- package/_mjs/data/Render/definition.mjs.map +1 -1
- package/_mjs/data/Render.mjs +3 -4
- package/_mjs/data/RenderParam/api.mjs +15 -15
- package/_mjs/data/RenderParam/api.mjs.map +1 -1
- package/_mjs/data/RenderParam/definition.mjs +19 -13
- package/_mjs/data/RenderParam/definition.mjs.map +1 -1
- package/_mjs/data/RenderParam.mjs +3 -4
- package/_mjs/data/Summary.mjs +19 -9
- package/_mjs/data/Summary.mjs.map +1 -1
- package/_mjs/data/TestAnnotation/api.mjs +34 -30
- package/_mjs/data/TestAnnotation/api.mjs.map +1 -1
- package/_mjs/data/TestAnnotation/definition.mjs +31 -24
- package/_mjs/data/TestAnnotation/definition.mjs.map +1 -1
- package/_mjs/data/TestAnnotation.mjs +3 -4
- package/_mjs/data/TestAnnotationMap.mjs +28 -23
- package/_mjs/data/TestAnnotationMap.mjs.map +1 -1
- package/_mjs/data/TestArgs/definition.mjs +14 -7
- package/_mjs/data/TestArgs/definition.mjs.map +1 -1
- package/_mjs/data/TestArgs.mjs +2 -3
- package/_mjs/data/TestConfig.mjs +34 -33
- package/_mjs/data/TestConfig.mjs.map +1 -1
- package/_mjs/data/TestFailure.mjs +35 -29
- package/_mjs/data/TestFailure.mjs.map +1 -1
- package/_mjs/data/TestSuccess.mjs +22 -19
- package/_mjs/data/TestSuccess.mjs.map +1 -1
- package/_mjs/data/TestTimeoutException.mjs +9 -5
- package/_mjs/data/TestTimeoutException.mjs.map +1 -1
- package/_mjs/data.mjs +0 -2
- package/_mjs/global.mjs +0 -2
- package/_mjs/index.mjs +0 -2
- package/_mjs/util/math.mjs +310 -432
- package/_mjs/util/math.mjs.map +1 -1
- package/_mjs/util.mjs +0 -2
- package/_mjs/vitest.mjs +80 -80
- package/_mjs/vitest.mjs.map +1 -1
- package/_src/control/TestClock/definition.ts +26 -18
- package/_src/control/TestConsole/definition.ts +19 -9
- package/_src/control/TestRandom/definition.ts +39 -17
- package/_src/data/Summary.ts +3 -1
- package/_src/vitest.ts +1 -1
- package/control/TestClock/definition.d.ts +4 -4
- package/control/TestConsole/definition.d.ts +5 -5
- package/control/TestRandom/definition.d.ts +13 -13
- package/data/Summary.d.ts +1 -1
- package/package.json +14 -5
- package/_cjs/control/Annotations.cjs.map +0 -1
- package/_cjs/control/Assertion.cjs.map +0 -1
- package/_cjs/control/AssertionIO.cjs.map +0 -1
- package/_cjs/control/DefaultTestReporter.cjs.map +0 -1
- package/_cjs/control/FreeBooleanAlgebraIO.cjs.map +0 -1
- package/_cjs/control/Gen/constraints.cjs.map +0 -1
- package/_cjs/control/Gen.cjs.map +0 -1
- package/_cjs/control/Live.cjs.map +0 -1
- package/_cjs/control/Sample.cjs.map +0 -1
- package/_cjs/control/Sized.cjs.map +0 -1
- package/_cjs/control/Spec.cjs.map +0 -1
- package/_cjs/control/TestAnnotationRenderer.cjs.map +0 -1
- package/_cjs/control/TestAspect/definition.cjs.map +0 -1
- package/_cjs/control/TestAspect.cjs.map +0 -1
- package/_cjs/control/TestClock.cjs.map +0 -1
- package/_cjs/control/TestConsole.cjs.map +0 -1
- package/_cjs/control/TestRandom.cjs.map +0 -1
- package/_cjs/control/TestRenderer/definition.cjs.map +0 -1
- package/_cjs/control.cjs.map +0 -1
- package/_cjs/data/AssertionValue.cjs.map +0 -1
- package/_cjs/data/ExecutedSpec.cjs.map +0 -1
- package/_cjs/data/FreeBooleanAlgebra.cjs.map +0 -1
- package/_cjs/data/LogLine/Fragment.cjs.map +0 -1
- package/_cjs/data/LogLine/Line.cjs.map +0 -1
- package/_cjs/data/LogLine/Message.cjs.map +0 -1
- package/_cjs/data/LogLine.cjs.map +0 -1
- package/_cjs/data/Render.cjs.map +0 -1
- package/_cjs/data/RenderParam.cjs.map +0 -1
- package/_cjs/data/TestAnnotation.cjs.map +0 -1
- package/_cjs/data/TestArgs.cjs.map +0 -1
- package/_cjs/data.cjs.map +0 -1
- package/_cjs/global.cjs.map +0 -1
- package/_cjs/index.cjs.map +0 -1
- package/_cjs/util.cjs.map +0 -1
- package/_mjs/control/Annotations.mjs.map +0 -1
- package/_mjs/control/Assertion.mjs.map +0 -1
- package/_mjs/control/AssertionIO.mjs.map +0 -1
- package/_mjs/control/DefaultTestReporter.mjs.map +0 -1
- package/_mjs/control/FreeBooleanAlgebraIO.mjs.map +0 -1
- package/_mjs/control/Gen/constraints.mjs.map +0 -1
- package/_mjs/control/Gen.mjs.map +0 -1
- package/_mjs/control/Live.mjs.map +0 -1
- package/_mjs/control/Sample.mjs.map +0 -1
- package/_mjs/control/Sized.mjs.map +0 -1
- package/_mjs/control/Spec.mjs.map +0 -1
- package/_mjs/control/TestAnnotationRenderer.mjs.map +0 -1
- package/_mjs/control/TestAspect/definition.mjs.map +0 -1
- package/_mjs/control/TestAspect.mjs.map +0 -1
- package/_mjs/control/TestClock.mjs.map +0 -1
- package/_mjs/control/TestConsole.mjs.map +0 -1
- package/_mjs/control/TestRandom.mjs.map +0 -1
- package/_mjs/control/TestRenderer/definition.mjs.map +0 -1
- package/_mjs/control.mjs.map +0 -1
- package/_mjs/data/AssertionValue.mjs.map +0 -1
- package/_mjs/data/ExecutedSpec.mjs.map +0 -1
- package/_mjs/data/FreeBooleanAlgebra.mjs.map +0 -1
- package/_mjs/data/LogLine/Fragment.mjs.map +0 -1
- package/_mjs/data/LogLine/Line.mjs.map +0 -1
- package/_mjs/data/LogLine/Message.mjs.map +0 -1
- package/_mjs/data/LogLine.mjs.map +0 -1
- package/_mjs/data/Render.mjs.map +0 -1
- package/_mjs/data/RenderParam.mjs.map +0 -1
- package/_mjs/data/TestAnnotation.mjs.map +0 -1
- package/_mjs/data/TestArgs.mjs.map +0 -1
- package/_mjs/data.mjs.map +0 -1
- package/_mjs/global.mjs.map +0 -1
- package/_mjs/index.mjs.map +0 -1
- package/_mjs/util.mjs.map +0 -1
package/_cjs/util/math.cjs
CHANGED
|
@@ -1,537 +1,416 @@
|
|
|
1
|
-
"
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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 =
|
|
10
|
+
const MIN_VALUE_32 = 2 ** -126 * 2 ** -23;
|
|
38
11
|
/** @internal */
|
|
39
|
-
const MAX_VALUE_32 =
|
|
12
|
+
const MAX_VALUE_32 = 2 ** 127 * (1 + (2 ** 23 - 1) / 2 ** 23);
|
|
40
13
|
/** @internal */
|
|
41
|
-
const EPSILON_32 =
|
|
14
|
+
const EPSILON_32 = 2 ** -23;
|
|
42
15
|
/** @internal */
|
|
43
|
-
const INDEX_POSITIVE_INFINITY_32 = 2139095040;
|
|
16
|
+
const INDEX_POSITIVE_INFINITY_32 = 2139095040;
|
|
44
17
|
/** @internal */
|
|
45
|
-
const INDEX_NEGATIVE_INFINITY_32 = -2139095041;
|
|
18
|
+
const INDEX_NEGATIVE_INFINITY_32 = -2139095041;
|
|
46
19
|
function safeFloatToIndex(f, label) {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
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
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
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
|
-
|
|
100
|
-
|
|
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
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
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
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
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 =
|
|
141
|
-
|
|
142
|
-
|
|
70
|
+
const Zero64 = {
|
|
71
|
+
sign: 1,
|
|
72
|
+
data: [0, 0]
|
|
143
73
|
};
|
|
144
74
|
/** @internal */
|
|
145
|
-
const Unit64 =
|
|
146
|
-
|
|
147
|
-
|
|
75
|
+
const Unit64 = {
|
|
76
|
+
sign: 1,
|
|
77
|
+
data: [0, 1]
|
|
148
78
|
};
|
|
149
79
|
/** @internal */
|
|
150
80
|
function isZero64(a) {
|
|
151
|
-
|
|
81
|
+
return a.data[0] === 0 && a.data[1] === 0;
|
|
152
82
|
}
|
|
153
83
|
/** @internal */
|
|
154
84
|
function isStrictlyNegative64(a) {
|
|
155
|
-
|
|
85
|
+
return a.sign === -1 && !isZero64(a);
|
|
156
86
|
}
|
|
157
87
|
/** @internal */
|
|
158
88
|
function isStrictlyPositive64(a) {
|
|
159
|
-
|
|
89
|
+
return a.sign === 1 && !isZero64(a);
|
|
160
90
|
}
|
|
161
91
|
/** @internal */
|
|
162
92
|
function isEqual64(a, b) {
|
|
163
|
-
|
|
164
|
-
|
|
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
|
-
|
|
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
|
-
|
|
175
|
-
|
|
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
|
-
|
|
184
|
-
|
|
185
|
-
|
|
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
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
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
|
-
|
|
200
|
-
|
|
201
|
-
|
|
123
|
+
* Expects a >= b
|
|
124
|
+
* @internal
|
|
125
|
+
*/
|
|
202
126
|
function substract64Internal(a, b) {
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
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
|
-
|
|
221
|
-
|
|
222
|
-
|
|
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
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
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
|
-
|
|
234
|
-
|
|
235
|
-
|
|
153
|
+
* Negative version of an ArrayInt64
|
|
154
|
+
* @internal
|
|
155
|
+
*/
|
|
236
156
|
function negative64(arrayIntA) {
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
157
|
+
return {
|
|
158
|
+
sign: -arrayIntA.sign,
|
|
159
|
+
data: [arrayIntA.data[0], arrayIntA.data[1]]
|
|
160
|
+
};
|
|
241
161
|
}
|
|
242
162
|
/**
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
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
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
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
|
-
|
|
258
|
-
|
|
259
|
-
|
|
175
|
+
* Halve an ArrayInt64
|
|
176
|
+
* @internal
|
|
177
|
+
*/
|
|
260
178
|
function halve64(a) {
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
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
|
-
|
|
268
|
-
|
|
269
|
-
|
|
185
|
+
* Apply log2 to an ArrayInt64 (preserve sign)
|
|
186
|
+
* @internal
|
|
187
|
+
*/
|
|
270
188
|
function logLike64(a) {
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
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
|
-
|
|
280
|
-
|
|
281
|
-
};
|
|
196
|
+
sign: 1,
|
|
197
|
+
data: [2146435072, 0]
|
|
198
|
+
};
|
|
282
199
|
/** @internal */
|
|
283
200
|
const INDEX_NEGATIVE_INFINITY = {
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
};
|
|
201
|
+
sign: -1,
|
|
202
|
+
data: [2146435072, 1]
|
|
203
|
+
};
|
|
287
204
|
/**
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
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
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
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
|
-
|
|
236
|
+
return [~~(n / 4294967296), n >>> 0];
|
|
324
237
|
}
|
|
325
238
|
/** @internal */
|
|
326
239
|
function indexInDoubleFromDecomp(exponent, significand) {
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
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
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
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
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
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
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
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
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
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
|
-
|
|
434
|
-
|
|
435
|
-
|
|
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
|
-
|
|
439
|
-
|
|
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 =
|
|
445
|
-
const MAX_VALUE = (2 - EPSILON) *
|
|
446
|
-
const MIN_VALUE =
|
|
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
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
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
|
-
|
|
329
|
+
return y < x ? -nextUp(-x) : y > x ? nextUp(x) : x !== x ? x : y;
|
|
479
330
|
}
|
|
480
331
|
function computeBiasedRanges(min, max, biasedRanges) {
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
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
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
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
|
-
|
|
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
|