@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
package/README.md ADDED
@@ -0,0 +1,889 @@
1
+ # `@nick/math`
2
+
3
+ #### Dependency-free implementation of the `Math.*` namespace
4
+
5
+ ---
6
+
7
+ ## Overview
8
+
9
+ This package provides zero-dependency standalone implementations for all of the
10
+ [functions] and [constants] found in the native [`Math`] namespace, _most_ of
11
+ those found on the global `Number` constructor function, with some additional
12
+ non-standard helpers, constants, and guards for various other purposes.
13
+
14
+ ## Usage
15
+
16
+ Written in pure TypeScript with absolutely zero dependencies. Organized in a
17
+ modular structure to facilitate bundler tree-shaking (dead code elimination),
18
+ you can either import the entire package as a namespace (useful for rapid
19
+ prototyping during development), or on a modular basis where only the features
20
+ required are imported (recommended for production).
21
+
22
+ When imported as a namespace (or via the default export), this package is
23
+ suitable to use as a drop-in replacement for any standard `Math.*` feature's
24
+ usage[^1].
25
+
26
+ [^1]: All modules in this package are implemented using 100% manual logic and
27
+ arithmetic, and do not rely on any native code or objects. As such, the
28
+ performance will typically be slightly slower than the native `Math.*`
29
+ implementations. There may also be some minor deviations in output. If you
30
+ believe a specific function is inaccurate or otherwise inconsistent with the
31
+ expected behavior, please open an issue so I can address it and attempt to
32
+ improve it. Thank you!
33
+
34
+ ### Install
35
+
36
+ This package is published to [JSR] as `@nick/math`, and to [NPM] and [GPR] as
37
+ `@nberlette/math`, for maximum availability on all major package managers:
38
+
39
+ ```sh
40
+ deno add jsr:@nick/math
41
+ ```
42
+
43
+ ```sh
44
+ pnpm add jsr:@nick/math
45
+ ```
46
+
47
+ ```sh
48
+ yarn add jsr:@nick/math
49
+ ```
50
+
51
+ ```sh
52
+ vlt add jsr:@nick/math
53
+ ```
54
+
55
+ ```sh
56
+ bunx jsr add @nick/math
57
+ ```
58
+
59
+ ```sh
60
+ npx jsr add @nick/math
61
+ ```
62
+
63
+ #### NPM and GPR
64
+
65
+ ```sh
66
+ deno add npm:@nberlette/math
67
+ ```
68
+
69
+ ```sh
70
+ pnpm add @nberlette/math
71
+ ```
72
+
73
+ ```sh
74
+ yarn add @nberlette/math
75
+ ```
76
+
77
+ ```sh
78
+ vlt add @nberlette/math
79
+ ```
80
+
81
+ ```sh
82
+ bun add @nberlette/math
83
+ ```
84
+
85
+ ```sh
86
+ npm i @nberlette/math
87
+ ```
88
+
89
+ ### Example Usage
90
+
91
+ #### Namespace
92
+
93
+ ```ts
94
+ import * as math from "@nick/math";
95
+ import assert from "node:assert";
96
+
97
+ assert.ok((math.acos(0.5) - Math.acos(0.5)) < 1e-9);
98
+ assert.strictEqual(math.NEGATIVE_ZERO, -0);
99
+ assert.strictEqual(math.PI, 3.141592653589793 /* Math.PI */);
100
+ ```
101
+
102
+ #### Modular
103
+
104
+ ```ts
105
+ import { PI } from "@nick/math/pi";
106
+ import { f16round } from "@nick/math/f16round";
107
+ import { sign } from "@nick/math/sign";
108
+ import { NEGATIVE_INFINITY } from "@nick/math/constants/negative-infinity";
109
+ import assert from "node:assert";
110
+
111
+ assert.strictEqual(f16round(PI), 3.140625);
112
+ assert.strictEqual(sign(-0), -0);
113
+ assert.strictEqual(sign(PI), 1);
114
+ assert.strictEqual(sign(NEGATIVE_INFINITY), -1);
115
+ ```
116
+
117
+ ---
118
+
119
+ ## API
120
+
121
+ <details><summary><b><u>Table of Contents</u></b></summary><br>
122
+
123
+ - [Constants](#constants)
124
+ - [`E` (Euler's number)](#e-eulers-number)
125
+ - [`LN10` (Natural logarithm of 10)](#ln10-natural-logarithm-of-10)
126
+ - [`LN2` (Natural logarithm of 2)](#ln2-natural-logarithm-of-2)
127
+ - [`LOG2E` (Base 2 logarithm of E)](#log2e-base-2-logarithm-of-e)
128
+ - [`LOG10E` (Base 10 logarithm of E)](#log10e-base-10-logarithm-of-e)
129
+ - [`PI` (π)](#pi-π)
130
+ - [`SQRT1_2` (Square root of 1/2)](#sqrt1_2-square-root-of-12)
131
+ - [`SQRT2` (Square root of 2)](#sqrt2-square-root-of-2)
132
+ - [`EPSILON`](#epsilon)
133
+ - [`MAX_SAFE_INTEGER`](#max_safe_integer)
134
+ - [`MIN_SAFE_INTEGER`](#min_safe_integer)
135
+ - [`MAX_VALUE`](#max_value)
136
+ - [`MIN_VALUE`](#min_value)
137
+ - [`NEGATIVE_INFINITY`](#negative_infinity)
138
+ - [`POSITIVE_INFINITY`](#positive_infinity)
139
+ - [`NAN`](#nan)
140
+ - [Functions](#functions)
141
+ - [`abs`](#abs)
142
+ - [`acos`](#acos)
143
+ - [`acosh`](#acosh)
144
+ - [`asin`](#asin)
145
+ - [`asinh`](#asinh)
146
+ - [`atan`](#atan)
147
+ - [`atan2`](#atan2)
148
+ - [`atanh`](#atanh)
149
+ - [`cbrt`](#cbrt)
150
+ - [`ceil`](#ceil)
151
+ - [`clz32`](#clz32)
152
+ - [`cos`](#cos)
153
+ - [`cosh`](#cosh)
154
+ - [`exp`](#exp)
155
+ - [`expm1`](#expm1)
156
+ - [`floor`](#floor)
157
+ - [`fround`](#fround)
158
+ - [`f16round`](#f16round)
159
+ - [`hypot`](#hypot)
160
+ - [`imul`](#imul)
161
+ - [`log`](#log)
162
+ - [`log1p`](#log1p)
163
+ - [`log10`](#log10)
164
+ - [`log2`](#log2)
165
+ - [`max`](#max)
166
+ - [`min`](#min)
167
+ - [`pow`](#pow)
168
+ - [`random`](#random)
169
+ - [`round`](#round)
170
+ - [`sign`](#sign)
171
+ - [`sin`](#sin)
172
+ - [`sinh`](#sinh)
173
+ - [`sqrt`](#sqrt)
174
+ - [`tan`](#tan)
175
+ - [`tanh`](#tanh)
176
+ - [`trunc`](#trunc)
177
+ - [Guards](#guards)
178
+ - [`isFinite`](#isfinite)
179
+ - [`isInteger`](#isinteger)
180
+ - [`isNaN`](#isnan)
181
+ - [`isSafeInteger`](#issafeinteger)
182
+ - [`isNegativeZero`](#isnegativezero)
183
+ - [`isPositiveInfinity`](#ispositiveinfinity)
184
+ - [`isNegativeInfinity`](#isnegativeinfinity)
185
+
186
+ </details>
187
+
188
+ ---
189
+
190
+ ### Constants
191
+
192
+ #### `E` (Euler's number)
193
+
194
+ ```ts
195
+ import { E } from "@nick/math/constants/e";
196
+ import assert from "node:assert";
197
+
198
+ assert.strictEqual(E, 2.718281828459045);
199
+ ```
200
+
201
+ #### `LN10` (Natural logarithm of 10)
202
+
203
+ ```ts
204
+ import { LN10 } from "@nick/math/constants/ln10";
205
+ import assert from "node:assert";
206
+
207
+ assert.strictEqual(LN10, 2.302585092994046);
208
+ ```
209
+
210
+ #### `LN2` (Natural logarithm of 2)
211
+
212
+ ```ts
213
+ import { LN2 } from "@nick/math/constants/ln2";
214
+ import assert from "node:assert";
215
+
216
+ assert.strictEqual(LN2, 0.6931471805599453);
217
+ ```
218
+
219
+ #### `LOG2E` (Base 2 logarithm of E)
220
+
221
+ ```ts
222
+ import { LOG2E } from "@nick/math/constants/log2e";
223
+ import assert from "node:assert";
224
+
225
+ assert.strictEqual(LOG2E, 1.4426950408889634);
226
+ ```
227
+
228
+ #### `LOG10E` (Base 10 logarithm of E)
229
+
230
+ ```ts
231
+ import { LOG10E } from "@nick/math/constants/log10e";
232
+ import assert from "node:assert";
233
+
234
+ assert.strictEqual(LOG10E, 0.4342944819032518);
235
+ ```
236
+
237
+ #### `PI` (π)
238
+
239
+ ```ts
240
+ import { PI } from "@nick/math/constants/pi";
241
+ import assert from "node:assert";
242
+
243
+ assert.strictEqual(PI, 3.141592653589793);
244
+ ```
245
+
246
+ #### `SQRT1_2` (Square root of 1/2)
247
+
248
+ ```ts
249
+ import { SQRT1_2 } from "@nick/math/constants/sqrt1_2";
250
+ import assert from "node:assert";
251
+
252
+ assert.strictEqual(SQRT1_2, 0.7071067811865476);
253
+ ```
254
+
255
+ #### `SQRT2` (Square root of 2)
256
+
257
+ ```ts
258
+ import { SQRT2 } from "@nick/math/constants/sqrt2";
259
+ import assert from "node:assert";
260
+
261
+ assert.strictEqual(SQRT2, 1.4142135623730951);
262
+ ```
263
+
264
+ #### `EPSILON`
265
+
266
+ Represents the smallest positive number that can be added to `1` to get a result
267
+ different from `1`.
268
+
269
+ ```ts
270
+ import { EPSILON } from "@nick/math/constants/epsilon";
271
+ import assert from "node:assert";
272
+
273
+ assert.strictEqual(EPSILON, 2.220446049250313e-16);
274
+ ```
275
+
276
+ #### `MAX_SAFE_INTEGER`
277
+
278
+ The maximum safe integer in JavaScript, `2^53 - 1`.
279
+
280
+ ```ts
281
+ import { MAX_SAFE_INTEGER } from "@nick/math/constants/max-safe-integer";
282
+ import assert from "node:assert";
283
+
284
+ assert.strictEqual(MAX_SAFE_INTEGER, 9007199254740991);
285
+ ```
286
+
287
+ #### `MIN_SAFE_INTEGER`
288
+
289
+ The minimum safe integer in JavaScript, `-2^53 + 1`.
290
+
291
+ ```ts
292
+ import { MIN_SAFE_INTEGER } from "@nick/math/constants/min-safe-integer";
293
+ import assert from "node:assert";
294
+
295
+ assert.strictEqual(MIN_SAFE_INTEGER, -9007199254740991);
296
+ ```
297
+
298
+ #### `MAX_VALUE`
299
+
300
+ The maximum representable value in JavaScript.
301
+
302
+ ```ts
303
+ import { MAX_VALUE } from "@nick/math/constants/max-value";
304
+ import assert from "node:assert";
305
+
306
+ assert.strictEqual(MAX_VALUE, 1.7976931348623157e308);
307
+ ```
308
+
309
+ #### `MIN_VALUE`
310
+
311
+ The minimum representable value in JavaScript.
312
+
313
+ ```ts
314
+ import { MIN_VALUE } from "@nick/math/constants/min-value";
315
+ import assert from "node:assert";
316
+
317
+ assert.strictEqual(MIN_VALUE, 5e-324);
318
+ ```
319
+
320
+ #### `NEGATIVE_INFINITY`
321
+
322
+ The negative infinity value in JavaScript.
323
+
324
+ ```ts
325
+ import { NEGATIVE_INFINITY } from "@nick/math/constants/negative-infinity";
326
+ import assert from "node:assert";
327
+
328
+ assert.strictEqual(NEGATIVE_INFINITY, -Infinity);
329
+ ```
330
+
331
+ #### `POSITIVE_INFINITY`
332
+
333
+ The positive infinity value in JavaScript.
334
+
335
+ ```ts
336
+ import { POSITIVE_INFINITY } from "@nick/math/constants/positive-infinity";
337
+ import assert from "node:assert";
338
+
339
+ assert.strictEqual(POSITIVE_INFINITY, Infinity);
340
+ ```
341
+
342
+ #### `NAN`
343
+
344
+ The `NaN` value in JavaScript, representing "Not a Number".
345
+
346
+ ```ts
347
+ import { NAN } from "@nick/math/constants/nan";
348
+ import assert from "node:assert";
349
+
350
+ assert.ok(NAN !== NAN);
351
+ ```
352
+
353
+ ###### Alias: `NaN`
354
+
355
+ ```ts
356
+ import { NaN } from "@nick/math/constants/nan";
357
+ import assert from "node:assert";
358
+
359
+ assert.ok(NaN !== NaN);
360
+ ```
361
+
362
+ ---
363
+
364
+ ### Functions
365
+
366
+ #### `abs`
367
+
368
+ Returns the absolute value of a number.
369
+
370
+ ```ts
371
+ import { abs } from "@nick/math/abs";
372
+ import assert from "node:assert";
373
+
374
+ assert.strictEqual(abs(-1), 1);
375
+ ```
376
+
377
+ #### `acos`
378
+
379
+ Returns the arccosine of a number.
380
+
381
+ ```ts
382
+ import { acos } from "@nick/math/acos";
383
+ import { abs } from "@nick/math/abs";
384
+ import assert from "node:assert";
385
+
386
+ assert.ok(abs(acos(0.5) - Math.acos(0.5)) < 1e-9);
387
+ ```
388
+
389
+ #### `acosh`
390
+
391
+ Returns the inverse hyperbolic cosine of a number.
392
+
393
+ ```ts
394
+ import { acosh } from "@nick/math/acosh";
395
+ import assert from "node:assert";
396
+
397
+ assert.strictEqual(acosh(1), 0);
398
+ ```
399
+
400
+ #### `asin`
401
+
402
+ Returns the arcsine of a number.
403
+
404
+ ```ts
405
+ import { asin } from "@nick/math/asin";
406
+ import { abs } from "@nick/math/abs";
407
+ import assert from "node:assert";
408
+
409
+ assert.ok(abs(asin(0.5) - Math.asin(0.5)) < 1e-9);
410
+ ```
411
+
412
+ #### `asinh`
413
+
414
+ Returns the inverse hyperbolic sine of a number.
415
+
416
+ ```ts
417
+ import { asinh } from "@nick/math/asinh";
418
+ import { abs } from "@nick/math/abs";
419
+ import assert from "node:assert";
420
+
421
+ assert.ok(abs(asinh(0.5) - Math.asinh(0.5)) < 1e-9);
422
+ ```
423
+
424
+ #### `atan`
425
+
426
+ Returns the arctangent of a number.
427
+
428
+ ```ts
429
+ import { atan } from "@nick/math/atan";
430
+ import { abs } from "@nick/math/abs";
431
+ import assert from "node:assert";
432
+
433
+ assert.ok(abs(atan(0.5) - Math.atan(0.5)) < 1e-9);
434
+ ```
435
+
436
+ #### `atan2`
437
+
438
+ Returns the arctangent of the quotient of its arguments.
439
+
440
+ ```ts
441
+ import { atan2 } from "@nick/math/atan2";
442
+ import assert from "node:assert";
443
+
444
+ assert.strictEqual(atan2(1, 1), Math.atan2(1, 1));
445
+ ```
446
+
447
+ #### `atanh`
448
+
449
+ Returns the inverse hyperbolic tangent of a number.
450
+
451
+ ```ts
452
+ import { atanh } from "@nick/math/atanh";
453
+ import assert from "node:assert";
454
+
455
+ assert.strictEqual(atanh(0.5), Math.atanh(0.5));
456
+ ```
457
+
458
+ #### `cbrt`
459
+
460
+ Returns the cube root of a number.
461
+
462
+ ```ts
463
+ import { cbrt } from "@nick/math/cbrt";
464
+ import assert from "node:assert";
465
+
466
+ assert.strictEqual(cbrt(27), 3);
467
+ ```
468
+
469
+ #### `ceil`
470
+
471
+ Returns the smallest integer greater than or equal to a number.
472
+
473
+ ```ts
474
+ import { ceil } from "@nick/math/ceil";
475
+ import assert from "node:assert";
476
+
477
+ assert.strictEqual(ceil(1.5), 2);
478
+ ```
479
+
480
+ #### `clz32`
481
+
482
+ Returns the number of leading zero bits in the 32-bit binary representation of a
483
+ number.
484
+
485
+ ```ts
486
+ import { clz32 } from "@nick/math/clz32";
487
+ import assert from "node:assert";
488
+
489
+ assert.strictEqual(clz32(1), 31);
490
+ ```
491
+
492
+ #### `cos`
493
+
494
+ Returns the cosine of a number.
495
+
496
+ ```ts
497
+ import { cos } from "@nick/math/cos";
498
+ import { abs } from "@nick/math/abs";
499
+ import assert from "node:assert";
500
+
501
+ assert.ok(abs(cos(0.5) - Math.cos(0.5)) < 1e-9);
502
+ ```
503
+
504
+ #### `cosh`
505
+
506
+ Returns the hyperbolic cosine of a number.
507
+
508
+ ```ts
509
+ import { cosh } from "@nick/math/cosh";
510
+ import { abs } from "@nick/math/abs";
511
+ import assert from "node:assert";
512
+
513
+ assert.ok(abs(cosh(0.5) - Math.cosh(0.5)) < 1e-9);
514
+ ```
515
+
516
+ #### `exp`
517
+
518
+ Returns `E` raised to the power of a number.
519
+
520
+ ```ts
521
+ import { exp } from "@nick/math/exp";
522
+ import { abs } from "@nick/math/abs";
523
+ import assert from "node:assert";
524
+
525
+ assert.ok(abs(exp(1) - Math.exp(1)) < 1e-9);
526
+ ```
527
+
528
+ #### `expm1`
529
+
530
+ Returns `E` raised to the power of a number, minus `1`.
531
+
532
+ ```ts
533
+ import { expm1 } from "@nick/math/expm1";
534
+ import { abs } from "@nick/math/abs";
535
+ import assert from "node:assert";
536
+
537
+ assert.ok(abs(expm1(1) - Math.expm1(1)) < 1e-9);
538
+ ```
539
+
540
+ #### `floor`
541
+
542
+ Returns the largest integer less than or equal to a number.
543
+
544
+ ```ts
545
+ import { floor } from "@nick/math/floor";
546
+ import assert from "node:assert";
547
+
548
+ assert.strictEqual(floor(1.5), 1);
549
+ ```
550
+
551
+ #### `fround`
552
+
553
+ Returns the nearest single precision float representation of a number.
554
+
555
+ ```ts
556
+ import { fround } from "@nick/math/fround";
557
+ import { PI } from "@nick/math/constants/pi";
558
+
559
+ console.log(PI, "->", fround(PI));
560
+ // 3.141592653589793 -> 3.1415927410125732
561
+ ```
562
+
563
+ #### `f16round`
564
+
565
+ Returns the nearest 16-bit float representation of a number, as per the IEEE 754
566
+ standard. Introduced by the [TC39 Proposal for Float16Array].
567
+
568
+ [TC39 Proposal for Float16Array]: https://github.com/tc39/proposal-Float16Array
569
+
570
+ ```ts
571
+ import { f16round } from "@nick/math/f16round";
572
+ import { PI } from "@nick/math/constants/pi";
573
+ import assert from "node:assert";
574
+
575
+ assert.strictEqual(f16round(PI), 3.140625);
576
+ ```
577
+
578
+ #### `hypot`
579
+
580
+ Returns the square root of the sum of the squares of its arguments.
581
+
582
+ ```ts
583
+ import { hypot } from "@nick/math/hypot";
584
+ import assert from "node:assert";
585
+
586
+ assert.strictEqual(hypot(3, 4), 5);
587
+ ```
588
+
589
+ #### `imul`
590
+
591
+ Returns the result of a 32-bit integer multiplication.
592
+
593
+ ```ts
594
+ import { imul } from "@nick/math/imul";
595
+ import assert from "node:assert";
596
+
597
+ assert.strictEqual(imul(2, 3), 6);
598
+ ```
599
+
600
+ #### `log`
601
+
602
+ Returns the natural logarithm of a number.
603
+
604
+ ```ts
605
+ import { log } from "@nick/math/log";
606
+ import { abs } from "@nick/math/abs";
607
+ import assert from "node:assert";
608
+
609
+ assert.ok(abs(log(9) - Math.log(9)) < 1e-9);
610
+ ```
611
+
612
+ #### `log1p`
613
+
614
+ Returns the natural logarithm of `1` plus a number.
615
+
616
+ ```ts
617
+ import { log1p } from "@nick/math/log1p";
618
+ import { abs } from "@nick/math/abs";
619
+ import assert from "node:assert";
620
+
621
+ assert.ok(abs(log1p(9) - Math.log1p(9)) < 1e-9);
622
+ ```
623
+
624
+ #### `log10`
625
+
626
+ Returns the base 10 logarithm of a number.
627
+
628
+ ```ts
629
+ import { log10 } from "@nick/math/log10";
630
+ import { abs } from "@nick/math/abs";
631
+ import assert from "node:assert";
632
+
633
+ assert.ok(abs(log10(100) - Math.log10(100)) < 1e-9);
634
+ ```
635
+
636
+ #### `log2`
637
+
638
+ Returns the base 2 logarithm of a number.
639
+
640
+ ```ts
641
+ import { log2 } from "@nick/math/log2";
642
+ import { abs } from "@nick/math/abs";
643
+ import assert from "node:assert";
644
+
645
+ assert.ok(abs(log2(8) - Math.log2(8)) < 1e-9);
646
+ ```
647
+
648
+ #### `max`
649
+
650
+ Returns the largest of zero or more numbers.
651
+
652
+ ```ts
653
+ import { max } from "@nick/math/max";
654
+ import assert from "node:assert";
655
+
656
+ assert.strictEqual(max(1, 2, 3), 3);
657
+ ```
658
+
659
+ #### `min`
660
+
661
+ Returns the smallest of zero or more numbers.
662
+
663
+ ```ts
664
+ import { min } from "@nick/math/min";
665
+ import assert from "node:assert";
666
+
667
+ assert.strictEqual(min(1, 2, 3), 1);
668
+ ```
669
+
670
+ #### `pow`
671
+
672
+ Returns the base to the exponent power.
673
+
674
+ ```ts
675
+ import { pow } from "@nick/math/pow";
676
+ import assert from "node:assert";
677
+
678
+ assert.strictEqual(pow(2, 3), 8);
679
+ ```
680
+
681
+ #### `random`
682
+
683
+ Returns a pseudo-random number between `0` and `1`.
684
+
685
+ ```ts
686
+ import { random } from "@nick/math/random";
687
+ import assert from "node:assert";
688
+
689
+ const value = random();
690
+
691
+ assert.ok(value >= 0 && value < 1);
692
+ ```
693
+
694
+ #### `round`
695
+
696
+ Returns the value of a number rounded to the nearest integer.
697
+
698
+ ```ts
699
+ import { round } from "@nick/math/round";
700
+ import assert from "node:assert";
701
+
702
+ assert.strictEqual(round(1.5), 2);
703
+ ```
704
+
705
+ #### `sign`
706
+
707
+ Returns the sign of a number, indicating whether it is positive, negative, or
708
+ zero.
709
+
710
+ ```ts
711
+ import { sign } from "@nick/math/sign";
712
+ import assert from "node:assert";
713
+
714
+ assert.strictEqual(sign(-1), -1);
715
+ ```
716
+
717
+ #### `sin`
718
+
719
+ Returns the sine of a number.
720
+
721
+ ```ts
722
+ import { sin } from "@nick/math/sin";
723
+ import { abs } from "@nick/math/abs";
724
+ import assert from "node:assert";
725
+
726
+ assert.ok(abs(sin(0.5) - Math.sin(0.5)) < 1e-9);
727
+ ```
728
+
729
+ #### `sinh`
730
+
731
+ Returns the hyperbolic sine of a number.
732
+
733
+ ```ts
734
+ import { sinh } from "@nick/math/sinh";
735
+ import { abs } from "@nick/math/abs";
736
+ import assert from "node:assert";
737
+
738
+ assert.ok(abs(sinh(0.5) - Math.sinh(0.5)) < 1e-9);
739
+ ```
740
+
741
+ #### `sqrt`
742
+
743
+ Returns the square root of a number.
744
+
745
+ ```ts
746
+ import { sqrt } from "@nick/math/sqrt";
747
+ import assert from "node:assert";
748
+
749
+ assert.strictEqual(sqrt(9), 3);
750
+ ```
751
+
752
+ #### `tan`
753
+
754
+ Returns the tangent of a number.
755
+
756
+ ```ts
757
+ import { tan } from "@nick/math/tan";
758
+ import { abs } from "@nick/math/abs";
759
+ import assert from "node:assert";
760
+
761
+ assert.ok(abs(tan(0.5) - Math.tan(0.5)) < 1e-9);
762
+ ```
763
+
764
+ #### `tanh`
765
+
766
+ Returns the hyperbolic tangent of a number.
767
+
768
+ ```ts
769
+ import { tanh } from "@nick/math/tanh";
770
+ import { abs } from "@nick/math/abs";
771
+ import assert from "node:assert";
772
+
773
+ assert.ok(abs(tanh(0.5) - Math.tanh(0.5)) < 1e-9);
774
+ ```
775
+
776
+ #### `trunc`
777
+
778
+ Returns the integer part of a number by removing any fractional digits.
779
+
780
+ ```ts
781
+ import { trunc } from "@nick/math/trunc";
782
+ import assert from "node:assert";
783
+
784
+ assert.strictEqual(trunc(1.5), 1);
785
+ ```
786
+
787
+ ---
788
+
789
+ ### Guards
790
+
791
+ #### `isFinite`
792
+
793
+ Determines whether a number is finite.
794
+
795
+ ```ts
796
+ import { isFinite } from "@nick/math/is/finite";
797
+ import assert from "node:assert";
798
+
799
+ assert.ok(isFinite(1));
800
+ ```
801
+
802
+ #### `isInteger`
803
+
804
+ Determines whether a number is an integer.
805
+
806
+ ```ts
807
+ import { isInteger } from "@nick/math/is/integer";
808
+ import assert from "node:assert";
809
+
810
+ assert.ok(isInteger(1));
811
+ ```
812
+
813
+ #### `isNaN`
814
+
815
+ Determines whether a value is `NaN`.
816
+
817
+ ```ts
818
+ import { isNaN } from "@nick/math/is/nan";
819
+ import assert from "node:assert";
820
+
821
+ assert.ok(isNaN(NaN));
822
+ ```
823
+
824
+ #### `isSafeInteger`
825
+
826
+ Determines whether a number is a safe integer.
827
+
828
+ ```ts
829
+ import { isSafeInteger } from "@nick/math/is/safe-integer";
830
+ import assert from "node:assert";
831
+
832
+ assert.ok(isSafeInteger(1));
833
+ ```
834
+
835
+ #### `isNegativeZero`
836
+
837
+ Determines whether a number is `-0`.
838
+
839
+ ```ts
840
+ import { isNegativeZero } from "@nick/math/is/negative-zero";
841
+ import assert from "node:assert";
842
+
843
+ assert.ok(isNegativeZero(-0));
844
+ assert.ok(!isNegativeZero(0));
845
+ ```
846
+
847
+ #### `isPositiveInfinity`
848
+
849
+ Determines whether a number is positive infinity.
850
+
851
+ ```ts
852
+ import { isPositiveInfinity } from "@nick/math/is/positive-infinity";
853
+ import assert from "node:assert";
854
+
855
+ assert.ok(isPositiveInfinity(Infinity));
856
+ ```
857
+
858
+ #### `isNegativeInfinity`
859
+
860
+ Determines whether a number is negative infinity.
861
+
862
+ ```ts
863
+ import { isNegativeInfinity } from "@nick/math/is/negative-infinity";
864
+ import assert from "node:assert";
865
+
866
+ assert.ok(isNegativeInfinity(-Infinity));
867
+ ```
868
+
869
+ ---
870
+
871
+ <div align="center">
872
+
873
+ **[MIT] © [Nicholas Berlette]. All rights reserved.**
874
+
875
+ <small>
876
+
877
+ [github] · [issues] · [jsr] · [npm] · [contributing]
878
+
879
+ </small></div>
880
+
881
+ [MIT]: https://nick.mit-license.org "MIT © Nicholas Berlette. All rights reserved."
882
+ [Nicholas Berlette]: https://github.com/nberlette "Follow nberlette on GitHub for more cool stuff!"
883
+ [GitHub]: https://github.com/nberlette/math "Give nberlette/math a star on GitHub! ⭐️"
884
+ [Issues]: https://github.com/nberlette/math/issues "Found a bug? Let's squash it! 🐛"
885
+ [JSR]: https://jsr.io/@nick/math "View the @nick/math package on JSR"
886
+ [docs]: https://jsr.io/@nick/math/doc "View auto-generated API documentation for @nick/math on JSR"
887
+ [NPM]: https://npmjs.com/package/@nberlette/math "View @nberlette/math on NPM"
888
+ [contributing]: https://github.com/nberlette/math/blob/main/.github/CONTRIBUTING.md "Contribution guidelines"
889
+ [`Math`]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math