numpy-ts 0.13.1 → 1.1.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 (419) hide show
  1. package/README.md +30 -251
  2. package/dist/esm/common/internal/indexing.js +1 -1
  3. package/dist/esm/common/ndarray-core.js +1 -1
  4. package/dist/esm/common/ops/advanced.js +1 -1
  5. package/dist/esm/common/ops/arithmetic.js +1 -1
  6. package/dist/esm/common/ops/bitwise.js +1 -1
  7. package/dist/esm/common/ops/exponential.js +1 -1
  8. package/dist/esm/common/ops/fft.js +1 -1
  9. package/dist/esm/common/ops/gradient.js +1 -1
  10. package/dist/esm/common/ops/hyperbolic.js +1 -1
  11. package/dist/esm/common/ops/linalg.js +2 -2
  12. package/dist/esm/common/ops/logic.js +1 -1
  13. package/dist/esm/common/ops/reduction.js +1 -1
  14. package/dist/esm/common/ops/sets.js +1 -1
  15. package/dist/esm/common/ops/shape.js +1 -1
  16. package/dist/esm/common/ops/sorting.js +1 -1
  17. package/dist/esm/common/ops/statistics.js +1 -1
  18. package/dist/esm/common/ops/trig.js +1 -1
  19. package/dist/esm/common/storage.js +1 -1
  20. package/dist/esm/common/wasm/abs.js +1 -0
  21. package/dist/esm/common/wasm/add.js +1 -0
  22. package/dist/esm/common/wasm/arccos.js +1 -0
  23. package/dist/esm/common/wasm/arcsin.js +1 -0
  24. package/dist/esm/common/wasm/arctan.js +1 -0
  25. package/dist/esm/common/wasm/argpartition.js +1 -0
  26. package/dist/esm/common/wasm/argsort.js +1 -0
  27. package/dist/esm/common/wasm/bins/abs.wasm.js +1 -0
  28. package/dist/esm/common/wasm/bins/add.wasm.js +1 -0
  29. package/dist/esm/common/wasm/bins/arccos.wasm.js +1 -0
  30. package/dist/esm/common/wasm/bins/arcsin.wasm.js +1 -0
  31. package/dist/esm/common/wasm/bins/arctan.wasm.js +1 -0
  32. package/dist/esm/common/wasm/bins/argpartition.wasm.js +1 -0
  33. package/dist/esm/common/wasm/bins/argsort.wasm.js +1 -0
  34. package/dist/esm/common/wasm/bins/bitwise_and.wasm.js +1 -0
  35. package/dist/esm/common/wasm/bins/bitwise_count.wasm.js +1 -0
  36. package/dist/esm/common/wasm/bins/bitwise_not.wasm.js +1 -0
  37. package/dist/esm/common/wasm/bins/bitwise_or.wasm.js +1 -0
  38. package/dist/esm/common/wasm/bins/bitwise_xor.wasm.js +1 -0
  39. package/dist/esm/common/wasm/bins/cholesky.wasm.js +1 -0
  40. package/dist/esm/common/wasm/bins/clip.wasm.js +1 -0
  41. package/dist/esm/common/wasm/bins/convolve.wasm.js +1 -0
  42. package/dist/esm/common/wasm/bins/copysign.wasm.js +1 -0
  43. package/dist/esm/common/wasm/bins/correlate.wasm.js +1 -0
  44. package/dist/esm/common/wasm/bins/cos.wasm.js +1 -0
  45. package/dist/esm/common/wasm/bins/cosh.wasm.js +1 -0
  46. package/dist/esm/common/wasm/bins/cross.wasm.js +1 -0
  47. package/dist/esm/common/wasm/bins/diff.wasm.js +1 -0
  48. package/dist/esm/common/wasm/bins/divide.wasm.js +1 -0
  49. package/dist/esm/common/wasm/bins/dot.wasm.js +1 -0
  50. package/dist/esm/common/wasm/bins/exp.wasm.js +1 -0
  51. package/dist/esm/common/wasm/bins/exp2.wasm.js +1 -0
  52. package/dist/esm/common/wasm/bins/fft.wasm.js +1 -0
  53. package/dist/esm/common/wasm/bins/flip.wasm.js +1 -0
  54. package/dist/esm/common/wasm/bins/frexp.wasm.js +1 -0
  55. package/dist/esm/common/wasm/bins/gather.wasm.js +1 -0
  56. package/dist/esm/common/wasm/bins/gcd.wasm.js +1 -0
  57. package/dist/esm/common/wasm/bins/gradient.wasm.js +1 -0
  58. package/dist/esm/common/wasm/bins/heaviside.wasm.js +1 -0
  59. package/dist/esm/common/wasm/bins/hypot.wasm.js +1 -0
  60. package/dist/esm/common/wasm/bins/indices.wasm.js +1 -0
  61. package/dist/esm/common/wasm/bins/inner.wasm.js +1 -0
  62. package/dist/esm/common/wasm/bins/kron.wasm.js +1 -0
  63. package/dist/esm/common/wasm/bins/ldexp.wasm.js +1 -0
  64. package/dist/esm/common/wasm/bins/left_shift.wasm.js +1 -0
  65. package/dist/esm/common/wasm/bins/lexsort.wasm.js +1 -0
  66. package/dist/esm/common/wasm/bins/logaddexp.wasm.js +1 -0
  67. package/dist/esm/common/wasm/bins/logical_and.wasm.js +1 -0
  68. package/dist/esm/common/wasm/bins/logical_not.wasm.js +1 -0
  69. package/dist/esm/common/wasm/bins/logical_or.wasm.js +1 -0
  70. package/dist/esm/common/wasm/bins/logical_xor.wasm.js +1 -0
  71. package/dist/esm/common/wasm/bins/matmul.wasm.js +1 -0
  72. package/dist/esm/common/wasm/bins/matvec.wasm.js +1 -0
  73. package/dist/esm/common/wasm/bins/max.wasm.js +1 -0
  74. package/dist/esm/common/wasm/bins/min.wasm.js +1 -0
  75. package/dist/esm/common/wasm/bins/mul.wasm.js +1 -0
  76. package/dist/esm/common/wasm/bins/neg.wasm.js +1 -0
  77. package/dist/esm/common/wasm/bins/outer.wasm.js +1 -0
  78. package/dist/esm/common/wasm/bins/pad.wasm.js +1 -0
  79. package/dist/esm/common/wasm/bins/partition.wasm.js +1 -0
  80. package/dist/esm/common/wasm/bins/power.wasm.js +1 -0
  81. package/dist/esm/common/wasm/bins/qr.wasm.js +1 -0
  82. package/dist/esm/common/wasm/bins/reciprocal.wasm.js +1 -0
  83. package/dist/esm/common/wasm/bins/reduce_all.wasm.js +1 -0
  84. package/dist/esm/common/wasm/bins/reduce_any.wasm.js +1 -0
  85. package/dist/esm/common/wasm/bins/reduce_argmax.wasm.js +1 -0
  86. package/dist/esm/common/wasm/bins/reduce_argmin.wasm.js +1 -0
  87. package/dist/esm/common/wasm/bins/reduce_count_nz.wasm.js +1 -0
  88. package/dist/esm/common/wasm/bins/reduce_max.wasm.js +1 -0
  89. package/dist/esm/common/wasm/bins/reduce_mean.wasm.js +1 -0
  90. package/dist/esm/common/wasm/bins/reduce_min.wasm.js +1 -0
  91. package/dist/esm/common/wasm/bins/reduce_nanmax.wasm.js +1 -0
  92. package/dist/esm/common/wasm/bins/reduce_nanmin.wasm.js +1 -0
  93. package/dist/esm/common/wasm/bins/reduce_nansum.wasm.js +1 -0
  94. package/dist/esm/common/wasm/bins/reduce_prod.wasm.js +1 -0
  95. package/dist/esm/common/wasm/bins/reduce_quantile.wasm.js +1 -0
  96. package/dist/esm/common/wasm/bins/reduce_std.wasm.js +1 -0
  97. package/dist/esm/common/wasm/bins/reduce_sum.wasm.js +1 -0
  98. package/dist/esm/common/wasm/bins/reduce_var.wasm.js +1 -0
  99. package/dist/esm/common/wasm/bins/repeat.wasm.js +1 -0
  100. package/dist/esm/common/wasm/bins/right_shift.wasm.js +1 -0
  101. package/dist/esm/common/wasm/bins/roll.wasm.js +1 -0
  102. package/dist/esm/common/wasm/bins/rot90.wasm.js +1 -0
  103. package/dist/esm/common/wasm/bins/searchsorted.wasm.js +1 -0
  104. package/dist/esm/common/wasm/bins/sign.wasm.js +1 -0
  105. package/dist/esm/common/wasm/bins/sinh.wasm.js +1 -0
  106. package/dist/esm/common/wasm/bins/sort.wasm.js +1 -0
  107. package/dist/esm/common/wasm/bins/sqrt.wasm.js +1 -0
  108. package/dist/esm/common/wasm/bins/square.wasm.js +1 -0
  109. package/dist/esm/common/wasm/bins/sub.wasm.js +1 -0
  110. package/dist/esm/common/wasm/bins/svd.wasm.js +1 -0
  111. package/dist/esm/common/wasm/bins/tan.wasm.js +1 -0
  112. package/dist/esm/common/wasm/bins/tanh.wasm.js +1 -0
  113. package/dist/esm/common/wasm/bins/tile.wasm.js +1 -0
  114. package/dist/esm/common/wasm/bins/vdot.wasm.js +1 -0
  115. package/dist/esm/common/wasm/bins/vecdot.wasm.js +1 -0
  116. package/dist/esm/common/wasm/bins/vecmat.wasm.js +1 -0
  117. package/dist/esm/common/wasm/bitwise_and.js +1 -0
  118. package/dist/esm/common/wasm/bitwise_count.js +1 -0
  119. package/dist/esm/common/wasm/bitwise_not.js +1 -0
  120. package/dist/esm/common/wasm/bitwise_or.js +1 -0
  121. package/dist/esm/common/wasm/bitwise_xor.js +1 -0
  122. package/dist/esm/common/wasm/cholesky.js +1 -0
  123. package/dist/esm/common/wasm/clip.js +1 -0
  124. package/dist/esm/common/wasm/config.js +1 -0
  125. package/dist/esm/common/wasm/convolve.js +1 -0
  126. package/dist/esm/common/wasm/copysign.js +1 -0
  127. package/dist/esm/common/wasm/correlate.js +1 -0
  128. package/dist/esm/common/wasm/cos.js +1 -0
  129. package/dist/esm/common/wasm/cosh.js +1 -0
  130. package/dist/esm/common/wasm/cross.js +1 -0
  131. package/dist/esm/common/wasm/diff.js +1 -0
  132. package/dist/esm/common/wasm/divide.js +1 -0
  133. package/dist/esm/common/wasm/dot.js +1 -0
  134. package/dist/esm/common/wasm/exp.js +1 -0
  135. package/dist/esm/common/wasm/exp2.js +1 -0
  136. package/dist/esm/common/wasm/fft.js +1 -0
  137. package/dist/esm/common/wasm/flip.js +1 -0
  138. package/dist/esm/common/wasm/frexp.js +1 -0
  139. package/dist/esm/common/wasm/gather.js +1 -0
  140. package/dist/esm/common/wasm/gcd.js +1 -0
  141. package/dist/esm/common/wasm/gradient.js +1 -0
  142. package/dist/esm/common/wasm/heaviside.js +1 -0
  143. package/dist/esm/common/wasm/hypot.js +1 -0
  144. package/dist/esm/common/wasm/indices.js +1 -0
  145. package/dist/esm/common/wasm/inner.js +1 -0
  146. package/dist/esm/common/wasm/kron.js +1 -0
  147. package/dist/esm/common/wasm/ldexp.js +1 -0
  148. package/dist/esm/common/wasm/left_shift.js +1 -0
  149. package/dist/esm/common/wasm/lexsort.js +1 -0
  150. package/dist/esm/common/wasm/logaddexp.js +1 -0
  151. package/dist/esm/common/wasm/logical_and.js +1 -0
  152. package/dist/esm/common/wasm/logical_not.js +1 -0
  153. package/dist/esm/common/wasm/logical_or.js +1 -0
  154. package/dist/esm/common/wasm/logical_xor.js +1 -0
  155. package/dist/esm/common/wasm/lstsq.js +1 -0
  156. package/dist/esm/common/wasm/matmul.js +1 -0
  157. package/dist/esm/common/wasm/matvec.js +1 -0
  158. package/dist/esm/common/wasm/max.js +1 -0
  159. package/dist/esm/common/wasm/min.js +1 -0
  160. package/dist/esm/common/wasm/mul.js +1 -0
  161. package/dist/esm/common/wasm/neg.js +1 -0
  162. package/dist/esm/common/wasm/outer.js +1 -0
  163. package/dist/esm/common/wasm/pad.js +1 -0
  164. package/dist/esm/common/wasm/partition.js +1 -0
  165. package/dist/esm/common/wasm/power.js +1 -0
  166. package/dist/esm/common/wasm/qr.js +1 -0
  167. package/dist/esm/common/wasm/reciprocal.js +1 -0
  168. package/dist/esm/common/wasm/reduce_all.js +1 -0
  169. package/dist/esm/common/wasm/reduce_any.js +1 -0
  170. package/dist/esm/common/wasm/reduce_argmax.js +1 -0
  171. package/dist/esm/common/wasm/reduce_argmin.js +1 -0
  172. package/dist/esm/common/wasm/reduce_count_nz.js +1 -0
  173. package/dist/esm/common/wasm/reduce_max.js +1 -0
  174. package/dist/esm/common/wasm/reduce_mean.js +1 -0
  175. package/dist/esm/common/wasm/reduce_min.js +1 -0
  176. package/dist/esm/common/wasm/reduce_nanmax.js +1 -0
  177. package/dist/esm/common/wasm/reduce_nanmin.js +1 -0
  178. package/dist/esm/common/wasm/reduce_nansum.js +1 -0
  179. package/dist/esm/common/wasm/reduce_prod.js +1 -0
  180. package/dist/esm/common/wasm/reduce_quantile.js +1 -0
  181. package/dist/esm/common/wasm/reduce_std.js +1 -0
  182. package/dist/esm/common/wasm/reduce_sum.js +1 -0
  183. package/dist/esm/common/wasm/reduce_var.js +1 -0
  184. package/dist/esm/common/wasm/repeat.js +1 -0
  185. package/dist/esm/common/wasm/right_shift.js +1 -0
  186. package/dist/esm/common/wasm/roll.js +1 -0
  187. package/dist/esm/common/wasm/rot90.js +1 -0
  188. package/dist/esm/common/wasm/runtime.js +1 -0
  189. package/dist/esm/common/wasm/searchsorted.js +1 -0
  190. package/dist/esm/common/wasm/sign.js +1 -0
  191. package/dist/esm/common/wasm/sinh.js +1 -0
  192. package/dist/esm/common/wasm/sort.js +1 -0
  193. package/dist/esm/common/wasm/sqrt.js +1 -0
  194. package/dist/esm/common/wasm/square.js +1 -0
  195. package/dist/esm/common/wasm/sub.js +1 -0
  196. package/dist/esm/common/wasm/svd.js +1 -0
  197. package/dist/esm/common/wasm/tan.js +1 -0
  198. package/dist/esm/common/wasm/tanh.js +1 -0
  199. package/dist/esm/common/wasm/tile.js +1 -0
  200. package/dist/esm/common/wasm/vdot.js +1 -0
  201. package/dist/esm/common/wasm/vecdot.js +1 -0
  202. package/dist/esm/common/wasm/vecmat.js +1 -0
  203. package/dist/esm/core/creation.js +1 -1
  204. package/dist/esm/core/linalg.js +1 -1
  205. package/dist/esm/core/polynomial.js +1 -1
  206. package/dist/esm/core/reduction.js +1 -1
  207. package/dist/esm/core/sets.js +1 -1
  208. package/dist/esm/core/shape-extra.js +1 -1
  209. package/dist/esm/core/sorting.js +1 -1
  210. package/dist/esm/full/index.js +1 -1
  211. package/dist/esm/full/ndarray.js +1 -1
  212. package/dist/esm/index.js +1 -1
  213. package/dist/esm/io/zip/types.js +1 -1
  214. package/dist/esm/io/zip/writer.js +1 -1
  215. package/dist/numpy-ts.browser.js +6 -6
  216. package/dist/numpy-ts.node-io.cjs +6 -6
  217. package/dist/numpy-ts.node-io.cjs.map +4 -4
  218. package/dist/numpy-ts.node-io.mjs +6 -6
  219. package/dist/numpy-ts.node-io.mjs.map +4 -4
  220. package/dist/numpy-ts.node.cjs +6 -6
  221. package/dist/numpy-ts.node.cjs.map +4 -4
  222. package/dist/types/common/internal/indexing.d.ts +18 -0
  223. package/dist/types/common/ndarray-core.d.ts +3 -13
  224. package/dist/types/common/ops/linalg.d.ts +13 -12
  225. package/dist/types/common/ops/sets.d.ts +1 -1
  226. package/dist/types/common/ops/shape.d.ts +11 -0
  227. package/dist/types/common/storage.d.ts +4 -0
  228. package/dist/types/common/wasm/abs.d.ts +14 -0
  229. package/dist/types/common/wasm/add.d.ts +19 -0
  230. package/dist/types/common/wasm/arccos.d.ts +15 -0
  231. package/dist/types/common/wasm/arcsin.d.ts +15 -0
  232. package/dist/types/common/wasm/arctan.d.ts +15 -0
  233. package/dist/types/common/wasm/argpartition.d.ts +18 -0
  234. package/dist/types/common/wasm/argsort.d.ts +18 -0
  235. package/dist/types/common/wasm/bins/abs.wasm.d.ts +7 -0
  236. package/dist/types/common/wasm/bins/add.wasm.d.ts +17 -0
  237. package/dist/types/common/wasm/bins/arccos.wasm.d.ts +5 -0
  238. package/dist/types/common/wasm/bins/arcsin.wasm.d.ts +5 -0
  239. package/dist/types/common/wasm/bins/arctan.wasm.d.ts +5 -0
  240. package/dist/types/common/wasm/bins/argpartition.wasm.d.ts +21 -0
  241. package/dist/types/common/wasm/bins/argsort.wasm.d.ts +25 -0
  242. package/dist/types/common/wasm/bins/bitwise_and.wasm.d.ts +5 -0
  243. package/dist/types/common/wasm/bins/bitwise_count.wasm.d.ts +9 -0
  244. package/dist/types/common/wasm/bins/bitwise_not.wasm.d.ts +5 -0
  245. package/dist/types/common/wasm/bins/bitwise_or.wasm.d.ts +5 -0
  246. package/dist/types/common/wasm/bins/bitwise_xor.wasm.d.ts +5 -0
  247. package/dist/types/common/wasm/bins/cholesky.wasm.d.ts +3 -0
  248. package/dist/types/common/wasm/bins/clip.wasm.d.ts +11 -0
  249. package/dist/types/common/wasm/bins/convolve.wasm.d.ts +3 -0
  250. package/dist/types/common/wasm/bins/copysign.wasm.d.ts +21 -0
  251. package/dist/types/common/wasm/bins/correlate.wasm.d.ts +3 -0
  252. package/dist/types/common/wasm/bins/cos.wasm.d.ts +3 -0
  253. package/dist/types/common/wasm/bins/cosh.wasm.d.ts +5 -0
  254. package/dist/types/common/wasm/bins/cross.wasm.d.ts +9 -0
  255. package/dist/types/common/wasm/bins/diff.wasm.d.ts +13 -0
  256. package/dist/types/common/wasm/bins/divide.wasm.d.ts +23 -0
  257. package/dist/types/common/wasm/bins/dot.wasm.d.ts +9 -0
  258. package/dist/types/common/wasm/bins/exp.wasm.d.ts +5 -0
  259. package/dist/types/common/wasm/bins/exp2.wasm.d.ts +5 -0
  260. package/dist/types/common/wasm/bins/fft.wasm.d.ts +17 -0
  261. package/dist/types/common/wasm/bins/flip.wasm.d.ts +7 -0
  262. package/dist/types/common/wasm/bins/frexp.wasm.d.ts +2 -0
  263. package/dist/types/common/wasm/bins/gather.wasm.d.ts +32 -0
  264. package/dist/types/common/wasm/bins/gcd.wasm.d.ts +3 -0
  265. package/dist/types/common/wasm/bins/gradient.wasm.d.ts +11 -0
  266. package/dist/types/common/wasm/bins/heaviside.wasm.d.ts +5 -0
  267. package/dist/types/common/wasm/bins/hypot.wasm.d.ts +13 -0
  268. package/dist/types/common/wasm/bins/indices.wasm.d.ts +3 -0
  269. package/dist/types/common/wasm/bins/inner.wasm.d.ts +9 -0
  270. package/dist/types/common/wasm/bins/kron.wasm.d.ts +9 -0
  271. package/dist/types/common/wasm/bins/ldexp.wasm.d.ts +3 -0
  272. package/dist/types/common/wasm/bins/left_shift.wasm.d.ts +9 -0
  273. package/dist/types/common/wasm/bins/lexsort.wasm.d.ts +11 -0
  274. package/dist/types/common/wasm/bins/logaddexp.wasm.d.ts +21 -0
  275. package/dist/types/common/wasm/bins/logical_and.wasm.d.ts +13 -0
  276. package/dist/types/common/wasm/bins/logical_not.wasm.d.ts +7 -0
  277. package/dist/types/common/wasm/bins/logical_or.wasm.d.ts +13 -0
  278. package/dist/types/common/wasm/bins/logical_xor.wasm.d.ts +13 -0
  279. package/dist/types/common/wasm/bins/matmul.wasm.d.ts +9 -0
  280. package/dist/types/common/wasm/bins/matvec.wasm.d.ts +9 -0
  281. package/dist/types/common/wasm/bins/max.wasm.d.ts +21 -0
  282. package/dist/types/common/wasm/bins/min.wasm.d.ts +21 -0
  283. package/dist/types/common/wasm/bins/mul.wasm.d.ts +17 -0
  284. package/dist/types/common/wasm/bins/neg.wasm.d.ts +9 -0
  285. package/dist/types/common/wasm/bins/outer.wasm.d.ts +9 -0
  286. package/dist/types/common/wasm/bins/pad.wasm.d.ts +7 -0
  287. package/dist/types/common/wasm/bins/partition.wasm.d.ts +21 -0
  288. package/dist/types/common/wasm/bins/power.wasm.d.ts +13 -0
  289. package/dist/types/common/wasm/bins/qr.wasm.d.ts +3 -0
  290. package/dist/types/common/wasm/bins/reciprocal.wasm.d.ts +7 -0
  291. package/dist/types/common/wasm/bins/reduce_all.wasm.d.ts +7 -0
  292. package/dist/types/common/wasm/bins/reduce_any.wasm.d.ts +7 -0
  293. package/dist/types/common/wasm/bins/reduce_argmax.wasm.d.ts +11 -0
  294. package/dist/types/common/wasm/bins/reduce_argmin.wasm.d.ts +11 -0
  295. package/dist/types/common/wasm/bins/reduce_count_nz.wasm.d.ts +7 -0
  296. package/dist/types/common/wasm/bins/reduce_max.wasm.d.ts +20 -0
  297. package/dist/types/common/wasm/bins/reduce_mean.wasm.d.ts +21 -0
  298. package/dist/types/common/wasm/bins/reduce_min.wasm.d.ts +20 -0
  299. package/dist/types/common/wasm/bins/reduce_nanmax.wasm.d.ts +3 -0
  300. package/dist/types/common/wasm/bins/reduce_nanmin.wasm.d.ts +3 -0
  301. package/dist/types/common/wasm/bins/reduce_nansum.wasm.d.ts +3 -0
  302. package/dist/types/common/wasm/bins/reduce_prod.wasm.d.ts +19 -0
  303. package/dist/types/common/wasm/bins/reduce_quantile.wasm.d.ts +2 -0
  304. package/dist/types/common/wasm/bins/reduce_std.wasm.d.ts +11 -0
  305. package/dist/types/common/wasm/bins/reduce_sum.wasm.d.ts +17 -0
  306. package/dist/types/common/wasm/bins/reduce_var.wasm.d.ts +11 -0
  307. package/dist/types/common/wasm/bins/repeat.wasm.d.ts +7 -0
  308. package/dist/types/common/wasm/bins/right_shift.wasm.d.ts +17 -0
  309. package/dist/types/common/wasm/bins/roll.wasm.d.ts +7 -0
  310. package/dist/types/common/wasm/bins/rot90.wasm.d.ts +7 -0
  311. package/dist/types/common/wasm/bins/searchsorted.wasm.d.ts +21 -0
  312. package/dist/types/common/wasm/bins/sign.wasm.d.ts +7 -0
  313. package/dist/types/common/wasm/bins/sinh.wasm.d.ts +5 -0
  314. package/dist/types/common/wasm/bins/sort.wasm.d.ts +25 -0
  315. package/dist/types/common/wasm/bins/sqrt.wasm.d.ts +7 -0
  316. package/dist/types/common/wasm/bins/square.wasm.d.ts +9 -0
  317. package/dist/types/common/wasm/bins/sub.wasm.d.ts +17 -0
  318. package/dist/types/common/wasm/bins/svd.wasm.d.ts +2 -0
  319. package/dist/types/common/wasm/bins/tan.wasm.d.ts +3 -0
  320. package/dist/types/common/wasm/bins/tanh.wasm.d.ts +5 -0
  321. package/dist/types/common/wasm/bins/tile.wasm.d.ts +7 -0
  322. package/dist/types/common/wasm/bins/vdot.wasm.d.ts +3 -0
  323. package/dist/types/common/wasm/bins/vecdot.wasm.d.ts +9 -0
  324. package/dist/types/common/wasm/bins/vecmat.wasm.d.ts +9 -0
  325. package/dist/types/common/wasm/bitwise_and.d.ts +9 -0
  326. package/dist/types/common/wasm/bitwise_count.d.ts +11 -0
  327. package/dist/types/common/wasm/bitwise_not.d.ts +9 -0
  328. package/dist/types/common/wasm/bitwise_or.d.ts +9 -0
  329. package/dist/types/common/wasm/bitwise_xor.d.ts +9 -0
  330. package/dist/types/common/wasm/cholesky.d.ts +20 -0
  331. package/dist/types/common/wasm/clip.d.ts +13 -0
  332. package/dist/types/common/wasm/config.d.ts +21 -0
  333. package/dist/types/common/wasm/convolve.d.ts +14 -0
  334. package/dist/types/common/wasm/copysign.d.ts +19 -0
  335. package/dist/types/common/wasm/correlate.d.ts +14 -0
  336. package/dist/types/common/wasm/cos.d.ts +15 -0
  337. package/dist/types/common/wasm/cosh.d.ts +15 -0
  338. package/dist/types/common/wasm/cross.d.ts +15 -0
  339. package/dist/types/common/wasm/diff.d.ts +15 -0
  340. package/dist/types/common/wasm/divide.d.ts +11 -0
  341. package/dist/types/common/wasm/dot.d.ts +14 -0
  342. package/dist/types/common/wasm/exp.d.ts +15 -0
  343. package/dist/types/common/wasm/exp2.d.ts +15 -0
  344. package/dist/types/common/wasm/fft.d.ts +29 -0
  345. package/dist/types/common/wasm/flip.d.ts +13 -0
  346. package/dist/types/common/wasm/frexp.d.ts +9 -0
  347. package/dist/types/common/wasm/gather.d.ts +23 -0
  348. package/dist/types/common/wasm/gcd.d.ts +11 -0
  349. package/dist/types/common/wasm/gradient.d.ts +13 -0
  350. package/dist/types/common/wasm/heaviside.d.ts +11 -0
  351. package/dist/types/common/wasm/hypot.d.ts +21 -0
  352. package/dist/types/common/wasm/indices.d.ts +10 -0
  353. package/dist/types/common/wasm/inner.d.ts +20 -0
  354. package/dist/types/common/wasm/kron.d.ts +13 -0
  355. package/dist/types/common/wasm/ldexp.d.ts +9 -0
  356. package/dist/types/common/wasm/left_shift.d.ts +11 -0
  357. package/dist/types/common/wasm/lexsort.d.ts +14 -0
  358. package/dist/types/common/wasm/logaddexp.d.ts +21 -0
  359. package/dist/types/common/wasm/logical_and.d.ts +19 -0
  360. package/dist/types/common/wasm/logical_not.d.ts +13 -0
  361. package/dist/types/common/wasm/logical_or.d.ts +19 -0
  362. package/dist/types/common/wasm/logical_xor.d.ts +19 -0
  363. package/dist/types/common/wasm/lstsq.d.ts +14 -0
  364. package/dist/types/common/wasm/matmul.d.ts +18 -0
  365. package/dist/types/common/wasm/matvec.d.ts +13 -0
  366. package/dist/types/common/wasm/max.d.ts +11 -0
  367. package/dist/types/common/wasm/min.d.ts +11 -0
  368. package/dist/types/common/wasm/mul.d.ts +19 -0
  369. package/dist/types/common/wasm/neg.d.ts +13 -0
  370. package/dist/types/common/wasm/outer.d.ts +13 -0
  371. package/dist/types/common/wasm/pad.d.ts +14 -0
  372. package/dist/types/common/wasm/partition.d.ts +20 -0
  373. package/dist/types/common/wasm/power.d.ts +19 -0
  374. package/dist/types/common/wasm/qr.d.ts +17 -0
  375. package/dist/types/common/wasm/reciprocal.d.ts +9 -0
  376. package/dist/types/common/wasm/reduce_all.d.ts +14 -0
  377. package/dist/types/common/wasm/reduce_any.d.ts +14 -0
  378. package/dist/types/common/wasm/reduce_argmax.d.ts +14 -0
  379. package/dist/types/common/wasm/reduce_argmin.d.ts +14 -0
  380. package/dist/types/common/wasm/reduce_count_nz.d.ts +14 -0
  381. package/dist/types/common/wasm/reduce_max.d.ts +19 -0
  382. package/dist/types/common/wasm/reduce_mean.d.ts +19 -0
  383. package/dist/types/common/wasm/reduce_min.d.ts +19 -0
  384. package/dist/types/common/wasm/reduce_nanmax.d.ts +14 -0
  385. package/dist/types/common/wasm/reduce_nanmin.d.ts +14 -0
  386. package/dist/types/common/wasm/reduce_nansum.d.ts +14 -0
  387. package/dist/types/common/wasm/reduce_prod.d.ts +20 -0
  388. package/dist/types/common/wasm/reduce_quantile.d.ts +15 -0
  389. package/dist/types/common/wasm/reduce_std.d.ts +14 -0
  390. package/dist/types/common/wasm/reduce_sum.d.ts +20 -0
  391. package/dist/types/common/wasm/reduce_var.d.ts +14 -0
  392. package/dist/types/common/wasm/repeat.d.ts +14 -0
  393. package/dist/types/common/wasm/right_shift.d.ts +11 -0
  394. package/dist/types/common/wasm/roll.d.ts +13 -0
  395. package/dist/types/common/wasm/rot90.d.ts +14 -0
  396. package/dist/types/common/wasm/runtime.d.ts +44 -0
  397. package/dist/types/common/wasm/searchsorted.d.ts +12 -0
  398. package/dist/types/common/wasm/sign.d.ts +14 -0
  399. package/dist/types/common/wasm/sinh.d.ts +15 -0
  400. package/dist/types/common/wasm/sort.d.ts +20 -0
  401. package/dist/types/common/wasm/sqrt.d.ts +15 -0
  402. package/dist/types/common/wasm/square.d.ts +13 -0
  403. package/dist/types/common/wasm/sub.d.ts +19 -0
  404. package/dist/types/common/wasm/svd.d.ts +18 -0
  405. package/dist/types/common/wasm/tan.d.ts +15 -0
  406. package/dist/types/common/wasm/tanh.d.ts +15 -0
  407. package/dist/types/common/wasm/tile.d.ts +14 -0
  408. package/dist/types/common/wasm/vdot.d.ts +16 -0
  409. package/dist/types/common/wasm/vecdot.d.ts +15 -0
  410. package/dist/types/common/wasm/vecmat.d.ts +13 -0
  411. package/dist/types/core/linalg.d.ts +10 -10
  412. package/dist/types/core/reduction.d.ts +17 -17
  413. package/dist/types/core/sets.d.ts +1 -1
  414. package/dist/types/core/sorting.d.ts +1 -1
  415. package/dist/types/full/index.d.ts +20 -18
  416. package/dist/types/full/ndarray.d.ts +16 -22
  417. package/dist/types/index.d.ts +1 -0
  418. package/dist/types/io/zip/types.d.ts +2 -1
  419. package/package.json +39 -15
@@ -1 +1 @@
1
- import{ArrayStorage as p}from"../storage";import{isBigIntDType as u,isComplexDType as b,throwIfComplex as N}from"../dtype";import{elementwiseComparisonOp as F}from"../internal/compute";import{broadcastShapes as I}from"../internal/compute";function D(t){return t!==0&&t!==0n}function g(t,o){const a=t[o*2],r=t[o*2+1];return a!==0||r!==0}function h(t,o){return t.isCContiguous&&o.isCContiguous&&t.shape.length===o.shape.length&&t.shape.every((a,r)=>a===o.shape[r])}function P(t,o){return typeof o=="number"?v(t,o):h(t,o)?x(t,o):F(t,o,(a,r)=>D(a)&&D(r))}function x(t,o){const a=new Uint8Array(t.size),r=t.data,n=o.data,e=t.offset,s=o.offset,f=t.size,i=u(t.dtype),c=u(o.dtype),y=b(t.dtype),m=b(o.dtype);if(y||m)for(let l=0;l<f;l++){const A=y?g(r,e+l):r[e+l]!==0,d=m?g(n,s+l):n[s+l]!==0;a[l]=A&&d?1:0}else if(i||c)for(let l=0;l<f;l++){const A=i?r[e+l]!==0n:r[e+l]!==0,d=c?n[s+l]!==0n:n[s+l]!==0;a[l]=A&&d?1:0}else for(let l=0;l<f;l++)a[l]=r[e+l]!==0&&n[s+l]!==0?1:0;return p.fromData(a,Array.from(t.shape),"bool")}function v(t,o){const a=new Uint8Array(t.size),r=o!==0,n=t.size;if(t.isCContiguous){const e=t.data,s=t.offset;if(b(t.dtype)){const f=e;for(let i=0;i<n;i++)a[i]=g(f,s+i)&&r?1:0}else if(u(t.dtype)){const f=e;for(let i=0;i<n;i++)a[i]=f[s+i]!==0n&&r?1:0}else if(s===0)for(let f=0;f<n;f++)a[f]=e[f]!==0&&r?1:0;else for(let f=0;f<n;f++)a[f]=e[s+f]!==0&&r?1:0}else if(b(t.dtype))for(let e=0;e<n;e++){const s=t.iget(e);a[e]=(s.re!==0||s.im!==0)&&r?1:0}else if(u(t.dtype))for(let e=0;e<n;e++)a[e]=t.iget(e)!==0n&&r?1:0;else for(let e=0;e<n;e++)a[e]=Number(t.iget(e))!==0&&r?1:0;return p.fromData(a,Array.from(t.shape),"bool")}function q(t,o){if(typeof o=="number")return B(t,o);if(o.size===1&&!b(o.dtype)&&t.dtype===o.dtype){const a=Number(o.iget(0));return B(t,a)}return h(t,o)?w(t,o):F(t,o,(a,r)=>D(a)||D(r))}function w(t,o){const a=new Uint8Array(t.size),r=t.data,n=o.data,e=t.offset,s=o.offset,f=t.size,i=u(t.dtype),c=u(o.dtype),y=b(t.dtype),m=b(o.dtype);if(y||m)for(let l=0;l<f;l++){const A=y?g(r,e+l):r[e+l]!==0,d=m?g(n,s+l):n[s+l]!==0;a[l]=A||d?1:0}else if(i||c)for(let l=0;l<f;l++){const A=i?r[e+l]!==0n:r[e+l]!==0,d=c?n[s+l]!==0n:n[s+l]!==0;a[l]=A||d?1:0}else for(let l=0;l<f;l++)a[l]=r[e+l]!==0||n[s+l]!==0?1:0;return p.fromData(a,Array.from(t.shape),"bool")}function B(t,o){const a=new Uint8Array(t.size),r=o!==0,n=t.size;if(t.isCContiguous){const e=t.data,s=t.offset;if(b(t.dtype)){const f=e;for(let i=0;i<n;i++)a[i]=g(f,s+i)||r?1:0}else if(u(t.dtype)){const f=e;for(let i=0;i<n;i++)a[i]=f[s+i]!==0n||r?1:0}else if(s===0)for(let f=0;f<n;f++)a[f]=e[f]!==0||r?1:0;else for(let f=0;f<n;f++)a[f]=e[s+f]!==0||r?1:0}else if(b(t.dtype))for(let e=0;e<n;e++){const s=t.iget(e);a[e]=s.re!==0||s.im!==0||r?1:0}else if(u(t.dtype))for(let e=0;e<n;e++)a[e]=t.iget(e)!==0n||r?1:0;else for(let e=0;e<n;e++)a[e]=Number(t.iget(e))!==0||r?1:0;return p.fromData(a,Array.from(t.shape),"bool")}function G(t){const o=new Uint8Array(t.size),a=t.size;if(t.isCContiguous){const r=t.data,n=t.offset;if(b(t.dtype)){const e=r;for(let s=0;s<a;s++)o[s]=g(e,n+s)?0:1}else if(u(t.dtype)){const e=r;for(let s=0;s<a;s++)o[s]=e[n+s]===0n?1:0}else if(n===0)for(let e=0;e<a;e++)o[e]=r[e]===0?1:0;else for(let e=0;e<a;e++)o[e]=r[n+e]===0?1:0}else if(b(t.dtype))for(let r=0;r<a;r++){const n=t.iget(r);o[r]=n.re===0&&n.im===0?1:0}else if(u(t.dtype))for(let r=0;r<a;r++)o[r]=t.iget(r)===0n?1:0;else for(let r=0;r<a;r++)o[r]=Number(t.iget(r))===0?1:0;return p.fromData(o,Array.from(t.shape),"bool")}function H(t,o){return typeof o=="number"?T(t,o):h(t,o)?U(t,o):F(t,o,(a,r)=>D(a)!==D(r))}function U(t,o){const a=new Uint8Array(t.size),r=t.data,n=o.data,e=t.offset,s=o.offset,f=t.size,i=u(t.dtype),c=u(o.dtype),y=b(t.dtype),m=b(o.dtype);if(y||m)for(let l=0;l<f;l++){const A=y?g(r,e+l):r[e+l]!==0,d=m?g(n,s+l):n[s+l]!==0;a[l]=A!==d?1:0}else if(i||c)for(let l=0;l<f;l++){const A=i?r[e+l]!==0n:r[e+l]!==0,d=c?n[s+l]!==0n:n[s+l]!==0;a[l]=A!==d?1:0}else for(let l=0;l<f;l++){const A=r[e+l]!==0,d=n[s+l]!==0;a[l]=A!==d?1:0}return p.fromData(a,Array.from(t.shape),"bool")}function T(t,o){const a=new Uint8Array(t.size),r=o!==0,n=t.size;if(t.isCContiguous){const e=t.data,s=t.offset;if(b(t.dtype)){const f=e;for(let i=0;i<n;i++){const c=g(f,s+i);a[i]=c!==r?1:0}}else if(u(t.dtype)){const f=e;for(let i=0;i<n;i++){const c=f[s+i]!==0n;a[i]=c!==r?1:0}}else if(s===0)for(let f=0;f<n;f++){const i=e[f]!==0;a[f]=i!==r?1:0}else for(let f=0;f<n;f++){const i=e[s+f]!==0;a[f]=i!==r?1:0}}else if(b(t.dtype))for(let e=0;e<n;e++){const s=t.iget(e),f=s.re!==0||s.im!==0;a[e]=f!==r?1:0}else if(u(t.dtype))for(let e=0;e<n;e++){const s=t.iget(e)!==0n;a[e]=s!==r?1:0}else for(let e=0;e<n;e++){const s=Number(t.iget(e))!==0;a[e]=s!==r?1:0}return p.fromData(a,Array.from(t.shape),"bool")}function J(t){const o=new Uint8Array(t.size),a=t.size;if(t.isCContiguous){const r=t.data,n=t.offset;if(b(t.dtype)){const e=r;for(let s=0;s<a;s++){const f=e[(n+s)*2],i=e[(n+s)*2+1];o[s]=Number.isFinite(f)&&Number.isFinite(i)?1:0}}else if(u(t.dtype))for(let e=0;e<a;e++)o[e]=1;else if(n===0)for(let e=0;e<a;e++)o[e]=Number.isFinite(r[e])?1:0;else for(let e=0;e<a;e++){const s=r[n+e];o[e]=Number.isFinite(s)?1:0}}else if(b(t.dtype))for(let r=0;r<a;r++){const n=t.iget(r);o[r]=Number.isFinite(n.re)&&Number.isFinite(n.im)?1:0}else if(u(t.dtype))for(let r=0;r<a;r++)o[r]=1;else for(let r=0;r<a;r++)o[r]=Number.isFinite(Number(t.iget(r)))?1:0;return p.fromData(o,Array.from(t.shape),"bool")}function K(t){const o=new Uint8Array(t.size),a=t.size;if(t.isCContiguous){const r=t.data,n=t.offset;if(b(t.dtype)){const e=r;for(let s=0;s<a;s++){const f=e[(n+s)*2],i=e[(n+s)*2+1],c=!Number.isFinite(f)&&!Number.isNaN(f),y=!Number.isFinite(i)&&!Number.isNaN(i);o[s]=c||y?1:0}}else if(u(t.dtype))for(let e=0;e<a;e++)o[e]=0;else if(n===0)for(let e=0;e<a;e++){const s=r[e];o[e]=!Number.isFinite(s)&&!Number.isNaN(s)?1:0}else for(let e=0;e<a;e++){const s=r[n+e];o[e]=!Number.isFinite(s)&&!Number.isNaN(s)?1:0}}else if(b(t.dtype))for(let r=0;r<a;r++){const n=t.iget(r),e=!Number.isFinite(n.re)&&!Number.isNaN(n.re),s=!Number.isFinite(n.im)&&!Number.isNaN(n.im);o[r]=e||s?1:0}else if(u(t.dtype))for(let r=0;r<a;r++)o[r]=0;else for(let r=0;r<a;r++){const n=Number(t.iget(r));o[r]=!Number.isFinite(n)&&!Number.isNaN(n)?1:0}return p.fromData(o,Array.from(t.shape),"bool")}function Q(t){const o=new Uint8Array(t.size),a=t.size;if(t.isCContiguous){const r=t.data,n=t.offset;if(b(t.dtype)){const e=r;for(let s=0;s<a;s++){const f=e[(n+s)*2],i=e[(n+s)*2+1];o[s]=Number.isNaN(f)||Number.isNaN(i)?1:0}}else if(u(t.dtype))for(let e=0;e<a;e++)o[e]=0;else for(let e=0;e<a;e++)o[e]=Number.isNaN(r[n+e])?1:0}else if(b(t.dtype))for(let r=0;r<a;r++){const n=t.iget(r);o[r]=Number.isNaN(n.re)||Number.isNaN(n.im)?1:0}else if(u(t.dtype))for(let r=0;r<a;r++)o[r]=0;else for(let r=0;r<a;r++)o[r]=Number.isNaN(Number(t.iget(r)))?1:0;return p.fromData(o,Array.from(t.shape),"bool")}function W(t){const o=new Uint8Array(t.size);return p.fromData(o,Array.from(t.shape),"bool")}function Y(t,o){if(N(t.dtype,"copysign","copysign is only defined for real numbers."),typeof o!="number"&&N(o.dtype,"copysign","copysign is only defined for real numbers."),typeof o=="number")return M(t,o);if(h(t,o))return V(t,o);const a=I(t.shape,o.shape),r=a.reduce((i,c)=>i*c,1),n=p.zeros(a,"float64"),e=n.data,s=z(t,a),f=z(o,a);for(let i=0;i<r;i++){const c=Number(s.iget(i)),y=Number(f.iget(i));e[i]=Math.sign(y)*Math.abs(c)}return n}function V(t,o){const a=p.zeros(Array.from(t.shape),"float64"),r=a.data,n=t.size,e=t.data,s=o.data,f=t.offset,i=o.offset,c=u(t.dtype),y=u(o.dtype);for(let m=0;m<n;m++){const l=c?Number(e[f+m]):e[f+m],A=y?Number(s[i+m]):s[i+m];r[m]=Math.sign(A)*Math.abs(l)}return a}function M(t,o){const a=p.zeros(Array.from(t.shape),"float64"),r=a.data,n=t.size,e=Math.sign(o);if(!t.isCContiguous){for(let i=0;i<n;i++)r[i]=e*Math.abs(Number(t.iget(i)));return a}const s=t.data,f=t.offset;if(u(t.dtype)){const i=s;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(s[i]);else for(let i=0;i<n;i++)r[i]=e*Math.abs(s[f+i]);return a}function Z(t){N(t.dtype,"signbit","signbit is only defined for real numbers.");const o=new Uint8Array(t.size),a=t.size;if(t.isCContiguous){const r=t.data,n=t.offset;if(u(t.dtype)){const e=r;for(let s=0;s<a;s++)o[s]=e[n+s]<0n?1:0}else for(let e=0;e<a;e++){const s=r[n+e];o[e]=s<0||Object.is(s,-0)?1:0}}else if(u(t.dtype))for(let r=0;r<a;r++)o[r]=t.iget(r)<0n?1:0;else for(let r=0;r<a;r++){const n=Number(t.iget(r));o[r]=n<0||Object.is(n,-0)?1:0}return p.fromData(o,Array.from(t.shape),"bool")}function $(t,o){if(N(t.dtype,"nextafter","nextafter is only defined for real numbers."),typeof o!="number"&&N(o.dtype,"nextafter","nextafter is only defined for real numbers."),typeof o=="number")return _(t,o);if(h(t,o))return O(t,o);const a=I(t.shape,o.shape),r=a.reduce((i,c)=>i*c,1),n=p.zeros(a,"float64"),e=n.data,s=z(t,a),f=z(o,a);for(let i=0;i<r;i++){const c=Number(s.iget(i)),y=Number(f.iget(i));e[i]=S(c,y)}return n}function O(t,o){const a=p.zeros(Array.from(t.shape),"float64"),r=a.data,n=t.size,e=t.data,s=o.data,f=t.offset,i=o.offset,c=u(t.dtype),y=u(o.dtype);for(let m=0;m<n;m++){const l=c?Number(e[f+m]):e[f+m],A=y?Number(s[i+m]):s[i+m];r[m]=S(l,A)}return a}function _(t,o){const a=p.zeros(Array.from(t.shape),"float64"),r=a.data,n=t.size;if(t.isCContiguous){const e=t.data,s=t.offset;if(u(t.dtype)){const f=e;for(let i=0;i<n;i++)r[i]=S(Number(f[s+i]),o)}else for(let f=0;f<n;f++)r[f]=S(e[s+f],o)}else for(let e=0;e<n;e++)r[e]=S(Number(t.iget(e)),o);return a}function S(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 a=new ArrayBuffer(8),r=new Float64Array(a),n=new BigInt64Array(a);r[0]=t;let e=n[0];return t>0&&o>t||t<0&&o>t?e=e+1n:e=e-1n,n[0]=e,r[0]}function tt(t){N(t.dtype,"spacing","spacing is only defined for real numbers.");const o=p.zeros(Array.from(t.shape),"float64"),a=o.data,r=t.size;if(t.isCContiguous){const n=t.data,e=t.offset;if(u(t.dtype)){const s=n;for(let f=0;f<r;f++)a[f]=C(Number(s[e+f]))}else for(let s=0;s<r;s++)a[s]=C(n[e+s])}else for(let n=0;n<r;n++)a[n]=C(Number(t.iget(n)));return o}function C(t){if(Number.isNaN(t))return NaN;if(!Number.isFinite(t))return NaN;if(Math.abs(t)===0)return Number.MIN_VALUE;const a=S(t,1/0);return Math.abs(a-t)}function z(t,o){const a=t.shape.length,r=o.length,n=new Array(r).fill(0);for(let e=0;e<a;e++){const s=r-a+e,f=t.shape[e],i=o[s];if(f===i)n[s]=t.strides[e];else if(f===1)n[s]=0;else throw new Error("Invalid broadcast")}return p.fromData(t.data,Array.from(o),t.dtype,n,t.offset)}function et(t){const o=t.dtype,a=t.size,r=new Uint8Array(a);if(b(o))if(t.isCContiguous){const n=t.offset,e=t.data;for(let s=0;s<a;s++)r[s]=e[(n+s)*2+1]!==0?1:0}else for(let n=0;n<a;n++){const e=t.iget(n);r[n]=e.im!==0?1:0}return p.fromData(r,Array.from(t.shape),"bool")}function rt(t){return b(t.dtype)}function ot(t){const o=t.dtype,a=t.size,r=new Uint8Array(a);if(b(o))if(t.isCContiguous){const n=t.offset,e=t.data;for(let s=0;s<a;s++)r[s]=e[(n+s)*2+1]===0?1:0}else for(let n=0;n<a;n++){const e=t.iget(n);r[n]=e.im===0?1:0}else r.fill(1);return p.fromData(r,Array.from(t.shape),"bool")}function at(t){return!b(t.dtype)}function st(t){N(t.dtype,"isneginf","This operation is not supported for complex values because it would be ambiguous.");const o=new Uint8Array(t.size),a=t.size;if(!u(t.dtype))if(t.isCContiguous){const r=t.data,n=t.offset;for(let e=0;e<a;e++){const s=r[n+e];o[e]=s===-1/0?1:0}}else for(let r=0;r<a;r++)o[r]=Number(t.iget(r))===-1/0?1:0;return p.fromData(o,Array.from(t.shape),"bool")}function nt(t){N(t.dtype,"isposinf","This operation is not supported for complex values because it would be ambiguous.");const o=new Uint8Array(t.size),a=t.size;if(!u(t.dtype))if(t.isCContiguous){const r=t.data,n=t.offset;for(let e=0;e<a;e++){const s=r[n+e];o[e]=s===1/0?1:0}}else for(let r=0;r<a;r++)o[r]=Number(t.iget(r))===1/0?1:0;return p.fromData(o,Array.from(t.shape),"bool")}function it(t){return t.isFContiguous}function ft(t,o=100){const a=t.dtype;if(b(a)){const r=t.size,e=o*(a==="complex64"?11920929e-14:2220446049250313e-31);if(t.isCContiguous){const s=t.data,f=t.offset;let i=!0;for(let c=0;c<r;c++){const y=s[(f+c)*2+1];if(Math.abs(y)>e){i=!1;break}}if(i){const c=a==="complex64"?"float32":"float64",y=p.zeros(Array.from(t.shape),c),m=y.data;for(let l=0;l<r;l++)m[l]=s[(f+l)*2];return y}}else{let s=!0;for(let f=0;f<r;f++){const i=t.iget(f);if(Math.abs(i.im)>e){s=!1;break}}if(s){const f=a==="complex64"?"float32":"float64",i=p.zeros(Array.from(t.shape),f),c=i.data;for(let y=0;y<r;y++){const m=t.iget(y);c[y]=m.re}return i}}return t.copy()}return t.copy()}function lt(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 ut(t,o){const r={b:["bool"],i:["int8","int16","int32","int64"],u:["uint8","uint16","uint32","uint64"],f:["float32","float64"]}[o];return r?r.includes(t):!1}function yt(t,o){const a=["float64","float32","int64","int32","int16","int8","uint64","uint32","uint16","uint8","bool"],r=a.indexOf(t),n=a.indexOf(o);return r<=n?t:o}export{Y as copysign,et as iscomplex,rt as iscomplexobj,ut as isdtype,J as isfinite,it as isfortran,K as isinf,Q as isnan,W as isnat,st as isneginf,nt as isposinf,ot as isreal,at as isrealobj,lt as isscalar,ct as iterable,P as logical_and,G as logical_not,q as logical_or,H as logical_xor,$ as nextafter,yt as promote_types,ft as real_if_close,Z as signbit,tt as spacing};
1
+ import{ArrayStorage as b}from"../storage";import{isBigIntDType as u,isComplexDType as y,isIntegerDType as N,throwIfComplex as D}from"../dtype";import{elementwiseComparisonOp as C}from"../internal/compute";import{broadcastShapes as I}from"../internal/compute";import{wasmLogicalAnd as L,wasmLogicalAndScalar as B}from"../wasm/logical_and";import{wasmLogicalOr as _,wasmLogicalOrScalar as v}from"../wasm/logical_or";import{wasmLogicalXor as k,wasmLogicalXorScalar as x}from"../wasm/logical_xor";import{wasmCopysign as X,wasmCopysignScalar as U}from"../wasm/copysign";import{wasmLogicalNot as E}from"../wasm/logical_not";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 +1 @@
1
- import{ArrayStorage as B}from"../storage";import{isBigIntDType as Q,isComplexDType as k,throwIfComplex as H}from"../dtype";import{outerIndexToMultiIndex as M,multiIndexToBuffer as V}from"../internal/indexing";import{Complex as U}from"../complex";function J(n,p,F=!1){const x=n.dtype,c=n.shape,I=c.length,N=n.size,b=n.data,m=n.offset,h=n.strides,y=n.isCContiguous;if(p===void 0)if(k(x)){let t=0,o=0;if(y){const r=b;for(let s=0;s<N;s++)t+=r[(m+s)*2],o+=r[(m+s)*2+1]}else for(let r=0;r<N;r++){const s=n.iget(r);t+=s.re,o+=s.im}return new U(t,o)}else if(Q(x)){let t=BigInt(0);if(y){const o=b;for(let r=0;r<N;r++)t+=o[m+r]}else for(let o=0;o<N;o++)t+=n.iget(o);return Number(t)}else{let t=0;if(y)if(m===0)for(let o=0;o<N;o++)t+=Number(b[o]);else for(let o=0;o<N;o++)t+=Number(b[m+o]);else for(let o=0;o<N;o++)t+=Number(n.iget(o));return t}let A=p;if(A<0&&(A=I+A),A<0||A>=I)throw new Error(`axis ${p} is out of bounds for array of dimension ${I}`);const $=Array.from(c).filter((t,o)=>o!==A);if($.length===0)return J(n);const S=B.zeros($,x),D=S.data,l=c[A],e=$.reduce((t,o)=>t*o,1);if(k(x)){const t=b,o=D;for(let r=0;r<e;r++){let s=0,f=0;for(let a=0;a<l;a++){const i=M(r,A,a,c),d=V(i,h,m);s+=t[d*2],f+=t[d*2+1]}o[r*2]=s,o[r*2+1]=f}}else if(Q(x)){const t=b,o=D;for(let r=0;r<e;r++){let s=BigInt(0);for(let f=0;f<l;f++){const a=M(r,A,f,c),i=V(a,h,m);s+=t[i]}o[r]=s}}else for(let t=0;t<e;t++){let o=0;for(let r=0;r<l;r++){const s=M(t,A,r,c),f=V(s,h,m);o+=Number(b[f])}D[t]=o}if(F){const t=[...c];return t[A]=1,B.fromData(D,t,x)}return S}function X(n,p,F=!1){const x=n.dtype,c=n.shape;if(p===void 0){const $=J(n);return $ instanceof U?new U($.re/n.size,$.im/n.size):$/n.size}let I=p;if(I<0&&(I=c.length+I),I<0||I>=c.length)throw new Error(`axis ${p} is out of bounds for array of dimension ${c.length}`);const N=J(n,p,F);if(typeof N=="number")return N/c[I];if(N instanceof U)return new U(N.re/c[I],N.im/c[I]);const b=c[I];let m=x;k(x)?m=x:(Q(x)||x.startsWith("int")||x.startsWith("uint"))&&(m="float64");const h=B.zeros(Array.from(N.shape),m),y=h.data,A=N.data;if(k(x)){const $=A,S=y,D=N.size;for(let l=0;l<D;l++)S[l*2]=$[l*2]/b,S[l*2+1]=$[l*2+1]/b}else if(Q(x)){const $=A;for(let S=0;S<y.length;S++)y[S]=Number($[S])/b}else for(let $=0;$<y.length;$++)y[$]=Number(A[$])/b;return h}function j(n,p,F=!1){const x=n.dtype,c=n.shape,I=c.length,N=n.size,b=n.data,m=n.offset,h=n.strides;if(k(x)){const e=b;if(p===void 0){if(N===0)throw new Error("max of empty array");let i=e[m*2],d=e[m*2+1];for(let w=1;w<N;w++){const u=e[(m+w)*2],z=e[(m+w)*2+1];if(isNaN(u)||isNaN(z))return new U(NaN,NaN);(u>i||u===i&&z>d)&&(i=u,d=z)}return isNaN(i)||isNaN(d)?new U(NaN,NaN):new U(i,d)}let t=p;if(t<0&&(t=I+t),t<0||t>=I)throw new Error(`axis ${p} is out of bounds for array of dimension ${I}`);const o=Array.from(c).filter((i,d)=>d!==t);if(o.length===0)return j(n);const r=B.zeros(o,x),s=r.data,f=c[t],a=o.reduce((i,d)=>i*d,1);for(let i=0;i<a;i++){const d=M(i,t,0,c),w=V(d,h,m);let u=e[w*2],z=e[w*2+1];for(let C=1;C<f;C++){const E=M(i,t,C,c),R=V(E,h,m),v=e[R*2],g=e[R*2+1];if(isNaN(v)||isNaN(g)){u=NaN,z=NaN;break}(v>u||v===u&&g>z)&&(u=v,z=g)}s[i*2]=u,s[i*2+1]=z}if(F){const i=[...c];return i[t]=1,B.fromData(s,i,x)}return r}if(p===void 0){if(N===0)throw new Error("max of empty array");if(n.isCContiguous){let e=b[m];if(m===0)for(let t=1;t<N;t++)b[t]>e&&(e=b[t]);else for(let t=1;t<N;t++)b[m+t]>e&&(e=b[m+t]);return Number(e)}else{let e=n.iget(0);for(let t=1;t<N;t++){const o=n.iget(t);o>e&&(e=o)}return Number(e)}}let y=p;if(y<0&&(y=I+y),y<0||y>=I)throw new Error(`axis ${p} is out of bounds for array of dimension ${I}`);const A=Array.from(c).filter((e,t)=>t!==y);if(A.length===0)return j(n);const $=B.zeros(A,x),S=$.data,D=c[y],l=A.reduce((e,t)=>e*t,1);if(Q(x)){const e=b,t=S;for(let o=0;o<l;o++){const r=M(o,y,0,c),s=V(r,h,m);let f=e[s];for(let a=1;a<D;a++){const i=M(o,y,a,c),d=V(i,h,m),w=e[d];w>f&&(f=w)}t[o]=f}}else for(let e=0;e<l;e++){let t=-1/0;for(let o=0;o<D;o++){const r=M(e,y,o,c),s=V(r,h,m),f=Number(b[s]);f>t&&(t=f)}S[e]=t}if(F){const e=[...c];return e[y]=1,B.fromData(S,e,x)}return $}function rt(n,p,F=!1){const x=n.dtype,c=n.shape,I=c.length,N=n.size,b=n.data,m=n.offset,h=n.strides,y=n.isCContiguous;if(p===void 0)if(k(x)){let t=1,o=0;if(y){const r=b;for(let s=0;s<N;s++){const f=r[(m+s)*2],a=r[(m+s)*2+1],i=t*f-o*a,d=t*a+o*f;t=i,o=d}}else for(let r=0;r<N;r++){const s=n.iget(r),f=s.re,a=s.im,i=t*f-o*a,d=t*a+o*f;t=i,o=d}return new U(t,o)}else if(Q(x)){let t=BigInt(1);if(y){const o=b;for(let r=0;r<N;r++)t*=o[m+r]}else for(let o=0;o<N;o++)t*=n.iget(o);return Number(t)}else{let t=1;if(y)if(m===0)for(let o=0;o<N;o++)t*=Number(b[o]);else for(let o=0;o<N;o++)t*=Number(b[m+o]);else for(let o=0;o<N;o++)t*=Number(n.iget(o));return t}let A=p;if(A<0&&(A=I+A),A<0||A>=I)throw new Error(`axis ${p} is out of bounds for array of dimension ${I}`);const $=Array.from(c).filter((t,o)=>o!==A);if($.length===0)return rt(n);const S=B.zeros($,x),D=S.data,l=c[A],e=$.reduce((t,o)=>t*o,1);if(k(x)){const t=b,o=D;for(let r=0;r<e;r++){let s=1,f=0;for(let a=0;a<l;a++){const i=M(r,A,a,c),d=V(i,h,m),w=t[d*2],u=t[d*2+1],z=s*w-f*u,C=s*u+f*w;s=z,f=C}o[r*2]=s,o[r*2+1]=f}}else if(Q(x)){const t=b,o=D;for(let r=0;r<e;r++){let s=BigInt(1);for(let f=0;f<l;f++){const a=M(r,A,f,c),i=V(a,h,m);s*=t[i]}o[r]=s}}else for(let t=0;t<e;t++){let o=1;for(let r=0;r<l;r++){const s=M(t,A,r,c),f=V(s,h,m);o*=Number(b[f])}D[t]=o}if(F){const t=[...c];return t[A]=1,B.fromData(D,t,x)}return S}function G(n,p,F=!1){const x=n.dtype,c=n.shape,I=c.length,N=n.size,b=n.data,m=n.offset,h=n.strides;if(k(x)){const e=b;if(p===void 0){if(N===0)throw new Error("min of empty array");let i=e[m*2],d=e[m*2+1];for(let w=1;w<N;w++){const u=e[(m+w)*2],z=e[(m+w)*2+1];if(isNaN(u)||isNaN(z))return new U(NaN,NaN);(u<i||u===i&&z<d)&&(i=u,d=z)}return isNaN(i)||isNaN(d)?new U(NaN,NaN):new U(i,d)}let t=p;if(t<0&&(t=I+t),t<0||t>=I)throw new Error(`axis ${p} is out of bounds for array of dimension ${I}`);const o=Array.from(c).filter((i,d)=>d!==t);if(o.length===0)return G(n);const r=B.zeros(o,x),s=r.data,f=c[t],a=o.reduce((i,d)=>i*d,1);for(let i=0;i<a;i++){const d=M(i,t,0,c),w=V(d,h,m);let u=e[w*2],z=e[w*2+1];for(let C=1;C<f;C++){const E=M(i,t,C,c),R=V(E,h,m),v=e[R*2],g=e[R*2+1];if(isNaN(v)||isNaN(g)){u=NaN,z=NaN;break}(v<u||v===u&&g<z)&&(u=v,z=g)}s[i*2]=u,s[i*2+1]=z}if(F){const i=[...c];return i[t]=1,B.fromData(s,i,x)}return r}if(p===void 0){if(N===0)throw new Error("min of empty array");if(n.isCContiguous){let e=b[m];if(m===0)for(let t=1;t<N;t++)b[t]<e&&(e=b[t]);else for(let t=1;t<N;t++)b[m+t]<e&&(e=b[m+t]);return Number(e)}else{let e=n.iget(0);for(let t=1;t<N;t++){const o=n.iget(t);o<e&&(e=o)}return Number(e)}}let y=p;if(y<0&&(y=I+y),y<0||y>=I)throw new Error(`axis ${p} is out of bounds for array of dimension ${I}`);const A=Array.from(c).filter((e,t)=>t!==y);if(A.length===0)return G(n);const $=B.zeros(A,x),S=$.data,D=c[y],l=A.reduce((e,t)=>e*t,1);if(Q(x)){const e=b,t=S;for(let o=0;o<l;o++){const r=M(o,y,0,c),s=V(r,h,m);let f=e[s];for(let a=1;a<D;a++){const i=M(o,y,a,c),d=V(i,h,m),w=e[d];w<f&&(f=w)}t[o]=f}}else for(let e=0;e<l;e++){let t=1/0;for(let o=0;o<D;o++){const r=M(e,y,o,c),s=V(r,h,m),f=Number(b[s]);f<t&&(t=f)}S[e]=t}if(F){const e=[...c];return e[y]=1,B.fromData(S,e,x)}return $}function W(n,p,F,x){return n<F?-1:n>F?1:p<x?-1:p>x?1:0}function it(n,p){const F=n.dtype,x=k(F),c=n.shape,I=c.length,N=n.size,b=n.data,m=n.offset,h=n.strides,y=n.isCContiguous;if(p===void 0){if(N===0)throw new Error("argmin of empty array");if(x)if(y){const t=b;let o=t[m*2],r=t[m*2+1],s=0;for(let f=1;f<N;f++){const a=t[(m+f)*2],i=t[(m+f)*2+1];W(a,i,o,r)<0&&(o=a,r=i,s=f)}return s}else{const t=n.iget(0);let o=t.re,r=t.im,s=0;for(let f=1;f<N;f++){const a=n.iget(f);W(a.re,a.im,o,r)<0&&(o=a.re,r=a.im,s=f)}return s}if(y){let t=b[m],o=0;if(m===0)for(let r=1;r<N;r++)b[r]<t&&(t=b[r],o=r);else for(let r=1;r<N;r++)b[m+r]<t&&(t=b[m+r],o=r);return o}else{let t=n.iget(0),o=0;for(let r=1;r<N;r++){const s=n.iget(r);s<t&&(t=s,o=r)}return o}}let A=p;if(A<0&&(A=I+A),A<0||A>=I)throw new Error(`axis ${p} is out of bounds for array of dimension ${I}`);const $=Array.from(c).filter((t,o)=>o!==A);if($.length===0)return it(n);const S=B.zeros($,"int32"),D=S.data,l=c[A],e=$.reduce((t,o)=>t*o,1);if(x){const t=b;for(let o=0;o<e;o++){const r=M(o,A,0,c),s=V(r,h,m);let f=t[s*2],a=t[s*2+1],i=0;for(let d=1;d<l;d++){const w=M(o,A,d,c),u=V(w,h,m),z=t[u*2],C=t[u*2+1];W(z,C,f,a)<0&&(f=z,a=C,i=d)}D[o]=i}}else if(Q(F)){const t=b;for(let o=0;o<e;o++){const r=M(o,A,0,c),s=V(r,h,m);let f=t[s],a=0;for(let i=1;i<l;i++){const d=M(o,A,i,c),w=V(d,h,m),u=t[w];u<f&&(f=u,a=i)}D[o]=a}}else for(let t=0;t<e;t++){let o=1/0,r=0;for(let s=0;s<l;s++){const f=M(t,A,s,c),a=V(f,h,m),i=Number(b[a]);i<o&&(o=i,r=s)}D[t]=r}return S}function st(n,p){const F=n.dtype,x=k(F),c=n.shape,I=c.length,N=n.size,b=n.data,m=n.offset,h=n.strides,y=n.isCContiguous;if(p===void 0){if(N===0)throw new Error("argmax of empty array");if(x)if(y){const t=b;let o=t[m*2],r=t[m*2+1],s=0;for(let f=1;f<N;f++){const a=t[(m+f)*2],i=t[(m+f)*2+1];W(a,i,o,r)>0&&(o=a,r=i,s=f)}return s}else{const t=n.iget(0);let o=t.re,r=t.im,s=0;for(let f=1;f<N;f++){const a=n.iget(f);W(a.re,a.im,o,r)>0&&(o=a.re,r=a.im,s=f)}return s}if(y){let t=b[m],o=0;for(let r=1;r<N;r++)b[m+r]>t&&(t=b[m+r],o=r);return o}else{let t=n.iget(0),o=0;for(let r=1;r<N;r++){const s=n.iget(r);s>t&&(t=s,o=r)}return o}}let A=p;if(A<0&&(A=I+A),A<0||A>=I)throw new Error(`axis ${p} is out of bounds for array of dimension ${I}`);const $=Array.from(c).filter((t,o)=>o!==A);if($.length===0)return st(n);const S=B.zeros($,"int32"),D=S.data,l=c[A],e=$.reduce((t,o)=>t*o,1);if(x){const t=b;for(let o=0;o<e;o++){const r=M(o,A,0,c),s=V(r,h,m);let f=t[s*2],a=t[s*2+1],i=0;for(let d=1;d<l;d++){const w=M(o,A,d,c),u=V(w,h,m),z=t[u*2],C=t[u*2+1];W(z,C,f,a)>0&&(f=z,a=C,i=d)}D[o]=i}}else if(Q(F)){const t=b;for(let o=0;o<e;o++){const r=M(o,A,0,c),s=V(r,h,m);let f=t[s],a=0;for(let i=1;i<l;i++){const d=M(o,A,i,c),w=V(d,h,m),u=t[w];u>f&&(f=u,a=i)}D[o]=a}}else for(let t=0;t<e;t++){let o=-1/0,r=0;for(let s=0;s<l;s++){const f=M(t,A,s,c),a=V(f,h,m),i=Number(b[a]);i>o&&(o=i,r=s)}D[t]=r}return S}function at(n,p,F=0,x=!1){const c=n.dtype,I=n.shape,N=I.length,b=n.size,m=n.data,h=n.offset,y=n.strides,A=X(n,p,x),$=n.isCContiguous;if(p===void 0){if(k(c)){const i=A;let d=0;if($){const w=m;for(let u=0;u<b;u++){const z=w[(h+u)*2],C=w[(h+u)*2+1],E=z-i.re,R=C-i.im;d+=E*E+R*R}}else for(let w=0;w<b;w++){const u=n.iget(w),z=u.re-i.re,C=u.im-i.im;d+=z*z+C*C}return d/(b-F)}const f=A;let a=0;if($)for(let i=0;i<b;i++){const d=Number(m[h+i])-f;a+=d*d}else for(let i=0;i<b;i++){const d=Number(n.iget(i))-f;a+=d*d}return a/(b-F)}let S=p;if(S<0&&(S=N+S),S<0||S>=N)throw new Error(`axis ${p} is out of bounds for array of dimension ${N}`);const D=I[S],l=A,e=l.data,t=x?l.shape:Array.from(I).filter((f,a)=>a!==S),o=B.zeros(Array.from(t),"float64"),r=o.data,s=t.reduce((f,a)=>f*a,1);if(k(c)){const f=m,a=e;for(let i=0;i<s;i++){let d=0;const w=a[i*2],u=a[i*2+1];for(let z=0;z<D;z++){const C=M(i,S,z,I),E=V(C,y,h),R=f[E*2],v=f[E*2+1],g=R-w,_=v-u;d+=g*g+_*_}r[i]=d/(D-F)}}else for(let f=0;f<s;f++){let a=0;const i=Number(e[f]);for(let d=0;d<D;d++){const w=M(f,S,d,I),u=V(w,y,h),z=Number(m[u])-i;a+=z*z}r[f]=a/(D-F)}return o}function Nt(n,p,F=0,x=!1){const c=at(n,p,F,x);if(typeof c=="number")return Math.sqrt(c);const I=B.zeros(Array.from(c.shape),"float64"),N=c.data,b=I.data;for(let m=0;m<N.length;m++)b[m]=Math.sqrt(Number(N[m]));return I}function ft(n,p,F=!1){const x=n.shape,c=x.length,I=n.size,N=n.data,b=n.offset,m=n.strides,h=n.isCContiguous;if(p===void 0){if(h){for(let e=0;e<I;e++)if(!N[b+e])return!1}else for(let e=0;e<I;e++)if(!n.iget(e))return!1;return!0}let y=p;if(y<0&&(y=c+y),y<0||y>=c)throw new Error(`axis ${p} is out of bounds for array of dimension ${c}`);const A=Array.from(x).filter((e,t)=>t!==y);if(A.length===0)return ft(n);const $=B.zeros(A,"bool"),S=$.data,D=x[y],l=A.reduce((e,t)=>e*t,1);for(let e=0;e<l;e++){let t=!0;for(let o=0;o<D;o++){const r=M(e,y,o,x),s=V(r,m,b);if(!N[s]){t=!1;break}}S[e]=t?1:0}if(F){const e=[...x];return e[y]=1,B.fromData(S,e,"bool")}return $}function lt(n,p,F=!1){const x=n.shape,c=x.length,I=n.size,N=n.data,b=n.offset,m=n.strides,h=n.isCContiguous;if(p===void 0){if(h){for(let e=0;e<I;e++)if(N[b+e])return!0}else for(let e=0;e<I;e++)if(n.iget(e))return!0;return!1}let y=p;if(y<0&&(y=c+y),y<0||y>=c)throw new Error(`axis ${p} is out of bounds for array of dimension ${c}`);const A=Array.from(x).filter((e,t)=>t!==y);if(A.length===0)return lt(n);const $=B.zeros(A,"bool"),S=$.data,D=x[y],l=A.reduce((e,t)=>e*t,1);for(let e=0;e<l;e++){let t=!1;for(let o=0;o<D;o++){const r=M(e,y,o,x),s=V(r,m,b);if(N[s]){t=!0;break}}S[e]=t?1:0}if(F){const e=[...x];return e[y]=1,B.fromData(S,e,"bool")}return $}function bt(n,p){const F=n.dtype,x=n.shape,c=x.length,I=n.data,N=n.offset,b=n.strides,m=n.isCContiguous;if(k(F)){const e=I,t=n.size;if(p===void 0){const u=B.zeros([t],F),z=u.data;let C=0,E=0;if(m)for(let R=0;R<t;R++)C+=e[(N+R)*2],E+=e[(N+R)*2+1],z[R*2]=C,z[R*2+1]=E;else for(let R=0;R<t;R++){const v=n.iget(R);C+=v.re,E+=v.im,z[R*2]=C,z[R*2+1]=E}return u}let o=p;if(o<0&&(o=c+o),o<0||o>=c)throw new Error(`axis ${p} is out of bounds for array of dimension ${c}`);const r=B.zeros([...x],F),s=r.data,f=x[o],a=[];let i=1;for(let u=c-1;u>=0;u--)a.unshift(i),i*=x[u];const d=n.size,w=a[o];for(let u=0;u<d;u++){const z=Math.floor(u/w)%f,C=new Array(c);let E=u;for(let v=c-1;v>=0;v--)C[v]=E%x[v],E=Math.floor(E/x[v]);const R=V(C,b,N);z===0?(s[u*2]=e[R*2],s[u*2+1]=e[R*2+1]):(s[u*2]=s[(u-w)*2]+e[R*2],s[u*2+1]=s[(u-w)*2+1]+e[R*2+1])}return r}if(p===void 0){const e=n.size,t=new Float64Array(e);let o=0;if(m)for(let r=0;r<e;r++)o+=Number(I[N+r]),t[r]=o;else for(let r=0;r<e;r++)o+=Number(n.iget(r)),t[r]=o;return B.fromData(t,[e],"float64")}let h=p;if(h<0&&(h=c+h),h<0||h>=c)throw new Error(`axis ${p} is out of bounds for array of dimension ${c}`);const y=new Float64Array(n.size),A=x[h],$=[];let S=1;for(let e=c-1;e>=0;e--)$.unshift(S),S*=x[e];const D=n.size,l=$[h];for(let e=0;e<D;e++){const t=Math.floor(e/l)%A,o=new Array(c);let r=e;for(let f=c-1;f>=0;f--)o[f]=r%x[f],r=Math.floor(r/x[f]);const s=V(o,b,N);t===0?y[e]=Number(I[s]):y[e]=y[e-l]+Number(I[s])}return B.fromData(y,[...x],"float64")}function At(n,p){const F=n.dtype,x=n.shape,c=x.length,I=n.data,N=n.offset,b=n.strides,m=n.isCContiguous;if(k(F)){const e=I,t=n.size;if(p===void 0){const u=B.zeros([t],F),z=u.data;let C=1,E=0;if(m)for(let R=0;R<t;R++){const v=e[(N+R)*2],g=e[(N+R)*2+1],_=C*v-E*g,T=C*g+E*v;C=_,E=T,z[R*2]=C,z[R*2+1]=E}else for(let R=0;R<t;R++){const v=n.iget(R),g=v.re,_=v.im,T=C*g-E*_,q=C*_+E*g;C=T,E=q,z[R*2]=C,z[R*2+1]=E}return u}let o=p;if(o<0&&(o=c+o),o<0||o>=c)throw new Error(`axis ${p} is out of bounds for array of dimension ${c}`);const r=B.zeros([...x],F),s=r.data,f=x[o],a=[];let i=1;for(let u=c-1;u>=0;u--)a.unshift(i),i*=x[u];const d=n.size,w=a[o];for(let u=0;u<d;u++){const z=Math.floor(u/w)%f,C=new Array(c);let E=u;for(let v=c-1;v>=0;v--)C[v]=E%x[v],E=Math.floor(E/x[v]);const R=V(C,b,N);if(z===0)s[u*2]=e[R*2],s[u*2+1]=e[R*2+1];else{const v=s[(u-w)*2],g=s[(u-w)*2+1],_=e[R*2],T=e[R*2+1];s[u*2]=v*_-g*T,s[u*2+1]=v*T+g*_}}return r}if(p===void 0){const e=n.size,t=new Float64Array(e);let o=1;if(m)for(let r=0;r<e;r++)o*=Number(I[N+r]),t[r]=o;else for(let r=0;r<e;r++)o*=Number(n.iget(r)),t[r]=o;return B.fromData(t,[e],"float64")}let h=p;if(h<0&&(h=c+h),h<0||h>=c)throw new Error(`axis ${p} is out of bounds for array of dimension ${c}`);const y=new Float64Array(n.size),A=x[h],$=[];let S=1;for(let e=c-1;e>=0;e--)$.unshift(S),S*=x[e];const D=n.size,l=$[h];for(let e=0;e<D;e++){const t=Math.floor(e/l)%A,o=new Array(c);let r=e;for(let f=c-1;f>=0;f--)o[f]=r%x[f],r=Math.floor(r/x[f]);const s=V(o,b,N);t===0?y[e]=Number(I[s]):y[e]=y[e-l]*Number(I[s])}return B.fromData(y,[...x],"float64")}function ht(n,p,F=!1){const x=n.dtype;if(k(x)){const A=j(n,p,F),$=G(n,p,F);if(A instanceof U&&$ instanceof U)return new U(A.re-$.re,A.im-$.im);const S=A,D=$,l=S.data,e=D.data,t=new Float64Array(S.size*2);for(let o=0;o<S.size;o++)t[o*2]=l[o*2]-e[o*2],t[o*2+1]=l[o*2+1]-e[o*2+1];return B.fromData(t,[...S.shape],x)}const c=j(n,p,F),I=G(n,p,F);if(typeof c=="number"&&typeof I=="number")return c-I;const N=c,b=I,m=N.data,h=b.data,y=new Float64Array(N.size);for(let A=0;A<N.size;A++)y[A]=Number(m[A])-Number(h[A]);return B.fromData(y,[...N.shape],"float64")}function St(n,p,F=!1){return K(n,.5,p,F)}function zt(n,p,F,x=!1){return K(n,p/100,F,x)}function K(n,p,F,x=!1){if(H(n.dtype,"quantile","Complex numbers are not orderable."),p<0||p>1)throw new Error("Quantile must be between 0 and 1");const c=n.shape,I=c.length,N=n.data,b=n.offset,m=n.strides;if(F===void 0){const l=[];if(n.isCContiguous)for(let a=0;a<n.size;a++)l.push(Number(N[b+a]));else for(let a=0;a<n.size;a++)l.push(Number(n.iget(a)));l.sort((a,i)=>a-i);const t=l.length,o=p*(t-1),r=Math.floor(o),s=Math.ceil(o);if(r===s)return l[r];const f=o-r;return l[r]*(1-f)+l[s]*f}let h=F;if(h<0&&(h=I+h),h<0||h>=I)throw new Error(`axis ${F} is out of bounds for array of dimension ${I}`);const y=Array.from(c).filter((l,e)=>e!==h);if(y.length===0)return K(n,p);const A=y.reduce((l,e)=>l*e,1),$=c[h],S=new Float64Array(A);for(let l=0;l<A;l++){const e=[];for(let f=0;f<$;f++){const a=M(l,h,f,c),i=V(a,m,b);e.push(Number(N[i]))}e.sort((f,a)=>f-a);const t=e.length,o=p*(t-1),r=Math.floor(o),s=Math.ceil(o);if(r===s)S[l]=e[r];else{const f=o-r;S[l]=e[r]*(1-f)+e[s]*f}}const D=B.fromData(S,y,"float64");if(x){const l=[...c];return l[h]=1,B.fromData(S,l,"float64")}return D}function Y(n,p,F,x=!1){const c=n.dtype,I=n.shape,N=I.length,b=n.data,m=n.offset,h=n.strides;if(F===void 0)return X(n,p,x);if(k(c)){const o=b,r=F.data,s=F.offset;if(p===void 0){let z=0,C=0,E=0;if(n.isCContiguous)for(let v=0;v<n.size;v++){const g=Number(r[s+v%F.size]),_=o[(m+v)*2],T=o[(m+v)*2+1];z+=_*g,C+=T*g,E+=g}else for(let v=0;v<n.size;v++){const g=Number(r[s+v%F.size]),_=n.iget(v);z+=_.re*g,C+=_.im*g,E+=g}return E===0?new U(NaN,NaN):new U(z/E,C/E)}let f=p;if(f<0&&(f=N+f),f<0||f>=N)throw new Error(`axis ${p} is out of bounds for array of dimension ${N}`);const a=Array.from(I).filter((z,C)=>C!==f);if(a.length===0)return Y(n,void 0,F);const i=a.reduce((z,C)=>z*C,1),d=I[f],w=B.zeros(a,c),u=w.data;for(let z=0;z<i;z++){let C=0,E=0,R=0;for(let v=0;v<d;v++){const g=M(z,f,v,I),_=V(g,h,m),T=Number(r[s+v%F.size]),q=o[_*2],O=o[_*2+1];C+=q*T,E+=O*T,R+=T}R===0?(u[z*2]=NaN,u[z*2+1]=NaN):(u[z*2]=C/R,u[z*2+1]=E/R)}if(x){const z=[...I];return z[f]=1,B.fromData(u,z,c)}return w}const y=F.offset;if(p===void 0){let o=0,r=0;const s=F.data;if(n.isCContiguous)for(let a=0;a<n.size;a++){const i=Number(s[y+a%F.size]);o+=Number(b[m+a])*i,r+=i}else for(let a=0;a<n.size;a++){const i=Number(s[y+a%F.size]);o+=Number(n.iget(a))*i,r+=i}return r===0?NaN:o/r}let A=p;if(A<0&&(A=N+A),A<0||A>=N)throw new Error(`axis ${p} is out of bounds for array of dimension ${N}`);const $=Array.from(I).filter((o,r)=>r!==A);if($.length===0)return Y(n,void 0,F);const S=$.reduce((o,r)=>o*r,1),D=I[A],l=F.data,e=new Float64Array(S);for(let o=0;o<S;o++){let r=0,s=0;for(let f=0;f<D;f++){const a=M(o,A,f,I),i=V(a,h,m),d=Number(l[y+f%F.size]);r+=Number(b[i])*d,s+=d}e[o]=s===0?NaN:r/s}const t=B.fromData(e,$,"float64");if(x){const o=[...I];return o[A]=1,B.fromData(e,o,"float64")}return t}function P(n,p){return isNaN(n)||isNaN(p)}function ut(n,p,F=!1){const x=n.dtype,c=k(x),I=n.shape,N=I.length,b=n.data,m=n.offset,h=n.strides;if(p===void 0){if(c){const o=b;let r=0,s=0;if(n.isCContiguous)for(let a=0;a<n.size;a++){const i=o[(m+a)*2],d=o[(m+a)*2+1];P(i,d)||(r+=i,s+=d)}else for(let a=0;a<n.size;a++){const i=n.iget(a),d=i.re,w=i.im;P(d,w)||(r+=d,s+=w)}return new U(r,s)}let e=0;if(n.isCContiguous)for(let o=0;o<n.size;o++){const r=Number(b[m+o]);isNaN(r)||(e+=r)}else for(let o=0;o<n.size;o++){const r=Number(n.iget(o));isNaN(r)||(e+=r)}return e}let y=p;if(y<0&&(y=N+y),y<0||y>=N)throw new Error(`axis ${p} is out of bounds for array of dimension ${N}`);const A=Array.from(I).filter((e,t)=>t!==y);if(A.length===0)return ut(n);const $=A.reduce((e,t)=>e*t,1),S=I[y];if(c){const e=b,t=new Float64Array($*2);for(let o=0;o<$;o++){let r=0,s=0;for(let f=0;f<S;f++){const a=M(o,y,f,I),i=V(a,h,m),d=e[i*2],w=e[i*2+1];P(d,w)||(r+=d,s+=w)}t[o*2]=r,t[o*2+1]=s}if(F){const o=[...I];return o[y]=1,B.fromData(t,o,x)}return B.fromData(t,A,x)}const D=new Float64Array($);for(let e=0;e<$;e++){let t=0;for(let o=0;o<S;o++){const r=M(e,y,o,I),s=V(r,h,m),f=Number(b[s]);isNaN(f)||(t+=f)}D[e]=t}const l=B.fromData(D,A,"float64");if(F){const e=[...I];return e[y]=1,B.fromData(D,e,"float64")}return l}function ct(n,p,F=!1){const x=n.dtype,c=k(x),I=n.shape,N=I.length,b=n.data,m=n.offset,h=n.strides;if(p===void 0){if(c){const o=b;let r=1,s=0;if(n.isCContiguous)for(let a=0;a<n.size;a++){const i=o[(m+a)*2],d=o[(m+a)*2+1];if(!P(i,d)){const w=r*i-s*d,u=r*d+s*i;r=w,s=u}}else for(let a=0;a<n.size;a++){const i=n.iget(a),d=i.re,w=i.im;if(!P(d,w)){const u=r*d-s*w,z=r*w+s*d;r=u,s=z}}return new U(r,s)}let e=1;if(n.isCContiguous)for(let o=0;o<n.size;o++){const r=Number(b[m+o]);isNaN(r)||(e*=r)}else for(let o=0;o<n.size;o++){const r=Number(n.iget(o));isNaN(r)||(e*=r)}return e}let y=p;if(y<0&&(y=N+y),y<0||y>=N)throw new Error(`axis ${p} is out of bounds for array of dimension ${N}`);const A=Array.from(I).filter((e,t)=>t!==y);if(A.length===0)return ct(n);const $=A.reduce((e,t)=>e*t,1),S=I[y];if(c){const e=b,t=new Float64Array($*2);for(let o=0;o<$;o++){let r=1,s=0;for(let f=0;f<S;f++){const a=M(o,y,f,I),i=V(a,h,m),d=e[i*2],w=e[i*2+1];if(!P(d,w)){const u=r*d-s*w,z=r*w+s*d;r=u,s=z}}t[o*2]=r,t[o*2+1]=s}if(F){const o=[...I];return o[y]=1,B.fromData(t,o,x)}return B.fromData(t,A,x)}const D=new Float64Array($);for(let e=0;e<$;e++){let t=1;for(let o=0;o<S;o++){const r=M(e,y,o,I),s=V(r,h,m),f=Number(b[s]);isNaN(f)||(t*=f)}D[e]=t}const l=B.fromData(D,A,"float64");if(F){const e=[...I];return e[y]=1,B.fromData(D,e,"float64")}return l}function mt(n,p,F=!1){const x=n.dtype,c=k(x),I=n.shape,N=I.length,b=n.data,m=n.offset,h=n.strides;if(p===void 0){if(c){const r=b;let s=0,f=0,a=0;if(n.isCContiguous)for(let d=0;d<n.size;d++){const w=r[(m+d)*2],u=r[(m+d)*2+1];P(w,u)||(s+=w,f+=u,a++)}else for(let d=0;d<n.size;d++){const w=n.iget(d),u=w.re,z=w.im;P(u,z)||(s+=u,f+=z,a++)}return a===0?new U(NaN,NaN):new U(s/a,f/a)}let e=0,t=0;if(n.isCContiguous)for(let r=0;r<n.size;r++){const s=Number(b[m+r]);isNaN(s)||(e+=s,t++)}else for(let r=0;r<n.size;r++){const s=Number(n.iget(r));isNaN(s)||(e+=s,t++)}return t===0?NaN:e/t}let y=p;if(y<0&&(y=N+y),y<0||y>=N)throw new Error(`axis ${p} is out of bounds for array of dimension ${N}`);const A=Array.from(I).filter((e,t)=>t!==y);if(A.length===0)return mt(n);const $=A.reduce((e,t)=>e*t,1),S=I[y];if(c){const e=b,t=new Float64Array($*2);for(let o=0;o<$;o++){let r=0,s=0,f=0;for(let a=0;a<S;a++){const i=M(o,y,a,I),d=V(i,h,m),w=e[d*2],u=e[d*2+1];P(w,u)||(r+=w,s+=u,f++)}f===0?(t[o*2]=NaN,t[o*2+1]=NaN):(t[o*2]=r/f,t[o*2+1]=s/f)}if(F){const o=[...I];return o[y]=1,B.fromData(t,o,x)}return B.fromData(t,A,x)}const D=new Float64Array($);for(let e=0;e<$;e++){let t=0,o=0;for(let r=0;r<S;r++){const s=M(e,y,r,I),f=V(s,h,m),a=Number(b[f]);isNaN(a)||(t+=a,o++)}D[e]=o===0?NaN:t/o}const l=B.fromData(D,A,"float64");if(F){const e=[...I];return e[y]=1,B.fromData(D,e,"float64")}return l}function L(n,p,F=0,x=!1){const c=n.dtype,I=n.shape,N=I.length,b=n.data,m=n.offset,h=n.strides;if(k(c)){const e=b;if(p===void 0){let i=0,d=0,w=0;const u=n.isCContiguous;if(u)for(let R=0;R<n.size;R++){const v=e[(m+R)*2],g=e[(m+R)*2+1];P(v,g)||(i+=v,d+=g,w++)}else for(let R=0;R<n.size;R++){const v=n.iget(R),g=v.re,_=v.im;P(g,_)||(i+=g,d+=_,w++)}if(w-F<=0)return NaN;const z=i/w,C=d/w;let E=0;if(u)for(let R=0;R<n.size;R++){const v=e[(m+R)*2],g=e[(m+R)*2+1];if(!P(v,g)){const _=v-z,T=g-C;E+=_*_+T*T}}else for(let R=0;R<n.size;R++){const v=n.iget(R),g=v.re,_=v.im;if(!P(g,_)){const T=g-z,q=_-C;E+=T*T+q*q}}return E/(w-F)}let t=p;if(t<0&&(t=N+t),t<0||t>=N)throw new Error(`axis ${p} is out of bounds for array of dimension ${N}`);const o=Array.from(I).filter((i,d)=>d!==t);if(o.length===0)return L(n,void 0,F);const r=o.reduce((i,d)=>i*d,1),s=I[t],f=new Float64Array(r);for(let i=0;i<r;i++){let d=0,w=0,u=0;for(let R=0;R<s;R++){const v=M(i,t,R,I),g=V(v,h,m),_=e[g*2],T=e[g*2+1];P(_,T)||(d+=_,w+=T,u++)}if(u-F<=0){f[i]=NaN;continue}const z=d/u,C=w/u;let E=0;for(let R=0;R<s;R++){const v=M(i,t,R,I),g=V(v,h,m),_=e[g*2],T=e[g*2+1];if(!P(_,T)){const q=_-z,O=T-C;E+=q*q+O*O}}f[i]=E/(u-F)}const a=B.fromData(f,o,"float64");if(x){const i=[...I];return i[t]=1,B.fromData(f,i,"float64")}return a}if(p===void 0){let e=0,t=0;const o=n.isCContiguous;if(o)for(let f=0;f<n.size;f++){const a=Number(b[m+f]);isNaN(a)||(e+=a,t++)}else for(let f=0;f<n.size;f++){const a=Number(n.iget(f));isNaN(a)||(e+=a,t++)}if(t-F<=0)return NaN;const r=e/t;let s=0;if(o)for(let f=0;f<n.size;f++){const a=Number(b[m+f]);isNaN(a)||(s+=(a-r)**2)}else for(let f=0;f<n.size;f++){const a=Number(n.iget(f));isNaN(a)||(s+=(a-r)**2)}return s/(t-F)}let y=p;if(y<0&&(y=N+y),y<0||y>=N)throw new Error(`axis ${p} is out of bounds for array of dimension ${N}`);const A=Array.from(I).filter((e,t)=>t!==y);if(A.length===0)return L(n,void 0,F);const $=A.reduce((e,t)=>e*t,1),S=I[y],D=new Float64Array($);for(let e=0;e<$;e++){let t=0,o=0;for(let f=0;f<S;f++){const a=M(e,y,f,I),i=V(a,h,m),d=Number(b[i]);isNaN(d)||(t+=d,o++)}if(o-F<=0){D[e]=NaN;continue}const r=t/o;let s=0;for(let f=0;f<S;f++){const a=M(e,y,f,I),i=V(a,h,m),d=Number(b[i]);isNaN(d)||(s+=(d-r)**2)}D[e]=s/(o-F)}const l=B.fromData(D,A,"float64");if(x){const e=[...I];return e[y]=1,B.fromData(D,e,"float64")}return l}function Dt(n,p,F=0,x=!1){const c=L(n,p,F,x);if(typeof c=="number")return Math.sqrt(c);const I=c,N=new Float64Array(I.size);for(let b=0;b<I.size;b++)N[b]=Math.sqrt(Number(I.data[b]));return B.fromData(N,[...I.shape],"float64")}function Z(n,p,F=!1){const x=n.dtype,c=n.shape,I=c.length,N=n.data,b=n.offset,m=n.strides;if(k(x)){const l=N;if(p===void 0){let a=1/0,i=1/0,d=!1;if(n.isCContiguous)for(let u=0;u<n.size;u++){const z=l[(b+u)*2],C=l[(b+u)*2+1];isNaN(z)||isNaN(C)||(d?(z<a||z===a&&C<i)&&(a=z,i=C):(a=z,i=C,d=!0))}else for(let u=0;u<n.size;u++){const z=n.iget(u),C=z.re,E=z.im;isNaN(C)||isNaN(E)||(d?(C<a||C===a&&E<i)&&(a=C,i=E):(a=C,i=E,d=!0))}return d?new U(a,i):new U(NaN,NaN)}let e=p;if(e<0&&(e=I+e),e<0||e>=I)throw new Error(`axis ${p} is out of bounds for array of dimension ${I}`);const t=Array.from(c).filter((a,i)=>i!==e);if(t.length===0)return Z(n);const o=t.reduce((a,i)=>a*i,1),r=c[e],s=new Float64Array(o*2);for(let a=0;a<o;a++){let i=1/0,d=1/0,w=!1;for(let u=0;u<r;u++){const z=M(a,e,u,c),C=V(z,m,b),E=l[C*2],R=l[C*2+1];isNaN(E)||isNaN(R)||(w?(E<i||E===i&&R<d)&&(i=E,d=R):(i=E,d=R,w=!0))}s[a*2]=w?i:NaN,s[a*2+1]=w?d:NaN}const f=B.fromData(s,t,x);if(F){const a=[...c];return a[e]=1,B.fromData(s,a,x)}return f}if(p===void 0){let l=1/0;if(n.isCContiguous)for(let t=0;t<n.size;t++){const o=Number(N[b+t]);!isNaN(o)&&o<l&&(l=o)}else for(let t=0;t<n.size;t++){const o=Number(n.iget(t));!isNaN(o)&&o<l&&(l=o)}return l===1/0?NaN:l}let h=p;if(h<0&&(h=I+h),h<0||h>=I)throw new Error(`axis ${p} is out of bounds for array of dimension ${I}`);const y=Array.from(c).filter((l,e)=>e!==h);if(y.length===0)return Z(n);const A=y.reduce((l,e)=>l*e,1),$=c[h],S=new Float64Array(A);for(let l=0;l<A;l++){let e=1/0;for(let t=0;t<$;t++){const o=M(l,h,t,c),r=V(o,m,b),s=Number(N[r]);!isNaN(s)&&s<e&&(e=s)}S[l]=e===1/0?NaN:e}const D=B.fromData(S,y,"float64");if(F){const l=[...c];return l[h]=1,B.fromData(S,l,"float64")}return D}function tt(n,p,F=!1){const x=n.dtype,c=n.shape,I=c.length,N=n.data,b=n.offset,m=n.strides;if(k(x)){const l=N;if(p===void 0){let a=-1/0,i=-1/0,d=!1;if(n.isCContiguous)for(let u=0;u<n.size;u++){const z=l[(b+u)*2],C=l[(b+u)*2+1];isNaN(z)||isNaN(C)||(d?(z>a||z===a&&C>i)&&(a=z,i=C):(a=z,i=C,d=!0))}else for(let u=0;u<n.size;u++){const z=n.iget(u),C=z.re,E=z.im;isNaN(C)||isNaN(E)||(d?(C>a||C===a&&E>i)&&(a=C,i=E):(a=C,i=E,d=!0))}return d?new U(a,i):new U(NaN,NaN)}let e=p;if(e<0&&(e=I+e),e<0||e>=I)throw new Error(`axis ${p} is out of bounds for array of dimension ${I}`);const t=Array.from(c).filter((a,i)=>i!==e);if(t.length===0)return tt(n);const o=t.reduce((a,i)=>a*i,1),r=c[e],s=new Float64Array(o*2);for(let a=0;a<o;a++){let i=-1/0,d=-1/0,w=!1;for(let u=0;u<r;u++){const z=M(a,e,u,c),C=V(z,m,b),E=l[C*2],R=l[C*2+1];isNaN(E)||isNaN(R)||(w?(E>i||E===i&&R>d)&&(i=E,d=R):(i=E,d=R,w=!0))}s[a*2]=w?i:NaN,s[a*2+1]=w?d:NaN}const f=B.fromData(s,t,x);if(F){const a=[...c];return a[e]=1,B.fromData(s,a,x)}return f}if(p===void 0){let l=-1/0;if(n.isCContiguous)for(let t=0;t<n.size;t++){const o=Number(N[b+t]);!isNaN(o)&&o>l&&(l=o)}else for(let t=0;t<n.size;t++){const o=Number(n.iget(t));!isNaN(o)&&o>l&&(l=o)}return l===-1/0?NaN:l}let h=p;if(h<0&&(h=I+h),h<0||h>=I)throw new Error(`axis ${p} is out of bounds for array of dimension ${I}`);const y=Array.from(c).filter((l,e)=>e!==h);if(y.length===0)return tt(n);const A=y.reduce((l,e)=>l*e,1),$=c[h],S=new Float64Array(A);for(let l=0;l<A;l++){let e=-1/0;for(let t=0;t<$;t++){const o=M(l,h,t,c),r=V(o,m,b),s=Number(N[r]);!isNaN(s)&&s>e&&(e=s)}S[l]=e===-1/0?NaN:e}const D=B.fromData(S,y,"float64");if(F){const l=[...c];return l[h]=1,B.fromData(S,l,"float64")}return D}function et(n,p){const F=n.dtype,x=n.shape,c=x.length,I=n.data,N=n.offset,b=n.strides;if(k(F)){const S=I;if(p===void 0){let r=1/0,s=1/0,f=-1;if(n.isCContiguous)for(let i=0;i<n.size;i++){const d=S[(N+i)*2],w=S[(N+i)*2+1];!P(d,w)&&W(d,w,r,s)<0&&(r=d,s=w,f=i)}else for(let i=0;i<n.size;i++){const d=n.iget(i),w=d.re,u=d.im;!P(w,u)&&W(w,u,r,s)<0&&(r=w,s=u,f=i)}return f}let D=p;if(D<0&&(D=c+D),D<0||D>=c)throw new Error(`axis ${p} is out of bounds for array of dimension ${c}`);const l=Array.from(x).filter((r,s)=>s!==D);if(l.length===0)return et(n);const e=l.reduce((r,s)=>r*s,1),t=x[D],o=new Int32Array(e);for(let r=0;r<e;r++){let s=1/0,f=1/0,a=0;for(let i=0;i<t;i++){const d=M(r,D,i,x),w=V(d,b,N),u=S[w*2],z=S[w*2+1];!P(u,z)&&W(u,z,s,f)<0&&(s=u,f=z,a=i)}o[r]=a}return B.fromData(o,l,"int32")}if(p===void 0){let S=1/0,D=-1;if(n.isCContiguous)for(let e=0;e<n.size;e++){const t=Number(I[N+e]);!isNaN(t)&&t<S&&(S=t,D=e)}else for(let e=0;e<n.size;e++){const t=Number(n.iget(e));!isNaN(t)&&t<S&&(S=t,D=e)}return D}let m=p;if(m<0&&(m=c+m),m<0||m>=c)throw new Error(`axis ${p} is out of bounds for array of dimension ${c}`);const h=Array.from(x).filter((S,D)=>D!==m);if(h.length===0)return et(n);const y=h.reduce((S,D)=>S*D,1),A=x[m],$=new Int32Array(y);for(let S=0;S<y;S++){let D=1/0,l=0;for(let e=0;e<A;e++){const t=M(S,m,e,x),o=V(t,b,N),r=Number(I[o]);!isNaN(r)&&r<D&&(D=r,l=e)}$[S]=l}return B.fromData($,h,"int32")}function ot(n,p){const F=n.dtype,x=n.shape,c=x.length,I=n.data,N=n.offset,b=n.strides;if(k(F)){const S=I;if(p===void 0){let r=-1/0,s=-1/0,f=-1;if(n.isCContiguous)for(let i=0;i<n.size;i++){const d=S[(N+i)*2],w=S[(N+i)*2+1];!P(d,w)&&W(d,w,r,s)>0&&(r=d,s=w,f=i)}else for(let i=0;i<n.size;i++){const d=n.iget(i),w=d.re,u=d.im;!P(w,u)&&W(w,u,r,s)>0&&(r=w,s=u,f=i)}return f}let D=p;if(D<0&&(D=c+D),D<0||D>=c)throw new Error(`axis ${p} is out of bounds for array of dimension ${c}`);const l=Array.from(x).filter((r,s)=>s!==D);if(l.length===0)return ot(n);const e=l.reduce((r,s)=>r*s,1),t=x[D],o=new Int32Array(e);for(let r=0;r<e;r++){let s=-1/0,f=-1/0,a=0;for(let i=0;i<t;i++){const d=M(r,D,i,x),w=V(d,b,N),u=S[w*2],z=S[w*2+1];!P(u,z)&&W(u,z,s,f)>0&&(s=u,f=z,a=i)}o[r]=a}return B.fromData(o,l,"int32")}if(p===void 0){let S=-1/0,D=-1;if(n.isCContiguous)for(let e=0;e<n.size;e++){const t=Number(I[N+e]);!isNaN(t)&&t>S&&(S=t,D=e)}else for(let e=0;e<n.size;e++){const t=Number(n.iget(e));!isNaN(t)&&t>S&&(S=t,D=e)}return D}let m=p;if(m<0&&(m=c+m),m<0||m>=c)throw new Error(`axis ${p} is out of bounds for array of dimension ${c}`);const h=Array.from(x).filter((S,D)=>D!==m);if(h.length===0)return ot(n);const y=h.reduce((S,D)=>S*D,1),A=x[m],$=new Int32Array(y);for(let S=0;S<y;S++){let D=-1/0,l=0;for(let e=0;e<A;e++){const t=M(S,m,e,x),o=V(t,b,N),r=Number(I[o]);!isNaN(r)&&r>D&&(D=r,l=e)}$[S]=l}return B.fromData($,h,"int32")}function wt(n,p){const F=n.dtype,x=n.shape,c=x.length,I=n.data,N=n.offset;if(k(F)){const l=I,e=n.size;if(p===void 0){const u=B.zeros([e],F),z=u.data;let C=0,E=0;if(n.isCContiguous)for(let v=0;v<e;v++){const g=l[(N+v)*2],_=l[(N+v)*2+1];P(g,_)||(C+=g,E+=_),z[v*2]=C,z[v*2+1]=E}else for(let v=0;v<e;v++){const g=n.iget(v),_=g.re,T=g.im;P(_,T)||(C+=_,E+=T),z[v*2]=C,z[v*2+1]=E}return u}let t=p;if(t<0&&(t=c+t),t<0||t>=c)throw new Error(`axis ${p} is out of bounds for array of dimension ${c}`);const o=B.zeros([...x],F),r=o.data,s=x[t],f=[];let a=1;for(let u=c-1;u>=0;u--)f.unshift(a),a*=x[u];const i=n.size,d=f[t];if(n.isCContiguous)for(let u=0;u<i;u++){const z=l[(N+u)*2],C=l[(N+u)*2+1],E=Math.floor(u/d)%s,R=P(z,C);E===0?(r[u*2]=R?0:z,r[u*2+1]=R?0:C):(r[u*2]=r[(u-d)*2]+(R?0:z),r[u*2+1]=r[(u-d)*2+1]+(R?0:C))}else for(let u=0;u<i;u++){const z=n.iget(u),C=z.re,E=z.im,R=Math.floor(u/d)%s,v=P(C,E);R===0?(r[u*2]=v?0:C,r[u*2+1]=v?0:E):(r[u*2]=r[(u-d)*2]+(v?0:C),r[u*2+1]=r[(u-d)*2+1]+(v?0:E))}return o}if(p===void 0){const l=n.size,e=new Float64Array(l);let t=0;if(n.isCContiguous)for(let r=0;r<l;r++){const s=Number(I[N+r]);isNaN(s)||(t+=s),e[r]=t}else for(let r=0;r<l;r++){const s=Number(n.iget(r));isNaN(s)||(t+=s),e[r]=t}return B.fromData(e,[l],"float64")}let b=p;if(b<0&&(b=c+b),b<0||b>=c)throw new Error(`axis ${p} is out of bounds for array of dimension ${c}`);const m=new Float64Array(n.size),h=x[b],y=[];let A=1;for(let l=c-1;l>=0;l--)y.unshift(A),A*=x[l];const $=n.size,S=y[b];if(n.isCContiguous)for(let l=0;l<$;l++){const e=Number(I[N+l]);Math.floor(l/S)%h===0?m[l]=isNaN(e)?0:e:m[l]=m[l-S]+(isNaN(e)?0:e)}else for(let l=0;l<$;l++){const e=Number(n.iget(l));Math.floor(l/S)%h===0?m[l]=isNaN(e)?0:e:m[l]=m[l-S]+(isNaN(e)?0:e)}return B.fromData(m,[...x],"float64")}function Ct(n,p){const F=n.dtype,x=n.shape,c=x.length,I=n.data,N=n.offset;if(k(F)){const l=I,e=n.size;if(p===void 0){const u=B.zeros([e],F),z=u.data;let C=1,E=0;if(n.isCContiguous)for(let v=0;v<e;v++){const g=l[(N+v)*2],_=l[(N+v)*2+1];if(!P(g,_)){const T=C*g-E*_,q=C*_+E*g;C=T,E=q}z[v*2]=C,z[v*2+1]=E}else for(let v=0;v<e;v++){const g=n.iget(v),_=g.re,T=g.im;if(!P(_,T)){const q=C*_-E*T,O=C*T+E*_;C=q,E=O}z[v*2]=C,z[v*2+1]=E}return u}let t=p;if(t<0&&(t=c+t),t<0||t>=c)throw new Error(`axis ${p} is out of bounds for array of dimension ${c}`);const o=B.zeros([...x],F),r=o.data,s=x[t],f=[];let a=1;for(let u=c-1;u>=0;u--)f.unshift(a),a*=x[u];const i=n.size,d=f[t];if(n.isCContiguous)for(let u=0;u<i;u++){const z=l[(N+u)*2],C=l[(N+u)*2+1],E=Math.floor(u/d)%s,R=P(z,C);if(E===0)r[u*2]=R?1:z,r[u*2+1]=R?0:C;else{const v=r[(u-d)*2],g=r[(u-d)*2+1];R?(r[u*2]=v,r[u*2+1]=g):(r[u*2]=v*z-g*C,r[u*2+1]=v*C+g*z)}}else for(let u=0;u<i;u++){const z=n.iget(u),C=z.re,E=z.im,R=Math.floor(u/d)%s,v=P(C,E);if(R===0)r[u*2]=v?1:C,r[u*2+1]=v?0:E;else{const g=r[(u-d)*2],_=r[(u-d)*2+1];v?(r[u*2]=g,r[u*2+1]=_):(r[u*2]=g*C-_*E,r[u*2+1]=g*E+_*C)}}return o}if(p===void 0){const l=n.size,e=new Float64Array(l);let t=1;if(n.isCContiguous)for(let r=0;r<l;r++){const s=Number(I[N+r]);isNaN(s)||(t*=s),e[r]=t}else for(let r=0;r<l;r++){const s=Number(n.iget(r));isNaN(s)||(t*=s),e[r]=t}return B.fromData(e,[l],"float64")}let b=p;if(b<0&&(b=c+b),b<0||b>=c)throw new Error(`axis ${p} is out of bounds for array of dimension ${c}`);const m=new Float64Array(n.size),h=x[b],y=[];let A=1;for(let l=c-1;l>=0;l--)y.unshift(A),A*=x[l];const $=n.size,S=y[b];if(n.isCContiguous)for(let l=0;l<$;l++){const e=Number(I[N+l]);Math.floor(l/S)%h===0?m[l]=isNaN(e)?1:e:m[l]=m[l-S]*(isNaN(e)?1:e)}else for(let l=0;l<$;l++){const e=Number(n.iget(l));Math.floor(l/S)%h===0?m[l]=isNaN(e)?1:e:m[l]=m[l-S]*(isNaN(e)?1:e)}return B.fromData(m,[...x],"float64")}function dt(n,p,F=!1){H(n.dtype,"nanmedian","Complex numbers are not orderable.");const x=n.shape,c=x.length,I=n.data,N=n.offset,b=n.strides;if(p===void 0){const D=[];if(n.isCContiguous)for(let o=0;o<n.size;o++){const r=Number(I[N+o]);isNaN(r)||D.push(r)}else for(let o=0;o<n.size;o++){const r=Number(n.iget(o));isNaN(r)||D.push(r)}if(D.length===0)return NaN;D.sort((o,r)=>o-r);const e=D.length,t=Math.floor(e/2);return e%2===0?(D[t-1]+D[t])/2:D[t]}let m=p;if(m<0&&(m=c+m),m<0||m>=c)throw new Error(`axis ${p} is out of bounds for array of dimension ${c}`);const h=Array.from(x).filter((D,l)=>l!==m);if(h.length===0)return dt(n);const y=h.reduce((D,l)=>D*l,1),A=x[m],$=new Float64Array(y);for(let D=0;D<y;D++){const l=[];for(let o=0;o<A;o++){const r=M(D,m,o,x),s=V(r,b,N),f=Number(I[s]);isNaN(f)||l.push(f)}if(l.length===0){$[D]=NaN;continue}l.sort((o,r)=>o-r);const e=l.length,t=Math.floor(e/2);e%2===0?$[D]=(l[t-1]+l[t])/2:$[D]=l[t]}const S=B.fromData($,h,"float64");if(F){const D=[...x];return D[m]=1,B.fromData($,D,"float64")}return S}function nt(n,p,F,x=!1){if(H(n.dtype,"nanquantile","Complex numbers are not orderable."),p<0||p>1)throw new Error("Quantile must be between 0 and 1");const c=n.shape,I=c.length,N=n.data,b=n.offset,m=n.strides;if(F===void 0){const l=[];if(n.isCContiguous)for(let a=0;a<n.size;a++){const i=Number(N[b+a]);isNaN(i)||l.push(i)}else for(let a=0;a<n.size;a++){const i=Number(n.iget(a));isNaN(i)||l.push(i)}if(l.length===0)return NaN;l.sort((a,i)=>a-i);const t=l.length,o=p*(t-1),r=Math.floor(o),s=Math.ceil(o);if(r===s)return l[r];const f=o-r;return l[r]*(1-f)+l[s]*f}let h=F;if(h<0&&(h=I+h),h<0||h>=I)throw new Error(`axis ${F} is out of bounds for array of dimension ${I}`);const y=Array.from(c).filter((l,e)=>e!==h);if(y.length===0)return nt(n,p);const A=y.reduce((l,e)=>l*e,1),$=c[h],S=new Float64Array(A);for(let l=0;l<A;l++){const e=[];for(let f=0;f<$;f++){const a=M(l,h,f,c),i=V(a,m,b),d=Number(N[i]);isNaN(d)||e.push(d)}if(e.length===0){S[l]=NaN;continue}e.sort((f,a)=>f-a);const t=e.length,o=p*(t-1),r=Math.floor(o),s=Math.ceil(o);if(r===s)S[l]=e[r];else{const f=o-r;S[l]=e[r]*(1-f)+e[s]*f}}const D=B.fromData(S,y,"float64");if(x){const l=[...c];return l[h]=1,B.fromData(S,l,"float64")}return D}function Ft(n,p,F,x=!1){return nt(n,p/100,F,x)}export{ft as all,lt as any,st as argmax,it as argmin,Y as average,At as cumprod,bt as cumsum,j as max,X as mean,St as median,G as min,ot as nanargmax,et as nanargmin,Ct as nancumprod,wt as nancumsum,tt as nanmax,mt as nanmean,dt as nanmedian,Z as nanmin,Ft as nanpercentile,ct as nanprod,nt as nanquantile,Dt as nanstd,ut as nansum,L as nanvar,zt as percentile,rt as prod,ht as ptp,K as quantile,Nt as std,J as sum,at as variance};
1
+ import{ArrayStorage as O}from"../storage";import{isBigIntDType as L,isComplexDType as U,isFloatDType as H,throwIfComplex as ot}from"../dtype";import{computeStrides as k,precomputeAxisOffsets as P}from"../internal/indexing";import{Complex as Q}from"../complex";import{wasmReduceSum as bt,wasmReduceSumStrided as Nt}from"../wasm/reduce_sum";import{wasmReduceMax as St,wasmReduceMaxStrided as At}from"../wasm/reduce_max";import{wasmReduceMin as It,wasmReduceMinStrided as ht}from"../wasm/reduce_min";import{wasmReduceArgmax as zt}from"../wasm/reduce_argmax";import{wasmReduceArgmin as wt}from"../wasm/reduce_argmin";import{wasmReduceMean as Dt,wasmReduceMeanStrided as Ct}from"../wasm/reduce_mean";import{wasmReduceVar as Ft}from"../wasm/reduce_var";import{wasmReduceNansum as Rt}from"../wasm/reduce_nansum";import{wasmReduceNanmin as vt}from"../wasm/reduce_nanmin";import{wasmReduceNanmax as $t}from"../wasm/reduce_nanmax";import{wasmReduceProd as Bt,wasmReduceProdStrided as Et}from"../wasm/reduce_prod";import{wasmReduceQuantile as Ot}from"../wasm/reduce_quantile";import{wasmReduceAny as gt}from"../wasm/reduce_any";import{wasmReduceAll as Vt}from"../wasm/reduce_all";const W=new Float32Array(2);function st(t){switch(t){case"int8":case"int16":case"int32":return"int64";case"uint8":case"uint16":case"uint32":return"uint64";default:return t}}function Tt(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,x,z){const u=O.zeros(Array(x).fill(1),z);return u.iset(0,t),u}function tt(t,x,z=!1){const u=t.dtype,m=t.shape,b=m.length,S=t.size,h=t.data,A=t.offset,R=t.strides,I=t.isCContiguous;if(x===void 0){const e=bt(t);if(e!==null)return e;if(U(u)){let o=0,i=0;if(I){const a=h;for(let s=0;s<S;s++)o+=a[(A+s)*2],i+=a[(A+s)*2+1]}else for(let a=0;a<S;a++){const s=t.iget(a);o+=s.re,i+=s.im}return new Q(o,i)}else if(L(u)){let o=BigInt(0);if(I){const i=h;for(let a=0;a<S;a++)o+=i[A+a]}else for(let i=0;i<S;i++)o+=t.iget(i);return Number(o)}else if(u==="float32"){if(W[0]=0,I)for(let o=0;o<S;o++)W[0]+=Number(h[A+o]);else for(let o=0;o<S;o++)W[0]+=Number(t.iget(o));return W[0]}else{let o=0;if(I)if(A===0)for(let i=0;i<S;i++)o+=Number(h[i]);else for(let i=0;i<S;i++)o+=Number(h[A+i]);else for(let i=0;i<S;i++)o+=Number(t.iget(i));return o}}let w=x;if(w<0&&(w=b+w),w<0||w>=b)throw new Error(`axis ${x} is out of bounds for array of dimension ${b}`);const v=st(u),D=Array.from(m).filter((e,o)=>o!==w);if(D.length===0){const e=tt(t);if(!z)return e;const o=O.zeros(Array(b).fill(1),v);return o.iset(0,e),o}const g=O.zeros(D,v),y=g.data,d=m[w],c=D.reduce((e,o)=>e*o,1);if(I&&!U(u)){const e=m.slice(0,w).reduce((a,s)=>a*s,1),o=m.slice(w+1).reduce((a,s)=>a*s,1),i=Nt(t,e,d,o);if(i){const a=z?m.map((p,f)=>f===w?1:p):D;if(v==="float64")return O.fromData(i.data,a,v);if(v==="float32"){const p=new Float32Array(i.data.length),f=i.data;for(let l=0;l<f.length;l++)p[l]=f[l];return O.fromData(p,a,v)}const s=i.data;for(let p=0;p<s.length;p++)y[p]=y instanceof BigInt64Array||y instanceof BigUint64Array?BigInt(Math.round(s[p])):s[p];return z?O.fromData(y,a,v):g}}const{baseOffsets:n,axisStride:r}=P(m,R,A,w,c);if(U(u)){const e=h,o=y;if(u==="complex64")for(let i=0;i<c;i++){W[0]=0,W[1]=0;let a=n[i];for(let s=0;s<d;s++)W[0]+=e[a*2],W[1]+=e[a*2+1],a+=r;o[i*2]=W[0],o[i*2+1]=W[1]}else for(let i=0;i<c;i++){let a=0,s=0,p=n[i];for(let f=0;f<d;f++)a+=e[p*2],s+=e[p*2+1],p+=r;o[i*2]=a,o[i*2+1]=s}}else if(L(u)){const e=h,o=y;for(let i=0;i<c;i++){let a=BigInt(0),s=n[i];for(let p=0;p<d;p++)a+=e[s],s+=r;o[i]=a}}else if(L(v)){const e=y;for(let o=0;o<c;o++){let i=0,a=n[o];for(let s=0;s<d;s++)i+=Number(h[a]),a+=r;e[o]=BigInt(Math.round(i))}}else if(u==="float32")for(let e=0;e<c;e++){W[0]=0;let o=n[e];for(let i=0;i<d;i++)W[0]+=Number(h[o]),o+=r;y[e]=W[0]}else for(let e=0;e<c;e++){let o=0,i=n[e];for(let a=0;a<d;a++)o+=Number(h[i]),i+=r;y[e]=o}if(z){const e=[...m];return e[w]=1,O.fromData(y,e,v)}return g}function nt(t,x,z=!1){const u=t.dtype,m=t.shape;if(x===void 0){const D=Dt(t);if(D!==null)return D;const g=tt(t);return g instanceof Q?new Q(g.re/t.size,g.im/t.size):g/t.size}let b=x;if(b<0&&(b=m.length+b),b<0||b>=m.length)throw new Error(`axis ${x} is out of bounds for array of dimension ${m.length}`);if(t.isCContiguous&&!U(u)){const D=m[b],g=z?m.map((n,r)=>r===b?1:n):Array.from(m).filter((n,r)=>r!==b),y=m.slice(0,b).reduce((n,r)=>n*r,1),d=m.slice(b+1).reduce((n,r)=>n*r,1),c=Ct(t,y,D,d);if(c)return O.fromData(c.data,g,"float64")}const S=tt(t,x,z);if(typeof S=="number")return S/m[b];if(S instanceof Q)return new Q(S.re/m[b],S.im/m[b]);const h=m[b],A=Tt(u),R=O.zeros(Array.from(S.shape),A),I=R.data,w=S.data,v=S.dtype;if(U(u)){const D=w,g=I,y=S.size;for(let d=0;d<y;d++)g[d*2]=D[d*2]/h,g[d*2+1]=D[d*2+1]/h}else if(L(v)){const D=w;for(let g=0;g<I.length;g++)I[g]=Number(D[g])/h}else for(let D=0;D<I.length;D++)I[D]=Number(w[D])/h;return R}function Y(t,x,z=!1){const u=t.dtype,m=t.shape,b=m.length,S=t.size,h=t.data,A=t.offset,R=t.strides;if(U(u)){const n=h;if(x===void 0){if(S===0)throw new Error("max of empty array");let l=n[A*2],N=n[A*2+1];for(let C=1;C<S;C++){const B=n[(A+C)*2],F=n[(A+C)*2+1];if(isNaN(B)||isNaN(F))return new Q(NaN,NaN);(B>l||B===l&&F>N)&&(l=B,N=F)}return isNaN(l)||isNaN(N)?new Q(NaN,NaN):new Q(l,N)}let r=x;if(r<0&&(r=b+r),r<0||r>=b)throw new Error(`axis ${x} is out of bounds for array of dimension ${b}`);const e=Array.from(m).filter((l,N)=>N!==r);if(e.length===0){const l=Y(t);return z?j(l,b,u):l}const o=O.zeros(e,u),i=o.data,a=m[r],s=e.reduce((l,N)=>l*N,1),{baseOffsets:p,axisStride:f}=P(m,R,A,r,s);for(let l=0;l<s;l++){let N=p[l],C=n[N*2],B=n[N*2+1];N+=f;for(let F=1;F<a;F++){const $=n[N*2],E=n[N*2+1];if(N+=f,isNaN($)||isNaN(E)){C=NaN,B=NaN;break}($>C||$===C&&E>B)&&(C=$,B=E)}i[l*2]=C,i[l*2+1]=B}if(z){const l=[...m];return l[r]=1,O.fromData(i,l,u)}return o}if(x===void 0){const n=St(t);if(n!==null)return n;if(S===0)throw new Error("max of empty array");if(t.isCContiguous){let r=h[A];if(A===0)for(let e=1;e<S;e++)h[e]>r&&(r=h[e]);else for(let e=1;e<S;e++)h[A+e]>r&&(r=h[A+e]);return Number(r)}else{let r=t.iget(0);for(let e=1;e<S;e++){const o=t.iget(e);o>r&&(r=o)}return Number(r)}}let I=x;if(I<0&&(I=b+I),I<0||I>=b)throw new Error(`axis ${x} is out of bounds for array of dimension ${b}`);const w=Array.from(m).filter((n,r)=>r!==I);if(w.length===0){const n=Y(t);return z?j(n,b,u):n}const v=O.zeros(w,u),D=v.data,g=m[I],y=w.reduce((n,r)=>n*r,1);if(t.isCContiguous&&!U(u)){const n=m.slice(0,I).reduce((o,i)=>o*i,1),r=m.slice(I+1).reduce((o,i)=>o*i,1),e=At(t,n,g,r);if(e){const o=z?m.map((i,a)=>a===I?1:i):w;return O.fromData(e.data,o,u)}}const{baseOffsets:d,axisStride:c}=P(m,R,A,I,y);if(L(u)){const n=h,r=D;for(let e=0;e<y;e++){let o=d[e],i=n[o];o+=c;for(let a=1;a<g;a++){const s=n[o];s>i&&(i=s),o+=c}r[e]=i}}else for(let n=0;n<y;n++){let r=-1/0,e=d[n];for(let o=0;o<g;o++){const i=Number(h[e]);i>r&&(r=i),e+=c}D[n]=r}if(z){const n=[...m];return n[I]=1,O.fromData(D,n,u)}return v}function at(t,x,z=!1){const u=t.dtype,m=t.shape,b=m.length,S=t.size,h=t.data,A=t.offset,R=t.strides,I=t.isCContiguous;if(x===void 0){const e=Bt(t);if(e!==null)return e;if(U(u)){let o=1,i=0;if(I){const a=h;for(let s=0;s<S;s++){const p=a[(A+s)*2],f=a[(A+s)*2+1],l=o*p-i*f,N=o*f+i*p;o=l,i=N}}else for(let a=0;a<S;a++){const s=t.iget(a),p=s.re,f=s.im,l=o*p-i*f,N=o*f+i*p;o=l,i=N}return new Q(o,i)}else if(L(u)){let o=BigInt(1);if(I){const i=h;for(let a=0;a<S;a++)o*=i[A+a]}else for(let i=0;i<S;i++)o*=t.iget(i);return Number(o)}else if(u==="float32"){if(W[0]=1,I)for(let o=0;o<S;o++)W[0]*=Number(h[A+o]);else for(let o=0;o<S;o++)W[0]*=Number(t.iget(o));return W[0]}else{let o=1;if(I)if(A===0)for(let i=0;i<S;i++)o*=Number(h[i]);else for(let i=0;i<S;i++)o*=Number(h[A+i]);else for(let i=0;i<S;i++)o*=Number(t.iget(i));return o}}let w=x;if(w<0&&(w=b+w),w<0||w>=b)throw new Error(`axis ${x} is out of bounds for array of dimension ${b}`);const v=st(u),D=Array.from(m).filter((e,o)=>o!==w);if(D.length===0){const e=at(t);return z?j(e,b,v):e}const g=O.zeros(D,v),y=g.data,d=m[w],c=D.reduce((e,o)=>e*o,1);if(I&&!U(u)){const e=m.slice(0,w).reduce((a,s)=>a*s,1),o=m.slice(w+1).reduce((a,s)=>a*s,1),i=Et(t,e,d,o);if(i){const a=z?m.map((s,p)=>p===w?1:s):D;return O.fromData(i.data,a,v)}}const{baseOffsets:n,axisStride:r}=P(m,R,A,w,c);if(U(u)){const e=h,o=y;if(u==="complex64")for(let i=0;i<c;i++){W[0]=1,W[1]=0;let a=n[i];for(let s=0;s<d;s++){const p=e[a*2],f=e[a*2+1],l=W[0],N=W[1];W[0]=l*p-N*f,W[1]=l*f+N*p,a+=r}o[i*2]=W[0],o[i*2+1]=W[1]}else for(let i=0;i<c;i++){let a=1,s=0,p=n[i];for(let f=0;f<d;f++){const l=e[p*2],N=e[p*2+1],C=a*l-s*N,B=a*N+s*l;a=C,s=B,p+=r}o[i*2]=a,o[i*2+1]=s}}else if(L(u)){const e=h,o=y;for(let i=0;i<c;i++){let a=BigInt(1),s=n[i];for(let p=0;p<d;p++)a*=e[s],s+=r;o[i]=a}}else if(L(v)){const e=y;for(let o=0;o<c;o++){let i=BigInt(1),a=n[o];for(let s=0;s<d;s++)i*=BigInt(Number(h[a])),a+=r;e[o]=i}}else if(u==="float32")for(let e=0;e<c;e++){W[0]=1;let o=n[e];for(let i=0;i<d;i++)W[0]*=Number(h[o]),o+=r;y[e]=W[0]}else for(let e=0;e<c;e++){let o=1,i=n[e];for(let a=0;a<d;a++)o*=Number(h[i]),i+=r;y[e]=o}if(z){const e=[...m];return e[w]=1,O.fromData(y,e,v)}return g}function Z(t,x,z=!1){const u=t.dtype,m=t.shape,b=m.length,S=t.size,h=t.data,A=t.offset,R=t.strides;if(U(u)){const n=h;if(x===void 0){if(S===0)throw new Error("min of empty array");let l=n[A*2],N=n[A*2+1];for(let C=1;C<S;C++){const B=n[(A+C)*2],F=n[(A+C)*2+1];if(isNaN(B)||isNaN(F))return new Q(NaN,NaN);(B<l||B===l&&F<N)&&(l=B,N=F)}return isNaN(l)||isNaN(N)?new Q(NaN,NaN):new Q(l,N)}let r=x;if(r<0&&(r=b+r),r<0||r>=b)throw new Error(`axis ${x} is out of bounds for array of dimension ${b}`);const e=Array.from(m).filter((l,N)=>N!==r);if(e.length===0){const l=Z(t);return z?j(l,b,u):l}const o=O.zeros(e,u),i=o.data,a=m[r],s=e.reduce((l,N)=>l*N,1),{baseOffsets:p,axisStride:f}=P(m,R,A,r,s);for(let l=0;l<s;l++){let N=p[l],C=n[N*2],B=n[N*2+1];N+=f;for(let F=1;F<a;F++){const $=n[N*2],E=n[N*2+1];if(N+=f,isNaN($)||isNaN(E)){C=NaN,B=NaN;break}($<C||$===C&&E<B)&&(C=$,B=E)}i[l*2]=C,i[l*2+1]=B}if(z){const l=[...m];return l[r]=1,O.fromData(i,l,u)}return o}if(x===void 0){const n=It(t);if(n!==null)return n;if(S===0)throw new Error("min of empty array");if(t.isCContiguous){let r=h[A];if(A===0)for(let e=1;e<S;e++)h[e]<r&&(r=h[e]);else for(let e=1;e<S;e++)h[A+e]<r&&(r=h[A+e]);return Number(r)}else{let r=t.iget(0);for(let e=1;e<S;e++){const o=t.iget(e);o<r&&(r=o)}return Number(r)}}let I=x;if(I<0&&(I=b+I),I<0||I>=b)throw new Error(`axis ${x} is out of bounds for array of dimension ${b}`);const w=Array.from(m).filter((n,r)=>r!==I);if(w.length===0){const n=Z(t);return z?j(n,b,u):n}const v=O.zeros(w,u),D=v.data,g=m[I],y=w.reduce((n,r)=>n*r,1);if(t.isCContiguous&&!U(u)){const n=m.slice(0,I).reduce((o,i)=>o*i,1),r=m.slice(I+1).reduce((o,i)=>o*i,1),e=ht(t,n,g,r);if(e){const o=z?m.map((i,a)=>a===I?1:i):w;return O.fromData(e.data,o,u)}}const{baseOffsets:d,axisStride:c}=P(m,R,A,I,y);if(L(u)){const n=h,r=D;for(let e=0;e<y;e++){let o=d[e],i=n[o];o+=c;for(let a=1;a<g;a++){const s=n[o];s<i&&(i=s),o+=c}r[e]=i}}else for(let n=0;n<y;n++){let r=1/0,e=d[n];for(let o=0;o<g;o++){const i=Number(h[e]);i<r&&(r=i),e+=c}D[n]=r}if(z){const n=[...m];return n[I]=1,O.fromData(D,n,u)}return v}function J(t,x,z,u){return t<z?-1:t>z?1:x<u?-1:x>u?1:0}function ft(t,x){const z=t.dtype,u=U(z),m=t.shape,b=m.length,S=t.size,h=t.data,A=t.offset,R=t.strides,I=t.isCContiguous;if(x===void 0){const r=wt(t);if(r!==null)return r;if(S===0)throw new Error("argmin of empty array");if(u)if(I){const e=h;let o=e[A*2],i=e[A*2+1],a=0;for(let s=1;s<S;s++){const p=e[(A+s)*2],f=e[(A+s)*2+1];J(p,f,o,i)<0&&(o=p,i=f,a=s)}return a}else{const e=t.iget(0);let o=e.re,i=e.im,a=0;for(let s=1;s<S;s++){const p=t.iget(s);J(p.re,p.im,o,i)<0&&(o=p.re,i=p.im,a=s)}return a}if(I){let e=h[A],o=0;if(A===0)for(let i=1;i<S;i++)h[i]<e&&(e=h[i],o=i);else for(let i=1;i<S;i++)h[A+i]<e&&(e=h[A+i],o=i);return o}else{let e=t.iget(0),o=0;for(let i=1;i<S;i++){const a=t.iget(i);a<e&&(e=a,o=i)}return o}}let w=x;if(w<0&&(w=b+w),w<0||w>=b)throw new Error(`axis ${x} is out of bounds for array of dimension ${b}`);const v=Array.from(m).filter((r,e)=>e!==w);if(v.length===0)return ft(t);const D=O.zeros(v,"int32"),g=D.data,y=m[w],d=v.reduce((r,e)=>r*e,1),{baseOffsets:c,axisStride:n}=P(m,R,A,w,d);if(u){const r=h;for(let e=0;e<d;e++){let o=c[e],i=r[o*2],a=r[o*2+1],s=0;o+=n;for(let p=1;p<y;p++){const f=r[o*2],l=r[o*2+1];J(f,l,i,a)<0&&(i=f,a=l,s=p),o+=n}g[e]=s}}else if(L(z)){const r=h;for(let e=0;e<d;e++){let o=c[e],i=r[o],a=0;o+=n;for(let s=1;s<y;s++){const p=r[o];p<i&&(i=p,a=s),o+=n}g[e]=a}}else for(let r=0;r<d;r++){let e=1/0,o=0,i=c[r];for(let a=0;a<y;a++){const s=Number(h[i]);s<e&&(e=s,o=a),i+=n}g[r]=o}return D}function lt(t,x){const z=t.dtype,u=U(z),m=t.shape,b=m.length,S=t.size,h=t.data,A=t.offset,R=t.strides,I=t.isCContiguous;if(x===void 0){const r=zt(t);if(r!==null)return r;if(S===0)throw new Error("argmax of empty array");if(u)if(I){const e=h;let o=e[A*2],i=e[A*2+1],a=0;for(let s=1;s<S;s++){const p=e[(A+s)*2],f=e[(A+s)*2+1];J(p,f,o,i)>0&&(o=p,i=f,a=s)}return a}else{const e=t.iget(0);let o=e.re,i=e.im,a=0;for(let s=1;s<S;s++){const p=t.iget(s);J(p.re,p.im,o,i)>0&&(o=p.re,i=p.im,a=s)}return a}if(I){let e=h[A],o=0;for(let i=1;i<S;i++)h[A+i]>e&&(e=h[A+i],o=i);return o}else{let e=t.iget(0),o=0;for(let i=1;i<S;i++){const a=t.iget(i);a>e&&(e=a,o=i)}return o}}let w=x;if(w<0&&(w=b+w),w<0||w>=b)throw new Error(`axis ${x} is out of bounds for array of dimension ${b}`);const v=Array.from(m).filter((r,e)=>e!==w);if(v.length===0)return lt(t);const D=O.zeros(v,"int32"),g=D.data,y=m[w],d=v.reduce((r,e)=>r*e,1),{baseOffsets:c,axisStride:n}=P(m,R,A,w,d);if(u){const r=h;for(let e=0;e<d;e++){let o=c[e],i=r[o*2],a=r[o*2+1],s=0;o+=n;for(let p=1;p<y;p++){const f=r[o*2],l=r[o*2+1];J(f,l,i,a)>0&&(i=f,a=l,s=p),o+=n}g[e]=s}}else if(L(z)){const r=h;for(let e=0;e<d;e++){let o=c[e],i=r[o],a=0;o+=n;for(let s=1;s<y;s++){const p=r[o];p>i&&(i=p,a=s),o+=n}g[e]=a}}else for(let r=0;r<d;r++){let e=-1/0,o=0,i=c[r];for(let a=0;a<y;a++){const s=Number(h[i]);s>e&&(e=s,o=a),i+=n}g[r]=o}return D}function ut(t,x,z=0,u=!1){const m=t.dtype,b=t.shape,S=b.length,h=t.size,A=t.data,R=t.offset,I=t.strides,w=nt(t,x,u),v=t.isCContiguous;if(x===void 0){const a=Ft(t);if(a!==null)return a;if(U(m)){const f=w;let l=0;if(v){const N=A;for(let C=0;C<h;C++){const B=N[(R+C)*2],F=N[(R+C)*2+1],$=B-f.re,E=F-f.im;l+=$*$+E*E}}else for(let N=0;N<h;N++){const C=t.iget(N),B=C.re-f.re,F=C.im-f.im;l+=B*B+F*F}return l/(h-z)}const s=w;let p=0;if(v)for(let f=0;f<h;f++){const l=Number(A[R+f])-s;p+=l*l}else for(let f=0;f<h;f++){const l=Number(t.iget(f))-s;p+=l*l}return p/(h-z)}let D=x;if(D<0&&(D=S+D),D<0||D>=S)throw new Error(`axis ${x} is out of bounds for array of dimension ${S}`);const g=b[D],y=w,d=y.data,c=u?y.shape:Array.from(b).filter((a,s)=>s!==D),n=O.zeros(Array.from(c),"float64"),r=n.data,e=c.reduce((a,s)=>a*s,1),{baseOffsets:o,axisStride:i}=P(b,I,R,D,e);if(U(m)){const a=A,s=d;for(let p=0;p<e;p++){let f=0;const l=s[p*2],N=s[p*2+1];let C=o[p];for(let B=0;B<g;B++){const F=a[C*2],$=a[C*2+1],E=F-l,T=$-N;f+=E*E+T*T,C+=i}r[p]=f/(g-z)}}else for(let a=0;a<e;a++){let s=0;const p=Number(d[a]);let f=o[a];for(let l=0;l<g;l++){const N=Number(A[f])-p;s+=N*N,f+=i}r[a]=s/(g-z)}return n}function ue(t,x,z=0,u=!1){const m=ut(t,x,z,u);if(typeof m=="number")return Math.sqrt(m);const b=O.zeros(Array.from(m.shape),"float64"),S=m.data,h=b.data;for(let A=0;A<S.length;A++)h[A]=Math.sqrt(Number(S[A]));return b}function _t(t,x,z=!1){const u=t.shape,m=u.length,b=t.size,S=t.data,h=t.offset,A=t.strides,R=t.isCContiguous;if(x===void 0){const n=Vt(t);if(n!==null)return n===1;if(R){for(let r=0;r<b;r++)if(!S[h+r])return!1}else for(let r=0;r<b;r++)if(!t.iget(r))return!1;return!0}let I=x;if(I<0&&(I=m+I),I<0||I>=m)throw new Error(`axis ${x} is out of bounds for array of dimension ${m}`);const w=Array.from(u).filter((n,r)=>r!==I);if(w.length===0){const n=_t(t);if(!z)return n;const r=O.zeros(Array(m).fill(1),"bool");return r.iset(0,n?1:0),r}const v=O.zeros(w,"bool"),D=v.data,g=u[I],y=w.reduce((n,r)=>n*r,1),{baseOffsets:d,axisStride:c}=P(u,A,h,I,y);for(let n=0;n<y;n++){let r=!0,e=d[n];for(let o=0;o<g;o++){if(!S[e]){r=!1;break}e+=c}D[n]=r?1:0}if(z){const n=[...u];return n[I]=1,O.fromData(D,n,"bool")}return v}function Mt(t,x,z=!1){const u=t.shape,m=u.length,b=t.size,S=t.data,h=t.offset,A=t.strides,R=t.isCContiguous;if(x===void 0){const n=gt(t);if(n!==null)return n===1;if(R){for(let r=0;r<b;r++)if(S[h+r])return!0}else for(let r=0;r<b;r++)if(t.iget(r))return!0;return!1}let I=x;if(I<0&&(I=m+I),I<0||I>=m)throw new Error(`axis ${x} is out of bounds for array of dimension ${m}`);const w=Array.from(u).filter((n,r)=>r!==I);if(w.length===0){const n=Mt(t);if(!z)return n;const r=O.zeros(Array(m).fill(1),"bool");return r.iset(0,n?1:0),r}const v=O.zeros(w,"bool"),D=v.data,g=u[I],y=w.reduce((n,r)=>n*r,1),{baseOffsets:d,axisStride:c}=P(u,A,h,I,y);for(let n=0;n<y;n++){let r=!1,e=d[n];for(let o=0;o<g;o++){if(S[e]){r=!0;break}e+=c}D[n]=r?1:0}if(z){const n=[...u];return n[I]=1,O.fromData(D,n,"bool")}return v}function Ut(t,x){const z=t.dtype,u=t.shape,m=u.length,b=t.data,S=t.offset,h=t.strides,A=t.isCContiguous;if(U(z)){const r=b,e=t.size;if(x===void 0){const $=O.zeros([e],z),E=$.data;let T=0,_=0;if(A)for(let V=0;V<e;V++)T+=r[(S+V)*2],_+=r[(S+V)*2+1],E[V*2]=T,E[V*2+1]=_;else for(let V=0;V<e;V++){const M=t.iget(V);T+=M.re,_+=M.im,E[V*2]=T,E[V*2+1]=_}return $}let o=x;if(o<0&&(o=m+o),o<0||o>=m)throw new Error(`axis ${x} is out of bounds for array of dimension ${m}`);const i=O.zeros([...u],z),a=i.data,s=u[o],p=Array.from(u).filter(($,E)=>E!==o),f=p.length===0?1:p.reduce(($,E)=>$*E,1),{baseOffsets:l,axisStride:N}=P(u,h,S,o,f),C=k(u),{baseOffsets:B,axisStride:F}=P(u,C,0,o,f);for(let $=0;$<f;$++){let E=l[$],T=B[$],_=0,V=0;for(let M=0;M<s;M++)_+=r[E*2],V+=r[E*2+1],a[T*2]=_,a[T*2+1]=V,E+=N,T+=F}return i}if(x===void 0){const r=t.size,e=new Float64Array(r);let o=0;if(A)for(let i=0;i<r;i++)o+=Number(b[S+i]),e[i]=o;else for(let i=0;i<r;i++)o+=Number(t.iget(i)),e[i]=o;return O.fromData(e,[r],"float64")}let R=x;if(R<0&&(R=m+R),R<0||R>=m)throw new Error(`axis ${x} is out of bounds for array of dimension ${m}`);const I=new Float64Array(t.size),w=u[R],v=Array.from(u).filter((r,e)=>e!==R),D=v.length===0?1:v.reduce((r,e)=>r*e,1),{baseOffsets:g,axisStride:y}=P(u,h,S,R,D),d=k(u),{baseOffsets:c,axisStride:n}=P(u,d,0,R,D);for(let r=0;r<D;r++){let e=g[r],o=c[r],i=0;for(let a=0;a<w;a++)i+=Number(b[e]),I[o]=i,e+=y,o+=n}return O.fromData(I,[...u],"float64")}function Pt(t,x){const z=t.dtype,u=t.shape,m=u.length,b=t.data,S=t.offset,h=t.strides,A=t.isCContiguous;if(U(z)){const r=b,e=t.size;if(x===void 0){const $=O.zeros([e],z),E=$.data;let T=1,_=0;if(A)for(let V=0;V<e;V++){const M=r[(S+V)*2],K=r[(S+V)*2+1],G=T*M-_*K,X=T*K+_*M;T=G,_=X,E[V*2]=T,E[V*2+1]=_}else for(let V=0;V<e;V++){const M=t.iget(V),K=M.re,G=M.im,X=T*K-_*G,rt=T*G+_*K;T=X,_=rt,E[V*2]=T,E[V*2+1]=_}return $}let o=x;if(o<0&&(o=m+o),o<0||o>=m)throw new Error(`axis ${x} is out of bounds for array of dimension ${m}`);const i=O.zeros([...u],z),a=i.data,s=u[o],p=Array.from(u).filter(($,E)=>E!==o),f=p.length===0?1:p.reduce(($,E)=>$*E,1),{baseOffsets:l,axisStride:N}=P(u,h,S,o,f),C=k(u),{baseOffsets:B,axisStride:F}=P(u,C,0,o,f);for(let $=0;$<f;$++){let E=l[$],T=B[$],_=1,V=0;for(let M=0;M<s;M++){const K=r[E*2],G=r[E*2+1],X=_*K-V*G,rt=_*G+V*K;_=X,V=rt,a[T*2]=_,a[T*2+1]=V,E+=N,T+=F}}return i}if(x===void 0){const r=t.size,e=new Float64Array(r);let o=1;if(A)for(let i=0;i<r;i++)o*=Number(b[S+i]),e[i]=o;else for(let i=0;i<r;i++)o*=Number(t.iget(i)),e[i]=o;return O.fromData(e,[r],"float64")}let R=x;if(R<0&&(R=m+R),R<0||R>=m)throw new Error(`axis ${x} is out of bounds for array of dimension ${m}`);const I=new Float64Array(t.size),w=u[R],v=Array.from(u).filter((r,e)=>e!==R),D=v.length===0?1:v.reduce((r,e)=>r*e,1),{baseOffsets:g,axisStride:y}=P(u,h,S,R,D),d=k(u),{baseOffsets:c,axisStride:n}=P(u,d,0,R,D);for(let r=0;r<D;r++){let e=g[r],o=c[r],i=1;for(let a=0;a<w;a++)i*=Number(b[e]),I[o]=i,e+=y,o+=n}return O.fromData(I,[...u],"float64")}function ce(t,x,z=!1){const u=t.dtype;if(U(u)){const v=Y(t,x,z),D=Z(t,x,z);if(v instanceof Q&&D instanceof Q)return new Q(v.re-D.re,v.im-D.im);const g=v,y=D,d=g.data,c=y.data,n=new Float64Array(g.size*2);for(let r=0;r<g.size;r++)n[r*2]=d[r*2]-c[r*2],n[r*2+1]=d[r*2+1]-c[r*2+1];return O.fromData(n,[...g.shape],u)}const m=Y(t,x,z),b=Z(t,x,z);if(typeof m=="number"&&typeof b=="number"){const v=m-b;if(u==="int8"||u==="int16"||u==="int32"||u==="uint8"||u==="uint16"||u==="uint32"){const D=O.zeros([1],u);return D.iset(0,v),Number(D.iget(0))}return v}const S=m,h=b,A=S.data,R=h.data,I=O.zeros([...S.shape],u),w=I.data;for(let v=0;v<S.size;v++)w[v]=Number(A[v])-Number(R[v]);return I}function qt(t,x,z=!1){return et(t,.5,x,z)}function me(t,x,z,u=!1){return et(t,x/100,z,u)}function et(t,x,z,u=!1){if(ot(t.dtype,"quantile","Complex numbers are not orderable."),x<0||x>1)throw new Error("Quantile must be between 0 and 1");const m=t.shape,b=m.length,S=t.data,h=t.offset,A=t.strides;if(z===void 0){const c=Ot(t,x);if(c!==null)return c;const n=[];if(t.isCContiguous)for(let p=0;p<t.size;p++)n.push(Number(S[h+p]));else for(let p=0;p<t.size;p++)n.push(Number(t.iget(p)));n.sort((p,f)=>p-f);const e=n.length,o=x*(e-1),i=Math.floor(o),a=Math.ceil(o);if(i===a)return n[i];const s=o-i;return n[i]*(1-s)+n[a]*s}let R=z;if(R<0&&(R=b+R),R<0||R>=b)throw new Error(`axis ${z} is out of bounds for array of dimension ${b}`);const I=Array.from(m).filter((c,n)=>n!==R);if(I.length===0){const c=et(t,x);if(!u)return c;const n=O.zeros(Array(b).fill(1),"float64");return n.iset(0,c),n}const w=I.reduce((c,n)=>c*n,1),v=m[R],D=new Float64Array(w),{baseOffsets:g,axisStride:y}=P(m,A,h,R,w);for(let c=0;c<w;c++){const n=[];let r=g[c];for(let s=0;s<v;s++)n.push(Number(S[r])),r+=y;n.sort((s,p)=>s-p);const e=n.length,o=x*(e-1),i=Math.floor(o),a=Math.ceil(o);if(i===a)D[c]=n[i];else{const s=o-i;D[c]=n[i]*(1-s)+n[a]*s}}const d=O.fromData(D,I,"float64");if(u){const c=[...m];return c[R]=1,O.fromData(D,c,"float64")}return d}function ct(t,x,z,u=!1){const m=t.dtype,b=t.shape,S=b.length,h=t.data,A=t.offset,R=t.strides;if(z===void 0)return nt(t,x,u);if(U(m)){const e=h,o=z.data,i=z.offset;if(x===void 0){let F=0,$=0,E=0;if(t.isCContiguous)for(let _=0;_<t.size;_++){const V=Number(o[i+_%z.size]),M=e[(A+_)*2],K=e[(A+_)*2+1];F+=M*V,$+=K*V,E+=V}else for(let _=0;_<t.size;_++){const V=Number(o[i+_%z.size]),M=t.iget(_);F+=M.re*V,$+=M.im*V,E+=V}return E===0?new Q(NaN,NaN):new Q(F/E,$/E)}let a=x;if(a<0&&(a=S+a),a<0||a>=S)throw new Error(`axis ${x} is out of bounds for array of dimension ${S}`);const s=Array.from(b).filter((F,$)=>$!==a);if(s.length===0){const F=ct(t,void 0,z);return u?j(F,S,m):F}const p=s.reduce((F,$)=>F*$,1),f=b[a],l=O.zeros(s,m),N=l.data,{baseOffsets:C,axisStride:B}=P(b,R,A,a,p);for(let F=0;F<p;F++){let $=0,E=0,T=0,_=C[F];for(let V=0;V<f;V++){const M=Number(o[i+V%z.size]),K=e[_*2],G=e[_*2+1];$+=K*M,E+=G*M,T+=M,_+=B}T===0?(N[F*2]=NaN,N[F*2+1]=NaN):(N[F*2]=$/T,N[F*2+1]=E/T)}if(u){const F=[...b];return F[a]=1,O.fromData(N,F,m)}return l}const I=z.offset;if(x===void 0){let e=0,o=0;const i=z.data;if(t.isCContiguous)for(let s=0;s<t.size;s++){const p=Number(i[I+s%z.size]);e+=Number(h[A+s])*p,o+=p}else for(let s=0;s<t.size;s++){const p=Number(i[I+s%z.size]);e+=Number(t.iget(s))*p,o+=p}return o===0?NaN:e/o}let w=x;if(w<0&&(w=S+w),w<0||w>=S)throw new Error(`axis ${x} is out of bounds for array of dimension ${S}`);const v=Array.from(b).filter((e,o)=>o!==w);if(v.length===0){const e=ct(t,void 0,z);return u?j(e,S,"float64"):e}const D=v.reduce((e,o)=>e*o,1),g=b[w],y=z.data,d=new Float64Array(D),{baseOffsets:c,axisStride:n}=P(b,R,A,w,D);for(let e=0;e<D;e++){let o=0,i=0,a=c[e];for(let s=0;s<g;s++){const p=Number(y[I+s%z.size]);o+=Number(h[a])*p,i+=p,a+=n}d[e]=i===0?NaN:o/i}const r=O.fromData(d,v,"float64");if(u){const e=[...b];return e[w]=1,O.fromData(d,e,"float64")}return r}function q(t,x){return isNaN(t)||isNaN(x)}function Wt(t,x,z=!1){const u=t.dtype,m=U(u),b=t.shape,S=b.length,h=t.data,A=t.offset,R=t.strides;if(!m&&!H(u))return tt(t,x,z);if(x===void 0){const n=Rt(t);if(n!==null)return n;if(m){const o=h;let i=0,a=0;if(t.isCContiguous)for(let p=0;p<t.size;p++){const f=o[(A+p)*2],l=o[(A+p)*2+1];q(f,l)||(i+=f,a+=l)}else for(let p=0;p<t.size;p++){const f=t.iget(p),l=f.re,N=f.im;q(l,N)||(i+=l,a+=N)}return new Q(i,a)}let r=0;if(t.isCContiguous)for(let o=0;o<t.size;o++){const i=Number(h[A+o]);isNaN(i)||(r+=i)}else for(let o=0;o<t.size;o++){const i=Number(t.iget(o));isNaN(i)||(r+=i)}return r}let I=x;if(I<0&&(I=S+I),I<0||I>=S)throw new Error(`axis ${x} is out of bounds for array of dimension ${S}`);const w=Array.from(b).filter((n,r)=>r!==I);if(w.length===0){const n=Wt(t);return z?j(n,S,u):n}const v=w.reduce((n,r)=>n*r,1),D=b[I],{baseOffsets:g,axisStride:y}=P(b,R,A,I,v);if(m){const n=h,r=new Float64Array(v*2);for(let e=0;e<v;e++){let o=0,i=0,a=g[e];for(let s=0;s<D;s++){const p=n[a*2],f=n[a*2+1];q(p,f)||(o+=p,i+=f),a+=y}r[e*2]=o,r[e*2+1]=i}if(z){const e=[...b];return e[I]=1,O.fromData(r,e,u)}return O.fromData(r,w,u)}const d=new Float64Array(v);for(let n=0;n<v;n++){let r=0,e=g[n];for(let o=0;o<D;o++){const i=Number(h[e]);isNaN(i)||(r+=i),e+=y}d[n]=r}const c=O.fromData(d,w,"float64");if(z){const n=[...b];return n[I]=1,O.fromData(d,n,"float64")}return c}function Qt(t,x,z=!1){const u=t.dtype,m=U(u);if(!m&&!H(u))return at(t,x,z);const b=t.shape,S=b.length,h=t.data,A=t.offset,R=t.strides;if(x===void 0){if(m){const e=h;let o=1,i=0;if(t.isCContiguous)for(let s=0;s<t.size;s++){const p=e[(A+s)*2],f=e[(A+s)*2+1];if(!q(p,f)){const l=o*p-i*f,N=o*f+i*p;o=l,i=N}}else for(let s=0;s<t.size;s++){const p=t.iget(s),f=p.re,l=p.im;if(!q(f,l)){const N=o*f-i*l,C=o*l+i*f;o=N,i=C}}return new Q(o,i)}let n=1;if(t.isCContiguous)for(let e=0;e<t.size;e++){const o=Number(h[A+e]);isNaN(o)||(n*=o)}else for(let e=0;e<t.size;e++){const o=Number(t.iget(e));isNaN(o)||(n*=o)}return n}let I=x;if(I<0&&(I=S+I),I<0||I>=S)throw new Error(`axis ${x} is out of bounds for array of dimension ${S}`);const w=Array.from(b).filter((n,r)=>r!==I);if(w.length===0){const n=Qt(t);return z?j(n,S,u):n}const v=w.reduce((n,r)=>n*r,1),D=b[I],{baseOffsets:g,axisStride:y}=P(b,R,A,I,v);if(m){const n=h,r=new Float64Array(v*2);for(let e=0;e<v;e++){let o=1,i=0,a=g[e];for(let s=0;s<D;s++){const p=n[a*2],f=n[a*2+1];if(!q(p,f)){const l=o*p-i*f,N=o*f+i*p;o=l,i=N}a+=y}r[e*2]=o,r[e*2+1]=i}if(z){const e=[...b];return e[I]=1,O.fromData(r,e,u)}return O.fromData(r,w,u)}const d=new Float64Array(v);for(let n=0;n<v;n++){let r=1,e=g[n];for(let o=0;o<D;o++){const i=Number(h[e]);isNaN(i)||(r*=i),e+=y}d[n]=r}const c=O.fromData(d,w,"float64");if(z){const n=[...b];return n[I]=1,O.fromData(d,n,"float64")}return c}function Kt(t,x,z=!1){const u=t.dtype,m=U(u);if(!m&&!H(u))return nt(t,x,z);const b=t.shape,S=b.length,h=t.data,A=t.offset,R=t.strides;if(x===void 0){if(m){const o=h;let i=0,a=0,s=0;if(t.isCContiguous)for(let f=0;f<t.size;f++){const l=o[(A+f)*2],N=o[(A+f)*2+1];q(l,N)||(i+=l,a+=N,s++)}else for(let f=0;f<t.size;f++){const l=t.iget(f),N=l.re,C=l.im;q(N,C)||(i+=N,a+=C,s++)}return s===0?new Q(NaN,NaN):new Q(i/s,a/s)}let n=0,r=0;if(t.isCContiguous)for(let o=0;o<t.size;o++){const i=Number(h[A+o]);isNaN(i)||(n+=i,r++)}else for(let o=0;o<t.size;o++){const i=Number(t.iget(o));isNaN(i)||(n+=i,r++)}return r===0?NaN:n/r}let I=x;if(I<0&&(I=S+I),I<0||I>=S)throw new Error(`axis ${x} is out of bounds for array of dimension ${S}`);const w=Array.from(b).filter((n,r)=>r!==I);if(w.length===0){const n=Kt(t);return z?j(n,S,u):n}const v=w.reduce((n,r)=>n*r,1),D=b[I],{baseOffsets:g,axisStride:y}=P(b,R,A,I,v);if(m){const n=h,r=new Float64Array(v*2);for(let e=0;e<v;e++){let o=0,i=0,a=0,s=g[e];for(let p=0;p<D;p++){const f=n[s*2],l=n[s*2+1];q(f,l)||(o+=f,i+=l,a++),s+=y}a===0?(r[e*2]=NaN,r[e*2+1]=NaN):(r[e*2]=o/a,r[e*2+1]=i/a)}if(z){const e=[...b];return e[I]=1,O.fromData(r,e,u)}return O.fromData(r,w,u)}const d=new Float64Array(v);for(let n=0;n<v;n++){let r=0,e=0,o=g[n];for(let i=0;i<D;i++){const a=Number(h[o]);isNaN(a)||(r+=a,e++),o+=y}d[n]=e===0?NaN:r/e}const c=O.fromData(d,w,"float64");if(z){const n=[...b];return n[I]=1,O.fromData(d,n,"float64")}return c}function it(t,x,z=0,u=!1){const m=t.dtype;if(!U(m)&&!H(m))return ut(t,x,z,u);const b=t.shape,S=b.length,h=t.data,A=t.offset,R=t.strides;if(U(m)){const n=h;if(x===void 0){let l=0,N=0,C=0;const B=t.isCContiguous;if(B)for(let T=0;T<t.size;T++){const _=n[(A+T)*2],V=n[(A+T)*2+1];q(_,V)||(l+=_,N+=V,C++)}else for(let T=0;T<t.size;T++){const _=t.iget(T),V=_.re,M=_.im;q(V,M)||(l+=V,N+=M,C++)}if(C-z<=0)return NaN;const F=l/C,$=N/C;let E=0;if(B)for(let T=0;T<t.size;T++){const _=n[(A+T)*2],V=n[(A+T)*2+1];if(!q(_,V)){const M=_-F,K=V-$;E+=M*M+K*K}}else for(let T=0;T<t.size;T++){const _=t.iget(T),V=_.re,M=_.im;if(!q(V,M)){const K=V-F,G=M-$;E+=K*K+G*G}}return E/(C-z)}let r=x;if(r<0&&(r=S+r),r<0||r>=S)throw new Error(`axis ${x} is out of bounds for array of dimension ${S}`);const e=Array.from(b).filter((l,N)=>N!==r);if(e.length===0){const l=it(t,void 0,z);return u?j(l,S,"float64"):l}const o=e.reduce((l,N)=>l*N,1),i=b[r],a=new Float64Array(o),{baseOffsets:s,axisStride:p}=P(b,R,A,r,o);for(let l=0;l<o;l++){let N=0,C=0,B=0,F=s[l];for(let _=0;_<i;_++){const V=n[F*2],M=n[F*2+1];q(V,M)||(N+=V,C+=M,B++),F+=p}if(B-z<=0){a[l]=NaN;continue}const $=N/B,E=C/B;let T=0;F=s[l];for(let _=0;_<i;_++){const V=n[F*2],M=n[F*2+1];if(!q(V,M)){const K=V-$,G=M-E;T+=K*K+G*G}F+=p}a[l]=T/(B-z)}const f=O.fromData(a,e,"float64");if(u){const l=[...b];return l[r]=1,O.fromData(a,l,"float64")}return f}if(x===void 0){let n=0,r=0;const e=t.isCContiguous;if(e)for(let a=0;a<t.size;a++){const s=Number(h[A+a]);isNaN(s)||(n+=s,r++)}else for(let a=0;a<t.size;a++){const s=Number(t.iget(a));isNaN(s)||(n+=s,r++)}if(r-z<=0)return NaN;const o=n/r;let i=0;if(e)for(let a=0;a<t.size;a++){const s=Number(h[A+a]);isNaN(s)||(i+=(s-o)**2)}else for(let a=0;a<t.size;a++){const s=Number(t.iget(a));isNaN(s)||(i+=(s-o)**2)}return i/(r-z)}let I=x;if(I<0&&(I=S+I),I<0||I>=S)throw new Error(`axis ${x} is out of bounds for array of dimension ${S}`);const w=Array.from(b).filter((n,r)=>r!==I);if(w.length===0){const n=it(t,void 0,z);return u?j(n,S,"float64"):n}const v=w.reduce((n,r)=>n*r,1),D=b[I],g=new Float64Array(v),{baseOffsets:y,axisStride:d}=P(b,R,A,I,v);for(let n=0;n<v;n++){let r=0,e=0,o=y[n];for(let s=0;s<D;s++){const p=Number(h[o]);isNaN(p)||(r+=p,e++),o+=d}if(e-z<=0){g[n]=NaN;continue}const i=r/e;let a=0;o=y[n];for(let s=0;s<D;s++){const p=Number(h[o]);isNaN(p)||(a+=(p-i)**2),o+=d}g[n]=a/(e-z)}const c=O.fromData(g,w,"float64");if(u){const n=[...b];return n[I]=1,O.fromData(g,n,"float64")}return c}function de(t,x,z=0,u=!1){const m=it(t,x,z,u);if(typeof m=="number")return Math.sqrt(m);const b=m,S=new Float64Array(b.size);for(let h=0;h<b.size;h++)S[h]=Math.sqrt(Number(b.data[h]));return O.fromData(S,[...b.shape],"float64")}function mt(t,x,z=!1){const u=t.dtype,m=t.shape,b=m.length,S=t.data,h=t.offset,A=t.strides;if(!U(u)&&!H(u))return Z(t,x,z);if(U(u)){const c=S;if(x===void 0){let f=1/0,l=1/0,N=!1;if(t.isCContiguous)for(let B=0;B<t.size;B++){const F=c[(h+B)*2],$=c[(h+B)*2+1];isNaN(F)||isNaN($)||(N?(F<f||F===f&&$<l)&&(f=F,l=$):(f=F,l=$,N=!0))}else for(let B=0;B<t.size;B++){const F=t.iget(B),$=F.re,E=F.im;isNaN($)||isNaN(E)||(N?($<f||$===f&&E<l)&&(f=$,l=E):(f=$,l=E,N=!0))}return N?new Q(f,l):new Q(NaN,NaN)}let n=x;if(n<0&&(n=b+n),n<0||n>=b)throw new Error(`axis ${x} is out of bounds for array of dimension ${b}`);const r=Array.from(m).filter((f,l)=>l!==n);if(r.length===0){const f=mt(t);return z?j(f,b,u):f}const e=r.reduce((f,l)=>f*l,1),o=m[n],i=new Float64Array(e*2),{baseOffsets:a,axisStride:s}=P(m,A,h,n,e);for(let f=0;f<e;f++){let l=1/0,N=1/0,C=!1,B=a[f];for(let F=0;F<o;F++){const $=c[B*2],E=c[B*2+1];B+=s,!(isNaN($)||isNaN(E))&&(C?($<l||$===l&&E<N)&&(l=$,N=E):(l=$,N=E,C=!0))}i[f*2]=C?l:NaN,i[f*2+1]=C?N:NaN}const p=O.fromData(i,r,u);if(z){const f=[...m];return f[n]=1,O.fromData(i,f,u)}return p}if(x===void 0){const c=vt(t);if(c!==null)return c;let n=1/0;if(t.isCContiguous)for(let e=0;e<t.size;e++){const o=Number(S[h+e]);!isNaN(o)&&o<n&&(n=o)}else for(let e=0;e<t.size;e++){const o=Number(t.iget(e));!isNaN(o)&&o<n&&(n=o)}return n===1/0?NaN:n}let R=x;if(R<0&&(R=b+R),R<0||R>=b)throw new Error(`axis ${x} is out of bounds for array of dimension ${b}`);const I=Array.from(m).filter((c,n)=>n!==R);if(I.length===0){const c=mt(t);return z?j(c,b,"float64"):c}const w=I.reduce((c,n)=>c*n,1),v=m[R],D=new Float64Array(w),{baseOffsets:g,axisStride:y}=P(m,A,h,R,w);for(let c=0;c<w;c++){let n=1/0,r=g[c];for(let e=0;e<v;e++){const o=Number(S[r]);!isNaN(o)&&o<n&&(n=o),r+=y}D[c]=n===1/0?NaN:n}const d=O.fromData(D,I,"float64");if(z){const c=[...m];return c[R]=1,O.fromData(D,c,"float64")}return d}function dt(t,x,z=!1){const u=t.dtype,m=t.shape,b=m.length,S=t.data,h=t.offset,A=t.strides;if(!U(u)&&!H(u))return Y(t,x,z);if(U(u)){const c=S;if(x===void 0){let f=-1/0,l=-1/0,N=!1;if(t.isCContiguous)for(let B=0;B<t.size;B++){const F=c[(h+B)*2],$=c[(h+B)*2+1];isNaN(F)||isNaN($)||(N?(F>f||F===f&&$>l)&&(f=F,l=$):(f=F,l=$,N=!0))}else for(let B=0;B<t.size;B++){const F=t.iget(B),$=F.re,E=F.im;isNaN($)||isNaN(E)||(N?($>f||$===f&&E>l)&&(f=$,l=E):(f=$,l=E,N=!0))}return N?new Q(f,l):new Q(NaN,NaN)}let n=x;if(n<0&&(n=b+n),n<0||n>=b)throw new Error(`axis ${x} is out of bounds for array of dimension ${b}`);const r=Array.from(m).filter((f,l)=>l!==n);if(r.length===0){const f=dt(t);return z?j(f,b,u):f}const e=r.reduce((f,l)=>f*l,1),o=m[n],i=new Float64Array(e*2),{baseOffsets:a,axisStride:s}=P(m,A,h,n,e);for(let f=0;f<e;f++){let l=-1/0,N=-1/0,C=!1,B=a[f];for(let F=0;F<o;F++){const $=c[B*2],E=c[B*2+1];B+=s,!(isNaN($)||isNaN(E))&&(C?($>l||$===l&&E>N)&&(l=$,N=E):(l=$,N=E,C=!0))}i[f*2]=C?l:NaN,i[f*2+1]=C?N:NaN}const p=O.fromData(i,r,u);if(z){const f=[...m];return f[n]=1,O.fromData(i,f,u)}return p}if(x===void 0){const c=$t(t);if(c!==null)return c;let n=-1/0;if(t.isCContiguous)for(let e=0;e<t.size;e++){const o=Number(S[h+e]);!isNaN(o)&&o>n&&(n=o)}else for(let e=0;e<t.size;e++){const o=Number(t.iget(e));!isNaN(o)&&o>n&&(n=o)}return n===-1/0?NaN:n}let R=x;if(R<0&&(R=b+R),R<0||R>=b)throw new Error(`axis ${x} is out of bounds for array of dimension ${b}`);const I=Array.from(m).filter((c,n)=>n!==R);if(I.length===0){const c=dt(t);return z?j(c,b,"float64"):c}const w=I.reduce((c,n)=>c*n,1),v=m[R],D=new Float64Array(w),{baseOffsets:g,axisStride:y}=P(m,A,h,R,w);for(let c=0;c<w;c++){let n=-1/0,r=g[c];for(let e=0;e<v;e++){const o=Number(S[r]);!isNaN(o)&&o>n&&(n=o),r+=y}D[c]=n===-1/0?NaN:n}const d=O.fromData(D,I,"float64");if(z){const c=[...m];return c[R]=1,O.fromData(D,c,"float64")}return d}function xt(t,x){const z=t.dtype;if(!U(z)&&!H(z))return ft(t,x);const u=t.shape,m=u.length,b=t.data,S=t.offset,h=t.strides;if(U(z)){const y=b;if(x===void 0){let a=1/0,s=1/0,p=-1;if(t.isCContiguous)for(let l=0;l<t.size;l++){const N=y[(S+l)*2],C=y[(S+l)*2+1];!q(N,C)&&J(N,C,a,s)<0&&(a=N,s=C,p=l)}else for(let l=0;l<t.size;l++){const N=t.iget(l),C=N.re,B=N.im;!q(C,B)&&J(C,B,a,s)<0&&(a=C,s=B,p=l)}return p}let d=x;if(d<0&&(d=m+d),d<0||d>=m)throw new Error(`axis ${x} is out of bounds for array of dimension ${m}`);const c=Array.from(u).filter((a,s)=>s!==d);if(c.length===0)return xt(t);const n=c.reduce((a,s)=>a*s,1),r=u[d],e=new Int32Array(n),{baseOffsets:o,axisStride:i}=P(u,h,S,d,n);for(let a=0;a<n;a++){let s=1/0,p=1/0,f=0,l=o[a];for(let N=0;N<r;N++){const C=y[l*2],B=y[l*2+1];!q(C,B)&&J(C,B,s,p)<0&&(s=C,p=B,f=N),l+=i}e[a]=f}return O.fromData(e,c,"int32")}if(x===void 0){let y=1/0,d=-1;if(t.isCContiguous)for(let n=0;n<t.size;n++){const r=Number(b[S+n]);!isNaN(r)&&r<y&&(y=r,d=n)}else for(let n=0;n<t.size;n++){const r=Number(t.iget(n));!isNaN(r)&&r<y&&(y=r,d=n)}return d}let A=x;if(A<0&&(A=m+A),A<0||A>=m)throw new Error(`axis ${x} is out of bounds for array of dimension ${m}`);const R=Array.from(u).filter((y,d)=>d!==A);if(R.length===0)return xt(t);const I=R.reduce((y,d)=>y*d,1),w=u[A],v=new Int32Array(I),{baseOffsets:D,axisStride:g}=P(u,h,S,A,I);for(let y=0;y<I;y++){let d=1/0,c=0,n=D[y];for(let r=0;r<w;r++){const e=Number(b[n]);!isNaN(e)&&e<d&&(d=e,c=r),n+=g}v[y]=c}return O.fromData(v,R,"int32")}function pt(t,x){const z=t.dtype;if(!U(z)&&!H(z))return lt(t,x);const u=t.shape,m=u.length,b=t.data,S=t.offset,h=t.strides;if(U(z)){const y=b;if(x===void 0){let a=-1/0,s=-1/0,p=-1;if(t.isCContiguous)for(let l=0;l<t.size;l++){const N=y[(S+l)*2],C=y[(S+l)*2+1];!q(N,C)&&J(N,C,a,s)>0&&(a=N,s=C,p=l)}else for(let l=0;l<t.size;l++){const N=t.iget(l),C=N.re,B=N.im;!q(C,B)&&J(C,B,a,s)>0&&(a=C,s=B,p=l)}return p}let d=x;if(d<0&&(d=m+d),d<0||d>=m)throw new Error(`axis ${x} is out of bounds for array of dimension ${m}`);const c=Array.from(u).filter((a,s)=>s!==d);if(c.length===0)return pt(t);const n=c.reduce((a,s)=>a*s,1),r=u[d],e=new Int32Array(n),{baseOffsets:o,axisStride:i}=P(u,h,S,d,n);for(let a=0;a<n;a++){let s=-1/0,p=-1/0,f=0,l=o[a];for(let N=0;N<r;N++){const C=y[l*2],B=y[l*2+1];!q(C,B)&&J(C,B,s,p)>0&&(s=C,p=B,f=N),l+=i}e[a]=f}return O.fromData(e,c,"int32")}if(x===void 0){let y=-1/0,d=-1;if(t.isCContiguous)for(let n=0;n<t.size;n++){const r=Number(b[S+n]);!isNaN(r)&&r>y&&(y=r,d=n)}else for(let n=0;n<t.size;n++){const r=Number(t.iget(n));!isNaN(r)&&r>y&&(y=r,d=n)}return d}let A=x;if(A<0&&(A=m+A),A<0||A>=m)throw new Error(`axis ${x} is out of bounds for array of dimension ${m}`);const R=Array.from(u).filter((y,d)=>d!==A);if(R.length===0)return pt(t);const I=R.reduce((y,d)=>y*d,1),w=u[A],v=new Int32Array(I),{baseOffsets:D,axisStride:g}=P(u,h,S,A,I);for(let y=0;y<I;y++){let d=-1/0,c=0,n=D[y];for(let r=0;r<w;r++){const e=Number(b[n]);!isNaN(e)&&e>d&&(d=e,c=r),n+=g}v[y]=c}return O.fromData(v,R,"int32")}function xe(t,x){const z=t.dtype;if(!U(z)&&!H(z))return Ut(t,x);const u=t.shape,m=u.length,b=t.data,S=t.offset;if(U(z)){const y=b,d=t.size;if(x===void 0){const f=O.zeros([d],z),l=f.data;let N=0,C=0;if(t.isCContiguous)for(let F=0;F<d;F++){const $=y[(S+F)*2],E=y[(S+F)*2+1];q($,E)||(N+=$,C+=E),l[F*2]=N,l[F*2+1]=C}else for(let F=0;F<d;F++){const $=t.iget(F),E=$.re,T=$.im;q(E,T)||(N+=E,C+=T),l[F*2]=N,l[F*2+1]=C}return f}let c=x;if(c<0&&(c=m+c),c<0||c>=m)throw new Error(`axis ${x} is out of bounds for array of dimension ${m}`);const n=O.zeros([...u],z),r=n.data,e=u[c],o=[];let i=1;for(let f=m-1;f>=0;f--)o.unshift(i),i*=u[f];const a=t.size,s=o[c];if(t.isCContiguous)for(let f=0;f<a;f++){const l=y[(S+f)*2],N=y[(S+f)*2+1],C=Math.floor(f/s)%e,B=q(l,N);C===0?(r[f*2]=B?0:l,r[f*2+1]=B?0:N):(r[f*2]=r[(f-s)*2]+(B?0:l),r[f*2+1]=r[(f-s)*2+1]+(B?0:N))}else for(let f=0;f<a;f++){const l=t.iget(f),N=l.re,C=l.im,B=Math.floor(f/s)%e,F=q(N,C);B===0?(r[f*2]=F?0:N,r[f*2+1]=F?0:C):(r[f*2]=r[(f-s)*2]+(F?0:N),r[f*2+1]=r[(f-s)*2+1]+(F?0:C))}return n}if(x===void 0){const y=t.size,d=new Float64Array(y);let c=0;if(t.isCContiguous)for(let r=0;r<y;r++){const e=Number(b[S+r]);isNaN(e)||(c+=e),d[r]=c}else for(let r=0;r<y;r++){const e=Number(t.iget(r));isNaN(e)||(c+=e),d[r]=c}return O.fromData(d,[y],"float64")}let h=x;if(h<0&&(h=m+h),h<0||h>=m)throw new Error(`axis ${x} is out of bounds for array of dimension ${m}`);const A=new Float64Array(t.size),R=u[h],I=[];let w=1;for(let y=m-1;y>=0;y--)I.unshift(w),w*=u[y];const v=t.size,D=I[h];if(t.isCContiguous)for(let y=0;y<v;y++){const d=Number(b[S+y]);Math.floor(y/D)%R===0?A[y]=isNaN(d)?0:d:A[y]=A[y-D]+(isNaN(d)?0:d)}else for(let y=0;y<v;y++){const d=Number(t.iget(y));Math.floor(y/D)%R===0?A[y]=isNaN(d)?0:d:A[y]=A[y-D]+(isNaN(d)?0:d)}return O.fromData(A,[...u],"float64")}function pe(t,x){const z=t.dtype;if(!U(z)&&!H(z))return Pt(t,x);const u=t.shape,m=u.length,b=t.data,S=t.offset;if(U(z)){const y=b,d=t.size;if(x===void 0){const f=O.zeros([d],z),l=f.data;let N=1,C=0;if(t.isCContiguous)for(let F=0;F<d;F++){const $=y[(S+F)*2],E=y[(S+F)*2+1];if(!q($,E)){const T=N*$-C*E,_=N*E+C*$;N=T,C=_}l[F*2]=N,l[F*2+1]=C}else for(let F=0;F<d;F++){const $=t.iget(F),E=$.re,T=$.im;if(!q(E,T)){const _=N*E-C*T,V=N*T+C*E;N=_,C=V}l[F*2]=N,l[F*2+1]=C}return f}let c=x;if(c<0&&(c=m+c),c<0||c>=m)throw new Error(`axis ${x} is out of bounds for array of dimension ${m}`);const n=O.zeros([...u],z),r=n.data,e=u[c],o=[];let i=1;for(let f=m-1;f>=0;f--)o.unshift(i),i*=u[f];const a=t.size,s=o[c];if(t.isCContiguous)for(let f=0;f<a;f++){const l=y[(S+f)*2],N=y[(S+f)*2+1],C=Math.floor(f/s)%e,B=q(l,N);if(C===0)r[f*2]=B?1:l,r[f*2+1]=B?0:N;else{const F=r[(f-s)*2],$=r[(f-s)*2+1];B?(r[f*2]=F,r[f*2+1]=$):(r[f*2]=F*l-$*N,r[f*2+1]=F*N+$*l)}}else for(let f=0;f<a;f++){const l=t.iget(f),N=l.re,C=l.im,B=Math.floor(f/s)%e,F=q(N,C);if(B===0)r[f*2]=F?1:N,r[f*2+1]=F?0:C;else{const $=r[(f-s)*2],E=r[(f-s)*2+1];F?(r[f*2]=$,r[f*2+1]=E):(r[f*2]=$*N-E*C,r[f*2+1]=$*C+E*N)}}return n}if(x===void 0){const y=t.size,d=new Float64Array(y);let c=1;if(t.isCContiguous)for(let r=0;r<y;r++){const e=Number(b[S+r]);isNaN(e)||(c*=e),d[r]=c}else for(let r=0;r<y;r++){const e=Number(t.iget(r));isNaN(e)||(c*=e),d[r]=c}return O.fromData(d,[y],"float64")}let h=x;if(h<0&&(h=m+h),h<0||h>=m)throw new Error(`axis ${x} is out of bounds for array of dimension ${m}`);const A=new Float64Array(t.size),R=u[h],I=[];let w=1;for(let y=m-1;y>=0;y--)I.unshift(w),w*=u[y];const v=t.size,D=I[h];if(t.isCContiguous)for(let y=0;y<v;y++){const d=Number(b[S+y]);Math.floor(y/D)%R===0?A[y]=isNaN(d)?1:d:A[y]=A[y-D]*(isNaN(d)?1:d)}else for(let y=0;y<v;y++){const d=Number(t.iget(y));Math.floor(y/D)%R===0?A[y]=isNaN(d)?1:d:A[y]=A[y-D]*(isNaN(d)?1:d)}return O.fromData(A,[...u],"float64")}function jt(t,x,z=!1){if(ot(t.dtype,"nanmedian","Complex numbers are not orderable."),!H(t.dtype))return qt(t,x,z);const u=t.shape,m=u.length,b=t.data,S=t.offset,h=t.strides;if(x===void 0){const d=[];if(t.isCContiguous)for(let e=0;e<t.size;e++){const o=Number(b[S+e]);isNaN(o)||d.push(o)}else for(let e=0;e<t.size;e++){const o=Number(t.iget(e));isNaN(o)||d.push(o)}if(d.length===0)return NaN;d.sort((e,o)=>e-o);const n=d.length,r=Math.floor(n/2);return n%2===0?(d[r-1]+d[r])/2:d[r]}let A=x;if(A<0&&(A=m+A),A<0||A>=m)throw new Error(`axis ${x} is out of bounds for array of dimension ${m}`);const R=Array.from(u).filter((d,c)=>c!==A);if(R.length===0){const d=jt(t);return z?j(d,m,"float64"):d}const I=R.reduce((d,c)=>d*c,1),w=u[A],v=new Float64Array(I),{baseOffsets:D,axisStride:g}=P(u,h,S,A,I);for(let d=0;d<I;d++){const c=[];let n=D[d];for(let o=0;o<w;o++){const i=Number(b[n]);isNaN(i)||c.push(i),n+=g}if(c.length===0){v[d]=NaN;continue}c.sort((o,i)=>o-i);const r=c.length,e=Math.floor(r/2);r%2===0?v[d]=(c[e-1]+c[e])/2:v[d]=c[e]}const y=O.fromData(v,R,"float64");if(z){const d=[...u];return d[A]=1,O.fromData(v,d,"float64")}return y}function yt(t,x,z,u=!1){if(ot(t.dtype,"nanquantile","Complex numbers are not orderable."),!H(t.dtype))return et(t,x,z,u);if(x<0||x>1)throw new Error("Quantile must be between 0 and 1");const m=t.shape,b=m.length,S=t.data,h=t.offset,A=t.strides;if(z===void 0){const c=[];if(t.isCContiguous)for(let s=0;s<t.size;s++){const p=Number(S[h+s]);isNaN(p)||c.push(p)}else for(let s=0;s<t.size;s++){const p=Number(t.iget(s));isNaN(p)||c.push(p)}if(c.length===0)return NaN;c.sort((s,p)=>s-p);const r=c.length,e=x*(r-1),o=Math.floor(e),i=Math.ceil(e);if(o===i)return c[o];const a=e-o;return c[o]*(1-a)+c[i]*a}let R=z;if(R<0&&(R=b+R),R<0||R>=b)throw new Error(`axis ${z} is out of bounds for array of dimension ${b}`);const I=Array.from(m).filter((c,n)=>n!==R);if(I.length===0){const c=yt(t,x);return u?j(c,b,"float64"):c}const w=I.reduce((c,n)=>c*n,1),v=m[R],D=new Float64Array(w),{baseOffsets:g,axisStride:y}=P(m,A,h,R,w);for(let c=0;c<w;c++){const n=[];let r=g[c];for(let s=0;s<v;s++){const p=Number(S[r]);isNaN(p)||n.push(p),r+=y}if(n.length===0){D[c]=NaN;continue}n.sort((s,p)=>s-p);const e=n.length,o=x*(e-1),i=Math.floor(o),a=Math.ceil(o);if(i===a)D[c]=n[i];else{const s=o-i;D[c]=n[i]*(1-s)+n[a]*s}}const d=O.fromData(D,I,"float64");if(u){const c=[...m];return c[R]=1,O.fromData(D,c,"float64")}return d}function ye(t,x,z,u=!1){return yt(t,x/100,z,u)}export{_t as all,Mt as any,lt as argmax,ft as argmin,ct as average,Pt as cumprod,Ut as cumsum,Y as max,nt as mean,qt as median,Z as min,pt as nanargmax,xt as nanargmin,pe as nancumprod,xe as nancumsum,dt as nanmax,Kt as nanmean,jt as nanmedian,mt as nanmin,ye as nanpercentile,Qt as nanprod,yt as nanquantile,de as nanstd,Wt as nansum,it as nanvar,me as percentile,at as prod,ce as ptp,et as quantile,ue as std,tt as sum,ut as variance};
@@ -1 +1 @@
1
- import{ArrayStorage as v}from"../storage";import{isComplexDType as k}from"../dtype";function R(r,c,t,o){const i=isNaN(r)||isNaN(c),s=isNaN(t)||isNaN(o);return i&&s?0:i?1:s||r<t?-1:r>t?1:c<o?-1:c>o?1:0}function B(r,c,t,o){const i=isNaN(r)||isNaN(c),s=isNaN(t)||isNaN(o);return i&&s?!0:i||s?!1:r===t&&c===o}function F(r,c=!1,t=!1,o=!1){const i=r.dtype,s=r.size,A=r.data,g=r.offset;if(k(i)){const a=A,S=[];for(let n=0;n<s;n++)S.push({re:a[(g+n)*2],im:a[(g+n)*2+1],index:n});S.sort((n,z)=>R(n.re,n.im,z.re,z.im));const p=[],T=[],$=new Array(s),_=[];let I,U,C=0;for(let n=0;n<S.length;n++){const{re:z,im:h,index:Z}=S[n];I===void 0||!B(z,h,I,U)?(I!==void 0&&_.push(C),p.push({re:z,im:h}),T.push(Z),C=1,I=z,U=h):C++}C>0&&_.push(C);const M=new Map;let K=-1;for(let n=0;n<p.length;n++){const{re:z,im:h}=p[n];isNaN(z)||isNaN(h)?K=n:M.set(`${z},${h}`,n)}for(let n=0;n<s;n++){const z=a[(g+n)*2],h=a[(g+n)*2+1];isNaN(z)||isNaN(h)?$[n]=K:$[n]=M.get(`${z},${h}`)}const j=v.zeros([p.length],i),L=j.data;for(let n=0;n<p.length;n++)L[n*2]=p[n].re,L[n*2+1]=p[n].im;if(!c&&!t&&!o)return j;const V={values:j};if(c){const n=v.zeros([T.length],"int32"),z=n.data;for(let h=0;h<T.length;h++)z[h]=T[h];V.indices=n}if(t){const n=v.zeros([$.length],"int32"),z=n.data;for(let h=0;h<$.length;h++)z[h]=$[h];V.inverse=n}if(o){const n=v.zeros([_.length],"int32"),z=n.data;for(let h=0;h<_.length;h++)z[h]=_[h];V.counts=n}return V}const f=[];for(let a=0;a<s;a++)f.push({value:Number(A[g+a]),index:a});f.sort((a,S)=>isNaN(a.value)&&isNaN(S.value)?0:isNaN(a.value)?1:isNaN(S.value)?-1:a.value-S.value);const u=[],l=[],y=new Array(s),N=[];let e,m=0;for(let a=0;a<f.length;a++){const{value:S,index:p}=f[a];e===void 0||isNaN(S)&&!isNaN(e)||!isNaN(S)&&isNaN(e)||!isNaN(S)&&!isNaN(e)&&S!==e?(e!==void 0&&N.push(m),u.push(S),l.push(p),m=1,e=S):m++}m>0&&N.push(m);const d=new Map;let D=-1;for(let a=0;a<u.length;a++){const S=u[a];isNaN(S)?D=a:d.set(S,a)}for(let a=0;a<s;a++){const S=Number(A[g+a]);isNaN(S)?y[a]=D:y[a]=d.get(S)}const x=v.zeros([u.length],i),b=x.data;for(let a=0;a<u.length;a++)b[a]=u[a];if(!c&&!t&&!o)return x;const w={values:x};if(c){const a=v.zeros([l.length],"int32"),S=a.data;for(let p=0;p<l.length;p++)S[p]=l[p];w.indices=a}if(t){const a=v.zeros([y.length],"int32"),S=a.data;for(let p=0;p<y.length;p++)S[p]=y[p];w.inverse=a}if(o){const a=v.zeros([N.length],"int32"),S=a.data;for(let p=0;p<N.length;p++)S[p]=N[p];w.counts=a}return w}function q(r,c,t,o=0){if(t){const i=Number(r[(o+c)*2]),s=Number(r[(o+c)*2+1]);return`${i},${s}`}return String(Number(r[o+c]))}function P(r,c){return G(r,c)}function Q(r,c){const t=r.dtype,o=k(t),i=F(r),s=F(c),A=new Set;for(let l=0;l<s.size;l++)A.add(q(s.data,l,o));const g=[];for(let l=0;l<i.size;l++){const y=q(i.data,l,o);A.has(y)&&g.push(l)}if(o){const l=v.zeros([g.length],t),y=l.data,N=i.data;for(let e=0;e<g.length;e++){const m=g[e];y[e*2]=N[m*2],y[e*2+1]=N[m*2+1]}return l}const f=v.zeros([g.length],t),u=f.data;for(let l=0;l<g.length;l++)u[l]=i.data[g[l]];return f}function G(r,c){const t=Array.from(r.shape),o=r.size,i=k(r.dtype),s=new Set;for(let f=0;f<c.size;f++)s.add(q(c.data,f,i,c.offset));const A=v.zeros(t,"bool"),g=A.data;for(let f=0;f<o;f++){const u=q(r.data,f,i,r.offset);g[f]=s.has(u)?1:0}return A}function W(r,c){const t=r.dtype,o=k(t),i=F(r),s=new Set;for(let u=0;u<c.size;u++)s.add(q(c.data,u,o,c.offset));const A=[];for(let u=0;u<i.size;u++){const l=q(i.data,u,o);s.has(l)||A.push(u)}if(o){const u=v.zeros([A.length],t),l=u.data,y=i.data;for(let N=0;N<A.length;N++){const e=A[N];l[N*2]=y[e*2],l[N*2+1]=y[e*2+1]}return u}const g=v.zeros([A.length],t),f=g.data;for(let u=0;u<A.length;u++)f[u]=i.data[A[u]];return g}function X(r,c){const t=r.dtype,o=k(t),i=F(r),s=F(c),A=new Set,g=new Set;for(let e=0;e<i.size;e++)A.add(q(i.data,e,o));for(let e=0;e<s.size;e++)g.add(q(s.data,e,o));const f=[],u=[];for(let e=0;e<i.size;e++){const m=q(i.data,e,o);g.has(m)||f.push(e)}for(let e=0;e<s.size;e++){const m=q(s.data,e,o);A.has(m)||u.push(e)}if(o){const e=[],m=i.data,d=s.data;for(const b of f)e.push({re:m[b*2],im:m[b*2+1]});for(const b of u)e.push({re:d[b*2],im:d[b*2+1]});e.sort((b,w)=>R(b.re,b.im,w.re,w.im));const D=v.zeros([e.length],t),x=D.data;for(let b=0;b<e.length;b++)x[b*2]=e[b].re,x[b*2+1]=e[b].im;return D}const l=[];for(const e of f)l.push(Number(i.data[e]));for(const e of u)l.push(Number(s.data[e]));l.sort((e,m)=>isNaN(e)&&isNaN(m)?0:isNaN(e)?1:isNaN(m)?-1:e-m);const y=v.zeros([l.length],t),N=y.data;for(let e=0;e<l.length;e++)N[e]=l[e];return y}function Y(r,c){const t=r.dtype,o=k(t),i=F(r),s=F(c),A=new Set,g=[];if(o){const y=i.data,N=s.data;for(let d=0;d<i.size;d++){const D=y[d*2],x=y[d*2+1],b=`${D},${x}`;A.has(b)||(A.add(b),g.push({re:D,im:x}))}for(let d=0;d<s.size;d++){const D=N[d*2],x=N[d*2+1],b=`${D},${x}`;A.has(b)||(A.add(b),g.push({re:D,im:x}))}g.sort((d,D)=>R(d.re,d.im,D.re,D.im));const e=v.zeros([g.length],t),m=e.data;for(let d=0;d<g.length;d++)m[d*2]=g[d].re,m[d*2+1]=g[d].im;return e}const f=[];for(let y=0;y<i.size;y++){const N=Number(i.data[y]),e=String(N);A.has(e)||(A.add(e),f.push(N))}for(let y=0;y<s.size;y++){const N=Number(s.data[y]),e=String(N);A.has(e)||(A.add(e),f.push(N))}f.sort((y,N)=>isNaN(y)&&isNaN(N)?0:isNaN(y)?1:isNaN(N)?-1:y-N);const u=v.zeros([f.length],t),l=u.data;for(let y=0;y<f.length;y++)l[y]=f[y];return u}function E(r,c="fb"){const t=r.dtype,o=r.data,i=r.size,s=r.offset,A=k(t);if(i===0)return v.zeros([0],t);const g=e=>{if(A){const m=o[(s+e)*2],d=o[(s+e)*2+1];return m===0&&d===0}return Number(o[s+e])===0};let f=0;if(c==="f"||c==="fb")for(;f<i&&g(f);)f++;let u=i-1;if(c==="b"||c==="fb")for(;u>=f&&g(u);)u--;if(f>u)return v.zeros([0],t);const l=u-f+1;if(A){const e=v.zeros([l],t),m=e.data;for(let d=0;d<l;d++)m[d*2]=o[(s+f+d)*2],m[d*2+1]=o[(s+f+d)*2+1];return e}const y=v.zeros([l],t),N=y.data;for(let e=0;e<l;e++)N[e]=o[s+f+e];return y}function ee(r){const t=F(r,!0,!0,!0);return{values:t.values,indices:t.indices,inverse_indices:t.inverse,counts:t.counts}}function re(r){const t=F(r,!1,!1,!0);return{values:t.values,counts:t.counts}}function te(r){const t=F(r,!1,!0,!1);return{values:t.values,inverse_indices:t.inverse}}function ae(r){return F(r)}export{P as in1d,Q as intersect1d,G as isin,W as setdiff1d,X as setxor1d,E as trim_zeros,Y as union1d,F as unique,ee as unique_all,re as unique_counts,te as unique_inverse,ae as unique_values};
1
+ import{ArrayStorage as z}from"../storage";import{isComplexDType as U}from"../dtype";function H(r,l,n,u){const o=isNaN(r)||isNaN(l),c=isNaN(n)||isNaN(u);return o&&c?0:o?1:c||r<n?-1:r>n?1:l<u?-1:l>u?1:0}function O(r,l,n,u){const o=isNaN(r)||isNaN(l),c=isNaN(n)||isNaN(u);return o&&c?!0:o||c?!1:r===n&&l===u}function $(r,l=!1,n=!1,u=!1,o){if(o!==void 0){const s=Array.from(r.shape),m=s.length;let A=o<0?m+o:o;if(A<0||A>=m)throw new Error(`unique: axis ${o} out of bounds for array of dimension ${m}`);const B=s[A],C=[];for(let x=0;x<B;x++){const D=[],q=s.filter((t,h)=>h!==A),j=q.reduce((t,h)=>t*h,1);for(let t=0;t<j;t++){let h=t;const N=new Array(q.length);for(let I=q.length-1;I>=0;I--)N[I]=h%q[I],h=Math.floor(h/q[I]);const M=[];let E=0;for(let I=0;I<m;I++)M.push(I===A?x:N[E++]);D.push(Number(r.get(...M)))}C.push(D.join(","))}const V=C.map((x,D)=>({key:x,i:D}));V.sort((x,D)=>x.key<D.key?-1:x.key>D.key?1:0);const T=[];let L;for(const{key:x,i:D}of V)x!==L&&(T.push(D),L=x);const K=s.map((x,D)=>D===A?T.length:x),Z=z.zeros(K,r.dtype);for(let x=0;x<T.length;x++){const D=T[x],q=s.filter((t,h)=>h!==A),j=q.reduce((t,h)=>t*h,1);for(let t=0;t<j;t++){let h=t;const N=new Array(q.length);for(let k=q.length-1;k>=0;k--)N[k]=h%q[k],h=Math.floor(h/q[k]);const M=[],E=[];let I=0;for(let k=0;k<m;k++)M.push(k===A?D:N[I]),E.push(k===A?x:N[I]),k!==A&&I++;Z.set(E,Number(r.get(...M)))}}return Z}const c=r.dtype,g=r.size,S=r.data,i=r.offset;if(U(c)){const s=S,m=[];for(let t=0;t<g;t++)m.push({re:s[(i+t)*2],im:s[(i+t)*2+1],index:t});m.sort((t,h)=>H(t.re,t.im,h.re,h.im));const A=[],B=[],C=new Array(g),V=[];let T,L,K=0;for(let t=0;t<m.length;t++){const{re:h,im:N,index:M}=m[t];T===void 0||!O(h,N,T,L)?(T!==void 0&&V.push(K),A.push({re:h,im:N}),B.push(M),K=1,T=h,L=N):K++}K>0&&V.push(K);const Z=new Map;let x=-1;for(let t=0;t<A.length;t++){const{re:h,im:N}=A[t];isNaN(h)||isNaN(N)?x=t:Z.set(`${h},${N}`,t)}for(let t=0;t<g;t++){const h=s[(i+t)*2],N=s[(i+t)*2+1];isNaN(h)||isNaN(N)?C[t]=x:C[t]=Z.get(`${h},${N}`)}const D=z.zeros([A.length],c),q=D.data;for(let t=0;t<A.length;t++)q[t*2]=A[t].re,q[t*2+1]=A[t].im;if(!l&&!n&&!u)return D;const j={values:D};if(l){const t=z.zeros([B.length],"int32"),h=t.data;for(let N=0;N<B.length;N++)h[N]=B[N];j.indices=t}if(n){const t=z.zeros([C.length],"int32"),h=t.data;for(let N=0;N<C.length;N++)h[N]=C[N];j.inverse=t}if(u){const t=z.zeros([V.length],"int32"),h=t.data;for(let N=0;N<V.length;N++)h[N]=V[N];j.counts=t}return j}const f=[];for(let s=0;s<g;s++)f.push({value:Number(S[i+s]),index:s});f.sort((s,m)=>isNaN(s.value)&&isNaN(m.value)?0:isNaN(s.value)?1:isNaN(m.value)?-1:s.value-m.value);const a=[],d=[],p=new Array(g),e=[];let b,y=0;for(let s=0;s<f.length;s++){const{value:m,index:A}=f[s];b===void 0||isNaN(m)&&!isNaN(b)||!isNaN(m)&&isNaN(b)||!isNaN(m)&&!isNaN(b)&&m!==b?(b!==void 0&&e.push(y),a.push(m),d.push(A),y=1,b=m):y++}y>0&&e.push(y);const F=new Map;let w=-1;for(let s=0;s<a.length;s++){const m=a[s];isNaN(m)?w=s:F.set(m,s)}for(let s=0;s<g;s++){const m=Number(S[i+s]);isNaN(m)?p[s]=w:p[s]=F.get(m)}const v=z.zeros([a.length],c),R=v.data,J=R instanceof BigInt64Array||R instanceof BigUint64Array;for(let s=0;s<a.length;s++)R[s]=J?BigInt(a[s]):a[s];if(!l&&!n&&!u)return v;const G={values:v};if(l){const s=z.zeros([d.length],"int32"),m=s.data;for(let A=0;A<d.length;A++)m[A]=d[A];G.indices=s}if(n){const s=z.zeros([p.length],"int32"),m=s.data;for(let A=0;A<p.length;A++)m[A]=p[A];G.inverse=s}if(u){const s=z.zeros([e.length],"int32"),m=s.data;for(let A=0;A<e.length;A++)m[A]=e[A];G.counts=s}return G}function _(r,l,n,u=0){if(n){const o=Number(r[(u+l)*2]),c=Number(r[(u+l)*2+1]);return`${o},${c}`}return String(Number(r[u+l]))}function X(r,l){return P(r,l)}function Y(r,l){const n=r.dtype,u=U(n),o=$(r),c=$(l),g=new Set;for(let a=0;a<c.size;a++)g.add(_(c.data,a,u));const S=[];for(let a=0;a<o.size;a++){const d=_(o.data,a,u);g.has(d)&&S.push(a)}if(u){const a=z.zeros([S.length],n),d=a.data,p=o.data;for(let e=0;e<S.length;e++){const b=S[e];d[e*2]=p[b*2],d[e*2+1]=p[b*2+1]}return a}const i=z.zeros([S.length],n),f=i.data;for(let a=0;a<S.length;a++)f[a]=o.data[S[a]];return i}function P(r,l){const n=Array.from(r.shape),u=r.size,o=U(r.dtype),c=new Set;for(let i=0;i<l.size;i++)c.add(_(l.data,i,o,l.offset));const g=z.zeros(n,"bool"),S=g.data;for(let i=0;i<u;i++){const f=_(r.data,i,o,r.offset);S[i]=c.has(f)?1:0}return g}function ee(r,l){const n=r.dtype,u=U(n),o=$(r),c=new Set;for(let f=0;f<l.size;f++)c.add(_(l.data,f,u,l.offset));const g=[];for(let f=0;f<o.size;f++){const a=_(o.data,f,u);c.has(a)||g.push(f)}if(u){const f=z.zeros([g.length],n),a=f.data,d=o.data;for(let p=0;p<g.length;p++){const e=g[p];a[p*2]=d[e*2],a[p*2+1]=d[e*2+1]}return f}const S=z.zeros([g.length],n),i=S.data;for(let f=0;f<g.length;f++)i[f]=o.data[g[f]];return S}function te(r,l){const n=r.dtype,u=U(n),o=$(r),c=$(l),g=new Set,S=new Set;for(let e=0;e<o.size;e++)g.add(_(o.data,e,u));for(let e=0;e<c.size;e++)S.add(_(c.data,e,u));const i=[],f=[];for(let e=0;e<o.size;e++){const b=_(o.data,e,u);S.has(b)||i.push(e)}for(let e=0;e<c.size;e++){const b=_(c.data,e,u);g.has(b)||f.push(e)}if(u){const e=[],b=o.data,y=c.data;for(const v of i)e.push({re:b[v*2],im:b[v*2+1]});for(const v of f)e.push({re:y[v*2],im:y[v*2+1]});e.sort((v,R)=>H(v.re,v.im,R.re,R.im));const F=z.zeros([e.length],n),w=F.data;for(let v=0;v<e.length;v++)w[v*2]=e[v].re,w[v*2+1]=e[v].im;return F}const a=[];for(const e of i)a.push(Number(o.data[e]));for(const e of f)a.push(Number(c.data[e]));a.sort((e,b)=>isNaN(e)&&isNaN(b)?0:isNaN(e)?1:isNaN(b)?-1:e-b);const d=z.zeros([a.length],n),p=d.data;for(let e=0;e<a.length;e++)p[e]=a[e];return d}function re(r,l){const n=r.dtype,u=U(n),o=$(r),c=$(l),g=new Set,S=[];if(u){const d=o.data,p=c.data;for(let y=0;y<o.size;y++){const F=d[y*2],w=d[y*2+1],v=`${F},${w}`;g.has(v)||(g.add(v),S.push({re:F,im:w}))}for(let y=0;y<c.size;y++){const F=p[y*2],w=p[y*2+1],v=`${F},${w}`;g.has(v)||(g.add(v),S.push({re:F,im:w}))}S.sort((y,F)=>H(y.re,y.im,F.re,F.im));const e=z.zeros([S.length],n),b=e.data;for(let y=0;y<S.length;y++)b[y*2]=S[y].re,b[y*2+1]=S[y].im;return e}const i=[];for(let d=0;d<o.size;d++){const p=Number(o.data[d]),e=String(p);g.has(e)||(g.add(e),i.push(p))}for(let d=0;d<c.size;d++){const p=Number(c.data[d]),e=String(p);g.has(e)||(g.add(e),i.push(p))}i.sort((d,p)=>isNaN(d)&&isNaN(p)?0:isNaN(d)?1:isNaN(p)?-1:d-p);const f=z.zeros([i.length],n),a=f.data;for(let d=0;d<i.length;d++)a[d]=i[d];return f}function se(r,l="fb"){const n=r.dtype,u=r.data,o=r.size,c=r.offset,g=U(n);if(o===0)return z.zeros([0],n);const S=e=>{if(g){const b=u[(c+e)*2],y=u[(c+e)*2+1];return b===0&&y===0}return Number(u[c+e])===0};let i=0;if(l==="f"||l==="fb")for(;i<o&&S(i);)i++;let f=o-1;if(l==="b"||l==="fb")for(;f>=i&&S(f);)f--;if(i>f)return z.zeros([0],n);const a=f-i+1;if(g){const e=z.zeros([a],n),b=e.data;for(let y=0;y<a;y++)b[y*2]=u[(c+i+y)*2],b[y*2+1]=u[(c+i+y)*2+1];return e}const d=z.zeros([a],n),p=d.data;for(let e=0;e<a;e++)p[e]=u[c+i+e];return d}function ne(r){const n=$(r,!0,!0,!0);return{values:n.values,indices:n.indices,inverse_indices:n.inverse,counts:n.counts}}function ae(r){const n=$(r,!1,!1,!0);return{values:n.values,counts:n.counts}}function oe(r){const n=$(r,!1,!0,!1);return{values:n.values,inverse_indices:n.inverse}}function ie(r){return $(r)}export{X as in1d,Y as intersect1d,P as isin,ee as setdiff1d,te as setxor1d,se as trim_zeros,re as union1d,$ as unique,ne as unique_all,ae as unique_counts,oe as unique_inverse,ie as unique_values};
@@ -1 +1 @@
1
- import{ArrayStorage as x,computeStrides as T}from"../storage";import{getTypedArrayConstructor as U,isBigIntDType as R}from"../dtype";function C(r,t){const n=r.size,e=r.dtype,o=t.indexOf(-1);let s;if(o!==-1){const i=t.reduce((l,m,y)=>y===o?l:l*m,1),p=n/i;if(!Number.isInteger(p))throw new Error(`cannot reshape array of size ${n} into shape ${JSON.stringify(t)}`);s=t.map((l,m)=>m===o?p:l)}else s=t;if(s.reduce((i,p)=>i*p,1)!==n)throw new Error(`cannot reshape array of size ${n} into shape ${JSON.stringify(s)}`);if(r.isCContiguous){const i=r.data;return x.fromData(i,s,e,T(s),0)}const u=r.copy().data;return x.fromData(u,s,e,T(s),0)}function q(r){const t=r.size,n=r.dtype,e=U(n);if(!e)throw new Error(`Cannot flatten array with dtype ${n}`);if(r.isCContiguous){const a=r.data.slice(r.offset,r.offset+t);return x.fromData(a,[t],n,[1],0)}const o=new e(t),s=R(n);for(let c=0;c<t;c++){const a=r.iget(c);o[c]=a}return x.fromData(o,[t],n,[1],0)}function L(r){const t=r.size,n=r.dtype;if(r.isCContiguous){const e=r.data;return x.fromData(e,[t],n,[1],0)}return q(r)}function N(r,t){const n=r.shape,e=n.length,o=r.strides,s=r.data,c=r.dtype;let a;if(t===void 0)a=Array.from({length:e},(l,m)=>e-1-m);else{if(t.length!==e)throw new Error(`axes must have length ${e}, got ${t.length}`);const l=new Set;for(const m of t){const y=m<0?e+m:m;if(y<0||y>=e)throw new Error(`axis ${m} is out of bounds for array of dimension ${e}`);if(l.has(y))throw new Error("repeated axis in transpose");l.add(y)}a=t.map(m=>m<0?e+m:m)}const u=a.map(l=>n[l]),i=Array.from(o),p=a.map(l=>i[l]);return x.fromData(s,u,c,p,r.offset)}function _(r,t){const n=r.shape,e=n.length,o=r.strides,s=r.data,c=r.dtype;if(t===void 0){const a=[],u=[];for(let i=0;i<e;i++)n[i]!==1&&(a.push(n[i]),u.push(o[i]));return a.length===0&&(a.push(1),u.push(1)),x.fromData(s,a,c,u,r.offset)}else{const a=t<0?e+t:t;if(a<0||a>=e)throw new Error(`axis ${t} is out of bounds for array of dimension ${e}`);if(n[a]!==1)throw new Error(`cannot select an axis which has size not equal to one (axis ${t} has size ${n[a]})`);const u=[],i=[];for(let p=0;p<e;p++)p!==a&&(u.push(n[p]),i.push(o[p]));return x.fromData(s,u,c,i,r.offset)}}function k(r,t){const n=r.shape,e=n.length,o=r.strides,s=r.data,c=r.dtype;let a=t;if(a<0&&(a=e+t+1),a<0||a>e)throw new Error(`axis ${t} is out of bounds for array of dimension ${e+1}`);const u=[...Array.from(n)];u.splice(a,0,1);const i=[...Array.from(o)],p=a<e?o[a]*(n[a]||1):1;return i.splice(a,0,p),x.fromData(s,u,c,i,r.offset)}function Q(r,t,n){const e=r.shape,o=e.length,s=r.strides,c=r.data,a=r.dtype;let u=t<0?o+t:t,i=n<0?o+n:n;if(u<0||u>=o)throw new Error(`axis1 ${t} is out of bounds for array of dimension ${o}`);if(i<0||i>=o)throw new Error(`axis2 ${n} is out of bounds for array of dimension ${o}`);if(u===i)return x.fromData(c,Array.from(e),a,Array.from(s),r.offset);const p=Array.from(e),l=Array.from(s);return[p[u],p[i]]=[p[i],p[u]],[l[u],l[i]]=[l[i],l[u]],x.fromData(c,p,a,l,r.offset)}function F(r,t,n){const e=r.ndim,o=Array.isArray(t)?t:[t],s=Array.isArray(n)?n:[n];if(o.length!==s.length)throw new Error("source and destination must have the same number of elements");const c=o.map(i=>{const p=i<0?e+i:i;if(p<0||p>=e)throw new Error(`source axis ${i} is out of bounds for array of dimension ${e}`);return p}),a=s.map(i=>{const p=i<0?e+i:i;if(p<0||p>=e)throw new Error(`destination axis ${i} is out of bounds for array of dimension ${e}`);return p});if(new Set(c).size!==c.length)throw new Error("repeated axis in source");if(new Set(a).size!==a.length)throw new Error("repeated axis in destination");const u=[];for(let i=0;i<e;i++)c.includes(i)||u.push(i);for(let i=0;i<c.length;i++){const p=a[i];u.splice(p,0,c[i])}return N(r,u)}function v(r,t=0){if(r.length===0)throw new Error("need at least one array to concatenate");if(r.length===1)return r[0].copy();const n=r[0],e=n.ndim,o=n.dtype,s=t<0?e+t:t;if(s<0||s>=e)throw new Error(`axis ${t} is out of bounds for array of dimension ${e}`);for(let y=1;y<r.length;y++){const h=r[y];if(h.ndim!==e)throw new Error("all the input arrays must have same number of dimensions");for(let A=0;A<e;A++)if(A!==s&&h.shape[A]!==n.shape[A])throw new Error("all the input array dimensions except for the concatenation axis must match exactly")}const c=Array.from(n.shape);let a=n.shape[s];for(let y=1;y<r.length;y++)a+=r[y].shape[s];c[s]=a;const u=c.reduce((y,h)=>y*h,1),i=U(o);if(!i)throw new Error(`Cannot concatenate arrays with dtype ${o}`);const p=new i(u),l=T(c);let m=0;for(const y of r){const h=y.shape[s];J(y,p,c,l,s,m,o),m+=h}return x.fromData(p,c,o)}function J(r,t,n,e,o,s,c){const a=r.shape,u=a.length,i=r.size,p=c==="int64"||c==="uint64";if(o===0&&r.isCContiguous&&u>0){const y=s*e[0],h=r.data,A=r.offset,w=A+i;t.set(h.subarray(A,w),y);return}if(o===1&&u===2&&r.isCContiguous){const y=a[0],h=a[1],A=n[1],w=r.data,I=r.offset;for(let f=0;f<y;f++){const d=I+f*h,E=f*A+s;t.set(w.subarray(d,d+h),E)}return}const l=new Array(u).fill(0),m=s*e[o];for(let y=0;y<i;y++){const h=r.iget(y);let A=m;for(let w=0;w<u;w++)A+=l[w]*e[w];t[A]=h;for(let w=u-1;w>=0&&(l[w]++,!(l[w]<a[w]));w--)l[w]=0}}function V(r,t=0){if(r.length===0)throw new Error("need at least one array to stack");const n=r[0],e=n.shape,o=n.ndim,s=t<0?o+1+t:t;if(s<0||s>o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o+1}`);for(let a=1;a<r.length;a++){const u=r[a];if(u.ndim!==o)throw new Error("all input arrays must have the same shape");for(let i=0;i<o;i++)if(u.shape[i]!==e[i])throw new Error("all input arrays must have the same shape")}const c=r.map(a=>k(a,s));return v(c,s)}function j(r){if(r.length===0)throw new Error("need at least one array to stack");const t=r.map(n=>n.ndim===1?C(n,[1,n.shape[0]]):n);return v(t,0)}function P(r){if(r.length===0)throw new Error("need at least one array to stack");return r.every(n=>n.ndim===1)?v(r,0):v(r,1)}function W(r){if(r.length===0)throw new Error("need at least one array to stack");const t=r.map(n=>n.ndim===1?C(k(C(n,[1,n.shape[0]]),2),[1,n.shape[0],1]):n.ndim===2?k(n,2):n);return v(t,2)}function X(r,t,n=0){const e=r.shape,o=e.length,s=n<0?o+n:n;if(s<0||s>=o)throw new Error(`axis ${n} is out of bounds for array of dimension ${o}`);const c=e[s];let a;if(typeof t=="number"){if(c%t!==0)throw new Error("array split does not result in an equal division");const u=c/t;a=[];for(let i=1;i<t;i++)a.push(i*u)}else a=t;return M(r,a,s)}function O(r,t,n=0){const e=r.shape,o=e.length,s=n<0?o+n:n;if(s<0||s>=o)throw new Error(`axis ${n} is out of bounds for array of dimension ${o}`);const c=e[s];let a;if(typeof t=="number"){const u=t,i=Math.floor(c/u),p=c%u;a=[];let l=0;for(let m=0;m<u-1;m++)l+=i+(m<p?1:0),a.push(l)}else a=t;return M(r,a,s)}function M(r,t,n){const e=r.shape,o=e[n],s=[0,...t,o],c=[];for(let a=0;a<s.length-1;a++){const u=s[a],i=s[a+1];if(u>i)throw new Error("split indices must be in ascending order");const p=Array.from(e);p[n]=i-u;const l=r.offset+u*r.strides[n];c.push(x.fromData(r.data,p,r.dtype,Array.from(r.strides),l))}return c}function Y(r,t){if(r.ndim<2)throw new Error("vsplit only works on arrays of 2 or more dimensions");return O(r,t,0)}function Z(r,t){if(r.ndim<1)throw new Error("hsplit only works on arrays of 1 or more dimensions");const n=r.ndim===1?0:1;return O(r,t,n)}function rr(r,t){const n=r.shape,e=n.length,o=r.dtype,s=Array.isArray(t)?t:[t],c=Math.max(e,s.length),a=new Array(c).fill(1),u=new Array(c).fill(1);for(let f=0;f<e;f++)a[c-e+f]=n[f];for(let f=0;f<s.length;f++)u[c-s.length+f]=s[f];const i=a.map((f,d)=>f*u[d]),p=i.reduce((f,d)=>f*d,1),l=U(o);if(!l)throw new Error(`Cannot tile array with dtype ${o}`);const m=new l(p),y=T(i);let h=r;e<c&&(h=C(r,a));const A=o==="int64"||o==="uint64",w=h.strides,I=new Array(c).fill(0);for(let f=0;f<p;f++){let d=h.offset;for(let g=0;g<c;g++){const b=I[g]%a[g];d+=b*w[g]}const E=h.data[d];let z=0;for(let g=0;g<c;g++)z+=I[g]*y[g];m[z]=E;for(let g=c-1;g>=0&&(I[g]++,!(I[g]<i[g]));g--)I[g]=0}return x.fromData(m,i,o)}function tr(r,t,n){const e=r.shape,o=e.length,s=r.dtype,c=r.size;if(n===void 0){const f=c,d=Array.isArray(t)?t:new Array(f).fill(t);if(d.length!==f)throw new Error(`operands could not be broadcast together with shape (${f},) (${d.length},)`);const E=d.reduce((B,S)=>B+S,0),z=U(s);if(!z)throw new Error(`Cannot repeat array with dtype ${s}`);const g=new z(E);let b=0;for(let B=0;B<f;B++){const S=r.iget(B),$=d[B];for(let D=0;D<$;D++)g[b++]=S}return x.fromData(g,[E],s)}const a=n<0?o+n:n;if(a<0||a>=o)throw new Error(`axis ${n} is out of bounds for array of dimension ${o}`);const u=e[a],i=Array.isArray(t)?t:new Array(u).fill(t);if(i.length!==u)throw new Error(`operands could not be broadcast together with shape (${u},) (${i.length},)`);const p=Array.from(e);p[a]=i.reduce((f,d)=>f+d,0);const l=p.reduce((f,d)=>f*d,1),m=U(s);if(!m)throw new Error(`Cannot repeat array with dtype ${s}`);const y=new m(l),h=T(p),A=new Array(o).fill(0),w=s==="int64"||s==="uint64",I=[0];for(let f=0;f<u;f++)I.push(I[f]+i[f]);for(let f=0;f<c;f++){const d=r.iget(f),E=A[a],z=i[E];let g=0;for(let S=0;S<o;S++)S!==a&&(g+=A[S]*h[S]);const b=h[a],B=I[E];for(let S=0;S<z;S++){const $=g+(B+S)*b;y[$]=d}for(let S=o-1;S>=0&&(A[S]++,!(A[S]<e[S]));S--)A[S]=0}return x.fromData(y,p,s)}function nr(r,t){const n=r.shape,e=n.length,o=r.dtype,s=r.size;let c;if(t===void 0)c=new Set(Array.from({length:e},(m,y)=>y));else if(typeof t=="number"){const m=t<0?e+t:t;if(m<0||m>=e)throw new Error(`axis ${t} is out of bounds for array of dimension ${e}`);c=new Set([m])}else c=new Set(t.map(m=>{const y=m<0?e+m:m;if(y<0||y>=e)throw new Error(`axis ${m} is out of bounds for array of dimension ${e}`);return y}));const a=U(o);if(!a)throw new Error(`Cannot flip array with dtype ${o}`);const u=new a(s),i=R(o);if(e===1&&r.isCContiguous){const m=r.data,y=r.offset;for(let h=0;h<s;h++)u[h]=m[y+s-1-h];return x.fromData(u,[...n],o)}if(e===2&&r.isCContiguous){const m=n[0],y=n[1],h=r.data,A=r.offset;if(c.size===2){for(let w=0;w<s;w++)u[w]=h[A+s-1-w];return x.fromData(u,[...n],o)}if(c.size===1){if(c.has(0)){for(let w=0;w<m;w++){const I=A+(m-1-w)*y,f=w*y;for(let d=0;d<y;d++)u[f+d]=h[I+d]}return x.fromData(u,[...n],o)}else if(c.has(1)){for(let w=0;w<m;w++){const I=A+w*y,f=w*y;for(let d=0;d<y;d++)u[f+d]=h[I+y-1-d]}return x.fromData(u,[...n],o)}}}const p=new Array(e),l=new Array(e).fill(0);for(let m=0;m<s;m++){for(let A=0;A<e;A++)p[A]=c.has(A)?n[A]-1-l[A]:l[A];let y=r.offset;for(let A=0;A<e;A++)y+=p[A]*r.strides[A];const h=r.data[y];u[m]=h;for(let A=e-1;A>=0&&(l[A]++,!(l[A]<n[A]));A--)l[A]=0}return x.fromData(u,[...n],o)}function er(r,t=1,n=[0,1]){const e=r.shape,o=e.length,s=r.dtype;if(o<2)throw new Error("Input must be at least 2-D");const c=n[0]<0?o+n[0]:n[0],a=n[1]<0?o+n[1]:n[1];if(c<0||c>=o||a<0||a>=o)throw new Error(`Axes are out of bounds for array of dimension ${o}`);if(c===a)throw new Error("Axes must be different");if(t=(t%4+4)%4,t===0)return r.copy();const u=U(s);if(!u)throw new Error(`Cannot rotate array with dtype ${s}`);const i=[...e];(t===1||t===3)&&([i[c],i[a]]=[i[a],i[c]]);const p=i.reduce((f,d)=>f*d,1),l=new u(p),m=R(s),y=r.data;if(o===2&&c===0&&a===1){const f=e[0],d=e[1];if(t===1){const E=d,z=f;if(m){const g=y,b=l;for(let B=0;B<E;B++){const S=B*z,$=d-1-B;for(let D=0;D<z;D++)b[S+D]=g[D*d+$]}}else{const g=y,b=l;for(let B=0;B<E;B++){const S=B*z,$=d-1-B;for(let D=0;D<z;D++)b[S+D]=g[D*d+$]}}}else if(t===2)if(m){const E=y,z=l;for(let g=0;g<f;g++){const b=g*d,B=(f-1-g)*d;for(let S=0;S<d;S++)z[b+S]=E[B+(d-1-S)]}}else{const E=y,z=l;for(let g=0;g<f;g++){const b=g*d,B=(f-1-g)*d;for(let S=0;S<d;S++)z[b+S]=E[B+(d-1-S)]}}else{const E=d,z=f;if(m){const g=y,b=l;for(let B=0;B<E;B++){const S=B*z;for(let $=0;$<z;$++)b[S+$]=g[(f-1-$)*d+B]}}else{const g=y,b=l;for(let B=0;B<E;B++){const S=B*z;for(let $=0;$<z;$++)b[S+$]=g[(f-1-$)*d+B]}}}return x.fromData(l,i,s)}const h=T(i),A=T(e),w=new Array(o).fill(0),I=new Array(o);for(let f=0;f<r.size;f++){for(let b=0;b<o;b++)I[b]=w[b];let d,E;t===1?(d=e[a]-1-w[a],E=w[c]):t===2?(d=e[c]-1-w[c],E=e[a]-1-w[a],I[c]=d,I[a]=E):(d=w[a],E=e[c]-1-w[c]),t!==2&&(I[c]=d,I[a]=E);let z=0;for(let b=0;b<o;b++)z+=I[b]*h[b];let g=0;for(let b=0;b<o;b++)g+=w[b]*A[b];if(m){const b=y,B=l;B[z]=b[g]}else{const b=y,B=l;B[z]=b[g]}for(let b=o-1;b>=0&&(w[b]++,!(w[b]<e[b]));b--)w[b]=0}return x.fromData(l,i,s)}function or(r,t,n){const e=r.shape,o=e.length,s=r.dtype,c=r.size;if(n===void 0){const h=Array.isArray(t)?t.reduce((d,E)=>d+E,0):t,A=q(r),w=U(s);if(!w)throw new Error(`Cannot roll array with dtype ${s}`);const I=new w(c),f=R(s);for(let d=0;d<c;d++){const E=((d-h)%c+c)%c,z=A.iget(E);I[d]=z}return x.fromData(I,[...e],s)}const a=Array.isArray(t)?t:[t],u=Array.isArray(n)?n:[n];if(a.length!==u.length)throw new Error("shift and axis must have the same length");const i=u.map(h=>{const A=h<0?o+h:h;if(A<0||A>=o)throw new Error(`axis ${h} is out of bounds for array of dimension ${o}`);return A}),p=U(s);if(!p)throw new Error(`Cannot roll array with dtype ${s}`);const l=new p(c),m=R(s),y=new Array(o).fill(0);for(let h=0;h<c;h++){const A=[...y];for(let f=0;f<i.length;f++){const d=i[f],E=e[d],z=a[f];A[d]=((A[d]-z)%E+E)%E}let w=r.offset;for(let f=0;f<o;f++)w+=A[f]*r.strides[f];const I=r.data[w];l[h]=I;for(let f=o-1;f>=0&&(y[f]++,!(y[f]<e[f]));f--)y[f]=0}return x.fromData(l,[...e],s)}function ar(r,t,n=0){const e=r.ndim;let o=t<0?e+t:t;if(o<0||o>=e)throw new Error(`axis ${t} is out of bounds for array of dimension ${e}`);let s=n<0?e+n:n;if(s<0||s>e)throw new Error(`start ${n} is out of bounds`);return o<s&&s--,o===s?x.fromData(r.data,Array.from(r.shape),r.dtype,Array.from(r.strides),r.offset):F(r,o,s)}function sr(r,t){if(r.ndim<3)throw new Error("dsplit only works on arrays of 3 or more dimensions");return O(r,t,2)}function ir(r){if(r.length===0)throw new Error("need at least one array to stack");const t=r.map(n=>n.ndim===1?C(n,[n.shape[0],1]):n);return P(t)}const cr=j;function ur(r,t){const n=r.dtype,e=t.reduce((u,i)=>u*i,1),o=r.size,s=U(n);if(!s)throw new Error(`Cannot resize array with dtype ${n}`);const c=new s(e),a=R(n);for(let u=0;u<e;u++){const i=u%o,p=r.iget(i);c[u]=p}return x.fromData(c,t,n)}function fr(r){return r.map(t=>t.ndim===0?C(t,[1]):t)}function dr(r){return r.map(t=>t.ndim===0?C(t,[1,1]):t.ndim===1?C(t,[1,t.shape[0]]):t)}function yr(r){return r.map(t=>t.ndim===0?C(t,[1,1,1]):t.ndim===1?C(t,[1,t.shape[0],1]):t.ndim===2?C(t,[t.shape[0],t.shape[1],1]):t)}function lr(r,t=0){return v(r,t)}function pr(r,t=0){const n=r.shape,e=n.length,o=t<0?e+t:t;if(o<0||o>=e)throw new Error(`axis ${t} is out of bounds for array of dimension ${e}`);const s=n[o],c=[];for(let a=0;a<s;a++){const u=[];for(let l=0;l<e;l++)l===o?u.push({start:a,stop:a+1,step:1}):u.push({start:0,stop:n[l],step:1});const i=G(r,u),p=_(i,o);c.push(p)}return c}function mr(r,t=1){if(r.length===0)throw new Error("need at least one array to block");return r.length===1?r[0].copy():v(r,-1)}function G(r,t){const n=r.shape,e=r.strides;let o=r.offset;const s=r.dtype,c=r.data,a=[],u=[];for(let i=0;i<n.length;i++){const p=t[i],{start:l,stop:m,step:y}=p,h=Math.ceil((m-l)/y);a.push(h),u.push(e[i]*y),o+=l*e[i]}return x.fromData(c,a,s,u,o)}export{O as arraySplit,fr as atleast1d,dr as atleast2d,yr as atleast3d,mr as block,ir as columnStack,lr as concat,v as concatenate,sr as dsplit,W as dstack,k as expandDims,q as flatten,nr as flip,Z as hsplit,P as hstack,F as moveaxis,L as ravel,tr as repeat,C as reshape,ur as resize,or as roll,ar as rollaxis,er as rot90,cr as rowStack,X as split,_ as squeeze,V as stack,Q as swapaxes,rr as tile,N as transpose,pr as unstack,Y as vsplit,j as vstack};
1
+ import{ArrayStorage as z,computeStrides as T}from"../storage";import{getTypedArrayConstructor as U,isBigIntDType as v,isComplexDType as F}from"../dtype";import{wasmFlip as M}from"../wasm/flip";import{wasmTile2D as q}from"../wasm/tile";import{wasmRoll as j}from"../wasm/roll";import{wasmRot90 as K}from"../wasm/rot90";import{wasmRepeat as P}from"../wasm/repeat";import{parseSlice as N,normalizeSlice as _}from"../slicing";function sr(r,...t){if(t.length===0)return r;if(t.length>r.ndim)throw new Error(`Too many indices for array: array is ${r.ndim}-dimensional, but ${t.length} were indexed`);const n=t.map((f,a)=>{const u=N(f);return _(u,r.shape[a])});for(;n.length<r.ndim;)n.push({start:0,stop:r.shape[n.length],step:1,isIndex:!1});const e=[],s=[];let i=r.offset;for(let f=0;f<n.length;f++){const a=n[f];if(i+=a.start*r.strides[f],a.isIndex)continue;const u=Math.max(0,Math.ceil((a.stop-a.start)/a.step));e.push(u),s.push(r.strides[f]*a.step)}return z.fromData(r.data,e,r.dtype,s,i)}function fr(r,...t){if(t.length===0)return r;if(t.length>r.ndim)throw new Error(`Too many indices for array: array is ${r.ndim}-dimensional, but ${t.length} were indexed`);const n=t.map((f,a)=>{const u=N(f);return _(u,r.shape[a])});for(;n.length<r.ndim;)n.push({start:0,stop:r.shape[n.length],step:1,isIndex:!1});const e=[],s=[];let i=r.offset;for(let f=0;f<n.length;f++){const a=n[f];i+=a.start*r.strides[f];const u=a.isIndex?1:Math.max(0,Math.ceil((a.stop-a.start)/a.step));e.push(u),s.push(r.strides[f]*a.step)}return z.fromData(r.data,e,r.dtype,s,i)}function D(r,t){const n=r.size,e=r.dtype,s=t.indexOf(-1);let i;if(s!==-1){const o=t.reduce((h,y,l)=>l===s?h:h*y,1),m=n/o;if(!Number.isInteger(m))throw new Error(`cannot reshape array of size ${n} into shape ${JSON.stringify(t)}`);i=t.map((h,y)=>y===s?m:h)}else i=t;if(i.reduce((o,m)=>o*m,1)!==n)throw new Error(`cannot reshape array of size ${n} into shape ${JSON.stringify(i)}`);if(r.isCContiguous){const o=r.data;return z.fromData(o,i,e,T(i),0)}const u=r.copy().data;return z.fromData(u,i,e,T(i),0)}function J(r){const t=r.size,n=r.dtype,e=U(n);if(!e)throw new Error(`Cannot flatten array with dtype ${n}`);const s=F(n),i=s?t*2:t;if(r.isCContiguous){const u=r.data,o=s?r.offset*2:r.offset,m=u.slice(o,o+i);return z.fromData(m,[t],n,[1],0)}const f=new e(i),a=v(n);if(s)for(let u=0;u<t;u++){const o=r.iget(u);f[u*2]=o.re,f[u*2+1]=o.im}else for(let u=0;u<t;u++){const o=r.iget(u);f[u]=o}return z.fromData(f,[t],n,[1],0)}function ur(r){const t=r.size,n=r.dtype;if(r.isCContiguous){const e=r.data;return z.fromData(e,[t],n,[1],0)}return J(r)}function G(r,t){const n=r.shape,e=n.length,s=r.strides,i=r.data,f=r.dtype;let a;if(t===void 0)a=Array.from({length:e},(h,y)=>e-1-y);else{if(t.length!==e)throw new Error(`axes must have length ${e}, got ${t.length}`);const h=new Set;for(const y of t){const l=y<0?e+y:y;if(l<0||l>=e)throw new Error(`axis ${y} is out of bounds for array of dimension ${e}`);if(h.has(l))throw new Error("repeated axis in transpose");h.add(l)}a=t.map(y=>y<0?e+y:y)}const u=a.map(h=>n[h]),o=Array.from(s),m=a.map(h=>o[h]);return z.fromData(i,u,f,m,r.offset)}function cr(r,t){const n=r.shape,e=n.length,s=r.strides,i=r.data,f=r.dtype;if(t===void 0){const a=[],u=[];for(let o=0;o<e;o++)n[o]!==1&&(a.push(n[o]),u.push(s[o]));return z.fromData(i,a,f,u,r.offset)}else{const a=t<0?e+t:t;if(a<0||a>=e)throw new Error(`axis ${t} is out of bounds for array of dimension ${e}`);if(n[a]!==1)throw new Error(`cannot select an axis which has size not equal to one (axis ${t} has size ${n[a]})`);const u=[],o=[];for(let m=0;m<e;m++)m!==a&&(u.push(n[m]),o.push(s[m]));return z.fromData(i,u,f,o,r.offset)}}function O(r,t){const n=r.shape,e=n.length,s=r.strides,i=r.data,f=r.dtype;let a=t;if(a<0&&(a=e+t+1),a<0||a>e)throw new Error(`axis ${t} is out of bounds for array of dimension ${e+1}`);const u=[...Array.from(n)];u.splice(a,0,1);const o=[...Array.from(s)],m=a<e?s[a]*(n[a]||1):1;return o.splice(a,0,m),z.fromData(i,u,f,o,r.offset)}function dr(r,t,n){const e=r.shape,s=e.length,i=r.strides,f=r.data,a=r.dtype;let u=t<0?s+t:t,o=n<0?s+n:n;if(u<0||u>=s)throw new Error(`axis1 ${t} is out of bounds for array of dimension ${s}`);if(o<0||o>=s)throw new Error(`axis2 ${n} is out of bounds for array of dimension ${s}`);if(u===o)return z.fromData(f,Array.from(e),a,Array.from(i),r.offset);const m=Array.from(e),h=Array.from(i);return[m[u],m[o]]=[m[o],m[u]],[h[u],h[o]]=[h[o],h[u]],z.fromData(f,m,a,h,r.offset)}function H(r,t,n){const e=r.ndim,s=Array.isArray(t)?t:[t],i=Array.isArray(n)?n:[n];if(s.length!==i.length)throw new Error("source and destination must have the same number of elements");const f=s.map(o=>{const m=o<0?e+o:o;if(m<0||m>=e)throw new Error(`source axis ${o} is out of bounds for array of dimension ${e}`);return m}),a=i.map(o=>{const m=o<0?e+o:o;if(m<0||m>=e)throw new Error(`destination axis ${o} is out of bounds for array of dimension ${e}`);return m});if(new Set(f).size!==f.length)throw new Error("repeated axis in source");if(new Set(a).size!==a.length)throw new Error("repeated axis in destination");const u=[];for(let o=0;o<e;o++)f.includes(o)||u.push(o);for(let o=0;o<f.length;o++){const m=a[o];u.splice(m,0,f[o])}return G(r,u)}function R(r,t=0){if(r.length===0)throw new Error("need at least one array to concatenate");if(r.length===1)return r[0].copy();const n=r[0],e=n.ndim,s=n.dtype,i=t<0?e+t:t;if(i<0||i>=e)throw new Error(`axis ${t} is out of bounds for array of dimension ${e}`);for(let l=1;l<r.length;l++){const p=r[l];if(p.ndim!==e)throw new Error("all the input arrays must have same number of dimensions");for(let A=0;A<e;A++)if(A!==i&&p.shape[A]!==n.shape[A])throw new Error("all the input array dimensions except for the concatenation axis must match exactly")}const f=Array.from(n.shape);let a=n.shape[i];for(let l=1;l<r.length;l++)a+=r[l].shape[i];f[i]=a;const u=f.reduce((l,p)=>l*p,1),o=U(s);if(!o)throw new Error(`Cannot concatenate arrays with dtype ${s}`);const m=new o(u),h=T(f);let y=0;for(const l of r){const p=l.shape[i];Q(l,m,f,h,i,y,s),y+=p}return z.fromData(m,f,s)}function Q(r,t,n,e,s,i,f){const a=r.shape,u=a.length,o=r.size,m=f==="int64"||f==="uint64";if(s===0&&r.isCContiguous&&u>0){const l=i*e[0],p=r.data,A=r.offset,w=A+o;t.set(p.subarray(A,w),l);return}if(s===1&&u===2&&r.isCContiguous){const l=a[0],p=a[1],A=n[1],w=r.data,E=r.offset;for(let c=0;c<l;c++){const d=E+c*p,x=c*A+i;t.set(w.subarray(d,d+p),x)}return}const h=new Array(u).fill(0),y=i*e[s];for(let l=0;l<o;l++){const p=r.iget(l);let A=y;for(let w=0;w<u;w++)A+=h[w]*e[w];t[A]=p;for(let w=u-1;w>=0&&(h[w]++,!(h[w]<a[w]));w--)h[w]=0}}function lr(r,t=0){if(r.length===0)throw new Error("need at least one array to stack");const n=r[0],e=n.shape,s=n.ndim,i=t<0?s+1+t:t;if(i<0||i>s)throw new Error(`axis ${t} is out of bounds for array of dimension ${s+1}`);for(let a=1;a<r.length;a++){const u=r[a];if(u.ndim!==s)throw new Error("all input arrays must have the same shape");for(let o=0;o<s;o++)if(u.shape[o]!==e[o])throw new Error("all input arrays must have the same shape")}const f=r.map(a=>O(a,i));return R(f,i)}function V(r){if(r.length===0)throw new Error("need at least one array to stack");const t=r.map(n=>n.ndim===1?D(n,[1,n.shape[0]]):n);return R(t,0)}function W(r){if(r.length===0)throw new Error("need at least one array to stack");return r.every(n=>n.ndim===1)?R(r,0):R(r,1)}function yr(r){if(r.length===0)throw new Error("need at least one array to stack");const t=r.map(n=>n.ndim===1?D(O(D(n,[1,n.shape[0]]),2),[1,n.shape[0],1]):n.ndim===2?O(n,2):n);return R(t,2)}function pr(r,t,n=0){const e=r.shape,s=e.length,i=n<0?s+n:n;if(i<0||i>=s)throw new Error(`axis ${n} is out of bounds for array of dimension ${s}`);const f=e[i];let a;if(typeof t=="number"){if(f%t!==0)throw new Error("array split does not result in an equal division");const u=f/t;a=[];for(let o=1;o<t;o++)a.push(o*u)}else a=t;return L(r,a,i)}function k(r,t,n=0){const e=r.shape,s=e.length,i=n<0?s+n:n;if(i<0||i>=s)throw new Error(`axis ${n} is out of bounds for array of dimension ${s}`);const f=e[i];let a;if(typeof t=="number"){const u=t,o=Math.floor(f/u),m=f%u;a=[];let h=0;for(let y=0;y<u-1;y++)h+=o+(y<m?1:0),a.push(h)}else a=t;return L(r,a,i)}function L(r,t,n){const e=r.shape,s=e[n],i=[0,...t,s],f=[];for(let a=0;a<i.length-1;a++){const u=i[a],o=i[a+1];if(u>o)throw new Error("split indices must be in ascending order");const m=Array.from(e);m[n]=o-u;const h=r.offset+u*r.strides[n];f.push(z.fromData(r.data,m,r.dtype,Array.from(r.strides),h))}return f}function mr(r,t){if(r.ndim<2)throw new Error("vsplit only works on arrays of 2 or more dimensions");return k(r,t,0)}function hr(r,t){if(r.ndim<1)throw new Error("hsplit only works on arrays of 1 or more dimensions");const n=r.ndim===1?0:1;return k(r,t,n)}function Ar(r,t){const n=r.shape,e=n.length,s=r.dtype,i=Array.isArray(t)?t:[t];if(e===2&&i.length===2&&r.isCContiguous){const c=q(r,i[0],i[1]);if(c)return c}if(e===1&&i.length===1&&r.isCContiguous){const c=q(r,1,i[0]);if(c)return z.fromData(c.data,[r.size*i[0]],r.dtype)}const f=Math.max(e,i.length),a=new Array(f).fill(1),u=new Array(f).fill(1);for(let c=0;c<e;c++)a[f-e+c]=n[c];for(let c=0;c<i.length;c++)u[f-i.length+c]=i[c];const o=a.map((c,d)=>c*u[d]),m=o.reduce((c,d)=>c*d,1),h=U(s);if(!h)throw new Error(`Cannot tile array with dtype ${s}`);const y=new h(m),l=T(o);let p=r;e<f&&(p=D(r,a));const A=s==="int64"||s==="uint64",w=p.strides,E=new Array(f).fill(0);for(let c=0;c<m;c++){let d=p.offset;for(let b=0;b<f;b++){const S=E[b]%a[b];d+=S*w[b]}const x=p.data[d];let I=0;for(let b=0;b<f;b++)I+=E[b]*l[b];y[I]=x;for(let b=f-1;b>=0&&(E[b]++,!(E[b]<o[b]));b--)E[b]=0}return z.fromData(y,o,s)}function wr(r,t,n){const e=r.shape,s=e.length,i=r.dtype,f=r.size;if(n===void 0){if(typeof t=="number"&&r.isCContiguous){const g=P(r,t);if(g)return g}const c=f,d=Array.isArray(t)?t:new Array(c).fill(t);if(d.length!==c)throw new Error(`operands could not be broadcast together with shape (${c},) (${d.length},)`);const x=d.reduce((g,B)=>g+B,0),I=U(i);if(!I)throw new Error(`Cannot repeat array with dtype ${i}`);const b=new I(x);let S=0;for(let g=0;g<c;g++){const B=r.iget(g),C=d[g];for(let $=0;$<C;$++)b[S++]=B}return z.fromData(b,[x],i)}const a=n<0?s+n:n;if(a<0||a>=s)throw new Error(`axis ${n} is out of bounds for array of dimension ${s}`);const u=e[a],o=Array.isArray(t)?t:new Array(u).fill(t);if(o.length!==u)throw new Error(`operands could not be broadcast together with shape (${u},) (${o.length},)`);const m=Array.from(e);m[a]=o.reduce((c,d)=>c+d,0);const h=m.reduce((c,d)=>c*d,1),y=U(i);if(!y)throw new Error(`Cannot repeat array with dtype ${i}`);const l=new y(h),p=T(m),A=new Array(s).fill(0),w=i==="int64"||i==="uint64",E=[0];for(let c=0;c<u;c++)E.push(E[c]+o[c]);for(let c=0;c<f;c++){const d=r.iget(c),x=A[a],I=o[x];let b=0;for(let B=0;B<s;B++)B!==a&&(b+=A[B]*p[B]);const S=p[a],g=E[x];for(let B=0;B<I;B++){const C=b+(g+B)*S;l[C]=d}for(let B=s-1;B>=0&&(A[B]++,!(A[B]<e[B]));B--)A[B]=0}return z.fromData(l,m,i)}function br(r,t){const n=r.shape,e=n.length,s=r.dtype,i=r.size;let f;if(t===void 0)f=new Set(Array.from({length:e},(y,l)=>l));else if(typeof t=="number"){const y=t<0?e+t:t;if(y<0||y>=e)throw new Error(`axis ${t} is out of bounds for array of dimension ${e}`);f=new Set([y])}else f=new Set(t.map(y=>{const l=y<0?e+y:y;if(l<0||l>=e)throw new Error(`axis ${y} is out of bounds for array of dimension ${e}`);return l}));const a=U(s);if(!a)throw new Error(`Cannot flip array with dtype ${s}`);const u=v(s);if(f.size===e&&r.isCContiguous&&!F(s)){const y=M(r);if(y)return y}const o=new a(i);if(e===1&&r.isCContiguous){const y=r.data,l=r.offset;for(let p=0;p<i;p++)o[p]=y[l+i-1-p];return z.fromData(o,[...n],s)}if(e===2&&r.isCContiguous){const y=n[0],l=n[1],p=r.data,A=r.offset;if(f.size===2){for(let w=0;w<i;w++)o[w]=p[A+i-1-w];return z.fromData(o,[...n],s)}if(f.size===1){if(f.has(0)){for(let w=0;w<y;w++){const E=A+(y-1-w)*l,c=w*l;for(let d=0;d<l;d++)o[c+d]=p[E+d]}return z.fromData(o,[...n],s)}else if(f.has(1)){for(let w=0;w<y;w++){const E=A+w*l,c=w*l;for(let d=0;d<l;d++)o[c+d]=p[E+l-1-d]}return z.fromData(o,[...n],s)}}}const m=new Array(e),h=new Array(e).fill(0);for(let y=0;y<i;y++){for(let A=0;A<e;A++)m[A]=f.has(A)?n[A]-1-h[A]:h[A];let l=r.offset;for(let A=0;A<e;A++)l+=m[A]*r.strides[A];const p=r.data[l];o[y]=p;for(let A=e-1;A>=0&&(h[A]++,!(h[A]<n[A]));A--)h[A]=0}return z.fromData(o,[...n],s)}function Sr(r,t=1,n=[0,1]){const e=r.shape,s=e.length,i=r.dtype;if(s<2)throw new Error("Input must be at least 2-D");const f=n[0]<0?s+n[0]:n[0],a=n[1]<0?s+n[1]:n[1];if(f<0||f>=s||a<0||a>=s)throw new Error(`Axes are out of bounds for array of dimension ${s}`);if(f===a)throw new Error("Axes must be different");if(t=(t%4+4)%4,t===0)return r.copy();if(s===2&&f===0&&a===1&&r.isCContiguous){if(t===1){const c=K(r);if(c)return c}else if(t===2){const c=M(r);if(c)return c}}const u=U(i);if(!u)throw new Error(`Cannot rotate array with dtype ${i}`);const o=[...e];(t===1||t===3)&&([o[f],o[a]]=[o[a],o[f]]);const m=o.reduce((c,d)=>c*d,1),h=new u(m),y=v(i),l=r.data;if(s===2&&f===0&&a===1){const c=e[0],d=e[1];if(t===1){const x=d,I=c;if(y){const b=l,S=h;for(let g=0;g<x;g++){const B=g*I,C=d-1-g;for(let $=0;$<I;$++)S[B+$]=b[$*d+C]}}else{const b=l,S=h;for(let g=0;g<x;g++){const B=g*I,C=d-1-g;for(let $=0;$<I;$++)S[B+$]=b[$*d+C]}}}else if(t===2)if(y){const x=l,I=h;for(let b=0;b<c;b++){const S=b*d,g=(c-1-b)*d;for(let B=0;B<d;B++)I[S+B]=x[g+(d-1-B)]}}else{const x=l,I=h;for(let b=0;b<c;b++){const S=b*d,g=(c-1-b)*d;for(let B=0;B<d;B++)I[S+B]=x[g+(d-1-B)]}}else{const x=d,I=c;if(y){const b=l,S=h;for(let g=0;g<x;g++){const B=g*I;for(let C=0;C<I;C++)S[B+C]=b[(c-1-C)*d+g]}}else{const b=l,S=h;for(let g=0;g<x;g++){const B=g*I;for(let C=0;C<I;C++)S[B+C]=b[(c-1-C)*d+g]}}}return z.fromData(h,o,i)}const p=T(o),A=T(e),w=new Array(s).fill(0),E=new Array(s);for(let c=0;c<r.size;c++){for(let S=0;S<s;S++)E[S]=w[S];let d,x;t===1?(d=e[a]-1-w[a],x=w[f]):t===2?(d=e[f]-1-w[f],x=e[a]-1-w[a],E[f]=d,E[a]=x):(d=w[a],x=e[f]-1-w[f]),t!==2&&(E[f]=d,E[a]=x);let I=0;for(let S=0;S<s;S++)I+=E[S]*p[S];let b=0;for(let S=0;S<s;S++)b+=w[S]*A[S];if(y){const S=l,g=h;g[I]=S[b]}else{const S=l,g=h;g[I]=S[b]}for(let S=s-1;S>=0&&(w[S]++,!(w[S]<e[S]));S--)w[S]=0}return z.fromData(h,o,i)}function gr(r,t,n){const e=r.shape,s=e.length,i=r.dtype,f=r.size;if(n===void 0){const p=Array.isArray(t)?t.reduce((d,x)=>d+x,0):t;if(r.isCContiguous){const d=j(r,p);if(d)return d}const A=J(r),w=U(i);if(!w)throw new Error(`Cannot roll array with dtype ${i}`);const E=new w(f),c=v(i);for(let d=0;d<f;d++){const x=((d-p)%f+f)%f,I=A.iget(x);E[d]=I}return z.fromData(E,[...e],i)}const a=Array.isArray(t)?t:[t],u=Array.isArray(n)?n:[n];if(a.length!==u.length)throw new Error("shift and axis must have the same length");const o=u.map(p=>{const A=p<0?s+p:p;if(A<0||A>=s)throw new Error(`axis ${p} is out of bounds for array of dimension ${s}`);return A}),m=U(i);if(!m)throw new Error(`Cannot roll array with dtype ${i}`);const h=new m(f),y=v(i),l=new Array(s).fill(0);for(let p=0;p<f;p++){const A=[...l];for(let c=0;c<o.length;c++){const d=o[c],x=e[d],I=a[c];A[d]=((A[d]-I)%x+x)%x}let w=r.offset;for(let c=0;c<s;c++)w+=A[c]*r.strides[c];const E=r.data[w];h[p]=E;for(let c=s-1;c>=0&&(l[c]++,!(l[c]<e[c]));c--)l[c]=0}return z.fromData(h,[...e],i)}function Br(r,t,n=0){const e=r.ndim;let s=t<0?e+t:t;if(s<0||s>=e)throw new Error(`axis ${t} is out of bounds for array of dimension ${e}`);let i=n<0?e+n:n;if(i<0||i>e)throw new Error(`start ${n} is out of bounds`);return s<i&&i--,s===i?z.fromData(r.data,Array.from(r.shape),r.dtype,Array.from(r.strides),r.offset):H(r,s,i)}function xr(r,t){if(r.ndim<3)throw new Error("dsplit only works on arrays of 3 or more dimensions");return k(r,t,2)}function Er(r){if(r.length===0)throw new Error("need at least one array to stack");const t=r.map(n=>n.ndim===1?D(n,[n.shape[0],1]):n);return W(t)}const Ir=V;function zr(r,t){const n=r.dtype,e=t.reduce((u,o)=>u*o,1),s=r.size,i=U(n);if(!i)throw new Error(`Cannot resize array with dtype ${n}`);const f=new i(e),a=v(n);for(let u=0;u<e;u++){const o=u%s,m=r.iget(o);f[u]=m}return z.fromData(f,t,n)}function Cr(r){return r.map(t=>t.ndim===0?D(t,[1]):t)}function $r(r){return r.map(t=>t.ndim===0?D(t,[1,1]):t.ndim===1?D(t,[1,t.shape[0]]):t)}function Dr(r){return r.map(t=>t.ndim===0?D(t,[1,1,1]):t.ndim===1?D(t,[1,t.shape[0],1]):t.ndim===2?D(t,[t.shape[0],t.shape[1],1]):t)}function Ur(r,t=0){return R(r,t)}function Tr(r,t=0){const n=r.shape,e=n.length,s=t<0?e+t:t;if(s<0||s>=e)throw new Error(`axis ${t} is out of bounds for array of dimension ${e}`);const i=n[s],f=new Array(i),a=r.data,u=r.dtype,o=r.strides,m=r.offset,h=[],y=[];for(let p=0;p<e;p++)p!==s&&(h.push(n[p]),y.push(o[p]));const l=o[s];for(let p=0;p<i;p++)f[p]=z.fromData(a,h,u,y,m+p*l);return f}function Rr(r,t=1){if(r.length===0)throw new Error("need at least one array to block");return r.length===1?r[0].copy():R(r,-1)}export{k as arraySplit,Cr as atleast1d,$r as atleast2d,Dr as atleast3d,Rr as block,Er as columnStack,Ur as concat,R as concatenate,xr as dsplit,yr as dstack,O as expandDims,J as flatten,br as flip,hr as hsplit,W as hstack,H as moveaxis,ur as ravel,wr as repeat,D as reshape,zr as resize,gr as roll,Br as rollaxis,Sr as rot90,Ir as rowStack,sr as slice,fr as sliceKeepDim,pr as split,cr as squeeze,lr as stack,dr as swapaxes,Ar as tile,G as transpose,Tr as unstack,mr as vsplit,V as vstack};
@@ -1 +1 @@
1
- import{ArrayStorage as w}from"../storage";import{isBigIntDType as L,isComplexDType as T}from"../dtype";import{outerIndexToMultiIndex as F,multiIndexToLinear as M,multiIndexToBuffer as E}from"../internal/indexing";function B(t,y,s){if(s){const i=t[y*2],b=t[y*2+1];return i!==0||b!==0}return!!t[y]}function j(t,y,s,i){const b=isNaN(t)||isNaN(y),m=isNaN(s)||isNaN(i);return b&&m?0:b?1:m||t<s?-1:t>s?1:y<i?-1:y>i?1:0}function at(t,y=-1){const s=t.shape,i=s.length,b=t.dtype,m=t.data,f=t.offset,x=t.strides;if(i===0)return t.copy();let u=y;if(u<0&&(u=i+u),u<0||u>=i)throw new Error(`axis ${y} is out of bounds for array of dimension ${i}`);const c=t.copy(),r=c.data,d=s[u],I=Array.from(s).filter((a,l)=>l!==u),p=I.length===0?1:I.reduce((a,l)=>a*l,1);if(T(b)){const a=m,l=r;for(let e=0;e<p;e++){const n=[];for(let o=0;o<d;o++){const h=F(e,u,o,s),g=E(h,x,f);n.push({re:a[g*2],im:a[g*2+1],idx:o})}n.sort((o,h)=>j(o.re,o.im,h.re,h.im));for(let o=0;o<d;o++){const h=F(e,u,o,s),g=M(h,s);l[g*2]=n[o].re,l[g*2+1]=n[o].im}}}else if(L(b)){const a=m,l=r;for(let e=0;e<p;e++){const n=[];for(let o=0;o<d;o++){const h=F(e,u,o,s),g=E(h,x,f);n.push({value:a[g],idx:o})}n.sort((o,h)=>o.value<h.value?-1:o.value>h.value?1:0);for(let o=0;o<d;o++){const h=F(e,u,o,s),g=M(h,s);l[g]=n[o].value}}}else for(let a=0;a<p;a++){const l=[];for(let e=0;e<d;e++){const n=F(a,u,e,s),o=E(n,x,f);l.push(Number(m[o]))}l.sort((e,n)=>isNaN(e)&&isNaN(n)?0:isNaN(e)?1:isNaN(n)?-1:e-n);for(let e=0;e<d;e++){const n=F(a,u,e,s),o=M(n,s);r[o]=l[e]}}return c}function lt(t,y=-1){const s=t.shape,i=s.length,b=t.dtype,m=t.data,f=t.offset,x=t.strides;if(i===0)return w.zeros([0],"int32");let u=y;if(u<0&&(u=i+u),u<0||u>=i)throw new Error(`axis ${y} is out of bounds for array of dimension ${i}`);const c=w.zeros(Array.from(s),"int32"),r=c.data,d=s[u],I=Array.from(s).filter((a,l)=>l!==u),p=I.length===0?1:I.reduce((a,l)=>a*l,1);if(T(b)){const a=m;for(let l=0;l<p;l++){const e=[];for(let n=0;n<d;n++){const o=F(l,u,n,s),h=E(o,x,f);e.push({re:a[h*2],im:a[h*2+1],idx:n})}e.sort((n,o)=>j(n.re,n.im,o.re,o.im));for(let n=0;n<d;n++){const o=F(l,u,n,s),h=M(o,s);r[h]=e[n].idx}}}else if(L(b)){const a=m;for(let l=0;l<p;l++){const e=[];for(let n=0;n<d;n++){const o=F(l,u,n,s),h=E(o,x,f);e.push({value:a[h],idx:n})}e.sort((n,o)=>n.value<o.value?-1:n.value>o.value?1:0);for(let n=0;n<d;n++){const o=F(l,u,n,s),h=M(o,s);r[h]=e[n].idx}}}else for(let a=0;a<p;a++){const l=[];for(let e=0;e<d;e++){const n=F(a,u,e,s),o=E(n,x,f);l.push({value:Number(m[o]),idx:e})}l.sort((e,n)=>isNaN(e.value)&&isNaN(n.value)?0:isNaN(e.value)?1:isNaN(n.value)?-1:e.value-n.value);for(let e=0;e<d;e++){const n=F(a,u,e,s),o=M(n,s);r[o]=l[e].idx}}return c}function ut(t){if(t.length===0)return w.zeros([0],"int32");const s=t[0].size;for(const r of t){if(r.ndim!==1)throw new Error("keys must be 1D arrays");if(r.size!==s)throw new Error("all keys must have the same length")}const i=[];for(let r=0;r<s;r++)i.push(r);const b=t.map(r=>T(r.dtype)),m=t.map(r=>r.isCContiguous),f=t.map(r=>r.data),x=t.map(r=>r.offset);i.sort((r,d)=>{for(let I=t.length-1;I>=0;I--)if(b[I]){let p,a,l,e;if(m[I]){const n=f[I],o=x[I];p=n[(o+r)*2],a=n[(o+r)*2+1],l=n[(o+d)*2],e=n[(o+d)*2+1]}else{const n=t[I].iget(r),o=t[I].iget(d);p=n.re,a=n.im,l=o.re,e=o.im}if(p<l)return-1;if(p>l)return 1;if(a<e)return-1;if(a>e)return 1}else{let p,a;if(m[I]){const l=f[I],e=x[I];p=Number(l[e+r]),a=Number(l[e+d])}else p=Number(t[I].iget(r)),a=Number(t[I].iget(d));if(isNaN(p)&&isNaN(a))continue;if(isNaN(p))return 1;if(isNaN(a)||p<a)return-1;if(p>a)return 1}return 0});const u=w.zeros([s],"int32"),c=u.data;for(let r=0;r<s;r++)c[r]=i[r];return u}function J(t,y){let s=0,i=t.length-1;for(;s<i;){const b=Math.floor((s+i)/2),m=t[s],f=t[b],x=t[i];let u;m<=f&&f<=x||x<=f&&f<=m?u=b:f<=m&&m<=x||x<=m&&m<=f?u=s:u=i;const c=t[u];[t[u],t[i]]=[t[i],t[u]];let r=s;for(let d=s;d<i;d++){const I=t[d],p=isNaN(I),a=isNaN(c);!p&&(a||I<=c)&&([t[r],t[d]]=[t[d],t[r]],r++)}if([t[r],t[i]]=[t[i],t[r]],r===y)return;r<y?s=r+1:i=r-1}}function P(t,y){let s=0,i=t.length-1;for(;s<i;){const b=Math.floor((s+i)/2),m=t[s],f=t[b],x=t[i];let u;m<=f&&f<=x||x<=f&&f<=m?u=b:f<=m&&m<=x||x<=m&&m<=f?u=s:u=i;const c=t[u];[t[u],t[i]]=[t[i],t[u]];let r=s;for(let d=s;d<i;d++)t[d]<=c&&([t[r],t[d]]=[t[d],t[r]],r++);if([t[r],t[i]]=[t[i],t[r]],r===y)return;r<y?s=r+1:i=r-1}}function Q(t,y){let s=0,i=t.length-1;for(;s<i;){const b=Math.floor((s+i)/2),m=t[s].value,f=t[b].value,x=t[i].value;let u;m<=f&&f<=x||x<=f&&f<=m?u=b:f<=m&&m<=x||x<=m&&m<=f?u=s:u=i;const c=t[u].value;[t[u],t[i]]=[t[i],t[u]];let r=s;for(let d=s;d<i;d++){const I=t[d].value,p=isNaN(I),a=isNaN(c);!p&&(a||I<=c)&&([t[r],t[d]]=[t[d],t[r]],r++)}if([t[r],t[i]]=[t[i],t[r]],r===y)return;r<y?s=r+1:i=r-1}}function W(t,y){let s=0,i=t.length-1;for(;s<i;){const b=Math.floor((s+i)/2),m=t[s].value,f=t[b].value,x=t[i].value;let u;m<=f&&f<=x||x<=f&&f<=m?u=b:f<=m&&m<=x||x<=m&&m<=f?u=s:u=i;const c=t[u].value;[t[u],t[i]]=[t[i],t[u]];let r=s;for(let d=s;d<i;d++)t[d].value<=c&&([t[r],t[d]]=[t[d],t[r]],r++);if([t[r],t[i]]=[t[i],t[r]],r===y)return;r<y?s=r+1:i=r-1}}function ct(t,y,s=-1){const i=t.shape,b=i.length,m=t.dtype;if(b===0)return t.copy();let f=s;if(f<0&&(f=b+f),f<0||f>=b)throw new Error(`axis ${s} is out of bounds for array of dimension ${b}`);const x=i[f];let u=y;if(u<0&&(u=x+u),u<0||u>=x)throw new Error(`kth(=${y}) out of bounds (${x})`);const c=t.copy(),r=c.data,d=Array.from(i).filter((p,a)=>a!==f),I=d.length===0?1:d.reduce((p,a)=>p*a,1);if(L(m)){const p=r;for(let a=0;a<I;a++){const l=[];for(let e=0;e<x;e++){const n=F(a,f,e,i),o=M(n,i);l.push(p[o])}P(l,u);for(let e=0;e<x;e++){const n=F(a,f,e,i),o=M(n,i);p[o]=l[e]}}}else for(let p=0;p<I;p++){const a=[];for(let l=0;l<x;l++){const e=F(p,f,l,i),n=M(e,i);a.push(Number(r[n]))}J(a,u);for(let l=0;l<x;l++){const e=F(p,f,l,i),n=M(e,i);r[n]=a[l]}}return c}function ft(t,y,s=-1){const i=t.shape,b=i.length,m=t.dtype,f=t.data,x=t.offset,u=t.strides;if(b===0)return w.zeros([0],"int32");let c=s;if(c<0&&(c=b+c),c<0||c>=b)throw new Error(`axis ${s} is out of bounds for array of dimension ${b}`);const r=i[c];let d=y;if(d<0&&(d=r+d),d<0||d>=r)throw new Error(`kth(=${y}) out of bounds (${r})`);const I=w.zeros(Array.from(i),"int32"),p=I.data,a=Array.from(i).filter((e,n)=>n!==c),l=a.length===0?1:a.reduce((e,n)=>e*n,1);if(L(m)){const e=f;for(let n=0;n<l;n++){const o=[];for(let h=0;h<r;h++){const g=F(n,c,h,i),z=E(g,u,x);o.push({value:e[z],idx:h})}W(o,d);for(let h=0;h<r;h++){const g=F(n,c,h,i),z=M(g,i);p[z]=o[h].idx}}}else for(let e=0;e<l;e++){const n=[];for(let o=0;o<r;o++){const h=F(e,c,o,i),g=E(h,u,x);n.push({value:Number(f[g]),idx:o})}Q(n,d);for(let o=0;o<r;o++){const h=F(e,c,o,i),g=M(h,i);p[g]=n[o].idx}}return I}function dt(t){const y=t.dtype,s=t.size,i=t.isCContiguous,b=t.data,m=t.offset;if(T(y)){const f=[];if(i){const c=b;for(let r=0;r<s;r++)f.push({re:c[(m+r)*2],im:c[(m+r)*2+1]})}else for(let c=0;c<s;c++){const r=t.iget(c);f.push({re:r.re,im:r.im})}f.sort((c,r)=>j(c.re,c.im,r.re,r.im));const x=w.zeros([s],"complex128"),u=x.data;for(let c=0;c<s;c++)u[c*2]=f[c].re,u[c*2+1]=f[c].im;return x}else{const f=[];if(i)for(let c=0;c<s;c++)f.push(Number(b[m+c]));else for(let c=0;c<s;c++)f.push(Number(t.iget(c)));f.sort((c,r)=>isNaN(c)&&isNaN(r)?0:isNaN(c)?1:isNaN(r)?-1:c-r);const x=w.zeros([s],"complex128"),u=x.data;for(let c=0;c<s;c++)u[c*2]=f[c],u[c*2+1]=0;return x}}function k(t){const y=t.shape,s=y.length,i=t.size,b=T(t.dtype),m=t.isCContiguous,f=t.data,x=t.offset,u=[];for(let p=0;p<s;p++)u.push([]);const c=[];let r=1;for(let p=s-1;p>=0;p--)c.unshift(r),r*=y[p];if(m){for(let p=0;p<i;p++)if(B(f,x+p,b)){let a=p;for(let l=0;l<s;l++){const e=Math.floor(a/c[l]);a=a%c[l],u[l].push(e)}}}else for(let p=0;p<i;p++){const a=t.iget(p);if(b?a.re!==0||a.im!==0:!!a){let e=p;for(let n=0;n<s;n++){const o=Math.floor(e/c[n]);e=e%c[n],u[n].push(o)}}}const d=u[0]?.length??0,I=[];for(let p=0;p<s;p++){const a=w.zeros([d],"int32"),l=a.data;for(let e=0;e<d;e++)l[e]=u[p][e];I.push(a)}return I}function mt(t){const y=t.shape,s=y.length,i=t.size,b=T(t.dtype),m=t.isCContiguous,f=t.data,x=t.offset,u=[],c=[];let r=1;for(let l=s-1;l>=0;l--)c.unshift(r),r*=y[l];if(m){for(let l=0;l<i;l++)if(B(f,x+l,b)){const e=[];let n=l;for(let o=0;o<s;o++){const h=Math.floor(n/c[o]);n=n%c[o],e.push(h)}u.push(e)}}else for(let l=0;l<i;l++){const e=t.iget(l);if(b?e.re!==0||e.im!==0:!!e){const o=[];let h=l;for(let g=0;g<s;g++){const z=Math.floor(h/c[g]);h=h%c[g],o.push(z)}u.push(o)}}const d=u.length,I=s===0?[d,1]:[d,s],p=w.zeros(I,"int32"),a=p.data;for(let l=0;l<d;l++){const e=u[l];for(let n=0;n<(s===0?1:s);n++)a[l*(s===0?1:s)+n]=e[n]??0}return p}function pt(t){const y=t.size,s=T(t.dtype),i=t.isCContiguous,b=t.data,m=t.offset,f=[];if(i)for(let c=0;c<y;c++)B(b,m+c,s)&&f.push(c);else for(let c=0;c<y;c++){const r=t.iget(c);(s?r.re!==0||r.im!==0:r)&&f.push(c)}const x=w.zeros([f.length],"int32"),u=x.data;for(let c=0;c<f.length;c++)u[c]=f[c];return x}function yt(t,y,s){if(y===void 0&&s===void 0)return k(t);if(y===void 0||s===void 0)throw new Error("either both or neither of x and y should be given");const i=t.shape,b=y.shape,m=s.shape,f=Math.max(i.length,b.length,m.length),x=A=>{const N=Array(f).fill(1);for(let C=0;C<A.length;C++)N[f-A.length+C]=A[C];return N},u=x(i),c=x(b),r=x(m),d=[];for(let A=0;A<f;A++){const N=[u[A],c[A],r[A]],C=Math.max(...N);for(const v of N)if(v!==1&&v!==C)throw new Error("operands could not be broadcast together");d.push(C)}const I=y.dtype,p=w.zeros(d,I),a=p.data,l=(A,N)=>{const C=[];let v=1;for(let D=A.length-1;D>=0;D--)C.unshift(v),v*=A[D];for(;C.length<N.length;)C.unshift(0);for(let D=0;D<N.length;D++)N[D]===1&&d[D]!==1&&(C[D]=0);return C},e=l(i,u),n=l(b,c),o=l(m,r),h=[];let g=1;for(let A=d.length-1;A>=0;A--)h.unshift(g),g*=d[A];const z=d.reduce((A,N)=>A*N,1),$=T(t.dtype),U=T(I),H=t.isCContiguous,V=t.data,R=t.offset,X=y.isCContiguous,q=y.data,O=y.offset,Y=s.isCContiguous,K=s.data,_=s.offset;if(i.length===d.length&&b.length===d.length&&m.length===d.length&&i.every((A,N)=>A===d[N])&&b.every((A,N)=>A===d[N])&&m.every((A,N)=>A===d[N])&&H&&X&&Y)if(U){const A=a,N=q,C=K;for(let v=0;v<z;v++)B(V,R+v,$)?(A[v*2]=N[(O+v)*2],A[v*2+1]=N[(O+v)*2+1]):(A[v*2]=C[(_+v)*2],A[v*2+1]=C[(_+v)*2+1])}else if(L(I)){const A=a,N=q,C=K;for(let v=0;v<z;v++)B(V,R+v,$)?A[v]=N[O+v]:A[v]=C[_+v]}else for(let A=0;A<z;A++)B(V,R+A,$)?a[A]=q[O+A]:a[A]=K[_+A];else for(let A=0;A<z;A++){let N=A,C=0,v=0,D=0;for(let S=0;S<f;S++){const G=Math.floor(N/h[S]);N=N%h[S],C+=G*e[S],v+=G*n[S],D+=G*o[S]}let Z;if(H)Z=B(V,R+C,$);else{const S=t.iget(C);Z=$?S.re!==0||S.im!==0:!!S}if(Z)if(U)if(X){const S=q;a[A*2]=S[(O+v)*2],a[A*2+1]=S[(O+v)*2+1]}else{const S=y.iget(v);a[A*2]=S.re,a[A*2+1]=S.im}else X?a[A]=q[O+v]:a[A]=y.iget(v);else if(U)if(Y){const S=K;a[A*2]=S[(_+D)*2],a[A*2+1]=S[(_+D)*2+1]}else{const S=s.iget(D);a[A*2]=S.re,a[A*2+1]=S.im}else Y?a[A]=K[_+D]:a[A]=s.iget(D)}return p}function ht(t,y,s="left"){if(t.ndim!==1)throw new Error("storage must be 1D");const i=t.size,b=y.size,m=T(t.dtype),f=t.isCContiguous,x=t.data,u=t.offset,c=y.isCContiguous,r=y.data,d=y.offset,I=w.zeros([b],"int32"),p=I.data;if(m)if(f&&c){const a=x,l=r;for(let e=0;e<b;e++){const n=l[(d+e)*2],o=l[(d+e)*2+1];let h=0,g=i;if(s==="left")for(;h<g;){const z=Math.floor((h+g)/2),$=a[(u+z)*2],U=a[(u+z)*2+1];j($,U,n,o)<0?h=z+1:g=z}else for(;h<g;){const z=Math.floor((h+g)/2),$=a[(u+z)*2],U=a[(u+z)*2+1];j($,U,n,o)<=0?h=z+1:g=z}p[e]=h}}else for(let a=0;a<b;a++){const l=y.iget(a),e=l.re,n=l.im;let o=0,h=i;if(s==="left")for(;o<h;){const g=Math.floor((o+h)/2),z=t.iget(g);j(z.re,z.im,e,n)<0?o=g+1:h=g}else for(;o<h;){const g=Math.floor((o+h)/2),z=t.iget(g);j(z.re,z.im,e,n)<=0?o=g+1:h=g}p[a]=o}else if(f&&c)for(let a=0;a<b;a++){const l=Number(r[d+a]);let e=0,n=i;if(s==="left")for(;e<n;){const o=Math.floor((e+n)/2);Number(x[u+o])<l?e=o+1:n=o}else for(;e<n;){const o=Math.floor((e+n)/2);Number(x[u+o])<=l?e=o+1:n=o}p[a]=e}else for(let a=0;a<b;a++){const l=Number(y.iget(a));let e=0,n=i;if(s==="left")for(;e<n;){const o=Math.floor((e+n)/2);Number(t.iget(o))<l?e=o+1:n=o}else for(;e<n;){const o=Math.floor((e+n)/2);Number(t.iget(o))<=l?e=o+1:n=o}p[a]=e}return I}function xt(t,y){const s=y.dtype,i=T(t.dtype),b=T(s),m=Math.min(t.size,y.size),f=t.isCContiguous,x=t.data,u=t.offset,c=y.isCContiguous,r=y.data,d=y.offset;let I=0;if(f)for(let e=0;e<m;e++)B(x,u+e,i)&&I++;else for(let e=0;e<m;e++){const n=t.iget(e);(i?n.re!==0||n.im!==0:n)&&I++}const p=w.zeros([I],s),a=p.data;let l=0;if(f&&c)if(L(s)){const e=a,n=r;for(let o=0;o<m;o++)B(x,u+o,i)&&(e[l++]=n[d+o])}else if(b){const e=a,n=r;for(let o=0;o<m;o++)B(x,u+o,i)&&(e[l*2]=n[(d+o)*2],e[l*2+1]=n[(d+o)*2+1],l++)}else for(let e=0;e<m;e++)B(x,u+e,i)&&(a[l++]=r[d+e]);else{const e=f?n=>B(x,u+n,i):n=>{const o=t.iget(n);if(i){const h=o;return h.re!==0||h.im!==0}return!!o};if(L(s)){const n=a;for(let o=0;o<m;o++)e(o)&&(n[l++]=y.iget(o))}else if(b){const n=a;for(let o=0;o<m;o++)if(e(o)){const h=y.iget(o);n[l*2]=h.re,n[l*2+1]=h.im,l++}}else for(let n=0;n<m;n++)e(n)&&(a[l++]=y.iget(n))}return p}function tt(t,y){const s=t.shape,i=s.length,b=t.data,m=t.size,f=t.offset,x=t.strides,u=T(t.dtype),c=t.isCContiguous;if(y===void 0){let e=0;if(c)for(let n=0;n<m;n++)B(b,f+n,u)&&e++;else for(let n=0;n<m;n++){const o=t.iget(n);if(u){const h=o;(h.re!==0||h.im!==0)&&e++}else o!==0&&o!==BigInt(0)&&e++}return e}let r=y;if(r<0&&(r=i+r),r<0||r>=i)throw new Error(`axis ${y} is out of bounds for array of dimension ${i}`);const d=Array.from(s).filter((e,n)=>n!==r);if(d.length===0)return tt(t);const I=w.zeros(d,"int32"),p=I.data,a=s[r],l=d.reduce((e,n)=>e*n,1);for(let e=0;e<l;e++){let n=0;for(let o=0;o<a;o++){const h=F(e,r,o,s),g=E(h,x,f);B(b,g,u)&&n++}p[e]=n}return I}export{ft as argpartition,lt as argsort,mt as argwhere,tt as count_nonzero,xt as extract,pt as flatnonzero,ut as lexsort,k as nonzero,ct as partition,ht as searchsorted,at as sort,dt as sort_complex,yt as where};
1
+ import{ArrayStorage as M}from"../storage";import{isBigIntDType as L,isComplexDType as $}from"../dtype";import{computeStrides as V,precomputeAxisOffsets as _}from"../internal/indexing";import{wasmReduceCountNz as Z}from"../wasm/reduce_count_nz";import{wasmSort as G,wasmSortSlices as H}from"../wasm/sort";import{wasmArgsort as J,wasmArgsortSlices as Q}from"../wasm/argsort";import{wasmPartition as k,wasmPartitionSlices as tt}from"../wasm/partition";import{wasmArgpartition as et,wasmArgpartitionSlices as rt}from"../wasm/argpartition";import{wasmSearchsorted as ot}from"../wasm/searchsorted";import{wasmLexsort as st}from"../wasm/lexsort";import{wasmExtract as nt,wasmWhere as it}from"../wasm/gather";function E(t,p,e){if(e){const n=t[p*2],x=t[p*2+1];return n!==0||x!==0}return!!t[p]}function j(t,p,e,n){const x=isNaN(t)||isNaN(p),b=isNaN(e)||isNaN(n);return x&&b?0:x?1:b||t<e?-1:t>e?1:p<n?-1:p>n?1:0}function Ct(t,p=-1){const e=t.shape,n=e.length,x=t.dtype,b=t.data,m=t.offset,I=t.strides;if(n===0)return t.copy();let u=p;if(u<0&&(u=n+u),u<0||u>=n)throw new Error(`axis ${p} is out of bounds for array of dimension ${n}`);const o=t.copy(),i=o.data,s=e[u],v=Array.from(e).filter((r,y)=>y!==u),h=v.length===0?1:v.reduce((r,y)=>r*y,1),{baseOffsets:c,axisStride:d}=_(e,I,m,u,h),f=V(e),{baseOffsets:l,axisStride:a}=_(e,f,0,u,h);if(n===1&&o.isCContiguous){const r=G(o);if(r)return r}if(a===1&&H(i,l,s,h,x))return o;if($(x)){const r=b,y=i;for(let A=0;A<h;A++){const N=[];let S=c[A];for(let w=0;w<s;w++)N.push({re:r[S*2],im:r[S*2+1],idx:w}),S+=d;N.sort((w,T)=>j(w.re,w.im,T.re,T.im));let z=l[A];for(let w=0;w<s;w++)y[z*2]=N[w].re,y[z*2+1]=N[w].im,z+=a}}else if(L(x)){const r=b,y=i;for(let A=0;A<h;A++){const N=[];let S=c[A];for(let w=0;w<s;w++)N.push({value:r[S],idx:w}),S+=d;N.sort((w,T)=>w.value<T.value?-1:w.value>T.value?1:0);let z=l[A];for(let w=0;w<s;w++)y[z]=N[w].value,z+=a}}else for(let r=0;r<h;r++){const y=[];let A=c[r];for(let S=0;S<s;S++)y.push(Number(b[A])),A+=d;y.sort((S,z)=>isNaN(S)&&isNaN(z)?0:isNaN(S)?1:isNaN(z)?-1:S-z);let N=l[r];for(let S=0;S<s;S++)i[N]=y[S],N+=a}return o}function Ft(t,p=-1){const e=t.shape,n=e.length,x=t.dtype,b=t.data,m=t.offset,I=t.strides;if(n===0)return M.zeros([0],"int32");let u=p;if(u<0&&(u=n+u),u<0||u>=n)throw new Error(`axis ${p} is out of bounds for array of dimension ${n}`);const o=M.zeros(Array.from(e),"int32"),i=o.data,s=e[u],v=Array.from(e).filter((r,y)=>y!==u),h=v.length===0?1:v.reduce((r,y)=>r*y,1),{baseOffsets:c,axisStride:d}=_(e,I,m,u,h),f=V(e),{baseOffsets:l,axisStride:a}=_(e,f,0,u,h);if(n===1&&t.isCContiguous){const r=J(t);if(r)return r}if(a===1&&d===1&&Q(b,i,c,l,s,h,x))return o;if($(x)){const r=b;for(let y=0;y<h;y++){const A=[];let N=c[y];for(let z=0;z<s;z++)A.push({re:r[N*2],im:r[N*2+1],idx:z}),N+=d;A.sort((z,w)=>j(z.re,z.im,w.re,w.im));let S=l[y];for(let z=0;z<s;z++)i[S]=A[z].idx,S+=a}}else if(L(x)){const r=b;for(let y=0;y<h;y++){const A=[];let N=c[y];for(let z=0;z<s;z++)A.push({value:r[N],idx:z}),N+=d;A.sort((z,w)=>z.value<w.value?-1:z.value>w.value?1:0);let S=l[y];for(let z=0;z<s;z++)i[S]=A[z].idx,S+=a}}else for(let r=0;r<h;r++){const y=[];let A=c[r];for(let S=0;S<s;S++)y.push({value:Number(b[A]),idx:S}),A+=d;y.sort((S,z)=>isNaN(S.value)&&isNaN(z.value)?0:isNaN(S.value)?1:isNaN(z.value)?-1:S.value-z.value);let N=l[r];for(let S=0;S<s;S++)i[N]=y[S].idx,N+=a}return o}function Dt(t){if(t.length===0)return M.zeros([0],"int32");const e=t[0].size;for(const s of t){if(s.ndim!==1)throw new Error("keys must be 1D arrays");if(s.size!==e)throw new Error("all keys must have the same length")}const n=st(t);if(n)return n;const x=[];for(let s=0;s<e;s++)x.push(s);const b=t.map(s=>$(s.dtype)),m=t.map(s=>s.isCContiguous),I=t.map(s=>s.data),u=t.map(s=>s.offset);x.sort((s,v)=>{for(let h=t.length-1;h>=0;h--)if(b[h]){let c,d,f,l;if(m[h]){const a=I[h],r=u[h];c=a[(r+s)*2],d=a[(r+s)*2+1],f=a[(r+v)*2],l=a[(r+v)*2+1]}else{const a=t[h].iget(s),r=t[h].iget(v);c=a.re,d=a.im,f=r.re,l=r.im}if(c<f)return-1;if(c>f)return 1;if(d<l)return-1;if(d>l)return 1}else{let c,d;if(m[h]){const f=I[h],l=u[h];c=Number(f[l+s]),d=Number(f[l+v])}else c=Number(t[h].iget(s)),d=Number(t[h].iget(v));if(isNaN(c)&&isNaN(d))continue;if(isNaN(c))return 1;if(isNaN(d)||c<d)return-1;if(c>d)return 1}return 0});const o=M.zeros([e],"int32"),i=o.data;for(let s=0;s<e;s++)i[s]=x[s];return o}function at(t,p){let e=0,n=t.length-1;for(;e<n;){const x=Math.floor((e+n)/2),b=t[e],m=t[x],I=t[n];let u;b<=m&&m<=I||I<=m&&m<=b?u=x:m<=b&&b<=I||I<=b&&b<=m?u=e:u=n;const o=t[u];[t[u],t[n]]=[t[n],t[u]];let i=e;for(let s=e;s<n;s++){const v=t[s],h=isNaN(v),c=isNaN(o);!h&&(c||v<=o)&&([t[i],t[s]]=[t[s],t[i]],i++)}if([t[i],t[n]]=[t[n],t[i]],i===p)return;i<p?e=i+1:n=i-1}}function lt(t,p){let e=0,n=t.length-1;for(;e<n;){const x=Math.floor((e+n)/2),b=t[e],m=t[x],I=t[n];let u;b<=m&&m<=I||I<=m&&m<=b?u=x:m<=b&&b<=I||I<=b&&b<=m?u=e:u=n;const o=t[u];[t[u],t[n]]=[t[n],t[u]];let i=e;for(let s=e;s<n;s++)t[s]<=o&&([t[i],t[s]]=[t[s],t[i]],i++);if([t[i],t[n]]=[t[n],t[i]],i===p)return;i<p?e=i+1:n=i-1}}function ut(t,p){let e=0,n=t.length-1;for(;e<n;){const x=Math.floor((e+n)/2),b=t[e].value,m=t[x].value,I=t[n].value;let u;b<=m&&m<=I||I<=m&&m<=b?u=x:m<=b&&b<=I||I<=b&&b<=m?u=e:u=n;const o=t[u].value;[t[u],t[n]]=[t[n],t[u]];let i=e;for(let s=e;s<n;s++){const v=t[s].value,h=isNaN(v),c=isNaN(o);!h&&(c||v<=o)&&([t[i],t[s]]=[t[s],t[i]],i++)}if([t[i],t[n]]=[t[n],t[i]],i===p)return;i<p?e=i+1:n=i-1}}function ft(t,p){let e=0,n=t.length-1;for(;e<n;){const x=Math.floor((e+n)/2),b=t[e].value,m=t[x].value,I=t[n].value;let u;b<=m&&m<=I||I<=m&&m<=b?u=x:m<=b&&b<=I||I<=b&&b<=m?u=e:u=n;const o=t[u].value;[t[u],t[n]]=[t[n],t[u]];let i=e;for(let s=e;s<n;s++)t[s].value<=o&&([t[i],t[s]]=[t[s],t[i]],i++);if([t[i],t[n]]=[t[n],t[i]],i===p)return;i<p?e=i+1:n=i-1}}function Bt(t,p,e=-1){const n=t.shape,x=n.length,b=t.dtype;if(x===0)return t.copy();let m=e;if(m<0&&(m=x+m),m<0||m>=x)throw new Error(`axis ${e} is out of bounds for array of dimension ${x}`);const I=n[m];let u=p;if(u<0&&(u=I+u),u<0||u>=I)throw new Error(`kth(=${p}) out of bounds (${I})`);if(x===1&&t.isCContiguous&&!$(b)){const f=t.copy(),l=k(f,u);if(l)return l}const o=t.copy(),i=o.data,s=Array.from(n).filter((f,l)=>l!==m),v=s.length===0?1:s.reduce((f,l)=>f*l,1),h=V(n),{baseOffsets:c,axisStride:d}=_(n,h,0,m,v);if(d===1&&!$(b)&&tt(i,c,I,v,u,b))return o;if(L(b)){const f=i;for(let l=0;l<v;l++){const a=[];let r=c[l];for(let y=0;y<I;y++)a.push(f[r]),r+=d;lt(a,u),r=c[l];for(let y=0;y<I;y++)f[r]=a[y],r+=d}}else for(let f=0;f<v;f++){const l=[];let a=c[f];for(let r=0;r<I;r++)l.push(Number(i[a])),a+=d;at(l,u),a=c[f];for(let r=0;r<I;r++)i[a]=l[r],a+=d}return o}function Tt(t,p,e=-1){const n=t.shape,x=n.length,b=t.dtype,m=t.data,I=t.offset,u=t.strides;if(x===0)return M.zeros([0],"int32");let o=e;if(o<0&&(o=x+o),o<0||o>=x)throw new Error(`axis ${e} is out of bounds for array of dimension ${x}`);const i=n[o];let s=p;if(s<0&&(s=i+s),s<0||s>=i)throw new Error(`kth(=${p}) out of bounds (${i})`);if(x===1&&t.isCContiguous&&!$(b)){const A=et(t,s);if(A)return A}const v=M.zeros(Array.from(n),"int32"),h=v.data,c=Array.from(n).filter((A,N)=>N!==o),d=c.length===0?1:c.reduce((A,N)=>A*N,1),{baseOffsets:f,axisStride:l}=_(n,u,I,o,d),a=V(n),{baseOffsets:r,axisStride:y}=_(n,a,0,o,d);if(y===1&&l===1&&!$(b)&&rt(m,h,f,r,i,d,s,b))return v;if(L(b)){const A=m;for(let N=0;N<d;N++){const S=[];let z=f[N];for(let T=0;T<i;T++)S.push({value:A[z],idx:T}),z+=l;ft(S,s);let w=r[N];for(let T=0;T<i;T++)h[w]=S[T].idx,w+=y}}else for(let A=0;A<d;A++){const N=[];let S=f[A];for(let w=0;w<i;w++)N.push({value:Number(m[S]),idx:w}),S+=l;ut(N,s);let z=r[A];for(let w=0;w<i;w++)h[z]=N[w].idx,z+=y}return v}function Ot(t){const p=t.dtype,e=t.size,n=t.isCContiguous,x=t.data,b=t.offset;if($(p)){const m=[];if(n){const o=x;for(let i=0;i<e;i++)m.push({re:o[(b+i)*2],im:o[(b+i)*2+1]})}else for(let o=0;o<e;o++){const i=t.iget(o);m.push({re:i.re,im:i.im})}m.sort((o,i)=>j(o.re,o.im,i.re,i.im));const I=M.zeros([e],"complex128"),u=I.data;for(let o=0;o<e;o++)u[o*2]=m[o].re,u[o*2+1]=m[o].im;return I}else{const m=[];if(n)for(let o=0;o<e;o++)m.push(Number(x[b+o]));else for(let o=0;o<e;o++)m.push(Number(t.iget(o)));m.sort((o,i)=>isNaN(o)&&isNaN(i)?0:isNaN(o)?1:isNaN(i)?-1:o-i);const I=M.zeros([e],"complex128"),u=I.data;for(let o=0;o<e;o++)u[o*2]=m[o],u[o*2+1]=0;return I}}function ct(t){const p=t.shape,e=p.length,n=t.size,x=$(t.dtype),b=t.isCContiguous,m=t.data,I=t.offset,u=[];for(let h=0;h<e;h++)u.push([]);const o=[];let i=1;for(let h=e-1;h>=0;h--)o.unshift(i),i*=p[h];if(b&&!x&&e>=1){const h=[];for(let f=0;f<e;f++)h.push(new Int32Array(n));let c=0;for(let f=0;f<n;f++)if(m[I+f]){let l=f;for(let a=0;a<e;a++)h[a][c]=l/o[a]|0,l-=h[a][c]*o[a];c++}const d=[];for(let f=0;f<e;f++){const l=M.zeros([c],"int32");l.data.set(h[f].subarray(0,c)),d.push(l)}return d}if(b){for(let h=0;h<n;h++)if(E(m,I+h,x)){let c=h;for(let d=0;d<e;d++){const f=Math.floor(c/o[d]);c=c%o[d],u[d].push(f)}}}else for(let h=0;h<n;h++){const c=t.iget(h);if(x?c.re!==0||c.im!==0:!!c){let f=h;for(let l=0;l<e;l++){const a=Math.floor(f/o[l]);f=f%o[l],u[l].push(a)}}}const s=u[0]?.length??0,v=[];for(let h=0;h<e;h++){const c=M.zeros([s],"int32"),d=c.data;for(let f=0;f<s;f++)d[f]=u[h][f];v.push(c)}return v}function Mt(t){const p=t.shape,e=p.length,n=t.size,x=$(t.dtype),b=t.isCContiguous,m=t.data,I=t.offset,u=[],o=[];let i=1;for(let d=e-1;d>=0;d--)o.unshift(i),i*=p[d];if(b){for(let d=0;d<n;d++)if(E(m,I+d,x)){const f=[];let l=d;for(let a=0;a<e;a++){const r=Math.floor(l/o[a]);l=l%o[a],f.push(r)}u.push(f)}}else for(let d=0;d<n;d++){const f=t.iget(d);if(x?f.re!==0||f.im!==0:!!f){const a=[];let r=d;for(let y=0;y<e;y++){const A=Math.floor(r/o[y]);r=r%o[y],a.push(A)}u.push(a)}}const s=u.length,v=e===0?[s,1]:[s,e],h=M.zeros(v,"int32"),c=h.data;for(let d=0;d<s;d++){const f=u[d];for(let l=0;l<(e===0?1:e);l++)c[d*(e===0?1:e)+l]=f[l]??0}return h}function $t(t){const p=t.size,e=$(t.dtype),n=t.isCContiguous,x=t.data,b=t.offset;if(n&&!e){const o=new Int32Array(p);let i=0;for(let v=0;v<p;v++)x[b+v]&&(o[i++]=v);const s=M.zeros([i],"int32");return s.data.set(o.subarray(0,i)),s}const m=[];if(n)for(let o=0;o<p;o++)E(x,b+o,e)&&m.push(o);else for(let o=0;o<p;o++){const i=t.iget(o);(e?i.re!==0||i.im!==0:i)&&m.push(o)}const I=M.zeros([m.length],"int32"),u=I.data;for(let o=0;o<m.length;o++)u[o]=m[o];return I}function Et(t,p,e){if(p===void 0&&e===void 0)return ct(t);if(p===void 0||e===void 0)throw new Error("either both or neither of x and y should be given");if(t.size===p.size&&p.size===e.size&&p.dtype===e.dtype&&t.shape.length===p.shape.length&&t.shape.every((g,F)=>g===p.shape[F])&&p.shape.every((g,F)=>g===e.shape[F])){const g=it(t,p,e);if(g)return g}const n=t.shape,x=p.shape,b=e.shape,m=Math.max(n.length,x.length,b.length),I=g=>{const F=Array(m).fill(1);for(let D=0;D<g.length;D++)F[m-g.length+D]=g[D];return F},u=I(n),o=I(x),i=I(b),s=[];for(let g=0;g<m;g++){const F=[u[g],o[g],i[g]],D=Math.max(...F);for(const C of F)if(C!==1&&C!==D)throw new Error("operands could not be broadcast together");s.push(D)}const v=p.dtype,h=M.zeros(s,v),c=h.data,d=(g,F)=>{const D=[];let C=1;for(let O=g.length-1;O>=0;O--)D.unshift(C),C*=g[O];for(;D.length<F.length;)D.unshift(0);for(let O=0;O<F.length;O++)F[O]===1&&s[O]!==1&&(D[O]=0);return D},f=d(n,u),l=d(x,o),a=d(b,i),r=[];let y=1;for(let g=s.length-1;g>=0;g--)r.unshift(y),y*=s[g];const A=s.reduce((g,F)=>g*F,1),N=$(t.dtype),S=$(v),z=t.isCContiguous,w=t.data,T=t.offset,P=p.isCContiguous,q=p.data,R=p.offset,W=e.isCContiguous,K=e.data,U=e.offset;if(n.length===s.length&&x.length===s.length&&b.length===s.length&&n.every((g,F)=>g===s[F])&&x.every((g,F)=>g===s[F])&&b.every((g,F)=>g===s[F])&&z&&P&&W)if(S){const g=c,F=q,D=K;if(N)for(let C=0;C<A;C++)E(w,T+C,!0)?(g[C*2]=F[(R+C)*2],g[C*2+1]=F[(R+C)*2+1]):(g[C*2]=D[(U+C)*2],g[C*2+1]=D[(U+C)*2+1]);else for(let C=0;C<A;C++)w[T+C]?(g[C*2]=F[(R+C)*2],g[C*2+1]=F[(R+C)*2+1]):(g[C*2]=D[(U+C)*2],g[C*2+1]=D[(U+C)*2+1])}else if(L(v)){const g=c,F=q,D=K;for(let C=0;C<A;C++)w[T+C]?g[C]=F[R+C]:g[C]=D[U+C]}else for(let g=0;g<A;g++)w[T+g]?c[g]=q[R+g]:c[g]=K[U+g];else for(let g=0;g<A;g++){let F=g,D=0,C=0,O=0;for(let B=0;B<m;B++){const Y=Math.floor(F/r[B]);F=F%r[B],D+=Y*f[B],C+=Y*l[B],O+=Y*a[B]}let X;if(z)X=E(w,T+D,N);else{const B=t.iget(D);X=N?B.re!==0||B.im!==0:!!B}if(X)if(S)if(P){const B=q;c[g*2]=B[(R+C)*2],c[g*2+1]=B[(R+C)*2+1]}else{const B=p.iget(C);c[g*2]=B.re,c[g*2+1]=B.im}else P?c[g]=q[R+C]:c[g]=p.iget(C);else if(S)if(W){const B=K;c[g*2]=B[(U+O)*2],c[g*2+1]=B[(U+O)*2+1]}else{const B=e.iget(O);c[g*2]=B.re,c[g*2+1]=B.im}else W?c[g]=K[U+O]:c[g]=e.iget(O)}return h}function Rt(t,p,e="left"){if(t.ndim!==1)throw new Error("storage must be 1D");const n=t.size,x=p.size,b=$(t.dtype),m=t.isCContiguous,I=t.data,u=t.offset,o=p.isCContiguous,i=p.data,s=p.offset;if(!b){const c=ot(t,p,e);if(c)return c}const v=M.zeros([x],"int32"),h=v.data;if(b)if(m&&o){const c=I,d=i;for(let f=0;f<x;f++){const l=d[(s+f)*2],a=d[(s+f)*2+1];let r=0,y=n;if(e==="left")for(;r<y;){const A=Math.floor((r+y)/2),N=c[(u+A)*2],S=c[(u+A)*2+1];j(N,S,l,a)<0?r=A+1:y=A}else for(;r<y;){const A=Math.floor((r+y)/2),N=c[(u+A)*2],S=c[(u+A)*2+1];j(N,S,l,a)<=0?r=A+1:y=A}h[f]=r}}else for(let c=0;c<x;c++){const d=p.iget(c),f=d.re,l=d.im;let a=0,r=n;if(e==="left")for(;a<r;){const y=Math.floor((a+r)/2),A=t.iget(y);j(A.re,A.im,f,l)<0?a=y+1:r=y}else for(;a<r;){const y=Math.floor((a+r)/2),A=t.iget(y);j(A.re,A.im,f,l)<=0?a=y+1:r=y}h[c]=a}else if(m&&o)for(let c=0;c<x;c++){const d=Number(i[s+c]);let f=0,l=n;if(e==="left")for(;f<l;){const a=Math.floor((f+l)/2);Number(I[u+a])<d?f=a+1:l=a}else for(;f<l;){const a=Math.floor((f+l)/2);Number(I[u+a])<=d?f=a+1:l=a}h[c]=f}else for(let c=0;c<x;c++){const d=Number(p.iget(c));let f=0,l=n;if(e==="left")for(;f<l;){const a=Math.floor((f+l)/2);Number(t.iget(a))<d?f=a+1:l=a}else for(;f<l;){const a=Math.floor((f+l)/2);Number(t.iget(a))<=d?f=a+1:l=a}h[c]=f}return v}function Ut(t,p){const e=nt(t,p);if(e)return e;const n=p.dtype,x=$(t.dtype),b=$(n),m=Math.min(t.size,p.size),I=t.isCContiguous,u=t.data,o=t.offset,i=p.isCContiguous,s=p.data,v=p.offset;let h=0;if(I)for(let l=0;l<m;l++)E(u,o+l,x)&&h++;else for(let l=0;l<m;l++){const a=t.iget(l);(x?a.re!==0||a.im!==0:a)&&h++}const c=M.zeros([h],n),d=c.data;let f=0;if(I&&i)if(L(n)){const l=d,a=s;for(let r=0;r<m;r++)E(u,o+r,x)&&(l[f++]=a[v+r])}else if(b){const l=d,a=s;for(let r=0;r<m;r++)E(u,o+r,x)&&(l[f*2]=a[(v+r)*2],l[f*2+1]=a[(v+r)*2+1],f++)}else for(let l=0;l<m;l++)E(u,o+l,x)&&(d[f++]=s[v+l]);else{const l=I?a=>E(u,o+a,x):a=>{const r=t.iget(a);if(x){const y=r;return y.re!==0||y.im!==0}return!!r};if(L(n)){const a=d;for(let r=0;r<m;r++)l(r)&&(a[f++]=p.iget(r))}else if(b){const a=d;for(let r=0;r<m;r++)if(l(r)){const y=p.iget(r);a[f*2]=y.re,a[f*2+1]=y.im,f++}}else for(let a=0;a<m;a++)l(a)&&(d[f++]=p.iget(a))}return c}function mt(t,p){const e=t.shape,n=e.length,x=t.data,b=t.size,m=t.offset,I=t.strides,u=$(t.dtype),o=t.isCContiguous;if(p===void 0){const a=Z(t);if(a!==null)return a;let r=0;if(o)for(let y=0;y<b;y++)E(x,m+y,u)&&r++;else for(let y=0;y<b;y++){const A=t.iget(y);if(u){const N=A;(N.re!==0||N.im!==0)&&r++}else A!==0&&A!==BigInt(0)&&r++}return r}let i=p;if(i<0&&(i=n+i),i<0||i>=n)throw new Error(`axis ${p} is out of bounds for array of dimension ${n}`);const s=Array.from(e).filter((a,r)=>r!==i);if(s.length===0)return mt(t);const v=M.zeros(s,"int32"),h=v.data,c=e[i],d=s.reduce((a,r)=>a*r,1),{baseOffsets:f,axisStride:l}=_(e,I,m,i,d);for(let a=0;a<d;a++){let r=0,y=f[a];for(let A=0;A<c;A++)E(x,y,u)&&r++,y+=l;h[a]=r}return v}export{Tt as argpartition,Ft as argsort,Mt as argwhere,mt as count_nonzero,Ut as extract,$t as flatnonzero,Dt as lexsort,ct as nonzero,Bt as partition,Rt as searchsorted,Ct as sort,Ot as sort_complex,Et as where};