@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.
Files changed (806) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +889 -0
  3. package/cjs/abs.d.ts +14 -0
  4. package/cjs/abs.d.ts.map +1 -0
  5. package/cjs/abs.js +22 -0
  6. package/cjs/abs.js.map +1 -0
  7. package/cjs/acos.d.ts +17 -0
  8. package/cjs/acos.d.ts.map +1 -0
  9. package/cjs/acos.js +27 -0
  10. package/cjs/acos.js.map +1 -0
  11. package/cjs/acosh.d.ts +11 -0
  12. package/cjs/acosh.d.ts.map +1 -0
  13. package/cjs/acosh.js +35 -0
  14. package/cjs/acosh.js.map +1 -0
  15. package/cjs/asin.d.ts +11 -0
  16. package/cjs/asin.d.ts.map +1 -0
  17. package/cjs/asin.js +28 -0
  18. package/cjs/asin.js.map +1 -0
  19. package/cjs/asinh.d.ts +9 -0
  20. package/cjs/asinh.d.ts.map +1 -0
  21. package/cjs/asinh.js +26 -0
  22. package/cjs/asinh.js.map +1 -0
  23. package/cjs/atan.d.ts +11 -0
  24. package/cjs/atan.d.ts.map +1 -0
  25. package/cjs/atan.js +65 -0
  26. package/cjs/atan.js.map +1 -0
  27. package/cjs/atan2.d.ts +12 -0
  28. package/cjs/atan2.d.ts.map +1 -0
  29. package/cjs/atan2.js +70 -0
  30. package/cjs/atan2.js.map +1 -0
  31. package/cjs/atanh.d.ts +11 -0
  32. package/cjs/atanh.d.ts.map +1 -0
  33. package/cjs/atanh.js +32 -0
  34. package/cjs/atanh.js.map +1 -0
  35. package/cjs/cbrt.d.ts +9 -0
  36. package/cjs/cbrt.d.ts.map +1 -0
  37. package/cjs/cbrt.js +26 -0
  38. package/cjs/cbrt.js.map +1 -0
  39. package/cjs/ceil.d.ts +15 -0
  40. package/cjs/ceil.d.ts.map +1 -0
  41. package/cjs/ceil.js +34 -0
  42. package/cjs/ceil.js.map +1 -0
  43. package/cjs/clamp.d.ts +15 -0
  44. package/cjs/clamp.d.ts.map +1 -0
  45. package/cjs/clamp.js +32 -0
  46. package/cjs/clamp.js.map +1 -0
  47. package/cjs/clz32.d.ts +20 -0
  48. package/cjs/clz32.d.ts.map +1 -0
  49. package/cjs/clz32.js +48 -0
  50. package/cjs/clz32.js.map +1 -0
  51. package/cjs/constants/e.d.ts +17 -0
  52. package/cjs/constants/e.d.ts.map +1 -0
  53. package/cjs/constants/e.js +19 -0
  54. package/cjs/constants/e.js.map +1 -0
  55. package/cjs/constants/epsilon.d.ts +24 -0
  56. package/cjs/constants/epsilon.d.ts.map +1 -0
  57. package/cjs/constants/epsilon.js +26 -0
  58. package/cjs/constants/epsilon.js.map +1 -0
  59. package/cjs/constants/index.d.ts +23 -0
  60. package/cjs/constants/index.d.ts.map +1 -0
  61. package/cjs/constants/index.js +39 -0
  62. package/cjs/constants/index.js.map +1 -0
  63. package/cjs/constants/infinity.d.ts +3 -0
  64. package/cjs/constants/infinity.d.ts.map +1 -0
  65. package/cjs/constants/infinity.js +19 -0
  66. package/cjs/constants/infinity.js.map +1 -0
  67. package/cjs/constants/ln10.d.ts +10 -0
  68. package/cjs/constants/ln10.d.ts.map +1 -0
  69. package/cjs/constants/ln10.js +12 -0
  70. package/cjs/constants/ln10.js.map +1 -0
  71. package/cjs/constants/ln2.d.ts +10 -0
  72. package/cjs/constants/ln2.d.ts.map +1 -0
  73. package/cjs/constants/ln2.js +12 -0
  74. package/cjs/constants/ln2.js.map +1 -0
  75. package/cjs/constants/log10e.d.ts +10 -0
  76. package/cjs/constants/log10e.d.ts.map +1 -0
  77. package/cjs/constants/log10e.js +12 -0
  78. package/cjs/constants/log10e.js.map +1 -0
  79. package/cjs/constants/log2e.d.ts +10 -0
  80. package/cjs/constants/log2e.d.ts.map +1 -0
  81. package/cjs/constants/log2e.js +12 -0
  82. package/cjs/constants/log2e.js.map +1 -0
  83. package/cjs/constants/max_safe_integer.d.ts +11 -0
  84. package/cjs/constants/max_safe_integer.d.ts.map +1 -0
  85. package/cjs/constants/max_safe_integer.js +13 -0
  86. package/cjs/constants/max_safe_integer.js.map +1 -0
  87. package/cjs/constants/max_value.d.ts +10 -0
  88. package/cjs/constants/max_value.d.ts.map +1 -0
  89. package/cjs/constants/max_value.js +12 -0
  90. package/cjs/constants/max_value.js.map +1 -0
  91. package/cjs/constants/min_safe_integer.d.ts +12 -0
  92. package/cjs/constants/min_safe_integer.d.ts.map +1 -0
  93. package/cjs/constants/min_safe_integer.js +14 -0
  94. package/cjs/constants/min_safe_integer.js.map +1 -0
  95. package/cjs/constants/min_value.d.ts +10 -0
  96. package/cjs/constants/min_value.d.ts.map +1 -0
  97. package/cjs/constants/min_value.js +12 -0
  98. package/cjs/constants/min_value.js.map +1 -0
  99. package/cjs/constants/nan.d.ts +47 -0
  100. package/cjs/constants/nan.d.ts.map +1 -0
  101. package/cjs/constants/nan.js +30 -0
  102. package/cjs/constants/nan.js.map +1 -0
  103. package/cjs/constants/negative_infinity.d.ts +28 -0
  104. package/cjs/constants/negative_infinity.d.ts.map +1 -0
  105. package/cjs/constants/negative_infinity.js +15 -0
  106. package/cjs/constants/negative_infinity.js.map +1 -0
  107. package/cjs/constants/negative_zero.d.ts +31 -0
  108. package/cjs/constants/negative_zero.d.ts.map +1 -0
  109. package/cjs/constants/negative_zero.js +21 -0
  110. package/cjs/constants/negative_zero.js.map +1 -0
  111. package/cjs/constants/pi.d.ts +10 -0
  112. package/cjs/constants/pi.d.ts.map +1 -0
  113. package/cjs/constants/pi.js +12 -0
  114. package/cjs/constants/pi.js.map +1 -0
  115. package/cjs/constants/positive_infinity.d.ts +29 -0
  116. package/cjs/constants/positive_infinity.d.ts.map +1 -0
  117. package/cjs/constants/positive_infinity.js +16 -0
  118. package/cjs/constants/positive_infinity.js.map +1 -0
  119. package/cjs/constants/positive_zero.d.ts +38 -0
  120. package/cjs/constants/positive_zero.d.ts.map +1 -0
  121. package/cjs/constants/positive_zero.js +36 -0
  122. package/cjs/constants/positive_zero.js.map +1 -0
  123. package/cjs/constants/sqrt1_2.d.ts +9 -0
  124. package/cjs/constants/sqrt1_2.d.ts.map +1 -0
  125. package/cjs/constants/sqrt1_2.js +11 -0
  126. package/cjs/constants/sqrt1_2.js.map +1 -0
  127. package/cjs/constants/sqrt2.d.ts +9 -0
  128. package/cjs/constants/sqrt2.d.ts.map +1 -0
  129. package/cjs/constants/sqrt2.js +11 -0
  130. package/cjs/constants/sqrt2.js.map +1 -0
  131. package/cjs/cos.d.ts +10 -0
  132. package/cjs/cos.d.ts.map +1 -0
  133. package/cjs/cos.js +32 -0
  134. package/cjs/cos.js.map +1 -0
  135. package/cjs/cosh.d.ts +10 -0
  136. package/cjs/cosh.d.ts.map +1 -0
  137. package/cjs/cosh.js +21 -0
  138. package/cjs/cosh.js.map +1 -0
  139. package/cjs/exp.d.ts +20 -0
  140. package/cjs/exp.d.ts.map +1 -0
  141. package/cjs/exp.js +48 -0
  142. package/cjs/exp.js.map +1 -0
  143. package/cjs/expm1.d.ts +11 -0
  144. package/cjs/expm1.d.ts.map +1 -0
  145. package/cjs/expm1.js +38 -0
  146. package/cjs/expm1.js.map +1 -0
  147. package/cjs/f16round.d.ts +24 -0
  148. package/cjs/f16round.d.ts.map +1 -0
  149. package/cjs/f16round.js +42 -0
  150. package/cjs/f16round.js.map +1 -0
  151. package/cjs/float16/constants.d.ts +97 -0
  152. package/cjs/float16/constants.d.ts.map +1 -0
  153. package/cjs/float16/constants.js +99 -0
  154. package/cjs/float16/constants.js.map +1 -0
  155. package/cjs/float16/decode.d.ts +40 -0
  156. package/cjs/float16/decode.d.ts.map +1 -0
  157. package/cjs/float16/decode.js +67 -0
  158. package/cjs/float16/decode.js.map +1 -0
  159. package/cjs/float16/encode.d.ts +67 -0
  160. package/cjs/float16/encode.d.ts.map +1 -0
  161. package/cjs/float16/encode.js +77 -0
  162. package/cjs/float16/encode.js.map +1 -0
  163. package/cjs/float16/guards.d.ts +22 -0
  164. package/cjs/float16/guards.d.ts.map +1 -0
  165. package/cjs/float16/guards.js +15 -0
  166. package/cjs/float16/guards.js.map +1 -0
  167. package/cjs/float16/index.d.ts +11 -0
  168. package/cjs/float16/index.d.ts.map +1 -0
  169. package/cjs/float16/index.js +27 -0
  170. package/cjs/float16/index.js.map +1 -0
  171. package/cjs/float16/round.d.ts +25 -0
  172. package/cjs/float16/round.d.ts.map +1 -0
  173. package/cjs/float16/round.js +46 -0
  174. package/cjs/float16/round.js.map +1 -0
  175. package/cjs/float32/constants.d.ts +96 -0
  176. package/cjs/float32/constants.d.ts.map +1 -0
  177. package/cjs/float32/constants.js +98 -0
  178. package/cjs/float32/constants.js.map +1 -0
  179. package/cjs/float32/decode.d.ts +38 -0
  180. package/cjs/float32/decode.d.ts.map +1 -0
  181. package/cjs/float32/decode.js +70 -0
  182. package/cjs/float32/decode.js.map +1 -0
  183. package/cjs/float32/encode.d.ts +50 -0
  184. package/cjs/float32/encode.d.ts.map +1 -0
  185. package/cjs/float32/encode.js +77 -0
  186. package/cjs/float32/encode.js.map +1 -0
  187. package/cjs/float32/guards.d.ts +37 -0
  188. package/cjs/float32/guards.d.ts.map +1 -0
  189. package/cjs/float32/guards.js +20 -0
  190. package/cjs/float32/guards.js.map +1 -0
  191. package/cjs/float32/index.d.ts +11 -0
  192. package/cjs/float32/index.d.ts.map +1 -0
  193. package/cjs/float32/index.js +27 -0
  194. package/cjs/float32/index.js.map +1 -0
  195. package/cjs/float32/round.d.ts +23 -0
  196. package/cjs/float32/round.d.ts.map +1 -0
  197. package/cjs/float32/round.js +36 -0
  198. package/cjs/float32/round.js.map +1 -0
  199. package/cjs/floor.d.ts +10 -0
  200. package/cjs/floor.d.ts.map +1 -0
  201. package/cjs/floor.js +32 -0
  202. package/cjs/floor.js.map +1 -0
  203. package/cjs/fround.d.ts +23 -0
  204. package/cjs/fround.d.ts.map +1 -0
  205. package/cjs/fround.js +35 -0
  206. package/cjs/fround.js.map +1 -0
  207. package/cjs/guards/finite.d.ts +23 -0
  208. package/cjs/guards/finite.d.ts.map +1 -0
  209. package/cjs/guards/finite.js +21 -0
  210. package/cjs/guards/finite.js.map +1 -0
  211. package/cjs/guards/index.d.ts +50 -0
  212. package/cjs/guards/index.d.ts.map +1 -0
  213. package/cjs/guards/index.js +66 -0
  214. package/cjs/guards/index.js.map +1 -0
  215. package/cjs/guards/infinity.d.ts +3 -0
  216. package/cjs/guards/infinity.d.ts.map +1 -0
  217. package/cjs/guards/infinity.js +19 -0
  218. package/cjs/guards/infinity.js.map +1 -0
  219. package/cjs/guards/integer.d.ts +47 -0
  220. package/cjs/guards/integer.d.ts.map +1 -0
  221. package/cjs/guards/integer.js +23 -0
  222. package/cjs/guards/integer.js.map +1 -0
  223. package/cjs/guards/nan.d.ts +61 -0
  224. package/cjs/guards/nan.d.ts.map +1 -0
  225. package/cjs/guards/nan.js +68 -0
  226. package/cjs/guards/nan.js.map +1 -0
  227. package/cjs/guards/negative_infinity.d.ts +19 -0
  228. package/cjs/guards/negative_infinity.d.ts.map +1 -0
  229. package/cjs/guards/negative_infinity.js +25 -0
  230. package/cjs/guards/negative_infinity.js.map +1 -0
  231. package/cjs/guards/negative_zero.d.ts +12 -0
  232. package/cjs/guards/negative_zero.d.ts.map +1 -0
  233. package/cjs/guards/negative_zero.js +24 -0
  234. package/cjs/guards/negative_zero.js.map +1 -0
  235. package/cjs/guards/positive_infinity.d.ts +19 -0
  236. package/cjs/guards/positive_infinity.d.ts.map +1 -0
  237. package/cjs/guards/positive_infinity.js +25 -0
  238. package/cjs/guards/positive_infinity.js.map +1 -0
  239. package/cjs/guards/positive_zero.d.ts +17 -0
  240. package/cjs/guards/positive_zero.d.ts.map +1 -0
  241. package/cjs/guards/positive_zero.js +36 -0
  242. package/cjs/guards/positive_zero.js.map +1 -0
  243. package/cjs/guards/safe_integer.d.ts +33 -0
  244. package/cjs/guards/safe_integer.d.ts.map +1 -0
  245. package/cjs/guards/safe_integer.js +27 -0
  246. package/cjs/guards/safe_integer.js.map +1 -0
  247. package/cjs/hypot.d.ts +18 -0
  248. package/cjs/hypot.d.ts.map +1 -0
  249. package/cjs/hypot.js +63 -0
  250. package/cjs/hypot.js.map +1 -0
  251. package/cjs/ieee754.d.ts +16 -0
  252. package/cjs/ieee754.d.ts.map +1 -0
  253. package/cjs/ieee754.js +32 -0
  254. package/cjs/ieee754.js.map +1 -0
  255. package/cjs/imul.d.ts +17 -0
  256. package/cjs/imul.d.ts.map +1 -0
  257. package/cjs/imul.js +24 -0
  258. package/cjs/imul.js.map +1 -0
  259. package/cjs/index.d.ts +84 -0
  260. package/cjs/index.d.ts.map +1 -0
  261. package/cjs/index.js +113 -0
  262. package/cjs/index.js.map +1 -0
  263. package/cjs/internal/ieee754.d.ts +174 -0
  264. package/cjs/internal/ieee754.d.ts.map +1 -0
  265. package/cjs/internal/ieee754.js +200 -0
  266. package/cjs/internal/ieee754.js.map +1 -0
  267. package/cjs/internal/primordials.d.ts +30 -0
  268. package/cjs/internal/primordials.d.ts.map +1 -0
  269. package/cjs/internal/primordials.js +30 -0
  270. package/cjs/internal/primordials.js.map +1 -0
  271. package/cjs/log.d.ts +9 -0
  272. package/cjs/log.d.ts.map +1 -0
  273. package/cjs/log.js +46 -0
  274. package/cjs/log.js.map +1 -0
  275. package/cjs/log10.d.ts +9 -0
  276. package/cjs/log10.d.ts.map +1 -0
  277. package/cjs/log10.js +21 -0
  278. package/cjs/log10.js.map +1 -0
  279. package/cjs/log1p.d.ts +10 -0
  280. package/cjs/log1p.d.ts.map +1 -0
  281. package/cjs/log1p.js +32 -0
  282. package/cjs/log1p.js.map +1 -0
  283. package/cjs/log2.d.ts +12 -0
  284. package/cjs/log2.d.ts.map +1 -0
  285. package/cjs/log2.js +24 -0
  286. package/cjs/log2.js.map +1 -0
  287. package/cjs/max.d.ts +22 -0
  288. package/cjs/max.d.ts.map +1 -0
  289. package/cjs/max.js +51 -0
  290. package/cjs/max.js.map +1 -0
  291. package/cjs/min.d.ts +10 -0
  292. package/cjs/min.d.ts.map +1 -0
  293. package/cjs/min.js +36 -0
  294. package/cjs/min.js.map +1 -0
  295. package/cjs/package.json +3 -0
  296. package/cjs/pow.d.ts +31 -0
  297. package/cjs/pow.d.ts.map +1 -0
  298. package/cjs/pow.js +36 -0
  299. package/cjs/pow.js.map +1 -0
  300. package/cjs/random.d.ts +93 -0
  301. package/cjs/random.d.ts.map +1 -0
  302. package/cjs/random.js +242 -0
  303. package/cjs/random.js.map +1 -0
  304. package/cjs/round.d.ts +9 -0
  305. package/cjs/round.d.ts.map +1 -0
  306. package/cjs/round.js +24 -0
  307. package/cjs/round.js.map +1 -0
  308. package/cjs/sign.d.ts +17 -0
  309. package/cjs/sign.d.ts.map +1 -0
  310. package/cjs/sign.js +22 -0
  311. package/cjs/sign.js.map +1 -0
  312. package/cjs/sin.d.ts +14 -0
  313. package/cjs/sin.d.ts.map +1 -0
  314. package/cjs/sin.js +31 -0
  315. package/cjs/sin.js.map +1 -0
  316. package/cjs/sinh.d.ts +14 -0
  317. package/cjs/sinh.d.ts.map +1 -0
  318. package/cjs/sinh.js +22 -0
  319. package/cjs/sinh.js.map +1 -0
  320. package/cjs/sqrt.d.ts +19 -0
  321. package/cjs/sqrt.d.ts.map +1 -0
  322. package/cjs/sqrt.js +45 -0
  323. package/cjs/sqrt.js.map +1 -0
  324. package/cjs/tan.d.ts +9 -0
  325. package/cjs/tan.d.ts.map +1 -0
  326. package/cjs/tan.js +26 -0
  327. package/cjs/tan.js.map +1 -0
  328. package/cjs/tanh.d.ts +17 -0
  329. package/cjs/tanh.d.ts.map +1 -0
  330. package/cjs/tanh.js +34 -0
  331. package/cjs/tanh.js.map +1 -0
  332. package/cjs/trunc.d.ts +21 -0
  333. package/cjs/trunc.d.ts.map +1 -0
  334. package/cjs/trunc.js +50 -0
  335. package/cjs/trunc.js.map +1 -0
  336. package/cjs/types/finite.d.ts +16 -0
  337. package/cjs/types/finite.d.ts.map +1 -0
  338. package/cjs/types/finite.js +4 -0
  339. package/cjs/types/finite.js.map +1 -0
  340. package/cjs/types/float.d.ts +65 -0
  341. package/cjs/types/float.d.ts.map +1 -0
  342. package/cjs/types/float.js +4 -0
  343. package/cjs/types/float.js.map +1 -0
  344. package/cjs/types/index.d.ts +6 -0
  345. package/cjs/types/index.d.ts.map +1 -0
  346. package/cjs/types/index.js +22 -0
  347. package/cjs/types/index.js.map +1 -0
  348. package/cjs/types/integer.d.ts +147 -0
  349. package/cjs/types/integer.d.ts.map +1 -0
  350. package/cjs/types/integer.js +5 -0
  351. package/cjs/types/integer.js.map +1 -0
  352. package/cjs/types/precision.d.ts +46 -0
  353. package/cjs/types/precision.d.ts.map +1 -0
  354. package/cjs/types/precision.js +9 -0
  355. package/cjs/types/precision.js.map +1 -0
  356. package/cjs/types/safe_integer.d.ts +17 -0
  357. package/cjs/types/safe_integer.d.ts.map +1 -0
  358. package/cjs/types/safe_integer.js +5 -0
  359. package/cjs/types/safe_integer.js.map +1 -0
  360. package/esm/abs.d.ts +14 -0
  361. package/esm/abs.d.ts.map +1 -0
  362. package/esm/abs.js +19 -0
  363. package/esm/abs.js.map +1 -0
  364. package/esm/acos.d.ts +17 -0
  365. package/esm/acos.d.ts.map +1 -0
  366. package/esm/acos.js +24 -0
  367. package/esm/acos.js.map +1 -0
  368. package/esm/acosh.d.ts +11 -0
  369. package/esm/acosh.d.ts.map +1 -0
  370. package/esm/acosh.js +32 -0
  371. package/esm/acosh.js.map +1 -0
  372. package/esm/asin.d.ts +11 -0
  373. package/esm/asin.d.ts.map +1 -0
  374. package/esm/asin.js +25 -0
  375. package/esm/asin.js.map +1 -0
  376. package/esm/asinh.d.ts +9 -0
  377. package/esm/asinh.d.ts.map +1 -0
  378. package/esm/asinh.js +23 -0
  379. package/esm/asinh.js.map +1 -0
  380. package/esm/atan.d.ts +11 -0
  381. package/esm/atan.d.ts.map +1 -0
  382. package/esm/atan.js +62 -0
  383. package/esm/atan.js.map +1 -0
  384. package/esm/atan2.d.ts +12 -0
  385. package/esm/atan2.d.ts.map +1 -0
  386. package/esm/atan2.js +67 -0
  387. package/esm/atan2.js.map +1 -0
  388. package/esm/atanh.d.ts +11 -0
  389. package/esm/atanh.d.ts.map +1 -0
  390. package/esm/atanh.js +29 -0
  391. package/esm/atanh.js.map +1 -0
  392. package/esm/cbrt.d.ts +9 -0
  393. package/esm/cbrt.d.ts.map +1 -0
  394. package/esm/cbrt.js +23 -0
  395. package/esm/cbrt.js.map +1 -0
  396. package/esm/ceil.d.ts +15 -0
  397. package/esm/ceil.d.ts.map +1 -0
  398. package/esm/ceil.js +31 -0
  399. package/esm/ceil.js.map +1 -0
  400. package/esm/clamp.d.ts +15 -0
  401. package/esm/clamp.d.ts.map +1 -0
  402. package/esm/clamp.js +29 -0
  403. package/esm/clamp.js.map +1 -0
  404. package/esm/clz32.d.ts +20 -0
  405. package/esm/clz32.d.ts.map +1 -0
  406. package/esm/clz32.js +45 -0
  407. package/esm/clz32.js.map +1 -0
  408. package/esm/constants/e.d.ts +17 -0
  409. package/esm/constants/e.d.ts.map +1 -0
  410. package/esm/constants/e.js +16 -0
  411. package/esm/constants/e.js.map +1 -0
  412. package/esm/constants/epsilon.d.ts +24 -0
  413. package/esm/constants/epsilon.d.ts.map +1 -0
  414. package/esm/constants/epsilon.js +23 -0
  415. package/esm/constants/epsilon.js.map +1 -0
  416. package/esm/constants/index.d.ts +23 -0
  417. package/esm/constants/index.d.ts.map +1 -0
  418. package/esm/constants/index.js +23 -0
  419. package/esm/constants/index.js.map +1 -0
  420. package/esm/constants/infinity.d.ts +3 -0
  421. package/esm/constants/infinity.d.ts.map +1 -0
  422. package/esm/constants/infinity.js +3 -0
  423. package/esm/constants/infinity.js.map +1 -0
  424. package/esm/constants/ln10.d.ts +10 -0
  425. package/esm/constants/ln10.d.ts.map +1 -0
  426. package/esm/constants/ln10.js +9 -0
  427. package/esm/constants/ln10.js.map +1 -0
  428. package/esm/constants/ln2.d.ts +10 -0
  429. package/esm/constants/ln2.d.ts.map +1 -0
  430. package/esm/constants/ln2.js +9 -0
  431. package/esm/constants/ln2.js.map +1 -0
  432. package/esm/constants/log10e.d.ts +10 -0
  433. package/esm/constants/log10e.d.ts.map +1 -0
  434. package/esm/constants/log10e.js +9 -0
  435. package/esm/constants/log10e.js.map +1 -0
  436. package/esm/constants/log2e.d.ts +10 -0
  437. package/esm/constants/log2e.d.ts.map +1 -0
  438. package/esm/constants/log2e.js +9 -0
  439. package/esm/constants/log2e.js.map +1 -0
  440. package/esm/constants/max_safe_integer.d.ts +11 -0
  441. package/esm/constants/max_safe_integer.d.ts.map +1 -0
  442. package/esm/constants/max_safe_integer.js +10 -0
  443. package/esm/constants/max_safe_integer.js.map +1 -0
  444. package/esm/constants/max_value.d.ts +10 -0
  445. package/esm/constants/max_value.d.ts.map +1 -0
  446. package/esm/constants/max_value.js +9 -0
  447. package/esm/constants/max_value.js.map +1 -0
  448. package/esm/constants/min_safe_integer.d.ts +12 -0
  449. package/esm/constants/min_safe_integer.d.ts.map +1 -0
  450. package/esm/constants/min_safe_integer.js +11 -0
  451. package/esm/constants/min_safe_integer.js.map +1 -0
  452. package/esm/constants/min_value.d.ts +10 -0
  453. package/esm/constants/min_value.d.ts.map +1 -0
  454. package/esm/constants/min_value.js +9 -0
  455. package/esm/constants/min_value.js.map +1 -0
  456. package/esm/constants/nan.d.ts +47 -0
  457. package/esm/constants/nan.d.ts.map +1 -0
  458. package/esm/constants/nan.js +27 -0
  459. package/esm/constants/nan.js.map +1 -0
  460. package/esm/constants/negative_infinity.d.ts +28 -0
  461. package/esm/constants/negative_infinity.d.ts.map +1 -0
  462. package/esm/constants/negative_infinity.js +12 -0
  463. package/esm/constants/negative_infinity.js.map +1 -0
  464. package/esm/constants/negative_zero.d.ts +31 -0
  465. package/esm/constants/negative_zero.d.ts.map +1 -0
  466. package/esm/constants/negative_zero.js +18 -0
  467. package/esm/constants/negative_zero.js.map +1 -0
  468. package/esm/constants/pi.d.ts +10 -0
  469. package/esm/constants/pi.d.ts.map +1 -0
  470. package/esm/constants/pi.js +9 -0
  471. package/esm/constants/pi.js.map +1 -0
  472. package/esm/constants/positive_infinity.d.ts +29 -0
  473. package/esm/constants/positive_infinity.d.ts.map +1 -0
  474. package/esm/constants/positive_infinity.js +13 -0
  475. package/esm/constants/positive_infinity.js.map +1 -0
  476. package/esm/constants/positive_zero.d.ts +38 -0
  477. package/esm/constants/positive_zero.d.ts.map +1 -0
  478. package/esm/constants/positive_zero.js +33 -0
  479. package/esm/constants/positive_zero.js.map +1 -0
  480. package/esm/constants/sqrt1_2.d.ts +9 -0
  481. package/esm/constants/sqrt1_2.d.ts.map +1 -0
  482. package/esm/constants/sqrt1_2.js +8 -0
  483. package/esm/constants/sqrt1_2.js.map +1 -0
  484. package/esm/constants/sqrt2.d.ts +9 -0
  485. package/esm/constants/sqrt2.d.ts.map +1 -0
  486. package/esm/constants/sqrt2.js +8 -0
  487. package/esm/constants/sqrt2.js.map +1 -0
  488. package/esm/cos.d.ts +10 -0
  489. package/esm/cos.d.ts.map +1 -0
  490. package/esm/cos.js +29 -0
  491. package/esm/cos.js.map +1 -0
  492. package/esm/cosh.d.ts +10 -0
  493. package/esm/cosh.d.ts.map +1 -0
  494. package/esm/cosh.js +18 -0
  495. package/esm/cosh.js.map +1 -0
  496. package/esm/exp.d.ts +20 -0
  497. package/esm/exp.d.ts.map +1 -0
  498. package/esm/exp.js +45 -0
  499. package/esm/exp.js.map +1 -0
  500. package/esm/expm1.d.ts +11 -0
  501. package/esm/expm1.d.ts.map +1 -0
  502. package/esm/expm1.js +35 -0
  503. package/esm/expm1.js.map +1 -0
  504. package/esm/f16round.d.ts +24 -0
  505. package/esm/f16round.d.ts.map +1 -0
  506. package/esm/f16round.js +39 -0
  507. package/esm/f16round.js.map +1 -0
  508. package/esm/float16/constants.d.ts +97 -0
  509. package/esm/float16/constants.d.ts.map +1 -0
  510. package/esm/float16/constants.js +96 -0
  511. package/esm/float16/constants.js.map +1 -0
  512. package/esm/float16/decode.d.ts +40 -0
  513. package/esm/float16/decode.d.ts.map +1 -0
  514. package/esm/float16/decode.js +61 -0
  515. package/esm/float16/decode.js.map +1 -0
  516. package/esm/float16/encode.d.ts +67 -0
  517. package/esm/float16/encode.d.ts.map +1 -0
  518. package/esm/float16/encode.js +71 -0
  519. package/esm/float16/encode.js.map +1 -0
  520. package/esm/float16/guards.d.ts +22 -0
  521. package/esm/float16/guards.d.ts.map +1 -0
  522. package/esm/float16/guards.js +12 -0
  523. package/esm/float16/guards.js.map +1 -0
  524. package/esm/float16/index.d.ts +11 -0
  525. package/esm/float16/index.d.ts.map +1 -0
  526. package/esm/float16/index.js +11 -0
  527. package/esm/float16/index.js.map +1 -0
  528. package/esm/float16/round.d.ts +25 -0
  529. package/esm/float16/round.d.ts.map +1 -0
  530. package/esm/float16/round.js +43 -0
  531. package/esm/float16/round.js.map +1 -0
  532. package/esm/float32/constants.d.ts +96 -0
  533. package/esm/float32/constants.d.ts.map +1 -0
  534. package/esm/float32/constants.js +95 -0
  535. package/esm/float32/constants.js.map +1 -0
  536. package/esm/float32/decode.d.ts +38 -0
  537. package/esm/float32/decode.d.ts.map +1 -0
  538. package/esm/float32/decode.js +64 -0
  539. package/esm/float32/decode.js.map +1 -0
  540. package/esm/float32/encode.d.ts +50 -0
  541. package/esm/float32/encode.d.ts.map +1 -0
  542. package/esm/float32/encode.js +71 -0
  543. package/esm/float32/encode.js.map +1 -0
  544. package/esm/float32/guards.d.ts +37 -0
  545. package/esm/float32/guards.d.ts.map +1 -0
  546. package/esm/float32/guards.js +16 -0
  547. package/esm/float32/guards.js.map +1 -0
  548. package/esm/float32/index.d.ts +11 -0
  549. package/esm/float32/index.d.ts.map +1 -0
  550. package/esm/float32/index.js +11 -0
  551. package/esm/float32/index.js.map +1 -0
  552. package/esm/float32/round.d.ts +23 -0
  553. package/esm/float32/round.d.ts.map +1 -0
  554. package/esm/float32/round.js +33 -0
  555. package/esm/float32/round.js.map +1 -0
  556. package/esm/floor.d.ts +10 -0
  557. package/esm/floor.d.ts.map +1 -0
  558. package/esm/floor.js +29 -0
  559. package/esm/floor.js.map +1 -0
  560. package/esm/fround.d.ts +23 -0
  561. package/esm/fround.d.ts.map +1 -0
  562. package/esm/fround.js +32 -0
  563. package/esm/fround.js.map +1 -0
  564. package/esm/guards/finite.d.ts +23 -0
  565. package/esm/guards/finite.d.ts.map +1 -0
  566. package/esm/guards/finite.js +18 -0
  567. package/esm/guards/finite.js.map +1 -0
  568. package/esm/guards/index.d.ts +50 -0
  569. package/esm/guards/index.d.ts.map +1 -0
  570. package/esm/guards/index.js +50 -0
  571. package/esm/guards/index.js.map +1 -0
  572. package/esm/guards/infinity.d.ts +3 -0
  573. package/esm/guards/infinity.d.ts.map +1 -0
  574. package/esm/guards/infinity.js +3 -0
  575. package/esm/guards/infinity.js.map +1 -0
  576. package/esm/guards/integer.d.ts +47 -0
  577. package/esm/guards/integer.d.ts.map +1 -0
  578. package/esm/guards/integer.js +19 -0
  579. package/esm/guards/integer.js.map +1 -0
  580. package/esm/guards/nan.d.ts +61 -0
  581. package/esm/guards/nan.d.ts.map +1 -0
  582. package/esm/guards/nan.js +63 -0
  583. package/esm/guards/nan.js.map +1 -0
  584. package/esm/guards/negative_infinity.d.ts +19 -0
  585. package/esm/guards/negative_infinity.d.ts.map +1 -0
  586. package/esm/guards/negative_infinity.js +21 -0
  587. package/esm/guards/negative_infinity.js.map +1 -0
  588. package/esm/guards/negative_zero.d.ts +12 -0
  589. package/esm/guards/negative_zero.d.ts.map +1 -0
  590. package/esm/guards/negative_zero.js +20 -0
  591. package/esm/guards/negative_zero.js.map +1 -0
  592. package/esm/guards/positive_infinity.d.ts +19 -0
  593. package/esm/guards/positive_infinity.d.ts.map +1 -0
  594. package/esm/guards/positive_infinity.js +21 -0
  595. package/esm/guards/positive_infinity.js.map +1 -0
  596. package/esm/guards/positive_zero.d.ts +17 -0
  597. package/esm/guards/positive_zero.d.ts.map +1 -0
  598. package/esm/guards/positive_zero.js +19 -0
  599. package/esm/guards/positive_zero.js.map +1 -0
  600. package/esm/guards/safe_integer.d.ts +33 -0
  601. package/esm/guards/safe_integer.d.ts.map +1 -0
  602. package/esm/guards/safe_integer.js +22 -0
  603. package/esm/guards/safe_integer.js.map +1 -0
  604. package/esm/hypot.d.ts +18 -0
  605. package/esm/hypot.d.ts.map +1 -0
  606. package/esm/hypot.js +60 -0
  607. package/esm/hypot.js.map +1 -0
  608. package/esm/ieee754.d.ts +16 -0
  609. package/esm/ieee754.d.ts.map +1 -0
  610. package/esm/ieee754.js +16 -0
  611. package/esm/ieee754.js.map +1 -0
  612. package/esm/imul.d.ts +17 -0
  613. package/esm/imul.d.ts.map +1 -0
  614. package/esm/imul.js +21 -0
  615. package/esm/imul.js.map +1 -0
  616. package/esm/index.d.ts +84 -0
  617. package/esm/index.d.ts.map +1 -0
  618. package/esm/index.js +84 -0
  619. package/esm/index.js.map +1 -0
  620. package/esm/internal/ieee754.d.ts +174 -0
  621. package/esm/internal/ieee754.d.ts.map +1 -0
  622. package/esm/internal/ieee754.js +194 -0
  623. package/esm/internal/ieee754.js.map +1 -0
  624. package/esm/internal/primordials.d.ts +30 -0
  625. package/esm/internal/primordials.d.ts.map +1 -0
  626. package/esm/internal/primordials.js +27 -0
  627. package/esm/internal/primordials.js.map +1 -0
  628. package/esm/log.d.ts +9 -0
  629. package/esm/log.d.ts.map +1 -0
  630. package/esm/log.js +43 -0
  631. package/esm/log.js.map +1 -0
  632. package/esm/log10.d.ts +9 -0
  633. package/esm/log10.d.ts.map +1 -0
  634. package/esm/log10.js +18 -0
  635. package/esm/log10.js.map +1 -0
  636. package/esm/log1p.d.ts +10 -0
  637. package/esm/log1p.d.ts.map +1 -0
  638. package/esm/log1p.js +29 -0
  639. package/esm/log1p.js.map +1 -0
  640. package/esm/log2.d.ts +12 -0
  641. package/esm/log2.d.ts.map +1 -0
  642. package/esm/log2.js +21 -0
  643. package/esm/log2.js.map +1 -0
  644. package/esm/max.d.ts +22 -0
  645. package/esm/max.d.ts.map +1 -0
  646. package/esm/max.js +48 -0
  647. package/esm/max.js.map +1 -0
  648. package/esm/min.d.ts +10 -0
  649. package/esm/min.d.ts.map +1 -0
  650. package/esm/min.js +33 -0
  651. package/esm/min.js.map +1 -0
  652. package/esm/package.json +3 -0
  653. package/esm/pow.d.ts +31 -0
  654. package/esm/pow.d.ts.map +1 -0
  655. package/esm/pow.js +33 -0
  656. package/esm/pow.js.map +1 -0
  657. package/esm/random.d.ts +93 -0
  658. package/esm/random.d.ts.map +1 -0
  659. package/esm/random.js +237 -0
  660. package/esm/random.js.map +1 -0
  661. package/esm/round.d.ts +9 -0
  662. package/esm/round.d.ts.map +1 -0
  663. package/esm/round.js +21 -0
  664. package/esm/round.js.map +1 -0
  665. package/esm/sign.d.ts +17 -0
  666. package/esm/sign.d.ts.map +1 -0
  667. package/esm/sign.js +19 -0
  668. package/esm/sign.js.map +1 -0
  669. package/esm/sin.d.ts +14 -0
  670. package/esm/sin.d.ts.map +1 -0
  671. package/esm/sin.js +28 -0
  672. package/esm/sin.js.map +1 -0
  673. package/esm/sinh.d.ts +14 -0
  674. package/esm/sinh.d.ts.map +1 -0
  675. package/esm/sinh.js +19 -0
  676. package/esm/sinh.js.map +1 -0
  677. package/esm/sqrt.d.ts +19 -0
  678. package/esm/sqrt.d.ts.map +1 -0
  679. package/esm/sqrt.js +42 -0
  680. package/esm/sqrt.js.map +1 -0
  681. package/esm/tan.d.ts +9 -0
  682. package/esm/tan.d.ts.map +1 -0
  683. package/esm/tan.js +23 -0
  684. package/esm/tan.js.map +1 -0
  685. package/esm/tanh.d.ts +17 -0
  686. package/esm/tanh.d.ts.map +1 -0
  687. package/esm/tanh.js +31 -0
  688. package/esm/tanh.js.map +1 -0
  689. package/esm/trunc.d.ts +21 -0
  690. package/esm/trunc.d.ts.map +1 -0
  691. package/esm/trunc.js +47 -0
  692. package/esm/trunc.js.map +1 -0
  693. package/esm/types/finite.d.ts +16 -0
  694. package/esm/types/finite.d.ts.map +1 -0
  695. package/esm/types/finite.js +3 -0
  696. package/esm/types/finite.js.map +1 -0
  697. package/esm/types/float.d.ts +65 -0
  698. package/esm/types/float.d.ts.map +1 -0
  699. package/esm/types/float.js +3 -0
  700. package/esm/types/float.js.map +1 -0
  701. package/esm/types/index.d.ts +6 -0
  702. package/esm/types/index.d.ts.map +1 -0
  703. package/esm/types/index.js +6 -0
  704. package/esm/types/index.js.map +1 -0
  705. package/esm/types/integer.d.ts +147 -0
  706. package/esm/types/integer.d.ts.map +1 -0
  707. package/esm/types/integer.js +4 -0
  708. package/esm/types/integer.js.map +1 -0
  709. package/esm/types/precision.d.ts +46 -0
  710. package/esm/types/precision.d.ts.map +1 -0
  711. package/esm/types/precision.js +8 -0
  712. package/esm/types/precision.js.map +1 -0
  713. package/esm/types/safe_integer.d.ts +17 -0
  714. package/esm/types/safe_integer.d.ts.map +1 -0
  715. package/esm/types/safe_integer.js +4 -0
  716. package/esm/types/safe_integer.js.map +1 -0
  717. package/package.json +1834 -0
  718. package/src/abs.ts +18 -0
  719. package/src/acos.ts +24 -0
  720. package/src/acosh.ts +28 -0
  721. package/src/asin.ts +24 -0
  722. package/src/asinh.ts +21 -0
  723. package/src/atan.ts +64 -0
  724. package/src/atan2.ts +58 -0
  725. package/src/atanh.ts +26 -0
  726. package/src/cbrt.ts +22 -0
  727. package/src/ceil.ts +27 -0
  728. package/src/clamp.ts +29 -0
  729. package/src/clz32.ts +45 -0
  730. package/src/constants/e.ts +18 -0
  731. package/src/constants/epsilon.ts +25 -0
  732. package/src/constants/index.ts +22 -0
  733. package/src/constants/infinity.ts +2 -0
  734. package/src/constants/ln10.ts +9 -0
  735. package/src/constants/ln2.ts +9 -0
  736. package/src/constants/log10e.ts +9 -0
  737. package/src/constants/log2e.ts +9 -0
  738. package/src/constants/max_safe_integer.ts +10 -0
  739. package/src/constants/max_value.ts +9 -0
  740. package/src/constants/min_safe_integer.ts +11 -0
  741. package/src/constants/min_value.ts +9 -0
  742. package/src/constants/nan.ts +57 -0
  743. package/src/constants/negative_infinity.ts +28 -0
  744. package/src/constants/negative_zero.ts +34 -0
  745. package/src/constants/pi.ts +9 -0
  746. package/src/constants/positive_infinity.ts +30 -0
  747. package/src/constants/positive_zero.ts +41 -0
  748. package/src/constants/sqrt1_2.ts +8 -0
  749. package/src/constants/sqrt2.ts +8 -0
  750. package/src/cos.ts +29 -0
  751. package/src/cosh.ts +18 -0
  752. package/src/exp.ts +45 -0
  753. package/src/expm1.ts +31 -0
  754. package/src/f16round.ts +39 -0
  755. package/src/float16/constants.ts +106 -0
  756. package/src/float16/decode.ts +61 -0
  757. package/src/float16/encode.ts +72 -0
  758. package/src/float16/guards.ts +33 -0
  759. package/src/float16/index.ts +10 -0
  760. package/src/float16/round.ts +43 -0
  761. package/src/float32/constants.ts +105 -0
  762. package/src/float32/decode.ts +64 -0
  763. package/src/float32/encode.ts +71 -0
  764. package/src/float32/guards.ts +54 -0
  765. package/src/float32/index.ts +10 -0
  766. package/src/float32/round.ts +33 -0
  767. package/src/floor.ts +26 -0
  768. package/src/fround.ts +32 -0
  769. package/src/guards/finite.ts +45 -0
  770. package/src/guards/index.ts +49 -0
  771. package/src/guards/infinity.ts +2 -0
  772. package/src/guards/integer.ts +62 -0
  773. package/src/guards/nan.ts +65 -0
  774. package/src/guards/negative_infinity.ts +22 -0
  775. package/src/guards/negative_zero.ts +21 -0
  776. package/src/guards/positive_infinity.ts +22 -0
  777. package/src/guards/positive_zero.ts +19 -0
  778. package/src/guards/safe_integer.ts +56 -0
  779. package/src/hypot.ts +59 -0
  780. package/src/ieee754.ts +15 -0
  781. package/src/imul.ts +21 -0
  782. package/src/index.ts +84 -0
  783. package/src/internal/ieee754.ts +255 -0
  784. package/src/internal/primordials.ts +33 -0
  785. package/src/log.ts +42 -0
  786. package/src/log10.ts +18 -0
  787. package/src/log1p.ts +26 -0
  788. package/src/log2.ts +21 -0
  789. package/src/max.ts +46 -0
  790. package/src/min.ts +32 -0
  791. package/src/pow.ts +33 -0
  792. package/src/random.ts +241 -0
  793. package/src/round.ts +20 -0
  794. package/src/sign.ts +19 -0
  795. package/src/sin.ts +29 -0
  796. package/src/sinh.ts +19 -0
  797. package/src/sqrt.ts +40 -0
  798. package/src/tan.ts +22 -0
  799. package/src/tanh.ts +28 -0
  800. package/src/trunc.ts +44 -0
  801. package/src/types/finite.ts +23 -0
  802. package/src/types/float.ts +74 -0
  803. package/src/types/index.ts +5 -0
  804. package/src/types/integer.ts +167 -0
  805. package/src/types/precision.ts +51 -0
  806. package/src/types/safe_integer.ts +18 -0
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Checks if the provided number is `+Infinity` (positive infinity), in a way
3
+ * that is immune to any global variable shadowing or reassignment.
4
+ *
5
+ * @module positive-infinity
6
+ */
7
+ import { POSITIVE_INFINITY } from "../constants/positive_infinity.js";
8
+
9
+ /**
10
+ * Checks if the provided number is `+Infinity` (positive infinity), in a way
11
+ * that is immune to any global variable shadowing or reassignment.
12
+ *
13
+ * @param it The number to check for positive infinity.
14
+ * @returns `true` if the provided number is `+Infinity`, otherwise `false`.
15
+ * @category Guards
16
+ * @tags Positive Infinity
17
+ */
18
+ export function isPositiveInfinity(it: number): it is POSITIVE_INFINITY {
19
+ return +it === POSITIVE_INFINITY;
20
+ }
21
+
22
+ export { POSITIVE_INFINITY };
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Checks if the provided number is exactly positive zero (`+0`). This is a
3
+ * stricter than `x === 0`, as it will return `false` for `-0`.
4
+ *
5
+ * @module positive-zero
6
+ */
7
+ export * from "../constants/positive_zero.js";
8
+
9
+ /**
10
+ * Checks if the provided number is a positive zero (`+0`).
11
+ *
12
+ * @param it The number to check.
13
+ * @returns `true` if the provided number is exactly `+0`, otherwise `false`.
14
+ * @category Guards
15
+ * @tags Positive Zero
16
+ */
17
+ export function isPositiveZero(it: number): it is 0 {
18
+ return (it = +it) === 0 && (1 / it) === (1 / 0);
19
+ }
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Check if a value is a safe integer within the range of `MIN_SAFE_INTEGER`
3
+ * (`-2^53 + 1`) and `MAX_SAFE_INTEGER` (`2^53 - 1`).
4
+ *
5
+ * This is a dependency-free, performant implementation that is functionally-
6
+ * equivalent to the native `Number.isSafeInteger` function.
7
+ *
8
+ * Note: This guard **does not coerce its input to a number** beforehand. The
9
+ * value passed for `number` must already satisfy `typeof number === "number"`.
10
+ *
11
+ * @module safe-integer
12
+ */
13
+ import { isFinite } from "./finite.js";
14
+ import { MAX_SAFE_INTEGER } from "../constants/max_safe_integer.js";
15
+ import { MIN_SAFE_INTEGER } from "../constants/min_safe_integer.js";
16
+ import type { SafeInteger } from "../types/safe_integer.js";
17
+
18
+ /**
19
+ * Check if a value is a safe integer within the range of `MIN_SAFE_INTEGER`
20
+ * (`-2^53 + 1`) and `MAX_SAFE_INTEGER` (`2^53 - 1`).
21
+ *
22
+ * This is a dependency-free, performant implementation that is functionally-
23
+ * equivalent to the native `Number.isSafeInteger` function.
24
+ *
25
+ * Note: This guard **does not coerce its input to a number** beforehand. The
26
+ * value passed for `number` must already satisfy `typeof number === "number"`.
27
+ *
28
+ * @template {number} N The type of numeric value to check.
29
+ * @param number The value to check.
30
+ * @returns `true` if the value is a safe integer, `false` otherwise.
31
+ * @category Guards
32
+ * @tags Safe Integer
33
+ */
34
+ export function isSafeInteger<N extends number>(
35
+ number: N,
36
+ ): number is SafeInteger<N>;
37
+
38
+ /**
39
+ * Check if a value is a safe integer within the range of `MIN_SAFE_INTEGER`
40
+ * (`-2^53 + 1`) and `MAX_SAFE_INTEGER` (`2^53 - 1`).
41
+ *
42
+ * Note: This guard **does not coerce its input to a number** beforehand. The
43
+ * value passed for `number` must already satisfy `typeof number === "number"`.
44
+ *
45
+ * @param number The value to check.
46
+ * @returns `true` if the value is a safe integer, `false` otherwise.
47
+ */
48
+ export function isSafeInteger(number: number): number is SafeInteger;
49
+
50
+ /** @internal */
51
+ export function isSafeInteger(number: unknown): number is SafeInteger {
52
+ return typeof number === "number" && isFinite(number) && (number % 1) === 0 &&
53
+ number >= MIN_SAFE_INTEGER && number <= MAX_SAFE_INTEGER;
54
+ }
55
+
56
+ export { MAX_SAFE_INTEGER, MIN_SAFE_INTEGER, type SafeInteger };
package/src/hypot.ts ADDED
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Calculates the hypotenuse value using the Pythagorean theorem, which is the
3
+ * sqrt of the sum of the squares of its arguments (`sqrt(a^2 + b^2 + ...`).
4
+ * Avoids overflow or underflow errors.
5
+ *
6
+ * **Note**: This equation is also known as the Euclidean distance or L² norm.
7
+ *
8
+ * @module hypot
9
+ */
10
+ import { abs } from "./abs.js";
11
+ import { sqrt } from "./sqrt.js";
12
+
13
+ /**
14
+ * Calculates the hypotenuse value using the Pythagorean theorem, which is the
15
+ * sqrt of the sum of the squares of its arguments (`sqrt(a^2 + b^2 + ...)`).
16
+ * Avoids overflow or underflow errors.
17
+ *
18
+ * @param values The numbers to calculate the hypotenuse of.
19
+ * @returns The hypotenuse of the provided numbers (also known as the Euclidean
20
+ * distance or L² norm of the values).
21
+ * @category Trigonometry
22
+ * @tags hypotenuse, pythagorean, euclidean
23
+ * @example
24
+ * ```typescript
25
+ * hypot(3, 4); // 5
26
+ * hypot(5, 12); // 13
27
+ * ```
28
+ */
29
+ export function hypot(...values: number[]): number {
30
+ if (values.length === 0) return 0;
31
+ let hasInfinity = false;
32
+ let hasNaN = false;
33
+ let maximum = 0;
34
+
35
+ for (const value of values) {
36
+ if (value !== value) {
37
+ hasNaN = true;
38
+ continue;
39
+ }
40
+ if (value === Infinity || value === -Infinity) {
41
+ hasInfinity = true;
42
+ continue;
43
+ }
44
+ const magnitude = abs(value);
45
+ if (magnitude > maximum) maximum = magnitude;
46
+ }
47
+
48
+ if (hasInfinity) return Infinity;
49
+ if (hasNaN) return NaN;
50
+ if (maximum === 0) return 0;
51
+
52
+ let sum = 0;
53
+ for (const value of values) {
54
+ const normalized = value / maximum;
55
+ sum += normalized * normalized;
56
+ }
57
+
58
+ return maximum * sqrt(sum);
59
+ }
package/src/ieee754.ts ADDED
@@ -0,0 +1,15 @@
1
+ /**
2
+ * IEEE 754 floating point number manipulation.
3
+ *
4
+ * This module provides functions for encoding, decoding, and rounding floating
5
+ * point numbers according to the IEEE 754 standard, for both 16-bit and 32-bit
6
+ * precision. For utilities specific to 16-bit (half-precision) floats, see the
7
+ * `float16` module. For 32-bit (single-precision), see the `float32` module.
8
+ *
9
+ * **Note**: The `float16` and `float32` modules are used under the hood by the
10
+ * `f16round` and `fround` functions, respectively.
11
+ *
12
+ * @module ieee754
13
+ */
14
+ export * from "./float16/index.js";
15
+ export * from "./float32/index.js";
package/src/imul.ts ADDED
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Performs a 32-bit integer multiplication of two numbers (interpreted as
3
+ * 32-bit integers), returning a 32-bit result.
4
+ *
5
+ * @module imul
6
+ */
7
+
8
+ /**
9
+ * Performs a 32-bit integer multiplication of two numbers (interpreted as
10
+ * 32-bit integers), returning a 32-bit result.
11
+ *
12
+ * @param a The first number (treated as a 32-bit integer).
13
+ * @param b The second number (treated as a 32-bit integer).
14
+ * @returns The result of multiplying the two numbers as 32-bit integers.
15
+ * @category Bitwise
16
+ */
17
+ export function imul(a: number, b: number): number {
18
+ const ah = (a >>> 16) & 0xffff, al = a & 0xffff;
19
+ const bh = (b >>> 16) & 0xffff, bl = b & 0xffff;
20
+ return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0)) | 0;
21
+ }
package/src/index.ts ADDED
@@ -0,0 +1,84 @@
1
+ /**
2
+ * # `@nick/math`
3
+ *
4
+ * Standalone implementations of every native API in the `Math` namespace,
5
+ * written in pure TypeScript with zero external dependencies. Distributed as a
6
+ * collection of tree-shakeable submodules so you can pick and choose exactly
7
+ * what features to include based on your specific use case's requirements.
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * import math from "@nick/math";
12
+ * import assert from "node:assert";
13
+ *
14
+ * // all the same constants from globalThis.Math
15
+ * assert.strictEqual(math.PI, Math.PI);
16
+ * assert.strictEqual(math.E, Math.E);
17
+ * assert.strictEqual(math.SQRT1_2, Math.SQRT1_2);
18
+ * assert.strictEqual(math.LOG10E, Math.LOG10E);
19
+ *
20
+ * // ...and even those from globalThis.Number
21
+ * assert.strictEqual(math.EPSILON, Number.EPSILON);
22
+ * assert.strictEqual(math.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY);
23
+ * assert.strictEqual(math.NaN, Number.NaN);
24
+ * // ...
25
+ * assert.strictEqual(math.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER);
26
+ *
27
+ * // all the functions from globalThis.Math
28
+ * assert.strictEqual(math.abs(-math.PI), math.PI);
29
+ * assert.strictEqual(math.f16round(math.PI), Math.f16round(Math.PI));
30
+ * // ...
31
+ * assert.strictEqual(math.cos(0.99999999999999), Math.cos(0.99999999999999));
32
+ *
33
+ * // additional, non-standard guards
34
+ * assert.ok(math.isNegativeInfinity(-1 / 0));
35
+ * assert.ok(math.isNegativeZero(-0));
36
+ * assert.ok(math.isPositiveZero(0));
37
+ * // ...
38
+ * assert.ok(math.isFinite(420));
39
+ * ```
40
+ * @module math
41
+ */
42
+ export * from "./abs.js";
43
+ export * from "./acos.js";
44
+ export * from "./acosh.js";
45
+ export * from "./asin.js";
46
+ export * from "./asinh.js";
47
+ export * from "./atan.js";
48
+ export * from "./atanh.js";
49
+ export * from "./atan2.js";
50
+ export * from "./cbrt.js";
51
+ export * from "./ceil.js";
52
+ export * from "./clamp.js";
53
+ export * from "./clz32.js";
54
+ export * from "./constants/index.js";
55
+ export * from "./cos.js";
56
+ export * from "./cosh.js";
57
+ export * from "./exp.js";
58
+ export * from "./expm1.js";
59
+ export * from "./floor.js";
60
+ export * from "./f16round.js";
61
+ export * from "./fround.js";
62
+ export * from "./guards/index.js";
63
+ export * from "./hypot.js";
64
+ export * from "./ieee754.js";
65
+ export * from "./imul.js";
66
+ export * from "./log.js";
67
+ export * from "./log1p.js";
68
+ export * from "./log2.js";
69
+ export * from "./log10.js";
70
+ export * from "./max.js";
71
+ export * from "./min.js";
72
+ export * from "./pow.js";
73
+ export * from "./random.js";
74
+ export * from "./round.js";
75
+ export * from "./sign.js";
76
+ export * from "./sin.js";
77
+ export * from "./sinh.js";
78
+ export * from "./sqrt.js";
79
+ export * from "./tan.js";
80
+ export * from "./tanh.js";
81
+ export * from "./trunc.js";
82
+ export * from "./types/index.js";
83
+
84
+ export * as default from "./index.js";
@@ -0,0 +1,255 @@
1
+ // src/internal/ieee754.ts
2
+ /**
3
+ * Shared generic implementation for IEEE‑754 binary floating‑point
4
+ * encoding, decoding, and rounding.
5
+ *
6
+ * @module internal/ieee754
7
+ */
8
+
9
+ import {
10
+ isPositiveInfinity,
11
+ POSITIVE_INFINITY,
12
+ } from "../guards/positive_infinity.js";
13
+ import {
14
+ isNegativeInfinity,
15
+ NEGATIVE_INFINITY,
16
+ } from "../guards/negative_infinity.js";
17
+ import { isNaN, NAN } from "../guards/nan.js";
18
+ import { isNegativeZero, NEGATIVE_ZERO } from "../guards/negative_zero.js";
19
+ import { isPositiveZero, POSITIVE_ZERO } from "../guards/positive_zero.js";
20
+ import { abs } from "../abs.js";
21
+ import { floor } from "../floor.js";
22
+ import { log2 } from "../log2.js";
23
+ import { pow } from "../pow.js";
24
+ import { round } from "../round.js";
25
+ import { BigInt, Number } from "./primordials.js";
26
+
27
+ /** Descriptor for an IEEE‑754 binary floating‑point format. */
28
+ export interface BigIntFloatFormat extends Format {
29
+ /** Controls the output type of the bit pattern. @default {false} */
30
+ bigint: true;
31
+ }
32
+
33
+ /** Descriptor for an IEEE‑754 binary floating‑point format. */
34
+ export interface FloatFormat extends Format {
35
+ /** Optional flag indicating the output type should be a number. */
36
+ bigint?: false | undefined;
37
+ }
38
+
39
+ interface Format {
40
+ /** Number of exponent bits (e.g. 8 for binary32). */
41
+ exponent: number;
42
+ /** Number of mantissa bits (e.g. 23 for binary32). */
43
+ mantissa: number;
44
+ /** Exponent bias (e.g. 127 for binary32). */
45
+ bias: number;
46
+ /** Encoded bit‑pattern for NaN. */
47
+ nan: number | bigint;
48
+ /** Encoded bit‑pattern for +∞. */
49
+ positive_infinity: number | bigint;
50
+ /** Encoded bit‑pattern for –∞. */
51
+ negative_infinity: number | bigint;
52
+ /** Encoded bit‑pattern for –0. */
53
+ negative_zero: number | bigint;
54
+ /** Encoded bit‑pattern for +0. */
55
+ positive_zero: number | bigint;
56
+ /** Optional flag indicating whether the output should be a bigint. */
57
+ bigint?: boolean | undefined;
58
+ }
59
+
60
+ /**
61
+ * Encode a JS number into an IEEE‑754 bit pattern (as a BigInt).
62
+ *
63
+ * @param value The number to encode.
64
+ * @param fmt Describes exponent/mantissa sizes, bias, and specials.
65
+ * @returns The raw bits (as BigInt).
66
+ * @internal
67
+ */
68
+ export function encode(value: number, fmt: BigIntFloatFormat): bigint;
69
+ export function encode(value: number, fmt: FloatFormat): number;
70
+ export function encode(
71
+ value: number,
72
+ fmt: FloatFormat | BigIntFloatFormat,
73
+ ): number | bigint {
74
+ return (fmt.bigint ? BigInt : Number)(inner_encode(value, fmt));
75
+ }
76
+
77
+ function inner_encode(value: number, fmt: Format): number | bigint {
78
+ if (isNaN(value)) return fmt.nan;
79
+ if (isPositiveInfinity(value)) return fmt.positive_infinity;
80
+ if (isNegativeInfinity(value)) return fmt.negative_infinity;
81
+ if (isNegativeZero(value)) return fmt.negative_zero;
82
+ if (isPositiveZero(value)) return fmt.positive_zero;
83
+
84
+ const normal = 1 - fmt.bias;
85
+ // subnormal threshold = 2^(1-bias)
86
+ const cutoff = pow(2, normal);
87
+
88
+ const sign = BigInt(value < 0 ? 1 : 0);
89
+ const shift = BigInt(fmt.exponent + fmt.mantissa);
90
+ const absolute = abs(value);
91
+ if (absolute < cutoff) {
92
+ // subnormal
93
+ const scale = normal - fmt.mantissa;
94
+ const mant = BigInt(round(absolute / pow(2, scale)));
95
+ return (sign << shift) | mant;
96
+ }
97
+
98
+ // normal
99
+ let expo = floor(log2(absolute)), mant = absolute / pow(2, expo);
100
+ if (mant < 1) {
101
+ mant *= 2;
102
+ expo--;
103
+ } else if (mant >= 2) {
104
+ mant /= 2;
105
+ expo++;
106
+ }
107
+
108
+ const mant_scale = pow(2, fmt.mantissa);
109
+ let mant_bits = round((mant - 1) * mant_scale);
110
+ if (mant_bits === mant_scale) {
111
+ mant_bits = 0;
112
+ expo++;
113
+ }
114
+
115
+ const biased = expo + fmt.bias;
116
+ if (biased >= (1 << fmt.exponent) - 1) {
117
+ return value < 0 ? fmt.negative_infinity : fmt.positive_infinity;
118
+ }
119
+
120
+ const e = BigInt(biased);
121
+ const m = BigInt(mant_bits);
122
+ return (sign << shift) | (e << BigInt(fmt.mantissa)) | m;
123
+ }
124
+
125
+ /**
126
+ * Decode an IEEE‑754 bit pattern back into a JavaScript number.
127
+ *
128
+ * @param bits The raw bits (BigInt or number).
129
+ * @param fmt Describes exponent/mantissa sizes, bias, and specials.
130
+ * @returns The decoded JS number.
131
+ * @internal
132
+ */
133
+ export function decode(
134
+ bits: string | bigint | number,
135
+ fmt: FloatFormat,
136
+ ): number {
137
+ const b = BigInt(bits);
138
+
139
+ if (b === BigInt(fmt.nan)) return NAN;
140
+ if (b === BigInt(fmt.positive_infinity)) return POSITIVE_INFINITY;
141
+ if (b === BigInt(fmt.negative_infinity)) return NEGATIVE_INFINITY;
142
+ if (b === BigInt(fmt.negative_zero)) return NEGATIVE_ZERO;
143
+ if (b === BigInt(fmt.positive_zero)) return POSITIVE_ZERO;
144
+
145
+ const shift = fmt.exponent + fmt.mantissa;
146
+ const m = BigInt(fmt.mantissa), e = BigInt(fmt.exponent);
147
+ const mask_m = (1n << m) - 1n;
148
+ const mask_e = ((1n << e) - 1n) << m;
149
+
150
+ const sign = ((b >> BigInt(shift)) & 1n) === 1n ? -1 : 1;
151
+ const expo = (b & mask_e) >> m, mant = b & mask_m;
152
+
153
+ if (expo === 0n) {
154
+ // subnormal
155
+ const subx = 1 - fmt.bias;
156
+ return sign * Number(mant) * pow(2, subx - fmt.mantissa);
157
+ } else if (expo === (1n << e) - 1n) {
158
+ if (mant) return NAN;
159
+ if (sign > 0) return POSITIVE_INFINITY;
160
+ return NEGATIVE_INFINITY;
161
+ }
162
+
163
+ const exp = Number(expo) - fmt.bias;
164
+ return sign * (1 + Number(mant) / pow(2, fmt.mantissa)) * pow(2, exp);
165
+ }
166
+
167
+ /**
168
+ * Round a JS number to the nearest representable value in the given format.
169
+ *
170
+ * @param value The number to round.
171
+ * @param fmt Describes exponent/mantissa sizes, bias, and specials.
172
+ * @returns The rounded JS number.
173
+ * @internal
174
+ */
175
+ export function fround(value: number, fmt?: FloatFormat): number {
176
+ fmt ??= float32;
177
+ return decode(encode(value, fmt), fmt);
178
+ }
179
+
180
+ /**
181
+ * Represents the IEEE-754 binary16 (half-precision) floating-point format.
182
+ *
183
+ * @internal
184
+ */
185
+ export const float16 = {
186
+ exponent: 5,
187
+ mantissa: 10,
188
+ bias: 15,
189
+ nan: 0x7E00n,
190
+ positive_infinity: 0x7C00n,
191
+ negative_infinity: 0xFC00n,
192
+ negative_zero: 0x8000n,
193
+ positive_zero: 0n,
194
+ } as const satisfies FloatFormat;
195
+
196
+ /**
197
+ * Represents the IEEE-754 binary32 (single-precision) floating-point format.
198
+ *
199
+ * @internal
200
+ */
201
+ export const float32 = {
202
+ exponent: 8,
203
+ mantissa: 23,
204
+ bias: 127,
205
+ nan: 0x7FC00000n,
206
+ positive_infinity: 0x7F800000n,
207
+ negative_infinity: 0xFF800000n,
208
+ negative_zero: 0x80000000n,
209
+ positive_zero: 0n,
210
+ } as const satisfies FloatFormat;
211
+
212
+ /**
213
+ * Represents the IEEE-754 binary64 (double-precision) floating-point format.
214
+ *
215
+ * @internal
216
+ */
217
+ export const float64 = {
218
+ exponent: 11,
219
+ mantissa: 52,
220
+ bias: 1023,
221
+ nan: 0x7FF8000000000000n,
222
+ positive_infinity: 0x7FF0000000000000n,
223
+ negative_infinity: 0xFFF0000000000000n,
224
+ negative_zero: 0x8000000000000000n,
225
+ positive_zero: 0n,
226
+ } as const satisfies FloatFormat;
227
+
228
+ /**
229
+ * Represents the IEEE-754 binary128 (quadruple-precision) floating-point
230
+ * format.
231
+ *
232
+ * @internal
233
+ */
234
+ export const float128 = {
235
+ exponent: 15,
236
+ mantissa: 112,
237
+ bias: 16383,
238
+ nan: 0x7FFF8000000000000000000000000000n,
239
+ positive_infinity: 0x7FFF0000000000000000000000000000n,
240
+ negative_infinity: 0xFFFF0000000000000000000000000000n,
241
+ negative_zero: 0x80000000000000000000000000000000n,
242
+ positive_zero: 0n,
243
+ } as const satisfies FloatFormat;
244
+
245
+ /**
246
+ * Represents all supported IEEE-754 floating-point formats.
247
+ *
248
+ * @internal
249
+ */
250
+ export const formats = {
251
+ float16,
252
+ float32,
253
+ float64,
254
+ float128,
255
+ } as const satisfies Record<string, FloatFormat>;
@@ -0,0 +1,33 @@
1
+ export const Date: DateConstructor = globalThis.Date;
2
+ export const DateNow = Date.now;
3
+ export const DateUTC = Date.UTC;
4
+ export const DateParse = Date.parse;
5
+ export const DatePrototype = Date.prototype;
6
+
7
+ export const String: StringConstructor = globalThis.String;
8
+ export const StringPrototype = String.prototype;
9
+
10
+ export const Number: NumberConstructor = globalThis.Number;
11
+ export const NumberPrototype = Number.prototype;
12
+
13
+ export const BigInt: BigIntConstructor = globalThis.BigInt;
14
+ export const BigIntAsIntN = BigInt.asIntN.bind(BigInt);
15
+ export const BigIntAsUintN = BigInt.asUintN.bind(BigInt);
16
+ export const BigIntPrototype = BigInt.prototype;
17
+
18
+ export const Object: ObjectConstructor = globalThis.Object;
19
+ export const ObjectPrototype = Object.prototype;
20
+
21
+ export const Array: ArrayConstructor = globalThis.Array;
22
+ export const ArrayFrom: typeof Array.from = Array.from.bind(Array);
23
+ export const ArrayPrototype = Array.prototype;
24
+
25
+ export const Function: FunctionConstructor = globalThis.Function;
26
+ export const FunctionPrototype = Function.prototype;
27
+
28
+ export const Symbol: SymbolConstructor = globalThis.Symbol;
29
+ export const SymbolPrototype: typeof Symbol.prototype = Symbol.prototype;
30
+ export const SymbolFor: typeof Symbol.for = Symbol.for;
31
+ export const SymbolIterator: typeof Symbol.iterator = Symbol.iterator;
32
+ export const SymbolToStringTag: typeof Symbol.toStringTag = Symbol.toStringTag;
33
+ export const SymbolToPrimitive: typeof Symbol.toPrimitive = Symbol.toPrimitive;
package/src/log.ts ADDED
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Calculates the natural logarithm of a number (logₑ).
3
+ *
4
+ * @module log
5
+ */
6
+ import { EPSILON } from "./constants/epsilon.js";
7
+ import { LN2 } from "./constants/ln2.js";
8
+ import { NAN } from "./constants/nan.js";
9
+ import { POSITIVE_INFINITY } from "./constants/positive_infinity.js";
10
+ import { NEGATIVE_INFINITY } from "./constants/negative_infinity.js";
11
+ import { abs } from "./abs.js";
12
+
13
+ /**
14
+ * Calculates the natural logarithm of a number (logₑ).
15
+ *
16
+ * @param x The number to calculate the natural logarithm of (logₑ)
17
+ * @returns The natural logarithm of the provided number.
18
+ * @category Logarithmic
19
+ */
20
+ export function log(x: number): number {
21
+ if ((x = +x) !== x || x < 0) return NAN; // NaN for x < 0
22
+ if (x === 0) return NEGATIVE_INFINITY; // -Infinity for x <= 0
23
+ if (x === 1) return 0; // 0 for x = 1
24
+ if (x === POSITIVE_INFINITY) return x; // Infinity for x = Infinity
25
+
26
+ const seriesEpsilon = EPSILON * 16;
27
+ let n = 0;
28
+ while (x > 2) x /= 2, n++;
29
+
30
+ const z = (x - 1) / (x + 1), z2 = z * z;
31
+ let sum = 0, term = z, i = 1;
32
+
33
+ // series expansion for ln(1+z) converges faster when z is [-1, 1]
34
+ while (abs(term) >= seriesEpsilon) {
35
+ sum += term / i;
36
+ term *= z2;
37
+ i += 2;
38
+ }
39
+
40
+ // ln(x) + adjustment factor for original input
41
+ return 2 * sum + n * LN2;
42
+ }
package/src/log10.ts ADDED
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Calculates the base-10 logarithm of a number.
3
+ *
4
+ * @module log10
5
+ */
6
+ import { LOG10E } from "./constants/log10e.js";
7
+ import { log } from "./log.js";
8
+
9
+ /**
10
+ * Calculates the base-10 logarithm of a number.
11
+ *
12
+ * @param x The number to calculate the base-10 logarithm of (log₁₀)
13
+ * @returns The base-10 logarithm of the provided number.
14
+ * @category Logarithmic
15
+ */
16
+ export function log10(x: number): number {
17
+ return log(x) * LOG10E;
18
+ }
package/src/log1p.ts ADDED
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Calculates the natural logarithm of 1 + x (`log(1 + x)`), accurately even
3
+ * for very small values of x.
4
+ *
5
+ * @module log1p
6
+ */
7
+ import { EPSILON } from "./constants/epsilon.js";
8
+ import { NAN } from "./constants/nan.js";
9
+ import { NEGATIVE_INFINITY } from "./constants/negative_infinity.js";
10
+ import { abs } from "./abs.js";
11
+ import { log } from "./log.js";
12
+
13
+ /**
14
+ * Calculates the natural logarithm of 1 + x (`log(1 + x)`), accurately even
15
+ * for very small values of x.
16
+ *
17
+ * @param x The number whose logarithm of (1 + x) is to be calculated.
18
+ * @returns The natural logarithm of 1 + x.
19
+ * @category Logarithmic
20
+ */
21
+ export function log1p(x: number): number {
22
+ if (x === -1) return NEGATIVE_INFINITY;
23
+ if (x < -1) return NAN;
24
+ if (abs(x) < EPSILON) return x;
25
+ return log(1 + x);
26
+ }
package/src/log2.ts ADDED
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Calculates the base-2 logarithm of a number (log₂).
3
+ *
4
+ * @module log2
5
+ */
6
+ import { LOG2E } from "./constants/log2e.js";
7
+ import { log } from "./log.js";
8
+
9
+ /**
10
+ * Calculates the base-2 logarithm of a number (log₂).
11
+ *
12
+ * @param x The number to calculate the base-2 logarithm of (log₂)
13
+ * @returns The base-2 logarithm of the provided number.
14
+ * @category Logarithmic
15
+ * @see {@linkcode log} for the natural logarithm.
16
+ * @see {@linkcode log10} for the base-10 logarithm.
17
+ * @see {@linkcode LOG2E} for the base-2 logarithm of {@linkcode E}.
18
+ */
19
+ export function log2(x: number): number {
20
+ return log(x) * LOG2E;
21
+ }