numpy-ts 1.1.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (456) hide show
  1. package/README.md +3 -11
  2. package/dist/esm/common/broadcasting.js +1 -1
  3. package/dist/esm/common/dtype.js +1 -1
  4. package/dist/esm/common/float16-conv.js +1 -0
  5. package/dist/esm/common/internal/compute.js +1 -1
  6. package/dist/esm/common/internal/indexing.js +1 -1
  7. package/dist/esm/common/ndarray-core.js +1 -1
  8. package/dist/esm/common/ops/advanced.js +1 -1
  9. package/dist/esm/common/ops/arithmetic.js +1 -1
  10. package/dist/esm/common/ops/bitwise.js +1 -1
  11. package/dist/esm/common/ops/comparison.js +1 -1
  12. package/dist/esm/common/ops/complex.js +1 -1
  13. package/dist/esm/common/ops/exponential.js +1 -1
  14. package/dist/esm/common/ops/fft.js +1 -1
  15. package/dist/esm/common/ops/formatting.js +1 -1
  16. package/dist/esm/common/ops/gradient.js +1 -1
  17. package/dist/esm/common/ops/hyperbolic.js +1 -1
  18. package/dist/esm/common/ops/linalg.js +2 -2
  19. package/dist/esm/common/ops/logic.js +1 -1
  20. package/dist/esm/common/ops/random.js +1 -1
  21. package/dist/esm/common/ops/reduction.js +1 -1
  22. package/dist/esm/common/ops/rounding.js +1 -1
  23. package/dist/esm/common/ops/sets.js +1 -1
  24. package/dist/esm/common/ops/shape.js +1 -1
  25. package/dist/esm/common/ops/sorting.js +1 -1
  26. package/dist/esm/common/ops/statistics.js +1 -1
  27. package/dist/esm/common/ops/trig.js +1 -1
  28. package/dist/esm/common/storage.js +1 -1
  29. package/dist/esm/common/wasm/abs.js +1 -1
  30. package/dist/esm/common/wasm/add.js +1 -1
  31. package/dist/esm/common/wasm/all_finite.js +1 -0
  32. package/dist/esm/common/wasm/arccos.js +1 -1
  33. package/dist/esm/common/wasm/arcsin.js +1 -1
  34. package/dist/esm/common/wasm/arctan.js +1 -1
  35. package/dist/esm/common/wasm/arctan2.js +1 -0
  36. package/dist/esm/common/wasm/argpartition.js +1 -1
  37. package/dist/esm/common/wasm/argsort.js +1 -1
  38. package/dist/esm/common/wasm/bins/abs.wasm.js +1 -1
  39. package/dist/esm/common/wasm/bins/add.wasm.js +1 -1
  40. package/dist/esm/common/wasm/bins/all_finite.wasm.js +1 -0
  41. package/dist/esm/common/wasm/bins/alloc.wasm.js +1 -0
  42. package/dist/esm/common/wasm/bins/arccos.wasm.js +1 -1
  43. package/dist/esm/common/wasm/bins/arcsin.wasm.js +1 -1
  44. package/dist/esm/common/wasm/bins/arctan.wasm.js +1 -1
  45. package/dist/esm/common/wasm/bins/arctan2.wasm.js +1 -0
  46. package/dist/esm/common/wasm/bins/argpartition.wasm.js +1 -1
  47. package/dist/esm/common/wasm/bins/argsort.wasm.js +1 -1
  48. package/dist/esm/common/wasm/bins/bitwise_and.wasm.js +1 -1
  49. package/dist/esm/common/wasm/bins/bitwise_count.wasm.js +1 -1
  50. package/dist/esm/common/wasm/bins/bitwise_not.wasm.js +1 -1
  51. package/dist/esm/common/wasm/bins/bitwise_or.wasm.js +1 -1
  52. package/dist/esm/common/wasm/bins/bitwise_xor.wasm.js +1 -1
  53. package/dist/esm/common/wasm/bins/cholesky.wasm.js +1 -1
  54. package/dist/esm/common/wasm/bins/clip.wasm.js +1 -1
  55. package/dist/esm/common/wasm/bins/convolve.wasm.js +1 -1
  56. package/dist/esm/common/wasm/bins/copysign.wasm.js +1 -1
  57. package/dist/esm/common/wasm/bins/correlate.wasm.js +1 -1
  58. package/dist/esm/common/wasm/bins/cos.wasm.js +1 -1
  59. package/dist/esm/common/wasm/bins/cosh.wasm.js +1 -1
  60. package/dist/esm/common/wasm/bins/cross.wasm.js +1 -1
  61. package/dist/esm/common/wasm/bins/diff.wasm.js +1 -1
  62. package/dist/esm/common/wasm/bins/divide.wasm.js +1 -1
  63. package/dist/esm/common/wasm/bins/divmod.wasm.js +1 -0
  64. package/dist/esm/common/wasm/bins/dot_float-relaxed.wasm.js +1 -0
  65. package/dist/esm/common/wasm/bins/dot_float.wasm.js +1 -0
  66. package/dist/esm/common/wasm/bins/dot_int.wasm.js +1 -0
  67. package/dist/esm/common/wasm/bins/exp.wasm.js +1 -1
  68. package/dist/esm/common/wasm/bins/exp2.wasm.js +1 -1
  69. package/dist/esm/common/wasm/bins/fft.wasm.js +1 -1
  70. package/dist/esm/common/wasm/bins/frexp.wasm.js +1 -1
  71. package/dist/esm/common/wasm/bins/gather.wasm.js +1 -1
  72. package/dist/esm/common/wasm/bins/gcd.wasm.js +1 -1
  73. package/dist/esm/common/wasm/bins/gradient.wasm.js +1 -1
  74. package/dist/esm/common/wasm/bins/heaviside.wasm.js +1 -1
  75. package/dist/esm/common/wasm/bins/hypot.wasm.js +1 -1
  76. package/dist/esm/common/wasm/bins/indices.wasm.js +1 -1
  77. package/dist/esm/common/wasm/bins/inner_float-relaxed.wasm.js +1 -0
  78. package/dist/esm/common/wasm/bins/inner_float.wasm.js +1 -0
  79. package/dist/esm/common/wasm/bins/inner_int.wasm.js +1 -0
  80. package/dist/esm/common/wasm/bins/isfinite.wasm.js +1 -0
  81. package/dist/esm/common/wasm/bins/isnan.wasm.js +1 -0
  82. package/dist/esm/common/wasm/bins/kron.wasm.js +1 -1
  83. package/dist/esm/common/wasm/bins/ldexp.wasm.js +1 -1
  84. package/dist/esm/common/wasm/bins/left_shift.wasm.js +1 -1
  85. package/dist/esm/common/wasm/bins/lexsort.wasm.js +1 -1
  86. package/dist/esm/common/wasm/bins/logaddexp.wasm.js +1 -1
  87. package/dist/esm/common/wasm/bins/logical_and.wasm.js +1 -1
  88. package/dist/esm/common/wasm/bins/logical_not.wasm.js +1 -1
  89. package/dist/esm/common/wasm/bins/logical_or.wasm.js +1 -1
  90. package/dist/esm/common/wasm/bins/logical_xor.wasm.js +1 -1
  91. package/dist/esm/common/wasm/bins/lu.wasm.js +1 -0
  92. package/dist/esm/common/wasm/bins/matmul_float-relaxed.wasm.js +1 -0
  93. package/dist/esm/common/wasm/bins/matmul_float.wasm.js +1 -0
  94. package/dist/esm/common/wasm/bins/matmul_int.wasm.js +1 -0
  95. package/dist/esm/common/wasm/bins/matvec_float-relaxed.wasm.js +1 -0
  96. package/dist/esm/common/wasm/bins/matvec_float.wasm.js +1 -0
  97. package/dist/esm/common/wasm/bins/matvec_int.wasm.js +1 -0
  98. package/dist/esm/common/wasm/bins/max.wasm.js +1 -1
  99. package/dist/esm/common/wasm/bins/min.wasm.js +1 -1
  100. package/dist/esm/common/wasm/bins/mul.wasm.js +1 -1
  101. package/dist/esm/common/wasm/bins/neg.wasm.js +1 -1
  102. package/dist/esm/common/wasm/bins/outer.wasm.js +1 -1
  103. package/dist/esm/common/wasm/bins/pad.wasm.js +1 -1
  104. package/dist/esm/common/wasm/bins/partition.wasm.js +1 -1
  105. package/dist/esm/common/wasm/bins/power.wasm.js +1 -1
  106. package/dist/esm/common/wasm/bins/qr.wasm.js +1 -1
  107. package/dist/esm/common/wasm/bins/reciprocal.wasm.js +1 -1
  108. package/dist/esm/common/wasm/bins/reduce_all.wasm.js +1 -1
  109. package/dist/esm/common/wasm/bins/reduce_any.wasm.js +1 -1
  110. package/dist/esm/common/wasm/bins/reduce_argmax.wasm.js +1 -1
  111. package/dist/esm/common/wasm/bins/reduce_argmin.wasm.js +1 -1
  112. package/dist/esm/common/wasm/bins/reduce_count_nz.wasm.js +1 -1
  113. package/dist/esm/common/wasm/bins/reduce_max.wasm.js +1 -1
  114. package/dist/esm/common/wasm/bins/reduce_mean.wasm.js +1 -1
  115. package/dist/esm/common/wasm/bins/reduce_min.wasm.js +1 -1
  116. package/dist/esm/common/wasm/bins/reduce_nanmax.wasm.js +1 -1
  117. package/dist/esm/common/wasm/bins/reduce_nanmin.wasm.js +1 -1
  118. package/dist/esm/common/wasm/bins/reduce_nansum.wasm.js +1 -1
  119. package/dist/esm/common/wasm/bins/reduce_prod.wasm.js +1 -1
  120. package/dist/esm/common/wasm/bins/reduce_std.wasm.js +1 -1
  121. package/dist/esm/common/wasm/bins/reduce_sum.wasm.js +1 -1
  122. package/dist/esm/common/wasm/bins/reduce_var.wasm.js +1 -1
  123. package/dist/esm/common/wasm/bins/repeat.wasm.js +1 -1
  124. package/dist/esm/common/wasm/bins/right_shift.wasm.js +1 -1
  125. package/dist/esm/common/wasm/bins/rng.wasm.js +1 -0
  126. package/dist/esm/common/wasm/bins/roll.wasm.js +1 -1
  127. package/dist/esm/common/wasm/bins/searchsorted.wasm.js +1 -1
  128. package/dist/esm/common/wasm/bins/sign.wasm.js +1 -1
  129. package/dist/esm/common/wasm/bins/signbit.wasm.js +1 -0
  130. package/dist/esm/common/wasm/bins/sin.wasm.js +1 -0
  131. package/dist/esm/common/wasm/bins/sinh.wasm.js +1 -1
  132. package/dist/esm/common/wasm/bins/sort.wasm.js +1 -1
  133. package/dist/esm/common/wasm/bins/sqrt.wasm.js +1 -1
  134. package/dist/esm/common/wasm/bins/square.wasm.js +1 -1
  135. package/dist/esm/common/wasm/bins/sub.wasm.js +1 -1
  136. package/dist/esm/common/wasm/bins/svd.wasm.js +1 -1
  137. package/dist/esm/common/wasm/bins/tan.wasm.js +1 -1
  138. package/dist/esm/common/wasm/bins/tanh.wasm.js +1 -1
  139. package/dist/esm/common/wasm/bins/tile.wasm.js +1 -1
  140. package/dist/esm/common/wasm/bins/unravel_index.wasm.js +1 -0
  141. package/dist/esm/common/wasm/bins/vdot.wasm.js +1 -1
  142. package/dist/esm/common/wasm/bins/vecdot_float-relaxed.wasm.js +1 -0
  143. package/dist/esm/common/wasm/bins/vecdot_float.wasm.js +1 -0
  144. package/dist/esm/common/wasm/bins/vecdot_int.wasm.js +1 -0
  145. package/dist/esm/common/wasm/bins/vecmat_float-relaxed.wasm.js +1 -0
  146. package/dist/esm/common/wasm/bins/vecmat_float.wasm.js +1 -0
  147. package/dist/esm/common/wasm/bins/vecmat_int.wasm.js +1 -0
  148. package/dist/esm/common/wasm/bins/vector_norm-relaxed.wasm.js +1 -0
  149. package/dist/esm/common/wasm/bins/vector_norm.wasm.js +1 -0
  150. package/dist/esm/common/wasm/bitwise_and.js +1 -1
  151. package/dist/esm/common/wasm/bitwise_count.js +1 -1
  152. package/dist/esm/common/wasm/bitwise_not.js +1 -1
  153. package/dist/esm/common/wasm/bitwise_or.js +1 -1
  154. package/dist/esm/common/wasm/bitwise_xor.js +1 -1
  155. package/dist/esm/common/wasm/cholesky.js +1 -1
  156. package/dist/esm/common/wasm/clip.js +1 -1
  157. package/dist/esm/common/wasm/config.js +1 -1
  158. package/dist/esm/common/wasm/convolve.js +1 -1
  159. package/dist/esm/common/wasm/copysign.js +1 -1
  160. package/dist/esm/common/wasm/correlate.js +1 -1
  161. package/dist/esm/common/wasm/cos.js +1 -1
  162. package/dist/esm/common/wasm/cosh.js +1 -1
  163. package/dist/esm/common/wasm/cross.js +1 -1
  164. package/dist/esm/common/wasm/detect.js +1 -0
  165. package/dist/esm/common/wasm/diff.js +1 -1
  166. package/dist/esm/common/wasm/divide.js +1 -1
  167. package/dist/esm/common/wasm/divmod.js +1 -0
  168. package/dist/esm/common/wasm/dot.js +1 -1
  169. package/dist/esm/common/wasm/exp.js +1 -1
  170. package/dist/esm/common/wasm/exp2.js +1 -1
  171. package/dist/esm/common/wasm/fft.js +1 -1
  172. package/dist/esm/common/wasm/frexp.js +1 -1
  173. package/dist/esm/common/wasm/gather.js +1 -1
  174. package/dist/esm/common/wasm/gcd.js +1 -1
  175. package/dist/esm/common/wasm/gradient.js +1 -1
  176. package/dist/esm/common/wasm/heaviside.js +1 -1
  177. package/dist/esm/common/wasm/hypot.js +1 -1
  178. package/dist/esm/common/wasm/indices.js +1 -1
  179. package/dist/esm/common/wasm/inner.js +1 -1
  180. package/dist/esm/common/wasm/isfinite.js +1 -0
  181. package/dist/esm/common/wasm/isnan.js +1 -0
  182. package/dist/esm/common/wasm/kron.js +1 -1
  183. package/dist/esm/common/wasm/ldexp.js +1 -1
  184. package/dist/esm/common/wasm/left_shift.js +1 -1
  185. package/dist/esm/common/wasm/lexsort.js +1 -1
  186. package/dist/esm/common/wasm/logaddexp.js +1 -1
  187. package/dist/esm/common/wasm/logical_and.js +1 -1
  188. package/dist/esm/common/wasm/logical_not.js +1 -1
  189. package/dist/esm/common/wasm/logical_or.js +1 -1
  190. package/dist/esm/common/wasm/logical_xor.js +1 -1
  191. package/dist/esm/common/wasm/lu.js +1 -0
  192. package/dist/esm/common/wasm/matmul.js +1 -1
  193. package/dist/esm/common/wasm/matvec.js +1 -1
  194. package/dist/esm/common/wasm/max.js +1 -1
  195. package/dist/esm/common/wasm/min.js +1 -1
  196. package/dist/esm/common/wasm/mul.js +1 -1
  197. package/dist/esm/common/wasm/neg.js +1 -1
  198. package/dist/esm/common/wasm/outer.js +1 -1
  199. package/dist/esm/common/wasm/pad.js +1 -1
  200. package/dist/esm/common/wasm/partition.js +1 -1
  201. package/dist/esm/common/wasm/power.js +1 -1
  202. package/dist/esm/common/wasm/qr.js +1 -1
  203. package/dist/esm/common/wasm/reciprocal.js +1 -1
  204. package/dist/esm/common/wasm/reduce_all.js +1 -1
  205. package/dist/esm/common/wasm/reduce_any.js +1 -1
  206. package/dist/esm/common/wasm/reduce_argmax.js +1 -1
  207. package/dist/esm/common/wasm/reduce_argmin.js +1 -1
  208. package/dist/esm/common/wasm/reduce_count_nz.js +1 -1
  209. package/dist/esm/common/wasm/reduce_max.js +1 -1
  210. package/dist/esm/common/wasm/reduce_mean.js +1 -1
  211. package/dist/esm/common/wasm/reduce_min.js +1 -1
  212. package/dist/esm/common/wasm/reduce_nanmax.js +1 -1
  213. package/dist/esm/common/wasm/reduce_nanmin.js +1 -1
  214. package/dist/esm/common/wasm/reduce_nansum.js +1 -1
  215. package/dist/esm/common/wasm/reduce_prod.js +1 -1
  216. package/dist/esm/common/wasm/reduce_quantile.js +1 -1
  217. package/dist/esm/common/wasm/reduce_std.js +1 -1
  218. package/dist/esm/common/wasm/reduce_sum.js +1 -1
  219. package/dist/esm/common/wasm/reduce_var.js +1 -1
  220. package/dist/esm/common/wasm/repeat.js +1 -1
  221. package/dist/esm/common/wasm/right_shift.js +1 -1
  222. package/dist/esm/common/wasm/rng.js +1 -0
  223. package/dist/esm/common/wasm/roll.js +1 -1
  224. package/dist/esm/common/wasm/runtime.js +1 -1
  225. package/dist/esm/common/wasm/searchsorted.js +1 -1
  226. package/dist/esm/common/wasm/sign.js +1 -1
  227. package/dist/esm/common/wasm/signbit.js +1 -0
  228. package/dist/esm/common/wasm/sin.js +1 -0
  229. package/dist/esm/common/wasm/sinh.js +1 -1
  230. package/dist/esm/common/wasm/sort.js +1 -1
  231. package/dist/esm/common/wasm/sqrt.js +1 -1
  232. package/dist/esm/common/wasm/square.js +1 -1
  233. package/dist/esm/common/wasm/sub.js +1 -1
  234. package/dist/esm/common/wasm/svd.js +1 -1
  235. package/dist/esm/common/wasm/tan.js +1 -1
  236. package/dist/esm/common/wasm/tanh.js +1 -1
  237. package/dist/esm/common/wasm/tile.js +1 -1
  238. package/dist/esm/common/wasm/unravel_index.js +1 -0
  239. package/dist/esm/common/wasm/vdot.js +1 -1
  240. package/dist/esm/common/wasm/vecdot.js +1 -1
  241. package/dist/esm/common/wasm/vecmat.js +1 -1
  242. package/dist/esm/common/wasm/vector_norm.js +1 -0
  243. package/dist/esm/core/advanced.js +1 -1
  244. package/dist/esm/core/arithmetic.js +1 -1
  245. package/dist/esm/core/bitwise.js +1 -1
  246. package/dist/esm/core/complex.js +1 -1
  247. package/dist/esm/core/creation.js +1 -1
  248. package/dist/esm/core/formatting.js +1 -1
  249. package/dist/esm/core/gradient.js +1 -1
  250. package/dist/esm/core/index.js +1 -1
  251. package/dist/esm/core/linalg.js +1 -1
  252. package/dist/esm/core/logic.js +1 -1
  253. package/dist/esm/core/polynomial.js +1 -1
  254. package/dist/esm/core/reduction.js +1 -1
  255. package/dist/esm/core/rounding.js +1 -1
  256. package/dist/esm/core/sets.js +1 -1
  257. package/dist/esm/core/shape-extra.js +1 -1
  258. package/dist/esm/core/shape.js +1 -1
  259. package/dist/esm/core/sorting.js +1 -1
  260. package/dist/esm/core/statistics.js +1 -1
  261. package/dist/esm/core/trig.js +1 -1
  262. package/dist/esm/core/typechecking.js +1 -1
  263. package/dist/esm/core/types.js +1 -1
  264. package/dist/esm/core/utility.js +1 -1
  265. package/dist/esm/core.js +1 -1
  266. package/dist/esm/full/index.js +1 -1
  267. package/dist/esm/full/ndarray.js +1 -1
  268. package/dist/esm/index.js +1 -1
  269. package/dist/esm/io/file-ops.js +1 -0
  270. package/dist/esm/io/filesystem.js +1 -0
  271. package/dist/esm/io/index.js +1 -1
  272. package/dist/esm/io/npy/format.js +1 -1
  273. package/dist/esm/io/npy/index.js +1 -1
  274. package/dist/esm/io/npy/parser.js +1 -1
  275. package/dist/esm/io/npy/serializer.js +2 -2
  276. package/dist/esm/io/npz/index.js +1 -1
  277. package/dist/esm/io/npz/parser.js +1 -1
  278. package/dist/esm/io/npz/serializer.js +1 -1
  279. package/dist/esm/io/txt/index.js +1 -1
  280. package/dist/esm/io/txt/parser.js +1 -1
  281. package/dist/esm/io/zip/index.js +1 -1
  282. package/dist/esm/io/zip/reader.js +1 -1
  283. package/dist/esm/io/zip/writer.js +1 -1
  284. package/dist/esm/node.js +1 -1
  285. package/dist/numpy-ts.browser.js +6 -6
  286. package/dist/types/common/dtype.d.ts +55 -4
  287. package/dist/types/common/float16-conv.d.ts +27 -0
  288. package/dist/types/common/internal/indexing.d.ts +9 -21
  289. package/dist/types/common/ndarray-core.d.ts +20 -0
  290. package/dist/types/common/ops/advanced.d.ts +17 -2
  291. package/dist/types/common/ops/complex.d.ts +19 -1
  292. package/dist/types/common/ops/linalg.d.ts +1 -1
  293. package/dist/types/common/ops/random.d.ts +10 -5
  294. package/dist/types/common/ops/reduction.d.ts +2 -2
  295. package/dist/types/common/ops/sets.d.ts +2 -1
  296. package/dist/types/common/ops/shape.d.ts +2 -2
  297. package/dist/types/common/ops/statistics.d.ts +2 -1
  298. package/dist/types/common/storage.d.ts +54 -2
  299. package/dist/types/common/wasm/all_finite.d.ts +8 -0
  300. package/dist/types/common/wasm/arccos.d.ts +4 -2
  301. package/dist/types/common/wasm/arcsin.d.ts +4 -2
  302. package/dist/types/common/wasm/arctan.d.ts +4 -2
  303. package/dist/types/common/wasm/arctan2.d.ts +17 -0
  304. package/dist/types/common/wasm/argpartition.d.ts +8 -3
  305. package/dist/types/common/wasm/argsort.d.ts +8 -3
  306. package/dist/types/common/wasm/bins/abs.wasm.d.ts +1 -0
  307. package/dist/types/common/wasm/bins/all_finite.wasm.d.ts +4 -0
  308. package/dist/types/common/wasm/bins/alloc.wasm.d.ts +6 -0
  309. package/dist/types/common/wasm/bins/arccos.wasm.d.ts +8 -2
  310. package/dist/types/common/wasm/bins/arcsin.wasm.d.ts +8 -2
  311. package/dist/types/common/wasm/bins/arctan.wasm.d.ts +8 -2
  312. package/dist/types/common/wasm/bins/arctan2.wasm.d.ts +11 -0
  313. package/dist/types/common/wasm/bins/convolve.wasm.d.ts +6 -0
  314. package/dist/types/common/wasm/bins/copysign.wasm.d.ts +2 -0
  315. package/dist/types/common/wasm/bins/correlate.wasm.d.ts +6 -0
  316. package/dist/types/common/wasm/bins/cos.wasm.d.ts +8 -0
  317. package/dist/types/common/wasm/bins/cosh.wasm.d.ts +8 -2
  318. package/dist/types/common/wasm/bins/divmod.wasm.d.ts +11 -0
  319. package/dist/types/common/wasm/bins/dot_float-relaxed.wasm.d.ts +5 -0
  320. package/dist/types/common/wasm/bins/dot_float.wasm.d.ts +5 -0
  321. package/dist/types/common/wasm/bins/dot_int.wasm.d.ts +5 -0
  322. package/dist/types/common/wasm/bins/exp.wasm.d.ts +8 -2
  323. package/dist/types/common/wasm/bins/exp2.wasm.d.ts +8 -2
  324. package/dist/types/common/wasm/bins/fft.wasm.d.ts +11 -0
  325. package/dist/types/common/wasm/bins/frexp.wasm.d.ts +1 -0
  326. package/dist/types/common/wasm/bins/gather.wasm.d.ts +0 -1
  327. package/dist/types/common/wasm/bins/gcd.wasm.d.ts +8 -0
  328. package/dist/types/common/wasm/bins/indices.wasm.d.ts +6 -2
  329. package/dist/types/common/wasm/bins/inner_float-relaxed.wasm.d.ts +5 -0
  330. package/dist/types/common/wasm/bins/inner_float.wasm.d.ts +5 -0
  331. package/dist/types/common/wasm/bins/inner_int.wasm.d.ts +5 -0
  332. package/dist/types/common/wasm/bins/isfinite.wasm.d.ts +4 -0
  333. package/dist/types/common/wasm/bins/isnan.wasm.d.ts +4 -0
  334. package/dist/types/common/wasm/bins/lexsort.wasm.d.ts +4 -4
  335. package/dist/types/common/wasm/bins/logical_and.wasm.d.ts +2 -0
  336. package/dist/types/common/wasm/bins/logical_not.wasm.d.ts +1 -0
  337. package/dist/types/common/wasm/bins/logical_or.wasm.d.ts +2 -0
  338. package/dist/types/common/wasm/bins/logical_xor.wasm.d.ts +2 -0
  339. package/dist/types/common/wasm/bins/lu.wasm.d.ts +7 -0
  340. package/dist/types/common/wasm/bins/matmul_float-relaxed.wasm.d.ts +5 -0
  341. package/dist/types/common/wasm/bins/matmul_float.wasm.d.ts +5 -0
  342. package/dist/types/common/wasm/bins/matmul_int.wasm.d.ts +5 -0
  343. package/dist/types/common/wasm/bins/matvec_float-relaxed.wasm.d.ts +5 -0
  344. package/dist/types/common/wasm/bins/matvec_float.wasm.d.ts +5 -0
  345. package/dist/types/common/wasm/bins/matvec_int.wasm.d.ts +5 -0
  346. package/dist/types/common/wasm/bins/neg.wasm.d.ts +1 -0
  347. package/dist/types/common/wasm/bins/qr.wasm.d.ts +0 -1
  348. package/dist/types/common/wasm/bins/reciprocal.wasm.d.ts +8 -4
  349. package/dist/types/common/wasm/bins/reduce_argmax.wasm.d.ts +8 -0
  350. package/dist/types/common/wasm/bins/reduce_argmin.wasm.d.ts +8 -0
  351. package/dist/types/common/wasm/bins/reduce_max.wasm.d.ts +1 -0
  352. package/dist/types/common/wasm/bins/reduce_min.wasm.d.ts +1 -0
  353. package/dist/types/common/wasm/bins/reduce_prod.wasm.d.ts +2 -0
  354. package/dist/types/common/wasm/bins/reduce_sum.wasm.d.ts +8 -2
  355. package/dist/types/common/wasm/bins/rng.wasm.d.ts +57 -0
  356. package/dist/types/common/wasm/bins/sign.wasm.d.ts +1 -0
  357. package/dist/types/common/wasm/bins/signbit.wasm.d.ts +8 -0
  358. package/dist/types/common/wasm/bins/sin.wasm.d.ts +11 -0
  359. package/dist/types/common/wasm/bins/sinh.wasm.d.ts +8 -2
  360. package/dist/types/common/wasm/bins/sort.wasm.d.ts +6 -4
  361. package/dist/types/common/wasm/bins/sqrt.wasm.d.ts +2 -2
  362. package/dist/types/common/wasm/bins/svd.wasm.d.ts +1 -0
  363. package/dist/types/common/wasm/bins/tan.wasm.d.ts +8 -0
  364. package/dist/types/common/wasm/bins/tanh.wasm.d.ts +8 -2
  365. package/dist/types/common/wasm/bins/unravel_index.wasm.d.ts +4 -0
  366. package/dist/types/common/wasm/bins/vecdot_float-relaxed.wasm.d.ts +5 -0
  367. package/dist/types/common/wasm/bins/vecdot_float.wasm.d.ts +5 -0
  368. package/dist/types/common/wasm/bins/vecdot_int.wasm.d.ts +5 -0
  369. package/dist/types/common/wasm/bins/vecmat_float-relaxed.wasm.d.ts +5 -0
  370. package/dist/types/common/wasm/bins/vecmat_float.wasm.d.ts +5 -0
  371. package/dist/types/common/wasm/bins/vecmat_int.wasm.d.ts +5 -0
  372. package/dist/types/common/wasm/bins/vector_norm-relaxed.wasm.d.ts +3 -0
  373. package/dist/types/common/wasm/bins/vector_norm.wasm.d.ts +3 -0
  374. package/dist/types/common/wasm/config.d.ts +25 -0
  375. package/dist/types/common/wasm/convolve.d.ts +1 -1
  376. package/dist/types/common/wasm/cos.d.ts +4 -2
  377. package/dist/types/common/wasm/cosh.d.ts +4 -2
  378. package/dist/types/common/wasm/detect.d.ts +17 -0
  379. package/dist/types/common/wasm/divide.d.ts +4 -0
  380. package/dist/types/common/wasm/divmod.d.ts +13 -0
  381. package/dist/types/common/wasm/exp.d.ts +4 -2
  382. package/dist/types/common/wasm/exp2.d.ts +4 -2
  383. package/dist/types/common/wasm/fft.d.ts +36 -0
  384. package/dist/types/common/wasm/frexp.d.ts +1 -0
  385. package/dist/types/common/wasm/gather.d.ts +4 -0
  386. package/dist/types/common/wasm/gcd.d.ts +1 -0
  387. package/dist/types/common/wasm/heaviside.d.ts +2 -2
  388. package/dist/types/common/wasm/hypot.d.ts +4 -2
  389. package/dist/types/common/wasm/indices.d.ts +2 -1
  390. package/dist/types/common/wasm/isfinite.d.ts +7 -0
  391. package/dist/types/common/wasm/isnan.d.ts +7 -0
  392. package/dist/types/common/wasm/lexsort.d.ts +3 -1
  393. package/dist/types/common/wasm/logaddexp.d.ts +4 -2
  394. package/dist/types/common/wasm/lu.d.ts +27 -0
  395. package/dist/types/common/wasm/partition.d.ts +3 -1
  396. package/dist/types/common/wasm/reduce_argmax.d.ts +5 -0
  397. package/dist/types/common/wasm/reduce_argmin.d.ts +5 -0
  398. package/dist/types/common/wasm/reduce_prod.d.ts +4 -0
  399. package/dist/types/common/wasm/reduce_quantile.d.ts +11 -3
  400. package/dist/types/common/wasm/reduce_sum.d.ts +10 -0
  401. package/dist/types/common/wasm/rng.d.ts +75 -0
  402. package/dist/types/common/wasm/runtime.d.ts +117 -23
  403. package/dist/types/common/wasm/searchsorted.d.ts +3 -1
  404. package/dist/types/common/wasm/signbit.d.ts +14 -0
  405. package/dist/types/common/wasm/sin.d.ts +17 -0
  406. package/dist/types/common/wasm/sinh.d.ts +4 -2
  407. package/dist/types/common/wasm/sort.d.ts +4 -1
  408. package/dist/types/common/wasm/sqrt.d.ts +4 -2
  409. package/dist/types/common/wasm/svd.d.ts +6 -0
  410. package/dist/types/common/wasm/tan.d.ts +4 -2
  411. package/dist/types/common/wasm/tanh.d.ts +4 -2
  412. package/dist/types/common/wasm/unravel_index.d.ts +12 -0
  413. package/dist/types/common/wasm/vector_norm.d.ts +11 -0
  414. package/dist/types/core/advanced.d.ts +10 -2
  415. package/dist/types/core/creation.d.ts +1 -1
  416. package/dist/types/core/index.d.ts +96 -2
  417. package/dist/types/core/linalg.d.ts +1 -1
  418. package/dist/types/core/rounding.d.ts +0 -2
  419. package/dist/types/core/sets.d.ts +4 -1
  420. package/dist/types/core/statistics.d.ts +2 -1
  421. package/dist/types/full/index.d.ts +19 -6
  422. package/dist/types/index.d.ts +20 -4
  423. package/dist/types/io/file-ops.d.ts +269 -0
  424. package/dist/types/io/filesystem.d.ts +21 -0
  425. package/dist/types/node.d.ts +3 -275
  426. package/package.json +52 -62
  427. package/dist/esm/common/wasm/bins/dot.wasm.js +0 -1
  428. package/dist/esm/common/wasm/bins/flip.wasm.js +0 -1
  429. package/dist/esm/common/wasm/bins/inner.wasm.js +0 -1
  430. package/dist/esm/common/wasm/bins/matmul.wasm.js +0 -1
  431. package/dist/esm/common/wasm/bins/matvec.wasm.js +0 -1
  432. package/dist/esm/common/wasm/bins/reduce_quantile.wasm.js +0 -1
  433. package/dist/esm/common/wasm/bins/rot90.wasm.js +0 -1
  434. package/dist/esm/common/wasm/bins/vecdot.wasm.js +0 -1
  435. package/dist/esm/common/wasm/bins/vecmat.wasm.js +0 -1
  436. package/dist/esm/common/wasm/flip.js +0 -1
  437. package/dist/esm/common/wasm/lstsq.js +0 -1
  438. package/dist/esm/common/wasm/rot90.js +0 -1
  439. package/dist/numpy-ts.node-io.cjs +0 -8
  440. package/dist/numpy-ts.node-io.cjs.map +0 -7
  441. package/dist/numpy-ts.node-io.mjs +0 -8
  442. package/dist/numpy-ts.node-io.mjs.map +0 -7
  443. package/dist/numpy-ts.node.cjs +0 -8
  444. package/dist/numpy-ts.node.cjs.map +0 -7
  445. package/dist/types/common/wasm/bins/dot.wasm.d.ts +0 -9
  446. package/dist/types/common/wasm/bins/flip.wasm.d.ts +0 -7
  447. package/dist/types/common/wasm/bins/inner.wasm.d.ts +0 -9
  448. package/dist/types/common/wasm/bins/matmul.wasm.d.ts +0 -9
  449. package/dist/types/common/wasm/bins/matvec.wasm.d.ts +0 -9
  450. package/dist/types/common/wasm/bins/reduce_quantile.wasm.d.ts +0 -2
  451. package/dist/types/common/wasm/bins/rot90.wasm.d.ts +0 -7
  452. package/dist/types/common/wasm/bins/vecdot.wasm.d.ts +0 -9
  453. package/dist/types/common/wasm/bins/vecmat.wasm.d.ts +0 -9
  454. package/dist/types/common/wasm/flip.d.ts +0 -13
  455. package/dist/types/common/wasm/lstsq.d.ts +0 -14
  456. package/dist/types/common/wasm/rot90.d.ts +0 -14
@@ -1,2 +1,2 @@
1
- import{ArrayStorage as z}from"../storage";import{promoteDTypes as k,isComplexDType as q,isBigIntDType as _,getTypedArrayConstructor as at}from"../dtype";import{Complex as $}from"../complex";import{wasmMatmul as It}from"../wasm/matmul";import{wasmInner as Dt}from"../wasm/inner";import{wasmDot1D as nt}from"../wasm/dot";import{wasmMatvec as lt}from"../wasm/matvec";import{wasmVecmat as ct}from"../wasm/vecmat";import{wasmOuter as vt}from"../wasm/outer";import{wasmVecdot as $t}from"../wasm/vecdot";import{wasmVdotComplex as zt}from"../wasm/vdot";import{wasmKron as Mt}from"../wasm/kron";import{wasmCross as Ct}from"../wasm/cross";import{wasmQr as Et}from"../wasm/qr";import{wasmCholesky as jt}from"../wasm/cholesky";import{wasmSvd as Vt}from"../wasm/svd";import*as R from"./shape";const Ft=new Int32Array(1),Bt=new Uint32Array(1),Rt=new Int16Array(1),kt=new Uint16Array(1),qt=new Int8Array(1),Tt=new Uint8Array(1),_t={int32:Ft,uint32:Bt,int16:Rt,uint16:kt,int8:qt,uint8:Tt};function L(t){return _t[t]??null}function J(t,e){if(t instanceof $||e instanceof $){const g=t instanceof $?t:new $(Number(t),0),p=e instanceof $?e:new $(Number(e),0);return g.mul(p)}return typeof t=="bigint"&&typeof e=="bigint"?Number(t*e):Number(t)*Number(e)}function Ot(t,e,g,p,c,m,f,d,b){for(let l=0;l<g;l++)for(let s=0;s<m;s++)for(let a=0;a<f;a++){let n=0;for(let i=0;i<d;i++)n+=t[e+l*d+i]*p[c+s*d*f+i*f+a];b[l*m*f+s*f+a]=n}}function Ut(t,e,g,p,c,m,f,d,b,l){for(let s=0;s<g;s++)for(let a=0;a<f;a++){let n=0;for(let r=0;r<b;r++){const o=p===1?r:s*b+r,u=d===1?r:a*b+r;n+=t[e+o]*c[m+u]}const i=g===1?a:s*f+a;l[i]=n}}function Lt(t,e,g,p,c,m,f,d,b,l,s,a){for(let r=0;r<g*p;r++)s[r]=0;const n=t==="transpose",i=e==="transpose";if(!n&&!i)for(let r=0;r<g;r++)for(let o=0;o<p;o++){let u=0;for(let w=0;w<c;w++)u+=(f[r*d+w]??0)*(b[w*l+o]??0);s[r*a+o]=m*u}else if(n&&!i)for(let r=0;r<g;r++)for(let o=0;o<p;o++){let u=0;for(let w=0;w<c;w++)u+=(f[w*d+r]??0)*(b[w*l+o]??0);s[r*a+o]=m*u}else if(!n&&i)for(let r=0;r<g;r++)for(let o=0;o<p;o++){let u=0;for(let w=0;w<c;w++)u+=(f[r*d+w]??0)*(b[o*l+w]??0);s[r*a+o]=m*u}else for(let r=0;r<g;r++)for(let o=0;o<p;o++){let u=0;for(let w=0;w<c;w++)u+=(f[w*d+r]??0)*(b[o*l+w]??0);s[r*a+o]=m*u}}function K(t,e){const g=t.ndim,p=e.ndim,c=q(t.dtype)||q(e.dtype);if(g===0||p===0){const m=g===0?t.get():null,f=p===0?e.get():null;if(g===0&&p===0)return J(m,f);if(g===0){const d=k(t.dtype,e.dtype),b=z.zeros([...e.shape],d),l=(s,a)=>{const n=new Array(a.length);let i=s;for(let r=a.length-1;r>=0;r--)n[r]=i%a[r],i=Math.floor(i/a[r]);return n};for(let s=0;s<e.size;s++){const a=l(s,e.shape),n=e.get(...a);b.set(a,J(m,n))}return b}else{const d=k(t.dtype,e.dtype),b=z.zeros([...t.shape],d),l=(s,a)=>{const n=new Array(a.length);let i=s;for(let r=a.length-1;r>=0;r--)n[r]=i%a[r],i=Math.floor(i/a[r]);return n};for(let s=0;s<t.size;s++){const a=l(s,t.shape),n=t.get(...a);b.set(a,J(n,f))}return b}}if(g===1&&p===1){if(t.shape[0]!==e.shape[0])throw new Error(`dot: incompatible shapes (${t.shape[0]},) and (${e.shape[0]},)`);const m=nt(t,e);if(m!==null)return m;const f=t.shape[0];if(c){let s=0,a=0;for(let n=0;n<f;n++){const i=t.get(n),r=e.get(n),o=J(i,r);o instanceof $?(s+=o.re,a+=o.im):s+=o}return new $(s,a)}const d=k(t.dtype,e.dtype),b=L(d);if(b){b[0]=0;for(let s=0;s<f;s++)b[0]+=Number(t.get(s))*Number(e.get(s));return b[0]}let l=0;for(let s=0;s<f;s++){const a=t.get(s),n=e.get(s);typeof a=="bigint"&&typeof n=="bigint"?l=Number(l)+Number(a*n):l+=Number(a)*Number(n)}return l}if(g===2&&p===2)return X(t,e);if(g===2&&p===1){const[m,f]=t.shape,d=e.shape[0];if(f!==d)throw new Error(`dot: incompatible shapes (${m},${f}) and (${d},)`);const b=lt(t,e);if(b)return b;const l=k(t.dtype,e.dtype),s=z.zeros([m],l);if(c)for(let a=0;a<m;a++){let n=0,i=0;for(let r=0;r<f;r++){const o=t.get(a,r),u=e.get(r),w=o instanceof $?o:new $(Number(o),0),y=u instanceof $?u:new $(Number(u),0);n+=w.re*y.re-w.im*y.im,i+=w.re*y.im+w.im*y.re}s.set([a],new $(n,i))}else{const a=L(l);for(let n=0;n<m;n++)if(a){a[0]=0;for(let i=0;i<f;i++)a[0]+=Number(t.get(n,i))*Number(e.get(i));s.set([n],a[0])}else{let i=0;for(let r=0;r<f;r++){const o=t.get(n,r),u=e.get(r);typeof o=="bigint"&&typeof u=="bigint"?i=Number(i)+Number(o*u):i+=Number(o)*Number(u)}s.set([n],i)}}return s}if(g===1&&p===2){const m=t.shape[0],[f,d]=e.shape;if(m!==f)throw new Error(`dot: incompatible shapes (${m},) and (${f},${d})`);const b=ct(t,e);if(b)return b;const l=k(t.dtype,e.dtype),s=z.zeros([d],l);if(c)for(let a=0;a<d;a++){let n=0,i=0;for(let r=0;r<m;r++){const o=t.get(r),u=e.get(r,a),w=o instanceof $?o:new $(Number(o),0),y=u instanceof $?u:new $(Number(u),0);n+=w.re*y.re-w.im*y.im,i+=w.re*y.im+w.im*y.re}s.set([a],new $(n,i))}else{const a=L(l);for(let n=0;n<d;n++)if(a){a[0]=0;for(let i=0;i<m;i++)a[0]+=Number(t.get(i))*Number(e.get(i,n));s.set([n],a[0])}else{let i=0;for(let r=0;r<m;r++){const o=t.get(r),u=e.get(r,n);typeof o=="bigint"&&typeof u=="bigint"?i=Number(i)+Number(o*u):i+=Number(o)*Number(u)}s.set([n],i)}}return s}if(g>2&&p===1){const m=t.shape[g-1],f=e.shape[0];if(m!==f)throw new Error(`dot: incompatible shapes ${JSON.stringify(t.shape)} and (${f},)`);const d=[...t.shape.slice(0,-1)],b=k(t.dtype,e.dtype),l=z.zeros(d,b),s=d.reduce((a,n)=>a*n,1);if(c)for(let a=0;a<s;a++){let n=0,i=0,r=a;const o=[];for(let u=d.length-1;u>=0;u--)o[u]=r%d[u],r=Math.floor(r/d[u]);for(let u=0;u<m;u++){const w=[...o,u],y=t.get(...w),h=e.get(u),A=y instanceof $?y:new $(Number(y),0),x=h instanceof $?h:new $(Number(h),0);n+=A.re*x.re-A.im*x.im,i+=A.re*x.im+A.im*x.re}l.set(o,new $(n,i))}else{const a=L(b);for(let n=0;n<s;n++){let i=n;const r=[];for(let o=d.length-1;o>=0;o--)r[o]=i%d[o],i=Math.floor(i/d[o]);if(a){a[0]=0;for(let o=0;o<m;o++){const u=[...r,o];a[0]+=Number(t.get(...u))*Number(e.get(o))}l.set(r,a[0])}else{let o=0;for(let u=0;u<m;u++){const w=[...r,u],y=t.get(...w),h=e.get(u);typeof y=="bigint"&&typeof h=="bigint"?o=Number(o)+Number(y*h):o+=Number(y)*Number(h)}l.set(r,o)}}}return l}if(g===1&&p>2){const m=t.shape[0],f=1,d=e.shape[f];if(m!==d)throw new Error(`dot: incompatible shapes (${m},) and ${JSON.stringify(e.shape)}`);const b=[...e.shape.slice(0,f),...e.shape.slice(f+1)],l=k(t.dtype,e.dtype),s=z.zeros(b,l),a=b.reduce((n,i)=>n*i,1);if(c)for(let n=0;n<a;n++){let i=n;const r=[];for(let h=b.length-1;h>=0;h--)r[h]=i%b[h],i=Math.floor(i/b[h]);const o=r.slice(0,f),u=r.slice(f);let w=0,y=0;for(let h=0;h<m;h++){const A=t.get(h),x=[...o,h,...u],N=e.get(...x),S=A instanceof $?A:new $(Number(A),0),I=N instanceof $?N:new $(Number(N),0);w+=S.re*I.re-S.im*I.im,y+=S.re*I.im+S.im*I.re}s.set(r,new $(w,y))}else{const n=L(l);for(let i=0;i<a;i++){let r=i;const o=[];for(let y=b.length-1;y>=0;y--)o[y]=r%b[y],r=Math.floor(r/b[y]);const u=o.slice(0,f),w=o.slice(f);if(n){n[0]=0;for(let y=0;y<m;y++){const h=[...u,y,...w];n[0]+=Number(t.get(y))*Number(e.get(...h))}s.set(o,n[0])}else{let y=0;for(let h=0;h<m;h++){const A=t.get(h),x=[...u,h,...w],N=e.get(...x);typeof A=="bigint"&&typeof N=="bigint"?y=Number(y)+Number(A*N):y+=Number(A)*Number(N)}s.set(o,y)}}}return s}if(g>=2&&p>=2&&!(g===2&&p===2)){const m=t.shape[g-1],f=e.shape[p-2];if(m!==f)throw new Error(`dot: incompatible shapes ${JSON.stringify(t.shape)} and ${JSON.stringify(e.shape)}`);const d=[...t.shape.slice(0,-1),...e.shape.slice(0,-2),e.shape[p-1]],b=k(t.dtype,e.dtype),l=z.zeros(d,b),s=t.shape.slice(0,-1).reduce((r,o)=>r*o,1),a=e.shape.slice(0,-2).reduce((r,o)=>r*o,1),n=e.shape[p-1],i=m;if(c)for(let r=0;r<s;r++)for(let o=0;o<a;o++)for(let u=0;u<n;u++){let w=0,y=0;for(let x=0;x<i;x++){const N=[];let S=r;for(let j=t.shape.length-2;j>=0;j--)N.unshift(S%t.shape[j]),S=Math.floor(S/t.shape[j]);N.push(x);const I=t.get(...N),D=[];let v=o;for(let j=e.shape.length-3;j>=0;j--)D.unshift(v%e.shape[j]),v=Math.floor(v/e.shape[j]);D.push(x,u);const C=e.get(...D),M=I instanceof $?I:new $(Number(I),0),E=C instanceof $?C:new $(Number(C),0);w+=M.re*E.re-M.im*E.im,y+=M.re*E.im+M.im*E.re}const h=r*a*n+o*n+u,A=l.data;A[h*2]=w,A[h*2+1]=y}else if(t.isCContiguous&&e.isCContiguous&&!_(t.dtype)&&!_(e.dtype)&&!L(b))Ot(t.data,t.offset,s,e.data,e.offset,a,n,i,l.data);else{const r=L(b);for(let o=0;o<s;o++)for(let u=0;u<a;u++)for(let w=0;w<n;w++){const y=o*a*n+u*n+w;if(r){r[0]=0;for(let h=0;h<i;h++){const A=o*i+h,x=u*i*n+h*n+w;r[0]+=Number(t.iget(A))*Number(e.iget(x))}l.data[y]=r[0]}else{let h=0;for(let A=0;A<i;A++){const x=o*i+A,N=u*i*n+A*n+w,S=t.iget(x),I=e.iget(N);typeof S=="bigint"&&typeof I=="bigint"?h=Number(h)+Number(S*I):h+=Number(S)*Number(I)}l.data[y]=h}}}return l}throw new Error(`dot: unexpected combination of dimensions ${g}D \xB7 ${p}D`)}function ut(t,e){const[g=0,p=0]=t.shape,[c=0,m=0]=e.shape;if(p!==c)throw new Error(`matmul shape mismatch: (${g},${p}) @ (${c},${m})`);const f=k(t.dtype,e.dtype);if(q(f)){const N=z.zeros([g,m],f),S=N.data;for(let I=0;I<g;I++)for(let D=0;D<m;D++){let v=0,C=0;for(let E=0;E<p;E++){const j=t.iget(I*p+E),V=e.iget(E*m+D);v+=j.re*V.re-j.im*V.im,C+=j.re*V.im+j.im*V.re}const M=I*m+D;S[M*2]=v,S[M*2+1]=C}return N}if(f.startsWith("int")||f.startsWith("uint")||f==="bool"){const N=z.zeros([g,m],f),S=N.data,I=t.offset,D=e.offset,[v=0,C=0]=t.strides,[M=0,E=0]=e.strides;if(_(f)){const j=t.data,V=e.data,F=S;for(let T=0;T<g;T++)for(let B=0;B<m;B++){let W=0n;for(let U=0;U<p;U++)W+=j[I+T*v+U*C]*V[D+U*M+B*E];F[T*m+B]=W}}else{const j=t.data,V=e.data,F=S;for(let T=0;T<g;T++)for(let B=0;B<m;B++){let W=0;for(let U=0;U<p;U++)W+=j[I+T*v+U*C]*V[D+U*M+B*E];F[T*m+B]=W}}return N}const d=f;if(d!=="float64"&&d!=="float32")throw new Error(`matmul currently only supports float64/float32, got ${d}`);const b=N=>N.dtype==="float64"?N.data:N.dtype==="float32"?Float64Array.from(N.data):Float64Array.from(Array.from(N.data).map(Number));let l=b(t),s=b(e);t.offset>0&&(l=l.subarray(t.offset)),e.offset>0&&(s=s.subarray(e.offset));const[a=0,n=0]=t.strides,[i=0,r=0]=e.strides,o=n>a,u=r>i,w=o?"transpose":"no-transpose",y=u?"transpose":"no-transpose";let h,A;o?h=n:h=a,u?A=r:A=i;const x=z.zeros([g,m],"float64");if(Lt(w,y,g,m,p,1,l,h,s,A,x.data,m),d==="float32"){const N=z.zeros([g,m],"float32"),S=x.data,I=N.data;for(let D=0;D<S.length;D++)I[D]=S[D];return N}return x}function Pt(t,e){const g=Math.max(t.length,e.length),p=new Array(g);for(let c=0;c<g;c++){const m=t[t.length-g+c]??1,f=e[e.length-g+c]??1;if(m!==f&&m!==1&&f!==1)throw new Error(`matmul: cannot broadcast batch shapes ${JSON.stringify(t)} and ${JSON.stringify(e)}`);p[c]=Math.max(m,f)}return p}function Y(t,e){const g=new Array(e.length);let p=t;for(let c=e.length-1;c>=0;c--)g[c]=p%e[c],p=Math.floor(p/e[c]);return g}function mt(t,e){const g=e.length;let p=0;for(let c=0;c<g;c++){const m=t.length-g+c,f=m>=0?t[m]:0,d=e[c]===1?0:f;p=p*e[c]+d}return p}function O(t){if(t.isCContiguous&&t.offset===0&&t.dtype==="float64")return t.data;const e=new Float64Array(t.size);for(let g=0;g<t.size;g++)e[g]=Number(t.iget(g));return e}function ft(t,e,g,p){const c=t.ndim,m=g*p,f=q(t.dtype),d=_(t.dtype),b=f?2:1,l=at(t.dtype),s=new l(m*b);if(t.isCContiguous){const a=(t.offset+e*m)*b;if(d){const n=t.data,i=s;for(let r=0;r<m*b;r++)i[r]=n[a+r]}else{const n=t.data,i=s;for(let r=0;r<m*b;r++)i[r]=n[a+r]}}else{const a=e*m;for(let n=0;n<m;n++){let r=a+n,o=t.offset;for(let u=c-1;u>=0;u--){const w=t.shape[u];o+=r%w*t.strides[u],r=Math.floor(r/w)}if(f){const u=t.data,w=s;w[n*2]=u[o*2],w[n*2+1]=u[o*2+1]}else s[n]=t.data[o]}}return z.fromData(s,[g,p],t.dtype)}function X(t,e){if(t.ndim===1&&e.ndim===1){const M=nt(t,e);if(M!==null){const E=k(t.dtype,e.dtype),j=z.zeros([],E);return M instanceof $?(j.data[0]=M.re,j.data[1]=M.im):j.data[0]=M,j}}else if(t.ndim>=2&&e.ndim===1){if(t.ndim===2){const M=lt(t,e);if(M)return M}}else if(t.ndim===1&&e.ndim>=2&&e.ndim===2){const M=ct(t,e);if(M)return M}const g=It(t,e);if(g)return g;if(t.ndim===0||e.ndim===0)throw new Error("matmul: Input operand does not have enough dimensions (has 0, gufunc core with signature (n?,k),(k,m?)->(n?,m?) requires at least 1-D)");const p=t.ndim===1,c=e.ndim===1,m=p?R.reshape(t,[1,t.shape[0]]):t,f=c?R.reshape(e,[e.shape[0],1]):e,d=m.ndim,b=f.ndim,l=m.shape[d-2],s=m.shape[d-1],a=f.shape[b-2],n=f.shape[b-1];if(s!==a)throw new Error(`matmul: shape mismatch: (...,${l},${s}) @ (...,${a},${n}): inner dimensions must match`);if(d===2&&b===2){const M=ut(m,f);return p&&c?R.reshape(M,[]):p?R.reshape(M,[n]):c?R.reshape(M,[l]):M}const i=Array.from(m.shape).slice(0,d-2),r=Array.from(f.shape).slice(0,b-2),o=Pt(i,r),u=o.reduce((M,E)=>M*E,1),w=k(m.dtype,f.dtype),y=[];for(let M=0;M<u;M++){const E=Y(M,o),j=mt(E,i),V=mt(E,r),F=ft(m,j,l,s),T=ft(f,V,s,n);y.push(ut(F,T))}const h=l*n,A=q(w),x=_(w),N=A?2:1,S=at(w),I=u*h*N,D=new S(I);for(let M=0;M<u;M++){const j=y[M].data,V=M*h*N;if(x){const F=j,T=D;for(let B=0;B<h;B++)T[V+B]=F[B]}else{const F=j,T=D;for(let B=0;B<h*N;B++)T[V+B]=F[B]}}const v=[...o,l,n],C=z.fromData(D,v,w);return p&&c?R.reshape(C,[...o]):p?R.reshape(C,[...o,n]):c?R.reshape(C,[...o,l]):C}function be(t,e=0,g=0,p=1){if(t.ndim<2)throw new Error(`trace requires at least 2D array, got ${t.ndim}D`);if(t.ndim===2){const i=g<0?t.ndim+g:g,r=p<0?t.ndim+p:p,o=t.shape[i],u=t.shape[r],w=Math.min(o,u)-Math.max(0,e);if(w<=0)return q(t.dtype)?new $(0,0):0;if(q(t.dtype)){let h=0,A=0;for(let x=0;x<w;x++){const N=e>=0?x:x-e,S=e>=0?x+e:x,I=[0,0];I[i]=N,I[r]=S;const D=t.get(...I);h+=D.re,A+=D.im}return new $(h,A)}let y=0;for(let h=0;h<w;h++){const A=e>=0?h:h-e,x=e>=0?h+e:h,N=[0,0];N[i]=A,N[r]=x;const S=t.get(...N);typeof S=="bigint"?y=(typeof y=="bigint"?y:BigInt(y))+S:y=(typeof y=="bigint"?Number(y):y)+S}return y}const c=t.ndim,m=(g%c+c)%c,f=(p%c+c)%c;if(m===f)throw new Error("trace: axis1 and axis2 must be different");const d=t.shape[m],b=t.shape[f],l=Math.min(d,b)-Math.max(0,e),s=Array.from(t.shape).filter((i,r)=>r!==m&&r!==f),a=s.reduce((i,r)=>i*r,1),n=z.zeros(s.length>0?s:[1],t.dtype);if(l<=0)return n.shape.length===0?0:n;for(let i=0;i<a;i++){const r=new Array(s.length);let o=i;for(let A=s.length-1;A>=0;A--)r[A]=o%s[A],o=Math.floor(o/s[A]);let u=0,w=0,y=0;const h=q(t.dtype);for(let A=0;A<l;A++){const x=e>=0?A:A-e,N=e>=0?A+e:A,S=new Array(c);let I=0;for(let v=0;v<c;v++)v===m?S[v]=x:v===f?S[v]=N:S[v]=r[I++];const D=t.get(...S);h?(w+=D.re,y+=D.im):typeof D=="bigint"?u=(typeof u=="bigint"?u:BigInt(u))+D:u=(typeof u=="bigint"?Number(u):u)+D}h?n.iset(i,new $(w,y)):n.iset(i,typeof u=="bigint"?Number(u):u)}return n}function G(t,e){return R.transpose(t,e)}function ye(t,e){const g=t.ndim,p=e.ndim,c=q(t.dtype)||q(e.dtype);if(g===0||p===0)return K(t,e);const m=t.shape[g-1],f=e.shape[p-1];if(m!==f)throw new Error(`inner: incompatible shapes - last dimensions ${m} and ${f} don't match`);const d=Dt(t,e);if(d!==null)return d;if(g===1&&p===1)return K(t,e);const b=[...t.shape.slice(0,-1),...e.shape.slice(0,-1)],l=k(t.dtype,e.dtype),s=z.zeros(b,l),a=g===1?1:t.shape.slice(0,-1).reduce((r,o)=>r*o,1),n=p===1?1:e.shape.slice(0,-1).reduce((r,o)=>r*o,1),i=m;if(c)for(let r=0;r<a;r++)for(let o=0;o<n;o++){let u=0,w=0;for(let A=0;A<i;A++){let x,N;if(g===1)x=t.get(A);else{const D=[];let v=r;const C=t.shape.slice(0,-1);for(let M=C.length-1;M>=0;M--)D.unshift(v%C[M]),v=Math.floor(v/C[M]);D.push(A),x=t.get(...D)}if(p===1)N=e.get(A);else{const D=[];let v=o;const C=e.shape.slice(0,-1);for(let M=C.length-1;M>=0;M--)D.unshift(v%C[M]),v=Math.floor(v/C[M]);D.push(A),N=e.get(...D)}const S=x instanceof $?x:new $(Number(x),0),I=N instanceof $?N:new $(Number(N),0);u+=S.re*I.re-S.im*I.im,w+=S.re*I.im+S.im*I.re}if(b.length===0)return new $(u,w);const y=a===1?o:r*n+o,h=s.data;h[y*2]=u,h[y*2+1]=w}else{const r=L(l);if(t.isCContiguous&&e.isCContiguous&&!_(t.dtype)&&!_(e.dtype)&&!r){if(b.length===0){const o=t.data,u=e.data,w=t.offset,y=e.offset;let h=0;for(let A=0;A<i;A++)h+=o[w+A]*u[y+A];return h}Ut(t.data,t.offset,a,g,e.data,e.offset,n,p,i,s.data)}else for(let o=0;o<a;o++)for(let u=0;u<n;u++)if(r){r[0]=0;for(let y=0;y<i;y++){const h=g===1?y:o*i+y,A=p===1?y:u*i+y;r[0]+=Number(t.iget(h))*Number(e.iget(A))}if(b.length===0)return r[0];const w=a===1?u:o*n+u;s.data[w]=r[0]}else{let w=0;for(let h=0;h<i;h++){const A=g===1?h:o*i+h,x=p===1?h:u*i+h,N=t.iget(A),S=e.iget(x);typeof N=="bigint"&&typeof S=="bigint"?w=Number(w)+Number(N*S):w+=Number(N)*Number(S)}if(b.length===0)return w;const y=a===1?u:o*n+u;s.data[y]=w}}return s}function Jt(t,e){const g=t.ndim===1?t:R.ravel(t),p=e.ndim===1?e:R.ravel(e),c=vt(g,p);if(c)return c;const m=g.size,f=p.size,d=k(t.dtype,e.dtype),b=z.zeros([m,f],d);for(let l=0;l<m;l++)for(let s=0;s<f;s++){const a=g.get(l),n=p.get(s),i=J(a,n);b.set([l,s],i)}return b}function we(t,e,g){let p,c;if(typeof g=="number"){const r=g;if(r<0)throw new Error("tensordot: axes must be non-negative");if(r>t.ndim||r>e.ndim)throw new Error("tensordot: axes exceeds array dimensions");p=Array.from({length:r},(o,u)=>t.ndim-r+u),c=Array.from({length:r},(o,u)=>u)}else if([p,c]=g,p.length!==c.length)throw new Error("tensordot: axes lists must have same length");for(let r=0;r<p.length;r++){const o=p[r],u=c[r];if(o<0||o>=t.ndim||u<0||u>=e.ndim)throw new Error("tensordot: axis out of bounds");if(t.shape[o]!==e.shape[u])throw new Error(`tensordot: shape mismatch on axes ${o} and ${u}: ${t.shape[o]} != ${e.shape[u]}`)}const m=[],f=[];for(let r=0;r<t.ndim;r++)p.includes(r)||m.push(r);for(let r=0;r<e.ndim;r++)c.includes(r)||f.push(r);const d=[...m.map(r=>t.shape[r]),...f.map(r=>e.shape[r])],b=k(t.dtype,e.dtype),l=q(b),s=r=>r instanceof $?{re:r.re,im:r.im}:{re:Number(r),im:0};if(d.length===0){let r=0,o=0;const u=p.map(w=>t.shape[w]).reduce((w,y)=>w*y,1);for(let w=0;w<u;w++){let y=w;const h=new Array(p.length);for(let I=p.length-1;I>=0;I--){const D=p[I];h[I]=y%t.shape[D],y=Math.floor(y/t.shape[D])}const A=new Array(t.ndim),x=new Array(e.ndim);for(let I=0;I<p.length;I++)A[p[I]]=h[I];for(let I=0;I<c.length;I++)x[c[I]]=h[I];const N=t.get(...A),S=e.get(...x);if(l){const I=s(N),D=s(S);r+=I.re*D.re-I.im*D.im,o+=I.re*D.im+I.im*D.re}else typeof N=="bigint"&&typeof S=="bigint"?r+=Number(N*S):r+=Number(N)*Number(S)}return l?new $(r,o):r}const a=z.zeros(d,b),n=d.reduce((r,o)=>r*o,1),i=p.map(r=>t.shape[r]).reduce((r,o)=>r*o,1);for(let r=0;r<n;r++){let o=r;const u=[];for(let x=d.length-1;x>=0;x--)u[x]=o%d[x],o=Math.floor(o/d[x]);const w=u.slice(0,m.length),y=u.slice(m.length);let h=0,A=0;for(let x=0;x<i;x++){o=x;const N=[];for(let C=p.length-1;C>=0;C--){const M=p[C];N[C]=o%t.shape[M],o=Math.floor(o/t.shape[M])}const S=new Array(t.ndim),I=new Array(e.ndim);for(let C=0;C<m.length;C++)S[m[C]]=w[C];for(let C=0;C<f.length;C++)I[f[C]]=y[C];for(let C=0;C<p.length;C++)S[p[C]]=N[C],I[c[C]]=N[C];const D=t.get(...S),v=e.get(...I);if(l){const C=s(D),M=s(v);h+=C.re*M.re-C.im*M.im,A+=C.re*M.im+C.im*M.re}else typeof D=="bigint"&&typeof v=="bigint"?h+=Number(D*v):h+=Number(D)*Number(v)}l?a.set(u,new $(h,A)):a.set(u,h)}return a}function Ae(t,e=0,g=0,p=1){const c=t.shape,m=c.length;if(m<2)throw new Error("diagonal requires an array of at least two dimensions");const f=g<0?m+g:g,d=p<0?m+p:p;if(f<0||f>=m||d<0||d>=m)throw new Error("axis out of bounds");if(f===d)throw new Error("axis1 and axis2 cannot be the same");const b=c[f],l=c[d];let s;e>=0?s=Math.max(0,Math.min(b,l-e)):s=Math.max(0,Math.min(b+e,l));const a=[];for(let o=0;o<m;o++)o!==f&&o!==d&&a.push(c[o]);a.push(s);const n=z.zeros(a,t.dtype),i=c.filter((o,u)=>u!==f&&u!==d),r=i.reduce((o,u)=>o*u,1);for(let o=0;o<r;o++){let u=o;const w=[];for(let y=i.length-1;y>=0;y--)w.unshift(u%i[y]),u=Math.floor(u/i[y]);for(let y=0;y<s;y++){const h=new Array(m);let A=0;for(let S=0;S<m;S++)S===f?h[S]=e>=0?y:y-e:S===d?h[S]=e>=0?y+e:y:h[S]=w[A++];const x=[...w,y],N=t.get(...h);n.set(x,N)}}return n}function Se(t,...e){const g=t.indexOf("->");let p,c;g===-1?(p=t,c=pt(p)):(p=t.slice(0,g),c=t.slice(g+2));const m=p.split(",").map(o=>o.trim());if(m.length!==e.length)throw new Error(`einsum: expected ${m.length} operands, got ${e.length}`);const f=new Map;for(let o=0;o<e.length;o++){const u=m[o],w=e[o];if(u.length!==w.ndim)throw new Error(`einsum: operand ${o} has ${w.ndim} dimensions but subscript '${u}' has ${u.length} indices`);for(let y=0;y<u.length;y++){const h=u[y],A=w.shape[y];if(f.has(h)){if(f.get(h)!==A)throw new Error(`einsum: size mismatch for index '${h}': ${f.get(h)} vs ${A}`)}else f.set(h,A)}}for(const o of c)if(!f.has(o))throw new Error(`einsum: output subscript contains unknown index '${o}'`);const d=new Set(c),b=new Set;for(const o of m)for(const u of o)b.add(u);const l=[];for(const o of b)d.has(o)||l.push(o);if(e.length===2&&m.length===2){const[o,u]=m,[w,y]=e;if(o.length===2&&u.length===2&&c.length===2&&w.ndim===2&&y.ndim===2){const[h,A]=[o[0],o[1]],[x,N]=[u[0],u[1]],[S,I]=[c[0],c[1]];if(h===S&&N===I&&A===x&&l.length===1&&l[0]===A||h===S&&N===I&&A===x&&l.length===1&&l[0]===A)return X(w,y);if(A===S&&N===I&&h===x&&l.length===1&&l[0]===h){const D=G(w);return X(D,y)}if(h===S&&x===I&&A===N&&l.length===1&&l[0]===A){const D=G(y);return X(w,D)}}if(o.length===1&&u.length===1&&o===u&&c.length===0&&w.ndim===1&&y.ndim===1)return ot(e,m,l,f);if(o&&u&&o.length===1&&u.length===1&&c.length===2&&c===o+u&&l.length===0&&w.ndim===1&&y.ndim===1)return Jt(w,y)}if(e.length===1&&m[0].length===2&&c.length===0){const o=m[0];if(o[0]===o[1]&&e[0].ndim===2)return ot(e,m,l,f)}const s=Array.from(c).map(o=>f.get(o));if(s.length===0)return ot(e,m,l,f);let a=e[0].dtype;for(let o=1;o<e.length;o++)a=k(a,e[o].dtype);const n=z.zeros(s,a),i=s.reduce((o,u)=>o*u,1);let r=1;for(const o of l)r*=f.get(o);for(let o=0;o<i;o++){const u=Xt(o,s),w=new Map;for(let h=0;h<c.length;h++)w.set(c[h],u[h]);let y=0;for(let h=0;h<r;h++){let A=h;for(let N=l.length-1;N>=0;N--){const S=l[N],I=f.get(S);w.set(S,A%I),A=Math.floor(A/I)}let x=1;for(let N=0;N<e.length;N++){const S=e[N],I=m[N],D=[];for(const C of I)D.push(w.get(C));const v=S.get(...D);x*=Number(v)}y+=x}n.set(u,y)}return n}function pt(t){const e=new Map,g=t.split(",");for(const c of g)for(const m of c.trim())e.set(m,(e.get(m)||0)+1);const p=[];for(const[c,m]of e)m===1&&p.push(c);return p.sort().join("")}function ot(t,e,g,p){let c=!1;for(const l of t)if(q(l.dtype)){c=!0;break}const m=l=>l instanceof $?{re:l.re,im:l.im}:{re:Number(l),im:0};let f=1;for(const l of g)f*=p.get(l);let d=0,b=0;for(let l=0;l<f;l++){const s=new Map;let a=l;for(let r=g.length-1;r>=0;r--){const o=g[r],u=p.get(o);s.set(o,a%u),a=Math.floor(a/u)}let n=1,i=0;for(let r=0;r<t.length;r++){const o=t[r],u=e[r],w=[];for(const h of u)w.push(s.get(h));const y=o.get(...w);if(c){const h=m(y),A=n*h.re-i*h.im,x=n*h.im+i*h.re;n=A,i=x}else n*=Number(y)}d+=n,b+=i}return c?new $(d,b):d}function Xt(t,e){const g=new Array(e.length);let p=t;for(let c=e.length-1;c>=0;c--)g[c]=p%e[c],p=Math.floor(p/e[c]);return g}function xe(t,e){const g=t.shape,p=e.shape,c=g.length,m=p.length,f=k(t.dtype,e.dtype);if(c===2&&m===2){const r=Mt(t,e);if(r)return r}const d=Math.max(c,m),b=new Array(d),l=new Array(d).fill(1),s=new Array(d).fill(1);for(let r=0;r<c;r++)l[d-c+r]=g[r];for(let r=0;r<m;r++)s[d-m+r]=p[r];for(let r=0;r<d;r++)b[r]=l[r]*s[r];const a=z.zeros(b,f),n=g.reduce((r,o)=>r*o,1),i=p.reduce((r,o)=>r*o,1);for(let r=0;r<n;r++){let o=r;const u=new Array(c);for(let h=c-1;h>=0;h--)u[h]=o%g[h],o=Math.floor(o/g[h]);const w=new Array(d).fill(0);for(let h=0;h<c;h++)w[d-c+h]=u[h];const y=t.get(...u);for(let h=0;h<i;h++){let A=h;const x=new Array(m);for(let v=m-1;v>=0;v--)x[v]=A%p[v],A=Math.floor(A/p[v]);const N=new Array(d).fill(0);for(let v=0;v<m;v++)N[d-m+v]=x[v];const S=e.get(...x),I=new Array(d);for(let v=0;v<d;v++)I[v]=w[v]*s[v]+N[v];const D=J(y,S);a.set(I,D)}}return a}function Ne(t,e,g=-1,p=-1,c=-1,m){m!==void 0&&(g=m,p=m,c=m);const f=(I,D)=>I<0?D+I:I,d=f(g,t.ndim),b=f(p,e.ndim),l=k(t.dtype,e.dtype),s=q(l),a=(I,...D)=>{const v=I.get(...D);return v instanceof $||typeof v=="bigint"?v:Number(v)},n=(I,D)=>{if(I instanceof $||D instanceof $){const v=I instanceof $?I:new $(Number(I),0),C=D instanceof $?D:new $(Number(D),0);return v.mul(C)}return typeof I=="bigint"||typeof D=="bigint"?BigInt(I)*BigInt(D):I*D},i=(I,D)=>{if(I instanceof $||D instanceof $){const v=I instanceof $?I:new $(Number(I),0),C=D instanceof $?D:new $(Number(D),0);return v.sub(C)}return typeof I=="bigint"||typeof D=="bigint"?BigInt(I)-BigInt(D):I-D};if(t.ndim===1&&e.ndim===1){const I=t.shape[0],D=e.shape[0];if(I===3&&D===3){const v=a(t,0),C=a(t,1),M=a(t,2),E=a(e,0),j=a(e,1),V=a(e,2),F=z.zeros([3],l);return F.set([0],i(n(C,V),n(M,j))),F.set([1],i(n(M,E),n(v,V))),F.set([2],i(n(v,j),n(C,E))),F}else if(I===2&&D===2){const v=a(t,0),C=a(t,1),M=a(e,0),E=a(e,1);return i(n(v,E),n(C,M))}else if(I===2&&D===3||I===3&&D===2){const v=a(t,0),C=a(t,1),M=I===3?a(t,2):s?new $(0,0):_(l)?0n:0,E=a(e,0),j=a(e,1),V=D===3?a(e,2):s?new $(0,0):_(l)?0n:0,F=z.zeros([3],l);return F.set([0],i(n(C,V),n(M,j))),F.set([1],i(n(M,E),n(v,V))),F.set([2],i(n(v,j),n(C,E))),F}else throw new Error(`cross: incompatible dimensions for cross product: ${I} and ${D}`)}const r=t.shape[d],o=e.shape[b];if(r!==2&&r!==3||o!==2&&o!==3)throw new Error(`cross: incompatible dimensions for cross product: ${r} and ${o}`);const u=r===2&&o===2?0:3,w=[...t.shape.slice(0,d),...t.shape.slice(d+1)],y=[...e.shape.slice(0,b),...e.shape.slice(b+1)];if(w.length!==y.length)throw new Error("cross: incompatible shapes for cross product");for(let I=0;I<w.length;I++)if(w[I]!==y[I])throw new Error("cross: incompatible shapes for cross product");const h=w;if(r===3&&o===3&&d===t.ndim-1&&b===e.ndim-1){const I=h.reduce((v,C)=>v*C,1),D=Ct(t,e,I);if(D)return D}const A=c<0?h.length+1+c:c;let x;if(u===0?x=h:x=[...h.slice(0,A),u,...h.slice(A)],x.length===0)throw new Error("cross: unexpected scalar result from higher-dimensional input");const N=z.zeros(x,l),S=h.reduce((I,D)=>I*D,1);for(let I=0;I<S;I++){let D=I;const v=[];for(let P=h.length-1;P>=0;P--)v[P]=D%h[P],D=Math.floor(D/h[P]);const C=[...v.slice(0,d),0,...v.slice(d)],M=[...v.slice(0,b),0,...v.slice(b)],E=P=>(C[d]=P,a(t,...C)),j=P=>(M[b]=P,a(e,...M)),V=E(0),F=E(1),T=r===3?E(2):s?new $(0,0):_(l)?0n:0,B=j(0),W=j(1),U=o===3?j(2):s?new $(0,0):_(l)?0n:0;if(u===0)N.set(v,i(n(V,W),n(F,B)));else{const P=i(n(F,U),n(T,W)),wt=i(n(T,B),n(V,U)),At=i(n(V,W),n(F,B)),rt=(St,xt)=>{const Nt=[...v.slice(0,A),St,...v.slice(A)];N.set(Nt,xt)};rt(0,P),rt(1,wt),rt(2,At)}}return N}function Z(t,e=2,g,p=!1){if(typeof e!="number")throw new Error("vector_norm: ord must be a number");if(g==null){const l=t.ndim===1?t:R.ravel(t),s=l.size;let a;if(e===1/0){a=0;for(let n=0;n<s;n++)a=Math.max(a,Math.abs(Number(l.get(n))))}else if(e===-1/0){a=1/0;for(let n=0;n<s;n++)a=Math.min(a,Math.abs(Number(l.get(n))))}else if(e===0){a=0;for(let n=0;n<s;n++)Number(l.get(n))!==0&&a++}else if(e===1){a=0;for(let n=0;n<s;n++)a+=Math.abs(Number(l.get(n)))}else if(e===2){a=0;for(let n=0;n<s;n++){const i=Number(l.get(n));a+=i*i}a=Math.sqrt(a)}else{a=0;for(let n=0;n<s;n++)a+=Math.pow(Math.abs(Number(l.get(n))),e);a=Math.pow(a,1/e)}if(p){const n=new Array(t.ndim).fill(1),i=z.zeros(n,"float64");return i.set(new Array(t.ndim).fill(0),a),i}return a}const c=g<0?t.ndim+g:g;if(c<0||c>=t.ndim)throw new Error(`vector_norm: axis ${g} out of bounds for array with ${t.ndim} dimensions`);const m=p?[...t.shape.slice(0,c),1,...t.shape.slice(c+1)]:[...t.shape.slice(0,c),...t.shape.slice(c+1)];if(m.length===0)return Z(t,e,null,!1);const f=z.zeros(m,"float64"),d=t.shape[c],b=m.reduce((l,s)=>l*s,1);for(let l=0;l<b;l++){let s=l;const a=[];for(let r=m.length-1;r>=0;r--)a[r]=s%m[r],s=Math.floor(s/m[r]);const n=p?[...a.slice(0,c),0,...a.slice(c+1)]:[...a.slice(0,c),0,...a.slice(c)];let i;if(e===1/0){i=0;for(let r=0;r<d;r++)n[c]=r,i=Math.max(i,Math.abs(Number(t.get(...n))))}else if(e===-1/0){i=1/0;for(let r=0;r<d;r++)n[c]=r,i=Math.min(i,Math.abs(Number(t.get(...n))))}else if(e===0){i=0;for(let r=0;r<d;r++)n[c]=r,Number(t.get(...n))!==0&&i++}else if(e===1){i=0;for(let r=0;r<d;r++)n[c]=r,i+=Math.abs(Number(t.get(...n)))}else if(e===2){i=0;for(let r=0;r<d;r++){n[c]=r;const o=Number(t.get(...n));i+=o*o}i=Math.sqrt(i)}else{i=0;for(let r=0;r<d;r++)n[c]=r,i+=Math.pow(Math.abs(Number(t.get(...n))),e);i=Math.pow(i,1/e)}f.set(a,i)}return f}function H(t,e="fro",g=!1){if(t.ndim<2)throw new Error(`matrix_norm: input must be at least 2D, got ${t.ndim}D`);if(t.ndim>2){const f=Array.from(t.shape).slice(0,-2),d=t.shape[t.ndim-2],b=t.shape[t.ndim-1],l=f.reduce((n,i)=>n*i,1),s=new Float64Array(l),a=O(t);for(let n=0;n<l;n++){const i=n*d*b,r=z.fromData(a.slice(i,i+d*b),[d,b],"float64");s[n]=H(r,e,!1)}if(g){const n=[...f,1,1],i=z.fromData(s,f,"float64");return R.reshape(i,n)}return z.fromData(s,f,"float64")}const[p,c]=t.shape;let m;if(e==="fro"){m=0;for(let f=0;f<p;f++)for(let d=0;d<c;d++){const b=Number(t.get(f,d));m+=b*b}m=Math.sqrt(m)}else if(e==="nuc"){const{s:f}=Q(t);m=0;for(let d=0;d<f.size;d++)m+=Number(f.get(d))}else if(e===1){m=0;for(let f=0;f<c;f++){let d=0;for(let b=0;b<p;b++)d+=Math.abs(Number(t.get(b,f)));m=Math.max(m,d)}}else if(e===-1){m=1/0;for(let f=0;f<c;f++){let d=0;for(let b=0;b<p;b++)d+=Math.abs(Number(t.get(b,f)));m=Math.min(m,d)}}else if(e===1/0){m=0;for(let f=0;f<p;f++){let d=0;for(let b=0;b<c;b++)d+=Math.abs(Number(t.get(f,b)));m=Math.max(m,d)}}else if(e===-1/0){m=1/0;for(let f=0;f<p;f++){let d=0;for(let b=0;b<c;b++)d+=Math.abs(Number(t.get(f,b)));m=Math.min(m,d)}}else if(e===2){const{s:f}=Q(t);m=Number(f.get(0))}else if(e===-2){const{s:f}=Q(t);m=Number(f.get(f.size-1))}else throw new Error(`matrix_norm: invalid ord value: ${e}`);if(g){const f=z.zeros([1,1],"float64");return f.set([0,0],m),f}return m}function Ie(t,e=null,g=null,p=!1){if(e===null){if(g===null)return Z(t,2,null,p);if(typeof g=="number")return Z(t,2,g,p);e="fro"}if(Array.isArray(g)){if(g.length!==2)throw new Error("norm: axis must be a 2-tuple for matrix norms");const c=g[0]<0?t.ndim+g[0]:g[0],m=g[1]<0?t.ndim+g[1]:g[1],f=e??"fro";if(t.ndim===2)return H(t,f,p);const d=t.ndim,b=Array.from({length:d},(u,w)=>w).filter(u=>u!==c&&u!==m),l=b.map(u=>t.shape[u]),s=l.reduce((u,w)=>u*w,1)||1,a=t.shape[c],n=t.shape[m],i=[...b,c,m],r=G(t,i),o=new Float64Array(s);for(let u=0;u<s;u++){const w=new Array(l.length);let y=u;for(let x=l.length-1;x>=0;x--)w[x]=y%l[x],y=Math.floor(y/l[x]);const h=z.zeros([a,n],"float64");for(let x=0;x<a;x++)for(let N=0;N<n;N++)h.set([x,N],Number(r.get(...w,x,N)));const A=H(h,f,!1);o[u]=typeof A=="number"?A:Number(A)}if(p){const u=Array.from(t.shape);return u[c]=1,u[m]=1,z.fromData(o,u,"float64")}return l.length===0?o[0]:z.fromData(o,l,"float64")}if(t.ndim===2&&g===null&&(e==="fro"||e==="nuc"))return H(t,e,p);if(typeof e!="number"&&e!==null)throw new Error(`norm: ord '${e}' not valid for vector norm`);return Z(t,e??2,g,p)}function ht(t,e="reduced"){if(t.ndim>2){const i=t.shape.slice(0,-2),[r,o]=[t.shape[t.ndim-2],t.shape[t.ndim-1]],u=Math.min(r,o),w=i.reduce((x,N)=>x*N,1),y=e==="complete"?r:u,h=z.zeros([...i,r,y],"float64"),A=z.zeros([...i,y,o],"float64");for(let x=0;x<w;x++){const N=Y(x,i),S=z.zeros([r,o],"float64");for(let D=0;D<r;D++)for(let v=0;v<o;v++)S.set([D,v],Number(t.get(...N,D,v)));const I=ht(S,e);for(let D=0;D<r;D++)for(let v=0;v<y;v++)h.set([...N,D,v],Number(I.q.get(D,v)));for(let D=0;D<y;D++)for(let v=0;v<o;v++)A.set([...N,D,v],Number(I.r.get(D,v)))}return{q:h,r:A}}if(t.ndim!==2)throw new Error(`qr: input must be 2D, got ${t.ndim}D`);if(e==="reduced"){const i=Et(t);if(i)return i}const[g,p]=t.shape,c=Math.min(g,p),m=z.zeros([g,p],"float64");for(let i=0;i<g;i++)for(let r=0;r<p;r++)m.set([i,r],Number(t.get(i,r)));const f=[],d=[];for(let i=0;i<c;i++){const r=g-i,o=[];for(let x=i;x<g;x++)o.push(Number(m.get(x,i)));let u=0;for(let x=0;x<r;x++)u+=o[x]*o[x];if(u=Math.sqrt(u),u<1e-15){f.push(o),d.push(0);continue}const w=o[0]>=0?1:-1,y=o[0]+w*u,h=[1];for(let x=1;x<r;x++)h.push(o[x]/y);const A=w*y/u;d.push(A),f.push(h);for(let x=i;x<p;x++){let N=0;for(let S=0;S<r;S++)N+=h[S]*Number(m.get(i+S,x));for(let S=0;S<r;S++)m.set([i+S,x],Number(m.get(i+S,x))-A*h[S]*N)}}if(e==="raw"){const i=z.zeros([g,p],"float64");for(let o=0;o<g;o++)for(let u=0;u<p;u++)i.set([o,u],Number(m.get(o,u)));const r=z.zeros([c],"float64");for(let o=0;o<c;o++)r.set([o],d[o]);return{h:i,tau:r}}if(e==="r"){const i=z.zeros([c,p],"float64");for(let r=0;r<c;r++)for(let o=r;o<p;o++)i.set([r,o],Number(m.get(r,o)));return i}const b=e==="complete"?g:c,l=z.zeros([g,b],"float64");for(let i=0;i<Math.min(g,b);i++)l.set([i,i],1);for(let i=c-1;i>=0;i--){const r=f[i],o=d[i],u=g-i;for(let w=i;w<b;w++){let y=0;for(let h=0;h<u;h++)y+=r[h]*Number(l.get(i+h,w));for(let h=0;h<u;h++)l.set([i+h,w],Number(l.get(i+h,w))-o*r[h]*y)}}const s=z.zeros([g,b],"float64");for(let i=0;i<g;i++)for(let r=0;r<b;r++)s.set([i,r],Number(l.get(i,r)));const a=e==="complete"?g:c,n=z.zeros([a,p],"float64");for(let i=0;i<a;i++)for(let r=0;r<p;r++)r>=i&&n.set([i,r],Number(m.get(i,r)));return{q:s,r:n}}function Wt(t,e=!1){if(t.ndim<2)throw new Error(`cholesky: input must be at least 2D, got ${t.ndim}D`);if(t.ndim>2){const d=Array.from(t.shape).slice(0,-2),b=t.shape[t.ndim-1],l=t.shape[t.ndim-2];if(l!==b)throw new Error(`cholesky: last 2 dimensions must be square, got ${l}x${b}`);const s=d.reduce((i,r)=>i*r,1),a=new Float64Array(s*b*b),n=O(t);for(let i=0;i<s;i++){const r=i*b*b,o=z.fromData(n.slice(r,r+b*b),[b,b],"float64"),u=Wt(o,e);a.set(O(u),r)}return z.fromData(a,[...d,b,b],"float64")}const[g,p]=t.shape;if(g!==p)throw new Error(`cholesky: matrix must be square, got ${g}x${p}`);const c=jt(t);if(c){if(e){const d=g,b=z.zeros([d,d],"float64");for(let l=0;l<d;l++)for(let s=l;s<d;s++)b.set([l,s],Number(c.get(s,l)));return b}return c}const m=g,f=z.zeros([m,m],"float64");for(let d=0;d<m;d++)for(let b=0;b<=d;b++){let l=0;if(d===b){for(let a=0;a<b;a++)l+=Number(f.get(b,a))**2;const s=Number(t.get(b,b))-l;if(s<0)throw new Error("cholesky: matrix is not positive definite");f.set([b,b],Math.sqrt(s))}else{for(let a=0;a<b;a++)l+=Number(f.get(d,a))*Number(f.get(b,a));const s=Number(f.get(b,b));if(Math.abs(s)<1e-15)throw new Error("cholesky: matrix is not positive definite");f.set([d,b],(Number(t.get(d,b))-l)/s)}}if(e){const d=z.zeros([m,m],"float64");for(let b=0;b<m;b++)for(let l=b;l<m;l++)d.set([b,l],Number(f.get(l,b)));return d}return f}function Q(t){if(t.ndim!==2)throw new Error(`svd: input must be 2D, got ${t.ndim}D`);const e=Vt(t);if(e)return e;const[g,p]=t.shape,c=Math.min(g,p),m=z.zeros([p,p],"float64");for(let n=0;n<p;n++)for(let i=0;i<p;i++){let r=0;for(let o=0;o<g;o++)r+=Number(t.get(o,n))*Number(t.get(o,i));m.set([n,i],r)}const{values:f,vectors:d}=st(m),b=Array.from({length:p},(n,i)=>i);b.sort((n,i)=>f[i]-f[n]);const l=z.zeros([c],"float64");for(let n=0;n<c;n++){const i=f[b[n]];l.set([n],Math.sqrt(Math.max(0,i)))}const s=z.zeros([p,p],"float64");for(let n=0;n<p;n++)for(let i=0;i<p;i++)s.set([n,i],d[i][b[n]]);const a=z.zeros([g,g],"float64");for(let n=0;n<g;n++)for(let i=0;i<c;i++){const r=Number(l.get(i));if(r>1e-10){let o=0;for(let u=0;u<p;u++)o+=Number(t.get(n,u))*Number(s.get(i,u));a.set([n,i],o/r)}}if(g>c)for(let n=c;n<g;n++){const i=new Array(g).fill(0);i[n]=1;for(let o=0;o<n;o++){let u=0;for(let w=0;w<g;w++)u+=i[w]*Number(a.get(w,o));for(let w=0;w<g;w++)i[w]=i[w]-u*Number(a.get(w,o))}let r=0;for(let o=0;o<g;o++)r+=i[o]*i[o];if(r=Math.sqrt(r),r>1e-10)for(let o=0;o<g;o++)a.set([o,n],i[o]/r)}return{u:a,s:l,vt:s}}function st(t){const e=t.shape[0],g=100*e*e,p=1e-10,c=[];for(let d=0;d<e;d++){c.push([]);for(let b=0;b<e;b++)c[d].push(Number(t.get(d,b)))}const m=[];for(let d=0;d<e;d++){m.push([]);for(let b=0;b<e;b++)m[d].push(d===b?1:0)}for(let d=0;d<g;d++){let b=0,l=0,s=1;for(let h=0;h<e;h++)for(let A=h+1;A<e;A++)Math.abs(c[h][A])>b&&(b=Math.abs(c[h][A]),l=h,s=A);if(b<p)break;const a=c[l][l],n=c[s][s],i=c[l][s];let r;Math.abs(a-n)<1e-15?r=Math.PI/4:r=.5*Math.atan2(2*i,n-a);const o=Math.cos(r),u=Math.sin(r),w=o*o*a+u*u*n-2*u*o*i,y=u*u*a+o*o*n+2*u*o*i;c[l][l]=w,c[s][s]=y,c[l][s]=0,c[s][l]=0;for(let h=0;h<e;h++)if(h!==l&&h!==s){const A=c[h][l],x=c[h][s];c[h][l]=o*A-u*x,c[l][h]=c[h][l],c[h][s]=u*A+o*x,c[s][h]=c[h][s]}for(let h=0;h<e;h++){const A=m[h][l],x=m[h][s];m[h][l]=o*A-u*x,m[h][s]=u*A+o*x}}const f=[];for(let d=0;d<e;d++)f.push(c[d][d]);return{values:f,vectors:m}}function gt(t,e=!0,g=!0){if(t.ndim>2){const c=t.shape.slice(0,-2),[m,f]=[t.shape[t.ndim-2],t.shape[t.ndim-1]],d=Math.min(m,f),b=c.reduce((r,o)=>r*o,1);if(!g){const r=z.zeros([...c,d],"float64");for(let o=0;o<b;o++){const u=Y(o,c),w=z.zeros([m,f],"float64");for(let h=0;h<m;h++)for(let A=0;A<f;A++)w.set([h,A],Number(t.get(...u,h,A)));const{s:y}=Q(w);for(let h=0;h<d;h++)r.set([...u,h],Number(y.get(h)))}return r}const l=e?m:d,s=e?f:d,a=z.zeros([...c,m,l],"float64"),n=z.zeros([...c,d],"float64"),i=z.zeros([...c,s,f],"float64");for(let r=0;r<b;r++){const o=Y(r,c),u=z.zeros([m,f],"float64");for(let y=0;y<m;y++)for(let h=0;h<f;h++)u.set([y,h],Number(t.get(...o,y,h)));const w=gt(u,e,!0);for(let y=0;y<m;y++)for(let h=0;h<l;h++)a.set([...o,y,h],Number(w.u.get(y,h)));for(let y=0;y<d;y++)n.set([...o,y],Number(w.s.get(y)));for(let y=0;y<s;y++)for(let h=0;h<f;h++)i.set([...o,y,h],Number(w.vt.get(y,h)))}return{u:a,s:n,vt:i}}const p=Q(t);if(!g)return p.s;if(!e){const[c,m]=t.shape,f=Math.min(c,m),d=z.zeros([c,f],"float64");for(let l=0;l<c;l++)for(let s=0;s<f;s++)d.set([l,s],Number(p.u.get(l,s)));const b=z.zeros([f,m],"float64");for(let l=0;l<f;l++)for(let s=0;s<m;s++)b.set([l,s],Number(p.vt.get(l,s)));return{u:d,s:p.s,vt:b}}return p}function Qt(t){if(t.ndim<2)throw new Error(`det: input must be at least 2D, got ${t.ndim}D`);if(t.ndim>2){const l=Array.from(t.shape).slice(0,-2),s=t.shape[t.ndim-1],a=t.shape[t.ndim-2];if(a!==s)throw new Error(`det: last 2 dimensions must be square, got ${a}x${s}`);const n=l.reduce((o,u)=>o*u,1),i=new Float64Array(n),r=O(t);for(let o=0;o<n;o++){const u=o*s*s,w=z.fromData(r.slice(u,u+s*s),[s,s],"float64");i[o]=Qt(w)}return z.fromData(i,l,"float64")}const[e,g]=t.shape;if(e!==g)throw new Error(`det: matrix must be square, got ${e}x${g}`);const p=e;if(p===0)return 1;const c=t.data;if(p===1)return Number(c[0]);if(p===2)return Number(c[0])*Number(c[3])-Number(c[1])*Number(c[2]);const{lu:m,sign:f}=tt(t),d=m.data;let b=f;for(let l=0;l<p;l++)b*=d[l*p+l];return b}function tt(t){const[e,g]=t.shape,p=e,c=g,m=z.zeros([p,c],"float64"),f=m.data,d=t.data;for(let s=0;s<p*c;s++)f[s]=Number(d[s]);const b=Array.from({length:p},(s,a)=>a);let l=1;for(let s=0;s<Math.min(p,c);s++){let a=Math.abs(f[s*c+s]),n=s;for(let r=s+1;r<p;r++){const o=Math.abs(f[r*c+s]);o>a&&(a=o,n=r)}if(n!==s){for(let o=0;o<c;o++){const u=f[s*c+o];f[s*c+o]=f[n*c+o],f[n*c+o]=u}const r=b[s];b[s]=b[n],b[n]=r,l=-l}const i=f[s*c+s];if(Math.abs(i)>1e-15)for(let r=s+1;r<p;r++){const o=f[r*c+s]/i;f[r*c+s]=o;for(let u=s+1;u<c;u++)f[r*c+u]=f[r*c+u]-o*f[s*c+u]}}return{lu:m,piv:b,sign:l}}function et(t){if(t.ndim<2)throw new Error(`inv: input must be at least 2D, got ${t.ndim}D`);if(t.ndim>2){const l=Array.from(t.shape).slice(0,-2),s=t.shape[t.ndim-1],a=t.shape[t.ndim-2];if(a!==s)throw new Error(`inv: last 2 dimensions must be square, got ${a}x${s}`);const n=l.reduce((o,u)=>o*u,1),i=O(t),r=new Float64Array(n*s*s);for(let o=0;o<n;o++){const u=o*s*s,w=z.fromData(i.slice(u,u+s*s),[s,s],"float64"),h=et(w).data;for(let A=0;A<s*s;A++)r[u+A]=h[A]}return z.fromData(r,Array.from(t.shape),"float64")}const[e,g]=t.shape;if(e!==g)throw new Error(`inv: matrix must be square, got ${e}x${g}`);const p=e,{lu:c,piv:m}=tt(t),f=c.data,d=z.zeros([p,p],"float64"),b=d.data;for(let l=0;l<p;l++){const s=new Float64Array(p);for(let a=0;a<p;a++){let n=m[a]===l?1:0;for(let i=0;i<a;i++)n-=f[a*p+i]*s[i];s[a]=n}for(let a=p-1;a>=0;a--){let n=s[a];for(let r=a+1;r<p;r++)n-=f[a*p+r]*b[r*p+l];const i=f[a*p+a];if(Math.abs(i)<1e-15)throw new Error("inv: singular matrix");b[a*p+l]=n/i}}return d}function dt(t,e){const[g]=t.shape,p=g,{lu:c,piv:m}=tt(t),f=c.data,d=e.data,b=new Float64Array(p);for(let n=0;n<p;n++)b[n]=Number(d[m[n]]);const l=new Float64Array(p);for(let n=0;n<p;n++){let i=b[n];for(let r=0;r<n;r++)i-=f[n*p+r]*l[r];l[n]=i}const s=z.zeros([p],"float64"),a=s.data;for(let n=p-1;n>=0;n--){let i=l[n];for(let o=n+1;o<p;o++)i-=f[n*p+o]*a[o];const r=f[n*p+n];if(Math.abs(r)<1e-15)throw new Error("solve: singular matrix");a[n]=i/r}return s}function Gt(t,e){if(t.ndim!==2)throw new Error(`solve: coefficient matrix must be 2D, got ${t.ndim}D`);const[g,p]=t.shape;if(g!==p)throw new Error(`solve: coefficient matrix must be square, got ${g}x${p}`);const c=g;if(e.ndim===1){if(e.shape[0]!==c)throw new Error(`solve: incompatible shapes (${g},${p}) and (${e.shape[0]},)`);return dt(t,e)}if(e.ndim===2){if(e.shape[0]!==c)throw new Error(`solve: incompatible shapes (${g},${p}) and (${e.shape[0]},${e.shape[1]})`);const m=e.shape[1],f=z.zeros([c,m],"float64");for(let d=0;d<m;d++){const b=z.zeros([c],"float64");for(let s=0;s<c;s++)b.set([s],Number(e.get(s,d)));const l=dt(t,b);for(let s=0;s<c;s++)f.set([s,d],Number(l.get(s)))}return f}throw new Error(`solve: b must be 1D or 2D, got ${e.ndim}D`)}function De(t,e,g=null){if(t.ndim!==2)throw new Error(`lstsq: coefficient matrix must be 2D, got ${t.ndim}D`);const[p,c]=t.shape,{u:m,s:f,vt:d}=Q(t),b=Math.min(p,c),l=g??Math.max(p,c)*Number.EPSILON,a=Number(f.get(0))*l;let n=0;for(let y=0;y<b;y++)Number(f.get(y))>a&&n++;const i=e.ndim===1?R.reshape(e,[e.size,1]):e,r=i.shape[1];if(i.shape[0]!==p)throw new Error(`lstsq: incompatible shapes (${p},${c}) and (${e.shape.join(",")})`);const o=z.zeros([c,r],"float64");for(let y=0;y<r;y++){const h=new Array(p).fill(0);for(let A=0;A<p;A++)for(let x=0;x<p;x++)h[A]+=Number(m.get(x,A))*Number(i.get(x,y));for(let A=0;A<c;A++){let x=0;for(let N=0;N<b;N++){const S=Number(f.get(N));S>a&&(x+=Number(d.get(N,A))*h[N]/S)}o.set([A,y],x)}}let u;if(p>c){u=z.zeros([r],"float64");for(let y=0;y<r;y++){let h=0;for(let A=0;A<p;A++){let x=0;for(let S=0;S<c;S++)x+=Number(t.get(A,S))*Number(o.get(S,y));const N=x-Number(i.get(A,y));h+=N*N}u.set([y],h)}}else u=z.zeros([0],"float64");return{x:e.ndim===1?R.reshape(o,[c]):o,residuals:u,rank:n,s:f}}function ve(t,e=2){if(t.ndim!==2)throw new Error(`cond: input must be 2D, got ${t.ndim}D`);const[g,p]=t.shape;if(e===2||e===-2){const{s:d}=Q(t),b=Math.min(g,p),l=Number(d.get(0)),s=Number(d.get(b-1));return e===2?s>0?l/s:1/0:l>0?s/l:0}if(g!==p)throw new Error(`cond: matrix must be square for p=${e}`);const c=H(t,e),m=et(t),f=H(m,e);return c*f}function $e(t,e){if(t.ndim===0)return Number(t.get())!==0?1:0;if(t.ndim===1){for(let f=0;f<t.size;f++)if(Number(t.get(f))!==0)return 1;return 0}if(t.ndim!==2)throw new Error(`matrix_rank: input must be at most 2D, got ${t.ndim}D`);const{s:g}=Q(t),p=Number(g.get(0)),c=e??p*Math.max(t.shape[0],t.shape[1])*Number.EPSILON;let m=0;for(let f=0;f<g.size;f++)Number(g.get(f))>c&&m++;return m}function ze(t,e){if(t.ndim!==2)throw new Error(`matrix_power: input must be 2D, got ${t.ndim}D`);const[g,p]=t.shape;if(g!==p)throw new Error(`matrix_power: matrix must be square, got ${g}x${p}`);const c=g;if(!Number.isInteger(e))throw new Error("matrix_power: exponent must be an integer");if(e===0){const a=z.zeros([c,c],"float64");for(let n=0;n<c;n++)a.set([n,n],1);return a}let m=t,f=e;e<0&&(m=et(t),f=-e);const d=m.dtype==="float32"?"float32":"float64";let b=z.zeros([c,c],d);const l=b.data;for(let a=0;a<c;a++)l[a*c+a]=1;let s;if(m.isCContiguous&&(m.dtype==="float64"||m.dtype==="float32"))s=m.copy();else{s=z.zeros([c,c],d);const a=s.data,n=m.data,i=m.offset,[r=0,o=0]=m.strides;for(let u=0;u<c;u++)for(let w=0;w<c;w++)a[u*c+w]=Number(n[i+u*r+w*o])}for(;f>0;)f&1&&(b=X(b,s)),s=X(s,s),f>>=1;return b}function Ht(t,e=1e-15){if(t.ndim<2)throw new Error(`pinv: input must be at least 2D, got ${t.ndim}D`);if(t.ndim>2){const a=Array.from(t.shape).slice(0,-2),n=t.shape[t.ndim-2],i=t.shape[t.ndim-1],r=a.reduce((w,y)=>w*y,1),o=new Float64Array(r*i*n),u=O(t);for(let w=0;w<r;w++){const y=w*n*i,h=z.fromData(u.slice(y,y+n*i),[n,i],"float64"),A=Ht(h,e);o.set(O(A),w*i*n)}return z.fromData(o,[...a,i,n],"float64")}const[g,p]=t.shape,{u:c,s:m,vt:f}=Q(t),d=Math.min(g,p),l=Number(m.get(0))*e,s=z.zeros([p,g],"float64");for(let a=0;a<p;a++)for(let n=0;n<g;n++){let i=0;for(let r=0;r<d;r++){const o=Number(m.get(r));o>l&&(i+=Number(f.get(r,a))*Number(c.get(n,r))/o)}s.set([a,n],i)}return s}function bt(t){if(t.ndim<2)throw new Error(`eig: input must be at least 2D, got ${t.ndim}D`);if(t.ndim>2){const s=Array.from(t.shape).slice(0,-2),a=t.shape[t.ndim-1],n=t.shape[t.ndim-2];if(n!==a)throw new Error(`eig: last 2 dimensions must be square, got ${n}x${a}`);const i=s.reduce((w,y)=>w*y,1),r=new Float64Array(i*a),o=new Float64Array(i*a*a),u=O(t);for(let w=0;w<i;w++){const y=w*a*a,h=z.fromData(u.slice(y,y+a*a),[a,a],"float64"),{w:A,v:x}=bt(h);r.set(O(A),w*a),o.set(O(x),y)}return{w:z.fromData(r,[...s,a],"float64"),v:z.fromData(o,[...s,a,a],"float64")}}const[e,g]=t.shape;if(e!==g)throw new Error(`eig: matrix must be square, got ${e}x${g}`);const p=e;let c=!0;t:for(let s=0;s<p;s++)for(let a=s+1;a<p;a++)if(Math.abs(Number(t.get(s,a))-Number(t.get(a,s)))>1e-10){c=!1;break t}if(c){const{values:s,vectors:a}=st(t),n=z.zeros([p],"float64"),i=z.zeros([p,p],"float64");for(let r=0;r<p;r++){n.set([r],s[r]);for(let o=0;o<p;o++)i.set([o,r],a[o][r])}return{w:n,v:i}}const{values:m,vectors:f,hasComplexEigenvalues:d}=Kt(t);d&&console.warn("numpy-ts: eig() detected complex eigenvalues which cannot be represented. Results are real approximations and may be inaccurate. For symmetric matrices, use eigh() instead.");const b=z.zeros([p],"float64"),l=z.zeros([p,p],"float64");for(let s=0;s<p;s++){b.set([s],m[s]);for(let a=0;a<p;a++)l.set([a,s],f[a][s])}return{w:b,v:l}}function Kt(t){const e=t.shape[0],g=1e3,p=1e-10;let c=z.zeros([e,e],"float64");for(let l=0;l<e;l++)for(let s=0;s<e;s++)c.set([l,s],Number(t.get(l,s)));let m=z.zeros([e,e],"float64");for(let l=0;l<e;l++)m.set([l,l],1);for(let l=0;l<g;l++){let s=0;for(let r=0;r<e;r++)for(let o=0;o<e;o++)r!==o&&(s+=Number(c.get(r,o))**2);if(Math.sqrt(s)<p*e)break;const a=ht(c,"reduced"),n=a.q,i=a.r;c=X(i,n),m=X(m,n)}let f=!1;for(let l=0;l<e-1;l++){const s=Math.abs(Number(c.get(l+1,l))),a=Math.abs(Number(c.get(l,l))),n=Math.abs(Number(c.get(l+1,l+1))),i=Math.max(a,n,1e-10);if(s/i>1e-6){f=!0;break}}const d=[];for(let l=0;l<e;l++)d.push(Number(c.get(l,l)));const b=[];for(let l=0;l<e;l++){b.push([]);for(let s=0;s<e;s++)b[l].push(Number(m.get(l,s)))}return{values:d,vectors:b,hasComplexEigenvalues:f}}function yt(t,e="L"){if(t.ndim<2)throw new Error(`eigh: input must be at least 2D, got ${t.ndim}D`);if(t.ndim>2){const a=Array.from(t.shape).slice(0,-2),n=t.shape[t.ndim-1],i=t.shape[t.ndim-2];if(i!==n)throw new Error(`eigh: last 2 dimensions must be square, got ${i}x${n}`);const r=a.reduce((y,h)=>y*h,1),o=new Float64Array(r*n),u=new Float64Array(r*n*n),w=O(t);for(let y=0;y<r;y++){const h=y*n*n,A=z.fromData(w.slice(h,h+n*n),[n,n],"float64"),{w:x,v:N}=yt(A,e);o.set(O(x),y*n),u.set(O(N),h)}return{w:z.fromData(o,[...a,n],"float64"),v:z.fromData(u,[...a,n,n],"float64")}}const[g,p]=t.shape;if(g!==p)throw new Error(`eigh: matrix must be square, got ${g}x${p}`);const c=g,m=z.zeros([c,c],"float64");for(let a=0;a<c;a++)for(let n=0;n<c;n++)e==="L"?a>=n&&(m.set([a,n],Number(t.get(a,n))),m.set([n,a],Number(t.get(a,n)))):n>=a&&(m.set([a,n],Number(t.get(a,n))),m.set([n,a],Number(t.get(a,n))));const{values:f,vectors:d}=st(m),b=Array.from({length:c},(a,n)=>n);b.sort((a,n)=>f[a]-f[n]);const l=z.zeros([c],"float64"),s=z.zeros([c,c],"float64");for(let a=0;a<c;a++){l.set([a],f[b[a]]);for(let n=0;n<c;n++)s.set([n,a],d[n][b[a]])}return{w:l,v:s}}function Me(t){const{w:e}=bt(t);return e}function Ce(t,e="L"){const{w:g}=yt(t,e);return g}function Ee(t,e){const g=R.flatten(t),p=R.flatten(e),c=g.shape[0],m=p.shape[0];if(c!==m)throw new Error(`vdot: arrays must have same number of elements, got ${c} and ${m}`);const f=q(t.dtype)||q(e.dtype);if(f){const s=zt(g,p);if(s!==null)return s}else{const s=nt(g,p);if(s!==null)return s}if(f){let s=0,a=0;for(let n=0;n<c;n++){const i=g.get(n),r=p.get(n),o=i instanceof $?i.re:Number(i),u=i instanceof $?i.im:0,w=r instanceof $?r.re:Number(r),y=r instanceof $?r.im:0;s+=o*w+u*y,a+=-u*w+o*y}return Math.abs(a)<1e-15?s:new $(s,a)}const d=k(t.dtype,e.dtype),b=L(d);if(b){b[0]=0;for(let s=0;s<c;s++)b[0]+=Number(g.get(s))*Number(p.get(s));return b[0]}let l=0;for(let s=0;s<c;s++){const a=g.get(s),n=p.get(s);typeof a=="bigint"&&typeof n=="bigint"?l=(typeof l=="bigint"?l:BigInt(l))+a*n:l=(typeof l=="bigint"?Number(l):l)+Number(a)*Number(n)}return l}function je(t,e,g=-1){const p=t.ndim,c=e.ndim,m=g<0?p+g:g,f=g<0?c+g:g;if(m<0||m>=p)throw new Error(`vecdot: axis ${g} out of bounds for array with ${p} dimensions`);if(f<0||f>=c)throw new Error(`vecdot: axis ${g} out of bounds for array with ${c} dimensions`);const d=t.shape[m],b=e.shape[f];if(d!==b)throw new Error(`vecdot: axis dimensions must match, got ${d} and ${b}`);if(p===1&&c===1){if(!(q(t.dtype)||q(e.dtype)))return K(t,e);const h=t.shape[0];let A=0,x=0;for(let N=0;N<h;N++){const S=t.get(N),I=e.get(N),D=S instanceof $?new $(S.re,-S.im):S,v=J(D,I);v instanceof $?(A+=v.re,x+=v.im):A+=Number(v)}return new $(A,x)}if(p===2&&c===2&&g===-1){const y=$t(t,e);if(y)return y}const l=[...t.shape.slice(0,m),...t.shape.slice(m+1)],s=[...e.shape.slice(0,f),...e.shape.slice(f+1)],a=d,n=q(t.dtype)||q(e.dtype),i=k(t.dtype,e.dtype),r=l.length>s.length?l:s,o=L(i);if(r.length===0){if(o){o[0]=0;for(let h=0;h<a;h++)o[0]+=Number(t.get(h))*Number(e.get(h));return o[0]}let y=n?new $(0,0):_(i)?0n:0;for(let h=0;h<a;h++){const A=t.get(h),x=e.get(h),N=A instanceof $?new $(A.re,-A.im):A,S=J(N,x);if(y instanceof $||S instanceof $){const I=y instanceof $?y:new $(Number(y),0),D=S instanceof $?S:new $(Number(S),0);y=I.add(D)}else typeof y=="bigint"||typeof S=="bigint"?y=BigInt(y)+BigInt(S):y=y+S}return y}const u=z.zeros(r,i),w=r.reduce((y,h)=>y*h,1);for(let y=0;y<w;y++){const h=[];let A=y;for(let S=r.length-1;S>=0;S--)h.unshift(A%r[S]),A=Math.floor(A/r[S]);const x=[...h.slice(0,m),0,...h.slice(m)],N=[...h.slice(0,f),0,...h.slice(f)];if(o){o[0]=0;for(let S=0;S<a;S++)x[m]=S,N[f]=S,o[0]+=Number(t.get(...x))*Number(e.get(...N));u.set(h,o[0])}else{let S=n?new $(0,0):_(i)?0n:0;for(let I=0;I<a;I++){x[m]=I,N[f]=I;const D=t.get(...x),v=e.get(...N),C=D instanceof $?new $(D.re,-D.im):D,M=J(C,v);if(S instanceof $||M instanceof $){const E=S instanceof $?S:new $(Number(S),0),j=M instanceof $?M:new $(Number(M),0);S=E.add(j)}else typeof S=="bigint"||typeof M=="bigint"?S=BigInt(S)+BigInt(M):S=S+M}u.set(h,S)}}return u}function Ve(t){if(t.ndim<2)throw new Error(`matrix_transpose: input must have at least 2 dimensions, got ${t.ndim}D`);const e=Array.from({length:t.ndim},(p,c)=>c),g=e.length-1;return e[g]=g-1,e[g-1]=g,G(t,e)}function Fe(t,e){return G(t,e)}function Be(t,e){if(t.ndim<2)throw new Error(`matvec: x1 must have at least 2 dimensions, got ${t.ndim}D`);if(e.ndim<1)throw new Error(`matvec: x2 must have at least 1 dimension, got ${e.ndim}D`);const g=t.shape[t.ndim-2],p=t.shape[t.ndim-1],c=e.shape[e.ndim-1];if(p!==c)throw new Error(`matvec: last axis of x1 (${p}) must match last axis of x2 (${c})`);if(t.ndim===2&&e.ndim===1)return K(t,e);const m=t.shape.slice(0,-2),f=e.shape.slice(0,-1),d=Math.max(m.length,f.length),b=[...Array(d-m.length).fill(1),...m],l=[...Array(d-f.length).fill(1),...f],s=[];for(let u=0;u<d;u++){const w=b[u],y=l[u];if(w!==1&&y!==1&&w!==y)throw new Error(`matvec: batch dimensions not broadcastable: ${m} vs ${f}`);s.push(Math.max(w,y))}const a=[...s,g],n=k(t.dtype,e.dtype),i=z.zeros(a,n),r=q(n),o=s.reduce((u,w)=>u*w,1);for(let u=0;u<o;u++){const w=[];let y=u;for(let N=s.length-1;N>=0;N--)w.unshift(y%s[N]),y=Math.floor(y/s[N]);const h=w.slice(-(m.length||1)).map((N,S)=>(m[S]??1)===1?0:N),A=w.slice(-(f.length||1)).map((N,S)=>(f[S]??1)===1?0:N),x=L(n);for(let N=0;N<g;N++)if(x){x[0]=0;for(let S=0;S<p;S++){const I=[...h,N,S],D=[...A,S];x[0]+=Number(t.get(...I))*Number(e.get(...D))}i.set([...w,N],x[0])}else{let S=r?new $(0,0):_(n)?0n:0;for(let I=0;I<p;I++){const D=[...h,N,I],v=[...A,I],C=t.get(...D),M=e.get(...v),E=J(C,M);if(S instanceof $||E instanceof $){const j=S instanceof $?S:new $(Number(S),0),V=E instanceof $?E:new $(Number(E),0);S=j.add(V)}else typeof S=="bigint"||typeof E=="bigint"?S=BigInt(S)+BigInt(E):S=S+E}i.set([...w,N],S)}}return i}function Re(t,e){if(t.ndim<1)throw new Error(`vecmat: x1 must have at least 1 dimension, got ${t.ndim}D`);if(e.ndim<2)throw new Error(`vecmat: x2 must have at least 2 dimensions, got ${e.ndim}D`);const g=t.shape[t.ndim-1],p=e.shape[e.ndim-2],c=e.shape[e.ndim-1];if(g!==p)throw new Error(`vecmat: last axis of x1 (${g}) must match second-to-last axis of x2 (${p})`);if(t.ndim===1&&e.ndim===2)return K(t,e);const m=t.shape.slice(0,-1),f=e.shape.slice(0,-2),d=Math.max(m.length,f.length),b=[...Array(d-m.length).fill(1),...m],l=[...Array(d-f.length).fill(1),...f],s=[];for(let u=0;u<d;u++){const w=b[u],y=l[u];if(w!==1&&y!==1&&w!==y)throw new Error(`vecmat: batch dimensions not broadcastable: ${m} vs ${f}`);s.push(Math.max(w,y))}const a=[...s,c],n=k(t.dtype,e.dtype),i=z.zeros(a,n),r=q(n),o=s.reduce((u,w)=>u*w,1);for(let u=0;u<o;u++){const w=[];let y=u;for(let N=s.length-1;N>=0;N--)w.unshift(y%s[N]),y=Math.floor(y/s[N]);const h=w.slice(-(m.length||1)).map((N,S)=>(m[S]??1)===1?0:N),A=w.slice(-(f.length||1)).map((N,S)=>(f[S]??1)===1?0:N),x=L(n);for(let N=0;N<c;N++)if(x){x[0]=0;for(let S=0;S<g;S++){const I=[...h,S],D=[...A,S,N];x[0]+=Number(t.get(...I))*Number(e.get(...D))}i.set([...w,N],x[0])}else{let S=r?new $(0,0):_(n)?0n:0;for(let I=0;I<g;I++){const D=[...h,I],v=[...A,I,N],C=t.get(...D),M=e.get(...v),E=J(C,M);if(S instanceof $||E instanceof $){const j=S instanceof $?S:new $(Number(S),0),V=E instanceof $?E:new $(Number(E),0);S=j.add(V)}else typeof S=="bigint"||typeof E=="bigint"?S=BigInt(S)+BigInt(E):S=S+E}i.set([...w,N],S)}}return i}function Yt(t){if(t.ndim<2)throw new Error(`slogdet: input must be at least 2D, got ${t.ndim}D`);if(t.ndim>2){const l=Array.from(t.shape).slice(0,-2),s=t.shape[t.ndim-1],a=t.shape[t.ndim-2];if(a!==s)throw new Error(`slogdet: last 2 dimensions must be square, got ${a}x${s}`);const n=l.reduce((u,w)=>u*w,1),i=new Float64Array(n),r=new Float64Array(n),o=O(t);for(let u=0;u<n;u++){const w=u*s*s,y=z.fromData(o.slice(w,w+s*s),[s,s],"float64"),{sign:h,logabsdet:A}=Yt(y);i[u]=h,r[u]=A}return{sign:z.fromData(i,l,"float64"),logabsdet:z.fromData(r,l,"float64")}}const[e,g]=t.shape;if(e!==g)throw new Error(`slogdet: matrix must be square, got ${e}x${g}`);const p=e;if(p===0)return{sign:1,logabsdet:0};const{lu:c,sign:m}=tt(t),f=c.data;let d=0,b=m;for(let l=0;l<p;l++){const s=f[l*p+l];if(s===0)return{sign:0,logabsdet:-1/0};s<0&&(b=-b),d+=Math.log(Math.abs(s))}return{sign:b,logabsdet:d}}function ke(t){return gt(t,!0,!1)}function qe(t){if(t.length<2)throw new Error("multi_dot: need at least 2 arrays");if(t.length===2)return X(t[0],t[1]);let e=t[0];for(let g=1;g<t.length;g++)e=X(e,t[g]);return e}function Te(t,e=2){if(e<=0)throw new Error(`tensorinv: ind must be positive, got ${e}`);const g=t.shape,p=t.ndim;if(p<e)throw new Error(`tensorinv: array has ${p} dimensions, ind=${e} is too large`);let c=1;for(let l=0;l<e;l++)c*=g[l];let m=1;for(let l=e;l<p;l++)m*=g[l];if(c!==m)throw new Error(`tensorinv: product of first ${e} dimensions (${c}) must equal product of remaining dimensions (${m})`);const f=R.reshape(t,[c,m]),d=et(f),b=[...g.slice(e),...g.slice(0,e)];return R.reshape(d,b)}function _e(t,e,g){const p=t.shape,c=e.shape,m=t.ndim,f=e.ndim;let d;g==null?d=Array.from({length:f},(h,A)=>m-f+A):d=g.map(h=>h<0?m+h:h);const b=[];for(let h=0;h<m;h++)d.includes(h)||b.push(h);const l=[...b,...d],s=G(t,l),n=d.map(h=>p[h]).reduce((h,A)=>h*A,1),r=b.map(h=>p[h]).reduce((h,A)=>h*A,1),o=c.reduce((h,A)=>h*A,1);if(n!==o)throw new Error(`tensorsolve: dimensions don't match - sum dimensions product (${n}) != b total elements (${o})`);if(r!==n)throw new Error(`tensorsolve: non-square problem - other dimensions product (${r}) != sum dimensions product (${n})`);const u=R.reshape(s,[r,n]),w=R.reshape(e,[n]),y=Gt(u,w);return R.reshape(y,[...c])}function Oe(t,...e){const g=t.indexOf("->");let p,c;g===-1?(p=t,c=pt(p)):(p=t.slice(0,g),c=t.slice(g+2));const m=p.split(",").map(n=>n.trim());if(m.length!==e.length)throw new Error(`einsum_path: expected ${m.length} operands, got ${e.length}`);const f=e.map(n=>Array.isArray(n)?n:Array.from(n.shape)),d=new Map;for(let n=0;n<e.length;n++){const i=m[n],r=f[n];if(i.length!==r.length)throw new Error(`einsum_path: operand ${n} has ${r.length} dimensions but subscript '${i}' has ${i.length} indices`);for(let o=0;o<i.length;o++){const u=i[o],w=r[o];if(d.has(u)&&d.get(u)!==w)throw new Error(`einsum_path: size mismatch for index '${u}': ${d.get(u)} vs ${w}`);d.set(u,w)}}if(e.length===1){const n=[[0]];return[n,it(t,f,n,d)]}if(e.length===2){const n=[[0,1]];return[n,it(t,f,n,d)]}const b=[],l=[...m],s=[...f],a=e.map((n,i)=>i);for(;l.length>1;){let n=0,i=1,r=1/0;for(let w=0;w<l.length;w++)for(let y=w+1;y<l.length;y++){const h=Zt(l[w],l[y],s[w],s[y],c,d);h<r&&(r=h,n=w,i=y)}b.push([a[n],a[i]]);const[o,u]=te(l[n],l[i],s[n],s[i],c,d);l.splice(i,1),l.splice(n,1),s.splice(i,1),s.splice(n,1),a.splice(i,1),a.splice(n,1),l.push(o),s.push(u),a.push(-1)}return[b,it(t,f,b,d)]}function Zt(t,e,g,p,c,m){const f=new Set(t),d=new Set(e);let b=1;for(const l of f)b*=m.get(l)||1;for(const l of d)f.has(l)||(b*=m.get(l)||1);return b}function te(t,e,g,p,c,m){const f=new Set([...t,...e]),d=new Map;for(const a of t)d.set(a,(d.get(a)||0)+1);for(const a of e)d.set(a,(d.get(a)||0)+1);const b=new Set(c),l=[];for(const a of f)(b.has(a)||d.get(a)===1)&&l.push(a);l.sort();const s=l.map(a=>m.get(a));return[l.join(""),s]}function it(t,e,g,p){const c=[];c.push(" Complete contraction: "+t),c.push(" Operand shapes: "+e.map(f=>`(${f.join(", ")})`).join(", ")),c.push(" Contraction path: "+JSON.stringify(g));let m=0;for(const f of e)m+=f.reduce((d,b)=>d*b,1);return c.push(" Estimated FLOPS: ~"+m.toExponential(2)),c.join(`
2
- `)}export{Wt as cholesky,ve as cond,Ne as cross,Qt as det,Ae as diagonal,K as dot,bt as eig,yt as eigh,Me as eigvals,Ce as eigvalsh,Se as einsum,Oe as einsum_path,ye as inner,et as inv,xe as kron,De as lstsq,X as matmul,H as matrix_norm,ze as matrix_power,$e as matrix_rank,Ve as matrix_transpose,Be as matvec,qe as multi_dot,Ie as norm,Jt as outer,Fe as permute_dims,Ht as pinv,ht as qr,Yt as slogdet,Gt as solve,gt as svd,ke as svdvals,we as tensordot,Te as tensorinv,_e as tensorsolve,be as trace,G as transpose,Ee as vdot,je as vecdot,Re as vecmat,Z as vector_norm};
1
+ import{ArrayStorage as $}from"../storage.js";import{promoteDTypes as k,isComplexDType as z,isBigIntDType as q,hasFloat16 as it}from"../dtype.js";import{Complex as C}from"../complex.js";import{conj as Et}from"./complex.js";import{wasmMatmul as ot}from"../wasm/matmul.js";import{wasmSvdValues as zt}from"../wasm/svd.js";import{wasmVectorNorm2 as Rt}from"../wasm/vector_norm.js";import{wasmInner as Bt}from"../wasm/inner.js";import{wasmDot1D as ut}from"../wasm/dot.js";import{wasmMatvec as dt}from"../wasm/matvec.js";import{wasmVecmat as gt}from"../wasm/vecmat.js";import{wasmLuFactor as at,wasmLuInv as Vt,wasmLuSolve as ht}from"../wasm/lu.js";import{wasmOuter as kt}from"../wasm/outer.js";import{wasmVecdot as qt}from"../wasm/vecdot.js";import{wasmVdotComplex as Tt}from"../wasm/vdot.js";import{wasmKron as _t}from"../wasm/kron.js";import{wasmCross as Ot}from"../wasm/cross.js";import{wasmQr as Ut}from"../wasm/qr.js";import{wasmCholesky as Lt,wasmCholeskyF32 as Pt}from"../wasm/cholesky.js";import{wasmSvd as Jt}from"../wasm/svd.js";import*as V from"./shape.js";function _(t){if(t==="float16")throw new TypeError("array type float16 is unsupported in linalg")}const Xt=new Int32Array(1),Wt=new Uint32Array(1),Qt=new Int16Array(1),Zt=new Uint16Array(1),Gt=new Int8Array(1),Ht=new Uint8Array(1),Kt={int32:Xt,uint32:Wt,int16:Qt,uint16:Zt,int8:Gt,uint8:Ht};function W(t){return Kt[t]??null}function U(t){return t instanceof C?t.abs():Math.abs(Number(t))}function J(t){return t instanceof C?t.re:Number(t)}function Z(t,e){if(t instanceof C||e instanceof C){const g=t instanceof C?t:new C(Number(t),0),y=e instanceof C?e:new C(Number(e),0);return g.mul(y)}return typeof t=="bigint"&&typeof e=="bigint"?t*e:Number(t)*Number(e)}function Yt(t,e,g,y,i,f,d,m,h){for(let l=0;l<g;l++)for(let a=0;a<f;a++)for(let n=0;n<d;n++){let c=0;for(let o=0;o<m;o++)c+=t[e+l*m+o]*y[i+a*m*d+o*d+n];h[l*f*d+a*d+n]=c}}function te(t,e,g,y,i,f,d,m,h,l){for(let a=0;a<g;a++)for(let n=0;n<d;n++){let c=0;for(let r=0;r<h;r++){const s=y===1?r:a*h+r,u=m===1?r:n*h+r;c+=t[e+s]*i[f+u]}const o=g===1?n:a*d+n;l[o]=c}}function ee(t,e,g,y,i,f,d,m,h,l,a,n){for(let r=0;r<g*y;r++)a[r]=0;const c=t==="transpose",o=e==="transpose";if(!c&&!o)for(let r=0;r<g;r++)for(let s=0;s<y;s++){let u=0;for(let A=0;A<i;A++)u+=(d[r*m+A]??0)*(h[A*l+s]??0);a[r*n+s]=f*u}else if(c&&!o)for(let r=0;r<g;r++)for(let s=0;s<y;s++){let u=0;for(let A=0;A<i;A++)u+=(d[A*m+r]??0)*(h[A*l+s]??0);a[r*n+s]=f*u}else if(!c&&o)for(let r=0;r<g;r++)for(let s=0;s<y;s++){let u=0;for(let A=0;A<i;A++)u+=(d[r*m+A]??0)*(h[s*l+A]??0);a[r*n+s]=f*u}else for(let r=0;r<g;r++)for(let s=0;s<y;s++){let u=0;for(let A=0;A<i;A++)u+=(d[A*m+r]??0)*(h[s*l+A]??0);a[r*n+s]=f*u}}function nt(t,e){const g=t.ndim,y=e.ndim,i=z(t.dtype)||z(e.dtype);if(g===0||y===0){const f=g===0?t.get():null,d=y===0?e.get():null;if(g===0&&y===0)return Z(f,d);if(g===0){const m=k(t.dtype,e.dtype),h=$.zeros([...e.shape],m),l=(a,n)=>{const c=new Array(n.length);let o=a;for(let r=n.length-1;r>=0;r--)c[r]=o%n[r],o=Math.floor(o/n[r]);return c};for(let a=0;a<e.size;a++){const n=l(a,e.shape),c=e.get(...n);h.set(n,Z(f,c))}return h}else{const m=k(t.dtype,e.dtype),h=$.zeros([...t.shape],m),l=(a,n)=>{const c=new Array(n.length);let o=a;for(let r=n.length-1;r>=0;r--)c[r]=o%n[r],o=Math.floor(o/n[r]);return c};for(let a=0;a<t.size;a++){const n=l(a,t.shape),c=t.get(...n);h.set(n,Z(c,d))}return h}}if(g===1&&y===1){if(t.shape[0]!==e.shape[0])throw new Error(`dot: incompatible shapes (${t.shape[0]},) and (${e.shape[0]},)`);const f=ut(t,e);if(f!==null)return f;const d=t.shape[0];if(i){let a=0,n=0;for(let c=0;c<d;c++){const o=t.get(c),r=e.get(c),s=Z(o,r);s instanceof C?(a+=s.re,n+=s.im):a+=Number(s)}return new C(a,n)}const m=k(t.dtype,e.dtype);if(q(m)){let a=BigInt(0);for(let n=0;n<d;n++)a+=BigInt(t.get(n))*BigInt(e.get(n));return a}const h=W(m);if(h){h[0]=0;for(let a=0;a<d;a++)h[0]+=Number(t.get(a))*Number(e.get(a));return h[0]}if(m==="float16"&&it){const a=new Float16Array(1);a[0]=0;for(let n=0;n<d;n++)a[0]+=Number(t.get(n))*Number(e.get(n));return Number(a[0])}if(m==="float32"){const a=new Float32Array(1);a[0]=0;for(let n=0;n<d;n++)a[0]+=Number(t.get(n))*Number(e.get(n));return a[0]}let l=0;for(let a=0;a<d;a++){const n=t.get(a),c=e.get(a);typeof n=="bigint"&&typeof c=="bigint"?l=Number(l)+Number(n*c):l+=Number(n)*Number(c)}return l}if(g===2&&y===2)return Q(t,e);if(g===2&&y===1){const[f,d]=t.shape,m=e.shape[0];if(d!==m)throw new Error(`dot: incompatible shapes (${f},${d}) and (${m},)`);const h=dt(t,e);if(h)return h;const l=k(t.dtype,e.dtype),a=$.zeros([f],l);if(i)for(let n=0;n<f;n++){let c=0,o=0;for(let r=0;r<d;r++){const s=t.get(n,r),u=e.get(r),A=s instanceof C?s:new C(Number(s),0),b=u instanceof C?u:new C(Number(u),0);c+=A.re*b.re-A.im*b.im,o+=A.re*b.im+A.im*b.re}a.set([n],new C(c,o))}else if(q(l))for(let n=0;n<f;n++){let c=0n;for(let o=0;o<d;o++)c+=BigInt(t.get(n,o))*BigInt(e.get(o));a.set([n],c)}else{const n=W(l);for(let c=0;c<f;c++)if(n){n[0]=0;for(let o=0;o<d;o++)n[0]+=Number(t.get(c,o))*Number(e.get(o));a.set([c],n[0])}else{let o=0;for(let r=0;r<d;r++)o+=Number(t.get(c,r))*Number(e.get(r));a.set([c],o)}}return a}if(g===1&&y===2){const f=t.shape[0],[d,m]=e.shape;if(f!==d)throw new Error(`dot: incompatible shapes (${f},) and (${d},${m})`);const h=gt(t,e);if(h)return h;const l=k(t.dtype,e.dtype),a=$.zeros([m],l);if(i)for(let n=0;n<m;n++){let c=0,o=0;for(let r=0;r<f;r++){const s=t.get(r),u=e.get(r,n),A=s instanceof C?s:new C(Number(s),0),b=u instanceof C?u:new C(Number(u),0);c+=A.re*b.re-A.im*b.im,o+=A.re*b.im+A.im*b.re}a.set([n],new C(c,o))}else if(q(l))for(let n=0;n<m;n++){let c=0n;for(let o=0;o<f;o++)c+=BigInt(t.get(o))*BigInt(e.get(o,n));a.set([n],c)}else{const n=W(l);for(let c=0;c<m;c++)if(n){n[0]=0;for(let o=0;o<f;o++)n[0]+=Number(t.get(o))*Number(e.get(o,c));a.set([c],n[0])}else{let o=0;for(let r=0;r<f;r++)o+=Number(t.get(r))*Number(e.get(r,c));a.set([c],o)}}return a}if(g>2&&y===1){const f=t.shape[g-1],d=e.shape[0];if(f!==d)throw new Error(`dot: incompatible shapes ${JSON.stringify(t.shape)} and (${d},)`);const m=[...t.shape.slice(0,-1)],h=k(t.dtype,e.dtype),l=$.zeros(m,h),a=m.reduce((n,c)=>n*c,1);if(i)for(let n=0;n<a;n++){let c=0,o=0,r=n;const s=[];for(let u=m.length-1;u>=0;u--)s[u]=r%m[u],r=Math.floor(r/m[u]);for(let u=0;u<f;u++){const A=[...s,u],b=t.get(...A),p=e.get(u),w=b instanceof C?b:new C(Number(b),0),v=p instanceof C?p:new C(Number(p),0);c+=w.re*v.re-w.im*v.im,o+=w.re*v.im+w.im*v.re}l.set(s,new C(c,o))}else{const n=W(h);for(let c=0;c<a;c++){let o=c;const r=[];for(let s=m.length-1;s>=0;s--)r[s]=o%m[s],o=Math.floor(o/m[s]);if(n){n[0]=0;for(let s=0;s<f;s++){const u=[...r,s];n[0]+=Number(t.get(...u))*Number(e.get(s))}l.set(r,n[0])}else{let s=0;for(let u=0;u<f;u++){const A=[...r,u],b=t.get(...A),p=e.get(u);typeof b=="bigint"&&typeof p=="bigint"?s=Number(s)+Number(b*p):s+=Number(b)*Number(p)}l.set(r,s)}}}return l}if(g===1&&y>2){const f=t.shape[0],d=1,m=e.shape[d];if(f!==m)throw new Error(`dot: incompatible shapes (${f},) and ${JSON.stringify(e.shape)}`);const h=[...e.shape.slice(0,d),...e.shape.slice(d+1)],l=k(t.dtype,e.dtype),a=$.zeros(h,l),n=h.reduce((c,o)=>c*o,1);if(i)for(let c=0;c<n;c++){let o=c;const r=[];for(let p=h.length-1;p>=0;p--)r[p]=o%h[p],o=Math.floor(o/h[p]);const s=r.slice(0,d),u=r.slice(d);let A=0,b=0;for(let p=0;p<f;p++){const w=t.get(p),v=[...s,p,...u],I=e.get(...v),x=w instanceof C?w:new C(Number(w),0),S=I instanceof C?I:new C(Number(I),0);A+=x.re*S.re-x.im*S.im,b+=x.re*S.im+x.im*S.re}a.set(r,new C(A,b))}else{const c=W(l);for(let o=0;o<n;o++){let r=o;const s=[];for(let b=h.length-1;b>=0;b--)s[b]=r%h[b],r=Math.floor(r/h[b]);const u=s.slice(0,d),A=s.slice(d);if(c){c[0]=0;for(let b=0;b<f;b++){const p=[...u,b,...A];c[0]+=Number(t.get(b))*Number(e.get(...p))}a.set(s,c[0])}else{let b=0;for(let p=0;p<f;p++){const w=t.get(p),v=[...u,p,...A],I=e.get(...v);typeof w=="bigint"&&typeof I=="bigint"?b=Number(b)+Number(w*I):b+=Number(w)*Number(I)}a.set(s,b)}}}return a}if(g>=2&&y>=2&&!(g===2&&y===2)){const f=t.shape[g-1],d=e.shape[y-2];if(f!==d)throw new Error(`dot: incompatible shapes ${JSON.stringify(t.shape)} and ${JSON.stringify(e.shape)}`);const m=[...t.shape.slice(0,-1),...e.shape.slice(0,-2),e.shape[y-1]],h=k(t.dtype,e.dtype),l=$.zeros(m,h),a=t.shape.slice(0,-1).reduce((r,s)=>r*s,1),n=e.shape.slice(0,-2).reduce((r,s)=>r*s,1),c=e.shape[y-1],o=f;if(i)for(let r=0;r<a;r++)for(let s=0;s<n;s++)for(let u=0;u<c;u++){let A=0,b=0;for(let v=0;v<o;v++){const I=[];let x=r;for(let E=t.shape.length-2;E>=0;E--)I.unshift(x%t.shape[E]),x=Math.floor(x/t.shape[E]);I.push(v);const S=t.get(...I),D=[];let N=s;for(let E=e.shape.length-3;E>=0;E--)D.unshift(N%e.shape[E]),N=Math.floor(N/e.shape[E]);D.push(v,u);const M=e.get(...D),j=S instanceof C?S:new C(Number(S),0),F=M instanceof C?M:new C(Number(M),0);A+=j.re*F.re-j.im*F.im,b+=j.re*F.im+j.im*F.re}const p=r*n*c+s*c+u,w=l.data;w[p*2]=A,w[p*2+1]=b}else if(t.isCContiguous&&e.isCContiguous&&!q(t.dtype)&&!q(e.dtype)&&!W(h))Yt(t.data,t.offset,a,e.data,e.offset,n,c,o,l.data);else{const r=W(h);for(let s=0;s<a;s++)for(let u=0;u<n;u++)for(let A=0;A<c;A++){const b=s*n*c+u*c+A;if(r){r[0]=0;for(let p=0;p<o;p++){const w=s*o+p,v=u*o*c+p*c+A;r[0]+=Number(t.iget(w))*Number(e.iget(v))}l.data[b]=r[0]}else{let p=0;for(let w=0;w<o;w++){const v=s*o+w,I=u*o*c+w*c+A,x=t.iget(v),S=e.iget(I);typeof x=="bigint"&&typeof S=="bigint"?p=Number(p)+Number(x*S):p+=Number(x)*Number(S)}l.data[b]=p}}}return l}throw new Error(`dot: unexpected combination of dimensions ${g}D \xB7 ${y}D`)}function tt(t,e){const[g=0,y=0]=t.shape,[i=0,f=0]=e.shape;if(y!==i)throw new Error(`matmul shape mismatch: (${g},${y}) @ (${i},${f})`);const d=k(t.dtype,e.dtype);if(z(d)){const I=z(t.dtype),x=z(e.dtype),S=$.zeros([g,f],d),D=S.data;for(let N=0;N<g;N++)for(let M=0;M<f;M++){let j=0,F=0;for(let B=0;B<y;B++){const R=t.iget(N*y+B),T=e.iget(B*f+M),O=I?R.re:Number(R),X=I?R.im:0,L=x?T.re:Number(T),P=x?T.im:0;j+=O*L-X*P,F+=O*P+X*L}const E=N*f+M;D[E*2]=j,D[E*2+1]=F}return S}if(d.startsWith("int")||d.startsWith("uint")||d==="bool"){const I=$.zeros([g,f],d),x=I.data,S=t.offset,D=e.offset,[N=0,M=0]=t.strides,[j=0,F=0]=e.strides;if(q(d)){const E=t.data,B=e.data,R=x;for(let T=0;T<g;T++)for(let O=0;O<f;O++){let X=0n;for(let L=0;L<y;L++)X+=E[S+T*N+L*M]*B[D+L*j+O*F];R[T*f+O]=X}}else{const E=t.data,B=e.data,R=x;for(let T=0;T<g;T++)for(let O=0;O<f;O++){let X=0;for(let L=0;L<y;L++)X+=E[S+T*N+L*M]*B[D+L*j+O*F];R[T*f+O]=X}}return I}const m=d;if(m!=="float64"&&m!=="float32"&&m!=="float16")throw new Error(`matmul currently only supports float64/float32/float16, got ${m}`);const h=I=>I.dtype==="float64"?I.data:I.dtype==="float32"||I.dtype==="float16"?Float64Array.from(I.data):Float64Array.from(Array.from(I.data).map(Number));let l=h(t),a=h(e);t.offset>0&&(l=l.subarray(t.offset)),e.offset>0&&(a=a.subarray(e.offset));const[n=0,c=0]=t.strides,[o=0,r=0]=e.strides,s=c>n,u=r>o,A=s?"transpose":"no-transpose",b=u?"transpose":"no-transpose";let p,w;s?p=c:p=n,u?w=r:w=o;const v=$.zeros([g,f],"float64");if(ee(A,b,g,f,y,1,l,p,a,w,v.data,f),m==="float32"||m==="float16"){const I=$.zeros([g,f],m),x=v.data,S=I.data;for(let D=0;D<x.length;D++)S[D]=x[D];return v.dispose(),I}return v}function re(t,e){const g=Math.max(t.length,e.length),y=new Array(g);for(let i=0;i<g;i++){const f=t[t.length-g+i]??1,d=e[e.length-g+i]??1;if(f!==d&&f!==1&&d!==1)throw new Error(`matmul: cannot broadcast batch shapes ${JSON.stringify(t)} and ${JSON.stringify(e)}`);y[i]=Math.max(f,d)}return y}function H(t,e){const g=new Array(e.length);let y=t;for(let i=e.length-1;i>=0;i--)g[i]=y%e[i],y=Math.floor(y/e[i]);return g}function yt(t,e){const g=e.length;let y=0;for(let i=0;i<g;i++){const f=t.length-g+i,d=f>=0?t[f]:0,m=e[i]===1?0:d;y=y*e[i]+m}return y}function G(t){if(t.isCContiguous&&t.offset===0&&t.dtype==="float64")return t.data;const e=new Float64Array(t.size);for(let g=0;g<t.size;g++)e[g]=Number(t.iget(g));return e}function bt(t,e,g,y){const i=t.ndim,f=g*y,d=z(t.dtype),m=q(t.dtype),h=d?2:1,l=$.empty([g,y],t.dtype),a=l.data;if(t.isCContiguous){const n=(t.offset+e*f)*h;if(m){const c=t.data,o=a;for(let r=0;r<f*h;r++)o[r]=c[n+r]}else{const c=t.data,o=a;for(let r=0;r<f*h;r++)o[r]=c[n+r]}}else{const n=e*f;for(let c=0;c<f;c++){let r=n+c,s=t.offset;for(let u=i-1;u>=0;u--){const A=t.shape[u];s+=r%A*t.strides[u],r=Math.floor(r/A)}if(d){const u=t.data,A=a;A[c*2]=u[s*2],A[c*2+1]=u[s*2+1]}else a[c]=t.data[s]}}return l}function Q(t,e){if(t.ndim===1&&e.ndim===1){const N=ut(t,e);if(N!==null){const M=k(t.dtype,e.dtype),j=$.zeros([],M);return N instanceof C?(j.data[0]=N.re,j.data[1]=N.im):j.data[0]=N,j}}else if(t.ndim>=2&&e.ndim===1){if(t.ndim===2){const N=dt(t,e);if(N)return N}}else if(t.ndim===1&&e.ndim>=2&&e.ndim===2){const N=gt(t,e);if(N)return N}const g=ot(t,e);if(g)return g;if(t.ndim===0||e.ndim===0)throw new Error("matmul: Input operand does not have enough dimensions (has 0, gufunc core with signature (n?,k),(k,m?)->(n?,m?) requires at least 1-D)");const y=t.ndim===1,i=e.ndim===1,f=y?V.reshape(t,[1,t.shape[0]]):t,d=i?V.reshape(e,[e.shape[0],1]):e,m=f.ndim,h=d.ndim,l=f.shape[m-2],a=f.shape[m-1],n=d.shape[h-2],c=d.shape[h-1];if(a!==n)throw new Error(`matmul: shape mismatch: (...,${l},${a}) @ (...,${n},${c}): inner dimensions must match`);if(m===2&&h===2){const N=tt(f,d);return y&&i?V.reshape(N,[]):y?V.reshape(N,[c]):i?V.reshape(N,[l]):N}const o=Array.from(f.shape).slice(0,m-2),r=Array.from(d.shape).slice(0,h-2),s=re(o,r),u=s.reduce((N,M)=>N*M,1),A=k(f.dtype,d.dtype),b=[];for(let N=0;N<u;N++){const M=H(N,s),j=yt(M,o),F=yt(M,r),E=bt(f,j,l,a),B=bt(d,F,a,c);b.push(tt(E,B))}const p=l*c,w=z(A),v=q(A),I=w?2:1,x=[...s,l,c],S=$.empty(x,A),D=S.data;for(let N=0;N<u;N++){const j=b[N].data,F=N*p*I;if(v){const E=j,B=D;for(let R=0;R<p;R++)B[F+R]=E[R]}else{const E=j,B=D;for(let R=0;R<p*I;R++)B[F+R]=E[R]}}return y&&i?V.reshape(S,[...s]):y?V.reshape(S,[...s,c]):i?V.reshape(S,[...s,l]):S}function Ve(t,e=0,g=0,y=1){if(t.ndim<2)throw new Error(`trace requires at least 2D array, got ${t.ndim}D`);if(t.ndim===2){const o=g<0?t.ndim+g:g,r=y<0?t.ndim+y:y,s=t.shape[o],u=t.shape[r],A=Math.min(s,u)-Math.max(0,e);if(A<=0)return z(t.dtype)?new C(0,0):0;if(z(t.dtype)){let p=0,w=0;for(let v=0;v<A;v++){const I=e>=0?v:v-e,x=e>=0?v+e:v,S=[0,0];S[o]=I,S[r]=x;const D=t.get(...S);p+=D.re,w+=D.im}return new C(p,w)}if(t.dtype==="float16"&&it){const p=new Float16Array(1);p[0]=0;for(let w=0;w<A;w++){const v=e>=0?w:w-e,I=e>=0?w+e:w,x=[0,0];x[o]=v,x[r]=I,p[0]+=Number(t.get(...x))}return Number(p[0])}if(t.dtype==="float32"){const p=new Float32Array(1);p[0]=0;for(let w=0;w<A;w++){const v=e>=0?w:w-e,I=e>=0?w+e:w,x=[0,0];x[o]=v,x[r]=I,p[0]+=Number(t.get(...x))}return p[0]}let b=0;for(let p=0;p<A;p++){const w=e>=0?p:p-e,v=e>=0?p+e:p,I=[0,0];I[o]=w,I[r]=v;const x=t.get(...I);typeof x=="bigint"?b=(typeof b=="bigint"?b:BigInt(b))+x:b=(typeof b=="bigint"?Number(b):b)+x}return b}const i=t.ndim,f=(g%i+i)%i,d=(y%i+i)%i;if(f===d)throw new Error("trace: axis1 and axis2 must be different");const m=t.shape[f],h=t.shape[d],l=Math.min(m,h)-Math.max(0,e),a=Array.from(t.shape).filter((o,r)=>r!==f&&r!==d),n=a.reduce((o,r)=>o*r,1),c=$.zeros(a.length>0?a:[1],t.dtype);if(l<=0)return c.shape.length===0?0:c;for(let o=0;o<n;o++){const r=new Array(a.length);let s=o;for(let w=a.length-1;w>=0;w--)r[w]=s%a[w],s=Math.floor(s/a[w]);let u=0,A=0,b=0;const p=z(t.dtype);for(let w=0;w<l;w++){const v=e>=0?w:w-e,I=e>=0?w+e:w,x=new Array(i);let S=0;for(let N=0;N<i;N++)N===f?x[N]=v:N===d?x[N]=I:x[N]=r[S++];const D=t.get(...x);p?(A+=D.re,b+=D.im):typeof D=="bigint"?u=(typeof u=="bigint"?u:BigInt(u))+D:u=(typeof u=="bigint"?Number(u):u)+D}p?c.iset(o,new C(A,b)):c.iset(o,typeof u=="bigint"?Number(u):u)}return c}function et(t,e){return V.transpose(t,e)}function ke(t,e){const g=t.ndim,y=e.ndim,i=z(t.dtype)||z(e.dtype);if(g===0||y===0)return nt(t,e);const f=t.shape[g-1],d=e.shape[y-1];if(f!==d)throw new Error(`inner: incompatible shapes - last dimensions ${f} and ${d} don't match`);const m=Bt(t,e);if(m!==null)return m;if(g===1&&y===1)return nt(t,e);const h=[...t.shape.slice(0,-1),...e.shape.slice(0,-1)],l=k(t.dtype,e.dtype),a=$.zeros(h,l),n=g===1?1:t.shape.slice(0,-1).reduce((r,s)=>r*s,1),c=y===1?1:e.shape.slice(0,-1).reduce((r,s)=>r*s,1),o=f;if(i)for(let r=0;r<n;r++)for(let s=0;s<c;s++){let u=0,A=0;for(let w=0;w<o;w++){let v,I;if(g===1)v=t.get(w);else{const D=[];let N=r;const M=t.shape.slice(0,-1);for(let j=M.length-1;j>=0;j--)D.unshift(N%M[j]),N=Math.floor(N/M[j]);D.push(w),v=t.get(...D)}if(y===1)I=e.get(w);else{const D=[];let N=s;const M=e.shape.slice(0,-1);for(let j=M.length-1;j>=0;j--)D.unshift(N%M[j]),N=Math.floor(N/M[j]);D.push(w),I=e.get(...D)}const x=v instanceof C?v:new C(Number(v),0),S=I instanceof C?I:new C(Number(I),0);u+=x.re*S.re-x.im*S.im,A+=x.re*S.im+x.im*S.re}if(h.length===0)return new C(u,A);const b=n===1?s:r*c+s,p=a.data;p[b*2]=u,p[b*2+1]=A}else{const r=W(l);if(t.isCContiguous&&e.isCContiguous&&!q(t.dtype)&&!q(e.dtype)&&!r){if(h.length===0){const s=t.data,u=e.data,A=t.offset,b=e.offset;let p=0;for(let w=0;w<o;w++)p+=s[A+w]*u[b+w];return p}te(t.data,t.offset,n,g,e.data,e.offset,c,y,o,a.data)}else for(let s=0;s<n;s++)for(let u=0;u<c;u++)if(r){r[0]=0;for(let b=0;b<o;b++){const p=g===1?b:s*o+b,w=y===1?b:u*o+b;r[0]+=Number(t.iget(p))*Number(e.iget(w))}if(h.length===0)return r[0];const A=n===1?u:s*c+u;a.data[A]=r[0]}else if(q(l)){let A=0n;for(let p=0;p<o;p++){const w=g===1?p:s*o+p,v=y===1?p:u*o+p;A+=BigInt(t.iget(w))*BigInt(e.iget(v))}if(h.length===0)return A;const b=n===1?u:s*c+u;a.data[b]=A}else{let A=0;for(let p=0;p<o;p++){const w=g===1?p:s*o+p,v=y===1?p:u*o+p;A+=Number(t.iget(w))*Number(e.iget(v))}if(h.length===0)return A;const b=n===1?u:s*c+u;a.data[b]=A}}return a}function oe(t,e){const g=t.ndim===1?t:V.ravel(t),y=e.ndim===1?e:V.ravel(e),i=kt(g,y);if(i)return i;const f=g.size,d=y.size,m=k(t.dtype,e.dtype),h=$.zeros([f,d],m);if(m==="float16"&&it&&g.isCContiguous&&y.isCContiguous){const l=new Float32Array(g.data.subarray(g.offset,g.offset+f)),a=new Float32Array(y.data.subarray(y.offset,y.offset+d)),n=new Float32Array(f*d);for(let c=0;c<f;c++){const o=l[c],r=c*d;for(let s=0;s<d;s++)n[r+s]=o*a[s]}return h.data.set(n),h}for(let l=0;l<f;l++)for(let a=0;a<d;a++){const n=g.get(l),c=y.get(a),o=Z(n,c);h.set([l,a],o)}return h}function qe(t,e,g){let y,i;if(typeof g=="number"){const r=g;if(r<0)throw new Error("tensordot: axes must be non-negative");if(r>t.ndim||r>e.ndim)throw new Error("tensordot: axes exceeds array dimensions");y=Array.from({length:r},(s,u)=>t.ndim-r+u),i=Array.from({length:r},(s,u)=>u)}else if([y,i]=g,y.length!==i.length)throw new Error("tensordot: axes lists must have same length");for(let r=0;r<y.length;r++){const s=y[r],u=i[r];if(s<0||s>=t.ndim||u<0||u>=e.ndim)throw new Error("tensordot: axis out of bounds");if(t.shape[s]!==e.shape[u])throw new Error(`tensordot: shape mismatch on axes ${s} and ${u}: ${t.shape[s]} != ${e.shape[u]}`)}const f=[],d=[];for(let r=0;r<t.ndim;r++)y.includes(r)||f.push(r);for(let r=0;r<e.ndim;r++)i.includes(r)||d.push(r);const m=[...f.map(r=>t.shape[r]),...d.map(r=>e.shape[r])],h=k(t.dtype,e.dtype),l=z(h),a=r=>r instanceof C?{re:r.re,im:r.im}:{re:Number(r),im:0};if(m.length===0){let r=0,s=0;const u=y.map(A=>t.shape[A]).reduce((A,b)=>A*b,1);for(let A=0;A<u;A++){let b=A;const p=new Array(y.length);for(let S=y.length-1;S>=0;S--){const D=y[S];p[S]=b%t.shape[D],b=Math.floor(b/t.shape[D])}const w=new Array(t.ndim),v=new Array(e.ndim);for(let S=0;S<y.length;S++)w[y[S]]=p[S];for(let S=0;S<i.length;S++)v[i[S]]=p[S];const I=t.get(...w),x=e.get(...v);if(l){const S=a(I),D=a(x);r+=S.re*D.re-S.im*D.im,s+=S.re*D.im+S.im*D.re}else typeof I=="bigint"&&typeof x=="bigint"?r+=Number(I*x):r+=Number(I)*Number(x)}return l?new C(r,s):h==="bool"?r?1:0:r}const n=$.zeros(m,h),c=m.reduce((r,s)=>r*s,1),o=y.map(r=>t.shape[r]).reduce((r,s)=>r*s,1);for(let r=0;r<c;r++){let s=r;const u=[];for(let v=m.length-1;v>=0;v--)u[v]=s%m[v],s=Math.floor(s/m[v]);const A=u.slice(0,f.length),b=u.slice(f.length);let p=0,w=0;for(let v=0;v<o;v++){s=v;const I=[];for(let M=y.length-1;M>=0;M--){const j=y[M];I[M]=s%t.shape[j],s=Math.floor(s/t.shape[j])}const x=new Array(t.ndim),S=new Array(e.ndim);for(let M=0;M<f.length;M++)x[f[M]]=A[M];for(let M=0;M<d.length;M++)S[d[M]]=b[M];for(let M=0;M<y.length;M++)x[y[M]]=I[M],S[i[M]]=I[M];const D=t.get(...x),N=e.get(...S);if(l){const M=a(D),j=a(N);p+=M.re*j.re-M.im*j.im,w+=M.re*j.im+M.im*j.re}else typeof D=="bigint"&&typeof N=="bigint"?p+=Number(D*N):p+=Number(D)*Number(N)}l?n.set(u,new C(p,w)):h==="bool"?n.set(u,p?1:0):n.set(u,p)}return n}function Te(t,e=0,g=0,y=1){const i=t.shape,f=i.length;if(f<2)throw new Error("diagonal requires an array of at least two dimensions");const d=g<0?f+g:g,m=y<0?f+y:y;if(d<0||d>=f||m<0||m>=f)throw new Error("axis out of bounds");if(d===m)throw new Error("axis1 and axis2 cannot be the same");const h=i[d],l=i[m];let a;e>=0?a=Math.max(0,Math.min(h,l-e)):a=Math.max(0,Math.min(h+e,l));const n=[];for(let s=0;s<f;s++)s!==d&&s!==m&&n.push(i[s]);if(n.push(a),f===2&&d===0&&m===1){const s=t.offset+(e>=0?e*t.strides[1]:-e*t.strides[0]),u=t.strides[0]+t.strides[1];return $.fromDataShared(t.data,[a],t.dtype,[u],s,t.wasmRegion)}const c=$.zeros(n,t.dtype),o=i.filter((s,u)=>u!==d&&u!==m),r=o.reduce((s,u)=>s*u,1);for(let s=0;s<r;s++){let u=s;const A=[];for(let b=o.length-1;b>=0;b--)A.unshift(u%o[b]),u=Math.floor(u/o[b]);for(let b=0;b<a;b++){const p=new Array(f);let w=0;for(let x=0;x<f;x++)x===d?p[x]=e>=0?b:b-e:x===m?p[x]=e>=0?b+e:b:p[x]=A[w++];const v=[...A,b],I=t.get(...p);c.set(v,I)}}return c}function _e(t,...e){const g=t.indexOf("->");let y,i;g===-1?(y=t,i=At(y)):(y=t.slice(0,g),i=t.slice(g+2));const f=y.split(",").map(s=>s.trim());if(f.length!==e.length)throw new Error(`einsum: expected ${f.length} operands, got ${e.length}`);const d=new Map;for(let s=0;s<e.length;s++){const u=f[s],A=e[s];if(u.length!==A.ndim)throw new Error(`einsum: operand ${s} has ${A.ndim} dimensions but subscript '${u}' has ${u.length} indices`);for(let b=0;b<u.length;b++){const p=u[b],w=A.shape[b];if(d.has(p)){if(d.get(p)!==w)throw new Error(`einsum: size mismatch for index '${p}': ${d.get(p)} vs ${w}`)}else d.set(p,w)}}for(const s of i)if(!d.has(s))throw new Error(`einsum: output subscript contains unknown index '${s}'`);const m=new Set(i),h=new Set;for(const s of f)for(const u of s)h.add(u);const l=[];for(const s of h)m.has(s)||l.push(s);if(e.length===2&&f.length===2){const[s,u]=f,[A,b]=e;if(s.length===2&&u.length===2&&i.length===2&&A.ndim===2&&b.ndim===2){const[p,w]=[s[0],s[1]],[v,I]=[u[0],u[1]],[x,S]=[i[0],i[1]];if(p===x&&I===S&&w===v&&l.length===1&&l[0]===w||p===x&&I===S&&w===v&&l.length===1&&l[0]===w)return Q(A,b);if(w===x&&I===S&&p===v&&l.length===1&&l[0]===p){const D=et(A);return Q(D,b)}if(p===x&&v===S&&w===I&&l.length===1&&l[0]===w){const D=et(b);return Q(A,D)}}if(s.length===1&&u.length===1&&s===u&&i.length===0&&A.ndim===1&&b.ndim===1)return mt(e,f,l,d);if(s&&u&&s.length===1&&u.length===1&&i.length===2&&i===s+u&&l.length===0&&A.ndim===1&&b.ndim===1)return oe(A,b)}if(e.length===1&&f[0].length===2&&i.length===0){const s=f[0];if(s[0]===s[1]&&e[0].ndim===2)return mt(e,f,l,d)}const a=Array.from(i).map(s=>d.get(s));if(a.length===0)return mt(e,f,l,d);let n=e[0].dtype;for(let s=1;s<e.length;s++)n=k(n,e[s].dtype);const c=$.zeros(a,n),o=a.reduce((s,u)=>s*u,1);let r=1;for(const s of l)r*=d.get(s);for(let s=0;s<o;s++){const u=ne(s,a),A=new Map;for(let p=0;p<i.length;p++)A.set(i[p],u[p]);let b=0;for(let p=0;p<r;p++){let w=p;for(let I=l.length-1;I>=0;I--){const x=l[I],S=d.get(x);A.set(x,w%S),w=Math.floor(w/S)}let v=1;for(let I=0;I<e.length;I++){const x=e[I],S=f[I],D=[];for(const M of S)D.push(A.get(M));const N=x.get(...D);v*=Number(N)}b+=v}c.set(u,b)}return c}function At(t){const e=new Map,g=t.split(",");for(const i of g)for(const f of i.trim())e.set(f,(e.get(f)||0)+1);const y=[];for(const[i,f]of e)f===1&&y.push(i);return y.sort().join("")}function mt(t,e,g,y){let i=!1;for(const l of t)if(z(l.dtype)){i=!0;break}const f=l=>l instanceof C?{re:l.re,im:l.im}:{re:Number(l),im:0};let d=1;for(const l of g)d*=y.get(l);let m=0,h=0;for(let l=0;l<d;l++){const a=new Map;let n=l;for(let r=g.length-1;r>=0;r--){const s=g[r],u=y.get(s);a.set(s,n%u),n=Math.floor(n/u)}let c=1,o=0;for(let r=0;r<t.length;r++){const s=t[r],u=e[r],A=[];for(const p of u)A.push(a.get(p));const b=s.get(...A);if(i){const p=f(b),w=c*p.re-o*p.im,v=c*p.im+o*p.re;c=w,o=v}else c*=Number(b)}m+=c,h+=o}return i?new C(m,h):t.every(l=>l.dtype==="bool")?m?1:0:m}function ne(t,e){const g=new Array(e.length);let y=t;for(let i=e.length-1;i>=0;i--)g[i]=y%e[i],y=Math.floor(y/e[i]);return g}function Oe(t,e){const g=t.shape,y=e.shape,i=g.length,f=y.length,d=k(t.dtype,e.dtype);if(i===2&&f===2){const r=_t(t,e);if(r)return r}const m=Math.max(i,f),h=new Array(m),l=new Array(m).fill(1),a=new Array(m).fill(1);for(let r=0;r<i;r++)l[m-i+r]=g[r];for(let r=0;r<f;r++)a[m-f+r]=y[r];for(let r=0;r<m;r++)h[r]=l[r]*a[r];const n=$.zeros(h,d),c=g.reduce((r,s)=>r*s,1),o=y.reduce((r,s)=>r*s,1);for(let r=0;r<c;r++){let s=r;const u=new Array(i);for(let p=i-1;p>=0;p--)u[p]=s%g[p],s=Math.floor(s/g[p]);const A=new Array(m).fill(0);for(let p=0;p<i;p++)A[m-i+p]=u[p];const b=t.get(...u);for(let p=0;p<o;p++){let w=p;const v=new Array(f);for(let N=f-1;N>=0;N--)v[N]=w%y[N],w=Math.floor(w/y[N]);const I=new Array(m).fill(0);for(let N=0;N<f;N++)I[m-f+N]=v[N];const x=e.get(...v),S=new Array(m);for(let N=0;N<m;N++)S[N]=A[N]*a[N]+I[N];const D=Z(b,x);n.set(S,D)}}return n}function Ue(t,e,g=-1,y=-1,i=-1,f){if(t.dtype==="bool"||e.dtype==="bool")throw new TypeError("ufunc 'subtract' not supported for boolean dtype. The '-' operator is not supported for booleans, use 'bitwise_xor' instead.");f!==void 0&&(g=f,y=f,i=f);const d=(S,D)=>S<0?D+S:S,m=d(g,t.ndim),h=d(y,e.ndim),l=k(t.dtype,e.dtype),a=z(l),n=(S,...D)=>{const N=S.get(...D);return N instanceof C||typeof N=="bigint"?N:Number(N)},c=(S,D)=>{if(S instanceof C||D instanceof C){const N=S instanceof C?S:new C(Number(S),0),M=D instanceof C?D:new C(Number(D),0);return N.mul(M)}return typeof S=="bigint"||typeof D=="bigint"?BigInt(S)*BigInt(D):S*D},o=(S,D)=>{if(S instanceof C||D instanceof C){const N=S instanceof C?S:new C(Number(S),0),M=D instanceof C?D:new C(Number(D),0);return N.sub(M)}return typeof S=="bigint"||typeof D=="bigint"?BigInt(S)-BigInt(D):S-D};if(t.ndim===1&&e.ndim===1){const S=t.shape[0],D=e.shape[0];if(S===3&&D===3){const N=n(t,0),M=n(t,1),j=n(t,2),F=n(e,0),E=n(e,1),B=n(e,2),R=$.zeros([3],l);return R.set([0],o(c(M,B),c(j,E))),R.set([1],o(c(j,F),c(N,B))),R.set([2],o(c(N,E),c(M,F))),R}else if(S===2&&D===2){const N=n(t,0),M=n(t,1),j=n(e,0),F=n(e,1);return o(c(N,F),c(M,j))}else if(S===2&&D===3||S===3&&D===2){const N=n(t,0),M=n(t,1),j=S===3?n(t,2):a?new C(0,0):q(l)?0n:0,F=n(e,0),E=n(e,1),B=D===3?n(e,2):a?new C(0,0):q(l)?0n:0,R=$.zeros([3],l);return R.set([0],o(c(M,B),c(j,E))),R.set([1],o(c(j,F),c(N,B))),R.set([2],o(c(N,E),c(M,F))),R}else throw new Error(`cross: incompatible dimensions for cross product: ${S} and ${D}`)}const r=t.shape[m],s=e.shape[h];if(r!==2&&r!==3||s!==2&&s!==3)throw new Error(`cross: incompatible dimensions for cross product: ${r} and ${s}`);const u=r===2&&s===2?0:3,A=[...t.shape.slice(0,m),...t.shape.slice(m+1)],b=[...e.shape.slice(0,h),...e.shape.slice(h+1)];if(A.length!==b.length)throw new Error("cross: incompatible shapes for cross product");for(let S=0;S<A.length;S++)if(A[S]!==b[S])throw new Error("cross: incompatible shapes for cross product");const p=A;if(r===3&&s===3&&m===t.ndim-1&&h===e.ndim-1){const S=p.reduce((N,M)=>N*M,1),D=Ot(t,e,S);if(D)return D}const w=i<0?p.length+1+i:i;let v;if(u===0?v=p:v=[...p.slice(0,w),u,...p.slice(w)],v.length===0)throw new Error("cross: unexpected scalar result from higher-dimensional input");const I=$.zeros(v,l),x=p.reduce((S,D)=>S*D,1);for(let S=0;S<x;S++){let D=S;const N=[];for(let P=p.length-1;P>=0;P--)N[P]=D%p[P],D=Math.floor(D/p[P]);const M=[...N.slice(0,m),0,...N.slice(m)],j=[...N.slice(0,h),0,...N.slice(h)],F=P=>(M[m]=P,n(t,...M)),E=P=>(j[h]=P,n(e,...j)),B=F(0),R=F(1),T=r===3?F(2):a?new C(0,0):q(l)?0n:0,O=E(0),X=E(1),L=s===3?E(2):a?new C(0,0):q(l)?0n:0;if(u===0)I.set(N,o(c(B,X),c(R,O)));else{const P=o(c(R,L),c(T,X)),Ct=o(c(T,O),c(B,L)),$t=o(c(B,X),c(R,O)),ct=(Mt,jt)=>{const Ft=[...N.slice(0,w),Mt,...N.slice(w)];I.set(Ft,jt)};ct(0,P),ct(1,Ct),ct(2,$t)}}return I}function lt(t,e=2,g,y=!1){if(typeof e!="number")throw new Error("vector_norm: ord must be a number");if(g==null){const l=t.ndim===1?t:V.ravel(t),a=l.size;let n;const c=z(l.dtype);if(e===1/0){n=0;for(let o=0;o<a;o++)n=Math.max(n,U(l.get(o)))}else if(e===-1/0){n=1/0;for(let o=0;o<a;o++)n=Math.min(n,U(l.get(o)))}else if(e===0){n=0;for(let o=0;o<a;o++){const r=l.get(o);(r instanceof C?r.re===0&&r.im===0:Number(r)===0)||n++}}else if(e===1){n=0;for(let o=0;o<a;o++)n+=U(l.get(o))}else if(e===2){const o=c?null:Rt(l);if(o!==null)l!==t&&l.dispose(),n=o;else{n=0;for(let r=0;r<a;r++){const s=U(l.get(r));n+=s*s}n=Math.sqrt(n)}}else{n=0;for(let o=0;o<a;o++)n+=Math.pow(U(l.get(o)),e);n=Math.pow(n,1/e)}if(y){const o=new Array(t.ndim).fill(1),r=$.zeros(o,"float64");return r.set(new Array(t.ndim).fill(0),n),r}return n}const i=g<0?t.ndim+g:g;if(i<0||i>=t.ndim)throw new Error(`vector_norm: axis ${g} out of bounds for array with ${t.ndim} dimensions`);const f=y?[...t.shape.slice(0,i),1,...t.shape.slice(i+1)]:[...t.shape.slice(0,i),...t.shape.slice(i+1)];if(f.length===0)return lt(t,e,null,!1);const d=$.zeros(f,"float64"),m=t.shape[i],h=f.reduce((l,a)=>l*a,1);for(let l=0;l<h;l++){let a=l;const n=[];for(let r=f.length-1;r>=0;r--)n[r]=a%f[r],a=Math.floor(a/f[r]);const c=y?[...n.slice(0,i),0,...n.slice(i+1)]:[...n.slice(0,i),0,...n.slice(i)];let o;if(e===1/0){o=0;for(let r=0;r<m;r++)c[i]=r,o=Math.max(o,U(t.get(...c)))}else if(e===-1/0){o=1/0;for(let r=0;r<m;r++)c[i]=r,o=Math.min(o,U(t.get(...c)))}else if(e===0){o=0;for(let r=0;r<m;r++){c[i]=r;const s=t.get(...c);(s instanceof C?s.re===0&&s.im===0:Number(s)===0)||o++}}else if(e===1){o=0;for(let r=0;r<m;r++)c[i]=r,o+=U(t.get(...c))}else if(e===2){o=0;for(let r=0;r<m;r++){c[i]=r;const s=U(t.get(...c));o+=s*s}o=Math.sqrt(o)}else{o=0;for(let r=0;r<m;r++)c[i]=r,o+=Math.pow(Math.abs(Number(t.get(...c))),e);o=Math.pow(o,1/e)}d.set(n,o)}return d}function rt(t,e="fro",g=!1){if(t.ndim<2)throw new Error(`matrix_norm: input must be at least 2D, got ${t.ndim}D`);if(t.ndim>2){const d=Array.from(t.shape).slice(0,-2),m=t.shape[t.ndim-2],h=t.shape[t.ndim-1],l=d.reduce((o,r)=>o*r,1),a=$.empty(d,"float64"),n=a.data,c=G(t);for(let o=0;o<l;o++){const r=o*m*h,s=$.fromData(c.slice(r,r+m*h),[m,h],"float64");n[o]=rt(s,e,!1)}if(g){const o=[...d,1,1];return V.reshape(a,o)}return a}const[y,i]=t.shape;let f;if(e==="fro"){f=0;for(let d=0;d<y;d++)for(let m=0;m<i;m++){const h=U(t.get(d,m));f+=h*h}f=Math.sqrt(f)}else if(e==="nuc"){const{s:d}=K(t);f=0;for(let m=0;m<d.size;m++)f+=Number(d.get(m))}else if(e===1){f=0;for(let d=0;d<i;d++){let m=0;for(let h=0;h<y;h++)m+=U(t.get(h,d));f=Math.max(f,m)}}else if(e===-1){f=1/0;for(let d=0;d<i;d++){let m=0;for(let h=0;h<y;h++)m+=U(t.get(h,d));f=Math.min(f,m)}}else if(e===1/0){f=0;for(let d=0;d<y;d++){let m=0;for(let h=0;h<i;h++)m+=U(t.get(d,h));f=Math.max(f,m)}}else if(e===-1/0){f=1/0;for(let d=0;d<y;d++){let m=0;for(let h=0;h<i;h++)m+=U(t.get(d,h));f=Math.min(f,m)}}else if(e===2){const{s:d}=K(t);f=Number(d.get(0))}else if(e===-2){const{s:d}=K(t);f=Number(d.get(d.size-1))}else throw new Error(`matrix_norm: invalid ord value: ${e}`);if(g){const d=$.zeros([1,1],"float64");return d.set([0,0],f),d}return f}function Le(t,e=null,g=null,y=!1){if(e===null){if(g===null)return lt(t,2,null,y);if(typeof g=="number")return lt(t,2,g,y);e="fro"}if(Array.isArray(g)){if(g.length!==2)throw new Error("norm: axis must be a 2-tuple for matrix norms");const i=g[0]<0?t.ndim+g[0]:g[0],f=g[1]<0?t.ndim+g[1]:g[1],d=e??"fro";if(t.ndim===2)return rt(t,d,y);const m=t.ndim,h=Array.from({length:m},(u,A)=>A).filter(u=>u!==i&&u!==f),l=h.map(u=>t.shape[u]),a=l.reduce((u,A)=>u*A,1)||1,n=t.shape[i],c=t.shape[f],o=[...h,i,f],r=et(t,o),s=new Float64Array(a);for(let u=0;u<a;u++){const A=new Array(l.length);let b=u;for(let v=l.length-1;v>=0;v--)A[v]=b%l[v],b=Math.floor(b/l[v]);const p=$.zeros([n,c],"float64");for(let v=0;v<n;v++)for(let I=0;I<c;I++)p.set([v,I],Number(r.get(...A,v,I)));const w=rt(p,d,!1);s[u]=typeof w=="number"?w:Number(w)}if(y){const u=Array.from(t.shape);return u[i]=1,u[f]=1,$.fromData(s,u,"float64")}return l.length===0?s[0]:$.fromData(s,l,"float64")}if(t.ndim===2&&g===null&&(e==="fro"||e==="nuc"))return rt(t,e,y);if(typeof e!="number"&&e!==null)throw new Error(`norm: ord '${e}' not valid for vector norm`);return lt(t,e??2,g,y)}function wt(t,e="reduced"){if(_(t.dtype),t.ndim>2){const o=t.shape.slice(0,-2),[r,s]=[t.shape[t.ndim-2],t.shape[t.ndim-1]],u=Math.min(r,s),A=o.reduce((v,I)=>v*I,1),b=e==="complete"?r:u,p=$.zeros([...o,r,b],"float64"),w=$.zeros([...o,b,s],"float64");for(let v=0;v<A;v++){const I=H(v,o),x=$.zeros([r,s],"float64");for(let D=0;D<r;D++)for(let N=0;N<s;N++)x.set([D,N],J(t.get(...I,D,N)));const S=wt(x,e);for(let D=0;D<r;D++)for(let N=0;N<b;N++)p.set([...I,D,N],Number(S.q.get(D,N)));for(let D=0;D<b;D++)for(let N=0;N<s;N++)w.set([...I,D,N],Number(S.r.get(D,N)));x.dispose(),S.q.dispose(),S.r.dispose()}return{q:p,r:w}}if(t.ndim!==2)throw new Error(`qr: input must be 2D, got ${t.ndim}D`);if(e==="reduced"){const o=Ut(t);if(o)return o}const[g,y]=t.shape,i=Math.min(g,y),f=$.zeros([g,y],"float64");for(let o=0;o<g;o++)for(let r=0;r<y;r++)f.set([o,r],J(t.get(o,r)));const d=[],m=[];for(let o=0;o<i;o++){const r=g-o,s=[];for(let v=o;v<g;v++)s.push(Number(f.get(v,o)));let u=0;for(let v=0;v<r;v++)u+=s[v]*s[v];if(u=Math.sqrt(u),u<1e-15){d.push(s),m.push(0);continue}const A=s[0]>=0?1:-1,b=s[0]+A*u,p=[1];for(let v=1;v<r;v++)p.push(s[v]/b);const w=A*b/u;m.push(w),d.push(p);for(let v=o;v<y;v++){let I=0;for(let x=0;x<r;x++)I+=p[x]*Number(f.get(o+x,v));for(let x=0;x<r;x++)f.set([o+x,v],Number(f.get(o+x,v))-w*p[x]*I)}}if(e==="raw"){const o=$.zeros([g,y],"float64");for(let s=0;s<g;s++)for(let u=0;u<y;u++)o.set([s,u],Number(f.get(s,u)));f.dispose();const r=$.zeros([i],"float64");for(let s=0;s<i;s++)r.set([s],m[s]);return{h:o,tau:r}}if(e==="r"){const o=$.zeros([i,y],"float64");for(let r=0;r<i;r++)for(let s=r;s<y;s++)o.set([r,s],Number(f.get(r,s)));return f.dispose(),o}const h=e==="complete"?g:i,l=$.zeros([g,h],"float64");for(let o=0;o<Math.min(g,h);o++)l.set([o,o],1);for(let o=i-1;o>=0;o--){const r=d[o],s=m[o],u=g-o;for(let A=o;A<h;A++){let b=0;for(let p=0;p<u;p++)b+=r[p]*Number(l.get(o+p,A));for(let p=0;p<u;p++)l.set([o+p,A],Number(l.get(o+p,A))-s*r[p]*b)}}const a=$.zeros([g,h],"float64");for(let o=0;o<g;o++)for(let r=0;r<h;r++)a.set([o,r],Number(l.get(o,r)));l.dispose();const n=e==="complete"?g:i,c=$.zeros([n,y],"float64");for(let o=0;o<n;o++)for(let r=0;r<y;r++)r>=o&&c.set([o,r],Number(f.get(o,r)));return f.dispose(),{q:a,r:c}}function se(t,e=!1){if(_(t.dtype),t.ndim<2)throw new Error(`cholesky: input must be at least 2D, got ${t.ndim}D`);if(t.ndim>2){const m=Array.from(t.shape).slice(0,-2),h=t.shape[t.ndim-1],l=t.shape[t.ndim-2];if(l!==h)throw new Error(`cholesky: last 2 dimensions must be square, got ${l}x${h}`);const a=m.reduce((o,r)=>o*r,1),n=$.empty([...m,h,h],"float64"),c=n.data;for(let o=0;o<a;o++){const r=H(o,m),s=$.zeros([h,h],"float64");for(let A=0;A<h;A++)for(let b=0;b<h;b++)s.set([A,b],J(t.get(...r,A,b)));const u=se(s,e);c.set(G(u),o*h*h),s.dispose(),u.dispose()}return n}const[g,y]=t.shape;if(g!==y)throw new Error(`cholesky: matrix must be square, got ${g}x${y}`);const i=t.dtype==="float32"?Pt(t):Lt(t);if(i){if(e){const m=g,h=$.zeros([m,m],i.dtype);for(let l=0;l<m;l++)for(let a=l;a<m;a++)h.set([l,a],Number(i.get(a,l)));return i.dispose(),h}return i}const f=g,d=$.zeros([f,f],"float64");for(let m=0;m<f;m++)for(let h=0;h<=m;h++){let l=0;if(m===h){for(let n=0;n<h;n++)l+=Number(d.get(h,n))**2;const a=J(t.get(h,h))-l;if(a<0)throw new Error("cholesky: matrix is not positive definite");d.set([h,h],Math.sqrt(a))}else{for(let n=0;n<h;n++)l+=Number(d.get(m,n))*Number(d.get(h,n));const a=Number(d.get(h,h));if(Math.abs(a)<1e-15)throw new Error("cholesky: matrix is not positive definite");d.set([m,h],(J(t.get(m,h))-l)/a)}}if(e){const m=$.zeros([f,f],"float64");for(let h=0;h<f;h++)for(let l=h;l<f;l++)m.set([h,l],Number(d.get(l,h)));return m}return d}function K(t){if(t.ndim!==2)throw new Error(`svd: input must be 2D, got ${t.ndim}D`);const e=Jt(t);if(e)return e;const[g,y]=t.shape,i=Math.min(g,y),f=z(t.dtype),d=$.zeros([y,y],"float64");for(let o=0;o<y;o++)for(let r=0;r<y;r++){let s=0;for(let u=0;u<g;u++){const A=t.get(u,o),b=t.get(u,r);if(f){const p=A instanceof C?A:new C(Number(A),0),w=b instanceof C?b:new C(Number(b),0);s+=p.re*w.re+p.im*w.im}else s+=Number(A)*Number(b)}d.set([o,r],s)}const{values:m,vectors:h}=ft(d);d.dispose();const l=Array.from({length:y},(o,r)=>r);l.sort((o,r)=>m[r]-m[o]);const a=$.zeros([i],"float64");for(let o=0;o<i;o++){const r=m[l[o]];a.set([o],Math.sqrt(Math.max(0,r)))}const n=$.zeros([y,y],"float64");for(let o=0;o<y;o++)for(let r=0;r<y;r++)n.set([o,r],h[r][l[o]]);const c=$.zeros([g,g],"float64");for(let o=0;o<g;o++)for(let r=0;r<i;r++){const s=Number(a.get(r));if(s>1e-10){let u=0;for(let A=0;A<y;A++){const b=t.get(o,A),p=Number(n.get(r,A));if(f){const w=b instanceof C?b:new C(Number(b),0);u+=w.re*p}else u+=Number(b)*p}c.set([o,r],u/s)}}if(g>i)for(let o=i;o<g;o++){const r=new Array(g).fill(0);r[o]=1;for(let u=0;u<o;u++){let A=0;for(let b=0;b<g;b++)A+=r[b]*Number(c.get(b,u));for(let b=0;b<g;b++)r[b]=r[b]-A*Number(c.get(b,u))}let s=0;for(let u=0;u<g;u++)s+=r[u]*r[u];if(s=Math.sqrt(s),s>1e-10)for(let u=0;u<g;u++)c.set([u,o],r[u]/s)}return{u:c,s:a,vt:n}}function ft(t){const e=t.shape[0],g=100*e*e,y=1e-10,i=[];for(let m=0;m<e;m++){i.push([]);for(let h=0;h<e;h++)i[m].push(J(t.get(m,h)))}const f=[];for(let m=0;m<e;m++){f.push([]);for(let h=0;h<e;h++)f[m].push(m===h?1:0)}for(let m=0;m<g;m++){let h=0,l=0,a=1;for(let p=0;p<e;p++)for(let w=p+1;w<e;w++)Math.abs(i[p][w])>h&&(h=Math.abs(i[p][w]),l=p,a=w);if(h<y)break;const n=i[l][l],c=i[a][a],o=i[l][a];let r;Math.abs(n-c)<1e-15?r=Math.PI/4:r=.5*Math.atan2(2*o,c-n);const s=Math.cos(r),u=Math.sin(r),A=s*s*n+u*u*c-2*u*s*o,b=u*u*n+s*s*c+2*u*s*o;i[l][l]=A,i[a][a]=b,i[l][a]=0,i[a][l]=0;for(let p=0;p<e;p++)if(p!==l&&p!==a){const w=i[p][l],v=i[p][a];i[p][l]=s*w-u*v,i[l][p]=i[p][l],i[p][a]=u*w+s*v,i[a][p]=i[p][a]}for(let p=0;p<e;p++){const w=f[p][l],v=f[p][a];f[p][l]=s*w-u*v,f[p][a]=u*w+s*v}}const d=[];for(let m=0;m<e;m++)d.push(i[m][m]);return{values:d,vectors:f}}function xt(t,e=!0,g=!0){if(_(t.dtype),t.ndim>2){const i=t.shape.slice(0,-2),[f,d]=[t.shape[t.ndim-2],t.shape[t.ndim-1]],m=Math.min(f,d),h=i.reduce((r,s)=>r*s,1);if(!g){const r=$.zeros([...i,m],"float64");for(let s=0;s<h;s++){const u=H(s,i),A=$.zeros([f,d],t.dtype);for(let v=0;v<f;v++)for(let I=0;I<d;I++)A.set([v,I],t.get(...u,v,I));const{u:b,s:p,vt:w}=K(A);for(let v=0;v<m;v++)r.set([...u,v],Number(p.get(v)));A.dispose(),b.dispose(),p.dispose(),w.dispose()}return r}const l=e?f:m,a=e?d:m,n=$.zeros([...i,f,l],"float64"),c=$.zeros([...i,m],"float64"),o=$.zeros([...i,a,d],"float64");for(let r=0;r<h;r++){const s=H(r,i),u=$.zeros([f,d],t.dtype);for(let b=0;b<f;b++)for(let p=0;p<d;p++)u.set([b,p],t.get(...s,b,p));const A=xt(u,e,!0);for(let b=0;b<f;b++)for(let p=0;p<l;p++)n.set([...s,b,p],Number(A.u.get(b,p)));for(let b=0;b<m;b++)c.set([...s,b],Number(A.s.get(b)));for(let b=0;b<a;b++)for(let p=0;p<d;p++)o.set([...s,b,p],Number(A.vt.get(b,p)));u.dispose(),A.u.dispose(),A.s.dispose(),A.vt.dispose()}return{u:n,s:c,vt:o}}const y=K(t);if(!g)return y.u.dispose(),y.vt.dispose(),y.s;if(!e){const[i,f]=t.shape,d=Math.min(i,f),m=$.zeros([i,d],"float64");for(let l=0;l<i;l++)for(let a=0;a<d;a++)m.set([l,a],Number(y.u.get(l,a)));y.u.dispose();const h=$.zeros([d,f],"float64");for(let l=0;l<d;l++)for(let a=0;a<f;a++)h.set([l,a],Number(y.vt.get(l,a)));return y.vt.dispose(),{u:m,s:y.s,vt:h}}return y}function St(t){if(_(t.dtype),t.ndim<2)throw new Error(`det: input must be at least 2D, got ${t.ndim}D`);const e=z(t.dtype);if(t.ndim>2){const h=Array.from(t.shape).slice(0,-2),l=t.shape[t.ndim-1],a=t.shape[t.ndim-2];if(a!==l)throw new Error(`det: last 2 dimensions must be square, got ${a}x${l}`);const n=h.reduce((s,u)=>s*u,1);if(e){const s=t.dtype,u=$.zeros(h,s);for(let A=0;A<n;A++){const b=[];let p=A;for(let I=h.length-1;I>=0;I--)b[I]=p%h[I],p=Math.floor(p/h[I]);const w=$.zeros([l,l],s);for(let I=0;I<l;I++)for(let x=0;x<l;x++)w.set([I,x],t.get(...b,I,x));const v=St(w);u.iset(A,v),w.dispose()}return u}const c=$.empty(h,"float64"),o=c.data,r=G(t);for(let s=0;s<n;s++){const u=s*l*l,A=$.fromData(r.slice(u,u+l*l),[l,l],"float64");try{o[s]=St(A)}finally{A.dispose()}}return c}const[g,y]=t.shape;if(g!==y)throw new Error(`det: matrix must be square, got ${g}x${y}`);const i=g;if(i===0)return e?new C(1,0):1;if(e){if(i===1)return t.get(0,0);if(i===2){const a=t.get(0,0),n=t.get(0,1),c=t.get(1,0),o=t.get(1,1);return a.mul(o).sub(n.mul(c))}const{lu:h,sign:l}=Y(t);try{const a=h.data;let n=l,c=0;for(let o=0;o<i;o++){const r=(o*i+o)*2,s=a[r],u=a[r+1],A=n*s-c*u,b=n*u+c*s;n=A,c=b}return new C(n,c)}finally{h.dispose()}}const f=t.data;if(i===1)return Number(f[0]);if(i===2)return Number(f[0])*Number(f[3])-Number(f[1])*Number(f[2]);if(t.dtype==="float64"||t.dtype==="float32"){const h=at(t);if(h){const l=h.lu.data;let a=h.sign;for(let n=0;n<i;n++)a*=l[n*i+n];return h.lu.dispose(),a}}const{lu:d,sign:m}=Y(t);try{const h=d.data;let l=m;for(let a=0;a<i;a++)l*=h[a*i+a];return l}finally{d.dispose()}}function Y(t){const[e,g]=t.shape,y=e,i=g;if(z(t.dtype))return ie(t,y,i);const d=$.zeros([y,i],"float64"),m=d.data,h=t.data;for(let n=0;n<y*i;n++)m[n]=Number(h[n]);const l=Array.from({length:y},(n,c)=>c);let a=1;for(let n=0;n<Math.min(y,i);n++){let c=Math.abs(m[n*i+n]),o=n;for(let s=n+1;s<y;s++){const u=Math.abs(m[s*i+n]);u>c&&(c=u,o=s)}if(o!==n){for(let u=0;u<i;u++){const A=m[n*i+u];m[n*i+u]=m[o*i+u],m[o*i+u]=A}const s=l[n];l[n]=l[o],l[o]=s,a=-a}const r=m[n*i+n];if(Math.abs(r)>1e-15)for(let s=n+1;s<y;s++){const u=m[s*i+n]/r;m[s*i+n]=u;for(let A=n+1;A<i;A++)m[s*i+A]=m[s*i+A]-u*m[n*i+A]}}return{lu:d,piv:l,sign:a}}function ie(t,e,g){const y=$.zeros([e,g],"complex128"),i=y.data;for(let m=0;m<e;m++)for(let h=0;h<g;h++){const l=t.get(m,h),a=(m*g+h)*2;l instanceof C?(i[a]=l.re,i[a+1]=l.im):(i[a]=Number(l),i[a+1]=0)}const f=Array.from({length:e},(m,h)=>h);let d=1;for(let m=0;m<Math.min(e,g);m++){const h=(m*g+m)*2;let l=Math.sqrt(i[h]*i[h]+i[h+1]*i[h+1]),a=m;for(let s=m+1;s<e;s++){const u=(s*g+m)*2,A=Math.sqrt(i[u]*i[u]+i[u+1]*i[u+1]);A>l&&(l=A,a=s)}if(a!==m){for(let u=0;u<g;u++){const A=(m*g+u)*2,b=(a*g+u)*2,p=i[A],w=i[A+1];i[A]=i[b],i[A+1]=i[b+1],i[b]=p,i[b+1]=w}const s=f[m];f[m]=f[a],f[a]=s,d=-d}const n=(m*g+m)*2,c=i[n],o=i[n+1],r=c*c+o*o;if(r>1e-30)for(let s=m+1;s<e;s++){const u=(s*g+m)*2,A=i[u],b=i[u+1],p=(A*c+b*o)/r,w=(b*c-A*o)/r;i[u]=p,i[u+1]=w;for(let v=m+1;v<g;v++){const I=(s*g+v)*2,x=(m*g+v)*2,S=i[x],D=i[x+1];i[I]=i[I]-(p*S-w*D),i[I+1]=i[I+1]-(p*D+w*S)}}}return{lu:y,piv:f,sign:d}}function st(t){if(_(t.dtype),t.ndim<2)throw new Error(`inv: input must be at least 2D, got ${t.ndim}D`);const e=z(t.dtype);if(t.ndim>2){const a=Array.from(t.shape).slice(0,-2),n=t.shape[t.ndim-1],c=t.shape[t.ndim-2];if(c!==n)throw new Error(`inv: last 2 dimensions must be square, got ${c}x${n}`);const o=a.reduce((A,b)=>A*b,1);if(e){const A=t.dtype,b=$.zeros(Array.from(t.shape),A);for(let p=0;p<o;p++){const w=[];let v=p;for(let S=a.length-1;S>=0;S--)w[S]=v%a[S],v=Math.floor(v/a[S]);const I=$.zeros([n,n],A);for(let S=0;S<n;S++)for(let D=0;D<n;D++)I.set([S,D],t.get(...w,S,D));const x=st(I);for(let S=0;S<n;S++)for(let D=0;D<n;D++)b.set([...w,S,D],x.get(S,D));I.dispose(),x.dispose()}return b}const r=G(t),s=$.empty(Array.from(t.shape),"float64"),u=s.data;for(let A=0;A<o;A++){const b=A*n*n,p=$.fromData(r.slice(b,b+n*n),[n,n],"float64"),w=st(p),v=w.data;for(let I=0;I<n*n;I++)u[b+I]=v[I];p.dispose(),w.dispose()}return s}const[g,y]=t.shape;if(g!==y)throw new Error(`inv: matrix must be square, got ${g}x${y}`);const i=g;if(e)return ae(t,i);if(t.dtype==="float64"||t.dtype==="float32"){const a=at(t);if(a){const{lu:n,piv:c}=a,o=n.data;for(let s=0;s<i;s++)if(Math.abs(o[s*i+s])<1e-15)throw n.dispose(),new Error("inv: singular matrix");const r=Vt(n,c,t.dtype);if(n.dispose(),r)return r}}const{lu:f,piv:d}=Y(t),m=f.data,h=$.zeros([i,i],"float64"),l=h.data;for(let a=0;a<i;a++){const n=new Float64Array(i);for(let c=0;c<i;c++){let o=d[c]===a?1:0;for(let r=0;r<c;r++)o-=m[c*i+r]*n[r];n[c]=o}for(let c=i-1;c>=0;c--){let o=n[c];for(let s=c+1;s<i;s++)o-=m[c*i+s]*l[s*i+a];const r=m[c*i+c];if(Math.abs(r)<1e-15)throw new Error("inv: singular matrix");l[c*i+a]=o/r}}return f.dispose(),h}function ae(t,e){const{lu:g,piv:y}=Y(t),i=g.data;for(let h=0;h<e;h++){const l=(h*e+h)*2;if(i[l]*i[l]+i[l+1]*i[l+1]<1e-30)throw g.dispose(),new Error("inv: singular matrix")}const f=t.dtype==="complex64"?"complex64":"complex128",d=$.zeros([e,e],f),m=d.data;for(let h=0;h<e;h++){const l=new Float64Array(e),a=new Float64Array(e);for(let n=0;n<e;n++){let c=y[n]===h?1:0,o=0;for(let r=0;r<n;r++){const s=(n*e+r)*2,u=i[s],A=i[s+1];c-=u*l[r]-A*a[r],o-=u*a[r]+A*l[r]}l[n]=c,a[n]=o}for(let n=e-1;n>=0;n--){let c=l[n],o=a[n];for(let p=n+1;p<e;p++){const w=(n*e+p)*2,v=i[w],I=i[w+1],x=(p*e+h)*2,S=m[x],D=m[x+1];c-=v*S-I*D,o-=v*D+I*S}const r=(n*e+n)*2,s=i[r],u=i[r+1],A=s*s+u*u,b=(n*e+h)*2;m[b]=(c*s+o*u)/A,m[b+1]=(o*s-c*u)/A}}return g.dispose(),d}function It(t,e){const[g]=t.shape,y=g;if(z(t.dtype)||z(e.dtype))return le(t,e,y);const{lu:f,piv:d}=Y(t);try{const m=f.data,h=e.data,l=new Float64Array(y);for(let o=0;o<y;o++)l[o]=Number(h[d[o]]);const a=new Float64Array(y);for(let o=0;o<y;o++){let r=l[o];for(let s=0;s<o;s++)r-=m[o*y+s]*a[s];a[o]=r}const n=$.zeros([y],"float64"),c=n.data;for(let o=y-1;o>=0;o--){let r=a[o];for(let u=o+1;u<y;u++)r-=m[o*y+u]*c[u];const s=m[o*y+o];if(Math.abs(s)<1e-15)throw new Error("solve: singular matrix");c[o]=r/s}return n}finally{f.dispose()}}function le(t,e,g){const{lu:y,piv:i}=Y(t);try{const f=y.data,d=new Float64Array(g),m=new Float64Array(g);for(let o=0;o<g;o++){const r=e.get(i[o]);r instanceof C?(d[o]=r.re,m[o]=r.im):(d[o]=Number(r),m[o]=0)}const h=new Float64Array(g),l=new Float64Array(g);for(let o=0;o<g;o++){let r=d[o],s=m[o];for(let u=0;u<o;u++){const A=(o*g+u)*2,b=f[A],p=f[A+1];r-=b*h[u]-p*l[u],s-=b*l[u]+p*h[u]}h[o]=r,l[o]=s}const a=z(t.dtype)?t.dtype:z(e.dtype)?e.dtype:"complex128",n=$.zeros([g],a),c=n.data;for(let o=g-1;o>=0;o--){let r=h[o],s=l[o];for(let w=o+1;w<g;w++){const v=(o*g+w)*2,I=f[v],x=f[v+1],S=c[w*2],D=c[w*2+1];r-=I*S-x*D,s-=I*D+x*S}const u=(o*g+o)*2,A=f[u],b=f[u+1],p=A*A+b*b;if(p<1e-30)throw new Error("solve: singular matrix");c[o*2]=(r*A+s*b)/p,c[o*2+1]=(s*A-r*b)/p}return n}finally{y.dispose()}}function ce(t,e){if(_(t.dtype),t.ndim!==2)throw new Error(`solve: coefficient matrix must be 2D, got ${t.ndim}D`);const[g,y]=t.shape;if(g!==y)throw new Error(`solve: coefficient matrix must be square, got ${g}x${y}`);const i=g;if((t.dtype==="float64"||t.dtype==="float32")&&e.isCContiguous){const f=at(t);if(f){const{lu:d,piv:m}=f,h=t.dtype;if(e.ndim===1){if(e.shape[0]!==i)throw d.dispose(),new Error(`solve: incompatible shapes (${g},${y}) and (${e.shape[0]},)`);const l=e.dtype===h?e:$.fromData(new(h==="float32"?Float32Array:Float64Array)(Array.from({length:i},(n,c)=>Number(e.iget(c)))),[i],h),a=ht(d,m,l,h);if(d.dispose(),l!==e&&l.dispose(),a)return a}if(e.ndim===2){if(e.shape[0]!==i)throw d.dispose(),new Error(`solve: incompatible shapes (${g},${y}) and (${e.shape[0]},${e.shape[1]})`);const l=e.shape[1],a=h==="float32"?Float32Array:Float64Array,n=$.empty([i,l],h),c=n.data,o=e.data;for(let r=0;r<l;r++){const s=new a(i);for(let b=0;b<i;b++)s[b]=Number(o[e.offset+b*l+r]);const u=$.fromData(s,[i],h),A=ht(d,m,u,h);if(u.dispose(),A){const b=A.data;for(let p=0;p<i;p++)c[p*l+r]=b[p];A.dispose()}}return d.dispose(),n}d.dispose()}}if(e.ndim===1){if(e.shape[0]!==i)throw new Error(`solve: incompatible shapes (${g},${y}) and (${e.shape[0]},)`);return It(t,e)}if(e.ndim===2){if(e.shape[0]!==i)throw new Error(`solve: incompatible shapes (${g},${y}) and (${e.shape[0]},${e.shape[1]})`);const f=z(t.dtype)||z(e.dtype),d=e.shape[1],m=f?z(t.dtype)?t.dtype:e.dtype:"float64",h=$.zeros([i,d],m);for(let l=0;l<d;l++){const a=z(e.dtype)?e.dtype:f?"complex128":"float64",n=$.zeros([i],a);for(let o=0;o<i;o++)n.set([o],e.get(o,l));const c=It(t,n);for(let o=0;o<i;o++)h.set([o,l],c.get(o));n.dispose(),c.dispose()}return h}throw new Error(`solve: b must be 1D or 2D, got ${e.ndim}D`)}function Pe(t,e,g=null){if(_(t.dtype),t.ndim!==2)throw new Error(`lstsq: coefficient matrix must be 2D, got ${t.ndim}D`);const[y,i]=t.shape,f=Math.min(y,i),d=e.ndim===1?V.reshape(e,[e.size,1]):e,m=d.shape[1];if(d.shape[0]!==y)throw new Error(`lstsq: incompatible shapes (${y},${i}) and (${e.shape.join(",")})`);const{u:h,s:l,vt:a}=K(t);try{const n=l.data,c=h.data,o=a.data,r=g??Math.max(y,i)*Number.EPSILON,u=n[0]*r;let A=0;for(let N=0;N<f;N++)n[N]>u&&A++;const b=$.zeros([i,f],"float64"),p=b.data;for(let N=0;N<f;N++){const M=n[N];if(M>u){const j=1/M;for(let F=0;F<i;F++)p[F*f+N]=o[N*i+F]*j}}const w=$.empty([f,y],"float64"),v=w.data;for(let N=0;N<f;N++)for(let M=0;M<y;M++)v[N*y+M]=c[M*y+N];const I=ot(w,d)??tt(w,d);let x=ot(b,I)??tt(b,I);b.dispose(),w.dispose(),I.dispose();let S;if(y>i&&A===i){S=$.empty([m],"float64");const N=S.data,M=e.ndim===1?V.reshape(x,[i,1]):x,j=ot(t,M)??tt(t,M);M!==x&&M.dispose();const F=j.data;for(let E=0;E<m;E++){let B=0;for(let R=0;R<y;R++){const T=F[R*m+E]-Number(d.iget(R*m+E));B+=T*T}N[E]=B}j.dispose()}else S=$.zeros([0],"float64");const D=e.ndim===1?V.reshape(x,[i]):x;return D!==x&&x.dispose(),d!==e&&d.dispose(),{x:D,residuals:S,rank:A,s:l}}finally{h.dispose(),a.dispose()}}function Je(t,e=2){if(_(t.dtype),t.ndim!==2)throw new Error(`cond: input must be 2D, got ${t.ndim}D`);const[g,y]=t.shape;if(e===2||e===-2){const d=Dt(t);try{const m=Math.min(g,y),h=Number(d.get(0)),l=Number(d.get(m-1));return e===2?l>0?h/l:1/0:h>0?l/h:0}finally{d.dispose()}}if(g!==y)throw new Error(`cond: matrix must be square for p=${e}`);const i=rt(t,e),f=st(t);try{const d=rt(f,e);return i*d}finally{f.dispose()}}function Xe(t,e){if(_(t.dtype),t.ndim===0)return U(t.get())!==0?1:0;if(t.ndim===1){for(let y=0;y<t.size;y++)if(U(t.get(y))!==0)return 1;return 0}if(t.ndim!==2)throw new Error(`matrix_rank: input must be at most 2D, got ${t.ndim}D`);const g=Dt(t);try{const y=Number(g.get(0)),i=e??y*Math.max(t.shape[0],t.shape[1])*Number.EPSILON;let f=0;for(let d=0;d<g.size;d++)Number(g.get(d))>i&&f++;return f}finally{g.dispose()}}function We(t,e){if(t.ndim!==2)throw new Error(`matrix_power: input must be 2D, got ${t.ndim}D`);const[g,y]=t.shape;if(g!==y)throw new Error(`matrix_power: matrix must be square, got ${g}x${y}`);const i=g;if(!Number.isInteger(e))throw new Error("matrix_power: exponent must be an integer");const f=z(t.dtype),d=q(t.dtype),m=f?t.dtype:t.dtype==="float32"?"float32":d?t.dtype:"float64",h=f?new C(1,0):d?1n:1;if(e===0){const o=$.zeros([i,i],m);for(let r=0;r<i;r++)o.set([r,r],h);return o}let l=t,a=e;e<0&&(l=st(t),a=-e);let n=$.zeros([i,i],m);for(let o=0;o<i;o++)n.set([o,o],h);let c;if(l.isCContiguous&&l.dtype===m)c=l.copy();else{c=$.zeros([i,i],m);for(let o=0;o<i;o++)for(let r=0;r<i;r++)c.set([o,r],l.get(o,r))}try{for(;a>0;){if(a&1){const o=n;n=Q(n,c),o.dispose()}if(a>>=1,a){const o=c;c=Q(c,c),o.dispose()}}return n}finally{c.dispose(),e<0&&l.dispose()}}function ue(t,e=1e-15){if(_(t.dtype),t.ndim<2)throw new Error(`pinv: input must be at least 2D, got ${t.ndim}D`);if(t.ndim>2){const m=Array.from(t.shape).slice(0,-2),h=t.shape[t.ndim-2],l=t.shape[t.ndim-1],a=m.reduce((r,s)=>r*s,1),n=$.empty([...m,l,h],"float64"),c=n.data,o=G(t);for(let r=0;r<a;r++){const s=r*h*l,u=$.fromData(o.slice(s,s+h*l),[h,l],"float64"),A=ue(u,e);try{c.set(G(A),r*l*h)}finally{u.dispose(),A.dispose()}}return n}const[g,y]=t.shape,{u:i,s:f,vt:d}=K(t);try{const m=Math.min(g,y),h=f.data,a=h[0]*e,n=$.zeros([y,m],"float64"),c=n.data;for(let A=0;A<m;A++){const b=h[A];if(b>a){const p=1/b;for(let w=0;w<y;w++)c[w*m+A]=d.data[A*y+w]*p}}const o=$.empty([m,g],"float64"),r=o.data,s=i.data;for(let A=0;A<m;A++)for(let b=0;b<g;b++)r[A*g+b]=s[b*g+A];const u=ot(n,o)??tt(n,o);return n.dispose(),o.dispose(),u}finally{i.dispose(),f.dispose(),d.dispose()}}function vt(t){if(_(t.dtype),t.ndim<2)throw new Error(`eig: input must be at least 2D, got ${t.ndim}D`);if(t.ndim>2){const a=Array.from(t.shape).slice(0,-2),n=t.shape[t.ndim-1],c=t.shape[t.ndim-2];if(c!==n)throw new Error(`eig: last 2 dimensions must be square, got ${c}x${n}`);const o=a.reduce((b,p)=>b*p,1),r=$.empty([...a,n],"float64"),s=$.empty([...a,n,n],"float64"),u=r.data,A=s.data;for(let b=0;b<o;b++){const p=H(b,a),w=$.zeros([n,n],"float64");for(let x=0;x<n;x++)for(let S=0;S<n;S++)w.set([x,S],J(t.get(...p,x,S)));const{w:v,v:I}=vt(w);u.set(G(v),b*n),A.set(G(I),b*n*n),w.dispose(),v.dispose(),I.dispose()}return{w:r,v:s}}const[e,g]=t.shape;if(e!==g)throw new Error(`eig: matrix must be square, got ${e}x${g}`);const y=e;let i=!0;t:for(let a=0;a<y;a++)for(let n=a+1;n<y;n++)if(Math.abs(J(t.get(a,n))-J(t.get(n,a)))>1e-10){i=!1;break t}if(i){const{values:a,vectors:n}=ft(t),c=$.zeros([y],"float64"),o=$.zeros([y,y],"float64");for(let r=0;r<y;r++){c.set([r],a[r]);for(let s=0;s<y;s++)o.set([s,r],n[s][r])}return{w:c,v:o}}const{values:f,vectors:d,hasComplexEigenvalues:m}=me(t);m&&console.warn("numpy-ts: eig() detected complex eigenvalues which cannot be represented. Results are real approximations and may be inaccurate. For symmetric matrices, use eigh() instead.");const h=$.zeros([y],"float64"),l=$.zeros([y,y],"float64");for(let a=0;a<y;a++){h.set([a],f[a]);for(let n=0;n<y;n++)l.set([n,a],d[n][a])}return{w:h,v:l}}function me(t){const e=t.shape[0],g=1e3,y=1e-10;let i=$.zeros([e,e],"float64");for(let l=0;l<e;l++)for(let a=0;a<e;a++)i.set([l,a],J(t.get(l,a)));let f=$.zeros([e,e],"float64");for(let l=0;l<e;l++)f.set([l,l],1);for(let l=0;l<g;l++){let a=0;for(let r=0;r<e;r++)for(let s=0;s<e;s++)r!==s&&(a+=Number(i.get(r,s))**2);if(Math.sqrt(a)<y*e)break;const n=wt(i,"reduced"),c=n.q,o=n.r;i=Q(o,c),f=Q(f,c)}let d=!1;for(let l=0;l<e-1;l++){const a=Math.abs(Number(i.get(l+1,l))),n=Math.abs(Number(i.get(l,l))),c=Math.abs(Number(i.get(l+1,l+1))),o=Math.max(n,c,1e-10);if(a/o>1e-6){d=!0;break}}const m=[];for(let l=0;l<e;l++)m.push(Number(i.get(l,l)));const h=[];for(let l=0;l<e;l++){h.push([]);for(let a=0;a<e;a++)h[l].push(Number(f.get(l,a)))}return{values:m,vectors:h,hasComplexEigenvalues:d}}function Nt(t,e="L"){if(_(t.dtype),t.ndim<2)throw new Error(`eigh: input must be at least 2D, got ${t.ndim}D`);if(t.ndim>2){const n=Array.from(t.shape).slice(0,-2),c=t.shape[t.ndim-1],o=t.shape[t.ndim-2];if(o!==c)throw new Error(`eigh: last 2 dimensions must be square, got ${o}x${c}`);const r=n.reduce((p,w)=>p*w,1),s=$.empty([...n,c],"float64"),u=$.empty([...n,c,c],"float64"),A=s.data,b=u.data;for(let p=0;p<r;p++){const w=H(p,n),v=$.zeros([c,c],"float64");for(let S=0;S<c;S++)for(let D=0;D<c;D++)v.set([S,D],J(t.get(...w,S,D)));const{w:I,v:x}=Nt(v,e);A.set(G(I),p*c),b.set(G(x),p*c*c),v.dispose(),I.dispose(),x.dispose()}return{w:s,v:u}}const[g,y]=t.shape;if(g!==y)throw new Error(`eigh: matrix must be square, got ${g}x${y}`);const i=g,f=$.zeros([i,i],"float64");for(let n=0;n<i;n++)for(let c=0;c<i;c++)if(e==="L"){if(n>=c){const o=J(t.get(n,c));f.set([n,c],o),f.set([c,n],o)}}else if(c>=n){const o=J(t.get(n,c));f.set([n,c],o),f.set([c,n],o)}const{values:d,vectors:m}=ft(f);f.dispose();const h=Array.from({length:i},(n,c)=>c);h.sort((n,c)=>d[n]-d[c]);const l=$.zeros([i],"float64"),a=$.zeros([i,i],"float64");for(let n=0;n<i;n++){l.set([n],d[h[n]]);for(let c=0;c<i;c++)a.set([c,n],m[c][h[n]])}return{w:l,v:a}}function Qe(t){_(t.dtype);const{w:e}=vt(t);return e}function Ze(t,e="L"){_(t.dtype);const{w:g}=Nt(t,e);return g}function Ge(t,e){const g=V.flatten(t),y=V.flatten(e);try{const i=fe(g,y,t.dtype,e.dtype);return t.dtype==="bool"&&e.dtype==="bool"&&typeof i=="number"?i?1:0:i}finally{g.dispose(),y.dispose()}}function fe(t,e,g,y){const i=t.shape[0],f=e.shape[0];if(i!==f)throw new Error(`vdot: arrays must have same number of elements, got ${i} and ${f}`);const d=z(g)||z(y);if(d){const a=Tt(t,e);if(a!==null)return a}else{const a=ut(t,e);if(a!==null)return g==="bool"&&y==="bool"?a?1:0:a}if(d){let a=0,n=0;for(let c=0;c<i;c++){const o=t.get(c),r=e.get(c),s=o instanceof C?o.re:Number(o),u=o instanceof C?o.im:0,A=r instanceof C?r.re:Number(r),b=r instanceof C?r.im:0;a+=s*A+u*b,n+=-u*A+s*b}return Math.abs(n)<1e-15?a:new C(a,n)}const m=k(g,y),h=W(m);if(h){h[0]=0;for(let a=0;a<i;a++)h[0]+=Number(t.get(a))*Number(e.get(a));return h[0]}if(m==="float16"&&it){const a=new Float16Array(1);a[0]=0;for(let n=0;n<i;n++)a[0]+=Number(t.get(n))*Number(e.get(n));return Number(a[0])}if(m==="float32"){const a=new Float32Array(1);a[0]=0;for(let n=0;n<i;n++)a[0]+=Number(t.get(n))*Number(e.get(n));return a[0]}let l=0;for(let a=0;a<i;a++){const n=t.get(a),c=e.get(a);typeof n=="bigint"&&typeof c=="bigint"?l=(typeof l=="bigint"?l:BigInt(l))+n*c:l=(typeof l=="bigint"?Number(l):l)+Number(n)*Number(c)}return l}function He(t,e,g=-1){const y=t.ndim,i=e.ndim,f=g<0?y+g:g,d=g<0?i+g:g;if(f<0||f>=y)throw new Error(`vecdot: axis ${g} out of bounds for array with ${y} dimensions`);if(d<0||d>=i)throw new Error(`vecdot: axis ${g} out of bounds for array with ${i} dimensions`);const m=t.shape[f],h=e.shape[d];if(m!==h)throw new Error(`vecdot: axis dimensions must match, got ${m} and ${h}`);if(y===1&&i===1){if(!(z(t.dtype)||z(e.dtype)))return nt(t,e);const p=t.shape[0];let w=0,v=0;for(let I=0;I<p;I++){const x=t.get(I),S=e.get(I),D=x instanceof C?new C(x.re,-x.im):x,N=Z(D,S);N instanceof C?(w+=N.re,v+=N.im):w+=Number(N)}return new C(w,v)}if(y===2&&i===2&&g===-1){const b=qt(t,e);if(b)return b}const l=[...t.shape.slice(0,f),...t.shape.slice(f+1)],a=[...e.shape.slice(0,d),...e.shape.slice(d+1)],n=m,c=z(t.dtype)||z(e.dtype),o=k(t.dtype,e.dtype),r=l.length>a.length?l:a,s=W(o);if(r.length===0){if(s){s[0]=0;for(let p=0;p<n;p++)s[0]+=Number(t.get(p))*Number(e.get(p));return s[0]}let b=c?new C(0,0):q(o)?0n:0;for(let p=0;p<n;p++){const w=t.get(p),v=e.get(p),I=w instanceof C?new C(w.re,-w.im):w,x=Z(I,v);if(b instanceof C||x instanceof C){const S=b instanceof C?b:new C(Number(b),0),D=x instanceof C?x:new C(Number(x),0);b=S.add(D)}else typeof b=="bigint"||typeof x=="bigint"?b=BigInt(b)+BigInt(x):b=b+x}return b}const u=$.zeros(r,o),A=r.reduce((b,p)=>b*p,1);for(let b=0;b<A;b++){const p=[];let w=b;for(let x=r.length-1;x>=0;x--)p.unshift(w%r[x]),w=Math.floor(w/r[x]);const v=[...p.slice(0,f),0,...p.slice(f)],I=[...p.slice(0,d),0,...p.slice(d)];if(s){s[0]=0;for(let x=0;x<n;x++)v[f]=x,I[d]=x,s[0]+=Number(t.get(...v))*Number(e.get(...I));u.set(p,s[0])}else{let x=c?new C(0,0):q(o)?0n:0;for(let S=0;S<n;S++){v[f]=S,I[d]=S;const D=t.get(...v),N=e.get(...I),M=D instanceof C?new C(D.re,-D.im):D,j=Z(M,N);if(x instanceof C||j instanceof C){const F=x instanceof C?x:new C(Number(x),0),E=j instanceof C?j:new C(Number(j),0);x=F.add(E)}else typeof x=="bigint"||typeof j=="bigint"?x=BigInt(x)+BigInt(j):x=x+j}u.set(p,x)}}return u}function Ke(t){if(t.ndim<2)throw new Error(`matrix_transpose: input must have at least 2 dimensions, got ${t.ndim}D`);const e=Array.from({length:t.ndim},(y,i)=>i),g=e.length-1;return e[g]=g-1,e[g-1]=g,et(t,e)}function Ye(t,e){return et(t,e)}function tr(t,e){if(t.ndim<2)throw new Error(`matvec: x1 must have at least 2 dimensions, got ${t.ndim}D`);if(e.ndim<1)throw new Error(`matvec: x2 must have at least 1 dimension, got ${e.ndim}D`);const g=t.shape[t.ndim-2],y=t.shape[t.ndim-1],i=e.shape[e.ndim-1];if(y!==i)throw new Error(`matvec: last axis of x1 (${y}) must match last axis of x2 (${i})`);if(t.ndim===2&&e.ndim===1)return nt(t,e);const f=t.shape.slice(0,-2),d=e.shape.slice(0,-1),m=Math.max(f.length,d.length),h=[...Array(m-f.length).fill(1),...f],l=[...Array(m-d.length).fill(1),...d],a=[];for(let u=0;u<m;u++){const A=h[u],b=l[u];if(A!==1&&b!==1&&A!==b)throw new Error(`matvec: batch dimensions not broadcastable: ${f} vs ${d}`);a.push(Math.max(A,b))}const n=[...a,g],c=k(t.dtype,e.dtype),o=$.zeros(n,c),r=z(c),s=a.reduce((u,A)=>u*A,1);for(let u=0;u<s;u++){const A=[];let b=u;for(let I=a.length-1;I>=0;I--)A.unshift(b%a[I]),b=Math.floor(b/a[I]);const p=A.slice(-(f.length||1)).map((I,x)=>(f[x]??1)===1?0:I),w=A.slice(-(d.length||1)).map((I,x)=>(d[x]??1)===1?0:I),v=W(c);for(let I=0;I<g;I++)if(v){v[0]=0;for(let x=0;x<y;x++){const S=[...p,I,x],D=[...w,x];v[0]+=Number(t.get(...S))*Number(e.get(...D))}o.set([...A,I],v[0])}else{let x=r?new C(0,0):q(c)?0n:0;for(let S=0;S<y;S++){const D=[...p,I,S],N=[...w,S],M=t.get(...D),j=e.get(...N),F=Z(M,j);if(x instanceof C||F instanceof C){const E=x instanceof C?x:new C(Number(x),0),B=F instanceof C?F:new C(Number(F),0);x=E.add(B)}else typeof x=="bigint"||typeof F=="bigint"?x=BigInt(x)+BigInt(F):x=x+F}o.set([...A,I],x)}}return o}function er(t,e){if(t.ndim<1)throw new Error(`vecmat: x1 must have at least 1 dimension, got ${t.ndim}D`);if(e.ndim<2)throw new Error(`vecmat: x2 must have at least 2 dimensions, got ${e.ndim}D`);const g=t.shape[t.ndim-1],y=e.shape[e.ndim-2],i=e.shape[e.ndim-1];if(g!==y)throw new Error(`vecmat: last axis of x1 (${g}) must match second-to-last axis of x2 (${y})`);if(t.ndim===1&&e.ndim===2){const u=z(t.dtype)?Et(t):t;return nt(u,e)}const f=t.shape.slice(0,-1),d=e.shape.slice(0,-2),m=Math.max(f.length,d.length),h=[...Array(m-f.length).fill(1),...f],l=[...Array(m-d.length).fill(1),...d],a=[];for(let u=0;u<m;u++){const A=h[u],b=l[u];if(A!==1&&b!==1&&A!==b)throw new Error(`vecmat: batch dimensions not broadcastable: ${f} vs ${d}`);a.push(Math.max(A,b))}const n=[...a,i],c=k(t.dtype,e.dtype),o=$.zeros(n,c),r=z(c),s=a.reduce((u,A)=>u*A,1);for(let u=0;u<s;u++){const A=[];let b=u;for(let I=a.length-1;I>=0;I--)A.unshift(b%a[I]),b=Math.floor(b/a[I]);const p=A.slice(-(f.length||1)).map((I,x)=>(f[x]??1)===1?0:I),w=A.slice(-(d.length||1)).map((I,x)=>(d[x]??1)===1?0:I),v=W(c);for(let I=0;I<i;I++)if(v){v[0]=0;for(let x=0;x<g;x++){const S=[...p,x],D=[...w,x,I];v[0]+=Number(t.get(...S))*Number(e.get(...D))}o.set([...A,I],v[0])}else{let x=r?new C(0,0):q(c)?0n:0;for(let S=0;S<g;S++){const D=[...p,S],N=[...w,S,I];let M=t.get(...D);M instanceof C&&(M=new C(M.re,-M.im));const j=e.get(...N),F=Z(M,j);if(x instanceof C||F instanceof C){const E=x instanceof C?x:new C(Number(x),0),B=F instanceof C?F:new C(Number(F),0);x=E.add(B)}else typeof x=="bigint"||typeof F=="bigint"?x=BigInt(x)+BigInt(F):x=x+F}o.set([...A,I],x)}}return o}function pe(t){if(_(t.dtype),t.ndim<2)throw new Error(`slogdet: input must be at least 2D, got ${t.ndim}D`);if(t.ndim>2){const d=Array.from(t.shape).slice(0,-2),m=t.shape[t.ndim-1],h=t.shape[t.ndim-2];if(h!==m)throw new Error(`slogdet: last 2 dimensions must be square, got ${h}x${m}`);const l=d.reduce((s,u)=>s*u,1),a=$.empty(d,"float64"),n=$.empty(d,"float64"),c=a.data,o=n.data,r=G(t);for(let s=0;s<l;s++){const u=s*m*m,A=$.fromData(r.slice(u,u+m*m),[m,m],"float64");try{const{sign:b,logabsdet:p}=pe(A);c[s]=b,o[s]=p}finally{A.dispose()}}return{sign:a,logabsdet:n}}const[e,g]=t.shape;if(e!==g)throw new Error(`slogdet: matrix must be square, got ${e}x${g}`);const y=e;if(y===0)return{sign:1,logabsdet:0};if(t.dtype==="float64"||t.dtype==="float32"){const d=at(t);if(d){const m=d.lu.data;let h=0,l=d.sign;for(let a=0;a<y;a++){const n=m[a*y+a];if(n===0)return d.lu.dispose(),{sign:0,logabsdet:-1/0};n<0&&(l=-l),h+=Math.log(Math.abs(n))}return d.lu.dispose(),{sign:l,logabsdet:h}}}const{lu:i,sign:f}=Y(t);try{const d=i.data,m=z(i.dtype);let h=0,l=f;if(m){let a=f,n=0;for(let c=0;c<y;c++){const o=(c*y+c)*2,r=d[o],s=d[o+1],u=Math.sqrt(r*r+s*s);if(u===0)return{sign:0,logabsdet:-1/0};h+=Math.log(u);const A=r/u,b=s/u,p=a*A-n*b,w=a*b+n*A;a=p,n=w}Math.abs(n)<1e-10?l=Math.round(a):l=a}else for(let a=0;a<y;a++){const n=d[a*y+a];if(n===0)return{sign:0,logabsdet:-1/0};n<0&&(l=-l),h+=Math.log(Math.abs(n))}return{sign:l,logabsdet:h}}finally{i.dispose()}}function Dt(t){_(t.dtype);const e=t.dtype,g=zt(t);if(g){if(e==="float32"&&g.dtype==="float64"){const i=$.empty(Array.from(g.shape),"float32"),f=g.data,d=i.data;for(let m=0;m<g.size;m++)d[m]=f[m];return g.dispose(),i}return g}return xt(t,!0,!1)}function rr(t){if(t.length<2)throw new Error("multi_dot: need at least 2 arrays");if(t.length===2)return Q(t[0],t[1]);let e=Q(t[0],t[1]);for(let g=2;g<t.length;g++){const y=e;e=Q(e,t[g]),y.dispose()}return e}function or(t,e=2){if(_(t.dtype),e<=0)throw new Error(`tensorinv: ind must be positive, got ${e}`);const g=t.shape,y=t.ndim;if(y<e)throw new Error(`tensorinv: array has ${y} dimensions, ind=${e} is too large`);let i=1;for(let l=0;l<e;l++)i*=g[l];let f=1;for(let l=e;l<y;l++)f*=g[l];if(i!==f)throw new Error(`tensorinv: product of first ${e} dimensions (${i}) must equal product of remaining dimensions (${f})`);const d=V.reshape(t,[i,f]),m=st(d),h=[...g.slice(e),...g.slice(0,e)];return V.reshape(m,h)}function nr(t,e,g){_(t.dtype);const y=t.shape,i=e.shape,f=t.ndim,d=e.ndim;let m;g==null?m=Array.from({length:d},(p,w)=>f-d+w):m=g.map(p=>p<0?f+p:p);const h=[];for(let p=0;p<f;p++)m.includes(p)||h.push(p);const l=[...h,...m],a=et(t,l),c=m.map(p=>y[p]).reduce((p,w)=>p*w,1),r=h.map(p=>y[p]).reduce((p,w)=>p*w,1),s=i.reduce((p,w)=>p*w,1);if(c!==s)throw new Error(`tensorsolve: dimensions don't match - sum dimensions product (${c}) != b total elements (${s})`);if(r!==c)throw new Error(`tensorsolve: non-square problem - other dimensions product (${r}) != sum dimensions product (${c})`);const u=V.reshape(a,[r,c]),A=V.reshape(e,[c]),b=ce(u,A);return V.reshape(b,[...i])}function sr(t,...e){const g=t.indexOf("->");let y,i;g===-1?(y=t,i=At(y)):(y=t.slice(0,g),i=t.slice(g+2));const f=y.split(",").map(c=>c.trim());if(f.length!==e.length)throw new Error(`einsum_path: expected ${f.length} operands, got ${e.length}`);const d=e.map(c=>Array.isArray(c)?c:Array.from(c.shape)),m=new Map;for(let c=0;c<e.length;c++){const o=f[c],r=d[c];if(o.length!==r.length)throw new Error(`einsum_path: operand ${c} has ${r.length} dimensions but subscript '${o}' has ${o.length} indices`);for(let s=0;s<o.length;s++){const u=o[s],A=r[s];if(m.has(u)&&m.get(u)!==A)throw new Error(`einsum_path: size mismatch for index '${u}': ${m.get(u)} vs ${A}`);m.set(u,A)}}if(e.length===1){const c=[[0]];return[c,pt(t,d,c,m)]}if(e.length===2){const c=[[0,1]];return[c,pt(t,d,c,m)]}const h=[],l=[...f],a=[...d],n=e.map((c,o)=>o);for(;l.length>1;){let c=0,o=1,r=1/0;for(let A=0;A<l.length;A++)for(let b=A+1;b<l.length;b++){const p=de(l[A],l[b],a[A],a[b],i,m);p<r&&(r=p,c=A,o=b)}h.push([n[c],n[o]]);const[s,u]=ge(l[c],l[o],a[c],a[o],i,m);l.splice(o,1),l.splice(c,1),a.splice(o,1),a.splice(c,1),n.splice(o,1),n.splice(c,1),l.push(s),a.push(u),n.push(-1)}return[h,pt(t,d,h,m)]}function de(t,e,g,y,i,f){const d=new Set(t),m=new Set(e);let h=1;for(const l of d)h*=f.get(l)||1;for(const l of m)d.has(l)||(h*=f.get(l)||1);return h}function ge(t,e,g,y,i,f){const d=new Set([...t,...e]),m=new Map;for(const n of t)m.set(n,(m.get(n)||0)+1);for(const n of e)m.set(n,(m.get(n)||0)+1);const h=new Set(i),l=[];for(const n of d)(h.has(n)||m.get(n)===1)&&l.push(n);l.sort();const a=l.map(n=>f.get(n));return[l.join(""),a]}function pt(t,e,g,y){const i=[];i.push(" Complete contraction: "+t),i.push(" Operand shapes: "+e.map(d=>`(${d.join(", ")})`).join(", ")),i.push(" Contraction path: "+JSON.stringify(g));let f=0;for(const d of e)f+=d.reduce((m,h)=>m*h,1);return i.push(" Estimated FLOPS: ~"+f.toExponential(2)),i.join(`
2
+ `)}export{se as cholesky,Je as cond,Ue as cross,St as det,Te as diagonal,nt as dot,vt as eig,Nt as eigh,Qe as eigvals,Ze as eigvalsh,_e as einsum,sr as einsum_path,ke as inner,st as inv,Oe as kron,Pe as lstsq,Q as matmul,rt as matrix_norm,We as matrix_power,Xe as matrix_rank,Ke as matrix_transpose,tr as matvec,rr as multi_dot,Le as norm,oe as outer,Ye as permute_dims,ue as pinv,wt as qr,pe as slogdet,ce as solve,xt as svd,Dt as svdvals,qe as tensordot,or as tensorinv,nr as tensorsolve,Ve as trace,et as transpose,Ge as vdot,He as vecdot,er as vecmat,lt as vector_norm};
@@ -1 +1 @@
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
+ import{ArrayStorage as m}from"../storage.js";import{isBigIntDType as d,isComplexDType as b,isIntegerDType as S,throwIfComplex as h,hasFloat16 as I,mathResultDtype as D,promoteDTypes as v}from"../dtype.js";import{elementwiseComparisonOp as B}from"../internal/compute.js";import{broadcastShapes as T}from"../internal/compute.js";import{wasmLogicalAnd as j,wasmLogicalAndScalar as V}from"../wasm/logical_and.js";import{wasmLogicalOr as P,wasmLogicalOrScalar as O}from"../wasm/logical_or.js";import{wasmLogicalXor as Y,wasmLogicalXorScalar as x}from"../wasm/logical_xor.js";import{wasmIsnan as q}from"../wasm/isnan.js";import{wasmIsfinite as G}from"../wasm/isfinite.js";import{wasmCopysign as H,wasmCopysignScalar as M}from"../wasm/copysign.js";import{wasmLogicalNot as J}from"../wasm/logical_not.js";import{wasmSignbit as K}from"../wasm/signbit.js";function F(t){return t!==0&&t!==0n}function N(t,o){const f=t[o*2],i=t[o*2+1];return f!==0||i!==0}function w(t,o){return t.isCContiguous&&o.isCContiguous&&t.shape.length===o.shape.length&&t.shape.every((f,i)=>f===o.shape[i])}function At(t,o){if(typeof o=="number"){const f=V(t,o);return f||L(t,o)}if(o.size===1&&!b(o.dtype)){const f=Number(o.iget(0)),i=V(t,f);return i||L(t,f)}if(w(t,o)){const f=j(t,o);return f||Q(t,o)}return B(t,o,(f,i)=>F(f)&&F(i))}function Q(t,o){const f=m.empty(Array.from(t.shape),"bool"),i=f.data,a=t.data,r=o.data,e=t.offset,n=o.offset,s=t.size,l=d(t.dtype),u=d(o.dtype),p=b(t.dtype),y=b(o.dtype);if(p||y)for(let c=0;c<s;c++){const A=p?N(a,e+c):a[e+c]!==0,g=y?N(r,n+c):r[n+c]!==0;i[c]=A&&g?1:0}else if(l||u)for(let c=0;c<s;c++){const A=l?a[e+c]!==0n:a[e+c]!==0,g=u?r[n+c]!==0n:r[n+c]!==0;i[c]=A&&g?1:0}else for(let c=0;c<s;c++)i[c]=a[e+c]!==0&&r[n+c]!==0?1:0;return f}function L(t,o){const f=m.empty(Array.from(t.shape),"bool"),i=f.data,a=o!==0,r=t.size;if(t.isCContiguous){const e=t.data,n=t.offset;if(b(t.dtype)){const s=e;for(let l=0;l<r;l++)i[l]=N(s,n+l)&&a?1:0}else if(d(t.dtype)){const s=e;for(let l=0;l<r;l++)i[l]=s[n+l]!==0n&&a?1:0}else if(n===0)for(let s=0;s<r;s++)i[s]=e[s]!==0&&a?1:0;else for(let s=0;s<r;s++)i[s]=e[n+s]!==0&&a?1:0}else if(b(t.dtype))for(let e=0;e<r;e++){const n=t.iget(e);i[e]=(n.re!==0||n.im!==0)&&a?1:0}else if(d(t.dtype))for(let e=0;e<r;e++)i[e]=t.iget(e)!==0n&&a?1:0;else for(let e=0;e<r;e++)i[e]=Number(t.iget(e))!==0&&a?1:0;return f}function gt(t,o){if(typeof o=="number"){const f=O(t,o);return f||_(t,o)}if(o.size===1&&!b(o.dtype)){const f=Number(o.iget(0)),i=O(t,f);return i||_(t,f)}if(w(t,o)){const f=P(t,o);return f||W(t,o)}return B(t,o,(f,i)=>F(f)||F(i))}function W(t,o){const f=m.empty(Array.from(t.shape),"bool"),i=f.data,a=t.data,r=o.data,e=t.offset,n=o.offset,s=t.size,l=d(t.dtype),u=d(o.dtype),p=b(t.dtype),y=b(o.dtype);if(p||y)for(let c=0;c<s;c++){const A=p?N(a,e+c):a[e+c]!==0,g=y?N(r,n+c):r[n+c]!==0;i[c]=A||g?1:0}else if(l||u)for(let c=0;c<s;c++){const A=l?a[e+c]!==0n:a[e+c]!==0,g=u?r[n+c]!==0n:r[n+c]!==0;i[c]=A||g?1:0}else for(let c=0;c<s;c++)i[c]=a[e+c]!==0||r[n+c]!==0?1:0;return f}function _(t,o){const f=m.empty(Array.from(t.shape),"bool"),i=f.data,a=o!==0,r=t.size;if(t.isCContiguous){const e=t.data,n=t.offset;if(b(t.dtype)){const s=e;for(let l=0;l<r;l++)i[l]=N(s,n+l)||a?1:0}else if(d(t.dtype)){const s=e;for(let l=0;l<r;l++)i[l]=s[n+l]!==0n||a?1:0}else if(n===0)for(let s=0;s<r;s++)i[s]=e[s]!==0||a?1:0;else for(let s=0;s<r;s++)i[s]=e[n+s]!==0||a?1:0}else if(b(t.dtype))for(let e=0;e<r;e++){const n=t.iget(e);i[e]=n.re!==0||n.im!==0||a?1:0}else if(d(t.dtype))for(let e=0;e<r;e++)i[e]=t.iget(e)!==0n||a?1:0;else for(let e=0;e<r;e++)i[e]=Number(t.iget(e))!==0||a?1:0;return f}function Nt(t){const o=J(t);if(o)return o;const f=m.empty(Array.from(t.shape),"bool"),i=f.data,a=t.size;if(t.isCContiguous){const r=t.data,e=t.offset;if(b(t.dtype)){const n=r;for(let s=0;s<a;s++)i[s]=N(n,e+s)?0:1}else if(d(t.dtype)){const n=r;for(let s=0;s<a;s++)i[s]=n[e+s]===0n?1:0}else if(e===0)for(let n=0;n<a;n++)i[n]=r[n]===0?1:0;else for(let n=0;n<a;n++)i[n]=r[e+n]===0?1:0}else if(b(t.dtype))for(let r=0;r<a;r++){const e=t.iget(r);i[r]=e.re===0&&e.im===0?1:0}else if(d(t.dtype))for(let r=0;r<a;r++)i[r]=t.iget(r)===0n?1:0;else for(let r=0;r<a;r++)i[r]=Number(t.iget(r))===0?1:0;return f}function St(t,o){if(typeof o=="number"){const f=x(t,o);return f||k(t,o)}if(o.size===1&&!b(o.dtype)){const f=Number(o.iget(0)),i=x(t,f);return i||k(t,f)}if(w(t,o)){const f=Y(t,o);return f||Z(t,o)}return B(t,o,(f,i)=>F(f)!==F(i))}function Z(t,o){const f=m.empty(Array.from(t.shape),"bool"),i=f.data,a=t.data,r=o.data,e=t.offset,n=o.offset,s=t.size,l=d(t.dtype),u=d(o.dtype),p=b(t.dtype),y=b(o.dtype);if(p||y)for(let c=0;c<s;c++){const A=p?N(a,e+c):a[e+c]!==0,g=y?N(r,n+c):r[n+c]!==0;i[c]=A!==g?1:0}else if(l||u)for(let c=0;c<s;c++){const A=l?a[e+c]!==0n:a[e+c]!==0,g=u?r[n+c]!==0n:r[n+c]!==0;i[c]=A!==g?1:0}else for(let c=0;c<s;c++){const A=a[e+c]!==0,g=r[n+c]!==0;i[c]=A!==g?1:0}return f}function k(t,o){const f=m.empty(Array.from(t.shape),"bool"),i=f.data,a=o!==0,r=t.size;if(t.isCContiguous){const e=t.data,n=t.offset;if(b(t.dtype)){const s=e;for(let l=0;l<r;l++){const u=N(s,n+l);i[l]=u!==a?1:0}}else if(d(t.dtype)){const s=e;for(let l=0;l<r;l++){const u=s[n+l]!==0n;i[l]=u!==a?1:0}}else if(n===0)for(let s=0;s<r;s++){const l=e[s]!==0;i[s]=l!==a?1:0}else for(let s=0;s<r;s++){const l=e[n+s]!==0;i[s]=l!==a?1:0}}else if(b(t.dtype))for(let e=0;e<r;e++){const n=t.iget(e),s=n.re!==0||n.im!==0;i[e]=s!==a?1:0}else if(d(t.dtype))for(let e=0;e<r;e++){const n=t.iget(e)!==0n;i[e]=n!==a?1:0}else for(let e=0;e<r;e++){const n=Number(t.iget(e))!==0;i[e]=n!==a?1:0}return f}function Dt(t){if(d(t.dtype)||S(t.dtype))return m.ones(Array.from(t.shape),"bool");const o=G(t);if(o)return o;const f=m.empty(Array.from(t.shape),"bool"),i=f.data,a=t.size;if(t.isCContiguous){const r=t.data,e=t.offset;if(b(t.dtype)){const n=r;for(let s=0;s<a;s++){const l=n[(e+s)*2],u=n[(e+s)*2+1];i[s]=Number.isFinite(l)&&Number.isFinite(u)?1:0}}else if(d(t.dtype)||S(t.dtype))i.fill(1);else for(let n=0;n<a;n++){const s=r[e+n];i[n]=s-s===0?1:0}}else if(b(t.dtype))for(let r=0;r<a;r++){const e=t.iget(r),n=e.re-e.re===0,s=e.im-e.im===0;i[r]=n&&s?1:0}else if(d(t.dtype)||S(t.dtype))i.fill(1);else for(let r=0;r<a;r++){const e=Number(t.iget(r));i[r]=e-e===0?1:0}return f}function ht(t){const o=m.empty(Array.from(t.shape),"bool"),f=o.data,i=t.size;if(t.isCContiguous){const a=t.data,r=t.offset;if(b(t.dtype)){const e=a;for(let n=0;n<i;n++){const s=e[(r+n)*2],l=e[(r+n)*2+1],u=!Number.isFinite(s)&&!Number.isNaN(s),p=!Number.isFinite(l)&&!Number.isNaN(l);f[n]=u||p?1:0}}else if(!(d(t.dtype)||S(t.dtype)))if(r===0)for(let e=0;e<i;e++){const n=a[e];f[e]=!Number.isFinite(n)&&!Number.isNaN(n)?1:0}else for(let e=0;e<i;e++){const n=a[r+e];f[e]=!Number.isFinite(n)&&!Number.isNaN(n)?1:0}}else if(b(t.dtype))for(let a=0;a<i;a++){const r=t.iget(a),e=!Number.isFinite(r.re)&&!Number.isNaN(r.re),n=!Number.isFinite(r.im)&&!Number.isNaN(r.im);f[a]=e||n?1:0}else if(!(d(t.dtype)||S(t.dtype)))for(let a=0;a<i;a++){const r=Number(t.iget(a));f[a]=!Number.isFinite(r)&&!Number.isNaN(r)?1:0}return o}function Ft(t){const o=q(t);if(o)return o;const f=m.empty(Array.from(t.shape),"bool"),i=f.data,a=t.size;if(t.isCContiguous){const r=t.data,e=t.offset;if(b(t.dtype)){const n=r;for(let s=0;s<a;s++){const l=n[(e+s)*2],u=n[(e+s)*2+1];i[s]=Number.isNaN(l)||Number.isNaN(u)?1:0}}else if(!(d(t.dtype)||S(t.dtype)))for(let n=0;n<a;n++){const s=r[e+n];i[n]=s!==s?1:0}}else if(b(t.dtype))for(let r=0;r<a;r++){const e=t.iget(r);i[r]=e.re!==e.re||e.im!==e.im?1:0}else if(!(d(t.dtype)||S(t.dtype)))for(let r=0;r<a;r++){const e=Number(t.iget(r));i[r]=e!==e?1:0}return f}function zt(t){return m.empty(Array.from(t.shape),"bool")}function E(t,o){if(t.dtype==="bool"){const s=D("bool"),l=u=>{const p=m.empty(Array.from(u.shape),s),y=u.data;for(let c=0;c<u.size;c++)p.data[c]=y[u.offset+c];return p};return E(l(t),typeof o=="number"?o:o.dtype==="bool"?l(o):o)}if(typeof o!="number"&&o.dtype==="bool"){const s=D("bool");return E(t,(u=>{const p=m.empty(Array.from(u.shape),s),y=u.data;for(let c=0;c<u.size;c++)p.data[c]=y[u.offset+c];return p})(o))}if(h(t.dtype,"copysign","copysign is only defined for real numbers."),typeof o!="number"&&h(o.dtype,"copysign","copysign is only defined for real numbers."),typeof o=="number"){const s=M(t,o);return s||R(t,o)}if(o.size===1&&!b(o.dtype)){const s=Number(o.iget(0)),l=M(t,s);return l||R(t,s)}if(w(t,o)){const s=H(t,o);return s||$(t,o)}const f=T(t.shape,o.shape),i=f.reduce((s,l)=>s*l,1),a=m.zeros(f,"float64"),r=a.data,e=C(t,f),n=C(o,f);for(let s=0;s<i;s++){const l=Number(e.iget(s)),u=Number(n.iget(s));r[s]=Math.sign(u)*Math.abs(l)}return a}function $(t,o){const f=D(v(t.dtype,o.dtype)),i=m.zeros(Array.from(t.shape),f),a=i.data,r=t.size,e=t.data,n=o.data,s=t.offset,l=o.offset,u=d(t.dtype),p=d(o.dtype);for(let y=0;y<r;y++){const c=u?Number(e[s+y]):e[s+y],A=p?Number(n[l+y]):n[l+y],g=Object.is(A,-0)||A<0?-1:1;a[y]=g*Math.abs(c)}return i}function R(t,o){const f=D(t.dtype),i=m.zeros(Array.from(t.shape),f),a=i.data,r=t.size,e=Object.is(o,-0)||o<0?-1:1;if(!t.isCContiguous){for(let l=0;l<r;l++)a[l]=e*Math.abs(Number(t.iget(l)));return i}const n=t.data,s=t.offset;if(d(t.dtype)){const l=n;for(let u=0;u<r;u++)a[u]=e*Math.abs(Number(l[s+u]))}else if(s===0)for(let l=0;l<r;l++)a[l]=e*Math.abs(n[l]);else for(let l=0;l<r;l++)a[l]=e*Math.abs(n[s+l]);return i}function wt(t){h(t.dtype,"signbit","signbit is only defined for real numbers.");const o=K(t);if(o)return o;const f=m.empty(Array.from(t.shape),"bool"),i=f.data,a=t.size;if(t.isCContiguous){const r=t.data,e=t.offset;if(d(t.dtype)){const n=r;for(let s=0;s<a;s++)i[s]=n[e+s]<0n?1:0}else for(let n=0;n<a;n++){const s=r[e+n];i[n]=s<0||Object.is(s,-0)?1:0}}else if(d(t.dtype))for(let r=0;r<a;r++)i[r]=t.iget(r)<0n?1:0;else for(let r=0;r<a;r++){const e=Number(t.iget(r));i[r]=e<0||Object.is(e,-0)?1:0}return f}function Ct(t,o){if(h(t.dtype,"nextafter","nextafter is only defined for real floating-point numbers."),typeof o!="number"&&h(o.dtype,"nextafter","nextafter is only defined for real floating-point numbers."),t.dtype==="bool"&&I){const l=t.size,u=D("bool"),p=m.zeros(Array.from(t.shape),u),y=p.data;for(let c=0;c<l;c++){const A=Number(t.iget(c)),g=typeof o=="number"?o:Number(o.iget(c));y[c]=rt(A,g)}return p}if(typeof o=="number")return et(t,o);if(w(t,o))return tt(t,o);const f=T(t.shape,o.shape),i=f.reduce((l,u)=>l*u,1),a=D(v(t.dtype,o.dtype)),r=m.zeros(f,a),e=r.data,n=C(t,f),s=C(o,f);for(let l=0;l<i;l++){const u=Number(n.iget(l)),p=Number(s.iget(l));e[l]=z(u,p)}return r}function tt(t,o){const f=D(v(t.dtype,o.dtype)),i=m.zeros(Array.from(t.shape),f),a=i.data,r=t.size,e=t.data,n=o.data,s=t.offset,l=o.offset,u=d(t.dtype),p=d(o.dtype);for(let y=0;y<r;y++){const c=u?Number(e[s+y]):e[s+y],A=p?Number(n[l+y]):n[l+y];a[y]=z(c,A)}return i}function et(t,o){const f=D(t.dtype),i=m.zeros(Array.from(t.shape),f),a=i.data,r=t.size;if(t.isCContiguous){const e=t.data,n=t.offset;if(d(t.dtype)){const s=e;for(let l=0;l<r;l++)a[l]=z(Number(s[n+l]),o)}else for(let s=0;s<r;s++)a[s]=z(e[n+s],o)}else for(let e=0;e<r;e++)a[e]=z(Number(t.iget(e)),o);return i}function z(t,o){if(Number.isNaN(t)||Number.isNaN(o))return NaN;if(t===o)return o;if(t===0)return o>0?Number.MIN_VALUE:-Number.MIN_VALUE;const f=new ArrayBuffer(8),i=new Float64Array(f),a=new BigInt64Array(f);i[0]=t;let r=a[0];return(t>0?o>t:o<t)?r=r+1n:r=r-1n,a[0]=r,i[0]}function It(t){h(t.dtype,"spacing","spacing is only defined for real numbers.");const o=new Set(["bool","int8","uint8"]),f=new Set(["int16","uint16"]);if(o.has(t.dtype)&&I){const n=t.size,s=D("bool"),l=m.zeros(Array.from(t.shape),s),u=l.data;for(let p=0;p<n;p++)u[p]=X(Number(t.iget(p)));return l}if(f.has(t.dtype)){const n=t.size,s=m.zeros(Array.from(t.shape),"float32"),l=s.data;for(let u=0;u<n;u++){const p=new Float32Array([Number(t.iget(u))]),y=new Float32Array(1),A=new DataView(p.buffer).getUint32(0,!0),g=new DataView(y.buffer);(A&2147483647)===0?(g.setUint32(0,1,!0),l[u]=y[0]):(g.setUint32(0,A+1,!0),l[u]=Math.abs(y[0]-p[0]))}return s}if(t.dtype==="float16"&&I){const n=t.size,s=m.zeros(Array.from(t.shape),"float16"),l=s.data;for(let u=0;u<n;u++)l[u]=X(Number(t.iget(u)));return s}const i=t.dtype==="float32"?"float32":"float64",a=m.zeros(Array.from(t.shape),i),r=a.data,e=t.size;if(t.isCContiguous){const n=t.data,s=t.offset;if(d(t.dtype)){const l=n;for(let u=0;u<e;u++)r[u]=U(Number(l[s+u]))}else for(let l=0;l<e;l++)r[l]=U(n[s+l])}else for(let n=0;n<e;n++)r[n]=U(Number(t.iget(n)));return a}function rt(t,o){const f=new Float16Array([t]),i=new DataView(f.buffer);let a=i.getUint16(0,!0);const r=f[0],e=new Float16Array([o])[0];return r===e?r:Number.isNaN(r)||Number.isNaN(e)?NaN:r===0?(i.setUint16(0,e>0?1:32769,!0),f[0]):(r<e?a=a&32768?a-1:a+1:a=a&32768?a+1:a-1,i.setUint16(0,a,!0),f[0])}function X(t){const o=new Float16Array(2);o[0]=t;const f=new DataView(o.buffer),i=f.getUint16(0,!0);return(i&32767)===0?(f.setUint16(2,1,!0),o[1]):(f.setUint16(2,i+1,!0),Math.abs(o[1]-o[0]))}function U(t){if(Number.isNaN(t))return NaN;if(!Number.isFinite(t))return NaN;if(Math.abs(t)===0)return Number.MIN_VALUE;const f=z(t,1/0);return Math.abs(f-t)}function C(t,o){const f=t.shape.length,i=o.length,a=new Array(i).fill(0);for(let r=0;r<f;r++){const e=i-f+r,n=t.shape[r],s=o[e];if(n===s)a[e]=t.strides[r];else if(n===1)a[e]=0;else throw new Error("Invalid broadcast")}return m.fromData(t.data,Array.from(o),t.dtype,a,t.offset)}function vt(t){const o=t.dtype,f=t.size,i=m.empty(Array.from(t.shape),"bool"),a=i.data;if(b(o))if(t.isCContiguous){const r=t.offset,e=t.data;for(let n=0;n<f;n++)a[n]=e[(r+n)*2+1]!==0?1:0}else for(let r=0;r<f;r++){const e=t.iget(r);a[r]=e.im!==0?1:0}return i}function Bt(t){return b(t.dtype)}function Ut(t){const o=t.dtype,f=t.size,i=m.empty(Array.from(t.shape),"bool"),a=i.data;if(b(o))if(t.isCContiguous){const r=t.offset,e=t.data;for(let n=0;n<f;n++)a[n]=e[(r+n)*2+1]===0?1:0}else for(let r=0;r<f;r++){const e=t.iget(r);a[r]=e.im===0?1:0}else a.fill(1);return i}function Tt(t){return!b(t.dtype)}function Vt(t){h(t.dtype,"isneginf","This operation is not supported for complex values because it would be ambiguous.");const o=m.empty(Array.from(t.shape),"bool"),f=o.data,i=t.size;if(!(d(t.dtype)||S(t.dtype)))if(t.isCContiguous){const a=t.data,r=t.offset;for(let e=0;e<i;e++){const n=a[r+e];f[e]=n===-1/0?1:0}}else for(let a=0;a<i;a++)f[a]=Number(t.iget(a))===-1/0?1:0;return o}function Ot(t){h(t.dtype,"isposinf","This operation is not supported for complex values because it would be ambiguous.");const o=m.empty(Array.from(t.shape),"bool"),f=o.data,i=t.size;if(!(d(t.dtype)||S(t.dtype)))if(t.isCContiguous){const a=t.data,r=t.offset;for(let e=0;e<i;e++){const n=a[r+e];f[e]=n===1/0?1:0}}else for(let a=0;a<i;a++)f[a]=Number(t.iget(a))===1/0?1:0;return o}function xt(t){return t.isFContiguous}function Mt(t,o=100){const f=t.dtype;if(b(f)){const i=t.size,r=o*(f==="complex64"?11920929e-14:2220446049250313e-31);if(t.isCContiguous){const e=t.data,n=t.offset;let s=!0;for(let l=0;l<i;l++){const u=e[(n+l)*2+1];if(Math.abs(u)>r){s=!1;break}}if(s){const l=f==="complex64"?"float32":"float64",u=m.zeros(Array.from(t.shape),l),p=u.data;for(let y=0;y<i;y++)p[y]=e[(n+y)*2];return u}}else{let e=!0;for(let n=0;n<i;n++){const s=t.iget(n);if(Math.abs(s.im)>r){e=!1;break}}if(e){const n=f==="complex64"?"float32":"float64",s=m.zeros(Array.from(t.shape),n),l=s.data;for(let u=0;u<i;u++){const p=t.iget(u);l[u]=p.re}return s}}return t.copy()}return t.copy()}function Lt(t){return typeof t=="number"||typeof t=="bigint"||typeof t=="boolean"||typeof t=="string"}function _t(t){return t==null?!1:typeof t[Symbol.iterator]=="function"}function kt(t,o){const i={b:["bool"],i:["int8","int16","int32","int64"],u:["uint8","uint16","uint32","uint64"],f:["float32","float64"]}[o];return i?i.includes(t):!1}function Et(t,o){const f=["float64","float32","int64","int32","int16","int8","uint64","uint32","uint16","uint8","bool"],i=f.indexOf(t),a=f.indexOf(o);return i<=a?t:o}export{E as copysign,vt as iscomplex,Bt as iscomplexobj,kt as isdtype,Dt as isfinite,xt as isfortran,ht as isinf,Ft as isnan,zt as isnat,Vt as isneginf,Ot as isposinf,Ut as isreal,Tt as isrealobj,Lt as isscalar,_t as iterable,At as logical_and,Nt as logical_not,gt as logical_or,St as logical_xor,Ct as nextafter,Et as promote_types,Mt as real_if_close,wt as signbit,It as spacing};
@@ -1 +1 @@
1
- import{ArrayStorage as A}from"../storage";import{isBigIntDType as J}from"../dtype";const B=624,T=397,Y=2567483615,G=2147483648,U=2147483647;let I={mt:new Uint32Array(B),mti:B+1};function R(t){const r=I.mt;r[0]=t>>>0;for(let e=1;e<B;e++){const n=r[e-1]^r[e-1]>>>30;r[e]=Math.imul(1812433253,n)+e>>>0}I.mti=B}function L(){const t=I.mt;let r;const e=[0,Y];if(I.mti>=B){let n;for(I.mti===B+1&&R(5489),n=0;n<B-T;n++)r=t[n]&G|t[n+1]&U,t[n]=t[n+T]^r>>>1^e[r&1];for(;n<B-1;n++)r=t[n]&G|t[n+1]&U,t[n]=t[n+(T-B)]^r>>>1^e[r&1];r=t[B-1]&G|t[0]&U,t[B-1]=t[T-1]^r>>>1^e[r&1],I.mti=0}return r=t[I.mti++],r^=r>>>11,r^=r<<7&2636928640,r^=r<<15&4022730752,r^=r>>>18,r>>>0}function c(){const t=L()>>>5,r=L()>>>6;return(t*67108864+r)/9007199254740992}const $=2468251765,V=1492356589,z=1135663077,rr=2337405405,tr=3389127133,er=1232336661,N=16,q=4;function M(t){return t>>>0}function j(t,r){return t=M(M(t)^r.val),r.val=M(Math.imul(r.val,$)),t=M(Math.imul(t,r.val)),t=M(t^t>>>N),t}function nr(t,r){let e=M(M(Math.imul(tr,M(t)))-M(Math.imul(er,M(r))));return e=M(e^e>>>N),e}function or(t){const r=[0,0,0,0],e=[t>>>0],n={val:z};for(let a=0;a<q;a++)a<e.length?r[a]=j(e[a],n):r[a]=j(0,n);for(let a=0;a<q;a++)for(let i=0;i<q;i++)if(a!==i){const s=j(r[a],n);r[i]=nr(r[i],s)}return r}function ar(t,r){const e=[];let n=rr;for(let a=0;a<r;a++){const i=t[a%q];let s=M(i^n);n=M(Math.imul(n,V)),s=M(Math.imul(s,n)),s=M(s^s>>>N),e.push(s)}return e}const ur=BigInt("4865540595714422341"),sr=BigInt("2549297995355413924"),ir=sr<<BigInt(64)|ur,D=BigInt("0xffffffffffffffff"),C=(BigInt(1)<<BigInt(128))-BigInt(1);function mr(t){const r=t>>BigInt(64),e=t&D,n=(r^e)&D,a=Number(t>>BigInt(122));return(n>>BigInt(a)|n<<BigInt(64-a))&D}function k(t,r){return t*ir+r&C}function K(t){const r=or(t),e=ar(r,8),n=BigInt(e[0])|BigInt(e[1])<<BigInt(32),a=BigInt(e[2])|BigInt(e[3])<<BigInt(32),i=BigInt(e[4])|BigInt(e[5])<<BigInt(32),s=BigInt(e[6])|BigInt(e[7])<<BigInt(32),u=n<<BigInt(64)|a;let o=(i<<BigInt(64)|s)<<BigInt(1);o=(o|BigInt(1))&C;let m=BigInt(0);return m=k(m,o),m=m+u&C,m=k(m,o),{state:m,inc:o}}function cr(t){return t.state=k(t.state,t.inc),mr(t.state)}function lr(t){const e=cr(t)>>BigInt(11);return Number(e)/9007199254740992}class fr{constructor(r){if(r!==void 0)this._pcgState=K(r);else{const e=Math.floor(Math.random()*4294967296);this._pcgState=K(e)}}_randomFloat(){return lr(this._pcgState)}random(r){if(r===void 0)return this._randomFloat();const e=Array.isArray(r)?r:[r],n=e.reduce((s,u)=>s*u,1),a=A.zeros(e,"float64"),i=a.data;for(let s=0;s<n;s++)i[s]=this._randomFloat();return a}integers(r,e,n){if(e===void 0&&(e=r,r=0),n===void 0)return Math.floor(this._randomFloat()*(e-r))+r;const a=Array.isArray(n)?n:[n],i=a.reduce((m,f)=>m*f,1),s=A.zeros(a,"int64"),u=s.data,o=e-r;for(let m=0;m<i;m++)u[m]=BigInt(Math.floor(this._randomFloat()*o)+r);return s}standard_normal(r){if(r===void 0)return _(this._randomFloat.bind(this));const e=Array.isArray(r)?r:[r],n=e.reduce((s,u)=>s*u,1),a=A.zeros(e,"float64"),i=a.data;for(let s=0;s<n;s+=2){const[u,o]=E(this._randomFloat.bind(this));i[s]=u,s+1<n&&(i[s+1]=o)}return a}normal(r=0,e=1,n){if(n===void 0)return _(this._randomFloat.bind(this))*e+r;const a=Array.isArray(n)?n:[n],i=a.reduce((o,m)=>o*m,1),s=A.zeros(a,"float64"),u=s.data;for(let o=0;o<i;o+=2){const[m,f]=E(this._randomFloat.bind(this));u[o]=m*e+r,o+1<i&&(u[o+1]=f*e+r)}return s}uniform(r=0,e=1,n){if(n===void 0)return this._randomFloat()*(e-r)+r;const a=Array.isArray(n)?n:[n],i=a.reduce((m,f)=>m*f,1),s=A.zeros(a,"float64"),u=s.data,o=e-r;for(let m=0;m<i;m++)u[m]=this._randomFloat()*o+r;return s}choice(r,e,n=!0,a){return X(r,e,n,a,this._randomFloat.bind(this))}permutation(r){return H(r,this._randomFloat.bind(this))}shuffle(r){Q(r,this._randomFloat.bind(this))}exponential(r=1,e){if(e===void 0)return-Math.log(1-this._randomFloat())*r;const n=Array.isArray(e)?e:[e],a=n.reduce((u,o)=>u*o,1),i=A.zeros(n,"float64"),s=i.data;for(let u=0;u<a;u++)s[u]=-Math.log(1-this._randomFloat())*r;return i}poisson(r=1,e){if(e===void 0)return F(r,this._randomFloat.bind(this));const n=Array.isArray(e)?e:[e],a=n.reduce((u,o)=>u*o,1),i=A.zeros(n,"int64"),s=i.data;for(let u=0;u<a;u++)s[u]=BigInt(F(r,this._randomFloat.bind(this)));return i}binomial(r,e,n){if(n===void 0)return P(r,e,this._randomFloat.bind(this));const a=Array.isArray(n)?n:[n],i=a.reduce((o,m)=>o*m,1),s=A.zeros(a,"int64"),u=s.data;for(let o=0;o<i;o++)u[o]=BigInt(P(r,e,this._randomFloat.bind(this)));return s}}function hr(t){return new fr(t)}function gr(t){t==null&&(t=Math.floor(Date.now()^Math.random()*4294967296)),R(t>>>0)}function pr(){return{mt:Array.from(I.mt),mti:I.mti}}function Sr(t){I.mt=new Uint32Array(t.mt),I.mti=t.mti}function _(t){let r,e;do r=t(),e=t();while(r===0);return Math.sqrt(-2*Math.log(r))*Math.cos(2*Math.PI*e)}function E(t){let r,e;do r=t(),e=t();while(r===0);const n=Math.sqrt(-2*Math.log(r)),a=2*Math.PI*e;return[n*Math.cos(a),n*Math.sin(a)]}function F(t,r){if(t<30){const e=Math.exp(-t);let n=0,a=1;do n++,a*=r();while(a>e);return n-1}else{const e=_(r);return Math.max(0,Math.round(t+Math.sqrt(t)*e))}}function P(t,r,e){if(t*r<10&&t*(1-r)<10){let n=0;for(let a=0;a<t;a++)e()<r&&n++;return n}else{const n=t*r,a=Math.sqrt(t*r*(1-r)),i=_(e);return Math.max(0,Math.min(t,Math.round(n+a*i)))}}function O(t){if(t===void 0)return c();const r=Array.isArray(t)?t:[t],e=r.reduce((i,s)=>i*s,1),n=A.zeros(r,"float64"),a=n.data;for(let i=0;i<e;i++)a[i]=c();return n}function Mr(...t){if(t.length===0)return c();const r=t.reduce((a,i)=>a*i,1),e=A.zeros(t,"float64"),n=e.data;for(let a=0;a<r;a++)n[a]=c();return e}function wr(...t){if(t.length===0)return _(c);const r=t.reduce((a,i)=>a*i,1),e=A.zeros(t,"float64"),n=e.data;for(let a=0;a<r;a+=2){const[i,s]=E(c);n[a]=i,a+1<r&&(n[a+1]=s)}return e}function br(t,r,e,n="int64"){r==null&&(r=t,t=0);const a=r-t;if(e===void 0)return Math.floor(c()*a)+t;const i=Array.isArray(e)?e:[e],s=i.reduce((m,f)=>m*f,1),u=A.zeros(i,n),o=u.data;if(J(n)){const m=o;for(let f=0;f<s;f++)m[f]=BigInt(Math.floor(c()*a)+t)}else{const m=o;for(let f=0;f<s;f++)m[f]=Math.floor(c()*a)+t}return u}function xr(t=0,r=1,e){if(e===void 0)return c()*(r-t)+t;const n=Array.isArray(e)?e:[e],a=n.reduce((o,m)=>o*m,1),i=A.zeros(n,"float64"),s=i.data,u=r-t;for(let o=0;o<a;o++)s[o]=c()*u+t;return i}function Ir(t=0,r=1,e){if(e===void 0)return _(c)*r+t;const n=Array.isArray(e)?e:[e],a=n.reduce((u,o)=>u*o,1),i=A.zeros(n,"float64"),s=i.data;for(let u=0;u<a;u+=2){const[o,m]=E(c);s[u]=o*r+t,u+1<a&&(s[u+1]=m*r+t)}return i}function _r(t){if(t===void 0)return _(c);const r=Array.isArray(t)?t:[t],e=r.reduce((i,s)=>i*s,1),n=A.zeros(r,"float64"),a=n.data;for(let i=0;i<e;i+=2){const[s,u]=E(c);a[i]=s,i+1<e&&(a[i+1]=u)}return n}function dr(t=1,r){if(r===void 0)return-Math.log(1-c())*t;const e=Array.isArray(r)?r:[r],n=e.reduce((s,u)=>s*u,1),a=A.zeros(e,"float64"),i=a.data;for(let s=0;s<n;s++)i[s]=-Math.log(1-c())*t;return a}function Br(t=1,r){if(r===void 0)return F(t,c);const e=Array.isArray(r)?r:[r],n=e.reduce((s,u)=>s*u,1),a=A.zeros(e,"int64"),i=a.data;for(let s=0;s<n;s++)i[s]=BigInt(F(t,c));return a}function Fr(t,r,e){if(e===void 0)return P(t,r,c);const n=Array.isArray(e)?e:[e],a=n.reduce((u,o)=>u*o,1),i=A.zeros(n,"int64"),s=i.data;for(let u=0;u<a;u++)s[u]=BigInt(P(t,r,c));return i}function X(t,r,e=!0,n,a=c){let i;if(typeof t=="number")i=Array.from({length:t},(d,l)=>l);else{const d=t.size;i=[];for(let l=0;l<d;l++)i.push(Number(t.iget(l)))}const s=i.length;if(s===0)throw new Error("cannot take a sample from an empty sequence");let u;if(n!==void 0){if(Array.isArray(n))u=n;else{const l=n.size;u=[];for(let y=0;y<l;y++)u.push(Number(n.iget(y)))}if(u.length!==s)throw new Error("p and a must have the same size");const d=u.reduce((l,y)=>l+y,0);Math.abs(d-1)>1e-10&&(u=u.map(l=>l/d))}if(r===void 0){if(u){const d=a();let l=0;for(let y=0;y<s;y++)if(l+=u[y],d<l)return i[y];return i[s-1]}return i[Math.floor(a()*s)]}const o=Array.isArray(r)?r:[r],m=o.reduce((d,l)=>d*l,1);if(!e&&m>s)throw new Error("cannot take a larger sample than population when replace=false");const f=A.zeros(o,"float64"),g=f.data;if(e)if(u){const d=new Array(s);d[0]=u[0];for(let l=1;l<s;l++)d[l]=d[l-1]+u[l];for(let l=0;l<m;l++){const y=a();let b=0;for(;b<s-1&&y>=d[b];)b++;g[l]=i[b]}}else for(let d=0;d<m;d++)g[d]=i[Math.floor(a()*s)];else{const d=[...i],l=u?[...u]:void 0;for(let y=0;y<m;y++){let b;if(l){const h=l.reduce((x,v)=>x+v,0),p=a()*h;let S=0;b=0;for(let x=0;x<d.length;x++)if(S+=l[x],p<S){b=x;break}b===0&&p>=S&&(b=d.length-1)}else b=Math.floor(a()*d.length);g[y]=d[b],d.splice(b,1),l&&l.splice(b,1)}}return f}function vr(t,r,e=!0,n){return X(t,r,e,n,c)}function H(t,r=c){let e;if(typeof t=="number"){const a=new Float64Array(t);for(let i=0;i<t;i++)a[i]=i;e=A.fromData(a,[t],"float64")}else e=t.copy();const n=e.size;for(let a=n-1;a>0;a--){const i=Math.floor(r()*(a+1)),s=e.iget(a);e.iset(a,e.iget(i)),e.iset(i,s)}return e}function Er(t){return H(t,c)}function Q(t,r=c){const e=t.size;for(let n=e-1;n>0;n--){const a=Math.floor(r()*(n+1)),i=t.iget(n);t.iset(n,t.iget(a)),t.iset(a,i)}}function Pr(t){Q(t,c)}function Tr(t){return O(t)}function qr(t){return O(t)}function Gr(t){return O(t)}function Ur(t,r,e){return r===void 0&&(r=t,t=1),br(t,r+1,e)}function Lr(t){const r=new Uint8Array(t);for(let e=0;e<t;e++)r[e]=L()&255;return r}let W={name:"MT19937",state:I};function Nr(){return W}function jr(t){W=t}function Dr(t){return dr(1,t)}function Cr(t,r){if(t<=0)throw new Error("shape must be positive");return Z(t,1,r)}function kr(t){if(t===void 0)return Math.tan(Math.PI*(c()-.5));const r=Array.isArray(t)?t:[t],e=r.reduce((i,s)=>i*s,1),n=A.zeros(r,"float64"),a=n.data;for(let i=0;i<e;i++)a[i]=Math.tan(Math.PI*(c()-.5));return n}function Or(t,r){if(t<=0)throw new Error("df must be positive");const e=u=>{const o=_(u),m=w(t/2,2,u);return o/Math.sqrt(m/t)};if(r===void 0)return e(c);const n=Array.isArray(r)?r:[r],a=n.reduce((u,o)=>u*o,1),i=A.zeros(n,"float64"),s=i.data;for(let u=0;u<a;u++)s[u]=e(c);return i}function w(t,r,e){if(t<1){const i=e();return w(1+t,r,e)*Math.pow(i,1/t)}const n=t-1/3,a=1/Math.sqrt(9*n);for(;;){let i,s;do i=_(e),s=1+a*i;while(s<=0);s=s*s*s;const u=e(),o=i*i;if(u<1-.0331*o*o||Math.log(u)<.5*o+n*(1-s+Math.log(s)))return n*s*r}}function Z(t,r=1,e){if(t<=0)throw new Error("shape must be positive");if(r<=0)throw new Error("scale must be positive");if(e===void 0)return w(t,r,c);const n=Array.isArray(e)?e:[e],a=n.reduce((u,o)=>u*o,1),i=A.zeros(n,"float64"),s=i.data;for(let u=0;u<a;u++)s[u]=w(t,r,c);return i}function Rr(t,r,e){if(t<=0||r<=0)throw new Error("a and b must be positive");const n=o=>{const m=w(t,1,o),f=w(r,1,o);return m/(m+f)};if(e===void 0)return n(c);const a=Array.isArray(e)?e:[e],i=a.reduce((o,m)=>o*m,1),s=A.zeros(a,"float64"),u=s.data;for(let o=0;o<i;o++)u[o]=n(c);return s}function Kr(t=0,r=1,e){if(r<=0)throw new Error("scale must be positive");const n=o=>{const m=o()-.5;return t-r*Math.sign(m)*Math.log(1-2*Math.abs(m))};if(e===void 0)return n(c);const a=Array.isArray(e)?e:[e],i=a.reduce((o,m)=>o*m,1),s=A.zeros(a,"float64"),u=s.data;for(let o=0;o<i;o++)u[o]=n(c);return s}function Xr(t=0,r=1,e){if(r<=0)throw new Error("scale must be positive");const n=o=>{const m=o();return t+r*Math.log(m/(1-m))};if(e===void 0)return n(c);const a=Array.isArray(e)?e:[e],i=a.reduce((o,m)=>o*m,1),s=A.zeros(a,"float64"),u=s.data;for(let o=0;o<i;o++)u[o]=n(c);return s}function Hr(t=0,r=1,e){if(r<=0)throw new Error("sigma must be positive");const n=o=>Math.exp(t+r*_(o));if(e===void 0)return n(c);const a=Array.isArray(e)?e:[e],i=a.reduce((o,m)=>o*m,1),s=A.zeros(a,"float64"),u=s.data;for(let o=0;o<i;o++)u[o]=n(c);return s}function Qr(t=0,r=1,e){if(r<=0)throw new Error("scale must be positive");const n=o=>{const m=o();return t-r*Math.log(-Math.log(m))};if(e===void 0)return n(c);const a=Array.isArray(e)?e:[e],i=a.reduce((o,m)=>o*m,1),s=A.zeros(a,"float64"),u=s.data;for(let o=0;o<i;o++)u[o]=n(c);return s}function Wr(t,r){if(t<=0)throw new Error("a must be positive");const e=u=>{const o=u();return Math.pow(1-o,-1/t)-1};if(r===void 0)return e(c);const n=Array.isArray(r)?r:[r],a=n.reduce((u,o)=>u*o,1),i=A.zeros(n,"float64"),s=i.data;for(let u=0;u<a;u++)s[u]=e(c);return i}function Zr(t,r){if(t<=0)throw new Error("a must be positive");const e=u=>{const o=u();return Math.pow(o,1/t)};if(r===void 0)return e(c);const n=Array.isArray(r)?r:[r],a=n.reduce((u,o)=>u*o,1),i=A.zeros(n,"float64"),s=i.data;for(let u=0;u<a;u++)s[u]=e(c);return i}function Jr(t=1,r){if(t<=0)throw new Error("scale must be positive");const e=u=>{const o=u();return t*Math.sqrt(-2*Math.log(o))};if(r===void 0)return e(c);const n=Array.isArray(r)?r:[r],a=n.reduce((u,o)=>u*o,1),i=A.zeros(n,"float64"),s=i.data;for(let u=0;u<a;u++)s[u]=e(c);return i}function Yr(t,r,e,n){if(t>r||r>e||t===e)throw new Error("must have left <= mode <= right and left < right");const a=m=>{const f=m(),g=(r-t)/(e-t);return f<g?t+Math.sqrt(f*(e-t)*(r-t)):e-Math.sqrt((1-f)*(e-t)*(e-r))};if(n===void 0)return a(c);const i=Array.isArray(n)?n:[n],s=i.reduce((m,f)=>m*f,1),u=A.zeros(i,"float64"),o=u.data;for(let m=0;m<s;m++)o[m]=a(c);return u}function $r(t,r,e){if(t<=0)throw new Error("mean must be positive");if(r<=0)throw new Error("scale must be positive");const n=o=>{const m=_(o),f=m*m,g=t/(2*r),d=t+g*(t*f-Math.sqrt(4*t*r*f+t*t*f*f));return o()<=t/(t+d)?d:t*t/d};if(e===void 0)return n(c);const a=Array.isArray(e)?e:[e],i=a.reduce((o,m)=>o*m,1),s=A.zeros(a,"float64"),u=s.data;for(let o=0;o<i;o++)u[o]=n(c);return s}function Vr(t,r){if(t<=0)throw new Error("a must be positive");const e=u=>{const o=u();return Math.pow(-Math.log(1-o),1/t)};if(r===void 0)return e(c);const n=Array.isArray(r)?r:[r],a=n.reduce((u,o)=>u*o,1),i=A.zeros(n,"float64"),s=i.data;for(let u=0;u<a;u++)s[u]=e(c);return i}function zr(t,r){if(t<=0)throw new Error("df must be positive");return Z(t/2,2,r)}function rt(t,r,e){if(t<=0)throw new Error("df must be positive");if(r<0)throw new Error("nonc must be non-negative");const n=o=>{if(r===0)return w(t/2,2,o);const m=F(r/2,o);return w(t/2+m,2,o)};if(e===void 0)return n(c);const a=Array.isArray(e)?e:[e],i=a.reduce((o,m)=>o*m,1),s=A.zeros(a,"float64"),u=s.data;for(let o=0;o<i;o++)u[o]=n(c);return s}function tt(t,r,e){if(t<=0)throw new Error("dfnum must be positive");if(r<=0)throw new Error("dfden must be positive");const n=o=>{const m=w(t/2,2,o),f=w(r/2,2,o);return m/t/(f/r)};if(e===void 0)return n(c);const a=Array.isArray(e)?e:[e],i=a.reduce((o,m)=>o*m,1),s=A.zeros(a,"float64"),u=s.data;for(let o=0;o<i;o++)u[o]=n(c);return s}function et(t,r,e,n){if(t<=0)throw new Error("dfnum must be positive");if(r<=0)throw new Error("dfden must be positive");if(e<0)throw new Error("nonc must be non-negative");const a=m=>{const f=w(e===0?t/2:t/2+F(e/2,m),2,m),g=w(r/2,2,m);return f/t/(g/r)};if(n===void 0)return a(c);const i=Array.isArray(n)?n:[n],s=i.reduce((m,f)=>m*f,1),u=A.zeros(i,"float64"),o=u.data;for(let m=0;m<s;m++)o[m]=a(c);return u}function nt(t,r){if(t<=0||t>1)throw new Error("p must be in (0, 1]");const e=u=>{if(t===1)return 1;const o=u();return Math.floor(Math.log(o)/Math.log(1-t))+1};if(r===void 0)return e(c);const n=Array.isArray(r)?r:[r],a=n.reduce((u,o)=>u*o,1),i=A.zeros(n,"int64"),s=i.data;for(let u=0;u<a;u++)s[u]=BigInt(e(c));return i}function ot(t,r,e,n){if(t<0)throw new Error("ngood must be non-negative");if(r<0)throw new Error("nbad must be non-negative");if(e<0)throw new Error("nsample must be non-negative");if(e>t+r)throw new Error("nsample must be <= ngood + nbad");const a=m=>{let f=t,g=r,d=0,l=e;for(;l>0;){const y=f+g;if(y===0)break;m()<f/y?(d++,f--):g--,l--}return d};if(n===void 0)return a(c);const i=Array.isArray(n)?n:[n],s=i.reduce((m,f)=>m*f,1),u=A.zeros(i,"int64"),o=u.data;for(let m=0;m<s;m++)o[m]=BigInt(a(c));return u}function at(t,r){if(t<=0||t>=1)throw new Error("p must be in (0, 1)");const e=Math.log(1-t),n=o=>{const m=o(),f=o(),g=1-Math.exp(e*m);if(f>=g||f===0)return 1;const d=Math.log(f),l=Math.log(g);return d>=l?1:d>=2*l?2:Math.floor(1+d/l)};if(r===void 0)return n(c);const a=Array.isArray(r)?r:[r],i=a.reduce((o,m)=>o*m,1),s=A.zeros(a,"int64"),u=s.data;for(let o=0;o<i;o++)u[o]=BigInt(n(c));return s}function ut(t,r,e){if(t<=0)throw new Error("n must be positive");if(r<=0||r>1)throw new Error("p must be in (0, 1]");const n=o=>{if(r===1)return 0;const m=w(t,(1-r)/r,o);return F(m,o)};if(e===void 0)return n(c);const a=Array.isArray(e)?e:[e],i=a.reduce((o,m)=>o*m,1),s=A.zeros(a,"int64"),u=s.data;for(let o=0;o<i;o++)u[o]=BigInt(n(c));return s}function st(t,r){if(t<=1)throw new Error("a must be > 1");const e=t-1,n=Math.pow(2,e),a=m=>{for(;;){const f=1-m(),g=m(),d=Math.floor(Math.pow(f,-1/e)),l=Math.pow(1+1/d,e);if(g*d*(l-1)/(n-1)<=l/n)return d}};if(r===void 0)return a(c);const i=Array.isArray(r)?r:[r],s=i.reduce((m,f)=>m*f,1),u=A.zeros(i,"int64"),o=u.data;for(let m=0;m<s;m++)o[m]=BigInt(a(c));return u}function it(t,r,e){const n=Array.isArray(r)?r:Array.from({length:r.size},(l,y)=>Number(r.iget(y))),a=n.length;if(a===0)throw new Error("pvals must have at least one element");const i=n.reduce((l,y)=>l+y,0),s=n.map(l=>l/i),u=l=>{const y=new Array(a).fill(0);let b=t,h=1;for(let p=0;p<a-1&&b>0;p++){const S=s[p]/h,x=P(b,Math.min(1,Math.max(0,S)),l);y[p]=x,b-=x,h-=s[p]}return y[a-1]=b,y};if(e===void 0){const l=u(c),y=A.zeros([a],"int64"),b=y.data;for(let h=0;h<a;h++)b[h]=BigInt(l[h]);return y}const o=Array.isArray(e)?e:[e],m=o.reduce((l,y)=>l*y,1),f=[...o,a],g=A.zeros(f,"int64"),d=g.data;for(let l=0;l<m;l++){const y=u(c);for(let b=0;b<a;b++)d[l*a+b]=BigInt(y[b])}return g}function mt(t,r,e,n="warn",a=1e-8){const i=Array.isArray(t)?t:Array.from({length:t.size},(b,h)=>Number(t.iget(h))),s=i.length;let u;if(Array.isArray(r))u=r;else{u=[];for(let b=0;b<s;b++){u.push([]);for(let h=0;h<s;h++)u[b].push(Number(r.iget(b*s+h)))}}const o=Array(s).fill(0).map(()=>Array(s).fill(0));for(let b=0;b<s;b++)for(let h=0;h<=b;h++){let p=u[b][h];for(let S=0;S<h;S++)p-=o[b][S]*o[h][S];if(b===h){if(p<-a){if(n==="raise")throw new Error("covariance matrix is not positive semi-definite");n==="warn"&&console.warn("covariance matrix is not positive semi-definite"),p=0}o[b][h]=Math.sqrt(Math.max(0,p))}else o[b][h]=o[h][h]!==0?p/o[h][h]:0}const m=b=>{const h=[];for(let S=0;S<s;S++)h.push(_(b));const p=[];for(let S=0;S<s;S++){let x=i[S];for(let v=0;v<=S;v++)x+=o[S][v]*h[v];p.push(x)}return p};if(e===void 0){const b=m(c),h=A.zeros([s],"float64"),p=h.data;for(let S=0;S<s;S++)p[S]=b[S];return h}const f=Array.isArray(e)?e:[e],g=f.reduce((b,h)=>b*h,1),d=[...f,s],l=A.zeros(d,"float64"),y=l.data;for(let b=0;b<g;b++){const h=m(c);for(let p=0;p<s;p++)y[b*s+p]=h[p]}return l}function ct(t,r){const e=Array.isArray(t)?t:Array.from({length:t.size},(f,g)=>Number(t.iget(g))),n=e.length;if(n<2)throw new Error("alpha must have at least 2 elements");for(const f of e)if(f<=0)throw new Error("all alpha values must be positive");const a=f=>{const g=[];let d=0;for(let l=0;l<n;l++){const y=w(e[l],1,f);g.push(y),d+=y}return g.map(l=>l/d)};if(r===void 0){const f=a(c),g=A.zeros([n],"float64"),d=g.data;for(let l=0;l<n;l++)d[l]=f[l];return g}const i=Array.isArray(r)?r:[r],s=i.reduce((f,g)=>f*g,1),u=[...i,n],o=A.zeros(u,"float64"),m=o.data;for(let f=0;f<s;f++){const g=a(c);for(let d=0;d<n;d++)m[f*n+d]=g[d]}return o}function lt(t,r,e){if(r<0)throw new Error("kappa must be non-negative");const n=o=>{if(r===0)return 2*Math.PI*o()-Math.PI;const m=1+Math.sqrt(1+4*r*r),f=(m-Math.sqrt(2*m))/(2*r),g=(1+f*f)/(2*f);for(;;){const d=o(),l=Math.cos(Math.PI*d),y=(1+g*l)/(g+l),b=r*(g-y),h=o();if(b*(2-b)>h||Math.log(b/h)+1-b>=0)return((o()>.5?Math.acos(y):-Math.acos(y))+t+Math.PI)%(2*Math.PI)-Math.PI}};if(e===void 0)return n(c);const a=Array.isArray(e)?e:[e],i=a.reduce((o,m)=>o*m,1),s=A.zeros(a,"float64"),u=s.data;for(let o=0;o<i;o++)u[o]=n(c);return s}export{fr as Generator,Rr as beta,Fr as binomial,Lr as bytes,zr as chisquare,vr as choice,hr as default_rng,ct as dirichlet,dr as exponential,tt as f,Z as gamma,nt as geometric,Nr as get_bit_generator,pr as get_state,Qr as gumbel,ot as hypergeometric,Kr as laplace,Xr as logistic,Hr as lognormal,at as logseries,it as multinomial,mt as multivariate_normal,ut as negative_binomial,rt as noncentral_chisquare,et as noncentral_f,Ir as normal,Wr as pareto,Er as permutation,Br as poisson,Zr as power,Mr as rand,br as randint,wr as randn,O as random,Ur as random_integers,Tr as random_sample,qr as ranf,Jr as rayleigh,Gr as sample,gr as seed,jr as set_bit_generator,Sr as set_state,Pr as shuffle,kr as standard_cauchy,Dr as standard_exponential,Cr as standard_gamma,_r as standard_normal,Or as standard_t,Yr as triangular,xr as uniform,lt as vonmises,$r as wald,Vr as weibull,st as zipf};
1
+ import{ArrayStorage as d}from"../storage.js";import{svd as pr}from"../ops/linalg.js";import{isBigIntDType as gr}from"../dtype.js";import{initMT19937 as wr,mt19937Uint32 as z,mt19937Float64 as w,getMT19937State as Sr,setMT19937State as Mr,initPCG64FromSeed as Fr,pcg64Float64 as j,pcg64SaveState as nr,pcg64RestoreState as xr,pcg64BoundedUint64 as Z,standardNormalPCG as ar,standardExponentialPCG as Br,legacyGauss as R,legacyGaussReset as or,legacyStandardExponential as O,fillUniformF64MT as rr,fillUniformF64PCG as ur,fillStandardNormalPCG as sr,fillStandardExponentialPCG as vr,fillLegacyGauss as J,fillLegacyStandardExponential as Pr,fillRkInterval as _r,wasmLegacyStandardGamma as ir,fillLegacyStandardGamma as mr,fillLegacyChisquare as Er,fillPareto as kr,fillPower as Ir,fillWeibull as Wr,fillLogistic as qr,fillGumbel as Ur,fillLaplace as Gr,fillRayleigh as Nr,fillTriangular as Cr,fillStandardCauchy as Dr,fillLognormal as Tr,fillWald as Lr,fillStandardT as Rr,fillBeta as Xr,fillF as jr,fillNoncentralChisquare as Yr,fillNoncentralF as Hr,fillGeometric as Vr,fillPoisson as Zr,fillBinomial as Or,fillNegativeBinomial as Jr,fillHypergeometric as Kr,fillLogseries as Qr,fillZipf as $r,fillVonmises as zr,fillRandintI64 as rt,fillRandintU8 as tt,fillRandintU16 as et,fillPermutation as nt,fillPermutationPCG as lr,fillBoundedUint64PCG as at}from"../wasm/rng.js";import{directFill as S,rawFillUniformF64PCG as ot,rawFillStandardNormalPCG as ut,rawFillLegacyGauss as cr,rawFillStandardCauchy as st,rawFillPermutation as it,rawFillPermutationPCG as mt,rawFillLegacyStandardGamma as lt,rawFillLegacyChisquare as ct,rawFillPareto as ft,rawFillPower as bt,rawFillWeibull as yt,rawFillLogistic as dt,rawFillGumbel as At,rawFillLaplace as ht,rawFillRayleigh as pt,rawFillTriangular as gt,rawFillLognormal as wt,rawFillWald as St,rawFillStandardT as Mt,rawFillBeta as Ft,rawFillF as xt,rawFillNoncentralChisquare as Bt,rawFillNoncentralF as vt,rawFillVonmises as Pt,rawFillGeometric as _t,rawFillPoisson as Et,rawFillBinomial as kt,rawFillNegativeBinomial as It,rawFillHypergeometric as Wt,rawFillLogseries as qt,rawFillZipf as Ut,rawFillRandintI64 as Gt,rawFillUniformF64MT as fr,rawFillBoundedUint64PCG as Nt}from"../wasm/rng.js";class Ct{constructor(t){const n=t!==void 0?t:Math.floor(Math.random()*4294967296);Fr(n),this._state=nr()}_withState(t){xr(this._state);const n=t();return this._state=nr(),n}random(t){return this._withState(()=>{if(t===void 0)return j();const n=Array.isArray(t)?t:[t],e=n.reduce((u,a)=>u*a,1),i=d.empty(n,"float64");return i.isWasmBacked?S(i.wasmPtr,e,ot):i.data.set(ur(e)),i})}integers(t,n,e){return this._withState(()=>{n===void 0&&(n=t,t=0);const i=n-t-1;if(e===void 0)return Number(Z(t,i));const u=Array.isArray(e)?e:[e],a=u.reduce((s,m)=>s*m,1),o=d.empty(u,"int64");return o.isWasmBacked?S(o.wasmPtr,a,(s,m)=>Nt(s,m,t,i)):o.data.set(at(a,t,i)),o})}standard_normal(t){return this._withState(()=>{if(t===void 0)return ar();const n=Array.isArray(t)?t:[t],e=n.reduce((u,a)=>u*a,1),i=d.empty(n,"float64");return i.isWasmBacked?S(i.wasmPtr,e,ut):i.data.set(sr(e)),i})}normal(t=0,n=1,e){return this._withState(()=>{if(e===void 0)return ar()*n+t;const i=Array.isArray(e)?e:[e],u=i.reduce((m,l)=>m*l,1),a=sr(u),o=d.empty(i,"float64"),s=o.data;for(let m=0;m<u;m++)s[m]=a[m]*n+t;return o})}uniform(t=0,n=1,e){return this._withState(()=>{if(e===void 0)return j()*(n-t)+t;const i=Array.isArray(e)?e:[e],u=i.reduce((l,A)=>l*A,1),a=ur(u),o=d.empty(i,"float64"),s=o.data,m=n-t;for(let l=0;l<u;l++)s[l]=a[l]*m+t;return o})}choice(t,n,e=!0,i){return this._withState(()=>dr(t,n,e,i,j,!0))}permutation(t){return this._withState(()=>Q(t,j,!0))}shuffle(t){this._withState(()=>{Ar(t,j,!0)})}exponential(t=1,n){return this._withState(()=>{if(n===void 0)return Br()*t;const e=Array.isArray(n)?n:[n],i=e.reduce((s,m)=>s*m,1),u=vr(i),a=d.empty(e,"float64"),o=a.data;for(let s=0;s<i;s++)o[s]=u[s]*t;return a})}poisson(t=1,n){return this._withState(()=>{if(n===void 0)return V(t,j);const e=Array.isArray(n)?n:[n],i=e.reduce((o,s)=>o*s,1),u=d.zeros(e,"int64"),a=u.data;for(let o=0;o<i;o++)a[o]=BigInt(V(t,j));return u})}binomial(t,n,e){return this._withState(()=>{if(e===void 0)return K(t,n,j);const i=Array.isArray(e)?e:[e],u=i.reduce((s,m)=>s*m,1),a=d.zeros(i,"int64"),o=a.data;for(let s=0;s<u;s++)o[s]=BigInt(K(t,n,j));return a})}}function Kt(r){return new Ct(r)}function Qt(r){r==null&&(r=Math.floor(Date.now()^Math.random()*4294967296)),wr(r>>>0),or()}function $t(){const{mt:r,mti:t}=Sr();return{mt:Array.from(r),mti:t}}function zt(r){Mr(new Uint32Array(r.mt),r.mti),or()}function Dt(r){if(r===0)return 0;let t=r;t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16;let n;do n=(z()&t)>>>0;while(n>r);return n}function Y(r){const t=[.08333333333333333,-.002777777777777778,.0007936507936507937,-.0005952380952380952,.0008417508417508418,-.001917526917526918,.00641025641025641,-.02955065359477124,.1796443723688307,-1.3924322169059];if(r===1||r===2)return 0;let n;r<7?n=Math.floor(7-r):n=0;let e=r+n;const i=1/e*(1/e),u=1.8378770664093453;let a=t[9];for(let s=8;s>=0;s--)a*=i,a+=t[s];let o=a/e+.5*u+(e-.5)*Math.log(e)-e;if(r<7)for(let s=1;s<=n;s++)o-=Math.log(e-1),e-=1;return o}function H(r){return ir(r)}function X(r){return 2*H(r/2)}function Tt(r,t,n){const e=t+r-n;let i=Math.min(t,r),u=i,a=n;for(;u>0;){const s=w();if(u-=Math.floor(s+u/(e+a)),a--,a===0)break}const o=i-u;return r>t?n-o:o}function Lt(r,t,n){const e=1.7155277699214135,i=.8989161620588988,u=Math.min(r,t),a=r+t,o=Math.max(r,t),s=Math.min(n,a-n),m=u/a,l=1-m,A=s*m+.5,p=Math.sqrt((a-s)*n*m*l/(a-1)+.5),f=e*p+i,c=Math.floor((s+1)*(u+1)/(a+2)),b=Y(c+1)+Y(u-c+1)+Y(s-c+1)+Y(o-s+c+1),y=Math.min(Math.min(s,u)+1,Math.floor(A+16*p));let h;for(;;){const B=w(),x=w(),v=A+f*(x-.5)/B;if(v<0||v>=y)continue;h=Math.floor(v);const g=b-(Y(h+1)+Y(u-h+1)+Y(s-h+1)+Y(o-s+h+1));if(B*(4-B)-3<=g)break;if(!(B*(B-g)>=1)&&2*Math.log(B)<=g)break}return r>t&&(h=s-h),s<n&&(h=r-h),h}function Rt(r,t){const n=Math.exp(-r);let e=0,i=1;for(;;){const u=t();if(i*=u,i>n)e+=1;else return e}}function Xt(r,t){const n=Math.sqrt(r),e=Math.log(r),i=.931+2.53*n,u=-.059+.02483*i,a=1.1239+1.1328/(i-3.4),o=.9277-3.6224/(i-2);for(;;){const s=t()-.5,m=t(),l=.5-Math.abs(s),A=Math.floor((2*u/l+i)*s+r+.43);if(l>=.07&&m<=o)return A;if(!(A<0||l<.013&&m>l)&&Math.log(m)+Math.log(a)-Math.log(u/(l*l)+i)<=-r+A*e-Y(A+1))return A}}function V(r,t){return r>=10?Xt(r,t):r===0?0:Rt(r,t)}function jt(){return{has_binomial:!1,nsave:0,psave:0,r:0,q:0,fm:0,m:0,p1:0,xm:0,xl:0,xr:0,c:0,laml:0,lamr:0,p2:0,p3:0,p4:0}}function br(r,t,n,e){let i,u,a,o,s,m,l,A,p,f,c,b,y,h,B,x,v,g,E,U,W,I,P,G,N,C,D,T,q,L,$,F,M,_;!e.has_binomial||e.nsave!==r||e.psave!==t?(e.nsave=r,e.psave=t,e.has_binomial=!0,e.r=i=Math.min(t,1-t),e.q=u=1-i,e.fm=a=r*i+i,e.m=F=Math.floor(a),e.p1=o=Math.floor(2.195*Math.sqrt(r*i*u)-4.6*u)+.5,e.xm=s=F+.5,e.xl=m=s-o,e.xr=l=s+o,e.c=A=.134+20.5/(15.3+F),h=(a-m)/(a-m*i),e.laml=p=h*(1+h/2),h=(l-a)/(l*u),e.lamr=f=h*(1+h/2),e.p2=c=o*(1+2*A),e.p3=b=c+A/p,e.p4=y=b+A/f):(i=e.r,u=e.q,F=e.m,o=e.p1,s=e.xm,m=e.xl,l=e.xr,A=e.c,p=e.laml,f=e.lamr,c=e.p2,b=e.p3,y=e.p4);r:for(;;){if(I=r*i*u,B=n()*y,x=n(),B<=o)M=Math.floor(s-o*x+B);else if(B<=c){if($=m+(B-o)/A,x=x*A+1-Math.abs(F-$+.5)/o,x>1)continue r;if(M=Math.floor($),_=Math.abs(M-F),_>20&&_<I/2-1){if(E=_/I*((_*(_/3+.625)+.16666666666666666)/I+.5),U=-_*_/(2*I),W=Math.log(x),!(W<U-E)){if(W>U+E)continue r;if(P=M+1,N=F+1,D=r+1-F,q=r-M+1,G=P*P,C=N*N,T=D*D,L=q*q,W>s*Math.log(N/P)+(r-F+.5)*Math.log(D/q)+(M-F)*Math.log(q*i/(P*u))+(13680-(462-(132-(99-140/C)/C)/C)/C)/N/166320+(13680-(462-(132-(99-140/T)/T)/T)/T)/D/166320+(13680-(462-(132-(99-140/G)/G)/G)/G)/P/166320+(13680-(462-(132-(99-140/L)/L)/L)/L)/q/166320)continue r}}else{if(v=i/u,h=v*(r+1),g=1,F<M)for(let k=F+1;k<=M;k++)g*=h/k-v;else if(F>M)for(let k=M+1;k<=F;k++)g/=h/k-v;if(x>g)continue r}}else if(B<=b){if(M=Math.floor(m+Math.log(x)/p),M<0||x===0)continue r;if(x=x*(B-c)*p,_=Math.abs(M-F),_>20&&_<I/2-1){if(E=_/I*((_*(_/3+.625)+.16666666666666666)/I+.5),U=-_*_/(2*I),W=Math.log(x),!(W<U-E)){if(W>U+E)continue r;if(P=M+1,N=F+1,D=r+1-F,q=r-M+1,G=P*P,C=N*N,T=D*D,L=q*q,W>s*Math.log(N/P)+(r-F+.5)*Math.log(D/q)+(M-F)*Math.log(q*i/(P*u))+(13680-(462-(132-(99-140/C)/C)/C)/C)/N/166320+(13680-(462-(132-(99-140/T)/T)/T)/T)/D/166320+(13680-(462-(132-(99-140/G)/G)/G)/G)/P/166320+(13680-(462-(132-(99-140/L)/L)/L)/L)/q/166320)continue r}}else{if(v=i/u,h=v*(r+1),g=1,F<M)for(let k=F+1;k<=M;k++)g*=h/k-v;else if(F>M)for(let k=M+1;k<=F;k++)g/=h/k-v;if(x>g)continue r}}else{if(M=Math.floor(l-Math.log(x)/f),M>r||x===0)continue r;if(x=x*(B-b)*f,_=Math.abs(M-F),_>20&&_<I/2-1){if(E=_/I*((_*(_/3+.625)+.16666666666666666)/I+.5),U=-_*_/(2*I),W=Math.log(x),!(W<U-E)){if(W>U+E)continue r;if(P=M+1,N=F+1,D=r+1-F,q=r-M+1,G=P*P,C=N*N,T=D*D,L=q*q,W>s*Math.log(N/P)+(r-F+.5)*Math.log(D/q)+(M-F)*Math.log(q*i/(P*u))+(13680-(462-(132-(99-140/C)/C)/C)/C)/N/166320+(13680-(462-(132-(99-140/T)/T)/T)/T)/D/166320+(13680-(462-(132-(99-140/G)/G)/G)/G)/P/166320+(13680-(462-(132-(99-140/L)/L)/L)/L)/q/166320)continue r}}else{if(v=i/u,h=v*(r+1),g=1,F<M)for(let k=F+1;k<=M;k++)g*=h/k-v;else if(F>M)for(let k=M+1;k<=F;k++)g/=h/k-v;if(x>g)continue r}}return t>.5&&(M=r-M),M}}function yr(r,t,n,e){let i,u,a,o,s,m,l;for(!e.has_binomial||e.nsave!==r||e.psave!==t?(e.nsave=r,e.psave=t,e.has_binomial=!0,e.q=i=1-t,e.r=u=Math.exp(r*Math.log(i)),e.c=a=r*t,e.m=l=Math.min(r,Math.floor(a+10*Math.sqrt(a*i+1)))):(i=e.q,u=e.r,l=e.m),m=0,o=u,s=n();s>o;)m++,m>l?(m=0,o=u,s=n()):(s-=o,o=(r-m+1)*t*o/(m*i));return m}function K(r,t,n){if(r===0||t===0)return 0;const e=jt();if(t<=.5)return t*r<=30?yr(r,t,n,e):br(r,t,n,e);{const i=1-t;return i*r<=30?r-yr(r,i,n,e):r-br(r,i,n,e)}}function tr(r){if(r===void 0)return w();const t=Array.isArray(r)?r:[r],n=t.reduce((i,u)=>i*u,1),e=d.empty(t,"float64");return e.isWasmBacked?S(e.wasmPtr,n,fr):e.data.set(rr(n)),e}function re(...r){if(r.length===0)return w();const t=r.reduce((e,i)=>e*i,1),n=d.empty(r,"float64");return n.isWasmBacked?S(n.wasmPtr,t,fr):n.data.set(rr(t)),n}function te(...r){if(r.length===0)return R();const t=r.reduce((e,i)=>e*i,1),n=d.empty(r,"float64");return n.isWasmBacked?S(n.wasmPtr,t,cr):n.data.set(J(t)),n}function er(r,t,n,e="int64"){t==null&&(t=r,r=0);const u=t-r-1;if(n===void 0)return Dt(u)+r;const a=Array.isArray(n)?n:[n],o=a.reduce((s,m)=>s*m,1);if(e==="int8"||e==="uint8"){const s=tt(o,u,r),m=d.zeros(a,e);return m.data.set(e==="int8"?new Int8Array(s.buffer):s),m}else if(e==="int16"||e==="uint16"){const s=et(o,u,r),m=d.zeros(a,e);return m.data.set(e==="int16"?new Int16Array(s.buffer):s),m}else if(gr(e)){const s=d.empty(a,e);return s.isWasmBacked?S(s.wasmPtr,o,(m,l)=>Gt(m,l,u,r)):s.data.set(rt(o,u,r)),s}else{const s=_r(o,u),m=d.zeros(a,e),l=m.data;for(let A=0;A<o;A++)l[A]=s[A]+r;return m}}function ee(r=0,t=1,n){if(n===void 0)return w()*(t-r)+r;const e=Array.isArray(n)?n:[n],i=e.reduce((m,l)=>m*l,1),u=rr(i),a=d.empty(e,"float64"),o=a.data,s=t-r;for(let m=0;m<i;m++)o[m]=u[m]*s+r;return a}function ne(r=0,t=1,n){if(n===void 0)return R()*t+r;const e=Array.isArray(n)?n:[n],i=e.reduce((s,m)=>s*m,1),u=J(i),a=d.empty(e,"float64"),o=a.data;for(let s=0;s<i;s++)o[s]=u[s]*t+r;return a}function ae(r){if(r===void 0)return R();const t=Array.isArray(r)?r:[r],n=t.reduce((i,u)=>i*u,1),e=d.empty(t,"float64");return e.isWasmBacked?S(e.wasmPtr,n,cr):e.data.set(J(n)),e}function Yt(r=1,t){if(t===void 0)return O()*r;const n=Array.isArray(t)?t:[t],e=n.reduce((o,s)=>o*s,1),i=Pr(e),u=d.empty(n,"float64"),a=u.data;for(let o=0;o<e;o++)a[o]=i[o]*r;return u}function oe(r=1,t){if(t===void 0)return V(r,w);const n=Array.isArray(t)?t:[t],e=n.reduce((u,a)=>u*a,1),i=d.empty(n,"int64");return i.isWasmBacked?S(i.wasmPtr,e,(u,a)=>Et(u,a,r)):i.data.set(Zr(e,r)),i}function ue(r,t,n){if(n===void 0)return K(r,t,w);const e=Array.isArray(n)?n:[n],i=e.reduce((a,o)=>a*o,1),u=d.empty(e,"int64");return u.isWasmBacked?S(u.wasmPtr,i,(a,o)=>kt(a,o,r,t)):u.data.set(Or(i,r,t)),u}function dr(r,t,n=!0,e,i=w,u=!1){const a=typeof r=="number"?r:r.size;if(typeof r=="number"&&n&&e===void 0){if(a===0)throw new Error("cannot take a sample from an empty sequence");if(u){if(t===void 0)return Number(Z(0,a-1));const f=Array.isArray(t)?t:[t],c=f.reduce((h,B)=>h*B,1),b=d.zeros(f,"int64"),y=b.data;for(let h=0;h<c;h++)y[h]=Z(0,a-1);return b}return t===void 0?er(0,a):er(0,a,Array.isArray(t)?t:[t])}let o;if(typeof r=="number")o=Array.from({length:r},(f,c)=>c);else{o=[];for(let f=0;f<a;f++)o.push(Number(r.iget(f)))}if(a===0)throw new Error("cannot take a sample from an empty sequence");let s;if(e!==void 0){if(Array.isArray(e))s=e;else{const c=e.size;s=[];for(let b=0;b<c;b++)s.push(Number(e.iget(b)))}if(s.length!==a)throw new Error("p and a must have the same size");const f=s.reduce((c,b)=>c+b,0);Math.abs(f-1)>1e-10&&(s=s.map(c=>c/f))}if(t===void 0){if(s){const f=i();let c=0;for(let b=0;b<a;b++)if(c+=s[b],f<c)return o[b];return o[a-1]}return o[Math.floor(i()*a)]}const m=Array.isArray(t)?t:[t],l=m.reduce((f,c)=>f*c,1);if(!n&&l>a)throw new Error("cannot take a larger sample than population when replace=false");const A=d.zeros(m,"float64"),p=A.data;if(n)if(s){const f=new Array(a);f[0]=s[0];for(let c=1;c<a;c++)f[c]=f[c-1]+s[c];for(let c=0;c<l;c++){const b=i();let y=0;for(;y<a-1&&b>=f[y];)y++;p[c]=o[y]}}else for(let f=0;f<l;f++)p[f]=o[Math.floor(i()*a)];else if(s){const f=[...o],c=[...s];for(let b=0;b<l;b++){const y=c.reduce((v,g)=>v+g,0),h=i()*y;let B=0,x=0;for(let v=0;v<f.length;v++)if(B+=c[v],h<B){x=v;break}x===0&&h>=B&&(x=f.length-1),p[b]=f[x],f.splice(x,1),c.splice(x,1)}}else if(u)if(a>1e4&&l>a/50){const c=lr(a);for(let b=0;b<l;b++){const y=Number(c[a-l+b]);typeof r=="number"?p[b]=y:p[b]=Number(r.iget(y))}}else{const c=new Array(l),b=new Set;for(let y=a-l;y<a;y++){const h=Number(Z(0,y));b.has(h)?(b.add(y),c[y-(a-l)]=y):(b.add(h),c[y-(a-l)]=h)}for(let y=l-1;y>0;y--){const h=Number(Z(0,y)),B=c[y];c[y]=c[h],c[h]=B}for(let y=0;y<l;y++)typeof r=="number"?p[y]=c[y]:p[y]=Number(r.iget(c[y]))}else{const c=Q(a,i,!1).data;for(let b=0;b<l;b++){const y=Number((c instanceof BigInt64Array,c[b]));typeof r=="number"?p[b]=y:p[b]=Number(r.iget(y))}}return A}function se(r,t,n=!0,e){return dr(r,t,n,e,w)}function Q(r,t=w,n=!1){if(typeof r=="number"){if(n){const u=d.empty([r],"int64");return u.isWasmBacked?S(u.wasmPtr,r,(a,o)=>mt(a,o)):u.data.set(lr(r)),u}if(t===w){const u=d.empty([r],"float64");return u.isWasmBacked?S(u.wasmPtr,r,(a,o)=>it(a,o)):u.data.set(nt(r)),u}}let e;if(typeof r=="number"){e=d.empty([r],"float64");const u=e.data;for(let a=0;a<r;a++)u[a]=a}else e=r.copy();const i=e.size;for(let u=i-1;u>0;u--){const a=Math.floor(t()*(u+1)),o=e.iget(u);e.iset(u,e.iget(a)),e.iset(a,o)}return e}function ie(r){return Q(r,w)}function Ar(r,t=w,n=!1){const e=r.size;if(e<=1)return;const u=Q(e,t,n).data,a=new Array(e);for(let o=0;o<e;o++)a[o]=r.iget(o);for(let o=0;o<e;o++){const s=Number((u instanceof BigInt64Array,u[o]));r.iset(o,a[s])}}function me(r){Ar(r,w)}function le(r){return tr(r)}function ce(r){return tr(r)}function fe(r){return tr(r)}function be(r,t,n){return t===void 0&&(t=r,r=1),er(r,t+1,n)}function ye(r){const t=new Uint8Array(r);let n=0;for(;n+3<r;n+=4){const e=z();t[n]=e&255,t[n+1]=e>>>8&255,t[n+2]=e>>>16&255,t[n+3]=e>>>24&255}if(n<r){let e=z();for(;n<r;n++,e>>>=8)t[n]=e&255}return t}let hr={name:"MT19937",state:{}};function de(){return hr}function Ae(r){hr=r}function he(r){return Yt(1,r)}function pe(r,t){if(r<=0)throw new Error("shape must be positive");if(t===void 0)return H(r);const n=Array.isArray(t)?t:[t],e=n.reduce((u,a)=>u*a,1),i=d.empty(n,"float64");return i.isWasmBacked?S(i.wasmPtr,e,(u,a)=>lt(u,a,r)):i.data.set(mr(e,r)),i}function ge(r){if(r===void 0)return R()/R();const t=Array.isArray(r)?r:[r],n=t.reduce((i,u)=>i*u,1),e=d.empty(t,"float64");return e.isWasmBacked?S(e.wasmPtr,n,st):e.data.set(Dr(n)),e}function we(r,t){if(r<=0)throw new Error("df must be positive");const n=()=>{const a=R(),o=H(r/2);return Math.sqrt(r/2)*a/Math.sqrt(o)};if(t===void 0)return n();const e=Array.isArray(t)?t:[t],i=e.reduce((a,o)=>a*o,1),u=d.empty(e,"float64");return u.isWasmBacked?S(u.wasmPtr,i,(a,o)=>Mt(a,o,r)):u.data.set(Rr(i,r)),u}function Se(r,t=1,n){if(r<=0)throw new Error("shape must be positive");if(t<=0)throw new Error("scale must be positive");if(n===void 0)return t*H(r);const e=Array.isArray(n)?n:[n],i=e.reduce((s,m)=>s*m,1),u=mr(i,r),a=d.empty(e,"float64"),o=a.data;for(let s=0;s<i;s++)o[s]=u[s]*t;return a}function Me(r,t,n){if(r<=0||t<=0)throw new Error("a and b must be positive");const e=()=>{if(r<=1&&t<=1)for(;;){const o=w(),s=w(),m=Math.pow(o,1/r),l=Math.pow(s,1/t);if(m+l<=1){if(m+l>0)return m/(m+l);{const A=Math.log(o)/r,p=Math.log(s)/t,f=A>p?A:p,c=A-f,b=p-f;return Math.exp(c-Math.log(Math.exp(c)+Math.exp(b)))}}}else{const o=H(r),s=H(t);return o/(o+s)}};if(n===void 0)return e();const i=Array.isArray(n)?n:[n],u=i.reduce((o,s)=>o*s,1),a=d.empty(i,"float64");return a.isWasmBacked?S(a.wasmPtr,u,(o,s)=>Ft(o,s,r,t)):a.data.set(Xr(u,r,t)),a}function Fe(r=0,t=1,n){if(t<=0)throw new Error("scale must be positive");const e=()=>{for(;;){const o=w();if(o>=.5)return r-t*Math.log(2-o-o);if(o>0)return r+t*Math.log(o+o)}};if(n===void 0)return e();const i=Array.isArray(n)?n:[n],u=i.reduce((o,s)=>o*s,1),a=d.empty(i,"float64");return a.isWasmBacked?S(a.wasmPtr,u,(o,s)=>ht(o,s,r,t)):a.data.set(Gr(u,r,t)),a}function xe(r=0,t=1,n){if(t<=0)throw new Error("scale must be positive");const e=()=>{for(;;){const o=w();if(o>0)return r+t*Math.log(o/(1-o))}};if(n===void 0)return e();const i=Array.isArray(n)?n:[n],u=i.reduce((o,s)=>o*s,1),a=d.empty(i,"float64");return a.isWasmBacked?S(a.wasmPtr,u,(o,s)=>dt(o,s,r,t)):a.data.set(qr(u,r,t)),a}function Be(r=0,t=1,n){if(t<=0)throw new Error("sigma must be positive");if(n===void 0)return Math.exp(R()*t+r);const e=Array.isArray(n)?n:[n],i=e.reduce((a,o)=>a*o,1),u=d.empty(e,"float64");return u.isWasmBacked?S(u.wasmPtr,i,(a,o)=>wt(a,o,r,t)):u.data.set(Tr(i,r,t)),u}function ve(r=0,t=1,n){if(t<=0)throw new Error("scale must be positive");const e=()=>{for(;;){const o=1-w();if(o<1)return r-t*Math.log(-Math.log(o))}};if(n===void 0)return e();const i=Array.isArray(n)?n:[n],u=i.reduce((o,s)=>o*s,1),a=d.empty(i,"float64");return a.isWasmBacked?S(a.wasmPtr,u,(o,s)=>At(o,s,r,t)):a.data.set(Ur(u,r,t)),a}function Pe(r,t){if(r<=0)throw new Error("a must be positive");const n=()=>Math.exp(O()/r)-1;if(t===void 0)return n();const e=Array.isArray(t)?t:[t],i=e.reduce((a,o)=>a*o,1),u=d.empty(e,"float64");return u.isWasmBacked?S(u.wasmPtr,i,(a,o)=>ft(a,o,r)):u.data.set(kr(i,r)),u}function _e(r,t){if(r<=0)throw new Error("a must be positive");const n=()=>Math.pow(1-Math.exp(-O()),1/r);if(t===void 0)return n();const e=Array.isArray(t)?t:[t],i=e.reduce((a,o)=>a*o,1),u=d.empty(e,"float64");return u.isWasmBacked?S(u.wasmPtr,i,(a,o)=>bt(a,o,r)):u.data.set(Ir(i,r)),u}function Ee(r=1,t){if(r<=0)throw new Error("scale must be positive");if(t===void 0)return r*Math.sqrt(2*O());const n=Array.isArray(t)?t:[t],e=n.reduce((u,a)=>u*a,1),i=d.empty(n,"float64");return i.isWasmBacked?S(i.wasmPtr,e,(u,a)=>pt(u,a,r)):i.data.set(Nr(e,r)),i}function ke(r,t,n,e){if(r>t||t>n||r===n)throw new Error("must have left <= mode <= right and left < right");const i=n-r,u=t-r,a=u/i,o=u*i,s=(n-t)*i,m=()=>{const f=w();return f<=a?r+Math.sqrt(f*o):n-Math.sqrt((1-f)*s)};if(e===void 0)return m();const l=Array.isArray(e)?e:[e],A=l.reduce((f,c)=>f*c,1),p=d.empty(l,"float64");return p.isWasmBacked?S(p.wasmPtr,A,(f,c)=>gt(f,c,r,t,n)):p.data.set(Cr(A,r,t,n)),p}function Ie(r,t,n){if(r<=0)throw new Error("mean must be positive");if(t<=0)throw new Error("scale must be positive");const e=()=>{const o=r/(2*t);let s=R();s=r*s*s;const m=r+o*(s-Math.sqrt(4*t*s+s*s));return w()<=r/(r+m)?m:r*r/m};if(n===void 0)return e();const i=Array.isArray(n)?n:[n],u=i.reduce((o,s)=>o*s,1),a=d.empty(i,"float64");return a.isWasmBacked?S(a.wasmPtr,u,(o,s)=>St(o,s,r,t)):a.data.set(Lr(u,r,t)),a}function We(r,t){if(r<=0)throw new Error("a must be positive");const n=()=>r===0?0:Math.pow(O(),1/r);if(t===void 0)return n();const e=Array.isArray(t)?t:[t],i=e.reduce((a,o)=>a*o,1),u=d.empty(e,"float64");return u.isWasmBacked?S(u.wasmPtr,i,(a,o)=>yt(a,o,r)):u.data.set(Wr(i,r)),u}function qe(r,t){if(r<=0)throw new Error("df must be positive");if(t===void 0)return X(r);const n=Array.isArray(t)?t:[t],e=n.reduce((u,a)=>u*a,1),i=d.empty(n,"float64");return i.isWasmBacked?S(i.wasmPtr,e,(u,a)=>ct(u,a,r)):i.data.set(Er(e,r)),i}function Ue(r,t,n){if(r<=0)throw new Error("df must be positive");if(t<0)throw new Error("nonc must be non-negative");const e=()=>{if(t===0)return X(r);if(1<r){const o=X(r-1),s=R()+Math.sqrt(t);return o+s*s}else{const o=V(t/2,w);return X(r+2*o)}};if(n===void 0)return e();const i=Array.isArray(n)?n:[n],u=i.reduce((o,s)=>o*s,1),a=d.empty(i,"float64");return a.isWasmBacked?S(a.wasmPtr,u,(o,s)=>Bt(o,s,r,t)):a.data.set(Yr(u,r,t)),a}function Ge(r,t,n){if(r<=0)throw new Error("dfnum must be positive");if(t<=0)throw new Error("dfden must be positive");const e=()=>{const o=X(r)*t,s=X(t)*r;return o/s};if(n===void 0)return e();const i=Array.isArray(n)?n:[n],u=i.reduce((o,s)=>o*s,1),a=d.empty(i,"float64");return a.isWasmBacked?S(a.wasmPtr,u,(o,s)=>xt(o,s,r,t)):a.data.set(jr(u,r,t)),a}function Ne(r,t,n,e){if(r<=0)throw new Error("dfnum must be positive");if(t<=0)throw new Error("dfden must be positive");if(n<0)throw new Error("nonc must be non-negative");const i=()=>{if(n===0)return X(r);if(1<r){const m=X(r-1),l=R()+Math.sqrt(n);return m+l*l}else{const m=V(n/2,w);return X(r+2*m)}},u=()=>i()*t/(X(t)*r);if(e===void 0)return u();const a=Array.isArray(e)?e:[e],o=a.reduce((m,l)=>m*l,1),s=d.empty(a,"float64");return s.isWasmBacked?S(s.wasmPtr,o,(m,l)=>vt(m,l,r,t,n)):s.data.set(Hr(o,r,t,n)),s}function Ce(r,t){if(r<=0||r>1)throw new Error("p must be in (0, 1]");const n=()=>{if(r>=1/3){let a=1,o=r,s=r;const m=1-r,l=w();for(;l>o;)s*=m,o+=s,a++;return a}else return Math.ceil(Math.log1p(-w())/Math.log(1-r))};if(t===void 0)return n();const e=Array.isArray(t)?t:[t],i=e.reduce((a,o)=>a*o,1),u=d.empty(e,"int64");return u.isWasmBacked?S(u.wasmPtr,i,(a,o)=>_t(a,o,r)):u.data.set(Vr(i,r)),u}function De(r,t,n,e){if(r<0)throw new Error("ngood must be non-negative");if(t<0)throw new Error("nbad must be non-negative");if(n<0)throw new Error("nsample must be non-negative");if(n>r+t)throw new Error("nsample must be <= ngood + nbad");const i=()=>n>10?Lt(r,t,n):n>0?Tt(r,t,n):0;if(e===void 0)return i();const u=Array.isArray(e)?e:[e],a=u.reduce((s,m)=>s*m,1),o=d.empty(u,"int64");return o.isWasmBacked?S(o.wasmPtr,a,(s,m)=>Wt(s,m,r,t,n)):o.data.set(Kr(a,r,t,n)),o}function Te(r,t){if(r<=0||r>=1)throw new Error("p must be in (0, 1)");const n=Math.log(1-r),e=()=>{for(;;){const o=w();if(o>=r)return 1;const s=w(),m=1-Math.exp(n*s);if(o<=m*m){const l=Math.floor(1+Math.log(o)/Math.log(m));if(l<1||o===0)continue;return l}return o>=m?1:2}};if(t===void 0)return e();const i=Array.isArray(t)?t:[t],u=i.reduce((o,s)=>o*s,1),a=d.empty(i,"int64");return a.isWasmBacked?S(a.wasmPtr,u,(o,s)=>qt(o,s,r)):a.data.set(Qr(u,r)),a}function Le(r,t,n){if(r<=0)throw new Error("n must be positive");if(t<=0||t>1)throw new Error("p must be in (0, 1]");const e=()=>{if(t===1)return 0;const o=H(r)*((1-t)/t);return V(o,w)};if(n===void 0)return e();const i=Array.isArray(n)?n:[n],u=i.reduce((o,s)=>o*s,1),a=d.empty(i,"int64");return a.isWasmBacked?S(a.wasmPtr,u,(o,s)=>It(o,s,r,t)):a.data.set(Jr(u,r,t)),a}function Re(r,t){if(r<=1)throw new Error("a must be > 1");const n=r-1,e=Math.pow(2,n),i=9007199254740991,u=()=>{for(;;){const m=1-w(),l=w(),A=Math.floor(Math.pow(m,-1/n));if(A>i||A<1)continue;const p=Math.pow(1+1/A,n);if(l*A*(p-1)/(e-1)<=p/e)return A}};if(t===void 0)return u();const a=Array.isArray(t)?t:[t],o=a.reduce((m,l)=>m*l,1),s=d.empty(a,"int64");return s.isWasmBacked?S(s.wasmPtr,o,(m,l)=>Ut(m,l,r)):s.data.set($r(o,r)),s}function Xe(r,t,n){const e=Array.isArray(t)?t:Array.from({length:t.size},(f,c)=>Number(t.iget(c))),i=e.length;if(i===0)throw new Error("pvals must have at least one element");const u=e.reduce((f,c)=>f+c,0),a=e.map(f=>f/u),o=()=>{const f=new Array(i).fill(0);let c=r,b=1;for(let y=0;y<i-1;y++){const h=K(c,a[y]/b,w);if(f[y]=h,c-=h,c<=0)break;b-=a[y]}return c>0&&(f[i-1]=c),f};if(n===void 0){const f=o(),c=d.zeros([i],"int64"),b=c.data;for(let y=0;y<i;y++)b[y]=BigInt(f[y]);return c}const s=Array.isArray(n)?n:[n],m=s.reduce((f,c)=>f*c,1),l=[...s,i],A=d.zeros(l,"int64"),p=A.data;for(let f=0;f<m;f++){const c=o();for(let b=0;b<i;b++)p[f*i+b]=BigInt(c[b])}return A}function je(r,t,n,e="warn",i=1e-8){const u=Array.isArray(r)?r:Array.from({length:r.size},(g,E)=>Number(r.iget(E))),a=u.length;let o;if(Array.isArray(t))o=t;else{o=[];for(let g=0;g<a;g++){o.push([]);for(let E=0;E<a;E++)o[g].push(Number(t.iget(g*a+E)))}}const s=d.empty([a,a],"float64");s.data.set(o.flat());const{s:m,vt:l}=pr(s,!0,!0),A=l.data,p=m.data;for(let g=0;g<a;g++)if(p[g]<-i){if(e==="raise")throw new Error("covariance matrix is not positive semi-definite");e==="warn"&&console.warn("covariance matrix is not positive semi-definite")}const f=A,c=new Float64Array(a);for(let g=0;g<a;g++)c[g]=Math.sqrt(Math.max(0,p[g]));if(n===void 0){const g=J(a),E=d.zeros([a],"float64"),U=E.data;for(let W=0;W<a;W++){let I=u[W];for(let P=0;P<a;P++)I+=g[P]*c[P]*f[P*a+W];U[W]=I}return E}const b=Array.isArray(n)?n:[n],y=b.reduce((g,E)=>g*E,1),h=[...b,a],B=J(y*a),x=d.empty(h,"float64"),v=x.data;for(let g=0;g<y;g++){const E=g*a;for(let U=0;U<a;U++){let W=u[U];for(let I=0;I<a;I++)W+=B[E+I]*c[I]*f[I*a+U];v[E+U]=W}}return x}function Ye(r,t){const n=Array.isArray(r)?r:Array.from({length:r.size},(l,A)=>Number(r.iget(A))),e=n.length;if(e<2)throw new Error("alpha must have at least 2 elements");for(const l of n)if(l<=0)throw new Error("all alpha values must be positive");const i=(l,A)=>{let p=0;for(let f=0;f<e;f++){const c=ir(n[f]);l[A+f]=c,p+=c}for(let f=0;f<e;f++)l[A+f]=l[A+f]/p};if(t===void 0){const l=d.empty([e],"float64");return i(l.data,0),l}const u=Array.isArray(t)?t:[t],a=u.reduce((l,A)=>l*A,1),o=[...u,e],s=d.empty(o,"float64"),m=s.data;for(let l=0;l<a;l++)i(m,l*e);return s}function He(r,t,n){if(t<0)throw new Error("kappa must be non-negative");const e=()=>{if(t<1e-8)return Math.PI*(2*w()-1);let o;if(t<1e-5)o=1/t+t;else{const f=1+Math.sqrt(1+4*t*t),c=(f-Math.sqrt(2*f))/(2*t);o=(1+c*c)/(2*c)}let s;for(;;){const f=w(),c=Math.cos(Math.PI*f);s=(1+o*c)/(o+c);const b=t*(o-s),y=w();if(b*(2-b)-y>=0||Math.log(b/y)+1-b>=0)break}const m=w();let l=Math.acos(s);m<.5&&(l=-l),l+=r;const A=l<0;let p=Math.abs(l);return p=(p+Math.PI)%(2*Math.PI)-Math.PI,A&&(p*=-1),p};if(n===void 0)return e();const i=Array.isArray(n)?n:[n],u=i.reduce((o,s)=>o*s,1),a=d.empty(i,"float64");return a.isWasmBacked?S(a.wasmPtr,u,(o,s)=>Pt(o,s,r,t)):a.data.set(zr(u,r,t)),a}export{Ct as Generator,Me as beta,ue as binomial,ye as bytes,qe as chisquare,se as choice,Kt as default_rng,Ye as dirichlet,Yt as exponential,Ge as f,Se as gamma,Ce as geometric,de as get_bit_generator,$t as get_state,ve as gumbel,De as hypergeometric,Fe as laplace,xe as logistic,Be as lognormal,Te as logseries,Xe as multinomial,je as multivariate_normal,Le as negative_binomial,Ue as noncentral_chisquare,Ne as noncentral_f,ne as normal,Pe as pareto,ie as permutation,oe as poisson,_e as power,re as rand,er as randint,te as randn,tr as random,be as random_integers,le as random_sample,ce as ranf,Ee as rayleigh,fe as sample,Qt as seed,Ae as set_bit_generator,zt as set_state,me as shuffle,ge as standard_cauchy,he as standard_exponential,pe as standard_gamma,ae as standard_normal,we as standard_t,ke as triangular,ee as uniform,He as vonmises,Ie as wald,We as weibull,Re as zipf};