goscript 0.0.34 → 0.0.36

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 (358) hide show
  1. package/compiler/analysis.go +28 -20
  2. package/compiler/analysis_test.go +14 -0
  3. package/compiler/assignment.go +19 -7
  4. package/compiler/compiler.go +15 -99
  5. package/compiler/composite-lit.go +60 -17
  6. package/compiler/decl.go +1 -1
  7. package/compiler/expr-call.go +233 -35
  8. package/compiler/expr-selector.go +28 -2
  9. package/compiler/expr.go +13 -37
  10. package/compiler/lit.go +111 -2
  11. package/compiler/primitive.go +6 -6
  12. package/compiler/protobuf.go +0 -5
  13. package/compiler/sanitize.go +101 -0
  14. package/compiler/spec-struct.go +41 -8
  15. package/compiler/spec-value.go +29 -18
  16. package/compiler/stmt-assign.go +22 -1
  17. package/compiler/stmt.go +26 -9
  18. package/compiler/type.go +3 -3
  19. package/dist/gs/builtin/builtin.d.ts +3 -2
  20. package/dist/gs/builtin/builtin.js +2 -1
  21. package/dist/gs/builtin/builtin.js.map +1 -1
  22. package/dist/gs/builtin/map.js.map +1 -1
  23. package/dist/gs/builtin/slice.d.ts +7 -1
  24. package/dist/gs/builtin/slice.js +112 -22
  25. package/dist/gs/builtin/slice.js.map +1 -1
  26. package/dist/gs/github.com/pkg/errors/errors.d.ts +13 -0
  27. package/dist/gs/github.com/pkg/errors/errors.js +232 -0
  28. package/dist/gs/github.com/pkg/errors/errors.js.map +1 -0
  29. package/dist/gs/github.com/pkg/errors/go113.d.ts +4 -0
  30. package/dist/gs/github.com/pkg/errors/go113.js +34 -0
  31. package/dist/gs/github.com/pkg/errors/go113.js.map +1 -0
  32. package/dist/gs/github.com/pkg/errors/index.d.ts +3 -0
  33. package/dist/gs/github.com/pkg/errors/index.js +4 -0
  34. package/dist/gs/github.com/pkg/errors/index.js.map +1 -0
  35. package/dist/gs/github.com/pkg/errors/stack.d.ts +32 -0
  36. package/dist/gs/github.com/pkg/errors/stack.js +111 -0
  37. package/dist/gs/github.com/pkg/errors/stack.js.map +1 -0
  38. package/dist/gs/maps/index.d.ts +2 -2
  39. package/dist/gs/maps/index.js +2 -2
  40. package/dist/gs/maps/index.js.map +1 -1
  41. package/dist/gs/maps/iter.d.ts +7 -0
  42. package/dist/gs/maps/iter.js +57 -0
  43. package/dist/gs/maps/iter.js.map +1 -0
  44. package/dist/gs/maps/maps.d.ts +7 -0
  45. package/dist/gs/maps/maps.js +67 -0
  46. package/dist/gs/maps/maps.js.map +1 -0
  47. package/dist/gs/math/abs.gs.d.ts +1 -0
  48. package/dist/gs/math/abs.gs.js +10 -0
  49. package/dist/gs/math/abs.gs.js.map +1 -0
  50. package/dist/gs/math/acosh.gs.d.ts +2 -0
  51. package/dist/gs/math/acosh.gs.js +14 -0
  52. package/dist/gs/math/acosh.gs.js.map +1 -0
  53. package/dist/gs/math/asin.gs.d.ts +4 -0
  54. package/dist/gs/math/asin.gs.js +24 -0
  55. package/dist/gs/math/asin.gs.js.map +1 -0
  56. package/dist/gs/math/asinh.gs.d.ts +2 -0
  57. package/dist/gs/math/asinh.gs.js +14 -0
  58. package/dist/gs/math/asinh.gs.js.map +1 -0
  59. package/dist/gs/math/atan.gs.d.ts +4 -0
  60. package/dist/gs/math/atan.gs.js +22 -0
  61. package/dist/gs/math/atan.gs.js.map +1 -0
  62. package/dist/gs/math/atan2.gs.d.ts +2 -0
  63. package/dist/gs/math/atan2.gs.js +30 -0
  64. package/dist/gs/math/atan2.gs.js.map +1 -0
  65. package/dist/gs/math/atanh.gs.d.ts +2 -0
  66. package/dist/gs/math/atanh.gs.js +16 -0
  67. package/dist/gs/math/atanh.gs.js.map +1 -0
  68. package/dist/gs/math/bits.gs.d.ts +5 -0
  69. package/dist/gs/math/bits.gs.js +46 -0
  70. package/dist/gs/math/bits.gs.js.map +1 -0
  71. package/dist/gs/math/cbrt.gs.d.ts +2 -0
  72. package/dist/gs/math/cbrt.gs.js +14 -0
  73. package/dist/gs/math/cbrt.gs.js.map +1 -0
  74. package/dist/gs/math/const.gs.d.ts +30 -0
  75. package/dist/gs/math/const.gs.js +61 -0
  76. package/dist/gs/math/const.gs.js.map +1 -0
  77. package/dist/gs/math/copysign.gs.d.ts +1 -0
  78. package/dist/gs/math/copysign.gs.js +20 -0
  79. package/dist/gs/math/copysign.gs.js.map +1 -0
  80. package/dist/gs/math/dim.gs.d.ts +5 -0
  81. package/dist/gs/math/dim.gs.js +69 -0
  82. package/dist/gs/math/dim.gs.js.map +1 -0
  83. package/dist/gs/math/erf.gs.d.ts +4 -0
  84. package/dist/gs/math/erf.gs.js +336 -0
  85. package/dist/gs/math/erf.gs.js.map +1 -0
  86. package/dist/gs/math/erfinv.gs.d.ts +2 -0
  87. package/dist/gs/math/erfinv.gs.js +118 -0
  88. package/dist/gs/math/erfinv.gs.js.map +1 -0
  89. package/dist/gs/math/exp.gs.d.ts +5 -0
  90. package/dist/gs/math/exp.gs.js +30 -0
  91. package/dist/gs/math/exp.gs.js.map +1 -0
  92. package/dist/gs/math/expm1.gs.d.ts +2 -0
  93. package/dist/gs/math/expm1.gs.js +17 -0
  94. package/dist/gs/math/expm1.gs.js.map +1 -0
  95. package/dist/gs/math/floor.gs.d.ts +8 -0
  96. package/dist/gs/math/floor.gs.js +75 -0
  97. package/dist/gs/math/floor.gs.js.map +1 -0
  98. package/dist/gs/math/fma.gs.d.ts +1 -0
  99. package/dist/gs/math/fma.gs.js +8 -0
  100. package/dist/gs/math/fma.gs.js.map +1 -0
  101. package/dist/gs/math/frexp.gs.d.ts +2 -0
  102. package/dist/gs/math/frexp.gs.js +28 -0
  103. package/dist/gs/math/frexp.gs.js.map +1 -0
  104. package/dist/gs/math/gamma.gs.d.ts +3 -0
  105. package/dist/gs/math/gamma.gs.js +149 -0
  106. package/dist/gs/math/gamma.gs.js.map +1 -0
  107. package/dist/gs/math/hypot.gs.d.ts +2 -0
  108. package/dist/gs/math/hypot.gs.js +16 -0
  109. package/dist/gs/math/hypot.gs.js.map +1 -0
  110. package/dist/gs/math/index.d.ts +44 -0
  111. package/dist/gs/math/index.js +45 -0
  112. package/dist/gs/math/index.js.map +1 -0
  113. package/dist/gs/math/j0.gs.d.ts +4 -0
  114. package/dist/gs/math/j0.gs.js +228 -0
  115. package/dist/gs/math/j0.gs.js.map +1 -0
  116. package/dist/gs/math/j1.gs.d.ts +4 -0
  117. package/dist/gs/math/j1.gs.js +211 -0
  118. package/dist/gs/math/j1.gs.js.map +1 -0
  119. package/dist/gs/math/jn.gs.d.ts +2 -0
  120. package/dist/gs/math/jn.gs.js +412 -0
  121. package/dist/gs/math/jn.gs.js.map +1 -0
  122. package/dist/gs/math/ldexp.gs.d.ts +2 -0
  123. package/dist/gs/math/ldexp.gs.js +20 -0
  124. package/dist/gs/math/ldexp.gs.js.map +1 -0
  125. package/dist/gs/math/lgamma.gs.d.ts +2 -0
  126. package/dist/gs/math/lgamma.gs.js +243 -0
  127. package/dist/gs/math/lgamma.gs.js.map +1 -0
  128. package/dist/gs/math/log.gs.d.ts +2 -0
  129. package/dist/gs/math/log.gs.js +16 -0
  130. package/dist/gs/math/log.gs.js.map +1 -0
  131. package/dist/gs/math/log10.gs.d.ts +4 -0
  132. package/dist/gs/math/log10.gs.js +17 -0
  133. package/dist/gs/math/log10.gs.js.map +1 -0
  134. package/dist/gs/math/log1p.gs.d.ts +2 -0
  135. package/dist/gs/math/log1p.gs.js +17 -0
  136. package/dist/gs/math/log1p.gs.js.map +1 -0
  137. package/dist/gs/math/logb.gs.d.ts +3 -0
  138. package/dist/gs/math/logb.gs.js +43 -0
  139. package/dist/gs/math/logb.gs.js.map +1 -0
  140. package/dist/gs/math/mod.gs.d.ts +2 -0
  141. package/dist/gs/math/mod.gs.js +26 -0
  142. package/dist/gs/math/mod.gs.js.map +1 -0
  143. package/dist/gs/math/modf.gs.d.ts +2 -0
  144. package/dist/gs/math/modf.gs.js +24 -0
  145. package/dist/gs/math/modf.gs.js.map +1 -0
  146. package/dist/gs/math/nextafter.gs.d.ts +2 -0
  147. package/dist/gs/math/nextafter.gs.js +66 -0
  148. package/dist/gs/math/nextafter.gs.js.map +1 -0
  149. package/dist/gs/math/pow.gs.d.ts +3 -0
  150. package/dist/gs/math/pow.gs.js +40 -0
  151. package/dist/gs/math/pow.gs.js.map +1 -0
  152. package/dist/gs/math/pow10.gs.d.ts +1 -0
  153. package/dist/gs/math/pow10.gs.js +14 -0
  154. package/dist/gs/math/pow10.gs.js.map +1 -0
  155. package/dist/gs/math/remainder.gs.d.ts +2 -0
  156. package/dist/gs/math/remainder.gs.js +25 -0
  157. package/dist/gs/math/remainder.gs.js.map +1 -0
  158. package/dist/gs/math/signbit.gs.d.ts +1 -0
  159. package/dist/gs/math/signbit.gs.js +5 -0
  160. package/dist/gs/math/signbit.gs.js.map +1 -0
  161. package/dist/gs/math/sin.gs.d.ts +4 -0
  162. package/dist/gs/math/sin.gs.js +29 -0
  163. package/dist/gs/math/sin.gs.js.map +1 -0
  164. package/dist/gs/math/sincos.gs.d.ts +1 -0
  165. package/dist/gs/math/sincos.gs.js +11 -0
  166. package/dist/gs/math/sincos.gs.js.map +1 -0
  167. package/dist/gs/math/sinh.gs.d.ts +4 -0
  168. package/dist/gs/math/sinh.gs.js +27 -0
  169. package/dist/gs/math/sinh.gs.js.map +1 -0
  170. package/dist/gs/math/sqrt.gs.d.ts +2 -0
  171. package/dist/gs/math/sqrt.gs.js +15 -0
  172. package/dist/gs/math/sqrt.gs.js.map +1 -0
  173. package/dist/gs/math/tan.gs.d.ts +2 -0
  174. package/dist/gs/math/tan.gs.js +17 -0
  175. package/dist/gs/math/tan.gs.js.map +1 -0
  176. package/dist/gs/math/tanh.gs.d.ts +2 -0
  177. package/dist/gs/math/tanh.gs.js +17 -0
  178. package/dist/gs/math/tanh.gs.js.map +1 -0
  179. package/dist/gs/math/trig_reduce.gs.d.ts +1 -0
  180. package/dist/gs/math/trig_reduce.gs.js +62 -0
  181. package/dist/gs/math/trig_reduce.gs.js.map +1 -0
  182. package/dist/gs/math/unsafe.gs.d.ts +4 -0
  183. package/dist/gs/math/unsafe.gs.js +47 -0
  184. package/dist/gs/math/unsafe.gs.js.map +1 -0
  185. package/dist/gs/strconv/atob.gs.d.ts +4 -0
  186. package/dist/gs/strconv/atob.gs.js +42 -0
  187. package/dist/gs/strconv/atob.gs.js.map +1 -0
  188. package/dist/gs/strconv/atof.gs.d.ts +2 -0
  189. package/dist/gs/strconv/atof.gs.js +51 -0
  190. package/dist/gs/strconv/atof.gs.js.map +1 -0
  191. package/dist/gs/strconv/atoi.gs.d.ts +33 -0
  192. package/dist/gs/strconv/atoi.gs.js +200 -0
  193. package/dist/gs/strconv/atoi.gs.js.map +1 -0
  194. package/dist/gs/strconv/doc.gs.d.ts +1 -0
  195. package/dist/gs/strconv/doc.gs.js +2 -0
  196. package/dist/gs/strconv/doc.gs.js.map +1 -0
  197. package/dist/gs/strconv/ftoa.gs.d.ts +3 -0
  198. package/dist/gs/strconv/ftoa.gs.js +58 -0
  199. package/dist/gs/strconv/ftoa.gs.js.map +1 -0
  200. package/dist/gs/strconv/index.d.ts +6 -0
  201. package/dist/gs/strconv/index.js +7 -0
  202. package/dist/gs/strconv/index.js.map +1 -0
  203. package/dist/gs/strconv/itoa.gs.d.ts +6 -0
  204. package/dist/gs/strconv/itoa.gs.js +37 -0
  205. package/dist/gs/strconv/itoa.gs.js.map +1 -0
  206. package/dist/gs/strconv/quote.gs.d.ts +19 -0
  207. package/dist/gs/strconv/quote.gs.js +217 -0
  208. package/dist/gs/strconv/quote.gs.js.map +1 -0
  209. package/dist/gs/strings/index.d.ts +3 -0
  210. package/dist/gs/strings/index.js +4 -0
  211. package/dist/gs/strings/index.js.map +1 -1
  212. package/dist/gs/strings/replace.d.ts +0 -74
  213. package/dist/gs/strings/replace.js +6 -204
  214. package/dist/gs/strings/replace.js.map +1 -1
  215. package/dist/gs/strings/search.d.ts +0 -1
  216. package/dist/gs/strings/search.js +0 -21
  217. package/dist/gs/strings/search.js.map +1 -1
  218. package/dist/gs/sync/atomic/doc.gs.d.ts +28 -0
  219. package/dist/gs/sync/atomic/doc.gs.js +265 -0
  220. package/dist/gs/sync/atomic/doc.gs.js.map +1 -0
  221. package/dist/gs/sync/atomic/doc_64.gs.d.ts +15 -0
  222. package/dist/gs/sync/atomic/doc_64.gs.js +165 -0
  223. package/dist/gs/sync/atomic/doc_64.gs.js.map +1 -0
  224. package/dist/gs/sync/atomic/index.d.ts +4 -0
  225. package/dist/gs/sync/atomic/index.js +5 -0
  226. package/dist/gs/sync/atomic/index.js.map +1 -0
  227. package/dist/gs/sync/atomic/type.gs.d.ts +130 -0
  228. package/dist/gs/sync/atomic/type.gs.js +433 -0
  229. package/dist/gs/sync/atomic/type.gs.js.map +1 -0
  230. package/dist/gs/sync/atomic/value.gs.d.ts +19 -0
  231. package/dist/gs/sync/atomic/value.gs.js +116 -0
  232. package/dist/gs/sync/atomic/value.gs.js.map +1 -0
  233. package/dist/gs/unsafe/unsafe.d.ts +1 -0
  234. package/dist/gs/unsafe/unsafe.js +5 -0
  235. package/dist/gs/unsafe/unsafe.js.map +1 -1
  236. package/gs/builtin/builtin.ts +9 -7
  237. package/gs/builtin/map.ts +5 -1
  238. package/gs/builtin/slice.ts +152 -24
  239. package/gs/github.com/pkg/errors/errors.ts +307 -0
  240. package/gs/github.com/pkg/errors/go113.ts +39 -0
  241. package/gs/github.com/pkg/errors/index.ts +3 -0
  242. package/gs/github.com/pkg/errors/stack.ts +127 -0
  243. package/gs/maps/index.ts +2 -2
  244. package/gs/maps/iter.ts +67 -0
  245. package/gs/maps/maps.ts +89 -0
  246. package/gs/math/TODO.md +156 -0
  247. package/gs/math/abs.gs.test.ts +29 -0
  248. package/gs/math/abs.gs.ts +13 -0
  249. package/gs/math/acosh.gs.test.ts +39 -0
  250. package/gs/math/acosh.gs.ts +21 -0
  251. package/gs/math/asin.gs.test.ts +66 -0
  252. package/gs/math/asin.gs.ts +27 -0
  253. package/gs/math/asinh.gs.test.ts +37 -0
  254. package/gs/math/asinh.gs.ts +21 -0
  255. package/gs/math/atan.gs.test.ts +49 -0
  256. package/gs/math/atan.gs.ts +27 -0
  257. package/gs/math/atan2.gs.test.ts +55 -0
  258. package/gs/math/atan2.gs.ts +37 -0
  259. package/gs/math/atanh.gs.test.ts +47 -0
  260. package/gs/math/atanh.gs.ts +21 -0
  261. package/gs/math/bits.gs.test.ts +88 -0
  262. package/gs/math/bits.gs.ts +61 -0
  263. package/gs/math/cbrt.gs.test.ts +57 -0
  264. package/gs/math/cbrt.gs.ts +20 -0
  265. package/gs/math/const.gs.test.ts +54 -0
  266. package/gs/math/const.gs.ts +93 -0
  267. package/gs/math/copysign.gs.test.ts +44 -0
  268. package/gs/math/copysign.gs.ts +27 -0
  269. package/gs/math/dim.gs.test.ts +102 -0
  270. package/gs/math/dim.gs.ts +84 -0
  271. package/gs/math/erf.gs.test.ts +92 -0
  272. package/gs/math/erf.gs.ts +409 -0
  273. package/gs/math/erfinv.gs.test.ts +104 -0
  274. package/gs/math/erfinv.gs.ts +169 -0
  275. package/gs/math/exp.gs.test.ts +82 -0
  276. package/gs/math/exp.gs.ts +39 -0
  277. package/gs/math/expm1.gs.test.ts +48 -0
  278. package/gs/math/expm1.gs.ts +23 -0
  279. package/gs/math/floor.gs.test.ts +146 -0
  280. package/gs/math/floor.gs.ts +88 -0
  281. package/gs/math/fma.gs.test.ts +83 -0
  282. package/gs/math/fma.gs.ts +7 -0
  283. package/gs/math/frexp.gs.test.ts +146 -0
  284. package/gs/math/frexp.gs.ts +37 -0
  285. package/gs/math/gamma.gs.test.ts +66 -0
  286. package/gs/math/gamma.gs.ts +158 -0
  287. package/gs/math/hypot.gs.test.ts +73 -0
  288. package/gs/math/hypot.gs.ts +23 -0
  289. package/gs/math/index.ts +44 -0
  290. package/gs/math/j0.gs.test.ts +74 -0
  291. package/gs/math/j0.gs.ts +257 -0
  292. package/gs/math/j1.gs.test.ts +81 -0
  293. package/gs/math/j1.gs.ts +231 -0
  294. package/gs/math/jn.gs.test.ts +133 -0
  295. package/gs/math/jn.gs.ts +447 -0
  296. package/gs/math/ldexp.gs.test.ts +128 -0
  297. package/gs/math/ldexp.gs.ts +28 -0
  298. package/gs/math/lgamma.gs.test.ts +102 -0
  299. package/gs/math/lgamma.gs.ts +251 -0
  300. package/gs/math/log.gs.test.ts +40 -0
  301. package/gs/math/log.gs.ts +21 -0
  302. package/gs/math/log10.gs.test.ts +80 -0
  303. package/gs/math/log10.gs.ts +25 -0
  304. package/gs/math/log1p.gs.test.ts +55 -0
  305. package/gs/math/log1p.gs.ts +24 -0
  306. package/gs/math/logb.gs.test.ts +87 -0
  307. package/gs/math/logb.gs.ts +54 -0
  308. package/gs/math/mod.gs.test.ts +64 -0
  309. package/gs/math/mod.gs.ts +36 -0
  310. package/gs/math/modf.gs.test.ts +80 -0
  311. package/gs/math/modf.gs.ts +32 -0
  312. package/gs/math/nextafter.gs.test.ts +107 -0
  313. package/gs/math/nextafter.gs.ts +71 -0
  314. package/gs/math/pow.gs.test.ts +103 -0
  315. package/gs/math/pow.gs.ts +55 -0
  316. package/gs/math/pow10.gs.test.ts +58 -0
  317. package/gs/math/pow10.gs.ts +19 -0
  318. package/gs/math/remainder.gs.test.ts +70 -0
  319. package/gs/math/remainder.gs.ts +33 -0
  320. package/gs/math/signbit.gs.test.ts +33 -0
  321. package/gs/math/signbit.gs.ts +8 -0
  322. package/gs/math/sin.gs.test.ts +83 -0
  323. package/gs/math/sin.gs.ts +38 -0
  324. package/gs/math/sincos.gs.test.ts +91 -0
  325. package/gs/math/sincos.gs.ts +15 -0
  326. package/gs/math/sinh.gs.test.ts +66 -0
  327. package/gs/math/sinh.gs.ts +34 -0
  328. package/gs/math/sqrt.gs.test.ts +49 -0
  329. package/gs/math/sqrt.gs.ts +20 -0
  330. package/gs/math/tan.gs.test.ts +50 -0
  331. package/gs/math/tan.gs.ts +23 -0
  332. package/gs/math/tanh.gs.test.ts +52 -0
  333. package/gs/math/tanh.gs.ts +23 -0
  334. package/gs/math/trig_reduce.gs.ts +66 -0
  335. package/gs/math/unsafe.gs.ts +52 -0
  336. package/gs/strconv/atob.gs.ts +45 -0
  337. package/gs/strconv/atof.gs.ts +60 -0
  338. package/gs/strconv/atoi.gs.ts +243 -0
  339. package/gs/strconv/doc.gs.ts +2 -0
  340. package/gs/strconv/ftoa.gs.ts +66 -0
  341. package/gs/strconv/index.ts +6 -0
  342. package/gs/strconv/itoa.gs.ts +41 -0
  343. package/gs/strconv/quote.gs.ts +245 -0
  344. package/gs/strings/index.ts +4 -0
  345. package/gs/strings/replace.ts +9 -237
  346. package/gs/strings/search.ts +0 -28
  347. package/gs/sync/atomic/doc.gs.ts +276 -0
  348. package/gs/sync/atomic/doc_64.gs.ts +168 -0
  349. package/gs/sync/atomic/index.ts +4 -0
  350. package/gs/sync/atomic/type.gs.ts +596 -0
  351. package/gs/sync/atomic/value.gs.ts +158 -0
  352. package/gs/unsafe/unsafe.ts +6 -0
  353. package/package.json +1 -1
  354. package/gs/maps/iter.gs.ts +0 -71
  355. package/gs/maps/maps.gs.ts +0 -87
  356. package/gs/stringslite/godoc.txt +0 -17
  357. package/gs/stringslite/index.ts +0 -1
  358. package/gs/stringslite/strings.ts +0 -82
@@ -0,0 +1,243 @@
1
+ import * as $ from "@goscript/builtin/builtin.js";
2
+ import { Abs } from "./abs.gs.js";
3
+ import { Inf, IsInf, IsNaN } from "./bits.gs.js";
4
+ import { Floor } from "./floor.gs.js";
5
+ import { Log } from "./log.gs.js";
6
+ import { Mod } from "./mod.gs.js";
7
+ import { Cos, Sin } from "./sin.gs.js";
8
+ import { Float64bits } from "./unsafe.gs.js";
9
+ let _lgamA = $.arrayToSlice([7.72156649015328655494e-02, 3.22467033424113591611e-01, 6.73523010531292681824e-02, 2.05808084325167332806e-02, 7.38555086081402883957e-03, 2.89051383673415629091e-03, 1.19270763183362067845e-03, 5.10069792153511336608e-04, 2.20862790713908385557e-04, 1.08011567247583939954e-04, 2.52144565451257326939e-05, 4.48640949618915160150e-05]);
10
+ let _lgamR = $.arrayToSlice([1.0, 1.39200533467621045958e+00, 7.21935547567138069525e-01, 1.71933865632803078993e-01, 1.86459191715652901344e-02, 7.77942496381893596434e-04, 7.32668430744625636189e-06]);
11
+ let _lgamS = $.arrayToSlice([-7.72156649015328655494e-02, 2.14982415960608852501e-01, 3.25778796408930981787e-01, 1.46350472652464452805e-01, 2.66422703033638609560e-02, 1.84028451407337715652e-03, 3.19475326584100867617e-05]);
12
+ let _lgamT = $.arrayToSlice([4.83836122723810047042e-01, -1.47587722994593911752e-01, 6.46249402391333854778e-02, -3.27885410759859649565e-02, 1.79706750811820387126e-02, -1.03142241298341437450e-02, 6.10053870246291332635e-03, -3.68452016781138256760e-03, 2.25964780900612472250e-03, -1.40346469989232843813e-03, 8.81081882437654011382e-04, -5.38595305356740546715e-04, 3.15632070903625950361e-04, -3.12754168375120860518e-04, 3.35529192635519073543e-04]);
13
+ let _lgamU = $.arrayToSlice([-7.72156649015328655494e-02, 6.32827064025093366517e-01, 1.45492250137234768737e+00, 9.77717527963372745603e-01, 2.28963728064692451092e-01, 1.33810918536787660377e-02]);
14
+ let _lgamV = $.arrayToSlice([1.0, 2.45597793713041134822e+00, 2.12848976379893395361e+00, 7.69285150456672783825e-01, 1.04222645593369134254e-01, 3.21709242282423911810e-03]);
15
+ let _lgamW = $.arrayToSlice([4.18938533204672725052e-01, 8.33333333333329678849e-02, -2.77777777728775536470e-03, 7.93650558643019558500e-04, -5.95187557450339963135e-04, 8.36339918996282139126e-04, -1.63092934096575273989e-03]);
16
+ // Lgamma returns the natural logarithm and sign (-1 or +1) of [Gamma](x).
17
+ //
18
+ // Special cases are:
19
+ //
20
+ // Lgamma(+Inf) = +Inf
21
+ // Lgamma(0) = +Inf
22
+ // Lgamma(-integer) = +Inf
23
+ // Lgamma(-Inf) = -Inf
24
+ // Lgamma(NaN) = NaN
25
+ export function Lgamma(x) {
26
+ let lgamma = 0;
27
+ let sign = 1;
28
+ // Constants
29
+ const Ymin = 1.461632144968362245;
30
+ const Two52 = (1 << 52);
31
+ const Two53 = (1 << 53);
32
+ const Two58 = (1 << 58);
33
+ const Tiny = 1.0 / ((1 << 70));
34
+ const Tc = 1.46163214496836224576e+00;
35
+ const Tf = -1.21486290535849611461e-01;
36
+ const Tt = -3.63867699703950536541e-18;
37
+ // special cases
38
+ if (IsNaN(x)) {
39
+ lgamma = x;
40
+ return [lgamma, sign];
41
+ }
42
+ if (IsInf(x, 0)) {
43
+ lgamma = x;
44
+ return [lgamma, sign];
45
+ }
46
+ if (x == 0) {
47
+ lgamma = Inf(1);
48
+ return [lgamma, sign];
49
+ }
50
+ let neg = false;
51
+ if (x < 0) {
52
+ x = -x;
53
+ neg = true;
54
+ }
55
+ // if |x| < 2**-70, return -log(|x|)
56
+ if (x < 8.47033e-22) {
57
+ if (neg) {
58
+ sign = -1;
59
+ }
60
+ lgamma = -Log(x);
61
+ return [lgamma, sign];
62
+ }
63
+ let nadj = 0;
64
+ // Handle negative values
65
+ if (neg) {
66
+ // |x| >= 2**52, must be -integer
67
+ if (x >= 4503599627370496) {
68
+ lgamma = Inf(1);
69
+ return [lgamma, sign];
70
+ }
71
+ let t = sinPi(x);
72
+ // -integer
73
+ if (t == 0) {
74
+ lgamma = Inf(1);
75
+ return [lgamma, sign];
76
+ }
77
+ nadj = Log(3.14159 / Abs(t * x));
78
+ if (t < 0) {
79
+ sign = -1;
80
+ }
81
+ }
82
+ // Main computation
83
+ if (x == 1 || x == 2) {
84
+ lgamma = 0;
85
+ }
86
+ else if (x < 2) {
87
+ let y = 0;
88
+ let i = 0;
89
+ if (x <= 0.9) {
90
+ lgamma = -Log(x);
91
+ if (x >= (1.46163 - 1 + 0.27)) {
92
+ y = 1 - x;
93
+ i = 0;
94
+ }
95
+ else if (x >= (1.46163 - 1 - 0.27)) {
96
+ y = x - (1.46163 - 1);
97
+ i = 1;
98
+ }
99
+ else {
100
+ y = x;
101
+ i = 2;
102
+ }
103
+ }
104
+ else {
105
+ lgamma = 0;
106
+ if (x >= (1.46163 + 0.27)) {
107
+ y = 2 - x;
108
+ i = 0;
109
+ }
110
+ else if (x >= (1.46163 - 0.27)) {
111
+ y = x - 1.46163;
112
+ i = 1;
113
+ }
114
+ else {
115
+ y = x - 1;
116
+ i = 2;
117
+ }
118
+ }
119
+ if (i === 0) {
120
+ let z = y * y;
121
+ let p1 = _lgamA[0] + z * (_lgamA[2] + z * (_lgamA[4] + z * (_lgamA[6] + z * (_lgamA[8] + z * _lgamA[10]))));
122
+ let p2 = z * (_lgamA[1] + z * (+_lgamA[3] + z * (_lgamA[5] + z * (_lgamA[7] + z * (_lgamA[9] + z * _lgamA[11])))));
123
+ let p = y * p1 + p2;
124
+ lgamma += (p - 0.5 * y);
125
+ }
126
+ else if (i === 1) {
127
+ let z = y * y;
128
+ let w = z * y;
129
+ let p1 = _lgamT[0] + w * (_lgamT[3] + w * (_lgamT[6] + w * (_lgamT[9] + w * _lgamT[12])));
130
+ let p2 = _lgamT[1] + w * (_lgamT[4] + w * (_lgamT[7] + w * (_lgamT[10] + w * _lgamT[13])));
131
+ let p3 = _lgamT[2] + w * (_lgamT[5] + w * (_lgamT[8] + w * (_lgamT[11] + w * _lgamT[14])));
132
+ let p = z * p1 - (-3.63868e-18 - w * (p2 + y * p3));
133
+ lgamma += (-0.121486 + p);
134
+ }
135
+ else { // i === 2
136
+ let p1 = y * (_lgamU[0] + y * (_lgamU[1] + y * (_lgamU[2] + y * (_lgamU[3] + y * (_lgamU[4] + y * _lgamU[5])))));
137
+ let p2 = 1 + y * (_lgamV[1] + y * (_lgamV[2] + y * (_lgamV[3] + y * (_lgamV[4] + y * _lgamV[5]))));
138
+ lgamma += (-0.5 * y + p1 / p2);
139
+ }
140
+ }
141
+ else if (x < 8) {
142
+ let i = $.int(x);
143
+ let y = x - i;
144
+ let p = y * (_lgamS[0] + y * (_lgamS[1] + y * (_lgamS[2] + y * (_lgamS[3] + y * (_lgamS[4] + y * (_lgamS[5] + y * _lgamS[6]))))));
145
+ let q = 1 + y * (_lgamR[1] + y * (_lgamR[2] + y * (_lgamR[3] + y * (_lgamR[4] + y * (_lgamR[5] + y * _lgamR[6])))));
146
+ lgamma = 0.5 * y + p / q;
147
+ let z = 1.0;
148
+ // Handle fallthrough cases properly
149
+ if (i === 7) {
150
+ z *= (y + 6);
151
+ z *= (y + 5);
152
+ z *= (y + 4);
153
+ z *= (y + 3);
154
+ z *= (y + 2);
155
+ lgamma += Log(z);
156
+ }
157
+ else if (i === 6) {
158
+ z *= (y + 5);
159
+ z *= (y + 4);
160
+ z *= (y + 3);
161
+ z *= (y + 2);
162
+ lgamma += Log(z);
163
+ }
164
+ else if (i === 5) {
165
+ z *= (y + 4);
166
+ z *= (y + 3);
167
+ z *= (y + 2);
168
+ lgamma += Log(z);
169
+ }
170
+ else if (i === 4) {
171
+ z *= (y + 3);
172
+ z *= (y + 2);
173
+ lgamma += Log(z);
174
+ }
175
+ else if (i === 3) {
176
+ z *= (y + 2);
177
+ lgamma += Log(z);
178
+ }
179
+ }
180
+ else if (x < 288230376151711744) {
181
+ let t = Log(x);
182
+ let z = 1 / x;
183
+ let y = z * z;
184
+ let w = _lgamW[0] + z * (_lgamW[1] + y * (_lgamW[2] + y * (_lgamW[3] + y * (_lgamW[4] + y * (_lgamW[5] + y * _lgamW[6])))));
185
+ lgamma = (x - 0.5) * (t - 1) + w;
186
+ }
187
+ else {
188
+ lgamma = x * (Log(x) - 1);
189
+ }
190
+ if (neg) {
191
+ lgamma = nadj - lgamma;
192
+ }
193
+ return [lgamma, sign];
194
+ }
195
+ // sinPi(x) is a helper function for negative x
196
+ export function sinPi(x) {
197
+ const Two52 = (1 << 52);
198
+ const Two53 = (1 << 53);
199
+ if (x < 0.25) {
200
+ return -Sin(3.14159 * x);
201
+ }
202
+ // argument reduction
203
+ let z = Floor(x);
204
+ let n = 0;
205
+ if (z != x) {
206
+ // inexact
207
+ x = Mod(x, 2);
208
+ n = $.int(x * 4);
209
+ }
210
+ else {
211
+ // exact
212
+ if (x >= 9007199254740992) {
213
+ // x must be even
214
+ x = 0;
215
+ n = 0;
216
+ }
217
+ else {
218
+ if (x < 4503599627370496) {
219
+ z = x + 4503599627370496; // exact
220
+ }
221
+ n = $.int((1 & Float64bits(z)));
222
+ x = n;
223
+ n <<= 2;
224
+ }
225
+ }
226
+ if (n === 0) {
227
+ x = Sin(3.14159 * x);
228
+ }
229
+ else if (n === 1 || n === 2) {
230
+ x = Cos(3.14159 * (0.5 - x));
231
+ }
232
+ else if (n === 3 || n === 4) {
233
+ x = Sin(3.14159 * (1 - x));
234
+ }
235
+ else if (n === 5 || n === 6) {
236
+ x = -Cos(3.14159 * (x - 1.5));
237
+ }
238
+ else {
239
+ x = Sin(3.14159 * (x - 2));
240
+ }
241
+ return -x;
242
+ }
243
+ //# sourceMappingURL=lgamma.gs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lgamma.gs.js","sourceRoot":"","sources":["../../../gs/math/lgamma.gs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function Log(x: number): number;
2
+ export declare function log(x: number): number;
@@ -0,0 +1,16 @@
1
+ // archLog import removed - using optimized implementation
2
+ // Log returns the natural logarithm of x.
3
+ //
4
+ // Special cases are:
5
+ //
6
+ // Log(+Inf) = +Inf
7
+ // Log(0) = -Inf
8
+ // Log(x < 0) = NaN
9
+ // Log(NaN) = NaN
10
+ export function Log(x) {
11
+ return Math.log(x);
12
+ }
13
+ export function log(x) {
14
+ return Math.log(x);
15
+ }
16
+ //# sourceMappingURL=log.gs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log.gs.js","sourceRoot":"","sources":["../../../gs/math/log.gs.ts"],"names":[],"mappings":"AAGA,0DAA0D;AAE1D,0CAA0C;AAC1C,EAAE;AACF,qBAAqB;AACrB,EAAE;AACF,mBAAmB;AACnB,gBAAgB;AAChB,mBAAmB;AACnB,iBAAiB;AACjB,MAAM,UAAU,GAAG,CAAC,CAAS;IAC5B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AACnB,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,CAAS;IAC5B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AACnB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare function Log10(x: number): number;
2
+ export declare function log10(x: number): number;
3
+ export declare function Log2(x: number): number;
4
+ export declare function log2(x: number): number;
@@ -0,0 +1,17 @@
1
+ // Log10 returns the decimal logarithm of x.
2
+ // The special cases are the same as for [Log].
3
+ export function Log10(x) {
4
+ return Math.log10(x);
5
+ }
6
+ export function log10(x) {
7
+ return Math.log10(x);
8
+ }
9
+ // Log2 returns the binary logarithm of x.
10
+ // The special cases are the same as for [Log].
11
+ export function Log2(x) {
12
+ return Math.log2(x);
13
+ }
14
+ export function log2(x) {
15
+ return Math.log2(x);
16
+ }
17
+ //# sourceMappingURL=log10.gs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log10.gs.js","sourceRoot":"","sources":["../../../gs/math/log10.gs.ts"],"names":[],"mappings":"AAKA,4CAA4C;AAC5C,+CAA+C;AAC/C,MAAM,UAAU,KAAK,CAAC,CAAS;IAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AACrB,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,CAAS;IAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AACrB,CAAC;AAED,0CAA0C;AAC1C,+CAA+C;AAC/C,MAAM,UAAU,IAAI,CAAC,CAAS;IAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACpB,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,CAAS;IAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACpB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function Log1p(x: number): number;
2
+ export declare function log1p(x: number): number;
@@ -0,0 +1,17 @@
1
+ // Log1p returns the natural logarithm of 1 plus its argument x.
2
+ // It is more accurate than [Log](1 + x) when x is near zero.
3
+ //
4
+ // Special cases are:
5
+ //
6
+ // Log1p(+Inf) = +Inf
7
+ // Log1p(±0) = ±0
8
+ // Log1p(-1) = -Inf
9
+ // Log1p(x < -1) = NaN
10
+ // Log1p(NaN) = NaN
11
+ export function Log1p(x) {
12
+ return Math.log1p(x);
13
+ }
14
+ export function log1p(x) {
15
+ return Math.log1p(x);
16
+ }
17
+ //# sourceMappingURL=log1p.gs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log1p.gs.js","sourceRoot":"","sources":["../../../gs/math/log1p.gs.ts"],"names":[],"mappings":"AAMA,gEAAgE;AAChE,6DAA6D;AAC7D,EAAE;AACF,qBAAqB;AACrB,EAAE;AACF,qBAAqB;AACrB,iBAAiB;AACjB,mBAAmB;AACnB,sBAAsB;AACtB,mBAAmB;AACnB,MAAM,UAAU,KAAK,CAAC,CAAS;IAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AACrB,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,CAAS;IAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AACrB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function Logb(x: number): number;
2
+ export declare function Ilogb(x: number): number;
3
+ export declare function ilogb(x: number): number;
@@ -0,0 +1,43 @@
1
+ // Logb returns the binary exponent of x.
2
+ //
3
+ // Special cases are:
4
+ //
5
+ // Logb(±Inf) = +Inf
6
+ // Logb(0) = -Inf
7
+ // Logb(NaN) = NaN
8
+ export function Logb(x) {
9
+ // Handle special cases
10
+ if (x === 0) {
11
+ return Number.NEGATIVE_INFINITY;
12
+ }
13
+ if (!Number.isFinite(x)) {
14
+ return Number.POSITIVE_INFINITY;
15
+ }
16
+ if (Number.isNaN(x)) {
17
+ return x;
18
+ }
19
+ return Math.floor(Math.log2(Math.abs(x)));
20
+ }
21
+ // Ilogb returns the binary exponent of x as an integer.
22
+ //
23
+ // Special cases are:
24
+ //
25
+ // Ilogb(±Inf) = MaxInt32
26
+ // Ilogb(0) = MinInt32
27
+ // Ilogb(NaN) = MaxInt32
28
+ export function Ilogb(x) {
29
+ // Handle special cases
30
+ if (x === 0) {
31
+ return -2147483648; // MinInt32
32
+ }
33
+ if (Number.isNaN(x) || !Number.isFinite(x)) {
34
+ return 2147483647; // MaxInt32
35
+ }
36
+ return Math.floor(Math.log2(Math.abs(x)));
37
+ }
38
+ // ilogb returns the binary exponent of x. It assumes x is finite and
39
+ // non-zero.
40
+ export function ilogb(x) {
41
+ return Math.floor(Math.log2(Math.abs(x)));
42
+ }
43
+ //# sourceMappingURL=logb.gs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logb.gs.js","sourceRoot":"","sources":["../../../gs/math/logb.gs.ts"],"names":[],"mappings":"AAIA,yCAAyC;AACzC,EAAE;AACF,qBAAqB;AACrB,EAAE;AACF,oBAAoB;AACpB,iBAAiB;AACjB,kBAAkB;AAClB,MAAM,UAAU,IAAI,CAAC,CAAS;IAC7B,uBAAuB;IACvB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACb,OAAO,MAAM,CAAC,iBAAiB,CAAA;IAChC,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QACzB,OAAO,MAAM,CAAC,iBAAiB,CAAA;IAChC,CAAC;IAED,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,CAAA;IACT,CAAC;IAED,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC1C,CAAC;AAED,wDAAwD;AACxD,EAAE;AACF,qBAAqB;AACrB,EAAE;AACF,yBAAyB;AACzB,sBAAsB;AACtB,wBAAwB;AACxB,MAAM,UAAU,KAAK,CAAC,CAAS;IAC9B,uBAAuB;IACvB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACb,OAAO,CAAC,UAAU,CAAA,CAAC,WAAW;IAC/B,CAAC;IAED,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5C,OAAO,UAAU,CAAA,CAAC,WAAW;IAC9B,CAAC;IAED,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC1C,CAAC;AAED,qEAAqE;AACrE,YAAY;AACZ,MAAM,UAAU,KAAK,CAAC,CAAS;IAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC1C,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function Mod(x: number, y: number): number;
2
+ export declare function mod(x: number, y: number): number;
@@ -0,0 +1,26 @@
1
+ // Mod returns the floating-point remainder of x/y.
2
+ // The magnitude of the result is less than y and its
3
+ // sign agrees with that of x.
4
+ //
5
+ // Special cases are:
6
+ //
7
+ // Mod(±Inf, y) = NaN
8
+ // Mod(NaN, y) = NaN
9
+ // Mod(x, 0) = NaN
10
+ // Mod(x, ±Inf) = x
11
+ // Mod(x, NaN) = NaN
12
+ export function Mod(x, y) {
13
+ return mod(x, y);
14
+ }
15
+ export function mod(x, y) {
16
+ // Handle special cases
17
+ if (y === 0 || !Number.isFinite(x) || Number.isNaN(x) || Number.isNaN(y)) {
18
+ return Number.NaN;
19
+ }
20
+ if (!Number.isFinite(y)) {
21
+ return x;
22
+ }
23
+ // JavaScript's % operator already implements the correct behavior for Mod
24
+ return x % y;
25
+ }
26
+ //# sourceMappingURL=mod.gs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.gs.js","sourceRoot":"","sources":["../../../gs/math/mod.gs.ts"],"names":[],"mappings":"AAOA,mDAAmD;AACnD,qDAAqD;AACrD,8BAA8B;AAC9B,EAAE;AACF,qBAAqB;AACrB,EAAE;AACF,qBAAqB;AACrB,oBAAoB;AACpB,kBAAkB;AAClB,mBAAmB;AACnB,oBAAoB;AACpB,MAAM,UAAU,GAAG,CAAC,CAAS,EAAE,CAAS;IACvC,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AACjB,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,CAAS,EAAE,CAAS;IACvC,uBAAuB;IACvB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1E,OAAO,MAAM,CAAC,GAAG,CAAA;IAClB,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,CAAA;IACT,CAAC;IAED,0EAA0E;IAC1E,OAAO,CAAC,GAAG,CAAC,CAAA;AACb,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function Modf(f: number): [number, number];
2
+ export declare function modf(f: number): [number, number];
@@ -0,0 +1,24 @@
1
+ // Modf returns integer and fractional floating-point numbers
2
+ // that sum to f. Both values have the same sign as f.
3
+ //
4
+ // Special cases are:
5
+ //
6
+ // Modf(±Inf) = ±Inf, NaN
7
+ // Modf(NaN) = NaN, NaN
8
+ export function Modf(f) {
9
+ return modf(f);
10
+ }
11
+ export function modf(f) {
12
+ // Handle special cases
13
+ if (Number.isNaN(f)) {
14
+ return [Number.NaN, Number.NaN];
15
+ }
16
+ if (!Number.isFinite(f)) {
17
+ return [f, Number.NaN];
18
+ }
19
+ // Get integer part using Math.trunc (preserves sign)
20
+ const intPart = Math.trunc(f);
21
+ const fracPart = f - intPart;
22
+ return [intPart, fracPart];
23
+ }
24
+ //# sourceMappingURL=modf.gs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modf.gs.js","sourceRoot":"","sources":["../../../gs/math/modf.gs.ts"],"names":[],"mappings":"AAIA,6DAA6D;AAC7D,sDAAsD;AACtD,EAAE;AACF,qBAAqB;AACrB,EAAE;AACF,yBAAyB;AACzB,uBAAuB;AACvB,MAAM,UAAU,IAAI,CAAC,CAAS;IAC7B,OAAO,IAAI,CAAC,CAAC,CAAC,CAAA;AACf,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,CAAS;IAC7B,uBAAuB;IACvB,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAA;IAChC,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAA;IACvB,CAAC;IAED,qDAAqD;IACrD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAC7B,MAAM,QAAQ,GAAG,CAAC,GAAG,OAAO,CAAA;IAE5B,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;AAC3B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function Nextafter32(x: number, y: number): number;
2
+ export declare function Nextafter(x: number, y: number): number;
@@ -0,0 +1,66 @@
1
+ import { IsNaN, NaN } from "./bits.gs.js";
2
+ import { Copysign } from "./copysign.gs.js";
3
+ import { Float32bits, Float32frombits, Float64bits, Float64frombits } from "./unsafe.gs.js";
4
+ // Nextafter32 returns the next representable float32 value after x towards y.
5
+ //
6
+ // Special cases are:
7
+ //
8
+ // Nextafter32(x, x) = x
9
+ // Nextafter32(NaN, y) = NaN
10
+ // Nextafter32(x, NaN) = NaN
11
+ export function Nextafter32(x, y) {
12
+ let r = 0;
13
+ {
14
+ // special case
15
+ switch (true) {
16
+ case IsNaN(x) || IsNaN(y):
17
+ r = NaN();
18
+ break;
19
+ case x == y:
20
+ r = x;
21
+ break;
22
+ case x == 0:
23
+ r = Copysign(Float32frombits(1), y);
24
+ break;
25
+ case (y > x) == (x > 0):
26
+ r = Float32frombits(Float32bits(x) + 1);
27
+ break;
28
+ default:
29
+ r = Float32frombits(Float32bits(x) - 1);
30
+ break;
31
+ }
32
+ return r;
33
+ }
34
+ }
35
+ // Nextafter returns the next representable float64 value after x towards y.
36
+ //
37
+ // Special cases are:
38
+ //
39
+ // Nextafter(x, x) = x
40
+ // Nextafter(NaN, y) = NaN
41
+ // Nextafter(x, NaN) = NaN
42
+ export function Nextafter(x, y) {
43
+ let r = 0;
44
+ {
45
+ // special case
46
+ switch (true) {
47
+ case IsNaN(x) || IsNaN(y):
48
+ r = NaN();
49
+ break;
50
+ case x == y:
51
+ r = x;
52
+ break;
53
+ case x == 0:
54
+ r = Copysign(Float64frombits(1), y);
55
+ break;
56
+ case (y > x) == (x > 0):
57
+ r = Float64frombits(Float64bits(x) + 1);
58
+ break;
59
+ default:
60
+ r = Float64frombits(Float64bits(x) - 1);
61
+ break;
62
+ }
63
+ return r;
64
+ }
65
+ }
66
+ //# sourceMappingURL=nextafter.gs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nextafter.gs.js","sourceRoot":"","sources":["../../../gs/math/nextafter.gs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAE5F,8EAA8E;AAC9E,EAAE;AACF,qBAAqB;AACrB,EAAE;AACF,0BAA0B;AAC1B,4BAA4B;AAC5B,4BAA4B;AAC5B,MAAM,UAAU,WAAW,CAAC,CAAS,EAAE,CAAS;IAC/C,IAAI,CAAC,GAAW,CAAC,CAAA;IACjB,CAAC;QAEA,eAAe;QACf,QAAQ,IAAI,EAAE,CAAC;YACd,KAAK,KAAK,CAAE,CAAY,CAAC,IAAI,KAAK,CAAE,CAAY,CAAC;gBAChD,CAAC,GAAI,GAAG,EAAa,CAAA;gBACrB,MAAK;YACN,KAAK,CAAC,IAAI,CAAC;gBACV,CAAC,GAAG,CAAC,CAAA;gBACL,MAAK;YACN,KAAK,CAAC,IAAI,CAAC;gBACV,CAAC,GAAI,QAAQ,CAAE,eAAe,CAAC,CAAC,CAAY,EAAG,CAAY,CAAY,CAAA;gBACvE,MAAK;YACN,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;gBACtB,CAAC,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;gBACvC,MAAK;YACN;gBACC,CAAC,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;gBACvC,MAAK;QACP,CAAC;QACD,OAAO,CAAC,CAAA;IACT,CAAC;AACF,CAAC;AAED,4EAA4E;AAC5E,EAAE;AACF,qBAAqB;AACrB,EAAE;AACF,wBAAwB;AACxB,0BAA0B;AAC1B,0BAA0B;AAC1B,MAAM,UAAU,SAAS,CAAC,CAAS,EAAE,CAAS;IAC7C,IAAI,CAAC,GAAW,CAAC,CAAA;IACjB,CAAC;QAEA,eAAe;QACf,QAAQ,IAAI,EAAE,CAAC;YACd,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;gBACxB,CAAC,GAAG,GAAG,EAAE,CAAA;gBACT,MAAK;YACN,KAAK,CAAC,IAAI,CAAC;gBACV,CAAC,GAAG,CAAC,CAAA;gBACL,MAAK;YACN,KAAK,CAAC,IAAI,CAAC;gBACV,CAAC,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;gBACnC,MAAK;YACN,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;gBACtB,CAAC,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;gBACvC,MAAK;YACN;gBACC,CAAC,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;gBACvC,MAAK;QACP,CAAC;QACD,OAAO,CAAC,CAAA;IACT,CAAC;AACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function isOddInt(x: number): boolean;
2
+ export declare function Pow(x: number, y: number): number;
3
+ export declare function pow(x: number, y: number): number;
@@ -0,0 +1,40 @@
1
+ export function isOddInt(x) {
2
+ // 1 << 53 is the largest exact integer in the float64 format.
3
+ if (Math.abs(x) >= (1 << 53)) {
4
+ return false;
5
+ }
6
+ const truncated = Math.trunc(x);
7
+ const fractional = x - truncated;
8
+ return fractional === 0 && (truncated & 1) === 1;
9
+ }
10
+ // Pow returns x**y, the base-x exponential of y.
11
+ //
12
+ // Special cases are (in order):
13
+ //
14
+ // Pow(x, ±0) = 1 for any x
15
+ // Pow(1, y) = 1 for any y
16
+ // Pow(x, 1) = x for any x
17
+ // Pow(NaN, y) = NaN
18
+ // Pow(x, NaN) = NaN
19
+ // Pow(±0, y) = ±Inf for y an odd integer < 0
20
+ // Pow(±0, -Inf) = +Inf
21
+ // Pow(±0, +Inf) = +0
22
+ // Pow(±0, y) = +Inf for finite y < 0 and not an odd integer
23
+ // Pow(±0, y) = ±0 for y an odd integer > 0
24
+ // Pow(±0, y) = +0 for finite y > 0 and not an odd integer
25
+ // Pow(-1, ±Inf) = 1
26
+ // Pow(x, +Inf) = +Inf for |x| > 1
27
+ // Pow(x, -Inf) = +0 for |x| > 1
28
+ // Pow(x, +Inf) = +0 for |x| < 1
29
+ // Pow(x, -Inf) = +Inf for |x| < 1
30
+ // Pow(+Inf, y) = +Inf for y > 0
31
+ // Pow(+Inf, y) = +0 for y < 0
32
+ // Pow(-Inf, y) = Pow(-0, -y)
33
+ // Pow(x, y) = NaN for finite x < 0 and finite non-integer y
34
+ export function Pow(x, y) {
35
+ return Math.pow(x, y);
36
+ }
37
+ export function pow(x, y) {
38
+ return Math.pow(x, y);
39
+ }
40
+ //# sourceMappingURL=pow.gs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pow.gs.js","sourceRoot":"","sources":["../../../gs/math/pow.gs.ts"],"names":[],"mappings":"AAYA,MAAM,UAAU,QAAQ,CAAC,CAAS;IACjC,8DAA8D;IAC9D,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAA;IACb,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAC/B,MAAM,UAAU,GAAG,CAAC,GAAG,SAAS,CAAA;IAChC,OAAO,UAAU,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,CAAA;AACjD,CAAC;AAED,iDAAiD;AACjD,EAAE;AACF,gCAAgC;AAChC,EAAE;AACF,2BAA2B;AAC3B,0BAA0B;AAC1B,0BAA0B;AAC1B,oBAAoB;AACpB,oBAAoB;AACpB,6CAA6C;AAC7C,uBAAuB;AACvB,qBAAqB;AACrB,4DAA4D;AAC5D,2CAA2C;AAC3C,0DAA0D;AAC1D,oBAAoB;AACpB,kCAAkC;AAClC,gCAAgC;AAChC,gCAAgC;AAChC,kCAAkC;AAClC,gCAAgC;AAChC,8BAA8B;AAC9B,6BAA6B;AAC7B,4DAA4D;AAC5D,MAAM,UAAU,GAAG,CAAC,CAAS,EAAE,CAAS;IACvC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AACtB,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,CAAS,EAAE,CAAS;IACvC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AACtB,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function Pow10(n: number): number;
@@ -0,0 +1,14 @@
1
+ import * as $ from "@goscript/builtin/builtin.js";
2
+ let pow10tab = $.arrayToSlice([1e00, 1e01, 1e02, 1e03, 1e04, 1e05, 1e06, 1e07, 1e08, 1e09, 1e10, 1e11, 1e12, 1e13, 1e14, 1e15, 1e16, 1e17, 1e18, 1e19, 1e20, 1e21, 1e22, 1e23, 1e24, 1e25, 1e26, 1e27, 1e28, 1e29, 1e30, 1e31]);
3
+ let pow10postab32 = $.arrayToSlice([1e00, 1e32, 1e64, 1e96, 1e128, 1e160, 1e192, 1e224, 1e256, 1e288]);
4
+ let pow10negtab32 = $.arrayToSlice([1e-00, 1e-32, 1e-64, 1e-96, 1e-128, 1e-160, 1e-192, 1e-224, 1e-256, 1e-288, 1e-320]);
5
+ // Pow10 returns 10**n, the base-10 exponential of n.
6
+ //
7
+ // Special cases are:
8
+ //
9
+ // Pow10(n) = 0 for n < -323
10
+ // Pow10(n) = +Inf for n > 308
11
+ export function Pow10(n) {
12
+ return Math.pow(10, n);
13
+ }
14
+ //# sourceMappingURL=pow10.gs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pow10.gs.js","sourceRoot":"","sources":["../../../gs/math/pow10.gs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,8BAA8B,CAAC;AAGlD,IAAI,QAAQ,GAAG,CAAC,CAAC,YAAY,CAAS,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;AAEvO,IAAI,aAAa,GAAG,CAAC,CAAC,YAAY,CAAS,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAA;AAE9G,IAAI,aAAa,GAAG,CAAC,CAAC,YAAY,CAAS,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;AAEhI,qDAAqD;AACrD,EAAE;AACF,qBAAqB;AACrB,EAAE;AACF,+BAA+B;AAC/B,8BAA8B;AAC9B,MAAM,UAAU,KAAK,CAAC,CAAS;IAC9B,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;AACvB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function Remainder(x: number, y: number): number;
2
+ export declare function remainder(x: number, y: number): number;
@@ -0,0 +1,25 @@
1
+ // Remainder returns the IEEE 754 floating-point remainder of x/y.
2
+ //
3
+ // Special cases are:
4
+ //
5
+ // Remainder(±Inf, y) = NaN
6
+ // Remainder(NaN, y) = NaN
7
+ // Remainder(x, 0) = NaN
8
+ // Remainder(x, ±Inf) = x
9
+ // Remainder(x, NaN) = NaN
10
+ export function Remainder(x, y) {
11
+ return remainder(x, y);
12
+ }
13
+ export function remainder(x, y) {
14
+ // Handle special cases
15
+ if (Number.isNaN(x) || Number.isNaN(y) || !Number.isFinite(x) || y === 0) {
16
+ return Number.NaN;
17
+ }
18
+ if (!Number.isFinite(y)) {
19
+ return x;
20
+ }
21
+ // IEEE 754 remainder: x - n*y where n is the integer nearest to x/y
22
+ const n = Math.round(x / y);
23
+ return x - n * y;
24
+ }
25
+ //# sourceMappingURL=remainder.gs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remainder.gs.js","sourceRoot":"","sources":["../../../gs/math/remainder.gs.ts"],"names":[],"mappings":"AAKA,kEAAkE;AAClE,EAAE;AACF,qBAAqB;AACrB,EAAE;AACF,2BAA2B;AAC3B,0BAA0B;AAC1B,wBAAwB;AACxB,yBAAyB;AACzB,0BAA0B;AAC1B,MAAM,UAAU,SAAS,CAAC,CAAS,EAAE,CAAS;IAC7C,OAAO,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AACvB,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,CAAS,EAAE,CAAS;IAC7C,uBAAuB;IACvB,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1E,OAAO,MAAM,CAAC,GAAG,CAAA;IAClB,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,CAAA;IACT,CAAC;IAED,oEAAoE;IACpE,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;IAC3B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AACjB,CAAC"}