numpy-ts 1.2.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (408) hide show
  1. package/README.md +3 -11
  2. package/dist/esm/common/dtype.js +1 -1
  3. package/dist/esm/common/internal/compute.js +1 -1
  4. package/dist/esm/common/internal/indexing.js +1 -1
  5. package/dist/esm/common/ndarray-core.js +1 -1
  6. package/dist/esm/common/ops/advanced.js +1 -1
  7. package/dist/esm/common/ops/arithmetic.js +1 -1
  8. package/dist/esm/common/ops/bitwise.js +1 -1
  9. package/dist/esm/common/ops/comparison.js +1 -1
  10. package/dist/esm/common/ops/complex.js +1 -1
  11. package/dist/esm/common/ops/exponential.js +1 -1
  12. package/dist/esm/common/ops/fft.js +1 -1
  13. package/dist/esm/common/ops/gradient.js +1 -1
  14. package/dist/esm/common/ops/hyperbolic.js +1 -1
  15. package/dist/esm/common/ops/linalg.js +2 -2
  16. package/dist/esm/common/ops/logic.js +1 -1
  17. package/dist/esm/common/ops/random.js +1 -1
  18. package/dist/esm/common/ops/reduction.js +1 -1
  19. package/dist/esm/common/ops/rounding.js +1 -1
  20. package/dist/esm/common/ops/shape.js +1 -1
  21. package/dist/esm/common/ops/sorting.js +1 -1
  22. package/dist/esm/common/ops/statistics.js +1 -1
  23. package/dist/esm/common/ops/trig.js +1 -1
  24. package/dist/esm/common/storage.js +1 -1
  25. package/dist/esm/common/wasm/abs.js +1 -1
  26. package/dist/esm/common/wasm/add.js +1 -1
  27. package/dist/esm/common/wasm/all_finite.js +1 -0
  28. package/dist/esm/common/wasm/arccos.js +1 -1
  29. package/dist/esm/common/wasm/arcsin.js +1 -1
  30. package/dist/esm/common/wasm/arctan.js +1 -1
  31. package/dist/esm/common/wasm/arctan2.js +1 -0
  32. package/dist/esm/common/wasm/argpartition.js +1 -1
  33. package/dist/esm/common/wasm/argsort.js +1 -1
  34. package/dist/esm/common/wasm/bins/abs.wasm.js +1 -1
  35. package/dist/esm/common/wasm/bins/add.wasm.js +1 -1
  36. package/dist/esm/common/wasm/bins/all_finite.wasm.js +1 -0
  37. package/dist/esm/common/wasm/bins/alloc.wasm.js +1 -0
  38. package/dist/esm/common/wasm/bins/arccos.wasm.js +1 -1
  39. package/dist/esm/common/wasm/bins/arcsin.wasm.js +1 -1
  40. package/dist/esm/common/wasm/bins/arctan.wasm.js +1 -1
  41. package/dist/esm/common/wasm/bins/arctan2.wasm.js +1 -0
  42. package/dist/esm/common/wasm/bins/argpartition.wasm.js +1 -1
  43. package/dist/esm/common/wasm/bins/argsort.wasm.js +1 -1
  44. package/dist/esm/common/wasm/bins/bitwise_and.wasm.js +1 -1
  45. package/dist/esm/common/wasm/bins/bitwise_count.wasm.js +1 -1
  46. package/dist/esm/common/wasm/bins/bitwise_not.wasm.js +1 -1
  47. package/dist/esm/common/wasm/bins/bitwise_or.wasm.js +1 -1
  48. package/dist/esm/common/wasm/bins/bitwise_xor.wasm.js +1 -1
  49. package/dist/esm/common/wasm/bins/cholesky.wasm.js +1 -1
  50. package/dist/esm/common/wasm/bins/clip.wasm.js +1 -1
  51. package/dist/esm/common/wasm/bins/convolve.wasm.js +1 -1
  52. package/dist/esm/common/wasm/bins/copysign.wasm.js +1 -1
  53. package/dist/esm/common/wasm/bins/correlate.wasm.js +1 -1
  54. package/dist/esm/common/wasm/bins/cos.wasm.js +1 -1
  55. package/dist/esm/common/wasm/bins/cosh.wasm.js +1 -1
  56. package/dist/esm/common/wasm/bins/cross.wasm.js +1 -1
  57. package/dist/esm/common/wasm/bins/diff.wasm.js +1 -1
  58. package/dist/esm/common/wasm/bins/divide.wasm.js +1 -1
  59. package/dist/esm/common/wasm/bins/divmod.wasm.js +1 -0
  60. package/dist/esm/common/wasm/bins/dot_float-relaxed.wasm.js +1 -0
  61. package/dist/esm/common/wasm/bins/dot_float.wasm.js +1 -0
  62. package/dist/esm/common/wasm/bins/dot_int.wasm.js +1 -0
  63. package/dist/esm/common/wasm/bins/exp.wasm.js +1 -1
  64. package/dist/esm/common/wasm/bins/exp2.wasm.js +1 -1
  65. package/dist/esm/common/wasm/bins/fft.wasm.js +1 -1
  66. package/dist/esm/common/wasm/bins/frexp.wasm.js +1 -1
  67. package/dist/esm/common/wasm/bins/gather.wasm.js +1 -1
  68. package/dist/esm/common/wasm/bins/gcd.wasm.js +1 -1
  69. package/dist/esm/common/wasm/bins/gradient.wasm.js +1 -1
  70. package/dist/esm/common/wasm/bins/heaviside.wasm.js +1 -1
  71. package/dist/esm/common/wasm/bins/hypot.wasm.js +1 -1
  72. package/dist/esm/common/wasm/bins/indices.wasm.js +1 -1
  73. package/dist/esm/common/wasm/bins/inner_float-relaxed.wasm.js +1 -0
  74. package/dist/esm/common/wasm/bins/inner_float.wasm.js +1 -0
  75. package/dist/esm/common/wasm/bins/inner_int.wasm.js +1 -0
  76. package/dist/esm/common/wasm/bins/isfinite.wasm.js +1 -0
  77. package/dist/esm/common/wasm/bins/isnan.wasm.js +1 -0
  78. package/dist/esm/common/wasm/bins/kron.wasm.js +1 -1
  79. package/dist/esm/common/wasm/bins/ldexp.wasm.js +1 -1
  80. package/dist/esm/common/wasm/bins/left_shift.wasm.js +1 -1
  81. package/dist/esm/common/wasm/bins/lexsort.wasm.js +1 -1
  82. package/dist/esm/common/wasm/bins/logaddexp.wasm.js +1 -1
  83. package/dist/esm/common/wasm/bins/logical_and.wasm.js +1 -1
  84. package/dist/esm/common/wasm/bins/logical_not.wasm.js +1 -1
  85. package/dist/esm/common/wasm/bins/logical_or.wasm.js +1 -1
  86. package/dist/esm/common/wasm/bins/logical_xor.wasm.js +1 -1
  87. package/dist/esm/common/wasm/bins/lu.wasm.js +1 -0
  88. package/dist/esm/common/wasm/bins/matmul_float-relaxed.wasm.js +1 -0
  89. package/dist/esm/common/wasm/bins/matmul_float.wasm.js +1 -0
  90. package/dist/esm/common/wasm/bins/matmul_int.wasm.js +1 -0
  91. package/dist/esm/common/wasm/bins/matvec_float-relaxed.wasm.js +1 -0
  92. package/dist/esm/common/wasm/bins/matvec_float.wasm.js +1 -0
  93. package/dist/esm/common/wasm/bins/matvec_int.wasm.js +1 -0
  94. package/dist/esm/common/wasm/bins/max.wasm.js +1 -1
  95. package/dist/esm/common/wasm/bins/min.wasm.js +1 -1
  96. package/dist/esm/common/wasm/bins/mul.wasm.js +1 -1
  97. package/dist/esm/common/wasm/bins/neg.wasm.js +1 -1
  98. package/dist/esm/common/wasm/bins/outer.wasm.js +1 -1
  99. package/dist/esm/common/wasm/bins/pad.wasm.js +1 -1
  100. package/dist/esm/common/wasm/bins/partition.wasm.js +1 -1
  101. package/dist/esm/common/wasm/bins/power.wasm.js +1 -1
  102. package/dist/esm/common/wasm/bins/qr.wasm.js +1 -1
  103. package/dist/esm/common/wasm/bins/reciprocal.wasm.js +1 -1
  104. package/dist/esm/common/wasm/bins/reduce_all.wasm.js +1 -1
  105. package/dist/esm/common/wasm/bins/reduce_any.wasm.js +1 -1
  106. package/dist/esm/common/wasm/bins/reduce_argmax.wasm.js +1 -1
  107. package/dist/esm/common/wasm/bins/reduce_argmin.wasm.js +1 -1
  108. package/dist/esm/common/wasm/bins/reduce_count_nz.wasm.js +1 -1
  109. package/dist/esm/common/wasm/bins/reduce_max.wasm.js +1 -1
  110. package/dist/esm/common/wasm/bins/reduce_mean.wasm.js +1 -1
  111. package/dist/esm/common/wasm/bins/reduce_min.wasm.js +1 -1
  112. package/dist/esm/common/wasm/bins/reduce_nanmax.wasm.js +1 -1
  113. package/dist/esm/common/wasm/bins/reduce_nanmin.wasm.js +1 -1
  114. package/dist/esm/common/wasm/bins/reduce_nansum.wasm.js +1 -1
  115. package/dist/esm/common/wasm/bins/reduce_prod.wasm.js +1 -1
  116. package/dist/esm/common/wasm/bins/reduce_std.wasm.js +1 -1
  117. package/dist/esm/common/wasm/bins/reduce_sum.wasm.js +1 -1
  118. package/dist/esm/common/wasm/bins/reduce_var.wasm.js +1 -1
  119. package/dist/esm/common/wasm/bins/repeat.wasm.js +1 -1
  120. package/dist/esm/common/wasm/bins/right_shift.wasm.js +1 -1
  121. package/dist/esm/common/wasm/bins/rng.wasm.js +1 -1
  122. package/dist/esm/common/wasm/bins/roll.wasm.js +1 -1
  123. package/dist/esm/common/wasm/bins/searchsorted.wasm.js +1 -1
  124. package/dist/esm/common/wasm/bins/sign.wasm.js +1 -1
  125. package/dist/esm/common/wasm/bins/signbit.wasm.js +1 -0
  126. package/dist/esm/common/wasm/bins/sin.wasm.js +1 -0
  127. package/dist/esm/common/wasm/bins/sinh.wasm.js +1 -1
  128. package/dist/esm/common/wasm/bins/sort.wasm.js +1 -1
  129. package/dist/esm/common/wasm/bins/sqrt.wasm.js +1 -1
  130. package/dist/esm/common/wasm/bins/square.wasm.js +1 -1
  131. package/dist/esm/common/wasm/bins/sub.wasm.js +1 -1
  132. package/dist/esm/common/wasm/bins/svd.wasm.js +1 -1
  133. package/dist/esm/common/wasm/bins/tan.wasm.js +1 -1
  134. package/dist/esm/common/wasm/bins/tanh.wasm.js +1 -1
  135. package/dist/esm/common/wasm/bins/tile.wasm.js +1 -1
  136. package/dist/esm/common/wasm/bins/unravel_index.wasm.js +1 -0
  137. package/dist/esm/common/wasm/bins/vdot.wasm.js +1 -1
  138. package/dist/esm/common/wasm/bins/vecdot_float-relaxed.wasm.js +1 -0
  139. package/dist/esm/common/wasm/bins/vecdot_float.wasm.js +1 -0
  140. package/dist/esm/common/wasm/bins/vecdot_int.wasm.js +1 -0
  141. package/dist/esm/common/wasm/bins/vecmat_float-relaxed.wasm.js +1 -0
  142. package/dist/esm/common/wasm/bins/vecmat_float.wasm.js +1 -0
  143. package/dist/esm/common/wasm/bins/vecmat_int.wasm.js +1 -0
  144. package/dist/esm/common/wasm/bins/vector_norm-relaxed.wasm.js +1 -0
  145. package/dist/esm/common/wasm/bins/vector_norm.wasm.js +1 -0
  146. package/dist/esm/common/wasm/bitwise_and.js +1 -1
  147. package/dist/esm/common/wasm/bitwise_count.js +1 -1
  148. package/dist/esm/common/wasm/bitwise_not.js +1 -1
  149. package/dist/esm/common/wasm/bitwise_or.js +1 -1
  150. package/dist/esm/common/wasm/bitwise_xor.js +1 -1
  151. package/dist/esm/common/wasm/cholesky.js +1 -1
  152. package/dist/esm/common/wasm/clip.js +1 -1
  153. package/dist/esm/common/wasm/config.js +1 -1
  154. package/dist/esm/common/wasm/convolve.js +1 -1
  155. package/dist/esm/common/wasm/copysign.js +1 -1
  156. package/dist/esm/common/wasm/correlate.js +1 -1
  157. package/dist/esm/common/wasm/cos.js +1 -1
  158. package/dist/esm/common/wasm/cosh.js +1 -1
  159. package/dist/esm/common/wasm/cross.js +1 -1
  160. package/dist/esm/common/wasm/detect.js +1 -0
  161. package/dist/esm/common/wasm/diff.js +1 -1
  162. package/dist/esm/common/wasm/divide.js +1 -1
  163. package/dist/esm/common/wasm/divmod.js +1 -0
  164. package/dist/esm/common/wasm/dot.js +1 -1
  165. package/dist/esm/common/wasm/exp.js +1 -1
  166. package/dist/esm/common/wasm/exp2.js +1 -1
  167. package/dist/esm/common/wasm/fft.js +1 -1
  168. package/dist/esm/common/wasm/frexp.js +1 -1
  169. package/dist/esm/common/wasm/gather.js +1 -1
  170. package/dist/esm/common/wasm/gcd.js +1 -1
  171. package/dist/esm/common/wasm/gradient.js +1 -1
  172. package/dist/esm/common/wasm/heaviside.js +1 -1
  173. package/dist/esm/common/wasm/hypot.js +1 -1
  174. package/dist/esm/common/wasm/indices.js +1 -1
  175. package/dist/esm/common/wasm/inner.js +1 -1
  176. package/dist/esm/common/wasm/isfinite.js +1 -0
  177. package/dist/esm/common/wasm/isnan.js +1 -0
  178. package/dist/esm/common/wasm/kron.js +1 -1
  179. package/dist/esm/common/wasm/ldexp.js +1 -1
  180. package/dist/esm/common/wasm/left_shift.js +1 -1
  181. package/dist/esm/common/wasm/lexsort.js +1 -1
  182. package/dist/esm/common/wasm/logaddexp.js +1 -1
  183. package/dist/esm/common/wasm/logical_and.js +1 -1
  184. package/dist/esm/common/wasm/logical_not.js +1 -1
  185. package/dist/esm/common/wasm/logical_or.js +1 -1
  186. package/dist/esm/common/wasm/logical_xor.js +1 -1
  187. package/dist/esm/common/wasm/lu.js +1 -0
  188. package/dist/esm/common/wasm/matmul.js +1 -1
  189. package/dist/esm/common/wasm/matvec.js +1 -1
  190. package/dist/esm/common/wasm/max.js +1 -1
  191. package/dist/esm/common/wasm/min.js +1 -1
  192. package/dist/esm/common/wasm/mul.js +1 -1
  193. package/dist/esm/common/wasm/neg.js +1 -1
  194. package/dist/esm/common/wasm/outer.js +1 -1
  195. package/dist/esm/common/wasm/pad.js +1 -1
  196. package/dist/esm/common/wasm/partition.js +1 -1
  197. package/dist/esm/common/wasm/power.js +1 -1
  198. package/dist/esm/common/wasm/qr.js +1 -1
  199. package/dist/esm/common/wasm/reciprocal.js +1 -1
  200. package/dist/esm/common/wasm/reduce_all.js +1 -1
  201. package/dist/esm/common/wasm/reduce_any.js +1 -1
  202. package/dist/esm/common/wasm/reduce_argmax.js +1 -1
  203. package/dist/esm/common/wasm/reduce_argmin.js +1 -1
  204. package/dist/esm/common/wasm/reduce_count_nz.js +1 -1
  205. package/dist/esm/common/wasm/reduce_max.js +1 -1
  206. package/dist/esm/common/wasm/reduce_mean.js +1 -1
  207. package/dist/esm/common/wasm/reduce_min.js +1 -1
  208. package/dist/esm/common/wasm/reduce_nanmax.js +1 -1
  209. package/dist/esm/common/wasm/reduce_nanmin.js +1 -1
  210. package/dist/esm/common/wasm/reduce_nansum.js +1 -1
  211. package/dist/esm/common/wasm/reduce_prod.js +1 -1
  212. package/dist/esm/common/wasm/reduce_quantile.js +1 -1
  213. package/dist/esm/common/wasm/reduce_std.js +1 -1
  214. package/dist/esm/common/wasm/reduce_sum.js +1 -1
  215. package/dist/esm/common/wasm/reduce_var.js +1 -1
  216. package/dist/esm/common/wasm/repeat.js +1 -1
  217. package/dist/esm/common/wasm/right_shift.js +1 -1
  218. package/dist/esm/common/wasm/rng.js +1 -1
  219. package/dist/esm/common/wasm/roll.js +1 -1
  220. package/dist/esm/common/wasm/runtime.js +1 -1
  221. package/dist/esm/common/wasm/searchsorted.js +1 -1
  222. package/dist/esm/common/wasm/sign.js +1 -1
  223. package/dist/esm/common/wasm/signbit.js +1 -0
  224. package/dist/esm/common/wasm/sin.js +1 -0
  225. package/dist/esm/common/wasm/sinh.js +1 -1
  226. package/dist/esm/common/wasm/sort.js +1 -1
  227. package/dist/esm/common/wasm/sqrt.js +1 -1
  228. package/dist/esm/common/wasm/square.js +1 -1
  229. package/dist/esm/common/wasm/sub.js +1 -1
  230. package/dist/esm/common/wasm/svd.js +1 -1
  231. package/dist/esm/common/wasm/tan.js +1 -1
  232. package/dist/esm/common/wasm/tanh.js +1 -1
  233. package/dist/esm/common/wasm/tile.js +1 -1
  234. package/dist/esm/common/wasm/unravel_index.js +1 -0
  235. package/dist/esm/common/wasm/vdot.js +1 -1
  236. package/dist/esm/common/wasm/vecdot.js +1 -1
  237. package/dist/esm/common/wasm/vecmat.js +1 -1
  238. package/dist/esm/common/wasm/vector_norm.js +1 -0
  239. package/dist/esm/core/advanced.js +1 -1
  240. package/dist/esm/core/creation.js +1 -1
  241. package/dist/esm/core/index.js +1 -1
  242. package/dist/esm/core/linalg.js +1 -1
  243. package/dist/esm/core/polynomial.js +1 -1
  244. package/dist/esm/core/reduction.js +1 -1
  245. package/dist/esm/core/shape-extra.js +1 -1
  246. package/dist/esm/core/statistics.js +1 -1
  247. package/dist/esm/full/index.js +1 -1
  248. package/dist/esm/full/ndarray.js +1 -1
  249. package/dist/esm/index.js +1 -1
  250. package/dist/esm/io/npy/parser.js +1 -1
  251. package/dist/esm/io/zip/reader.js +1 -1
  252. package/dist/numpy-ts.browser.js +6 -6
  253. package/dist/types/common/dtype.d.ts +46 -0
  254. package/dist/types/common/internal/indexing.d.ts +9 -0
  255. package/dist/types/common/ndarray-core.d.ts +20 -0
  256. package/dist/types/common/ops/advanced.d.ts +17 -2
  257. package/dist/types/common/ops/complex.d.ts +19 -1
  258. package/dist/types/common/ops/linalg.d.ts +1 -1
  259. package/dist/types/common/ops/reduction.d.ts +2 -2
  260. package/dist/types/common/ops/sets.d.ts +2 -1
  261. package/dist/types/common/ops/shape.d.ts +2 -2
  262. package/dist/types/common/ops/statistics.d.ts +2 -1
  263. package/dist/types/common/storage.d.ts +54 -2
  264. package/dist/types/common/wasm/all_finite.d.ts +8 -0
  265. package/dist/types/common/wasm/arccos.d.ts +4 -2
  266. package/dist/types/common/wasm/arcsin.d.ts +4 -2
  267. package/dist/types/common/wasm/arctan.d.ts +4 -2
  268. package/dist/types/common/wasm/arctan2.d.ts +17 -0
  269. package/dist/types/common/wasm/argpartition.d.ts +8 -3
  270. package/dist/types/common/wasm/argsort.d.ts +8 -3
  271. package/dist/types/common/wasm/bins/abs.wasm.d.ts +1 -0
  272. package/dist/types/common/wasm/bins/all_finite.wasm.d.ts +4 -0
  273. package/dist/types/common/wasm/bins/alloc.wasm.d.ts +6 -0
  274. package/dist/types/common/wasm/bins/arccos.wasm.d.ts +8 -2
  275. package/dist/types/common/wasm/bins/arcsin.wasm.d.ts +8 -2
  276. package/dist/types/common/wasm/bins/arctan.wasm.d.ts +8 -2
  277. package/dist/types/common/wasm/bins/arctan2.wasm.d.ts +11 -0
  278. package/dist/types/common/wasm/bins/convolve.wasm.d.ts +6 -0
  279. package/dist/types/common/wasm/bins/copysign.wasm.d.ts +2 -0
  280. package/dist/types/common/wasm/bins/correlate.wasm.d.ts +6 -0
  281. package/dist/types/common/wasm/bins/cos.wasm.d.ts +8 -0
  282. package/dist/types/common/wasm/bins/cosh.wasm.d.ts +8 -2
  283. package/dist/types/common/wasm/bins/divmod.wasm.d.ts +11 -0
  284. package/dist/types/common/wasm/bins/dot_float-relaxed.wasm.d.ts +5 -0
  285. package/dist/types/common/wasm/bins/dot_float.wasm.d.ts +5 -0
  286. package/dist/types/common/wasm/bins/dot_int.wasm.d.ts +5 -0
  287. package/dist/types/common/wasm/bins/exp.wasm.d.ts +8 -2
  288. package/dist/types/common/wasm/bins/exp2.wasm.d.ts +8 -2
  289. package/dist/types/common/wasm/bins/fft.wasm.d.ts +6 -0
  290. package/dist/types/common/wasm/bins/frexp.wasm.d.ts +1 -0
  291. package/dist/types/common/wasm/bins/gather.wasm.d.ts +0 -1
  292. package/dist/types/common/wasm/bins/gcd.wasm.d.ts +8 -0
  293. package/dist/types/common/wasm/bins/indices.wasm.d.ts +6 -2
  294. package/dist/types/common/wasm/bins/inner_float-relaxed.wasm.d.ts +5 -0
  295. package/dist/types/common/wasm/bins/inner_float.wasm.d.ts +5 -0
  296. package/dist/types/common/wasm/bins/inner_int.wasm.d.ts +5 -0
  297. package/dist/types/common/wasm/bins/isfinite.wasm.d.ts +4 -0
  298. package/dist/types/common/wasm/bins/isnan.wasm.d.ts +4 -0
  299. package/dist/types/common/wasm/bins/lexsort.wasm.d.ts +4 -4
  300. package/dist/types/common/wasm/bins/logical_and.wasm.d.ts +2 -0
  301. package/dist/types/common/wasm/bins/logical_not.wasm.d.ts +1 -0
  302. package/dist/types/common/wasm/bins/logical_or.wasm.d.ts +2 -0
  303. package/dist/types/common/wasm/bins/logical_xor.wasm.d.ts +2 -0
  304. package/dist/types/common/wasm/bins/lu.wasm.d.ts +7 -0
  305. package/dist/types/common/wasm/bins/matmul_float-relaxed.wasm.d.ts +5 -0
  306. package/dist/types/common/wasm/bins/matmul_float.wasm.d.ts +5 -0
  307. package/dist/types/common/wasm/bins/matmul_int.wasm.d.ts +5 -0
  308. package/dist/types/common/wasm/bins/matvec_float-relaxed.wasm.d.ts +5 -0
  309. package/dist/types/common/wasm/bins/matvec_float.wasm.d.ts +5 -0
  310. package/dist/types/common/wasm/bins/matvec_int.wasm.d.ts +5 -0
  311. package/dist/types/common/wasm/bins/neg.wasm.d.ts +1 -0
  312. package/dist/types/common/wasm/bins/qr.wasm.d.ts +0 -1
  313. package/dist/types/common/wasm/bins/reciprocal.wasm.d.ts +8 -4
  314. package/dist/types/common/wasm/bins/reduce_argmax.wasm.d.ts +8 -0
  315. package/dist/types/common/wasm/bins/reduce_argmin.wasm.d.ts +8 -0
  316. package/dist/types/common/wasm/bins/reduce_max.wasm.d.ts +1 -0
  317. package/dist/types/common/wasm/bins/reduce_min.wasm.d.ts +1 -0
  318. package/dist/types/common/wasm/bins/reduce_prod.wasm.d.ts +2 -0
  319. package/dist/types/common/wasm/bins/reduce_sum.wasm.d.ts +8 -2
  320. package/dist/types/common/wasm/bins/rng.wasm.d.ts +0 -3
  321. package/dist/types/common/wasm/bins/sign.wasm.d.ts +1 -0
  322. package/dist/types/common/wasm/bins/signbit.wasm.d.ts +8 -0
  323. package/dist/types/common/wasm/bins/sin.wasm.d.ts +11 -0
  324. package/dist/types/common/wasm/bins/sinh.wasm.d.ts +8 -2
  325. package/dist/types/common/wasm/bins/sort.wasm.d.ts +4 -4
  326. package/dist/types/common/wasm/bins/sqrt.wasm.d.ts +2 -2
  327. package/dist/types/common/wasm/bins/svd.wasm.d.ts +1 -0
  328. package/dist/types/common/wasm/bins/tan.wasm.d.ts +8 -0
  329. package/dist/types/common/wasm/bins/tanh.wasm.d.ts +8 -2
  330. package/dist/types/common/wasm/bins/unravel_index.wasm.d.ts +4 -0
  331. package/dist/types/common/wasm/bins/vecdot_float-relaxed.wasm.d.ts +5 -0
  332. package/dist/types/common/wasm/bins/vecdot_float.wasm.d.ts +5 -0
  333. package/dist/types/common/wasm/bins/vecdot_int.wasm.d.ts +5 -0
  334. package/dist/types/common/wasm/bins/vecmat_float-relaxed.wasm.d.ts +5 -0
  335. package/dist/types/common/wasm/bins/vecmat_float.wasm.d.ts +5 -0
  336. package/dist/types/common/wasm/bins/vecmat_int.wasm.d.ts +5 -0
  337. package/dist/types/common/wasm/bins/vector_norm-relaxed.wasm.d.ts +3 -0
  338. package/dist/types/common/wasm/bins/vector_norm.wasm.d.ts +3 -0
  339. package/dist/types/common/wasm/config.d.ts +25 -0
  340. package/dist/types/common/wasm/convolve.d.ts +1 -1
  341. package/dist/types/common/wasm/cos.d.ts +4 -2
  342. package/dist/types/common/wasm/cosh.d.ts +4 -2
  343. package/dist/types/common/wasm/detect.d.ts +17 -0
  344. package/dist/types/common/wasm/divide.d.ts +4 -0
  345. package/dist/types/common/wasm/divmod.d.ts +13 -0
  346. package/dist/types/common/wasm/exp.d.ts +4 -2
  347. package/dist/types/common/wasm/exp2.d.ts +4 -2
  348. package/dist/types/common/wasm/fft.d.ts +5 -5
  349. package/dist/types/common/wasm/frexp.d.ts +1 -0
  350. package/dist/types/common/wasm/gather.d.ts +4 -0
  351. package/dist/types/common/wasm/gcd.d.ts +1 -0
  352. package/dist/types/common/wasm/hypot.d.ts +4 -2
  353. package/dist/types/common/wasm/indices.d.ts +2 -1
  354. package/dist/types/common/wasm/isfinite.d.ts +7 -0
  355. package/dist/types/common/wasm/isnan.d.ts +7 -0
  356. package/dist/types/common/wasm/lexsort.d.ts +3 -1
  357. package/dist/types/common/wasm/logaddexp.d.ts +4 -2
  358. package/dist/types/common/wasm/lu.d.ts +27 -0
  359. package/dist/types/common/wasm/partition.d.ts +3 -1
  360. package/dist/types/common/wasm/reduce_argmax.d.ts +5 -0
  361. package/dist/types/common/wasm/reduce_argmin.d.ts +5 -0
  362. package/dist/types/common/wasm/reduce_prod.d.ts +4 -0
  363. package/dist/types/common/wasm/reduce_quantile.d.ts +11 -3
  364. package/dist/types/common/wasm/reduce_sum.d.ts +10 -0
  365. package/dist/types/common/wasm/rng.d.ts +10 -0
  366. package/dist/types/common/wasm/runtime.d.ts +113 -30
  367. package/dist/types/common/wasm/searchsorted.d.ts +3 -1
  368. package/dist/types/common/wasm/signbit.d.ts +14 -0
  369. package/dist/types/common/wasm/sin.d.ts +17 -0
  370. package/dist/types/common/wasm/sinh.d.ts +4 -2
  371. package/dist/types/common/wasm/sort.d.ts +4 -1
  372. package/dist/types/common/wasm/sqrt.d.ts +4 -2
  373. package/dist/types/common/wasm/svd.d.ts +6 -0
  374. package/dist/types/common/wasm/tan.d.ts +4 -2
  375. package/dist/types/common/wasm/tanh.d.ts +4 -2
  376. package/dist/types/common/wasm/unravel_index.d.ts +12 -0
  377. package/dist/types/common/wasm/vector_norm.d.ts +11 -0
  378. package/dist/types/core/advanced.d.ts +10 -2
  379. package/dist/types/core/creation.d.ts +1 -1
  380. package/dist/types/core/index.d.ts +2 -1
  381. package/dist/types/core/linalg.d.ts +1 -1
  382. package/dist/types/core/sets.d.ts +4 -1
  383. package/dist/types/core/statistics.d.ts +2 -1
  384. package/dist/types/full/index.d.ts +18 -5
  385. package/dist/types/index.d.ts +3 -1
  386. package/package.json +36 -43
  387. package/dist/esm/common/wasm/bins/dot.wasm.js +0 -1
  388. package/dist/esm/common/wasm/bins/flip.wasm.js +0 -1
  389. package/dist/esm/common/wasm/bins/inner.wasm.js +0 -1
  390. package/dist/esm/common/wasm/bins/matmul.wasm.js +0 -1
  391. package/dist/esm/common/wasm/bins/matvec.wasm.js +0 -1
  392. package/dist/esm/common/wasm/bins/reduce_quantile.wasm.js +0 -1
  393. package/dist/esm/common/wasm/bins/rot90.wasm.js +0 -1
  394. package/dist/esm/common/wasm/bins/vecdot.wasm.js +0 -1
  395. package/dist/esm/common/wasm/bins/vecmat.wasm.js +0 -1
  396. package/dist/esm/common/wasm/flip.js +0 -1
  397. package/dist/esm/common/wasm/rot90.js +0 -1
  398. package/dist/types/common/wasm/bins/dot.wasm.d.ts +0 -9
  399. package/dist/types/common/wasm/bins/flip.wasm.d.ts +0 -7
  400. package/dist/types/common/wasm/bins/inner.wasm.d.ts +0 -9
  401. package/dist/types/common/wasm/bins/matmul.wasm.d.ts +0 -9
  402. package/dist/types/common/wasm/bins/matvec.wasm.d.ts +0 -9
  403. package/dist/types/common/wasm/bins/reduce_quantile.wasm.d.ts +0 -2
  404. package/dist/types/common/wasm/bins/rot90.wasm.d.ts +0 -7
  405. package/dist/types/common/wasm/bins/vecdot.wasm.d.ts +0 -9
  406. package/dist/types/common/wasm/bins/vecmat.wasm.d.ts +0 -9
  407. package/dist/types/common/wasm/flip.d.ts +0 -13
  408. package/dist/types/common/wasm/rot90.d.ts +0 -14
@@ -1 +1 @@
1
- import{ArrayStorage as d}from"../storage.js";import{elementwiseUnaryOp as D,elementwiseBinaryOp as T,broadcastShapes as q}from"../internal/compute.js";import{isBigIntDType as b,isComplexDType as M,throwIfComplex as N}from"../dtype.js";import{wasmSqrt as R}from"../wasm/sqrt.js";import{wasmPower as I,wasmPowerScalar as V}from"../wasm/power.js";import{wasmExp as L}from"../wasm/exp.js";import{wasmExp2 as P}from"../wasm/exp2.js";import{wasmLogaddexp as B,wasmLogaddexpScalar as O}from"../wasm/logaddexp.js";function ot(t){const r=t.dtype;if(M(r)){const u=Array.from(t.shape),y=t.size,p=t.isCContiguous,l=d.zeros(u,r),i=l.data;if(p){const n=t.data,e=t.offset;for(let a=0;a<y;a++){const o=n[(e+a)*2],c=n[(e+a)*2+1],s=Math.sqrt(o*o+c*c),f=Math.sqrt((s+o)/2),g=(c>=0?1:-1)*Math.sqrt((s-o)/2);i[a*2]=f,i[a*2+1]=g}}else for(let n=0;n<y;n++){const e=t.iget(n),a=e.re,o=e.im,c=Math.sqrt(a*a+o*o),s=Math.sqrt((c+a)/2),f=(o>=0?1:-1)*Math.sqrt((c-a)/2);i[n*2]=s,i[n*2+1]=f}return l}const m=R(t);return m||D(t,Math.sqrt,!1)}function at(t,r){if(typeof r=="number")return G(t,r);const m=M(t.dtype),u=M(r.dtype);if(m||u)return E(t,r);const y=I(t,r);return y||T(t,r,Math.pow,"power")}function E(t,r){const m=M(t.dtype),u=M(r.dtype),y=t.dtype==="complex128"||r.dtype==="complex128"||r.dtype==="float64"?"complex128":"complex64",p=Array.from(t.shape),l=t.size,i=d.zeros(p,y),n=i.data,e=t.isCContiguous,a=r.isCContiguous,o=t.offset,c=r.offset;for(let s=0;s<l;s++){let f,g;if(m)if(e){const S=t.data;f=S[(o+s)*2],g=S[(o+s)*2+1]}else{const S=t.iget(s);f=S.re,g=S.im}else f=Number(t.iget(s)),g=0;let h,A;if(u)if(a){const S=r.data;h=S[(c+s)*2],A=S[(c+s)*2+1]}else{const S=r.iget(s);h=S.re,A=S.im}else h=Number(r.iget(s)),A=0;const C=Math.sqrt(f*f+g*g),z=Math.atan2(g,f),w=Math.log(C),F=h*w-A*z,x=h*z+A*w,v=Math.exp(F);n[s*2]=v*Math.cos(x),n[s*2+1]=v*Math.sin(x)}return i}function G(t,r){const m=t.dtype,u=Array.from(t.shape),y=t.data,p=t.size,l=t.offset,i=t.isCContiguous;if(!M(m)){const s=V(t,r);if(s)return s}if(M(m)){const s=d.zeros(u,m),f=s.data;if(i){const g=y;for(let h=0;h<p;h++){const A=g[(l+h)*2],C=g[(l+h)*2+1],z=Math.sqrt(A*A+C*C),w=Math.atan2(C,A),F=Math.pow(z,r),x=w*r;f[h*2]=F*Math.cos(x),f[h*2+1]=F*Math.sin(x)}}else for(let g=0;g<p;g++){const h=t.iget(g),A=h.re,C=h.im,z=Math.sqrt(A*A+C*C),w=Math.atan2(C,A),F=Math.pow(z,r),x=w*r;f[g*2]=F*Math.cos(x),f[g*2+1]=F*Math.sin(x)}return s}const a=m!=="float32"&&m!=="float64"&&(r<0||!Number.isInteger(r))?"float64":m,o=d.zeros(u,a),c=o.data;if(b(m))if(b(a)&&Number.isInteger(r)&&r>=0)if(i){const s=y,f=c;for(let g=0;g<p;g++)f[g]=s[l+g]**BigInt(r)}else{const s=c;for(let f=0;f<p;f++)s[f]=t.iget(f)**BigInt(r)}else if(i)for(let s=0;s<p;s++)c[s]=Math.pow(Number(y[l+s]),r);else for(let s=0;s<p;s++)c[s]=Math.pow(Number(t.iget(s)),r);else if(i)for(let s=0;s<p;s++)c[s]=Math.pow(Number(y[l+s]),r);else for(let s=0;s<p;s++)c[s]=Math.pow(Number(t.iget(s)),r);return o}function rt(t){const r=t.dtype;if(M(r)){const u=Array.from(t.shape),y=t.size,p=t.isCContiguous,l=d.zeros(u,r),i=l.data;if(p){const n=t.data,e=t.offset;for(let a=0;a<y;a++){const o=n[(e+a)*2],c=n[(e+a)*2+1],s=Math.exp(o);i[a*2]=s*Math.cos(c),i[a*2+1]=s*Math.sin(c)}}else for(let n=0;n<y;n++){const e=t.iget(n),a=e.re,o=e.im,c=Math.exp(a);i[n*2]=c*Math.cos(o),i[n*2+1]=c*Math.sin(o)}return l}const m=L(t);return m||D(t,Math.exp,!1)}function st(t){const r=t.dtype;if(M(r)){const u=Array.from(t.shape),y=t.size,p=t.isCContiguous,l=Math.LN2,i=d.zeros(u,r),n=i.data;if(p){const e=t.data,a=t.offset;for(let o=0;o<y;o++){const c=e[(a+o)*2],s=e[(a+o)*2+1],f=Math.exp(c*l),g=s*l;n[o*2]=f*Math.cos(g),n[o*2+1]=f*Math.sin(g)}}else for(let e=0;e<y;e++){const a=t.iget(e),o=a.re,c=a.im,s=Math.exp(o*l),f=c*l;n[e*2]=s*Math.cos(f),n[e*2+1]=s*Math.sin(f)}return i}const m=P(t);return m||D(t,u=>Math.pow(2,u),!1)}function et(t){const r=t.dtype;if(M(r)){const m=Array.from(t.shape),u=t.size,y=t.isCContiguous,p=d.zeros(m,r),l=p.data;if(y){const i=t.data,n=t.offset;for(let e=0;e<u;e++){const a=i[(n+e)*2],o=i[(n+e)*2+1],c=Math.exp(a);l[e*2]=c*Math.cos(o)-1,l[e*2+1]=c*Math.sin(o)}}else for(let i=0;i<u;i++){const n=t.iget(i),e=n.re,a=n.im,o=Math.exp(e);l[i*2]=o*Math.cos(a)-1,l[i*2+1]=o*Math.sin(a)}return p}return D(t,Math.expm1,!1)}function nt(t){const r=t.dtype;if(M(r)){const m=Array.from(t.shape),u=t.size,y=t.isCContiguous,p=d.zeros(m,r),l=p.data;if(y){const i=t.data,n=t.offset;for(let e=0;e<u;e++){const a=i[(n+e)*2],o=i[(n+e)*2+1],c=Math.sqrt(a*a+o*o),s=Math.atan2(o,a);l[e*2]=Math.log(c),l[e*2+1]=s}}else for(let i=0;i<u;i++){const n=t.iget(i),e=n.re,a=n.im,o=Math.sqrt(e*e+a*a),c=Math.atan2(a,e);l[i*2]=Math.log(o),l[i*2+1]=c}return p}return D(t,Math.log,!1)}function ct(t){const r=t.dtype;if(M(r)){const m=Array.from(t.shape),u=t.size,y=t.isCContiguous,p=1/Math.LN2,l=d.zeros(m,r),i=l.data;if(y){const n=t.data,e=t.offset;for(let a=0;a<u;a++){const o=n[(e+a)*2],c=n[(e+a)*2+1],s=Math.sqrt(o*o+c*c),f=Math.atan2(c,o);i[a*2]=Math.log(s)*p,i[a*2+1]=f*p}}else for(let n=0;n<u;n++){const e=t.iget(n),a=e.re,o=e.im,c=Math.sqrt(a*a+o*o),s=Math.atan2(o,a);i[n*2]=Math.log(c)*p,i[n*2+1]=s*p}return l}return D(t,Math.log2,!1)}function it(t){const r=t.dtype;if(M(r)){const m=Array.from(t.shape),u=t.size,y=t.isCContiguous,p=1/Math.LN10,l=d.zeros(m,r),i=l.data;if(y){const n=t.data,e=t.offset;for(let a=0;a<u;a++){const o=n[(e+a)*2],c=n[(e+a)*2+1],s=Math.sqrt(o*o+c*c),f=Math.atan2(c,o);i[a*2]=Math.log(s)*p,i[a*2+1]=f*p}}else for(let n=0;n<u;n++){const e=t.iget(n),a=e.re,o=e.im,c=Math.sqrt(a*a+o*o),s=Math.atan2(o,a);i[n*2]=Math.log(c)*p,i[n*2+1]=s*p}return l}return D(t,Math.log10,!1)}function lt(t){const r=t.dtype;if(M(r)){const m=Array.from(t.shape),u=t.size,y=t.isCContiguous,p=d.zeros(m,r),l=p.data;if(y){const i=t.data,n=t.offset;for(let e=0;e<u;e++){const a=i[(n+e)*2],o=i[(n+e)*2+1],c=1+a,s=Math.sqrt(c*c+o*o),f=Math.atan2(o,c);l[e*2]=Math.log(s),l[e*2+1]=f}}else for(let i=0;i<u;i++){const n=t.iget(i),e=n.re,a=n.im,o=1+e,c=Math.sqrt(o*o+a*a),s=Math.atan2(a,o);l[i*2]=Math.log(c),l[i*2+1]=s}return p}return D(t,Math.log1p,!1)}function pt(t,r){return N(t.dtype,"logaddexp","logaddexp is not supported for complex numbers."),typeof r!="number"&&N(r.dtype,"logaddexp","logaddexp is not supported for complex numbers."),typeof r=="number"?_(t,r):U(t,r)}function U(t,r){const m=B(t,r);if(m)return m;const u=q(t.shape,r.shape),y=u.reduce((o,c)=>o*c,1),p=t.dtype,l=r.dtype,i=o=>o==="float32"||o==="int8"||o==="uint8"||o==="int16"||o==="uint16",n=i(p)&&i(l)?"float32":"float64",e=d.zeros(u,n),a=e.data;for(let o=0;o<y;o++){const c=(b(p),Number(t.iget(o))),s=(b(l),Number(r.iget(o))),f=Math.max(c,s),g=Math.min(c,s);a[o]=f+Math.log1p(Math.exp(g-f))}return e}function _(t,r){const m=O(t,r);if(m)return m;const u=t.dtype,y=Array.from(t.shape),p=t.size,l=t.isCContiguous,i=u==="float32"||u==="int8"||u==="uint8"||u==="int16"||u==="uint16"?"float32":"float64",n=d.zeros(y,i),e=n.data;if(l){const a=t.offset;for(let o=0;o<p;o++){const c=Number(t.data[a+o]),s=Math.max(c,r),f=Math.min(c,r);e[o]=s+Math.log1p(Math.exp(f-s))}}else for(let a=0;a<p;a++){const o=Number(t.iget(a)),c=Math.max(o,r),s=Math.min(o,r);e[a]=c+Math.log1p(Math.exp(s-c))}return n}function ft(t,r){return N(t.dtype,"logaddexp2","logaddexp2 is not supported for complex numbers."),typeof r!="number"&&N(r.dtype,"logaddexp2","logaddexp2 is not supported for complex numbers."),typeof r=="number"?k(t,r):j(t,r)}function j(t,r){const m=q(t.shape,r.shape),u=m.reduce((a,o)=>a*o,1),y=t.dtype,p=r.dtype,l=y==="float32"&&p==="float32"?"float32":"float64",i=d.zeros(m,l),n=i.data,e=Math.LOG2E;for(let a=0;a<u;a++){const o=(b(y),Number(t.iget(a))),c=(b(p),Number(r.iget(a))),s=Math.max(o,c),f=Math.min(o,c);n[a]=s+Math.log1p(Math.pow(2,f-s))*e}return i}function k(t,r){const m=t.dtype,u=Array.from(t.shape),y=t.size,p=t.isCContiguous,l=m==="float32"?"float32":"float64",i=d.zeros(u,l),n=i.data,e=Math.LOG2E;if(p){const a=t.offset;for(let o=0;o<y;o++){const c=Number(t.data[a+o]),s=Math.max(c,r),f=Math.min(c,r);n[o]=s+Math.log1p(Math.pow(2,f-s))*e}}else for(let a=0;a<y;a++){const o=Number(t.iget(a)),c=Math.max(o,r),s=Math.min(o,r);n[a]=c+Math.log1p(Math.pow(2,s-c))*e}return i}export{rt as exp,st as exp2,et as expm1,nt as log,it as log10,lt as log1p,ct as log2,pt as logaddexp,ft as logaddexp2,at as power,ot as sqrt};
1
+ import{ArrayStorage as h}from"../storage.js";import{elementwiseUnaryOp as F,elementwiseBinaryOp as U,broadcastShapes as V}from"../internal/compute.js";import{isBigIntDType as w,isComplexDType as M,throwIfComplex as q,mathResultDtype as v,promoteDTypes as I}from"../dtype.js";import{wasmSqrt as G}from"../wasm/sqrt.js";function L(t){return x(t,"int8")}function x(t,o){const y=h.empty(Array.from(t.shape),o),f=t.data,u=t.offset,p=t.size;if(w(o)){const l=y.data;for(let s=0;s<p;s++)l[s]=BigInt(f[u+s])}else if(M(o)){const l=y.data;for(let s=0;s<p;s++)l[s*2]=f[u+s],l[s*2+1]=0}else{const l=y.data;for(let s=0;s<p;s++)l[s]=f[u+s]}return y}function T(t){const o=v("bool"),y=h.empty(Array.from(t.shape),o),f=t.data,u=y.data,p=t.offset;for(let l=0;l<t.size;l++)u[l]=f[p+l];return y}import{wasmPower as _,wasmPowerScalar as k}from"../wasm/power.js";import{wasmExp as j}from"../wasm/exp.js";import{wasmExp2 as H}from"../wasm/exp2.js";import{wasmLogaddexp as J,wasmLogaddexpScalar as K}from"../wasm/logaddexp.js";function lt(t){const o=t.dtype;if(M(o)){const f=Array.from(t.shape),u=t.size,p=t.isCContiguous,l=h.empty(f,o),s=l.data;if(p){const n=t.data,c=t.offset;for(let r=0;r<u;r++){const a=n[(c+r)*2],i=n[(c+r)*2+1],e=Math.sqrt(a*a+i*i),m=Math.sqrt((e+a)/2),g=(i>=0?1:-1)*Math.sqrt((e-a)/2);s[r*2]=m,s[r*2+1]=g}}else for(let n=0;n<u;n++){const c=t.iget(n),r=c.re,a=c.im,i=Math.sqrt(r*r+a*a),e=Math.sqrt((i+r)/2),m=(a>=0?1:-1)*Math.sqrt((i-r)/2);s[n*2]=e,s[n*2+1]=m}return l}const y=G(t);return y||F(t,Math.sqrt,!1)}function R(t,o){if(t.dtype==="bool"&&typeof o!="number"&&o.dtype!=="bool")return R(x(t,o.dtype),o);if(t.dtype==="bool"){const p=L(t);return R(p,typeof o=="number"?o:o.dtype==="bool"?L(o):o)}if(typeof o!="number"&&o.dtype==="bool")return R(t,x(o,t.dtype));if(typeof o=="number")return P(t,o);const y=M(t.dtype),f=M(o.dtype);if(y||f)return Q(t,o);if(o.size===1&&t.dtype===o.dtype)return P(t,Number(o.iget(0)));const u=_(t,o);return u||U(t,o,Math.pow,"power")}function Q(t,o){const y=M(t.dtype),f=M(o.dtype),u=I(t.dtype,o.dtype),p=Array.from(t.shape),l=t.size,s=h.empty(p,u),n=s.data,c=t.isCContiguous,r=o.isCContiguous,a=t.offset,i=o.offset;for(let e=0;e<l;e++){let m,g;if(y)if(c){const S=t.data;m=S[(a+e)*2],g=S[(a+e)*2+1]}else{const S=t.iget(e);m=S.re,g=S.im}else m=Number(t.iget(e)),g=0;let d,A;if(f)if(r){const S=o.data;d=S[(i+e)*2],A=S[(i+e)*2+1]}else{const S=o.iget(e);d=S.re,A=S.im}else d=Number(o.iget(e)),A=0;if(m===0&&g===0){d>0&&A===0?(n[e*2]=0,n[e*2+1]=0):d===0&&A===0?(n[e*2]=1,n[e*2+1]=0):(n[e*2]=NaN,n[e*2+1]=NaN);continue}const D=Math.sqrt(m*m+g*g),z=Math.atan2(g,m),N=Math.log(D),b=d*N-A*z,C=d*z+A*N,B=Math.exp(b);n[e*2]=B*Math.cos(C),n[e*2+1]=B*Math.sin(C)}return s}function P(t,o){const y=t.dtype,f=Array.from(t.shape),u=t.data,p=t.size,l=t.offset,s=t.isCContiguous;if(!M(y)){const e=k(t,o);if(e)return e}if(M(y)){const e=h.empty(f,y),m=e.data;if(s){const g=u;for(let d=0;d<p;d++){const A=g[(l+d)*2],D=g[(l+d)*2+1],z=Math.sqrt(A*A+D*D),N=Math.atan2(D,A),b=Math.pow(z,o),C=N*o;m[d*2]=b*Math.cos(C),m[d*2+1]=b*Math.sin(C)}}else for(let g=0;g<p;g++){const d=t.iget(g),A=d.re,D=d.im,z=Math.sqrt(A*A+D*D),N=Math.atan2(D,A),b=Math.pow(z,o),C=N*o;m[g*2]=b*Math.cos(C),m[g*2+1]=b*Math.sin(C)}return e}const r=y!=="float32"&&y!=="float64"&&(o<0||!Number.isInteger(o))?"float64":y,a=h.empty(f,r),i=a.data;if(w(y))if(w(r)&&Number.isInteger(o)&&o>=0)if(s){const e=u,m=i;for(let g=0;g<p;g++)m[g]=e[l+g]**BigInt(o)}else{const e=i;for(let m=0;m<p;m++)e[m]=t.iget(m)**BigInt(o)}else if(s)for(let e=0;e<p;e++)i[e]=Math.pow(Number(u[l+e]),o);else for(let e=0;e<p;e++)i[e]=Math.pow(Number(t.iget(e)),o);else if(s)for(let e=0;e<p;e++)i[e]=Math.pow(Number(u[l+e]),o);else for(let e=0;e<p;e++)i[e]=Math.pow(Number(t.iget(e)),o);return a}function pt(t){const o=t.dtype;if(M(o)){const f=Array.from(t.shape),u=t.size,p=t.isCContiguous,l=h.empty(f,o),s=l.data;if(p){const n=t.data,c=t.offset;for(let r=0;r<u;r++){const a=n[(c+r)*2],i=n[(c+r)*2+1],e=Math.exp(a);s[r*2]=e*Math.cos(i),s[r*2+1]=e*Math.sin(i)}}else for(let n=0;n<u;n++){const c=t.iget(n),r=c.re,a=c.im,i=Math.exp(r);s[n*2]=i*Math.cos(a),s[n*2+1]=i*Math.sin(a)}return l}const y=j(t);return y||F(t,Math.exp,!1)}function yt(t){const o=t.dtype;if(M(o)){const f=Array.from(t.shape),u=t.size,p=t.isCContiguous,l=Math.LN2,s=h.empty(f,o),n=s.data;if(p){const c=t.data,r=t.offset;for(let a=0;a<u;a++){const i=c[(r+a)*2],e=c[(r+a)*2+1],m=Math.exp(i*l),g=e*l;n[a*2]=m*Math.cos(g),n[a*2+1]=m*Math.sin(g)}}else for(let c=0;c<u;c++){const r=t.iget(c),a=r.re,i=r.im,e=Math.exp(a*l),m=i*l;n[c*2]=e*Math.cos(m),n[c*2+1]=e*Math.sin(m)}return s}const y=H(t);return y||F(t,f=>Math.pow(2,f),!1)}function ft(t){const o=t.dtype;if(M(o)){const y=Array.from(t.shape),f=t.size,u=t.isCContiguous,p=h.empty(y,o),l=p.data;if(u){const s=t.data,n=t.offset;for(let c=0;c<f;c++){const r=s[(n+c)*2],a=s[(n+c)*2+1],i=Math.exp(r);l[c*2]=i*Math.cos(a)-1,l[c*2+1]=i*Math.sin(a)}}else for(let s=0;s<f;s++){const n=t.iget(s),c=n.re,r=n.im,a=Math.exp(c);l[s*2]=a*Math.cos(r)-1,l[s*2+1]=a*Math.sin(r)}return p}return F(t,Math.expm1,!1)}function ut(t){const o=t.dtype;if(M(o)){const y=Array.from(t.shape),f=t.size,u=t.isCContiguous,p=h.empty(y,o),l=p.data;if(u){const s=t.data,n=t.offset;for(let c=0;c<f;c++){const r=s[(n+c)*2],a=s[(n+c)*2+1],i=Math.sqrt(r*r+a*a),e=Math.atan2(a,r);l[c*2]=Math.log(i),l[c*2+1]=e}}else for(let s=0;s<f;s++){const n=t.iget(s),c=n.re,r=n.im,a=Math.sqrt(c*c+r*r),i=Math.atan2(r,c);l[s*2]=Math.log(a),l[s*2+1]=i}return p}return F(t,Math.log,!1)}function mt(t){const o=t.dtype;if(M(o)){const y=Array.from(t.shape),f=t.size,u=t.isCContiguous,p=1/Math.LN2,l=h.empty(y,o),s=l.data;if(u){const n=t.data,c=t.offset;for(let r=0;r<f;r++){const a=n[(c+r)*2],i=n[(c+r)*2+1],e=Math.sqrt(a*a+i*i),m=Math.atan2(i,a);s[r*2]=Math.log(e)*p,s[r*2+1]=m*p}}else for(let n=0;n<f;n++){const c=t.iget(n),r=c.re,a=c.im,i=Math.sqrt(r*r+a*a),e=Math.atan2(a,r);s[n*2]=Math.log(i)*p,s[n*2+1]=e*p}return l}return F(t,Math.log2,!1)}function gt(t){const o=t.dtype;if(M(o)){const y=Array.from(t.shape),f=t.size,u=t.isCContiguous,p=1/Math.LN10,l=h.empty(y,o),s=l.data;if(u){const n=t.data,c=t.offset;for(let r=0;r<f;r++){const a=n[(c+r)*2],i=n[(c+r)*2+1],e=Math.sqrt(a*a+i*i),m=Math.atan2(i,a);s[r*2]=Math.log(e)*p,s[r*2+1]=m*p}}else for(let n=0;n<f;n++){const c=t.iget(n),r=c.re,a=c.im,i=Math.sqrt(r*r+a*a),e=Math.atan2(a,r);s[n*2]=Math.log(i)*p,s[n*2+1]=e*p}return l}return F(t,Math.log10,!1)}function dt(t){const o=t.dtype;if(M(o)){const y=Array.from(t.shape),f=t.size,u=t.isCContiguous,p=h.empty(y,o),l=p.data;if(u){const s=t.data,n=t.offset;for(let c=0;c<f;c++){const r=s[(n+c)*2],a=s[(n+c)*2+1],i=1+r,e=Math.sqrt(i*i+a*a),m=Math.atan2(a,i);l[c*2]=Math.log(e),l[c*2+1]=m}}else for(let s=0;s<f;s++){const n=t.iget(s),c=n.re,r=n.im,a=1+c,i=Math.sqrt(a*a+r*r),e=Math.atan2(r,a);l[s*2]=Math.log(i),l[s*2+1]=e}return p}return F(t,Math.log1p,!1)}function O(t,o){return t.dtype==="bool"?O(T(t),typeof o=="number"?o:o.dtype==="bool"?T(o):o):typeof o!="number"&&o.dtype==="bool"?O(t,T(o)):(q(t.dtype,"logaddexp","logaddexp is not supported for complex numbers."),typeof o!="number"&&q(o.dtype,"logaddexp","logaddexp is not supported for complex numbers."),typeof o=="number"?X(t,o):W(t,o))}function W(t,o){const y=J(t,o);if(y)return y;const f=V(t.shape,o.shape),u=f.reduce((r,a)=>r*a,1),p=t.dtype,l=o.dtype,s=v(I(p,l)),n=h.empty(f,s),c=n.data;for(let r=0;r<u;r++){const a=(w(p),Number(t.iget(r))),i=(w(l),Number(o.iget(r))),e=Math.max(a,i),m=Math.min(a,i);c[r]=e+Math.log1p(Math.exp(m-e))}return n}function X(t,o){const y=K(t,o);if(y)return y;const f=t.dtype,u=Array.from(t.shape),p=t.size,l=t.isCContiguous,s=v(f),n=h.empty(u,s),c=n.data;if(l){const r=t.offset;for(let a=0;a<p;a++){const i=Number(t.data[r+a]),e=Math.max(i,o),m=Math.min(i,o);c[a]=e+Math.log1p(Math.exp(m-e))}}else for(let r=0;r<p;r++){const a=Number(t.iget(r)),i=Math.max(a,o),e=Math.min(a,o);c[r]=i+Math.log1p(Math.exp(e-i))}return n}function E(t,o){return t.dtype==="bool"?E(T(t),typeof o=="number"?o:o.dtype==="bool"?T(o):o):typeof o!="number"&&o.dtype==="bool"?E(t,T(o)):(q(t.dtype,"logaddexp2","logaddexp2 is not supported for complex numbers."),typeof o!="number"&&q(o.dtype,"logaddexp2","logaddexp2 is not supported for complex numbers."),typeof o=="number"?Z(t,o):Y(t,o))}function Y(t,o){const y=V(t.shape,o.shape),f=y.reduce((r,a)=>r*a,1),u=t.dtype,p=o.dtype,l=v(I(u,p)),s=h.empty(y,l),n=s.data,c=Math.LOG2E;for(let r=0;r<f;r++){const a=(w(u),Number(t.iget(r))),i=(w(p),Number(o.iget(r))),e=Math.max(a,i),m=Math.min(a,i);n[r]=e+Math.log1p(Math.pow(2,m-e))*c}return s}function Z(t,o){const y=t.dtype,f=Array.from(t.shape),u=t.size,p=t.isCContiguous,l=v(y),s=h.empty(f,l),n=s.data,c=Math.LOG2E;if(p){const r=t.offset;for(let a=0;a<u;a++){const i=Number(t.data[r+a]),e=Math.max(i,o),m=Math.min(i,o);n[a]=e+Math.log1p(Math.pow(2,m-e))*c}}else for(let r=0;r<u;r++){const a=Number(t.iget(r)),i=Math.max(a,o),e=Math.min(a,o);n[r]=i+Math.log1p(Math.pow(2,e-i))*c}return s}export{pt as exp,yt as exp2,ft as expm1,ut as log,gt as log10,dt as log1p,mt as log2,O as logaddexp,E as logaddexp2,R as power,lt as sqrt};
@@ -1 +1 @@
1
- import{ArrayStorage as S}from"../storage.js";import{Complex as H}from"../complex.js";import{isComplexDType as I}from"../dtype.js";import{roll as C}from"./shape.js";import{wasmFft as E,wasmIfft as P,wasmRfft as $,wasmIrfft as W,wasmFft2 as G,wasmFftBatch as N,wasmRfftBatch as J,wasmIrfftBatch as Q,wasmRfft2 as V,wasmIrfft2 as X,wasmIrfftn3d as Y}from"../wasm/fft.js";import{wasmConfig as D}from"../wasm/config.js";function Z(t,e,a){const r=t.length;r!==0&&r!==1&&((r&r-1)===0?R(t,e,a):tt(t,e,a))}const x=new Map;function v(t,e){const a=`${t}_${e}`;let r=x.get(a);if(r)return r;const l=new Float64Array(t/2),n=new Float64Array(t/2),f=e?1:-1;for(let o=0;o<t/2;o++){const c=f*2*Math.PI*o/t;l[o]=Math.cos(c),n[o]=Math.sin(c)}if(r={cos:l,sin:n},x.set(a,r),x.size>100){const o=x.keys().next().value;x.delete(o)}return r}function R(t,e,a){const r=t.length;let l=0;for(let o=0;o<r-1;o++){if(o<l){let d=t[o];t[o]=t[l],t[l]=d,d=e[o],e[o]=e[l],e[l]=d}let c=r>>1;for(;c<=l;)l-=c,c>>=1;l+=c}const{cos:n,sin:f}=v(r,a);for(let o=2;o<=r;o*=2){const c=o>>1,d=r/o;for(let u=0;u<r;u+=o)for(let i=0,s=0;i<c;i++,s+=d){const p=n[s],A=f[s],h=u+i,y=u+i+c,b=t[h],g=e[h],w=t[y],m=e[y],k=p*w-A*m,F=p*m+A*w;t[h]=b+k,e[h]=g+F,t[y]=b-k,e[y]=g-F}}if(a){const o=1/r;for(let c=0;c<r;c++)t[c]=t[c]*o,e[c]=e[c]*o}}function tt(t,e,a){const r=t.length;let l=1;for(;l<2*r-1;)l*=2;const n=a?1:-1,f=new Float64Array(r),o=new Float64Array(r);for(let s=0;s<r;s++){const p=n*Math.PI*s*s/r;f[s]=Math.cos(p),o[s]=Math.sin(p)}const c=new Float64Array(l),d=new Float64Array(l);for(let s=0;s<r;s++){const p=f[s],A=o[s];c[s]=t[s]*p-e[s]*A,d[s]=e[s]*p+t[s]*A}const u=new Float64Array(l),i=new Float64Array(l);u[0]=f[0],i[0]=-o[0];for(let s=1;s<r;s++)u[s]=f[s],i[s]=-o[s],u[l-s]=f[s],i[l-s]=-o[s];R(c,d,!1),R(u,i,!1);for(let s=0;s<l;s++){const p=c[s],A=d[s],h=u[s],y=i[s];c[s]=p*h-A*y,d[s]=p*y+A*h}R(c,d,!0);for(let s=0;s<r;s++){const p=c[s],A=d[s],h=f[s],y=o[s];t[s]=p*h-A*y,e[s]=A*h+p*y}if(a)for(let s=0;s<r;s++)t[s]=t[s]/r,e[s]=e[s]/r}function U(t,e,a=-1,r="backward"){if(e===void 0&&(a===-1||a===t.ndim-1)&&r==="backward"&&t.ndim===1){const l=I(t.dtype)?t:M(t),n=E(l);if(n)return n}return L(t,e!==void 0?[e]:void 0,[a],r,!1)}function q(t,e,a=-1,r="backward"){if(e===void 0&&(a===-1||a===t.ndim-1)&&r==="backward"&&t.ndim===1){const l=I(t.dtype)?t:M(t),n=P(l);if(n)return n}return L(t,e!==void 0?[e]:void 0,[a],r,!0)}function rt(t,e,a=[-2,-1],r="backward"){return L(t,e,a,r,!1)}function yt(t,e,a=[-2,-1],r="backward"){return L(t,e,a,r,!0)}function ht(t,e,a,r="backward"){return L(t,e,a,r,!1)}function pt(t,e,a,r="backward"){return L(t,e,a,r,!0)}function L(t,e,a,r="backward",l=!1){const n=Array.from(t.shape),f=n.length;if(t.size===0)return S.zeros(n,"complex128");if(f===0){const u=S.zeros([1],"complex128"),i=t.iget(0),s=i instanceof H?i.re:Number(i),p=i instanceof H?i.im:0,A=u.data;return A[0]=s,A[1]=p,S.fromData(u.data,[],"complex128")}let o;if(a===void 0)if(e===void 0)o=Array.from({length:f},(u,i)=>i);else{o=[];for(let u=0;u<e.length;u++)o.push(f-e.length+u)}else o=a.map(u=>u<0?f+u:u);const c=[...n];if(e!==void 0)for(let u=0;u<e.length;u++){const i=o[u];c[i]=e[u]}let d=M(t);if(e!==void 0&&(d=ot(d,c,o)),o.length===2&&d.ndim===2&&r==="backward"&&d.isCContiguous){const u=d.shape[o[0]],i=d.shape[o[1]];if(o[0]===0&&o[1]===1&&u>=z*D.thresholdMultiplier&&i>=z*D.thresholdMultiplier){const p=d.data,A=G(p,u,i,l);if(A)return S.fromData(A,[u,i],"complex128")}}for(const u of o)d=st(d,u,l,r);return d}function M(t){const e=t.dtype,a=Array.from(t.shape),r=t.size;if(e==="complex128"||e==="complex64"){const o=S.zeros(a,"complex128"),c=o.data,d=t.data;for(let u=0;u<r*2;u++)c[u]=d[u];return o}const l=S.zeros(a,"complex128"),n=l.data,f=t.data;if(e==="float64"){const o=f;for(let c=0;c<r;c++)n[c*2]=o[c]}else if(e==="float32"){const o=f;for(let c=0;c<r;c++)n[c*2]=o[c]}else if(e==="int32"){const o=f;for(let c=0;c<r;c++)n[c*2]=o[c]}else if(e==="int16"){const o=f;for(let c=0;c<r;c++)n[c*2]=o[c]}else if(e==="int8"){const o=f;for(let c=0;c<r;c++)n[c*2]=o[c]}else if(e==="uint32"){const o=f;for(let c=0;c<r;c++)n[c*2]=o[c]}else if(e==="uint16"){const o=f;for(let c=0;c<r;c++)n[c*2]=o[c]}else if(e==="uint8"){const o=f;for(let c=0;c<r;c++)n[c*2]=o[c]}else if(e==="int64"||e==="uint64"){const o=f;for(let c=0;c<r;c++)n[c*2]=Number(o[c])}else for(let o=0;o<r;o++)n[o*2]=Number(f[o]);return l}function ot(t,e,a){const r=Array.from(t.shape);let l=t;for(const n of a){const f=r[n],o=e[n];f!==o&&(o>f?l=et(l,n,o):l=_(l,n,o),r[n]=o)}return l}function et(t,e,a){const r=Array.from(t.shape),l=r[e];r[e]=a;const n=S.zeros(r,"complex128"),f=n.data,o=t.data,c=r.slice(0,e).reduce((u,i)=>u*i,1),d=r.slice(e+1).reduce((u,i)=>u*i,1);for(let u=0;u<c;u++)for(let i=0;i<l;i++)for(let s=0;s<d;s++){const p=(u*l+i)*d+s,A=(u*a+i)*d+s;f[A*2]=o[p*2],f[A*2+1]=o[p*2+1]}return n}function _(t,e,a){const r=Array.from(t.shape),l=r[e];r[e]=a;const n=S.zeros(r,"complex128"),f=n.data,o=t.data,c=r.slice(0,e).reduce((u,i)=>u*i,1),d=r.slice(e+1).reduce((u,i)=>u*i,1);for(let u=0;u<c;u++)for(let i=0;i<a;i++)for(let s=0;s<d;s++){const p=(u*l+i)*d+s,A=(u*a+i)*d+s;f[A*2]=o[p*2],f[A*2+1]=o[p*2+1]}return n}const z=32;function nt(t,e){const a=Array.from(t.shape),r=a.length,l=Math.floor(e/2)+1,n=a.slice(0,r-1).reduce((i,s)=>i*s,1),f=e,o=l*2,c=t.dtype==="float64"?t.data:Float64Array.from(t.data.subarray(t.offset,t.offset+t.size)),d=J(c,e,n,f,o);if(!d)return null;const u=[...a];return u[r-1]=l,S.fromData(d,u,"complex128")}function at(t,e){const a=Array.from(t.shape),r=a.length,l=a[r-1],n=a.slice(0,r-1).reduce((s,p)=>s*p,1),f=l*2,o=e,d=M(t).data,u=Q(d,l,e,n,f,o);if(!u)return null;const i=[...a];return i[r-1]=e,S.fromData(u,i,"float64")}function st(t,e,a,r){const l=Array.from(t.shape),n=l[e];if(n===0)return t;const f=S.zeros(l,"complex128"),o=f.data,c=t.data,d=l.slice(0,e).reduce((p,A)=>p*A,1),u=l.slice(e+1).reduce((p,A)=>p*A,1);if(u===1&&n>=z*D.thresholdMultiplier){const p=d*n*2,A=N(c,n,d,a);if(A){if(o.set(A),r==="ortho"){const h=a?Math.sqrt(n):1/Math.sqrt(n);for(let y=0;y<p;y++)o[y]=o[y]*h}else if(r==="forward"&&!a){const h=1/n;for(let y=0;y<p;y++)o[y]=o[y]*h}else if(r==="forward"&&a)for(let h=0;h<p;h++)o[h]=o[h]*n;return f}}if(u>1&&n>=z*D.thresholdMultiplier){const p=d*u,A=p*n*2,h=new Float64Array(A);let y=0;for(let g=0;g<d;g++)for(let w=0;w<u;w++){const m=y*n*2;for(let k=0;k<n;k++){const F=((g*n+k)*u+w)*2;h[m+k*2]=c[F],h[m+k*2+1]=c[F+1]}y++}const b=N(h,n,p,a);if(b){y=0;for(let w=0;w<d;w++)for(let m=0;m<u;m++){const k=y*n*2;for(let F=0;F<n;F++){const j=((w*n+F)*u+m)*2;o[j]=b[k+F*2],o[j+1]=b[k+F*2+1]}y++}const g=d*n*u*2;if(r==="ortho"){const w=a?Math.sqrt(n):1/Math.sqrt(n);for(let m=0;m<g;m++)o[m]=o[m]*w}else if(r==="forward"&&!a){const w=1/n;for(let m=0;m<g;m++)o[m]=o[m]*w}else if(r==="forward"&&a)for(let w=0;w<g;w++)o[w]=o[w]*n;return f}}const i=new Float64Array(n),s=new Float64Array(n);for(let p=0;p<d;p++)for(let A=0;A<u;A++){for(let h=0;h<n;h++){const y=(p*n+h)*u+A;i[h]=c[y*2],s[h]=c[y*2+1]}if(Z(i,s,a),r==="ortho"){const h=1/Math.sqrt(n);if(a){const y=Math.sqrt(n);for(let b=0;b<n;b++)i[b]=i[b]*y,s[b]=s[b]*y}else for(let y=0;y<n;y++)i[y]=i[y]*h,s[y]=s[y]*h}else if(r==="forward"&&!a){const h=1/n;for(let y=0;y<n;y++)i[y]=i[y]*h,s[y]=s[y]*h}else if(!(r==="backward"&&a)){if(r==="forward"&&a)for(let h=0;h<n;h++)i[h]=i[h]*n,s[h]=s[h]*n}for(let h=0;h<n;h++){const y=(p*n+h)*u+A;o[y*2]=i[h],o[y*2+1]=s[h]}}return f}function K(t,e,a=-1,r="backward"){const l=Array.from(t.shape),n=l.length,f=a<0?n+a:a,o=e??l[f],c=Math.floor(o/2)+1;if(n===1&&e===void 0&&r==="backward"&&!I(t.dtype)&&t.dtype==="float64"){const u=$(t,o);if(u)return u}if(f===n-1&&t.isCContiguous&&e===void 0&&r==="backward"&&!I(t.dtype)&&o>=z*D.thresholdMultiplier&&o%2===0){const u=nt(t,o);if(u)return u}const d=U(t,o,a,r);return _(d,f,c)}function B(t,e,a=-1,r="backward"){const l=Array.from(t.shape),n=l.length,f=a<0?n+a:a,o=l[f],c=e??(o-1)*2;if(n===1&&r==="backward"&&I(t.dtype)&&t.dtype==="complex128"){const y=W(t,c);if(y)return y}if(f===n-1&&t.isCContiguous&&r==="backward"&&c%2===0&&c>=z*D.thresholdMultiplier&&o===Math.floor(c/2)+1){const y=at(t,c);if(y)return y}const d=[...l];d[f]=c;const u=S.zeros(d,"complex128"),i=u.data,s=M(t).data,p=l.slice(0,f).reduce((y,b)=>y*b,1),A=l.slice(f+1).reduce((y,b)=>y*b,1);for(let y=0;y<p;y++)for(let b=0;b<A;b++){for(let g=0;g<o;g++){const w=(y*o+g)*A+b,m=(y*c+g)*A+b;i[m*2]=s[w*2],i[m*2+1]=s[w*2+1]}for(let g=o;g<c;g++){const w=c-g,m=(y*o+w)*A+b,k=(y*c+g)*A+b;i[k*2]=s[m*2],i[k*2+1]=-s[m*2+1]}}const h=q(u,c,a,r);return T(h)}function At(t,e,a=[-2,-1],r="backward"){const l=Array.from(t.shape),n=l.length,f=a[0]<0?n+a[0]:a[0],o=a[1]<0?n+a[1]:a[1];if(n===2&&f===0&&o===1&&r==="backward"&&!e&&t.isCContiguous&&!I(t.dtype)){const i=l[0],s=l[1];if(i>=z*D.thresholdMultiplier&&s>=z*D.thresholdMultiplier){const p=Math.floor(s/2)+1,A=t.dtype==="float64"?t.data.subarray(t.offset,t.offset+i*s):Float64Array.from(t.data.subarray(t.offset,t.offset+i*s)),h=V(A,i,s);if(h)return S.fromData(h,[i,p],"complex128")}}const c=rt(t,e,a,r),d=e?e[1]:l[o],u=Math.floor(d/2)+1;return _(c,o,u)}function mt(t,e,a=[-2,-1],r="backward"){const l=Array.from(t.shape),n=l.length,f=a[0]<0?n+a[0]:a[0],o=a[1]<0?n+a[1]:a[1],c=l[o],d=e?e[1]:(c-1)*2,u=e?e[0]:l[f];if(n===2&&f===0&&o===1&&r==="backward"&&!e&&t.isCContiguous&&I(t.dtype)){const s=l[0],p=l[1];if(s>=z*D.thresholdMultiplier&&d>=z*D.thresholdMultiplier){const A=t.data.subarray(t.offset,t.offset+s*p*2),h=X(A,s,p,d);if(h)return S.fromData(h,[s,d],"float64")}}let i=B(t,d,o,r);return i=q(i,u,f,r),T(i)}function bt(t,e,a,r="backward"){const n=Array.from(t.shape).length;let f;if(a===void 0?f=Array.from({length:n},(u,i)=>i):f=a.map(u=>u<0?n+u:u),f.length===0)return M(t);const o=f[f.length-1],c=e?e[f.length-1]:void 0;let d=K(t,c,o,r);for(let u=0;u<f.length-1;u++){const i=f[u],s=e?e[u]:void 0;d=U(d,s,i,r)}return d}function wt(t,e,a,r="backward"){const l=Array.from(t.shape),n=l.length;let f;if(a===void 0?f=Array.from({length:n},(i,s)=>s):f=a.map(i=>i<0?n+i:i),f.length===0)return T(M(t));const o=f[f.length-1],c=l[o],d=e?[...e]:f.map((i,s)=>s===f.length-1?(c-1)*2:l[i]);if(n===3&&f.length===3&&f[0]===0&&f[1]===1&&f[2]===2&&r==="backward"&&e===void 0&&t.isCContiguous&&I(t.dtype)&&d[2]%2===0){const i=d[0],s=d[1],p=c,A=d[2],h=M(t),y=Y(h.data,i,s,p,A);if(y)return S.fromData(y,[i,s,A],"float64")}let u=B(t,d[f.length-1],o,r);for(let i=f.length-2;i>=0;i--){const s=f[i];u=q(u,d[i],s,r)}return T(u)}function gt(t,e,a=-1,r="backward"){const l=Array.from(t.shape),n=l.length,f=a<0?n+a:a,o=l[f],c=e??(o-1)*2,d=O(M(t)),u=B(d,c,a,r),i=u.data;for(let s=0;s<u.size;s++)i[s]=i[s]*c;return u}function St(t,e,a=-1,r="backward"){const l=Array.from(t.shape),n=l.length,f=a<0?n+a:a,o=e??l[f],c=K(t,o,a,r),d=O(c),u=d.data;for(let i=0;i<d.size*2;i++)u[i]=u[i]/o;return d}function O(t){const e=Array.from(t.shape),a=t.size,r=S.zeros(e,"complex128"),l=r.data,n=t.data;for(let f=0;f<a;f++)l[f*2]=n[f*2],l[f*2+1]=-n[f*2+1];return r}function T(t){const e=Array.from(t.shape),a=t.size,r=S.zeros(e,"float64"),l=r.data,n=t.data;for(let f=0;f<a;f++)l[f]=n[f*2];return r}function kt(t,e=1){const a=S.zeros([t],"float64"),r=a.data,l=Math.floor((t-1)/2)+1;for(let n=0;n<l;n++)r[n]=n/(t*e);for(let n=l;n<t;n++)r[n]=(n-t)/(t*e);return a}function Ft(t,e=1){const a=Math.floor(t/2)+1,r=S.zeros([a],"float64"),l=r.data;for(let n=0;n<a;n++)l[n]=n/(t*e);return r}function Dt(t,e){const a=Array.from(t.shape),r=a.length;let l;e===void 0?l=Array.from({length:r},(f,o)=>o):typeof e=="number"?l=[e<0?r+e:e]:l=e.map(f=>f<0?r+f:f);const n=l.map(f=>Math.floor(a[f]/2));return r===1&&l.length===1&&l[0]===0?C(t,n[0]):C(t,n,l)}function zt(t,e){const a=Array.from(t.shape),r=a.length;let l;e===void 0?l=Array.from({length:r},(f,o)=>o):typeof e=="number"?l=[e<0?r+e:e]:l=e.map(f=>f<0?r+f:f);const n=l.map(f=>-Math.floor(a[f]/2));return r===1&&l.length===1&&l[0]===0?C(t,n[0]):C(t,n,l)}export{U as fft,rt as fft2,kt as fftfreq,ht as fftn,Dt as fftshift,gt as hfft,q as ifft,yt as ifft2,pt as ifftn,zt as ifftshift,St as ihfft,B as irfft,mt as irfft2,wt as irfftn,K as rfft,At as rfft2,Ft as rfftfreq,bt as rfftn};
1
+ import{ArrayStorage as F}from"../storage.js";import{Complex as O}from"../complex.js";import{isComplexDType as x,throwIfComplex as T,fftResultDtype as C,hasFloat16 as W}from"../dtype.js";import{roll as B}from"./shape.js";import{wasmFft as G,wasmIfft as J,wasmRfft as Q,wasmIrfft as V,wasmFft2 as X,wasmFftBatch as K,wasmRfftBatch as Y,wasmIrfftBatch as Z,wasmRfft2 as v,wasmIrfft2 as tt,wasmIrfftn3d as rt}from"../wasm/fft.js";import{wasmConfig as D}from"../wasm/config.js";function ot(t,e,n){const o=t.length;o!==0&&o!==1&&((o&o-1)===0?q(t,e,n):at(t,e,n))}const R=new Map;function et(t,e){const n=`${t}_${e}`;let o=R.get(n);if(o)return o;const u=new Float64Array(t/2),a=new Float64Array(t/2),c=e?1:-1;for(let s=0;s<t/2;s++){const f=c*2*Math.PI*s/t;u[s]=Math.cos(f),a[s]=Math.sin(f)}if(o={cos:u,sin:a},R.set(n,o),R.size>100){const s=R.keys().next().value;R.delete(s)}return o}function q(t,e,n){const o=t.length;let u=0;for(let s=0;s<o-1;s++){if(s<u){let i=t[s];t[s]=t[u],t[u]=i,i=e[s],e[s]=e[u],e[u]=i}let f=o>>1;for(;f<=u;)u-=f,f>>=1;u+=f}const{cos:a,sin:c}=et(o,n);for(let s=2;s<=o;s*=2){const f=s>>1,i=o/s;for(let d=0;d<o;d+=s)for(let l=0,r=0;l<f;l++,r+=i){const h=a[r],A=c[r],y=d+l,p=d+l+f,b=t[y],k=e[y],m=t[p],w=e[p],g=h*m-A*w,S=h*w+A*m;t[y]=b+g,e[y]=k+S,t[p]=b-g,e[p]=k-S}}if(n){const s=1/o;for(let f=0;f<o;f++)t[f]=t[f]*s,e[f]=e[f]*s}}function at(t,e,n){const o=t.length;let u=1;for(;u<2*o-1;)u*=2;const a=n?1:-1,c=new Float64Array(o),s=new Float64Array(o);for(let r=0;r<o;r++){const h=a*Math.PI*r*r/o;c[r]=Math.cos(h),s[r]=Math.sin(h)}const f=new Float64Array(u),i=new Float64Array(u);for(let r=0;r<o;r++){const h=c[r],A=s[r];f[r]=t[r]*h-e[r]*A,i[r]=e[r]*h+t[r]*A}const d=new Float64Array(u),l=new Float64Array(u);d[0]=c[0],l[0]=-s[0];for(let r=1;r<o;r++)d[r]=c[r],l[r]=-s[r],d[u-r]=c[r],l[u-r]=-s[r];q(f,i,!1),q(d,l,!1);for(let r=0;r<u;r++){const h=f[r],A=i[r],y=d[r],p=l[r];f[r]=h*y-A*p,i[r]=h*p+A*y}q(f,i,!0);for(let r=0;r<o;r++){const h=f[r],A=i[r],y=c[r],p=s[r];t[r]=h*y-A*p,e[r]=A*y+h*p}if(n)for(let r=0;r<o;r++)t[r]=t[r]/o,e[r]=e[r]/o}function E(t,e,n=-1,o="backward"){if(e===void 0&&(n===-1||n===t.ndim-1)&&o==="backward"&&t.ndim===1){const u=x(t.dtype),a=u?t:I(t);try{const c=G(a);if(c)return c}finally{u||a.dispose()}}return L(t,e!==void 0?[e]:void 0,[n],o,!1)}function _(t,e,n=-1,o="backward"){if(e===void 0&&(n===-1||n===t.ndim-1)&&o==="backward"&&t.ndim===1){const u=x(t.dtype),a=u?t:I(t);try{const c=J(a);if(c)return c}finally{u||a.dispose()}}return L(t,e!==void 0?[e]:void 0,[n],o,!0)}function nt(t,e,n=[-2,-1],o="backward"){return L(t,e,n,o,!1)}function mt(t,e,n=[-2,-1],o="backward"){return L(t,e,n,o,!0)}function bt(t,e,n,o="backward"){return L(t,e,n,o,!1)}function wt(t,e,n,o="backward"){return L(t,e,n,o,!0)}function L(t,e,n,o="backward",u=!1){const a=Array.from(t.shape),c=a.length,s=C(t.dtype);if(t.size===0)return F.zeros(a,s);if(c===0){const l=F.zeros([1],s),r=t.iget(0),h=r instanceof O?r.re:Number(r),A=r instanceof O?r.im:0,y=l.data;return y[0]=h,y[1]=A,F.fromData(l.data,[],s)}let f;if(n===void 0)if(e===void 0)f=Array.from({length:c},(l,r)=>r);else{f=[];for(let l=0;l<e.length;l++)f.push(c-e.length+l)}else f=n.map(l=>l<0?c+l:l);const i=[...a];if(e!==void 0)for(let l=0;l<e.length;l++){const r=f[l];i[r]=e[l]}let d=I(t);if(e!==void 0){const l=d;d=st(d,i,f),d!==l&&l.dispose()}if(f.length===2&&d.ndim===2&&o==="backward"&&d.isCContiguous){const l=d.shape[f[0]],r=d.shape[f[1]];if(f[0]===0&&f[1]===1&&l>=z*D.thresholdMultiplier&&r>=z*D.thresholdMultiplier){const A=d.data,y=X(A,l,r,u);if(y)return d.dispose(),F.fromData(y,[l,r],s)}}for(const l of f){const r=d;d=it(d,l,u,o),r.dispose()}return d}function I(t){const e=t.dtype,n=Array.from(t.shape),o=t.size,u=C(e);if(e==="complex128"||e==="complex64"){const f=F.zeros(n,u),i=f.data,d=t.data;for(let l=0;l<o*2;l++)i[l]=d[l];return f}const a=F.zeros(n,u),c=a.data,s=t.data;if(e==="float64"){const f=s;for(let i=0;i<o;i++)c[i*2]=f[i]}else if(e==="float32"){const f=s;for(let i=0;i<o;i++)c[i*2]=f[i]}else if(e==="int32"){const f=s;for(let i=0;i<o;i++)c[i*2]=f[i]}else if(e==="int16"){const f=s;for(let i=0;i<o;i++)c[i*2]=f[i]}else if(e==="int8"){const f=s;for(let i=0;i<o;i++)c[i*2]=f[i]}else if(e==="uint32"){const f=s;for(let i=0;i<o;i++)c[i*2]=f[i]}else if(e==="uint16"){const f=s;for(let i=0;i<o;i++)c[i*2]=f[i]}else if(e==="uint8"){const f=s;for(let i=0;i<o;i++)c[i*2]=f[i]}else if(e==="int64"||e==="uint64"){const f=s;for(let i=0;i<o;i++)c[i*2]=Number(f[i])}else for(let f=0;f<o;f++)c[f*2]=Number(s[f]);return a}function st(t,e,n){const o=Array.from(t.shape);let u=t;for(const a of n){const c=o[a],s=e[a];c!==s&&(s>c?u=ct(u,a,s):u=U(u,a,s),o[a]=s)}return u}function ct(t,e,n){const o=Array.from(t.shape),u=o[e];o[e]=n;const a=F.zeros(o,t.dtype),c=a.data,s=t.data,f=o.slice(0,e).reduce((d,l)=>d*l,1),i=o.slice(e+1).reduce((d,l)=>d*l,1);for(let d=0;d<f;d++)for(let l=0;l<u;l++)for(let r=0;r<i;r++){const h=(d*u+l)*i+r,A=(d*n+l)*i+r;c[A*2]=s[h*2],c[A*2+1]=s[h*2+1]}return a}function U(t,e,n){const o=Array.from(t.shape),u=o[e];o[e]=n;const a=F.zeros(o,t.dtype),c=a.data,s=t.data,f=o.slice(0,e).reduce((d,l)=>d*l,1),i=o.slice(e+1).reduce((d,l)=>d*l,1);for(let d=0;d<f;d++)for(let l=0;l<n;l++)for(let r=0;r<i;r++){const h=(d*u+l)*i+r,A=(d*n+l)*i+r;c[A*2]=s[h*2],c[A*2+1]=s[h*2+1]}return a}const z=32;function lt(t,e){const n=Array.from(t.shape),o=n.length,u=Math.floor(e/2)+1,a=n.slice(0,o-1).reduce((l,r)=>l*r,1),c=e,s=u*2;let f;if(t.dtype==="float64")f=t.data;else if(t.dtype==="float32")f=t.data;else if(t.dtype==="int64"||t.dtype==="uint64"){const l=t.data;f=new Float64Array(t.size);for(let r=0;r<t.size;r++)f[r]=Number(l[t.offset+r])}else f=Float64Array.from(t.data.subarray(t.offset,t.offset+t.size));const i=Y(f,e,a,c,s);if(!i)return null;const d=[...n];return d[o-1]=u,F.fromData(i,d,C(t.dtype))}function ft(t,e){const n=Array.from(t.shape),o=n.length,u=n[o-1],a=n.slice(0,o-1).reduce((A,y)=>A*y,1),c=u*2,s=e,f=I(t),i=f.dtype==="complex64",d=i?"float32":"float64";let l;if(i&&!(f.data instanceof Float32Array)){const A=f.size*2;l=new Float32Array(A);const y=f.data;for(let p=0;p<A;p++)l[p]=Number(y[p])}else l=f.data;const r=Z(l,u,e,a,c,s);if(!r)return null;const h=[...n];return h[o-1]=e,F.fromData(r,h,d)}function it(t,e,n,o){const u=Array.from(t.shape),a=u[e];if(a===0)return t;const c=F.zeros(u,t.dtype),s=c.data,f=t.data,i=u.slice(0,e).reduce((h,A)=>h*A,1),d=u.slice(e+1).reduce((h,A)=>h*A,1);if(d===1&&a>=z*D.thresholdMultiplier){const h=i*a*2,A=K(f,a,i,n);if(A){if(s.set(A),o==="ortho"){const y=n?Math.sqrt(a):1/Math.sqrt(a);for(let p=0;p<h;p++)s[p]=s[p]*y}else if(o==="forward"&&!n){const y=1/a;for(let p=0;p<h;p++)s[p]=s[p]*y}else if(o==="forward"&&n)for(let y=0;y<h;y++)s[y]=s[y]*a;return c}}if(d>1&&a>=z*D.thresholdMultiplier){const h=i*d,A=h*a*2,y=new Float64Array(A);let p=0;for(let k=0;k<i;k++)for(let m=0;m<d;m++){const w=p*a*2;for(let g=0;g<a;g++){const S=((k*a+g)*d+m)*2;y[w+g*2]=f[S],y[w+g*2+1]=f[S+1]}p++}const b=K(y,a,h,n);if(b){p=0;for(let m=0;m<i;m++)for(let w=0;w<d;w++){const g=p*a*2;for(let S=0;S<a;S++){const M=((m*a+S)*d+w)*2;s[M]=b[g+S*2],s[M+1]=b[g+S*2+1]}p++}const k=i*a*d*2;if(o==="ortho"){const m=n?Math.sqrt(a):1/Math.sqrt(a);for(let w=0;w<k;w++)s[w]=s[w]*m}else if(o==="forward"&&!n){const m=1/a;for(let w=0;w<k;w++)s[w]=s[w]*m}else if(o==="forward"&&n)for(let m=0;m<k;m++)s[m]=s[m]*a;return c}}const l=new Float64Array(a),r=new Float64Array(a);for(let h=0;h<i;h++)for(let A=0;A<d;A++){for(let y=0;y<a;y++){const p=(h*a+y)*d+A;l[y]=f[p*2],r[y]=f[p*2+1]}if(ot(l,r,n),o==="ortho"){const y=1/Math.sqrt(a);if(n){const p=Math.sqrt(a);for(let b=0;b<a;b++)l[b]=l[b]*p,r[b]=r[b]*p}else for(let p=0;p<a;p++)l[p]=l[p]*y,r[p]=r[p]*y}else if(o==="forward"&&!n){const y=1/a;for(let p=0;p<a;p++)l[p]=l[p]*y,r[p]=r[p]*y}else if(!(o==="backward"&&n)){if(o==="forward"&&n)for(let y=0;y<a;y++)l[y]=l[y]*a,r[y]=r[y]*a}for(let y=0;y<a;y++){const p=(h*a+y)*d+A;s[p*2]=l[y],s[p*2+1]=r[y]}}return c}function P(t,e,n=-1,o="backward"){T(t.dtype,"rfft","rfft expects real input.");const u=Array.from(t.shape),a=u.length,c=n<0?a+n:n,s=e??u[c],f=Math.floor(s/2)+1;if(a===1&&e===void 0&&o==="backward"&&!x(t.dtype)&&t.dtype==="float64"){const l=Q(t,s);if(l)return l}if(c===a-1&&t.isCContiguous&&e===void 0&&o==="backward"&&!x(t.dtype)&&s>=z*D.thresholdMultiplier&&s%2===0){const l=lt(t,s);if(l)return l}const i=E(t,s,n,o),d=U(i,c,f);return i.dispose(),d}function j(t,e,n=-1,o="backward"){const u=Array.from(t.shape),a=u.length,c=n<0?a+n:n,s=u[c],f=e??(s-1)*2;if(a===1&&o==="backward"&&x(t.dtype)&&t.dtype==="complex128"){const m=V(t,f);if(m)return m}if(c===a-1&&t.isCContiguous&&o==="backward"&&f%2===0&&f>=z*D.thresholdMultiplier&&s===Math.floor(f/2)+1){const m=ft(t,f);if(m)return m}const i=[...u];i[c]=f;const d=C(t.dtype),l=F.zeros(i,d),r=l.data,h=I(t),A=h.data,y=u.slice(0,c).reduce((m,w)=>m*w,1),p=u.slice(c+1).reduce((m,w)=>m*w,1);for(let m=0;m<y;m++)for(let w=0;w<p;w++){for(let g=0;g<s;g++){const S=(m*s+g)*p+w,M=(m*f+g)*p+w;r[M*2]=A[S*2],r[M*2+1]=A[S*2+1]}for(let g=s;g<f;g++){const S=f-g,M=(m*s+S)*p+w,H=(m*f+g)*p+w;r[H*2]=A[M*2],r[H*2+1]=-A[M*2+1]}}h.dispose();const b=_(l,f,n,o);l.dispose();const k=N(b);return b.dispose(),k}function gt(t,e,n=[-2,-1],o="backward"){T(t.dtype,"rfft2","rfft2 expects real input.");const u=Array.from(t.shape),a=u.length,c=n[0]<0?a+n[0]:n[0],s=n[1]<0?a+n[1]:n[1];if(a===2&&c===0&&s===1&&o==="backward"&&!e&&t.isCContiguous&&!x(t.dtype)){const l=u[0],r=u[1];if(l>=z*D.thresholdMultiplier&&r>=z*D.thresholdMultiplier){const h=Math.floor(r/2)+1;let A;if(t.dtype==="float64")A=t.data.subarray(t.offset,t.offset+l*r);else if(t.dtype==="int64"||t.dtype==="uint64"){const p=t.data;A=new Float64Array(l*r);for(let b=0;b<l*r;b++)A[b]=Number(p[t.offset+b])}else A=Float64Array.from(t.data.subarray(t.offset,t.offset+l*r));const y=v(A,l,r);if(y){const p=C(t.dtype),b=p==="complex64"?Float32Array.from(y):y;return F.fromData(b,[l,h],p)}}}const f=nt(t,e,n,o),i=e?e[1]:u[s],d=Math.floor(i/2)+1;return U(f,s,d)}function Ft(t,e,n=[-2,-1],o="backward"){const u=Array.from(t.shape),a=u.length,c=n[0]<0?a+n[0]:n[0],s=n[1]<0?a+n[1]:n[1],f=u[s],i=e?e[1]:(f-1)*2,d=e?e[0]:u[c];if(a===2&&c===0&&s===1&&o==="backward"&&!e&&t.isCContiguous&&x(t.dtype)){const r=u[0],h=u[1];if(r>=z*D.thresholdMultiplier&&i>=z*D.thresholdMultiplier){const A=r*h*2;let y;if(t.dtype==="complex64"){y=new Float32Array(A);const b=t.data,k=t.offset;for(let m=0;m<A;m++)y[m]=Number(b[k+m])}else y=t.data.subarray(t.offset,t.offset+A);const p=tt(y,r,h,i);if(p){const b=t.dtype==="complex64"?"float32":"float64";return F.fromData(p,[r,i],b)}}}let l=j(t,i,s,o);return l=_(l,d,c,o),N(l)}function St(t,e,n,o="backward"){T(t.dtype,"rfftn","rfftn expects real input.");const a=Array.from(t.shape).length;let c;if(n===void 0?c=Array.from({length:a},(d,l)=>l):c=n.map(d=>d<0?a+d:d),c.length===0)return I(t);const s=c[c.length-1],f=e?e[c.length-1]:void 0;let i=P(t,f,s,o);for(let d=0;d<c.length-1;d++){const l=c[d],r=e?e[d]:void 0,h=i;i=E(i,r,l,o),h.dispose()}return i}function kt(t,e,n,o="backward"){const u=Array.from(t.shape),a=u.length;let c;if(n===void 0?c=Array.from({length:a},(r,h)=>h):c=n.map(r=>r<0?a+r:r),c.length===0){const r=I(t),h=N(r);return r.dispose(),h}const s=c[c.length-1],f=u[s],i=e?[...e]:c.map((r,h)=>h===c.length-1?(f-1)*2:u[r]);if(a===3&&c.length===3&&c[0]===0&&c[1]===1&&c[2]===2&&o==="backward"&&e===void 0&&t.isCContiguous&&x(t.dtype)&&i[2]%2===0&&(t.dtype==="complex128"||t.dtype==="float64")){const r=i[0],h=i[1],A=f,y=i[2],p=I(t),b=rt(p.data,r,h,A,y);if(p.dispose(),b)return F.fromData(b,[r,h,y],"float64")}let d=j(t,i[c.length-1],s,o);for(let r=c.length-2;r>=0;r--){const h=c[r],A=d;d=_(d,i[r],h,o),A.dispose()}const l=N(d);return d.dispose(),l}function Dt(t,e,n=-1,o="backward"){const u=Array.from(t.shape),a=u.length,c=n<0?a+n:n,s=u[c],f=e??(s-1)*2,i=t.dtype,d=I(t),l=$(d);d.dispose();const r=j(l,f,n,o);l.dispose();const h=r.data;for(let A=0;A<r.size;A++)h[A]=h[A]*f;if(i==="float16"&&W){const A=F.empty(Array.from(r.shape),"float16");return A.data.set(r.data),r.dispose(),A}return r}function zt(t,e,n=-1,o="backward"){T(t.dtype,"ihfft","ihfft expects real input.");const u=Array.from(t.shape),a=u.length,c=n<0?a+n:n,s=e??u[c],f=P(t,s,n,o),i=$(f);f.dispose();const d=i.data;for(let l=0;l<i.size*2;l++)d[l]=d[l]/s;return i}function $(t){const e=Array.from(t.shape),n=t.size,o=F.zeros(e,t.dtype),u=o.data,a=t.data;for(let c=0;c<n;c++)u[c*2]=a[c*2],u[c*2+1]=-a[c*2+1];return o}function N(t){const e=Array.from(t.shape),n=t.size,o=t.dtype==="complex64"?"float32":"float64",u=F.zeros(e,o),a=u.data,c=t.data;for(let s=0;s<n;s++)a[s]=c[s*2];return u}function It(t,e=1){const n=F.zeros([t],"float64"),o=n.data,u=Math.floor((t-1)/2)+1;for(let a=0;a<u;a++)o[a]=a/(t*e);for(let a=u;a<t;a++)o[a]=(a-t)/(t*e);return n}function Mt(t,e=1){const n=Math.floor(t/2)+1,o=F.zeros([n],"float64"),u=o.data;for(let a=0;a<n;a++)u[a]=a/(t*e);return o}function xt(t,e){const n=Array.from(t.shape),o=n.length;let u;e===void 0?u=Array.from({length:o},(c,s)=>s):typeof e=="number"?u=[e<0?o+e:e]:u=e.map(c=>c<0?o+c:c);const a=u.map(c=>Math.floor(n[c]/2));return o===1&&u.length===1&&u[0]===0?B(t,a[0]):B(t,a,u)}function Lt(t,e){const n=Array.from(t.shape),o=n.length;let u;e===void 0?u=Array.from({length:o},(c,s)=>s):typeof e=="number"?u=[e<0?o+e:e]:u=e.map(c=>c<0?o+c:c);const a=u.map(c=>-Math.floor(n[c]/2));return o===1&&u.length===1&&u[0]===0?B(t,a[0]):B(t,a,u)}export{E as fft,nt as fft2,It as fftfreq,bt as fftn,xt as fftshift,Dt as hfft,_ as ifft,mt as ifft2,wt as ifftn,Lt as ifftshift,zt as ihfft,j as irfft,Ft as irfft2,kt as irfftn,P as rfft,gt as rfft2,Mt as rfftfreq,St as rfftn};
@@ -1 +1 @@
1
- import{ArrayStorage as O}from"../storage.js";import{isBigIntDType as v,isComplexDType as H,promoteDTypes as et}from"../dtype.js";import{wasmDiff as ot}from"../wasm/diff.js";import{wasmGradient1D as rt}from"../wasm/gradient.js";function ft(e,r=1,g=-1){if(r<0)throw new Error(`order must be non-negative but got ${r}`);if(r===0)return e.copy();const x=Array.from(e.shape),A=x.length,d=g<0?A+g:g;if(d<0||d>=A)throw new Error(`axis ${g} is out of bounds for array of dimension ${A}`);if(x[d]<r+1)throw new Error(`diff requires at least ${r+1} elements along axis ${g}, but got ${x[d]}`);if(r===1&&!H(e.dtype)){const h=ot(e,d);if(h)return h}let p=e;for(let h=0;h<r;h++)p=st(p,d);return p}function st(e,r){const g=Array.from(e.shape),x=g.length,A=g[r],d=[...g];d[r]=A-1;const p=e.dtype,h=H(p),I=v(p)?"float64":p,D=O.zeros(d,I),P=D.data,w=e.strides,N=D.size,y=e.offset;for(let b=0;b<N;b++){let n=b;const u=new Array(x);for(let t=x-1;t>=0;t--)u[t]=n%d[t],n=Math.floor(n/d[t]);const M=[...u],a=[...u];a[r]=M[r]+1;let o=0,s=0;for(let t=0;t<x;t++)o+=M[t]*w[t],s+=a[t]*w[t];if(h){const t=e.data,c=t[(y+o)*2],m=t[(y+o)*2+1],l=t[(y+s)*2],i=t[(y+s)*2+1];P[b*2]=l-c,P[b*2+1]=i-m}else{const t=(v(p),Number(e.data[y+o])),c=(v(p),Number(e.data[y+s]));P[b]=c-t}}return D}function dt(e,r=null,g=null){const x=e.size,A=e.dtype,d=H(A),p=v(A)?"float64":A,h=Math.max(0,x-1),I=g?g.length:0,D=r?r.length:0,P=I+h+D,w=O.zeros([P],p),N=w.data;let y=0;if(g)if(d)for(const b of g)N[y*2]=b,N[y*2+1]=0,y++;else for(const b of g)N[y++]=b;if(d)for(let b=0;b<h;b++){const n=e.iget(b),u=e.iget(b+1);N[y*2]=u.re-n.re,N[y*2+1]=u.im-n.im,y++}else for(let b=0;b<h;b++){const n=(v(A),Number(e.iget(b))),u=(v(A),Number(e.iget(b+1)));N[y++]=u-n}if(r)if(d)for(const b of r)N[y*2]=b,N[y*2+1]=0,y++;else for(const b of r)N[y++]=b;return w}function bt(e,r=1,g=null){const A=Array.from(e.shape).length;let d;if(g===null)d=Array.from({length:A},(I,D)=>D);else if(typeof g=="number"){const I=g<0?A+g:g;if(I<0||I>=A)throw new Error(`axis ${g} is out of bounds for array of dimension ${A}`);d=[I]}else d=g.map(I=>{const D=I<0?A+I:I;if(D<0||D>=A)throw new Error(`axis ${I} is out of bounds for array of dimension ${A}`);return D});let p;if(typeof r=="number")p=d.map(()=>r);else{if(r.length!==d.length)throw new Error("Number of spacings must match number of axes");p=r}if(d.length===1&&e.shape.length===1&&!H(e.dtype)&&typeof r=="number"){const I=rt(e,p[0]);if(I)return I}const h=[];for(let I=0;I<d.length;I++)h.push(nt(e,d[I],p[I]));return h.length===1?h[0]:h}function nt(e,r,g){const x=Array.from(e.shape),A=x.length,d=x[r];if(d<2)throw new Error(`Shape of array along axis ${r} must be at least 2, but got ${d}`);const p=e.dtype,h=H(p),I=v(p)?"float64":p==="float32"?"float32":h?p:"float64",D=O.zeros(x,I),P=D.data,w=e.strides,N=g,y=2*N,b=e.size,n=e.offset;for(let u=0;u<b;u++){let M=u;const a=new Array(A);for(let t=A-1;t>=0;t--)a[t]=M%x[t],M=Math.floor(M/x[t]);let o=n;for(let t=0;t<A;t++)o+=a[t]*w[t];const s=a[r];if(h){const t=e.data,c=P;let m,l;if(s===0){const i=[...a];i[r]=1;let f=0;for(let S=0;S<A;S++)f+=i[S]*w[S];const F=t[o*2],R=t[o*2+1],z=t[(n+f)*2],$=t[(n+f)*2+1];m=(z-F)/N,l=($-R)/N}else if(s===d-1){const i=[...a];i[r]=d-2;let f=0;for(let S=0;S<A;S++)f+=i[S]*w[S];const F=t[o*2],R=t[o*2+1],z=t[(n+f)*2],$=t[(n+f)*2+1];m=(F-z)/N,l=(R-$)/N}else{const i=[...a],f=[...a];i[r]=s+1,f[r]=s-1;let F=0,R=0;for(let q=0;q<A;q++)F+=i[q]*w[q],R+=f[q]*w[q];const z=t[(n+F)*2],$=t[(n+F)*2+1],S=t[(n+R)*2],E=t[(n+R)*2+1];m=(z-S)/y,l=($-E)/y}c[u*2]=m,c[u*2+1]=l}else{let t;if(s===0){const c=[...a];c[r]=1;let m=0;for(let f=0;f<A;f++)m+=c[f]*w[f];const l=(v(p),Number(e.data[o]));t=((v(p),Number(e.data[n+m]))-l)/N}else if(s===d-1){const c=[...a];c[r]=d-2;let m=0;for(let f=0;f<A;f++)m+=c[f]*w[f];const l=(v(p),Number(e.data[o])),i=(v(p),Number(e.data[n+m]));t=(l-i)/N}else{const c=[...a],m=[...a];c[r]=s+1,m[r]=s-1;let l=0,i=0;for(let R=0;R<A;R++)l+=c[R]*w[R],i+=m[R]*w[R];const f=(v(p),Number(e.data[n+l])),F=(v(p),Number(e.data[n+i]));t=(f-F)/y}P[u]=t}}return D}function pt(e,r,g=-1,x=-1,A=-1){const d=Array.from(e.shape),p=Array.from(r.shape),h=d.length,I=p.length,D=g<0?h+g:g,P=x<0?I+x:x;if(D<0||D>=h)throw new Error(`axisa ${g} is out of bounds for array of dimension ${h}`);if(P<0||P>=I)throw new Error(`axisb ${x} is out of bounds for array of dimension ${I}`);const w=d[D],N=p[P];if(w!==2&&w!==3)throw new Error(`incompatible dimensions for cross product (dimension must be 2 or 3, got ${w})`);if(N!==2&&N!==3)throw new Error(`incompatible dimensions for cross product (dimension must be 2 or 3, got ${N})`);const y=et(e.dtype,r.dtype),b=H(y),n=(a,o)=>{if(H(a.dtype)){const s=a.data,t=a.offset;return[s[(t+o)*2],s[(t+o)*2+1]]}return[Number(a.iget(o)),0]},u=(a,o,s,t)=>[a*s-o*t,a*t+o*s],M=(a,o,s,t)=>[a-s,o-t];if(h===1&&I===1&&w===3&&N===3){const a=O.zeros([3],y);if(b){const o=a.data,[s,t]=n(e,0),[c,m]=n(e,1),[l,i]=n(e,2),[f,F]=n(r,0),[R,z]=n(r,1),[$,S]=n(r,2),[E,q]=u(c,m,$,S),[C,B]=u(l,i,R,z),[T,J]=M(E,q,C,B),[V,G]=u(l,i,f,F),[j,k]=u(s,t,$,S),[K,L]=M(V,G,j,k),[Q,U]=u(s,t,R,z),[W,X]=u(c,m,f,F),[Y,Z]=M(Q,U,W,X);o[0]=T,o[1]=J,o[2]=K,o[3]=L,o[4]=Y,o[5]=Z}else{const o=a.data,s=Number(e.iget(0)),t=Number(e.iget(1)),c=Number(e.iget(2)),m=Number(r.iget(0)),l=Number(r.iget(1)),i=Number(r.iget(2));o[0]=t*i-c*l,o[1]=c*m-s*i,o[2]=s*l-t*m}return a}if(h===1&&I===1&&w===2&&N===2){const a=O.zeros([],y);if(b){const o=a.data,[s,t]=n(e,0),[c,m]=n(e,1),[l,i]=n(r,0),[f,F]=n(r,1),[R,z]=u(s,t,f,F),[$,S]=u(c,m,l,i),[E,q]=M(R,z,$,S);o[0]=E,o[1]=q}else{const o=Number(e.iget(0)),s=Number(e.iget(1)),t=Number(r.iget(0)),c=Number(r.iget(1));a.data[0]=o*c-s*t}return a}if(h===1&&I===1){if(w===2&&N===3){const a=O.zeros([3],y);if(b){const o=a.data,[s,t]=n(e,0),[c,m]=n(e,1),[l,i]=n(r,0),[f,F]=n(r,1),[R,z]=n(r,2),[$,S]=u(c,m,R,z),[E,q]=u(s,t,R,z),C=-E,B=-q,[T,J]=u(s,t,f,F),[V,G]=u(c,m,l,i),[j,k]=M(T,J,V,G);o[0]=$,o[1]=S,o[2]=C,o[3]=B,o[4]=j,o[5]=k}else{const o=a.data,s=Number(e.iget(0)),t=Number(e.iget(1)),c=Number(r.iget(0)),m=Number(r.iget(1)),l=Number(r.iget(2));o[0]=t*l,o[1]=-s*l,o[2]=s*m-t*c}return a}else if(w===3&&N===2){const a=O.zeros([3],y);if(b){const o=a.data,[s,t]=n(e,0),[c,m]=n(e,1),[l,i]=n(e,2),[f,F]=n(r,0),[R,z]=n(r,1),[$,S]=u(l,i,R,z),E=-$,q=-S,[C,B]=u(l,i,f,F),[T,J]=u(s,t,R,z),[V,G]=u(c,m,f,F),[j,k]=M(T,J,V,G);o[0]=E,o[1]=q,o[2]=C,o[3]=B,o[4]=j,o[5]=k}else{const o=a.data,s=Number(e.iget(0)),t=Number(e.iget(1)),c=Number(e.iget(2)),m=Number(r.iget(0)),l=Number(r.iget(1));o[0]=-c*l,o[1]=c*m,o[2]=s*l-t*m}return a}}if(h===2&&I===2&&D===1&&P===1){const a=d[0];if(p[0]!==a)throw new Error(`Shape mismatch: a has ${a} vectors, b has ${p[0]} vectors`);if(w===3&&N===3){const o=O.zeros([a,3],y);if(b){const s=o.data;for(let t=0;t<a;t++){const[c,m]=n(e,t*3),[l,i]=n(e,t*3+1),[f,F]=n(e,t*3+2),[R,z]=n(r,t*3),[$,S]=n(r,t*3+1),[E,q]=n(r,t*3+2),[C,B]=u(l,i,E,q),[T,J]=u(f,F,$,S),[V,G]=M(C,B,T,J),[j,k]=u(f,F,R,z),[K,L]=u(c,m,E,q),[Q,U]=M(j,k,K,L),[W,X]=u(c,m,$,S),[Y,Z]=u(l,i,R,z),[_,tt]=M(W,X,Y,Z);s[t*3*2]=V,s[t*3*2+1]=G,s[(t*3+1)*2]=Q,s[(t*3+1)*2+1]=U,s[(t*3+2)*2]=_,s[(t*3+2)*2+1]=tt}}else{const s=o.data;for(let t=0;t<a;t++){const c=Number(e.iget(t*3)),m=Number(e.iget(t*3+1)),l=Number(e.iget(t*3+2)),i=Number(r.iget(t*3)),f=Number(r.iget(t*3+1)),F=Number(r.iget(t*3+2));s[t*3]=m*F-l*f,s[t*3+1]=l*i-c*F,s[t*3+2]=c*f-m*i}}return o}if(w===2&&N===2){const o=O.zeros([a],y);if(b){const s=o.data;for(let t=0;t<a;t++){const[c,m]=n(e,t*2),[l,i]=n(e,t*2+1),[f,F]=n(r,t*2),[R,z]=n(r,t*2+1),[$,S]=u(c,m,R,z),[E,q]=u(l,i,f,F),[C,B]=M($,S,E,q);s[t*2]=C,s[t*2+1]=B}}else{const s=o.data;for(let t=0;t<a;t++){const c=Number(e.iget(t*2)),m=Number(e.iget(t*2+1)),l=Number(r.iget(t*2)),i=Number(r.iget(t*2+1));s[t]=c*i-m*l}}return o}}throw new Error(`cross product not implemented for arrays with shapes ${JSON.stringify(d)} and ${JSON.stringify(p)}`)}export{pt as cross,ft as diff,dt as ediff1d,bt as gradient};
1
+ import{ArrayStorage as C}from"../storage.js";import{isBigIntDType as T,isComplexDType as k,promoteDTypes as et}from"../dtype.js";import{wasmDiff as ot}from"../wasm/diff.js";import{wasmGradient1D as rt}from"../wasm/gradient.js";function ft(e,r=1,I=-1){if(r<0)throw new Error(`order must be non-negative but got ${r}`);if(r===0)return e.copy();const x=Array.from(e.shape),h=x.length,b=I<0?h+I:I;if(b<0||b>=h)throw new Error(`axis ${I} is out of bounds for array of dimension ${h}`);if(x[b]<r+1)throw new Error(`diff requires at least ${r+1} elements along axis ${I}, but got ${x[b]}`);if(r===1&&!k(e.dtype)&&e.dtype!=="bool"){const N=ot(e,b);if(N)return N}let y=e;for(let N=0;N<r;N++)y=st(y,b);return y}function st(e,r){const I=Array.from(e.shape),x=I.length,h=I[r],b=[...I];b[r]=h-1;const y=e.dtype,N=k(y),g=y,D=C.zeros(b,g),M=D.data,F=e.strides,A=D.size,p=e.offset;for(let d=0;d<A;d++){let n=d;const m=new Array(x);for(let t=x-1;t>=0;t--)m[t]=n%b[t],n=Math.floor(n/b[t]);const E=[...m],a=[...m];a[r]=E[r]+1;let o=0,s=0;for(let t=0;t<x;t++)o+=E[t]*F[t],s+=a[t]*F[t];if(N){const t=e.data,c=t[(p+o)*2],l=t[(p+o)*2+1],i=t[(p+s)*2],u=t[(p+s)*2+1];M[d*2]=i-c,M[d*2+1]=u-l}else if(y==="bool"){const t=e.data[p+o],c=e.data[p+s];M[d]=t!==c?1:0}else if(T(y)){const t=e.data,c=t[p+o],l=t[p+s];M[d]=l-c}else{const t=Number(e.data[p+o]),c=Number(e.data[p+s]);M[d]=c-t}}return D}function dt(e,r=null,I=null){if(e.dtype==="bool")throw new TypeError("ufunc 'subtract' not supported for boolean dtype. The '-' operator is not supported for booleans, use 'bitwise_xor' instead.");const x=e.size,h=e.dtype,b=k(h),y=h,N=Math.max(0,x-1),g=I?I.length:0,D=r?r.length:0,M=g+N+D,F=C.zeros([M],y),A=F.data;let p=0;if(I)if(b)for(const d of I)A[p*2]=d,A[p*2+1]=0,p++;else for(const d of I)A[p++]=d;if(b)for(let d=0;d<N;d++){const n=e.iget(d),m=e.iget(d+1);A[p*2]=m.re-n.re,A[p*2+1]=m.im-n.im,p++}else if(T(h)){const d=e.data,n=e.offset;for(let m=0;m<N;m++)A[p++]=d[n+m+1]-d[n+m]}else for(let d=0;d<N;d++)A[p++]=Number(e.iget(d+1))-Number(e.iget(d));if(r)if(b)for(const d of r)A[p*2]=d,A[p*2+1]=0,p++;else for(const d of r)A[p++]=d;return F}function bt(e,r=1,I=null){if(e.dtype==="bool")throw new TypeError("ufunc 'subtract' not supported for boolean dtype. The '-' operator is not supported for booleans, use 'bitwise_xor' instead.");const h=Array.from(e.shape).length;let b;if(I===null)b=Array.from({length:h},(g,D)=>D);else if(typeof I=="number"){const g=I<0?h+I:I;if(g<0||g>=h)throw new Error(`axis ${I} is out of bounds for array of dimension ${h}`);b=[g]}else b=I.map(g=>{const D=g<0?h+g:g;if(D<0||D>=h)throw new Error(`axis ${g} is out of bounds for array of dimension ${h}`);return D});let y;if(typeof r=="number")y=b.map(()=>r);else{if(r.length!==b.length)throw new Error("Number of spacings must match number of axes");y=r}if(b.length===1&&e.shape.length===1&&!k(e.dtype)&&typeof r=="number"){const g=rt(e,y[0]);if(g)return g}const N=[];for(let g=0;g<b.length;g++)N.push(nt(e,b[g],y[g]));return N.length===1?N[0]:N}function nt(e,r,I){const x=Array.from(e.shape),h=x.length,b=x[r];if(b<2)throw new Error(`Shape of array along axis ${r} must be at least 2, but got ${b}`);const y=e.dtype,N=k(y),g=T(y)?"float64":y==="float16"||y==="float32"||N?y:"float64",D=C.zeros(x,g),M=D.data,F=e.strides,A=I,p=2*A,d=e.size,n=e.offset;for(let m=0;m<d;m++){let E=m;const a=new Array(h);for(let t=h-1;t>=0;t--)a[t]=E%x[t],E=Math.floor(E/x[t]);let o=n;for(let t=0;t<h;t++)o+=a[t]*F[t];const s=a[r];if(N){const t=e.data,c=M;let l,i;if(s===0){const u=[...a];u[r]=1;let f=0;for(let S=0;S<h;S++)f+=u[S]*F[S];const w=t[o*2],R=t[o*2+1],z=t[(n+f)*2],$=t[(n+f)*2+1];l=(z-w)/A,i=($-R)/A}else if(s===b-1){const u=[...a];u[r]=b-2;let f=0;for(let S=0;S<h;S++)f+=u[S]*F[S];const w=t[o*2],R=t[o*2+1],z=t[(n+f)*2],$=t[(n+f)*2+1];l=(w-z)/A,i=(R-$)/A}else{const u=[...a],f=[...a];u[r]=s+1,f[r]=s-1;let w=0,R=0;for(let q=0;q<h;q++)w+=u[q]*F[q],R+=f[q]*F[q];const z=t[(n+w)*2],$=t[(n+w)*2+1],S=t[(n+R)*2],B=t[(n+R)*2+1];l=(z-S)/p,i=($-B)/p}c[m*2]=l,c[m*2+1]=i}else{let t;if(s===0){const c=[...a];c[r]=1;let l=0;for(let f=0;f<h;f++)l+=c[f]*F[f];const i=(T(y),Number(e.data[o]));t=((T(y),Number(e.data[n+l]))-i)/A}else if(s===b-1){const c=[...a];c[r]=b-2;let l=0;for(let f=0;f<h;f++)l+=c[f]*F[f];const i=(T(y),Number(e.data[o])),u=(T(y),Number(e.data[n+l]));t=(i-u)/A}else{const c=[...a],l=[...a];c[r]=s+1,l[r]=s-1;let i=0,u=0;for(let R=0;R<h;R++)i+=c[R]*F[R],u+=l[R]*F[R];const f=(T(y),Number(e.data[n+i])),w=(T(y),Number(e.data[n+u]));t=(f-w)/p}M[m]=t}}return D}function pt(e,r,I=-1,x=-1,h=-1){if(e.dtype==="bool"||r.dtype==="bool")throw new TypeError("ufunc 'subtract' not supported for boolean dtype. The '-' operator is not supported for booleans, use 'bitwise_xor' instead.");const b=Array.from(e.shape),y=Array.from(r.shape),N=b.length,g=y.length,D=I<0?N+I:I,M=x<0?g+x:x;if(D<0||D>=N)throw new Error(`axisa ${I} is out of bounds for array of dimension ${N}`);if(M<0||M>=g)throw new Error(`axisb ${x} is out of bounds for array of dimension ${g}`);const F=b[D],A=y[M];if(F!==2&&F!==3)throw new Error(`incompatible dimensions for cross product (dimension must be 2 or 3, got ${F})`);if(A!==2&&A!==3)throw new Error(`incompatible dimensions for cross product (dimension must be 2 or 3, got ${A})`);const p=et(e.dtype,r.dtype),d=k(p),n=(a,o)=>{if(k(a.dtype)){const s=a.data,t=a.offset;return[s[(t+o)*2],s[(t+o)*2+1]]}return[Number(a.iget(o)),0]},m=(a,o,s,t)=>[a*s-o*t,a*t+o*s],E=(a,o,s,t)=>[a-s,o-t];if(N===1&&g===1&&F===3&&A===3){const a=C.zeros([3],p);if(d){const o=a.data,[s,t]=n(e,0),[c,l]=n(e,1),[i,u]=n(e,2),[f,w]=n(r,0),[R,z]=n(r,1),[$,S]=n(r,2),[B,q]=m(c,l,$,S),[v,P]=m(i,u,R,z),[O,U]=E(B,q,v,P),[J,V]=m(i,u,f,w),[G,j]=m(s,t,$,S),[H,K]=E(J,V,G,j),[L,Q]=m(s,t,R,z),[W,X]=m(c,l,f,w),[Y,Z]=E(L,Q,W,X);o[0]=O,o[1]=U,o[2]=H,o[3]=K,o[4]=Y,o[5]=Z}else{const o=a.data,s=Number(e.iget(0)),t=Number(e.iget(1)),c=Number(e.iget(2)),l=Number(r.iget(0)),i=Number(r.iget(1)),u=Number(r.iget(2));o[0]=t*u-c*i,o[1]=c*l-s*u,o[2]=s*i-t*l}return a}if(N===1&&g===1&&F===2&&A===2){const a=C.zeros([],p);if(d){const o=a.data,[s,t]=n(e,0),[c,l]=n(e,1),[i,u]=n(r,0),[f,w]=n(r,1),[R,z]=m(s,t,f,w),[$,S]=m(c,l,i,u),[B,q]=E(R,z,$,S);o[0]=B,o[1]=q}else{const o=Number(e.iget(0)),s=Number(e.iget(1)),t=Number(r.iget(0)),c=Number(r.iget(1));a.data[0]=o*c-s*t}return a}if(N===1&&g===1){if(F===2&&A===3){const a=C.zeros([3],p);if(d){const o=a.data,[s,t]=n(e,0),[c,l]=n(e,1),[i,u]=n(r,0),[f,w]=n(r,1),[R,z]=n(r,2),[$,S]=m(c,l,R,z),[B,q]=m(s,t,R,z),v=-B,P=-q,[O,U]=m(s,t,f,w),[J,V]=m(c,l,i,u),[G,j]=E(O,U,J,V);o[0]=$,o[1]=S,o[2]=v,o[3]=P,o[4]=G,o[5]=j}else{const o=a.data,s=Number(e.iget(0)),t=Number(e.iget(1)),c=Number(r.iget(0)),l=Number(r.iget(1)),i=Number(r.iget(2));o[0]=t*i,o[1]=-s*i,o[2]=s*l-t*c}return a}else if(F===3&&A===2){const a=C.zeros([3],p);if(d){const o=a.data,[s,t]=n(e,0),[c,l]=n(e,1),[i,u]=n(e,2),[f,w]=n(r,0),[R,z]=n(r,1),[$,S]=m(i,u,R,z),B=-$,q=-S,[v,P]=m(i,u,f,w),[O,U]=m(s,t,R,z),[J,V]=m(c,l,f,w),[G,j]=E(O,U,J,V);o[0]=B,o[1]=q,o[2]=v,o[3]=P,o[4]=G,o[5]=j}else{const o=a.data,s=Number(e.iget(0)),t=Number(e.iget(1)),c=Number(e.iget(2)),l=Number(r.iget(0)),i=Number(r.iget(1));o[0]=-c*i,o[1]=c*l,o[2]=s*i-t*l}return a}}if(N===2&&g===2&&D===1&&M===1){const a=b[0];if(y[0]!==a)throw new Error(`Shape mismatch: a has ${a} vectors, b has ${y[0]} vectors`);if(F===3&&A===3){const o=C.zeros([a,3],p);if(d){const s=o.data;for(let t=0;t<a;t++){const[c,l]=n(e,t*3),[i,u]=n(e,t*3+1),[f,w]=n(e,t*3+2),[R,z]=n(r,t*3),[$,S]=n(r,t*3+1),[B,q]=n(r,t*3+2),[v,P]=m(i,u,B,q),[O,U]=m(f,w,$,S),[J,V]=E(v,P,O,U),[G,j]=m(f,w,R,z),[H,K]=m(c,l,B,q),[L,Q]=E(G,j,H,K),[W,X]=m(c,l,$,S),[Y,Z]=m(i,u,R,z),[_,tt]=E(W,X,Y,Z);s[t*3*2]=J,s[t*3*2+1]=V,s[(t*3+1)*2]=L,s[(t*3+1)*2+1]=Q,s[(t*3+2)*2]=_,s[(t*3+2)*2+1]=tt}}else{const s=o.data;for(let t=0;t<a;t++){const c=Number(e.iget(t*3)),l=Number(e.iget(t*3+1)),i=Number(e.iget(t*3+2)),u=Number(r.iget(t*3)),f=Number(r.iget(t*3+1)),w=Number(r.iget(t*3+2));s[t*3]=l*w-i*f,s[t*3+1]=i*u-c*w,s[t*3+2]=c*f-l*u}}return o}if(F===2&&A===2){const o=C.zeros([a],p);if(d){const s=o.data;for(let t=0;t<a;t++){const[c,l]=n(e,t*2),[i,u]=n(e,t*2+1),[f,w]=n(r,t*2),[R,z]=n(r,t*2+1),[$,S]=m(c,l,R,z),[B,q]=m(i,u,f,w),[v,P]=E($,S,B,q);s[t*2]=v,s[t*2+1]=P}}else{const s=o.data;for(let t=0;t<a;t++){const c=Number(e.iget(t*2)),l=Number(e.iget(t*2+1)),i=Number(r.iget(t*2)),u=Number(r.iget(t*2+1));s[t]=c*u-l*i}}return o}}throw new Error(`cross product not implemented for arrays with shapes ${JSON.stringify(b)} and ${JSON.stringify(y)}`)}export{pt as cross,ft as diff,dt as ediff1d,bt as gradient};
@@ -1 +1 @@
1
- import{ArrayStorage as z}from"../storage.js";import{elementwiseUnaryOp as g}from"../internal/compute.js";import{isComplexDType as F}from"../dtype.js";import{wasmSinh as S}from"../wasm/sinh.js";import{wasmCosh as q}from"../wasm/cosh.js";import{wasmTanh as T}from"../wasm/tanh.js";function U(t){const o=t.dtype;if(F(o)){const m=Array.from(t.shape),y=t.size,e=t.data,n=z.zeros(m,o),a=n.data;for(let s=0;s<y;s++){const r=e[s*2],c=e[s*2+1];a[s*2]=Math.sinh(r)*Math.cos(c),a[s*2+1]=Math.cosh(r)*Math.sin(c)}return n}const h=S(t);return h||g(t,Math.sinh,!1)}function j(t){const o=t.dtype;if(F(o)){const m=Array.from(t.shape),y=t.size,e=t.data,n=z.zeros(m,o),a=n.data;for(let s=0;s<y;s++){const r=e[s*2],c=e[s*2+1];a[s*2]=Math.cosh(r)*Math.cos(c),a[s*2+1]=Math.sinh(r)*Math.sin(c)}return n}const h=q(t);return h||g(t,Math.cosh,!1)}function k(t){const o=t.dtype;if(F(o)){const m=Array.from(t.shape),y=t.size,e=t.data,n=z.zeros(m,o),a=n.data;for(let s=0;s<y;s++){const r=e[s*2],c=e[s*2+1],p=Math.cosh(2*r)+Math.cos(2*c);a[s*2]=Math.sinh(2*r)/p,a[s*2+1]=Math.sin(2*c)/p}return n}const h=T(t);return h||g(t,Math.tanh,!1)}function B(t){const o=t.dtype;if(F(o)){const h=Array.from(t.shape),m=t.size,y=t.data,e=z.zeros(h,o),n=e.data;for(let a=0;a<m;a++){const s=y[a*2],r=y[a*2+1],c=s*s-r*r,p=2*s*r,l=c+1,i=p,u=Math.sqrt(l*l+i*i),M=Math.sqrt((u+l)/2),d=(i>=0?1:-1)*Math.sqrt((u-l)/2),A=s+M,f=r+d,D=Math.sqrt(A*A+f*f);n[a*2]=Math.log(D),n[a*2+1]=Math.atan2(f,A)}return e}return g(t,Math.asinh,!1)}function E(t){const o=t.dtype;if(F(o)){const h=Array.from(t.shape),m=t.size,y=t.data,e=z.zeros(h,o),n=e.data;for(let a=0;a<m;a++){const s=y[a*2],r=y[a*2+1],c=s*s-r*r,p=2*s*r,l=c-1,i=p,u=Math.sqrt(l*l+i*i),M=Math.sqrt((u+l)/2),d=(i>=0?1:-1)*Math.sqrt((u-l)/2),A=s+M,f=r+d,D=Math.sqrt(A*A+f*f);let I=Math.log(D),R=Math.atan2(f,A);Math.abs(r)<1e-15&&s<1&&(R=-R),n[a*2]=I,n[a*2+1]=R}return e}return g(t,Math.acosh,!1)}function G(t){const o=t.dtype;if(F(o)){const h=Array.from(t.shape),m=t.size,y=t.data,e=z.zeros(h,o),n=e.data;for(let a=0;a<m;a++){const s=y[a*2],r=y[a*2+1],c=1+s,p=r,l=1-s,i=-r,u=l*l+i*i,M=(c*l+p*i)/u,d=(p*l-c*i)/u,A=Math.sqrt(M*M+d*d),f=Math.log(A),D=Math.atan2(d,M);n[a*2]=f/2,n[a*2+1]=D/2}return e}return g(t,Math.atanh,!1)}export{E as arccosh,B as arcsinh,G as arctanh,j as cosh,U as sinh,k as tanh};
1
+ import{ArrayStorage as g}from"../storage.js";import{elementwiseUnaryOp as z}from"../internal/compute.js";import{isComplexDType as F}from"../dtype.js";import{wasmSinh as S}from"../wasm/sinh.js";import{wasmCosh as q}from"../wasm/cosh.js";import{wasmTanh as T}from"../wasm/tanh.js";function U(t){const o=t.dtype;if(F(o)){const i=Array.from(t.shape),h=t.size,e=t.data,n=g.empty(i,o),s=n.data;for(let a=0;a<h;a++){const r=e[a*2],c=e[a*2+1];s[a*2]=Math.sinh(r)*Math.cos(c),s[a*2+1]=Math.cosh(r)*Math.sin(c)}return n}const y=S(t);return y||z(t,Math.sinh,!1)}function j(t){const o=t.dtype;if(F(o)){const i=Array.from(t.shape),h=t.size,e=t.data,n=g.empty(i,o),s=n.data;for(let a=0;a<h;a++){const r=e[a*2],c=e[a*2+1];s[a*2]=Math.cosh(r)*Math.cos(c),s[a*2+1]=Math.sinh(r)*Math.sin(c)}return n}const y=q(t);return y||z(t,Math.cosh,!1)}function k(t){const o=t.dtype;if(F(o)){const i=Array.from(t.shape),h=t.size,e=t.data,n=g.empty(i,o),s=n.data;for(let a=0;a<h;a++){const r=e[a*2],c=e[a*2+1],p=Math.cosh(2*r)+Math.cos(2*c);s[a*2]=Math.sinh(2*r)/p,s[a*2+1]=Math.sin(2*c)/p}return n}const y=T(t);return y||z(t,Math.tanh,!1)}function B(t){const o=t.dtype;if(F(o)){const y=Array.from(t.shape),i=t.size,h=t.data,e=g.empty(y,o),n=e.data;for(let s=0;s<i;s++){const a=h[s*2],r=h[s*2+1],c=a*a-r*r,p=2*a*r,m=c+1,l=p,u=Math.sqrt(m*m+l*l),M=Math.sqrt((u+m)/2),d=(l>=0?1:-1)*Math.sqrt((u-m)/2),A=a+M,f=r+d,D=Math.sqrt(A*A+f*f);n[s*2]=Math.log(D),n[s*2+1]=Math.atan2(f,A)}return e}return z(t,Math.asinh,!1)}function E(t){const o=t.dtype;if(F(o)){const y=Array.from(t.shape),i=t.size,h=t.data,e=g.empty(y,o),n=e.data;for(let s=0;s<i;s++){const a=h[s*2],r=h[s*2+1],c=a*a-r*r,p=2*a*r,m=c-1,l=p,u=Math.sqrt(m*m+l*l),M=Math.sqrt((u+m)/2),d=(l>=0?1:-1)*Math.sqrt((u-m)/2),A=a+M,f=r+d,D=Math.sqrt(A*A+f*f);let I=Math.log(D),R=Math.atan2(f,A);Math.abs(r)<1e-15&&a<1&&(R=-R),n[s*2]=I,n[s*2+1]=R}return e}return z(t,Math.acosh,!1)}function G(t){const o=t.dtype;if(F(o)){const y=Array.from(t.shape),i=t.size,h=t.data,e=g.empty(y,o),n=e.data;for(let s=0;s<i;s++){const a=h[s*2],r=h[s*2+1],c=1+a,p=r,m=1-a,l=-r,u=m*m+l*l,M=(c*m+p*l)/u,d=(p*m-c*l)/u,A=Math.sqrt(M*M+d*d),f=Math.log(A),D=Math.atan2(d,M);n[s*2]=f/2,n[s*2+1]=D/2}return e}return z(t,Math.atanh,!1)}export{E as arccosh,B as arcsinh,G as arctanh,j as cosh,U as sinh,k as tanh};
@@ -1,2 +1,2 @@
1
- import{ArrayStorage as z}from"../storage.js";import{promoteDTypes as q,isComplexDType as T,isBigIntDType as _,hasFloat16 as tt,getTypedArrayConstructor as ut}from"../dtype.js";import{Complex as $}from"../complex.js";import{wasmMatmul as Y}from"../wasm/matmul.js";import{wasmInner as vt}from"../wasm/inner.js";import{wasmDot1D as it}from"../wasm/dot.js";import{wasmMatvec as mt}from"../wasm/matvec.js";import{wasmVecmat as ft}from"../wasm/vecmat.js";import{wasmOuter as $t}from"../wasm/outer.js";import{wasmVecdot as zt}from"../wasm/vecdot.js";import{wasmVdotComplex as Mt}from"../wasm/vdot.js";import{wasmKron as Ct}from"../wasm/kron.js";import{wasmCross as Et}from"../wasm/cross.js";import{wasmQr as Ft}from"../wasm/qr.js";import{wasmCholesky as jt,wasmCholeskyF32 as Vt}from"../wasm/cholesky.js";import{wasmSvd as Bt}from"../wasm/svd.js";import*as R from"./shape.js";const Rt=new Int32Array(1),kt=new Uint32Array(1),qt=new Int16Array(1),Tt=new Uint16Array(1),_t=new Int8Array(1),Ot=new Uint8Array(1),Ut={int32:Rt,uint32:kt,int16:qt,uint16:Tt,int8:_t,uint8:Ot};function L(t){return Ut[t]??null}function J(t,e){if(t instanceof $||e instanceof $){const g=t instanceof $?t:new $(Number(t),0),f=e instanceof $?e:new $(Number(e),0);return g.mul(f)}return typeof t=="bigint"&&typeof e=="bigint"?Number(t*e):Number(t)*Number(e)}function Lt(t,e,g,f,l,u,p,d,b){for(let c=0;c<g;c++)for(let s=0;s<u;s++)for(let i=0;i<p;i++){let n=0;for(let a=0;a<d;a++)n+=t[e+c*d+a]*f[l+s*d*p+a*p+i];b[c*u*p+s*p+i]=n}}function Pt(t,e,g,f,l,u,p,d,b,c){for(let s=0;s<g;s++)for(let i=0;i<p;i++){let n=0;for(let r=0;r<b;r++){const o=f===1?r:s*b+r,m=d===1?r:i*b+r;n+=t[e+o]*l[u+m]}const a=g===1?i:s*p+i;c[a]=n}}function Jt(t,e,g,f,l,u,p,d,b,c,s,i){for(let r=0;r<g*f;r++)s[r]=0;const n=t==="transpose",a=e==="transpose";if(!n&&!a)for(let r=0;r<g;r++)for(let o=0;o<f;o++){let m=0;for(let y=0;y<l;y++)m+=(p[r*d+y]??0)*(b[y*c+o]??0);s[r*i+o]=u*m}else if(n&&!a)for(let r=0;r<g;r++)for(let o=0;o<f;o++){let m=0;for(let y=0;y<l;y++)m+=(p[y*d+r]??0)*(b[y*c+o]??0);s[r*i+o]=u*m}else if(!n&&a)for(let r=0;r<g;r++)for(let o=0;o<f;o++){let m=0;for(let y=0;y<l;y++)m+=(p[r*d+y]??0)*(b[o*c+y]??0);s[r*i+o]=u*m}else for(let r=0;r<g;r++)for(let o=0;o<f;o++){let m=0;for(let y=0;y<l;y++)m+=(p[y*d+r]??0)*(b[o*c+y]??0);s[r*i+o]=u*m}}function Z(t,e){const g=t.ndim,f=e.ndim,l=T(t.dtype)||T(e.dtype);if(g===0||f===0){const u=g===0?t.get():null,p=f===0?e.get():null;if(g===0&&f===0)return J(u,p);if(g===0){const d=q(t.dtype,e.dtype),b=z.zeros([...e.shape],d),c=(s,i)=>{const n=new Array(i.length);let a=s;for(let r=i.length-1;r>=0;r--)n[r]=a%i[r],a=Math.floor(a/i[r]);return n};for(let s=0;s<e.size;s++){const i=c(s,e.shape),n=e.get(...i);b.set(i,J(u,n))}return b}else{const d=q(t.dtype,e.dtype),b=z.zeros([...t.shape],d),c=(s,i)=>{const n=new Array(i.length);let a=s;for(let r=i.length-1;r>=0;r--)n[r]=a%i[r],a=Math.floor(a/i[r]);return n};for(let s=0;s<t.size;s++){const i=c(s,t.shape),n=t.get(...i);b.set(i,J(n,p))}return b}}if(g===1&&f===1){if(t.shape[0]!==e.shape[0])throw new Error(`dot: incompatible shapes (${t.shape[0]},) and (${e.shape[0]},)`);const u=it(t,e);if(u!==null)return u;const p=t.shape[0];if(l){let s=0,i=0;for(let n=0;n<p;n++){const a=t.get(n),r=e.get(n),o=J(a,r);o instanceof $?(s+=o.re,i+=o.im):s+=o}return new $(s,i)}const d=q(t.dtype,e.dtype),b=L(d);if(b){b[0]=0;for(let s=0;s<p;s++)b[0]+=Number(t.get(s))*Number(e.get(s));return b[0]}if(d==="float16"&&tt){const s=new Float16Array(1);s[0]=0;for(let i=0;i<p;i++)s[0]+=Number(t.get(i))*Number(e.get(i));return Number(s[0])}if(d==="float32"){const s=new Float32Array(1);s[0]=0;for(let i=0;i<p;i++)s[0]+=Number(t.get(i))*Number(e.get(i));return s[0]}let c=0;for(let s=0;s<p;s++){const i=t.get(s),n=e.get(s);typeof i=="bigint"&&typeof n=="bigint"?c=Number(c)+Number(i*n):c+=Number(i)*Number(n)}return c}if(g===2&&f===2)return X(t,e);if(g===2&&f===1){const[u,p]=t.shape,d=e.shape[0];if(p!==d)throw new Error(`dot: incompatible shapes (${u},${p}) and (${d},)`);const b=mt(t,e);if(b)return b;const c=q(t.dtype,e.dtype),s=z.zeros([u],c);if(l)for(let i=0;i<u;i++){let n=0,a=0;for(let r=0;r<p;r++){const o=t.get(i,r),m=e.get(r),y=o instanceof $?o:new $(Number(o),0),w=m instanceof $?m:new $(Number(m),0);n+=y.re*w.re-y.im*w.im,a+=y.re*w.im+y.im*w.re}s.set([i],new $(n,a))}else{const i=L(c);for(let n=0;n<u;n++)if(i){i[0]=0;for(let a=0;a<p;a++)i[0]+=Number(t.get(n,a))*Number(e.get(a));s.set([n],i[0])}else{let a=0;for(let r=0;r<p;r++){const o=t.get(n,r),m=e.get(r);typeof o=="bigint"&&typeof m=="bigint"?a=Number(a)+Number(o*m):a+=Number(o)*Number(m)}s.set([n],a)}}return s}if(g===1&&f===2){const u=t.shape[0],[p,d]=e.shape;if(u!==p)throw new Error(`dot: incompatible shapes (${u},) and (${p},${d})`);const b=ft(t,e);if(b)return b;const c=q(t.dtype,e.dtype),s=z.zeros([d],c);if(l)for(let i=0;i<d;i++){let n=0,a=0;for(let r=0;r<u;r++){const o=t.get(r),m=e.get(r,i),y=o instanceof $?o:new $(Number(o),0),w=m instanceof $?m:new $(Number(m),0);n+=y.re*w.re-y.im*w.im,a+=y.re*w.im+y.im*w.re}s.set([i],new $(n,a))}else{const i=L(c);for(let n=0;n<d;n++)if(i){i[0]=0;for(let a=0;a<u;a++)i[0]+=Number(t.get(a))*Number(e.get(a,n));s.set([n],i[0])}else{let a=0;for(let r=0;r<u;r++){const o=t.get(r),m=e.get(r,n);typeof o=="bigint"&&typeof m=="bigint"?a=Number(a)+Number(o*m):a+=Number(o)*Number(m)}s.set([n],a)}}return s}if(g>2&&f===1){const u=t.shape[g-1],p=e.shape[0];if(u!==p)throw new Error(`dot: incompatible shapes ${JSON.stringify(t.shape)} and (${p},)`);const d=[...t.shape.slice(0,-1)],b=q(t.dtype,e.dtype),c=z.zeros(d,b),s=d.reduce((i,n)=>i*n,1);if(l)for(let i=0;i<s;i++){let n=0,a=0,r=i;const o=[];for(let m=d.length-1;m>=0;m--)o[m]=r%d[m],r=Math.floor(r/d[m]);for(let m=0;m<u;m++){const y=[...o,m],w=t.get(...y),h=e.get(m),A=w instanceof $?w:new $(Number(w),0),N=h instanceof $?h:new $(Number(h),0);n+=A.re*N.re-A.im*N.im,a+=A.re*N.im+A.im*N.re}c.set(o,new $(n,a))}else{const i=L(b);for(let n=0;n<s;n++){let a=n;const r=[];for(let o=d.length-1;o>=0;o--)r[o]=a%d[o],a=Math.floor(a/d[o]);if(i){i[0]=0;for(let o=0;o<u;o++){const m=[...r,o];i[0]+=Number(t.get(...m))*Number(e.get(o))}c.set(r,i[0])}else{let o=0;for(let m=0;m<u;m++){const y=[...r,m],w=t.get(...y),h=e.get(m);typeof w=="bigint"&&typeof h=="bigint"?o=Number(o)+Number(w*h):o+=Number(w)*Number(h)}c.set(r,o)}}}return c}if(g===1&&f>2){const u=t.shape[0],p=1,d=e.shape[p];if(u!==d)throw new Error(`dot: incompatible shapes (${u},) and ${JSON.stringify(e.shape)}`);const b=[...e.shape.slice(0,p),...e.shape.slice(p+1)],c=q(t.dtype,e.dtype),s=z.zeros(b,c),i=b.reduce((n,a)=>n*a,1);if(l)for(let n=0;n<i;n++){let a=n;const r=[];for(let h=b.length-1;h>=0;h--)r[h]=a%b[h],a=Math.floor(a/b[h]);const o=r.slice(0,p),m=r.slice(p);let y=0,w=0;for(let h=0;h<u;h++){const A=t.get(h),N=[...o,h,...m],I=e.get(...N),S=A instanceof $?A:new $(Number(A),0),x=I instanceof $?I:new $(Number(I),0);y+=S.re*x.re-S.im*x.im,w+=S.re*x.im+S.im*x.re}s.set(r,new $(y,w))}else{const n=L(c);for(let a=0;a<i;a++){let r=a;const o=[];for(let w=b.length-1;w>=0;w--)o[w]=r%b[w],r=Math.floor(r/b[w]);const m=o.slice(0,p),y=o.slice(p);if(n){n[0]=0;for(let w=0;w<u;w++){const h=[...m,w,...y];n[0]+=Number(t.get(w))*Number(e.get(...h))}s.set(o,n[0])}else{let w=0;for(let h=0;h<u;h++){const A=t.get(h),N=[...m,h,...y],I=e.get(...N);typeof A=="bigint"&&typeof I=="bigint"?w=Number(w)+Number(A*I):w+=Number(A)*Number(I)}s.set(o,w)}}}return s}if(g>=2&&f>=2&&!(g===2&&f===2)){const u=t.shape[g-1],p=e.shape[f-2];if(u!==p)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[f-1]],b=q(t.dtype,e.dtype),c=z.zeros(d,b),s=t.shape.slice(0,-1).reduce((r,o)=>r*o,1),i=e.shape.slice(0,-2).reduce((r,o)=>r*o,1),n=e.shape[f-1],a=u;if(l)for(let r=0;r<s;r++)for(let o=0;o<i;o++)for(let m=0;m<n;m++){let y=0,w=0;for(let N=0;N<a;N++){const I=[];let S=r;for(let F=t.shape.length-2;F>=0;F--)I.unshift(S%t.shape[F]),S=Math.floor(S/t.shape[F]);I.push(N);const x=t.get(...I),D=[];let v=o;for(let F=e.shape.length-3;F>=0;F--)D.unshift(v%e.shape[F]),v=Math.floor(v/e.shape[F]);D.push(N,m);const M=e.get(...D),C=x instanceof $?x:new $(Number(x),0),E=M instanceof $?M:new $(Number(M),0);y+=C.re*E.re-C.im*E.im,w+=C.re*E.im+C.im*E.re}const h=r*i*n+o*n+m,A=c.data;A[h*2]=y,A[h*2+1]=w}else if(t.isCContiguous&&e.isCContiguous&&!_(t.dtype)&&!_(e.dtype)&&!L(b))Lt(t.data,t.offset,s,e.data,e.offset,i,n,a,c.data);else{const r=L(b);for(let o=0;o<s;o++)for(let m=0;m<i;m++)for(let y=0;y<n;y++){const w=o*i*n+m*n+y;if(r){r[0]=0;for(let h=0;h<a;h++){const A=o*a+h,N=m*a*n+h*n+y;r[0]+=Number(t.iget(A))*Number(e.iget(N))}c.data[w]=r[0]}else{let h=0;for(let A=0;A<a;A++){const N=o*a+A,I=m*a*n+A*n+y,S=t.iget(N),x=e.iget(I);typeof S=="bigint"&&typeof x=="bigint"?h=Number(h)+Number(S*x):h+=Number(S)*Number(x)}c.data[w]=h}}}return c}throw new Error(`dot: unexpected combination of dimensions ${g}D \xB7 ${f}D`)}function G(t,e){const[g=0,f=0]=t.shape,[l=0,u=0]=e.shape;if(f!==l)throw new Error(`matmul shape mismatch: (${g},${f}) @ (${l},${u})`);const p=q(t.dtype,e.dtype);if(T(p)){const I=z.zeros([g,u],p),S=I.data;for(let x=0;x<g;x++)for(let D=0;D<u;D++){let v=0,M=0;for(let E=0;E<f;E++){const F=t.iget(x*f+E),j=e.iget(E*u+D);v+=F.re*j.re-F.im*j.im,M+=F.re*j.im+F.im*j.re}const C=x*u+D;S[C*2]=v,S[C*2+1]=M}return I}if(p.startsWith("int")||p.startsWith("uint")||p==="bool"){const I=z.zeros([g,u],p),S=I.data,x=t.offset,D=e.offset,[v=0,M=0]=t.strides,[C=0,E=0]=e.strides;if(_(p)){const F=t.data,j=e.data,V=S;for(let k=0;k<g;k++)for(let B=0;B<u;B++){let W=0n;for(let U=0;U<f;U++)W+=F[x+k*v+U*M]*j[D+U*C+B*E];V[k*u+B]=W}}else{const F=t.data,j=e.data,V=S;for(let k=0;k<g;k++)for(let B=0;B<u;B++){let W=0;for(let U=0;U<f;U++)W+=F[x+k*v+U*M]*j[D+U*C+B*E];V[k*u+B]=W}}return I}const d=p;if(d!=="float64"&&d!=="float32"&&d!=="float16")throw new Error(`matmul currently only supports float64/float32/float16, got ${d}`);const b=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 c=b(t),s=b(e);t.offset>0&&(c=c.subarray(t.offset)),e.offset>0&&(s=s.subarray(e.offset));const[i=0,n=0]=t.strides,[a=0,r=0]=e.strides,o=n>i,m=r>a,y=o?"transpose":"no-transpose",w=m?"transpose":"no-transpose";let h,A;o?h=n:h=i,m?A=r:A=a;const N=z.zeros([g,u],"float64");if(Jt(y,w,g,u,f,1,c,h,s,A,N.data,u),d==="float32"||d==="float16"){const I=z.zeros([g,u],d),S=N.data,x=I.data;for(let D=0;D<S.length;D++)x[D]=S[D];return I}return N}function Xt(t,e){const g=Math.max(t.length,e.length),f=new Array(g);for(let l=0;l<g;l++){const u=t[t.length-g+l]??1,p=e[e.length-g+l]??1;if(u!==p&&u!==1&&p!==1)throw new Error(`matmul: cannot broadcast batch shapes ${JSON.stringify(t)} and ${JSON.stringify(e)}`);f[l]=Math.max(u,p)}return f}function et(t,e){const g=new Array(e.length);let f=t;for(let l=e.length-1;l>=0;l--)g[l]=f%e[l],f=Math.floor(f/e[l]);return g}function pt(t,e){const g=e.length;let f=0;for(let l=0;l<g;l++){const u=t.length-g+l,p=u>=0?t[u]:0,d=e[l]===1?0:p;f=f*e[l]+d}return f}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 ht(t,e,g,f){const l=t.ndim,u=g*f,p=T(t.dtype),d=_(t.dtype),b=p?2:1,c=ut(t.dtype),s=new c(u*b);if(t.isCContiguous){const i=(t.offset+e*u)*b;if(d){const n=t.data,a=s;for(let r=0;r<u*b;r++)a[r]=n[i+r]}else{const n=t.data,a=s;for(let r=0;r<u*b;r++)a[r]=n[i+r]}}else{const i=e*u;for(let n=0;n<u;n++){let r=i+n,o=t.offset;for(let m=l-1;m>=0;m--){const y=t.shape[m];o+=r%y*t.strides[m],r=Math.floor(r/y)}if(p){const m=t.data,y=s;y[n*2]=m[o*2],y[n*2+1]=m[o*2+1]}else s[n]=t.data[o]}}return z.fromData(s,[g,f],t.dtype)}function X(t,e){if(t.ndim===1&&e.ndim===1){const C=it(t,e);if(C!==null){const E=q(t.dtype,e.dtype),F=z.zeros([],E);return C instanceof $?(F.data[0]=C.re,F.data[1]=C.im):F.data[0]=C,F}}else if(t.ndim>=2&&e.ndim===1){if(t.ndim===2){const C=mt(t,e);if(C)return C}}else if(t.ndim===1&&e.ndim>=2&&e.ndim===2){const C=ft(t,e);if(C)return C}const g=Y(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 f=t.ndim===1,l=e.ndim===1,u=f?R.reshape(t,[1,t.shape[0]]):t,p=l?R.reshape(e,[e.shape[0],1]):e,d=u.ndim,b=p.ndim,c=u.shape[d-2],s=u.shape[d-1],i=p.shape[b-2],n=p.shape[b-1];if(s!==i)throw new Error(`matmul: shape mismatch: (...,${c},${s}) @ (...,${i},${n}): inner dimensions must match`);if(d===2&&b===2){const C=G(u,p);return f&&l?R.reshape(C,[]):f?R.reshape(C,[n]):l?R.reshape(C,[c]):C}const a=Array.from(u.shape).slice(0,d-2),r=Array.from(p.shape).slice(0,b-2),o=Xt(a,r),m=o.reduce((C,E)=>C*E,1),y=q(u.dtype,p.dtype),w=[];for(let C=0;C<m;C++){const E=et(C,o),F=pt(E,a),j=pt(E,r),V=ht(u,F,c,s),k=ht(p,j,s,n);w.push(G(V,k))}const h=c*n,A=T(y),N=_(y),I=A?2:1,S=ut(y),x=m*h*I,D=new S(x);for(let C=0;C<m;C++){const F=w[C].data,j=C*h*I;if(N){const V=F,k=D;for(let B=0;B<h;B++)k[j+B]=V[B]}else{const V=F,k=D;for(let B=0;B<h*I;B++)k[j+B]=V[B]}}const v=[...o,c,n],M=z.fromData(D,v,y);return f&&l?R.reshape(M,[...o]):f?R.reshape(M,[...o,n]):l?R.reshape(M,[...o,c]):M}function we(t,e=0,g=0,f=1){if(t.ndim<2)throw new Error(`trace requires at least 2D array, got ${t.ndim}D`);if(t.ndim===2){const a=g<0?t.ndim+g:g,r=f<0?t.ndim+f:f,o=t.shape[a],m=t.shape[r],y=Math.min(o,m)-Math.max(0,e);if(y<=0)return T(t.dtype)?new $(0,0):0;if(T(t.dtype)){let h=0,A=0;for(let N=0;N<y;N++){const I=e>=0?N:N-e,S=e>=0?N+e:N,x=[0,0];x[a]=I,x[r]=S;const D=t.get(...x);h+=D.re,A+=D.im}return new $(h,A)}if(t.dtype==="float16"&&tt){const h=new Float16Array(1);h[0]=0;for(let A=0;A<y;A++){const N=e>=0?A:A-e,I=e>=0?A+e:A,S=[0,0];S[a]=N,S[r]=I,h[0]+=Number(t.get(...S))}return Number(h[0])}if(t.dtype==="float32"){const h=new Float32Array(1);h[0]=0;for(let A=0;A<y;A++){const N=e>=0?A:A-e,I=e>=0?A+e:A,S=[0,0];S[a]=N,S[r]=I,h[0]+=Number(t.get(...S))}return h[0]}let w=0;for(let h=0;h<y;h++){const A=e>=0?h:h-e,N=e>=0?h+e:h,I=[0,0];I[a]=A,I[r]=N;const S=t.get(...I);typeof S=="bigint"?w=(typeof w=="bigint"?w:BigInt(w))+S:w=(typeof w=="bigint"?Number(w):w)+S}return w}const l=t.ndim,u=(g%l+l)%l,p=(f%l+l)%l;if(u===p)throw new Error("trace: axis1 and axis2 must be different");const d=t.shape[u],b=t.shape[p],c=Math.min(d,b)-Math.max(0,e),s=Array.from(t.shape).filter((a,r)=>r!==u&&r!==p),i=s.reduce((a,r)=>a*r,1),n=z.zeros(s.length>0?s:[1],t.dtype);if(c<=0)return n.shape.length===0?0:n;for(let a=0;a<i;a++){const r=new Array(s.length);let o=a;for(let A=s.length-1;A>=0;A--)r[A]=o%s[A],o=Math.floor(o/s[A]);let m=0,y=0,w=0;const h=T(t.dtype);for(let A=0;A<c;A++){const N=e>=0?A:A-e,I=e>=0?A+e:A,S=new Array(l);let x=0;for(let v=0;v<l;v++)v===u?S[v]=N:v===p?S[v]=I:S[v]=r[x++];const D=t.get(...S);h?(y+=D.re,w+=D.im):typeof D=="bigint"?m=(typeof m=="bigint"?m:BigInt(m))+D:m=(typeof m=="bigint"?Number(m):m)+D}h?n.iset(a,new $(y,w)):n.iset(a,typeof m=="bigint"?Number(m):m)}return n}function H(t,e){return R.transpose(t,e)}function Ae(t,e){const g=t.ndim,f=e.ndim,l=T(t.dtype)||T(e.dtype);if(g===0||f===0)return Z(t,e);const u=t.shape[g-1],p=e.shape[f-1];if(u!==p)throw new Error(`inner: incompatible shapes - last dimensions ${u} and ${p} don't match`);const d=vt(t,e);if(d!==null)return d;if(g===1&&f===1)return Z(t,e);const b=[...t.shape.slice(0,-1),...e.shape.slice(0,-1)],c=q(t.dtype,e.dtype),s=z.zeros(b,c),i=g===1?1:t.shape.slice(0,-1).reduce((r,o)=>r*o,1),n=f===1?1:e.shape.slice(0,-1).reduce((r,o)=>r*o,1),a=u;if(l)for(let r=0;r<i;r++)for(let o=0;o<n;o++){let m=0,y=0;for(let A=0;A<a;A++){let N,I;if(g===1)N=t.get(A);else{const D=[];let v=r;const M=t.shape.slice(0,-1);for(let C=M.length-1;C>=0;C--)D.unshift(v%M[C]),v=Math.floor(v/M[C]);D.push(A),N=t.get(...D)}if(f===1)I=e.get(A);else{const D=[];let v=o;const M=e.shape.slice(0,-1);for(let C=M.length-1;C>=0;C--)D.unshift(v%M[C]),v=Math.floor(v/M[C]);D.push(A),I=e.get(...D)}const S=N instanceof $?N:new $(Number(N),0),x=I instanceof $?I:new $(Number(I),0);m+=S.re*x.re-S.im*x.im,y+=S.re*x.im+S.im*x.re}if(b.length===0)return new $(m,y);const w=i===1?o:r*n+o,h=s.data;h[w*2]=m,h[w*2+1]=y}else{const r=L(c);if(t.isCContiguous&&e.isCContiguous&&!_(t.dtype)&&!_(e.dtype)&&!r){if(b.length===0){const o=t.data,m=e.data,y=t.offset,w=e.offset;let h=0;for(let A=0;A<a;A++)h+=o[y+A]*m[w+A];return h}Pt(t.data,t.offset,i,g,e.data,e.offset,n,f,a,s.data)}else for(let o=0;o<i;o++)for(let m=0;m<n;m++)if(r){r[0]=0;for(let w=0;w<a;w++){const h=g===1?w:o*a+w,A=f===1?w:m*a+w;r[0]+=Number(t.iget(h))*Number(e.iget(A))}if(b.length===0)return r[0];const y=i===1?m:o*n+m;s.data[y]=r[0]}else{let y=0;for(let h=0;h<a;h++){const A=g===1?h:o*a+h,N=f===1?h:m*a+h,I=t.iget(A),S=e.iget(N);typeof I=="bigint"&&typeof S=="bigint"?y=Number(y)+Number(I*S):y+=Number(I)*Number(S)}if(b.length===0)return y;const w=i===1?m:o*n+m;s.data[w]=y}}return s}function Wt(t,e){const g=t.ndim===1?t:R.ravel(t),f=e.ndim===1?e:R.ravel(e),l=$t(g,f);if(l)return l;const u=g.size,p=f.size,d=q(t.dtype,e.dtype),b=z.zeros([u,p],d);if(d==="float16"&&tt&&g.isCContiguous&&f.isCContiguous){const c=new Float32Array(g.data.subarray(g.offset,g.offset+u)),s=new Float32Array(f.data.subarray(f.offset,f.offset+p)),i=new Float32Array(u*p);for(let n=0;n<u;n++){const a=c[n],r=n*p;for(let o=0;o<p;o++)i[r+o]=a*s[o]}return b.data.set(i),b}for(let c=0;c<u;c++)for(let s=0;s<p;s++){const i=g.get(c),n=f.get(s),a=J(i,n);b.set([c,s],a)}return b}function Se(t,e,g){let f,l;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");f=Array.from({length:r},(o,m)=>t.ndim-r+m),l=Array.from({length:r},(o,m)=>m)}else if([f,l]=g,f.length!==l.length)throw new Error("tensordot: axes lists must have same length");for(let r=0;r<f.length;r++){const o=f[r],m=l[r];if(o<0||o>=t.ndim||m<0||m>=e.ndim)throw new Error("tensordot: axis out of bounds");if(t.shape[o]!==e.shape[m])throw new Error(`tensordot: shape mismatch on axes ${o} and ${m}: ${t.shape[o]} != ${e.shape[m]}`)}const u=[],p=[];for(let r=0;r<t.ndim;r++)f.includes(r)||u.push(r);for(let r=0;r<e.ndim;r++)l.includes(r)||p.push(r);const d=[...u.map(r=>t.shape[r]),...p.map(r=>e.shape[r])],b=q(t.dtype,e.dtype),c=T(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 m=f.map(y=>t.shape[y]).reduce((y,w)=>y*w,1);for(let y=0;y<m;y++){let w=y;const h=new Array(f.length);for(let x=f.length-1;x>=0;x--){const D=f[x];h[x]=w%t.shape[D],w=Math.floor(w/t.shape[D])}const A=new Array(t.ndim),N=new Array(e.ndim);for(let x=0;x<f.length;x++)A[f[x]]=h[x];for(let x=0;x<l.length;x++)N[l[x]]=h[x];const I=t.get(...A),S=e.get(...N);if(c){const x=s(I),D=s(S);r+=x.re*D.re-x.im*D.im,o+=x.re*D.im+x.im*D.re}else typeof I=="bigint"&&typeof S=="bigint"?r+=Number(I*S):r+=Number(I)*Number(S)}return c?new $(r,o):r}const i=z.zeros(d,b),n=d.reduce((r,o)=>r*o,1),a=f.map(r=>t.shape[r]).reduce((r,o)=>r*o,1);for(let r=0;r<n;r++){let o=r;const m=[];for(let N=d.length-1;N>=0;N--)m[N]=o%d[N],o=Math.floor(o/d[N]);const y=m.slice(0,u.length),w=m.slice(u.length);let h=0,A=0;for(let N=0;N<a;N++){o=N;const I=[];for(let M=f.length-1;M>=0;M--){const C=f[M];I[M]=o%t.shape[C],o=Math.floor(o/t.shape[C])}const S=new Array(t.ndim),x=new Array(e.ndim);for(let M=0;M<u.length;M++)S[u[M]]=y[M];for(let M=0;M<p.length;M++)x[p[M]]=w[M];for(let M=0;M<f.length;M++)S[f[M]]=I[M],x[l[M]]=I[M];const D=t.get(...S),v=e.get(...x);if(c){const M=s(D),C=s(v);h+=M.re*C.re-M.im*C.im,A+=M.re*C.im+M.im*C.re}else typeof D=="bigint"&&typeof v=="bigint"?h+=Number(D*v):h+=Number(D)*Number(v)}c?i.set(m,new $(h,A)):i.set(m,h)}return i}function xe(t,e=0,g=0,f=1){const l=t.shape,u=l.length;if(u<2)throw new Error("diagonal requires an array of at least two dimensions");const p=g<0?u+g:g,d=f<0?u+f:f;if(p<0||p>=u||d<0||d>=u)throw new Error("axis out of bounds");if(p===d)throw new Error("axis1 and axis2 cannot be the same");const b=l[p],c=l[d];let s;e>=0?s=Math.max(0,Math.min(b,c-e)):s=Math.max(0,Math.min(b+e,c));const i=[];for(let o=0;o<u;o++)o!==p&&o!==d&&i.push(l[o]);i.push(s);const n=z.zeros(i,t.dtype),a=l.filter((o,m)=>m!==p&&m!==d),r=a.reduce((o,m)=>o*m,1);for(let o=0;o<r;o++){let m=o;const y=[];for(let w=a.length-1;w>=0;w--)y.unshift(m%a[w]),m=Math.floor(m/a[w]);for(let w=0;w<s;w++){const h=new Array(u);let A=0;for(let S=0;S<u;S++)S===p?h[S]=e>=0?w:w-e:S===d?h[S]=e>=0?w+e:w:h[S]=y[A++];const N=[...y,w],I=t.get(...h);n.set(N,I)}}return n}function Ne(t,...e){const g=t.indexOf("->");let f,l;g===-1?(f=t,l=dt(f)):(f=t.slice(0,g),l=t.slice(g+2));const u=f.split(",").map(o=>o.trim());if(u.length!==e.length)throw new Error(`einsum: expected ${u.length} operands, got ${e.length}`);const p=new Map;for(let o=0;o<e.length;o++){const m=u[o],y=e[o];if(m.length!==y.ndim)throw new Error(`einsum: operand ${o} has ${y.ndim} dimensions but subscript '${m}' has ${m.length} indices`);for(let w=0;w<m.length;w++){const h=m[w],A=y.shape[w];if(p.has(h)){if(p.get(h)!==A)throw new Error(`einsum: size mismatch for index '${h}': ${p.get(h)} vs ${A}`)}else p.set(h,A)}}for(const o of l)if(!p.has(o))throw new Error(`einsum: output subscript contains unknown index '${o}'`);const d=new Set(l),b=new Set;for(const o of u)for(const m of o)b.add(m);const c=[];for(const o of b)d.has(o)||c.push(o);if(e.length===2&&u.length===2){const[o,m]=u,[y,w]=e;if(o.length===2&&m.length===2&&l.length===2&&y.ndim===2&&w.ndim===2){const[h,A]=[o[0],o[1]],[N,I]=[m[0],m[1]],[S,x]=[l[0],l[1]];if(h===S&&I===x&&A===N&&c.length===1&&c[0]===A||h===S&&I===x&&A===N&&c.length===1&&c[0]===A)return X(y,w);if(A===S&&I===x&&h===N&&c.length===1&&c[0]===h){const D=H(y);return X(D,w)}if(h===S&&N===x&&A===I&&c.length===1&&c[0]===A){const D=H(w);return X(y,D)}}if(o.length===1&&m.length===1&&o===m&&l.length===0&&y.ndim===1&&w.ndim===1)return at(e,u,c,p);if(o&&m&&o.length===1&&m.length===1&&l.length===2&&l===o+m&&c.length===0&&y.ndim===1&&w.ndim===1)return Wt(y,w)}if(e.length===1&&u[0].length===2&&l.length===0){const o=u[0];if(o[0]===o[1]&&e[0].ndim===2)return at(e,u,c,p)}const s=Array.from(l).map(o=>p.get(o));if(s.length===0)return at(e,u,c,p);let i=e[0].dtype;for(let o=1;o<e.length;o++)i=q(i,e[o].dtype);const n=z.zeros(s,i),a=s.reduce((o,m)=>o*m,1);let r=1;for(const o of c)r*=p.get(o);for(let o=0;o<a;o++){const m=Qt(o,s),y=new Map;for(let h=0;h<l.length;h++)y.set(l[h],m[h]);let w=0;for(let h=0;h<r;h++){let A=h;for(let I=c.length-1;I>=0;I--){const S=c[I],x=p.get(S);y.set(S,A%x),A=Math.floor(A/x)}let N=1;for(let I=0;I<e.length;I++){const S=e[I],x=u[I],D=[];for(const M of x)D.push(y.get(M));const v=S.get(...D);N*=Number(v)}w+=N}n.set(m,w)}return n}function dt(t){const e=new Map,g=t.split(",");for(const l of g)for(const u of l.trim())e.set(u,(e.get(u)||0)+1);const f=[];for(const[l,u]of e)u===1&&f.push(l);return f.sort().join("")}function at(t,e,g,f){let l=!1;for(const c of t)if(T(c.dtype)){l=!0;break}const u=c=>c instanceof $?{re:c.re,im:c.im}:{re:Number(c),im:0};let p=1;for(const c of g)p*=f.get(c);let d=0,b=0;for(let c=0;c<p;c++){const s=new Map;let i=c;for(let r=g.length-1;r>=0;r--){const o=g[r],m=f.get(o);s.set(o,i%m),i=Math.floor(i/m)}let n=1,a=0;for(let r=0;r<t.length;r++){const o=t[r],m=e[r],y=[];for(const h of m)y.push(s.get(h));const w=o.get(...y);if(l){const h=u(w),A=n*h.re-a*h.im,N=n*h.im+a*h.re;n=A,a=N}else n*=Number(w)}d+=n,b+=a}return l?new $(d,b):d}function Qt(t,e){const g=new Array(e.length);let f=t;for(let l=e.length-1;l>=0;l--)g[l]=f%e[l],f=Math.floor(f/e[l]);return g}function Ie(t,e){const g=t.shape,f=e.shape,l=g.length,u=f.length,p=q(t.dtype,e.dtype);if(l===2&&u===2){const r=Ct(t,e);if(r)return r}const d=Math.max(l,u),b=new Array(d),c=new Array(d).fill(1),s=new Array(d).fill(1);for(let r=0;r<l;r++)c[d-l+r]=g[r];for(let r=0;r<u;r++)s[d-u+r]=f[r];for(let r=0;r<d;r++)b[r]=c[r]*s[r];const i=z.zeros(b,p),n=g.reduce((r,o)=>r*o,1),a=f.reduce((r,o)=>r*o,1);for(let r=0;r<n;r++){let o=r;const m=new Array(l);for(let h=l-1;h>=0;h--)m[h]=o%g[h],o=Math.floor(o/g[h]);const y=new Array(d).fill(0);for(let h=0;h<l;h++)y[d-l+h]=m[h];const w=t.get(...m);for(let h=0;h<a;h++){let A=h;const N=new Array(u);for(let v=u-1;v>=0;v--)N[v]=A%f[v],A=Math.floor(A/f[v]);const I=new Array(d).fill(0);for(let v=0;v<u;v++)I[d-u+v]=N[v];const S=e.get(...N),x=new Array(d);for(let v=0;v<d;v++)x[v]=y[v]*s[v]+I[v];const D=J(w,S);i.set(x,D)}}return i}function De(t,e,g=-1,f=-1,l=-1,u){u!==void 0&&(g=u,f=u,l=u);const p=(x,D)=>x<0?D+x:x,d=p(g,t.ndim),b=p(f,e.ndim),c=q(t.dtype,e.dtype),s=T(c),i=(x,...D)=>{const v=x.get(...D);return v instanceof $||typeof v=="bigint"?v:Number(v)},n=(x,D)=>{if(x instanceof $||D instanceof $){const v=x instanceof $?x:new $(Number(x),0),M=D instanceof $?D:new $(Number(D),0);return v.mul(M)}return typeof x=="bigint"||typeof D=="bigint"?BigInt(x)*BigInt(D):x*D},a=(x,D)=>{if(x instanceof $||D instanceof $){const v=x instanceof $?x:new $(Number(x),0),M=D instanceof $?D:new $(Number(D),0);return v.sub(M)}return typeof x=="bigint"||typeof D=="bigint"?BigInt(x)-BigInt(D):x-D};if(t.ndim===1&&e.ndim===1){const x=t.shape[0],D=e.shape[0];if(x===3&&D===3){const v=i(t,0),M=i(t,1),C=i(t,2),E=i(e,0),F=i(e,1),j=i(e,2),V=z.zeros([3],c);return V.set([0],a(n(M,j),n(C,F))),V.set([1],a(n(C,E),n(v,j))),V.set([2],a(n(v,F),n(M,E))),V}else if(x===2&&D===2){const v=i(t,0),M=i(t,1),C=i(e,0),E=i(e,1);return a(n(v,E),n(M,C))}else if(x===2&&D===3||x===3&&D===2){const v=i(t,0),M=i(t,1),C=x===3?i(t,2):s?new $(0,0):_(c)?0n:0,E=i(e,0),F=i(e,1),j=D===3?i(e,2):s?new $(0,0):_(c)?0n:0,V=z.zeros([3],c);return V.set([0],a(n(M,j),n(C,F))),V.set([1],a(n(C,E),n(v,j))),V.set([2],a(n(v,F),n(M,E))),V}else throw new Error(`cross: incompatible dimensions for cross product: ${x} 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 m=r===2&&o===2?0:3,y=[...t.shape.slice(0,d),...t.shape.slice(d+1)],w=[...e.shape.slice(0,b),...e.shape.slice(b+1)];if(y.length!==w.length)throw new Error("cross: incompatible shapes for cross product");for(let x=0;x<y.length;x++)if(y[x]!==w[x])throw new Error("cross: incompatible shapes for cross product");const h=y;if(r===3&&o===3&&d===t.ndim-1&&b===e.ndim-1){const x=h.reduce((v,M)=>v*M,1),D=Et(t,e,x);if(D)return D}const A=l<0?h.length+1+l:l;let N;if(m===0?N=h:N=[...h.slice(0,A),m,...h.slice(A)],N.length===0)throw new Error("cross: unexpected scalar result from higher-dimensional input");const I=z.zeros(N,c),S=h.reduce((x,D)=>x*D,1);for(let x=0;x<S;x++){let D=x;const v=[];for(let P=h.length-1;P>=0;P--)v[P]=D%h[P],D=Math.floor(D/h[P]);const M=[...v.slice(0,d),0,...v.slice(d)],C=[...v.slice(0,b),0,...v.slice(b)],E=P=>(M[d]=P,i(t,...M)),F=P=>(C[b]=P,i(e,...C)),j=E(0),V=E(1),k=r===3?E(2):s?new $(0,0):_(c)?0n:0,B=F(0),W=F(1),U=o===3?F(2):s?new $(0,0):_(c)?0n:0;if(m===0)I.set(v,a(n(j,W),n(V,B)));else{const P=a(n(V,U),n(k,W)),St=a(n(k,B),n(j,U)),xt=a(n(j,W),n(V,B)),st=(Nt,It)=>{const Dt=[...v.slice(0,A),Nt,...v.slice(A)];I.set(Dt,It)};st(0,P),st(1,St),st(2,xt)}}return I}function rt(t,e=2,g,f=!1){if(typeof e!="number")throw new Error("vector_norm: ord must be a number");if(g==null){const c=t.ndim===1?t:R.ravel(t),s=c.size;let i;if(e===1/0){i=0;for(let n=0;n<s;n++)i=Math.max(i,Math.abs(Number(c.get(n))))}else if(e===-1/0){i=1/0;for(let n=0;n<s;n++)i=Math.min(i,Math.abs(Number(c.get(n))))}else if(e===0){i=0;for(let n=0;n<s;n++)Number(c.get(n))!==0&&i++}else if(e===1){i=0;for(let n=0;n<s;n++)i+=Math.abs(Number(c.get(n)))}else if(e===2){i=0;for(let n=0;n<s;n++){const a=Number(c.get(n));i+=a*a}i=Math.sqrt(i)}else{i=0;for(let n=0;n<s;n++)i+=Math.pow(Math.abs(Number(c.get(n))),e);i=Math.pow(i,1/e)}if(f){const n=new Array(t.ndim).fill(1),a=z.zeros(n,"float64");return a.set(new Array(t.ndim).fill(0),i),a}return i}const l=g<0?t.ndim+g:g;if(l<0||l>=t.ndim)throw new Error(`vector_norm: axis ${g} out of bounds for array with ${t.ndim} dimensions`);const u=f?[...t.shape.slice(0,l),1,...t.shape.slice(l+1)]:[...t.shape.slice(0,l),...t.shape.slice(l+1)];if(u.length===0)return rt(t,e,null,!1);const p=z.zeros(u,"float64"),d=t.shape[l],b=u.reduce((c,s)=>c*s,1);for(let c=0;c<b;c++){let s=c;const i=[];for(let r=u.length-1;r>=0;r--)i[r]=s%u[r],s=Math.floor(s/u[r]);const n=f?[...i.slice(0,l),0,...i.slice(l+1)]:[...i.slice(0,l),0,...i.slice(l)];let a;if(e===1/0){a=0;for(let r=0;r<d;r++)n[l]=r,a=Math.max(a,Math.abs(Number(t.get(...n))))}else if(e===-1/0){a=1/0;for(let r=0;r<d;r++)n[l]=r,a=Math.min(a,Math.abs(Number(t.get(...n))))}else if(e===0){a=0;for(let r=0;r<d;r++)n[l]=r,Number(t.get(...n))!==0&&a++}else if(e===1){a=0;for(let r=0;r<d;r++)n[l]=r,a+=Math.abs(Number(t.get(...n)))}else if(e===2){a=0;for(let r=0;r<d;r++){n[l]=r;const o=Number(t.get(...n));a+=o*o}a=Math.sqrt(a)}else{a=0;for(let r=0;r<d;r++)n[l]=r,a+=Math.pow(Math.abs(Number(t.get(...n))),e);a=Math.pow(a,1/e)}p.set(i,a)}return p}function K(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 p=Array.from(t.shape).slice(0,-2),d=t.shape[t.ndim-2],b=t.shape[t.ndim-1],c=p.reduce((n,a)=>n*a,1),s=new Float64Array(c),i=O(t);for(let n=0;n<c;n++){const a=n*d*b,r=z.fromData(i.slice(a,a+d*b),[d,b],"float64");s[n]=K(r,e,!1)}if(g){const n=[...p,1,1],a=z.fromData(s,p,"float64");return R.reshape(a,n)}return z.fromData(s,p,"float64")}const[f,l]=t.shape;let u;if(e==="fro"){u=0;for(let p=0;p<f;p++)for(let d=0;d<l;d++){const b=Number(t.get(p,d));u+=b*b}u=Math.sqrt(u)}else if(e==="nuc"){const{s:p}=Q(t);u=0;for(let d=0;d<p.size;d++)u+=Number(p.get(d))}else if(e===1){u=0;for(let p=0;p<l;p++){let d=0;for(let b=0;b<f;b++)d+=Math.abs(Number(t.get(b,p)));u=Math.max(u,d)}}else if(e===-1){u=1/0;for(let p=0;p<l;p++){let d=0;for(let b=0;b<f;b++)d+=Math.abs(Number(t.get(b,p)));u=Math.min(u,d)}}else if(e===1/0){u=0;for(let p=0;p<f;p++){let d=0;for(let b=0;b<l;b++)d+=Math.abs(Number(t.get(p,b)));u=Math.max(u,d)}}else if(e===-1/0){u=1/0;for(let p=0;p<f;p++){let d=0;for(let b=0;b<l;b++)d+=Math.abs(Number(t.get(p,b)));u=Math.min(u,d)}}else if(e===2){const{s:p}=Q(t);u=Number(p.get(0))}else if(e===-2){const{s:p}=Q(t);u=Number(p.get(p.size-1))}else throw new Error(`matrix_norm: invalid ord value: ${e}`);if(g){const p=z.zeros([1,1],"float64");return p.set([0,0],u),p}return u}function ve(t,e=null,g=null,f=!1){if(e===null){if(g===null)return rt(t,2,null,f);if(typeof g=="number")return rt(t,2,g,f);e="fro"}if(Array.isArray(g)){if(g.length!==2)throw new Error("norm: axis must be a 2-tuple for matrix norms");const l=g[0]<0?t.ndim+g[0]:g[0],u=g[1]<0?t.ndim+g[1]:g[1],p=e??"fro";if(t.ndim===2)return K(t,p,f);const d=t.ndim,b=Array.from({length:d},(m,y)=>y).filter(m=>m!==l&&m!==u),c=b.map(m=>t.shape[m]),s=c.reduce((m,y)=>m*y,1)||1,i=t.shape[l],n=t.shape[u],a=[...b,l,u],r=H(t,a),o=new Float64Array(s);for(let m=0;m<s;m++){const y=new Array(c.length);let w=m;for(let N=c.length-1;N>=0;N--)y[N]=w%c[N],w=Math.floor(w/c[N]);const h=z.zeros([i,n],"float64");for(let N=0;N<i;N++)for(let I=0;I<n;I++)h.set([N,I],Number(r.get(...y,N,I)));const A=K(h,p,!1);o[m]=typeof A=="number"?A:Number(A)}if(f){const m=Array.from(t.shape);return m[l]=1,m[u]=1,z.fromData(o,m,"float64")}return c.length===0?o[0]:z.fromData(o,c,"float64")}if(t.ndim===2&&g===null&&(e==="fro"||e==="nuc"))return K(t,e,f);if(typeof e!="number"&&e!==null)throw new Error(`norm: ord '${e}' not valid for vector norm`);return rt(t,e??2,g,f)}function gt(t,e="reduced"){if(t.ndim>2){const a=t.shape.slice(0,-2),[r,o]=[t.shape[t.ndim-2],t.shape[t.ndim-1]],m=Math.min(r,o),y=a.reduce((N,I)=>N*I,1),w=e==="complete"?r:m,h=z.zeros([...a,r,w],"float64"),A=z.zeros([...a,w,o],"float64");for(let N=0;N<y;N++){const I=et(N,a),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(...I,D,v)));const x=gt(S,e);for(let D=0;D<r;D++)for(let v=0;v<w;v++)h.set([...I,D,v],Number(x.q.get(D,v)));for(let D=0;D<w;D++)for(let v=0;v<o;v++)A.set([...I,D,v],Number(x.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 a=Ft(t);if(a)return a}const[g,f]=t.shape,l=Math.min(g,f),u=z.zeros([g,f],"float64");for(let a=0;a<g;a++)for(let r=0;r<f;r++)u.set([a,r],Number(t.get(a,r)));const p=[],d=[];for(let a=0;a<l;a++){const r=g-a,o=[];for(let N=a;N<g;N++)o.push(Number(u.get(N,a)));let m=0;for(let N=0;N<r;N++)m+=o[N]*o[N];if(m=Math.sqrt(m),m<1e-15){p.push(o),d.push(0);continue}const y=o[0]>=0?1:-1,w=o[0]+y*m,h=[1];for(let N=1;N<r;N++)h.push(o[N]/w);const A=y*w/m;d.push(A),p.push(h);for(let N=a;N<f;N++){let I=0;for(let S=0;S<r;S++)I+=h[S]*Number(u.get(a+S,N));for(let S=0;S<r;S++)u.set([a+S,N],Number(u.get(a+S,N))-A*h[S]*I)}}if(e==="raw"){const a=z.zeros([g,f],"float64");for(let o=0;o<g;o++)for(let m=0;m<f;m++)a.set([o,m],Number(u.get(o,m)));const r=z.zeros([l],"float64");for(let o=0;o<l;o++)r.set([o],d[o]);return{h:a,tau:r}}if(e==="r"){const a=z.zeros([l,f],"float64");for(let r=0;r<l;r++)for(let o=r;o<f;o++)a.set([r,o],Number(u.get(r,o)));return a}const b=e==="complete"?g:l,c=z.zeros([g,b],"float64");for(let a=0;a<Math.min(g,b);a++)c.set([a,a],1);for(let a=l-1;a>=0;a--){const r=p[a],o=d[a],m=g-a;for(let y=a;y<b;y++){let w=0;for(let h=0;h<m;h++)w+=r[h]*Number(c.get(a+h,y));for(let h=0;h<m;h++)c.set([a+h,y],Number(c.get(a+h,y))-o*r[h]*w)}}const s=z.zeros([g,b],"float64");for(let a=0;a<g;a++)for(let r=0;r<b;r++)s.set([a,r],Number(c.get(a,r)));const i=e==="complete"?g:l,n=z.zeros([i,f],"float64");for(let a=0;a<i;a++)for(let r=0;r<f;r++)r>=a&&n.set([a,r],Number(u.get(a,r)));return{q:s,r:n}}function Gt(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],c=t.shape[t.ndim-2];if(c!==b)throw new Error(`cholesky: last 2 dimensions must be square, got ${c}x${b}`);const s=d.reduce((a,r)=>a*r,1),i=new Float64Array(s*b*b),n=O(t);for(let a=0;a<s;a++){const r=a*b*b,o=z.fromData(n.slice(r,r+b*b),[b,b],"float64"),m=Gt(o,e);i.set(O(m),r)}return z.fromData(i,[...d,b,b],"float64")}const[g,f]=t.shape;if(g!==f)throw new Error(`cholesky: matrix must be square, got ${g}x${f}`);const l=t.dtype==="float32"?Vt(t):jt(t);if(l){if(e){const d=g,b=z.zeros([d,d],l.dtype);for(let c=0;c<d;c++)for(let s=c;s<d;s++)b.set([c,s],Number(l.get(s,c)));return b}return l}const u=g,p=z.zeros([u,u],"float64");for(let d=0;d<u;d++)for(let b=0;b<=d;b++){let c=0;if(d===b){for(let i=0;i<b;i++)c+=Number(p.get(b,i))**2;const s=Number(t.get(b,b))-c;if(s<0)throw new Error("cholesky: matrix is not positive definite");p.set([b,b],Math.sqrt(s))}else{for(let i=0;i<b;i++)c+=Number(p.get(d,i))*Number(p.get(b,i));const s=Number(p.get(b,b));if(Math.abs(s)<1e-15)throw new Error("cholesky: matrix is not positive definite");p.set([d,b],(Number(t.get(d,b))-c)/s)}}if(e){const d=z.zeros([u,u],"float64");for(let b=0;b<u;b++)for(let c=b;c<u;c++)d.set([b,c],Number(p.get(c,b)));return d}return p}function Q(t){if(t.ndim!==2)throw new Error(`svd: input must be 2D, got ${t.ndim}D`);const e=Bt(t);if(e)return e;const[g,f]=t.shape,l=Math.min(g,f),u=z.zeros([f,f],"float64");for(let n=0;n<f;n++)for(let a=0;a<f;a++){let r=0;for(let o=0;o<g;o++)r+=Number(t.get(o,n))*Number(t.get(o,a));u.set([n,a],r)}const{values:p,vectors:d}=lt(u),b=Array.from({length:f},(n,a)=>a);b.sort((n,a)=>p[a]-p[n]);const c=z.zeros([l],"float64");for(let n=0;n<l;n++){const a=p[b[n]];c.set([n],Math.sqrt(Math.max(0,a)))}const s=z.zeros([f,f],"float64");for(let n=0;n<f;n++)for(let a=0;a<f;a++)s.set([n,a],d[a][b[n]]);const i=z.zeros([g,g],"float64");for(let n=0;n<g;n++)for(let a=0;a<l;a++){const r=Number(c.get(a));if(r>1e-10){let o=0;for(let m=0;m<f;m++)o+=Number(t.get(n,m))*Number(s.get(a,m));i.set([n,a],o/r)}}if(g>l)for(let n=l;n<g;n++){const a=new Array(g).fill(0);a[n]=1;for(let o=0;o<n;o++){let m=0;for(let y=0;y<g;y++)m+=a[y]*Number(i.get(y,o));for(let y=0;y<g;y++)a[y]=a[y]-m*Number(i.get(y,o))}let r=0;for(let o=0;o<g;o++)r+=a[o]*a[o];if(r=Math.sqrt(r),r>1e-10)for(let o=0;o<g;o++)i.set([o,n],a[o]/r)}return{u:i,s:c,vt:s}}function lt(t){const e=t.shape[0],g=100*e*e,f=1e-10,l=[];for(let d=0;d<e;d++){l.push([]);for(let b=0;b<e;b++)l[d].push(Number(t.get(d,b)))}const u=[];for(let d=0;d<e;d++){u.push([]);for(let b=0;b<e;b++)u[d].push(d===b?1:0)}for(let d=0;d<g;d++){let b=0,c=0,s=1;for(let h=0;h<e;h++)for(let A=h+1;A<e;A++)Math.abs(l[h][A])>b&&(b=Math.abs(l[h][A]),c=h,s=A);if(b<f)break;const i=l[c][c],n=l[s][s],a=l[c][s];let r;Math.abs(i-n)<1e-15?r=Math.PI/4:r=.5*Math.atan2(2*a,n-i);const o=Math.cos(r),m=Math.sin(r),y=o*o*i+m*m*n-2*m*o*a,w=m*m*i+o*o*n+2*m*o*a;l[c][c]=y,l[s][s]=w,l[c][s]=0,l[s][c]=0;for(let h=0;h<e;h++)if(h!==c&&h!==s){const A=l[h][c],N=l[h][s];l[h][c]=o*A-m*N,l[c][h]=l[h][c],l[h][s]=m*A+o*N,l[s][h]=l[h][s]}for(let h=0;h<e;h++){const A=u[h][c],N=u[h][s];u[h][c]=o*A-m*N,u[h][s]=m*A+o*N}}const p=[];for(let d=0;d<e;d++)p.push(l[d][d]);return{values:p,vectors:u}}function bt(t,e=!0,g=!0){if(t.ndim>2){const l=t.shape.slice(0,-2),[u,p]=[t.shape[t.ndim-2],t.shape[t.ndim-1]],d=Math.min(u,p),b=l.reduce((r,o)=>r*o,1);if(!g){const r=z.zeros([...l,d],"float64");for(let o=0;o<b;o++){const m=et(o,l),y=z.zeros([u,p],"float64");for(let h=0;h<u;h++)for(let A=0;A<p;A++)y.set([h,A],Number(t.get(...m,h,A)));const{s:w}=Q(y);for(let h=0;h<d;h++)r.set([...m,h],Number(w.get(h)))}return r}const c=e?u:d,s=e?p:d,i=z.zeros([...l,u,c],"float64"),n=z.zeros([...l,d],"float64"),a=z.zeros([...l,s,p],"float64");for(let r=0;r<b;r++){const o=et(r,l),m=z.zeros([u,p],"float64");for(let w=0;w<u;w++)for(let h=0;h<p;h++)m.set([w,h],Number(t.get(...o,w,h)));const y=bt(m,e,!0);for(let w=0;w<u;w++)for(let h=0;h<c;h++)i.set([...o,w,h],Number(y.u.get(w,h)));for(let w=0;w<d;w++)n.set([...o,w],Number(y.s.get(w)));for(let w=0;w<s;w++)for(let h=0;h<p;h++)a.set([...o,w,h],Number(y.vt.get(w,h)))}return{u:i,s:n,vt:a}}const f=Q(t);if(!g)return f.s;if(!e){const[l,u]=t.shape,p=Math.min(l,u),d=z.zeros([l,p],"float64");for(let c=0;c<l;c++)for(let s=0;s<p;s++)d.set([c,s],Number(f.u.get(c,s)));const b=z.zeros([p,u],"float64");for(let c=0;c<p;c++)for(let s=0;s<u;s++)b.set([c,s],Number(f.vt.get(c,s)));return{u:d,s:f.s,vt:b}}return f}function Ht(t){if(t.ndim<2)throw new Error(`det: input must be at least 2D, got ${t.ndim}D`);if(t.ndim>2){const c=Array.from(t.shape).slice(0,-2),s=t.shape[t.ndim-1],i=t.shape[t.ndim-2];if(i!==s)throw new Error(`det: last 2 dimensions must be square, got ${i}x${s}`);const n=c.reduce((o,m)=>o*m,1),a=new Float64Array(n),r=O(t);for(let o=0;o<n;o++){const m=o*s*s,y=z.fromData(r.slice(m,m+s*s),[s,s],"float64");a[o]=Ht(y)}return z.fromData(a,c,"float64")}const[e,g]=t.shape;if(e!==g)throw new Error(`det: matrix must be square, got ${e}x${g}`);const f=e;if(f===0)return 1;const l=t.data;if(f===1)return Number(l[0]);if(f===2)return Number(l[0])*Number(l[3])-Number(l[1])*Number(l[2]);const{lu:u,sign:p}=nt(t),d=u.data;let b=p;for(let c=0;c<f;c++)b*=d[c*f+c];return b}function nt(t){const[e,g]=t.shape,f=e,l=g,u=z.zeros([f,l],"float64"),p=u.data,d=t.data;for(let s=0;s<f*l;s++)p[s]=Number(d[s]);const b=Array.from({length:f},(s,i)=>i);let c=1;for(let s=0;s<Math.min(f,l);s++){let i=Math.abs(p[s*l+s]),n=s;for(let r=s+1;r<f;r++){const o=Math.abs(p[r*l+s]);o>i&&(i=o,n=r)}if(n!==s){for(let o=0;o<l;o++){const m=p[s*l+o];p[s*l+o]=p[n*l+o],p[n*l+o]=m}const r=b[s];b[s]=b[n],b[n]=r,c=-c}const a=p[s*l+s];if(Math.abs(a)>1e-15)for(let r=s+1;r<f;r++){const o=p[r*l+s]/a;p[r*l+s]=o;for(let m=s+1;m<l;m++)p[r*l+m]=p[r*l+m]-o*p[s*l+m]}}return{lu:u,piv:b,sign:c}}function ot(t){if(t.ndim<2)throw new Error(`inv: input must be at least 2D, got ${t.ndim}D`);if(t.ndim>2){const c=Array.from(t.shape).slice(0,-2),s=t.shape[t.ndim-1],i=t.shape[t.ndim-2];if(i!==s)throw new Error(`inv: last 2 dimensions must be square, got ${i}x${s}`);const n=c.reduce((o,m)=>o*m,1),a=O(t),r=new Float64Array(n*s*s);for(let o=0;o<n;o++){const m=o*s*s,y=z.fromData(a.slice(m,m+s*s),[s,s],"float64"),h=ot(y).data;for(let A=0;A<s*s;A++)r[m+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 f=e,{lu:l,piv:u}=nt(t),p=l.data,d=z.zeros([f,f],"float64"),b=d.data;for(let c=0;c<f;c++){const s=new Float64Array(f);for(let i=0;i<f;i++){let n=u[i]===c?1:0;for(let a=0;a<i;a++)n-=p[i*f+a]*s[a];s[i]=n}for(let i=f-1;i>=0;i--){let n=s[i];for(let r=i+1;r<f;r++)n-=p[i*f+r]*b[r*f+c];const a=p[i*f+i];if(Math.abs(a)<1e-15)throw new Error("inv: singular matrix");b[i*f+c]=n/a}}return d}function yt(t,e){const[g]=t.shape,f=g,{lu:l,piv:u}=nt(t),p=l.data,d=e.data,b=new Float64Array(f);for(let n=0;n<f;n++)b[n]=Number(d[u[n]]);const c=new Float64Array(f);for(let n=0;n<f;n++){let a=b[n];for(let r=0;r<n;r++)a-=p[n*f+r]*c[r];c[n]=a}const s=z.zeros([f],"float64"),i=s.data;for(let n=f-1;n>=0;n--){let a=c[n];for(let o=n+1;o<f;o++)a-=p[n*f+o]*i[o];const r=p[n*f+n];if(Math.abs(r)<1e-15)throw new Error("solve: singular matrix");i[n]=a/r}return s}function Kt(t,e){if(t.ndim!==2)throw new Error(`solve: coefficient matrix must be 2D, got ${t.ndim}D`);const[g,f]=t.shape;if(g!==f)throw new Error(`solve: coefficient matrix must be square, got ${g}x${f}`);const l=g;if(e.ndim===1){if(e.shape[0]!==l)throw new Error(`solve: incompatible shapes (${g},${f}) and (${e.shape[0]},)`);return yt(t,e)}if(e.ndim===2){if(e.shape[0]!==l)throw new Error(`solve: incompatible shapes (${g},${f}) and (${e.shape[0]},${e.shape[1]})`);const u=e.shape[1],p=z.zeros([l,u],"float64");for(let d=0;d<u;d++){const b=z.zeros([l],"float64");for(let s=0;s<l;s++)b.set([s],Number(e.get(s,d)));const c=yt(t,b);for(let s=0;s<l;s++)p.set([s,d],Number(c.get(s)))}return p}throw new Error(`solve: b must be 1D or 2D, got ${e.ndim}D`)}function $e(t,e,g=null){if(t.ndim!==2)throw new Error(`lstsq: coefficient matrix must be 2D, got ${t.ndim}D`);const[f,l]=t.shape,u=Math.min(f,l),p=e.ndim===1?R.reshape(e,[e.size,1]):e,d=p.shape[1];if(p.shape[0]!==f)throw new Error(`lstsq: incompatible shapes (${f},${l}) and (${e.shape.join(",")})`);const{u:b,s:c,vt:s}=Q(t),i=c.data,n=b.data,a=s.data,r=g??Math.max(f,l)*Number.EPSILON,m=i[0]*r;let y=0;for(let v=0;v<u;v++)i[v]>m&&y++;const w=new Float64Array(l*u);for(let v=0;v<u;v++){const M=i[v];if(M>m){const C=1/M;for(let E=0;E<l;E++)w[E*u+v]=a[v*l+E]*C}}const h=new Float64Array(u*f);for(let v=0;v<u;v++)for(let M=0;M<f;M++)h[v*f+M]=n[M*f+v];const A=z.fromData(w,[l,u],"float64"),N=z.fromData(h,[u,f],"float64"),I=Y(N,p)??G(N,p);let S=Y(A,I)??G(A,I),x;if(f>l&&y===l){const v=new Float64Array(d),M=e.ndim===1?R.reshape(S,[l,1]):S,E=(Y(t,M)??G(t,M)).data;for(let F=0;F<d;F++){let j=0;for(let V=0;V<f;V++){const k=E[V*d+F]-Number(p.iget(V*d+F));j+=k*k}v[F]=j}x=z.fromData(v,[d],"float64")}else x=z.zeros([0],"float64");return{x:e.ndim===1?R.reshape(S,[l]):S,residuals:x,rank:y,s:c}}function ze(t,e=2){if(t.ndim!==2)throw new Error(`cond: input must be 2D, got ${t.ndim}D`);const[g,f]=t.shape;if(e===2||e===-2){const{s:d}=Q(t),b=Math.min(g,f),c=Number(d.get(0)),s=Number(d.get(b-1));return e===2?s>0?c/s:1/0:c>0?s/c:0}if(g!==f)throw new Error(`cond: matrix must be square for p=${e}`);const l=K(t,e),u=ot(t),p=K(u,e);return l*p}function Me(t,e){if(t.ndim===0)return Number(t.get())!==0?1:0;if(t.ndim===1){for(let p=0;p<t.size;p++)if(Number(t.get(p))!==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),f=Number(g.get(0)),l=e??f*Math.max(t.shape[0],t.shape[1])*Number.EPSILON;let u=0;for(let p=0;p<g.size;p++)Number(g.get(p))>l&&u++;return u}function Ce(t,e){if(t.ndim!==2)throw new Error(`matrix_power: input must be 2D, got ${t.ndim}D`);const[g,f]=t.shape;if(g!==f)throw new Error(`matrix_power: matrix must be square, got ${g}x${f}`);const l=g;if(!Number.isInteger(e))throw new Error("matrix_power: exponent must be an integer");if(e===0){const i=z.zeros([l,l],"float64");for(let n=0;n<l;n++)i.set([n,n],1);return i}let u=t,p=e;e<0&&(u=ot(t),p=-e);const d=u.dtype==="float32"?"float32":"float64";let b=z.zeros([l,l],d);const c=b.data;for(let i=0;i<l;i++)c[i*l+i]=1;let s;if(u.isCContiguous&&(u.dtype==="float64"||u.dtype==="float32"))s=u.copy();else{s=z.zeros([l,l],d);const i=s.data,n=u.data,a=u.offset,[r=0,o=0]=u.strides;for(let m=0;m<l;m++)for(let y=0;y<l;y++)i[m*l+y]=Number(n[a+m*r+y*o])}for(;p>0;)p&1&&(b=X(b,s)),s=X(s,s),p>>=1;return b}function Yt(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 y=Array.from(t.shape).slice(0,-2),w=t.shape[t.ndim-2],h=t.shape[t.ndim-1],A=y.reduce((S,x)=>S*x,1),N=new Float64Array(A*h*w),I=O(t);for(let S=0;S<A;S++){const x=S*w*h,D=z.fromData(I.slice(x,x+w*h),[w,h],"float64"),v=Yt(D,e);N.set(O(v),S*h*w)}return z.fromData(N,[...y,h,w],"float64")}const[g,f]=t.shape,{u:l,s:u,vt:p}=Q(t),d=Math.min(g,f),b=u.data,s=b[0]*e,i=new Float64Array(f*d);for(let y=0;y<d;y++){const w=b[y];if(w>s){const h=1/w;for(let A=0;A<f;A++)i[A*d+y]=p.data[y*f+A]*h}}const n=z.fromData(i,[f,d],"float64"),a=new Float64Array(d*g),r=l.data;for(let y=0;y<d;y++)for(let w=0;w<g;w++)a[y*g+w]=r[w*g+y];const o=z.fromData(a,[d,g],"float64");return Y(n,o)??G(n,o)}function wt(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),i=t.shape[t.ndim-1],n=t.shape[t.ndim-2];if(n!==i)throw new Error(`eig: last 2 dimensions must be square, got ${n}x${i}`);const a=s.reduce((y,w)=>y*w,1),r=new Float64Array(a*i),o=new Float64Array(a*i*i),m=O(t);for(let y=0;y<a;y++){const w=y*i*i,h=z.fromData(m.slice(w,w+i*i),[i,i],"float64"),{w:A,v:N}=wt(h);r.set(O(A),y*i),o.set(O(N),w)}return{w:z.fromData(r,[...s,i],"float64"),v:z.fromData(o,[...s,i,i],"float64")}}const[e,g]=t.shape;if(e!==g)throw new Error(`eig: matrix must be square, got ${e}x${g}`);const f=e;let l=!0;t:for(let s=0;s<f;s++)for(let i=s+1;i<f;i++)if(Math.abs(Number(t.get(s,i))-Number(t.get(i,s)))>1e-10){l=!1;break t}if(l){const{values:s,vectors:i}=lt(t),n=z.zeros([f],"float64"),a=z.zeros([f,f],"float64");for(let r=0;r<f;r++){n.set([r],s[r]);for(let o=0;o<f;o++)a.set([o,r],i[o][r])}return{w:n,v:a}}const{values:u,vectors:p,hasComplexEigenvalues:d}=Zt(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([f],"float64"),c=z.zeros([f,f],"float64");for(let s=0;s<f;s++){b.set([s],u[s]);for(let i=0;i<f;i++)c.set([i,s],p[i][s])}return{w:b,v:c}}function Zt(t){const e=t.shape[0],g=1e3,f=1e-10;let l=z.zeros([e,e],"float64");for(let c=0;c<e;c++)for(let s=0;s<e;s++)l.set([c,s],Number(t.get(c,s)));let u=z.zeros([e,e],"float64");for(let c=0;c<e;c++)u.set([c,c],1);for(let c=0;c<g;c++){let s=0;for(let r=0;r<e;r++)for(let o=0;o<e;o++)r!==o&&(s+=Number(l.get(r,o))**2);if(Math.sqrt(s)<f*e)break;const i=gt(l,"reduced"),n=i.q,a=i.r;l=X(a,n),u=X(u,n)}let p=!1;for(let c=0;c<e-1;c++){const s=Math.abs(Number(l.get(c+1,c))),i=Math.abs(Number(l.get(c,c))),n=Math.abs(Number(l.get(c+1,c+1))),a=Math.max(i,n,1e-10);if(s/a>1e-6){p=!0;break}}const d=[];for(let c=0;c<e;c++)d.push(Number(l.get(c,c)));const b=[];for(let c=0;c<e;c++){b.push([]);for(let s=0;s<e;s++)b[c].push(Number(u.get(c,s)))}return{values:d,vectors:b,hasComplexEigenvalues:p}}function At(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 i=Array.from(t.shape).slice(0,-2),n=t.shape[t.ndim-1],a=t.shape[t.ndim-2];if(a!==n)throw new Error(`eigh: last 2 dimensions must be square, got ${a}x${n}`);const r=i.reduce((w,h)=>w*h,1),o=new Float64Array(r*n),m=new Float64Array(r*n*n),y=O(t);for(let w=0;w<r;w++){const h=w*n*n,A=z.fromData(y.slice(h,h+n*n),[n,n],"float64"),{w:N,v:I}=At(A,e);o.set(O(N),w*n),m.set(O(I),h)}return{w:z.fromData(o,[...i,n],"float64"),v:z.fromData(m,[...i,n,n],"float64")}}const[g,f]=t.shape;if(g!==f)throw new Error(`eigh: matrix must be square, got ${g}x${f}`);const l=g,u=z.zeros([l,l],"float64");for(let i=0;i<l;i++)for(let n=0;n<l;n++)e==="L"?i>=n&&(u.set([i,n],Number(t.get(i,n))),u.set([n,i],Number(t.get(i,n)))):n>=i&&(u.set([i,n],Number(t.get(i,n))),u.set([n,i],Number(t.get(i,n))));const{values:p,vectors:d}=lt(u),b=Array.from({length:l},(i,n)=>n);b.sort((i,n)=>p[i]-p[n]);const c=z.zeros([l],"float64"),s=z.zeros([l,l],"float64");for(let i=0;i<l;i++){c.set([i],p[b[i]]);for(let n=0;n<l;n++)s.set([n,i],d[n][b[i]])}return{w:c,v:s}}function Ee(t){const{w:e}=wt(t);return e}function Fe(t,e="L"){const{w:g}=At(t,e);return g}function je(t,e){const g=R.flatten(t),f=R.flatten(e),l=g.shape[0],u=f.shape[0];if(l!==u)throw new Error(`vdot: arrays must have same number of elements, got ${l} and ${u}`);const p=T(t.dtype)||T(e.dtype);if(p){const s=Mt(g,f);if(s!==null)return s}else{const s=it(g,f);if(s!==null)return s}if(p){let s=0,i=0;for(let n=0;n<l;n++){const a=g.get(n),r=f.get(n),o=a instanceof $?a.re:Number(a),m=a instanceof $?a.im:0,y=r instanceof $?r.re:Number(r),w=r instanceof $?r.im:0;s+=o*y+m*w,i+=-m*y+o*w}return Math.abs(i)<1e-15?s:new $(s,i)}const d=q(t.dtype,e.dtype),b=L(d);if(b){b[0]=0;for(let s=0;s<l;s++)b[0]+=Number(g.get(s))*Number(f.get(s));return b[0]}if(d==="float16"&&tt){const s=new Float16Array(1);s[0]=0;for(let i=0;i<l;i++)s[0]+=Number(g.get(i))*Number(f.get(i));return Number(s[0])}if(d==="float32"){const s=new Float32Array(1);s[0]=0;for(let i=0;i<l;i++)s[0]+=Number(g.get(i))*Number(f.get(i));return s[0]}let c=0;for(let s=0;s<l;s++){const i=g.get(s),n=f.get(s);typeof i=="bigint"&&typeof n=="bigint"?c=(typeof c=="bigint"?c:BigInt(c))+i*n:c=(typeof c=="bigint"?Number(c):c)+Number(i)*Number(n)}return c}function Ve(t,e,g=-1){const f=t.ndim,l=e.ndim,u=g<0?f+g:g,p=g<0?l+g:g;if(u<0||u>=f)throw new Error(`vecdot: axis ${g} out of bounds for array with ${f} dimensions`);if(p<0||p>=l)throw new Error(`vecdot: axis ${g} out of bounds for array with ${l} dimensions`);const d=t.shape[u],b=e.shape[p];if(d!==b)throw new Error(`vecdot: axis dimensions must match, got ${d} and ${b}`);if(f===1&&l===1){if(!(T(t.dtype)||T(e.dtype)))return Z(t,e);const h=t.shape[0];let A=0,N=0;for(let I=0;I<h;I++){const S=t.get(I),x=e.get(I),D=S instanceof $?new $(S.re,-S.im):S,v=J(D,x);v instanceof $?(A+=v.re,N+=v.im):A+=Number(v)}return new $(A,N)}if(f===2&&l===2&&g===-1){const w=zt(t,e);if(w)return w}const c=[...t.shape.slice(0,u),...t.shape.slice(u+1)],s=[...e.shape.slice(0,p),...e.shape.slice(p+1)],i=d,n=T(t.dtype)||T(e.dtype),a=q(t.dtype,e.dtype),r=c.length>s.length?c:s,o=L(a);if(r.length===0){if(o){o[0]=0;for(let h=0;h<i;h++)o[0]+=Number(t.get(h))*Number(e.get(h));return o[0]}let w=n?new $(0,0):_(a)?0n:0;for(let h=0;h<i;h++){const A=t.get(h),N=e.get(h),I=A instanceof $?new $(A.re,-A.im):A,S=J(I,N);if(w instanceof $||S instanceof $){const x=w instanceof $?w:new $(Number(w),0),D=S instanceof $?S:new $(Number(S),0);w=x.add(D)}else typeof w=="bigint"||typeof S=="bigint"?w=BigInt(w)+BigInt(S):w=w+S}return w}const m=z.zeros(r,a),y=r.reduce((w,h)=>w*h,1);for(let w=0;w<y;w++){const h=[];let A=w;for(let S=r.length-1;S>=0;S--)h.unshift(A%r[S]),A=Math.floor(A/r[S]);const N=[...h.slice(0,u),0,...h.slice(u)],I=[...h.slice(0,p),0,...h.slice(p)];if(o){o[0]=0;for(let S=0;S<i;S++)N[u]=S,I[p]=S,o[0]+=Number(t.get(...N))*Number(e.get(...I));m.set(h,o[0])}else{let S=n?new $(0,0):_(a)?0n:0;for(let x=0;x<i;x++){N[u]=x,I[p]=x;const D=t.get(...N),v=e.get(...I),M=D instanceof $?new $(D.re,-D.im):D,C=J(M,v);if(S instanceof $||C instanceof $){const E=S instanceof $?S:new $(Number(S),0),F=C instanceof $?C:new $(Number(C),0);S=E.add(F)}else typeof S=="bigint"||typeof C=="bigint"?S=BigInt(S)+BigInt(C):S=S+C}m.set(h,S)}}return m}function Be(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},(f,l)=>l),g=e.length-1;return e[g]=g-1,e[g-1]=g,H(t,e)}function Re(t,e){return H(t,e)}function ke(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],f=t.shape[t.ndim-1],l=e.shape[e.ndim-1];if(f!==l)throw new Error(`matvec: last axis of x1 (${f}) must match last axis of x2 (${l})`);if(t.ndim===2&&e.ndim===1)return Z(t,e);const u=t.shape.slice(0,-2),p=e.shape.slice(0,-1),d=Math.max(u.length,p.length),b=[...Array(d-u.length).fill(1),...u],c=[...Array(d-p.length).fill(1),...p],s=[];for(let m=0;m<d;m++){const y=b[m],w=c[m];if(y!==1&&w!==1&&y!==w)throw new Error(`matvec: batch dimensions not broadcastable: ${u} vs ${p}`);s.push(Math.max(y,w))}const i=[...s,g],n=q(t.dtype,e.dtype),a=z.zeros(i,n),r=T(n),o=s.reduce((m,y)=>m*y,1);for(let m=0;m<o;m++){const y=[];let w=m;for(let I=s.length-1;I>=0;I--)y.unshift(w%s[I]),w=Math.floor(w/s[I]);const h=y.slice(-(u.length||1)).map((I,S)=>(u[S]??1)===1?0:I),A=y.slice(-(p.length||1)).map((I,S)=>(p[S]??1)===1?0:I),N=L(n);for(let I=0;I<g;I++)if(N){N[0]=0;for(let S=0;S<f;S++){const x=[...h,I,S],D=[...A,S];N[0]+=Number(t.get(...x))*Number(e.get(...D))}a.set([...y,I],N[0])}else{let S=r?new $(0,0):_(n)?0n:0;for(let x=0;x<f;x++){const D=[...h,I,x],v=[...A,x],M=t.get(...D),C=e.get(...v),E=J(M,C);if(S instanceof $||E instanceof $){const F=S instanceof $?S:new $(Number(S),0),j=E instanceof $?E:new $(Number(E),0);S=F.add(j)}else typeof S=="bigint"||typeof E=="bigint"?S=BigInt(S)+BigInt(E):S=S+E}a.set([...y,I],S)}}return a}function qe(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],f=e.shape[e.ndim-2],l=e.shape[e.ndim-1];if(g!==f)throw new Error(`vecmat: last axis of x1 (${g}) must match second-to-last axis of x2 (${f})`);if(t.ndim===1&&e.ndim===2)return Z(t,e);const u=t.shape.slice(0,-1),p=e.shape.slice(0,-2),d=Math.max(u.length,p.length),b=[...Array(d-u.length).fill(1),...u],c=[...Array(d-p.length).fill(1),...p],s=[];for(let m=0;m<d;m++){const y=b[m],w=c[m];if(y!==1&&w!==1&&y!==w)throw new Error(`vecmat: batch dimensions not broadcastable: ${u} vs ${p}`);s.push(Math.max(y,w))}const i=[...s,l],n=q(t.dtype,e.dtype),a=z.zeros(i,n),r=T(n),o=s.reduce((m,y)=>m*y,1);for(let m=0;m<o;m++){const y=[];let w=m;for(let I=s.length-1;I>=0;I--)y.unshift(w%s[I]),w=Math.floor(w/s[I]);const h=y.slice(-(u.length||1)).map((I,S)=>(u[S]??1)===1?0:I),A=y.slice(-(p.length||1)).map((I,S)=>(p[S]??1)===1?0:I),N=L(n);for(let I=0;I<l;I++)if(N){N[0]=0;for(let S=0;S<g;S++){const x=[...h,S],D=[...A,S,I];N[0]+=Number(t.get(...x))*Number(e.get(...D))}a.set([...y,I],N[0])}else{let S=r?new $(0,0):_(n)?0n:0;for(let x=0;x<g;x++){const D=[...h,x],v=[...A,x,I],M=t.get(...D),C=e.get(...v),E=J(M,C);if(S instanceof $||E instanceof $){const F=S instanceof $?S:new $(Number(S),0),j=E instanceof $?E:new $(Number(E),0);S=F.add(j)}else typeof S=="bigint"||typeof E=="bigint"?S=BigInt(S)+BigInt(E):S=S+E}a.set([...y,I],S)}}return a}function te(t){if(t.ndim<2)throw new Error(`slogdet: input must be at least 2D, got ${t.ndim}D`);if(t.ndim>2){const c=Array.from(t.shape).slice(0,-2),s=t.shape[t.ndim-1],i=t.shape[t.ndim-2];if(i!==s)throw new Error(`slogdet: last 2 dimensions must be square, got ${i}x${s}`);const n=c.reduce((m,y)=>m*y,1),a=new Float64Array(n),r=new Float64Array(n),o=O(t);for(let m=0;m<n;m++){const y=m*s*s,w=z.fromData(o.slice(y,y+s*s),[s,s],"float64"),{sign:h,logabsdet:A}=te(w);a[m]=h,r[m]=A}return{sign:z.fromData(a,c,"float64"),logabsdet:z.fromData(r,c,"float64")}}const[e,g]=t.shape;if(e!==g)throw new Error(`slogdet: matrix must be square, got ${e}x${g}`);const f=e;if(f===0)return{sign:1,logabsdet:0};const{lu:l,sign:u}=nt(t),p=l.data;let d=0,b=u;for(let c=0;c<f;c++){const s=p[c*f+c];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 Te(t){return bt(t,!0,!1)}function _e(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 Oe(t,e=2){if(e<=0)throw new Error(`tensorinv: ind must be positive, got ${e}`);const g=t.shape,f=t.ndim;if(f<e)throw new Error(`tensorinv: array has ${f} dimensions, ind=${e} is too large`);let l=1;for(let c=0;c<e;c++)l*=g[c];let u=1;for(let c=e;c<f;c++)u*=g[c];if(l!==u)throw new Error(`tensorinv: product of first ${e} dimensions (${l}) must equal product of remaining dimensions (${u})`);const p=R.reshape(t,[l,u]),d=ot(p),b=[...g.slice(e),...g.slice(0,e)];return R.reshape(d,b)}function Ue(t,e,g){const f=t.shape,l=e.shape,u=t.ndim,p=e.ndim;let d;g==null?d=Array.from({length:p},(h,A)=>u-p+A):d=g.map(h=>h<0?u+h:h);const b=[];for(let h=0;h<u;h++)d.includes(h)||b.push(h);const c=[...b,...d],s=H(t,c),n=d.map(h=>f[h]).reduce((h,A)=>h*A,1),r=b.map(h=>f[h]).reduce((h,A)=>h*A,1),o=l.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 m=R.reshape(s,[r,n]),y=R.reshape(e,[n]),w=Kt(m,y);return R.reshape(w,[...l])}function Le(t,...e){const g=t.indexOf("->");let f,l;g===-1?(f=t,l=dt(f)):(f=t.slice(0,g),l=t.slice(g+2));const u=f.split(",").map(n=>n.trim());if(u.length!==e.length)throw new Error(`einsum_path: expected ${u.length} operands, got ${e.length}`);const p=e.map(n=>Array.isArray(n)?n:Array.from(n.shape)),d=new Map;for(let n=0;n<e.length;n++){const a=u[n],r=p[n];if(a.length!==r.length)throw new Error(`einsum_path: operand ${n} has ${r.length} dimensions but subscript '${a}' has ${a.length} indices`);for(let o=0;o<a.length;o++){const m=a[o],y=r[o];if(d.has(m)&&d.get(m)!==y)throw new Error(`einsum_path: size mismatch for index '${m}': ${d.get(m)} vs ${y}`);d.set(m,y)}}if(e.length===1){const n=[[0]];return[n,ct(t,p,n,d)]}if(e.length===2){const n=[[0,1]];return[n,ct(t,p,n,d)]}const b=[],c=[...u],s=[...p],i=e.map((n,a)=>a);for(;c.length>1;){let n=0,a=1,r=1/0;for(let y=0;y<c.length;y++)for(let w=y+1;w<c.length;w++){const h=ee(c[y],c[w],s[y],s[w],l,d);h<r&&(r=h,n=y,a=w)}b.push([i[n],i[a]]);const[o,m]=re(c[n],c[a],s[n],s[a],l,d);c.splice(a,1),c.splice(n,1),s.splice(a,1),s.splice(n,1),i.splice(a,1),i.splice(n,1),c.push(o),s.push(m),i.push(-1)}return[b,ct(t,p,b,d)]}function ee(t,e,g,f,l,u){const p=new Set(t),d=new Set(e);let b=1;for(const c of p)b*=u.get(c)||1;for(const c of d)p.has(c)||(b*=u.get(c)||1);return b}function re(t,e,g,f,l,u){const p=new Set([...t,...e]),d=new Map;for(const i of t)d.set(i,(d.get(i)||0)+1);for(const i of e)d.set(i,(d.get(i)||0)+1);const b=new Set(l),c=[];for(const i of p)(b.has(i)||d.get(i)===1)&&c.push(i);c.sort();const s=c.map(i=>u.get(i));return[c.join(""),s]}function ct(t,e,g,f){const l=[];l.push(" Complete contraction: "+t),l.push(" Operand shapes: "+e.map(p=>`(${p.join(", ")})`).join(", ")),l.push(" Contraction path: "+JSON.stringify(g));let u=0;for(const p of e)u+=p.reduce((d,b)=>d*b,1);return l.push(" Estimated FLOPS: ~"+u.toExponential(2)),l.join(`
2
- `)}export{Gt as cholesky,ze as cond,De as cross,Ht as det,xe as diagonal,Z as dot,wt as eig,At as eigh,Ee as eigvals,Fe as eigvalsh,Ne as einsum,Le as einsum_path,Ae as inner,ot as inv,Ie as kron,$e as lstsq,X as matmul,K as matrix_norm,Ce as matrix_power,Me as matrix_rank,Be as matrix_transpose,ke as matvec,_e as multi_dot,ve as norm,Wt as outer,Re as permute_dims,Yt as pinv,gt as qr,te as slogdet,Kt as solve,bt as svd,Te as svdvals,Se as tensordot,Oe as tensorinv,Ue as tensorsolve,we as trace,H as transpose,je as vdot,Ve as vecdot,qe as vecmat,rt 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};