@nberlette/math 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (806) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +889 -0
  3. package/cjs/abs.d.ts +14 -0
  4. package/cjs/abs.d.ts.map +1 -0
  5. package/cjs/abs.js +22 -0
  6. package/cjs/abs.js.map +1 -0
  7. package/cjs/acos.d.ts +17 -0
  8. package/cjs/acos.d.ts.map +1 -0
  9. package/cjs/acos.js +27 -0
  10. package/cjs/acos.js.map +1 -0
  11. package/cjs/acosh.d.ts +11 -0
  12. package/cjs/acosh.d.ts.map +1 -0
  13. package/cjs/acosh.js +35 -0
  14. package/cjs/acosh.js.map +1 -0
  15. package/cjs/asin.d.ts +11 -0
  16. package/cjs/asin.d.ts.map +1 -0
  17. package/cjs/asin.js +28 -0
  18. package/cjs/asin.js.map +1 -0
  19. package/cjs/asinh.d.ts +9 -0
  20. package/cjs/asinh.d.ts.map +1 -0
  21. package/cjs/asinh.js +26 -0
  22. package/cjs/asinh.js.map +1 -0
  23. package/cjs/atan.d.ts +11 -0
  24. package/cjs/atan.d.ts.map +1 -0
  25. package/cjs/atan.js +65 -0
  26. package/cjs/atan.js.map +1 -0
  27. package/cjs/atan2.d.ts +12 -0
  28. package/cjs/atan2.d.ts.map +1 -0
  29. package/cjs/atan2.js +70 -0
  30. package/cjs/atan2.js.map +1 -0
  31. package/cjs/atanh.d.ts +11 -0
  32. package/cjs/atanh.d.ts.map +1 -0
  33. package/cjs/atanh.js +32 -0
  34. package/cjs/atanh.js.map +1 -0
  35. package/cjs/cbrt.d.ts +9 -0
  36. package/cjs/cbrt.d.ts.map +1 -0
  37. package/cjs/cbrt.js +26 -0
  38. package/cjs/cbrt.js.map +1 -0
  39. package/cjs/ceil.d.ts +15 -0
  40. package/cjs/ceil.d.ts.map +1 -0
  41. package/cjs/ceil.js +34 -0
  42. package/cjs/ceil.js.map +1 -0
  43. package/cjs/clamp.d.ts +15 -0
  44. package/cjs/clamp.d.ts.map +1 -0
  45. package/cjs/clamp.js +32 -0
  46. package/cjs/clamp.js.map +1 -0
  47. package/cjs/clz32.d.ts +20 -0
  48. package/cjs/clz32.d.ts.map +1 -0
  49. package/cjs/clz32.js +48 -0
  50. package/cjs/clz32.js.map +1 -0
  51. package/cjs/constants/e.d.ts +17 -0
  52. package/cjs/constants/e.d.ts.map +1 -0
  53. package/cjs/constants/e.js +19 -0
  54. package/cjs/constants/e.js.map +1 -0
  55. package/cjs/constants/epsilon.d.ts +24 -0
  56. package/cjs/constants/epsilon.d.ts.map +1 -0
  57. package/cjs/constants/epsilon.js +26 -0
  58. package/cjs/constants/epsilon.js.map +1 -0
  59. package/cjs/constants/index.d.ts +23 -0
  60. package/cjs/constants/index.d.ts.map +1 -0
  61. package/cjs/constants/index.js +39 -0
  62. package/cjs/constants/index.js.map +1 -0
  63. package/cjs/constants/infinity.d.ts +3 -0
  64. package/cjs/constants/infinity.d.ts.map +1 -0
  65. package/cjs/constants/infinity.js +19 -0
  66. package/cjs/constants/infinity.js.map +1 -0
  67. package/cjs/constants/ln10.d.ts +10 -0
  68. package/cjs/constants/ln10.d.ts.map +1 -0
  69. package/cjs/constants/ln10.js +12 -0
  70. package/cjs/constants/ln10.js.map +1 -0
  71. package/cjs/constants/ln2.d.ts +10 -0
  72. package/cjs/constants/ln2.d.ts.map +1 -0
  73. package/cjs/constants/ln2.js +12 -0
  74. package/cjs/constants/ln2.js.map +1 -0
  75. package/cjs/constants/log10e.d.ts +10 -0
  76. package/cjs/constants/log10e.d.ts.map +1 -0
  77. package/cjs/constants/log10e.js +12 -0
  78. package/cjs/constants/log10e.js.map +1 -0
  79. package/cjs/constants/log2e.d.ts +10 -0
  80. package/cjs/constants/log2e.d.ts.map +1 -0
  81. package/cjs/constants/log2e.js +12 -0
  82. package/cjs/constants/log2e.js.map +1 -0
  83. package/cjs/constants/max_safe_integer.d.ts +11 -0
  84. package/cjs/constants/max_safe_integer.d.ts.map +1 -0
  85. package/cjs/constants/max_safe_integer.js +13 -0
  86. package/cjs/constants/max_safe_integer.js.map +1 -0
  87. package/cjs/constants/max_value.d.ts +10 -0
  88. package/cjs/constants/max_value.d.ts.map +1 -0
  89. package/cjs/constants/max_value.js +12 -0
  90. package/cjs/constants/max_value.js.map +1 -0
  91. package/cjs/constants/min_safe_integer.d.ts +12 -0
  92. package/cjs/constants/min_safe_integer.d.ts.map +1 -0
  93. package/cjs/constants/min_safe_integer.js +14 -0
  94. package/cjs/constants/min_safe_integer.js.map +1 -0
  95. package/cjs/constants/min_value.d.ts +10 -0
  96. package/cjs/constants/min_value.d.ts.map +1 -0
  97. package/cjs/constants/min_value.js +12 -0
  98. package/cjs/constants/min_value.js.map +1 -0
  99. package/cjs/constants/nan.d.ts +47 -0
  100. package/cjs/constants/nan.d.ts.map +1 -0
  101. package/cjs/constants/nan.js +30 -0
  102. package/cjs/constants/nan.js.map +1 -0
  103. package/cjs/constants/negative_infinity.d.ts +28 -0
  104. package/cjs/constants/negative_infinity.d.ts.map +1 -0
  105. package/cjs/constants/negative_infinity.js +15 -0
  106. package/cjs/constants/negative_infinity.js.map +1 -0
  107. package/cjs/constants/negative_zero.d.ts +31 -0
  108. package/cjs/constants/negative_zero.d.ts.map +1 -0
  109. package/cjs/constants/negative_zero.js +21 -0
  110. package/cjs/constants/negative_zero.js.map +1 -0
  111. package/cjs/constants/pi.d.ts +10 -0
  112. package/cjs/constants/pi.d.ts.map +1 -0
  113. package/cjs/constants/pi.js +12 -0
  114. package/cjs/constants/pi.js.map +1 -0
  115. package/cjs/constants/positive_infinity.d.ts +29 -0
  116. package/cjs/constants/positive_infinity.d.ts.map +1 -0
  117. package/cjs/constants/positive_infinity.js +16 -0
  118. package/cjs/constants/positive_infinity.js.map +1 -0
  119. package/cjs/constants/positive_zero.d.ts +38 -0
  120. package/cjs/constants/positive_zero.d.ts.map +1 -0
  121. package/cjs/constants/positive_zero.js +36 -0
  122. package/cjs/constants/positive_zero.js.map +1 -0
  123. package/cjs/constants/sqrt1_2.d.ts +9 -0
  124. package/cjs/constants/sqrt1_2.d.ts.map +1 -0
  125. package/cjs/constants/sqrt1_2.js +11 -0
  126. package/cjs/constants/sqrt1_2.js.map +1 -0
  127. package/cjs/constants/sqrt2.d.ts +9 -0
  128. package/cjs/constants/sqrt2.d.ts.map +1 -0
  129. package/cjs/constants/sqrt2.js +11 -0
  130. package/cjs/constants/sqrt2.js.map +1 -0
  131. package/cjs/cos.d.ts +10 -0
  132. package/cjs/cos.d.ts.map +1 -0
  133. package/cjs/cos.js +32 -0
  134. package/cjs/cos.js.map +1 -0
  135. package/cjs/cosh.d.ts +10 -0
  136. package/cjs/cosh.d.ts.map +1 -0
  137. package/cjs/cosh.js +21 -0
  138. package/cjs/cosh.js.map +1 -0
  139. package/cjs/exp.d.ts +20 -0
  140. package/cjs/exp.d.ts.map +1 -0
  141. package/cjs/exp.js +48 -0
  142. package/cjs/exp.js.map +1 -0
  143. package/cjs/expm1.d.ts +11 -0
  144. package/cjs/expm1.d.ts.map +1 -0
  145. package/cjs/expm1.js +38 -0
  146. package/cjs/expm1.js.map +1 -0
  147. package/cjs/f16round.d.ts +24 -0
  148. package/cjs/f16round.d.ts.map +1 -0
  149. package/cjs/f16round.js +42 -0
  150. package/cjs/f16round.js.map +1 -0
  151. package/cjs/float16/constants.d.ts +97 -0
  152. package/cjs/float16/constants.d.ts.map +1 -0
  153. package/cjs/float16/constants.js +99 -0
  154. package/cjs/float16/constants.js.map +1 -0
  155. package/cjs/float16/decode.d.ts +40 -0
  156. package/cjs/float16/decode.d.ts.map +1 -0
  157. package/cjs/float16/decode.js +67 -0
  158. package/cjs/float16/decode.js.map +1 -0
  159. package/cjs/float16/encode.d.ts +67 -0
  160. package/cjs/float16/encode.d.ts.map +1 -0
  161. package/cjs/float16/encode.js +77 -0
  162. package/cjs/float16/encode.js.map +1 -0
  163. package/cjs/float16/guards.d.ts +22 -0
  164. package/cjs/float16/guards.d.ts.map +1 -0
  165. package/cjs/float16/guards.js +15 -0
  166. package/cjs/float16/guards.js.map +1 -0
  167. package/cjs/float16/index.d.ts +11 -0
  168. package/cjs/float16/index.d.ts.map +1 -0
  169. package/cjs/float16/index.js +27 -0
  170. package/cjs/float16/index.js.map +1 -0
  171. package/cjs/float16/round.d.ts +25 -0
  172. package/cjs/float16/round.d.ts.map +1 -0
  173. package/cjs/float16/round.js +46 -0
  174. package/cjs/float16/round.js.map +1 -0
  175. package/cjs/float32/constants.d.ts +96 -0
  176. package/cjs/float32/constants.d.ts.map +1 -0
  177. package/cjs/float32/constants.js +98 -0
  178. package/cjs/float32/constants.js.map +1 -0
  179. package/cjs/float32/decode.d.ts +38 -0
  180. package/cjs/float32/decode.d.ts.map +1 -0
  181. package/cjs/float32/decode.js +70 -0
  182. package/cjs/float32/decode.js.map +1 -0
  183. package/cjs/float32/encode.d.ts +50 -0
  184. package/cjs/float32/encode.d.ts.map +1 -0
  185. package/cjs/float32/encode.js +77 -0
  186. package/cjs/float32/encode.js.map +1 -0
  187. package/cjs/float32/guards.d.ts +37 -0
  188. package/cjs/float32/guards.d.ts.map +1 -0
  189. package/cjs/float32/guards.js +20 -0
  190. package/cjs/float32/guards.js.map +1 -0
  191. package/cjs/float32/index.d.ts +11 -0
  192. package/cjs/float32/index.d.ts.map +1 -0
  193. package/cjs/float32/index.js +27 -0
  194. package/cjs/float32/index.js.map +1 -0
  195. package/cjs/float32/round.d.ts +23 -0
  196. package/cjs/float32/round.d.ts.map +1 -0
  197. package/cjs/float32/round.js +36 -0
  198. package/cjs/float32/round.js.map +1 -0
  199. package/cjs/floor.d.ts +10 -0
  200. package/cjs/floor.d.ts.map +1 -0
  201. package/cjs/floor.js +32 -0
  202. package/cjs/floor.js.map +1 -0
  203. package/cjs/fround.d.ts +23 -0
  204. package/cjs/fround.d.ts.map +1 -0
  205. package/cjs/fround.js +35 -0
  206. package/cjs/fround.js.map +1 -0
  207. package/cjs/guards/finite.d.ts +23 -0
  208. package/cjs/guards/finite.d.ts.map +1 -0
  209. package/cjs/guards/finite.js +21 -0
  210. package/cjs/guards/finite.js.map +1 -0
  211. package/cjs/guards/index.d.ts +50 -0
  212. package/cjs/guards/index.d.ts.map +1 -0
  213. package/cjs/guards/index.js +66 -0
  214. package/cjs/guards/index.js.map +1 -0
  215. package/cjs/guards/infinity.d.ts +3 -0
  216. package/cjs/guards/infinity.d.ts.map +1 -0
  217. package/cjs/guards/infinity.js +19 -0
  218. package/cjs/guards/infinity.js.map +1 -0
  219. package/cjs/guards/integer.d.ts +47 -0
  220. package/cjs/guards/integer.d.ts.map +1 -0
  221. package/cjs/guards/integer.js +23 -0
  222. package/cjs/guards/integer.js.map +1 -0
  223. package/cjs/guards/nan.d.ts +61 -0
  224. package/cjs/guards/nan.d.ts.map +1 -0
  225. package/cjs/guards/nan.js +68 -0
  226. package/cjs/guards/nan.js.map +1 -0
  227. package/cjs/guards/negative_infinity.d.ts +19 -0
  228. package/cjs/guards/negative_infinity.d.ts.map +1 -0
  229. package/cjs/guards/negative_infinity.js +25 -0
  230. package/cjs/guards/negative_infinity.js.map +1 -0
  231. package/cjs/guards/negative_zero.d.ts +12 -0
  232. package/cjs/guards/negative_zero.d.ts.map +1 -0
  233. package/cjs/guards/negative_zero.js +24 -0
  234. package/cjs/guards/negative_zero.js.map +1 -0
  235. package/cjs/guards/positive_infinity.d.ts +19 -0
  236. package/cjs/guards/positive_infinity.d.ts.map +1 -0
  237. package/cjs/guards/positive_infinity.js +25 -0
  238. package/cjs/guards/positive_infinity.js.map +1 -0
  239. package/cjs/guards/positive_zero.d.ts +17 -0
  240. package/cjs/guards/positive_zero.d.ts.map +1 -0
  241. package/cjs/guards/positive_zero.js +36 -0
  242. package/cjs/guards/positive_zero.js.map +1 -0
  243. package/cjs/guards/safe_integer.d.ts +33 -0
  244. package/cjs/guards/safe_integer.d.ts.map +1 -0
  245. package/cjs/guards/safe_integer.js +27 -0
  246. package/cjs/guards/safe_integer.js.map +1 -0
  247. package/cjs/hypot.d.ts +18 -0
  248. package/cjs/hypot.d.ts.map +1 -0
  249. package/cjs/hypot.js +63 -0
  250. package/cjs/hypot.js.map +1 -0
  251. package/cjs/ieee754.d.ts +16 -0
  252. package/cjs/ieee754.d.ts.map +1 -0
  253. package/cjs/ieee754.js +32 -0
  254. package/cjs/ieee754.js.map +1 -0
  255. package/cjs/imul.d.ts +17 -0
  256. package/cjs/imul.d.ts.map +1 -0
  257. package/cjs/imul.js +24 -0
  258. package/cjs/imul.js.map +1 -0
  259. package/cjs/index.d.ts +84 -0
  260. package/cjs/index.d.ts.map +1 -0
  261. package/cjs/index.js +113 -0
  262. package/cjs/index.js.map +1 -0
  263. package/cjs/internal/ieee754.d.ts +174 -0
  264. package/cjs/internal/ieee754.d.ts.map +1 -0
  265. package/cjs/internal/ieee754.js +200 -0
  266. package/cjs/internal/ieee754.js.map +1 -0
  267. package/cjs/internal/primordials.d.ts +30 -0
  268. package/cjs/internal/primordials.d.ts.map +1 -0
  269. package/cjs/internal/primordials.js +30 -0
  270. package/cjs/internal/primordials.js.map +1 -0
  271. package/cjs/log.d.ts +9 -0
  272. package/cjs/log.d.ts.map +1 -0
  273. package/cjs/log.js +46 -0
  274. package/cjs/log.js.map +1 -0
  275. package/cjs/log10.d.ts +9 -0
  276. package/cjs/log10.d.ts.map +1 -0
  277. package/cjs/log10.js +21 -0
  278. package/cjs/log10.js.map +1 -0
  279. package/cjs/log1p.d.ts +10 -0
  280. package/cjs/log1p.d.ts.map +1 -0
  281. package/cjs/log1p.js +32 -0
  282. package/cjs/log1p.js.map +1 -0
  283. package/cjs/log2.d.ts +12 -0
  284. package/cjs/log2.d.ts.map +1 -0
  285. package/cjs/log2.js +24 -0
  286. package/cjs/log2.js.map +1 -0
  287. package/cjs/max.d.ts +22 -0
  288. package/cjs/max.d.ts.map +1 -0
  289. package/cjs/max.js +51 -0
  290. package/cjs/max.js.map +1 -0
  291. package/cjs/min.d.ts +10 -0
  292. package/cjs/min.d.ts.map +1 -0
  293. package/cjs/min.js +36 -0
  294. package/cjs/min.js.map +1 -0
  295. package/cjs/package.json +3 -0
  296. package/cjs/pow.d.ts +31 -0
  297. package/cjs/pow.d.ts.map +1 -0
  298. package/cjs/pow.js +36 -0
  299. package/cjs/pow.js.map +1 -0
  300. package/cjs/random.d.ts +93 -0
  301. package/cjs/random.d.ts.map +1 -0
  302. package/cjs/random.js +242 -0
  303. package/cjs/random.js.map +1 -0
  304. package/cjs/round.d.ts +9 -0
  305. package/cjs/round.d.ts.map +1 -0
  306. package/cjs/round.js +24 -0
  307. package/cjs/round.js.map +1 -0
  308. package/cjs/sign.d.ts +17 -0
  309. package/cjs/sign.d.ts.map +1 -0
  310. package/cjs/sign.js +22 -0
  311. package/cjs/sign.js.map +1 -0
  312. package/cjs/sin.d.ts +14 -0
  313. package/cjs/sin.d.ts.map +1 -0
  314. package/cjs/sin.js +31 -0
  315. package/cjs/sin.js.map +1 -0
  316. package/cjs/sinh.d.ts +14 -0
  317. package/cjs/sinh.d.ts.map +1 -0
  318. package/cjs/sinh.js +22 -0
  319. package/cjs/sinh.js.map +1 -0
  320. package/cjs/sqrt.d.ts +19 -0
  321. package/cjs/sqrt.d.ts.map +1 -0
  322. package/cjs/sqrt.js +45 -0
  323. package/cjs/sqrt.js.map +1 -0
  324. package/cjs/tan.d.ts +9 -0
  325. package/cjs/tan.d.ts.map +1 -0
  326. package/cjs/tan.js +26 -0
  327. package/cjs/tan.js.map +1 -0
  328. package/cjs/tanh.d.ts +17 -0
  329. package/cjs/tanh.d.ts.map +1 -0
  330. package/cjs/tanh.js +34 -0
  331. package/cjs/tanh.js.map +1 -0
  332. package/cjs/trunc.d.ts +21 -0
  333. package/cjs/trunc.d.ts.map +1 -0
  334. package/cjs/trunc.js +50 -0
  335. package/cjs/trunc.js.map +1 -0
  336. package/cjs/types/finite.d.ts +16 -0
  337. package/cjs/types/finite.d.ts.map +1 -0
  338. package/cjs/types/finite.js +4 -0
  339. package/cjs/types/finite.js.map +1 -0
  340. package/cjs/types/float.d.ts +65 -0
  341. package/cjs/types/float.d.ts.map +1 -0
  342. package/cjs/types/float.js +4 -0
  343. package/cjs/types/float.js.map +1 -0
  344. package/cjs/types/index.d.ts +6 -0
  345. package/cjs/types/index.d.ts.map +1 -0
  346. package/cjs/types/index.js +22 -0
  347. package/cjs/types/index.js.map +1 -0
  348. package/cjs/types/integer.d.ts +147 -0
  349. package/cjs/types/integer.d.ts.map +1 -0
  350. package/cjs/types/integer.js +5 -0
  351. package/cjs/types/integer.js.map +1 -0
  352. package/cjs/types/precision.d.ts +46 -0
  353. package/cjs/types/precision.d.ts.map +1 -0
  354. package/cjs/types/precision.js +9 -0
  355. package/cjs/types/precision.js.map +1 -0
  356. package/cjs/types/safe_integer.d.ts +17 -0
  357. package/cjs/types/safe_integer.d.ts.map +1 -0
  358. package/cjs/types/safe_integer.js +5 -0
  359. package/cjs/types/safe_integer.js.map +1 -0
  360. package/esm/abs.d.ts +14 -0
  361. package/esm/abs.d.ts.map +1 -0
  362. package/esm/abs.js +19 -0
  363. package/esm/abs.js.map +1 -0
  364. package/esm/acos.d.ts +17 -0
  365. package/esm/acos.d.ts.map +1 -0
  366. package/esm/acos.js +24 -0
  367. package/esm/acos.js.map +1 -0
  368. package/esm/acosh.d.ts +11 -0
  369. package/esm/acosh.d.ts.map +1 -0
  370. package/esm/acosh.js +32 -0
  371. package/esm/acosh.js.map +1 -0
  372. package/esm/asin.d.ts +11 -0
  373. package/esm/asin.d.ts.map +1 -0
  374. package/esm/asin.js +25 -0
  375. package/esm/asin.js.map +1 -0
  376. package/esm/asinh.d.ts +9 -0
  377. package/esm/asinh.d.ts.map +1 -0
  378. package/esm/asinh.js +23 -0
  379. package/esm/asinh.js.map +1 -0
  380. package/esm/atan.d.ts +11 -0
  381. package/esm/atan.d.ts.map +1 -0
  382. package/esm/atan.js +62 -0
  383. package/esm/atan.js.map +1 -0
  384. package/esm/atan2.d.ts +12 -0
  385. package/esm/atan2.d.ts.map +1 -0
  386. package/esm/atan2.js +67 -0
  387. package/esm/atan2.js.map +1 -0
  388. package/esm/atanh.d.ts +11 -0
  389. package/esm/atanh.d.ts.map +1 -0
  390. package/esm/atanh.js +29 -0
  391. package/esm/atanh.js.map +1 -0
  392. package/esm/cbrt.d.ts +9 -0
  393. package/esm/cbrt.d.ts.map +1 -0
  394. package/esm/cbrt.js +23 -0
  395. package/esm/cbrt.js.map +1 -0
  396. package/esm/ceil.d.ts +15 -0
  397. package/esm/ceil.d.ts.map +1 -0
  398. package/esm/ceil.js +31 -0
  399. package/esm/ceil.js.map +1 -0
  400. package/esm/clamp.d.ts +15 -0
  401. package/esm/clamp.d.ts.map +1 -0
  402. package/esm/clamp.js +29 -0
  403. package/esm/clamp.js.map +1 -0
  404. package/esm/clz32.d.ts +20 -0
  405. package/esm/clz32.d.ts.map +1 -0
  406. package/esm/clz32.js +45 -0
  407. package/esm/clz32.js.map +1 -0
  408. package/esm/constants/e.d.ts +17 -0
  409. package/esm/constants/e.d.ts.map +1 -0
  410. package/esm/constants/e.js +16 -0
  411. package/esm/constants/e.js.map +1 -0
  412. package/esm/constants/epsilon.d.ts +24 -0
  413. package/esm/constants/epsilon.d.ts.map +1 -0
  414. package/esm/constants/epsilon.js +23 -0
  415. package/esm/constants/epsilon.js.map +1 -0
  416. package/esm/constants/index.d.ts +23 -0
  417. package/esm/constants/index.d.ts.map +1 -0
  418. package/esm/constants/index.js +23 -0
  419. package/esm/constants/index.js.map +1 -0
  420. package/esm/constants/infinity.d.ts +3 -0
  421. package/esm/constants/infinity.d.ts.map +1 -0
  422. package/esm/constants/infinity.js +3 -0
  423. package/esm/constants/infinity.js.map +1 -0
  424. package/esm/constants/ln10.d.ts +10 -0
  425. package/esm/constants/ln10.d.ts.map +1 -0
  426. package/esm/constants/ln10.js +9 -0
  427. package/esm/constants/ln10.js.map +1 -0
  428. package/esm/constants/ln2.d.ts +10 -0
  429. package/esm/constants/ln2.d.ts.map +1 -0
  430. package/esm/constants/ln2.js +9 -0
  431. package/esm/constants/ln2.js.map +1 -0
  432. package/esm/constants/log10e.d.ts +10 -0
  433. package/esm/constants/log10e.d.ts.map +1 -0
  434. package/esm/constants/log10e.js +9 -0
  435. package/esm/constants/log10e.js.map +1 -0
  436. package/esm/constants/log2e.d.ts +10 -0
  437. package/esm/constants/log2e.d.ts.map +1 -0
  438. package/esm/constants/log2e.js +9 -0
  439. package/esm/constants/log2e.js.map +1 -0
  440. package/esm/constants/max_safe_integer.d.ts +11 -0
  441. package/esm/constants/max_safe_integer.d.ts.map +1 -0
  442. package/esm/constants/max_safe_integer.js +10 -0
  443. package/esm/constants/max_safe_integer.js.map +1 -0
  444. package/esm/constants/max_value.d.ts +10 -0
  445. package/esm/constants/max_value.d.ts.map +1 -0
  446. package/esm/constants/max_value.js +9 -0
  447. package/esm/constants/max_value.js.map +1 -0
  448. package/esm/constants/min_safe_integer.d.ts +12 -0
  449. package/esm/constants/min_safe_integer.d.ts.map +1 -0
  450. package/esm/constants/min_safe_integer.js +11 -0
  451. package/esm/constants/min_safe_integer.js.map +1 -0
  452. package/esm/constants/min_value.d.ts +10 -0
  453. package/esm/constants/min_value.d.ts.map +1 -0
  454. package/esm/constants/min_value.js +9 -0
  455. package/esm/constants/min_value.js.map +1 -0
  456. package/esm/constants/nan.d.ts +47 -0
  457. package/esm/constants/nan.d.ts.map +1 -0
  458. package/esm/constants/nan.js +27 -0
  459. package/esm/constants/nan.js.map +1 -0
  460. package/esm/constants/negative_infinity.d.ts +28 -0
  461. package/esm/constants/negative_infinity.d.ts.map +1 -0
  462. package/esm/constants/negative_infinity.js +12 -0
  463. package/esm/constants/negative_infinity.js.map +1 -0
  464. package/esm/constants/negative_zero.d.ts +31 -0
  465. package/esm/constants/negative_zero.d.ts.map +1 -0
  466. package/esm/constants/negative_zero.js +18 -0
  467. package/esm/constants/negative_zero.js.map +1 -0
  468. package/esm/constants/pi.d.ts +10 -0
  469. package/esm/constants/pi.d.ts.map +1 -0
  470. package/esm/constants/pi.js +9 -0
  471. package/esm/constants/pi.js.map +1 -0
  472. package/esm/constants/positive_infinity.d.ts +29 -0
  473. package/esm/constants/positive_infinity.d.ts.map +1 -0
  474. package/esm/constants/positive_infinity.js +13 -0
  475. package/esm/constants/positive_infinity.js.map +1 -0
  476. package/esm/constants/positive_zero.d.ts +38 -0
  477. package/esm/constants/positive_zero.d.ts.map +1 -0
  478. package/esm/constants/positive_zero.js +33 -0
  479. package/esm/constants/positive_zero.js.map +1 -0
  480. package/esm/constants/sqrt1_2.d.ts +9 -0
  481. package/esm/constants/sqrt1_2.d.ts.map +1 -0
  482. package/esm/constants/sqrt1_2.js +8 -0
  483. package/esm/constants/sqrt1_2.js.map +1 -0
  484. package/esm/constants/sqrt2.d.ts +9 -0
  485. package/esm/constants/sqrt2.d.ts.map +1 -0
  486. package/esm/constants/sqrt2.js +8 -0
  487. package/esm/constants/sqrt2.js.map +1 -0
  488. package/esm/cos.d.ts +10 -0
  489. package/esm/cos.d.ts.map +1 -0
  490. package/esm/cos.js +29 -0
  491. package/esm/cos.js.map +1 -0
  492. package/esm/cosh.d.ts +10 -0
  493. package/esm/cosh.d.ts.map +1 -0
  494. package/esm/cosh.js +18 -0
  495. package/esm/cosh.js.map +1 -0
  496. package/esm/exp.d.ts +20 -0
  497. package/esm/exp.d.ts.map +1 -0
  498. package/esm/exp.js +45 -0
  499. package/esm/exp.js.map +1 -0
  500. package/esm/expm1.d.ts +11 -0
  501. package/esm/expm1.d.ts.map +1 -0
  502. package/esm/expm1.js +35 -0
  503. package/esm/expm1.js.map +1 -0
  504. package/esm/f16round.d.ts +24 -0
  505. package/esm/f16round.d.ts.map +1 -0
  506. package/esm/f16round.js +39 -0
  507. package/esm/f16round.js.map +1 -0
  508. package/esm/float16/constants.d.ts +97 -0
  509. package/esm/float16/constants.d.ts.map +1 -0
  510. package/esm/float16/constants.js +96 -0
  511. package/esm/float16/constants.js.map +1 -0
  512. package/esm/float16/decode.d.ts +40 -0
  513. package/esm/float16/decode.d.ts.map +1 -0
  514. package/esm/float16/decode.js +61 -0
  515. package/esm/float16/decode.js.map +1 -0
  516. package/esm/float16/encode.d.ts +67 -0
  517. package/esm/float16/encode.d.ts.map +1 -0
  518. package/esm/float16/encode.js +71 -0
  519. package/esm/float16/encode.js.map +1 -0
  520. package/esm/float16/guards.d.ts +22 -0
  521. package/esm/float16/guards.d.ts.map +1 -0
  522. package/esm/float16/guards.js +12 -0
  523. package/esm/float16/guards.js.map +1 -0
  524. package/esm/float16/index.d.ts +11 -0
  525. package/esm/float16/index.d.ts.map +1 -0
  526. package/esm/float16/index.js +11 -0
  527. package/esm/float16/index.js.map +1 -0
  528. package/esm/float16/round.d.ts +25 -0
  529. package/esm/float16/round.d.ts.map +1 -0
  530. package/esm/float16/round.js +43 -0
  531. package/esm/float16/round.js.map +1 -0
  532. package/esm/float32/constants.d.ts +96 -0
  533. package/esm/float32/constants.d.ts.map +1 -0
  534. package/esm/float32/constants.js +95 -0
  535. package/esm/float32/constants.js.map +1 -0
  536. package/esm/float32/decode.d.ts +38 -0
  537. package/esm/float32/decode.d.ts.map +1 -0
  538. package/esm/float32/decode.js +64 -0
  539. package/esm/float32/decode.js.map +1 -0
  540. package/esm/float32/encode.d.ts +50 -0
  541. package/esm/float32/encode.d.ts.map +1 -0
  542. package/esm/float32/encode.js +71 -0
  543. package/esm/float32/encode.js.map +1 -0
  544. package/esm/float32/guards.d.ts +37 -0
  545. package/esm/float32/guards.d.ts.map +1 -0
  546. package/esm/float32/guards.js +16 -0
  547. package/esm/float32/guards.js.map +1 -0
  548. package/esm/float32/index.d.ts +11 -0
  549. package/esm/float32/index.d.ts.map +1 -0
  550. package/esm/float32/index.js +11 -0
  551. package/esm/float32/index.js.map +1 -0
  552. package/esm/float32/round.d.ts +23 -0
  553. package/esm/float32/round.d.ts.map +1 -0
  554. package/esm/float32/round.js +33 -0
  555. package/esm/float32/round.js.map +1 -0
  556. package/esm/floor.d.ts +10 -0
  557. package/esm/floor.d.ts.map +1 -0
  558. package/esm/floor.js +29 -0
  559. package/esm/floor.js.map +1 -0
  560. package/esm/fround.d.ts +23 -0
  561. package/esm/fround.d.ts.map +1 -0
  562. package/esm/fround.js +32 -0
  563. package/esm/fround.js.map +1 -0
  564. package/esm/guards/finite.d.ts +23 -0
  565. package/esm/guards/finite.d.ts.map +1 -0
  566. package/esm/guards/finite.js +18 -0
  567. package/esm/guards/finite.js.map +1 -0
  568. package/esm/guards/index.d.ts +50 -0
  569. package/esm/guards/index.d.ts.map +1 -0
  570. package/esm/guards/index.js +50 -0
  571. package/esm/guards/index.js.map +1 -0
  572. package/esm/guards/infinity.d.ts +3 -0
  573. package/esm/guards/infinity.d.ts.map +1 -0
  574. package/esm/guards/infinity.js +3 -0
  575. package/esm/guards/infinity.js.map +1 -0
  576. package/esm/guards/integer.d.ts +47 -0
  577. package/esm/guards/integer.d.ts.map +1 -0
  578. package/esm/guards/integer.js +19 -0
  579. package/esm/guards/integer.js.map +1 -0
  580. package/esm/guards/nan.d.ts +61 -0
  581. package/esm/guards/nan.d.ts.map +1 -0
  582. package/esm/guards/nan.js +63 -0
  583. package/esm/guards/nan.js.map +1 -0
  584. package/esm/guards/negative_infinity.d.ts +19 -0
  585. package/esm/guards/negative_infinity.d.ts.map +1 -0
  586. package/esm/guards/negative_infinity.js +21 -0
  587. package/esm/guards/negative_infinity.js.map +1 -0
  588. package/esm/guards/negative_zero.d.ts +12 -0
  589. package/esm/guards/negative_zero.d.ts.map +1 -0
  590. package/esm/guards/negative_zero.js +20 -0
  591. package/esm/guards/negative_zero.js.map +1 -0
  592. package/esm/guards/positive_infinity.d.ts +19 -0
  593. package/esm/guards/positive_infinity.d.ts.map +1 -0
  594. package/esm/guards/positive_infinity.js +21 -0
  595. package/esm/guards/positive_infinity.js.map +1 -0
  596. package/esm/guards/positive_zero.d.ts +17 -0
  597. package/esm/guards/positive_zero.d.ts.map +1 -0
  598. package/esm/guards/positive_zero.js +19 -0
  599. package/esm/guards/positive_zero.js.map +1 -0
  600. package/esm/guards/safe_integer.d.ts +33 -0
  601. package/esm/guards/safe_integer.d.ts.map +1 -0
  602. package/esm/guards/safe_integer.js +22 -0
  603. package/esm/guards/safe_integer.js.map +1 -0
  604. package/esm/hypot.d.ts +18 -0
  605. package/esm/hypot.d.ts.map +1 -0
  606. package/esm/hypot.js +60 -0
  607. package/esm/hypot.js.map +1 -0
  608. package/esm/ieee754.d.ts +16 -0
  609. package/esm/ieee754.d.ts.map +1 -0
  610. package/esm/ieee754.js +16 -0
  611. package/esm/ieee754.js.map +1 -0
  612. package/esm/imul.d.ts +17 -0
  613. package/esm/imul.d.ts.map +1 -0
  614. package/esm/imul.js +21 -0
  615. package/esm/imul.js.map +1 -0
  616. package/esm/index.d.ts +84 -0
  617. package/esm/index.d.ts.map +1 -0
  618. package/esm/index.js +84 -0
  619. package/esm/index.js.map +1 -0
  620. package/esm/internal/ieee754.d.ts +174 -0
  621. package/esm/internal/ieee754.d.ts.map +1 -0
  622. package/esm/internal/ieee754.js +194 -0
  623. package/esm/internal/ieee754.js.map +1 -0
  624. package/esm/internal/primordials.d.ts +30 -0
  625. package/esm/internal/primordials.d.ts.map +1 -0
  626. package/esm/internal/primordials.js +27 -0
  627. package/esm/internal/primordials.js.map +1 -0
  628. package/esm/log.d.ts +9 -0
  629. package/esm/log.d.ts.map +1 -0
  630. package/esm/log.js +43 -0
  631. package/esm/log.js.map +1 -0
  632. package/esm/log10.d.ts +9 -0
  633. package/esm/log10.d.ts.map +1 -0
  634. package/esm/log10.js +18 -0
  635. package/esm/log10.js.map +1 -0
  636. package/esm/log1p.d.ts +10 -0
  637. package/esm/log1p.d.ts.map +1 -0
  638. package/esm/log1p.js +29 -0
  639. package/esm/log1p.js.map +1 -0
  640. package/esm/log2.d.ts +12 -0
  641. package/esm/log2.d.ts.map +1 -0
  642. package/esm/log2.js +21 -0
  643. package/esm/log2.js.map +1 -0
  644. package/esm/max.d.ts +22 -0
  645. package/esm/max.d.ts.map +1 -0
  646. package/esm/max.js +48 -0
  647. package/esm/max.js.map +1 -0
  648. package/esm/min.d.ts +10 -0
  649. package/esm/min.d.ts.map +1 -0
  650. package/esm/min.js +33 -0
  651. package/esm/min.js.map +1 -0
  652. package/esm/package.json +3 -0
  653. package/esm/pow.d.ts +31 -0
  654. package/esm/pow.d.ts.map +1 -0
  655. package/esm/pow.js +33 -0
  656. package/esm/pow.js.map +1 -0
  657. package/esm/random.d.ts +93 -0
  658. package/esm/random.d.ts.map +1 -0
  659. package/esm/random.js +237 -0
  660. package/esm/random.js.map +1 -0
  661. package/esm/round.d.ts +9 -0
  662. package/esm/round.d.ts.map +1 -0
  663. package/esm/round.js +21 -0
  664. package/esm/round.js.map +1 -0
  665. package/esm/sign.d.ts +17 -0
  666. package/esm/sign.d.ts.map +1 -0
  667. package/esm/sign.js +19 -0
  668. package/esm/sign.js.map +1 -0
  669. package/esm/sin.d.ts +14 -0
  670. package/esm/sin.d.ts.map +1 -0
  671. package/esm/sin.js +28 -0
  672. package/esm/sin.js.map +1 -0
  673. package/esm/sinh.d.ts +14 -0
  674. package/esm/sinh.d.ts.map +1 -0
  675. package/esm/sinh.js +19 -0
  676. package/esm/sinh.js.map +1 -0
  677. package/esm/sqrt.d.ts +19 -0
  678. package/esm/sqrt.d.ts.map +1 -0
  679. package/esm/sqrt.js +42 -0
  680. package/esm/sqrt.js.map +1 -0
  681. package/esm/tan.d.ts +9 -0
  682. package/esm/tan.d.ts.map +1 -0
  683. package/esm/tan.js +23 -0
  684. package/esm/tan.js.map +1 -0
  685. package/esm/tanh.d.ts +17 -0
  686. package/esm/tanh.d.ts.map +1 -0
  687. package/esm/tanh.js +31 -0
  688. package/esm/tanh.js.map +1 -0
  689. package/esm/trunc.d.ts +21 -0
  690. package/esm/trunc.d.ts.map +1 -0
  691. package/esm/trunc.js +47 -0
  692. package/esm/trunc.js.map +1 -0
  693. package/esm/types/finite.d.ts +16 -0
  694. package/esm/types/finite.d.ts.map +1 -0
  695. package/esm/types/finite.js +3 -0
  696. package/esm/types/finite.js.map +1 -0
  697. package/esm/types/float.d.ts +65 -0
  698. package/esm/types/float.d.ts.map +1 -0
  699. package/esm/types/float.js +3 -0
  700. package/esm/types/float.js.map +1 -0
  701. package/esm/types/index.d.ts +6 -0
  702. package/esm/types/index.d.ts.map +1 -0
  703. package/esm/types/index.js +6 -0
  704. package/esm/types/index.js.map +1 -0
  705. package/esm/types/integer.d.ts +147 -0
  706. package/esm/types/integer.d.ts.map +1 -0
  707. package/esm/types/integer.js +4 -0
  708. package/esm/types/integer.js.map +1 -0
  709. package/esm/types/precision.d.ts +46 -0
  710. package/esm/types/precision.d.ts.map +1 -0
  711. package/esm/types/precision.js +8 -0
  712. package/esm/types/precision.js.map +1 -0
  713. package/esm/types/safe_integer.d.ts +17 -0
  714. package/esm/types/safe_integer.d.ts.map +1 -0
  715. package/esm/types/safe_integer.js +4 -0
  716. package/esm/types/safe_integer.js.map +1 -0
  717. package/package.json +1834 -0
  718. package/src/abs.ts +18 -0
  719. package/src/acos.ts +24 -0
  720. package/src/acosh.ts +28 -0
  721. package/src/asin.ts +24 -0
  722. package/src/asinh.ts +21 -0
  723. package/src/atan.ts +64 -0
  724. package/src/atan2.ts +58 -0
  725. package/src/atanh.ts +26 -0
  726. package/src/cbrt.ts +22 -0
  727. package/src/ceil.ts +27 -0
  728. package/src/clamp.ts +29 -0
  729. package/src/clz32.ts +45 -0
  730. package/src/constants/e.ts +18 -0
  731. package/src/constants/epsilon.ts +25 -0
  732. package/src/constants/index.ts +22 -0
  733. package/src/constants/infinity.ts +2 -0
  734. package/src/constants/ln10.ts +9 -0
  735. package/src/constants/ln2.ts +9 -0
  736. package/src/constants/log10e.ts +9 -0
  737. package/src/constants/log2e.ts +9 -0
  738. package/src/constants/max_safe_integer.ts +10 -0
  739. package/src/constants/max_value.ts +9 -0
  740. package/src/constants/min_safe_integer.ts +11 -0
  741. package/src/constants/min_value.ts +9 -0
  742. package/src/constants/nan.ts +57 -0
  743. package/src/constants/negative_infinity.ts +28 -0
  744. package/src/constants/negative_zero.ts +34 -0
  745. package/src/constants/pi.ts +9 -0
  746. package/src/constants/positive_infinity.ts +30 -0
  747. package/src/constants/positive_zero.ts +41 -0
  748. package/src/constants/sqrt1_2.ts +8 -0
  749. package/src/constants/sqrt2.ts +8 -0
  750. package/src/cos.ts +29 -0
  751. package/src/cosh.ts +18 -0
  752. package/src/exp.ts +45 -0
  753. package/src/expm1.ts +31 -0
  754. package/src/f16round.ts +39 -0
  755. package/src/float16/constants.ts +106 -0
  756. package/src/float16/decode.ts +61 -0
  757. package/src/float16/encode.ts +72 -0
  758. package/src/float16/guards.ts +33 -0
  759. package/src/float16/index.ts +10 -0
  760. package/src/float16/round.ts +43 -0
  761. package/src/float32/constants.ts +105 -0
  762. package/src/float32/decode.ts +64 -0
  763. package/src/float32/encode.ts +71 -0
  764. package/src/float32/guards.ts +54 -0
  765. package/src/float32/index.ts +10 -0
  766. package/src/float32/round.ts +33 -0
  767. package/src/floor.ts +26 -0
  768. package/src/fround.ts +32 -0
  769. package/src/guards/finite.ts +45 -0
  770. package/src/guards/index.ts +49 -0
  771. package/src/guards/infinity.ts +2 -0
  772. package/src/guards/integer.ts +62 -0
  773. package/src/guards/nan.ts +65 -0
  774. package/src/guards/negative_infinity.ts +22 -0
  775. package/src/guards/negative_zero.ts +21 -0
  776. package/src/guards/positive_infinity.ts +22 -0
  777. package/src/guards/positive_zero.ts +19 -0
  778. package/src/guards/safe_integer.ts +56 -0
  779. package/src/hypot.ts +59 -0
  780. package/src/ieee754.ts +15 -0
  781. package/src/imul.ts +21 -0
  782. package/src/index.ts +84 -0
  783. package/src/internal/ieee754.ts +255 -0
  784. package/src/internal/primordials.ts +33 -0
  785. package/src/log.ts +42 -0
  786. package/src/log10.ts +18 -0
  787. package/src/log1p.ts +26 -0
  788. package/src/log2.ts +21 -0
  789. package/src/max.ts +46 -0
  790. package/src/min.ts +32 -0
  791. package/src/pow.ts +33 -0
  792. package/src/random.ts +241 -0
  793. package/src/round.ts +20 -0
  794. package/src/sign.ts +19 -0
  795. package/src/sin.ts +29 -0
  796. package/src/sinh.ts +19 -0
  797. package/src/sqrt.ts +40 -0
  798. package/src/tan.ts +22 -0
  799. package/src/tanh.ts +28 -0
  800. package/src/trunc.ts +44 -0
  801. package/src/types/finite.ts +23 -0
  802. package/src/types/float.ts +74 -0
  803. package/src/types/index.ts +5 -0
  804. package/src/types/integer.ts +167 -0
  805. package/src/types/precision.ts +51 -0
  806. package/src/types/safe_integer.ts +18 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cosh.js","sourceRoot":"","sources":["../src/cosh.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B;;;;;;;GAOG;AACH,MAAM,UAAU,IAAI,CAAC,CAAS;IAC5B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAChC,CAAC"}
package/esm/exp.d.ts ADDED
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Calculates the exponential function of a number, returning `e^x`.
3
+ *
4
+ * This is functionally equivalent to the `Math.exp` function.
5
+ *
6
+ * @param x The number to calculate the exponential function of (e^x)
7
+ * @returns The exponential function of the provided number.
8
+ * @category Exponential
9
+ * @example
10
+ * ```ts no-eval
11
+ * import { exp } from "@nick/math";
12
+ * import assert from "node:assert";
13
+ *
14
+ * assert.equal(exp(0), 1);
15
+ * assert.equal(exp(1), 2.7182818284590455);
16
+ * assert.equal(exp(2), 7.389056098930649);
17
+ * ```
18
+ */
19
+ export declare function exp(x: number): number;
20
+ //# sourceMappingURL=exp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exp.d.ts","sourceRoot":"","sources":["../src/exp.ts"],"names":[],"mappings":"AAUA;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAgBrC"}
package/esm/exp.js ADDED
@@ -0,0 +1,45 @@
1
+ /**
2
+ * @category Exponential
3
+ * @module exp
4
+ */
5
+ import { EPSILON } from "./constants/epsilon.js";
6
+ import { isNegativeInfinity } from "./guards/negative_infinity.js";
7
+ import { isPositiveInfinity } from "./guards/positive_infinity.js";
8
+ import { isNaN } from "./guards/nan.js";
9
+ import { abs } from "./abs.js";
10
+ /**
11
+ * Calculates the exponential function of a number, returning `e^x`.
12
+ *
13
+ * This is functionally equivalent to the `Math.exp` function.
14
+ *
15
+ * @param x The number to calculate the exponential function of (e^x)
16
+ * @returns The exponential function of the provided number.
17
+ * @category Exponential
18
+ * @example
19
+ * ```ts no-eval
20
+ * import { exp } from "@nick/math";
21
+ * import assert from "node:assert";
22
+ *
23
+ * assert.equal(exp(0), 1);
24
+ * assert.equal(exp(1), 2.7182818284590455);
25
+ * assert.equal(exp(2), 7.389056098930649);
26
+ * ```
27
+ */
28
+ export function exp(x) {
29
+ if (isNegativeInfinity(x))
30
+ return 0;
31
+ if (isPositiveInfinity(x) || isNaN(x))
32
+ return x;
33
+ if (x === 0)
34
+ return 1;
35
+ const a = abs(x);
36
+ let result = 1, term = 1, iteration = 1;
37
+ // Using Taylor series expansion to approximate e^x
38
+ while (term > EPSILON) {
39
+ term *= a / iteration;
40
+ result += term;
41
+ iteration += 1;
42
+ }
43
+ return x < 0 ? 1 / result : result;
44
+ }
45
+ //# sourceMappingURL=exp.js.map
package/esm/exp.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exp.js","sourceRoot":"","sources":["../src/exp.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,GAAG,CAAC,CAAS;IAC3B,IAAI,kBAAkB,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IACpC,IAAI,kBAAkB,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IAChD,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAEtB,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IACjB,IAAI,MAAM,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC;IAExC,mDAAmD;IACnD,OAAO,IAAI,GAAG,OAAO,EAAE,CAAC;QACtB,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC;QACtB,MAAM,IAAI,IAAI,CAAC;QACf,SAAS,IAAI,CAAC,CAAC;IACjB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;AACrC,CAAC"}
package/esm/expm1.d.ts ADDED
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Calculates `exp(x) - 1` (the exponential of x minus 1).
3
+ *
4
+ * Accurate even for very small values of x.
5
+ *
6
+ * @param x The number whose exponential minus 1 is to be calculated.
7
+ * @returns The value of `exp(x) - 1`.
8
+ * @category Exponential
9
+ */
10
+ export declare function expm1(x: number): number;
11
+ //# sourceMappingURL=expm1.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expm1.d.ts","sourceRoot":"","sources":["../src/expm1.ts"],"names":[],"mappings":"AAYA;;;;;;;;GAQG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CASvC"}
package/esm/expm1.js ADDED
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Calculates the exponential of `x` minus 1 (`exp(x) - 1`) with a high degree
3
+ * of accuracy, even for very small values of `x`.
4
+ *
5
+ * @module expm1
6
+ */
7
+ import { EPSILON } from "./constants/epsilon.js";
8
+ import { abs } from "./abs.js";
9
+ import { exp } from "./exp.js";
10
+ import { NEGATIVE_INFINITY } from "./constants/negative_infinity.js";
11
+ import { POSITIVE_INFINITY } from "./constants/positive_infinity.js";
12
+ /**
13
+ * Calculates `exp(x) - 1` (the exponential of x minus 1).
14
+ *
15
+ * Accurate even for very small values of x.
16
+ *
17
+ * @param x The number whose exponential minus 1 is to be calculated.
18
+ * @returns The value of `exp(x) - 1`.
19
+ * @category Exponential
20
+ */
21
+ export function expm1(x) {
22
+ // fast paths for common cases
23
+ if ((x = +x) === 0)
24
+ return x; // respect -0
25
+ if (x === POSITIVE_INFINITY)
26
+ return x;
27
+ if (x === NEGATIVE_INFINITY)
28
+ return -1;
29
+ // for very small values of x, exp(x) - 1 is approximately equal to x
30
+ if (abs(x) < EPSILON)
31
+ return x;
32
+ // for all other values of x, exp(x) - 1 is accurate
33
+ return exp(x) - 1;
34
+ }
35
+ //# sourceMappingURL=expm1.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expm1.js","sourceRoot":"","sources":["../src/expm1.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAErE;;;;;;;;GAQG;AACH,MAAM,UAAU,KAAK,CAAC,CAAS;IAC7B,8BAA8B;IAC9B,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC,CAAC,aAAa;IAC3C,IAAI,CAAC,KAAK,iBAAiB;QAAE,OAAO,CAAC,CAAC;IACtC,IAAI,CAAC,KAAK,iBAAiB;QAAE,OAAO,CAAC,CAAC,CAAC;IACvC,qEAAqE;IACrE,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO;QAAE,OAAO,CAAC,CAAC;IAC/B,oDAAoD;IACpD,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACpB,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Rounds a number to the nearest 16-bit floating point value (half precision).
3
+ *
4
+ * Based on `Math.f16round` function from the TC39 Proposal for [Float16Array],
5
+ * which began shipping in ES2024, this function follows the same rounding and
6
+ * conversion rules as per the IEEE 754-2008 specification for half-precision
7
+ * floating-point numbers (also known as binary16).
8
+ *
9
+ * [Float16Array]: https://github.com/tc39/proposal-float16array
10
+ *
11
+ * @param x The number to round.
12
+ * @returns The 16-bit floating point rounded value of the number.
13
+ * @category Rounding
14
+ * @tags float, float16
15
+ * @example
16
+ * ```ts
17
+ * import { f16round } from "@nick/math/f16round";
18
+ * import { PI } from "@nick/math/constants";
19
+ *
20
+ * console.assert(f16round(PI) === 3.140625); // OK
21
+ * ```
22
+ */
23
+ export declare function f16round(x: number): number;
24
+ //# sourceMappingURL=f16round.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"f16round.d.ts","sourceRoot":"","sources":["../src/f16round.ts"],"names":[],"mappings":"AAcA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE1C"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Rounds a number to the nearest 16-bit floating point value (half precision).
3
+ *
4
+ * Based on `Math.f16round` function from the TC39 Proposal for [Float16Array],
5
+ * which began shipping in ES2024, this function follows the same rounding and
6
+ * conversion rules as per the IEEE 754-2008 specification for half-precision
7
+ * floating-point numbers (also known as binary16).
8
+ *
9
+ * [Float16Array]: https://github.com/tc39/proposal-float16array
10
+ *
11
+ * @module f16round
12
+ */
13
+ import { roundFloat16 } from "./float16/round.js";
14
+ /**
15
+ * Rounds a number to the nearest 16-bit floating point value (half precision).
16
+ *
17
+ * Based on `Math.f16round` function from the TC39 Proposal for [Float16Array],
18
+ * which began shipping in ES2024, this function follows the same rounding and
19
+ * conversion rules as per the IEEE 754-2008 specification for half-precision
20
+ * floating-point numbers (also known as binary16).
21
+ *
22
+ * [Float16Array]: https://github.com/tc39/proposal-float16array
23
+ *
24
+ * @param x The number to round.
25
+ * @returns The 16-bit floating point rounded value of the number.
26
+ * @category Rounding
27
+ * @tags float, float16
28
+ * @example
29
+ * ```ts
30
+ * import { f16round } from "@nick/math/f16round";
31
+ * import { PI } from "@nick/math/constants";
32
+ *
33
+ * console.assert(f16round(PI) === 3.140625); // OK
34
+ * ```
35
+ */
36
+ export function f16round(x) {
37
+ return roundFloat16(x);
38
+ }
39
+ //# sourceMappingURL=f16round.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"f16round.js","sourceRoot":"","sources":["../src/f16round.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,QAAQ,CAAC,CAAS;IAChC,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;AACzB,CAAC"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * This module provides constants used by the encoding/decoding APIs in the
3
+ * `@nick/math/float16` suite. These are primarily used to handle special cases
4
+ * such as `NaN`, `Infinity`, and `-0`, which have unique representations in
5
+ * the IEEE-754 half-precision floating point format.
6
+ *
7
+ * These are intended for primarily internal use, but are exported for the sake
8
+ * of completeness and transparency, as well as for potential userland usage in
9
+ * cases where the constants are needed for custom encoding/decoding logic.
10
+ *
11
+ * @module float16/constants
12
+ */
13
+ /**
14
+ * Well-known bit pattern representing `NaN` in the IEEE-754 half-precision (or
15
+ * "binary16") format.
16
+ *
17
+ * @category Constants
18
+ * @tags float16, ieee-754, NaN
19
+ */
20
+ export declare const FLOAT16_NAN = 32256;
21
+ /**
22
+ * Well-known bit pattern representing `+Infinity` (positive infinity) in the
23
+ * IEEE-754 half-precision (or "binary16") format.
24
+ *
25
+ * @category Constants
26
+ * @tags float16, ieee-754, Infinity
27
+ */
28
+ export declare const FLOAT16_POSITIVE_INFINITY = 31744;
29
+ /**
30
+ * Well-known bit pattern representing `-Infinity` (negative infinity) in the
31
+ * IEEE-754 half-precision (or "binary16") format.
32
+ *
33
+ * @category Constants
34
+ * @tags float16, ieee-754, Infinity
35
+ */
36
+ export declare const FLOAT16_NEGATIVE_INFINITY = 64512;
37
+ /**
38
+ * Well-known bit pattern representing `-0` (negative zero) in the IEEE-754
39
+ * half-precision (or "binary16") format.
40
+ *
41
+ * @category Constants
42
+ * @tags float16, ieee-754, zero
43
+ */
44
+ export declare const FLOAT16_NEGATIVE_ZERO = 32768;
45
+ /**
46
+ * Well-known bit pattern representing `+0` (positive zero) in the IEEE-754
47
+ * half-precision (or "binary16") format.
48
+ *
49
+ * **Note**: This constant, unlike the others, is equivalent to its bit pattern
50
+ * representation (all bits are zero). As such, this is not strictly necessary
51
+ * for encoding/decoding, but is included for completeness and consistency.
52
+ *
53
+ * @category Constants
54
+ * @tags float16, ieee-754, zero
55
+ */
56
+ export declare const FLOAT16_POSITIVE_ZERO = 0;
57
+ /**
58
+ * The number of bits used for the exponent in the IEEE-754 half-precision
59
+ * (or "binary16") format.
60
+ *
61
+ * @category Constants
62
+ * @tags float16, ieee-754, exponent
63
+ */
64
+ export declare const FLOAT16_EXPONENT_BITS = 5;
65
+ /**
66
+ * The number of bits used for the mantissa in the IEEE-754 half-precision
67
+ * (or "binary16") format.
68
+ *
69
+ * @category Constants
70
+ * @tags float16, ieee-754, mantissa
71
+ */
72
+ export declare const FLOAT16_MANTISSA_BITS = 10;
73
+ /**
74
+ * The exponent bias used in the IEEE-754 half-precision (or "binary16")
75
+ * format.
76
+ *
77
+ * @category Constants
78
+ * @tags float16, ieee-754, bias
79
+ */
80
+ export declare const FLOAT16_EXPONENT_BIAS = 15;
81
+ /**
82
+ * Represents the IEEE-754 binary16 (half-precision) floating-point format.
83
+ *
84
+ * @internal
85
+ */
86
+ declare const _default: {
87
+ readonly exponent: 5;
88
+ readonly mantissa: 10;
89
+ readonly bias: 15;
90
+ readonly nan: 32256;
91
+ readonly positive_infinity: 31744;
92
+ readonly negative_infinity: 64512;
93
+ readonly negative_zero: 32768;
94
+ readonly positive_zero: 0;
95
+ };
96
+ export default _default;
97
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/float16/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,QAAS,CAAC;AAElC;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,QAAS,CAAC;AAEhD;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,QAAS,CAAC;AAEhD;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,QAAS,CAAC;AAE5C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,qBAAqB,IAAS,CAAC;AAE5C;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,IAAM,CAAC;AAEzC;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,KAAM,CAAC;AAEzC;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,KAAM,CAAC;AAEzC;;;;GAIG;;;;;;;;;;;AACH,wBASiC"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * This module provides constants used by the encoding/decoding APIs in the
3
+ * `@nick/math/float16` suite. These are primarily used to handle special cases
4
+ * such as `NaN`, `Infinity`, and `-0`, which have unique representations in
5
+ * the IEEE-754 half-precision floating point format.
6
+ *
7
+ * These are intended for primarily internal use, but are exported for the sake
8
+ * of completeness and transparency, as well as for potential userland usage in
9
+ * cases where the constants are needed for custom encoding/decoding logic.
10
+ *
11
+ * @module float16/constants
12
+ */
13
+ /**
14
+ * Well-known bit pattern representing `NaN` in the IEEE-754 half-precision (or
15
+ * "binary16") format.
16
+ *
17
+ * @category Constants
18
+ * @tags float16, ieee-754, NaN
19
+ */
20
+ export const FLOAT16_NAN = 0x7E00;
21
+ /**
22
+ * Well-known bit pattern representing `+Infinity` (positive infinity) in the
23
+ * IEEE-754 half-precision (or "binary16") format.
24
+ *
25
+ * @category Constants
26
+ * @tags float16, ieee-754, Infinity
27
+ */
28
+ export const FLOAT16_POSITIVE_INFINITY = 0x7C00;
29
+ /**
30
+ * Well-known bit pattern representing `-Infinity` (negative infinity) in the
31
+ * IEEE-754 half-precision (or "binary16") format.
32
+ *
33
+ * @category Constants
34
+ * @tags float16, ieee-754, Infinity
35
+ */
36
+ export const FLOAT16_NEGATIVE_INFINITY = 0xFC00;
37
+ /**
38
+ * Well-known bit pattern representing `-0` (negative zero) in the IEEE-754
39
+ * half-precision (or "binary16") format.
40
+ *
41
+ * @category Constants
42
+ * @tags float16, ieee-754, zero
43
+ */
44
+ export const FLOAT16_NEGATIVE_ZERO = 0x8000;
45
+ /**
46
+ * Well-known bit pattern representing `+0` (positive zero) in the IEEE-754
47
+ * half-precision (or "binary16") format.
48
+ *
49
+ * **Note**: This constant, unlike the others, is equivalent to its bit pattern
50
+ * representation (all bits are zero). As such, this is not strictly necessary
51
+ * for encoding/decoding, but is included for completeness and consistency.
52
+ *
53
+ * @category Constants
54
+ * @tags float16, ieee-754, zero
55
+ */
56
+ export const FLOAT16_POSITIVE_ZERO = 0x0000;
57
+ /**
58
+ * The number of bits used for the exponent in the IEEE-754 half-precision
59
+ * (or "binary16") format.
60
+ *
61
+ * @category Constants
62
+ * @tags float16, ieee-754, exponent
63
+ */
64
+ export const FLOAT16_EXPONENT_BITS = 0x5;
65
+ /**
66
+ * The number of bits used for the mantissa in the IEEE-754 half-precision
67
+ * (or "binary16") format.
68
+ *
69
+ * @category Constants
70
+ * @tags float16, ieee-754, mantissa
71
+ */
72
+ export const FLOAT16_MANTISSA_BITS = 0xA;
73
+ /**
74
+ * The exponent bias used in the IEEE-754 half-precision (or "binary16")
75
+ * format.
76
+ *
77
+ * @category Constants
78
+ * @tags float16, ieee-754, bias
79
+ */
80
+ export const FLOAT16_EXPONENT_BIAS = 0xF;
81
+ /**
82
+ * Represents the IEEE-754 binary16 (half-precision) floating-point format.
83
+ *
84
+ * @internal
85
+ */
86
+ export default {
87
+ exponent: FLOAT16_EXPONENT_BITS,
88
+ mantissa: FLOAT16_MANTISSA_BITS,
89
+ bias: FLOAT16_EXPONENT_BIAS,
90
+ nan: FLOAT16_NAN,
91
+ positive_infinity: FLOAT16_POSITIVE_INFINITY,
92
+ negative_infinity: FLOAT16_NEGATIVE_INFINITY,
93
+ negative_zero: FLOAT16_NEGATIVE_ZERO,
94
+ positive_zero: FLOAT16_POSITIVE_ZERO,
95
+ };
96
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/float16/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC;AAElC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,MAAM,CAAC;AAEhD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,MAAM,CAAC;AAEhD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC;AAE5C;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC;AAE5C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAEzC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAEzC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAEzC;;;;GAIG;AACH,eAAe;IACb,QAAQ,EAAE,qBAAqB;IAC/B,QAAQ,EAAE,qBAAqB;IAC/B,IAAI,EAAE,qBAAqB;IAC3B,GAAG,EAAE,WAAW;IAChB,iBAAiB,EAAE,yBAAyB;IAC5C,iBAAiB,EAAE,yBAAyB;IAC5C,aAAa,EAAE,qBAAqB;IACpC,aAAa,EAAE,qBAAqB;CACN,CAAC"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Decodes a 16-bit unsigned integer (`Uint16`) into a 16-bit half-precision
3
+ * floating point value (`Float16`) with 10 bits of mantissa. This function
4
+ * follows the IEEE 754-2008 spec for half-precision floating point numbers.
5
+ *
6
+ * The input value is expected to be the result of an encoding operation, such
7
+ * as the value returned by the {@linkcode encodeFloat16} function, or by
8
+ * DataView's `getUint16` method when reading a half-precision float.
9
+ *
10
+ * This function is used internally by the {@linkcode f16round} function to
11
+ * convert the intermediate value back into a standard JavaScript number. The
12
+ * returned value is a standard JavaScript number, which can be used in
13
+ * arithmetic operations or passed to other functions.
14
+ *
15
+ * ## Special Cases
16
+ *
17
+ * The following special cases are handled separately, short-circuiting the
18
+ * decoding process to return a well-known constant value (as per IEEE spec):
19
+ *
20
+ * - `0x7E00` (32256) decodes to `NaN`
21
+ * - `0x7C00` (31744) decodes to `+Infinity`
22
+ * - `0xFC00` (64512) decodes to `-Infinity`
23
+ * - `0x8000` (32768) decodes to `-0`
24
+ *
25
+ * @param bits The encoded 16-bit half-precision floating point value.
26
+ * @returns The decoded standard JavaScript number.
27
+ * @example
28
+ * ```ts
29
+ * import { decodeFloat16 } from "@nick/math/float16";
30
+ *
31
+ * console.log(decodeFloat16(0x4248)); // 3.140625
32
+ *
33
+ * const view = new DataView(new Float16Array([3.14]).buffer);
34
+ * console.log(decodeFloat16(view.getUint16(0))); // 3.140625
35
+ * ```
36
+ * @category IEEE-754
37
+ * @tags float, float16, decode
38
+ */
39
+ export declare function decodeFloat16(bits: number): number;
40
+ //# sourceMappingURL=decode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decode.d.ts","sourceRoot":"","sources":["../../src/float16/decode.ts"],"names":[],"mappings":"AAoBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * This module provides functions for decoding 16-bit half-precision floating
3
+ * point numbers (`Float16`) from IEEE 754-2008 encoded `Uint16` values, like
4
+ * those returned by {@linkcode encodeFloat16} or DataView's `geUint16` method.
5
+ *
6
+ * The `Float16` format is a 16-bit representation of a floating point number
7
+ * that follows the IEEE 754-2008 standard for half-precision binary16 floating
8
+ * point numbers. This format is used to store floating point values in a
9
+ * DataView or TypedArray, and is used in graphics programming and other
10
+ * performance-sensitive applications.
11
+ *
12
+ * The `decodeFloat16` function decodes a 16-bit half-precision floating point
13
+ * value into a standard JavaScript number, which can be used in arithmetic
14
+ * operations or passed to other functions.
15
+ *
16
+ * @module float16/decode
17
+ */
18
+ import float16 from "./constants.js";
19
+ import { decode } from "../internal/ieee754.js";
20
+ /**
21
+ * Decodes a 16-bit unsigned integer (`Uint16`) into a 16-bit half-precision
22
+ * floating point value (`Float16`) with 10 bits of mantissa. This function
23
+ * follows the IEEE 754-2008 spec for half-precision floating point numbers.
24
+ *
25
+ * The input value is expected to be the result of an encoding operation, such
26
+ * as the value returned by the {@linkcode encodeFloat16} function, or by
27
+ * DataView's `getUint16` method when reading a half-precision float.
28
+ *
29
+ * This function is used internally by the {@linkcode f16round} function to
30
+ * convert the intermediate value back into a standard JavaScript number. The
31
+ * returned value is a standard JavaScript number, which can be used in
32
+ * arithmetic operations or passed to other functions.
33
+ *
34
+ * ## Special Cases
35
+ *
36
+ * The following special cases are handled separately, short-circuiting the
37
+ * decoding process to return a well-known constant value (as per IEEE spec):
38
+ *
39
+ * - `0x7E00` (32256) decodes to `NaN`
40
+ * - `0x7C00` (31744) decodes to `+Infinity`
41
+ * - `0xFC00` (64512) decodes to `-Infinity`
42
+ * - `0x8000` (32768) decodes to `-0`
43
+ *
44
+ * @param bits The encoded 16-bit half-precision floating point value.
45
+ * @returns The decoded standard JavaScript number.
46
+ * @example
47
+ * ```ts
48
+ * import { decodeFloat16 } from "@nick/math/float16";
49
+ *
50
+ * console.log(decodeFloat16(0x4248)); // 3.140625
51
+ *
52
+ * const view = new DataView(new Float16Array([3.14]).buffer);
53
+ * console.log(decodeFloat16(view.getUint16(0))); // 3.140625
54
+ * ```
55
+ * @category IEEE-754
56
+ * @tags float, float16, decode
57
+ */
58
+ export function decodeFloat16(bits) {
59
+ return decode(bits, float16);
60
+ }
61
+ //# sourceMappingURL=decode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decode.js","sourceRoot":"","sources":["../../src/float16/decode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,OAAO,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * This module provides functions for encoding standard JavaScript numbers into
3
+ * 16-bit half-precision floating point numbers (`Float16`) that follow the
4
+ * IEEE 754-2008 standard for half-precision binary16 floating point numbers.
5
+ *
6
+ * The `Float16` format is a 16-bit representation of a floating point number
7
+ * that is used to store floating point values in a DataView or TypedArray.
8
+ * This format is used in graphics programming and other performance-sensitive
9
+ * applications.
10
+ *
11
+ * The `encodeFloat16` function encodes a standard JavaScript number into a
12
+ * 16-bit half-precision floating point value, which can be stored in a
13
+ * DataView via `setUint16`, or used in other applications that require the
14
+ * `Float16` format.
15
+ *
16
+ * @module float16/encode
17
+ */
18
+ /**
19
+ * Encodes a standard JavaScript number (a 64-bit double-precision floating
20
+ * point value, 52 bits of mantissa) into a 16-bit unsigned integer (Uint16).
21
+ * This function follows the IEEE 754-2008 standard for half-precision 16-bit
22
+ * floating point numbers, also known as `Float16` (or `binary16` in the spec).
23
+ *
24
+ * This function is used internally by the {@linkcode f16round} function to
25
+ * convert the input number into a portable intermediate form, which it then
26
+ * transforms into the `Float16` format via the {@linkcode decodeFloat16}.
27
+ *
28
+ * The returned value can be used to store half-precision floating point values
29
+ * in a DataView via `setUint16`, since it is equivalent to the result of the
30
+ * method `DataView.prototype.getUint16` when reading a half-precision float.
31
+ *
32
+ * ## Encoding Scheme
33
+ *
34
+ * The encoding scheme varies based on the input value classification:
35
+ *
36
+ * - Normal (within the normal range of representable values)
37
+ * - Subnormal (too small to be represented with full precision)
38
+ * - Special cases
39
+ *
40
+ * ## Special Cases
41
+ *
42
+ * The following special cases are handled separately, short-circuiting the
43
+ * encoding process to return a well-known constant value:
44
+ *
45
+ * - `NaN` is encoded as `0x7E00` (32256).
46
+ * - `Infinity` is encoded as `0x7C00` (31744).
47
+ * - `-Infinity` is encoded as `0xFC00` (64512).
48
+ * - `-0` is encoded as `0x8000` (32768).
49
+ *
50
+ * @param value The standard JavaScript number to encode.
51
+ * @returns An encoded unsigned 16-bit integer that represents the input value.
52
+ * @example
53
+ * ```ts
54
+ * import { encodeFloat16 } from "@nick/math/float16";
55
+ *
56
+ * console.log(encodeFloat16(3.14)); // 0x4248 (16968)
57
+ *
58
+ * const view = new DataView(new ArrayBuffer(2));
59
+ * view.setUint16(0, encodeFloat16(3.14));
60
+ * console.log(view.getUint16(0)); // 16968
61
+ * console.log(view.getFloat16(0)); // 3.140625
62
+ * ```
63
+ * @category IEEE-754
64
+ * @tags float16, float, encode
65
+ */
66
+ export declare function encodeFloat16(value: number): number;
67
+ //# sourceMappingURL=encode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encode.d.ts","sourceRoot":"","sources":["../../src/float16/encode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAKH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEnD"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * This module provides functions for encoding standard JavaScript numbers into
3
+ * 16-bit half-precision floating point numbers (`Float16`) that follow the
4
+ * IEEE 754-2008 standard for half-precision binary16 floating point numbers.
5
+ *
6
+ * The `Float16` format is a 16-bit representation of a floating point number
7
+ * that is used to store floating point values in a DataView or TypedArray.
8
+ * This format is used in graphics programming and other performance-sensitive
9
+ * applications.
10
+ *
11
+ * The `encodeFloat16` function encodes a standard JavaScript number into a
12
+ * 16-bit half-precision floating point value, which can be stored in a
13
+ * DataView via `setUint16`, or used in other applications that require the
14
+ * `Float16` format.
15
+ *
16
+ * @module float16/encode
17
+ */
18
+ import float16 from "./constants.js";
19
+ import { encode } from "../internal/ieee754.js";
20
+ /**
21
+ * Encodes a standard JavaScript number (a 64-bit double-precision floating
22
+ * point value, 52 bits of mantissa) into a 16-bit unsigned integer (Uint16).
23
+ * This function follows the IEEE 754-2008 standard for half-precision 16-bit
24
+ * floating point numbers, also known as `Float16` (or `binary16` in the spec).
25
+ *
26
+ * This function is used internally by the {@linkcode f16round} function to
27
+ * convert the input number into a portable intermediate form, which it then
28
+ * transforms into the `Float16` format via the {@linkcode decodeFloat16}.
29
+ *
30
+ * The returned value can be used to store half-precision floating point values
31
+ * in a DataView via `setUint16`, since it is equivalent to the result of the
32
+ * method `DataView.prototype.getUint16` when reading a half-precision float.
33
+ *
34
+ * ## Encoding Scheme
35
+ *
36
+ * The encoding scheme varies based on the input value classification:
37
+ *
38
+ * - Normal (within the normal range of representable values)
39
+ * - Subnormal (too small to be represented with full precision)
40
+ * - Special cases
41
+ *
42
+ * ## Special Cases
43
+ *
44
+ * The following special cases are handled separately, short-circuiting the
45
+ * encoding process to return a well-known constant value:
46
+ *
47
+ * - `NaN` is encoded as `0x7E00` (32256).
48
+ * - `Infinity` is encoded as `0x7C00` (31744).
49
+ * - `-Infinity` is encoded as `0xFC00` (64512).
50
+ * - `-0` is encoded as `0x8000` (32768).
51
+ *
52
+ * @param value The standard JavaScript number to encode.
53
+ * @returns An encoded unsigned 16-bit integer that represents the input value.
54
+ * @example
55
+ * ```ts
56
+ * import { encodeFloat16 } from "@nick/math/float16";
57
+ *
58
+ * console.log(encodeFloat16(3.14)); // 0x4248 (16968)
59
+ *
60
+ * const view = new DataView(new ArrayBuffer(2));
61
+ * view.setUint16(0, encodeFloat16(3.14));
62
+ * console.log(view.getUint16(0)); // 16968
63
+ * console.log(view.getFloat16(0)); // 3.140625
64
+ * ```
65
+ * @category IEEE-754
66
+ * @tags float16, float, encode
67
+ */
68
+ export function encodeFloat16(value) {
69
+ return encode(value, float16);
70
+ }
71
+ //# sourceMappingURL=encode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encode.js","sourceRoot":"","sources":["../../src/float16/encode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,OAAO,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,OAAO,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAChC,CAAC"}