numpy-ts 1.2.0 → 1.3.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 (408) hide show
  1. package/README.md +3 -11
  2. package/dist/esm/common/dtype.js +1 -1
  3. package/dist/esm/common/internal/compute.js +1 -1
  4. package/dist/esm/common/internal/indexing.js +1 -1
  5. package/dist/esm/common/ndarray-core.js +1 -1
  6. package/dist/esm/common/ops/advanced.js +1 -1
  7. package/dist/esm/common/ops/arithmetic.js +1 -1
  8. package/dist/esm/common/ops/bitwise.js +1 -1
  9. package/dist/esm/common/ops/comparison.js +1 -1
  10. package/dist/esm/common/ops/complex.js +1 -1
  11. package/dist/esm/common/ops/exponential.js +1 -1
  12. package/dist/esm/common/ops/fft.js +1 -1
  13. package/dist/esm/common/ops/gradient.js +1 -1
  14. package/dist/esm/common/ops/hyperbolic.js +1 -1
  15. package/dist/esm/common/ops/linalg.js +2 -2
  16. package/dist/esm/common/ops/logic.js +1 -1
  17. package/dist/esm/common/ops/random.js +1 -1
  18. package/dist/esm/common/ops/reduction.js +1 -1
  19. package/dist/esm/common/ops/rounding.js +1 -1
  20. package/dist/esm/common/ops/shape.js +1 -1
  21. package/dist/esm/common/ops/sorting.js +1 -1
  22. package/dist/esm/common/ops/statistics.js +1 -1
  23. package/dist/esm/common/ops/trig.js +1 -1
  24. package/dist/esm/common/storage.js +1 -1
  25. package/dist/esm/common/wasm/abs.js +1 -1
  26. package/dist/esm/common/wasm/add.js +1 -1
  27. package/dist/esm/common/wasm/all_finite.js +1 -0
  28. package/dist/esm/common/wasm/arccos.js +1 -1
  29. package/dist/esm/common/wasm/arcsin.js +1 -1
  30. package/dist/esm/common/wasm/arctan.js +1 -1
  31. package/dist/esm/common/wasm/arctan2.js +1 -0
  32. package/dist/esm/common/wasm/argpartition.js +1 -1
  33. package/dist/esm/common/wasm/argsort.js +1 -1
  34. package/dist/esm/common/wasm/bins/abs.wasm.js +1 -1
  35. package/dist/esm/common/wasm/bins/add.wasm.js +1 -1
  36. package/dist/esm/common/wasm/bins/all_finite.wasm.js +1 -0
  37. package/dist/esm/common/wasm/bins/alloc.wasm.js +1 -0
  38. package/dist/esm/common/wasm/bins/arccos.wasm.js +1 -1
  39. package/dist/esm/common/wasm/bins/arcsin.wasm.js +1 -1
  40. package/dist/esm/common/wasm/bins/arctan.wasm.js +1 -1
  41. package/dist/esm/common/wasm/bins/arctan2.wasm.js +1 -0
  42. package/dist/esm/common/wasm/bins/argpartition.wasm.js +1 -1
  43. package/dist/esm/common/wasm/bins/argsort.wasm.js +1 -1
  44. package/dist/esm/common/wasm/bins/bitwise_and.wasm.js +1 -1
  45. package/dist/esm/common/wasm/bins/bitwise_count.wasm.js +1 -1
  46. package/dist/esm/common/wasm/bins/bitwise_not.wasm.js +1 -1
  47. package/dist/esm/common/wasm/bins/bitwise_or.wasm.js +1 -1
  48. package/dist/esm/common/wasm/bins/bitwise_xor.wasm.js +1 -1
  49. package/dist/esm/common/wasm/bins/cholesky.wasm.js +1 -1
  50. package/dist/esm/common/wasm/bins/clip.wasm.js +1 -1
  51. package/dist/esm/common/wasm/bins/convolve.wasm.js +1 -1
  52. package/dist/esm/common/wasm/bins/copysign.wasm.js +1 -1
  53. package/dist/esm/common/wasm/bins/correlate.wasm.js +1 -1
  54. package/dist/esm/common/wasm/bins/cos.wasm.js +1 -1
  55. package/dist/esm/common/wasm/bins/cosh.wasm.js +1 -1
  56. package/dist/esm/common/wasm/bins/cross.wasm.js +1 -1
  57. package/dist/esm/common/wasm/bins/diff.wasm.js +1 -1
  58. package/dist/esm/common/wasm/bins/divide.wasm.js +1 -1
  59. package/dist/esm/common/wasm/bins/divmod.wasm.js +1 -0
  60. package/dist/esm/common/wasm/bins/dot_float-relaxed.wasm.js +1 -0
  61. package/dist/esm/common/wasm/bins/dot_float.wasm.js +1 -0
  62. package/dist/esm/common/wasm/bins/dot_int.wasm.js +1 -0
  63. package/dist/esm/common/wasm/bins/exp.wasm.js +1 -1
  64. package/dist/esm/common/wasm/bins/exp2.wasm.js +1 -1
  65. package/dist/esm/common/wasm/bins/fft.wasm.js +1 -1
  66. package/dist/esm/common/wasm/bins/frexp.wasm.js +1 -1
  67. package/dist/esm/common/wasm/bins/gather.wasm.js +1 -1
  68. package/dist/esm/common/wasm/bins/gcd.wasm.js +1 -1
  69. package/dist/esm/common/wasm/bins/gradient.wasm.js +1 -1
  70. package/dist/esm/common/wasm/bins/heaviside.wasm.js +1 -1
  71. package/dist/esm/common/wasm/bins/hypot.wasm.js +1 -1
  72. package/dist/esm/common/wasm/bins/indices.wasm.js +1 -1
  73. package/dist/esm/common/wasm/bins/inner_float-relaxed.wasm.js +1 -0
  74. package/dist/esm/common/wasm/bins/inner_float.wasm.js +1 -0
  75. package/dist/esm/common/wasm/bins/inner_int.wasm.js +1 -0
  76. package/dist/esm/common/wasm/bins/isfinite.wasm.js +1 -0
  77. package/dist/esm/common/wasm/bins/isnan.wasm.js +1 -0
  78. package/dist/esm/common/wasm/bins/kron.wasm.js +1 -1
  79. package/dist/esm/common/wasm/bins/ldexp.wasm.js +1 -1
  80. package/dist/esm/common/wasm/bins/left_shift.wasm.js +1 -1
  81. package/dist/esm/common/wasm/bins/lexsort.wasm.js +1 -1
  82. package/dist/esm/common/wasm/bins/logaddexp.wasm.js +1 -1
  83. package/dist/esm/common/wasm/bins/logical_and.wasm.js +1 -1
  84. package/dist/esm/common/wasm/bins/logical_not.wasm.js +1 -1
  85. package/dist/esm/common/wasm/bins/logical_or.wasm.js +1 -1
  86. package/dist/esm/common/wasm/bins/logical_xor.wasm.js +1 -1
  87. package/dist/esm/common/wasm/bins/lu.wasm.js +1 -0
  88. package/dist/esm/common/wasm/bins/matmul_float-relaxed.wasm.js +1 -0
  89. package/dist/esm/common/wasm/bins/matmul_float.wasm.js +1 -0
  90. package/dist/esm/common/wasm/bins/matmul_int.wasm.js +1 -0
  91. package/dist/esm/common/wasm/bins/matvec_float-relaxed.wasm.js +1 -0
  92. package/dist/esm/common/wasm/bins/matvec_float.wasm.js +1 -0
  93. package/dist/esm/common/wasm/bins/matvec_int.wasm.js +1 -0
  94. package/dist/esm/common/wasm/bins/max.wasm.js +1 -1
  95. package/dist/esm/common/wasm/bins/min.wasm.js +1 -1
  96. package/dist/esm/common/wasm/bins/mul.wasm.js +1 -1
  97. package/dist/esm/common/wasm/bins/neg.wasm.js +1 -1
  98. package/dist/esm/common/wasm/bins/outer.wasm.js +1 -1
  99. package/dist/esm/common/wasm/bins/pad.wasm.js +1 -1
  100. package/dist/esm/common/wasm/bins/partition.wasm.js +1 -1
  101. package/dist/esm/common/wasm/bins/power.wasm.js +1 -1
  102. package/dist/esm/common/wasm/bins/qr.wasm.js +1 -1
  103. package/dist/esm/common/wasm/bins/reciprocal.wasm.js +1 -1
  104. package/dist/esm/common/wasm/bins/reduce_all.wasm.js +1 -1
  105. package/dist/esm/common/wasm/bins/reduce_any.wasm.js +1 -1
  106. package/dist/esm/common/wasm/bins/reduce_argmax.wasm.js +1 -1
  107. package/dist/esm/common/wasm/bins/reduce_argmin.wasm.js +1 -1
  108. package/dist/esm/common/wasm/bins/reduce_count_nz.wasm.js +1 -1
  109. package/dist/esm/common/wasm/bins/reduce_max.wasm.js +1 -1
  110. package/dist/esm/common/wasm/bins/reduce_mean.wasm.js +1 -1
  111. package/dist/esm/common/wasm/bins/reduce_min.wasm.js +1 -1
  112. package/dist/esm/common/wasm/bins/reduce_nanmax.wasm.js +1 -1
  113. package/dist/esm/common/wasm/bins/reduce_nanmin.wasm.js +1 -1
  114. package/dist/esm/common/wasm/bins/reduce_nansum.wasm.js +1 -1
  115. package/dist/esm/common/wasm/bins/reduce_prod.wasm.js +1 -1
  116. package/dist/esm/common/wasm/bins/reduce_std.wasm.js +1 -1
  117. package/dist/esm/common/wasm/bins/reduce_sum.wasm.js +1 -1
  118. package/dist/esm/common/wasm/bins/reduce_var.wasm.js +1 -1
  119. package/dist/esm/common/wasm/bins/repeat.wasm.js +1 -1
  120. package/dist/esm/common/wasm/bins/right_shift.wasm.js +1 -1
  121. package/dist/esm/common/wasm/bins/rng.wasm.js +1 -1
  122. package/dist/esm/common/wasm/bins/roll.wasm.js +1 -1
  123. package/dist/esm/common/wasm/bins/searchsorted.wasm.js +1 -1
  124. package/dist/esm/common/wasm/bins/sign.wasm.js +1 -1
  125. package/dist/esm/common/wasm/bins/signbit.wasm.js +1 -0
  126. package/dist/esm/common/wasm/bins/sin.wasm.js +1 -0
  127. package/dist/esm/common/wasm/bins/sinh.wasm.js +1 -1
  128. package/dist/esm/common/wasm/bins/sort.wasm.js +1 -1
  129. package/dist/esm/common/wasm/bins/sqrt.wasm.js +1 -1
  130. package/dist/esm/common/wasm/bins/square.wasm.js +1 -1
  131. package/dist/esm/common/wasm/bins/sub.wasm.js +1 -1
  132. package/dist/esm/common/wasm/bins/svd.wasm.js +1 -1
  133. package/dist/esm/common/wasm/bins/tan.wasm.js +1 -1
  134. package/dist/esm/common/wasm/bins/tanh.wasm.js +1 -1
  135. package/dist/esm/common/wasm/bins/tile.wasm.js +1 -1
  136. package/dist/esm/common/wasm/bins/unravel_index.wasm.js +1 -0
  137. package/dist/esm/common/wasm/bins/vdot.wasm.js +1 -1
  138. package/dist/esm/common/wasm/bins/vecdot_float-relaxed.wasm.js +1 -0
  139. package/dist/esm/common/wasm/bins/vecdot_float.wasm.js +1 -0
  140. package/dist/esm/common/wasm/bins/vecdot_int.wasm.js +1 -0
  141. package/dist/esm/common/wasm/bins/vecmat_float-relaxed.wasm.js +1 -0
  142. package/dist/esm/common/wasm/bins/vecmat_float.wasm.js +1 -0
  143. package/dist/esm/common/wasm/bins/vecmat_int.wasm.js +1 -0
  144. package/dist/esm/common/wasm/bins/vector_norm-relaxed.wasm.js +1 -0
  145. package/dist/esm/common/wasm/bins/vector_norm.wasm.js +1 -0
  146. package/dist/esm/common/wasm/bitwise_and.js +1 -1
  147. package/dist/esm/common/wasm/bitwise_count.js +1 -1
  148. package/dist/esm/common/wasm/bitwise_not.js +1 -1
  149. package/dist/esm/common/wasm/bitwise_or.js +1 -1
  150. package/dist/esm/common/wasm/bitwise_xor.js +1 -1
  151. package/dist/esm/common/wasm/cholesky.js +1 -1
  152. package/dist/esm/common/wasm/clip.js +1 -1
  153. package/dist/esm/common/wasm/config.js +1 -1
  154. package/dist/esm/common/wasm/convolve.js +1 -1
  155. package/dist/esm/common/wasm/copysign.js +1 -1
  156. package/dist/esm/common/wasm/correlate.js +1 -1
  157. package/dist/esm/common/wasm/cos.js +1 -1
  158. package/dist/esm/common/wasm/cosh.js +1 -1
  159. package/dist/esm/common/wasm/cross.js +1 -1
  160. package/dist/esm/common/wasm/detect.js +1 -0
  161. package/dist/esm/common/wasm/diff.js +1 -1
  162. package/dist/esm/common/wasm/divide.js +1 -1
  163. package/dist/esm/common/wasm/divmod.js +1 -0
  164. package/dist/esm/common/wasm/dot.js +1 -1
  165. package/dist/esm/common/wasm/exp.js +1 -1
  166. package/dist/esm/common/wasm/exp2.js +1 -1
  167. package/dist/esm/common/wasm/fft.js +1 -1
  168. package/dist/esm/common/wasm/frexp.js +1 -1
  169. package/dist/esm/common/wasm/gather.js +1 -1
  170. package/dist/esm/common/wasm/gcd.js +1 -1
  171. package/dist/esm/common/wasm/gradient.js +1 -1
  172. package/dist/esm/common/wasm/heaviside.js +1 -1
  173. package/dist/esm/common/wasm/hypot.js +1 -1
  174. package/dist/esm/common/wasm/indices.js +1 -1
  175. package/dist/esm/common/wasm/inner.js +1 -1
  176. package/dist/esm/common/wasm/isfinite.js +1 -0
  177. package/dist/esm/common/wasm/isnan.js +1 -0
  178. package/dist/esm/common/wasm/kron.js +1 -1
  179. package/dist/esm/common/wasm/ldexp.js +1 -1
  180. package/dist/esm/common/wasm/left_shift.js +1 -1
  181. package/dist/esm/common/wasm/lexsort.js +1 -1
  182. package/dist/esm/common/wasm/logaddexp.js +1 -1
  183. package/dist/esm/common/wasm/logical_and.js +1 -1
  184. package/dist/esm/common/wasm/logical_not.js +1 -1
  185. package/dist/esm/common/wasm/logical_or.js +1 -1
  186. package/dist/esm/common/wasm/logical_xor.js +1 -1
  187. package/dist/esm/common/wasm/lu.js +1 -0
  188. package/dist/esm/common/wasm/matmul.js +1 -1
  189. package/dist/esm/common/wasm/matvec.js +1 -1
  190. package/dist/esm/common/wasm/max.js +1 -1
  191. package/dist/esm/common/wasm/min.js +1 -1
  192. package/dist/esm/common/wasm/mul.js +1 -1
  193. package/dist/esm/common/wasm/neg.js +1 -1
  194. package/dist/esm/common/wasm/outer.js +1 -1
  195. package/dist/esm/common/wasm/pad.js +1 -1
  196. package/dist/esm/common/wasm/partition.js +1 -1
  197. package/dist/esm/common/wasm/power.js +1 -1
  198. package/dist/esm/common/wasm/qr.js +1 -1
  199. package/dist/esm/common/wasm/reciprocal.js +1 -1
  200. package/dist/esm/common/wasm/reduce_all.js +1 -1
  201. package/dist/esm/common/wasm/reduce_any.js +1 -1
  202. package/dist/esm/common/wasm/reduce_argmax.js +1 -1
  203. package/dist/esm/common/wasm/reduce_argmin.js +1 -1
  204. package/dist/esm/common/wasm/reduce_count_nz.js +1 -1
  205. package/dist/esm/common/wasm/reduce_max.js +1 -1
  206. package/dist/esm/common/wasm/reduce_mean.js +1 -1
  207. package/dist/esm/common/wasm/reduce_min.js +1 -1
  208. package/dist/esm/common/wasm/reduce_nanmax.js +1 -1
  209. package/dist/esm/common/wasm/reduce_nanmin.js +1 -1
  210. package/dist/esm/common/wasm/reduce_nansum.js +1 -1
  211. package/dist/esm/common/wasm/reduce_prod.js +1 -1
  212. package/dist/esm/common/wasm/reduce_quantile.js +1 -1
  213. package/dist/esm/common/wasm/reduce_std.js +1 -1
  214. package/dist/esm/common/wasm/reduce_sum.js +1 -1
  215. package/dist/esm/common/wasm/reduce_var.js +1 -1
  216. package/dist/esm/common/wasm/repeat.js +1 -1
  217. package/dist/esm/common/wasm/right_shift.js +1 -1
  218. package/dist/esm/common/wasm/rng.js +1 -1
  219. package/dist/esm/common/wasm/roll.js +1 -1
  220. package/dist/esm/common/wasm/runtime.js +1 -1
  221. package/dist/esm/common/wasm/searchsorted.js +1 -1
  222. package/dist/esm/common/wasm/sign.js +1 -1
  223. package/dist/esm/common/wasm/signbit.js +1 -0
  224. package/dist/esm/common/wasm/sin.js +1 -0
  225. package/dist/esm/common/wasm/sinh.js +1 -1
  226. package/dist/esm/common/wasm/sort.js +1 -1
  227. package/dist/esm/common/wasm/sqrt.js +1 -1
  228. package/dist/esm/common/wasm/square.js +1 -1
  229. package/dist/esm/common/wasm/sub.js +1 -1
  230. package/dist/esm/common/wasm/svd.js +1 -1
  231. package/dist/esm/common/wasm/tan.js +1 -1
  232. package/dist/esm/common/wasm/tanh.js +1 -1
  233. package/dist/esm/common/wasm/tile.js +1 -1
  234. package/dist/esm/common/wasm/unravel_index.js +1 -0
  235. package/dist/esm/common/wasm/vdot.js +1 -1
  236. package/dist/esm/common/wasm/vecdot.js +1 -1
  237. package/dist/esm/common/wasm/vecmat.js +1 -1
  238. package/dist/esm/common/wasm/vector_norm.js +1 -0
  239. package/dist/esm/core/advanced.js +1 -1
  240. package/dist/esm/core/creation.js +1 -1
  241. package/dist/esm/core/index.js +1 -1
  242. package/dist/esm/core/linalg.js +1 -1
  243. package/dist/esm/core/polynomial.js +1 -1
  244. package/dist/esm/core/reduction.js +1 -1
  245. package/dist/esm/core/shape-extra.js +1 -1
  246. package/dist/esm/core/statistics.js +1 -1
  247. package/dist/esm/full/index.js +1 -1
  248. package/dist/esm/full/ndarray.js +1 -1
  249. package/dist/esm/index.js +1 -1
  250. package/dist/esm/io/npy/parser.js +1 -1
  251. package/dist/esm/io/zip/reader.js +1 -1
  252. package/dist/numpy-ts.browser.js +6 -6
  253. package/dist/types/common/dtype.d.ts +46 -0
  254. package/dist/types/common/internal/indexing.d.ts +9 -0
  255. package/dist/types/common/ndarray-core.d.ts +20 -0
  256. package/dist/types/common/ops/advanced.d.ts +17 -2
  257. package/dist/types/common/ops/complex.d.ts +19 -1
  258. package/dist/types/common/ops/linalg.d.ts +1 -1
  259. package/dist/types/common/ops/reduction.d.ts +2 -2
  260. package/dist/types/common/ops/sets.d.ts +2 -1
  261. package/dist/types/common/ops/shape.d.ts +2 -2
  262. package/dist/types/common/ops/statistics.d.ts +2 -1
  263. package/dist/types/common/storage.d.ts +54 -2
  264. package/dist/types/common/wasm/all_finite.d.ts +8 -0
  265. package/dist/types/common/wasm/arccos.d.ts +4 -2
  266. package/dist/types/common/wasm/arcsin.d.ts +4 -2
  267. package/dist/types/common/wasm/arctan.d.ts +4 -2
  268. package/dist/types/common/wasm/arctan2.d.ts +17 -0
  269. package/dist/types/common/wasm/argpartition.d.ts +8 -3
  270. package/dist/types/common/wasm/argsort.d.ts +8 -3
  271. package/dist/types/common/wasm/bins/abs.wasm.d.ts +1 -0
  272. package/dist/types/common/wasm/bins/all_finite.wasm.d.ts +4 -0
  273. package/dist/types/common/wasm/bins/alloc.wasm.d.ts +6 -0
  274. package/dist/types/common/wasm/bins/arccos.wasm.d.ts +8 -2
  275. package/dist/types/common/wasm/bins/arcsin.wasm.d.ts +8 -2
  276. package/dist/types/common/wasm/bins/arctan.wasm.d.ts +8 -2
  277. package/dist/types/common/wasm/bins/arctan2.wasm.d.ts +11 -0
  278. package/dist/types/common/wasm/bins/convolve.wasm.d.ts +6 -0
  279. package/dist/types/common/wasm/bins/copysign.wasm.d.ts +2 -0
  280. package/dist/types/common/wasm/bins/correlate.wasm.d.ts +6 -0
  281. package/dist/types/common/wasm/bins/cos.wasm.d.ts +8 -0
  282. package/dist/types/common/wasm/bins/cosh.wasm.d.ts +8 -2
  283. package/dist/types/common/wasm/bins/divmod.wasm.d.ts +11 -0
  284. package/dist/types/common/wasm/bins/dot_float-relaxed.wasm.d.ts +5 -0
  285. package/dist/types/common/wasm/bins/dot_float.wasm.d.ts +5 -0
  286. package/dist/types/common/wasm/bins/dot_int.wasm.d.ts +5 -0
  287. package/dist/types/common/wasm/bins/exp.wasm.d.ts +8 -2
  288. package/dist/types/common/wasm/bins/exp2.wasm.d.ts +8 -2
  289. package/dist/types/common/wasm/bins/fft.wasm.d.ts +6 -0
  290. package/dist/types/common/wasm/bins/frexp.wasm.d.ts +1 -0
  291. package/dist/types/common/wasm/bins/gather.wasm.d.ts +0 -1
  292. package/dist/types/common/wasm/bins/gcd.wasm.d.ts +8 -0
  293. package/dist/types/common/wasm/bins/indices.wasm.d.ts +6 -2
  294. package/dist/types/common/wasm/bins/inner_float-relaxed.wasm.d.ts +5 -0
  295. package/dist/types/common/wasm/bins/inner_float.wasm.d.ts +5 -0
  296. package/dist/types/common/wasm/bins/inner_int.wasm.d.ts +5 -0
  297. package/dist/types/common/wasm/bins/isfinite.wasm.d.ts +4 -0
  298. package/dist/types/common/wasm/bins/isnan.wasm.d.ts +4 -0
  299. package/dist/types/common/wasm/bins/lexsort.wasm.d.ts +4 -4
  300. package/dist/types/common/wasm/bins/logical_and.wasm.d.ts +2 -0
  301. package/dist/types/common/wasm/bins/logical_not.wasm.d.ts +1 -0
  302. package/dist/types/common/wasm/bins/logical_or.wasm.d.ts +2 -0
  303. package/dist/types/common/wasm/bins/logical_xor.wasm.d.ts +2 -0
  304. package/dist/types/common/wasm/bins/lu.wasm.d.ts +7 -0
  305. package/dist/types/common/wasm/bins/matmul_float-relaxed.wasm.d.ts +5 -0
  306. package/dist/types/common/wasm/bins/matmul_float.wasm.d.ts +5 -0
  307. package/dist/types/common/wasm/bins/matmul_int.wasm.d.ts +5 -0
  308. package/dist/types/common/wasm/bins/matvec_float-relaxed.wasm.d.ts +5 -0
  309. package/dist/types/common/wasm/bins/matvec_float.wasm.d.ts +5 -0
  310. package/dist/types/common/wasm/bins/matvec_int.wasm.d.ts +5 -0
  311. package/dist/types/common/wasm/bins/neg.wasm.d.ts +1 -0
  312. package/dist/types/common/wasm/bins/qr.wasm.d.ts +0 -1
  313. package/dist/types/common/wasm/bins/reciprocal.wasm.d.ts +8 -4
  314. package/dist/types/common/wasm/bins/reduce_argmax.wasm.d.ts +8 -0
  315. package/dist/types/common/wasm/bins/reduce_argmin.wasm.d.ts +8 -0
  316. package/dist/types/common/wasm/bins/reduce_max.wasm.d.ts +1 -0
  317. package/dist/types/common/wasm/bins/reduce_min.wasm.d.ts +1 -0
  318. package/dist/types/common/wasm/bins/reduce_prod.wasm.d.ts +2 -0
  319. package/dist/types/common/wasm/bins/reduce_sum.wasm.d.ts +8 -2
  320. package/dist/types/common/wasm/bins/rng.wasm.d.ts +0 -3
  321. package/dist/types/common/wasm/bins/sign.wasm.d.ts +1 -0
  322. package/dist/types/common/wasm/bins/signbit.wasm.d.ts +8 -0
  323. package/dist/types/common/wasm/bins/sin.wasm.d.ts +11 -0
  324. package/dist/types/common/wasm/bins/sinh.wasm.d.ts +8 -2
  325. package/dist/types/common/wasm/bins/sort.wasm.d.ts +4 -4
  326. package/dist/types/common/wasm/bins/sqrt.wasm.d.ts +2 -2
  327. package/dist/types/common/wasm/bins/svd.wasm.d.ts +1 -0
  328. package/dist/types/common/wasm/bins/tan.wasm.d.ts +8 -0
  329. package/dist/types/common/wasm/bins/tanh.wasm.d.ts +8 -2
  330. package/dist/types/common/wasm/bins/unravel_index.wasm.d.ts +4 -0
  331. package/dist/types/common/wasm/bins/vecdot_float-relaxed.wasm.d.ts +5 -0
  332. package/dist/types/common/wasm/bins/vecdot_float.wasm.d.ts +5 -0
  333. package/dist/types/common/wasm/bins/vecdot_int.wasm.d.ts +5 -0
  334. package/dist/types/common/wasm/bins/vecmat_float-relaxed.wasm.d.ts +5 -0
  335. package/dist/types/common/wasm/bins/vecmat_float.wasm.d.ts +5 -0
  336. package/dist/types/common/wasm/bins/vecmat_int.wasm.d.ts +5 -0
  337. package/dist/types/common/wasm/bins/vector_norm-relaxed.wasm.d.ts +3 -0
  338. package/dist/types/common/wasm/bins/vector_norm.wasm.d.ts +3 -0
  339. package/dist/types/common/wasm/config.d.ts +25 -0
  340. package/dist/types/common/wasm/convolve.d.ts +1 -1
  341. package/dist/types/common/wasm/cos.d.ts +4 -2
  342. package/dist/types/common/wasm/cosh.d.ts +4 -2
  343. package/dist/types/common/wasm/detect.d.ts +17 -0
  344. package/dist/types/common/wasm/divide.d.ts +4 -0
  345. package/dist/types/common/wasm/divmod.d.ts +13 -0
  346. package/dist/types/common/wasm/exp.d.ts +4 -2
  347. package/dist/types/common/wasm/exp2.d.ts +4 -2
  348. package/dist/types/common/wasm/fft.d.ts +5 -5
  349. package/dist/types/common/wasm/frexp.d.ts +1 -0
  350. package/dist/types/common/wasm/gather.d.ts +4 -0
  351. package/dist/types/common/wasm/gcd.d.ts +1 -0
  352. package/dist/types/common/wasm/hypot.d.ts +4 -2
  353. package/dist/types/common/wasm/indices.d.ts +2 -1
  354. package/dist/types/common/wasm/isfinite.d.ts +7 -0
  355. package/dist/types/common/wasm/isnan.d.ts +7 -0
  356. package/dist/types/common/wasm/lexsort.d.ts +3 -1
  357. package/dist/types/common/wasm/logaddexp.d.ts +4 -2
  358. package/dist/types/common/wasm/lu.d.ts +27 -0
  359. package/dist/types/common/wasm/partition.d.ts +3 -1
  360. package/dist/types/common/wasm/reduce_argmax.d.ts +5 -0
  361. package/dist/types/common/wasm/reduce_argmin.d.ts +5 -0
  362. package/dist/types/common/wasm/reduce_prod.d.ts +4 -0
  363. package/dist/types/common/wasm/reduce_quantile.d.ts +11 -3
  364. package/dist/types/common/wasm/reduce_sum.d.ts +10 -0
  365. package/dist/types/common/wasm/rng.d.ts +10 -0
  366. package/dist/types/common/wasm/runtime.d.ts +113 -30
  367. package/dist/types/common/wasm/searchsorted.d.ts +3 -1
  368. package/dist/types/common/wasm/signbit.d.ts +14 -0
  369. package/dist/types/common/wasm/sin.d.ts +17 -0
  370. package/dist/types/common/wasm/sinh.d.ts +4 -2
  371. package/dist/types/common/wasm/sort.d.ts +4 -1
  372. package/dist/types/common/wasm/sqrt.d.ts +4 -2
  373. package/dist/types/common/wasm/svd.d.ts +6 -0
  374. package/dist/types/common/wasm/tan.d.ts +4 -2
  375. package/dist/types/common/wasm/tanh.d.ts +4 -2
  376. package/dist/types/common/wasm/unravel_index.d.ts +12 -0
  377. package/dist/types/common/wasm/vector_norm.d.ts +11 -0
  378. package/dist/types/core/advanced.d.ts +10 -2
  379. package/dist/types/core/creation.d.ts +1 -1
  380. package/dist/types/core/index.d.ts +2 -1
  381. package/dist/types/core/linalg.d.ts +1 -1
  382. package/dist/types/core/sets.d.ts +4 -1
  383. package/dist/types/core/statistics.d.ts +2 -1
  384. package/dist/types/full/index.d.ts +18 -5
  385. package/dist/types/index.d.ts +3 -1
  386. package/package.json +36 -43
  387. package/dist/esm/common/wasm/bins/dot.wasm.js +0 -1
  388. package/dist/esm/common/wasm/bins/flip.wasm.js +0 -1
  389. package/dist/esm/common/wasm/bins/inner.wasm.js +0 -1
  390. package/dist/esm/common/wasm/bins/matmul.wasm.js +0 -1
  391. package/dist/esm/common/wasm/bins/matvec.wasm.js +0 -1
  392. package/dist/esm/common/wasm/bins/reduce_quantile.wasm.js +0 -1
  393. package/dist/esm/common/wasm/bins/rot90.wasm.js +0 -1
  394. package/dist/esm/common/wasm/bins/vecdot.wasm.js +0 -1
  395. package/dist/esm/common/wasm/bins/vecmat.wasm.js +0 -1
  396. package/dist/esm/common/wasm/flip.js +0 -1
  397. package/dist/esm/common/wasm/rot90.js +0 -1
  398. package/dist/types/common/wasm/bins/dot.wasm.d.ts +0 -9
  399. package/dist/types/common/wasm/bins/flip.wasm.d.ts +0 -7
  400. package/dist/types/common/wasm/bins/inner.wasm.d.ts +0 -9
  401. package/dist/types/common/wasm/bins/matmul.wasm.d.ts +0 -9
  402. package/dist/types/common/wasm/bins/matvec.wasm.d.ts +0 -9
  403. package/dist/types/common/wasm/bins/reduce_quantile.wasm.d.ts +0 -2
  404. package/dist/types/common/wasm/bins/rot90.wasm.d.ts +0 -7
  405. package/dist/types/common/wasm/bins/vecdot.wasm.d.ts +0 -9
  406. package/dist/types/common/wasm/bins/vecmat.wasm.d.ts +0 -9
  407. package/dist/types/common/wasm/flip.d.ts +0 -13
  408. package/dist/types/common/wasm/rot90.d.ts +0 -14
@@ -1 +1 @@
1
- import{ArrayStorage as b}from"../storage.js";import{isBigIntDType as u,isComplexDType as y,isIntegerDType as N,throwIfComplex as D}from"../dtype.js";import{elementwiseComparisonOp as C}from"../internal/compute.js";import{broadcastShapes as I}from"../internal/compute.js";import{wasmLogicalAnd as L,wasmLogicalAndScalar as B}from"../wasm/logical_and.js";import{wasmLogicalOr as _,wasmLogicalOrScalar as v}from"../wasm/logical_or.js";import{wasmLogicalXor as k,wasmLogicalXorScalar as x}from"../wasm/logical_xor.js";import{wasmCopysign as X,wasmCopysignScalar as U}from"../wasm/copysign.js";import{wasmLogicalNot as E}from"../wasm/logical_not.js";function S(t){return t!==0&&t!==0n}function g(t,s){const o=t[s*2],r=t[s*2+1];return o!==0||r!==0}function z(t,s){return t.isCContiguous&&s.isCContiguous&&t.shape.length===s.shape.length&&t.shape.every((o,r)=>o===s.shape[r])}function st(t,s){if(typeof s=="number"){const o=B(t,s);return o||T(t,s)}if(s.size===1&&!y(s.dtype)){const o=Number(s.iget(0)),r=B(t,o);return r||T(t,o)}if(z(t,s)){const o=L(t,s);return o||j(t,s)}return C(t,s,(o,r)=>S(o)&&S(r))}function j(t,s){const o=new Uint8Array(t.size),r=t.data,n=s.data,e=t.offset,a=s.offset,f=t.size,i=u(t.dtype),c=u(s.dtype),m=y(t.dtype),p=y(s.dtype);if(m||p)for(let l=0;l<f;l++){const d=m?g(r,e+l):r[e+l]!==0,A=p?g(n,a+l):n[a+l]!==0;o[l]=d&&A?1:0}else if(i||c)for(let l=0;l<f;l++){const d=i?r[e+l]!==0n:r[e+l]!==0,A=c?n[a+l]!==0n:n[a+l]!==0;o[l]=d&&A?1:0}else for(let l=0;l<f;l++)o[l]=r[e+l]!==0&&n[a+l]!==0?1:0;return b.fromData(o,Array.from(t.shape),"bool")}function T(t,s){const o=new Uint8Array(t.size),r=s!==0,n=t.size;if(t.isCContiguous){const e=t.data,a=t.offset;if(y(t.dtype)){const f=e;for(let i=0;i<n;i++)o[i]=g(f,a+i)&&r?1:0}else if(u(t.dtype)){const f=e;for(let i=0;i<n;i++)o[i]=f[a+i]!==0n&&r?1:0}else if(a===0)for(let f=0;f<n;f++)o[f]=e[f]!==0&&r?1:0;else for(let f=0;f<n;f++)o[f]=e[a+f]!==0&&r?1:0}else if(y(t.dtype))for(let e=0;e<n;e++){const a=t.iget(e);o[e]=(a.re!==0||a.im!==0)&&r?1:0}else if(u(t.dtype))for(let e=0;e<n;e++)o[e]=t.iget(e)!==0n&&r?1:0;else for(let e=0;e<n;e++)o[e]=Number(t.iget(e))!==0&&r?1:0;return b.fromData(o,Array.from(t.shape),"bool")}function nt(t,s){if(typeof s=="number"){const o=v(t,s);return o||V(t,s)}if(s.size===1&&!y(s.dtype)){const o=Number(s.iget(0)),r=v(t,o);return r||V(t,o)}if(z(t,s)){const o=_(t,s);return o||R(t,s)}return C(t,s,(o,r)=>S(o)||S(r))}function R(t,s){const o=new Uint8Array(t.size),r=t.data,n=s.data,e=t.offset,a=s.offset,f=t.size,i=u(t.dtype),c=u(s.dtype),m=y(t.dtype),p=y(s.dtype);if(m||p)for(let l=0;l<f;l++){const d=m?g(r,e+l):r[e+l]!==0,A=p?g(n,a+l):n[a+l]!==0;o[l]=d||A?1:0}else if(i||c)for(let l=0;l<f;l++){const d=i?r[e+l]!==0n:r[e+l]!==0,A=c?n[a+l]!==0n:n[a+l]!==0;o[l]=d||A?1:0}else for(let l=0;l<f;l++)o[l]=r[e+l]!==0||n[a+l]!==0?1:0;return b.fromData(o,Array.from(t.shape),"bool")}function V(t,s){const o=new Uint8Array(t.size),r=s!==0,n=t.size;if(t.isCContiguous){const e=t.data,a=t.offset;if(y(t.dtype)){const f=e;for(let i=0;i<n;i++)o[i]=g(f,a+i)||r?1:0}else if(u(t.dtype)){const f=e;for(let i=0;i<n;i++)o[i]=f[a+i]!==0n||r?1:0}else if(a===0)for(let f=0;f<n;f++)o[f]=e[f]!==0||r?1:0;else for(let f=0;f<n;f++)o[f]=e[a+f]!==0||r?1:0}else if(y(t.dtype))for(let e=0;e<n;e++){const a=t.iget(e);o[e]=a.re!==0||a.im!==0||r?1:0}else if(u(t.dtype))for(let e=0;e<n;e++)o[e]=t.iget(e)!==0n||r?1:0;else for(let e=0;e<n;e++)o[e]=Number(t.iget(e))!==0||r?1:0;return b.fromData(o,Array.from(t.shape),"bool")}function at(t){const s=E(t);if(s)return s;const o=new Uint8Array(t.size),r=t.size;if(t.isCContiguous){const n=t.data,e=t.offset;if(y(t.dtype)){const a=n;for(let f=0;f<r;f++)o[f]=g(a,e+f)?0:1}else if(u(t.dtype)){const a=n;for(let f=0;f<r;f++)o[f]=a[e+f]===0n?1:0}else if(e===0)for(let a=0;a<r;a++)o[a]=n[a]===0?1:0;else for(let a=0;a<r;a++)o[a]=n[e+a]===0?1:0}else if(y(t.dtype))for(let n=0;n<r;n++){const e=t.iget(n);o[n]=e.re===0&&e.im===0?1:0}else if(u(t.dtype))for(let n=0;n<r;n++)o[n]=t.iget(n)===0n?1:0;else for(let n=0;n<r;n++)o[n]=Number(t.iget(n))===0?1:0;return b.fromData(o,Array.from(t.shape),"bool")}function it(t,s){if(typeof s=="number"){const o=x(t,s);return o||O(t,s)}if(s.size===1&&!y(s.dtype)){const o=Number(s.iget(0)),r=x(t,o);return r||O(t,o)}if(z(t,s)){const o=k(t,s);return o||P(t,s)}return C(t,s,(o,r)=>S(o)!==S(r))}function P(t,s){const o=new Uint8Array(t.size),r=t.data,n=s.data,e=t.offset,a=s.offset,f=t.size,i=u(t.dtype),c=u(s.dtype),m=y(t.dtype),p=y(s.dtype);if(m||p)for(let l=0;l<f;l++){const d=m?g(r,e+l):r[e+l]!==0,A=p?g(n,a+l):n[a+l]!==0;o[l]=d!==A?1:0}else if(i||c)for(let l=0;l<f;l++){const d=i?r[e+l]!==0n:r[e+l]!==0,A=c?n[a+l]!==0n:n[a+l]!==0;o[l]=d!==A?1:0}else for(let l=0;l<f;l++){const d=r[e+l]!==0,A=n[a+l]!==0;o[l]=d!==A?1:0}return b.fromData(o,Array.from(t.shape),"bool")}function O(t,s){const o=new Uint8Array(t.size),r=s!==0,n=t.size;if(t.isCContiguous){const e=t.data,a=t.offset;if(y(t.dtype)){const f=e;for(let i=0;i<n;i++){const c=g(f,a+i);o[i]=c!==r?1:0}}else if(u(t.dtype)){const f=e;for(let i=0;i<n;i++){const c=f[a+i]!==0n;o[i]=c!==r?1:0}}else if(a===0)for(let f=0;f<n;f++){const i=e[f]!==0;o[f]=i!==r?1:0}else for(let f=0;f<n;f++){const i=e[a+f]!==0;o[f]=i!==r?1:0}}else if(y(t.dtype))for(let e=0;e<n;e++){const a=t.iget(e),f=a.re!==0||a.im!==0;o[e]=f!==r?1:0}else if(u(t.dtype))for(let e=0;e<n;e++){const a=t.iget(e)!==0n;o[e]=a!==r?1:0}else for(let e=0;e<n;e++){const a=Number(t.iget(e))!==0;o[e]=a!==r?1:0}return b.fromData(o,Array.from(t.shape),"bool")}function ft(t){const s=new Uint8Array(t.size),o=t.size;if(t.isCContiguous){const r=t.data,n=t.offset;if(y(t.dtype)){const e=r;for(let a=0;a<o;a++){const f=e[(n+a)*2],i=e[(n+a)*2+1];s[a]=Number.isFinite(f)&&Number.isFinite(i)?1:0}}else if(u(t.dtype)||N(t.dtype))s.fill(1);else if(n===0)for(let e=0;e<o;e++)s[e]=Number.isFinite(r[e])?1:0;else for(let e=0;e<o;e++){const a=r[n+e];s[e]=Number.isFinite(a)?1:0}}else if(y(t.dtype))for(let r=0;r<o;r++){const n=t.iget(r);s[r]=Number.isFinite(n.re)&&Number.isFinite(n.im)?1:0}else if(u(t.dtype)||N(t.dtype))s.fill(1);else for(let r=0;r<o;r++)s[r]=Number.isFinite(Number(t.iget(r)))?1:0;return b.fromData(s,Array.from(t.shape),"bool")}function lt(t){const s=new Uint8Array(t.size),o=t.size;if(t.isCContiguous){const r=t.data,n=t.offset;if(y(t.dtype)){const e=r;for(let a=0;a<o;a++){const f=e[(n+a)*2],i=e[(n+a)*2+1],c=!Number.isFinite(f)&&!Number.isNaN(f),m=!Number.isFinite(i)&&!Number.isNaN(i);s[a]=c||m?1:0}}else if(!(u(t.dtype)||N(t.dtype)))if(n===0)for(let e=0;e<o;e++){const a=r[e];s[e]=!Number.isFinite(a)&&!Number.isNaN(a)?1:0}else for(let e=0;e<o;e++){const a=r[n+e];s[e]=!Number.isFinite(a)&&!Number.isNaN(a)?1:0}}else if(y(t.dtype))for(let r=0;r<o;r++){const n=t.iget(r),e=!Number.isFinite(n.re)&&!Number.isNaN(n.re),a=!Number.isFinite(n.im)&&!Number.isNaN(n.im);s[r]=e||a?1:0}else if(!(u(t.dtype)||N(t.dtype)))for(let r=0;r<o;r++){const n=Number(t.iget(r));s[r]=!Number.isFinite(n)&&!Number.isNaN(n)?1:0}return b.fromData(s,Array.from(t.shape),"bool")}function ct(t){const s=new Uint8Array(t.size),o=t.size;if(t.isCContiguous){const r=t.data,n=t.offset;if(y(t.dtype)){const e=r;for(let a=0;a<o;a++){const f=e[(n+a)*2],i=e[(n+a)*2+1];s[a]=Number.isNaN(f)||Number.isNaN(i)?1:0}}else if(!(u(t.dtype)||N(t.dtype)))for(let e=0;e<o;e++)s[e]=Number.isNaN(r[n+e])?1:0}else if(y(t.dtype))for(let r=0;r<o;r++){const n=t.iget(r);s[r]=Number.isNaN(n.re)||Number.isNaN(n.im)?1:0}else if(!(u(t.dtype)||N(t.dtype)))for(let r=0;r<o;r++)s[r]=Number.isNaN(Number(t.iget(r)))?1:0;return b.fromData(s,Array.from(t.shape),"bool")}function ut(t){const s=new Uint8Array(t.size);return b.fromData(s,Array.from(t.shape),"bool")}function yt(t,s){if(D(t.dtype,"copysign","copysign is only defined for real numbers."),typeof s!="number"&&D(s.dtype,"copysign","copysign is only defined for real numbers."),typeof s=="number"){const i=U(t,s);return i||M(t,s)}if(s.size===1&&!y(s.dtype)){const i=Number(s.iget(0)),c=U(t,i);return c||M(t,i)}if(z(t,s)){const i=X(t,s);return i||q(t,s)}const o=I(t.shape,s.shape),r=o.reduce((i,c)=>i*c,1),n=b.zeros(o,"float64"),e=n.data,a=F(t,o),f=F(s,o);for(let i=0;i<r;i++){const c=Number(a.iget(i)),m=Number(f.iget(i));e[i]=Math.sign(m)*Math.abs(c)}return n}function q(t,s){const o=b.zeros(Array.from(t.shape),"float64"),r=o.data,n=t.size,e=t.data,a=s.data,f=t.offset,i=s.offset,c=u(t.dtype),m=u(s.dtype);for(let p=0;p<n;p++){const l=c?Number(e[f+p]):e[f+p],d=m?Number(a[i+p]):a[i+p];r[p]=Math.sign(d)*Math.abs(l)}return o}function M(t,s){const o=b.zeros(Array.from(t.shape),"float64"),r=o.data,n=t.size,e=Math.sign(s);if(!t.isCContiguous){for(let i=0;i<n;i++)r[i]=e*Math.abs(Number(t.iget(i)));return o}const a=t.data,f=t.offset;if(u(t.dtype)){const i=a;for(let c=0;c<n;c++)r[c]=e*Math.abs(Number(i[f+c]))}else if(f===0)for(let i=0;i<n;i++)r[i]=e*Math.abs(a[i]);else for(let i=0;i<n;i++)r[i]=e*Math.abs(a[f+i]);return o}function mt(t){D(t.dtype,"signbit","signbit is only defined for real numbers.");const s=new Uint8Array(t.size),o=t.size;if(t.isCContiguous){const r=t.data,n=t.offset;if(u(t.dtype)){const e=r;for(let a=0;a<o;a++)s[a]=e[n+a]<0n?1:0}else for(let e=0;e<o;e++){const a=r[n+e];s[e]=a<0||Object.is(a,-0)?1:0}}else if(u(t.dtype))for(let r=0;r<o;r++)s[r]=t.iget(r)<0n?1:0;else for(let r=0;r<o;r++){const n=Number(t.iget(r));s[r]=n<0||Object.is(n,-0)?1:0}return b.fromData(s,Array.from(t.shape),"bool")}function pt(t,s){if(D(t.dtype,"nextafter","nextafter is only defined for real numbers."),typeof s!="number"&&D(s.dtype,"nextafter","nextafter is only defined for real numbers."),typeof s=="number")return H(t,s);if(z(t,s))return G(t,s);const o=I(t.shape,s.shape),r=o.reduce((i,c)=>i*c,1),n=b.zeros(o,"float64"),e=n.data,a=F(t,o),f=F(s,o);for(let i=0;i<r;i++){const c=Number(a.iget(i)),m=Number(f.iget(i));e[i]=h(c,m)}return n}function G(t,s){const o=b.zeros(Array.from(t.shape),"float64"),r=o.data,n=t.size,e=t.data,a=s.data,f=t.offset,i=s.offset,c=u(t.dtype),m=u(s.dtype);for(let p=0;p<n;p++){const l=c?Number(e[f+p]):e[f+p],d=m?Number(a[i+p]):a[i+p];r[p]=h(l,d)}return o}function H(t,s){const o=b.zeros(Array.from(t.shape),"float64"),r=o.data,n=t.size;if(t.isCContiguous){const e=t.data,a=t.offset;if(u(t.dtype)){const f=e;for(let i=0;i<n;i++)r[i]=h(Number(f[a+i]),s)}else for(let f=0;f<n;f++)r[f]=h(e[a+f],s)}else for(let e=0;e<n;e++)r[e]=h(Number(t.iget(e)),s);return o}function h(t,s){if(Number.isNaN(t)||Number.isNaN(s))return NaN;if(t===s)return s;if(t===0)return s>0?Number.MIN_VALUE:-Number.MIN_VALUE;const o=new ArrayBuffer(8),r=new Float64Array(o),n=new BigInt64Array(o);r[0]=t;let e=n[0];return(t>0?s>t:s<t)?e=e+1n:e=e-1n,n[0]=e,r[0]}function bt(t){D(t.dtype,"spacing","spacing is only defined for real numbers.");const s=b.zeros(Array.from(t.shape),"float64"),o=s.data,r=t.size;if(t.isCContiguous){const n=t.data,e=t.offset;if(u(t.dtype)){const a=n;for(let f=0;f<r;f++)o[f]=w(Number(a[e+f]))}else for(let a=0;a<r;a++)o[a]=w(n[e+a])}else for(let n=0;n<r;n++)o[n]=w(Number(t.iget(n)));return s}function w(t){if(Number.isNaN(t))return NaN;if(!Number.isFinite(t))return NaN;if(Math.abs(t)===0)return Number.MIN_VALUE;const o=h(t,1/0);return Math.abs(o-t)}function F(t,s){const o=t.shape.length,r=s.length,n=new Array(r).fill(0);for(let e=0;e<o;e++){const a=r-o+e,f=t.shape[e],i=s[a];if(f===i)n[a]=t.strides[e];else if(f===1)n[a]=0;else throw new Error("Invalid broadcast")}return b.fromData(t.data,Array.from(s),t.dtype,n,t.offset)}function dt(t){const s=t.dtype,o=t.size,r=new Uint8Array(o);if(y(s))if(t.isCContiguous){const n=t.offset,e=t.data;for(let a=0;a<o;a++)r[a]=e[(n+a)*2+1]!==0?1:0}else for(let n=0;n<o;n++){const e=t.iget(n);r[n]=e.im!==0?1:0}return b.fromData(r,Array.from(t.shape),"bool")}function At(t){return y(t.dtype)}function gt(t){const s=t.dtype,o=t.size,r=new Uint8Array(o);if(y(s))if(t.isCContiguous){const n=t.offset,e=t.data;for(let a=0;a<o;a++)r[a]=e[(n+a)*2+1]===0?1:0}else for(let n=0;n<o;n++){const e=t.iget(n);r[n]=e.im===0?1:0}else r.fill(1);return b.fromData(r,Array.from(t.shape),"bool")}function Nt(t){return!y(t.dtype)}function Dt(t){D(t.dtype,"isneginf","This operation is not supported for complex values because it would be ambiguous.");const s=new Uint8Array(t.size),o=t.size;if(!(u(t.dtype)||N(t.dtype)))if(t.isCContiguous){const r=t.data,n=t.offset;for(let e=0;e<o;e++){const a=r[n+e];s[e]=a===-1/0?1:0}}else for(let r=0;r<o;r++)s[r]=Number(t.iget(r))===-1/0?1:0;return b.fromData(s,Array.from(t.shape),"bool")}function St(t){D(t.dtype,"isposinf","This operation is not supported for complex values because it would be ambiguous.");const s=new Uint8Array(t.size),o=t.size;if(!(u(t.dtype)||N(t.dtype)))if(t.isCContiguous){const r=t.data,n=t.offset;for(let e=0;e<o;e++){const a=r[n+e];s[e]=a===1/0?1:0}}else for(let r=0;r<o;r++)s[r]=Number(t.iget(r))===1/0?1:0;return b.fromData(s,Array.from(t.shape),"bool")}function ht(t){return t.isFContiguous}function zt(t,s=100){const o=t.dtype;if(y(o)){const r=t.size,e=s*(o==="complex64"?11920929e-14:2220446049250313e-31);if(t.isCContiguous){const a=t.data,f=t.offset;let i=!0;for(let c=0;c<r;c++){const m=a[(f+c)*2+1];if(Math.abs(m)>e){i=!1;break}}if(i){const c=o==="complex64"?"float32":"float64",m=b.zeros(Array.from(t.shape),c),p=m.data;for(let l=0;l<r;l++)p[l]=a[(f+l)*2];return m}}else{let a=!0;for(let f=0;f<r;f++){const i=t.iget(f);if(Math.abs(i.im)>e){a=!1;break}}if(a){const f=o==="complex64"?"float32":"float64",i=b.zeros(Array.from(t.shape),f),c=i.data;for(let m=0;m<r;m++){const p=t.iget(m);c[m]=p.re}return i}}return t.copy()}return t.copy()}function Ft(t){return typeof t=="number"||typeof t=="bigint"||typeof t=="boolean"||typeof t=="string"}function Ct(t){return t==null?!1:typeof t[Symbol.iterator]=="function"}function wt(t,s){const r={b:["bool"],i:["int8","int16","int32","int64"],u:["uint8","uint16","uint32","uint64"],f:["float32","float64"]}[s];return r?r.includes(t):!1}function It(t,s){const o=["float64","float32","int64","int32","int16","int8","uint64","uint32","uint16","uint8","bool"],r=o.indexOf(t),n=o.indexOf(s);return r<=n?t:s}export{yt as copysign,dt as iscomplex,At as iscomplexobj,wt as isdtype,ft as isfinite,ht as isfortran,lt as isinf,ct as isnan,ut as isnat,Dt as isneginf,St as isposinf,gt as isreal,Nt as isrealobj,Ft as isscalar,Ct as iterable,st as logical_and,at as logical_not,nt as logical_or,it as logical_xor,pt as nextafter,It as promote_types,zt as real_if_close,mt as signbit,bt as spacing};
1
+ import{ArrayStorage as m}from"../storage.js";import{isBigIntDType as d,isComplexDType as b,isIntegerDType as S,throwIfComplex as h,hasFloat16 as I,mathResultDtype as D,promoteDTypes as v}from"../dtype.js";import{elementwiseComparisonOp as B}from"../internal/compute.js";import{broadcastShapes as T}from"../internal/compute.js";import{wasmLogicalAnd as j,wasmLogicalAndScalar as V}from"../wasm/logical_and.js";import{wasmLogicalOr as P,wasmLogicalOrScalar as O}from"../wasm/logical_or.js";import{wasmLogicalXor as Y,wasmLogicalXorScalar as x}from"../wasm/logical_xor.js";import{wasmIsnan as q}from"../wasm/isnan.js";import{wasmIsfinite as G}from"../wasm/isfinite.js";import{wasmCopysign as H,wasmCopysignScalar as M}from"../wasm/copysign.js";import{wasmLogicalNot as J}from"../wasm/logical_not.js";import{wasmSignbit as K}from"../wasm/signbit.js";function F(t){return t!==0&&t!==0n}function N(t,o){const f=t[o*2],i=t[o*2+1];return f!==0||i!==0}function w(t,o){return t.isCContiguous&&o.isCContiguous&&t.shape.length===o.shape.length&&t.shape.every((f,i)=>f===o.shape[i])}function At(t,o){if(typeof o=="number"){const f=V(t,o);return f||L(t,o)}if(o.size===1&&!b(o.dtype)){const f=Number(o.iget(0)),i=V(t,f);return i||L(t,f)}if(w(t,o)){const f=j(t,o);return f||Q(t,o)}return B(t,o,(f,i)=>F(f)&&F(i))}function Q(t,o){const f=m.empty(Array.from(t.shape),"bool"),i=f.data,a=t.data,r=o.data,e=t.offset,n=o.offset,s=t.size,l=d(t.dtype),u=d(o.dtype),p=b(t.dtype),y=b(o.dtype);if(p||y)for(let c=0;c<s;c++){const A=p?N(a,e+c):a[e+c]!==0,g=y?N(r,n+c):r[n+c]!==0;i[c]=A&&g?1:0}else if(l||u)for(let c=0;c<s;c++){const A=l?a[e+c]!==0n:a[e+c]!==0,g=u?r[n+c]!==0n:r[n+c]!==0;i[c]=A&&g?1:0}else for(let c=0;c<s;c++)i[c]=a[e+c]!==0&&r[n+c]!==0?1:0;return f}function L(t,o){const f=m.empty(Array.from(t.shape),"bool"),i=f.data,a=o!==0,r=t.size;if(t.isCContiguous){const e=t.data,n=t.offset;if(b(t.dtype)){const s=e;for(let l=0;l<r;l++)i[l]=N(s,n+l)&&a?1:0}else if(d(t.dtype)){const s=e;for(let l=0;l<r;l++)i[l]=s[n+l]!==0n&&a?1:0}else if(n===0)for(let s=0;s<r;s++)i[s]=e[s]!==0&&a?1:0;else for(let s=0;s<r;s++)i[s]=e[n+s]!==0&&a?1:0}else if(b(t.dtype))for(let e=0;e<r;e++){const n=t.iget(e);i[e]=(n.re!==0||n.im!==0)&&a?1:0}else if(d(t.dtype))for(let e=0;e<r;e++)i[e]=t.iget(e)!==0n&&a?1:0;else for(let e=0;e<r;e++)i[e]=Number(t.iget(e))!==0&&a?1:0;return f}function gt(t,o){if(typeof o=="number"){const f=O(t,o);return f||_(t,o)}if(o.size===1&&!b(o.dtype)){const f=Number(o.iget(0)),i=O(t,f);return i||_(t,f)}if(w(t,o)){const f=P(t,o);return f||W(t,o)}return B(t,o,(f,i)=>F(f)||F(i))}function W(t,o){const f=m.empty(Array.from(t.shape),"bool"),i=f.data,a=t.data,r=o.data,e=t.offset,n=o.offset,s=t.size,l=d(t.dtype),u=d(o.dtype),p=b(t.dtype),y=b(o.dtype);if(p||y)for(let c=0;c<s;c++){const A=p?N(a,e+c):a[e+c]!==0,g=y?N(r,n+c):r[n+c]!==0;i[c]=A||g?1:0}else if(l||u)for(let c=0;c<s;c++){const A=l?a[e+c]!==0n:a[e+c]!==0,g=u?r[n+c]!==0n:r[n+c]!==0;i[c]=A||g?1:0}else for(let c=0;c<s;c++)i[c]=a[e+c]!==0||r[n+c]!==0?1:0;return f}function _(t,o){const f=m.empty(Array.from(t.shape),"bool"),i=f.data,a=o!==0,r=t.size;if(t.isCContiguous){const e=t.data,n=t.offset;if(b(t.dtype)){const s=e;for(let l=0;l<r;l++)i[l]=N(s,n+l)||a?1:0}else if(d(t.dtype)){const s=e;for(let l=0;l<r;l++)i[l]=s[n+l]!==0n||a?1:0}else if(n===0)for(let s=0;s<r;s++)i[s]=e[s]!==0||a?1:0;else for(let s=0;s<r;s++)i[s]=e[n+s]!==0||a?1:0}else if(b(t.dtype))for(let e=0;e<r;e++){const n=t.iget(e);i[e]=n.re!==0||n.im!==0||a?1:0}else if(d(t.dtype))for(let e=0;e<r;e++)i[e]=t.iget(e)!==0n||a?1:0;else for(let e=0;e<r;e++)i[e]=Number(t.iget(e))!==0||a?1:0;return f}function Nt(t){const o=J(t);if(o)return o;const f=m.empty(Array.from(t.shape),"bool"),i=f.data,a=t.size;if(t.isCContiguous){const r=t.data,e=t.offset;if(b(t.dtype)){const n=r;for(let s=0;s<a;s++)i[s]=N(n,e+s)?0:1}else if(d(t.dtype)){const n=r;for(let s=0;s<a;s++)i[s]=n[e+s]===0n?1:0}else if(e===0)for(let n=0;n<a;n++)i[n]=r[n]===0?1:0;else for(let n=0;n<a;n++)i[n]=r[e+n]===0?1:0}else if(b(t.dtype))for(let r=0;r<a;r++){const e=t.iget(r);i[r]=e.re===0&&e.im===0?1:0}else if(d(t.dtype))for(let r=0;r<a;r++)i[r]=t.iget(r)===0n?1:0;else for(let r=0;r<a;r++)i[r]=Number(t.iget(r))===0?1:0;return f}function St(t,o){if(typeof o=="number"){const f=x(t,o);return f||k(t,o)}if(o.size===1&&!b(o.dtype)){const f=Number(o.iget(0)),i=x(t,f);return i||k(t,f)}if(w(t,o)){const f=Y(t,o);return f||Z(t,o)}return B(t,o,(f,i)=>F(f)!==F(i))}function Z(t,o){const f=m.empty(Array.from(t.shape),"bool"),i=f.data,a=t.data,r=o.data,e=t.offset,n=o.offset,s=t.size,l=d(t.dtype),u=d(o.dtype),p=b(t.dtype),y=b(o.dtype);if(p||y)for(let c=0;c<s;c++){const A=p?N(a,e+c):a[e+c]!==0,g=y?N(r,n+c):r[n+c]!==0;i[c]=A!==g?1:0}else if(l||u)for(let c=0;c<s;c++){const A=l?a[e+c]!==0n:a[e+c]!==0,g=u?r[n+c]!==0n:r[n+c]!==0;i[c]=A!==g?1:0}else for(let c=0;c<s;c++){const A=a[e+c]!==0,g=r[n+c]!==0;i[c]=A!==g?1:0}return f}function k(t,o){const f=m.empty(Array.from(t.shape),"bool"),i=f.data,a=o!==0,r=t.size;if(t.isCContiguous){const e=t.data,n=t.offset;if(b(t.dtype)){const s=e;for(let l=0;l<r;l++){const u=N(s,n+l);i[l]=u!==a?1:0}}else if(d(t.dtype)){const s=e;for(let l=0;l<r;l++){const u=s[n+l]!==0n;i[l]=u!==a?1:0}}else if(n===0)for(let s=0;s<r;s++){const l=e[s]!==0;i[s]=l!==a?1:0}else for(let s=0;s<r;s++){const l=e[n+s]!==0;i[s]=l!==a?1:0}}else if(b(t.dtype))for(let e=0;e<r;e++){const n=t.iget(e),s=n.re!==0||n.im!==0;i[e]=s!==a?1:0}else if(d(t.dtype))for(let e=0;e<r;e++){const n=t.iget(e)!==0n;i[e]=n!==a?1:0}else for(let e=0;e<r;e++){const n=Number(t.iget(e))!==0;i[e]=n!==a?1:0}return f}function Dt(t){if(d(t.dtype)||S(t.dtype))return m.ones(Array.from(t.shape),"bool");const o=G(t);if(o)return o;const f=m.empty(Array.from(t.shape),"bool"),i=f.data,a=t.size;if(t.isCContiguous){const r=t.data,e=t.offset;if(b(t.dtype)){const n=r;for(let s=0;s<a;s++){const l=n[(e+s)*2],u=n[(e+s)*2+1];i[s]=Number.isFinite(l)&&Number.isFinite(u)?1:0}}else if(d(t.dtype)||S(t.dtype))i.fill(1);else for(let n=0;n<a;n++){const s=r[e+n];i[n]=s-s===0?1:0}}else if(b(t.dtype))for(let r=0;r<a;r++){const e=t.iget(r),n=e.re-e.re===0,s=e.im-e.im===0;i[r]=n&&s?1:0}else if(d(t.dtype)||S(t.dtype))i.fill(1);else for(let r=0;r<a;r++){const e=Number(t.iget(r));i[r]=e-e===0?1:0}return f}function ht(t){const o=m.empty(Array.from(t.shape),"bool"),f=o.data,i=t.size;if(t.isCContiguous){const a=t.data,r=t.offset;if(b(t.dtype)){const e=a;for(let n=0;n<i;n++){const s=e[(r+n)*2],l=e[(r+n)*2+1],u=!Number.isFinite(s)&&!Number.isNaN(s),p=!Number.isFinite(l)&&!Number.isNaN(l);f[n]=u||p?1:0}}else if(!(d(t.dtype)||S(t.dtype)))if(r===0)for(let e=0;e<i;e++){const n=a[e];f[e]=!Number.isFinite(n)&&!Number.isNaN(n)?1:0}else for(let e=0;e<i;e++){const n=a[r+e];f[e]=!Number.isFinite(n)&&!Number.isNaN(n)?1:0}}else if(b(t.dtype))for(let a=0;a<i;a++){const r=t.iget(a),e=!Number.isFinite(r.re)&&!Number.isNaN(r.re),n=!Number.isFinite(r.im)&&!Number.isNaN(r.im);f[a]=e||n?1:0}else if(!(d(t.dtype)||S(t.dtype)))for(let a=0;a<i;a++){const r=Number(t.iget(a));f[a]=!Number.isFinite(r)&&!Number.isNaN(r)?1:0}return o}function Ft(t){const o=q(t);if(o)return o;const f=m.empty(Array.from(t.shape),"bool"),i=f.data,a=t.size;if(t.isCContiguous){const r=t.data,e=t.offset;if(b(t.dtype)){const n=r;for(let s=0;s<a;s++){const l=n[(e+s)*2],u=n[(e+s)*2+1];i[s]=Number.isNaN(l)||Number.isNaN(u)?1:0}}else if(!(d(t.dtype)||S(t.dtype)))for(let n=0;n<a;n++){const s=r[e+n];i[n]=s!==s?1:0}}else if(b(t.dtype))for(let r=0;r<a;r++){const e=t.iget(r);i[r]=e.re!==e.re||e.im!==e.im?1:0}else if(!(d(t.dtype)||S(t.dtype)))for(let r=0;r<a;r++){const e=Number(t.iget(r));i[r]=e!==e?1:0}return f}function zt(t){return m.empty(Array.from(t.shape),"bool")}function E(t,o){if(t.dtype==="bool"){const s=D("bool"),l=u=>{const p=m.empty(Array.from(u.shape),s),y=u.data;for(let c=0;c<u.size;c++)p.data[c]=y[u.offset+c];return p};return E(l(t),typeof o=="number"?o:o.dtype==="bool"?l(o):o)}if(typeof o!="number"&&o.dtype==="bool"){const s=D("bool");return E(t,(u=>{const p=m.empty(Array.from(u.shape),s),y=u.data;for(let c=0;c<u.size;c++)p.data[c]=y[u.offset+c];return p})(o))}if(h(t.dtype,"copysign","copysign is only defined for real numbers."),typeof o!="number"&&h(o.dtype,"copysign","copysign is only defined for real numbers."),typeof o=="number"){const s=M(t,o);return s||R(t,o)}if(o.size===1&&!b(o.dtype)){const s=Number(o.iget(0)),l=M(t,s);return l||R(t,s)}if(w(t,o)){const s=H(t,o);return s||$(t,o)}const f=T(t.shape,o.shape),i=f.reduce((s,l)=>s*l,1),a=m.zeros(f,"float64"),r=a.data,e=C(t,f),n=C(o,f);for(let s=0;s<i;s++){const l=Number(e.iget(s)),u=Number(n.iget(s));r[s]=Math.sign(u)*Math.abs(l)}return a}function $(t,o){const f=D(v(t.dtype,o.dtype)),i=m.zeros(Array.from(t.shape),f),a=i.data,r=t.size,e=t.data,n=o.data,s=t.offset,l=o.offset,u=d(t.dtype),p=d(o.dtype);for(let y=0;y<r;y++){const c=u?Number(e[s+y]):e[s+y],A=p?Number(n[l+y]):n[l+y],g=Object.is(A,-0)||A<0?-1:1;a[y]=g*Math.abs(c)}return i}function R(t,o){const f=D(t.dtype),i=m.zeros(Array.from(t.shape),f),a=i.data,r=t.size,e=Object.is(o,-0)||o<0?-1:1;if(!t.isCContiguous){for(let l=0;l<r;l++)a[l]=e*Math.abs(Number(t.iget(l)));return i}const n=t.data,s=t.offset;if(d(t.dtype)){const l=n;for(let u=0;u<r;u++)a[u]=e*Math.abs(Number(l[s+u]))}else if(s===0)for(let l=0;l<r;l++)a[l]=e*Math.abs(n[l]);else for(let l=0;l<r;l++)a[l]=e*Math.abs(n[s+l]);return i}function wt(t){h(t.dtype,"signbit","signbit is only defined for real numbers.");const o=K(t);if(o)return o;const f=m.empty(Array.from(t.shape),"bool"),i=f.data,a=t.size;if(t.isCContiguous){const r=t.data,e=t.offset;if(d(t.dtype)){const n=r;for(let s=0;s<a;s++)i[s]=n[e+s]<0n?1:0}else for(let n=0;n<a;n++){const s=r[e+n];i[n]=s<0||Object.is(s,-0)?1:0}}else if(d(t.dtype))for(let r=0;r<a;r++)i[r]=t.iget(r)<0n?1:0;else for(let r=0;r<a;r++){const e=Number(t.iget(r));i[r]=e<0||Object.is(e,-0)?1:0}return f}function Ct(t,o){if(h(t.dtype,"nextafter","nextafter is only defined for real floating-point numbers."),typeof o!="number"&&h(o.dtype,"nextafter","nextafter is only defined for real floating-point numbers."),t.dtype==="bool"&&I){const l=t.size,u=D("bool"),p=m.zeros(Array.from(t.shape),u),y=p.data;for(let c=0;c<l;c++){const A=Number(t.iget(c)),g=typeof o=="number"?o:Number(o.iget(c));y[c]=rt(A,g)}return p}if(typeof o=="number")return et(t,o);if(w(t,o))return tt(t,o);const f=T(t.shape,o.shape),i=f.reduce((l,u)=>l*u,1),a=D(v(t.dtype,o.dtype)),r=m.zeros(f,a),e=r.data,n=C(t,f),s=C(o,f);for(let l=0;l<i;l++){const u=Number(n.iget(l)),p=Number(s.iget(l));e[l]=z(u,p)}return r}function tt(t,o){const f=D(v(t.dtype,o.dtype)),i=m.zeros(Array.from(t.shape),f),a=i.data,r=t.size,e=t.data,n=o.data,s=t.offset,l=o.offset,u=d(t.dtype),p=d(o.dtype);for(let y=0;y<r;y++){const c=u?Number(e[s+y]):e[s+y],A=p?Number(n[l+y]):n[l+y];a[y]=z(c,A)}return i}function et(t,o){const f=D(t.dtype),i=m.zeros(Array.from(t.shape),f),a=i.data,r=t.size;if(t.isCContiguous){const e=t.data,n=t.offset;if(d(t.dtype)){const s=e;for(let l=0;l<r;l++)a[l]=z(Number(s[n+l]),o)}else for(let s=0;s<r;s++)a[s]=z(e[n+s],o)}else for(let e=0;e<r;e++)a[e]=z(Number(t.iget(e)),o);return i}function z(t,o){if(Number.isNaN(t)||Number.isNaN(o))return NaN;if(t===o)return o;if(t===0)return o>0?Number.MIN_VALUE:-Number.MIN_VALUE;const f=new ArrayBuffer(8),i=new Float64Array(f),a=new BigInt64Array(f);i[0]=t;let r=a[0];return(t>0?o>t:o<t)?r=r+1n:r=r-1n,a[0]=r,i[0]}function It(t){h(t.dtype,"spacing","spacing is only defined for real numbers.");const o=new Set(["bool","int8","uint8"]),f=new Set(["int16","uint16"]);if(o.has(t.dtype)&&I){const n=t.size,s=D("bool"),l=m.zeros(Array.from(t.shape),s),u=l.data;for(let p=0;p<n;p++)u[p]=X(Number(t.iget(p)));return l}if(f.has(t.dtype)){const n=t.size,s=m.zeros(Array.from(t.shape),"float32"),l=s.data;for(let u=0;u<n;u++){const p=new Float32Array([Number(t.iget(u))]),y=new Float32Array(1),A=new DataView(p.buffer).getUint32(0,!0),g=new DataView(y.buffer);(A&2147483647)===0?(g.setUint32(0,1,!0),l[u]=y[0]):(g.setUint32(0,A+1,!0),l[u]=Math.abs(y[0]-p[0]))}return s}if(t.dtype==="float16"&&I){const n=t.size,s=m.zeros(Array.from(t.shape),"float16"),l=s.data;for(let u=0;u<n;u++)l[u]=X(Number(t.iget(u)));return s}const i=t.dtype==="float32"?"float32":"float64",a=m.zeros(Array.from(t.shape),i),r=a.data,e=t.size;if(t.isCContiguous){const n=t.data,s=t.offset;if(d(t.dtype)){const l=n;for(let u=0;u<e;u++)r[u]=U(Number(l[s+u]))}else for(let l=0;l<e;l++)r[l]=U(n[s+l])}else for(let n=0;n<e;n++)r[n]=U(Number(t.iget(n)));return a}function rt(t,o){const f=new Float16Array([t]),i=new DataView(f.buffer);let a=i.getUint16(0,!0);const r=f[0],e=new Float16Array([o])[0];return r===e?r:Number.isNaN(r)||Number.isNaN(e)?NaN:r===0?(i.setUint16(0,e>0?1:32769,!0),f[0]):(r<e?a=a&32768?a-1:a+1:a=a&32768?a+1:a-1,i.setUint16(0,a,!0),f[0])}function X(t){const o=new Float16Array(2);o[0]=t;const f=new DataView(o.buffer),i=f.getUint16(0,!0);return(i&32767)===0?(f.setUint16(2,1,!0),o[1]):(f.setUint16(2,i+1,!0),Math.abs(o[1]-o[0]))}function U(t){if(Number.isNaN(t))return NaN;if(!Number.isFinite(t))return NaN;if(Math.abs(t)===0)return Number.MIN_VALUE;const f=z(t,1/0);return Math.abs(f-t)}function C(t,o){const f=t.shape.length,i=o.length,a=new Array(i).fill(0);for(let r=0;r<f;r++){const e=i-f+r,n=t.shape[r],s=o[e];if(n===s)a[e]=t.strides[r];else if(n===1)a[e]=0;else throw new Error("Invalid broadcast")}return m.fromData(t.data,Array.from(o),t.dtype,a,t.offset)}function vt(t){const o=t.dtype,f=t.size,i=m.empty(Array.from(t.shape),"bool"),a=i.data;if(b(o))if(t.isCContiguous){const r=t.offset,e=t.data;for(let n=0;n<f;n++)a[n]=e[(r+n)*2+1]!==0?1:0}else for(let r=0;r<f;r++){const e=t.iget(r);a[r]=e.im!==0?1:0}return i}function Bt(t){return b(t.dtype)}function Ut(t){const o=t.dtype,f=t.size,i=m.empty(Array.from(t.shape),"bool"),a=i.data;if(b(o))if(t.isCContiguous){const r=t.offset,e=t.data;for(let n=0;n<f;n++)a[n]=e[(r+n)*2+1]===0?1:0}else for(let r=0;r<f;r++){const e=t.iget(r);a[r]=e.im===0?1:0}else a.fill(1);return i}function Tt(t){return!b(t.dtype)}function Vt(t){h(t.dtype,"isneginf","This operation is not supported for complex values because it would be ambiguous.");const o=m.empty(Array.from(t.shape),"bool"),f=o.data,i=t.size;if(!(d(t.dtype)||S(t.dtype)))if(t.isCContiguous){const a=t.data,r=t.offset;for(let e=0;e<i;e++){const n=a[r+e];f[e]=n===-1/0?1:0}}else for(let a=0;a<i;a++)f[a]=Number(t.iget(a))===-1/0?1:0;return o}function Ot(t){h(t.dtype,"isposinf","This operation is not supported for complex values because it would be ambiguous.");const o=m.empty(Array.from(t.shape),"bool"),f=o.data,i=t.size;if(!(d(t.dtype)||S(t.dtype)))if(t.isCContiguous){const a=t.data,r=t.offset;for(let e=0;e<i;e++){const n=a[r+e];f[e]=n===1/0?1:0}}else for(let a=0;a<i;a++)f[a]=Number(t.iget(a))===1/0?1:0;return o}function xt(t){return t.isFContiguous}function Mt(t,o=100){const f=t.dtype;if(b(f)){const i=t.size,r=o*(f==="complex64"?11920929e-14:2220446049250313e-31);if(t.isCContiguous){const e=t.data,n=t.offset;let s=!0;for(let l=0;l<i;l++){const u=e[(n+l)*2+1];if(Math.abs(u)>r){s=!1;break}}if(s){const l=f==="complex64"?"float32":"float64",u=m.zeros(Array.from(t.shape),l),p=u.data;for(let y=0;y<i;y++)p[y]=e[(n+y)*2];return u}}else{let e=!0;for(let n=0;n<i;n++){const s=t.iget(n);if(Math.abs(s.im)>r){e=!1;break}}if(e){const n=f==="complex64"?"float32":"float64",s=m.zeros(Array.from(t.shape),n),l=s.data;for(let u=0;u<i;u++){const p=t.iget(u);l[u]=p.re}return s}}return t.copy()}return t.copy()}function Lt(t){return typeof t=="number"||typeof t=="bigint"||typeof t=="boolean"||typeof t=="string"}function _t(t){return t==null?!1:typeof t[Symbol.iterator]=="function"}function kt(t,o){const i={b:["bool"],i:["int8","int16","int32","int64"],u:["uint8","uint16","uint32","uint64"],f:["float32","float64"]}[o];return i?i.includes(t):!1}function Et(t,o){const f=["float64","float32","int64","int32","int16","int8","uint64","uint32","uint16","uint8","bool"],i=f.indexOf(t),a=f.indexOf(o);return i<=a?t:o}export{E as copysign,vt as iscomplex,Bt as iscomplexobj,kt as isdtype,Dt as isfinite,xt as isfortran,ht as isinf,Ft as isnan,zt as isnat,Vt as isneginf,Ot as isposinf,Ut as isreal,Tt as isrealobj,Lt as isscalar,_t as iterable,At as logical_and,Nt as logical_not,gt as logical_or,St as logical_xor,Ct as nextafter,Et as promote_types,Mt as real_if_close,wt as signbit,It as spacing};
@@ -1 +1 @@
1
- import{ArrayStorage as y}from"../storage.js";import{svd as yr}from"../ops/linalg.js";import{isBigIntDType as dr}from"../dtype.js";import{initMT19937 as hr,mt19937Uint32 as $,mt19937Float64 as S,getMT19937State as gr,setMT19937State as pr,initPCG64FromSeed as Sr,pcg64Float64 as R,pcg64SaveState as er,pcg64RestoreState as wr,pcg64BoundedUint64 as V,standardNormalPCG as nr,standardExponentialPCG as Mr,legacyGauss as L,legacyGaussReset as ar,legacyStandardExponential as Z,fillUniformF64MT as z,fillUniformF64PCG as or,fillStandardNormalPCG as ur,fillStandardExponentialPCG as xr,fillLegacyGauss as O,fillLegacyStandardExponential as vr,fillRkInterval as Dr,wasmLegacyStandardGamma as ir,fillLegacyStandardGamma as sr,fillLegacyChisquare as Fr,fillPareto as _r,fillPower as Er,fillWeibull as Ir,fillLogistic as Br,fillGumbel as qr,fillLaplace as Ur,fillRayleigh as Gr,fillTriangular as Nr,fillStandardCauchy as Pr,fillLognormal as Tr,fillWald as Cr,fillStandardT as kr,fillBeta as Xr,fillF as Lr,fillNoncentralChisquare as jr,fillNoncentralF as Rr,fillGeometric as Yr,fillPoisson as Wr,fillBinomial as Hr,fillNegativeBinomial as Vr,fillHypergeometric as Zr,fillLogseries as Or,fillZipf as Jr,fillVonmises as Kr,fillRandintI64 as Qr,fillRandintU8 as $r,fillRandintU16 as zr,fillPermutation as rt,fillPermutationPCG as mr,fillBoundedUint64PCG as tt}from"../wasm/rng.js";class et{constructor(t){const n=t!==void 0?t:Math.floor(Math.random()*4294967296);Sr(n),this._state=er()}_withState(t){wr(this._state);const n=t();return this._state=er(),n}random(t){return this._withState(()=>{if(t===void 0)return R();const n=Array.isArray(t)?t:[t],e=n.reduce((s,o)=>s*o,1),u=or(e);return y.fromData(new Float64Array(u),n,"float64")})}integers(t,n,e){return this._withState(()=>{n===void 0&&(n=t,t=0);const u=n-t-1;if(e===void 0)return Number(V(t,u));const s=Array.isArray(e)?e:[e],o=s.reduce((i,m)=>i*m,1),a=tt(o,t,u);return y.fromData(new BigInt64Array(a),s,"int64")})}standard_normal(t){return this._withState(()=>{if(t===void 0)return nr();const n=Array.isArray(t)?t:[t],e=n.reduce((s,o)=>s*o,1),u=ur(e);return y.fromData(new Float64Array(u),n,"float64")})}normal(t=0,n=1,e){return this._withState(()=>{if(e===void 0)return nr()*n+t;const u=Array.isArray(e)?e:[e],s=u.reduce((i,m)=>i*m,1),o=ur(s),a=new Float64Array(s);for(let i=0;i<s;i++)a[i]=o[i]*n+t;return y.fromData(a,u,"float64")})}uniform(t=0,n=1,e){return this._withState(()=>{if(e===void 0)return R()*(n-t)+t;const u=Array.isArray(e)?e:[e],s=u.reduce((m,l)=>m*l,1),o=or(s),a=new Float64Array(s),i=n-t;for(let m=0;m<s;m++)a[m]=o[m]*i+t;return y.fromData(a,u,"float64")})}choice(t,n,e=!0,u){return this._withState(()=>cr(t,n,e,u,R,!0))}permutation(t){return this._withState(()=>K(t,R,!0))}shuffle(t){this._withState(()=>{br(t,R,!0)})}exponential(t=1,n){return this._withState(()=>{if(n===void 0)return Mr()*t;const e=Array.isArray(n)?n:[n],u=e.reduce((a,i)=>a*i,1),s=xr(u),o=new Float64Array(u);for(let a=0;a<u;a++)o[a]=s[a]*t;return y.fromData(o,e,"float64")})}poisson(t=1,n){return this._withState(()=>{if(n===void 0)return H(t,R);const e=Array.isArray(n)?n:[n],u=e.reduce((a,i)=>a*i,1),s=y.zeros(e,"int64"),o=s.data;for(let a=0;a<u;a++)o[a]=BigInt(H(t,R));return s})}binomial(t,n,e){return this._withState(()=>{if(e===void 0)return J(t,n,R);const u=Array.isArray(e)?e:[e],s=u.reduce((i,m)=>i*m,1),o=y.zeros(u,"int64"),a=o.data;for(let i=0;i<s;i++)a[i]=BigInt(J(t,n,R));return o})}}function At(r){return new et(r)}function yt(r){r==null&&(r=Math.floor(Date.now()^Math.random()*4294967296)),hr(r>>>0),ar()}function dt(){const{mt:r,mti:t}=gr();return{mt:Array.from(r),mti:t}}function ht(r){pr(new Uint32Array(r.mt),r.mti),ar()}function nt(r){if(r===0)return 0;let t=r;t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16;let n;do n=($()&t)>>>0;while(n>r);return n}function Y(r){const t=[.08333333333333333,-.002777777777777778,.0007936507936507937,-.0005952380952380952,.0008417508417508418,-.001917526917526918,.00641025641025641,-.02955065359477124,.1796443723688307,-1.3924322169059];if(r===1||r===2)return 0;let n;r<7?n=Math.floor(7-r):n=0;let e=r+n;const u=1/e*(1/e),s=1.8378770664093453;let o=t[9];for(let i=8;i>=0;i--)o*=u,o+=t[i];let a=o/e+.5*s+(e-.5)*Math.log(e)-e;if(r<7)for(let i=1;i<=n;i++)a-=Math.log(e-1),e-=1;return a}function W(r){return ir(r)}function j(r){return 2*W(r/2)}function at(r,t,n){const e=t+r-n;let u=Math.min(t,r),s=u,o=n;for(;s>0;){const i=S();if(s-=Math.floor(i+s/(e+o)),o--,o===0)break}const a=u-s;return r>t?n-a:a}function ot(r,t,n){const e=1.7155277699214135,u=.8989161620588988,s=Math.min(r,t),o=r+t,a=Math.max(r,t),i=Math.min(n,o-n),m=s/o,l=1-m,g=i*m+.5,d=Math.sqrt((o-i)*n*m*l/(o-1)+.5),c=e*d+u,f=Math.floor((i+1)*(s+1)/(o+2)),b=Y(f+1)+Y(s-f+1)+Y(i-f+1)+Y(a-i+f+1),A=Math.min(Math.min(i,s)+1,Math.floor(g+16*d));let h;for(;;){const D=S(),v=S(),p=g+c*(v-.5)/D;if(p<0||p>=A)continue;h=Math.floor(p);const M=b-(Y(h+1)+Y(s-h+1)+Y(i-h+1)+Y(a-i+h+1));if(D*(4-D)-3<=M)break;if(!(D*(D-M)>=1)&&2*Math.log(D)<=M)break}return r>t&&(h=i-h),i<n&&(h=r-h),h}function ut(r,t){const n=Math.exp(-r);let e=0,u=1;for(;;){const s=t();if(u*=s,u>n)e+=1;else return e}}function it(r,t){const n=Math.sqrt(r),e=Math.log(r),u=.931+2.53*n,s=-.059+.02483*u,o=1.1239+1.1328/(u-3.4),a=.9277-3.6224/(u-2);for(;;){const i=t()-.5,m=t(),l=.5-Math.abs(i),g=Math.floor((2*s/l+u)*i+r+.43);if(l>=.07&&m<=a)return g;if(!(g<0||l<.013&&m>l)&&Math.log(m)+Math.log(o)-Math.log(s/(l*l)+u)<=-r+g*e-Y(g+1))return g}}function H(r,t){return r>=10?it(r,t):r===0?0:ut(r,t)}function st(){return{has_binomial:!1,nsave:0,psave:0,r:0,q:0,fm:0,m:0,p1:0,xm:0,xl:0,xr:0,c:0,laml:0,lamr:0,p2:0,p3:0,p4:0}}function fr(r,t,n,e){let u,s,o,a,i,m,l,g,d,c,f,b,A,h,D,v,p,M,G,B,E,I,q,N,P,T,C,k,U,X,Q,x,w,F;!e.has_binomial||e.nsave!==r||e.psave!==t?(e.nsave=r,e.psave=t,e.has_binomial=!0,e.r=u=Math.min(t,1-t),e.q=s=1-u,e.fm=o=r*u+u,e.m=x=Math.floor(o),e.p1=a=Math.floor(2.195*Math.sqrt(r*u*s)-4.6*s)+.5,e.xm=i=x+.5,e.xl=m=i-a,e.xr=l=i+a,e.c=g=.134+20.5/(15.3+x),h=(o-m)/(o-m*u),e.laml=d=h*(1+h/2),h=(l-o)/(l*s),e.lamr=c=h*(1+h/2),e.p2=f=a*(1+2*g),e.p3=b=f+g/d,e.p4=A=b+g/c):(u=e.r,s=e.q,x=e.m,a=e.p1,i=e.xm,m=e.xl,l=e.xr,g=e.c,d=e.laml,c=e.lamr,f=e.p2,b=e.p3,A=e.p4);r:for(;;){if(I=r*u*s,D=n()*A,v=n(),D<=a)w=Math.floor(i-a*v+D);else if(D<=f){if(Q=m+(D-a)/g,v=v*g+1-Math.abs(x-Q+.5)/a,v>1)continue r;if(w=Math.floor(Q),F=Math.abs(w-x),F>20&&F<I/2-1){if(G=F/I*((F*(F/3+.625)+.16666666666666666)/I+.5),B=-F*F/(2*I),E=Math.log(v),!(E<B-G)){if(E>B+G)continue r;if(q=w+1,P=x+1,C=r+1-x,U=r-w+1,N=q*q,T=P*P,k=C*C,X=U*U,E>i*Math.log(P/q)+(r-x+.5)*Math.log(C/U)+(w-x)*Math.log(U*u/(q*s))+(13680-(462-(132-(99-140/T)/T)/T)/T)/P/166320+(13680-(462-(132-(99-140/k)/k)/k)/k)/C/166320+(13680-(462-(132-(99-140/N)/N)/N)/N)/q/166320+(13680-(462-(132-(99-140/X)/X)/X)/X)/U/166320)continue r}}else{if(p=u/s,h=p*(r+1),M=1,x<w)for(let _=x+1;_<=w;_++)M*=h/_-p;else if(x>w)for(let _=w+1;_<=x;_++)M/=h/_-p;if(v>M)continue r}}else if(D<=b){if(w=Math.floor(m+Math.log(v)/d),w<0||v===0)continue r;if(v=v*(D-f)*d,F=Math.abs(w-x),F>20&&F<I/2-1){if(G=F/I*((F*(F/3+.625)+.16666666666666666)/I+.5),B=-F*F/(2*I),E=Math.log(v),!(E<B-G)){if(E>B+G)continue r;if(q=w+1,P=x+1,C=r+1-x,U=r-w+1,N=q*q,T=P*P,k=C*C,X=U*U,E>i*Math.log(P/q)+(r-x+.5)*Math.log(C/U)+(w-x)*Math.log(U*u/(q*s))+(13680-(462-(132-(99-140/T)/T)/T)/T)/P/166320+(13680-(462-(132-(99-140/k)/k)/k)/k)/C/166320+(13680-(462-(132-(99-140/N)/N)/N)/N)/q/166320+(13680-(462-(132-(99-140/X)/X)/X)/X)/U/166320)continue r}}else{if(p=u/s,h=p*(r+1),M=1,x<w)for(let _=x+1;_<=w;_++)M*=h/_-p;else if(x>w)for(let _=w+1;_<=x;_++)M/=h/_-p;if(v>M)continue r}}else{if(w=Math.floor(l-Math.log(v)/c),w>r||v===0)continue r;if(v=v*(D-b)*c,F=Math.abs(w-x),F>20&&F<I/2-1){if(G=F/I*((F*(F/3+.625)+.16666666666666666)/I+.5),B=-F*F/(2*I),E=Math.log(v),!(E<B-G)){if(E>B+G)continue r;if(q=w+1,P=x+1,C=r+1-x,U=r-w+1,N=q*q,T=P*P,k=C*C,X=U*U,E>i*Math.log(P/q)+(r-x+.5)*Math.log(C/U)+(w-x)*Math.log(U*u/(q*s))+(13680-(462-(132-(99-140/T)/T)/T)/T)/P/166320+(13680-(462-(132-(99-140/k)/k)/k)/k)/C/166320+(13680-(462-(132-(99-140/N)/N)/N)/N)/q/166320+(13680-(462-(132-(99-140/X)/X)/X)/X)/U/166320)continue r}}else{if(p=u/s,h=p*(r+1),M=1,x<w)for(let _=x+1;_<=w;_++)M*=h/_-p;else if(x>w)for(let _=w+1;_<=x;_++)M/=h/_-p;if(v>M)continue r}}return t>.5&&(w=r-w),w}}function lr(r,t,n,e){let u,s,o,a,i,m,l;for(!e.has_binomial||e.nsave!==r||e.psave!==t?(e.nsave=r,e.psave=t,e.has_binomial=!0,e.q=u=1-t,e.r=s=Math.exp(r*Math.log(u)),e.c=o=r*t,e.m=l=Math.min(r,Math.floor(o+10*Math.sqrt(o*u+1)))):(u=e.q,s=e.r,l=e.m),m=0,a=s,i=n();i>a;)m++,m>l?(m=0,a=s,i=n()):(i-=a,a=(r-m+1)*t*a/(m*u));return m}function J(r,t,n){if(r===0||t===0)return 0;const e=st();if(t<=.5)return t*r<=30?lr(r,t,n,e):fr(r,t,n,e);{const u=1-t;return u*r<=30?r-lr(r,u,n,e):r-fr(r,u,n,e)}}function rr(r){if(r===void 0)return S();const t=Array.isArray(r)?r:[r],n=t.reduce((u,s)=>u*s,1),e=z(n);return y.fromData(new Float64Array(e),t,"float64")}function gt(...r){if(r.length===0)return S();const t=r.reduce((e,u)=>e*u,1),n=z(t);return y.fromData(new Float64Array(n),r,"float64")}function pt(...r){if(r.length===0)return L();const t=r.reduce((e,u)=>e*u,1),n=O(t);return y.fromData(new Float64Array(n),r,"float64")}function tr(r,t,n,e="int64"){t==null&&(t=r,r=0);const s=t-r-1;if(n===void 0)return nt(s)+r;const o=Array.isArray(n)?n:[n],a=o.reduce((i,m)=>i*m,1);if(e==="int8"||e==="uint8"){const i=$r(a,s,r),m=y.zeros(o,e);return m.data.set(e==="int8"?new Int8Array(i.buffer):i),m}else if(e==="int16"||e==="uint16"){const i=zr(a,s,r),m=y.zeros(o,e);return m.data.set(e==="int16"?new Int16Array(i.buffer):i),m}else if(dr(e)){const i=Qr(a,s,r);return y.fromData(new BigInt64Array(i),o,e)}else{const i=Dr(a,s),m=y.zeros(o,e),l=m.data;for(let g=0;g<a;g++)l[g]=i[g]+r;return m}}function St(r=0,t=1,n){if(n===void 0)return S()*(t-r)+r;const e=Array.isArray(n)?n:[n],u=e.reduce((i,m)=>i*m,1),s=z(u),o=new Float64Array(u),a=t-r;for(let i=0;i<u;i++)o[i]=s[i]*a+r;return y.fromData(o,e,"float64")}function wt(r=0,t=1,n){if(n===void 0)return L()*t+r;const e=Array.isArray(n)?n:[n],u=e.reduce((a,i)=>a*i,1),s=O(u),o=new Float64Array(u);for(let a=0;a<u;a++)o[a]=s[a]*t+r;return y.fromData(o,e,"float64")}function Mt(r){if(r===void 0)return L();const t=Array.isArray(r)?r:[r],n=t.reduce((u,s)=>u*s,1),e=O(n);return y.fromData(new Float64Array(e),t,"float64")}function mt(r=1,t){if(t===void 0)return Z()*r;const n=Array.isArray(t)?t:[t],e=n.reduce((o,a)=>o*a,1),u=vr(e),s=new Float64Array(e);for(let o=0;o<e;o++)s[o]=u[o]*r;return y.fromData(s,n,"float64")}function xt(r=1,t){if(t===void 0)return H(r,S);const n=Array.isArray(t)?t:[t],e=n.reduce((s,o)=>s*o,1),u=Wr(e,r);return y.fromData(new BigInt64Array(u),n,"int64")}function vt(r,t,n){if(n===void 0)return J(r,t,S);const e=Array.isArray(n)?n:[n],u=e.reduce((o,a)=>o*a,1),s=Hr(u,r,t);return y.fromData(new BigInt64Array(s),e,"int64")}function cr(r,t,n=!0,e,u=S,s=!1){const o=typeof r=="number"?r:r.size;if(typeof r=="number"&&n&&e===void 0){if(o===0)throw new Error("cannot take a sample from an empty sequence");if(s){if(t===void 0)return Number(V(0,o-1));const c=Array.isArray(t)?t:[t],f=c.reduce((h,D)=>h*D,1),b=y.zeros(c,"int64"),A=b.data;for(let h=0;h<f;h++)A[h]=V(0,o-1);return b}return t===void 0?tr(0,o):tr(0,o,Array.isArray(t)?t:[t])}let a;if(typeof r=="number")a=Array.from({length:r},(c,f)=>f);else{a=[];for(let c=0;c<o;c++)a.push(Number(r.iget(c)))}if(o===0)throw new Error("cannot take a sample from an empty sequence");let i;if(e!==void 0){if(Array.isArray(e))i=e;else{const f=e.size;i=[];for(let b=0;b<f;b++)i.push(Number(e.iget(b)))}if(i.length!==o)throw new Error("p and a must have the same size");const c=i.reduce((f,b)=>f+b,0);Math.abs(c-1)>1e-10&&(i=i.map(f=>f/c))}if(t===void 0){if(i){const c=u();let f=0;for(let b=0;b<o;b++)if(f+=i[b],c<f)return a[b];return a[o-1]}return a[Math.floor(u()*o)]}const m=Array.isArray(t)?t:[t],l=m.reduce((c,f)=>c*f,1);if(!n&&l>o)throw new Error("cannot take a larger sample than population when replace=false");const g=y.zeros(m,"float64"),d=g.data;if(n)if(i){const c=new Array(o);c[0]=i[0];for(let f=1;f<o;f++)c[f]=c[f-1]+i[f];for(let f=0;f<l;f++){const b=u();let A=0;for(;A<o-1&&b>=c[A];)A++;d[f]=a[A]}}else for(let c=0;c<l;c++)d[c]=a[Math.floor(u()*o)];else if(i){const c=[...a],f=[...i];for(let b=0;b<l;b++){const A=f.reduce((p,M)=>p+M,0),h=u()*A;let D=0,v=0;for(let p=0;p<c.length;p++)if(D+=f[p],h<D){v=p;break}v===0&&h>=D&&(v=c.length-1),d[b]=c[v],c.splice(v,1),f.splice(v,1)}}else if(s)if(o>1e4&&l>o/50){const f=mr(o);for(let b=0;b<l;b++){const A=Number(f[o-l+b]);typeof r=="number"?d[b]=A:d[b]=Number(r.iget(A))}}else{const f=new Array(l),b=new Set;for(let A=o-l;A<o;A++){const h=Number(V(0,A));b.has(h)?(b.add(A),f[A-(o-l)]=A):(b.add(h),f[A-(o-l)]=h)}for(let A=l-1;A>0;A--){const h=Number(V(0,A)),D=f[A];f[A]=f[h],f[h]=D}for(let A=0;A<l;A++)typeof r=="number"?d[A]=f[A]:d[A]=Number(r.iget(f[A]))}else{const f=K(o,u,!1).data;for(let b=0;b<l;b++){const A=Number((f instanceof BigInt64Array,f[b]));typeof r=="number"?d[b]=A:d[b]=Number(r.iget(A))}}return g}function Dt(r,t,n=!0,e){return cr(r,t,n,e,S)}function K(r,t=S,n=!1){if(typeof r=="number"){if(n){const s=mr(r);return y.fromData(new BigInt64Array(s),[r],"int64")}if(t===S){const s=rt(r);return y.fromData(new Float64Array(s),[r],"float64")}}let e;if(typeof r=="number"){const s=new Float64Array(r);for(let o=0;o<r;o++)s[o]=o;e=y.fromData(s,[r],"float64")}else e=r.copy();const u=e.size;for(let s=u-1;s>0;s--){const o=Math.floor(t()*(s+1)),a=e.iget(s);e.iset(s,e.iget(o)),e.iset(o,a)}return e}function Ft(r){return K(r,S)}function br(r,t=S,n=!1){const e=r.size;if(e<=1)return;const s=K(e,t,n).data,o=new Array(e);for(let a=0;a<e;a++)o[a]=r.iget(a);for(let a=0;a<e;a++){const i=Number((s instanceof BigInt64Array,s[a]));r.iset(a,o[i])}}function _t(r){br(r,S)}function Et(r){return rr(r)}function It(r){return rr(r)}function Bt(r){return rr(r)}function qt(r,t,n){return t===void 0&&(t=r,r=1),tr(r,t+1,n)}function Ut(r){const t=new Uint8Array(r);let n=0;for(;n+3<r;n+=4){const e=$();t[n]=e&255,t[n+1]=e>>>8&255,t[n+2]=e>>>16&255,t[n+3]=e>>>24&255}if(n<r){let e=$();for(;n<r;n++,e>>>=8)t[n]=e&255}return t}let Ar={name:"MT19937",state:{}};function Gt(){return Ar}function Nt(r){Ar=r}function Pt(r){return mt(1,r)}function Tt(r,t){if(r<=0)throw new Error("shape must be positive");if(t===void 0)return W(r);const n=Array.isArray(t)?t:[t],e=n.reduce((s,o)=>s*o,1),u=sr(e,r);return y.fromData(new Float64Array(u),n,"float64")}function Ct(r){if(r===void 0)return L()/L();const t=Array.isArray(r)?r:[r],n=t.reduce((u,s)=>u*s,1),e=Pr(n);return y.fromData(new Float64Array(e),t,"float64")}function kt(r,t){if(r<=0)throw new Error("df must be positive");const n=()=>{const o=L(),a=W(r/2);return Math.sqrt(r/2)*o/Math.sqrt(a)};if(t===void 0)return n();const e=Array.isArray(t)?t:[t],u=e.reduce((o,a)=>o*a,1),s=kr(u,r);return y.fromData(new Float64Array(s),e,"float64")}function Xt(r,t=1,n){if(r<=0)throw new Error("shape must be positive");if(t<=0)throw new Error("scale must be positive");if(n===void 0)return t*W(r);const e=Array.isArray(n)?n:[n],u=e.reduce((a,i)=>a*i,1),s=sr(u,r),o=new Float64Array(u);for(let a=0;a<u;a++)o[a]=s[a]*t;return y.fromData(o,e,"float64")}function Lt(r,t,n){if(r<=0||t<=0)throw new Error("a and b must be positive");const e=()=>{if(r<=1&&t<=1)for(;;){const a=S(),i=S(),m=Math.pow(a,1/r),l=Math.pow(i,1/t);if(m+l<=1){if(m+l>0)return m/(m+l);{const g=Math.log(a)/r,d=Math.log(i)/t,c=g>d?g:d,f=g-c,b=d-c;return Math.exp(f-Math.log(Math.exp(f)+Math.exp(b)))}}}else{const a=W(r),i=W(t);return a/(a+i)}};if(n===void 0)return e();const u=Array.isArray(n)?n:[n],s=u.reduce((a,i)=>a*i,1),o=Xr(s,r,t);return y.fromData(new Float64Array(o),u,"float64")}function jt(r=0,t=1,n){if(t<=0)throw new Error("scale must be positive");const e=()=>{for(;;){const a=S();if(a>=.5)return r-t*Math.log(2-a-a);if(a>0)return r+t*Math.log(a+a)}};if(n===void 0)return e();const u=Array.isArray(n)?n:[n],s=u.reduce((a,i)=>a*i,1),o=Ur(s,r,t);return y.fromData(new Float64Array(o),u,"float64")}function Rt(r=0,t=1,n){if(t<=0)throw new Error("scale must be positive");const e=()=>{for(;;){const a=S();if(a>0)return r+t*Math.log(a/(1-a))}};if(n===void 0)return e();const u=Array.isArray(n)?n:[n],s=u.reduce((a,i)=>a*i,1),o=Br(s,r,t);return y.fromData(new Float64Array(o),u,"float64")}function Yt(r=0,t=1,n){if(t<=0)throw new Error("sigma must be positive");if(n===void 0)return Math.exp(L()*t+r);const e=Array.isArray(n)?n:[n],u=e.reduce((o,a)=>o*a,1),s=Tr(u,r,t);return y.fromData(new Float64Array(s),e,"float64")}function Wt(r=0,t=1,n){if(t<=0)throw new Error("scale must be positive");const e=()=>{for(;;){const a=1-S();if(a<1)return r-t*Math.log(-Math.log(a))}};if(n===void 0)return e();const u=Array.isArray(n)?n:[n],s=u.reduce((a,i)=>a*i,1),o=qr(s,r,t);return y.fromData(new Float64Array(o),u,"float64")}function Ht(r,t){if(r<=0)throw new Error("a must be positive");const n=()=>Math.exp(Z()/r)-1;if(t===void 0)return n();const e=Array.isArray(t)?t:[t],u=e.reduce((o,a)=>o*a,1),s=_r(u,r);return y.fromData(new Float64Array(s),e,"float64")}function Vt(r,t){if(r<=0)throw new Error("a must be positive");const n=()=>Math.pow(1-Math.exp(-Z()),1/r);if(t===void 0)return n();const e=Array.isArray(t)?t:[t],u=e.reduce((o,a)=>o*a,1),s=Er(u,r);return y.fromData(new Float64Array(s),e,"float64")}function Zt(r=1,t){if(r<=0)throw new Error("scale must be positive");if(t===void 0)return r*Math.sqrt(2*Z());const n=Array.isArray(t)?t:[t],e=n.reduce((s,o)=>s*o,1),u=Gr(e,r);return y.fromData(new Float64Array(u),n,"float64")}function Ot(r,t,n,e){if(r>t||t>n||r===n)throw new Error("must have left <= mode <= right and left < right");const u=n-r,s=t-r,o=s/u,a=s*u,i=(n-t)*u,m=()=>{const c=S();return c<=o?r+Math.sqrt(c*a):n-Math.sqrt((1-c)*i)};if(e===void 0)return m();const l=Array.isArray(e)?e:[e],g=l.reduce((c,f)=>c*f,1),d=Nr(g,r,t,n);return y.fromData(new Float64Array(d),l,"float64")}function Jt(r,t,n){if(r<=0)throw new Error("mean must be positive");if(t<=0)throw new Error("scale must be positive");const e=()=>{const a=r/(2*t);let i=L();i=r*i*i;const m=r+a*(i-Math.sqrt(4*t*i+i*i));return S()<=r/(r+m)?m:r*r/m};if(n===void 0)return e();const u=Array.isArray(n)?n:[n],s=u.reduce((a,i)=>a*i,1),o=Cr(s,r,t);return y.fromData(new Float64Array(o),u,"float64")}function Kt(r,t){if(r<=0)throw new Error("a must be positive");const n=()=>r===0?0:Math.pow(Z(),1/r);if(t===void 0)return n();const e=Array.isArray(t)?t:[t],u=e.reduce((o,a)=>o*a,1),s=Ir(u,r);return y.fromData(new Float64Array(s),e,"float64")}function Qt(r,t){if(r<=0)throw new Error("df must be positive");if(t===void 0)return j(r);const n=Array.isArray(t)?t:[t],e=n.reduce((s,o)=>s*o,1),u=Fr(e,r);return y.fromData(new Float64Array(u),n,"float64")}function $t(r,t,n){if(r<=0)throw new Error("df must be positive");if(t<0)throw new Error("nonc must be non-negative");const e=()=>{if(t===0)return j(r);if(1<r){const a=j(r-1),i=L()+Math.sqrt(t);return a+i*i}else{const a=H(t/2,S);return j(r+2*a)}};if(n===void 0)return e();const u=Array.isArray(n)?n:[n],s=u.reduce((a,i)=>a*i,1),o=jr(s,r,t);return y.fromData(new Float64Array(o),u,"float64")}function zt(r,t,n){if(r<=0)throw new Error("dfnum must be positive");if(t<=0)throw new Error("dfden must be positive");const e=()=>{const a=j(r)*t,i=j(t)*r;return a/i};if(n===void 0)return e();const u=Array.isArray(n)?n:[n],s=u.reduce((a,i)=>a*i,1),o=Lr(s,r,t);return y.fromData(new Float64Array(o),u,"float64")}function re(r,t,n,e){if(r<=0)throw new Error("dfnum must be positive");if(t<=0)throw new Error("dfden must be positive");if(n<0)throw new Error("nonc must be non-negative");const u=()=>{if(n===0)return j(r);if(1<r){const m=j(r-1),l=L()+Math.sqrt(n);return m+l*l}else{const m=H(n/2,S);return j(r+2*m)}},s=()=>u()*t/(j(t)*r);if(e===void 0)return s();const o=Array.isArray(e)?e:[e],a=o.reduce((m,l)=>m*l,1),i=Rr(a,r,t,n);return y.fromData(new Float64Array(i),o,"float64")}function te(r,t){if(r<=0||r>1)throw new Error("p must be in (0, 1]");const n=()=>{if(r>=1/3){let o=1,a=r,i=r;const m=1-r,l=S();for(;l>a;)i*=m,a+=i,o++;return o}else return Math.ceil(Math.log1p(-S())/Math.log(1-r))};if(t===void 0)return n();const e=Array.isArray(t)?t:[t],u=e.reduce((o,a)=>o*a,1),s=Yr(u,r);return y.fromData(new BigInt64Array(s),e,"int64")}function ee(r,t,n,e){if(r<0)throw new Error("ngood must be non-negative");if(t<0)throw new Error("nbad must be non-negative");if(n<0)throw new Error("nsample must be non-negative");if(n>r+t)throw new Error("nsample must be <= ngood + nbad");const u=()=>n>10?ot(r,t,n):n>0?at(r,t,n):0;if(e===void 0)return u();const s=Array.isArray(e)?e:[e],o=s.reduce((i,m)=>i*m,1),a=Zr(o,r,t,n);return y.fromData(new BigInt64Array(a),s,"int64")}function ne(r,t){if(r<=0||r>=1)throw new Error("p must be in (0, 1)");const n=Math.log(1-r),e=()=>{for(;;){const a=S();if(a>=r)return 1;const i=S(),m=1-Math.exp(n*i);if(a<=m*m){const l=Math.floor(1+Math.log(a)/Math.log(m));if(l<1||a===0)continue;return l}return a>=m?1:2}};if(t===void 0)return e();const u=Array.isArray(t)?t:[t],s=u.reduce((a,i)=>a*i,1),o=Or(s,r);return y.fromData(new BigInt64Array(o),u,"int64")}function ae(r,t,n){if(r<=0)throw new Error("n must be positive");if(t<=0||t>1)throw new Error("p must be in (0, 1]");const e=()=>{if(t===1)return 0;const a=W(r)*((1-t)/t);return H(a,S)};if(n===void 0)return e();const u=Array.isArray(n)?n:[n],s=u.reduce((a,i)=>a*i,1),o=Vr(s,r,t);return y.fromData(new BigInt64Array(o),u,"int64")}function oe(r,t){if(r<=1)throw new Error("a must be > 1");const n=r-1,e=Math.pow(2,n),u=9007199254740991,s=()=>{for(;;){const m=1-S(),l=S(),g=Math.floor(Math.pow(m,-1/n));if(g>u||g<1)continue;const d=Math.pow(1+1/g,n);if(l*g*(d-1)/(e-1)<=d/e)return g}};if(t===void 0)return s();const o=Array.isArray(t)?t:[t],a=o.reduce((m,l)=>m*l,1),i=Jr(a,r);return y.fromData(new BigInt64Array(i),o,"int64")}function ue(r,t,n){const e=Array.isArray(t)?t:Array.from({length:t.size},(c,f)=>Number(t.iget(f))),u=e.length;if(u===0)throw new Error("pvals must have at least one element");const s=e.reduce((c,f)=>c+f,0),o=e.map(c=>c/s),a=()=>{const c=new Array(u).fill(0);let f=r,b=1;for(let A=0;A<u-1;A++){const h=J(f,o[A]/b,S);if(c[A]=h,f-=h,f<=0)break;b-=o[A]}return f>0&&(c[u-1]=f),c};if(n===void 0){const c=a(),f=y.zeros([u],"int64"),b=f.data;for(let A=0;A<u;A++)b[A]=BigInt(c[A]);return f}const i=Array.isArray(n)?n:[n],m=i.reduce((c,f)=>c*f,1),l=[...i,u],g=y.zeros(l,"int64"),d=g.data;for(let c=0;c<m;c++){const f=a();for(let b=0;b<u;b++)d[c*u+b]=BigInt(f[b])}return g}function ie(r,t,n,e="warn",u=1e-8){const s=Array.isArray(r)?r:Array.from({length:r.size},(p,M)=>Number(r.iget(M))),o=s.length;let a;if(Array.isArray(t))a=t;else{a=[];for(let p=0;p<o;p++){a.push([]);for(let M=0;M<o;M++)a[p].push(Number(t.iget(p*o+M)))}}const i=y.fromData(new Float64Array(a.flat()),[o,o],"float64"),{s:m,vt:l}=yr(i,!0,!0),g=l.data,d=m.data;for(let p=0;p<o;p++)if(d[p]<-u){if(e==="raise")throw new Error("covariance matrix is not positive semi-definite");e==="warn"&&console.warn("covariance matrix is not positive semi-definite")}const c=g,f=new Float64Array(o);for(let p=0;p<o;p++)f[p]=Math.sqrt(Math.max(0,d[p]));if(n===void 0){const p=O(o),M=y.zeros([o],"float64"),G=M.data;for(let B=0;B<o;B++){let E=s[B];for(let I=0;I<o;I++)E+=p[I]*f[I]*c[I*o+B];G[B]=E}return M}const b=Array.isArray(n)?n:[n],A=b.reduce((p,M)=>p*M,1),h=[...b,o],D=O(A*o),v=new Float64Array(A*o);for(let p=0;p<A;p++){const M=p*o;for(let G=0;G<o;G++){let B=s[G];for(let E=0;E<o;E++)B+=D[M+E]*f[E]*c[E*o+G];v[M+G]=B}}return y.fromData(v,h,"float64")}function se(r,t){const n=Array.isArray(r)?r:Array.from({length:r.size},(m,l)=>Number(r.iget(l))),e=n.length;if(e<2)throw new Error("alpha must have at least 2 elements");for(const m of n)if(m<=0)throw new Error("all alpha values must be positive");const u=(m,l)=>{let g=0;for(let d=0;d<e;d++){const c=ir(n[d]);m[l+d]=c,g+=c}for(let d=0;d<e;d++)m[l+d]=m[l+d]/g};if(t===void 0){const m=new Float64Array(e);return u(m,0),y.fromData(m,[e],"float64")}const s=Array.isArray(t)?t:[t],o=s.reduce((m,l)=>m*l,1),a=[...s,e],i=new Float64Array(o*e);for(let m=0;m<o;m++)u(i,m*e);return y.fromData(i,a,"float64")}function me(r,t,n){if(t<0)throw new Error("kappa must be non-negative");const e=()=>{if(t<1e-8)return Math.PI*(2*S()-1);let a;if(t<1e-5)a=1/t+t;else{const c=1+Math.sqrt(1+4*t*t),f=(c-Math.sqrt(2*c))/(2*t);a=(1+f*f)/(2*f)}let i;for(;;){const c=S(),f=Math.cos(Math.PI*c);i=(1+a*f)/(a+f);const b=t*(a-i),A=S();if(b*(2-b)-A>=0||Math.log(b/A)+1-b>=0)break}const m=S();let l=Math.acos(i);m<.5&&(l=-l),l+=r;const g=l<0;let d=Math.abs(l);return d=(d+Math.PI)%(2*Math.PI)-Math.PI,g&&(d*=-1),d};if(n===void 0)return e();const u=Array.isArray(n)?n:[n],s=u.reduce((a,i)=>a*i,1),o=Kr(s,r,t);return y.fromData(new Float64Array(o),u,"float64")}export{et as Generator,Lt as beta,vt as binomial,Ut as bytes,Qt as chisquare,Dt as choice,At as default_rng,se as dirichlet,mt as exponential,zt as f,Xt as gamma,te as geometric,Gt as get_bit_generator,dt as get_state,Wt as gumbel,ee as hypergeometric,jt as laplace,Rt as logistic,Yt as lognormal,ne as logseries,ue as multinomial,ie as multivariate_normal,ae as negative_binomial,$t as noncentral_chisquare,re as noncentral_f,wt as normal,Ht as pareto,Ft as permutation,xt as poisson,Vt as power,gt as rand,tr as randint,pt as randn,rr as random,qt as random_integers,Et as random_sample,It as ranf,Zt as rayleigh,Bt as sample,yt as seed,Nt as set_bit_generator,ht as set_state,_t as shuffle,Ct as standard_cauchy,Pt as standard_exponential,Tt as standard_gamma,Mt as standard_normal,kt as standard_t,Ot as triangular,St as uniform,me as vonmises,Jt as wald,Kt as weibull,oe as zipf};
1
+ import{ArrayStorage as d}from"../storage.js";import{svd as pr}from"../ops/linalg.js";import{isBigIntDType as gr}from"../dtype.js";import{initMT19937 as wr,mt19937Uint32 as z,mt19937Float64 as w,getMT19937State as Sr,setMT19937State as Mr,initPCG64FromSeed as Fr,pcg64Float64 as j,pcg64SaveState as nr,pcg64RestoreState as xr,pcg64BoundedUint64 as Z,standardNormalPCG as ar,standardExponentialPCG as Br,legacyGauss as R,legacyGaussReset as or,legacyStandardExponential as O,fillUniformF64MT as rr,fillUniformF64PCG as ur,fillStandardNormalPCG as sr,fillStandardExponentialPCG as vr,fillLegacyGauss as J,fillLegacyStandardExponential as Pr,fillRkInterval as _r,wasmLegacyStandardGamma as ir,fillLegacyStandardGamma as mr,fillLegacyChisquare as Er,fillPareto as kr,fillPower as Ir,fillWeibull as Wr,fillLogistic as qr,fillGumbel as Ur,fillLaplace as Gr,fillRayleigh as Nr,fillTriangular as Cr,fillStandardCauchy as Dr,fillLognormal as Tr,fillWald as Lr,fillStandardT as Rr,fillBeta as Xr,fillF as jr,fillNoncentralChisquare as Yr,fillNoncentralF as Hr,fillGeometric as Vr,fillPoisson as Zr,fillBinomial as Or,fillNegativeBinomial as Jr,fillHypergeometric as Kr,fillLogseries as Qr,fillZipf as $r,fillVonmises as zr,fillRandintI64 as rt,fillRandintU8 as tt,fillRandintU16 as et,fillPermutation as nt,fillPermutationPCG as lr,fillBoundedUint64PCG as at}from"../wasm/rng.js";import{directFill as S,rawFillUniformF64PCG as ot,rawFillStandardNormalPCG as ut,rawFillLegacyGauss as cr,rawFillStandardCauchy as st,rawFillPermutation as it,rawFillPermutationPCG as mt,rawFillLegacyStandardGamma as lt,rawFillLegacyChisquare as ct,rawFillPareto as ft,rawFillPower as bt,rawFillWeibull as yt,rawFillLogistic as dt,rawFillGumbel as At,rawFillLaplace as ht,rawFillRayleigh as pt,rawFillTriangular as gt,rawFillLognormal as wt,rawFillWald as St,rawFillStandardT as Mt,rawFillBeta as Ft,rawFillF as xt,rawFillNoncentralChisquare as Bt,rawFillNoncentralF as vt,rawFillVonmises as Pt,rawFillGeometric as _t,rawFillPoisson as Et,rawFillBinomial as kt,rawFillNegativeBinomial as It,rawFillHypergeometric as Wt,rawFillLogseries as qt,rawFillZipf as Ut,rawFillRandintI64 as Gt,rawFillUniformF64MT as fr,rawFillBoundedUint64PCG as Nt}from"../wasm/rng.js";class Ct{constructor(t){const n=t!==void 0?t:Math.floor(Math.random()*4294967296);Fr(n),this._state=nr()}_withState(t){xr(this._state);const n=t();return this._state=nr(),n}random(t){return this._withState(()=>{if(t===void 0)return j();const n=Array.isArray(t)?t:[t],e=n.reduce((u,a)=>u*a,1),i=d.empty(n,"float64");return i.isWasmBacked?S(i.wasmPtr,e,ot):i.data.set(ur(e)),i})}integers(t,n,e){return this._withState(()=>{n===void 0&&(n=t,t=0);const i=n-t-1;if(e===void 0)return Number(Z(t,i));const u=Array.isArray(e)?e:[e],a=u.reduce((s,m)=>s*m,1),o=d.empty(u,"int64");return o.isWasmBacked?S(o.wasmPtr,a,(s,m)=>Nt(s,m,t,i)):o.data.set(at(a,t,i)),o})}standard_normal(t){return this._withState(()=>{if(t===void 0)return ar();const n=Array.isArray(t)?t:[t],e=n.reduce((u,a)=>u*a,1),i=d.empty(n,"float64");return i.isWasmBacked?S(i.wasmPtr,e,ut):i.data.set(sr(e)),i})}normal(t=0,n=1,e){return this._withState(()=>{if(e===void 0)return ar()*n+t;const i=Array.isArray(e)?e:[e],u=i.reduce((m,l)=>m*l,1),a=sr(u),o=d.empty(i,"float64"),s=o.data;for(let m=0;m<u;m++)s[m]=a[m]*n+t;return o})}uniform(t=0,n=1,e){return this._withState(()=>{if(e===void 0)return j()*(n-t)+t;const i=Array.isArray(e)?e:[e],u=i.reduce((l,A)=>l*A,1),a=ur(u),o=d.empty(i,"float64"),s=o.data,m=n-t;for(let l=0;l<u;l++)s[l]=a[l]*m+t;return o})}choice(t,n,e=!0,i){return this._withState(()=>dr(t,n,e,i,j,!0))}permutation(t){return this._withState(()=>Q(t,j,!0))}shuffle(t){this._withState(()=>{Ar(t,j,!0)})}exponential(t=1,n){return this._withState(()=>{if(n===void 0)return Br()*t;const e=Array.isArray(n)?n:[n],i=e.reduce((s,m)=>s*m,1),u=vr(i),a=d.empty(e,"float64"),o=a.data;for(let s=0;s<i;s++)o[s]=u[s]*t;return a})}poisson(t=1,n){return this._withState(()=>{if(n===void 0)return V(t,j);const e=Array.isArray(n)?n:[n],i=e.reduce((o,s)=>o*s,1),u=d.zeros(e,"int64"),a=u.data;for(let o=0;o<i;o++)a[o]=BigInt(V(t,j));return u})}binomial(t,n,e){return this._withState(()=>{if(e===void 0)return K(t,n,j);const i=Array.isArray(e)?e:[e],u=i.reduce((s,m)=>s*m,1),a=d.zeros(i,"int64"),o=a.data;for(let s=0;s<u;s++)o[s]=BigInt(K(t,n,j));return a})}}function Kt(r){return new Ct(r)}function Qt(r){r==null&&(r=Math.floor(Date.now()^Math.random()*4294967296)),wr(r>>>0),or()}function $t(){const{mt:r,mti:t}=Sr();return{mt:Array.from(r),mti:t}}function zt(r){Mr(new Uint32Array(r.mt),r.mti),or()}function Dt(r){if(r===0)return 0;let t=r;t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16;let n;do n=(z()&t)>>>0;while(n>r);return n}function Y(r){const t=[.08333333333333333,-.002777777777777778,.0007936507936507937,-.0005952380952380952,.0008417508417508418,-.001917526917526918,.00641025641025641,-.02955065359477124,.1796443723688307,-1.3924322169059];if(r===1||r===2)return 0;let n;r<7?n=Math.floor(7-r):n=0;let e=r+n;const i=1/e*(1/e),u=1.8378770664093453;let a=t[9];for(let s=8;s>=0;s--)a*=i,a+=t[s];let o=a/e+.5*u+(e-.5)*Math.log(e)-e;if(r<7)for(let s=1;s<=n;s++)o-=Math.log(e-1),e-=1;return o}function H(r){return ir(r)}function X(r){return 2*H(r/2)}function Tt(r,t,n){const e=t+r-n;let i=Math.min(t,r),u=i,a=n;for(;u>0;){const s=w();if(u-=Math.floor(s+u/(e+a)),a--,a===0)break}const o=i-u;return r>t?n-o:o}function Lt(r,t,n){const e=1.7155277699214135,i=.8989161620588988,u=Math.min(r,t),a=r+t,o=Math.max(r,t),s=Math.min(n,a-n),m=u/a,l=1-m,A=s*m+.5,p=Math.sqrt((a-s)*n*m*l/(a-1)+.5),f=e*p+i,c=Math.floor((s+1)*(u+1)/(a+2)),b=Y(c+1)+Y(u-c+1)+Y(s-c+1)+Y(o-s+c+1),y=Math.min(Math.min(s,u)+1,Math.floor(A+16*p));let h;for(;;){const B=w(),x=w(),v=A+f*(x-.5)/B;if(v<0||v>=y)continue;h=Math.floor(v);const g=b-(Y(h+1)+Y(u-h+1)+Y(s-h+1)+Y(o-s+h+1));if(B*(4-B)-3<=g)break;if(!(B*(B-g)>=1)&&2*Math.log(B)<=g)break}return r>t&&(h=s-h),s<n&&(h=r-h),h}function Rt(r,t){const n=Math.exp(-r);let e=0,i=1;for(;;){const u=t();if(i*=u,i>n)e+=1;else return e}}function Xt(r,t){const n=Math.sqrt(r),e=Math.log(r),i=.931+2.53*n,u=-.059+.02483*i,a=1.1239+1.1328/(i-3.4),o=.9277-3.6224/(i-2);for(;;){const s=t()-.5,m=t(),l=.5-Math.abs(s),A=Math.floor((2*u/l+i)*s+r+.43);if(l>=.07&&m<=o)return A;if(!(A<0||l<.013&&m>l)&&Math.log(m)+Math.log(a)-Math.log(u/(l*l)+i)<=-r+A*e-Y(A+1))return A}}function V(r,t){return r>=10?Xt(r,t):r===0?0:Rt(r,t)}function jt(){return{has_binomial:!1,nsave:0,psave:0,r:0,q:0,fm:0,m:0,p1:0,xm:0,xl:0,xr:0,c:0,laml:0,lamr:0,p2:0,p3:0,p4:0}}function br(r,t,n,e){let i,u,a,o,s,m,l,A,p,f,c,b,y,h,B,x,v,g,E,U,W,I,P,G,N,C,D,T,q,L,$,F,M,_;!e.has_binomial||e.nsave!==r||e.psave!==t?(e.nsave=r,e.psave=t,e.has_binomial=!0,e.r=i=Math.min(t,1-t),e.q=u=1-i,e.fm=a=r*i+i,e.m=F=Math.floor(a),e.p1=o=Math.floor(2.195*Math.sqrt(r*i*u)-4.6*u)+.5,e.xm=s=F+.5,e.xl=m=s-o,e.xr=l=s+o,e.c=A=.134+20.5/(15.3+F),h=(a-m)/(a-m*i),e.laml=p=h*(1+h/2),h=(l-a)/(l*u),e.lamr=f=h*(1+h/2),e.p2=c=o*(1+2*A),e.p3=b=c+A/p,e.p4=y=b+A/f):(i=e.r,u=e.q,F=e.m,o=e.p1,s=e.xm,m=e.xl,l=e.xr,A=e.c,p=e.laml,f=e.lamr,c=e.p2,b=e.p3,y=e.p4);r:for(;;){if(I=r*i*u,B=n()*y,x=n(),B<=o)M=Math.floor(s-o*x+B);else if(B<=c){if($=m+(B-o)/A,x=x*A+1-Math.abs(F-$+.5)/o,x>1)continue r;if(M=Math.floor($),_=Math.abs(M-F),_>20&&_<I/2-1){if(E=_/I*((_*(_/3+.625)+.16666666666666666)/I+.5),U=-_*_/(2*I),W=Math.log(x),!(W<U-E)){if(W>U+E)continue r;if(P=M+1,N=F+1,D=r+1-F,q=r-M+1,G=P*P,C=N*N,T=D*D,L=q*q,W>s*Math.log(N/P)+(r-F+.5)*Math.log(D/q)+(M-F)*Math.log(q*i/(P*u))+(13680-(462-(132-(99-140/C)/C)/C)/C)/N/166320+(13680-(462-(132-(99-140/T)/T)/T)/T)/D/166320+(13680-(462-(132-(99-140/G)/G)/G)/G)/P/166320+(13680-(462-(132-(99-140/L)/L)/L)/L)/q/166320)continue r}}else{if(v=i/u,h=v*(r+1),g=1,F<M)for(let k=F+1;k<=M;k++)g*=h/k-v;else if(F>M)for(let k=M+1;k<=F;k++)g/=h/k-v;if(x>g)continue r}}else if(B<=b){if(M=Math.floor(m+Math.log(x)/p),M<0||x===0)continue r;if(x=x*(B-c)*p,_=Math.abs(M-F),_>20&&_<I/2-1){if(E=_/I*((_*(_/3+.625)+.16666666666666666)/I+.5),U=-_*_/(2*I),W=Math.log(x),!(W<U-E)){if(W>U+E)continue r;if(P=M+1,N=F+1,D=r+1-F,q=r-M+1,G=P*P,C=N*N,T=D*D,L=q*q,W>s*Math.log(N/P)+(r-F+.5)*Math.log(D/q)+(M-F)*Math.log(q*i/(P*u))+(13680-(462-(132-(99-140/C)/C)/C)/C)/N/166320+(13680-(462-(132-(99-140/T)/T)/T)/T)/D/166320+(13680-(462-(132-(99-140/G)/G)/G)/G)/P/166320+(13680-(462-(132-(99-140/L)/L)/L)/L)/q/166320)continue r}}else{if(v=i/u,h=v*(r+1),g=1,F<M)for(let k=F+1;k<=M;k++)g*=h/k-v;else if(F>M)for(let k=M+1;k<=F;k++)g/=h/k-v;if(x>g)continue r}}else{if(M=Math.floor(l-Math.log(x)/f),M>r||x===0)continue r;if(x=x*(B-b)*f,_=Math.abs(M-F),_>20&&_<I/2-1){if(E=_/I*((_*(_/3+.625)+.16666666666666666)/I+.5),U=-_*_/(2*I),W=Math.log(x),!(W<U-E)){if(W>U+E)continue r;if(P=M+1,N=F+1,D=r+1-F,q=r-M+1,G=P*P,C=N*N,T=D*D,L=q*q,W>s*Math.log(N/P)+(r-F+.5)*Math.log(D/q)+(M-F)*Math.log(q*i/(P*u))+(13680-(462-(132-(99-140/C)/C)/C)/C)/N/166320+(13680-(462-(132-(99-140/T)/T)/T)/T)/D/166320+(13680-(462-(132-(99-140/G)/G)/G)/G)/P/166320+(13680-(462-(132-(99-140/L)/L)/L)/L)/q/166320)continue r}}else{if(v=i/u,h=v*(r+1),g=1,F<M)for(let k=F+1;k<=M;k++)g*=h/k-v;else if(F>M)for(let k=M+1;k<=F;k++)g/=h/k-v;if(x>g)continue r}}return t>.5&&(M=r-M),M}}function yr(r,t,n,e){let i,u,a,o,s,m,l;for(!e.has_binomial||e.nsave!==r||e.psave!==t?(e.nsave=r,e.psave=t,e.has_binomial=!0,e.q=i=1-t,e.r=u=Math.exp(r*Math.log(i)),e.c=a=r*t,e.m=l=Math.min(r,Math.floor(a+10*Math.sqrt(a*i+1)))):(i=e.q,u=e.r,l=e.m),m=0,o=u,s=n();s>o;)m++,m>l?(m=0,o=u,s=n()):(s-=o,o=(r-m+1)*t*o/(m*i));return m}function K(r,t,n){if(r===0||t===0)return 0;const e=jt();if(t<=.5)return t*r<=30?yr(r,t,n,e):br(r,t,n,e);{const i=1-t;return i*r<=30?r-yr(r,i,n,e):r-br(r,i,n,e)}}function tr(r){if(r===void 0)return w();const t=Array.isArray(r)?r:[r],n=t.reduce((i,u)=>i*u,1),e=d.empty(t,"float64");return e.isWasmBacked?S(e.wasmPtr,n,fr):e.data.set(rr(n)),e}function re(...r){if(r.length===0)return w();const t=r.reduce((e,i)=>e*i,1),n=d.empty(r,"float64");return n.isWasmBacked?S(n.wasmPtr,t,fr):n.data.set(rr(t)),n}function te(...r){if(r.length===0)return R();const t=r.reduce((e,i)=>e*i,1),n=d.empty(r,"float64");return n.isWasmBacked?S(n.wasmPtr,t,cr):n.data.set(J(t)),n}function er(r,t,n,e="int64"){t==null&&(t=r,r=0);const u=t-r-1;if(n===void 0)return Dt(u)+r;const a=Array.isArray(n)?n:[n],o=a.reduce((s,m)=>s*m,1);if(e==="int8"||e==="uint8"){const s=tt(o,u,r),m=d.zeros(a,e);return m.data.set(e==="int8"?new Int8Array(s.buffer):s),m}else if(e==="int16"||e==="uint16"){const s=et(o,u,r),m=d.zeros(a,e);return m.data.set(e==="int16"?new Int16Array(s.buffer):s),m}else if(gr(e)){const s=d.empty(a,e);return s.isWasmBacked?S(s.wasmPtr,o,(m,l)=>Gt(m,l,u,r)):s.data.set(rt(o,u,r)),s}else{const s=_r(o,u),m=d.zeros(a,e),l=m.data;for(let A=0;A<o;A++)l[A]=s[A]+r;return m}}function ee(r=0,t=1,n){if(n===void 0)return w()*(t-r)+r;const e=Array.isArray(n)?n:[n],i=e.reduce((m,l)=>m*l,1),u=rr(i),a=d.empty(e,"float64"),o=a.data,s=t-r;for(let m=0;m<i;m++)o[m]=u[m]*s+r;return a}function ne(r=0,t=1,n){if(n===void 0)return R()*t+r;const e=Array.isArray(n)?n:[n],i=e.reduce((s,m)=>s*m,1),u=J(i),a=d.empty(e,"float64"),o=a.data;for(let s=0;s<i;s++)o[s]=u[s]*t+r;return a}function ae(r){if(r===void 0)return R();const t=Array.isArray(r)?r:[r],n=t.reduce((i,u)=>i*u,1),e=d.empty(t,"float64");return e.isWasmBacked?S(e.wasmPtr,n,cr):e.data.set(J(n)),e}function Yt(r=1,t){if(t===void 0)return O()*r;const n=Array.isArray(t)?t:[t],e=n.reduce((o,s)=>o*s,1),i=Pr(e),u=d.empty(n,"float64"),a=u.data;for(let o=0;o<e;o++)a[o]=i[o]*r;return u}function oe(r=1,t){if(t===void 0)return V(r,w);const n=Array.isArray(t)?t:[t],e=n.reduce((u,a)=>u*a,1),i=d.empty(n,"int64");return i.isWasmBacked?S(i.wasmPtr,e,(u,a)=>Et(u,a,r)):i.data.set(Zr(e,r)),i}function ue(r,t,n){if(n===void 0)return K(r,t,w);const e=Array.isArray(n)?n:[n],i=e.reduce((a,o)=>a*o,1),u=d.empty(e,"int64");return u.isWasmBacked?S(u.wasmPtr,i,(a,o)=>kt(a,o,r,t)):u.data.set(Or(i,r,t)),u}function dr(r,t,n=!0,e,i=w,u=!1){const a=typeof r=="number"?r:r.size;if(typeof r=="number"&&n&&e===void 0){if(a===0)throw new Error("cannot take a sample from an empty sequence");if(u){if(t===void 0)return Number(Z(0,a-1));const f=Array.isArray(t)?t:[t],c=f.reduce((h,B)=>h*B,1),b=d.zeros(f,"int64"),y=b.data;for(let h=0;h<c;h++)y[h]=Z(0,a-1);return b}return t===void 0?er(0,a):er(0,a,Array.isArray(t)?t:[t])}let o;if(typeof r=="number")o=Array.from({length:r},(f,c)=>c);else{o=[];for(let f=0;f<a;f++)o.push(Number(r.iget(f)))}if(a===0)throw new Error("cannot take a sample from an empty sequence");let s;if(e!==void 0){if(Array.isArray(e))s=e;else{const c=e.size;s=[];for(let b=0;b<c;b++)s.push(Number(e.iget(b)))}if(s.length!==a)throw new Error("p and a must have the same size");const f=s.reduce((c,b)=>c+b,0);Math.abs(f-1)>1e-10&&(s=s.map(c=>c/f))}if(t===void 0){if(s){const f=i();let c=0;for(let b=0;b<a;b++)if(c+=s[b],f<c)return o[b];return o[a-1]}return o[Math.floor(i()*a)]}const m=Array.isArray(t)?t:[t],l=m.reduce((f,c)=>f*c,1);if(!n&&l>a)throw new Error("cannot take a larger sample than population when replace=false");const A=d.zeros(m,"float64"),p=A.data;if(n)if(s){const f=new Array(a);f[0]=s[0];for(let c=1;c<a;c++)f[c]=f[c-1]+s[c];for(let c=0;c<l;c++){const b=i();let y=0;for(;y<a-1&&b>=f[y];)y++;p[c]=o[y]}}else for(let f=0;f<l;f++)p[f]=o[Math.floor(i()*a)];else if(s){const f=[...o],c=[...s];for(let b=0;b<l;b++){const y=c.reduce((v,g)=>v+g,0),h=i()*y;let B=0,x=0;for(let v=0;v<f.length;v++)if(B+=c[v],h<B){x=v;break}x===0&&h>=B&&(x=f.length-1),p[b]=f[x],f.splice(x,1),c.splice(x,1)}}else if(u)if(a>1e4&&l>a/50){const c=lr(a);for(let b=0;b<l;b++){const y=Number(c[a-l+b]);typeof r=="number"?p[b]=y:p[b]=Number(r.iget(y))}}else{const c=new Array(l),b=new Set;for(let y=a-l;y<a;y++){const h=Number(Z(0,y));b.has(h)?(b.add(y),c[y-(a-l)]=y):(b.add(h),c[y-(a-l)]=h)}for(let y=l-1;y>0;y--){const h=Number(Z(0,y)),B=c[y];c[y]=c[h],c[h]=B}for(let y=0;y<l;y++)typeof r=="number"?p[y]=c[y]:p[y]=Number(r.iget(c[y]))}else{const c=Q(a,i,!1).data;for(let b=0;b<l;b++){const y=Number((c instanceof BigInt64Array,c[b]));typeof r=="number"?p[b]=y:p[b]=Number(r.iget(y))}}return A}function se(r,t,n=!0,e){return dr(r,t,n,e,w)}function Q(r,t=w,n=!1){if(typeof r=="number"){if(n){const u=d.empty([r],"int64");return u.isWasmBacked?S(u.wasmPtr,r,(a,o)=>mt(a,o)):u.data.set(lr(r)),u}if(t===w){const u=d.empty([r],"float64");return u.isWasmBacked?S(u.wasmPtr,r,(a,o)=>it(a,o)):u.data.set(nt(r)),u}}let e;if(typeof r=="number"){e=d.empty([r],"float64");const u=e.data;for(let a=0;a<r;a++)u[a]=a}else e=r.copy();const i=e.size;for(let u=i-1;u>0;u--){const a=Math.floor(t()*(u+1)),o=e.iget(u);e.iset(u,e.iget(a)),e.iset(a,o)}return e}function ie(r){return Q(r,w)}function Ar(r,t=w,n=!1){const e=r.size;if(e<=1)return;const u=Q(e,t,n).data,a=new Array(e);for(let o=0;o<e;o++)a[o]=r.iget(o);for(let o=0;o<e;o++){const s=Number((u instanceof BigInt64Array,u[o]));r.iset(o,a[s])}}function me(r){Ar(r,w)}function le(r){return tr(r)}function ce(r){return tr(r)}function fe(r){return tr(r)}function be(r,t,n){return t===void 0&&(t=r,r=1),er(r,t+1,n)}function ye(r){const t=new Uint8Array(r);let n=0;for(;n+3<r;n+=4){const e=z();t[n]=e&255,t[n+1]=e>>>8&255,t[n+2]=e>>>16&255,t[n+3]=e>>>24&255}if(n<r){let e=z();for(;n<r;n++,e>>>=8)t[n]=e&255}return t}let hr={name:"MT19937",state:{}};function de(){return hr}function Ae(r){hr=r}function he(r){return Yt(1,r)}function pe(r,t){if(r<=0)throw new Error("shape must be positive");if(t===void 0)return H(r);const n=Array.isArray(t)?t:[t],e=n.reduce((u,a)=>u*a,1),i=d.empty(n,"float64");return i.isWasmBacked?S(i.wasmPtr,e,(u,a)=>lt(u,a,r)):i.data.set(mr(e,r)),i}function ge(r){if(r===void 0)return R()/R();const t=Array.isArray(r)?r:[r],n=t.reduce((i,u)=>i*u,1),e=d.empty(t,"float64");return e.isWasmBacked?S(e.wasmPtr,n,st):e.data.set(Dr(n)),e}function we(r,t){if(r<=0)throw new Error("df must be positive");const n=()=>{const a=R(),o=H(r/2);return Math.sqrt(r/2)*a/Math.sqrt(o)};if(t===void 0)return n();const e=Array.isArray(t)?t:[t],i=e.reduce((a,o)=>a*o,1),u=d.empty(e,"float64");return u.isWasmBacked?S(u.wasmPtr,i,(a,o)=>Mt(a,o,r)):u.data.set(Rr(i,r)),u}function Se(r,t=1,n){if(r<=0)throw new Error("shape must be positive");if(t<=0)throw new Error("scale must be positive");if(n===void 0)return t*H(r);const e=Array.isArray(n)?n:[n],i=e.reduce((s,m)=>s*m,1),u=mr(i,r),a=d.empty(e,"float64"),o=a.data;for(let s=0;s<i;s++)o[s]=u[s]*t;return a}function Me(r,t,n){if(r<=0||t<=0)throw new Error("a and b must be positive");const e=()=>{if(r<=1&&t<=1)for(;;){const o=w(),s=w(),m=Math.pow(o,1/r),l=Math.pow(s,1/t);if(m+l<=1){if(m+l>0)return m/(m+l);{const A=Math.log(o)/r,p=Math.log(s)/t,f=A>p?A:p,c=A-f,b=p-f;return Math.exp(c-Math.log(Math.exp(c)+Math.exp(b)))}}}else{const o=H(r),s=H(t);return o/(o+s)}};if(n===void 0)return e();const i=Array.isArray(n)?n:[n],u=i.reduce((o,s)=>o*s,1),a=d.empty(i,"float64");return a.isWasmBacked?S(a.wasmPtr,u,(o,s)=>Ft(o,s,r,t)):a.data.set(Xr(u,r,t)),a}function Fe(r=0,t=1,n){if(t<=0)throw new Error("scale must be positive");const e=()=>{for(;;){const o=w();if(o>=.5)return r-t*Math.log(2-o-o);if(o>0)return r+t*Math.log(o+o)}};if(n===void 0)return e();const i=Array.isArray(n)?n:[n],u=i.reduce((o,s)=>o*s,1),a=d.empty(i,"float64");return a.isWasmBacked?S(a.wasmPtr,u,(o,s)=>ht(o,s,r,t)):a.data.set(Gr(u,r,t)),a}function xe(r=0,t=1,n){if(t<=0)throw new Error("scale must be positive");const e=()=>{for(;;){const o=w();if(o>0)return r+t*Math.log(o/(1-o))}};if(n===void 0)return e();const i=Array.isArray(n)?n:[n],u=i.reduce((o,s)=>o*s,1),a=d.empty(i,"float64");return a.isWasmBacked?S(a.wasmPtr,u,(o,s)=>dt(o,s,r,t)):a.data.set(qr(u,r,t)),a}function Be(r=0,t=1,n){if(t<=0)throw new Error("sigma must be positive");if(n===void 0)return Math.exp(R()*t+r);const e=Array.isArray(n)?n:[n],i=e.reduce((a,o)=>a*o,1),u=d.empty(e,"float64");return u.isWasmBacked?S(u.wasmPtr,i,(a,o)=>wt(a,o,r,t)):u.data.set(Tr(i,r,t)),u}function ve(r=0,t=1,n){if(t<=0)throw new Error("scale must be positive");const e=()=>{for(;;){const o=1-w();if(o<1)return r-t*Math.log(-Math.log(o))}};if(n===void 0)return e();const i=Array.isArray(n)?n:[n],u=i.reduce((o,s)=>o*s,1),a=d.empty(i,"float64");return a.isWasmBacked?S(a.wasmPtr,u,(o,s)=>At(o,s,r,t)):a.data.set(Ur(u,r,t)),a}function Pe(r,t){if(r<=0)throw new Error("a must be positive");const n=()=>Math.exp(O()/r)-1;if(t===void 0)return n();const e=Array.isArray(t)?t:[t],i=e.reduce((a,o)=>a*o,1),u=d.empty(e,"float64");return u.isWasmBacked?S(u.wasmPtr,i,(a,o)=>ft(a,o,r)):u.data.set(kr(i,r)),u}function _e(r,t){if(r<=0)throw new Error("a must be positive");const n=()=>Math.pow(1-Math.exp(-O()),1/r);if(t===void 0)return n();const e=Array.isArray(t)?t:[t],i=e.reduce((a,o)=>a*o,1),u=d.empty(e,"float64");return u.isWasmBacked?S(u.wasmPtr,i,(a,o)=>bt(a,o,r)):u.data.set(Ir(i,r)),u}function Ee(r=1,t){if(r<=0)throw new Error("scale must be positive");if(t===void 0)return r*Math.sqrt(2*O());const n=Array.isArray(t)?t:[t],e=n.reduce((u,a)=>u*a,1),i=d.empty(n,"float64");return i.isWasmBacked?S(i.wasmPtr,e,(u,a)=>pt(u,a,r)):i.data.set(Nr(e,r)),i}function ke(r,t,n,e){if(r>t||t>n||r===n)throw new Error("must have left <= mode <= right and left < right");const i=n-r,u=t-r,a=u/i,o=u*i,s=(n-t)*i,m=()=>{const f=w();return f<=a?r+Math.sqrt(f*o):n-Math.sqrt((1-f)*s)};if(e===void 0)return m();const l=Array.isArray(e)?e:[e],A=l.reduce((f,c)=>f*c,1),p=d.empty(l,"float64");return p.isWasmBacked?S(p.wasmPtr,A,(f,c)=>gt(f,c,r,t,n)):p.data.set(Cr(A,r,t,n)),p}function Ie(r,t,n){if(r<=0)throw new Error("mean must be positive");if(t<=0)throw new Error("scale must be positive");const e=()=>{const o=r/(2*t);let s=R();s=r*s*s;const m=r+o*(s-Math.sqrt(4*t*s+s*s));return w()<=r/(r+m)?m:r*r/m};if(n===void 0)return e();const i=Array.isArray(n)?n:[n],u=i.reduce((o,s)=>o*s,1),a=d.empty(i,"float64");return a.isWasmBacked?S(a.wasmPtr,u,(o,s)=>St(o,s,r,t)):a.data.set(Lr(u,r,t)),a}function We(r,t){if(r<=0)throw new Error("a must be positive");const n=()=>r===0?0:Math.pow(O(),1/r);if(t===void 0)return n();const e=Array.isArray(t)?t:[t],i=e.reduce((a,o)=>a*o,1),u=d.empty(e,"float64");return u.isWasmBacked?S(u.wasmPtr,i,(a,o)=>yt(a,o,r)):u.data.set(Wr(i,r)),u}function qe(r,t){if(r<=0)throw new Error("df must be positive");if(t===void 0)return X(r);const n=Array.isArray(t)?t:[t],e=n.reduce((u,a)=>u*a,1),i=d.empty(n,"float64");return i.isWasmBacked?S(i.wasmPtr,e,(u,a)=>ct(u,a,r)):i.data.set(Er(e,r)),i}function Ue(r,t,n){if(r<=0)throw new Error("df must be positive");if(t<0)throw new Error("nonc must be non-negative");const e=()=>{if(t===0)return X(r);if(1<r){const o=X(r-1),s=R()+Math.sqrt(t);return o+s*s}else{const o=V(t/2,w);return X(r+2*o)}};if(n===void 0)return e();const i=Array.isArray(n)?n:[n],u=i.reduce((o,s)=>o*s,1),a=d.empty(i,"float64");return a.isWasmBacked?S(a.wasmPtr,u,(o,s)=>Bt(o,s,r,t)):a.data.set(Yr(u,r,t)),a}function Ge(r,t,n){if(r<=0)throw new Error("dfnum must be positive");if(t<=0)throw new Error("dfden must be positive");const e=()=>{const o=X(r)*t,s=X(t)*r;return o/s};if(n===void 0)return e();const i=Array.isArray(n)?n:[n],u=i.reduce((o,s)=>o*s,1),a=d.empty(i,"float64");return a.isWasmBacked?S(a.wasmPtr,u,(o,s)=>xt(o,s,r,t)):a.data.set(jr(u,r,t)),a}function Ne(r,t,n,e){if(r<=0)throw new Error("dfnum must be positive");if(t<=0)throw new Error("dfden must be positive");if(n<0)throw new Error("nonc must be non-negative");const i=()=>{if(n===0)return X(r);if(1<r){const m=X(r-1),l=R()+Math.sqrt(n);return m+l*l}else{const m=V(n/2,w);return X(r+2*m)}},u=()=>i()*t/(X(t)*r);if(e===void 0)return u();const a=Array.isArray(e)?e:[e],o=a.reduce((m,l)=>m*l,1),s=d.empty(a,"float64");return s.isWasmBacked?S(s.wasmPtr,o,(m,l)=>vt(m,l,r,t,n)):s.data.set(Hr(o,r,t,n)),s}function Ce(r,t){if(r<=0||r>1)throw new Error("p must be in (0, 1]");const n=()=>{if(r>=1/3){let a=1,o=r,s=r;const m=1-r,l=w();for(;l>o;)s*=m,o+=s,a++;return a}else return Math.ceil(Math.log1p(-w())/Math.log(1-r))};if(t===void 0)return n();const e=Array.isArray(t)?t:[t],i=e.reduce((a,o)=>a*o,1),u=d.empty(e,"int64");return u.isWasmBacked?S(u.wasmPtr,i,(a,o)=>_t(a,o,r)):u.data.set(Vr(i,r)),u}function De(r,t,n,e){if(r<0)throw new Error("ngood must be non-negative");if(t<0)throw new Error("nbad must be non-negative");if(n<0)throw new Error("nsample must be non-negative");if(n>r+t)throw new Error("nsample must be <= ngood + nbad");const i=()=>n>10?Lt(r,t,n):n>0?Tt(r,t,n):0;if(e===void 0)return i();const u=Array.isArray(e)?e:[e],a=u.reduce((s,m)=>s*m,1),o=d.empty(u,"int64");return o.isWasmBacked?S(o.wasmPtr,a,(s,m)=>Wt(s,m,r,t,n)):o.data.set(Kr(a,r,t,n)),o}function Te(r,t){if(r<=0||r>=1)throw new Error("p must be in (0, 1)");const n=Math.log(1-r),e=()=>{for(;;){const o=w();if(o>=r)return 1;const s=w(),m=1-Math.exp(n*s);if(o<=m*m){const l=Math.floor(1+Math.log(o)/Math.log(m));if(l<1||o===0)continue;return l}return o>=m?1:2}};if(t===void 0)return e();const i=Array.isArray(t)?t:[t],u=i.reduce((o,s)=>o*s,1),a=d.empty(i,"int64");return a.isWasmBacked?S(a.wasmPtr,u,(o,s)=>qt(o,s,r)):a.data.set(Qr(u,r)),a}function Le(r,t,n){if(r<=0)throw new Error("n must be positive");if(t<=0||t>1)throw new Error("p must be in (0, 1]");const e=()=>{if(t===1)return 0;const o=H(r)*((1-t)/t);return V(o,w)};if(n===void 0)return e();const i=Array.isArray(n)?n:[n],u=i.reduce((o,s)=>o*s,1),a=d.empty(i,"int64");return a.isWasmBacked?S(a.wasmPtr,u,(o,s)=>It(o,s,r,t)):a.data.set(Jr(u,r,t)),a}function Re(r,t){if(r<=1)throw new Error("a must be > 1");const n=r-1,e=Math.pow(2,n),i=9007199254740991,u=()=>{for(;;){const m=1-w(),l=w(),A=Math.floor(Math.pow(m,-1/n));if(A>i||A<1)continue;const p=Math.pow(1+1/A,n);if(l*A*(p-1)/(e-1)<=p/e)return A}};if(t===void 0)return u();const a=Array.isArray(t)?t:[t],o=a.reduce((m,l)=>m*l,1),s=d.empty(a,"int64");return s.isWasmBacked?S(s.wasmPtr,o,(m,l)=>Ut(m,l,r)):s.data.set($r(o,r)),s}function Xe(r,t,n){const e=Array.isArray(t)?t:Array.from({length:t.size},(f,c)=>Number(t.iget(c))),i=e.length;if(i===0)throw new Error("pvals must have at least one element");const u=e.reduce((f,c)=>f+c,0),a=e.map(f=>f/u),o=()=>{const f=new Array(i).fill(0);let c=r,b=1;for(let y=0;y<i-1;y++){const h=K(c,a[y]/b,w);if(f[y]=h,c-=h,c<=0)break;b-=a[y]}return c>0&&(f[i-1]=c),f};if(n===void 0){const f=o(),c=d.zeros([i],"int64"),b=c.data;for(let y=0;y<i;y++)b[y]=BigInt(f[y]);return c}const s=Array.isArray(n)?n:[n],m=s.reduce((f,c)=>f*c,1),l=[...s,i],A=d.zeros(l,"int64"),p=A.data;for(let f=0;f<m;f++){const c=o();for(let b=0;b<i;b++)p[f*i+b]=BigInt(c[b])}return A}function je(r,t,n,e="warn",i=1e-8){const u=Array.isArray(r)?r:Array.from({length:r.size},(g,E)=>Number(r.iget(E))),a=u.length;let o;if(Array.isArray(t))o=t;else{o=[];for(let g=0;g<a;g++){o.push([]);for(let E=0;E<a;E++)o[g].push(Number(t.iget(g*a+E)))}}const s=d.empty([a,a],"float64");s.data.set(o.flat());const{s:m,vt:l}=pr(s,!0,!0),A=l.data,p=m.data;for(let g=0;g<a;g++)if(p[g]<-i){if(e==="raise")throw new Error("covariance matrix is not positive semi-definite");e==="warn"&&console.warn("covariance matrix is not positive semi-definite")}const f=A,c=new Float64Array(a);for(let g=0;g<a;g++)c[g]=Math.sqrt(Math.max(0,p[g]));if(n===void 0){const g=J(a),E=d.zeros([a],"float64"),U=E.data;for(let W=0;W<a;W++){let I=u[W];for(let P=0;P<a;P++)I+=g[P]*c[P]*f[P*a+W];U[W]=I}return E}const b=Array.isArray(n)?n:[n],y=b.reduce((g,E)=>g*E,1),h=[...b,a],B=J(y*a),x=d.empty(h,"float64"),v=x.data;for(let g=0;g<y;g++){const E=g*a;for(let U=0;U<a;U++){let W=u[U];for(let I=0;I<a;I++)W+=B[E+I]*c[I]*f[I*a+U];v[E+U]=W}}return x}function Ye(r,t){const n=Array.isArray(r)?r:Array.from({length:r.size},(l,A)=>Number(r.iget(A))),e=n.length;if(e<2)throw new Error("alpha must have at least 2 elements");for(const l of n)if(l<=0)throw new Error("all alpha values must be positive");const i=(l,A)=>{let p=0;for(let f=0;f<e;f++){const c=ir(n[f]);l[A+f]=c,p+=c}for(let f=0;f<e;f++)l[A+f]=l[A+f]/p};if(t===void 0){const l=d.empty([e],"float64");return i(l.data,0),l}const u=Array.isArray(t)?t:[t],a=u.reduce((l,A)=>l*A,1),o=[...u,e],s=d.empty(o,"float64"),m=s.data;for(let l=0;l<a;l++)i(m,l*e);return s}function He(r,t,n){if(t<0)throw new Error("kappa must be non-negative");const e=()=>{if(t<1e-8)return Math.PI*(2*w()-1);let o;if(t<1e-5)o=1/t+t;else{const f=1+Math.sqrt(1+4*t*t),c=(f-Math.sqrt(2*f))/(2*t);o=(1+c*c)/(2*c)}let s;for(;;){const f=w(),c=Math.cos(Math.PI*f);s=(1+o*c)/(o+c);const b=t*(o-s),y=w();if(b*(2-b)-y>=0||Math.log(b/y)+1-b>=0)break}const m=w();let l=Math.acos(s);m<.5&&(l=-l),l+=r;const A=l<0;let p=Math.abs(l);return p=(p+Math.PI)%(2*Math.PI)-Math.PI,A&&(p*=-1),p};if(n===void 0)return e();const i=Array.isArray(n)?n:[n],u=i.reduce((o,s)=>o*s,1),a=d.empty(i,"float64");return a.isWasmBacked?S(a.wasmPtr,u,(o,s)=>Pt(o,s,r,t)):a.data.set(zr(u,r,t)),a}export{Ct as Generator,Me as beta,ue as binomial,ye as bytes,qe as chisquare,se as choice,Kt as default_rng,Ye as dirichlet,Yt as exponential,Ge as f,Se as gamma,Ce as geometric,de as get_bit_generator,$t as get_state,ve as gumbel,De as hypergeometric,Fe as laplace,xe as logistic,Be as lognormal,Te as logseries,Xe as multinomial,je as multivariate_normal,Le as negative_binomial,Ue as noncentral_chisquare,Ne as noncentral_f,ne as normal,Pe as pareto,ie as permutation,oe as poisson,_e as power,re as rand,er as randint,te as randn,tr as random,be as random_integers,le as random_sample,ce as ranf,Ee as rayleigh,fe as sample,Qt as seed,Ae as set_bit_generator,zt as set_state,me as shuffle,ge as standard_cauchy,he as standard_exponential,pe as standard_gamma,ae as standard_normal,we as standard_t,ke as triangular,ee as uniform,He as vonmises,Ie as wald,We as weibull,Re as zipf};
@@ -1 +1 @@
1
- import{ArrayStorage as E}from"../storage.js";import{getTypedArrayConstructor as rt,hasFloat16 as ut,isBigIntDType as L,isComplexDType as P,isFloatDType as H,throwIfComplex as st}from"../dtype.js";import{computeStrides as ot,precomputeAxisOffsets as q}from"../internal/indexing.js";import{Complex as Q}from"../complex.js";import{wasmReduceSum as ht,wasmReduceSumStrided as zt}from"../wasm/reduce_sum.js";import{wasmReduceMax as wt,wasmReduceMaxStrided as Dt}from"../wasm/reduce_max.js";import{wasmReduceMin as Ct,wasmReduceMinStrided as Ft}from"../wasm/reduce_min.js";import{wasmReduceArgmax as Rt}from"../wasm/reduce_argmax.js";import{wasmReduceArgmin as vt}from"../wasm/reduce_argmin.js";import{wasmReduceMean as $t,wasmReduceMeanStrided as Bt}from"../wasm/reduce_mean.js";import{wasmReduceVar as Et}from"../wasm/reduce_var.js";import{wasmReduceNansum as Tt}from"../wasm/reduce_nansum.js";import{wasmReduceNanmin as Ot}from"../wasm/reduce_nanmin.js";import{wasmReduceNanmax as Vt}from"../wasm/reduce_nanmax.js";import{wasmReduceProd as _t,wasmReduceProdStrided as gt}from"../wasm/reduce_prod.js";import{wasmReduceQuantile as Mt}from"../wasm/reduce_quantile.js";import{wasmReduceAny as Ut}from"../wasm/reduce_any.js";import{wasmReduceAll as Pt}from"../wasm/reduce_all.js";import{wasmReduceStd as qt}from"../wasm/reduce_std.js";const G=new Float32Array(2),Z=typeof globalThis.Float16Array<"u"?new Float16Array(2):null;function X(t){return t==="float16"?Z:t==="float32"?G:null}function at(t,p){const S=X(p);return S?(S[0]=t,S[0]):t}function ct(t){switch(t){case"int8":case"int16":case"int32":return"int64";case"uint8":case"uint16":case"uint32":return"uint64";default:return t}}function Wt(t){switch(t){case"int8":case"int16":case"int32":case"uint8":case"uint16":case"uint32":case"int64":case"uint64":return"float64";default:return t}}function j(t,p,S){const l=E.zeros(Array(p).fill(1),S);return l.iset(0,t),l}function k(t,p,S=!1){const l=t.dtype,d=t.shape,A=d.length,z=t.size,I=t.data,N=t.offset,F=t.strides,h=t.isCContiguous;if(p===void 0){const e=ht(t);if(e!==null)return e;if(P(l)){let o=0,n=0;if(h){const s=I;for(let a=0;a<z;a++)o+=s[(N+a)*2],n+=s[(N+a)*2+1]}else for(let s=0;s<z;s++){const a=t.iget(s);o+=a.re,n+=a.im}return new Q(o,n)}else if(L(l)){let o=BigInt(0);if(h){const n=I;for(let s=0;s<z;s++)o+=n[N+s]}else for(let n=0;n<z;n++)o+=t.iget(n);return Number(o)}else if(l==="float32"||l==="float16"&&Z){const o=X(l);if(o[0]=0,h){const n=l==="float16"?new Float32Array(I.subarray(N,N+z)):I,s=l==="float16"?0:N;for(let a=0;a<z;a++)o[0]+=Number(n[s+a])}else for(let n=0;n<z;n++)o[0]+=Number(t.iget(n));return o[0]}else{let o=0;if(h)if(N===0)for(let n=0;n<z;n++)o+=Number(I[n]);else for(let n=0;n<z;n++)o+=Number(I[N+n]);else for(let n=0;n<z;n++)o+=Number(t.iget(n));return o}}let w=p;if(w<0&&(w=A+w),w<0||w>=A)throw new Error(`axis ${p} is out of bounds for array of dimension ${A}`);const R=ct(l),$=Array.from(d).filter((e,o)=>o!==w);if($.length===0){const e=k(t);if(!S)return e;const o=E.zeros(Array(A).fill(1),R);return o.iset(0,e),o}const T=E.zeros($,R),x=T.data,y=d[w],u=$.reduce((e,o)=>e*o,1);if(h&&!P(l)){const e=d.slice(0,w).reduce((s,a)=>s*a,1),o=d.slice(w+1).reduce((s,a)=>s*a,1),n=zt(t,e,y,o);if(n){const s=S?d.map((m,c)=>c===w?1:m):$;if(R==="float64")return E.fromData(n.data,s,R);if(R==="float32"){const m=new Float32Array(n.data.length),c=n.data;for(let f=0;f<c.length;f++)m[f]=c[f];return E.fromData(m,s,R)}const a=n.data;for(let m=0;m<a.length;m++)x[m]=x instanceof BigInt64Array||x instanceof BigUint64Array?BigInt(Math.round(a[m])):a[m];return S?E.fromData(x,s,R):T}}const{baseOffsets:i,axisStride:r}=q(d,F,N,w,u);if(P(l)){const e=I,o=x;if(l==="complex64")for(let n=0;n<u;n++){G[0]=0,G[1]=0;let s=i[n];for(let a=0;a<y;a++)G[0]+=e[s*2],G[1]+=e[s*2+1],s+=r;o[n*2]=G[0],o[n*2+1]=G[1]}else for(let n=0;n<u;n++){let s=0,a=0,m=i[n];for(let c=0;c<y;c++)s+=e[m*2],a+=e[m*2+1],m+=r;o[n*2]=s,o[n*2+1]=a}}else if(L(l)){const e=I,o=x;for(let n=0;n<u;n++){let s=BigInt(0),a=i[n];for(let m=0;m<y;m++)s+=e[a],a+=r;o[n]=s}}else if(L(R)){const e=x;for(let o=0;o<u;o++){let n=0,s=i[o];for(let a=0;a<y;a++)n+=Number(I[s]),s+=r;e[o]=BigInt(Math.round(n))}}else if(l==="float32"||l==="float16"&&Z){const e=X(l);for(let o=0;o<u;o++){e[0]=0;let n=i[o];for(let s=0;s<y;s++)e[0]+=Number(I[n]),n+=r;x[o]=e[0]}}else for(let e=0;e<u;e++){let o=0,n=i[e];for(let s=0;s<y;s++)o+=Number(I[n]),n+=r;x[e]=o}if(S){const e=[...d];return e[w]=1,E.fromData(x,e,R)}return T}function ft(t,p,S=!1){const l=t.dtype,d=t.shape;if(p===void 0){const T=$t(t);if(T!==null)return T;if(l==="float16"||l==="float32"){let y=0;const u=t.offset;if(t.isCContiguous)for(let i=0;i<t.size;i++)y+=Number(t.data[u+i]);else for(let i=0;i<t.size;i++)y+=Number(t.iget(i));return at(y/t.size,l)}const x=k(t);return x instanceof Q?new Q(x.re/t.size,x.im/t.size):x/t.size}let A=p;if(A<0&&(A=d.length+A),A<0||A>=d.length)throw new Error(`axis ${p} is out of bounds for array of dimension ${d.length}`);if(t.isCContiguous&&!P(l)){const T=d[A],x=S?d.map((r,e)=>e===A?1:r):Array.from(d).filter((r,e)=>e!==A),y=d.slice(0,A).reduce((r,e)=>r*e,1),u=d.slice(A+1).reduce((r,e)=>r*e,1),i=Bt(t,y,T,u);if(i)return E.fromData(i.data,x,"float64")}let z;if(l==="float16"||l==="float32"){const T=E.zeros(Array.from(d),"float64"),x=t.data,y=T.data,u=t.offset;if(t.isCContiguous){const s=l==="float16"&&ut?new Float32Array(x.subarray(u,u+t.size)):x,a=l==="float16"&&ut?0:u;for(let m=0;m<t.size;m++)y[m]=Number(s[a+m])}else for(let s=0;s<t.size;s++)y[s]=Number(t.iget(s));const i=k(T,A,S);if(typeof i=="number")return at(i/d[A],l);z=i;const r=d[A],e=z.data,o=rt(l),n=new o(e.length);for(let s=0;s<e.length;s++)n[s]=e[s]/r;return E.fromData(n,Array.from(z.shape),l)}const I=k(t,p,S);if(typeof I=="number")return I/d[A];if(I instanceof Q)return new Q(I.re/d[A],I.im/d[A]);const N=d[A],F=Wt(l),h=E.zeros(Array.from(I.shape),F),w=h.data,R=I.data,$=I.dtype;if(P(l)){const T=R,x=w,y=I.size;for(let u=0;u<y;u++)x[u*2]=T[u*2]/N,x[u*2+1]=T[u*2+1]/N}else if(L($)){const T=R;for(let x=0;x<w.length;x++)w[x]=Number(T[x])/N}else for(let T=0;T<w.length;T++)w[T]=Number(R[T])/N;return h}function tt(t,p,S=!1){const l=t.dtype,d=t.shape,A=d.length,z=t.size,I=t.data,N=t.offset,F=t.strides;if(P(l)){const i=I;if(p===void 0){if(z===0)throw new Error("max of empty array");let f=i[N*2],b=i[N*2+1];for(let D=1;D<z;D++){const v=i[(N+D)*2],C=i[(N+D)*2+1];if(isNaN(v)||isNaN(C))return new Q(NaN,NaN);(v>f||v===f&&C>b)&&(f=v,b=C)}return isNaN(f)||isNaN(b)?new Q(NaN,NaN):new Q(f,b)}let r=p;if(r<0&&(r=A+r),r<0||r>=A)throw new Error(`axis ${p} is out of bounds for array of dimension ${A}`);const e=Array.from(d).filter((f,b)=>b!==r);if(e.length===0){const f=tt(t);return S?j(f,A,l):f}const o=E.zeros(e,l),n=o.data,s=d[r],a=e.reduce((f,b)=>f*b,1),{baseOffsets:m,axisStride:c}=q(d,F,N,r,a);for(let f=0;f<a;f++){let b=m[f],D=i[b*2],v=i[b*2+1];b+=c;for(let C=1;C<s;C++){const B=i[b*2],O=i[b*2+1];if(b+=c,isNaN(B)||isNaN(O)){D=NaN,v=NaN;break}(B>D||B===D&&O>v)&&(D=B,v=O)}n[f*2]=D,n[f*2+1]=v}if(S){const f=[...d];return f[r]=1,E.fromData(n,f,l)}return o}if(p===void 0){const i=wt(t);if(i!==null)return i;if(z===0)throw new Error("max of empty array");if(t.isCContiguous){let r=I[N];if(N===0)for(let e=1;e<z;e++)I[e]>r&&(r=I[e]);else for(let e=1;e<z;e++)I[N+e]>r&&(r=I[N+e]);return Number(r)}else{let r=t.iget(0);for(let e=1;e<z;e++){const o=t.iget(e);o>r&&(r=o)}return Number(r)}}let h=p;if(h<0&&(h=A+h),h<0||h>=A)throw new Error(`axis ${p} is out of bounds for array of dimension ${A}`);const w=Array.from(d).filter((i,r)=>r!==h);if(w.length===0){const i=tt(t);return S?j(i,A,l):i}const R=E.zeros(w,l),$=R.data,T=d[h],x=w.reduce((i,r)=>i*r,1);if(t.isCContiguous&&!P(l)){const i=d.slice(0,h).reduce((o,n)=>o*n,1),r=d.slice(h+1).reduce((o,n)=>o*n,1),e=Dt(t,i,T,r);if(e){const o=S?d.map((n,s)=>s===h?1:n):w;return E.fromData(e.data,o,l)}}const{baseOffsets:y,axisStride:u}=q(d,F,N,h,x);if(L(l)){const i=I,r=$;for(let e=0;e<x;e++){let o=y[e],n=i[o];o+=u;for(let s=1;s<T;s++){const a=i[o];a>n&&(n=a),o+=u}r[e]=n}}else for(let i=0;i<x;i++){let r=-1/0,e=y[i];for(let o=0;o<T;o++){const n=Number(I[e]);n>r&&(r=n),e+=u}$[i]=r}if(S){const i=[...d];return i[h]=1,E.fromData($,i,l)}return R}function mt(t,p,S=!1){const l=t.dtype,d=t.shape,A=d.length,z=t.size,I=t.data,N=t.offset,F=t.strides,h=t.isCContiguous;if(p===void 0){const e=_t(t);if(e!==null)return e;if(P(l)){let o=1,n=0;if(h){const s=I;for(let a=0;a<z;a++){const m=s[(N+a)*2],c=s[(N+a)*2+1],f=o*m-n*c,b=o*c+n*m;o=f,n=b}}else for(let s=0;s<z;s++){const a=t.iget(s),m=a.re,c=a.im,f=o*m-n*c,b=o*c+n*m;o=f,n=b}return new Q(o,n)}else if(L(l)){let o=BigInt(1);if(h){const n=I;for(let s=0;s<z;s++)o*=n[N+s]}else for(let n=0;n<z;n++)o*=t.iget(n);return Number(o)}else if(l==="float32"||l==="float16"&&Z){const o=X(l);if(o[0]=1,h)for(let n=0;n<z;n++)o[0]*=Number(I[N+n]);else for(let n=0;n<z;n++)o[0]*=Number(t.iget(n));return o[0]}else{let o=1;if(h)if(N===0)for(let n=0;n<z;n++)o*=Number(I[n]);else for(let n=0;n<z;n++)o*=Number(I[N+n]);else for(let n=0;n<z;n++)o*=Number(t.iget(n));return o}}let w=p;if(w<0&&(w=A+w),w<0||w>=A)throw new Error(`axis ${p} is out of bounds for array of dimension ${A}`);const R=ct(l),$=Array.from(d).filter((e,o)=>o!==w);if($.length===0){const e=mt(t);return S?j(e,A,R):e}const T=E.zeros($,R),x=T.data,y=d[w],u=$.reduce((e,o)=>e*o,1);if(h&&!P(l)){const e=d.slice(0,w).reduce((s,a)=>s*a,1),o=d.slice(w+1).reduce((s,a)=>s*a,1),n=gt(t,e,y,o);if(n){const s=S?d.map((a,m)=>m===w?1:a):$;return E.fromData(n.data,s,R)}}const{baseOffsets:i,axisStride:r}=q(d,F,N,w,u);if(P(l)){const e=I,o=x;if(l==="complex64")for(let n=0;n<u;n++){G[0]=1,G[1]=0;let s=i[n];for(let a=0;a<y;a++){const m=e[s*2],c=e[s*2+1],f=G[0],b=G[1];G[0]=f*m-b*c,G[1]=f*c+b*m,s+=r}o[n*2]=G[0],o[n*2+1]=G[1]}else for(let n=0;n<u;n++){let s=1,a=0,m=i[n];for(let c=0;c<y;c++){const f=e[m*2],b=e[m*2+1],D=s*f-a*b,v=s*b+a*f;s=D,a=v,m+=r}o[n*2]=s,o[n*2+1]=a}}else if(L(l)){const e=I,o=x;for(let n=0;n<u;n++){let s=BigInt(1),a=i[n];for(let m=0;m<y;m++)s*=e[a],a+=r;o[n]=s}}else if(L(R)){const e=x;for(let o=0;o<u;o++){let n=BigInt(1),s=i[o];for(let a=0;a<y;a++)n*=BigInt(Number(I[s])),s+=r;e[o]=n}}else if(l==="float32"||l==="float16"&&Z){const e=X(l);for(let o=0;o<u;o++){e[0]=1;let n=i[o];for(let s=0;s<y;s++)e[0]*=Number(I[n]),n+=r;x[o]=e[0]}}else for(let e=0;e<u;e++){let o=1,n=i[e];for(let s=0;s<y;s++)o*=Number(I[n]),n+=r;x[e]=o}if(S){const e=[...d];return e[w]=1,E.fromData(x,e,R)}return T}function et(t,p,S=!1){const l=t.dtype,d=t.shape,A=d.length,z=t.size,I=t.data,N=t.offset,F=t.strides;if(P(l)){const i=I;if(p===void 0){if(z===0)throw new Error("min of empty array");let f=i[N*2],b=i[N*2+1];for(let D=1;D<z;D++){const v=i[(N+D)*2],C=i[(N+D)*2+1];if(isNaN(v)||isNaN(C))return new Q(NaN,NaN);(v<f||v===f&&C<b)&&(f=v,b=C)}return isNaN(f)||isNaN(b)?new Q(NaN,NaN):new Q(f,b)}let r=p;if(r<0&&(r=A+r),r<0||r>=A)throw new Error(`axis ${p} is out of bounds for array of dimension ${A}`);const e=Array.from(d).filter((f,b)=>b!==r);if(e.length===0){const f=et(t);return S?j(f,A,l):f}const o=E.zeros(e,l),n=o.data,s=d[r],a=e.reduce((f,b)=>f*b,1),{baseOffsets:m,axisStride:c}=q(d,F,N,r,a);for(let f=0;f<a;f++){let b=m[f],D=i[b*2],v=i[b*2+1];b+=c;for(let C=1;C<s;C++){const B=i[b*2],O=i[b*2+1];if(b+=c,isNaN(B)||isNaN(O)){D=NaN,v=NaN;break}(B<D||B===D&&O<v)&&(D=B,v=O)}n[f*2]=D,n[f*2+1]=v}if(S){const f=[...d];return f[r]=1,E.fromData(n,f,l)}return o}if(p===void 0){const i=Ct(t);if(i!==null)return i;if(z===0)throw new Error("min of empty array");if(t.isCContiguous){let r=I[N];if(N===0)for(let e=1;e<z;e++)I[e]<r&&(r=I[e]);else for(let e=1;e<z;e++)I[N+e]<r&&(r=I[N+e]);return Number(r)}else{let r=t.iget(0);for(let e=1;e<z;e++){const o=t.iget(e);o<r&&(r=o)}return Number(r)}}let h=p;if(h<0&&(h=A+h),h<0||h>=A)throw new Error(`axis ${p} is out of bounds for array of dimension ${A}`);const w=Array.from(d).filter((i,r)=>r!==h);if(w.length===0){const i=et(t);return S?j(i,A,l):i}const R=E.zeros(w,l),$=R.data,T=d[h],x=w.reduce((i,r)=>i*r,1);if(t.isCContiguous&&!P(l)){const i=d.slice(0,h).reduce((o,n)=>o*n,1),r=d.slice(h+1).reduce((o,n)=>o*n,1),e=Ft(t,i,T,r);if(e){const o=S?d.map((n,s)=>s===h?1:n):w;return E.fromData(e.data,o,l)}}const{baseOffsets:y,axisStride:u}=q(d,F,N,h,x);if(L(l)){const i=I,r=$;for(let e=0;e<x;e++){let o=y[e],n=i[o];o+=u;for(let s=1;s<T;s++){const a=i[o];a<n&&(n=a),o+=u}r[e]=n}}else for(let i=0;i<x;i++){let r=1/0,e=y[i];for(let o=0;o<T;o++){const n=Number(I[e]);n<r&&(r=n),e+=u}$[i]=r}if(S){const i=[...d];return i[h]=1,E.fromData($,i,l)}return R}function J(t,p,S,l){return t<S?-1:t>S?1:p<l?-1:p>l?1:0}function dt(t,p){const S=t.dtype,l=P(S),d=t.shape,A=d.length,z=t.size,I=t.data,N=t.offset,F=t.strides,h=t.isCContiguous;if(p===void 0){const r=vt(t);if(r!==null)return r;if(z===0)throw new Error("argmin of empty array");if(l)if(h){const e=I;let o=e[N*2],n=e[N*2+1],s=0;for(let a=1;a<z;a++){const m=e[(N+a)*2],c=e[(N+a)*2+1];J(m,c,o,n)<0&&(o=m,n=c,s=a)}return s}else{const e=t.iget(0);let o=e.re,n=e.im,s=0;for(let a=1;a<z;a++){const m=t.iget(a);J(m.re,m.im,o,n)<0&&(o=m.re,n=m.im,s=a)}return s}if(h){let e=I[N],o=0;if(N===0)for(let n=1;n<z;n++)I[n]<e&&(e=I[n],o=n);else for(let n=1;n<z;n++)I[N+n]<e&&(e=I[N+n],o=n);return o}else{let e=t.iget(0),o=0;for(let n=1;n<z;n++){const s=t.iget(n);s<e&&(e=s,o=n)}return o}}let w=p;if(w<0&&(w=A+w),w<0||w>=A)throw new Error(`axis ${p} is out of bounds for array of dimension ${A}`);const R=Array.from(d).filter((r,e)=>e!==w);if(R.length===0)return dt(t);const $=E.zeros(R,"int32"),T=$.data,x=d[w],y=R.reduce((r,e)=>r*e,1),{baseOffsets:u,axisStride:i}=q(d,F,N,w,y);if(l){const r=I;for(let e=0;e<y;e++){let o=u[e],n=r[o*2],s=r[o*2+1],a=0;o+=i;for(let m=1;m<x;m++){const c=r[o*2],f=r[o*2+1];J(c,f,n,s)<0&&(n=c,s=f,a=m),o+=i}T[e]=a}}else if(L(S)){const r=I;for(let e=0;e<y;e++){let o=u[e],n=r[o],s=0;o+=i;for(let a=1;a<x;a++){const m=r[o];m<n&&(n=m,s=a),o+=i}T[e]=s}}else for(let r=0;r<y;r++){let e=1/0,o=0,n=u[r];for(let s=0;s<x;s++){const a=Number(I[n]);a<e&&(e=a,o=s),n+=i}T[r]=o}return $}function xt(t,p){const S=t.dtype,l=P(S),d=t.shape,A=d.length,z=t.size,I=t.data,N=t.offset,F=t.strides,h=t.isCContiguous;if(p===void 0){const r=Rt(t);if(r!==null)return r;if(z===0)throw new Error("argmax of empty array");if(l)if(h){const e=I;let o=e[N*2],n=e[N*2+1],s=0;for(let a=1;a<z;a++){const m=e[(N+a)*2],c=e[(N+a)*2+1];J(m,c,o,n)>0&&(o=m,n=c,s=a)}return s}else{const e=t.iget(0);let o=e.re,n=e.im,s=0;for(let a=1;a<z;a++){const m=t.iget(a);J(m.re,m.im,o,n)>0&&(o=m.re,n=m.im,s=a)}return s}if(h){let e=I[N],o=0;for(let n=1;n<z;n++)I[N+n]>e&&(e=I[N+n],o=n);return o}else{let e=t.iget(0),o=0;for(let n=1;n<z;n++){const s=t.iget(n);s>e&&(e=s,o=n)}return o}}let w=p;if(w<0&&(w=A+w),w<0||w>=A)throw new Error(`axis ${p} is out of bounds for array of dimension ${A}`);const R=Array.from(d).filter((r,e)=>e!==w);if(R.length===0)return xt(t);const $=E.zeros(R,"int32"),T=$.data,x=d[w],y=R.reduce((r,e)=>r*e,1),{baseOffsets:u,axisStride:i}=q(d,F,N,w,y);if(l){const r=I;for(let e=0;e<y;e++){let o=u[e],n=r[o*2],s=r[o*2+1],a=0;o+=i;for(let m=1;m<x;m++){const c=r[o*2],f=r[o*2+1];J(c,f,n,s)>0&&(n=c,s=f,a=m),o+=i}T[e]=a}}else if(L(S)){const r=I;for(let e=0;e<y;e++){let o=u[e],n=r[o],s=0;o+=i;for(let a=1;a<x;a++){const m=r[o];m>n&&(n=m,s=a),o+=i}T[e]=s}}else for(let r=0;r<y;r++){let e=-1/0,o=0,n=u[r];for(let s=0;s<x;s++){const a=Number(I[n]);a>e&&(e=a,o=s),n+=i}T[r]=o}return $}function yt(t,p,S=0,l=!1){const d=t.dtype,A=t.shape,z=A.length,I=t.size,N=t.data,F=t.offset,h=t.strides,w=ft(t,p,l),R=t.isCContiguous;if(p===void 0){const s=Et(t);if(s!==null)return s;if(P(d)){const f=w;let b=0;if(R){const D=N;for(let v=0;v<I;v++){const C=D[(F+v)*2],B=D[(F+v)*2+1],O=C-f.re,V=B-f.im;b+=O*O+V*V}}else for(let D=0;D<I;D++){const v=t.iget(D),C=v.re-f.re,B=v.im-f.im;b+=C*C+B*B}return b/(I-S)}const a=w,m=X(d);if(m){if(m[0]=0,R)for(let f=0;f<I;f++){const b=Number(N[F+f])-a;m[0]+=b*b}else for(let f=0;f<I;f++){const b=Number(t.iget(f))-a;m[0]+=b*b}return m[0]/=I-S,m[0]}let c=0;if(R)for(let f=0;f<I;f++){const b=Number(N[F+f])-a;c+=b*b}else for(let f=0;f<I;f++){const b=Number(t.iget(f))-a;c+=b*b}return c/(I-S)}let $=p;if($<0&&($=z+$),$<0||$>=z)throw new Error(`axis ${p} is out of bounds for array of dimension ${z}`);const T=A[$],x=w,y=x.data,u=l?x.shape:Array.from(A).filter((s,a)=>a!==$),i=E.zeros(Array.from(u),"float64"),r=i.data,e=u.reduce((s,a)=>s*a,1),{baseOffsets:o,axisStride:n}=q(A,h,F,$,e);if(P(d)){const s=N,a=y;for(let m=0;m<e;m++){let c=0;const f=a[m*2],b=a[m*2+1];let D=o[m];for(let v=0;v<T;v++){const C=s[D*2],B=s[D*2+1],O=C-f,V=B-b;c+=O*O+V*V,D+=n}r[m]=c/(T-S)}}else{const s=X(d);if(s){const a=rt(d),m=new a(e);for(let c=0;c<e;c++){s[0]=0;const f=Number(y[c]);let b=o[c];for(let D=0;D<T;D++){const v=Number(N[b])-f;s[0]+=v*v,b+=n}s[0]/=T-S,m[c]=s[0]}return E.fromData(m,Array.from(u),d)}for(let a=0;a<e;a++){let m=0;const c=Number(y[a]);let f=o[a];for(let b=0;b<T;b++){const D=Number(N[f])-c;m+=D*D,f+=n}r[a]=m/(T-S)}}return i}function be(t,p,S=0,l=!1){if(p===void 0&&S===0&&!l){const N=qt(t);if(N!==null)return N}const d=yt(t,p,S,l);if(typeof d=="number")return Math.sqrt(d);const A=E.zeros(Array.from(d.shape),"float64"),z=d.data,I=A.data;for(let N=0;N<z.length;N++)I[N]=Math.sqrt(Number(z[N]));return A}function Qt(t,p,S=!1){const l=t.shape,d=l.length,A=t.size,z=t.data,I=t.offset,N=t.strides,F=t.isCContiguous;if(p===void 0){const i=Pt(t);if(i!==null)return i===1;if(F){for(let r=0;r<A;r++)if(!z[I+r])return!1}else for(let r=0;r<A;r++)if(!t.iget(r))return!1;return!0}let h=p;if(h<0&&(h=d+h),h<0||h>=d)throw new Error(`axis ${p} is out of bounds for array of dimension ${d}`);const w=Array.from(l).filter((i,r)=>r!==h);if(w.length===0){const i=Qt(t);if(!S)return i;const r=E.zeros(Array(d).fill(1),"bool");return r.iset(0,i?1:0),r}const R=E.zeros(w,"bool"),$=R.data,T=l[h],x=w.reduce((i,r)=>i*r,1),{baseOffsets:y,axisStride:u}=q(l,N,I,h,x);for(let i=0;i<x;i++){let r=!0,e=y[i];for(let o=0;o<T;o++){if(!z[e]){r=!1;break}e+=u}$[i]=r?1:0}if(S){const i=[...l];return i[h]=1,E.fromData($,i,"bool")}return R}function Kt(t,p,S=!1){const l=t.shape,d=l.length,A=t.size,z=t.data,I=t.offset,N=t.strides,F=t.isCContiguous;if(p===void 0){const i=Ut(t);if(i!==null)return i===1;if(F){for(let r=0;r<A;r++)if(z[I+r])return!0}else for(let r=0;r<A;r++)if(t.iget(r))return!0;return!1}let h=p;if(h<0&&(h=d+h),h<0||h>=d)throw new Error(`axis ${p} is out of bounds for array of dimension ${d}`);const w=Array.from(l).filter((i,r)=>r!==h);if(w.length===0){const i=Kt(t);if(!S)return i;const r=E.zeros(Array(d).fill(1),"bool");return r.iset(0,i?1:0),r}const R=E.zeros(w,"bool"),$=R.data,T=l[h],x=w.reduce((i,r)=>i*r,1),{baseOffsets:y,axisStride:u}=q(l,N,I,h,x);for(let i=0;i<x;i++){let r=!1,e=y[i];for(let o=0;o<T;o++){if(z[e]){r=!0;break}e+=u}$[i]=r?1:0}if(S){const i=[...l];return i[h]=1,E.fromData($,i,"bool")}return R}function jt(t,p){const S=t.dtype,l=t.shape,d=l.length,A=t.data,z=t.offset,I=t.strides,N=t.isCContiguous;if(P(S)){const o=A,n=t.size;if(p===void 0){const V=E.zeros([n],S),_=V.data;let g=0,M=0;if(N)for(let U=0;U<n;U++)g+=o[(z+U)*2],M+=o[(z+U)*2+1],_[U*2]=g,_[U*2+1]=M;else for(let U=0;U<n;U++){const K=t.iget(U);g+=K.re,M+=K.im,_[U*2]=g,_[U*2+1]=M}return V}let s=p;if(s<0&&(s=d+s),s<0||s>=d)throw new Error(`axis ${p} is out of bounds for array of dimension ${d}`);const a=E.zeros([...l],S),m=a.data,c=l[s],f=Array.from(l).filter((V,_)=>_!==s),b=f.length===0?1:f.reduce((V,_)=>V*_,1),{baseOffsets:D,axisStride:v}=q(l,I,z,s,b),C=ot(l),{baseOffsets:B,axisStride:O}=q(l,C,0,s,b);for(let V=0;V<b;V++){let _=D[V],g=B[V],M=0,U=0;for(let K=0;K<c;K++)M+=o[_*2],U+=o[_*2+1],m[g*2]=M,m[g*2+1]=U,_+=v,g+=O}return a}if(p===void 0){const o=t.size,n=X(S);if(n){const m=rt(S),c=new m(o);if(n[0]=0,N)for(let f=0;f<o;f++)n[0]+=Number(A[z+f]),c[f]=n[0];else for(let f=0;f<o;f++)n[0]+=Number(t.iget(f)),c[f]=n[0];return E.fromData(c,[o],S)}const s=new Float64Array(o);let a=0;if(N)for(let m=0;m<o;m++)a+=Number(A[z+m]),s[m]=a;else for(let m=0;m<o;m++)a+=Number(t.iget(m)),s[m]=a;return E.fromData(s,[o],"float64")}let F=p;if(F<0&&(F=d+F),F<0||F>=d)throw new Error(`axis ${p} is out of bounds for array of dimension ${d}`);const h=X(S),w=h?rt(S):null,R=w?new w(t.size):new Float64Array(t.size),$=l[F],T=Array.from(l).filter((o,n)=>n!==F),x=T.length===0?1:T.reduce((o,n)=>o*n,1),{baseOffsets:y,axisStride:u}=q(l,I,z,F,x),i=ot(l),{baseOffsets:r,axisStride:e}=q(l,i,0,F,x);if(h)for(let o=0;o<x;o++){let n=y[o],s=r[o];h[0]=0;for(let a=0;a<$;a++)h[0]+=Number(A[n]),R[s]=h[0],n+=u,s+=e}else for(let o=0;o<x;o++){let n=y[o],s=r[o],a=0;for(let m=0;m<$;m++)a+=Number(A[n]),R[s]=a,n+=u,s+=e}return E.fromData(R,[...l],h?S:"float64")}function Gt(t,p){const S=t.dtype,l=t.shape,d=l.length,A=t.data,z=t.offset,I=t.strides,N=t.isCContiguous;if(P(S)){const r=A,e=t.size;if(p===void 0){const B=E.zeros([e],S),O=B.data;let V=1,_=0;if(N)for(let g=0;g<e;g++){const M=r[(z+g)*2],U=r[(z+g)*2+1],K=V*M-_*U,Y=V*U+_*M;V=K,_=Y,O[g*2]=V,O[g*2+1]=_}else for(let g=0;g<e;g++){const M=t.iget(g),U=M.re,K=M.im,Y=V*U-_*K,it=V*K+_*U;V=Y,_=it,O[g*2]=V,O[g*2+1]=_}return B}let o=p;if(o<0&&(o=d+o),o<0||o>=d)throw new Error(`axis ${p} is out of bounds for array of dimension ${d}`);const n=E.zeros([...l],S),s=n.data,a=l[o],m=Array.from(l).filter((B,O)=>O!==o),c=m.length===0?1:m.reduce((B,O)=>B*O,1),{baseOffsets:f,axisStride:b}=q(l,I,z,o,c),D=ot(l),{baseOffsets:v,axisStride:C}=q(l,D,0,o,c);for(let B=0;B<c;B++){let O=f[B],V=v[B],_=1,g=0;for(let M=0;M<a;M++){const U=r[O*2],K=r[O*2+1],Y=_*U-g*K,it=_*K+g*U;_=Y,g=it,s[V*2]=_,s[V*2+1]=g,O+=b,V+=C}}return n}if(p===void 0){const r=t.size,e=new Float64Array(r);let o=1;if(N)for(let n=0;n<r;n++)o*=Number(A[z+n]),e[n]=o;else for(let n=0;n<r;n++)o*=Number(t.iget(n)),e[n]=o;return E.fromData(e,[r],"float64")}let F=p;if(F<0&&(F=d+F),F<0||F>=d)throw new Error(`axis ${p} is out of bounds for array of dimension ${d}`);const h=new Float64Array(t.size),w=l[F],R=Array.from(l).filter((r,e)=>e!==F),$=R.length===0?1:R.reduce((r,e)=>r*e,1),{baseOffsets:T,axisStride:x}=q(l,I,z,F,$),y=ot(l),{baseOffsets:u,axisStride:i}=q(l,y,0,F,$);for(let r=0;r<$;r++){let e=T[r],o=u[r],n=1;for(let s=0;s<w;s++)n*=Number(A[e]),h[o]=n,e+=x,o+=i}return E.fromData(h,[...l],"float64")}function Ne(t,p,S=!1){const l=t.dtype;if(P(l)){const R=tt(t,p,S),$=et(t,p,S);if(R instanceof Q&&$ instanceof Q)return new Q(R.re-$.re,R.im-$.im);const T=R,x=$,y=T.data,u=x.data,i=new Float64Array(T.size*2);for(let r=0;r<T.size;r++)i[r*2]=y[r*2]-u[r*2],i[r*2+1]=y[r*2+1]-u[r*2+1];return E.fromData(i,[...T.shape],l)}const d=tt(t,p,S),A=et(t,p,S);if(typeof d=="number"&&typeof A=="number"){const R=d-A;if(l==="int8"||l==="int16"||l==="int32"||l==="uint8"||l==="uint16"||l==="uint32"){const $=E.zeros([1],l);return $.iset(0,R),Number($.iget(0))}return R}const z=d,I=A,N=z.data,F=I.data,h=E.zeros([...z.shape],l),w=h.data;for(let R=0;R<z.size;R++)w[R]=Number(N[R])-Number(F[R]);return h}function Ht(t,p,S=!1){return nt(t,.5,p,S)}function Ae(t,p,S,l=!1){return nt(t,p/100,S,l)}function nt(t,p,S,l=!1){if(st(t.dtype,"quantile","Complex numbers are not orderable."),p<0||p>1)throw new Error("Quantile must be between 0 and 1");const d=t.shape,A=d.length,z=t.data,I=t.offset,N=t.strides;if(S===void 0){const u=Mt(t,p);if(u!==null)return u;const i=[];if(t.isCContiguous)for(let m=0;m<t.size;m++)i.push(Number(z[I+m]));else for(let m=0;m<t.size;m++)i.push(Number(t.iget(m)));i.sort((m,c)=>m-c);const e=i.length,o=p*(e-1),n=Math.floor(o),s=Math.ceil(o);if(n===s)return i[n];const a=o-n;return i[n]*(1-a)+i[s]*a}let F=S;if(F<0&&(F=A+F),F<0||F>=A)throw new Error(`axis ${S} is out of bounds for array of dimension ${A}`);const h=Array.from(d).filter((u,i)=>i!==F);if(h.length===0){const u=nt(t,p);if(!l)return u;const i=E.zeros(Array(A).fill(1),"float64");return i.iset(0,u),i}const w=h.reduce((u,i)=>u*i,1),R=d[F],$=new Float64Array(w),{baseOffsets:T,axisStride:x}=q(d,N,I,F,w);for(let u=0;u<w;u++){const i=[];let r=T[u];for(let a=0;a<R;a++)i.push(Number(z[r])),r+=x;i.sort((a,m)=>a-m);const e=i.length,o=p*(e-1),n=Math.floor(o),s=Math.ceil(o);if(n===s)$[u]=i[n];else{const a=o-n;$[u]=i[n]*(1-a)+i[s]*a}}const y=E.fromData($,h,"float64");if(l){const u=[...d];return u[F]=1,E.fromData($,u,"float64")}return y}function pt(t,p,S,l=!1){const d=t.dtype,A=t.shape,z=A.length,I=t.data,N=t.offset,F=t.strides;if(S===void 0)return ft(t,p,l);if(P(d)){const e=I,o=S.data,n=S.offset;if(p===void 0){let C=0,B=0,O=0;if(t.isCContiguous)for(let _=0;_<t.size;_++){const g=Number(o[n+_%S.size]),M=e[(N+_)*2],U=e[(N+_)*2+1];C+=M*g,B+=U*g,O+=g}else for(let _=0;_<t.size;_++){const g=Number(o[n+_%S.size]),M=t.iget(_);C+=M.re*g,B+=M.im*g,O+=g}return O===0?new Q(NaN,NaN):new Q(C/O,B/O)}let s=p;if(s<0&&(s=z+s),s<0||s>=z)throw new Error(`axis ${p} is out of bounds for array of dimension ${z}`);const a=Array.from(A).filter((C,B)=>B!==s);if(a.length===0){const C=pt(t,void 0,S);return l?j(C,z,d):C}const m=a.reduce((C,B)=>C*B,1),c=A[s],f=E.zeros(a,d),b=f.data,{baseOffsets:D,axisStride:v}=q(A,F,N,s,m);for(let C=0;C<m;C++){let B=0,O=0,V=0,_=D[C];for(let g=0;g<c;g++){const M=Number(o[n+g%S.size]),U=e[_*2],K=e[_*2+1];B+=U*M,O+=K*M,V+=M,_+=v}V===0?(b[C*2]=NaN,b[C*2+1]=NaN):(b[C*2]=B/V,b[C*2+1]=O/V)}if(l){const C=[...A];return C[s]=1,E.fromData(b,C,d)}return f}const h=S.offset;if(p===void 0){let e=0,o=0;const n=S.data;if(t.isCContiguous)for(let a=0;a<t.size;a++){const m=Number(n[h+a%S.size]);e+=Number(I[N+a])*m,o+=m}else for(let a=0;a<t.size;a++){const m=Number(n[h+a%S.size]);e+=Number(t.iget(a))*m,o+=m}return o===0?NaN:at(e/o,d)}let w=p;if(w<0&&(w=z+w),w<0||w>=z)throw new Error(`axis ${p} is out of bounds for array of dimension ${z}`);const R=Array.from(A).filter((e,o)=>o!==w);if(R.length===0){const e=pt(t,void 0,S);return l?j(e,z,"float64"):e}const $=R.reduce((e,o)=>e*o,1),T=A[w],x=S.data,y=new Float64Array($),{baseOffsets:u,axisStride:i}=q(A,F,N,w,$);for(let e=0;e<$;e++){let o=0,n=0,s=u[e];for(let a=0;a<T;a++){const m=Number(x[h+a%S.size]);o+=Number(I[s])*m,n+=m,s+=i}y[e]=n===0?NaN:o/n}const r=E.fromData(y,R,"float64");if(l){const e=[...A];return e[w]=1,E.fromData(y,e,"float64")}return r}function W(t,p){return isNaN(t)||isNaN(p)}function Jt(t,p,S=!1){const l=t.dtype,d=P(l),A=t.shape,z=A.length,I=t.data,N=t.offset,F=t.strides;if(!d&&!H(l))return k(t,p,S);if(p===void 0){const i=Tt(t);if(i!==null)return i;if(d){const n=I;let s=0,a=0;if(t.isCContiguous)for(let c=0;c<t.size;c++){const f=n[(N+c)*2],b=n[(N+c)*2+1];W(f,b)||(s+=f,a+=b)}else for(let c=0;c<t.size;c++){const f=t.iget(c),b=f.re,D=f.im;W(b,D)||(s+=b,a+=D)}return new Q(s,a)}const r=X(l);if(r){if(r[0]=0,t.isCContiguous)for(let s=0;s<t.size;s++){const a=Number(I[N+s]);isNaN(a)||(r[0]+=a)}else for(let s=0;s<t.size;s++){const a=Number(t.iget(s));isNaN(a)||(r[0]+=a)}return r[0]}let e=0;if(t.isCContiguous)for(let n=0;n<t.size;n++){const s=Number(I[N+n]);isNaN(s)||(e+=s)}else for(let n=0;n<t.size;n++){const s=Number(t.iget(n));isNaN(s)||(e+=s)}return e}let h=p;if(h<0&&(h=z+h),h<0||h>=z)throw new Error(`axis ${p} is out of bounds for array of dimension ${z}`);const w=Array.from(A).filter((i,r)=>r!==h);if(w.length===0){const i=Jt(t);return S?j(i,z,l):i}const R=w.reduce((i,r)=>i*r,1),$=A[h],{baseOffsets:T,axisStride:x}=q(A,F,N,h,R);if(d){const i=I,r=new Float64Array(R*2);for(let e=0;e<R;e++){let o=0,n=0,s=T[e];for(let a=0;a<$;a++){const m=i[s*2],c=i[s*2+1];W(m,c)||(o+=m,n+=c),s+=x}r[e*2]=o,r[e*2+1]=n}if(S){const e=[...A];return e[h]=1,E.fromData(r,e,l)}return E.fromData(r,w,l)}const y=new Float64Array(R);for(let i=0;i<R;i++){let r=0,e=T[i];for(let o=0;o<$;o++){const n=Number(I[e]);isNaN(n)||(r+=n),e+=x}y[i]=r}const u=E.fromData(y,w,"float64");if(S){const i=[...A];return i[h]=1,E.fromData(y,i,"float64")}return u}function Lt(t,p,S=!1){const l=t.dtype,d=P(l);if(!d&&!H(l))return mt(t,p,S);const A=t.shape,z=A.length,I=t.data,N=t.offset,F=t.strides;if(p===void 0){if(d){const e=I;let o=1,n=0;if(t.isCContiguous)for(let a=0;a<t.size;a++){const m=e[(N+a)*2],c=e[(N+a)*2+1];if(!W(m,c)){const f=o*m-n*c,b=o*c+n*m;o=f,n=b}}else for(let a=0;a<t.size;a++){const m=t.iget(a),c=m.re,f=m.im;if(!W(c,f)){const b=o*c-n*f,D=o*f+n*c;o=b,n=D}}return new Q(o,n)}let i=1;if(t.isCContiguous)for(let e=0;e<t.size;e++){const o=Number(I[N+e]);isNaN(o)||(i*=o)}else for(let e=0;e<t.size;e++){const o=Number(t.iget(e));isNaN(o)||(i*=o)}return i}let h=p;if(h<0&&(h=z+h),h<0||h>=z)throw new Error(`axis ${p} is out of bounds for array of dimension ${z}`);const w=Array.from(A).filter((i,r)=>r!==h);if(w.length===0){const i=Lt(t);return S?j(i,z,l):i}const R=w.reduce((i,r)=>i*r,1),$=A[h],{baseOffsets:T,axisStride:x}=q(A,F,N,h,R);if(d){const i=I,r=new Float64Array(R*2);for(let e=0;e<R;e++){let o=1,n=0,s=T[e];for(let a=0;a<$;a++){const m=i[s*2],c=i[s*2+1];if(!W(m,c)){const f=o*m-n*c,b=o*c+n*m;o=f,n=b}s+=x}r[e*2]=o,r[e*2+1]=n}if(S){const e=[...A];return e[h]=1,E.fromData(r,e,l)}return E.fromData(r,w,l)}const y=new Float64Array(R);for(let i=0;i<R;i++){let r=1,e=T[i];for(let o=0;o<$;o++){const n=Number(I[e]);isNaN(n)||(r*=n),e+=x}y[i]=r}const u=E.fromData(y,w,"float64");if(S){const i=[...A];return i[h]=1,E.fromData(y,i,"float64")}return u}function Xt(t,p,S=!1){const l=t.dtype,d=P(l);if(!d&&!H(l))return ft(t,p,S);const A=t.shape,z=A.length,I=t.data,N=t.offset,F=t.strides;if(p===void 0){if(d){const n=I;let s=0,a=0,m=0;if(t.isCContiguous)for(let f=0;f<t.size;f++){const b=n[(N+f)*2],D=n[(N+f)*2+1];W(b,D)||(s+=b,a+=D,m++)}else for(let f=0;f<t.size;f++){const b=t.iget(f),D=b.re,v=b.im;W(D,v)||(s+=D,a+=v,m++)}return m===0?new Q(NaN,NaN):new Q(s/m,a/m)}const i=X(l);let r=0;const e=t.isCContiguous;if(i){if(i[0]=0,e)for(let n=0;n<t.size;n++){const s=Number(I[N+n]);isNaN(s)||(i[0]+=s,r++)}else for(let n=0;n<t.size;n++){const s=Number(t.iget(n));isNaN(s)||(i[0]+=s,r++)}return r===0?NaN:(i[0]/=r,i[0])}let o=0;if(e)for(let n=0;n<t.size;n++){const s=Number(I[N+n]);isNaN(s)||(o+=s,r++)}else for(let n=0;n<t.size;n++){const s=Number(t.iget(n));isNaN(s)||(o+=s,r++)}return r===0?NaN:o/r}let h=p;if(h<0&&(h=z+h),h<0||h>=z)throw new Error(`axis ${p} is out of bounds for array of dimension ${z}`);const w=Array.from(A).filter((i,r)=>r!==h);if(w.length===0){const i=Xt(t);return S?j(i,z,l):i}const R=w.reduce((i,r)=>i*r,1),$=A[h],{baseOffsets:T,axisStride:x}=q(A,F,N,h,R);if(d){const i=I,r=new Float64Array(R*2);for(let e=0;e<R;e++){let o=0,n=0,s=0,a=T[e];for(let m=0;m<$;m++){const c=i[a*2],f=i[a*2+1];W(c,f)||(o+=c,n+=f,s++),a+=x}s===0?(r[e*2]=NaN,r[e*2+1]=NaN):(r[e*2]=o/s,r[e*2+1]=n/s)}if(S){const e=[...A];return e[h]=1,E.fromData(r,e,l)}return E.fromData(r,w,l)}const y=new Float64Array(R);for(let i=0;i<R;i++){let r=0,e=0,o=T[i];for(let n=0;n<$;n++){const s=Number(I[o]);isNaN(s)||(r+=s,e++),o+=x}y[i]=e===0?NaN:r/e}const u=E.fromData(y,w,"float64");if(S){const i=[...A];return i[h]=1,E.fromData(y,i,"float64")}return u}function lt(t,p,S=0,l=!1){const d=t.dtype;if(!P(d)&&!H(d))return yt(t,p,S,l);const A=t.shape,z=A.length,I=t.data,N=t.offset,F=t.strides;if(P(d)){const i=I;if(p===void 0){let f=0,b=0,D=0;const v=t.isCContiguous;if(v)for(let V=0;V<t.size;V++){const _=i[(N+V)*2],g=i[(N+V)*2+1];W(_,g)||(f+=_,b+=g,D++)}else for(let V=0;V<t.size;V++){const _=t.iget(V),g=_.re,M=_.im;W(g,M)||(f+=g,b+=M,D++)}if(D-S<=0)return NaN;const C=f/D,B=b/D;let O=0;if(v)for(let V=0;V<t.size;V++){const _=i[(N+V)*2],g=i[(N+V)*2+1];if(!W(_,g)){const M=_-C,U=g-B;O+=M*M+U*U}}else for(let V=0;V<t.size;V++){const _=t.iget(V),g=_.re,M=_.im;if(!W(g,M)){const U=g-C,K=M-B;O+=U*U+K*K}}return O/(D-S)}let r=p;if(r<0&&(r=z+r),r<0||r>=z)throw new Error(`axis ${p} is out of bounds for array of dimension ${z}`);const e=Array.from(A).filter((f,b)=>b!==r);if(e.length===0){const f=lt(t,void 0,S);return l?j(f,z,"float64"):f}const o=e.reduce((f,b)=>f*b,1),n=A[r],s=new Float64Array(o),{baseOffsets:a,axisStride:m}=q(A,F,N,r,o);for(let f=0;f<o;f++){let b=0,D=0,v=0,C=a[f];for(let _=0;_<n;_++){const g=i[C*2],M=i[C*2+1];W(g,M)||(b+=g,D+=M,v++),C+=m}if(v-S<=0){s[f]=NaN;continue}const B=b/v,O=D/v;let V=0;C=a[f];for(let _=0;_<n;_++){const g=i[C*2],M=i[C*2+1];if(!W(g,M)){const U=g-B,K=M-O;V+=U*U+K*K}C+=m}s[f]=V/(v-S)}const c=E.fromData(s,e,"float64");if(l){const f=[...A];return f[r]=1,E.fromData(s,f,"float64")}return c}if(p===void 0){let i=0,r=0;const e=t.isCContiguous;if(e)for(let s=0;s<t.size;s++){const a=Number(I[N+s]);isNaN(a)||(i+=a,r++)}else for(let s=0;s<t.size;s++){const a=Number(t.iget(s));isNaN(a)||(i+=a,r++)}if(r-S<=0)return NaN;const o=i/r;let n=0;if(e)for(let s=0;s<t.size;s++){const a=Number(I[N+s]);isNaN(a)||(n+=(a-o)**2)}else for(let s=0;s<t.size;s++){const a=Number(t.iget(s));isNaN(a)||(n+=(a-o)**2)}return n/(r-S)}let h=p;if(h<0&&(h=z+h),h<0||h>=z)throw new Error(`axis ${p} is out of bounds for array of dimension ${z}`);const w=Array.from(A).filter((i,r)=>r!==h);if(w.length===0){const i=lt(t,void 0,S);return l?j(i,z,"float64"):i}const R=w.reduce((i,r)=>i*r,1),$=A[h],T=new Float64Array(R),{baseOffsets:x,axisStride:y}=q(A,F,N,h,R);for(let i=0;i<R;i++){let r=0,e=0,o=x[i];for(let a=0;a<$;a++){const m=Number(I[o]);isNaN(m)||(r+=m,e++),o+=y}if(e-S<=0){T[i]=NaN;continue}const n=r/e;let s=0;o=x[i];for(let a=0;a<$;a++){const m=Number(I[o]);isNaN(m)||(s+=(m-n)**2),o+=y}T[i]=s/(e-S)}const u=E.fromData(T,w,"float64");if(l){const i=[...A];return i[h]=1,E.fromData(T,i,"float64")}return u}function Se(t,p,S=0,l=!1){const d=lt(t,p,S,l);if(typeof d=="number")return Math.sqrt(d);const A=d,z=new Float64Array(A.size);for(let I=0;I<A.size;I++)z[I]=Math.sqrt(Number(A.data[I]));return E.fromData(z,[...A.shape],"float64")}function bt(t,p,S=!1){const l=t.dtype,d=t.shape,A=d.length,z=t.data,I=t.offset,N=t.strides;if(!P(l)&&!H(l))return et(t,p,S);if(P(l)){const u=z;if(p===void 0){let c=1/0,f=1/0,b=!1;if(t.isCContiguous)for(let v=0;v<t.size;v++){const C=u[(I+v)*2],B=u[(I+v)*2+1];isNaN(C)||isNaN(B)||(b?(C<c||C===c&&B<f)&&(c=C,f=B):(c=C,f=B,b=!0))}else for(let v=0;v<t.size;v++){const C=t.iget(v),B=C.re,O=C.im;isNaN(B)||isNaN(O)||(b?(B<c||B===c&&O<f)&&(c=B,f=O):(c=B,f=O,b=!0))}return b?new Q(c,f):new Q(NaN,NaN)}let i=p;if(i<0&&(i=A+i),i<0||i>=A)throw new Error(`axis ${p} is out of bounds for array of dimension ${A}`);const r=Array.from(d).filter((c,f)=>f!==i);if(r.length===0){const c=bt(t);return S?j(c,A,l):c}const e=r.reduce((c,f)=>c*f,1),o=d[i],n=new Float64Array(e*2),{baseOffsets:s,axisStride:a}=q(d,N,I,i,e);for(let c=0;c<e;c++){let f=1/0,b=1/0,D=!1,v=s[c];for(let C=0;C<o;C++){const B=u[v*2],O=u[v*2+1];v+=a,!(isNaN(B)||isNaN(O))&&(D?(B<f||B===f&&O<b)&&(f=B,b=O):(f=B,b=O,D=!0))}n[c*2]=D?f:NaN,n[c*2+1]=D?b:NaN}const m=E.fromData(n,r,l);if(S){const c=[...d];return c[i]=1,E.fromData(n,c,l)}return m}if(p===void 0){const u=Ot(t);if(u!==null)return u;let i=1/0;if(t.isCContiguous)for(let e=0;e<t.size;e++){const o=Number(z[I+e]);!isNaN(o)&&o<i&&(i=o)}else for(let e=0;e<t.size;e++){const o=Number(t.iget(e));!isNaN(o)&&o<i&&(i=o)}return i===1/0?NaN:i}let F=p;if(F<0&&(F=A+F),F<0||F>=A)throw new Error(`axis ${p} is out of bounds for array of dimension ${A}`);const h=Array.from(d).filter((u,i)=>i!==F);if(h.length===0){const u=bt(t);return S?j(u,A,"float64"):u}const w=h.reduce((u,i)=>u*i,1),R=d[F],$=new Float64Array(w),{baseOffsets:T,axisStride:x}=q(d,N,I,F,w);for(let u=0;u<w;u++){let i=1/0,r=T[u];for(let e=0;e<R;e++){const o=Number(z[r]);!isNaN(o)&&o<i&&(i=o),r+=x}$[u]=i===1/0?NaN:i}const y=E.fromData($,h,"float64");if(S){const u=[...d];return u[F]=1,E.fromData($,u,"float64")}return y}function Nt(t,p,S=!1){const l=t.dtype,d=t.shape,A=d.length,z=t.data,I=t.offset,N=t.strides;if(!P(l)&&!H(l))return tt(t,p,S);if(P(l)){const u=z;if(p===void 0){let c=-1/0,f=-1/0,b=!1;if(t.isCContiguous)for(let v=0;v<t.size;v++){const C=u[(I+v)*2],B=u[(I+v)*2+1];isNaN(C)||isNaN(B)||(b?(C>c||C===c&&B>f)&&(c=C,f=B):(c=C,f=B,b=!0))}else for(let v=0;v<t.size;v++){const C=t.iget(v),B=C.re,O=C.im;isNaN(B)||isNaN(O)||(b?(B>c||B===c&&O>f)&&(c=B,f=O):(c=B,f=O,b=!0))}return b?new Q(c,f):new Q(NaN,NaN)}let i=p;if(i<0&&(i=A+i),i<0||i>=A)throw new Error(`axis ${p} is out of bounds for array of dimension ${A}`);const r=Array.from(d).filter((c,f)=>f!==i);if(r.length===0){const c=Nt(t);return S?j(c,A,l):c}const e=r.reduce((c,f)=>c*f,1),o=d[i],n=new Float64Array(e*2),{baseOffsets:s,axisStride:a}=q(d,N,I,i,e);for(let c=0;c<e;c++){let f=-1/0,b=-1/0,D=!1,v=s[c];for(let C=0;C<o;C++){const B=u[v*2],O=u[v*2+1];v+=a,!(isNaN(B)||isNaN(O))&&(D?(B>f||B===f&&O>b)&&(f=B,b=O):(f=B,b=O,D=!0))}n[c*2]=D?f:NaN,n[c*2+1]=D?b:NaN}const m=E.fromData(n,r,l);if(S){const c=[...d];return c[i]=1,E.fromData(n,c,l)}return m}if(p===void 0){const u=Vt(t);if(u!==null)return u;let i=-1/0;if(t.isCContiguous)for(let e=0;e<t.size;e++){const o=Number(z[I+e]);!isNaN(o)&&o>i&&(i=o)}else for(let e=0;e<t.size;e++){const o=Number(t.iget(e));!isNaN(o)&&o>i&&(i=o)}return i===-1/0?NaN:i}let F=p;if(F<0&&(F=A+F),F<0||F>=A)throw new Error(`axis ${p} is out of bounds for array of dimension ${A}`);const h=Array.from(d).filter((u,i)=>i!==F);if(h.length===0){const u=Nt(t);return S?j(u,A,"float64"):u}const w=h.reduce((u,i)=>u*i,1),R=d[F],$=new Float64Array(w),{baseOffsets:T,axisStride:x}=q(d,N,I,F,w);for(let u=0;u<w;u++){let i=-1/0,r=T[u];for(let e=0;e<R;e++){const o=Number(z[r]);!isNaN(o)&&o>i&&(i=o),r+=x}$[u]=i===-1/0?NaN:i}const y=E.fromData($,h,"float64");if(S){const u=[...d];return u[F]=1,E.fromData($,u,"float64")}return y}function At(t,p){const S=t.dtype;if(!P(S)&&!H(S))return dt(t,p);const l=t.shape,d=l.length,A=t.data,z=t.offset,I=t.strides;if(P(S)){const x=A;if(p===void 0){let s=1/0,a=1/0,m=-1;if(t.isCContiguous)for(let f=0;f<t.size;f++){const b=x[(z+f)*2],D=x[(z+f)*2+1];!W(b,D)&&J(b,D,s,a)<0&&(s=b,a=D,m=f)}else for(let f=0;f<t.size;f++){const b=t.iget(f),D=b.re,v=b.im;!W(D,v)&&J(D,v,s,a)<0&&(s=D,a=v,m=f)}return m}let y=p;if(y<0&&(y=d+y),y<0||y>=d)throw new Error(`axis ${p} is out of bounds for array of dimension ${d}`);const u=Array.from(l).filter((s,a)=>a!==y);if(u.length===0)return At(t);const i=u.reduce((s,a)=>s*a,1),r=l[y],e=new Int32Array(i),{baseOffsets:o,axisStride:n}=q(l,I,z,y,i);for(let s=0;s<i;s++){let a=1/0,m=1/0,c=0,f=o[s];for(let b=0;b<r;b++){const D=x[f*2],v=x[f*2+1];!W(D,v)&&J(D,v,a,m)<0&&(a=D,m=v,c=b),f+=n}e[s]=c}return E.fromData(e,u,"int32")}if(p===void 0){let x=1/0,y=-1;if(t.isCContiguous)for(let i=0;i<t.size;i++){const r=Number(A[z+i]);!isNaN(r)&&r<x&&(x=r,y=i)}else for(let i=0;i<t.size;i++){const r=Number(t.iget(i));!isNaN(r)&&r<x&&(x=r,y=i)}return y}let N=p;if(N<0&&(N=d+N),N<0||N>=d)throw new Error(`axis ${p} is out of bounds for array of dimension ${d}`);const F=Array.from(l).filter((x,y)=>y!==N);if(F.length===0)return At(t);const h=F.reduce((x,y)=>x*y,1),w=l[N],R=new Int32Array(h),{baseOffsets:$,axisStride:T}=q(l,I,z,N,h);for(let x=0;x<h;x++){let y=1/0,u=0,i=$[x];for(let r=0;r<w;r++){const e=Number(A[i]);!isNaN(e)&&e<y&&(y=e,u=r),i+=T}R[x]=u}return E.fromData(R,F,"int32")}function St(t,p){const S=t.dtype;if(!P(S)&&!H(S))return xt(t,p);const l=t.shape,d=l.length,A=t.data,z=t.offset,I=t.strides;if(P(S)){const x=A;if(p===void 0){let s=-1/0,a=-1/0,m=-1;if(t.isCContiguous)for(let f=0;f<t.size;f++){const b=x[(z+f)*2],D=x[(z+f)*2+1];!W(b,D)&&J(b,D,s,a)>0&&(s=b,a=D,m=f)}else for(let f=0;f<t.size;f++){const b=t.iget(f),D=b.re,v=b.im;!W(D,v)&&J(D,v,s,a)>0&&(s=D,a=v,m=f)}return m}let y=p;if(y<0&&(y=d+y),y<0||y>=d)throw new Error(`axis ${p} is out of bounds for array of dimension ${d}`);const u=Array.from(l).filter((s,a)=>a!==y);if(u.length===0)return St(t);const i=u.reduce((s,a)=>s*a,1),r=l[y],e=new Int32Array(i),{baseOffsets:o,axisStride:n}=q(l,I,z,y,i);for(let s=0;s<i;s++){let a=-1/0,m=-1/0,c=0,f=o[s];for(let b=0;b<r;b++){const D=x[f*2],v=x[f*2+1];!W(D,v)&&J(D,v,a,m)>0&&(a=D,m=v,c=b),f+=n}e[s]=c}return E.fromData(e,u,"int32")}if(p===void 0){let x=-1/0,y=-1;if(t.isCContiguous)for(let i=0;i<t.size;i++){const r=Number(A[z+i]);!isNaN(r)&&r>x&&(x=r,y=i)}else for(let i=0;i<t.size;i++){const r=Number(t.iget(i));!isNaN(r)&&r>x&&(x=r,y=i)}return y}let N=p;if(N<0&&(N=d+N),N<0||N>=d)throw new Error(`axis ${p} is out of bounds for array of dimension ${d}`);const F=Array.from(l).filter((x,y)=>y!==N);if(F.length===0)return St(t);const h=F.reduce((x,y)=>x*y,1),w=l[N],R=new Int32Array(h),{baseOffsets:$,axisStride:T}=q(l,I,z,N,h);for(let x=0;x<h;x++){let y=-1/0,u=0,i=$[x];for(let r=0;r<w;r++){const e=Number(A[i]);!isNaN(e)&&e>y&&(y=e,u=r),i+=T}R[x]=u}return E.fromData(R,F,"int32")}function Ie(t,p){const S=t.dtype;if(!P(S)&&!H(S))return jt(t,p);const l=t.shape,d=l.length,A=t.data,z=t.offset;if(P(S)){const x=A,y=t.size;if(p===void 0){const c=E.zeros([y],S),f=c.data;let b=0,D=0;if(t.isCContiguous)for(let C=0;C<y;C++){const B=x[(z+C)*2],O=x[(z+C)*2+1];W(B,O)||(b+=B,D+=O),f[C*2]=b,f[C*2+1]=D}else for(let C=0;C<y;C++){const B=t.iget(C),O=B.re,V=B.im;W(O,V)||(b+=O,D+=V),f[C*2]=b,f[C*2+1]=D}return c}let u=p;if(u<0&&(u=d+u),u<0||u>=d)throw new Error(`axis ${p} is out of bounds for array of dimension ${d}`);const i=E.zeros([...l],S),r=i.data,e=l[u],o=[];let n=1;for(let c=d-1;c>=0;c--)o.unshift(n),n*=l[c];const s=t.size,a=o[u];if(t.isCContiguous)for(let c=0;c<s;c++){const f=x[(z+c)*2],b=x[(z+c)*2+1],D=Math.floor(c/a)%e,v=W(f,b);D===0?(r[c*2]=v?0:f,r[c*2+1]=v?0:b):(r[c*2]=r[(c-a)*2]+(v?0:f),r[c*2+1]=r[(c-a)*2+1]+(v?0:b))}else for(let c=0;c<s;c++){const f=t.iget(c),b=f.re,D=f.im,v=Math.floor(c/a)%e,C=W(b,D);v===0?(r[c*2]=C?0:b,r[c*2+1]=C?0:D):(r[c*2]=r[(c-a)*2]+(C?0:b),r[c*2+1]=r[(c-a)*2+1]+(C?0:D))}return i}if(p===void 0){const x=t.size,y=new Float64Array(x);let u=0;if(t.isCContiguous)for(let r=0;r<x;r++){const e=Number(A[z+r]);isNaN(e)||(u+=e),y[r]=u}else for(let r=0;r<x;r++){const e=Number(t.iget(r));isNaN(e)||(u+=e),y[r]=u}return E.fromData(y,[x],"float64")}let I=p;if(I<0&&(I=d+I),I<0||I>=d)throw new Error(`axis ${p} is out of bounds for array of dimension ${d}`);const N=new Float64Array(t.size),F=l[I],h=[];let w=1;for(let x=d-1;x>=0;x--)h.unshift(w),w*=l[x];const R=t.size,$=h[I];if(t.isCContiguous)for(let x=0;x<R;x++){const y=Number(A[z+x]);Math.floor(x/$)%F===0?N[x]=isNaN(y)?0:y:N[x]=N[x-$]+(isNaN(y)?0:y)}else for(let x=0;x<R;x++){const y=Number(t.iget(x));Math.floor(x/$)%F===0?N[x]=isNaN(y)?0:y:N[x]=N[x-$]+(isNaN(y)?0:y)}return E.fromData(N,[...l],"float64")}function he(t,p){const S=t.dtype;if(!P(S)&&!H(S))return Gt(t,p);const l=t.shape,d=l.length,A=t.data,z=t.offset;if(P(S)){const x=A,y=t.size;if(p===void 0){const c=E.zeros([y],S),f=c.data;let b=1,D=0;if(t.isCContiguous)for(let C=0;C<y;C++){const B=x[(z+C)*2],O=x[(z+C)*2+1];if(!W(B,O)){const V=b*B-D*O,_=b*O+D*B;b=V,D=_}f[C*2]=b,f[C*2+1]=D}else for(let C=0;C<y;C++){const B=t.iget(C),O=B.re,V=B.im;if(!W(O,V)){const _=b*O-D*V,g=b*V+D*O;b=_,D=g}f[C*2]=b,f[C*2+1]=D}return c}let u=p;if(u<0&&(u=d+u),u<0||u>=d)throw new Error(`axis ${p} is out of bounds for array of dimension ${d}`);const i=E.zeros([...l],S),r=i.data,e=l[u],o=[];let n=1;for(let c=d-1;c>=0;c--)o.unshift(n),n*=l[c];const s=t.size,a=o[u];if(t.isCContiguous)for(let c=0;c<s;c++){const f=x[(z+c)*2],b=x[(z+c)*2+1],D=Math.floor(c/a)%e,v=W(f,b);if(D===0)r[c*2]=v?1:f,r[c*2+1]=v?0:b;else{const C=r[(c-a)*2],B=r[(c-a)*2+1];v?(r[c*2]=C,r[c*2+1]=B):(r[c*2]=C*f-B*b,r[c*2+1]=C*b+B*f)}}else for(let c=0;c<s;c++){const f=t.iget(c),b=f.re,D=f.im,v=Math.floor(c/a)%e,C=W(b,D);if(v===0)r[c*2]=C?1:b,r[c*2+1]=C?0:D;else{const B=r[(c-a)*2],O=r[(c-a)*2+1];C?(r[c*2]=B,r[c*2+1]=O):(r[c*2]=B*b-O*D,r[c*2+1]=B*D+O*b)}}return i}if(p===void 0){const x=t.size,y=new Float64Array(x);let u=1;if(t.isCContiguous)for(let r=0;r<x;r++){const e=Number(A[z+r]);isNaN(e)||(u*=e),y[r]=u}else for(let r=0;r<x;r++){const e=Number(t.iget(r));isNaN(e)||(u*=e),y[r]=u}return E.fromData(y,[x],"float64")}let I=p;if(I<0&&(I=d+I),I<0||I>=d)throw new Error(`axis ${p} is out of bounds for array of dimension ${d}`);const N=new Float64Array(t.size),F=l[I],h=[];let w=1;for(let x=d-1;x>=0;x--)h.unshift(w),w*=l[x];const R=t.size,$=h[I];if(t.isCContiguous)for(let x=0;x<R;x++){const y=Number(A[z+x]);Math.floor(x/$)%F===0?N[x]=isNaN(y)?1:y:N[x]=N[x-$]*(isNaN(y)?1:y)}else for(let x=0;x<R;x++){const y=Number(t.iget(x));Math.floor(x/$)%F===0?N[x]=isNaN(y)?1:y:N[x]=N[x-$]*(isNaN(y)?1:y)}return E.fromData(N,[...l],"float64")}function Yt(t,p,S=!1){if(st(t.dtype,"nanmedian","Complex numbers are not orderable."),!H(t.dtype))return Ht(t,p,S);const l=t.shape,d=l.length,A=t.data,z=t.offset,I=t.strides;if(p===void 0){const y=[];if(t.isCContiguous)for(let e=0;e<t.size;e++){const o=Number(A[z+e]);isNaN(o)||y.push(o)}else for(let e=0;e<t.size;e++){const o=Number(t.iget(e));isNaN(o)||y.push(o)}if(y.length===0)return NaN;y.sort((e,o)=>e-o);const i=y.length,r=Math.floor(i/2);return i%2===0?(y[r-1]+y[r])/2:y[r]}let N=p;if(N<0&&(N=d+N),N<0||N>=d)throw new Error(`axis ${p} is out of bounds for array of dimension ${d}`);const F=Array.from(l).filter((y,u)=>u!==N);if(F.length===0){const y=Yt(t);return S?j(y,d,"float64"):y}const h=F.reduce((y,u)=>y*u,1),w=l[N],R=new Float64Array(h),{baseOffsets:$,axisStride:T}=q(l,I,z,N,h);for(let y=0;y<h;y++){const u=[];let i=$[y];for(let o=0;o<w;o++){const n=Number(A[i]);isNaN(n)||u.push(n),i+=T}if(u.length===0){R[y]=NaN;continue}u.sort((o,n)=>o-n);const r=u.length,e=Math.floor(r/2);r%2===0?R[y]=(u[e-1]+u[e])/2:R[y]=u[e]}const x=E.fromData(R,F,"float64");if(S){const y=[...l];return y[N]=1,E.fromData(R,y,"float64")}return x}function It(t,p,S,l=!1){if(st(t.dtype,"nanquantile","Complex numbers are not orderable."),!H(t.dtype))return nt(t,p,S,l);if(p<0||p>1)throw new Error("Quantile must be between 0 and 1");const d=t.shape,A=d.length,z=t.data,I=t.offset,N=t.strides;if(S===void 0){const u=[];if(t.isCContiguous)for(let a=0;a<t.size;a++){const m=Number(z[I+a]);isNaN(m)||u.push(m)}else for(let a=0;a<t.size;a++){const m=Number(t.iget(a));isNaN(m)||u.push(m)}if(u.length===0)return NaN;u.sort((a,m)=>a-m);const r=u.length,e=p*(r-1),o=Math.floor(e),n=Math.ceil(e);if(o===n)return u[o];const s=e-o;return u[o]*(1-s)+u[n]*s}let F=S;if(F<0&&(F=A+F),F<0||F>=A)throw new Error(`axis ${S} is out of bounds for array of dimension ${A}`);const h=Array.from(d).filter((u,i)=>i!==F);if(h.length===0){const u=It(t,p);return l?j(u,A,"float64"):u}const w=h.reduce((u,i)=>u*i,1),R=d[F],$=new Float64Array(w),{baseOffsets:T,axisStride:x}=q(d,N,I,F,w);for(let u=0;u<w;u++){const i=[];let r=T[u];for(let a=0;a<R;a++){const m=Number(z[r]);isNaN(m)||i.push(m),r+=x}if(i.length===0){$[u]=NaN;continue}i.sort((a,m)=>a-m);const e=i.length,o=p*(e-1),n=Math.floor(o),s=Math.ceil(o);if(n===s)$[u]=i[n];else{const a=o-n;$[u]=i[n]*(1-a)+i[s]*a}}const y=E.fromData($,h,"float64");if(l){const u=[...d];return u[F]=1,E.fromData($,u,"float64")}return y}function ze(t,p,S,l=!1){return It(t,p/100,S,l)}export{Qt as all,Kt as any,xt as argmax,dt as argmin,pt as average,Gt as cumprod,jt as cumsum,tt as max,ft as mean,Ht as median,et as min,St as nanargmax,At as nanargmin,he as nancumprod,Ie as nancumsum,Nt as nanmax,Xt as nanmean,Yt as nanmedian,bt as nanmin,ze as nanpercentile,Lt as nanprod,It as nanquantile,Se as nanstd,Jt as nansum,lt as nanvar,Ae as percentile,mt as prod,Ne as ptp,nt as quantile,be as std,k as sum,yt as variance};
1
+ import{ArrayStorage as O}from"../storage.js";import{hasFloat16 as mt,isBigIntDType as j,isComplexDType as U,isFloatDType as H,throwIfComplex as dt,reductionAccumDtype as it}from"../dtype.js";import{computeStrides as k,precomputeAxisOffsets as W}from"../internal/indexing.js";import{Complex as Q}from"../complex.js";import{wasmReduceSum as Dt,wasmReduceSumStrided as Ct,wasmReduceSumStridedComplex as Ft,wasmReduceSumComplex as Rt}from"../wasm/reduce_sum.js";import{wasmReduceMax as vt,wasmReduceMaxStrided as $t}from"../wasm/reduce_max.js";import{wasmReduceMin as gt,wasmReduceMinStrided as Bt}from"../wasm/reduce_min.js";import{wasmReduceArgmax as Ot,wasmReduceArgmaxStrided as Et}from"../wasm/reduce_argmax.js";import{wasmReduceArgmin as Tt,wasmReduceArgminStrided as _t}from"../wasm/reduce_argmin.js";import{wasmReduceMean as Vt,wasmReduceMeanStrided as Mt}from"../wasm/reduce_mean.js";import{wasmReduceVar as Ut}from"../wasm/reduce_var.js";import{wasmReduceNansum as Pt}from"../wasm/reduce_nansum.js";import{wasmReduceNanmin as Wt}from"../wasm/reduce_nanmin.js";import{wasmReduceNanmax as qt}from"../wasm/reduce_nanmax.js";import{wasmReduceProd as Qt,wasmReduceProdStrided as Kt,wasmReduceProdStridedComplex as jt}from"../wasm/reduce_prod.js";import{wasmReduceQuantile as Gt,wasmReduceQuantileStrided as Ht}from"../wasm/reduce_quantile.js";import{wasmReduceAny as Jt}from"../wasm/reduce_any.js";import{wasmReduceAll as Lt}from"../wasm/reduce_all.js";import{wasmReduceStd as Xt}from"../wasm/reduce_std.js";const J=new Float32Array(2),Z=typeof globalThis.Float16Array<"u"?new Float16Array(2):null;function Y(r){return r==="float16"?Z:r==="float32"?J:null}function lt(r,b){const S=Y(b);return S?(S[0]=r,S[0]):r}function pt(r){switch(r){case"bool":case"int8":case"int16":case"int32":return"int64";case"uint8":case"uint16":case"uint32":return"uint64";default:return r}}function Yt(r){switch(r){case"bool":case"int8":case"int16":case"int32":case"uint8":case"uint16":case"uint32":case"int64":case"uint64":return"float64";default:return r}}function G(r,b,S){const u=O.zeros(Array(b).fill(1),S);return u.iset(0,r),u}function et(r,b,S=!1){const u=r.dtype,m=r.shape,y=m.length,h=r.size,A=r.data,x=r.offset,D=r.strides,w=r.isCContiguous;if(b===void 0){const e=Dt(r);if(e!==null)return e;if(U(u)){const o=Rt(r);if(o!==null)return new Q(o[0],o[1]);let t=0,s=0;if(w){const a=A;for(let f=0;f<h;f++)t+=a[(x+f)*2],s+=a[(x+f)*2+1]}else for(let a=0;a<h;a++){const f=r.iget(a);t+=f.re,s+=f.im}return new Q(t,s)}else if(j(u)){let o=BigInt(0);if(w){const t=A;for(let s=0;s<h;s++)o+=t[x+s]}else for(let t=0;t<h;t++)o+=r.iget(t);return Number(o)}else if(u==="float32"||u==="float16"&&Z){const o=Y(u);if(o[0]=0,w){const t=u==="float16"?new Float32Array(A.subarray(x,x+h)):A,s=u==="float16"?0:x;for(let a=0;a<h;a++)o[0]+=Number(t[s+a])}else for(let t=0;t<h;t++)o[0]+=Number(r.iget(t));return o[0]}else{let o=0;if(w)if(x===0)for(let t=0;t<h;t++)o+=Number(A[t]);else for(let t=0;t<h;t++)o+=Number(A[x+t]);else for(let t=0;t<h;t++)o+=Number(r.iget(t));return o}}let z=b;if(z<0&&(z=y+z),z<0||z>=y)throw new Error(`axis ${b} is out of bounds for array of dimension ${y}`);const C=pt(u),g=Array.from(m).filter((e,o)=>o!==z);if(g.length===0){const e=et(r);if(!S)return e;const o=O.zeros(Array(y).fill(1),C);return o.iset(0,e),o}const $=m[z],v=g.reduce((e,o)=>e*o,1);if(w&&!U(u)){const e=m.slice(0,z).reduce((s,a)=>s*a,1),o=m.slice(z+1).reduce((s,a)=>s*a,1),t=Ct(r,e,$,o);if(t){const s=S?m.map((a,f)=>f===z?1:a):g;if(C==="float64"){const a=new Array(s.length);let f=1;for(let l=s.length-1;l>=0;l--)a[l]=f,f*=s[l];const N=O.fromDataShared(t.data,s,C,a,0,t.wasmRegion);return t.dispose(),N}try{if(C==="float32"){const l=O.empty(s,C),p=l.data,I=t.data;for(let R=0;R<I.length;R++)p[R]=I[R];return l}const a=O.zeros(g,C),f=a.data,N=t.data;for(let l=0;l<N.length;l++)f[l]=f instanceof BigInt64Array||f instanceof BigUint64Array?BigInt(Math.round(N[l])):N[l];return S?O.fromData(f,s,C):a}finally{t.dispose()}}}const c=O.zeros(g,C),d=c.data,{baseOffsets:i,axisStride:n}=W(m,D,x,z,v);if(U(u)){if(w){const t=m.slice(0,z).reduce((f,N)=>f*N,1),s=m.slice(z+1).reduce((f,N)=>f*N,1),a=Ft(r,t,$,s);if(a){const f=S?m.map((l,p)=>p===z?1:l):g,N=O.fromDataShared(a.data,f,u,k(f),0,a.wasmRegion);return a.dispose(),c.dispose(),N}}const e=A,o=d;if(u==="complex64")for(let t=0;t<v;t++){J[0]=0,J[1]=0;let s=i[t];for(let a=0;a<$;a++)J[0]+=e[s*2],J[1]+=e[s*2+1],s+=n;o[t*2]=J[0],o[t*2+1]=J[1]}else for(let t=0;t<v;t++){let s=0,a=0,f=i[t];for(let N=0;N<$;N++)s+=e[f*2],a+=e[f*2+1],f+=n;o[t*2]=s,o[t*2+1]=a}}else if(j(u)){const e=A,o=d;for(let t=0;t<v;t++){let s=BigInt(0),a=i[t];for(let f=0;f<$;f++)s+=e[a],a+=n;o[t]=s}}else if(j(C)){const e=d;for(let o=0;o<v;o++){let t=0,s=i[o];for(let a=0;a<$;a++)t+=Number(A[s]),s+=n;e[o]=BigInt(Math.round(t))}}else if(u==="float32"||u==="float16"&&Z){const e=Y(u);for(let o=0;o<v;o++){e[0]=0;let t=i[o];for(let s=0;s<$;s++)e[0]+=Number(A[t]),t+=n;d[o]=e[0]}}else for(let e=0;e<v;e++){let o=0,t=i[e];for(let s=0;s<$;s++)o+=Number(A[t]),t+=n;d[e]=o}if(S){const e=[...m];return e[z]=1,O.fromData(d,e,C)}return c}function ft(r,b,S=!1){const u=r.dtype,m=r.shape;if(b===void 0){const x=Vt(r);if(x!==null)return x;if(u==="float16"||u==="float32"){let w=0;const z=r.offset;if(r.isCContiguous)for(let C=0;C<r.size;C++)w+=Number(r.data[z+C]);else for(let C=0;C<r.size;C++)w+=Number(r.iget(C));return lt(w/r.size,u)}const D=et(r);return D instanceof Q?new Q(D.re/r.size,D.im/r.size):D/r.size}let y=b;if(y<0&&(y=m.length+y),y<0||y>=m.length)throw new Error(`axis ${b} is out of bounds for array of dimension ${m.length}`);if(r.isCContiguous&&!U(u)){const x=m[y],D=S?m.map((g,$)=>$===y?1:g):Array.from(m).filter((g,$)=>$!==y),w=m.slice(0,y).reduce((g,$)=>g*$,1),z=m.slice(y+1).reduce((g,$)=>g*$,1),C=Mt(r,w,x,z);if(C){const g=H(u)?u:"float64";if(g==="float64"){const v=new Array(D.length);let c=1;for(let i=D.length-1;i>=0;i--)v[i]=c,c*=D[i];const d=O.fromDataShared(C.data,D,"float64",v,0,C.wasmRegion);return C.dispose(),d}const $=O.empty(D,g);return $.data.set(C.data),C.dispose(),$}}let h;if(u==="float16"||u==="float32"){const x=O.zeros(Array.from(m),"float64"),D=r.data,w=x.data,z=r.offset;if(r.isCContiguous){const g=u==="float16"&&mt?new Float32Array(D.subarray(z,z+r.size)):D,$=u==="float16"&&mt?0:z;for(let v=0;v<r.size;v++)w[v]=Number(g[$+v])}else for(let g=0;g<r.size;g++)w[g]=Number(r.iget(g));const C=et(x,y,S);if(x.dispose(),typeof C=="number")return lt(C/m[y],u);h=C;try{const g=m[y],$=h.data,v=O.empty(Array.from(h.shape),u),c=v.data;for(let d=0;d<$.length;d++)c[d]=$[d]/g;return v}finally{h.dispose()}}const A=et(r,b,S);if(typeof A=="number")return A/m[y];if(A instanceof Q)return new Q(A.re/m[y],A.im/m[y]);try{const x=m[y],D=Yt(u),w=O.zeros(Array.from(A.shape),D),z=w.data,C=A.data,g=A.dtype;if(U(u)){const $=C,v=z,c=A.size;for(let d=0;d<c;d++)v[d*2]=$[d*2]/x,v[d*2+1]=$[d*2+1]/x}else if(j(g)){const $=C;for(let v=0;v<z.length;v++)z[v]=Number($[v])/x}else for(let $=0;$<z.length;$++)z[$]=Number(C[$])/x;return w}finally{A.dispose()}}function ot(r,b,S=!1){const u=r.dtype,m=r.shape,y=m.length,h=r.size,A=r.data,x=r.offset,D=r.strides;if(U(u)){const i=A;if(b===void 0){if(h===0)throw new Error("max of empty array");let l=i[x*2],p=i[x*2+1];for(let I=1;I<h;I++){const R=i[(x+I)*2],F=i[(x+I)*2+1];if(isNaN(R)||isNaN(F))return new Q(NaN,NaN);(R>l||R===l&&F>p)&&(l=R,p=F)}return isNaN(l)||isNaN(p)?new Q(NaN,NaN):new Q(l,p)}let n=b;if(n<0&&(n=y+n),n<0||n>=y)throw new Error(`axis ${b} is out of bounds for array of dimension ${y}`);const e=Array.from(m).filter((l,p)=>p!==n);if(e.length===0){const l=ot(r);return S?G(l,y,u):l}const o=O.zeros(e,u),t=o.data,s=m[n],a=e.reduce((l,p)=>l*p,1),{baseOffsets:f,axisStride:N}=W(m,D,x,n,a);for(let l=0;l<a;l++){let p=f[l],I=i[p*2],R=i[p*2+1];p+=N;for(let F=1;F<s;F++){const B=i[p*2],E=i[p*2+1];if(p+=N,isNaN(B)||isNaN(E)){I=NaN,R=NaN;break}(B>I||B===I&&E>R)&&(I=B,R=E)}t[l*2]=I,t[l*2+1]=R}if(S){const l=[...m];return l[n]=1,O.fromData(t,l,u)}return o}if(b===void 0){const i=vt(r);if(i!==null)return i;if(h===0)throw new Error("max of empty array");if(r.isCContiguous){let n=A[x];if(x===0)for(let e=1;e<h;e++)A[e]>n&&(n=A[e]);else for(let e=1;e<h;e++)A[x+e]>n&&(n=A[x+e]);return Number(n)}else{let n=r.iget(0);for(let e=1;e<h;e++){const o=r.iget(e);o>n&&(n=o)}return Number(n)}}let w=b;if(w<0&&(w=y+w),w<0||w>=y)throw new Error(`axis ${b} is out of bounds for array of dimension ${y}`);const z=Array.from(m).filter((i,n)=>n!==w);if(z.length===0){const i=ot(r);return S?G(i,y,u):i}const C=m[w],g=z.reduce((i,n)=>i*n,1);if(r.isCContiguous&&!U(u)){const i=m.slice(0,w).reduce((o,t)=>o*t,1),n=m.slice(w+1).reduce((o,t)=>o*t,1),e=$t(r,i,C,n);if(e){const o=S?m.map((f,N)=>N===w?1:f):z,t=new Array(o.length);let s=1;for(let f=o.length-1;f>=0;f--)t[f]=s,s*=o[f];const a=O.fromDataShared(e.data,o,u,t,0,e.wasmRegion);return e.dispose(),a}}const $=O.zeros(z,u),v=$.data,{baseOffsets:c,axisStride:d}=W(m,D,x,w,g);if(j(u)){const i=A,n=v;for(let e=0;e<g;e++){let o=c[e],t=i[o];o+=d;for(let s=1;s<C;s++){const a=i[o];a>t&&(t=a),o+=d}n[e]=t}}else for(let i=0;i<g;i++){let n=-1/0,e=c[i];for(let o=0;o<C;o++){const t=Number(A[e]);t>n&&(n=t),e+=d}v[i]=n}if(S){const i=[...m];return i[w]=1,O.fromData(v,i,u)}return $}function yt(r,b,S=!1){const u=r.dtype,m=r.shape,y=m.length,h=r.size,A=r.data,x=r.offset,D=r.strides,w=r.isCContiguous;if(b===void 0){const e=Qt(r);if(e!==null)return e;if(U(u)){let o=1,t=0;if(w){const s=A;for(let a=0;a<h;a++){const f=s[(x+a)*2],N=s[(x+a)*2+1],l=o*f-t*N,p=o*N+t*f;o=l,t=p}}else for(let s=0;s<h;s++){const a=r.iget(s),f=a.re,N=a.im,l=o*f-t*N,p=o*N+t*f;o=l,t=p}return new Q(o,t)}else if(j(u)){let o=BigInt(1);if(w){const t=A;for(let s=0;s<h;s++)o*=t[x+s]}else for(let t=0;t<h;t++)o*=r.iget(t);return Number(o)}else if(u==="float32"||u==="float16"&&Z){const o=Y(u);if(o[0]=1,w)for(let t=0;t<h;t++)o[0]*=Number(A[x+t]);else for(let t=0;t<h;t++)o[0]*=Number(r.iget(t));return o[0]}else{let o=1;if(w)if(x===0)for(let t=0;t<h;t++)o*=Number(A[t]);else for(let t=0;t<h;t++)o*=Number(A[x+t]);else for(let t=0;t<h;t++)o*=Number(r.iget(t));return o}}let z=b;if(z<0&&(z=y+z),z<0||z>=y)throw new Error(`axis ${b} is out of bounds for array of dimension ${y}`);const C=pt(u),g=Array.from(m).filter((e,o)=>o!==z);if(g.length===0){const e=yt(r);return S?G(e,y,C):e}const $=m[z],v=g.reduce((e,o)=>e*o,1);if(w&&!U(u)){const e=m.slice(0,z).reduce((s,a)=>s*a,1),o=m.slice(z+1).reduce((s,a)=>s*a,1),t=Kt(r,e,$,o);if(t){const s=S?m.map((l,p)=>p===z?1:l):g,a=new Array(s.length);let f=1;for(let l=s.length-1;l>=0;l--)a[l]=f,f*=s[l];const N=O.fromDataShared(t.data,s,C,a,0,t.wasmRegion);return t.dispose(),N}}const c=O.zeros(g,C),d=c.data,{baseOffsets:i,axisStride:n}=W(m,D,x,z,v);if(U(u)){if(w){const t=m.slice(0,z).reduce((f,N)=>f*N,1),s=m.slice(z+1).reduce((f,N)=>f*N,1),a=jt(r,t,$,s);if(a){const f=S?m.map((l,p)=>p===z?1:l):g,N=O.fromDataShared(a.data,f,u,k(f),0,a.wasmRegion);return a.dispose(),c.dispose(),N}}const e=A,o=d;if(u==="complex64")for(let t=0;t<v;t++){J[0]=1,J[1]=0;let s=i[t];for(let a=0;a<$;a++){const f=e[s*2],N=e[s*2+1],l=J[0],p=J[1];J[0]=l*f-p*N,J[1]=l*N+p*f,s+=n}o[t*2]=J[0],o[t*2+1]=J[1]}else for(let t=0;t<v;t++){let s=1,a=0,f=i[t];for(let N=0;N<$;N++){const l=e[f*2],p=e[f*2+1],I=s*l-a*p,R=s*p+a*l;s=I,a=R,f+=n}o[t*2]=s,o[t*2+1]=a}}else if(j(u)){const e=A,o=d;for(let t=0;t<v;t++){let s=BigInt(1),a=i[t];for(let f=0;f<$;f++)s*=e[a],a+=n;o[t]=s}}else if(j(C)){const e=d;for(let o=0;o<v;o++){let t=BigInt(1),s=i[o];for(let a=0;a<$;a++)t*=BigInt(Number(A[s])),s+=n;e[o]=t}}else if(u==="float32"||u==="float16"&&Z){const e=Y(u);for(let o=0;o<v;o++){e[0]=1;let t=i[o];for(let s=0;s<$;s++)e[0]*=Number(A[t]),t+=n;d[o]=e[0]}}else for(let e=0;e<v;e++){let o=1,t=i[e];for(let s=0;s<$;s++)o*=Number(A[t]),t+=n;d[e]=o}if(S){const e=[...m];return e[z]=1,O.fromData(d,e,C)}return c}function nt(r,b,S=!1){const u=r.dtype,m=r.shape,y=m.length,h=r.size,A=r.data,x=r.offset,D=r.strides;if(U(u)){const i=A;if(b===void 0){if(h===0)throw new Error("min of empty array");let l=i[x*2],p=i[x*2+1];for(let I=1;I<h;I++){const R=i[(x+I)*2],F=i[(x+I)*2+1];if(isNaN(R)||isNaN(F))return new Q(NaN,NaN);(R<l||R===l&&F<p)&&(l=R,p=F)}return isNaN(l)||isNaN(p)?new Q(NaN,NaN):new Q(l,p)}let n=b;if(n<0&&(n=y+n),n<0||n>=y)throw new Error(`axis ${b} is out of bounds for array of dimension ${y}`);const e=Array.from(m).filter((l,p)=>p!==n);if(e.length===0){const l=nt(r);return S?G(l,y,u):l}const o=O.zeros(e,u),t=o.data,s=m[n],a=e.reduce((l,p)=>l*p,1),{baseOffsets:f,axisStride:N}=W(m,D,x,n,a);for(let l=0;l<a;l++){let p=f[l],I=i[p*2],R=i[p*2+1];p+=N;for(let F=1;F<s;F++){const B=i[p*2],E=i[p*2+1];if(p+=N,isNaN(B)||isNaN(E)){I=NaN,R=NaN;break}(B<I||B===I&&E<R)&&(I=B,R=E)}t[l*2]=I,t[l*2+1]=R}if(S){const l=[...m];return l[n]=1,O.fromData(t,l,u)}return o}if(b===void 0){const i=gt(r);if(i!==null)return i;if(h===0)throw new Error("min of empty array");if(r.isCContiguous){let n=A[x];if(x===0)for(let e=1;e<h;e++)A[e]<n&&(n=A[e]);else for(let e=1;e<h;e++)A[x+e]<n&&(n=A[x+e]);return Number(n)}else{let n=r.iget(0);for(let e=1;e<h;e++){const o=r.iget(e);o<n&&(n=o)}return Number(n)}}let w=b;if(w<0&&(w=y+w),w<0||w>=y)throw new Error(`axis ${b} is out of bounds for array of dimension ${y}`);const z=Array.from(m).filter((i,n)=>n!==w);if(z.length===0){const i=nt(r);return S?G(i,y,u):i}const C=m[w],g=z.reduce((i,n)=>i*n,1);if(r.isCContiguous&&!U(u)){const i=m.slice(0,w).reduce((o,t)=>o*t,1),n=m.slice(w+1).reduce((o,t)=>o*t,1),e=Bt(r,i,C,n);if(e){const o=S?m.map((f,N)=>N===w?1:f):z,t=new Array(o.length);let s=1;for(let f=o.length-1;f>=0;f--)t[f]=s,s*=o[f];const a=O.fromDataShared(e.data,o,u,t,0,e.wasmRegion);return e.dispose(),a}}const $=O.zeros(z,u),v=$.data,{baseOffsets:c,axisStride:d}=W(m,D,x,w,g);if(j(u)){const i=A,n=v;for(let e=0;e<g;e++){let o=c[e],t=i[o];o+=d;for(let s=1;s<C;s++){const a=i[o];a<t&&(t=a),o+=d}n[e]=t}}else for(let i=0;i<g;i++){let n=1/0,e=c[i];for(let o=0;o<C;o++){const t=Number(A[e]);t<n&&(n=t),e+=d}v[i]=n}if(S){const i=[...m];return i[w]=1,O.fromData(v,i,u)}return $}function X(r,b,S,u){return r<S?-1:r>S?1:b<u?-1:b>u?1:0}function xt(r,b){const S=r.dtype,u=U(S),m=r.shape,y=m.length,h=r.size,A=r.data,x=r.offset,D=r.strides,w=r.isCContiguous;if(b===void 0){const n=Tt(r);if(n!==null)return n;if(h===0)throw new Error("argmin of empty array");if(u)if(w){const e=A;let o=e[x*2],t=e[x*2+1],s=0;for(let a=1;a<h;a++){const f=e[(x+a)*2],N=e[(x+a)*2+1];X(f,N,o,t)<0&&(o=f,t=N,s=a)}return s}else{const e=r.iget(0);let o=e.re,t=e.im,s=0;for(let a=1;a<h;a++){const f=r.iget(a);X(f.re,f.im,o,t)<0&&(o=f.re,t=f.im,s=a)}return s}if(w){let e=A[x],o=0;if(x===0)for(let t=1;t<h;t++)A[t]<e&&(e=A[t],o=t);else for(let t=1;t<h;t++)A[x+t]<e&&(e=A[x+t],o=t);return o}else{let e=r.iget(0),o=0;for(let t=1;t<h;t++){const s=r.iget(t);s<e&&(e=s,o=t)}return o}}let z=b;if(z<0&&(z=y+z),z<0||z>=y)throw new Error(`axis ${b} is out of bounds for array of dimension ${y}`);const C=Array.from(m).filter((n,e)=>e!==z);if(C.length===0)return xt(r);const g=m[z];if(r.isCContiguous&&!U(S)){const n=m.slice(0,z).reduce((t,s)=>t*s,1),e=m.slice(z+1).reduce((t,s)=>t*s,1),o=_t(r,n,g,e);if(o){const t=new Array(C.length);let s=1;for(let f=C.length-1;f>=0;f--)t[f]=s,s*=C[f];const a=O.fromDataShared(o.data,C,"int32",t,0,o.wasmRegion);return o.dispose(),a}}const $=O.zeros(C,"int32"),v=$.data,c=C.reduce((n,e)=>n*e,1),{baseOffsets:d,axisStride:i}=W(m,D,x,z,c);if(u){const n=A;for(let e=0;e<c;e++){let o=d[e],t=n[o*2],s=n[o*2+1],a=0;o+=i;for(let f=1;f<g;f++){const N=n[o*2],l=n[o*2+1];X(N,l,t,s)<0&&(t=N,s=l,a=f),o+=i}v[e]=a}}else if(j(S)){const n=A;for(let e=0;e<c;e++){let o=d[e],t=n[o],s=0;o+=i;for(let a=1;a<g;a++){const f=n[o];f<t&&(t=f,s=a),o+=i}v[e]=s}}else for(let n=0;n<c;n++){let e=1/0,o=0,t=d[n];for(let s=0;s<g;s++){const a=Number(A[t]);a<e&&(e=a,o=s),t+=i}v[n]=o}return $}function bt(r,b){const S=r.dtype,u=U(S),m=r.shape,y=m.length,h=r.size,A=r.data,x=r.offset,D=r.strides,w=r.isCContiguous;if(b===void 0){const n=Ot(r);if(n!==null)return n;if(h===0)throw new Error("argmax of empty array");if(u)if(w){const e=A;let o=e[x*2],t=e[x*2+1],s=0;for(let a=1;a<h;a++){const f=e[(x+a)*2],N=e[(x+a)*2+1];X(f,N,o,t)>0&&(o=f,t=N,s=a)}return s}else{const e=r.iget(0);let o=e.re,t=e.im,s=0;for(let a=1;a<h;a++){const f=r.iget(a);X(f.re,f.im,o,t)>0&&(o=f.re,t=f.im,s=a)}return s}if(w){let e=A[x],o=0;for(let t=1;t<h;t++)A[x+t]>e&&(e=A[x+t],o=t);return o}else{let e=r.iget(0),o=0;for(let t=1;t<h;t++){const s=r.iget(t);s>e&&(e=s,o=t)}return o}}let z=b;if(z<0&&(z=y+z),z<0||z>=y)throw new Error(`axis ${b} is out of bounds for array of dimension ${y}`);const C=Array.from(m).filter((n,e)=>e!==z);if(C.length===0)return bt(r);const g=m[z];if(r.isCContiguous&&!U(S)){const n=m.slice(0,z).reduce((t,s)=>t*s,1),e=m.slice(z+1).reduce((t,s)=>t*s,1),o=Et(r,n,g,e);if(o){const t=new Array(C.length);let s=1;for(let f=C.length-1;f>=0;f--)t[f]=s,s*=C[f];const a=O.fromDataShared(o.data,C,"int32",t,0,o.wasmRegion);return o.dispose(),a}}const $=O.zeros(C,"int32"),v=$.data,c=C.reduce((n,e)=>n*e,1),{baseOffsets:d,axisStride:i}=W(m,D,x,z,c);if(u){const n=A;for(let e=0;e<c;e++){let o=d[e],t=n[o*2],s=n[o*2+1],a=0;o+=i;for(let f=1;f<g;f++){const N=n[o*2],l=n[o*2+1];X(N,l,t,s)>0&&(t=N,s=l,a=f),o+=i}v[e]=a}}else if(j(S)){const n=A;for(let e=0;e<c;e++){let o=d[e],t=n[o],s=0;o+=i;for(let a=1;a<g;a++){const f=n[o];f>t&&(t=f,s=a),o+=i}v[e]=s}}else for(let n=0;n<c;n++){let e=-1/0,o=0,t=d[n];for(let s=0;s<g;s++){const a=Number(A[t]);a>e&&(e=a,o=s),t+=i}v[n]=o}return $}function At(r,b,S=0,u=!1){const m=r.dtype,y=r.shape,h=y.length,A=r.size,x=r.data,D=r.offset,w=r.strides;let z;if(m==="float16"&&b===void 0&&Z){const c=et(r);Z[0]=c,Z[0]/=A,z=Z[0]}else z=ft(r,b,u);const C=r.isCContiguous;if(b===void 0){const c=Ut(r);if(c!==null)return c;if(U(m)){const e=z;let o=0;if(C){const t=x;for(let s=0;s<A;s++){const a=t[(D+s)*2],f=t[(D+s)*2+1],N=a-e.re,l=f-e.im;o+=N*N+l*l}}else for(let t=0;t<A;t++){const s=r.iget(t),a=s.re-e.re,f=s.im-e.im;o+=a*a+f*f}return o/(A-S)}const d=z,i=Y(m);if(i){if(i[0]=0,C)for(let e=0;e<A;e++){const o=Number(x[D+e])-d;i[0]+=o*o}else for(let e=0;e<A;e++){const o=Number(r.iget(e))-d;i[0]+=o*o}return i[0]/=A-S,i[0]}let n=0;if(C)for(let e=0;e<A;e++){const o=Number(x[D+e])-d;n+=o*o}else for(let e=0;e<A;e++){const o=Number(r.iget(e))-d;n+=o*o}return n/(A-S)}let g=b;if(g<0&&(g=h+g),g<0||g>=h)throw new Error(`axis ${b} is out of bounds for array of dimension ${h}`);const $=y[g],v=z;try{const c=v.data,d=u?v.shape:Array.from(y).filter((s,a)=>a!==g),i=O.zeros(Array.from(d),"float64"),n=i.data,e=d.reduce((s,a)=>s*a,1),{baseOffsets:o,axisStride:t}=W(y,w,D,g,e);if(U(m)){const s=x,a=c;for(let f=0;f<e;f++){let N=0;const l=a[f*2],p=a[f*2+1];let I=o[f];for(let R=0;R<$;R++){const F=s[I*2],B=s[I*2+1],E=F-l,T=B-p;N+=E*E+T*T,I+=t}n[f]=N/($-S)}}else{const s=Y(m);if(s){i.dispose();const a=O.empty(Array.from(d),m),f=a.data;for(let N=0;N<e;N++){s[0]=0;const l=Number(c[N]);let p=o[N];for(let I=0;I<$;I++){const R=Number(x[p])-l;s[0]+=R*R,p+=t}s[0]/=$-S,f[N]=s[0]}return a}for(let a=0;a<e;a++){let f=0;const N=Number(c[a]);let l=o[a];for(let p=0;p<$;p++){const I=Number(x[l])-N;f+=I*I,l+=t}n[a]=f/($-S)}}return i}finally{v.dispose()}}function Ce(r,b,S=0,u=!1){if(b===void 0&&S===0&&!u){const y=Xt(r);if(y!==null)return y}const m=At(r,b,S,u);if(typeof m=="number")return Math.sqrt(m);try{const y=O.zeros(Array.from(m.shape),"float64"),h=m.data,A=y.data;for(let x=0;x<h.length;x++)A[x]=Math.sqrt(Number(h[x]));return y}finally{m.dispose()}}function Zt(r,b,S=!1){const u=r.shape,m=u.length,y=r.size,h=r.data,A=r.offset,x=r.strides,D=r.isCContiguous,w=U(r.dtype);if(b===void 0){const n=Lt(r);if(n!==null)return n===1;if(w){if(D){const e=h;for(let o=0;o<y;o++){const t=e[(A+o)*2],s=e[(A+o)*2+1];if(t===0&&s===0)return!1}}else for(let e=0;e<y;e++){const o=r.iget(e);if(o.re===0&&o.im===0)return!1}return!0}if(D){for(let e=0;e<y;e++)if(!h[A+e])return!1}else for(let e=0;e<y;e++)if(!r.iget(e))return!1;return!0}let z=b;if(z<0&&(z=m+z),z<0||z>=m)throw new Error(`axis ${b} is out of bounds for array of dimension ${m}`);const C=Array.from(u).filter((n,e)=>e!==z);if(C.length===0){const n=Zt(r);if(!S)return n;const e=O.zeros(Array(m).fill(1),"bool");return e.iset(0,n?1:0),e}const g=O.zeros(C,"bool"),$=g.data,v=u[z],c=C.reduce((n,e)=>n*e,1),{baseOffsets:d,axisStride:i}=W(u,x,A,z,c);if(w){const n=h;for(let e=0;e<c;e++){let o=!0,t=d[e];for(let s=0;s<v;s++){const a=n[t*2],f=n[t*2+1];if(a===0&&f===0){o=!1;break}t+=i}$[e]=o?1:0}}else for(let n=0;n<c;n++){let e=!0,o=d[n];for(let t=0;t<v;t++){if(!h[o]){e=!1;break}o+=i}$[n]=e?1:0}if(S){const n=[...u];return n[z]=1,O.fromData($,n,"bool")}return g}function kt(r,b,S=!1){const u=r.shape,m=u.length,y=r.size,h=r.data,A=r.offset,x=r.strides,D=r.isCContiguous,w=U(r.dtype);if(b===void 0){const n=Jt(r);if(n!==null)return n===1;if(w){if(D){const e=h;for(let o=0;o<y;o++){const t=e[(A+o)*2],s=e[(A+o)*2+1];if(t!==0||s!==0)return!0}}else for(let e=0;e<y;e++){const o=r.iget(e);if(o.re!==0||o.im!==0)return!0}return!1}if(D){for(let e=0;e<y;e++)if(h[A+e])return!0}else for(let e=0;e<y;e++)if(r.iget(e))return!0;return!1}let z=b;if(z<0&&(z=m+z),z<0||z>=m)throw new Error(`axis ${b} is out of bounds for array of dimension ${m}`);const C=Array.from(u).filter((n,e)=>e!==z);if(C.length===0){const n=kt(r);if(!S)return n;const e=O.zeros(Array(m).fill(1),"bool");return e.iset(0,n?1:0),e}const g=O.zeros(C,"bool"),$=g.data,v=u[z],c=C.reduce((n,e)=>n*e,1),{baseOffsets:d,axisStride:i}=W(u,x,A,z,c);if(w){const n=h;for(let e=0;e<c;e++){let o=!1,t=d[e];for(let s=0;s<v;s++){const a=n[t*2],f=n[t*2+1];if(a!==0||f!==0){o=!0;break}t+=i}$[e]=o?1:0}}else for(let n=0;n<c;n++){let e=!1,o=d[n];for(let t=0;t<v;t++){if(h[o]){e=!0;break}o+=i}$[n]=e?1:0}if(S){const n=[...u];return n[z]=1,O.fromData($,n,"bool")}return g}function te(r,b){const S=r.dtype,u=r.shape,m=u.length,y=r.data,h=r.offset,A=r.strides,x=r.isCContiguous;if(U(S)){const t=y,s=r.size;if(b===void 0){const _=O.zeros([s],S),V=_.data;let M=0,P=0;if(x)for(let q=0;q<s;q++)M+=t[(h+q)*2],P+=t[(h+q)*2+1],V[q*2]=M,V[q*2+1]=P;else for(let q=0;q<s;q++){const L=r.iget(q);M+=L.re,P+=L.im,V[q*2]=M,V[q*2+1]=P}return _}let a=b;if(a<0&&(a=m+a),a<0||a>=m)throw new Error(`axis ${b} is out of bounds for array of dimension ${m}`);const f=O.zeros([...u],S),N=f.data,l=u[a],p=Array.from(u).filter((_,V)=>V!==a),I=p.length===0?1:p.reduce((_,V)=>_*V,1),{baseOffsets:R,axisStride:F}=W(u,A,h,a,I),B=k(u),{baseOffsets:E,axisStride:T}=W(u,B,0,a,I);for(let _=0;_<I;_++){let V=R[_],M=E[_],P=0,q=0;for(let L=0;L<l;L++)P+=t[V*2],q+=t[V*2+1],N[M*2]=P,N[M*2+1]=q,V+=F,M+=T}return f}if(b===void 0){const t=r.size,s=Y(S);if(s){const p=O.empty([t],S),I=p.data;if(s[0]=0,x)for(let R=0;R<t;R++)s[0]+=Number(y[h+R]),I[R]=s[0];else for(let R=0;R<t;R++)s[0]+=Number(r.iget(R)),I[R]=s[0];return p}const a=it(S);if(j(S)){const p=O.empty([t],a),I=p.data;let R=0n;if(x)for(let F=0;F<t;F++)R+=y[h+F],I[F]=R;else for(let F=0;F<t;F++)R+=r.iget(F),I[F]=R;return p}if(j(a)){const p=O.empty([t],a),I=p.data;let R=0;if(x)for(let F=0;F<t;F++)R+=y[h+F],I[F]=BigInt(R);else for(let F=0;F<t;F++)R+=Number(r.iget(F)),I[F]=BigInt(R);return p}const f=O.empty([t],a),N=f.data;let l=0;if(x)for(let p=0;p<t;p++)l+=Number(y[h+p]),N[p]=l;else for(let p=0;p<t;p++)l+=Number(r.iget(p)),N[p]=l;return f}let D=b;if(D<0&&(D=m+D),D<0||D>=m)throw new Error(`axis ${b} is out of bounds for array of dimension ${m}`);const w=Y(S),z=w?S:it(S),C=O.empty([...u],z),g=C.data,$=u[D],v=Array.from(u).filter((t,s)=>s!==D),c=v.length===0?1:v.reduce((t,s)=>t*s,1),{baseOffsets:d,axisStride:i}=W(u,A,h,D,c),n=k(u),{baseOffsets:e,axisStride:o}=W(u,n,0,D,c);if(w)for(let t=0;t<c;t++){let s=d[t],a=e[t];w[0]=0;for(let f=0;f<$;f++)w[0]+=Number(y[s]),g[a]=w[0],s+=i,a+=o}else if(j(S)){const t=g;for(let s=0;s<c;s++){let a=d[s],f=e[s],N=0n;for(let l=0;l<$;l++)N+=y[a],t[f]=N,a+=i,f+=o}}else if(j(z)){const t=g;for(let s=0;s<c;s++){let a=d[s],f=e[s],N=0;for(let l=0;l<$;l++)N+=y[a],t[f]=BigInt(N),a+=i,f+=o}}else for(let t=0;t<c;t++){let s=d[t],a=e[t],f=0;for(let N=0;N<$;N++)f+=Number(y[s]),g[a]=f,s+=i,a+=o}return C}function ee(r,b){const S=r.dtype,u=r.shape,m=u.length,y=r.data,h=r.offset,A=r.strides,x=r.isCContiguous;if(U(S)){const o=y,t=r.size;if(b===void 0){const T=O.zeros([t],S),_=T.data;let V=1,M=0;if(x)for(let P=0;P<t;P++){const q=o[(h+P)*2],L=o[(h+P)*2+1],tt=V*q-M*L,rt=V*L+M*q;V=tt,M=rt,_[P*2]=V,_[P*2+1]=M}else for(let P=0;P<t;P++){const q=r.iget(P),L=q.re,tt=q.im,rt=V*L-M*tt,at=V*tt+M*L;V=rt,M=at,_[P*2]=V,_[P*2+1]=M}return T}let s=b;if(s<0&&(s=m+s),s<0||s>=m)throw new Error(`axis ${b} is out of bounds for array of dimension ${m}`);const a=O.zeros([...u],S),f=a.data,N=u[s],l=Array.from(u).filter((T,_)=>_!==s),p=l.length===0?1:l.reduce((T,_)=>T*_,1),{baseOffsets:I,axisStride:R}=W(u,A,h,s,p),F=k(u),{baseOffsets:B,axisStride:E}=W(u,F,0,s,p);for(let T=0;T<p;T++){let _=I[T],V=B[T],M=1,P=0;for(let q=0;q<N;q++){const L=o[_*2],tt=o[_*2+1],rt=M*L-P*tt,at=M*tt+P*L;M=rt,P=at,f[V*2]=M,f[V*2+1]=P,_+=R,V+=E}}return a}if(b===void 0){const o=r.size,t=it(S);if(j(S)){const N=O.empty([o],t),l=N.data;let p=1n;if(x)for(let I=0;I<o;I++)p*=y[h+I],l[I]=p;else for(let I=0;I<o;I++)p*=r.iget(I),l[I]=p;return N}if(j(t)){const N=O.empty([o],t),l=N.data;let p=1;if(x)for(let I=0;I<o;I++)p*=y[h+I],l[I]=BigInt(p);else for(let I=0;I<o;I++)p*=Number(r.iget(I)),l[I]=BigInt(p);return N}const s=O.empty([o],t),a=s.data;let f=1;if(x)for(let N=0;N<o;N++)f*=Number(y[h+N]),a[N]=f;else for(let N=0;N<o;N++)f*=Number(r.iget(N)),a[N]=f;return s}let D=b;if(D<0&&(D=m+D),D<0||D>=m)throw new Error(`axis ${b} is out of bounds for array of dimension ${m}`);const w=it(S),z=O.empty([...u],w),C=z.data,g=u[D],$=Array.from(u).filter((o,t)=>t!==D),v=$.length===0?1:$.reduce((o,t)=>o*t,1),{baseOffsets:c,axisStride:d}=W(u,A,h,D,v),i=k(u),{baseOffsets:n,axisStride:e}=W(u,i,0,D,v);if(j(S)){const o=C;for(let t=0;t<v;t++){let s=c[t],a=n[t],f=1n;for(let N=0;N<g;N++)f*=y[s],o[a]=f,s+=d,a+=e}}else if(j(w)){const o=C;for(let t=0;t<v;t++){let s=c[t],a=n[t],f=1;for(let N=0;N<g;N++)f*=y[s],o[a]=BigInt(f),s+=d,a+=e}}else for(let o=0;o<v;o++){let t=c[o],s=n[o],a=1;for(let f=0;f<g;f++)a*=Number(y[t]),C[s]=a,t+=d,s+=e}return z}function Fe(r,b,S=!1){const u=r.dtype;if(u==="bool")throw new TypeError("ufunc 'subtract' not supported for boolean dtype. The '-' operator is not supported for booleans, use 'bitwise_xor' instead.");if(U(u)){const x=ot(r,b,S),D=nt(r,b,S);if(x instanceof Q&&D instanceof Q)return new Q(x.re-D.re,x.im-D.im);const w=x,z=D;try{const C=w.data,g=z.data,$=O.empty([...w.shape],u),v=$.data;for(let c=0;c<w.size;c++)v[c*2]=C[c*2]-g[c*2],v[c*2+1]=C[c*2+1]-g[c*2+1];return $}finally{w.dispose(),z.dispose()}}const m=ot(r,b,S),y=nt(r,b,S);if(typeof m=="number"&&typeof y=="number"){const x=m-y;if(u==="int8"||u==="int16"||u==="int32"||u==="uint8"||u==="uint16"||u==="uint32"){const D=O.zeros([1],u);try{return D.iset(0,x),Number(D.iget(0))}finally{D.dispose()}}return x}const h=m,A=y;try{const x=h.data,D=A.data,w=O.zeros([...h.shape],u),z=w.data;for(let C=0;C<h.size;C++)z[C]=Number(x[C])-Number(D[C]);return w}finally{h.dispose(),A.dispose()}}function ut(r,b,S,u){const m=r.dtype,y=r.shape,h=y.length;if(b===void 0||h===1){const v=r.size,c=[];if(r.isCContiguous){const n=r.data,e=r.offset;for(let o=0;o<v;o++){const t=n[(e+o)*2],s=n[(e+o)*2+1];u&&(isNaN(t)||isNaN(s))||c.push([t,s])}}else for(let n=0;n<v;n++){const e=r.iget(n);u&&(isNaN(e.re)||isNaN(e.im))||c.push([e.re,e.im])}c.sort((n,e)=>n[0]!==e[0]?n[0]-e[0]:n[1]-e[1]);const d=c.length;if(d===0)return new Q(NaN,NaN);const i=Math.floor(d/2);return d%2===1?new Q(c[i][0],c[i][1]):new Q((c[i-1][0]+c[i][0])/2,(c[i-1][1]+c[i][1])/2)}let A=b;if(A<0&&(A+=h),A<0||A>=h)throw new Error(`axis ${b} is out of bounds for array of dimension ${h}`);const x=Array.from(y).filter((v,c)=>c!==A);if(x.length===0){const v=ut(r,void 0,!1,u);return S?G(v,h,m):v}const D=x.reduce((v,c)=>v*c,1),w=y[A],z=O.empty(x,m),C=z.data,g=Array.from(y).slice(A+1).reduce((v,c)=>v*c,1),$=w*g;for(let v=0;v<D;v++){const c=Math.floor(v/g),d=v%g,i=c*$+d,n=[];for(let t=0;t<w;t++){const s=i+t*g,a=r.iget(s);u&&(isNaN(a.re)||isNaN(a.im))||n.push([a.re,a.im])}n.sort((t,s)=>t[0]!==s[0]?t[0]-s[0]:t[1]-s[1]);const e=n.length,o=Math.floor(e/2);e===0?(C[v*2]=NaN,C[v*2+1]=NaN):e%2===1?(C[v*2]=n[o][0],C[v*2+1]=n[o][1]):(C[v*2]=(n[o-1][0]+n[o][0])/2,C[v*2+1]=(n[o-1][1]+n[o][1])/2)}if(S){const v=Array.from(y);return v[A]=1,O.fromData(z.data,v,m)}return z}function re(r,b,S=!1){if(r.dtype==="bool"){const u=O.empty(Array.from(r.shape),"float64"),m=r.data,y=u.data,h=r.offset;if(r.isCContiguous)for(let A=0;A<r.size;A++)y[A]=Number(m[h+A]);else for(let A=0;A<r.size;A++)y[A]=Number(r.iget(A));try{return st(u,.5,b,S)}finally{u.dispose()}}return U(r.dtype)?ut(r,b,S,!1):st(r,.5,b,S)}function Re(r,b,S,u=!1){return st(r,b/100,S,u)}function st(r,b,S,u=!1){if(dt(r.dtype,"quantile","Complex numbers are not orderable."),r.dtype==="bool")throw new TypeError("ufunc 'subtract' not supported for boolean dtype. The '-' operator is not supported for booleans, use 'bitwise_xor' instead.");if(b<0||b>1)throw new Error("Quantile must be between 0 and 1");const m=r.shape,y=m.length,h=r.data,A=r.offset,x=r.strides;if(S===void 0){const i=Gt(r,b);if(i!==null)return i;const n=[];if(r.isCContiguous)for(let N=0;N<r.size;N++)n.push(Number(h[A+N]));else for(let N=0;N<r.size;N++)n.push(Number(r.iget(N)));n.sort((N,l)=>N-l);const o=n.length,t=b*(o-1),s=Math.floor(t),a=Math.ceil(t);if(s===a)return n[s];const f=t-s;return n[s]*(1-f)+n[a]*f}let D=S;if(D<0&&(D=y+D),D<0||D>=y)throw new Error(`axis ${S} is out of bounds for array of dimension ${y}`);const w=Array.from(m).filter((i,n)=>n!==D);if(w.length===0){const i=st(r,b);if(!u)return i;const n=O.zeros(Array(y).fill(1),"float64");return n.iset(0,i),n}const z=m[D];if(r.isCContiguous&&!U(r.dtype)){const i=m.slice(0,D).reduce((o,t)=>o*t,1),n=m.slice(D+1).reduce((o,t)=>o*t,1),e=Ht(r,i,z,n,b);if(e){if(u){const t=[...m];t[D]=1;const s=O.fromDataShared(e.data,t,"float64",k(t),0,e.wasmRegion);return e.dispose(),s}const o=O.fromDataShared(e.data,w,"float64",k(w),0,e.wasmRegion);return e.dispose(),o}}const C=w.reduce((i,n)=>i*n,1),g=O.empty(w,"float64"),$=g.data,{baseOffsets:v,axisStride:c}=W(m,x,A,D,C),d=new Float64Array(z);for(let i=0;i<C;i++){let n=v[i];for(let f=0;f<z;f++)d[f]=Number(h[n]),n+=c;d.sort();const e=z,o=d,t=b*(e-1),s=Math.floor(t),a=Math.ceil(t);if(s===a)$[i]=o[s];else{const f=t-s;$[i]=o[s]*(1-f)+o[a]*f}}if(u){const i=[...m];return i[D]=1,O.fromData($,i,"float64")}return g}function St(r,b,S,u=!1){const m=r.dtype,y=r.shape,h=y.length,A=r.data,x=r.offset,D=r.strides;if(S===void 0)return ft(r,b,u);if(U(m)){const e=A,o=S.data,t=S.offset;if(b===void 0){let F=0,B=0,E=0;if(r.isCContiguous)for(let _=0;_<r.size;_++){const V=Number(o[t+_%S.size]),M=e[(x+_)*2],P=e[(x+_)*2+1];F+=M*V,B+=P*V,E+=V}else for(let _=0;_<r.size;_++){const V=Number(o[t+_%S.size]),M=r.iget(_);F+=M.re*V,B+=M.im*V,E+=V}return E===0?new Q(NaN,NaN):new Q(F/E,B/E)}let s=b;if(s<0&&(s=h+s),s<0||s>=h)throw new Error(`axis ${b} is out of bounds for array of dimension ${h}`);const a=Array.from(y).filter((F,B)=>B!==s);if(a.length===0){const F=St(r,void 0,S);return u?G(F,h,m):F}const f=a.reduce((F,B)=>F*B,1),N=y[s],l=O.zeros(a,m),p=l.data,{baseOffsets:I,axisStride:R}=W(y,D,x,s,f);for(let F=0;F<f;F++){let B=0,E=0,T=0,_=I[F];for(let V=0;V<N;V++){const M=Number(o[t+V%S.size]),P=e[_*2],q=e[_*2+1];B+=P*M,E+=q*M,T+=M,_+=R}T===0?(p[F*2]=NaN,p[F*2+1]=NaN):(p[F*2]=B/T,p[F*2+1]=E/T)}if(u){const F=[...y];return F[s]=1,O.fromData(p,F,m)}return l}const w=S.offset;if(b===void 0){let e=0,o=0;const t=S.data;if(r.isCContiguous)for(let a=0;a<r.size;a++){const f=Number(t[w+a%S.size]);e+=Number(A[x+a])*f,o+=f}else for(let a=0;a<r.size;a++){const f=Number(t[w+a%S.size]);e+=Number(r.iget(a))*f,o+=f}return o===0?NaN:lt(e/o,m)}let z=b;if(z<0&&(z=h+z),z<0||z>=h)throw new Error(`axis ${b} is out of bounds for array of dimension ${h}`);const C=Array.from(y).filter((e,o)=>o!==z);if(C.length===0){const e=St(r,void 0,S);return u?G(e,h,"float64"):e}const g=C.reduce((e,o)=>e*o,1),$=y[z],v=S.data,c=O.empty(C,"float64"),d=c.data,{baseOffsets:i,axisStride:n}=W(y,D,x,z,g);for(let e=0;e<g;e++){let o=0,t=0,s=i[e];for(let a=0;a<$;a++){const f=Number(v[w+a%S.size]);o+=Number(A[s])*f,t+=f,s+=n}d[e]=t===0?NaN:o/t}if(u){const e=[...y];return e[z]=1,O.fromData(d,e,"float64")}return c}function K(r,b){return isNaN(r)||isNaN(b)}function oe(r,b,S=!1){const u=r.dtype,m=U(u),y=r.shape,h=y.length,A=r.data,x=r.offset,D=r.strides;if(!m&&!H(u))return et(r,b,S);if(b===void 0){const i=Pt(r);if(i!==null)return i;if(m){const t=A;let s=0,a=0;if(r.isCContiguous)for(let N=0;N<r.size;N++){const l=t[(x+N)*2],p=t[(x+N)*2+1];K(l,p)||(s+=l,a+=p)}else for(let N=0;N<r.size;N++){const l=r.iget(N),p=l.re,I=l.im;K(p,I)||(s+=p,a+=I)}return new Q(s,a)}const n=Y(u);if(n){if(n[0]=0,r.isCContiguous)for(let s=0;s<r.size;s++){const a=Number(A[x+s]);isNaN(a)||(n[0]+=a)}else for(let s=0;s<r.size;s++){const a=Number(r.iget(s));isNaN(a)||(n[0]+=a)}return n[0]}let e=0;if(r.isCContiguous)for(let t=0;t<r.size;t++){const s=Number(A[x+t]);isNaN(s)||(e+=s)}else for(let t=0;t<r.size;t++){const s=Number(r.iget(t));isNaN(s)||(e+=s)}return e}let w=b;if(w<0&&(w=h+w),w<0||w>=h)throw new Error(`axis ${b} is out of bounds for array of dimension ${h}`);const z=Array.from(y).filter((i,n)=>n!==w);if(z.length===0){const i=oe(r);return S?G(i,h,u):i}const C=z.reduce((i,n)=>i*n,1),g=y[w],{baseOffsets:$,axisStride:v}=W(y,D,x,w,C);if(m){const i=A,n=O.empty(z,u),e=n.data;for(let o=0;o<C;o++){let t=0,s=0,a=$[o];for(let f=0;f<g;f++){const N=i[a*2],l=i[a*2+1];K(N,l)||(t+=N,s+=l),a+=v}e[o*2]=t,e[o*2+1]=s}if(S){const o=[...y];return o[w]=1,O.fromData(e,o,u)}return n}const c=O.empty(z,"float64"),d=c.data;for(let i=0;i<C;i++){let n=0,e=$[i];for(let o=0;o<g;o++){const t=Number(A[e]);isNaN(t)||(n+=t),e+=v}d[i]=n}if(S){const i=[...y];return i[w]=1,O.fromData(d,i,"float64")}return c}function ne(r,b,S=!1){const u=r.dtype,m=U(u);if(!m&&!H(u))return yt(r,b,S);const y=r.shape,h=y.length,A=r.data,x=r.offset,D=r.strides;if(b===void 0){if(m){const e=A;let o=1,t=0;if(r.isCContiguous)for(let a=0;a<r.size;a++){const f=e[(x+a)*2],N=e[(x+a)*2+1];if(!K(f,N)){const l=o*f-t*N,p=o*N+t*f;o=l,t=p}}else for(let a=0;a<r.size;a++){const f=r.iget(a),N=f.re,l=f.im;if(!K(N,l)){const p=o*N-t*l,I=o*l+t*N;o=p,t=I}}return new Q(o,t)}let i=1;if(r.isCContiguous)for(let e=0;e<r.size;e++){const o=Number(A[x+e]);isNaN(o)||(i*=o)}else for(let e=0;e<r.size;e++){const o=Number(r.iget(e));isNaN(o)||(i*=o)}return i}let w=b;if(w<0&&(w=h+w),w<0||w>=h)throw new Error(`axis ${b} is out of bounds for array of dimension ${h}`);const z=Array.from(y).filter((i,n)=>n!==w);if(z.length===0){const i=ne(r);return S?G(i,h,u):i}const C=z.reduce((i,n)=>i*n,1),g=y[w],{baseOffsets:$,axisStride:v}=W(y,D,x,w,C);if(m){const i=A,n=O.empty(z,u),e=n.data;for(let o=0;o<C;o++){let t=1,s=0,a=$[o];for(let f=0;f<g;f++){const N=i[a*2],l=i[a*2+1];if(!K(N,l)){const p=t*N-s*l,I=t*l+s*N;t=p,s=I}a+=v}e[o*2]=t,e[o*2+1]=s}if(S){const o=[...y];return o[w]=1,O.fromData(e,o,u)}return n}const c=O.empty(z,"float64"),d=c.data;for(let i=0;i<C;i++){let n=1,e=$[i];for(let o=0;o<g;o++){const t=Number(A[e]);isNaN(t)||(n*=t),e+=v}d[i]=n}if(S){const i=[...y];return i[w]=1,O.fromData(d,i,"float64")}return c}function se(r,b,S=!1){const u=r.dtype,m=U(u);if(!m&&!H(u))return ft(r,b,S);const y=r.shape,h=y.length,A=r.data,x=r.offset,D=r.strides;if(b===void 0){if(m){const t=A;let s=0,a=0,f=0;if(r.isCContiguous)for(let l=0;l<r.size;l++){const p=t[(x+l)*2],I=t[(x+l)*2+1];K(p,I)||(s+=p,a+=I,f++)}else for(let l=0;l<r.size;l++){const p=r.iget(l),I=p.re,R=p.im;K(I,R)||(s+=I,a+=R,f++)}return f===0?new Q(NaN,NaN):new Q(s/f,a/f)}const i=Y(u);let n=0;const e=r.isCContiguous;if(i){if(i[0]=0,e)for(let t=0;t<r.size;t++){const s=Number(A[x+t]);isNaN(s)||(i[0]+=s,n++)}else for(let t=0;t<r.size;t++){const s=Number(r.iget(t));isNaN(s)||(i[0]+=s,n++)}return n===0?NaN:(i[0]/=n,i[0])}let o=0;if(e)for(let t=0;t<r.size;t++){const s=Number(A[x+t]);isNaN(s)||(o+=s,n++)}else for(let t=0;t<r.size;t++){const s=Number(r.iget(t));isNaN(s)||(o+=s,n++)}return n===0?NaN:o/n}let w=b;if(w<0&&(w=h+w),w<0||w>=h)throw new Error(`axis ${b} is out of bounds for array of dimension ${h}`);const z=Array.from(y).filter((i,n)=>n!==w);if(z.length===0){const i=se(r);return S?G(i,h,u):i}const C=z.reduce((i,n)=>i*n,1),g=y[w],{baseOffsets:$,axisStride:v}=W(y,D,x,w,C);if(m){const i=A,n=O.empty(z,u),e=n.data;for(let o=0;o<C;o++){let t=0,s=0,a=0,f=$[o];for(let N=0;N<g;N++){const l=i[f*2],p=i[f*2+1];K(l,p)||(t+=l,s+=p,a++),f+=v}a===0?(e[o*2]=NaN,e[o*2+1]=NaN):(e[o*2]=t/a,e[o*2+1]=s/a)}if(S){const o=[...y];return o[w]=1,O.fromData(e,o,u)}return n}const c=O.empty(z,"float64"),d=c.data;for(let i=0;i<C;i++){let n=0,e=0,o=$[i];for(let t=0;t<g;t++){const s=Number(A[o]);isNaN(s)||(n+=s,e++),o+=v}d[i]=e===0?NaN:n/e}if(S){const i=[...y];return i[w]=1,O.fromData(d,i,"float64")}return c}function ct(r,b,S=0,u=!1){const m=r.dtype;if(!U(m)&&!H(m))return At(r,b,S,u);const y=r.shape,h=y.length,A=r.data,x=r.offset,D=r.strides;if(U(m)){const i=A;if(b===void 0){let l=0,p=0,I=0;const R=r.isCContiguous;if(R)for(let T=0;T<r.size;T++){const _=i[(x+T)*2],V=i[(x+T)*2+1];K(_,V)||(l+=_,p+=V,I++)}else for(let T=0;T<r.size;T++){const _=r.iget(T),V=_.re,M=_.im;K(V,M)||(l+=V,p+=M,I++)}if(I-S<=0)return NaN;const F=l/I,B=p/I;let E=0;if(R)for(let T=0;T<r.size;T++){const _=i[(x+T)*2],V=i[(x+T)*2+1];if(!K(_,V)){const M=_-F,P=V-B;E+=M*M+P*P}}else for(let T=0;T<r.size;T++){const _=r.iget(T),V=_.re,M=_.im;if(!K(V,M)){const P=V-F,q=M-B;E+=P*P+q*q}}return E/(I-S)}let n=b;if(n<0&&(n=h+n),n<0||n>=h)throw new Error(`axis ${b} is out of bounds for array of dimension ${h}`);const e=Array.from(y).filter((l,p)=>p!==n);if(e.length===0){const l=ct(r,void 0,S);return u?G(l,h,"float64"):l}const o=e.reduce((l,p)=>l*p,1),t=y[n],s=O.empty(e,"float64"),a=s.data,{baseOffsets:f,axisStride:N}=W(y,D,x,n,o);for(let l=0;l<o;l++){let p=0,I=0,R=0,F=f[l];for(let _=0;_<t;_++){const V=i[F*2],M=i[F*2+1];K(V,M)||(p+=V,I+=M,R++),F+=N}if(R-S<=0){a[l]=NaN;continue}const B=p/R,E=I/R;let T=0;F=f[l];for(let _=0;_<t;_++){const V=i[F*2],M=i[F*2+1];if(!K(V,M)){const P=V-B,q=M-E;T+=P*P+q*q}F+=N}a[l]=T/(R-S)}if(u){const l=[...y];return l[n]=1,O.fromData(a,l,"float64")}return s}if(b===void 0){let i=0,n=0;const e=r.isCContiguous;if(e)for(let s=0;s<r.size;s++){const a=Number(A[x+s]);isNaN(a)||(i+=a,n++)}else for(let s=0;s<r.size;s++){const a=Number(r.iget(s));isNaN(a)||(i+=a,n++)}if(n-S<=0)return NaN;const o=i/n;let t=0;if(e)for(let s=0;s<r.size;s++){const a=Number(A[x+s]);isNaN(a)||(t+=(a-o)**2)}else for(let s=0;s<r.size;s++){const a=Number(r.iget(s));isNaN(a)||(t+=(a-o)**2)}return t/(n-S)}let w=b;if(w<0&&(w=h+w),w<0||w>=h)throw new Error(`axis ${b} is out of bounds for array of dimension ${h}`);const z=Array.from(y).filter((i,n)=>n!==w);if(z.length===0){const i=ct(r,void 0,S);return u?G(i,h,"float64"):i}const C=z.reduce((i,n)=>i*n,1),g=y[w],$=O.empty(z,"float64"),v=$.data,{baseOffsets:c,axisStride:d}=W(y,D,x,w,C);for(let i=0;i<C;i++){let n=0,e=0,o=c[i];for(let a=0;a<g;a++){const f=Number(A[o]);isNaN(f)||(n+=f,e++),o+=d}if(e-S<=0){v[i]=NaN;continue}const t=n/e;let s=0;o=c[i];for(let a=0;a<g;a++){const f=Number(A[o]);isNaN(f)||(s+=(f-t)**2),o+=d}v[i]=s/(e-S)}if(u){const i=[...y];return i[w]=1,O.fromData(v,i,"float64")}return $}function ve(r,b,S=0,u=!1){const m=ct(r,b,S,u);if(typeof m=="number")return Math.sqrt(m);const y=m,h=O.empty([...y.shape],"float64"),A=h.data;for(let x=0;x<y.size;x++)A[x]=Math.sqrt(Number(y.data[x]));return h}function Nt(r,b,S=!1){const u=r.dtype,m=r.shape,y=m.length,h=r.data,A=r.offset,x=r.strides;if(!U(u)&&!H(u))return nt(r,b,S);if(U(u)){const i=h;if(b===void 0){let l=1/0,p=1/0,I=!1;if(r.isCContiguous)for(let F=0;F<r.size;F++){const B=i[(A+F)*2],E=i[(A+F)*2+1];isNaN(B)||isNaN(E)||(I?(B<l||B===l&&E<p)&&(l=B,p=E):(l=B,p=E,I=!0))}else for(let F=0;F<r.size;F++){const B=r.iget(F),E=B.re,T=B.im;isNaN(E)||isNaN(T)||(I?(E<l||E===l&&T<p)&&(l=E,p=T):(l=E,p=T,I=!0))}return I?new Q(l,p):new Q(NaN,NaN)}let n=b;if(n<0&&(n=y+n),n<0||n>=y)throw new Error(`axis ${b} is out of bounds for array of dimension ${y}`);const e=Array.from(m).filter((l,p)=>p!==n);if(e.length===0){const l=Nt(r);return S?G(l,y,u):l}const o=e.reduce((l,p)=>l*p,1),t=m[n],s=O.empty(e,u),a=s.data,{baseOffsets:f,axisStride:N}=W(m,x,A,n,o);for(let l=0;l<o;l++){let p=1/0,I=1/0,R=!1,F=f[l];for(let B=0;B<t;B++){const E=i[F*2],T=i[F*2+1];F+=N,!(isNaN(E)||isNaN(T))&&(R?(E<p||E===p&&T<I)&&(p=E,I=T):(p=E,I=T,R=!0))}a[l*2]=R?p:NaN,a[l*2+1]=R?I:NaN}if(S){const l=[...m];return l[n]=1,O.fromData(a,l,u)}return s}if(b===void 0){const i=Wt(r);if(i!==null)return i;let n=1/0;if(r.isCContiguous)for(let o=0;o<r.size;o++){const t=Number(h[A+o]);!isNaN(t)&&t<n&&(n=t)}else for(let o=0;o<r.size;o++){const t=Number(r.iget(o));!isNaN(t)&&t<n&&(n=t)}return n===1/0?NaN:n}let D=b;if(D<0&&(D=y+D),D<0||D>=y)throw new Error(`axis ${b} is out of bounds for array of dimension ${y}`);const w=Array.from(m).filter((i,n)=>n!==D);if(w.length===0){const i=Nt(r);return S?G(i,y,"float64"):i}const z=H(u)?u:"float64",C=w.reduce((i,n)=>i*n,1),g=m[D],$=O.empty(w,z),v=$.data,{baseOffsets:c,axisStride:d}=W(m,x,A,D,C);for(let i=0;i<C;i++){let n=1/0,e=c[i];for(let o=0;o<g;o++){const t=Number(h[e]);!isNaN(t)&&t<n&&(n=t),e+=d}v[i]=n===1/0?NaN:n}if(S){const i=[...m];return i[D]=1,O.fromData(v,i,"float64")}return $}function It(r,b,S=!1){const u=r.dtype,m=r.shape,y=m.length,h=r.data,A=r.offset,x=r.strides;if(!U(u)&&!H(u))return ot(r,b,S);if(U(u)){const i=h;if(b===void 0){let l=-1/0,p=-1/0,I=!1;if(r.isCContiguous)for(let F=0;F<r.size;F++){const B=i[(A+F)*2],E=i[(A+F)*2+1];isNaN(B)||isNaN(E)||(I?(B>l||B===l&&E>p)&&(l=B,p=E):(l=B,p=E,I=!0))}else for(let F=0;F<r.size;F++){const B=r.iget(F),E=B.re,T=B.im;isNaN(E)||isNaN(T)||(I?(E>l||E===l&&T>p)&&(l=E,p=T):(l=E,p=T,I=!0))}return I?new Q(l,p):new Q(NaN,NaN)}let n=b;if(n<0&&(n=y+n),n<0||n>=y)throw new Error(`axis ${b} is out of bounds for array of dimension ${y}`);const e=Array.from(m).filter((l,p)=>p!==n);if(e.length===0){const l=It(r);return S?G(l,y,u):l}const o=e.reduce((l,p)=>l*p,1),t=m[n],s=O.empty(e,u),a=s.data,{baseOffsets:f,axisStride:N}=W(m,x,A,n,o);for(let l=0;l<o;l++){let p=-1/0,I=-1/0,R=!1,F=f[l];for(let B=0;B<t;B++){const E=i[F*2],T=i[F*2+1];F+=N,!(isNaN(E)||isNaN(T))&&(R?(E>p||E===p&&T>I)&&(p=E,I=T):(p=E,I=T,R=!0))}a[l*2]=R?p:NaN,a[l*2+1]=R?I:NaN}if(S){const l=[...m];return l[n]=1,O.fromData(a,l,u)}return s}if(b===void 0){const i=qt(r);if(i!==null)return i;let n=-1/0;if(r.isCContiguous)for(let o=0;o<r.size;o++){const t=Number(h[A+o]);!isNaN(t)&&t>n&&(n=t)}else for(let o=0;o<r.size;o++){const t=Number(r.iget(o));!isNaN(t)&&t>n&&(n=t)}return n===-1/0?NaN:n}let D=b;if(D<0&&(D=y+D),D<0||D>=y)throw new Error(`axis ${b} is out of bounds for array of dimension ${y}`);const w=Array.from(m).filter((i,n)=>n!==D);if(w.length===0){const i=It(r);return S?G(i,y,"float64"):i}const z=H(u)?u:"float64",C=w.reduce((i,n)=>i*n,1),g=m[D],$=O.empty(w,z),v=$.data,{baseOffsets:c,axisStride:d}=W(m,x,A,D,C);for(let i=0;i<C;i++){let n=-1/0,e=c[i];for(let o=0;o<g;o++){const t=Number(h[e]);!isNaN(t)&&t>n&&(n=t),e+=d}v[i]=n===-1/0?NaN:n}if(S){const i=[...m];return i[D]=1,O.fromData(v,i,"float64")}return $}function ht(r,b){const S=r.dtype;if(!U(S)&&!H(S))return xt(r,b);const u=r.shape,m=u.length,y=r.data,h=r.offset,A=r.strides;if(U(S)){const c=y;if(b===void 0){let f=1/0,N=1/0,l=-1;if(r.isCContiguous)for(let I=0;I<r.size;I++){const R=c[(h+I)*2],F=c[(h+I)*2+1];!K(R,F)&&X(R,F,f,N)<0&&(f=R,N=F,l=I)}else for(let I=0;I<r.size;I++){const R=r.iget(I),F=R.re,B=R.im;!K(F,B)&&X(F,B,f,N)<0&&(f=F,N=B,l=I)}return l}let d=b;if(d<0&&(d=m+d),d<0||d>=m)throw new Error(`axis ${b} is out of bounds for array of dimension ${m}`);const i=Array.from(u).filter((f,N)=>N!==d);if(i.length===0)return ht(r);const n=i.reduce((f,N)=>f*N,1),e=u[d],o=O.empty(i,"int32"),t=o.data,{baseOffsets:s,axisStride:a}=W(u,A,h,d,n);for(let f=0;f<n;f++){let N=1/0,l=1/0,p=0,I=s[f];for(let R=0;R<e;R++){const F=c[I*2],B=c[I*2+1];!K(F,B)&&X(F,B,N,l)<0&&(N=F,l=B,p=R),I+=a}t[f]=p}return o}if(b===void 0){let c=1/0,d=-1;if(r.isCContiguous)for(let n=0;n<r.size;n++){const e=Number(y[h+n]);!isNaN(e)&&e<c&&(c=e,d=n)}else for(let n=0;n<r.size;n++){const e=Number(r.iget(n));!isNaN(e)&&e<c&&(c=e,d=n)}return d}let x=b;if(x<0&&(x=m+x),x<0||x>=m)throw new Error(`axis ${b} is out of bounds for array of dimension ${m}`);const D=Array.from(u).filter((c,d)=>d!==x);if(D.length===0)return ht(r);const w=D.reduce((c,d)=>c*d,1),z=u[x],C=O.empty(D,"int32"),g=C.data,{baseOffsets:$,axisStride:v}=W(u,A,h,x,w);for(let c=0;c<w;c++){let d=1/0,i=0,n=$[c];for(let e=0;e<z;e++){const o=Number(y[n]);!isNaN(o)&&o<d&&(d=o,i=e),n+=v}g[c]=i}return C}function zt(r,b){const S=r.dtype;if(!U(S)&&!H(S))return bt(r,b);const u=r.shape,m=u.length,y=r.data,h=r.offset,A=r.strides;if(U(S)){const c=y;if(b===void 0){let f=-1/0,N=-1/0,l=-1;if(r.isCContiguous)for(let I=0;I<r.size;I++){const R=c[(h+I)*2],F=c[(h+I)*2+1];!K(R,F)&&X(R,F,f,N)>0&&(f=R,N=F,l=I)}else for(let I=0;I<r.size;I++){const R=r.iget(I),F=R.re,B=R.im;!K(F,B)&&X(F,B,f,N)>0&&(f=F,N=B,l=I)}return l}let d=b;if(d<0&&(d=m+d),d<0||d>=m)throw new Error(`axis ${b} is out of bounds for array of dimension ${m}`);const i=Array.from(u).filter((f,N)=>N!==d);if(i.length===0)return zt(r);const n=i.reduce((f,N)=>f*N,1),e=u[d],o=O.empty(i,"int32"),t=o.data,{baseOffsets:s,axisStride:a}=W(u,A,h,d,n);for(let f=0;f<n;f++){let N=-1/0,l=-1/0,p=0,I=s[f];for(let R=0;R<e;R++){const F=c[I*2],B=c[I*2+1];!K(F,B)&&X(F,B,N,l)>0&&(N=F,l=B,p=R),I+=a}t[f]=p}return o}if(b===void 0){let c=-1/0,d=-1;if(r.isCContiguous)for(let n=0;n<r.size;n++){const e=Number(y[h+n]);!isNaN(e)&&e>c&&(c=e,d=n)}else for(let n=0;n<r.size;n++){const e=Number(r.iget(n));!isNaN(e)&&e>c&&(c=e,d=n)}return d}let x=b;if(x<0&&(x=m+x),x<0||x>=m)throw new Error(`axis ${b} is out of bounds for array of dimension ${m}`);const D=Array.from(u).filter((c,d)=>d!==x);if(D.length===0)return zt(r);const w=D.reduce((c,d)=>c*d,1),z=u[x],C=O.empty(D,"int32"),g=C.data,{baseOffsets:$,axisStride:v}=W(u,A,h,x,w);for(let c=0;c<w;c++){let d=-1/0,i=0,n=$[c];for(let e=0;e<z;e++){const o=Number(y[n]);!isNaN(o)&&o>d&&(d=o,i=e),n+=v}g[c]=i}return C}function $e(r,b){const S=r.dtype;if(!U(S)&&!H(S))return te(r,b);const u=r.shape,m=u.length,y=r.data,h=r.offset;if(U(S)){const c=y,d=r.size;if(b===void 0){const l=O.zeros([d],S),p=l.data;let I=0,R=0;if(r.isCContiguous)for(let B=0;B<d;B++){const E=c[(h+B)*2],T=c[(h+B)*2+1];K(E,T)||(I+=E,R+=T),p[B*2]=I,p[B*2+1]=R}else for(let B=0;B<d;B++){const E=r.iget(B),T=E.re,_=E.im;K(T,_)||(I+=T,R+=_),p[B*2]=I,p[B*2+1]=R}return l}let i=b;if(i<0&&(i=m+i),i<0||i>=m)throw new Error(`axis ${b} is out of bounds for array of dimension ${m}`);const n=O.zeros([...u],S),e=n.data,o=u[i],t=[];let s=1;for(let l=m-1;l>=0;l--)t.unshift(s),s*=u[l];const a=r.size,f=t[i];if(r.isCContiguous)for(let l=0;l<a;l++){const p=c[(h+l)*2],I=c[(h+l)*2+1],R=Math.floor(l/f)%o,F=K(p,I);R===0?(e[l*2]=F?0:p,e[l*2+1]=F?0:I):(e[l*2]=e[(l-f)*2]+(F?0:p),e[l*2+1]=e[(l-f)*2+1]+(F?0:I))}else for(let l=0;l<a;l++){const p=r.iget(l),I=p.re,R=p.im,F=Math.floor(l/f)%o,B=K(I,R);F===0?(e[l*2]=B?0:I,e[l*2+1]=B?0:R):(e[l*2]=e[(l-f)*2]+(B?0:I),e[l*2+1]=e[(l-f)*2+1]+(B?0:R))}return n}if(b===void 0){const c=r.size,d=O.empty([c],S),i=d.data;let n=0;if(r.isCContiguous)for(let o=0;o<c;o++){const t=Number(y[h+o]);isNaN(t)||(n+=t),i[o]=n}else for(let o=0;o<c;o++){const t=Number(r.iget(o));isNaN(t)||(n+=t),i[o]=n}return d}let A=b;if(A<0&&(A=m+A),A<0||A>=m)throw new Error(`axis ${b} is out of bounds for array of dimension ${m}`);const x=O.empty([...u],S),D=x.data,w=u[A],z=[];let C=1;for(let c=m-1;c>=0;c--)z.unshift(C),C*=u[c];const g=r.size,$=z[A];if(r.isCContiguous)for(let c=0;c<g;c++){const d=Number(y[h+c]);Math.floor(c/$)%w===0?D[c]=isNaN(d)?0:d:D[c]=D[c-$]+(isNaN(d)?0:d)}else for(let c=0;c<g;c++){const d=Number(r.iget(c));Math.floor(c/$)%w===0?D[c]=isNaN(d)?0:d:D[c]=D[c-$]+(isNaN(d)?0:d)}return x}function ge(r,b){const S=r.dtype;if(!U(S)&&!H(S))return ee(r,b);const u=r.shape,m=u.length,y=r.data,h=r.offset;if(U(S)){const c=y,d=r.size;if(b===void 0){const l=O.zeros([d],S),p=l.data;let I=1,R=0;if(r.isCContiguous)for(let B=0;B<d;B++){const E=c[(h+B)*2],T=c[(h+B)*2+1];if(!K(E,T)){const _=I*E-R*T,V=I*T+R*E;I=_,R=V}p[B*2]=I,p[B*2+1]=R}else for(let B=0;B<d;B++){const E=r.iget(B),T=E.re,_=E.im;if(!K(T,_)){const V=I*T-R*_,M=I*_+R*T;I=V,R=M}p[B*2]=I,p[B*2+1]=R}return l}let i=b;if(i<0&&(i=m+i),i<0||i>=m)throw new Error(`axis ${b} is out of bounds for array of dimension ${m}`);const n=O.zeros([...u],S),e=n.data,o=u[i],t=[];let s=1;for(let l=m-1;l>=0;l--)t.unshift(s),s*=u[l];const a=r.size,f=t[i];if(r.isCContiguous)for(let l=0;l<a;l++){const p=c[(h+l)*2],I=c[(h+l)*2+1],R=Math.floor(l/f)%o,F=K(p,I);if(R===0)e[l*2]=F?1:p,e[l*2+1]=F?0:I;else{const B=e[(l-f)*2],E=e[(l-f)*2+1];F?(e[l*2]=B,e[l*2+1]=E):(e[l*2]=B*p-E*I,e[l*2+1]=B*I+E*p)}}else for(let l=0;l<a;l++){const p=r.iget(l),I=p.re,R=p.im,F=Math.floor(l/f)%o,B=K(I,R);if(F===0)e[l*2]=B?1:I,e[l*2+1]=B?0:R;else{const E=e[(l-f)*2],T=e[(l-f)*2+1];B?(e[l*2]=E,e[l*2+1]=T):(e[l*2]=E*I-T*R,e[l*2+1]=E*R+T*I)}}return n}if(b===void 0){const c=r.size,d=O.empty([c],S),i=d.data;let n=1;if(r.isCContiguous)for(let o=0;o<c;o++){const t=Number(y[h+o]);isNaN(t)||(n*=t),i[o]=n}else for(let o=0;o<c;o++){const t=Number(r.iget(o));isNaN(t)||(n*=t),i[o]=n}return d}let A=b;if(A<0&&(A=m+A),A<0||A>=m)throw new Error(`axis ${b} is out of bounds for array of dimension ${m}`);const x=O.empty([...u],S),D=x.data,w=u[A],z=[];let C=1;for(let c=m-1;c>=0;c--)z.unshift(C),C*=u[c];const g=r.size,$=z[A];if(r.isCContiguous)for(let c=0;c<g;c++){const d=Number(y[h+c]);Math.floor(c/$)%w===0?D[c]=isNaN(d)?1:d:D[c]=D[c-$]*(isNaN(d)?1:d)}else for(let c=0;c<g;c++){const d=Number(r.iget(c));Math.floor(c/$)%w===0?D[c]=isNaN(d)?1:d:D[c]=D[c-$]*(isNaN(d)?1:d)}return x}function ie(r,b,S=!1){if(U(r.dtype))return ut(r,b,S,!0);if(!H(r.dtype))return re(r,b,S);const u=r.shape,m=u.length,y=r.data,h=r.offset,A=r.strides;if(b===void 0){const c=[];if(r.isCContiguous)for(let e=0;e<r.size;e++){const o=Number(y[h+e]);isNaN(o)||c.push(o)}else for(let e=0;e<r.size;e++){const o=Number(r.iget(e));isNaN(o)||c.push(o)}if(c.length===0)return NaN;c.sort((e,o)=>e-o);const i=c.length,n=Math.floor(i/2);return i%2===0?(c[n-1]+c[n])/2:c[n]}let x=b;if(x<0&&(x=m+x),x<0||x>=m)throw new Error(`axis ${b} is out of bounds for array of dimension ${m}`);const D=Array.from(u).filter((c,d)=>d!==x);if(D.length===0){const c=ie(r);return S?G(c,m,"float64"):c}const w=D.reduce((c,d)=>c*d,1),z=u[x],C=O.empty(D,"float64"),g=C.data,{baseOffsets:$,axisStride:v}=W(u,A,h,x,w);for(let c=0;c<w;c++){const d=[];let i=$[c];for(let o=0;o<z;o++){const t=Number(y[i]);isNaN(t)||d.push(t),i+=v}if(d.length===0){g[c]=NaN;continue}d.sort((o,t)=>o-t);const n=d.length,e=Math.floor(n/2);n%2===0?g[c]=(d[e-1]+d[e])/2:g[c]=d[e]}if(S){const c=[...u];return c[x]=1,O.fromData(g,c,"float64")}return C}function wt(r,b,S,u=!1){if(dt(r.dtype,"nanquantile","Complex numbers are not orderable."),r.dtype==="bool")throw new TypeError("ufunc 'subtract' not supported for boolean dtype. The '-' operator is not supported for booleans, use 'bitwise_xor' instead.");if(!H(r.dtype))return st(r,b,S,u);if(b<0||b>1)throw new Error("Quantile must be between 0 and 1");const m=r.shape,y=m.length,h=r.data,A=r.offset,x=r.strides;if(S===void 0){const d=[];if(r.isCContiguous)for(let a=0;a<r.size;a++){const f=Number(h[A+a]);isNaN(f)||d.push(f)}else for(let a=0;a<r.size;a++){const f=Number(r.iget(a));isNaN(f)||d.push(f)}if(d.length===0)return NaN;d.sort((a,f)=>a-f);const n=d.length,e=b*(n-1),o=Math.floor(e),t=Math.ceil(e);if(o===t)return d[o];const s=e-o;return d[o]*(1-s)+d[t]*s}let D=S;if(D<0&&(D=y+D),D<0||D>=y)throw new Error(`axis ${S} is out of bounds for array of dimension ${y}`);const w=Array.from(m).filter((d,i)=>i!==D);if(w.length===0){const d=wt(r,b);return u?G(d,y,"float64"):d}const z=w.reduce((d,i)=>d*i,1),C=m[D],g=O.empty(w,"float64"),$=g.data,{baseOffsets:v,axisStride:c}=W(m,x,A,D,z);for(let d=0;d<z;d++){const i=[];let n=v[d];for(let a=0;a<C;a++){const f=Number(h[n]);isNaN(f)||i.push(f),n+=c}if(i.length===0){$[d]=NaN;continue}i.sort((a,f)=>a-f);const e=i.length,o=b*(e-1),t=Math.floor(o),s=Math.ceil(o);if(t===s)$[d]=i[t];else{const a=o-t;$[d]=i[t]*(1-a)+i[s]*a}}if(u){const d=[...m];return d[D]=1,O.fromData($,d,"float64")}return g}function Be(r,b,S,u=!1){return wt(r,b/100,S,u)}export{Zt as all,kt as any,bt as argmax,xt as argmin,St as average,ee as cumprod,te as cumsum,ot as max,ft as mean,re as median,nt as min,zt as nanargmax,ht as nanargmin,ge as nancumprod,$e as nancumsum,It as nanmax,se as nanmean,ie as nanmedian,Nt as nanmin,Be as nanpercentile,ne as nanprod,wt as nanquantile,ve as nanstd,oe as nansum,ct as nanvar,Re as percentile,yt as prod,Fe as ptp,st as quantile,Ce as std,et as sum,At as variance};
@@ -1 +1 @@
1
- import{ArrayStorage as c}from"../storage.js";import{throwIfComplex as l}from"../dtype.js";function p(t){if(!isFinite(t))return t;const r=Math.floor(t),a=t-r;return Math.abs(a-.5)<1e-10?r%2===0?r:r+1:Math.round(t)}function g(t,r=0){l(t.dtype,"around","Rounding is not defined for complex numbers.");const a=t.dtype,n=Array.from(t.shape),u=t.size,f=a==="float32"?"float32":"float64",s=c.zeros(n,f),o=s.data,i=Math.pow(10,r);if(t.isCContiguous){const e=t.data,y=t.offset;for(let d=0;d<u;d++){const m=Number(e[y+d]);o[d]=p(m*i)/i}}else for(let e=0;e<u;e++){const y=Number(t.iget(e));o[e]=p(y*i)/i}return s}function A(t){l(t.dtype,"ceil","Rounding is not defined for complex numbers.");const r=t.dtype,a=Array.from(t.shape),n=t.size,u=r==="float32"?"float32":"float64",f=c.zeros(a,u),s=f.data;if(t.isCContiguous){const o=t.data,i=t.offset;for(let e=0;e<n;e++)s[e]=Math.ceil(Number(o[i+e]))}else for(let o=0;o<n;o++)s[o]=Math.ceil(Number(t.iget(o)));return f}function z(t){l(t.dtype,"fix","Rounding is not defined for complex numbers.");const r=t.dtype,a=Array.from(t.shape),n=t.size,u=r==="float32"?"float32":"float64",f=c.zeros(a,u),s=f.data;if(t.isCContiguous){const o=t.data,i=t.offset;for(let e=0;e<n;e++)s[e]=Math.trunc(Number(o[i+e]))}else for(let o=0;o<n;o++)s[o]=Math.trunc(Number(t.iget(o)));return f}function S(t){l(t.dtype,"floor","Rounding is not defined for complex numbers.");const r=t.dtype,a=Array.from(t.shape),n=t.size,u=r==="float32"?"float32":"float64",f=c.zeros(a,u),s=f.data;if(t.isCContiguous){const o=t.data,i=t.offset;for(let e=0;e<n;e++)s[e]=Math.floor(Number(o[i+e]))}else for(let o=0;o<n;o++)s[o]=Math.floor(Number(t.iget(o)));return f}function C(t){l(t.dtype,"rint","Rounding is not defined for complex numbers.");const r=t.dtype,a=Array.from(t.shape),n=t.size,u=r==="float32"?"float32":"float64",f=c.zeros(a,u),s=f.data;if(t.isCContiguous){const o=t.data,i=t.offset;for(let e=0;e<n;e++)s[e]=p(Number(o[i+e]))}else for(let o=0;o<n;o++)s[o]=p(Number(t.iget(o)));return f}function x(t,r=0){return g(t,r)}function D(t){l(t.dtype,"trunc","Rounding is not defined for complex numbers.");const r=t.dtype,a=Array.from(t.shape),n=t.size,u=r==="float32"?"float32":"float64",f=c.zeros(a,u),s=f.data;if(t.isCContiguous){const o=t.data,i=t.offset;for(let e=0;e<n;e++)s[e]=Math.trunc(Number(o[i+e]))}else for(let o=0;o<n;o++)s[o]=Math.trunc(Number(t.iget(o)));return f}export{g as around,A as ceil,z as fix,S as floor,C as rint,x as round,D as trunc};
1
+ import{ArrayStorage as y}from"../storage.js";import{throwIfComplex as g,isComplexDType as A,isIntegerDType as l,mathResultDtype as b}from"../dtype.js";function z(t,o){const u=t.dtype,f=Array.from(t.shape),c=t.size,i=y.empty(f,u),n=i.data;if(t.isCContiguous){const e=t.data,s=t.offset;for(let r=0;r<c;r++)n[r*2]=o(e[(s+r)*2]),n[r*2+1]=o(e[(s+r)*2+1])}else for(let e=0;e<c;e++){const s=t.iget(e);n[e*2]=o(s.re),n[e*2+1]=o(s.im)}return i}function d(t){if(!isFinite(t))return t;const o=Math.floor(t),u=t-o;return Math.abs(u-.5)<1e-10?o%2===0?o:o+1:Math.round(t)}function C(t,o=0){if(A(t.dtype)){const r=Math.pow(10,o);return z(t,a=>d(a*r)/r)}if(l(t.dtype)&&o>=0)return t.copy();if(t.dtype==="bool"){const r=b("bool"),a=y.empty(Array.from(t.shape),r),p=t.data,h=t.offset;for(let m=0;m<t.size;m++)a.data[m]=p[h+m];return a}const u=t.dtype,f=Array.from(t.shape),c=t.size,i=u,n=y.zeros(f,i),e=n.data,s=Math.pow(10,o);if(t.isCContiguous){const r=t.data,a=t.offset;for(let p=0;p<c;p++){const h=Number(r[a+p]);e[p]=d(h*s)/s}}else for(let r=0;r<c;r++){const a=Number(t.iget(r));e[r]=d(a*s)/s}return n}function N(t){if(g(t.dtype,"ceil","Rounding is not defined for complex numbers."),l(t.dtype))return t.copy();const o=t.dtype,u=Array.from(t.shape),f=t.size,c=o,i=y.zeros(u,c),n=i.data;if(t.isCContiguous){const e=t.data,s=t.offset;for(let r=0;r<f;r++)n[r]=Math.ceil(Number(e[s+r]))}else for(let e=0;e<f;e++)n[e]=Math.ceil(Number(t.iget(e)));return i}function F(t){if(g(t.dtype,"fix","Rounding is not defined for complex numbers."),l(t.dtype))return t.copy();const o=t.dtype,u=Array.from(t.shape),f=t.size,c=o,i=y.zeros(u,c),n=i.data;if(t.isCContiguous){const e=t.data,s=t.offset;for(let r=0;r<f;r++)n[r]=Math.trunc(Number(e[s+r]))}else for(let e=0;e<f;e++)n[e]=Math.trunc(Number(t.iget(e)));return i}function R(t){if(g(t.dtype,"floor","Rounding is not defined for complex numbers."),l(t.dtype))return t.copy();const o=t.dtype,u=Array.from(t.shape),f=t.size,c=o,i=y.zeros(u,c),n=i.data;if(t.isCContiguous){const e=t.data,s=t.offset;for(let r=0;r<f;r++)n[r]=Math.floor(Number(e[s+r]))}else for(let e=0;e<f;e++)n[e]=Math.floor(Number(t.iget(e)));return i}function v(t){if(A(t.dtype))return z(t,d);if(l(t.dtype)||t.dtype==="bool"){const e=b(t.dtype),s=y.empty(Array.from(t.shape),e),r=t.data,a=t.offset;for(let p=0;p<t.size;p++)s.data[p]=Number(r[a+p]);return s}const o=t.dtype,u=Array.from(t.shape),f=t.size,c=o,i=y.zeros(u,c),n=i.data;if(t.isCContiguous){const e=t.data,s=t.offset;for(let r=0;r<f;r++)n[r]=d(Number(e[s+r]))}else for(let e=0;e<f;e++)n[e]=d(Number(t.iget(e)));return i}function w(t,o=0){return C(t,o)}function T(t){if(g(t.dtype,"trunc","Rounding is not defined for complex numbers."),l(t.dtype))return t.copy();const o=t.dtype,u=Array.from(t.shape),f=t.size,c=o,i=y.zeros(u,c),n=i.data;if(t.isCContiguous){const e=t.data,s=t.offset;for(let r=0;r<f;r++)n[r]=Math.trunc(Number(e[s+r]))}else for(let e=0;e<f;e++)n[e]=Math.trunc(Number(t.iget(e)));return i}export{C as around,N as ceil,F as fix,R as floor,v as rint,w as round,T as trunc};