@nberlette/math 0.7.0
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 +20 -0
- package/README.md +889 -0
- package/cjs/abs.d.ts +14 -0
- package/cjs/abs.d.ts.map +1 -0
- package/cjs/abs.js +22 -0
- package/cjs/abs.js.map +1 -0
- package/cjs/acos.d.ts +17 -0
- package/cjs/acos.d.ts.map +1 -0
- package/cjs/acos.js +27 -0
- package/cjs/acos.js.map +1 -0
- package/cjs/acosh.d.ts +11 -0
- package/cjs/acosh.d.ts.map +1 -0
- package/cjs/acosh.js +35 -0
- package/cjs/acosh.js.map +1 -0
- package/cjs/asin.d.ts +11 -0
- package/cjs/asin.d.ts.map +1 -0
- package/cjs/asin.js +28 -0
- package/cjs/asin.js.map +1 -0
- package/cjs/asinh.d.ts +9 -0
- package/cjs/asinh.d.ts.map +1 -0
- package/cjs/asinh.js +26 -0
- package/cjs/asinh.js.map +1 -0
- package/cjs/atan.d.ts +11 -0
- package/cjs/atan.d.ts.map +1 -0
- package/cjs/atan.js +65 -0
- package/cjs/atan.js.map +1 -0
- package/cjs/atan2.d.ts +12 -0
- package/cjs/atan2.d.ts.map +1 -0
- package/cjs/atan2.js +70 -0
- package/cjs/atan2.js.map +1 -0
- package/cjs/atanh.d.ts +11 -0
- package/cjs/atanh.d.ts.map +1 -0
- package/cjs/atanh.js +32 -0
- package/cjs/atanh.js.map +1 -0
- package/cjs/cbrt.d.ts +9 -0
- package/cjs/cbrt.d.ts.map +1 -0
- package/cjs/cbrt.js +26 -0
- package/cjs/cbrt.js.map +1 -0
- package/cjs/ceil.d.ts +15 -0
- package/cjs/ceil.d.ts.map +1 -0
- package/cjs/ceil.js +34 -0
- package/cjs/ceil.js.map +1 -0
- package/cjs/clamp.d.ts +15 -0
- package/cjs/clamp.d.ts.map +1 -0
- package/cjs/clamp.js +32 -0
- package/cjs/clamp.js.map +1 -0
- package/cjs/clz32.d.ts +20 -0
- package/cjs/clz32.d.ts.map +1 -0
- package/cjs/clz32.js +48 -0
- package/cjs/clz32.js.map +1 -0
- package/cjs/constants/e.d.ts +17 -0
- package/cjs/constants/e.d.ts.map +1 -0
- package/cjs/constants/e.js +19 -0
- package/cjs/constants/e.js.map +1 -0
- package/cjs/constants/epsilon.d.ts +24 -0
- package/cjs/constants/epsilon.d.ts.map +1 -0
- package/cjs/constants/epsilon.js +26 -0
- package/cjs/constants/epsilon.js.map +1 -0
- package/cjs/constants/index.d.ts +23 -0
- package/cjs/constants/index.d.ts.map +1 -0
- package/cjs/constants/index.js +39 -0
- package/cjs/constants/index.js.map +1 -0
- package/cjs/constants/infinity.d.ts +3 -0
- package/cjs/constants/infinity.d.ts.map +1 -0
- package/cjs/constants/infinity.js +19 -0
- package/cjs/constants/infinity.js.map +1 -0
- package/cjs/constants/ln10.d.ts +10 -0
- package/cjs/constants/ln10.d.ts.map +1 -0
- package/cjs/constants/ln10.js +12 -0
- package/cjs/constants/ln10.js.map +1 -0
- package/cjs/constants/ln2.d.ts +10 -0
- package/cjs/constants/ln2.d.ts.map +1 -0
- package/cjs/constants/ln2.js +12 -0
- package/cjs/constants/ln2.js.map +1 -0
- package/cjs/constants/log10e.d.ts +10 -0
- package/cjs/constants/log10e.d.ts.map +1 -0
- package/cjs/constants/log10e.js +12 -0
- package/cjs/constants/log10e.js.map +1 -0
- package/cjs/constants/log2e.d.ts +10 -0
- package/cjs/constants/log2e.d.ts.map +1 -0
- package/cjs/constants/log2e.js +12 -0
- package/cjs/constants/log2e.js.map +1 -0
- package/cjs/constants/max_safe_integer.d.ts +11 -0
- package/cjs/constants/max_safe_integer.d.ts.map +1 -0
- package/cjs/constants/max_safe_integer.js +13 -0
- package/cjs/constants/max_safe_integer.js.map +1 -0
- package/cjs/constants/max_value.d.ts +10 -0
- package/cjs/constants/max_value.d.ts.map +1 -0
- package/cjs/constants/max_value.js +12 -0
- package/cjs/constants/max_value.js.map +1 -0
- package/cjs/constants/min_safe_integer.d.ts +12 -0
- package/cjs/constants/min_safe_integer.d.ts.map +1 -0
- package/cjs/constants/min_safe_integer.js +14 -0
- package/cjs/constants/min_safe_integer.js.map +1 -0
- package/cjs/constants/min_value.d.ts +10 -0
- package/cjs/constants/min_value.d.ts.map +1 -0
- package/cjs/constants/min_value.js +12 -0
- package/cjs/constants/min_value.js.map +1 -0
- package/cjs/constants/nan.d.ts +47 -0
- package/cjs/constants/nan.d.ts.map +1 -0
- package/cjs/constants/nan.js +30 -0
- package/cjs/constants/nan.js.map +1 -0
- package/cjs/constants/negative_infinity.d.ts +28 -0
- package/cjs/constants/negative_infinity.d.ts.map +1 -0
- package/cjs/constants/negative_infinity.js +15 -0
- package/cjs/constants/negative_infinity.js.map +1 -0
- package/cjs/constants/negative_zero.d.ts +31 -0
- package/cjs/constants/negative_zero.d.ts.map +1 -0
- package/cjs/constants/negative_zero.js +21 -0
- package/cjs/constants/negative_zero.js.map +1 -0
- package/cjs/constants/pi.d.ts +10 -0
- package/cjs/constants/pi.d.ts.map +1 -0
- package/cjs/constants/pi.js +12 -0
- package/cjs/constants/pi.js.map +1 -0
- package/cjs/constants/positive_infinity.d.ts +29 -0
- package/cjs/constants/positive_infinity.d.ts.map +1 -0
- package/cjs/constants/positive_infinity.js +16 -0
- package/cjs/constants/positive_infinity.js.map +1 -0
- package/cjs/constants/positive_zero.d.ts +38 -0
- package/cjs/constants/positive_zero.d.ts.map +1 -0
- package/cjs/constants/positive_zero.js +36 -0
- package/cjs/constants/positive_zero.js.map +1 -0
- package/cjs/constants/sqrt1_2.d.ts +9 -0
- package/cjs/constants/sqrt1_2.d.ts.map +1 -0
- package/cjs/constants/sqrt1_2.js +11 -0
- package/cjs/constants/sqrt1_2.js.map +1 -0
- package/cjs/constants/sqrt2.d.ts +9 -0
- package/cjs/constants/sqrt2.d.ts.map +1 -0
- package/cjs/constants/sqrt2.js +11 -0
- package/cjs/constants/sqrt2.js.map +1 -0
- package/cjs/cos.d.ts +10 -0
- package/cjs/cos.d.ts.map +1 -0
- package/cjs/cos.js +32 -0
- package/cjs/cos.js.map +1 -0
- package/cjs/cosh.d.ts +10 -0
- package/cjs/cosh.d.ts.map +1 -0
- package/cjs/cosh.js +21 -0
- package/cjs/cosh.js.map +1 -0
- package/cjs/exp.d.ts +20 -0
- package/cjs/exp.d.ts.map +1 -0
- package/cjs/exp.js +48 -0
- package/cjs/exp.js.map +1 -0
- package/cjs/expm1.d.ts +11 -0
- package/cjs/expm1.d.ts.map +1 -0
- package/cjs/expm1.js +38 -0
- package/cjs/expm1.js.map +1 -0
- package/cjs/f16round.d.ts +24 -0
- package/cjs/f16round.d.ts.map +1 -0
- package/cjs/f16round.js +42 -0
- package/cjs/f16round.js.map +1 -0
- package/cjs/float16/constants.d.ts +97 -0
- package/cjs/float16/constants.d.ts.map +1 -0
- package/cjs/float16/constants.js +99 -0
- package/cjs/float16/constants.js.map +1 -0
- package/cjs/float16/decode.d.ts +40 -0
- package/cjs/float16/decode.d.ts.map +1 -0
- package/cjs/float16/decode.js +67 -0
- package/cjs/float16/decode.js.map +1 -0
- package/cjs/float16/encode.d.ts +67 -0
- package/cjs/float16/encode.d.ts.map +1 -0
- package/cjs/float16/encode.js +77 -0
- package/cjs/float16/encode.js.map +1 -0
- package/cjs/float16/guards.d.ts +22 -0
- package/cjs/float16/guards.d.ts.map +1 -0
- package/cjs/float16/guards.js +15 -0
- package/cjs/float16/guards.js.map +1 -0
- package/cjs/float16/index.d.ts +11 -0
- package/cjs/float16/index.d.ts.map +1 -0
- package/cjs/float16/index.js +27 -0
- package/cjs/float16/index.js.map +1 -0
- package/cjs/float16/round.d.ts +25 -0
- package/cjs/float16/round.d.ts.map +1 -0
- package/cjs/float16/round.js +46 -0
- package/cjs/float16/round.js.map +1 -0
- package/cjs/float32/constants.d.ts +96 -0
- package/cjs/float32/constants.d.ts.map +1 -0
- package/cjs/float32/constants.js +98 -0
- package/cjs/float32/constants.js.map +1 -0
- package/cjs/float32/decode.d.ts +38 -0
- package/cjs/float32/decode.d.ts.map +1 -0
- package/cjs/float32/decode.js +70 -0
- package/cjs/float32/decode.js.map +1 -0
- package/cjs/float32/encode.d.ts +50 -0
- package/cjs/float32/encode.d.ts.map +1 -0
- package/cjs/float32/encode.js +77 -0
- package/cjs/float32/encode.js.map +1 -0
- package/cjs/float32/guards.d.ts +37 -0
- package/cjs/float32/guards.d.ts.map +1 -0
- package/cjs/float32/guards.js +20 -0
- package/cjs/float32/guards.js.map +1 -0
- package/cjs/float32/index.d.ts +11 -0
- package/cjs/float32/index.d.ts.map +1 -0
- package/cjs/float32/index.js +27 -0
- package/cjs/float32/index.js.map +1 -0
- package/cjs/float32/round.d.ts +23 -0
- package/cjs/float32/round.d.ts.map +1 -0
- package/cjs/float32/round.js +36 -0
- package/cjs/float32/round.js.map +1 -0
- package/cjs/floor.d.ts +10 -0
- package/cjs/floor.d.ts.map +1 -0
- package/cjs/floor.js +32 -0
- package/cjs/floor.js.map +1 -0
- package/cjs/fround.d.ts +23 -0
- package/cjs/fround.d.ts.map +1 -0
- package/cjs/fround.js +35 -0
- package/cjs/fround.js.map +1 -0
- package/cjs/guards/finite.d.ts +23 -0
- package/cjs/guards/finite.d.ts.map +1 -0
- package/cjs/guards/finite.js +21 -0
- package/cjs/guards/finite.js.map +1 -0
- package/cjs/guards/index.d.ts +50 -0
- package/cjs/guards/index.d.ts.map +1 -0
- package/cjs/guards/index.js +66 -0
- package/cjs/guards/index.js.map +1 -0
- package/cjs/guards/infinity.d.ts +3 -0
- package/cjs/guards/infinity.d.ts.map +1 -0
- package/cjs/guards/infinity.js +19 -0
- package/cjs/guards/infinity.js.map +1 -0
- package/cjs/guards/integer.d.ts +47 -0
- package/cjs/guards/integer.d.ts.map +1 -0
- package/cjs/guards/integer.js +23 -0
- package/cjs/guards/integer.js.map +1 -0
- package/cjs/guards/nan.d.ts +61 -0
- package/cjs/guards/nan.d.ts.map +1 -0
- package/cjs/guards/nan.js +68 -0
- package/cjs/guards/nan.js.map +1 -0
- package/cjs/guards/negative_infinity.d.ts +19 -0
- package/cjs/guards/negative_infinity.d.ts.map +1 -0
- package/cjs/guards/negative_infinity.js +25 -0
- package/cjs/guards/negative_infinity.js.map +1 -0
- package/cjs/guards/negative_zero.d.ts +12 -0
- package/cjs/guards/negative_zero.d.ts.map +1 -0
- package/cjs/guards/negative_zero.js +24 -0
- package/cjs/guards/negative_zero.js.map +1 -0
- package/cjs/guards/positive_infinity.d.ts +19 -0
- package/cjs/guards/positive_infinity.d.ts.map +1 -0
- package/cjs/guards/positive_infinity.js +25 -0
- package/cjs/guards/positive_infinity.js.map +1 -0
- package/cjs/guards/positive_zero.d.ts +17 -0
- package/cjs/guards/positive_zero.d.ts.map +1 -0
- package/cjs/guards/positive_zero.js +36 -0
- package/cjs/guards/positive_zero.js.map +1 -0
- package/cjs/guards/safe_integer.d.ts +33 -0
- package/cjs/guards/safe_integer.d.ts.map +1 -0
- package/cjs/guards/safe_integer.js +27 -0
- package/cjs/guards/safe_integer.js.map +1 -0
- package/cjs/hypot.d.ts +18 -0
- package/cjs/hypot.d.ts.map +1 -0
- package/cjs/hypot.js +63 -0
- package/cjs/hypot.js.map +1 -0
- package/cjs/ieee754.d.ts +16 -0
- package/cjs/ieee754.d.ts.map +1 -0
- package/cjs/ieee754.js +32 -0
- package/cjs/ieee754.js.map +1 -0
- package/cjs/imul.d.ts +17 -0
- package/cjs/imul.d.ts.map +1 -0
- package/cjs/imul.js +24 -0
- package/cjs/imul.js.map +1 -0
- package/cjs/index.d.ts +84 -0
- package/cjs/index.d.ts.map +1 -0
- package/cjs/index.js +113 -0
- package/cjs/index.js.map +1 -0
- package/cjs/internal/ieee754.d.ts +174 -0
- package/cjs/internal/ieee754.d.ts.map +1 -0
- package/cjs/internal/ieee754.js +200 -0
- package/cjs/internal/ieee754.js.map +1 -0
- package/cjs/internal/primordials.d.ts +30 -0
- package/cjs/internal/primordials.d.ts.map +1 -0
- package/cjs/internal/primordials.js +30 -0
- package/cjs/internal/primordials.js.map +1 -0
- package/cjs/log.d.ts +9 -0
- package/cjs/log.d.ts.map +1 -0
- package/cjs/log.js +46 -0
- package/cjs/log.js.map +1 -0
- package/cjs/log10.d.ts +9 -0
- package/cjs/log10.d.ts.map +1 -0
- package/cjs/log10.js +21 -0
- package/cjs/log10.js.map +1 -0
- package/cjs/log1p.d.ts +10 -0
- package/cjs/log1p.d.ts.map +1 -0
- package/cjs/log1p.js +32 -0
- package/cjs/log1p.js.map +1 -0
- package/cjs/log2.d.ts +12 -0
- package/cjs/log2.d.ts.map +1 -0
- package/cjs/log2.js +24 -0
- package/cjs/log2.js.map +1 -0
- package/cjs/max.d.ts +22 -0
- package/cjs/max.d.ts.map +1 -0
- package/cjs/max.js +51 -0
- package/cjs/max.js.map +1 -0
- package/cjs/min.d.ts +10 -0
- package/cjs/min.d.ts.map +1 -0
- package/cjs/min.js +36 -0
- package/cjs/min.js.map +1 -0
- package/cjs/package.json +3 -0
- package/cjs/pow.d.ts +31 -0
- package/cjs/pow.d.ts.map +1 -0
- package/cjs/pow.js +36 -0
- package/cjs/pow.js.map +1 -0
- package/cjs/random.d.ts +93 -0
- package/cjs/random.d.ts.map +1 -0
- package/cjs/random.js +242 -0
- package/cjs/random.js.map +1 -0
- package/cjs/round.d.ts +9 -0
- package/cjs/round.d.ts.map +1 -0
- package/cjs/round.js +24 -0
- package/cjs/round.js.map +1 -0
- package/cjs/sign.d.ts +17 -0
- package/cjs/sign.d.ts.map +1 -0
- package/cjs/sign.js +22 -0
- package/cjs/sign.js.map +1 -0
- package/cjs/sin.d.ts +14 -0
- package/cjs/sin.d.ts.map +1 -0
- package/cjs/sin.js +31 -0
- package/cjs/sin.js.map +1 -0
- package/cjs/sinh.d.ts +14 -0
- package/cjs/sinh.d.ts.map +1 -0
- package/cjs/sinh.js +22 -0
- package/cjs/sinh.js.map +1 -0
- package/cjs/sqrt.d.ts +19 -0
- package/cjs/sqrt.d.ts.map +1 -0
- package/cjs/sqrt.js +45 -0
- package/cjs/sqrt.js.map +1 -0
- package/cjs/tan.d.ts +9 -0
- package/cjs/tan.d.ts.map +1 -0
- package/cjs/tan.js +26 -0
- package/cjs/tan.js.map +1 -0
- package/cjs/tanh.d.ts +17 -0
- package/cjs/tanh.d.ts.map +1 -0
- package/cjs/tanh.js +34 -0
- package/cjs/tanh.js.map +1 -0
- package/cjs/trunc.d.ts +21 -0
- package/cjs/trunc.d.ts.map +1 -0
- package/cjs/trunc.js +50 -0
- package/cjs/trunc.js.map +1 -0
- package/cjs/types/finite.d.ts +16 -0
- package/cjs/types/finite.d.ts.map +1 -0
- package/cjs/types/finite.js +4 -0
- package/cjs/types/finite.js.map +1 -0
- package/cjs/types/float.d.ts +65 -0
- package/cjs/types/float.d.ts.map +1 -0
- package/cjs/types/float.js +4 -0
- package/cjs/types/float.js.map +1 -0
- package/cjs/types/index.d.ts +6 -0
- package/cjs/types/index.d.ts.map +1 -0
- package/cjs/types/index.js +22 -0
- package/cjs/types/index.js.map +1 -0
- package/cjs/types/integer.d.ts +147 -0
- package/cjs/types/integer.d.ts.map +1 -0
- package/cjs/types/integer.js +5 -0
- package/cjs/types/integer.js.map +1 -0
- package/cjs/types/precision.d.ts +46 -0
- package/cjs/types/precision.d.ts.map +1 -0
- package/cjs/types/precision.js +9 -0
- package/cjs/types/precision.js.map +1 -0
- package/cjs/types/safe_integer.d.ts +17 -0
- package/cjs/types/safe_integer.d.ts.map +1 -0
- package/cjs/types/safe_integer.js +5 -0
- package/cjs/types/safe_integer.js.map +1 -0
- package/esm/abs.d.ts +14 -0
- package/esm/abs.d.ts.map +1 -0
- package/esm/abs.js +19 -0
- package/esm/abs.js.map +1 -0
- package/esm/acos.d.ts +17 -0
- package/esm/acos.d.ts.map +1 -0
- package/esm/acos.js +24 -0
- package/esm/acos.js.map +1 -0
- package/esm/acosh.d.ts +11 -0
- package/esm/acosh.d.ts.map +1 -0
- package/esm/acosh.js +32 -0
- package/esm/acosh.js.map +1 -0
- package/esm/asin.d.ts +11 -0
- package/esm/asin.d.ts.map +1 -0
- package/esm/asin.js +25 -0
- package/esm/asin.js.map +1 -0
- package/esm/asinh.d.ts +9 -0
- package/esm/asinh.d.ts.map +1 -0
- package/esm/asinh.js +23 -0
- package/esm/asinh.js.map +1 -0
- package/esm/atan.d.ts +11 -0
- package/esm/atan.d.ts.map +1 -0
- package/esm/atan.js +62 -0
- package/esm/atan.js.map +1 -0
- package/esm/atan2.d.ts +12 -0
- package/esm/atan2.d.ts.map +1 -0
- package/esm/atan2.js +67 -0
- package/esm/atan2.js.map +1 -0
- package/esm/atanh.d.ts +11 -0
- package/esm/atanh.d.ts.map +1 -0
- package/esm/atanh.js +29 -0
- package/esm/atanh.js.map +1 -0
- package/esm/cbrt.d.ts +9 -0
- package/esm/cbrt.d.ts.map +1 -0
- package/esm/cbrt.js +23 -0
- package/esm/cbrt.js.map +1 -0
- package/esm/ceil.d.ts +15 -0
- package/esm/ceil.d.ts.map +1 -0
- package/esm/ceil.js +31 -0
- package/esm/ceil.js.map +1 -0
- package/esm/clamp.d.ts +15 -0
- package/esm/clamp.d.ts.map +1 -0
- package/esm/clamp.js +29 -0
- package/esm/clamp.js.map +1 -0
- package/esm/clz32.d.ts +20 -0
- package/esm/clz32.d.ts.map +1 -0
- package/esm/clz32.js +45 -0
- package/esm/clz32.js.map +1 -0
- package/esm/constants/e.d.ts +17 -0
- package/esm/constants/e.d.ts.map +1 -0
- package/esm/constants/e.js +16 -0
- package/esm/constants/e.js.map +1 -0
- package/esm/constants/epsilon.d.ts +24 -0
- package/esm/constants/epsilon.d.ts.map +1 -0
- package/esm/constants/epsilon.js +23 -0
- package/esm/constants/epsilon.js.map +1 -0
- package/esm/constants/index.d.ts +23 -0
- package/esm/constants/index.d.ts.map +1 -0
- package/esm/constants/index.js +23 -0
- package/esm/constants/index.js.map +1 -0
- package/esm/constants/infinity.d.ts +3 -0
- package/esm/constants/infinity.d.ts.map +1 -0
- package/esm/constants/infinity.js +3 -0
- package/esm/constants/infinity.js.map +1 -0
- package/esm/constants/ln10.d.ts +10 -0
- package/esm/constants/ln10.d.ts.map +1 -0
- package/esm/constants/ln10.js +9 -0
- package/esm/constants/ln10.js.map +1 -0
- package/esm/constants/ln2.d.ts +10 -0
- package/esm/constants/ln2.d.ts.map +1 -0
- package/esm/constants/ln2.js +9 -0
- package/esm/constants/ln2.js.map +1 -0
- package/esm/constants/log10e.d.ts +10 -0
- package/esm/constants/log10e.d.ts.map +1 -0
- package/esm/constants/log10e.js +9 -0
- package/esm/constants/log10e.js.map +1 -0
- package/esm/constants/log2e.d.ts +10 -0
- package/esm/constants/log2e.d.ts.map +1 -0
- package/esm/constants/log2e.js +9 -0
- package/esm/constants/log2e.js.map +1 -0
- package/esm/constants/max_safe_integer.d.ts +11 -0
- package/esm/constants/max_safe_integer.d.ts.map +1 -0
- package/esm/constants/max_safe_integer.js +10 -0
- package/esm/constants/max_safe_integer.js.map +1 -0
- package/esm/constants/max_value.d.ts +10 -0
- package/esm/constants/max_value.d.ts.map +1 -0
- package/esm/constants/max_value.js +9 -0
- package/esm/constants/max_value.js.map +1 -0
- package/esm/constants/min_safe_integer.d.ts +12 -0
- package/esm/constants/min_safe_integer.d.ts.map +1 -0
- package/esm/constants/min_safe_integer.js +11 -0
- package/esm/constants/min_safe_integer.js.map +1 -0
- package/esm/constants/min_value.d.ts +10 -0
- package/esm/constants/min_value.d.ts.map +1 -0
- package/esm/constants/min_value.js +9 -0
- package/esm/constants/min_value.js.map +1 -0
- package/esm/constants/nan.d.ts +47 -0
- package/esm/constants/nan.d.ts.map +1 -0
- package/esm/constants/nan.js +27 -0
- package/esm/constants/nan.js.map +1 -0
- package/esm/constants/negative_infinity.d.ts +28 -0
- package/esm/constants/negative_infinity.d.ts.map +1 -0
- package/esm/constants/negative_infinity.js +12 -0
- package/esm/constants/negative_infinity.js.map +1 -0
- package/esm/constants/negative_zero.d.ts +31 -0
- package/esm/constants/negative_zero.d.ts.map +1 -0
- package/esm/constants/negative_zero.js +18 -0
- package/esm/constants/negative_zero.js.map +1 -0
- package/esm/constants/pi.d.ts +10 -0
- package/esm/constants/pi.d.ts.map +1 -0
- package/esm/constants/pi.js +9 -0
- package/esm/constants/pi.js.map +1 -0
- package/esm/constants/positive_infinity.d.ts +29 -0
- package/esm/constants/positive_infinity.d.ts.map +1 -0
- package/esm/constants/positive_infinity.js +13 -0
- package/esm/constants/positive_infinity.js.map +1 -0
- package/esm/constants/positive_zero.d.ts +38 -0
- package/esm/constants/positive_zero.d.ts.map +1 -0
- package/esm/constants/positive_zero.js +33 -0
- package/esm/constants/positive_zero.js.map +1 -0
- package/esm/constants/sqrt1_2.d.ts +9 -0
- package/esm/constants/sqrt1_2.d.ts.map +1 -0
- package/esm/constants/sqrt1_2.js +8 -0
- package/esm/constants/sqrt1_2.js.map +1 -0
- package/esm/constants/sqrt2.d.ts +9 -0
- package/esm/constants/sqrt2.d.ts.map +1 -0
- package/esm/constants/sqrt2.js +8 -0
- package/esm/constants/sqrt2.js.map +1 -0
- package/esm/cos.d.ts +10 -0
- package/esm/cos.d.ts.map +1 -0
- package/esm/cos.js +29 -0
- package/esm/cos.js.map +1 -0
- package/esm/cosh.d.ts +10 -0
- package/esm/cosh.d.ts.map +1 -0
- package/esm/cosh.js +18 -0
- package/esm/cosh.js.map +1 -0
- package/esm/exp.d.ts +20 -0
- package/esm/exp.d.ts.map +1 -0
- package/esm/exp.js +45 -0
- package/esm/exp.js.map +1 -0
- package/esm/expm1.d.ts +11 -0
- package/esm/expm1.d.ts.map +1 -0
- package/esm/expm1.js +35 -0
- package/esm/expm1.js.map +1 -0
- package/esm/f16round.d.ts +24 -0
- package/esm/f16round.d.ts.map +1 -0
- package/esm/f16round.js +39 -0
- package/esm/f16round.js.map +1 -0
- package/esm/float16/constants.d.ts +97 -0
- package/esm/float16/constants.d.ts.map +1 -0
- package/esm/float16/constants.js +96 -0
- package/esm/float16/constants.js.map +1 -0
- package/esm/float16/decode.d.ts +40 -0
- package/esm/float16/decode.d.ts.map +1 -0
- package/esm/float16/decode.js +61 -0
- package/esm/float16/decode.js.map +1 -0
- package/esm/float16/encode.d.ts +67 -0
- package/esm/float16/encode.d.ts.map +1 -0
- package/esm/float16/encode.js +71 -0
- package/esm/float16/encode.js.map +1 -0
- package/esm/float16/guards.d.ts +22 -0
- package/esm/float16/guards.d.ts.map +1 -0
- package/esm/float16/guards.js +12 -0
- package/esm/float16/guards.js.map +1 -0
- package/esm/float16/index.d.ts +11 -0
- package/esm/float16/index.d.ts.map +1 -0
- package/esm/float16/index.js +11 -0
- package/esm/float16/index.js.map +1 -0
- package/esm/float16/round.d.ts +25 -0
- package/esm/float16/round.d.ts.map +1 -0
- package/esm/float16/round.js +43 -0
- package/esm/float16/round.js.map +1 -0
- package/esm/float32/constants.d.ts +96 -0
- package/esm/float32/constants.d.ts.map +1 -0
- package/esm/float32/constants.js +95 -0
- package/esm/float32/constants.js.map +1 -0
- package/esm/float32/decode.d.ts +38 -0
- package/esm/float32/decode.d.ts.map +1 -0
- package/esm/float32/decode.js +64 -0
- package/esm/float32/decode.js.map +1 -0
- package/esm/float32/encode.d.ts +50 -0
- package/esm/float32/encode.d.ts.map +1 -0
- package/esm/float32/encode.js +71 -0
- package/esm/float32/encode.js.map +1 -0
- package/esm/float32/guards.d.ts +37 -0
- package/esm/float32/guards.d.ts.map +1 -0
- package/esm/float32/guards.js +16 -0
- package/esm/float32/guards.js.map +1 -0
- package/esm/float32/index.d.ts +11 -0
- package/esm/float32/index.d.ts.map +1 -0
- package/esm/float32/index.js +11 -0
- package/esm/float32/index.js.map +1 -0
- package/esm/float32/round.d.ts +23 -0
- package/esm/float32/round.d.ts.map +1 -0
- package/esm/float32/round.js +33 -0
- package/esm/float32/round.js.map +1 -0
- package/esm/floor.d.ts +10 -0
- package/esm/floor.d.ts.map +1 -0
- package/esm/floor.js +29 -0
- package/esm/floor.js.map +1 -0
- package/esm/fround.d.ts +23 -0
- package/esm/fround.d.ts.map +1 -0
- package/esm/fround.js +32 -0
- package/esm/fround.js.map +1 -0
- package/esm/guards/finite.d.ts +23 -0
- package/esm/guards/finite.d.ts.map +1 -0
- package/esm/guards/finite.js +18 -0
- package/esm/guards/finite.js.map +1 -0
- package/esm/guards/index.d.ts +50 -0
- package/esm/guards/index.d.ts.map +1 -0
- package/esm/guards/index.js +50 -0
- package/esm/guards/index.js.map +1 -0
- package/esm/guards/infinity.d.ts +3 -0
- package/esm/guards/infinity.d.ts.map +1 -0
- package/esm/guards/infinity.js +3 -0
- package/esm/guards/infinity.js.map +1 -0
- package/esm/guards/integer.d.ts +47 -0
- package/esm/guards/integer.d.ts.map +1 -0
- package/esm/guards/integer.js +19 -0
- package/esm/guards/integer.js.map +1 -0
- package/esm/guards/nan.d.ts +61 -0
- package/esm/guards/nan.d.ts.map +1 -0
- package/esm/guards/nan.js +63 -0
- package/esm/guards/nan.js.map +1 -0
- package/esm/guards/negative_infinity.d.ts +19 -0
- package/esm/guards/negative_infinity.d.ts.map +1 -0
- package/esm/guards/negative_infinity.js +21 -0
- package/esm/guards/negative_infinity.js.map +1 -0
- package/esm/guards/negative_zero.d.ts +12 -0
- package/esm/guards/negative_zero.d.ts.map +1 -0
- package/esm/guards/negative_zero.js +20 -0
- package/esm/guards/negative_zero.js.map +1 -0
- package/esm/guards/positive_infinity.d.ts +19 -0
- package/esm/guards/positive_infinity.d.ts.map +1 -0
- package/esm/guards/positive_infinity.js +21 -0
- package/esm/guards/positive_infinity.js.map +1 -0
- package/esm/guards/positive_zero.d.ts +17 -0
- package/esm/guards/positive_zero.d.ts.map +1 -0
- package/esm/guards/positive_zero.js +19 -0
- package/esm/guards/positive_zero.js.map +1 -0
- package/esm/guards/safe_integer.d.ts +33 -0
- package/esm/guards/safe_integer.d.ts.map +1 -0
- package/esm/guards/safe_integer.js +22 -0
- package/esm/guards/safe_integer.js.map +1 -0
- package/esm/hypot.d.ts +18 -0
- package/esm/hypot.d.ts.map +1 -0
- package/esm/hypot.js +60 -0
- package/esm/hypot.js.map +1 -0
- package/esm/ieee754.d.ts +16 -0
- package/esm/ieee754.d.ts.map +1 -0
- package/esm/ieee754.js +16 -0
- package/esm/ieee754.js.map +1 -0
- package/esm/imul.d.ts +17 -0
- package/esm/imul.d.ts.map +1 -0
- package/esm/imul.js +21 -0
- package/esm/imul.js.map +1 -0
- package/esm/index.d.ts +84 -0
- package/esm/index.d.ts.map +1 -0
- package/esm/index.js +84 -0
- package/esm/index.js.map +1 -0
- package/esm/internal/ieee754.d.ts +174 -0
- package/esm/internal/ieee754.d.ts.map +1 -0
- package/esm/internal/ieee754.js +194 -0
- package/esm/internal/ieee754.js.map +1 -0
- package/esm/internal/primordials.d.ts +30 -0
- package/esm/internal/primordials.d.ts.map +1 -0
- package/esm/internal/primordials.js +27 -0
- package/esm/internal/primordials.js.map +1 -0
- package/esm/log.d.ts +9 -0
- package/esm/log.d.ts.map +1 -0
- package/esm/log.js +43 -0
- package/esm/log.js.map +1 -0
- package/esm/log10.d.ts +9 -0
- package/esm/log10.d.ts.map +1 -0
- package/esm/log10.js +18 -0
- package/esm/log10.js.map +1 -0
- package/esm/log1p.d.ts +10 -0
- package/esm/log1p.d.ts.map +1 -0
- package/esm/log1p.js +29 -0
- package/esm/log1p.js.map +1 -0
- package/esm/log2.d.ts +12 -0
- package/esm/log2.d.ts.map +1 -0
- package/esm/log2.js +21 -0
- package/esm/log2.js.map +1 -0
- package/esm/max.d.ts +22 -0
- package/esm/max.d.ts.map +1 -0
- package/esm/max.js +48 -0
- package/esm/max.js.map +1 -0
- package/esm/min.d.ts +10 -0
- package/esm/min.d.ts.map +1 -0
- package/esm/min.js +33 -0
- package/esm/min.js.map +1 -0
- package/esm/package.json +3 -0
- package/esm/pow.d.ts +31 -0
- package/esm/pow.d.ts.map +1 -0
- package/esm/pow.js +33 -0
- package/esm/pow.js.map +1 -0
- package/esm/random.d.ts +93 -0
- package/esm/random.d.ts.map +1 -0
- package/esm/random.js +237 -0
- package/esm/random.js.map +1 -0
- package/esm/round.d.ts +9 -0
- package/esm/round.d.ts.map +1 -0
- package/esm/round.js +21 -0
- package/esm/round.js.map +1 -0
- package/esm/sign.d.ts +17 -0
- package/esm/sign.d.ts.map +1 -0
- package/esm/sign.js +19 -0
- package/esm/sign.js.map +1 -0
- package/esm/sin.d.ts +14 -0
- package/esm/sin.d.ts.map +1 -0
- package/esm/sin.js +28 -0
- package/esm/sin.js.map +1 -0
- package/esm/sinh.d.ts +14 -0
- package/esm/sinh.d.ts.map +1 -0
- package/esm/sinh.js +19 -0
- package/esm/sinh.js.map +1 -0
- package/esm/sqrt.d.ts +19 -0
- package/esm/sqrt.d.ts.map +1 -0
- package/esm/sqrt.js +42 -0
- package/esm/sqrt.js.map +1 -0
- package/esm/tan.d.ts +9 -0
- package/esm/tan.d.ts.map +1 -0
- package/esm/tan.js +23 -0
- package/esm/tan.js.map +1 -0
- package/esm/tanh.d.ts +17 -0
- package/esm/tanh.d.ts.map +1 -0
- package/esm/tanh.js +31 -0
- package/esm/tanh.js.map +1 -0
- package/esm/trunc.d.ts +21 -0
- package/esm/trunc.d.ts.map +1 -0
- package/esm/trunc.js +47 -0
- package/esm/trunc.js.map +1 -0
- package/esm/types/finite.d.ts +16 -0
- package/esm/types/finite.d.ts.map +1 -0
- package/esm/types/finite.js +3 -0
- package/esm/types/finite.js.map +1 -0
- package/esm/types/float.d.ts +65 -0
- package/esm/types/float.d.ts.map +1 -0
- package/esm/types/float.js +3 -0
- package/esm/types/float.js.map +1 -0
- package/esm/types/index.d.ts +6 -0
- package/esm/types/index.d.ts.map +1 -0
- package/esm/types/index.js +6 -0
- package/esm/types/index.js.map +1 -0
- package/esm/types/integer.d.ts +147 -0
- package/esm/types/integer.d.ts.map +1 -0
- package/esm/types/integer.js +4 -0
- package/esm/types/integer.js.map +1 -0
- package/esm/types/precision.d.ts +46 -0
- package/esm/types/precision.d.ts.map +1 -0
- package/esm/types/precision.js +8 -0
- package/esm/types/precision.js.map +1 -0
- package/esm/types/safe_integer.d.ts +17 -0
- package/esm/types/safe_integer.d.ts.map +1 -0
- package/esm/types/safe_integer.js +4 -0
- package/esm/types/safe_integer.js.map +1 -0
- package/package.json +1834 -0
- package/src/abs.ts +18 -0
- package/src/acos.ts +24 -0
- package/src/acosh.ts +28 -0
- package/src/asin.ts +24 -0
- package/src/asinh.ts +21 -0
- package/src/atan.ts +64 -0
- package/src/atan2.ts +58 -0
- package/src/atanh.ts +26 -0
- package/src/cbrt.ts +22 -0
- package/src/ceil.ts +27 -0
- package/src/clamp.ts +29 -0
- package/src/clz32.ts +45 -0
- package/src/constants/e.ts +18 -0
- package/src/constants/epsilon.ts +25 -0
- package/src/constants/index.ts +22 -0
- package/src/constants/infinity.ts +2 -0
- package/src/constants/ln10.ts +9 -0
- package/src/constants/ln2.ts +9 -0
- package/src/constants/log10e.ts +9 -0
- package/src/constants/log2e.ts +9 -0
- package/src/constants/max_safe_integer.ts +10 -0
- package/src/constants/max_value.ts +9 -0
- package/src/constants/min_safe_integer.ts +11 -0
- package/src/constants/min_value.ts +9 -0
- package/src/constants/nan.ts +57 -0
- package/src/constants/negative_infinity.ts +28 -0
- package/src/constants/negative_zero.ts +34 -0
- package/src/constants/pi.ts +9 -0
- package/src/constants/positive_infinity.ts +30 -0
- package/src/constants/positive_zero.ts +41 -0
- package/src/constants/sqrt1_2.ts +8 -0
- package/src/constants/sqrt2.ts +8 -0
- package/src/cos.ts +29 -0
- package/src/cosh.ts +18 -0
- package/src/exp.ts +45 -0
- package/src/expm1.ts +31 -0
- package/src/f16round.ts +39 -0
- package/src/float16/constants.ts +106 -0
- package/src/float16/decode.ts +61 -0
- package/src/float16/encode.ts +72 -0
- package/src/float16/guards.ts +33 -0
- package/src/float16/index.ts +10 -0
- package/src/float16/round.ts +43 -0
- package/src/float32/constants.ts +105 -0
- package/src/float32/decode.ts +64 -0
- package/src/float32/encode.ts +71 -0
- package/src/float32/guards.ts +54 -0
- package/src/float32/index.ts +10 -0
- package/src/float32/round.ts +33 -0
- package/src/floor.ts +26 -0
- package/src/fround.ts +32 -0
- package/src/guards/finite.ts +45 -0
- package/src/guards/index.ts +49 -0
- package/src/guards/infinity.ts +2 -0
- package/src/guards/integer.ts +62 -0
- package/src/guards/nan.ts +65 -0
- package/src/guards/negative_infinity.ts +22 -0
- package/src/guards/negative_zero.ts +21 -0
- package/src/guards/positive_infinity.ts +22 -0
- package/src/guards/positive_zero.ts +19 -0
- package/src/guards/safe_integer.ts +56 -0
- package/src/hypot.ts +59 -0
- package/src/ieee754.ts +15 -0
- package/src/imul.ts +21 -0
- package/src/index.ts +84 -0
- package/src/internal/ieee754.ts +255 -0
- package/src/internal/primordials.ts +33 -0
- package/src/log.ts +42 -0
- package/src/log10.ts +18 -0
- package/src/log1p.ts +26 -0
- package/src/log2.ts +21 -0
- package/src/max.ts +46 -0
- package/src/min.ts +32 -0
- package/src/pow.ts +33 -0
- package/src/random.ts +241 -0
- package/src/round.ts +20 -0
- package/src/sign.ts +19 -0
- package/src/sin.ts +29 -0
- package/src/sinh.ts +19 -0
- package/src/sqrt.ts +40 -0
- package/src/tan.ts +22 -0
- package/src/tanh.ts +28 -0
- package/src/trunc.ts +44 -0
- package/src/types/finite.ts +23 -0
- package/src/types/float.ts +74 -0
- package/src/types/index.ts +5 -0
- package/src/types/integer.ts +167 -0
- package/src/types/precision.ts +51 -0
- package/src/types/safe_integer.ts +18 -0
package/src/abs.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Performant local implementation of the `Math.abs` function.
|
|
3
|
+
*
|
|
4
|
+
* @module abs
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Performant local implementation of the `Math.abs` function.
|
|
9
|
+
*
|
|
10
|
+
* @param x The number to return the absolute value of (magnitude)
|
|
11
|
+
* @returns The absolute value of the provided number.
|
|
12
|
+
* @category Arithmetic
|
|
13
|
+
*/
|
|
14
|
+
export function abs(x: number): number {
|
|
15
|
+
x = +x;
|
|
16
|
+
if (x === 0) return 0;
|
|
17
|
+
return x < 0 ? -x : x;
|
|
18
|
+
}
|
package/src/acos.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calculates the arccosine (inverse cosine) of a number, returning a value in
|
|
3
|
+
* the range `[0, π]`.
|
|
4
|
+
*
|
|
5
|
+
* @module acos
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { isNaN, NaN } from "./guards/nan.js";
|
|
9
|
+
import { atan2 } from "./atan2.js";
|
|
10
|
+
import { sqrt } from "./sqrt.js";
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Calculates the arccosine (inverse cosine) of a number, returning a value in
|
|
14
|
+
* the range `[0, π]`.
|
|
15
|
+
*
|
|
16
|
+
* @param x The number whose arccosine is to be calculated (must be between -1
|
|
17
|
+
* and 1).
|
|
18
|
+
* @returns The arccosine of the provided number, in radians.
|
|
19
|
+
* @category Trigonometry
|
|
20
|
+
*/
|
|
21
|
+
export function acos(x: number): number {
|
|
22
|
+
if (isNaN(x) || x < -1 || x > 1) return NaN;
|
|
23
|
+
return atan2(sqrt(1 - x * x), x);
|
|
24
|
+
}
|
package/src/acosh.ts
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calculates the inverse hyperbolic cosine of a number, returning a value in
|
|
3
|
+
* the range `[0, +Infinity]`.
|
|
4
|
+
*
|
|
5
|
+
* @category Trigonometry
|
|
6
|
+
* @module acosh
|
|
7
|
+
*/
|
|
8
|
+
import { NAN } from "./constants/nan.js";
|
|
9
|
+
import { POSITIVE_INFINITY } from "./constants/positive_infinity.js";
|
|
10
|
+
import { log } from "./log.js";
|
|
11
|
+
import { sqrt } from "./sqrt.js";
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Calculates the inverse hyperbolic cosine of a number, returning a value in
|
|
15
|
+
* the range `[0, +Infinity]`.
|
|
16
|
+
*
|
|
17
|
+
* @param x The number whose inverse hyperbolic cosine is to be calculated
|
|
18
|
+
* (must be >= 1).
|
|
19
|
+
* @returns The inverse hyperbolic cosine of the provided number.
|
|
20
|
+
* @category Trigonometry
|
|
21
|
+
*/
|
|
22
|
+
export function acosh(x: number): number {
|
|
23
|
+
if (x !== x || x < 1) return NAN;
|
|
24
|
+
if (x === 1) return 0;
|
|
25
|
+
if (x === POSITIVE_INFINITY) return x;
|
|
26
|
+
if (x > 1.0e+7) return log(x) + Math.LN2;
|
|
27
|
+
return log(x + sqrt(x * x - 1));
|
|
28
|
+
}
|
package/src/asin.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calculates the arcsine (inverse sine) of a number, returning a value in the
|
|
3
|
+
* range `[-π/2, π/2]`.
|
|
4
|
+
*
|
|
5
|
+
* @category Trigonometry
|
|
6
|
+
* @module asin
|
|
7
|
+
*/
|
|
8
|
+
import { NAN } from "./constants/nan.js";
|
|
9
|
+
import { atan2 } from "./atan2.js";
|
|
10
|
+
import { sqrt } from "./sqrt.js";
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Calculates the arcsine (inverse sine) of a number, returning a value in the
|
|
14
|
+
* range `[-π/2, π/2]`.
|
|
15
|
+
*
|
|
16
|
+
* @param x The number whose arcsine is to be calculated (must be between -1
|
|
17
|
+
* and 1).
|
|
18
|
+
* @returns The arcsine of the provided number, in radians.
|
|
19
|
+
* @category Trigonometry
|
|
20
|
+
*/
|
|
21
|
+
export function asin(x: number): number {
|
|
22
|
+
if (x !== x || x < -1 || x > 1) return NAN;
|
|
23
|
+
return atan2(x, sqrt(1 - x * x));
|
|
24
|
+
}
|
package/src/asinh.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calculates the inverse hyperbolic sine of a number.
|
|
3
|
+
*
|
|
4
|
+
* @module asinh
|
|
5
|
+
*/
|
|
6
|
+
import { isFinite } from "./guards/finite.js";
|
|
7
|
+
import { log } from "./log.js";
|
|
8
|
+
import { sqrt } from "./sqrt.js";
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Calculates the inverse hyperbolic sine of a number.
|
|
12
|
+
*
|
|
13
|
+
* @param x The number whose inverse hyperbolic sine is to be calculated.
|
|
14
|
+
* @returns The inverse hyperbolic sine of the provided number.
|
|
15
|
+
* @category Trigonometry
|
|
16
|
+
*/
|
|
17
|
+
export function asinh(x: number): number {
|
|
18
|
+
if (x === 0) return x;
|
|
19
|
+
if (!isFinite(x)) return x;
|
|
20
|
+
return log(x + sqrt(x * x + 1));
|
|
21
|
+
}
|
package/src/atan.ts
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calculates the arctangent (inverse tangent) of a number, returning a value
|
|
3
|
+
* in the range `[-π/2, π/2]`.
|
|
4
|
+
*
|
|
5
|
+
* @module atan
|
|
6
|
+
*/
|
|
7
|
+
import { abs } from "./abs.js";
|
|
8
|
+
import { NAN } from "./constants/nan.js";
|
|
9
|
+
import { PI } from "./constants/pi.js";
|
|
10
|
+
import { POSITIVE_INFINITY } from "./constants/positive_infinity.js";
|
|
11
|
+
import { NEGATIVE_INFINITY } from "./constants/negative_infinity.js";
|
|
12
|
+
import { EPSILON } from "./constants/epsilon.js";
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Calculates the arctangent (inverse tangent) of a number, returning a value
|
|
16
|
+
* in the range `[-π/2, π/2]`.
|
|
17
|
+
*
|
|
18
|
+
* @param x The number whose arctangent is to be calculated.
|
|
19
|
+
* @returns The arctangent of the provided number, in radians.
|
|
20
|
+
* @category Trigonometry
|
|
21
|
+
* @tags tangent, arctangent
|
|
22
|
+
*/
|
|
23
|
+
export function atan(x: number): number {
|
|
24
|
+
const PI_OVER_2 = PI / 2, PI_OVER_4 = PI / 4;
|
|
25
|
+
|
|
26
|
+
if (isNaN(x)) return NAN;
|
|
27
|
+
if (x === POSITIVE_INFINITY) return PI_OVER_2;
|
|
28
|
+
if (x === NEGATIVE_INFINITY) return -PI_OVER_2;
|
|
29
|
+
if (x === 0) return x; // Preserve -0
|
|
30
|
+
if (x < 0) return -atan(-x);
|
|
31
|
+
|
|
32
|
+
// for large x, use the identity: arctan(x) = π/2 - arctan(1/x)
|
|
33
|
+
if (x > 1) return PI_OVER_2 - atan(1 / x);
|
|
34
|
+
|
|
35
|
+
// for x near 1, use an alternative series expansion
|
|
36
|
+
if (x > 0.5) {
|
|
37
|
+
const a = (x - 1) / (x + 1), a2 = a * a;
|
|
38
|
+
let term = a, sum = term, n = 1;
|
|
39
|
+
|
|
40
|
+
// Use a convergence threshold appropriate for double-precision
|
|
41
|
+
// floating-point numbers
|
|
42
|
+
const MAX_ITERATIONS = 1000;
|
|
43
|
+
while (abs(term) > EPSILON && n < MAX_ITERATIONS) {
|
|
44
|
+
term *= -a2;
|
|
45
|
+
sum += term / (2 * n + 1);
|
|
46
|
+
n++;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
return PI_OVER_4 + sum;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// for x <= 0.5, use the standard Taylor series expansion
|
|
53
|
+
const x2 = x * x;
|
|
54
|
+
let term = x, sum = x, n = 1;
|
|
55
|
+
|
|
56
|
+
const MAX_ITERATIONS = 1e5;
|
|
57
|
+
while (abs(term) > EPSILON && n < MAX_ITERATIONS) {
|
|
58
|
+
term *= -x2;
|
|
59
|
+
sum += term / (2 * n + 1);
|
|
60
|
+
n++;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
return sum;
|
|
64
|
+
}
|
package/src/atan2.ts
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calculates the arctangent of the quotient of its arguments, `y / x`,
|
|
3
|
+
* returning a value in the range `(-π, π]`.
|
|
4
|
+
*
|
|
5
|
+
* @module atan2
|
|
6
|
+
*/
|
|
7
|
+
import { NAN } from "./constants/nan.js";
|
|
8
|
+
import { PI } from "./constants/pi.js";
|
|
9
|
+
import { atan } from "./atan.js";
|
|
10
|
+
import { isNaN } from "./guards/nan.js";
|
|
11
|
+
import { isNegativeZero } from "./guards/negative_zero.js";
|
|
12
|
+
import { isNegativeInfinity } from "./guards/negative_infinity.js";
|
|
13
|
+
import { isPositiveInfinity } from "./guards/positive_infinity.js";
|
|
14
|
+
|
|
15
|
+
const PI_OVER_2 = PI / 2, PI_OVER_4 = PI / 4;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Calculates the arctangent of the quotient of its arguments, `y / x`,
|
|
19
|
+
* returning a value in the range `(-π, π]`.
|
|
20
|
+
*
|
|
21
|
+
* @param y The ordinate coordinate.
|
|
22
|
+
* @param x The abscissa coordinate.
|
|
23
|
+
* @returns The angle between the positive x-axis and point (x, y), in radians.
|
|
24
|
+
* @category Trigonometry
|
|
25
|
+
* @tags angle, arctangent
|
|
26
|
+
*/
|
|
27
|
+
export function atan2(y: number, x: number): number {
|
|
28
|
+
// fast paths for special cases
|
|
29
|
+
if (isNaN(y) || isNaN(x)) return NAN;
|
|
30
|
+
if (y === 0 && x === 0) {
|
|
31
|
+
if (isNegativeZero(y) && isNegativeZero(x)) return -PI;
|
|
32
|
+
if (isNegativeZero(y)) return -0;
|
|
33
|
+
if (isNegativeZero(x)) return PI;
|
|
34
|
+
return 0;
|
|
35
|
+
}
|
|
36
|
+
if (x === 0) {
|
|
37
|
+
if (y > 0) return PI_OVER_2;
|
|
38
|
+
if (y < 0) return -PI_OVER_2;
|
|
39
|
+
return NAN; // unreachable
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// x (and possibly y) is infinity/-infinity
|
|
43
|
+
if (isPositiveInfinity(x)) {
|
|
44
|
+
if (isPositiveInfinity(y)) return PI_OVER_4;
|
|
45
|
+
if (isNegativeInfinity(y)) return -PI_OVER_4;
|
|
46
|
+
return y < 0 || isNegativeZero(y) ? -0 : 0;
|
|
47
|
+
} else if (isNegativeInfinity(x)) {
|
|
48
|
+
if (isPositiveInfinity(y)) return 3 * PI_OVER_4;
|
|
49
|
+
if (isNegativeInfinity(y)) return -3 * PI_OVER_4;
|
|
50
|
+
return y < 0 || isNegativeZero(y) ? -PI : PI;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
if (x > 0) return atan(y / x);
|
|
54
|
+
if (x < 0) return atan(y / x) + (y < 0 || isNegativeZero(y) ? -PI : PI);
|
|
55
|
+
|
|
56
|
+
// deno-coverage-ignore
|
|
57
|
+
return NAN; // this should never happen
|
|
58
|
+
}
|
package/src/atanh.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calculates the inverse hyperbolic tangent of a number, returning a value in
|
|
3
|
+
* the range `[-∞, +∞]`.
|
|
4
|
+
*
|
|
5
|
+
* @module atanh
|
|
6
|
+
*/
|
|
7
|
+
import { isNaN, NAN } from "./guards/nan.js";
|
|
8
|
+
import { POSITIVE_INFINITY } from "./constants/positive_infinity.js";
|
|
9
|
+
import { log1p } from "./log1p.js";
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Calculates the inverse hyperbolic tangent of a number, returning a value in
|
|
13
|
+
* the range `[-∞, +∞]`.
|
|
14
|
+
*
|
|
15
|
+
* @param x The number whose inverse hyperbolic tangent is to be calculated
|
|
16
|
+
* (must be between -1 and 1).
|
|
17
|
+
* @returns The inverse hyperbolic tangent of the provided number.
|
|
18
|
+
* @category Trigonometry
|
|
19
|
+
*/
|
|
20
|
+
export function atanh(x: number): number {
|
|
21
|
+
if (isNaN(x) || x < -1 || x > 1) return NAN;
|
|
22
|
+
if (x === -1 || x === 1) return x * POSITIVE_INFINITY;
|
|
23
|
+
if (x === 0) return x;
|
|
24
|
+
// Use log1p for better precision near 0 and to match native behavior.
|
|
25
|
+
return 0.5 * log1p((2 * x) / (1 - x));
|
|
26
|
+
}
|
package/src/cbrt.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calculates the cube root of a number, handling negative values as well.
|
|
3
|
+
*
|
|
4
|
+
* @module cbrt
|
|
5
|
+
*/
|
|
6
|
+
import { abs } from "./abs.js";
|
|
7
|
+
import { exp } from "./exp.js";
|
|
8
|
+
import { log } from "./log.js";
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Calculates the cube root of a number, handling negative values as well.
|
|
12
|
+
*
|
|
13
|
+
* @param x The number whose cube root is to be calculated.
|
|
14
|
+
* @returns The cube root of the provided number.
|
|
15
|
+
* @category Arithmetic
|
|
16
|
+
*/
|
|
17
|
+
export function cbrt(x: number): number {
|
|
18
|
+
if (x === 0) return x;
|
|
19
|
+
const absX = abs(x);
|
|
20
|
+
const result = exp(log(absX) / 3);
|
|
21
|
+
return x < 0 ? -result : result;
|
|
22
|
+
}
|
package/src/ceil.ts
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Performant local implementation of the `Math.ceil` function.
|
|
3
|
+
*
|
|
4
|
+
* @module ceil
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { NEGATIVE_INFINITY } from "./constants/negative_infinity.js";
|
|
8
|
+
import { POSITIVE_INFINITY } from "./constants/positive_infinity.js";
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Performant local implementation of the `Math.ceil` function.
|
|
12
|
+
*
|
|
13
|
+
* @param x The number to round up to the nearest whole number
|
|
14
|
+
* @returns The smallest integer greater than or equal to the provided number.
|
|
15
|
+
* @category Rounding
|
|
16
|
+
* @tags rounding, ceiling
|
|
17
|
+
*/
|
|
18
|
+
export function ceil(x: number): number {
|
|
19
|
+
x = +x;
|
|
20
|
+
if (x !== x || x === POSITIVE_INFINITY || x === NEGATIVE_INFINITY) return x;
|
|
21
|
+
if (x === 0) return x;
|
|
22
|
+
const remainder = x % 1;
|
|
23
|
+
if (remainder === 0) return x;
|
|
24
|
+
if (x < 0 && x > -1) return -0;
|
|
25
|
+
if (x > 0) return x - remainder + 1;
|
|
26
|
+
return x - remainder;
|
|
27
|
+
}
|
package/src/clamp.ts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Clamps a number within the inclusive range specified by the lower and upper
|
|
3
|
+
* bounds. This is useful for ensuring that a number does not exceed a certain
|
|
4
|
+
* range, and is equivalent to `Math.min(Math.max(number, lower), upper)` (but
|
|
5
|
+
* with no dependency on the global `Math` object).
|
|
6
|
+
*
|
|
7
|
+
* **Note**: this is a non-standard utility function.
|
|
8
|
+
*
|
|
9
|
+
* @module clamp
|
|
10
|
+
*/
|
|
11
|
+
import { max } from "./max.js";
|
|
12
|
+
import { min } from "./min.js";
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Clamps a number within the inclusive range specified by the lower and upper
|
|
16
|
+
* bounds. This is useful for ensuring that a number does not exceed a certain
|
|
17
|
+
* range, and is equivalent to `Math.min(Math.max(number, lower), upper)` (but
|
|
18
|
+
* with no dependency on the global `Math` object).
|
|
19
|
+
*
|
|
20
|
+
* @param number The number to clamp
|
|
21
|
+
* @param lower The lower bound of the clamp range
|
|
22
|
+
* @param upper The upper bound of the clamp range
|
|
23
|
+
* @returns The clamped value guaranteed to be within the provided range.
|
|
24
|
+
* @category Rounding
|
|
25
|
+
* @tags non-standard, clamp
|
|
26
|
+
*/
|
|
27
|
+
export function clamp(number: number, lower: number, upper: number): number {
|
|
28
|
+
return max(lower, min(number, upper));
|
|
29
|
+
}
|
package/src/clz32.ts
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This module provides a performant, zero-dependency implementation of the
|
|
3
|
+
* `Math.clz32` function, which counts the number of leading zero bits in the
|
|
4
|
+
* 32-bit binary representation of a number.
|
|
5
|
+
*
|
|
6
|
+
* @module clz32
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Performant local implementation of the `Math.clz32` function, which counts
|
|
11
|
+
* the number of leading zero bits in the 32-bit binary representation of a
|
|
12
|
+
* number.
|
|
13
|
+
*
|
|
14
|
+
* @param x The number to count the leading zero bits of.
|
|
15
|
+
* @returns The number of leading zero bits in the 32-bit binary representation
|
|
16
|
+
* of the number.
|
|
17
|
+
* @category Bitwise
|
|
18
|
+
* @tags clz32
|
|
19
|
+
*/
|
|
20
|
+
export function clz32(x: number): number {
|
|
21
|
+
x >>>= 0;
|
|
22
|
+
if (x === 0) return 32;
|
|
23
|
+
|
|
24
|
+
let count = 0;
|
|
25
|
+
if ((x & 0xFFFF0000) === 0) {
|
|
26
|
+
count += 16;
|
|
27
|
+
x <<= 16;
|
|
28
|
+
}
|
|
29
|
+
if ((x & 0xFF000000) === 0) {
|
|
30
|
+
count += 8;
|
|
31
|
+
x <<= 8;
|
|
32
|
+
}
|
|
33
|
+
if ((x & 0xF0000000) === 0) {
|
|
34
|
+
count += 4;
|
|
35
|
+
x <<= 4;
|
|
36
|
+
}
|
|
37
|
+
if ((x & 0xC0000000) === 0) {
|
|
38
|
+
count += 2;
|
|
39
|
+
x <<= 2;
|
|
40
|
+
}
|
|
41
|
+
if ((x & 0x80000000) === 0) {
|
|
42
|
+
count += 1;
|
|
43
|
+
}
|
|
44
|
+
return count;
|
|
45
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This module provides a constant value for the mathematical constant `e` on
|
|
3
|
+
* the runtime value-level, and also the compile-time type-only level.
|
|
4
|
+
*
|
|
5
|
+
* @module e
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Represents the mathematical constant `e` (Euler's number), the base of the
|
|
10
|
+
* natural logarithm, approximately equal to `2.718281828459045`.
|
|
11
|
+
*
|
|
12
|
+
* This is a local implementation of the native `Math.E` constant.
|
|
13
|
+
* @category Constants
|
|
14
|
+
* @tags E
|
|
15
|
+
*/
|
|
16
|
+
export const E: E = 2.718281828459045;
|
|
17
|
+
|
|
18
|
+
export type E = 2.718281828459045;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This module provides the mathematical constant `EPSILON` on the runtime
|
|
3
|
+
* value-level, and also the compile-time type-only level.
|
|
4
|
+
*
|
|
5
|
+
* The `EPSILON` constant represents the difference between `1` and the
|
|
6
|
+
* smallest value greater than `1` that can be represented as a `number` value.
|
|
7
|
+
*
|
|
8
|
+
* This is approximately equal to `2.220446049250313e-16`, and is provided as a
|
|
9
|
+
* local implementation of the native `Number.EPSILON` constant.
|
|
10
|
+
*
|
|
11
|
+
* @module epsilon
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Represents the smallest positive number that can be added to `1` to get a
|
|
16
|
+
* result different from `1`.
|
|
17
|
+
*
|
|
18
|
+
* This is approximately equal to `2.220446049250313e-16`.
|
|
19
|
+
*
|
|
20
|
+
* @category Constants
|
|
21
|
+
* @tags Number, Epsilon
|
|
22
|
+
*/
|
|
23
|
+
export const EPSILON: EPSILON = 2.220446049250313e-16;
|
|
24
|
+
|
|
25
|
+
export type EPSILON = 2.220446049250313e-16;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This module re-exports all of the `@nick/math/constants/*` submodules.
|
|
3
|
+
*
|
|
4
|
+
* @module constants
|
|
5
|
+
*/
|
|
6
|
+
export * from "./e.js";
|
|
7
|
+
export * from "./epsilon.js";
|
|
8
|
+
export * from "./infinity.js";
|
|
9
|
+
export * from "./ln10.js";
|
|
10
|
+
export * from "./ln2.js";
|
|
11
|
+
export * from "./log10e.js";
|
|
12
|
+
export * from "./log2e.js";
|
|
13
|
+
export * from "./max_safe_integer.js";
|
|
14
|
+
export * from "./max_value.js";
|
|
15
|
+
export * from "./min_safe_integer.js";
|
|
16
|
+
export * from "./min_value.js";
|
|
17
|
+
export * from "./nan.js";
|
|
18
|
+
export * from "./negative_zero.js";
|
|
19
|
+
export * from "./pi.js";
|
|
20
|
+
export * from "./positive_zero.js";
|
|
21
|
+
export * from "./sqrt1_2.js";
|
|
22
|
+
export * from "./sqrt2.js";
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Represents the natural logarithm of `10`, approximately equal to
|
|
3
|
+
* `2.302585092994046`.
|
|
4
|
+
*
|
|
5
|
+
* This is a local implementation of the native `Math.LN10` constant.
|
|
6
|
+
* @category Constants
|
|
7
|
+
*/
|
|
8
|
+
export const LN10: LN10 = 2.302585092994046;
|
|
9
|
+
export type LN10 = 2.302585092994046;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Represents the natural logarithm of `2`, approximately equal to
|
|
3
|
+
* `0.6931471805599453`.
|
|
4
|
+
*
|
|
5
|
+
* This is a local implementation of the native `Math.LN2` constant.
|
|
6
|
+
* @category Constants
|
|
7
|
+
*/
|
|
8
|
+
export const LN2: LN2 = 0.6931471805599453;
|
|
9
|
+
export type LN2 = 0.6931471805599453;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Represents the base-10 logarithm of `e` (Euler's number), approximately
|
|
3
|
+
* equal to `0.4342944819032518`.
|
|
4
|
+
*
|
|
5
|
+
* This is a local implementation of the native `Math.LOG10E` constant.
|
|
6
|
+
* @category Constants
|
|
7
|
+
*/
|
|
8
|
+
export const LOG10E: LOG10E = 0.4342944819032518;
|
|
9
|
+
export type LOG10E = 0.4342944819032518;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Represents the base-2 logarithm of `e` (Euler's number), approximately equal
|
|
3
|
+
* to `1.4426950408889634`.
|
|
4
|
+
*
|
|
5
|
+
* This is a local implementation of the native `Math.LOG2E` constant.
|
|
6
|
+
* @category Constants
|
|
7
|
+
*/
|
|
8
|
+
export const LOG2E: LOG2E = 1.4426950408889634;
|
|
9
|
+
export type LOG2E = 1.4426950408889634;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Represents the largest integer that can be represented in JavaScript without
|
|
3
|
+
* losing precision, which is approximately equal to `9007199254740991`.
|
|
4
|
+
*
|
|
5
|
+
* This is a local implementation of the native `Number.MAX_SAFE_INTEGER`
|
|
6
|
+
* constant.
|
|
7
|
+
* @category Constants
|
|
8
|
+
*/
|
|
9
|
+
export const MAX_SAFE_INTEGER: MAX_SAFE_INTEGER = 9007199254740991;
|
|
10
|
+
export type MAX_SAFE_INTEGER = 9007199254740991;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Represents the largest positive finite number that can be represented in
|
|
3
|
+
* JavaScript, which is approximately equal to `1.7976931348623157e+308`.
|
|
4
|
+
*
|
|
5
|
+
* This is a local implementation of the native `Number.MAX_VALUE` constant.
|
|
6
|
+
* @category Constants
|
|
7
|
+
*/
|
|
8
|
+
export const MAX_VALUE: MAX_VALUE = 1.7976931348623157e308;
|
|
9
|
+
export type MAX_VALUE = 1.7976931348623157e308;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Represents the smallest integer that can be represented in JavaScript
|
|
3
|
+
* without losing precision, which is approximately equal to
|
|
4
|
+
* `-9007199254740991`.
|
|
5
|
+
*
|
|
6
|
+
* This is a local implementation of the native `Number.MIN_SAFE_INTEGER`
|
|
7
|
+
* constant.
|
|
8
|
+
* @category Constants
|
|
9
|
+
*/
|
|
10
|
+
export const MIN_SAFE_INTEGER: MIN_SAFE_INTEGER = -9007199254740991;
|
|
11
|
+
export type MIN_SAFE_INTEGER = -9007199254740991;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Represents the smallest positive number that is greater than zero, which is
|
|
3
|
+
* approximately equal to `5e-324`.
|
|
4
|
+
*
|
|
5
|
+
* This is a local implementation of the native `Number.MIN_VALUE` constant.
|
|
6
|
+
* @category Constants
|
|
7
|
+
*/
|
|
8
|
+
export const MIN_VALUE: MIN_VALUE = 5e-324;
|
|
9
|
+
export type MIN_VALUE = 5e-324;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Not a Number (`NaN`) is a special value representing all values which are
|
|
3
|
+
* not valid numbers. It is approximately equal to `0 / 0`, meaning it is a
|
|
4
|
+
* non-representable, non-finite, non-zero result of an invalid math operation.
|
|
5
|
+
*
|
|
6
|
+
* `NaN` is the only value in JavaScript which is not less than, greater than,
|
|
7
|
+
* nor equal to any other value, including itself. It is the result of invalid
|
|
8
|
+
* mathematical operations, such as dividing zero by zero, or parsing a string
|
|
9
|
+
* that does not represent a valid number with `parseInt` or `parseFloat`.
|
|
10
|
+
*
|
|
11
|
+
* @module nan
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
// purposely kept private and local to this module only, preventing external
|
|
15
|
+
// code from imitating the `NaN` type below.
|
|
16
|
+
const Not_a_Number: unique symbol = Symbol("Is_NaN");
|
|
17
|
+
type Not_a_Number = typeof Not_a_Number;
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Special nominal type representing the "Not a Number" (`NaN`) value. This is
|
|
21
|
+
* used to distinguish between `NaN` and other `number` values on a type-only
|
|
22
|
+
* level, allowing you to perform type narrowing and checking for `NaN` values
|
|
23
|
+
* in a type-safe manner.
|
|
24
|
+
*
|
|
25
|
+
* This is the internal unforgeable brand that is used to create the `NAN` type
|
|
26
|
+
* exported from this module. It is purposely kept private and local to this
|
|
27
|
+
* module only, to prevent any imitation or manipulation from external code.
|
|
28
|
+
*
|
|
29
|
+
* @internal
|
|
30
|
+
* @private
|
|
31
|
+
*/
|
|
32
|
+
// we use an interface here so that `NaN` is opaque, and does not immediately
|
|
33
|
+
// reveal its structure in things like intellisense hover previews. a drawback
|
|
34
|
+
// of this approach is that interfaces are open-ended, so it's possible to
|
|
35
|
+
// extend it with additional members. and therefore... we do not export it.
|
|
36
|
+
interface NaN {
|
|
37
|
+
readonly [Not_a_Number]: never;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Represents the special value "Not a Number" (`NaN`), which is used to denote
|
|
42
|
+
* an invalid number. It is approximately equivalent to `0 / 0`.
|
|
43
|
+
*
|
|
44
|
+
* This is a local implementation of the native `Number.NaN` constant.
|
|
45
|
+
*
|
|
46
|
+
* @category Constants
|
|
47
|
+
* @tags Number, NaN
|
|
48
|
+
*/
|
|
49
|
+
export const NAN: NAN = 0 / 0 as NAN;
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Currently, TypeScript does not provide a built-in solution to distinguish
|
|
53
|
+
* `NaN` from other non-literal `number` value. This type helps fill that gap.
|
|
54
|
+
*/
|
|
55
|
+
export type NAN = number & NaN;
|
|
56
|
+
|
|
57
|
+
export { NAN as NaN };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Negative Infinity is a special value representing negative infinity, which
|
|
3
|
+
* is less than any other number. It is approximately equal to
|
|
4
|
+
* `-1.7976931348623159e+308`.
|
|
5
|
+
*
|
|
6
|
+
* This is a local implementation of the native `Number.NEGATIVE_INFINITY`
|
|
7
|
+
* constant.
|
|
8
|
+
* @category Constants
|
|
9
|
+
* @tags Infinity
|
|
10
|
+
*/
|
|
11
|
+
export const NEGATIVE_INFINITY: NEGATIVE_INFINITY = -1 / 0 as NEGATIVE_INFINITY;
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Special type used to represent `-Infinity` (negative infinity). TypeScript's
|
|
15
|
+
* built-in types do not distinguish between positive/negative infinity and any
|
|
16
|
+
* other `number`. However, its type checker _is_ capable of differentiating
|
|
17
|
+
* between those types and other literal numbers.
|
|
18
|
+
*
|
|
19
|
+
* This type simply (ab)uses the type system's handling of scientific notation:
|
|
20
|
+
* by using an arbitrary exponent in excess of `308`, the type checker can now
|
|
21
|
+
* recognize and represent the type as `Infinity`. Great success!
|
|
22
|
+
*
|
|
23
|
+
* NB: Credit to Sindre Sorhus and his type-fest project for this approach.
|
|
24
|
+
*
|
|
25
|
+
* @category Types
|
|
26
|
+
* @tags Infinity
|
|
27
|
+
*/
|
|
28
|
+
export type NEGATIVE_INFINITY = -1e333;
|