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