numpy-ts 0.13.1 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (419) hide show
  1. package/README.md +30 -251
  2. package/dist/esm/common/internal/indexing.js +1 -1
  3. package/dist/esm/common/ndarray-core.js +1 -1
  4. package/dist/esm/common/ops/advanced.js +1 -1
  5. package/dist/esm/common/ops/arithmetic.js +1 -1
  6. package/dist/esm/common/ops/bitwise.js +1 -1
  7. package/dist/esm/common/ops/exponential.js +1 -1
  8. package/dist/esm/common/ops/fft.js +1 -1
  9. package/dist/esm/common/ops/gradient.js +1 -1
  10. package/dist/esm/common/ops/hyperbolic.js +1 -1
  11. package/dist/esm/common/ops/linalg.js +2 -2
  12. package/dist/esm/common/ops/logic.js +1 -1
  13. package/dist/esm/common/ops/reduction.js +1 -1
  14. package/dist/esm/common/ops/sets.js +1 -1
  15. package/dist/esm/common/ops/shape.js +1 -1
  16. package/dist/esm/common/ops/sorting.js +1 -1
  17. package/dist/esm/common/ops/statistics.js +1 -1
  18. package/dist/esm/common/ops/trig.js +1 -1
  19. package/dist/esm/common/storage.js +1 -1
  20. package/dist/esm/common/wasm/abs.js +1 -0
  21. package/dist/esm/common/wasm/add.js +1 -0
  22. package/dist/esm/common/wasm/arccos.js +1 -0
  23. package/dist/esm/common/wasm/arcsin.js +1 -0
  24. package/dist/esm/common/wasm/arctan.js +1 -0
  25. package/dist/esm/common/wasm/argpartition.js +1 -0
  26. package/dist/esm/common/wasm/argsort.js +1 -0
  27. package/dist/esm/common/wasm/bins/abs.wasm.js +1 -0
  28. package/dist/esm/common/wasm/bins/add.wasm.js +1 -0
  29. package/dist/esm/common/wasm/bins/arccos.wasm.js +1 -0
  30. package/dist/esm/common/wasm/bins/arcsin.wasm.js +1 -0
  31. package/dist/esm/common/wasm/bins/arctan.wasm.js +1 -0
  32. package/dist/esm/common/wasm/bins/argpartition.wasm.js +1 -0
  33. package/dist/esm/common/wasm/bins/argsort.wasm.js +1 -0
  34. package/dist/esm/common/wasm/bins/bitwise_and.wasm.js +1 -0
  35. package/dist/esm/common/wasm/bins/bitwise_count.wasm.js +1 -0
  36. package/dist/esm/common/wasm/bins/bitwise_not.wasm.js +1 -0
  37. package/dist/esm/common/wasm/bins/bitwise_or.wasm.js +1 -0
  38. package/dist/esm/common/wasm/bins/bitwise_xor.wasm.js +1 -0
  39. package/dist/esm/common/wasm/bins/cholesky.wasm.js +1 -0
  40. package/dist/esm/common/wasm/bins/clip.wasm.js +1 -0
  41. package/dist/esm/common/wasm/bins/convolve.wasm.js +1 -0
  42. package/dist/esm/common/wasm/bins/copysign.wasm.js +1 -0
  43. package/dist/esm/common/wasm/bins/correlate.wasm.js +1 -0
  44. package/dist/esm/common/wasm/bins/cos.wasm.js +1 -0
  45. package/dist/esm/common/wasm/bins/cosh.wasm.js +1 -0
  46. package/dist/esm/common/wasm/bins/cross.wasm.js +1 -0
  47. package/dist/esm/common/wasm/bins/diff.wasm.js +1 -0
  48. package/dist/esm/common/wasm/bins/divide.wasm.js +1 -0
  49. package/dist/esm/common/wasm/bins/dot.wasm.js +1 -0
  50. package/dist/esm/common/wasm/bins/exp.wasm.js +1 -0
  51. package/dist/esm/common/wasm/bins/exp2.wasm.js +1 -0
  52. package/dist/esm/common/wasm/bins/fft.wasm.js +1 -0
  53. package/dist/esm/common/wasm/bins/flip.wasm.js +1 -0
  54. package/dist/esm/common/wasm/bins/frexp.wasm.js +1 -0
  55. package/dist/esm/common/wasm/bins/gather.wasm.js +1 -0
  56. package/dist/esm/common/wasm/bins/gcd.wasm.js +1 -0
  57. package/dist/esm/common/wasm/bins/gradient.wasm.js +1 -0
  58. package/dist/esm/common/wasm/bins/heaviside.wasm.js +1 -0
  59. package/dist/esm/common/wasm/bins/hypot.wasm.js +1 -0
  60. package/dist/esm/common/wasm/bins/indices.wasm.js +1 -0
  61. package/dist/esm/common/wasm/bins/inner.wasm.js +1 -0
  62. package/dist/esm/common/wasm/bins/kron.wasm.js +1 -0
  63. package/dist/esm/common/wasm/bins/ldexp.wasm.js +1 -0
  64. package/dist/esm/common/wasm/bins/left_shift.wasm.js +1 -0
  65. package/dist/esm/common/wasm/bins/lexsort.wasm.js +1 -0
  66. package/dist/esm/common/wasm/bins/logaddexp.wasm.js +1 -0
  67. package/dist/esm/common/wasm/bins/logical_and.wasm.js +1 -0
  68. package/dist/esm/common/wasm/bins/logical_not.wasm.js +1 -0
  69. package/dist/esm/common/wasm/bins/logical_or.wasm.js +1 -0
  70. package/dist/esm/common/wasm/bins/logical_xor.wasm.js +1 -0
  71. package/dist/esm/common/wasm/bins/matmul.wasm.js +1 -0
  72. package/dist/esm/common/wasm/bins/matvec.wasm.js +1 -0
  73. package/dist/esm/common/wasm/bins/max.wasm.js +1 -0
  74. package/dist/esm/common/wasm/bins/min.wasm.js +1 -0
  75. package/dist/esm/common/wasm/bins/mul.wasm.js +1 -0
  76. package/dist/esm/common/wasm/bins/neg.wasm.js +1 -0
  77. package/dist/esm/common/wasm/bins/outer.wasm.js +1 -0
  78. package/dist/esm/common/wasm/bins/pad.wasm.js +1 -0
  79. package/dist/esm/common/wasm/bins/partition.wasm.js +1 -0
  80. package/dist/esm/common/wasm/bins/power.wasm.js +1 -0
  81. package/dist/esm/common/wasm/bins/qr.wasm.js +1 -0
  82. package/dist/esm/common/wasm/bins/reciprocal.wasm.js +1 -0
  83. package/dist/esm/common/wasm/bins/reduce_all.wasm.js +1 -0
  84. package/dist/esm/common/wasm/bins/reduce_any.wasm.js +1 -0
  85. package/dist/esm/common/wasm/bins/reduce_argmax.wasm.js +1 -0
  86. package/dist/esm/common/wasm/bins/reduce_argmin.wasm.js +1 -0
  87. package/dist/esm/common/wasm/bins/reduce_count_nz.wasm.js +1 -0
  88. package/dist/esm/common/wasm/bins/reduce_max.wasm.js +1 -0
  89. package/dist/esm/common/wasm/bins/reduce_mean.wasm.js +1 -0
  90. package/dist/esm/common/wasm/bins/reduce_min.wasm.js +1 -0
  91. package/dist/esm/common/wasm/bins/reduce_nanmax.wasm.js +1 -0
  92. package/dist/esm/common/wasm/bins/reduce_nanmin.wasm.js +1 -0
  93. package/dist/esm/common/wasm/bins/reduce_nansum.wasm.js +1 -0
  94. package/dist/esm/common/wasm/bins/reduce_prod.wasm.js +1 -0
  95. package/dist/esm/common/wasm/bins/reduce_quantile.wasm.js +1 -0
  96. package/dist/esm/common/wasm/bins/reduce_std.wasm.js +1 -0
  97. package/dist/esm/common/wasm/bins/reduce_sum.wasm.js +1 -0
  98. package/dist/esm/common/wasm/bins/reduce_var.wasm.js +1 -0
  99. package/dist/esm/common/wasm/bins/repeat.wasm.js +1 -0
  100. package/dist/esm/common/wasm/bins/right_shift.wasm.js +1 -0
  101. package/dist/esm/common/wasm/bins/roll.wasm.js +1 -0
  102. package/dist/esm/common/wasm/bins/rot90.wasm.js +1 -0
  103. package/dist/esm/common/wasm/bins/searchsorted.wasm.js +1 -0
  104. package/dist/esm/common/wasm/bins/sign.wasm.js +1 -0
  105. package/dist/esm/common/wasm/bins/sinh.wasm.js +1 -0
  106. package/dist/esm/common/wasm/bins/sort.wasm.js +1 -0
  107. package/dist/esm/common/wasm/bins/sqrt.wasm.js +1 -0
  108. package/dist/esm/common/wasm/bins/square.wasm.js +1 -0
  109. package/dist/esm/common/wasm/bins/sub.wasm.js +1 -0
  110. package/dist/esm/common/wasm/bins/svd.wasm.js +1 -0
  111. package/dist/esm/common/wasm/bins/tan.wasm.js +1 -0
  112. package/dist/esm/common/wasm/bins/tanh.wasm.js +1 -0
  113. package/dist/esm/common/wasm/bins/tile.wasm.js +1 -0
  114. package/dist/esm/common/wasm/bins/vdot.wasm.js +1 -0
  115. package/dist/esm/common/wasm/bins/vecdot.wasm.js +1 -0
  116. package/dist/esm/common/wasm/bins/vecmat.wasm.js +1 -0
  117. package/dist/esm/common/wasm/bitwise_and.js +1 -0
  118. package/dist/esm/common/wasm/bitwise_count.js +1 -0
  119. package/dist/esm/common/wasm/bitwise_not.js +1 -0
  120. package/dist/esm/common/wasm/bitwise_or.js +1 -0
  121. package/dist/esm/common/wasm/bitwise_xor.js +1 -0
  122. package/dist/esm/common/wasm/cholesky.js +1 -0
  123. package/dist/esm/common/wasm/clip.js +1 -0
  124. package/dist/esm/common/wasm/config.js +1 -0
  125. package/dist/esm/common/wasm/convolve.js +1 -0
  126. package/dist/esm/common/wasm/copysign.js +1 -0
  127. package/dist/esm/common/wasm/correlate.js +1 -0
  128. package/dist/esm/common/wasm/cos.js +1 -0
  129. package/dist/esm/common/wasm/cosh.js +1 -0
  130. package/dist/esm/common/wasm/cross.js +1 -0
  131. package/dist/esm/common/wasm/diff.js +1 -0
  132. package/dist/esm/common/wasm/divide.js +1 -0
  133. package/dist/esm/common/wasm/dot.js +1 -0
  134. package/dist/esm/common/wasm/exp.js +1 -0
  135. package/dist/esm/common/wasm/exp2.js +1 -0
  136. package/dist/esm/common/wasm/fft.js +1 -0
  137. package/dist/esm/common/wasm/flip.js +1 -0
  138. package/dist/esm/common/wasm/frexp.js +1 -0
  139. package/dist/esm/common/wasm/gather.js +1 -0
  140. package/dist/esm/common/wasm/gcd.js +1 -0
  141. package/dist/esm/common/wasm/gradient.js +1 -0
  142. package/dist/esm/common/wasm/heaviside.js +1 -0
  143. package/dist/esm/common/wasm/hypot.js +1 -0
  144. package/dist/esm/common/wasm/indices.js +1 -0
  145. package/dist/esm/common/wasm/inner.js +1 -0
  146. package/dist/esm/common/wasm/kron.js +1 -0
  147. package/dist/esm/common/wasm/ldexp.js +1 -0
  148. package/dist/esm/common/wasm/left_shift.js +1 -0
  149. package/dist/esm/common/wasm/lexsort.js +1 -0
  150. package/dist/esm/common/wasm/logaddexp.js +1 -0
  151. package/dist/esm/common/wasm/logical_and.js +1 -0
  152. package/dist/esm/common/wasm/logical_not.js +1 -0
  153. package/dist/esm/common/wasm/logical_or.js +1 -0
  154. package/dist/esm/common/wasm/logical_xor.js +1 -0
  155. package/dist/esm/common/wasm/lstsq.js +1 -0
  156. package/dist/esm/common/wasm/matmul.js +1 -0
  157. package/dist/esm/common/wasm/matvec.js +1 -0
  158. package/dist/esm/common/wasm/max.js +1 -0
  159. package/dist/esm/common/wasm/min.js +1 -0
  160. package/dist/esm/common/wasm/mul.js +1 -0
  161. package/dist/esm/common/wasm/neg.js +1 -0
  162. package/dist/esm/common/wasm/outer.js +1 -0
  163. package/dist/esm/common/wasm/pad.js +1 -0
  164. package/dist/esm/common/wasm/partition.js +1 -0
  165. package/dist/esm/common/wasm/power.js +1 -0
  166. package/dist/esm/common/wasm/qr.js +1 -0
  167. package/dist/esm/common/wasm/reciprocal.js +1 -0
  168. package/dist/esm/common/wasm/reduce_all.js +1 -0
  169. package/dist/esm/common/wasm/reduce_any.js +1 -0
  170. package/dist/esm/common/wasm/reduce_argmax.js +1 -0
  171. package/dist/esm/common/wasm/reduce_argmin.js +1 -0
  172. package/dist/esm/common/wasm/reduce_count_nz.js +1 -0
  173. package/dist/esm/common/wasm/reduce_max.js +1 -0
  174. package/dist/esm/common/wasm/reduce_mean.js +1 -0
  175. package/dist/esm/common/wasm/reduce_min.js +1 -0
  176. package/dist/esm/common/wasm/reduce_nanmax.js +1 -0
  177. package/dist/esm/common/wasm/reduce_nanmin.js +1 -0
  178. package/dist/esm/common/wasm/reduce_nansum.js +1 -0
  179. package/dist/esm/common/wasm/reduce_prod.js +1 -0
  180. package/dist/esm/common/wasm/reduce_quantile.js +1 -0
  181. package/dist/esm/common/wasm/reduce_std.js +1 -0
  182. package/dist/esm/common/wasm/reduce_sum.js +1 -0
  183. package/dist/esm/common/wasm/reduce_var.js +1 -0
  184. package/dist/esm/common/wasm/repeat.js +1 -0
  185. package/dist/esm/common/wasm/right_shift.js +1 -0
  186. package/dist/esm/common/wasm/roll.js +1 -0
  187. package/dist/esm/common/wasm/rot90.js +1 -0
  188. package/dist/esm/common/wasm/runtime.js +1 -0
  189. package/dist/esm/common/wasm/searchsorted.js +1 -0
  190. package/dist/esm/common/wasm/sign.js +1 -0
  191. package/dist/esm/common/wasm/sinh.js +1 -0
  192. package/dist/esm/common/wasm/sort.js +1 -0
  193. package/dist/esm/common/wasm/sqrt.js +1 -0
  194. package/dist/esm/common/wasm/square.js +1 -0
  195. package/dist/esm/common/wasm/sub.js +1 -0
  196. package/dist/esm/common/wasm/svd.js +1 -0
  197. package/dist/esm/common/wasm/tan.js +1 -0
  198. package/dist/esm/common/wasm/tanh.js +1 -0
  199. package/dist/esm/common/wasm/tile.js +1 -0
  200. package/dist/esm/common/wasm/vdot.js +1 -0
  201. package/dist/esm/common/wasm/vecdot.js +1 -0
  202. package/dist/esm/common/wasm/vecmat.js +1 -0
  203. package/dist/esm/core/creation.js +1 -1
  204. package/dist/esm/core/linalg.js +1 -1
  205. package/dist/esm/core/polynomial.js +1 -1
  206. package/dist/esm/core/reduction.js +1 -1
  207. package/dist/esm/core/sets.js +1 -1
  208. package/dist/esm/core/shape-extra.js +1 -1
  209. package/dist/esm/core/sorting.js +1 -1
  210. package/dist/esm/full/index.js +1 -1
  211. package/dist/esm/full/ndarray.js +1 -1
  212. package/dist/esm/index.js +1 -1
  213. package/dist/esm/io/zip/types.js +1 -1
  214. package/dist/esm/io/zip/writer.js +1 -1
  215. package/dist/numpy-ts.browser.js +6 -6
  216. package/dist/numpy-ts.node-io.cjs +6 -6
  217. package/dist/numpy-ts.node-io.cjs.map +4 -4
  218. package/dist/numpy-ts.node-io.mjs +6 -6
  219. package/dist/numpy-ts.node-io.mjs.map +4 -4
  220. package/dist/numpy-ts.node.cjs +6 -6
  221. package/dist/numpy-ts.node.cjs.map +4 -4
  222. package/dist/types/common/internal/indexing.d.ts +18 -0
  223. package/dist/types/common/ndarray-core.d.ts +3 -13
  224. package/dist/types/common/ops/linalg.d.ts +13 -12
  225. package/dist/types/common/ops/sets.d.ts +1 -1
  226. package/dist/types/common/ops/shape.d.ts +11 -0
  227. package/dist/types/common/storage.d.ts +4 -0
  228. package/dist/types/common/wasm/abs.d.ts +14 -0
  229. package/dist/types/common/wasm/add.d.ts +19 -0
  230. package/dist/types/common/wasm/arccos.d.ts +15 -0
  231. package/dist/types/common/wasm/arcsin.d.ts +15 -0
  232. package/dist/types/common/wasm/arctan.d.ts +15 -0
  233. package/dist/types/common/wasm/argpartition.d.ts +18 -0
  234. package/dist/types/common/wasm/argsort.d.ts +18 -0
  235. package/dist/types/common/wasm/bins/abs.wasm.d.ts +7 -0
  236. package/dist/types/common/wasm/bins/add.wasm.d.ts +17 -0
  237. package/dist/types/common/wasm/bins/arccos.wasm.d.ts +5 -0
  238. package/dist/types/common/wasm/bins/arcsin.wasm.d.ts +5 -0
  239. package/dist/types/common/wasm/bins/arctan.wasm.d.ts +5 -0
  240. package/dist/types/common/wasm/bins/argpartition.wasm.d.ts +21 -0
  241. package/dist/types/common/wasm/bins/argsort.wasm.d.ts +25 -0
  242. package/dist/types/common/wasm/bins/bitwise_and.wasm.d.ts +5 -0
  243. package/dist/types/common/wasm/bins/bitwise_count.wasm.d.ts +9 -0
  244. package/dist/types/common/wasm/bins/bitwise_not.wasm.d.ts +5 -0
  245. package/dist/types/common/wasm/bins/bitwise_or.wasm.d.ts +5 -0
  246. package/dist/types/common/wasm/bins/bitwise_xor.wasm.d.ts +5 -0
  247. package/dist/types/common/wasm/bins/cholesky.wasm.d.ts +3 -0
  248. package/dist/types/common/wasm/bins/clip.wasm.d.ts +11 -0
  249. package/dist/types/common/wasm/bins/convolve.wasm.d.ts +3 -0
  250. package/dist/types/common/wasm/bins/copysign.wasm.d.ts +21 -0
  251. package/dist/types/common/wasm/bins/correlate.wasm.d.ts +3 -0
  252. package/dist/types/common/wasm/bins/cos.wasm.d.ts +3 -0
  253. package/dist/types/common/wasm/bins/cosh.wasm.d.ts +5 -0
  254. package/dist/types/common/wasm/bins/cross.wasm.d.ts +9 -0
  255. package/dist/types/common/wasm/bins/diff.wasm.d.ts +13 -0
  256. package/dist/types/common/wasm/bins/divide.wasm.d.ts +23 -0
  257. package/dist/types/common/wasm/bins/dot.wasm.d.ts +9 -0
  258. package/dist/types/common/wasm/bins/exp.wasm.d.ts +5 -0
  259. package/dist/types/common/wasm/bins/exp2.wasm.d.ts +5 -0
  260. package/dist/types/common/wasm/bins/fft.wasm.d.ts +17 -0
  261. package/dist/types/common/wasm/bins/flip.wasm.d.ts +7 -0
  262. package/dist/types/common/wasm/bins/frexp.wasm.d.ts +2 -0
  263. package/dist/types/common/wasm/bins/gather.wasm.d.ts +32 -0
  264. package/dist/types/common/wasm/bins/gcd.wasm.d.ts +3 -0
  265. package/dist/types/common/wasm/bins/gradient.wasm.d.ts +11 -0
  266. package/dist/types/common/wasm/bins/heaviside.wasm.d.ts +5 -0
  267. package/dist/types/common/wasm/bins/hypot.wasm.d.ts +13 -0
  268. package/dist/types/common/wasm/bins/indices.wasm.d.ts +3 -0
  269. package/dist/types/common/wasm/bins/inner.wasm.d.ts +9 -0
  270. package/dist/types/common/wasm/bins/kron.wasm.d.ts +9 -0
  271. package/dist/types/common/wasm/bins/ldexp.wasm.d.ts +3 -0
  272. package/dist/types/common/wasm/bins/left_shift.wasm.d.ts +9 -0
  273. package/dist/types/common/wasm/bins/lexsort.wasm.d.ts +11 -0
  274. package/dist/types/common/wasm/bins/logaddexp.wasm.d.ts +21 -0
  275. package/dist/types/common/wasm/bins/logical_and.wasm.d.ts +13 -0
  276. package/dist/types/common/wasm/bins/logical_not.wasm.d.ts +7 -0
  277. package/dist/types/common/wasm/bins/logical_or.wasm.d.ts +13 -0
  278. package/dist/types/common/wasm/bins/logical_xor.wasm.d.ts +13 -0
  279. package/dist/types/common/wasm/bins/matmul.wasm.d.ts +9 -0
  280. package/dist/types/common/wasm/bins/matvec.wasm.d.ts +9 -0
  281. package/dist/types/common/wasm/bins/max.wasm.d.ts +21 -0
  282. package/dist/types/common/wasm/bins/min.wasm.d.ts +21 -0
  283. package/dist/types/common/wasm/bins/mul.wasm.d.ts +17 -0
  284. package/dist/types/common/wasm/bins/neg.wasm.d.ts +9 -0
  285. package/dist/types/common/wasm/bins/outer.wasm.d.ts +9 -0
  286. package/dist/types/common/wasm/bins/pad.wasm.d.ts +7 -0
  287. package/dist/types/common/wasm/bins/partition.wasm.d.ts +21 -0
  288. package/dist/types/common/wasm/bins/power.wasm.d.ts +13 -0
  289. package/dist/types/common/wasm/bins/qr.wasm.d.ts +3 -0
  290. package/dist/types/common/wasm/bins/reciprocal.wasm.d.ts +7 -0
  291. package/dist/types/common/wasm/bins/reduce_all.wasm.d.ts +7 -0
  292. package/dist/types/common/wasm/bins/reduce_any.wasm.d.ts +7 -0
  293. package/dist/types/common/wasm/bins/reduce_argmax.wasm.d.ts +11 -0
  294. package/dist/types/common/wasm/bins/reduce_argmin.wasm.d.ts +11 -0
  295. package/dist/types/common/wasm/bins/reduce_count_nz.wasm.d.ts +7 -0
  296. package/dist/types/common/wasm/bins/reduce_max.wasm.d.ts +20 -0
  297. package/dist/types/common/wasm/bins/reduce_mean.wasm.d.ts +21 -0
  298. package/dist/types/common/wasm/bins/reduce_min.wasm.d.ts +20 -0
  299. package/dist/types/common/wasm/bins/reduce_nanmax.wasm.d.ts +3 -0
  300. package/dist/types/common/wasm/bins/reduce_nanmin.wasm.d.ts +3 -0
  301. package/dist/types/common/wasm/bins/reduce_nansum.wasm.d.ts +3 -0
  302. package/dist/types/common/wasm/bins/reduce_prod.wasm.d.ts +19 -0
  303. package/dist/types/common/wasm/bins/reduce_quantile.wasm.d.ts +2 -0
  304. package/dist/types/common/wasm/bins/reduce_std.wasm.d.ts +11 -0
  305. package/dist/types/common/wasm/bins/reduce_sum.wasm.d.ts +17 -0
  306. package/dist/types/common/wasm/bins/reduce_var.wasm.d.ts +11 -0
  307. package/dist/types/common/wasm/bins/repeat.wasm.d.ts +7 -0
  308. package/dist/types/common/wasm/bins/right_shift.wasm.d.ts +17 -0
  309. package/dist/types/common/wasm/bins/roll.wasm.d.ts +7 -0
  310. package/dist/types/common/wasm/bins/rot90.wasm.d.ts +7 -0
  311. package/dist/types/common/wasm/bins/searchsorted.wasm.d.ts +21 -0
  312. package/dist/types/common/wasm/bins/sign.wasm.d.ts +7 -0
  313. package/dist/types/common/wasm/bins/sinh.wasm.d.ts +5 -0
  314. package/dist/types/common/wasm/bins/sort.wasm.d.ts +25 -0
  315. package/dist/types/common/wasm/bins/sqrt.wasm.d.ts +7 -0
  316. package/dist/types/common/wasm/bins/square.wasm.d.ts +9 -0
  317. package/dist/types/common/wasm/bins/sub.wasm.d.ts +17 -0
  318. package/dist/types/common/wasm/bins/svd.wasm.d.ts +2 -0
  319. package/dist/types/common/wasm/bins/tan.wasm.d.ts +3 -0
  320. package/dist/types/common/wasm/bins/tanh.wasm.d.ts +5 -0
  321. package/dist/types/common/wasm/bins/tile.wasm.d.ts +7 -0
  322. package/dist/types/common/wasm/bins/vdot.wasm.d.ts +3 -0
  323. package/dist/types/common/wasm/bins/vecdot.wasm.d.ts +9 -0
  324. package/dist/types/common/wasm/bins/vecmat.wasm.d.ts +9 -0
  325. package/dist/types/common/wasm/bitwise_and.d.ts +9 -0
  326. package/dist/types/common/wasm/bitwise_count.d.ts +11 -0
  327. package/dist/types/common/wasm/bitwise_not.d.ts +9 -0
  328. package/dist/types/common/wasm/bitwise_or.d.ts +9 -0
  329. package/dist/types/common/wasm/bitwise_xor.d.ts +9 -0
  330. package/dist/types/common/wasm/cholesky.d.ts +20 -0
  331. package/dist/types/common/wasm/clip.d.ts +13 -0
  332. package/dist/types/common/wasm/config.d.ts +21 -0
  333. package/dist/types/common/wasm/convolve.d.ts +14 -0
  334. package/dist/types/common/wasm/copysign.d.ts +19 -0
  335. package/dist/types/common/wasm/correlate.d.ts +14 -0
  336. package/dist/types/common/wasm/cos.d.ts +15 -0
  337. package/dist/types/common/wasm/cosh.d.ts +15 -0
  338. package/dist/types/common/wasm/cross.d.ts +15 -0
  339. package/dist/types/common/wasm/diff.d.ts +15 -0
  340. package/dist/types/common/wasm/divide.d.ts +11 -0
  341. package/dist/types/common/wasm/dot.d.ts +14 -0
  342. package/dist/types/common/wasm/exp.d.ts +15 -0
  343. package/dist/types/common/wasm/exp2.d.ts +15 -0
  344. package/dist/types/common/wasm/fft.d.ts +29 -0
  345. package/dist/types/common/wasm/flip.d.ts +13 -0
  346. package/dist/types/common/wasm/frexp.d.ts +9 -0
  347. package/dist/types/common/wasm/gather.d.ts +23 -0
  348. package/dist/types/common/wasm/gcd.d.ts +11 -0
  349. package/dist/types/common/wasm/gradient.d.ts +13 -0
  350. package/dist/types/common/wasm/heaviside.d.ts +11 -0
  351. package/dist/types/common/wasm/hypot.d.ts +21 -0
  352. package/dist/types/common/wasm/indices.d.ts +10 -0
  353. package/dist/types/common/wasm/inner.d.ts +20 -0
  354. package/dist/types/common/wasm/kron.d.ts +13 -0
  355. package/dist/types/common/wasm/ldexp.d.ts +9 -0
  356. package/dist/types/common/wasm/left_shift.d.ts +11 -0
  357. package/dist/types/common/wasm/lexsort.d.ts +14 -0
  358. package/dist/types/common/wasm/logaddexp.d.ts +21 -0
  359. package/dist/types/common/wasm/logical_and.d.ts +19 -0
  360. package/dist/types/common/wasm/logical_not.d.ts +13 -0
  361. package/dist/types/common/wasm/logical_or.d.ts +19 -0
  362. package/dist/types/common/wasm/logical_xor.d.ts +19 -0
  363. package/dist/types/common/wasm/lstsq.d.ts +14 -0
  364. package/dist/types/common/wasm/matmul.d.ts +18 -0
  365. package/dist/types/common/wasm/matvec.d.ts +13 -0
  366. package/dist/types/common/wasm/max.d.ts +11 -0
  367. package/dist/types/common/wasm/min.d.ts +11 -0
  368. package/dist/types/common/wasm/mul.d.ts +19 -0
  369. package/dist/types/common/wasm/neg.d.ts +13 -0
  370. package/dist/types/common/wasm/outer.d.ts +13 -0
  371. package/dist/types/common/wasm/pad.d.ts +14 -0
  372. package/dist/types/common/wasm/partition.d.ts +20 -0
  373. package/dist/types/common/wasm/power.d.ts +19 -0
  374. package/dist/types/common/wasm/qr.d.ts +17 -0
  375. package/dist/types/common/wasm/reciprocal.d.ts +9 -0
  376. package/dist/types/common/wasm/reduce_all.d.ts +14 -0
  377. package/dist/types/common/wasm/reduce_any.d.ts +14 -0
  378. package/dist/types/common/wasm/reduce_argmax.d.ts +14 -0
  379. package/dist/types/common/wasm/reduce_argmin.d.ts +14 -0
  380. package/dist/types/common/wasm/reduce_count_nz.d.ts +14 -0
  381. package/dist/types/common/wasm/reduce_max.d.ts +19 -0
  382. package/dist/types/common/wasm/reduce_mean.d.ts +19 -0
  383. package/dist/types/common/wasm/reduce_min.d.ts +19 -0
  384. package/dist/types/common/wasm/reduce_nanmax.d.ts +14 -0
  385. package/dist/types/common/wasm/reduce_nanmin.d.ts +14 -0
  386. package/dist/types/common/wasm/reduce_nansum.d.ts +14 -0
  387. package/dist/types/common/wasm/reduce_prod.d.ts +20 -0
  388. package/dist/types/common/wasm/reduce_quantile.d.ts +15 -0
  389. package/dist/types/common/wasm/reduce_std.d.ts +14 -0
  390. package/dist/types/common/wasm/reduce_sum.d.ts +20 -0
  391. package/dist/types/common/wasm/reduce_var.d.ts +14 -0
  392. package/dist/types/common/wasm/repeat.d.ts +14 -0
  393. package/dist/types/common/wasm/right_shift.d.ts +11 -0
  394. package/dist/types/common/wasm/roll.d.ts +13 -0
  395. package/dist/types/common/wasm/rot90.d.ts +14 -0
  396. package/dist/types/common/wasm/runtime.d.ts +44 -0
  397. package/dist/types/common/wasm/searchsorted.d.ts +12 -0
  398. package/dist/types/common/wasm/sign.d.ts +14 -0
  399. package/dist/types/common/wasm/sinh.d.ts +15 -0
  400. package/dist/types/common/wasm/sort.d.ts +20 -0
  401. package/dist/types/common/wasm/sqrt.d.ts +15 -0
  402. package/dist/types/common/wasm/square.d.ts +13 -0
  403. package/dist/types/common/wasm/sub.d.ts +19 -0
  404. package/dist/types/common/wasm/svd.d.ts +18 -0
  405. package/dist/types/common/wasm/tan.d.ts +15 -0
  406. package/dist/types/common/wasm/tanh.d.ts +15 -0
  407. package/dist/types/common/wasm/tile.d.ts +14 -0
  408. package/dist/types/common/wasm/vdot.d.ts +16 -0
  409. package/dist/types/common/wasm/vecdot.d.ts +15 -0
  410. package/dist/types/common/wasm/vecmat.d.ts +13 -0
  411. package/dist/types/core/linalg.d.ts +10 -10
  412. package/dist/types/core/reduction.d.ts +17 -17
  413. package/dist/types/core/sets.d.ts +1 -1
  414. package/dist/types/core/sorting.d.ts +1 -1
  415. package/dist/types/full/index.d.ts +20 -18
  416. package/dist/types/full/ndarray.d.ts +16 -22
  417. package/dist/types/index.d.ts +1 -0
  418. package/dist/types/io/zip/types.d.ts +2 -1
  419. package/package.json +39 -15
@@ -1 +1 @@
1
- import{ArrayStorage as C}from"../storage";import{isBigIntDType as z,isIntegerDType as L,promoteDTypes as F}from"../dtype";import{elementwiseBinaryOp as R}from"../internal/compute";function _(t,r){if(!L(t)&&t!=="bool")throw new TypeError(`ufunc '${r}' not supported for the input types, and the inputs could not be safely coerced to any supported types`)}function E(t,r){return t.isCContiguous&&r.isCContiguous&&t.shape.length===r.shape.length&&t.shape.every((c,l)=>c===r.shape[l])}function ut(t,r){return _(t.dtype,"bitwise_and"),typeof r=="number"?W(t,r):(_(r.dtype,"bitwise_and"),E(t,r)?Q(t,r):R(t,r,(c,l)=>c&l,"bitwise_and"))}function Q(t,r){const c=F(t.dtype,r.dtype),l=C.zeros(Array.from(t.shape),c),f=t.size,i=t.data,s=r.data,d=t.offset,u=r.offset,o=l.data;if(z(c)){const e=o;if(!z(t.dtype)||!z(r.dtype))for(let n=0;n<f;n++){const a=typeof i[d+n]=="bigint"?i[d+n]:BigInt(Math.round(Number(i[d+n]))),g=typeof s[u+n]=="bigint"?s[u+n]:BigInt(Math.round(Number(s[u+n])));e[n]=a&g}else{const n=i,a=s;for(let g=0;g<f;g++)e[g]=n[d+g]&a[u+g]}}else for(let e=0;e<f;e++)o[e]=i[d+e]&s[u+e];return l}function W(t,r){const c=t.dtype,l=Array.from(t.shape),f=t.data,i=t.offset,s=t.size,d=t.isCContiguous,u=C.zeros(l,c),o=u.data;if(z(c)){const e=o,y=BigInt(Math.round(r));if(d){const n=f;if(i===0)for(let a=0;a<s;a++)e[a]=n[a]&y;else for(let a=0;a<s;a++)e[a]=n[i+a]&y}else for(let n=0;n<s;n++)e[n]=t.iget(n)&y}else if(d)if(i===0)for(let e=0;e<s;e++)o[e]=f[e]&r;else for(let e=0;e<s;e++)o[e]=f[i+e]&r;else for(let e=0;e<s;e++)o[e]=Number(t.iget(e))&r;return u}function ct(t,r){return _(t.dtype,"bitwise_or"),typeof r=="number"?Z(t,r):(_(r.dtype,"bitwise_or"),E(t,r)?Y(t,r):R(t,r,(c,l)=>c|l,"bitwise_or"))}function Y(t,r){const c=F(t.dtype,r.dtype),l=C.zeros(Array.from(t.shape),c),f=t.size,i=t.data,s=r.data,d=t.offset,u=r.offset,o=l.data;if(z(c)){const e=o;if(!z(t.dtype)||!z(r.dtype))for(let n=0;n<f;n++){const a=typeof i[d+n]=="bigint"?i[d+n]:BigInt(Math.round(Number(i[d+n]))),g=typeof s[u+n]=="bigint"?s[u+n]:BigInt(Math.round(Number(s[u+n])));e[n]=a|g}else{const n=i,a=s;for(let g=0;g<f;g++)e[g]=n[d+g]|a[u+g]}}else for(let e=0;e<f;e++)o[e]=i[d+e]|s[u+e];return l}function Z(t,r){const c=t.dtype,l=Array.from(t.shape),f=t.data,i=t.offset,s=t.size,d=t.isCContiguous,u=C.zeros(l,c),o=u.data;if(z(c)){const e=o,y=BigInt(Math.round(r));if(d){const n=f;if(i===0)for(let a=0;a<s;a++)e[a]=n[a]|y;else for(let a=0;a<s;a++)e[a]=n[i+a]|y}else for(let n=0;n<s;n++)e[n]=t.iget(n)|y}else if(d)if(i===0)for(let e=0;e<s;e++)o[e]=f[e]|r;else for(let e=0;e<s;e++)o[e]=f[i+e]|r;else for(let e=0;e<s;e++)o[e]=Number(t.iget(e))|r;return u}function yt(t,r){return _(t.dtype,"bitwise_xor"),typeof r=="number"?tt(t,r):(_(r.dtype,"bitwise_xor"),E(t,r)?x(t,r):R(t,r,(c,l)=>c^l,"bitwise_xor"))}function x(t,r){const c=F(t.dtype,r.dtype),l=C.zeros(Array.from(t.shape),c),f=t.size,i=t.data,s=r.data,d=t.offset,u=r.offset,o=l.data;if(z(c)){const e=o;if(!z(t.dtype)||!z(r.dtype))for(let n=0;n<f;n++){const a=typeof i[d+n]=="bigint"?i[d+n]:BigInt(Math.round(Number(i[d+n]))),g=typeof s[u+n]=="bigint"?s[u+n]:BigInt(Math.round(Number(s[u+n])));e[n]=a^g}else{const n=i,a=s;for(let g=0;g<f;g++)e[g]=n[d+g]^a[u+g]}}else for(let e=0;e<f;e++)o[e]=i[d+e]^s[u+e];return l}function tt(t,r){const c=t.dtype,l=Array.from(t.shape),f=t.data,i=t.offset,s=t.size,d=t.isCContiguous,u=C.zeros(l,c),o=u.data;if(z(c)){const e=o,y=BigInt(Math.round(r));if(d){const n=f;if(i===0)for(let a=0;a<s;a++)e[a]=n[a]^y;else for(let a=0;a<s;a++)e[a]=n[i+a]^y}else for(let n=0;n<s;n++)e[n]=t.iget(n)^y}else if(d)if(i===0)for(let e=0;e<s;e++)o[e]=f[e]^r;else for(let e=0;e<s;e++)o[e]=f[i+e]^r;else for(let e=0;e<s;e++)o[e]=Number(t.iget(e))^r;return u}function H(t){_(t.dtype,"bitwise_not");const r=t.dtype,c=Array.from(t.shape),l=t.data,f=t.offset,i=t.size,s=t.isCContiguous,d=C.zeros(c,r),u=d.data;if(z(r)){const o=u;if(s){const e=l;if(f===0)for(let y=0;y<i;y++)o[y]=~e[y];else for(let y=0;y<i;y++)o[y]=~e[f+y]}else for(let e=0;e<i;e++)o[e]=~t.iget(e)}else if(s)if(f===0)for(let o=0;o<i;o++)u[o]=~l[o];else for(let o=0;o<i;o++)u[o]=~l[f+o];else for(let o=0;o<i;o++)u[o]=~Number(t.iget(o));return d}function lt(t){return H(t)}function et(t,r){if(_(t.dtype,"left_shift"),typeof r=="number")return J(t,r);if(_(r.dtype,"left_shift"),r.size===1||r.ndim===1&&r.shape[0]===1){const c=Number(r.iget(0));return J(t,c)}return E(t,r)?rt(t,r):R(t,r,(c,l)=>c<<l,"left_shift")}function rt(t,r){const c=F(t.dtype,r.dtype),l=C.zeros(Array.from(t.shape),c),f=t.size,i=t.data,s=r.data,d=t.offset,u=r.offset,o=l.data;if(z(c)){const e=o;for(let y=0;y<f;y++){const n=typeof i[d+y]=="bigint"?i[d+y]:BigInt(Math.round(Number(i[d+y]))),a=typeof s[u+y]=="bigint"?s[u+y]:BigInt(Math.round(Number(s[u+y])));e[y]=n<<a}}else for(let e=0;e<f;e++)o[e]=i[d+e]<<s[u+e];return l}function J(t,r){const c=t.dtype,l=Array.from(t.shape),f=t.data,i=t.offset,s=t.size,d=t.isCContiguous,u=C.zeros(l,c),o=u.data;if(z(c)){const e=o,y=BigInt(Math.round(r));if(d){const n=f;if(i===0)for(let a=0;a<s;a++)e[a]=n[a]<<y;else for(let a=0;a<s;a++)e[a]=n[i+a]<<y}else for(let n=0;n<s;n++)e[n]=t.iget(n)<<y}else if(d)if(i===0)for(let e=0;e<s;e++)o[e]=f[e]<<r;else for(let e=0;e<s;e++)o[e]=f[i+e]<<r;else for(let e=0;e<s;e++)o[e]=Number(t.iget(e))<<r;return u}function ot(t,r){if(_(t.dtype,"right_shift"),typeof r=="number")return K(t,r);if(_(r.dtype,"right_shift"),r.size===1||r.ndim===1&&r.shape[0]===1){const c=Number(r.iget(0));return K(t,c)}return E(t,r)?nt(t,r):R(t,r,(c,l)=>c>>l,"right_shift")}function nt(t,r){const c=F(t.dtype,r.dtype),l=C.zeros(Array.from(t.shape),c),f=t.size,i=t.data,s=r.data,d=t.offset,u=r.offset,o=l.data;if(z(c)){const e=o;for(let y=0;y<f;y++){const n=typeof i[d+y]=="bigint"?i[d+y]:BigInt(Math.round(Number(i[d+y]))),a=typeof s[u+y]=="bigint"?s[u+y]:BigInt(Math.round(Number(s[u+y])));e[y]=n>>a}}else for(let e=0;e<f;e++)o[e]=i[d+e]>>s[u+e];return l}function K(t,r){const c=t.dtype,l=Array.from(t.shape),f=t.data,i=t.offset,s=t.size,d=t.isCContiguous,u=C.zeros(l,c),o=u.data;if(z(c)){const e=o,y=BigInt(Math.round(r));if(d){const n=f;if(i===0)for(let a=0;a<s;a++)e[a]=n[a]>>y;else for(let a=0;a<s;a++)e[a]=n[i+a]>>y}else for(let n=0;n<s;n++)e[n]=t.iget(n)>>y}else if(d)if(i===0)for(let e=0;e<s;e++)o[e]=f[e]>>r;else for(let e=0;e<s;e++)o[e]=f[i+e]>>r;else for(let e=0;e<s;e++)o[e]=Number(t.iget(e))>>r;return u}function dt(t,r=-1,c="big"){const l=Array.from(t.shape),f=l.length;if(r<0&&(r=f+r),r<0||r>=f)throw new Error(`axis ${r} is out of bounds for array of dimension ${f}`);const i=l[r],s=Math.ceil(i/8),d=[...l];d[r]=s;const u=C.zeros(d,"uint8"),o=u.data,e=t.offset,y=t.isCContiguous;if(f===1){for(let I=0;I<s;I++){let p=0;for(let b=0;b<8;b++){const S=I*8+b;if(S<i){const w=y?Number(t.data[e+S])!==0?1:0:Number(t.iget(S))!==0?1:0;c==="big"?p|=w<<7-b:p|=w<<b}}o[I]=p}return u}const n=l.slice(0,r),a=l.slice(r+1),g=n.reduce((I,p)=>I*p,1),X=a.reduce((I,p)=>I*p,1),k=$(l),v=$(d);for(let I=0;I<g;I++)for(let p=0;p<X;p++)for(let b=0;b<s;b++){let S=0;for(let h=0;h<8;h++){const A=b*8+h;if(A<i){let B=0,D=I;for(let T=0;T<r;T++){const N=T<r-1?n.slice(T+1).reduce((P,j)=>P*j,1):1,V=Math.floor(D/N);D%=N,B+=V*k[T]}B+=A*k[r];let m=p;for(let T=r+1;T<f;T++){const N=T<f-1?a.slice(T-r).reduce((P,j)=>P*j,1):1,V=Math.floor(m/N);m%=N,B+=V*k[T]}const U=y?Number(t.data[e+B])!==0?1:0:Number(t.iget(B))!==0?1:0;c==="big"?S|=U<<7-h:S|=U<<h}}let w=0,M=I;for(let h=0;h<r;h++){const A=h<r-1?n.slice(h+1).reduce((D,m)=>D*m,1):1,B=Math.floor(M/A);M%=A,w+=B*v[h]}w+=b*v[r];let O=p;for(let h=r+1;h<f;h++){const A=h<f-1?a.slice(h-r).reduce((D,m)=>D*m,1):1,B=Math.floor(O/A);O%=A,w+=B*v[h]}o[w]=S}return u}function gt(t,r=-1,c=-1,l="big"){if(t.dtype!=="uint8")throw new TypeError("Expected an input array of unsigned byte data type");const f=Array.from(t.shape),i=f.length;if(r<0&&(r=i+r),r<0||r>=i)throw new Error(`axis ${r} is out of bounds for array of dimension ${i}`);const s=f[r];let d=s*8;c>=0&&(d=c);const u=[...f];u[r]=d;const o=C.zeros(u,"uint8"),e=o.data,y=t.offset,n=t.isCContiguous;if(i===1){for(let p=0;p<s;p++){const b=Number(n?t.data[y+p]:t.iget(p));for(let S=0;S<8;S++){const w=p*8+S;if(w>=d)break;l==="big"?e[w]=b>>7-S&1:e[w]=b>>S&1}}return o}const a=f.slice(0,r),g=f.slice(r+1),X=a.reduce((p,b)=>p*b,1),k=g.reduce((p,b)=>p*b,1),v=$(f),I=$(u);for(let p=0;p<X;p++)for(let b=0;b<k;b++)for(let S=0;S<s;S++){let w=0,M=p;for(let A=0;A<r;A++){const B=A<r-1?a.slice(A+1).reduce((m,U)=>m*U,1):1,D=Math.floor(M/B);M%=B,w+=D*v[A]}w+=S*v[r];let O=b;for(let A=r+1;A<i;A++){const B=A<i-1?g.slice(A-r).reduce((m,U)=>m*U,1):1,D=Math.floor(O/B);O%=B,w+=D*v[A]}const h=Number(n?t.data[y+w]:t.iget(w));for(let A=0;A<8;A++){const B=S*8+A;if(B>=d)break;let D=0;M=p;for(let m=0;m<r;m++){const U=m<r-1?a.slice(m+1).reduce((N,V)=>N*V,1):1,T=Math.floor(M/U);M%=U,D+=T*I[m]}D+=B*I[r],O=b;for(let m=r+1;m<i;m++){const U=m<i-1?g.slice(m-r).reduce((N,V)=>N*V,1):1,T=Math.floor(O/U);O%=U,D+=T*I[m]}l==="big"?e[D]=h>>7-A&1:e[D]=h>>A&1}}return o}function $(t){const r=t.length,c=new Array(r);let l=1;for(let f=r-1;f>=0;f--)c[f]=l,l*=t[f];return c}function pt(t){const r=t.dtype;_(r,"bitwise_count");const c=Array.from(t.shape),l=t.data,f=t.offset,i=t.size,s=t.isCContiguous,d=C.zeros(c,"uint8"),u=d.data;if(z(r))if(s){const o=l;if(f===0)for(let e=0;e<i;e++)u[e]=G(o[e]);else for(let e=0;e<i;e++)u[e]=G(o[f+e])}else for(let o=0;o<i;o++)u[o]=G(t.iget(o));else if(s)if(f===0)for(let o=0;o<i;o++)u[o]=q(l[o]);else for(let o=0;o<i;o++)u[o]=q(l[f+o]);else for(let o=0;o<i;o++)u[o]=q(Number(t.iget(o)));return d}function q(t){t=t>>>0;let r=0;for(;t!==0;)t=t&t-1,r++;return r}function G(t){t<0n&&(t=BigInt.asUintN(64,t));let r=0;for(;t!==0n;)t=t&t-1n,r++;return r}function At(t){return H(t)}function bt(t,r){return et(t,r)}function mt(t,r){return ot(t,r)}export{ut as bitwise_and,pt as bitwise_count,At as bitwise_invert,bt as bitwise_left_shift,H as bitwise_not,ct as bitwise_or,mt as bitwise_right_shift,yt as bitwise_xor,lt as invert,et as left_shift,dt as packbits,ot as right_shift,gt as unpackbits};
1
+ import{ArrayStorage as T}from"../storage";import{isBigIntDType as w,isIntegerDType as J,promoteDTypes as F}from"../dtype";import{elementwiseBinaryOp as E}from"../internal/compute";import{wasmBitwiseAnd as K}from"../wasm/bitwise_and";import{wasmBitwiseOr as Q}from"../wasm/bitwise_or";import{wasmBitwiseXor as W}from"../wasm/bitwise_xor";import{wasmBitwiseNot as Y}from"../wasm/bitwise_not";import{wasmLeftShift as Z,wasmLeftShiftScalar as tt}from"../wasm/left_shift";import{wasmRightShift as et,wasmRightShiftScalar as rt}from"../wasm/right_shift";import{wasmBitwiseCount as ot}from"../wasm/bitwise_count";function U(t,r){if(!J(t)&&t!=="bool")throw new TypeError(`ufunc '${r}' not supported for the input types, and the inputs could not be safely coerced to any supported types`)}function $(t,r){return t.isCContiguous&&r.isCContiguous&&t.shape.length===r.shape.length&&t.shape.every((a,l)=>a===r.shape[l])}function Ct(t,r){if(U(t.dtype,"bitwise_and"),typeof r=="number")return nt(t,r);if(U(r.dtype,"bitwise_and"),$(t,r)){const a=K(t,r);return a||it(t,r)}return E(t,r,(a,l)=>a&l,"bitwise_and")}function it(t,r){const a=F(t.dtype,r.dtype),l=T.zeros(Array.from(t.shape),a),u=t.size,f=t.data,i=r.data,y=t.offset,d=r.offset,c=l.data;if(w(a)){const e=c;if(!w(t.dtype)||!w(r.dtype))for(let o=0;o<u;o++){const s=typeof f[y+o]=="bigint"?f[y+o]:BigInt(Math.round(Number(f[y+o]))),p=typeof i[d+o]=="bigint"?i[d+o]:BigInt(Math.round(Number(i[d+o])));e[o]=s&p}else{const o=f,s=i;for(let p=0;p<u;p++)e[p]=o[y+p]&s[d+p]}}else for(let e=0;e<u;e++)c[e]=f[y+e]&i[d+e];return l}function nt(t,r){const a=t.dtype,l=Array.from(t.shape),u=t.data,f=t.offset,i=t.size,y=t.isCContiguous,d=T.zeros(l,a),c=d.data;if(w(a)){const e=c,n=BigInt(Math.round(r));if(y){const o=u;if(f===0)for(let s=0;s<i;s++)e[s]=o[s]&n;else for(let s=0;s<i;s++)e[s]=o[f+s]&n}else for(let o=0;o<i;o++)e[o]=t.iget(o)&n}else if(y)if(f===0)for(let e=0;e<i;e++)c[e]=u[e]&r;else for(let e=0;e<i;e++)c[e]=u[f+e]&r;else for(let e=0;e<i;e++)c[e]=Number(t.iget(e))&r;return d}function Dt(t,r){if(U(t.dtype,"bitwise_or"),typeof r=="number")return at(t,r);if(U(r.dtype,"bitwise_or"),$(t,r)){const a=Q(t,r);return a||st(t,r)}return E(t,r,(a,l)=>a|l,"bitwise_or")}function st(t,r){const a=F(t.dtype,r.dtype),l=T.zeros(Array.from(t.shape),a),u=t.size,f=t.data,i=r.data,y=t.offset,d=r.offset,c=l.data;if(w(a)){const e=c;if(!w(t.dtype)||!w(r.dtype))for(let o=0;o<u;o++){const s=typeof f[y+o]=="bigint"?f[y+o]:BigInt(Math.round(Number(f[y+o]))),p=typeof i[d+o]=="bigint"?i[d+o]:BigInt(Math.round(Number(i[d+o])));e[o]=s|p}else{const o=f,s=i;for(let p=0;p<u;p++)e[p]=o[y+p]|s[d+p]}}else for(let e=0;e<u;e++)c[e]=f[y+e]|i[d+e];return l}function at(t,r){const a=t.dtype,l=Array.from(t.shape),u=t.data,f=t.offset,i=t.size,y=t.isCContiguous,d=T.zeros(l,a),c=d.data;if(w(a)){const e=c,n=BigInt(Math.round(r));if(y){const o=u;if(f===0)for(let s=0;s<i;s++)e[s]=o[s]|n;else for(let s=0;s<i;s++)e[s]=o[f+s]|n}else for(let o=0;o<i;o++)e[o]=t.iget(o)|n}else if(y)if(f===0)for(let e=0;e<i;e++)c[e]=u[e]|r;else for(let e=0;e<i;e++)c[e]=u[f+e]|r;else for(let e=0;e<i;e++)c[e]=Number(t.iget(e))|r;return d}function Tt(t,r){if(U(t.dtype,"bitwise_xor"),typeof r=="number")return ut(t,r);if(U(r.dtype,"bitwise_xor"),$(t,r)){const a=W(t,r);return a||ft(t,r)}return E(t,r,(a,l)=>a^l,"bitwise_xor")}function ft(t,r){const a=F(t.dtype,r.dtype),l=T.zeros(Array.from(t.shape),a),u=t.size,f=t.data,i=r.data,y=t.offset,d=r.offset,c=l.data;if(w(a)){const e=c;if(!w(t.dtype)||!w(r.dtype))for(let o=0;o<u;o++){const s=typeof f[y+o]=="bigint"?f[y+o]:BigInt(Math.round(Number(f[y+o]))),p=typeof i[d+o]=="bigint"?i[d+o]:BigInt(Math.round(Number(i[d+o])));e[o]=s^p}else{const o=f,s=i;for(let p=0;p<u;p++)e[p]=o[y+p]^s[d+p]}}else for(let e=0;e<u;e++)c[e]=f[y+e]^i[d+e];return l}function ut(t,r){const a=t.dtype,l=Array.from(t.shape),u=t.data,f=t.offset,i=t.size,y=t.isCContiguous,d=T.zeros(l,a),c=d.data;if(w(a)){const e=c,n=BigInt(Math.round(r));if(y){const o=u;if(f===0)for(let s=0;s<i;s++)e[s]=o[s]^n;else for(let s=0;s<i;s++)e[s]=o[f+s]^n}else for(let o=0;o<i;o++)e[o]=t.iget(o)^n}else if(y)if(f===0)for(let e=0;e<i;e++)c[e]=u[e]^r;else for(let e=0;e<i;e++)c[e]=u[f+e]^r;else for(let e=0;e<i;e++)c[e]=Number(t.iget(e))^r;return d}function x(t){U(t.dtype,"bitwise_not");const r=Y(t);if(r)return r;const a=t.dtype,l=Array.from(t.shape),u=t.data,f=t.offset,i=t.size,y=t.isCContiguous,d=T.zeros(l,a),c=d.data;if(w(a)){const e=c;if(y){const n=u;if(f===0)for(let o=0;o<i;o++)e[o]=~n[o];else for(let o=0;o<i;o++)e[o]=~n[f+o]}else for(let n=0;n<i;n++)e[n]=~t.iget(n)}else if(y)if(f===0)for(let e=0;e<i;e++)c[e]=~u[e];else for(let e=0;e<i;e++)c[e]=~u[f+e];else for(let e=0;e<i;e++)c[e]=~Number(t.iget(e));return d}function Nt(t){return x(t)}function ct(t,r){if(U(t.dtype,"left_shift"),typeof r=="number")return G(t,r);if(U(r.dtype,"left_shift"),r.size===1||r.ndim===1&&r.shape[0]===1){const a=Number(r.iget(0)),l=tt(t,a);return l||G(t,a)}if($(t,r)){const a=Z(t,r);return a||lt(t,r)}return E(t,r,(a,l)=>a<<l,"left_shift")}function lt(t,r){const a=F(t.dtype,r.dtype),l=T.zeros(Array.from(t.shape),a),u=t.size,f=t.data,i=r.data,y=t.offset,d=r.offset,c=l.data;if(w(a)){const e=c;for(let n=0;n<u;n++){const o=typeof f[y+n]=="bigint"?f[y+n]:BigInt(Math.round(Number(f[y+n]))),s=typeof i[d+n]=="bigint"?i[d+n]:BigInt(Math.round(Number(i[d+n])));e[n]=o<<s}}else for(let e=0;e<u;e++)c[e]=f[y+e]<<i[d+e];return l}function G(t,r){const a=t.dtype,l=Array.from(t.shape),u=t.data,f=t.offset,i=t.size,y=t.isCContiguous,d=T.zeros(l,a),c=d.data;if(w(a)){const e=c,n=BigInt(Math.round(r));if(y){const o=u;if(f===0)for(let s=0;s<i;s++)e[s]=o[s]<<n;else for(let s=0;s<i;s++)e[s]=o[f+s]<<n}else for(let o=0;o<i;o++)e[o]=t.iget(o)<<n}else if(y)if(f===0)for(let e=0;e<i;e++)c[e]=u[e]<<r;else for(let e=0;e<i;e++)c[e]=u[f+e]<<r;else for(let e=0;e<i;e++)c[e]=Number(t.iget(e))<<r;return d}function yt(t,r){if(U(t.dtype,"right_shift"),typeof r=="number")return H(t,r);if(U(r.dtype,"right_shift"),r.size===1||r.ndim===1&&r.shape[0]===1){const a=Number(r.iget(0)),l=rt(t,a);return l||H(t,a)}if($(t,r)){const a=et(t,r);return a||dt(t,r)}return E(t,r,(a,l)=>a>>l,"right_shift")}function dt(t,r){const a=F(t.dtype,r.dtype),l=T.zeros(Array.from(t.shape),a),u=t.size,f=t.data,i=r.data,y=t.offset,d=r.offset,c=l.data;if(w(a)){const e=c;for(let n=0;n<u;n++){const o=typeof f[y+n]=="bigint"?f[y+n]:BigInt(Math.round(Number(f[y+n]))),s=typeof i[d+n]=="bigint"?i[d+n]:BigInt(Math.round(Number(i[d+n])));e[n]=o>>s}}else for(let e=0;e<u;e++)c[e]=f[y+e]>>i[d+e];return l}function H(t,r){const a=t.dtype,l=Array.from(t.shape),u=t.data,f=t.offset,i=t.size,y=t.isCContiguous,d=T.zeros(l,a),c=d.data;if(w(a)){const e=c,n=BigInt(Math.round(r));if(y){const o=u;if(f===0)for(let s=0;s<i;s++)e[s]=o[s]>>n;else for(let s=0;s<i;s++)e[s]=o[f+s]>>n}else for(let o=0;o<i;o++)e[o]=t.iget(o)>>n}else if(y)if(f===0)for(let e=0;e<i;e++)c[e]=u[e]>>r;else for(let e=0;e<i;e++)c[e]=u[f+e]>>r;else for(let e=0;e<i;e++)c[e]=Number(t.iget(e))>>r;return d}function Ut(t,r=-1,a="big"){const l=Array.from(t.shape),u=l.length;if(r<0&&(r=u+r),r<0||r>=u)throw new Error(`axis ${r} is out of bounds for array of dimension ${u}`);const f=l[r],i=Math.ceil(f/8),y=[...l];y[r]=i;const d=T.zeros(y,"uint8"),c=d.data,e=t.offset,n=t.isCContiguous;if(u===1){for(let z=0;z<i;z++){let g=0;for(let A=0;A<8;A++){const S=z*8+A;if(S<f){const I=n?Number(t.data[e+S])!==0?1:0:Number(t.iget(S))!==0?1:0;a==="big"?g|=I<<7-A:g|=I<<A}}c[z]=g}return d}const o=l.slice(0,r),s=l.slice(r+1),p=o.reduce((z,g)=>z*g,1),L=s.reduce((z,g)=>z*g,1),k=X(l),v=X(y);for(let z=0;z<p;z++)for(let g=0;g<L;g++)for(let A=0;A<i;A++){let S=0;for(let h=0;h<8;h++){const m=A*8+h;if(m<f){let B=0,C=z;for(let D=0;D<r;D++){const _=D<r-1?o.slice(D+1).reduce((P,j)=>P*j,1):1,O=Math.floor(C/_);C%=_,B+=O*k[D]}B+=m*k[r];let b=g;for(let D=r+1;D<u;D++){const _=D<u-1?s.slice(D-r).reduce((P,j)=>P*j,1):1,O=Math.floor(b/_);b%=_,B+=O*k[D]}const N=n?Number(t.data[e+B])!==0?1:0:Number(t.iget(B))!==0?1:0;a==="big"?S|=N<<7-h:S|=N<<h}}let I=0,M=z;for(let h=0;h<r;h++){const m=h<r-1?o.slice(h+1).reduce((C,b)=>C*b,1):1,B=Math.floor(M/m);M%=m,I+=B*v[h]}I+=A*v[r];let R=g;for(let h=r+1;h<u;h++){const m=h<u-1?s.slice(h-r).reduce((C,b)=>C*b,1):1,B=Math.floor(R/m);R%=m,I+=B*v[h]}c[I]=S}return d}function _t(t,r=-1,a=-1,l="big"){if(t.dtype!=="uint8")throw new TypeError("Expected an input array of unsigned byte data type");const u=Array.from(t.shape),f=u.length;if(r<0&&(r=f+r),r<0||r>=f)throw new Error(`axis ${r} is out of bounds for array of dimension ${f}`);const i=u[r];let y=i*8;a>=0&&(y=a);const d=[...u];d[r]=y;const c=T.zeros(d,"uint8"),e=c.data,n=t.offset,o=t.isCContiguous;if(f===1){for(let g=0;g<i;g++){const A=Number(o?t.data[n+g]:t.iget(g));for(let S=0;S<8;S++){const I=g*8+S;if(I>=y)break;l==="big"?e[I]=A>>7-S&1:e[I]=A>>S&1}}return c}const s=u.slice(0,r),p=u.slice(r+1),L=s.reduce((g,A)=>g*A,1),k=p.reduce((g,A)=>g*A,1),v=X(u),z=X(d);for(let g=0;g<L;g++)for(let A=0;A<k;A++)for(let S=0;S<i;S++){let I=0,M=g;for(let m=0;m<r;m++){const B=m<r-1?s.slice(m+1).reduce((b,N)=>b*N,1):1,C=Math.floor(M/B);M%=B,I+=C*v[m]}I+=S*v[r];let R=A;for(let m=r+1;m<f;m++){const B=m<f-1?p.slice(m-r).reduce((b,N)=>b*N,1):1,C=Math.floor(R/B);R%=B,I+=C*v[m]}const h=Number(o?t.data[n+I]:t.iget(I));for(let m=0;m<8;m++){const B=S*8+m;if(B>=y)break;let C=0;M=g;for(let b=0;b<r;b++){const N=b<r-1?s.slice(b+1).reduce((_,O)=>_*O,1):1,D=Math.floor(M/N);M%=N,C+=D*z[b]}C+=B*z[r],R=A;for(let b=r+1;b<f;b++){const N=b<f-1?p.slice(b-r).reduce((_,O)=>_*O,1):1,D=Math.floor(R/N);R%=N,C+=D*z[b]}l==="big"?e[C]=h>>7-m&1:e[C]=h>>m&1}}return c}function X(t){const r=t.length,a=new Array(r);let l=1;for(let u=r-1;u>=0;u--)a[u]=l,l*=t[u];return a}function Mt(t){const r=t.dtype;U(r,"bitwise_count");const a=ot(t);if(a)return a;const l=Array.from(t.shape),u=t.data,f=t.offset,i=t.size,y=t.isCContiguous,d=T.zeros(l,"uint8"),c=d.data,e=r==="int8"||r==="int16"||r==="int32"||r==="int64";if(w(r))if(y){const n=u;if(f===0)for(let o=0;o<i;o++){const s=n[o];c[o]=q(e&&s<0n?-s:s)}else for(let o=0;o<i;o++){const s=n[f+o];c[o]=q(e&&s<0n?-s:s)}}else for(let n=0;n<i;n++){const o=t.iget(n);c[n]=q(e&&o<0n?-o:o)}else if(e)if(y)if(f===0)for(let n=0;n<i;n++)c[n]=V(Math.abs(u[n]));else for(let n=0;n<i;n++)c[n]=V(Math.abs(u[f+n]));else for(let n=0;n<i;n++)c[n]=V(Math.abs(Number(t.iget(n))));else{const n=r==="uint8"?255:r==="uint16"?65535:4294967295;if(y)if(f===0)for(let o=0;o<i;o++)c[o]=V(u[o]&n);else for(let o=0;o<i;o++)c[o]=V(u[f+o]&n);else for(let o=0;o<i;o++)c[o]=V(Number(t.iget(o))&n)}return d}function V(t){t=t>>>0;let r=0;for(;t!==0;)t=t&t-1,r++;return r}function q(t){t<0n&&(t=BigInt.asUintN(64,t));let r=0;for(;t!==0n;)t=t&t-1n,r++;return r}function Rt(t){return x(t)}function vt(t,r){return ct(t,r)}function Ot(t,r){return yt(t,r)}export{Ct as bitwise_and,Mt as bitwise_count,Rt as bitwise_invert,vt as bitwise_left_shift,x as bitwise_not,Dt as bitwise_or,Ot as bitwise_right_shift,Tt as bitwise_xor,Nt as invert,ct as left_shift,Ut as packbits,yt as right_shift,_t as unpackbits};
@@ -1 +1 @@
1
- import{ArrayStorage as d}from"../storage";import{elementwiseUnaryOp as D,elementwiseBinaryOp as T,broadcastShapes as q}from"../internal/compute";import{isBigIntDType as w,isComplexDType as A,throwIfComplex as N}from"../dtype";function j(t){const r=t.dtype;if(A(r)){const f=Array.from(t.shape),y=t.size,u=t.isCContiguous,l=d.zeros(f,r),p=l.data;if(u){const e=t.data,c=t.offset;for(let a=0;a<y;a++){const o=e[(c+a)*2],s=e[(c+a)*2+1],i=Math.sqrt(o*o+s*s),n=Math.sqrt((i+o)/2),m=(s>=0?1:-1)*Math.sqrt((i-o)/2);p[a*2]=n,p[a*2+1]=m}}else for(let e=0;e<y;e++){const c=t.iget(e),a=c.re,o=c.im,s=Math.sqrt(a*a+o*o),i=Math.sqrt((s+a)/2),n=(o>=0?1:-1)*Math.sqrt((s-a)/2);p[e*2]=i,p[e*2+1]=n}return l}return D(t,Math.sqrt,!1)}function k(t,r){if(typeof r=="number")return V(t,r);const f=A(t.dtype),y=A(r.dtype);return f||y?I(t,r):T(t,r,Math.pow,"power")}function I(t,r){const f=A(t.dtype),y=A(r.dtype),u=t.dtype==="complex128"||r.dtype==="complex128"||r.dtype==="float64"?"complex128":"complex64",l=Array.from(t.shape),p=t.size,e=d.zeros(l,u),c=e.data,a=t.isCContiguous,o=r.isCContiguous,s=t.offset,i=r.offset;for(let n=0;n<p;n++){let m,g;if(f)if(a){const S=t.data;m=S[(s+n)*2],g=S[(s+n)*2+1]}else{const S=t.iget(n);m=S.re,g=S.im}else m=Number(t.iget(n)),g=0;let h,M;if(y)if(o){const S=r.data;h=S[(i+n)*2],M=S[(i+n)*2+1]}else{const S=r.iget(n);h=S.re,M=S.im}else h=Number(r.iget(n)),M=0;const C=Math.sqrt(m*m+g*g),z=Math.atan2(g,m),b=Math.log(C),F=h*b-M*z,x=h*z+M*b,v=Math.exp(F);c[n*2]=v*Math.cos(x),c[n*2+1]=v*Math.sin(x)}return e}function V(t,r){const f=t.dtype,y=Array.from(t.shape),u=t.data,l=t.size,p=t.offset,e=t.isCContiguous;if(A(f)){const n=d.zeros(y,f),m=n.data;if(e){const g=u;for(let h=0;h<l;h++){const M=g[(p+h)*2],C=g[(p+h)*2+1],z=Math.sqrt(M*M+C*C),b=Math.atan2(C,M),F=Math.pow(z,r),x=b*r;m[h*2]=F*Math.cos(x),m[h*2+1]=F*Math.sin(x)}}else for(let g=0;g<l;g++){const h=t.iget(g),M=h.re,C=h.im,z=Math.sqrt(M*M+C*C),b=Math.atan2(C,M),F=Math.pow(z,r),x=b*r;m[g*2]=F*Math.cos(x),m[g*2+1]=F*Math.sin(x)}return n}const o=f!=="float32"&&f!=="float64"&&(r<0||!Number.isInteger(r))?"float64":f,s=d.zeros(y,o),i=s.data;if(w(f))if(w(o)&&Number.isInteger(r)&&r>=0)if(e){const n=u,m=i;for(let g=0;g<l;g++)m[g]=n[p+g]**BigInt(r)}else{const n=i;for(let m=0;m<l;m++)n[m]=t.iget(m)**BigInt(r)}else if(e)for(let n=0;n<l;n++)i[n]=Math.pow(Number(u[p+n]),r);else for(let n=0;n<l;n++)i[n]=Math.pow(Number(t.iget(n)),r);else if(e)for(let n=0;n<l;n++)i[n]=Math.pow(Number(u[p+n]),r);else for(let n=0;n<l;n++)i[n]=Math.pow(Number(t.iget(n)),r);return s}function H(t){const r=t.dtype;if(A(r)){const f=Array.from(t.shape),y=t.size,u=t.isCContiguous,l=d.zeros(f,r),p=l.data;if(u){const e=t.data,c=t.offset;for(let a=0;a<y;a++){const o=e[(c+a)*2],s=e[(c+a)*2+1],i=Math.exp(o);p[a*2]=i*Math.cos(s),p[a*2+1]=i*Math.sin(s)}}else for(let e=0;e<y;e++){const c=t.iget(e),a=c.re,o=c.im,s=Math.exp(a);p[e*2]=s*Math.cos(o),p[e*2+1]=s*Math.sin(o)}return l}return D(t,Math.exp,!1)}function J(t){const r=t.dtype;if(A(r)){const f=Array.from(t.shape),y=t.size,u=t.isCContiguous,l=Math.LN2,p=d.zeros(f,r),e=p.data;if(u){const c=t.data,a=t.offset;for(let o=0;o<y;o++){const s=c[(a+o)*2],i=c[(a+o)*2+1],n=Math.exp(s*l),m=i*l;e[o*2]=n*Math.cos(m),e[o*2+1]=n*Math.sin(m)}}else for(let c=0;c<y;c++){const a=t.iget(c),o=a.re,s=a.im,i=Math.exp(o*l),n=s*l;e[c*2]=i*Math.cos(n),e[c*2+1]=i*Math.sin(n)}return p}return D(t,f=>Math.pow(2,f),!1)}function K(t){const r=t.dtype;if(A(r)){const f=Array.from(t.shape),y=t.size,u=t.isCContiguous,l=d.zeros(f,r),p=l.data;if(u){const e=t.data,c=t.offset;for(let a=0;a<y;a++){const o=e[(c+a)*2],s=e[(c+a)*2+1],i=Math.exp(o);p[a*2]=i*Math.cos(s)-1,p[a*2+1]=i*Math.sin(s)}}else for(let e=0;e<y;e++){const c=t.iget(e),a=c.re,o=c.im,s=Math.exp(a);p[e*2]=s*Math.cos(o)-1,p[e*2+1]=s*Math.sin(o)}return l}return D(t,Math.expm1,!1)}function Q(t){const r=t.dtype;if(A(r)){const f=Array.from(t.shape),y=t.size,u=t.isCContiguous,l=d.zeros(f,r),p=l.data;if(u){const e=t.data,c=t.offset;for(let a=0;a<y;a++){const o=e[(c+a)*2],s=e[(c+a)*2+1],i=Math.sqrt(o*o+s*s),n=Math.atan2(s,o);p[a*2]=Math.log(i),p[a*2+1]=n}}else for(let e=0;e<y;e++){const c=t.iget(e),a=c.re,o=c.im,s=Math.sqrt(a*a+o*o),i=Math.atan2(o,a);p[e*2]=Math.log(s),p[e*2+1]=i}return l}return D(t,Math.log,!1)}function W(t){const r=t.dtype;if(A(r)){const f=Array.from(t.shape),y=t.size,u=t.isCContiguous,l=1/Math.LN2,p=d.zeros(f,r),e=p.data;if(u){const c=t.data,a=t.offset;for(let o=0;o<y;o++){const s=c[(a+o)*2],i=c[(a+o)*2+1],n=Math.sqrt(s*s+i*i),m=Math.atan2(i,s);e[o*2]=Math.log(n)*l,e[o*2+1]=m*l}}else for(let c=0;c<y;c++){const a=t.iget(c),o=a.re,s=a.im,i=Math.sqrt(o*o+s*s),n=Math.atan2(s,o);e[c*2]=Math.log(i)*l,e[c*2+1]=n*l}return p}return D(t,Math.log2,!1)}function X(t){const r=t.dtype;if(A(r)){const f=Array.from(t.shape),y=t.size,u=t.isCContiguous,l=1/Math.LN10,p=d.zeros(f,r),e=p.data;if(u){const c=t.data,a=t.offset;for(let o=0;o<y;o++){const s=c[(a+o)*2],i=c[(a+o)*2+1],n=Math.sqrt(s*s+i*i),m=Math.atan2(i,s);e[o*2]=Math.log(n)*l,e[o*2+1]=m*l}}else for(let c=0;c<y;c++){const a=t.iget(c),o=a.re,s=a.im,i=Math.sqrt(o*o+s*s),n=Math.atan2(s,o);e[c*2]=Math.log(i)*l,e[c*2+1]=n*l}return p}return D(t,Math.log10,!1)}function Y(t){const r=t.dtype;if(A(r)){const f=Array.from(t.shape),y=t.size,u=t.isCContiguous,l=d.zeros(f,r),p=l.data;if(u){const e=t.data,c=t.offset;for(let a=0;a<y;a++){const o=e[(c+a)*2],s=e[(c+a)*2+1],i=1+o,n=Math.sqrt(i*i+s*s),m=Math.atan2(s,i);p[a*2]=Math.log(n),p[a*2+1]=m}}else for(let e=0;e<y;e++){const c=t.iget(e),a=c.re,o=c.im,s=1+a,i=Math.sqrt(s*s+o*o),n=Math.atan2(o,s);p[e*2]=Math.log(i),p[e*2+1]=n}return l}return D(t,Math.log1p,!1)}function Z(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"?B(t,r):R(t,r)}function R(t,r){const f=q(t.shape,r.shape),y=f.reduce((a,o)=>a*o,1),u=t.dtype,l=r.dtype,p=u==="float32"&&l==="float32"?"float32":"float64",e=d.zeros(f,p),c=e.data;for(let a=0;a<y;a++){const o=(w(u),Number(t.iget(a))),s=(w(l),Number(r.iget(a))),i=Math.max(o,s),n=Math.min(o,s);c[a]=i+Math.log1p(Math.exp(n-i))}return e}function B(t,r){const f=t.dtype,y=Array.from(t.shape),u=t.size,l=t.isCContiguous,p=f==="float32"?"float32":"float64",e=d.zeros(y,p),c=e.data;if(l){const a=t.offset;for(let o=0;o<u;o++){const s=Number(t.data[a+o]),i=Math.max(s,r),n=Math.min(s,r);c[o]=i+Math.log1p(Math.exp(n-i))}}else for(let a=0;a<u;a++){const o=Number(t.iget(a)),s=Math.max(o,r),i=Math.min(o,r);c[a]=s+Math.log1p(Math.exp(i-s))}return e}function $(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"?P(t,r):L(t,r)}function L(t,r){const f=q(t.shape,r.shape),y=f.reduce((o,s)=>o*s,1),u=t.dtype,l=r.dtype,p=u==="float32"&&l==="float32"?"float32":"float64",e=d.zeros(f,p),c=e.data,a=Math.LOG2E;for(let o=0;o<y;o++){const s=(w(u),Number(t.iget(o))),i=(w(l),Number(r.iget(o))),n=Math.max(s,i),m=Math.min(s,i);c[o]=n+Math.log1p(Math.pow(2,m-n))*a}return e}function P(t,r){const f=t.dtype,y=Array.from(t.shape),u=t.size,l=t.isCContiguous,p=f==="float32"?"float32":"float64",e=d.zeros(y,p),c=e.data,a=Math.LOG2E;if(l){const o=t.offset;for(let s=0;s<u;s++){const i=Number(t.data[o+s]),n=Math.max(i,r),m=Math.min(i,r);c[s]=n+Math.log1p(Math.pow(2,m-n))*a}}else for(let o=0;o<u;o++){const s=Number(t.iget(o)),i=Math.max(s,r),n=Math.min(s,r);c[o]=i+Math.log1p(Math.pow(2,n-i))*a}return e}export{H as exp,J as exp2,K as expm1,Q as log,X as log10,Y as log1p,W as log2,Z as logaddexp,$ as logaddexp2,k as power,j as sqrt};
1
+ import{ArrayStorage as d}from"../storage";import{elementwiseUnaryOp as D,elementwiseBinaryOp as T,broadcastShapes as q}from"../internal/compute";import{isBigIntDType as b,isComplexDType as M,throwIfComplex as N}from"../dtype";import{wasmSqrt as R}from"../wasm/sqrt";import{wasmPower as I,wasmPowerScalar as V}from"../wasm/power";import{wasmExp as L}from"../wasm/exp";import{wasmExp2 as P}from"../wasm/exp2";import{wasmLogaddexp as B,wasmLogaddexpScalar as O}from"../wasm/logaddexp";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 +1 @@
1
- import{ArrayStorage as b}from"../storage";import{Complex as C}from"../complex";function U(o,r,a){const e=o.length;e!==0&&e!==1&&((e&e-1)===0?D(o,r,a):v(o,r,a))}const z=new Map;function K(o,r){const a=`${o}_${r}`;let e=z.get(a);if(e)return e;const f=new Float64Array(o/2),l=new Float64Array(o/2),c=r?1:-1;for(let t=0;t<o/2;t++){const n=c*2*Math.PI*t/o;f[t]=Math.cos(n),l[t]=Math.sin(n)}if(e={cos:f,sin:l},z.set(a,e),z.size>100){const t=z.keys().next().value;z.delete(t)}return e}function D(o,r,a){const e=o.length;let f=0;for(let t=0;t<e-1;t++){if(t<f){let d=o[t];o[t]=o[f],o[f]=d,d=r[t],r[t]=r[f],r[f]=d}let n=e>>1;for(;n<=f;)f-=n,n>>=1;f+=n}const{cos:l,sin:c}=K(e,a);for(let t=2;t<=e;t*=2){const n=t>>1,d=e/t;for(let u=0;u<e;u+=t)for(let i=0,s=0;i<n;i++,s+=d){const y=l[s],m=c[s],h=u+i,A=u+i+n,p=o[h],g=r[h],S=o[A],w=r[A],F=y*S-m*w,_=y*w+m*S;o[h]=p+F,r[h]=g+_,o[A]=p-F,r[A]=g-_}}if(a){const t=1/e;for(let n=0;n<e;n++)o[n]=o[n]*t,r[n]=r[n]*t}}function v(o,r,a){const e=o.length;let f=1;for(;f<2*e-1;)f*=2;const l=a?1:-1,c=new Float64Array(e),t=new Float64Array(e);for(let s=0;s<e;s++){const y=l*Math.PI*s*s/e;c[s]=Math.cos(y),t[s]=Math.sin(y)}const n=new Float64Array(f),d=new Float64Array(f);for(let s=0;s<e;s++){const y=c[s],m=t[s];n[s]=o[s]*y-r[s]*m,d[s]=r[s]*y+o[s]*m}const u=new Float64Array(f),i=new Float64Array(f);u[0]=c[0],i[0]=-t[0];for(let s=1;s<e;s++)u[s]=c[s],i[s]=-t[s],u[f-s]=c[s],i[f-s]=-t[s];D(n,d,!1),D(u,i,!1);for(let s=0;s<f;s++){const y=n[s],m=d[s],h=u[s],A=i[s];n[s]=y*h-m*A,d[s]=y*A+m*h}D(n,d,!0);for(let s=0;s<e;s++){const y=n[s],m=d[s],h=c[s],A=t[s];o[s]=y*h-m*A,r[s]=m*h+y*A}if(a)for(let s=0;s<e;s++)o[s]=o[s]/e,r[s]=r[s]/e}function x(o,r,a=-1,e="backward"){return k(o,r!==void 0?[r]:void 0,[a],e,!1)}function M(o,r,a=-1,e="backward"){return k(o,r!==void 0?[r]:void 0,[a],e,!0)}function G(o,r,a=[-2,-1],e="backward"){return k(o,r,a,e,!1)}function H(o,r,a=[-2,-1],e="backward"){return k(o,r,a,e,!0)}function J(o,r,a,e="backward"){return k(o,r,a,e,!1)}function Q(o,r,a,e="backward"){return k(o,r,a,e,!0)}function k(o,r,a,e="backward",f=!1){const l=Array.from(o.shape),c=l.length;if(o.size===0)return b.zeros(l,"complex128");if(c===0){const u=b.zeros([1],"complex128"),i=o.iget(0),s=i instanceof C?i.re:Number(i),y=i instanceof C?i.im:0,m=u.data;return m[0]=s,m[1]=y,b.fromData(u.data,[],"complex128")}let t;if(a===void 0)if(r===void 0)t=Array.from({length:c},(u,i)=>i);else{t=[];for(let u=0;u<r.length;u++)t.push(c-r.length+u)}else t=a.map(u=>u<0?c+u:u);const n=[...l];if(r!==void 0)for(let u=0;u<r.length;u++){const i=t[u];n[i]=r[u]}let d=I(o);r!==void 0&&(d=B(d,n,t));for(const u of t)d=$(d,u,f,e);return d}function I(o){const r=o.dtype,a=Array.from(o.shape),e=o.size;if(r==="complex128"||r==="complex64"){const t=b.zeros(a,"complex128"),n=t.data,d=o.data;for(let u=0;u<e*2;u++)n[u]=d[u];return t}const f=b.zeros(a,"complex128"),l=f.data,c=o.data;if(r==="float64"){const t=c;for(let n=0;n<e;n++)l[n*2]=t[n]}else if(r==="float32"){const t=c;for(let n=0;n<e;n++)l[n*2]=t[n]}else if(r==="int32"){const t=c;for(let n=0;n<e;n++)l[n*2]=t[n]}else if(r==="int16"){const t=c;for(let n=0;n<e;n++)l[n*2]=t[n]}else if(r==="int8"){const t=c;for(let n=0;n<e;n++)l[n*2]=t[n]}else if(r==="uint32"){const t=c;for(let n=0;n<e;n++)l[n*2]=t[n]}else if(r==="uint16"){const t=c;for(let n=0;n<e;n++)l[n*2]=t[n]}else if(r==="uint8"){const t=c;for(let n=0;n<e;n++)l[n*2]=t[n]}else if(r==="int64"||r==="uint64"){const t=c;for(let n=0;n<e;n++)l[n*2]=Number(t[n])}else for(let t=0;t<e;t++)l[t*2]=Number(c[t]);return f}function B(o,r,a){const e=Array.from(o.shape);let f=o;for(const l of a){const c=e[l],t=r[l];c!==t&&(t>c?f=P(f,l,t):f=R(f,l,t),e[l]=t)}return f}function P(o,r,a){const e=Array.from(o.shape),f=e[r];e[r]=a;const l=b.zeros(e,"complex128"),c=l.data,t=o.data,n=e.slice(0,r).reduce((u,i)=>u*i,1),d=e.slice(r+1).reduce((u,i)=>u*i,1);for(let u=0;u<n;u++)for(let i=0;i<f;i++)for(let s=0;s<d;s++){const y=(u*f+i)*d+s,m=(u*a+i)*d+s;c[m*2]=t[y*2],c[m*2+1]=t[y*2+1]}return l}function R(o,r,a){const e=Array.from(o.shape),f=e[r];e[r]=a;const l=b.zeros(e,"complex128"),c=l.data,t=o.data,n=e.slice(0,r).reduce((u,i)=>u*i,1),d=e.slice(r+1).reduce((u,i)=>u*i,1);for(let u=0;u<n;u++)for(let i=0;i<a;i++)for(let s=0;s<d;s++){const y=(u*f+i)*d+s,m=(u*a+i)*d+s;c[m*2]=t[y*2],c[m*2+1]=t[y*2+1]}return l}function $(o,r,a,e){const f=Array.from(o.shape),l=f[r];if(l===0)return o;const c=b.zeros(f,"complex128"),t=c.data,n=o.data,d=f.slice(0,r).reduce((y,m)=>y*m,1),u=f.slice(r+1).reduce((y,m)=>y*m,1),i=new Float64Array(l),s=new Float64Array(l);for(let y=0;y<d;y++)for(let m=0;m<u;m++){for(let h=0;h<l;h++){const A=(y*l+h)*u+m;i[h]=n[A*2],s[h]=n[A*2+1]}if(U(i,s,a),e==="ortho"){const h=1/Math.sqrt(l);if(a){const A=Math.sqrt(l);for(let p=0;p<l;p++)i[p]=i[p]*A,s[p]=s[p]*A}else for(let A=0;A<l;A++)i[A]=i[A]*h,s[A]=s[A]*h}else if(e==="forward"&&!a){const h=1/l;for(let A=0;A<l;A++)i[A]=i[A]*h,s[A]=s[A]*h}else if(!(e==="backward"&&a)){if(e==="forward"&&a)for(let h=0;h<l;h++)i[h]=i[h]*l,s[h]=s[h]*l}for(let h=0;h<l;h++){const A=(y*l+h)*u+m;t[A*2]=i[h],t[A*2+1]=s[h]}}return c}function j(o,r,a=-1,e="backward"){const f=Array.from(o.shape),l=f.length,c=a<0?l+a:a,t=r??f[c],n=x(o,t,a,e),d=Math.floor(t/2)+1;return R(n,c,d)}function T(o,r,a=-1,e="backward"){const f=Array.from(o.shape),l=f.length,c=a<0?l+a:a,t=f[c],n=r??(t-1)*2,d=[...f];d[c]=n;const u=b.zeros(d,"complex128"),i=u.data,s=I(o).data,y=f.slice(0,c).reduce((A,p)=>A*p,1),m=f.slice(c+1).reduce((A,p)=>A*p,1);for(let A=0;A<y;A++)for(let p=0;p<m;p++){for(let g=0;g<t;g++){const S=(A*t+g)*m+p,w=(A*n+g)*m+p;i[w*2]=s[S*2],i[w*2+1]=s[S*2+1]}for(let g=t;g<n;g++){const S=n-g,w=(A*t+S)*m+p,F=(A*n+g)*m+p;i[F*2]=s[w*2],i[F*2+1]=-s[w*2+1]}}const h=M(u,n,a,e);return L(h)}function V(o,r,a=[-2,-1],e="backward"){const l=Array.from(o.shape).length,c=a[0]<0?l+a[0]:a[0],t=a[1]<0?l+a[1]:a[1];let n=x(o,r?r[0]:void 0,c,e);const d=Array.from(n.shape),u=r?r[1]:d[t];n=x(n,u,t,e);const i=Math.floor(u/2)+1;return R(n,t,i)}function W(o,r,a=[-2,-1],e="backward"){const f=Array.from(o.shape),l=f.length,c=a[0]<0?l+a[0]:a[0],t=a[1]<0?l+a[1]:a[1],n=f[t],d=r?r[1]:(n-1)*2,u=r?r[0]:f[c];let i=T(o,d,t,e);return i=M(i,u,c,e),L(i)}function X(o,r,a,e="backward"){const l=Array.from(o.shape).length;let c;if(a===void 0?c=Array.from({length:l},(u,i)=>i):c=a.map(u=>u<0?l+u:u),c.length===0)return I(o);let t=o;for(let u=0;u<c.length-1;u++){const i=c[u],s=r?r[u]:void 0;t=x(t,s,i,e)}const n=c[c.length-1],d=r?r[c.length-1]:void 0;return j(t,d,n,e)}function Y(o,r,a,e="backward"){const f=Array.from(o.shape),l=f.length;let c;if(a===void 0?c=Array.from({length:l},(i,s)=>s):c=a.map(i=>i<0?l+i:i),c.length===0)return L(I(o));const t=c[c.length-1],n=f[t],d=r?[...r]:c.map((i,s)=>s===c.length-1?(n-1)*2:f[i]);let u=T(o,d[c.length-1],t,e);for(let i=c.length-2;i>=0;i--){const s=c[i];u=M(u,d[i],s,e)}return L(u)}function Z(o,r,a=-1,e="backward"){const f=Array.from(o.shape),l=f.length,c=a<0?l+a:a,t=f[c],n=r??(t-1)*2,d=q(I(o)),u=T(d,n,a,e),i=u.data;for(let s=0;s<u.size;s++)i[s]=i[s]*n;return u}function tt(o,r,a=-1,e="backward"){const f=Array.from(o.shape),l=f.length,c=a<0?l+a:a,t=r??f[c],n=j(o,t,a,e),d=q(n),u=d.data;for(let i=0;i<d.size*2;i++)u[i]=u[i]/t;return d}function q(o){const r=Array.from(o.shape),a=o.size,e=b.zeros(r,"complex128"),f=e.data,l=o.data;for(let c=0;c<a;c++)f[c*2]=l[c*2],f[c*2+1]=-l[c*2+1];return e}function L(o){const r=Array.from(o.shape),a=o.size,e=b.zeros(r,"float64"),f=e.data,l=o.data;for(let c=0;c<a;c++)f[c]=l[c*2];return e}function rt(o,r=1){const a=b.zeros([o],"float64"),e=a.data,f=Math.floor((o-1)/2)+1;for(let l=0;l<f;l++)e[l]=l/(o*r);for(let l=f;l<o;l++)e[l]=(l-o)/(o*r);return a}function et(o,r=1){const a=Math.floor(o/2)+1,e=b.zeros([a],"float64"),f=e.data;for(let l=0;l<a;l++)f[l]=l/(o*r);return e}function ot(o,r){const a=Array.from(o.shape),e=a.length;let f;r===void 0?f=Array.from({length:e},(c,t)=>t):typeof r=="number"?f=[r<0?e+r:r]:f=r.map(c=>c<0?e+c:c);const l=a.map((c,t)=>f.includes(t)?Math.floor(a[t]/2):0);return N(o,l)}function nt(o,r){const a=Array.from(o.shape),e=a.length;let f;r===void 0?f=Array.from({length:e},(c,t)=>t):typeof r=="number"?f=[r<0?e+r:r]:f=r.map(c=>c<0?e+c:c);const l=a.map((c,t)=>f.includes(t)?-Math.floor(a[t]/2):0);return N(o,l)}function N(o,r){const a=Array.from(o.shape),e=o.dtype,f=o.size,l=b.zeros(a,e),c=e==="complex128"||e==="complex64",t=new Array(a.length);t[a.length-1]=1;for(let n=a.length-2;n>=0;n--)t[n]=t[n+1]*a[n+1];for(let n=0;n<f;n++){const d=new Array(a.length);let u=n;for(let y=0;y<a.length;y++)d[y]=Math.floor(u/t[y]),u=u%t[y];const i=d.map((y,m)=>{let h=y+r[m];const A=a[m];return h=(h%A+A)%A,h});let s=0;for(let y=0;y<a.length;y++)s+=i[y]*t[y];if(c){const y=o.data,m=l.data;m[s*2]=y[n*2],m[s*2+1]=y[n*2+1]}else{const y=o.iget(n);l.iset(s,y)}}return l}export{x as fft,G as fft2,rt as fftfreq,J as fftn,ot as fftshift,Z as hfft,M as ifft,H as ifft2,Q as ifftn,nt as ifftshift,tt as ihfft,T as irfft,W as irfft2,Y as irfftn,j as rfft,V as rfft2,et as rfftfreq,X as rfftn};
1
+ import{ArrayStorage as S}from"../storage";import{Complex as J}from"../complex";import{isComplexDType as Q}from"../dtype";import{fft_batch_c128 as V,ifft_batch_c128 as X,fft_scratch_size as Y,fft2_c128 as ot,ifft2_c128 as et,fft2_scratch_size as nt,rfft2_f64 as at,rfft2_scratch_size as st,irfft2_f64 as ct,irfft2_scratch_size as lt}from"../wasm/bins/fft.wasm";import{ensureMemory as R,resetAllocator as N,copyIn as q,alloc as x,copyOut as j}from"../wasm/runtime";import{wasmConfig as _}from"../wasm/config";function ft(r,e,s){const o=r.length;o!==0&&o!==1&&((o&o-1)===0?H(r,e,s):it(r,e,s))}const O=new Map;function ut(r,e){const s=`${r}_${e}`;let o=O.get(s);if(o)return o;const i=new Float64Array(r/2),n=new Float64Array(r/2),l=e?1:-1;for(let t=0;t<r/2;t++){const c=l*2*Math.PI*t/r;i[t]=Math.cos(c),n[t]=Math.sin(c)}if(o={cos:i,sin:n},O.set(s,o),O.size>100){const t=O.keys().next().value;O.delete(t)}return o}function H(r,e,s){const o=r.length;let i=0;for(let t=0;t<o-1;t++){if(t<i){let y=r[t];r[t]=r[i],r[i]=y,y=e[t],e[t]=e[i],e[i]=y}let c=o>>1;for(;c<=i;)i-=c,c>>=1;i+=c}const{cos:n,sin:l}=ut(o,s);for(let t=2;t<=o;t*=2){const c=t>>1,y=o/t;for(let f=0;f<o;f+=t)for(let u=0,a=0;u<c;u++,a+=y){const d=n[a],h=l[a],p=f+u,A=f+u+c,m=r[p],b=e[p],w=r[A],g=e[A],D=d*w-h*g,z=d*g+h*w;r[p]=m+D,e[p]=b+z,r[A]=m-D,e[A]=b-z}}if(s){const t=1/o;for(let c=0;c<o;c++)r[c]=r[c]*t,e[c]=e[c]*t}}function it(r,e,s){const o=r.length;let i=1;for(;i<2*o-1;)i*=2;const n=s?1:-1,l=new Float64Array(o),t=new Float64Array(o);for(let a=0;a<o;a++){const d=n*Math.PI*a*a/o;l[a]=Math.cos(d),t[a]=Math.sin(d)}const c=new Float64Array(i),y=new Float64Array(i);for(let a=0;a<o;a++){const d=l[a],h=t[a];c[a]=r[a]*d-e[a]*h,y[a]=e[a]*d+r[a]*h}const f=new Float64Array(i),u=new Float64Array(i);f[0]=l[0],u[0]=-t[0];for(let a=1;a<o;a++)f[a]=l[a],u[a]=-t[a],f[i-a]=l[a],u[i-a]=-t[a];H(c,y,!1),H(f,u,!1);for(let a=0;a<i;a++){const d=c[a],h=y[a],p=f[a],A=u[a];c[a]=d*p-h*A,y[a]=d*A+h*p}H(c,y,!0);for(let a=0;a<o;a++){const d=c[a],h=y[a],p=l[a],A=t[a];r[a]=d*p-h*A,e[a]=h*p+d*A}if(s)for(let a=0;a<o;a++)r[a]=r[a]/o,e[a]=e[a]/o}function Z(r,e,s=-1,o="backward"){return B(r,e!==void 0?[e]:void 0,[s],o,!1)}function $(r,e,s=-1,o="backward"){return B(r,e!==void 0?[e]:void 0,[s],o,!0)}function dt(r,e,s=[-2,-1],o="backward"){return B(r,e,s,o,!1)}function St(r,e,s=[-2,-1],o="backward"){return B(r,e,s,o,!0)}function Ft(r,e,s,o="backward"){return B(r,e,s,o,!1)}function Dt(r,e,s,o="backward"){return B(r,e,s,o,!0)}function B(r,e,s,o="backward",i=!1){const n=Array.from(r.shape),l=n.length;if(r.size===0)return S.zeros(n,"complex128");if(l===0){const f=S.zeros([1],"complex128"),u=r.iget(0),a=u instanceof J?u.re:Number(u),d=u instanceof J?u.im:0,h=f.data;return h[0]=a,h[1]=d,S.fromData(f.data,[],"complex128")}let t;if(s===void 0)if(e===void 0)t=Array.from({length:l},(f,u)=>u);else{t=[];for(let f=0;f<e.length;f++)t.push(l-e.length+f)}else t=s.map(f=>f<0?l+f:f);const c=[...n];if(e!==void 0)for(let f=0;f<e.length;f++){const u=t[f];c[u]=e[f]}let y=U(r);if(e!==void 0&&(y=yt(y,c,t)),t.length===2&&y.ndim===2&&o==="backward"&&y.isCContiguous){const f=y.shape[t[0]],u=y.shape[t[1]];if(t[0]===0&&t[1]===1&&f>=T*_.thresholdMultiplier&&u>=T*_.thresholdMultiplier){const d=f*u*2,h=nt(f,u),p=d*8,A=h*8;R(p*2+A),N();const m=y.data,b=q(m.subarray(0,d)),w=x(p),g=x(A);(i?et:ot)(b,w,g,f,u);const z=j(w,d,Float64Array);return S.fromData(z,[f,u],"complex128")}}for(const f of t)y=ht(y,f,i,o);return y}function U(r){const e=r.dtype,s=Array.from(r.shape),o=r.size;if(e==="complex128"||e==="complex64"){const t=S.zeros(s,"complex128"),c=t.data,y=r.data;for(let f=0;f<o*2;f++)c[f]=y[f];return t}const i=S.zeros(s,"complex128"),n=i.data,l=r.data;if(e==="float64"){const t=l;for(let c=0;c<o;c++)n[c*2]=t[c]}else if(e==="float32"){const t=l;for(let c=0;c<o;c++)n[c*2]=t[c]}else if(e==="int32"){const t=l;for(let c=0;c<o;c++)n[c*2]=t[c]}else if(e==="int16"){const t=l;for(let c=0;c<o;c++)n[c*2]=t[c]}else if(e==="int8"){const t=l;for(let c=0;c<o;c++)n[c*2]=t[c]}else if(e==="uint32"){const t=l;for(let c=0;c<o;c++)n[c*2]=t[c]}else if(e==="uint16"){const t=l;for(let c=0;c<o;c++)n[c*2]=t[c]}else if(e==="uint8"){const t=l;for(let c=0;c<o;c++)n[c*2]=t[c]}else if(e==="int64"||e==="uint64"){const t=l;for(let c=0;c<o;c++)n[c*2]=Number(t[c])}else for(let t=0;t<o;t++)n[t*2]=Number(l[t]);return i}function yt(r,e,s){const o=Array.from(r.shape);let i=r;for(const n of s){const l=o[n],t=e[n];l!==t&&(t>l?i=At(i,n,t):i=W(i,n,t),o[n]=t)}return i}function At(r,e,s){const o=Array.from(r.shape),i=o[e];o[e]=s;const n=S.zeros(o,"complex128"),l=n.data,t=r.data,c=o.slice(0,e).reduce((f,u)=>f*u,1),y=o.slice(e+1).reduce((f,u)=>f*u,1);for(let f=0;f<c;f++)for(let u=0;u<i;u++)for(let a=0;a<y;a++){const d=(f*i+u)*y+a,h=(f*s+u)*y+a;l[h*2]=t[d*2],l[h*2+1]=t[d*2+1]}return n}function W(r,e,s){const o=Array.from(r.shape),i=o[e];o[e]=s;const n=S.zeros(o,"complex128"),l=n.data,t=r.data,c=o.slice(0,e).reduce((f,u)=>f*u,1),y=o.slice(e+1).reduce((f,u)=>f*u,1);for(let f=0;f<c;f++)for(let u=0;u<s;u++)for(let a=0;a<y;a++){const d=(f*i+u)*y+a,h=(f*s+u)*y+a;l[h*2]=t[d*2],l[h*2+1]=t[d*2+1]}return n}const T=32;function ht(r,e,s,o){const i=Array.from(r.shape),n=i[e];if(n===0)return r;const l=S.zeros(i,"complex128"),t=l.data,c=r.data,y=i.slice(0,e).reduce((d,h)=>d*h,1),f=i.slice(e+1).reduce((d,h)=>d*h,1);if(f===1&&n>=T*_.thresholdMultiplier){const d=y*n*2,h=Y(n),p=d*8,A=h*8;R(p*2+A),N();const m=c.subarray(0,d),b=q(m),w=x(p),g=x(A);(s?X:V)(b,w,g,n,y);const z=j(w,d,Float64Array);if(t.set(z),o==="ortho"){const L=s?Math.sqrt(n):1/Math.sqrt(n);for(let M=0;M<d;M++)t[M]=t[M]*L}else if(o==="forward"&&!s){const L=1/n;for(let M=0;M<d;M++)t[M]=t[M]*L}else if(o==="forward"&&s)for(let L=0;L<d;L++)t[L]=t[L]*n;return l}if(f>1&&n>=T*_.thresholdMultiplier){const d=y*f,h=d*n*2,p=Y(n),A=h*8,m=p*8;R(A*2+m),N();const b=new Float64Array(h);let w=0;for(let F=0;F<y;F++)for(let k=0;k<f;k++){const P=w*n*2;for(let I=0;I<n;I++){const C=((F*n+I)*f+k)*2;b[P+I*2]=c[C],b[P+I*2+1]=c[C+1]}w++}const g=q(b),D=x(A),z=x(m);(s?X:V)(g,D,z,n,d);const M=j(D,h,Float64Array);w=0;for(let F=0;F<y;F++)for(let k=0;k<f;k++){const P=w*n*2;for(let I=0;I<n;I++){const C=((F*n+I)*f+k)*2;t[C]=M[P+I*2],t[C+1]=M[P+I*2+1]}w++}const E=y*n*f*2;if(o==="ortho"){const F=s?Math.sqrt(n):1/Math.sqrt(n);for(let k=0;k<E;k++)t[k]=t[k]*F}else if(o==="forward"&&!s){const F=1/n;for(let k=0;k<E;k++)t[k]=t[k]*F}else if(o==="forward"&&s)for(let F=0;F<E;F++)t[F]=t[F]*n;return l}const u=new Float64Array(n),a=new Float64Array(n);for(let d=0;d<y;d++)for(let h=0;h<f;h++){for(let p=0;p<n;p++){const A=(d*n+p)*f+h;u[p]=c[A*2],a[p]=c[A*2+1]}if(ft(u,a,s),o==="ortho"){const p=1/Math.sqrt(n);if(s){const A=Math.sqrt(n);for(let m=0;m<n;m++)u[m]=u[m]*A,a[m]=a[m]*A}else for(let A=0;A<n;A++)u[A]=u[A]*p,a[A]=a[A]*p}else if(o==="forward"&&!s){const p=1/n;for(let A=0;A<n;A++)u[A]=u[A]*p,a[A]=a[A]*p}else if(!(o==="backward"&&s)){if(o==="forward"&&s)for(let p=0;p<n;p++)u[p]=u[p]*n,a[p]=a[p]*n}for(let p=0;p<n;p++){const A=(d*n+p)*f+h;t[A*2]=u[p],t[A*2+1]=a[p]}}return l}function v(r,e,s=-1,o="backward"){const i=Array.from(r.shape),n=i.length,l=s<0?n+s:s,t=e??i[l],c=Z(r,t,s,o),y=Math.floor(t/2)+1;return W(c,l,y)}function G(r,e,s=-1,o="backward"){const i=Array.from(r.shape),n=i.length,l=s<0?n+s:s,t=i[l],c=e??(t-1)*2,y=[...i];y[l]=c;const f=S.zeros(y,"complex128"),u=f.data,a=U(r).data,d=i.slice(0,l).reduce((A,m)=>A*m,1),h=i.slice(l+1).reduce((A,m)=>A*m,1);for(let A=0;A<d;A++)for(let m=0;m<h;m++){for(let b=0;b<t;b++){const w=(A*t+b)*h+m,g=(A*c+b)*h+m;u[g*2]=a[w*2],u[g*2+1]=a[w*2+1]}for(let b=t;b<c;b++){const w=c-b,g=(A*t+w)*h+m,D=(A*c+b)*h+m;u[D*2]=a[g*2],u[D*2+1]=-a[g*2+1]}}const p=$(f,c,s,o);return K(p)}function zt(r,e,s=[-2,-1],o="backward"){const i=Array.from(r.shape),n=i.length,l=s[0]<0?n+s[0]:s[0],t=s[1]<0?n+s[1]:s[1];if(n===2&&l===0&&t===1&&o==="backward"&&!e&&r.isCContiguous&&!Q(r.dtype)){const u=i[0],a=i[1];if(u>=T*_.thresholdMultiplier&&a>=T*_.thresholdMultiplier){const d=Math.floor(a/2)+1,h=st(u,a),p=u*a*8,A=u*d*2*8,m=h*8;R(p+A+m),N();const b=r.dtype==="float64"?r.data.subarray(r.offset,r.offset+u*a):Float64Array.from(r.data.subarray(r.offset,r.offset+u*a)),w=q(b),g=x(A),D=x(m);at(w,g,D,u,a);const z=j(g,u*d*2,Float64Array);return S.fromData(z,[u,d],"complex128")}}const c=dt(r,e,s,o),y=e?e[1]:i[t],f=Math.floor(y/2)+1;return W(c,t,f)}function Mt(r,e,s=[-2,-1],o="backward"){const i=Array.from(r.shape),n=i.length,l=s[0]<0?n+s[0]:s[0],t=s[1]<0?n+s[1]:s[1],c=i[t],y=e?e[1]:(c-1)*2,f=e?e[0]:i[l];if(n===2&&l===0&&t===1&&o==="backward"&&!e&&r.isCContiguous&&Q(r.dtype)){const a=i[0],d=i[1];if(a>=T*_.thresholdMultiplier&&y>=T*_.thresholdMultiplier){const h=lt(a,y),p=a*d*2*8,A=a*y*8,m=h*8;R(p+A+m),N();const b=r.data.subarray(r.offset,r.offset+a*d*2),w=q(b),g=x(A),D=x(m);ct(w,g,D,a,d,y);const z=j(g,a*y,Float64Array);return S.fromData(z,[a,y],"float64")}}let u=G(r,y,t,o);return u=$(u,f,l,o),K(u)}function It(r,e,s,o="backward"){const n=Array.from(r.shape).length;let l;if(s===void 0?l=Array.from({length:n},(f,u)=>u):l=s.map(f=>f<0?n+f:f),l.length===0)return U(r);let t=r;for(let f=0;f<l.length-1;f++){const u=l[f],a=e?e[f]:void 0;t=Z(t,a,u,o)}const c=l[l.length-1],y=e?e[l.length-1]:void 0;return v(t,y,c,o)}function xt(r,e,s,o="backward"){const i=Array.from(r.shape),n=i.length;let l;if(s===void 0?l=Array.from({length:n},(u,a)=>a):l=s.map(u=>u<0?n+u:u),l.length===0)return K(U(r));const t=l[l.length-1],c=i[t],y=e?[...e]:l.map((u,a)=>a===l.length-1?(c-1)*2:i[u]);let f=G(r,y[l.length-1],t,o);for(let u=l.length-2;u>=0;u--){const a=l[u];f=$(f,y[u],a,o)}return K(f)}function Lt(r,e,s=-1,o="backward"){const i=Array.from(r.shape),n=i.length,l=s<0?n+s:s,t=i[l],c=e??(t-1)*2,y=tt(U(r)),f=G(y,c,s,o),u=f.data;for(let a=0;a<f.size;a++)u[a]=u[a]*c;return f}function _t(r,e,s=-1,o="backward"){const i=Array.from(r.shape),n=i.length,l=s<0?n+s:s,t=e??i[l],c=v(r,t,s,o),y=tt(c),f=y.data;for(let u=0;u<y.size*2;u++)f[u]=f[u]/t;return y}function tt(r){const e=Array.from(r.shape),s=r.size,o=S.zeros(e,"complex128"),i=o.data,n=r.data;for(let l=0;l<s;l++)i[l*2]=n[l*2],i[l*2+1]=-n[l*2+1];return o}function K(r){const e=Array.from(r.shape),s=r.size,o=S.zeros(e,"float64"),i=o.data,n=r.data;for(let l=0;l<s;l++)i[l]=n[l*2];return o}function Tt(r,e=1){const s=S.zeros([r],"float64"),o=s.data,i=Math.floor((r-1)/2)+1;for(let n=0;n<i;n++)o[n]=n/(r*e);for(let n=i;n<r;n++)o[n]=(n-r)/(r*e);return s}function Bt(r,e=1){const s=Math.floor(r/2)+1,o=S.zeros([s],"float64"),i=o.data;for(let n=0;n<s;n++)i[n]=n/(r*e);return o}function Pt(r,e){const s=Array.from(r.shape),o=s.length;let i;e===void 0?i=Array.from({length:o},(l,t)=>t):typeof e=="number"?i=[e<0?o+e:e]:i=e.map(l=>l<0?o+l:l);const n=s.map((l,t)=>i.includes(t)?Math.floor(s[t]/2):0);return rt(r,n)}function Ct(r,e){const s=Array.from(r.shape),o=s.length;let i;e===void 0?i=Array.from({length:o},(l,t)=>t):typeof e=="number"?i=[e<0?o+e:e]:i=e.map(l=>l<0?o+l:l);const n=s.map((l,t)=>i.includes(t)?-Math.floor(s[t]/2):0);return rt(r,n)}function rt(r,e){const s=Array.from(r.shape),o=r.dtype,i=r.size,n=S.zeros(s,o),l=o==="complex128"||o==="complex64",t=new Array(s.length);t[s.length-1]=1;for(let c=s.length-2;c>=0;c--)t[c]=t[c+1]*s[c+1];for(let c=0;c<i;c++){const y=new Array(s.length);let f=c;for(let d=0;d<s.length;d++)y[d]=Math.floor(f/t[d]),f=f%t[d];const u=y.map((d,h)=>{let p=d+e[h];const A=s[h];return p=(p%A+A)%A,p});let a=0;for(let d=0;d<s.length;d++)a+=u[d]*t[d];if(l){const d=r.data,h=n.data;h[a*2]=d[c*2],h[a*2+1]=d[c*2+1]}else{const d=r.iget(c);n.iset(a,d)}}return n}export{Z as fft,dt as fft2,Tt as fftfreq,Ft as fftn,Pt as fftshift,Lt as hfft,$ as ifft,St as ifft2,Dt as ifftn,Ct as ifftshift,_t as ihfft,G as irfft,Mt as irfft2,xt as irfftn,v as rfft,zt as rfft2,Bt as rfftfreq,It as rfftn};
@@ -1 +1 @@
1
- import{ArrayStorage as O}from"../storage";import{isBigIntDType as v,isComplexDType as H,promoteDTypes as et}from"../dtype";function mt(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),y=x.length,b=g<0?y+g:g;if(b<0||b>=y)throw new Error(`axis ${g} is out of bounds for array of dimension ${y}`);if(x[b]<r+1)throw new Error(`diff requires at least ${r+1} elements along axis ${g}, but got ${x[b]}`);let I=e;for(let w=0;w<r;w++)I=ot(I,b);return I}function ot(e,r){const g=Array.from(e.shape),x=g.length,y=g[r],b=[...g];b[r]=y-1;const I=e.dtype,w=H(I),N=v(I)?"float64":I,D=O.zeros(b,N),P=D.data,F=e.strides,R=D.size,p=e.offset;for(let d=0;d<R;d++){let n=d;const u=new Array(x);for(let t=x-1;t>=0;t--)u[t]=n%b[t],n=Math.floor(n/b[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]*F[t],s+=a[t]*F[t];if(w){const t=e.data,c=t[(p+o)*2],m=t[(p+o)*2+1],l=t[(p+s)*2],i=t[(p+s)*2+1];P[d*2]=l-c,P[d*2+1]=i-m}else{const t=(v(I),Number(e.data[p+o])),c=(v(I),Number(e.data[p+s]));P[d]=c-t}}return D}function lt(e,r=null,g=null){const x=e.size,y=e.dtype,b=H(y),I=v(y)?"float64":y,w=Math.max(0,x-1),N=g?g.length:0,D=r?r.length:0,P=N+w+D,F=O.zeros([P],I),R=F.data;let p=0;if(g)if(b)for(const d of g)R[p*2]=d,R[p*2+1]=0,p++;else for(const d of g)R[p++]=d;if(b)for(let d=0;d<w;d++){const n=e.iget(d),u=e.iget(d+1);R[p*2]=u.re-n.re,R[p*2+1]=u.im-n.im,p++}else for(let d=0;d<w;d++){const n=(v(y),Number(e.iget(d))),u=(v(y),Number(e.iget(d+1)));R[p++]=u-n}if(r)if(b)for(const d of r)R[p*2]=d,R[p*2+1]=0,p++;else for(const d of r)R[p++]=d;return F}function ut(e,r=1,g=null){const y=Array.from(e.shape).length;let b;if(g===null)b=Array.from({length:y},(N,D)=>D);else if(typeof g=="number"){const N=g<0?y+g:g;if(N<0||N>=y)throw new Error(`axis ${g} is out of bounds for array of dimension ${y}`);b=[N]}else b=g.map(N=>{const D=N<0?y+N:N;if(D<0||D>=y)throw new Error(`axis ${N} is out of bounds for array of dimension ${y}`);return D});let I;if(typeof r=="number")I=b.map(()=>r);else{if(r.length!==b.length)throw new Error("Number of spacings must match number of axes");I=r}const w=[];for(let N=0;N<b.length;N++)w.push(rt(e,b[N],I[N]));return w.length===1?w[0]:w}function rt(e,r,g){const x=Array.from(e.shape),y=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 I=e.dtype,w=H(I),N=v(I)?"float64":I==="float32"?"float32":w?I:"float64",D=O.zeros(x,N),P=D.data,F=e.strides,R=g,p=2*R,d=e.size,n=e.offset;for(let u=0;u<d;u++){let M=u;const a=new Array(y);for(let t=y-1;t>=0;t--)a[t]=M%x[t],M=Math.floor(M/x[t]);let o=n;for(let t=0;t<y;t++)o+=a[t]*F[t];const s=a[r];if(w){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<y;S++)f+=i[S]*F[S];const h=t[o*2],A=t[o*2+1],z=t[(n+f)*2],$=t[(n+f)*2+1];m=(z-h)/R,l=($-A)/R}else if(s===b-1){const i=[...a];i[r]=b-2;let f=0;for(let S=0;S<y;S++)f+=i[S]*F[S];const h=t[o*2],A=t[o*2+1],z=t[(n+f)*2],$=t[(n+f)*2+1];m=(h-z)/R,l=(A-$)/R}else{const i=[...a],f=[...a];i[r]=s+1,f[r]=s-1;let h=0,A=0;for(let q=0;q<y;q++)h+=i[q]*F[q],A+=f[q]*F[q];const z=t[(n+h)*2],$=t[(n+h)*2+1],S=t[(n+A)*2],E=t[(n+A)*2+1];m=(z-S)/p,l=($-E)/p}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<y;f++)m+=c[f]*F[f];const l=(v(I),Number(e.data[o]));t=((v(I),Number(e.data[n+m]))-l)/R}else if(s===b-1){const c=[...a];c[r]=b-2;let m=0;for(let f=0;f<y;f++)m+=c[f]*F[f];const l=(v(I),Number(e.data[o])),i=(v(I),Number(e.data[n+m]));t=(l-i)/R}else{const c=[...a],m=[...a];c[r]=s+1,m[r]=s-1;let l=0,i=0;for(let A=0;A<y;A++)l+=c[A]*F[A],i+=m[A]*F[A];const f=(v(I),Number(e.data[n+l])),h=(v(I),Number(e.data[n+i]));t=(f-h)/p}P[u]=t}}return D}function it(e,r,g=-1,x=-1,y=-1){const b=Array.from(e.shape),I=Array.from(r.shape),w=b.length,N=I.length,D=g<0?w+g:g,P=x<0?N+x:x;if(D<0||D>=w)throw new Error(`axisa ${g} is out of bounds for array of dimension ${w}`);if(P<0||P>=N)throw new Error(`axisb ${x} is out of bounds for array of dimension ${N}`);const F=b[D],R=I[P];if(F!==2&&F!==3)throw new Error(`incompatible dimensions for cross product (dimension must be 2 or 3, got ${F})`);if(R!==2&&R!==3)throw new Error(`incompatible dimensions for cross product (dimension must be 2 or 3, got ${R})`);const p=et(e.dtype,r.dtype),d=H(p),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(w===1&&N===1&&F===3&&R===3){const a=O.zeros([3],p);if(d){const o=a.data,[s,t]=n(e,0),[c,m]=n(e,1),[l,i]=n(e,2),[f,h]=n(r,0),[A,z]=n(r,1),[$,S]=n(r,2),[E,q]=u(c,m,$,S),[C,B]=u(l,i,A,z),[T,J]=M(E,q,C,B),[V,j]=u(l,i,f,h),[k,G]=u(s,t,$,S),[K,L]=M(V,j,k,G),[Q,U]=u(s,t,A,z),[W,X]=u(c,m,f,h),[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(w===1&&N===1&&F===2&&R===2){const a=O.zeros([],p);if(d){const o=a.data,[s,t]=n(e,0),[c,m]=n(e,1),[l,i]=n(r,0),[f,h]=n(r,1),[A,z]=u(s,t,f,h),[$,S]=u(c,m,l,i),[E,q]=M(A,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(w===1&&N===1){if(F===2&&R===3){const a=O.zeros([3],p);if(d){const o=a.data,[s,t]=n(e,0),[c,m]=n(e,1),[l,i]=n(r,0),[f,h]=n(r,1),[A,z]=n(r,2),[$,S]=u(c,m,A,z),[E,q]=u(s,t,A,z),C=-E,B=-q,[T,J]=u(s,t,f,h),[V,j]=u(c,m,l,i),[k,G]=M(T,J,V,j);o[0]=$,o[1]=S,o[2]=C,o[3]=B,o[4]=k,o[5]=G}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(F===3&&R===2){const a=O.zeros([3],p);if(d){const o=a.data,[s,t]=n(e,0),[c,m]=n(e,1),[l,i]=n(e,2),[f,h]=n(r,0),[A,z]=n(r,1),[$,S]=u(l,i,A,z),E=-$,q=-S,[C,B]=u(l,i,f,h),[T,J]=u(s,t,A,z),[V,j]=u(c,m,f,h),[k,G]=M(T,J,V,j);o[0]=E,o[1]=q,o[2]=C,o[3]=B,o[4]=k,o[5]=G}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(w===2&&N===2&&D===1&&P===1){const a=b[0];if(I[0]!==a)throw new Error(`Shape mismatch: a has ${a} vectors, b has ${I[0]} vectors`);if(F===3&&R===3){const o=O.zeros([a,3],p);if(d){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,h]=n(e,t*3+2),[A,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,h,$,S),[V,j]=M(C,B,T,J),[k,G]=u(f,h,A,z),[K,L]=u(c,m,E,q),[Q,U]=M(k,G,K,L),[W,X]=u(c,m,$,S),[Y,Z]=u(l,i,A,z),[_,tt]=M(W,X,Y,Z);s[t*3*2]=V,s[t*3*2+1]=j,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)),h=Number(r.iget(t*3+2));s[t*3]=m*h-l*f,s[t*3+1]=l*i-c*h,s[t*3+2]=c*f-m*i}}return o}if(F===2&&R===2){const o=O.zeros([a],p);if(d){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,h]=n(r,t*2),[A,z]=n(r,t*2+1),[$,S]=u(c,m,A,z),[E,q]=u(l,i,f,h),[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(b)} and ${JSON.stringify(I)}`)}export{it as cross,mt as diff,lt as ediff1d,ut as gradient};
1
+ import{ArrayStorage as O}from"../storage";import{isBigIntDType as v,isComplexDType as H,promoteDTypes as et}from"../dtype";import{wasmDiff as ot}from"../wasm/diff";import{wasmGradient1D as rt}from"../wasm/gradient";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 +1 @@
1
- import{ArrayStorage as z}from"../storage";import{elementwiseUnaryOp as g}from"../internal/compute";import{isComplexDType as F}from"../dtype";function x(a){const o=a.dtype;if(F(o)){const l=Array.from(a.shape),i=a.size,e=a.data,n=z.zeros(l,o),c=n.data;for(let t=0;t<i;t++){const s=e[t*2],r=e[t*2+1];c[t*2]=Math.sinh(s)*Math.cos(r),c[t*2+1]=Math.cosh(s)*Math.sin(r)}return n}return g(a,Math.sinh,!1)}function v(a){const o=a.dtype;if(F(o)){const l=Array.from(a.shape),i=a.size,e=a.data,n=z.zeros(l,o),c=n.data;for(let t=0;t<i;t++){const s=e[t*2],r=e[t*2+1];c[t*2]=Math.cosh(s)*Math.cos(r),c[t*2+1]=Math.sinh(s)*Math.sin(r)}return n}return g(a,Math.cosh,!1)}function b(a){const o=a.dtype;if(F(o)){const l=Array.from(a.shape),i=a.size,e=a.data,n=z.zeros(l,o),c=n.data;for(let t=0;t<i;t++){const s=e[t*2],r=e[t*2+1],p=Math.cosh(2*s)+Math.cos(2*r);c[t*2]=Math.sinh(2*s)/p,c[t*2+1]=Math.sin(2*r)/p}return n}return g(a,Math.tanh,!1)}function w(a){const o=a.dtype;if(F(o)){const l=Array.from(a.shape),i=a.size,e=a.data,n=z.zeros(l,o),c=n.data;for(let t=0;t<i;t++){const s=e[t*2],r=e[t*2+1],p=s*s-r*r,u=2*s*r,y=p+1,h=u,M=Math.sqrt(y*y+h*h),d=Math.sqrt((M+y)/2),f=(h>=0?1:-1)*Math.sqrt((M-y)/2),m=s+d,A=r+f,D=Math.sqrt(m*m+A*A);c[t*2]=Math.log(D),c[t*2+1]=Math.atan2(A,m)}return n}return g(a,Math.asinh,!1)}function C(a){const o=a.dtype;if(F(o)){const l=Array.from(a.shape),i=a.size,e=a.data,n=z.zeros(l,o),c=n.data;for(let t=0;t<i;t++){const s=e[t*2],r=e[t*2+1],p=s*s-r*r,u=2*s*r,y=p-1,h=u,M=Math.sqrt(y*y+h*h),d=Math.sqrt((M+y)/2),f=(h>=0?1:-1)*Math.sqrt((M-y)/2),m=s+d,A=r+f,D=Math.sqrt(m*m+A*A);let R=Math.log(D),I=Math.atan2(A,m);Math.abs(r)<1e-15&&s<1&&(I=-I),c[t*2]=R,c[t*2+1]=I}return n}return g(a,Math.acosh,!1)}function O(a){const o=a.dtype;if(F(o)){const l=Array.from(a.shape),i=a.size,e=a.data,n=z.zeros(l,o),c=n.data;for(let t=0;t<i;t++){const s=e[t*2],r=e[t*2+1],p=1+s,u=r,y=1-s,h=-r,M=y*y+h*h,d=(p*y+u*h)/M,f=(u*y-p*h)/M,m=Math.sqrt(d*d+f*f),A=Math.log(m),D=Math.atan2(f,d);c[t*2]=A/2,c[t*2+1]=D/2}return n}return g(a,Math.atanh,!1)}export{C as arccosh,w as arcsinh,O as arctanh,v as cosh,x as sinh,b as tanh};
1
+ import{ArrayStorage as z}from"../storage";import{elementwiseUnaryOp as g}from"../internal/compute";import{isComplexDType as F}from"../dtype";import{wasmSinh as S}from"../wasm/sinh";import{wasmCosh as q}from"../wasm/cosh";import{wasmTanh as T}from"../wasm/tanh";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,2 +1,2 @@
1
- import{ArrayStorage as z}from"../storage";import{promoteDTypes as V,isComplexDType as k,isBigIntDType as J}from"../dtype";import{Complex as I}from"../complex";import*as R from"./shape";function T(t,e){if(t instanceof I||e instanceof I){const h=t instanceof I?t:new I(Number(t),0),p=e instanceof I?e:new I(Number(e),0);return h.mul(p)}return typeof t=="bigint"&&typeof e=="bigint"?Number(t*e):Number(t)*Number(e)}function ce(t,e,h,p,i,u,f,c,g){for(let o=0;o<h;o++)for(let s=0;s<u;s++)for(let l=0;l<f;l++){let n=0;for(let m=0;m<c;m++)n+=t[e+o*c+m]*p[i+s*c*f+m*f+l];g[o*u*f+s*f+l]=n}}function me(t,e,h,p,i,u,f,c,g,o){for(let s=0;s<h;s++)for(let l=0;l<f;l++){let n=0;for(let m=0;m<g;m++){const r=p===1?m:s*g+m,a=c===1?m:l*g+m;n+=t[e+r]*i[u+a]}o[h===1?l:s*f+l]=n}}function fe(t,e,h,p,i,u,f,c,g,o,s,l){for(let r=0;r<h*p;r++)s[r]=0;const n=t==="transpose",m=e==="transpose";if(!n&&!m)for(let r=0;r<h;r++)for(let a=0;a<p;a++){let b=0;for(let y=0;y<i;y++)b+=(f[r*c+y]??0)*(g[y*o+a]??0);s[r*l+a]=u*b}else if(n&&!m)for(let r=0;r<h;r++)for(let a=0;a<p;a++){let b=0;for(let y=0;y<i;y++)b+=(f[y*c+r]??0)*(g[y*o+a]??0);s[r*l+a]=u*b}else if(!n&&m)for(let r=0;r<h;r++)for(let a=0;a<p;a++){let b=0;for(let y=0;y<i;y++)b+=(f[r*c+y]??0)*(g[a*o+y]??0);s[r*l+a]=u*b}else for(let r=0;r<h;r++)for(let a=0;a<p;a++){let b=0;for(let y=0;y<i;y++)b+=(f[y*c+r]??0)*(g[a*o+y]??0);s[r*l+a]=u*b}}function X(t,e){const h=t.ndim,p=e.ndim,i=k(t.dtype)||k(e.dtype);if(h===0||p===0){const u=h===0?t.get():null,f=p===0?e.get():null;if(h===0&&p===0)return T(u,f);if(h===0){const c=V(t.dtype,e.dtype),g=z.zeros([...e.shape],c),o=(s,l)=>{const n=new Array(l.length);let m=s;for(let r=l.length-1;r>=0;r--)n[r]=m%l[r],m=Math.floor(m/l[r]);return n};for(let s=0;s<e.size;s++){const l=o(s,e.shape),n=e.get(...l);g.set(l,T(u,n))}return g}else{const c=V(t.dtype,e.dtype),g=z.zeros([...t.shape],c),o=(s,l)=>{const n=new Array(l.length);let m=s;for(let r=l.length-1;r>=0;r--)n[r]=m%l[r],m=Math.floor(m/l[r]);return n};for(let s=0;s<t.size;s++){const l=o(s,t.shape),n=t.get(...l);g.set(l,T(n,f))}return g}}if(h===1&&p===1){if(t.shape[0]!==e.shape[0])throw new Error(`dot: incompatible shapes (${t.shape[0]},) and (${e.shape[0]},)`);const u=t.shape[0];if(i){let c=0,g=0;for(let o=0;o<u;o++){const s=t.get(o),l=e.get(o),n=T(s,l);n instanceof I?(c+=n.re,g+=n.im):c+=n}return new I(c,g)}let f=0;for(let c=0;c<u;c++){const g=t.get(c),o=e.get(c);typeof g=="bigint"&&typeof o=="bigint"?f=Number(f)+Number(g*o):f+=Number(g)*Number(o)}return f}if(h===2&&p===2)return B(t,e);if(h===2&&p===1){const[u,f]=t.shape,c=e.shape[0];if(f!==c)throw new Error(`dot: incompatible shapes (${u},${f}) and (${c},)`);const g=V(t.dtype,e.dtype),o=z.zeros([u],g);if(i)for(let s=0;s<u;s++){let l=0,n=0;for(let m=0;m<f;m++){const r=t.get(s,m),a=e.get(m),b=r instanceof I?r:new I(Number(r),0),y=a instanceof I?a:new I(Number(a),0);l+=b.re*y.re-b.im*y.im,n+=b.re*y.im+b.im*y.re}o.set([s],new I(l,n))}else for(let s=0;s<u;s++){let l=0;for(let n=0;n<f;n++){const m=t.get(s,n),r=e.get(n);typeof m=="bigint"&&typeof r=="bigint"?l=Number(l)+Number(m*r):l+=Number(m)*Number(r)}o.set([s],l)}return o}if(h===1&&p===2){const u=t.shape[0],[f,c]=e.shape;if(u!==f)throw new Error(`dot: incompatible shapes (${u},) and (${f},${c})`);const g=V(t.dtype,e.dtype),o=z.zeros([c],g);if(i)for(let s=0;s<c;s++){let l=0,n=0;for(let m=0;m<u;m++){const r=t.get(m),a=e.get(m,s),b=r instanceof I?r:new I(Number(r),0),y=a instanceof I?a:new I(Number(a),0);l+=b.re*y.re-b.im*y.im,n+=b.re*y.im+b.im*y.re}o.set([s],new I(l,n))}else for(let s=0;s<c;s++){let l=0;for(let n=0;n<u;n++){const m=t.get(n),r=e.get(n,s);typeof m=="bigint"&&typeof r=="bigint"?l=Number(l)+Number(m*r):l+=Number(m)*Number(r)}o.set([s],l)}return o}if(h>2&&p===1){const u=t.shape[h-1],f=e.shape[0];if(u!==f)throw new Error(`dot: incompatible shapes ${JSON.stringify(t.shape)} and (${f},)`);const c=[...t.shape.slice(0,-1)],g=V(t.dtype,e.dtype),o=z.zeros(c,g),s=c.reduce((l,n)=>l*n,1);if(i)for(let l=0;l<s;l++){let n=0,m=0,r=l;const a=[];for(let b=c.length-1;b>=0;b--)a[b]=r%c[b],r=Math.floor(r/c[b]);for(let b=0;b<u;b++){const y=[...a,b],w=t.get(...y),d=e.get(b),x=w instanceof I?w:new I(Number(w),0),A=d instanceof I?d:new I(Number(d),0);n+=x.re*A.re-x.im*A.im,m+=x.re*A.im+x.im*A.re}o.set(a,new I(n,m))}else for(let l=0;l<s;l++){let n=0,m=l;const r=[];for(let a=c.length-1;a>=0;a--)r[a]=m%c[a],m=Math.floor(m/c[a]);for(let a=0;a<u;a++){const b=[...r,a],y=t.get(...b),w=e.get(a);typeof y=="bigint"&&typeof w=="bigint"?n=Number(n)+Number(y*w):n+=Number(y)*Number(w)}o.set(r,n)}return o}if(h===1&&p>2){const u=t.shape[0],f=1,c=e.shape[f];if(u!==c)throw new Error(`dot: incompatible shapes (${u},) and ${JSON.stringify(e.shape)}`);const g=[...e.shape.slice(0,f),...e.shape.slice(f+1)],o=V(t.dtype,e.dtype),s=z.zeros(g,o),l=g.reduce((n,m)=>n*m,1);if(i)for(let n=0;n<l;n++){let m=n;const r=[];for(let d=g.length-1;d>=0;d--)r[d]=m%g[d],m=Math.floor(m/g[d]);const a=r.slice(0,f),b=r.slice(f);let y=0,w=0;for(let d=0;d<u;d++){const x=t.get(d),A=[...a,d,...b],S=e.get(...A),v=x instanceof I?x:new I(Number(x),0),N=S instanceof I?S:new I(Number(S),0);y+=v.re*N.re-v.im*N.im,w+=v.re*N.im+v.im*N.re}s.set(r,new I(y,w))}else for(let n=0;n<l;n++){let m=n;const r=[];for(let w=g.length-1;w>=0;w--)r[w]=m%g[w],m=Math.floor(m/g[w]);const a=r.slice(0,f),b=r.slice(f);let y=0;for(let w=0;w<u;w++){const d=t.get(w),x=[...a,w,...b],A=e.get(...x);typeof d=="bigint"&&typeof A=="bigint"?y=Number(y)+Number(d*A):y+=Number(d)*Number(A)}s.set(r,y)}return s}if(h>=2&&p>=2&&!(h===2&&p===2)){const u=t.shape[h-1],f=e.shape[p-2];if(u!==f)throw new Error(`dot: incompatible shapes ${JSON.stringify(t.shape)} and ${JSON.stringify(e.shape)}`);const c=[...t.shape.slice(0,-1),...e.shape.slice(0,-2),e.shape[p-1]],g=V(t.dtype,e.dtype),o=z.zeros(c,g),s=t.shape.slice(0,-1).reduce((r,a)=>r*a,1),l=e.shape.slice(0,-2).reduce((r,a)=>r*a,1),n=e.shape[p-1],m=u;if(i)for(let r=0;r<s;r++)for(let a=0;a<l;a++)for(let b=0;b<n;b++){let y=0,w=0;for(let A=0;A<m;A++){const S=[];let v=r;for(let j=t.shape.length-2;j>=0;j--)S.unshift(v%t.shape[j]),v=Math.floor(v/t.shape[j]);S.push(A);const N=t.get(...S),M=[];let $=a;for(let j=e.shape.length-3;j>=0;j--)M.unshift($%e.shape[j]),$=Math.floor($/e.shape[j]);M.push(A,b);const D=e.get(...M),C=N instanceof I?N:new I(Number(N),0),E=D instanceof I?D:new I(Number(D),0);y+=C.re*E.re-C.im*E.im,w+=C.re*E.im+C.im*E.re}const d=r*l*n+a*n+b,x=o.data;x[d*2]=y,x[d*2+1]=w}else if(t.isCContiguous&&e.isCContiguous&&!J(t.dtype)&&!J(e.dtype))ce(t.data,t.offset,s,e.data,e.offset,l,n,m,o.data);else for(let r=0;r<s;r++)for(let a=0;a<l;a++)for(let b=0;b<n;b++){let y=0;for(let d=0;d<m;d++){const x=r*m+d,A=a*m*n+d*n+b,S=t.iget(x),v=e.iget(A);typeof S=="bigint"&&typeof v=="bigint"?y=Number(y)+Number(S*v):y+=Number(S)*Number(v)}const w=r*l*n+a*n+b;o.data[w]=y}return o}throw new Error(`dot: unexpected combination of dimensions ${h}D \xB7 ${p}D`)}function B(t,e){if(t.ndim!==2||e.ndim!==2)throw new Error("matmul requires 2D arrays");const[h=0,p=0]=t.shape,[i=0,u=0]=e.shape;if(p!==i)throw new Error(`matmul shape mismatch: (${h},${p}) @ (${i},${u})`);const f=V(t.dtype,e.dtype);if(k(f)){const A=z.zeros([h,u],f),S=A.data;for(let v=0;v<h;v++)for(let N=0;N<u;N++){let M=0,$=0;for(let C=0;C<p;C++){const E=t.iget(v*p+C),j=e.iget(C*u+N);M+=E.re*j.re-E.im*j.im,$+=E.re*j.im+E.im*j.re}const D=v*u+N;S[D*2]=M,S[D*2+1]=$}return A}const c=f.startsWith("int")||f.startsWith("uint")||f==="bool"?"float64":f;if(c!=="float64")throw new Error(`matmul currently only supports float64, got ${c}`);let g=t.dtype==="float64"?t.data:Float64Array.from(Array.from(t.data).map(Number)),o=e.dtype==="float64"?e.data:Float64Array.from(Array.from(e.data).map(Number));t.offset>0&&(g=g.subarray(t.offset)),e.offset>0&&(o=o.subarray(e.offset));const[s=0,l=0]=t.strides,[n=0,m=0]=e.strides,r=l>s,a=m>n,b=r?"transpose":"no-transpose",y=a?"transpose":"no-transpose";let w,d;r?w=l:w=s,a?d=m:d=n;const x=z.zeros([h,u],"float64");return fe(b,y,h,u,p,1,g,w,o,d,x.data,u),x}function $e(t){if(t.ndim!==2)throw new Error(`trace requires 2D array, got ${t.ndim}D`);const[e=0,h=0]=t.shape,p=Math.min(e,h);if(k(t.dtype)){let u=0,f=0;for(let c=0;c<p;c++){const g=t.get(c,c);u+=g.re,f+=g.im}return new I(u,f)}let i=0;for(let u=0;u<p;u++){const f=t.get(u,u);typeof f=="bigint"?i=(typeof i=="bigint"?i:BigInt(i))+f:i=(typeof i=="bigint"?Number(i):i)+f}return i}function L(t,e){return R.transpose(t,e)}function Me(t,e){const h=t.ndim,p=e.ndim,i=k(t.dtype)||k(e.dtype),u=t.shape[h-1],f=e.shape[p-1];if(u!==f)throw new Error(`inner: incompatible shapes - last dimensions ${u} and ${f} don't match`);if(h===1&&p===1)return X(t,e);const c=[...t.shape.slice(0,-1),...e.shape.slice(0,-1)],g=V(t.dtype,e.dtype),o=z.zeros(c,g),s=h===1?1:t.shape.slice(0,-1).reduce((m,r)=>m*r,1),l=p===1?1:e.shape.slice(0,-1).reduce((m,r)=>m*r,1),n=u;if(i)for(let m=0;m<s;m++)for(let r=0;r<l;r++){let a=0,b=0;for(let d=0;d<n;d++){let x,A;if(h===1)x=t.get(d);else{const N=[];let M=m;const $=t.shape.slice(0,-1);for(let D=$.length-1;D>=0;D--)N.unshift(M%$[D]),M=Math.floor(M/$[D]);N.push(d),x=t.get(...N)}if(p===1)A=e.get(d);else{const N=[];let M=r;const $=e.shape.slice(0,-1);for(let D=$.length-1;D>=0;D--)N.unshift(M%$[D]),M=Math.floor(M/$[D]);N.push(d),A=e.get(...N)}const S=x instanceof I?x:new I(Number(x),0),v=A instanceof I?A:new I(Number(A),0);a+=S.re*v.re-S.im*v.im,b+=S.re*v.im+S.im*v.re}if(c.length===0)return new I(a,b);const y=s===1?r:m*l+r,w=o.data;w[y*2]=a,w[y*2+1]=b}else if(t.isCContiguous&&e.isCContiguous&&!J(t.dtype)&&!J(e.dtype)){if(c.length===0){const m=t.data,r=e.data,a=t.offset,b=e.offset;let y=0;for(let w=0;w<n;w++)y+=m[a+w]*r[b+w];return y}me(t.data,t.offset,s,h,e.data,e.offset,l,p,n,o.data)}else for(let m=0;m<s;m++)for(let r=0;r<l;r++){let a=0;for(let y=0;y<n;y++){const w=h===1?y:m*n+y,d=p===1?y:r*n+y,x=t.iget(w),A=e.iget(d);typeof x=="bigint"&&typeof A=="bigint"?a=Number(a)+Number(x*A):a+=Number(x)*Number(A)}if(c.length===0)return a;const b=s===1?r:m*l+r;o.data[b]=a}return o}function pe(t,e){const h=t.ndim===1?t:R.ravel(t),p=e.ndim===1?e:R.ravel(e),i=h.size,u=p.size,f=V(t.dtype,e.dtype),c=z.zeros([i,u],f);for(let g=0;g<i;g++)for(let o=0;o<u;o++){const s=h.get(g),l=p.get(o),n=T(s,l);c.set([g,o],n)}return c}function De(t,e,h){let p,i;if(typeof h=="number"){const r=h;if(r<0)throw new Error("tensordot: axes must be non-negative");if(r>t.ndim||r>e.ndim)throw new Error("tensordot: axes exceeds array dimensions");p=Array.from({length:r},(a,b)=>t.ndim-r+b),i=Array.from({length:r},(a,b)=>b)}else if([p,i]=h,p.length!==i.length)throw new Error("tensordot: axes lists must have same length");for(let r=0;r<p.length;r++){const a=p[r],b=i[r];if(a<0||a>=t.ndim||b<0||b>=e.ndim)throw new Error("tensordot: axis out of bounds");if(t.shape[a]!==e.shape[b])throw new Error(`tensordot: shape mismatch on axes ${a} and ${b}: ${t.shape[a]} != ${e.shape[b]}`)}const u=[],f=[];for(let r=0;r<t.ndim;r++)p.includes(r)||u.push(r);for(let r=0;r<e.ndim;r++)i.includes(r)||f.push(r);const c=[...u.map(r=>t.shape[r]),...f.map(r=>e.shape[r])],g=V(t.dtype,e.dtype),o=k(g),s=r=>r instanceof I?{re:r.re,im:r.im}:{re:Number(r),im:0};if(c.length===0){let r=0,a=0;const b=p.map(y=>t.shape[y]).reduce((y,w)=>y*w,1);for(let y=0;y<b;y++){let w=y;const d=new Array(p.length);for(let N=p.length-1;N>=0;N--){const M=p[N];d[N]=w%t.shape[M],w=Math.floor(w/t.shape[M])}const x=new Array(t.ndim),A=new Array(e.ndim);for(let N=0;N<p.length;N++)x[p[N]]=d[N];for(let N=0;N<i.length;N++)A[i[N]]=d[N];const S=t.get(...x),v=e.get(...A);if(o){const N=s(S),M=s(v);r+=N.re*M.re-N.im*M.im,a+=N.re*M.im+N.im*M.re}else typeof S=="bigint"&&typeof v=="bigint"?r+=Number(S*v):r+=Number(S)*Number(v)}return o?new I(r,a):r}const l=z.zeros(c,g),n=c.reduce((r,a)=>r*a,1),m=p.map(r=>t.shape[r]).reduce((r,a)=>r*a,1);for(let r=0;r<n;r++){let a=r;const b=[];for(let A=c.length-1;A>=0;A--)b[A]=a%c[A],a=Math.floor(a/c[A]);const y=b.slice(0,u.length),w=b.slice(u.length);let d=0,x=0;for(let A=0;A<m;A++){a=A;const S=[];for(let D=p.length-1;D>=0;D--){const C=p[D];S[D]=a%t.shape[C],a=Math.floor(a/t.shape[C])}const v=new Array(t.ndim),N=new Array(e.ndim);for(let D=0;D<u.length;D++)v[u[D]]=y[D];for(let D=0;D<f.length;D++)N[f[D]]=w[D];for(let D=0;D<p.length;D++)v[p[D]]=S[D],N[i[D]]=S[D];const M=t.get(...v),$=e.get(...N);if(o){const D=s(M),C=s($);d+=D.re*C.re-D.im*C.im,x+=D.re*C.im+D.im*C.re}else typeof M=="bigint"&&typeof $=="bigint"?d+=Number(M*$):d+=Number(M)*Number($)}o?l.set(b,new I(d,x)):l.set(b,d)}return l}function ze(t,e=0,h=0,p=1){const i=t.shape,u=i.length;if(u<2)throw new Error("diagonal requires an array of at least two dimensions");const f=h<0?u+h:h,c=p<0?u+p:p;if(f<0||f>=u||c<0||c>=u)throw new Error("axis out of bounds");if(f===c)throw new Error("axis1 and axis2 cannot be the same");const g=i[f],o=i[c];let s;e>=0?s=Math.max(0,Math.min(g,o-e)):s=Math.max(0,Math.min(g+e,o));const l=[];for(let a=0;a<u;a++)a!==f&&a!==c&&l.push(i[a]);l.push(s);const n=z.zeros(l,t.dtype),m=i.filter((a,b)=>b!==f&&b!==c),r=m.reduce((a,b)=>a*b,1);for(let a=0;a<r;a++){let b=a;const y=[];for(let w=m.length-1;w>=0;w--)y.unshift(b%m[w]),b=Math.floor(b/m[w]);for(let w=0;w<s;w++){const d=new Array(u);let x=0;for(let v=0;v<u;v++)v===f?d[v]=e>=0?w:w-e:v===c?d[v]=e>=0?w+e:w:d[v]=y[x++];const A=[...y,w],S=t.get(...d);n.set(A,S)}}return n}function Ee(t,...e){const h=t.indexOf("->");let p,i;h===-1?(p=t,i=ne(p)):(p=t.slice(0,h),i=t.slice(h+2));const u=p.split(",").map(a=>a.trim());if(u.length!==e.length)throw new Error(`einsum: expected ${u.length} operands, got ${e.length}`);const f=new Map;for(let a=0;a<e.length;a++){const b=u[a],y=e[a];if(b.length!==y.ndim)throw new Error(`einsum: operand ${a} has ${y.ndim} dimensions but subscript '${b}' has ${b.length} indices`);for(let w=0;w<b.length;w++){const d=b[w],x=y.shape[w];if(f.has(d)){if(f.get(d)!==x)throw new Error(`einsum: size mismatch for index '${d}': ${f.get(d)} vs ${x}`)}else f.set(d,x)}}for(const a of i)if(!f.has(a))throw new Error(`einsum: output subscript contains unknown index '${a}'`);const c=new Set(i),g=new Set;for(const a of u)for(const b of a)g.add(b);const o=[];for(const a of g)c.has(a)||o.push(a);if(e.length===2&&u.length===2){const[a,b]=u,[y,w]=e;if(a.length===2&&b.length===2&&i.length===2&&y.ndim===2&&w.ndim===2){const[d,x]=[a[0],a[1]],[A,S]=[b[0],b[1]],[v,N]=[i[0],i[1]];if(d===v&&S===N&&x===A&&o.length===1&&o[0]===x||d===v&&S===N&&x===A&&o.length===1&&o[0]===x)return B(y,w);if(x===v&&S===N&&d===A&&o.length===1&&o[0]===d){const M=L(y);return B(M,w)}if(d===v&&A===N&&x===S&&o.length===1&&o[0]===x){const M=L(w);return B(y,M)}}if(a.length===1&&b.length===1&&a===b&&i.length===0&&y.ndim===1&&w.ndim===1)return Y(e,u,o,f);if(a&&b&&a.length===1&&b.length===1&&i.length===2&&i===a+b&&o.length===0&&y.ndim===1&&w.ndim===1)return pe(y,w)}if(e.length===1&&u[0].length===2&&i.length===0){const a=u[0];if(a[0]===a[1]&&e[0].ndim===2)return Y(e,u,o,f)}const s=Array.from(i).map(a=>f.get(a));if(s.length===0)return Y(e,u,o,f);let l=e[0].dtype;for(let a=1;a<e.length;a++)l=V(l,e[a].dtype);const n=z.zeros(s,l),m=s.reduce((a,b)=>a*b,1);let r=1;for(const a of o)r*=f.get(a);for(let a=0;a<m;a++){const b=he(a,s),y=new Map;for(let d=0;d<i.length;d++)y.set(i[d],b[d]);let w=0;for(let d=0;d<r;d++){let x=d;for(let S=o.length-1;S>=0;S--){const v=o[S],N=f.get(v);y.set(v,x%N),x=Math.floor(x/N)}let A=1;for(let S=0;S<e.length;S++){const v=e[S],N=u[S],M=[];for(const D of N)M.push(y.get(D));const $=v.get(...M);A*=Number($)}w+=A}n.set(b,w)}return n}function ne(t){const e=new Map,h=t.split(",");for(const i of h)for(const u of i.trim())e.set(u,(e.get(u)||0)+1);const p=[];for(const[i,u]of e)u===1&&p.push(i);return p.sort().join("")}function Y(t,e,h,p){let i=!1;for(const o of t)if(k(o.dtype)){i=!0;break}const u=o=>o instanceof I?{re:o.re,im:o.im}:{re:Number(o),im:0};let f=1;for(const o of h)f*=p.get(o);let c=0,g=0;for(let o=0;o<f;o++){const s=new Map;let l=o;for(let r=h.length-1;r>=0;r--){const a=h[r],b=p.get(a);s.set(a,l%b),l=Math.floor(l/b)}let n=1,m=0;for(let r=0;r<t.length;r++){const a=t[r],b=e[r],y=[];for(const d of b)y.push(s.get(d));const w=a.get(...y);if(i){const d=u(w),x=n*d.re-m*d.im,A=n*d.im+m*d.re;n=x,m=A}else n*=Number(w)}c+=n,g+=m}return i?new I(c,g):c}function he(t,e){const h=new Array(e.length);let p=t;for(let i=e.length-1;i>=0;i--)h[i]=p%e[i],p=Math.floor(p/e[i]);return h}function Ce(t,e){const h=t.shape,p=e.shape,i=h.length,u=p.length,f=V(t.dtype,e.dtype),c=Math.max(i,u),g=new Array(c),o=new Array(c).fill(1),s=new Array(c).fill(1);for(let r=0;r<i;r++)o[c-i+r]=h[r];for(let r=0;r<u;r++)s[c-u+r]=p[r];for(let r=0;r<c;r++)g[r]=o[r]*s[r];const l=z.zeros(g,f),n=h.reduce((r,a)=>r*a,1),m=p.reduce((r,a)=>r*a,1);for(let r=0;r<n;r++){let a=r;const b=new Array(i);for(let d=i-1;d>=0;d--)b[d]=a%h[d],a=Math.floor(a/h[d]);const y=new Array(c).fill(0);for(let d=0;d<i;d++)y[c-i+d]=b[d];const w=t.get(...b);for(let d=0;d<m;d++){let x=d;const A=new Array(u);for(let $=u-1;$>=0;$--)A[$]=x%p[$],x=Math.floor(x/p[$]);const S=new Array(c).fill(0);for(let $=0;$<u;$++)S[c-u+$]=A[$];const v=e.get(...A),N=new Array(c);for(let $=0;$<c;$++)N[$]=y[$]*s[$]+S[$];const M=T(w,v);l.set(N,M)}}return l}function je(t,e,h=-1,p=-1,i=-1,u){u!==void 0&&(h=u,p=u,i=u);const f=(N,M)=>N<0?M+N:N,c=f(h,t.ndim),g=f(p,e.ndim),o=V(t.dtype,e.dtype),s=k(o),l=(N,...M)=>{const $=N.get(...M);return $ instanceof I?$:Number($)},n=(N,M)=>{if(N instanceof I||M instanceof I){const $=N instanceof I?N:new I(N,0),D=M instanceof I?M:new I(M,0);return $.mul(D)}return N*M},m=(N,M)=>{if(N instanceof I||M instanceof I){const $=N instanceof I?N:new I(N,0),D=M instanceof I?M:new I(M,0);return $.sub(D)}return N-M};if(t.ndim===1&&e.ndim===1){const N=t.shape[0],M=e.shape[0];if(N===3&&M===3){const $=l(t,0),D=l(t,1),C=l(t,2),E=l(e,0),j=l(e,1),F=l(e,2),q=z.zeros([3],o);return q.set([0],m(n(D,F),n(C,j))),q.set([1],m(n(C,E),n($,F))),q.set([2],m(n($,j),n(D,E))),q}else if(N===2&&M===2){const $=l(t,0),D=l(t,1),C=l(e,0),E=l(e,1);return m(n($,E),n(D,C))}else if(N===2&&M===3||N===3&&M===2){const $=l(t,0),D=l(t,1),C=N===3?l(t,2):s?new I(0,0):0,E=l(e,0),j=l(e,1),F=M===3?l(e,2):s?new I(0,0):0,q=z.zeros([3],o);return q.set([0],m(n(D,F),n(C,j))),q.set([1],m(n(C,E),n($,F))),q.set([2],m(n($,j),n(D,E))),q}else throw new Error(`cross: incompatible dimensions for cross product: ${N} and ${M}`)}const r=t.shape[c],a=e.shape[g];if(r!==2&&r!==3||a!==2&&a!==3)throw new Error(`cross: incompatible dimensions for cross product: ${r} and ${a}`);const b=r===2&&a===2?0:3,y=[...t.shape.slice(0,c),...t.shape.slice(c+1)],w=[...e.shape.slice(0,g),...e.shape.slice(g+1)];if(y.length!==w.length)throw new Error("cross: incompatible shapes for cross product");for(let N=0;N<y.length;N++)if(y[N]!==w[N])throw new Error("cross: incompatible shapes for cross product");const d=y,x=i<0?d.length+1+i:i;let A;if(b===0?A=d:A=[...d.slice(0,x),b,...d.slice(x)],A.length===0)throw new Error("cross: unexpected scalar result from higher-dimensional input");const S=z.zeros(A,o),v=d.reduce((N,M)=>N*M,1);for(let N=0;N<v;N++){let M=N;const $=[];for(let _=d.length-1;_>=0;_--)$[_]=M%d[_],M=Math.floor(M/d[_]);const D=[...$.slice(0,c),0,...$.slice(c)],C=[...$.slice(0,g),0,...$.slice(g)],E=_=>(D[c]=_,l(t,...D)),j=_=>(C[g]=_,l(e,...C)),F=E(0),q=E(1),te=r===3?E(2):s?new I(0,0):0,U=j(0),G=j(1),re=a===3?j(2):s?new I(0,0):0;if(b===0)S.set($,m(n(F,G),n(q,U)));else{const _=m(n(q,re),n(te,G)),se=m(n(te,U),n(F,re)),ie=m(n(F,G),n(q,U)),H=(le,ae)=>{const ue=[...$.slice(0,x),le,...$.slice(x)];S.set(ue,ae)};H(0,_),H(1,se),H(2,ie)}}return S}function W(t,e=2,h,p=!1){if(typeof e!="number")throw new Error("vector_norm: ord must be a number");if(h==null){const o=t.ndim===1?t:R.ravel(t),s=o.size;let l;if(e===1/0){l=0;for(let n=0;n<s;n++)l=Math.max(l,Math.abs(Number(o.get(n))))}else if(e===-1/0){l=1/0;for(let n=0;n<s;n++)l=Math.min(l,Math.abs(Number(o.get(n))))}else if(e===0){l=0;for(let n=0;n<s;n++)Number(o.get(n))!==0&&l++}else if(e===1){l=0;for(let n=0;n<s;n++)l+=Math.abs(Number(o.get(n)))}else if(e===2){l=0;for(let n=0;n<s;n++){const m=Number(o.get(n));l+=m*m}l=Math.sqrt(l)}else{l=0;for(let n=0;n<s;n++)l+=Math.pow(Math.abs(Number(o.get(n))),e);l=Math.pow(l,1/e)}if(p){const n=new Array(t.ndim).fill(1),m=z.zeros(n,"float64");return m.set(new Array(t.ndim).fill(0),l),m}return l}const i=h<0?t.ndim+h:h;if(i<0||i>=t.ndim)throw new Error(`vector_norm: axis ${h} out of bounds for array with ${t.ndim} dimensions`);const u=p?[...t.shape.slice(0,i),1,...t.shape.slice(i+1)]:[...t.shape.slice(0,i),...t.shape.slice(i+1)];if(u.length===0)return W(t,e,null,!1);const f=z.zeros(u,"float64"),c=t.shape[i],g=u.reduce((o,s)=>o*s,1);for(let o=0;o<g;o++){let s=o;const l=[];for(let r=u.length-1;r>=0;r--)l[r]=s%u[r],s=Math.floor(s/u[r]);const n=p?[...l.slice(0,i),0,...l.slice(i+1)]:[...l.slice(0,i),0,...l.slice(i)];let m;if(e===1/0){m=0;for(let r=0;r<c;r++)n[i]=r,m=Math.max(m,Math.abs(Number(t.get(...n))))}else if(e===-1/0){m=1/0;for(let r=0;r<c;r++)n[i]=r,m=Math.min(m,Math.abs(Number(t.get(...n))))}else if(e===0){m=0;for(let r=0;r<c;r++)n[i]=r,Number(t.get(...n))!==0&&m++}else if(e===1){m=0;for(let r=0;r<c;r++)n[i]=r,m+=Math.abs(Number(t.get(...n)))}else if(e===2){m=0;for(let r=0;r<c;r++){n[i]=r;const a=Number(t.get(...n));m+=a*a}m=Math.sqrt(m)}else{m=0;for(let r=0;r<c;r++)n[i]=r,m+=Math.pow(Math.abs(Number(t.get(...n))),e);m=Math.pow(m,1/e)}f.set(l,m)}return f}function P(t,e="fro",h=!1){if(t.ndim!==2)throw new Error(`matrix_norm: input must be 2D, got ${t.ndim}D`);const[p,i]=t.shape;let u;if(e==="fro"){u=0;for(let f=0;f<p;f++)for(let c=0;c<i;c++){const g=Number(t.get(f,c));u+=g*g}u=Math.sqrt(u)}else if(e==="nuc"){const{s:f}=O(t);u=0;for(let c=0;c<f.size;c++)u+=Number(f.get(c))}else if(e===1){u=0;for(let f=0;f<i;f++){let c=0;for(let g=0;g<p;g++)c+=Math.abs(Number(t.get(g,f)));u=Math.max(u,c)}}else if(e===-1){u=1/0;for(let f=0;f<i;f++){let c=0;for(let g=0;g<p;g++)c+=Math.abs(Number(t.get(g,f)));u=Math.min(u,c)}}else if(e===1/0){u=0;for(let f=0;f<p;f++){let c=0;for(let g=0;g<i;g++)c+=Math.abs(Number(t.get(f,g)));u=Math.max(u,c)}}else if(e===-1/0){u=1/0;for(let f=0;f<p;f++){let c=0;for(let g=0;g<i;g++)c+=Math.abs(Number(t.get(f,g)));u=Math.min(u,c)}}else if(e===2){const{s:f}=O(t);u=Number(f.get(0))}else if(e===-2){const{s:f}=O(t);u=Number(f.get(f.size-1))}else throw new Error(`matrix_norm: invalid ord value: ${e}`);if(h){const f=z.zeros([1,1],"float64");return f.set([0,0],u),f}return u}function Ve(t,e=null,h=null,p=!1){if(e===null)return h===null?W(t,2,null,p):typeof h=="number"?W(t,2,h,p):P(t,"fro",p);if(Array.isArray(h)){if(h.length!==2)throw new Error("norm: axis must be a 2-tuple for matrix norms");const i=h[0]<0?t.ndim+h[0]:h[0],u=h[1]<0?t.ndim+h[1]:h[1];if(t.ndim!==2||i!==0&&i!==1||u!==0&&u!==1||i===u)throw new Error("norm: complex axis specification not yet supported");return P(t,e,p)}if(t.ndim===2&&h===null&&(e==="fro"||e==="nuc"))return P(t,e,p);if(typeof e!="number"&&e!==null)throw new Error(`norm: ord '${e}' not valid for vector norm`);return W(t,e??2,h,p)}function ge(t,e="reduced"){if(t.ndim!==2)throw new Error(`qr: input must be 2D, got ${t.ndim}D`);const[h,p]=t.shape,i=Math.min(h,p),u=z.zeros([h,p],"float64");for(let m=0;m<h;m++)for(let r=0;r<p;r++)u.set([m,r],Number(t.get(m,r)));const f=[],c=[];for(let m=0;m<i;m++){const r=h-m,a=[];for(let A=m;A<h;A++)a.push(Number(u.get(A,m)));let b=0;for(let A=0;A<r;A++)b+=a[A]*a[A];if(b=Math.sqrt(b),b<1e-15){f.push(a),c.push(0);continue}const y=a[0]>=0?1:-1,w=a[0]+y*b,d=[1];for(let A=1;A<r;A++)d.push(a[A]/w);const x=y*w/b;c.push(x),f.push(d);for(let A=m;A<p;A++){let S=0;for(let v=0;v<r;v++)S+=d[v]*Number(u.get(m+v,A));for(let v=0;v<r;v++)u.set([m+v,A],Number(u.get(m+v,A))-x*d[v]*S)}}if(e==="raw"){const m=z.zeros([h,p],"float64");for(let a=0;a<h;a++)for(let b=0;b<p;b++)m.set([a,b],Number(u.get(a,b)));const r=z.zeros([i],"float64");for(let a=0;a<i;a++)r.set([a],c[a]);return{h:m,tau:r}}if(e==="r"){const m=z.zeros([i,p],"float64");for(let r=0;r<i;r++)for(let a=r;a<p;a++)m.set([r,a],Number(u.get(r,a)));return m}const g=e==="complete"?h:i,o=z.zeros([h,g],"float64");for(let m=0;m<Math.min(h,g);m++)o.set([m,m],1);for(let m=i-1;m>=0;m--){const r=f[m],a=c[m],b=h-m;for(let y=m;y<g;y++){let w=0;for(let d=0;d<b;d++)w+=r[d]*Number(o.get(m+d,y));for(let d=0;d<b;d++)o.set([m+d,y],Number(o.get(m+d,y))-a*r[d]*w)}}const s=z.zeros([h,g],"float64");for(let m=0;m<h;m++)for(let r=0;r<g;r++)s.set([m,r],Number(o.get(m,r)));const l=e==="complete"?h:i,n=z.zeros([l,p],"float64");for(let m=0;m<l;m++)for(let r=0;r<p;r++)r>=m&&n.set([m,r],Number(u.get(m,r)));return{q:s,r:n}}function ke(t,e=!1){if(t.ndim!==2)throw new Error(`cholesky: input must be 2D, got ${t.ndim}D`);const[h,p]=t.shape;if(h!==p)throw new Error(`cholesky: matrix must be square, got ${h}x${p}`);const i=h,u=z.zeros([i,i],"float64");for(let f=0;f<i;f++)for(let c=0;c<=f;c++){let g=0;if(f===c){for(let s=0;s<c;s++)g+=Number(u.get(c,s))**2;const o=Number(t.get(c,c))-g;if(o<0)throw new Error("cholesky: matrix is not positive definite");u.set([c,c],Math.sqrt(o))}else{for(let s=0;s<c;s++)g+=Number(u.get(f,s))*Number(u.get(c,s));const o=Number(u.get(c,c));if(Math.abs(o)<1e-15)throw new Error("cholesky: matrix is not positive definite");u.set([f,c],(Number(t.get(f,c))-g)/o)}}if(e){const f=z.zeros([i,i],"float64");for(let c=0;c<i;c++)for(let g=c;g<i;g++)f.set([c,g],Number(u.get(g,c)));return f}return u}function O(t){if(t.ndim!==2)throw new Error(`svd: input must be 2D, got ${t.ndim}D`);const[e,h]=t.shape,p=Math.min(e,h),i=z.zeros([h,h],"float64");for(let l=0;l<h;l++)for(let n=0;n<h;n++){let m=0;for(let r=0;r<e;r++)m+=Number(t.get(r,l))*Number(t.get(r,n));i.set([l,n],m)}const{values:u,vectors:f}=Z(i),c=Array.from({length:h},(l,n)=>n);c.sort((l,n)=>u[n]-u[l]);const g=z.zeros([p],"float64");for(let l=0;l<p;l++){const n=u[c[l]];g.set([l],Math.sqrt(Math.max(0,n)))}const o=z.zeros([h,h],"float64");for(let l=0;l<h;l++)for(let n=0;n<h;n++)o.set([l,n],f[n][c[l]]);const s=z.zeros([e,e],"float64");for(let l=0;l<e;l++)for(let n=0;n<p;n++){const m=Number(g.get(n));if(m>1e-10){let r=0;for(let a=0;a<h;a++)r+=Number(t.get(l,a))*Number(o.get(n,a));s.set([l,n],r/m)}}if(e>p)for(let l=p;l<e;l++){const n=new Array(e).fill(0);n[l]=1;for(let r=0;r<l;r++){let a=0;for(let b=0;b<e;b++)a+=n[b]*Number(s.get(b,r));for(let b=0;b<e;b++)n[b]=n[b]-a*Number(s.get(b,r))}let m=0;for(let r=0;r<e;r++)m+=n[r]*n[r];if(m=Math.sqrt(m),m>1e-10)for(let r=0;r<e;r++)s.set([r,l],n[r]/m)}return{u:s,s:g,vt:o}}function Z(t){const e=t.shape[0],h=100*e*e,p=1e-10,i=[];for(let c=0;c<e;c++){i.push([]);for(let g=0;g<e;g++)i[c].push(Number(t.get(c,g)))}const u=[];for(let c=0;c<e;c++){u.push([]);for(let g=0;g<e;g++)u[c].push(c===g?1:0)}for(let c=0;c<h;c++){let g=0,o=0,s=1;for(let d=0;d<e;d++)for(let x=d+1;x<e;x++)Math.abs(i[d][x])>g&&(g=Math.abs(i[d][x]),o=d,s=x);if(g<p)break;const l=i[o][o],n=i[s][s],m=i[o][s];let r;Math.abs(l-n)<1e-15?r=Math.PI/4:r=.5*Math.atan2(2*m,n-l);const a=Math.cos(r),b=Math.sin(r),y=a*a*l+b*b*n-2*b*a*m,w=b*b*l+a*a*n+2*b*a*m;i[o][o]=y,i[s][s]=w,i[o][s]=0,i[s][o]=0;for(let d=0;d<e;d++)if(d!==o&&d!==s){const x=i[d][o],A=i[d][s];i[d][o]=a*x-b*A,i[o][d]=i[d][o],i[d][s]=b*x+a*A,i[s][d]=i[d][s]}for(let d=0;d<e;d++){const x=u[d][o],A=u[d][s];u[d][o]=a*x-b*A,u[d][s]=b*x+a*A}}const f=[];for(let c=0;c<e;c++)f.push(i[c][c]);return{values:f,vectors:u}}function be(t,e=!0,h=!0){const p=O(t);if(!h)return p.s;if(!e){const[i,u]=t.shape,f=Math.min(i,u),c=z.zeros([i,f],"float64");for(let o=0;o<i;o++)for(let s=0;s<f;s++)c.set([o,s],Number(p.u.get(o,s)));const g=z.zeros([f,u],"float64");for(let o=0;o<f;o++)for(let s=0;s<u;s++)g.set([o,s],Number(p.vt.get(o,s)));return{u:c,s:p.s,vt:g}}return p}function Fe(t){if(t.ndim!==2)throw new Error(`det: input must be 2D, got ${t.ndim}D`);const[e,h]=t.shape;if(e!==h)throw new Error(`det: matrix must be square, got ${e}x${h}`);const p=e;if(p===0)return 1;const i=t.data;if(p===1)return Number(i[0]);if(p===2)return Number(i[0])*Number(i[3])-Number(i[1])*Number(i[2]);const{lu:u,sign:f}=Q(t),c=u.data;let g=f;for(let o=0;o<p;o++)g*=c[o*p+o];return g}function Q(t){const[e,h]=t.shape,p=e,i=h,u=z.zeros([p,i],"float64"),f=u.data,c=t.data;for(let s=0;s<p*i;s++)f[s]=Number(c[s]);const g=Array.from({length:p},(s,l)=>l);let o=1;for(let s=0;s<Math.min(p,i);s++){let l=Math.abs(f[s*i+s]),n=s;for(let r=s+1;r<p;r++){const a=Math.abs(f[r*i+s]);a>l&&(l=a,n=r)}if(n!==s){for(let a=0;a<i;a++){const b=f[s*i+a];f[s*i+a]=f[n*i+a],f[n*i+a]=b}const r=g[s];g[s]=g[n],g[n]=r,o=-o}const m=f[s*i+s];if(Math.abs(m)>1e-15)for(let r=s+1;r<p;r++){const a=f[r*i+s]/m;f[r*i+s]=a;for(let b=s+1;b<i;b++)f[r*i+b]=f[r*i+b]-a*f[s*i+b]}}return{lu:u,piv:g,sign:o}}function K(t){if(t.ndim!==2)throw new Error(`inv: input must be 2D, got ${t.ndim}D`);const[e,h]=t.shape;if(e!==h)throw new Error(`inv: matrix must be square, got ${e}x${h}`);const p=e,{lu:i,piv:u}=Q(t),f=i.data,c=z.zeros([p,p],"float64"),g=c.data;for(let o=0;o<p;o++){const s=new Float64Array(p);for(let l=0;l<p;l++){let n=u[l]===o?1:0;for(let m=0;m<l;m++)n-=f[l*p+m]*s[m];s[l]=n}for(let l=p-1;l>=0;l--){let n=s[l];for(let r=l+1;r<p;r++)n-=f[l*p+r]*g[r*p+o];const m=f[l*p+l];if(Math.abs(m)<1e-15)throw new Error("inv: singular matrix");g[l*p+o]=n/m}}return c}function oe(t,e){const[h]=t.shape,p=h,{lu:i,piv:u}=Q(t),f=i.data,c=e.data,g=new Float64Array(p);for(let n=0;n<p;n++)g[n]=Number(c[u[n]]);const o=new Float64Array(p);for(let n=0;n<p;n++){let m=g[n];for(let r=0;r<n;r++)m-=f[n*p+r]*o[r];o[n]=m}const s=z.zeros([p],"float64"),l=s.data;for(let n=p-1;n>=0;n--){let m=o[n];for(let a=n+1;a<p;a++)m-=f[n*p+a]*l[a];const r=f[n*p+n];if(Math.abs(r)<1e-15)throw new Error("solve: singular matrix");l[n]=m/r}return s}function de(t,e){if(t.ndim!==2)throw new Error(`solve: coefficient matrix must be 2D, got ${t.ndim}D`);const[h,p]=t.shape;if(h!==p)throw new Error(`solve: coefficient matrix must be square, got ${h}x${p}`);const i=h;if(e.ndim===1){if(e.shape[0]!==i)throw new Error(`solve: incompatible shapes (${h},${p}) and (${e.shape[0]},)`);return oe(t,e)}if(e.ndim===2){if(e.shape[0]!==i)throw new Error(`solve: incompatible shapes (${h},${p}) and (${e.shape[0]},${e.shape[1]})`);const u=e.shape[1],f=z.zeros([i,u],"float64");for(let c=0;c<u;c++){const g=z.zeros([i],"float64");for(let s=0;s<i;s++)g.set([s],Number(e.get(s,c)));const o=oe(t,g);for(let s=0;s<i;s++)f.set([s,c],Number(o.get(s)))}return f}throw new Error(`solve: b must be 1D or 2D, got ${e.ndim}D`)}function qe(t,e,h=null){if(t.ndim!==2)throw new Error(`lstsq: coefficient matrix must be 2D, got ${t.ndim}D`);const[p,i]=t.shape,{u,s:f,vt:c}=O(t),g=Math.min(p,i),o=h??Math.max(p,i)*Number.EPSILON,l=Number(f.get(0))*o;let n=0;for(let w=0;w<g;w++)Number(f.get(w))>l&&n++;const m=e.ndim===1?R.reshape(e,[e.size,1]):e,r=m.shape[1];if(m.shape[0]!==p)throw new Error(`lstsq: incompatible shapes (${p},${i}) and (${e.shape.join(",")})`);const a=z.zeros([i,r],"float64");for(let w=0;w<r;w++){const d=new Array(p).fill(0);for(let x=0;x<p;x++)for(let A=0;A<p;A++)d[x]+=Number(u.get(A,x))*Number(m.get(A,w));for(let x=0;x<i;x++){let A=0;for(let S=0;S<g;S++){const v=Number(f.get(S));v>l&&(A+=Number(c.get(S,x))*d[S]/v)}a.set([x,w],A)}}let b;if(p>i){b=z.zeros([r],"float64");for(let w=0;w<r;w++){let d=0;for(let x=0;x<p;x++){let A=0;for(let v=0;v<i;v++)A+=Number(t.get(x,v))*Number(a.get(v,w));const S=A-Number(m.get(x,w));d+=S*S}b.set([w],d)}}else b=z.zeros([0],"float64");return{x:e.ndim===1?R.reshape(a,[i]):a,residuals:b,rank:n,s:f}}function Re(t,e=2){if(t.ndim!==2)throw new Error(`cond: input must be 2D, got ${t.ndim}D`);const[h,p]=t.shape;if(e===2||e===-2){const{s:c}=O(t),g=Math.min(h,p),o=Number(c.get(0)),s=Number(c.get(g-1));return e===2?s>0?o/s:1/0:o>0?s/o:0}if(h!==p)throw new Error(`cond: matrix must be square for p=${e}`);const i=P(t,e),u=K(t),f=P(u,e);return i*f}function _e(t,e){if(t.ndim===0)return Number(t.get())!==0?1:0;if(t.ndim===1){for(let f=0;f<t.size;f++)if(Number(t.get(f))!==0)return 1;return 0}if(t.ndim!==2)throw new Error(`matrix_rank: input must be at most 2D, got ${t.ndim}D`);const{s:h}=O(t),p=Number(h.get(0)),i=e??p*Math.max(t.shape[0],t.shape[1])*Number.EPSILON;let u=0;for(let f=0;f<h.size;f++)Number(h.get(f))>i&&u++;return u}function Be(t,e){if(t.ndim!==2)throw new Error(`matrix_power: input must be 2D, got ${t.ndim}D`);const[h,p]=t.shape;if(h!==p)throw new Error(`matrix_power: matrix must be square, got ${h}x${p}`);const i=h;if(!Number.isInteger(e))throw new Error("matrix_power: exponent must be an integer");if(e===0){const o=z.zeros([i,i],"float64");for(let s=0;s<i;s++)o.set([s,s],1);return o}let u=t,f=e;e<0&&(u=K(t),f=-e);let c=z.zeros([i,i],"float64");for(let o=0;o<i;o++)c.set([o,o],1);let g=z.zeros([i,i],"float64");for(let o=0;o<i;o++)for(let s=0;s<i;s++)g.set([o,s],Number(u.get(o,s)));for(;f>0;)f&1&&(c=B(c,g)),g=B(g,g),f>>=1;return c}function Te(t,e=1e-15){if(t.ndim!==2)throw new Error(`pinv: input must be 2D, got ${t.ndim}D`);const[h,p]=t.shape,{u:i,s:u,vt:f}=O(t),c=Math.min(h,p),o=Number(u.get(0))*e,s=z.zeros([p,h],"float64");for(let l=0;l<p;l++)for(let n=0;n<h;n++){let m=0;for(let r=0;r<c;r++){const a=Number(u.get(r));a>o&&(m+=Number(f.get(r,l))*Number(i.get(n,r))/a)}s.set([l,n],m)}return s}function ye(t){if(t.ndim!==2)throw new Error(`eig: input must be 2D, got ${t.ndim}D`);const[e,h]=t.shape;if(e!==h)throw new Error(`eig: matrix must be square, got ${e}x${h}`);const p=e;let i=!0;e:for(let s=0;s<p;s++)for(let l=s+1;l<p;l++)if(Math.abs(Number(t.get(s,l))-Number(t.get(l,s)))>1e-10){i=!1;break e}if(i){const{values:s,vectors:l}=Z(t),n=z.zeros([p],"float64"),m=z.zeros([p,p],"float64");for(let r=0;r<p;r++){n.set([r],s[r]);for(let a=0;a<p;a++)m.set([a,r],l[a][r])}return{w:n,v:m}}const{values:u,vectors:f,hasComplexEigenvalues:c}=we(t);c&&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 g=z.zeros([p],"float64"),o=z.zeros([p,p],"float64");for(let s=0;s<p;s++){g.set([s],u[s]);for(let l=0;l<p;l++)o.set([l,s],f[l][s])}return{w:g,v:o}}function we(t){const e=t.shape[0],h=1e3,p=1e-10;let i=z.zeros([e,e],"float64");for(let o=0;o<e;o++)for(let s=0;s<e;s++)i.set([o,s],Number(t.get(o,s)));let u=z.zeros([e,e],"float64");for(let o=0;o<e;o++)u.set([o,o],1);for(let o=0;o<h;o++){let s=0;for(let r=0;r<e;r++)for(let a=0;a<e;a++)r!==a&&(s+=Number(i.get(r,a))**2);if(Math.sqrt(s)<p*e)break;const l=ge(i,"reduced"),n=l.q,m=l.r;i=B(m,n),u=B(u,n)}let f=!1;for(let o=0;o<e-1;o++){const s=Math.abs(Number(i.get(o+1,o))),l=Math.abs(Number(i.get(o,o))),n=Math.abs(Number(i.get(o+1,o+1))),m=Math.max(l,n,1e-10);if(s/m>1e-6){f=!0;break}}const c=[];for(let o=0;o<e;o++)c.push(Number(i.get(o,o)));const g=[];for(let o=0;o<e;o++){g.push([]);for(let s=0;s<e;s++)g[o].push(Number(u.get(o,s)))}return{values:c,vectors:g,hasComplexEigenvalues:f}}function Ae(t,e="L"){if(t.ndim!==2)throw new Error(`eigh: input must be 2D, got ${t.ndim}D`);const[h,p]=t.shape;if(h!==p)throw new Error(`eigh: matrix must be square, got ${h}x${p}`);const i=h,u=z.zeros([i,i],"float64");for(let l=0;l<i;l++)for(let n=0;n<i;n++)e==="L"?l>=n&&(u.set([l,n],Number(t.get(l,n))),u.set([n,l],Number(t.get(l,n)))):n>=l&&(u.set([l,n],Number(t.get(l,n))),u.set([n,l],Number(t.get(l,n))));const{values:f,vectors:c}=Z(u),g=Array.from({length:i},(l,n)=>n);g.sort((l,n)=>f[l]-f[n]);const o=z.zeros([i],"float64"),s=z.zeros([i,i],"float64");for(let l=0;l<i;l++){o.set([l],f[g[l]]);for(let n=0;n<i;n++)s.set([n,l],c[n][g[l]])}return{w:o,v:s}}function Oe(t){const{w:e}=ye(t);return e}function Le(t,e="L"){const{w:h}=Ae(t,e);return h}function Pe(t,e){const h=R.flatten(t),p=R.flatten(e),i=h.shape[0],u=p.shape[0];if(i!==u)throw new Error(`vdot: arrays must have same number of elements, got ${i} and ${u}`);if(k(t.dtype)||k(e.dtype)){let g=0,o=0;for(let s=0;s<i;s++){const l=h.get(s),n=p.get(s),m=l instanceof I?l.re:Number(l),r=l instanceof I?-l.im:0,a=n instanceof I?n.re:Number(n),b=n instanceof I?n.im:0;g+=m*a+r*b,o+=m*b-r*a}return Math.abs(o)<1e-15?g:new I(g,o)}let c=0;for(let g=0;g<i;g++){const o=h.get(g),s=p.get(g);typeof o=="bigint"&&typeof s=="bigint"?c=(typeof c=="bigint"?c:BigInt(c))+o*s:c=(typeof c=="bigint"?Number(c):c)+Number(o)*Number(s)}return c}function Je(t,e,h=-1){const p=t.ndim,i=e.ndim,u=h<0?p+h:h,f=h<0?i+h:h;if(u<0||u>=p)throw new Error(`vecdot: axis ${h} out of bounds for array with ${p} dimensions`);if(f<0||f>=i)throw new Error(`vecdot: axis ${h} out of bounds for array with ${i} dimensions`);const c=t.shape[u],g=e.shape[f];if(c!==g)throw new Error(`vecdot: axis dimensions must match, got ${c} and ${g}`);if(p===1&&i===1)return X(t,e);const o=[...t.shape.slice(0,u),...t.shape.slice(u+1)],s=[...e.shape.slice(0,f),...e.shape.slice(f+1)],l=c,n=k(t.dtype)||k(e.dtype),m=V(t.dtype,e.dtype),r=o.length>s.length?o:s;if(r.length===0){let y=n?new I(0,0):0;for(let w=0;w<l;w++){const d=t.get(w),x=e.get(w),A=T(d,x);if(y instanceof I||A instanceof I){const S=y instanceof I?y:new I(Number(y),0),v=A instanceof I?A:new I(Number(A),0);y=S.add(v)}else typeof y=="bigint"||typeof A=="bigint"?y=BigInt(y)+BigInt(A):y=y+A}return y}const a=z.zeros(r,m),b=r.reduce((y,w)=>y*w,1);for(let y=0;y<b;y++){const w=[];let d=y;for(let v=r.length-1;v>=0;v--)w.unshift(d%r[v]),d=Math.floor(d/r[v]);const x=[...w.slice(0,u),0,...w.slice(u)],A=[...w.slice(0,f),0,...w.slice(f)];let S=n?new I(0,0):0;for(let v=0;v<l;v++){x[u]=v,A[f]=v;const N=t.get(...x),M=e.get(...A),$=T(N,M);if(S instanceof I||$ instanceof I){const D=S instanceof I?S:new I(Number(S),0),C=$ instanceof I?$:new I(Number($),0);S=D.add(C)}else typeof S=="bigint"||typeof $=="bigint"?S=BigInt(S)+BigInt($):S=S+$}a.set(w,S)}return a}function Xe(t){if(t.ndim<2)throw new Error(`matrix_transpose: input must have at least 2 dimensions, got ${t.ndim}D`);const e=Array.from({length:t.ndim},(p,i)=>i),h=e.length-1;return e[h]=h-1,e[h-1]=h,L(t,e)}function We(t,e){return L(t,e)}function Qe(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 h=t.shape[t.ndim-2],p=t.shape[t.ndim-1],i=e.shape[e.ndim-1];if(p!==i)throw new Error(`matvec: last axis of x1 (${p}) must match last axis of x2 (${i})`);if(t.ndim===2&&e.ndim===1)return X(t,e);const u=t.shape.slice(0,-2),f=e.shape.slice(0,-1),c=Math.max(u.length,f.length),g=[...Array(c-u.length).fill(1),...u],o=[...Array(c-f.length).fill(1),...f],s=[];for(let b=0;b<c;b++){const y=g[b],w=o[b];if(y!==1&&w!==1&&y!==w)throw new Error(`matvec: batch dimensions not broadcastable: ${u} vs ${f}`);s.push(Math.max(y,w))}const l=[...s,h],n=V(t.dtype,e.dtype),m=z.zeros(l,n),r=k(n),a=s.reduce((b,y)=>b*y,1);for(let b=0;b<a;b++){const y=[];let w=b;for(let A=s.length-1;A>=0;A--)y.unshift(w%s[A]),w=Math.floor(w/s[A]);const d=y.slice(-(u.length||1)).map((A,S)=>(u[S]??1)===1?0:A),x=y.slice(-(f.length||1)).map((A,S)=>(f[S]??1)===1?0:A);for(let A=0;A<h;A++){let S=r?new I(0,0):0;for(let N=0;N<p;N++){const M=[...d,A,N],$=[...x,N],D=t.get(...M),C=e.get(...$),E=T(D,C);if(S instanceof I||E instanceof I){const j=S instanceof I?S:new I(Number(S),0),F=E instanceof I?E:new I(Number(E),0);S=j.add(F)}else typeof S=="bigint"||typeof E=="bigint"?S=BigInt(S)+BigInt(E):S=S+E}const v=[...y,A];m.set(v,S)}}return m}function Ue(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 h=t.shape[t.ndim-1],p=e.shape[e.ndim-2],i=e.shape[e.ndim-1];if(h!==p)throw new Error(`vecmat: last axis of x1 (${h}) must match second-to-last axis of x2 (${p})`);if(t.ndim===1&&e.ndim===2)return X(t,e);const u=t.shape.slice(0,-1),f=e.shape.slice(0,-2),c=Math.max(u.length,f.length),g=[...Array(c-u.length).fill(1),...u],o=[...Array(c-f.length).fill(1),...f],s=[];for(let b=0;b<c;b++){const y=g[b],w=o[b];if(y!==1&&w!==1&&y!==w)throw new Error(`vecmat: batch dimensions not broadcastable: ${u} vs ${f}`);s.push(Math.max(y,w))}const l=[...s,i],n=V(t.dtype,e.dtype),m=z.zeros(l,n),r=k(n),a=s.reduce((b,y)=>b*y,1);for(let b=0;b<a;b++){const y=[];let w=b;for(let A=s.length-1;A>=0;A--)y.unshift(w%s[A]),w=Math.floor(w/s[A]);const d=y.slice(-(u.length||1)).map((A,S)=>(u[S]??1)===1?0:A),x=y.slice(-(f.length||1)).map((A,S)=>(f[S]??1)===1?0:A);for(let A=0;A<i;A++){let S=r?new I(0,0):0;for(let N=0;N<h;N++){const M=[...d,N],$=[...x,N,A],D=t.get(...M),C=e.get(...$),E=T(D,C);if(S instanceof I||E instanceof I){const j=S instanceof I?S:new I(Number(S),0),F=E instanceof I?E:new I(Number(E),0);S=j.add(F)}else typeof S=="bigint"||typeof E=="bigint"?S=BigInt(S)+BigInt(E):S=S+E}const v=[...y,A];m.set(v,S)}}return m}function Ge(t){if(t.ndim!==2)throw new Error(`slogdet: input must be 2D, got ${t.ndim}D`);const[e,h]=t.shape;if(e!==h)throw new Error(`slogdet: matrix must be square, got ${e}x${h}`);const p=e;if(p===0)return{sign:1,logabsdet:0};const{lu:i,sign:u}=Q(t),f=i.data;let c=0,g=u;for(let o=0;o<p;o++){const s=f[o*p+o];if(s===0)return{sign:0,logabsdet:-1/0};s<0&&(g=-g),c+=Math.log(Math.abs(s))}return{sign:g,logabsdet:c}}function He(t){return be(t,!0,!1)}function Ye(t){if(t.length<2)throw new Error("multi_dot: need at least 2 arrays");if(t.length===2)return B(t[0],t[1]);let e=t[0];for(let h=1;h<t.length;h++)e=B(e,t[h]);return e}function Ze(t,e=2){if(e<=0)throw new Error(`tensorinv: ind must be positive, got ${e}`);const h=t.shape,p=t.ndim;if(p<e)throw new Error(`tensorinv: array has ${p} dimensions, ind=${e} is too large`);let i=1;for(let o=0;o<e;o++)i*=h[o];let u=1;for(let o=e;o<p;o++)u*=h[o];if(i!==u)throw new Error(`tensorinv: product of first ${e} dimensions (${i}) must equal product of remaining dimensions (${u})`);const f=R.reshape(t,[i,u]),c=K(f),g=[...h.slice(e),...h.slice(0,e)];return R.reshape(c,g)}function Ke(t,e,h){const p=t.shape,i=e.shape,u=t.ndim,f=e.ndim;let c;h==null?c=Array.from({length:f},(d,x)=>u-f+x):c=h.map(d=>d<0?u+d:d);const g=[];for(let d=0;d<u;d++)c.includes(d)||g.push(d);const o=[...g,...c],s=L(t,o),n=c.map(d=>p[d]).reduce((d,x)=>d*x,1),r=g.map(d=>p[d]).reduce((d,x)=>d*x,1),a=i.reduce((d,x)=>d*x,1);if(n!==a)throw new Error(`tensorsolve: dimensions don't match - sum dimensions product (${n}) != b total elements (${a})`);if(r!==n)throw new Error(`tensorsolve: non-square problem - other dimensions product (${r}) != sum dimensions product (${n})`);const b=R.reshape(s,[r,n]),y=R.reshape(e,[n]),w=de(b,y);return R.reshape(w,[...i])}function et(t,...e){const h=t.indexOf("->");let p,i;h===-1?(p=t,i=ne(p)):(p=t.slice(0,h),i=t.slice(h+2));const u=p.split(",").map(n=>n.trim());if(u.length!==e.length)throw new Error(`einsum_path: expected ${u.length} operands, got ${e.length}`);const f=e.map(n=>Array.isArray(n)?n:Array.from(n.shape)),c=new Map;for(let n=0;n<e.length;n++){const m=u[n],r=f[n];if(m.length!==r.length)throw new Error(`einsum_path: operand ${n} has ${r.length} dimensions but subscript '${m}' has ${m.length} indices`);for(let a=0;a<m.length;a++){const b=m[a],y=r[a];if(c.has(b)&&c.get(b)!==y)throw new Error(`einsum_path: size mismatch for index '${b}': ${c.get(b)} vs ${y}`);c.set(b,y)}}if(e.length===1){const n=[[0]];return[n,ee(t,f,n,c)]}if(e.length===2){const n=[[0,1]];return[n,ee(t,f,n,c)]}const g=[],o=[...u],s=[...f],l=e.map((n,m)=>m);for(;o.length>1;){let n=0,m=1,r=1/0;for(let y=0;y<o.length;y++)for(let w=y+1;w<o.length;w++){const d=xe(o[y],o[w],s[y],s[w],i,c);d<r&&(r=d,n=y,m=w)}g.push([l[n],l[m]]);const[a,b]=Se(o[n],o[m],s[n],s[m],i,c);o.splice(m,1),o.splice(n,1),s.splice(m,1),s.splice(n,1),l.splice(m,1),l.splice(n,1),o.push(a),s.push(b),l.push(-1)}return[g,ee(t,f,g,c)]}function xe(t,e,h,p,i,u){const f=new Set(t),c=new Set(e);let g=1;for(const o of f)g*=u.get(o)||1;for(const o of c)f.has(o)||(g*=u.get(o)||1);return g}function Se(t,e,h,p,i,u){const f=new Set([...t,...e]),c=new Map;for(const l of t)c.set(l,(c.get(l)||0)+1);for(const l of e)c.set(l,(c.get(l)||0)+1);const g=new Set(i),o=[];for(const l of f)(g.has(l)||c.get(l)===1)&&o.push(l);o.sort();const s=o.map(l=>u.get(l));return[o.join(""),s]}function ee(t,e,h,p){const i=[];i.push(" Complete contraction: "+t),i.push(" Operand shapes: "+e.map(f=>`(${f.join(", ")})`).join(", ")),i.push(" Contraction path: "+JSON.stringify(h));let u=0;for(const f of e)u+=f.reduce((c,g)=>c*g,1);return i.push(" Estimated FLOPS: ~"+u.toExponential(2)),i.join(`
2
- `)}export{ke as cholesky,Re as cond,je as cross,Fe as det,ze as diagonal,X as dot,ye as eig,Ae as eigh,Oe as eigvals,Le as eigvalsh,Ee as einsum,et as einsum_path,Me as inner,K as inv,Ce as kron,qe as lstsq,B as matmul,P as matrix_norm,Be as matrix_power,_e as matrix_rank,Xe as matrix_transpose,Qe as matvec,Ye as multi_dot,Ve as norm,pe as outer,We as permute_dims,Te as pinv,ge as qr,Ge as slogdet,de as solve,be as svd,He as svdvals,De as tensordot,Ze as tensorinv,Ke as tensorsolve,$e as trace,L as transpose,Pe as vdot,Je as vecdot,Ue as vecmat,W as vector_norm};
1
+ import{ArrayStorage as z}from"../storage";import{promoteDTypes as k,isComplexDType as q,isBigIntDType as _,getTypedArrayConstructor as at}from"../dtype";import{Complex as $}from"../complex";import{wasmMatmul as It}from"../wasm/matmul";import{wasmInner as Dt}from"../wasm/inner";import{wasmDot1D as nt}from"../wasm/dot";import{wasmMatvec as lt}from"../wasm/matvec";import{wasmVecmat as ct}from"../wasm/vecmat";import{wasmOuter as vt}from"../wasm/outer";import{wasmVecdot as $t}from"../wasm/vecdot";import{wasmVdotComplex as zt}from"../wasm/vdot";import{wasmKron as Mt}from"../wasm/kron";import{wasmCross as Ct}from"../wasm/cross";import{wasmQr as Et}from"../wasm/qr";import{wasmCholesky as jt}from"../wasm/cholesky";import{wasmSvd as Vt}from"../wasm/svd";import*as R from"./shape";const Ft=new Int32Array(1),Bt=new Uint32Array(1),Rt=new Int16Array(1),kt=new Uint16Array(1),qt=new Int8Array(1),Tt=new Uint8Array(1),_t={int32:Ft,uint32:Bt,int16:Rt,uint16:kt,int8:qt,uint8:Tt};function L(t){return _t[t]??null}function J(t,e){if(t instanceof $||e instanceof $){const g=t instanceof $?t:new $(Number(t),0),p=e instanceof $?e:new $(Number(e),0);return g.mul(p)}return typeof t=="bigint"&&typeof e=="bigint"?Number(t*e):Number(t)*Number(e)}function Ot(t,e,g,p,c,m,f,d,b){for(let l=0;l<g;l++)for(let s=0;s<m;s++)for(let a=0;a<f;a++){let n=0;for(let i=0;i<d;i++)n+=t[e+l*d+i]*p[c+s*d*f+i*f+a];b[l*m*f+s*f+a]=n}}function Ut(t,e,g,p,c,m,f,d,b,l){for(let s=0;s<g;s++)for(let a=0;a<f;a++){let n=0;for(let r=0;r<b;r++){const o=p===1?r:s*b+r,u=d===1?r:a*b+r;n+=t[e+o]*c[m+u]}const i=g===1?a:s*f+a;l[i]=n}}function Lt(t,e,g,p,c,m,f,d,b,l,s,a){for(let r=0;r<g*p;r++)s[r]=0;const n=t==="transpose",i=e==="transpose";if(!n&&!i)for(let r=0;r<g;r++)for(let o=0;o<p;o++){let u=0;for(let w=0;w<c;w++)u+=(f[r*d+w]??0)*(b[w*l+o]??0);s[r*a+o]=m*u}else if(n&&!i)for(let r=0;r<g;r++)for(let o=0;o<p;o++){let u=0;for(let w=0;w<c;w++)u+=(f[w*d+r]??0)*(b[w*l+o]??0);s[r*a+o]=m*u}else if(!n&&i)for(let r=0;r<g;r++)for(let o=0;o<p;o++){let u=0;for(let w=0;w<c;w++)u+=(f[r*d+w]??0)*(b[o*l+w]??0);s[r*a+o]=m*u}else for(let r=0;r<g;r++)for(let o=0;o<p;o++){let u=0;for(let w=0;w<c;w++)u+=(f[w*d+r]??0)*(b[o*l+w]??0);s[r*a+o]=m*u}}function K(t,e){const g=t.ndim,p=e.ndim,c=q(t.dtype)||q(e.dtype);if(g===0||p===0){const m=g===0?t.get():null,f=p===0?e.get():null;if(g===0&&p===0)return J(m,f);if(g===0){const d=k(t.dtype,e.dtype),b=z.zeros([...e.shape],d),l=(s,a)=>{const n=new Array(a.length);let i=s;for(let r=a.length-1;r>=0;r--)n[r]=i%a[r],i=Math.floor(i/a[r]);return n};for(let s=0;s<e.size;s++){const a=l(s,e.shape),n=e.get(...a);b.set(a,J(m,n))}return b}else{const d=k(t.dtype,e.dtype),b=z.zeros([...t.shape],d),l=(s,a)=>{const n=new Array(a.length);let i=s;for(let r=a.length-1;r>=0;r--)n[r]=i%a[r],i=Math.floor(i/a[r]);return n};for(let s=0;s<t.size;s++){const a=l(s,t.shape),n=t.get(...a);b.set(a,J(n,f))}return b}}if(g===1&&p===1){if(t.shape[0]!==e.shape[0])throw new Error(`dot: incompatible shapes (${t.shape[0]},) and (${e.shape[0]},)`);const m=nt(t,e);if(m!==null)return m;const f=t.shape[0];if(c){let s=0,a=0;for(let n=0;n<f;n++){const i=t.get(n),r=e.get(n),o=J(i,r);o instanceof $?(s+=o.re,a+=o.im):s+=o}return new $(s,a)}const d=k(t.dtype,e.dtype),b=L(d);if(b){b[0]=0;for(let s=0;s<f;s++)b[0]+=Number(t.get(s))*Number(e.get(s));return b[0]}let l=0;for(let s=0;s<f;s++){const a=t.get(s),n=e.get(s);typeof a=="bigint"&&typeof n=="bigint"?l=Number(l)+Number(a*n):l+=Number(a)*Number(n)}return l}if(g===2&&p===2)return X(t,e);if(g===2&&p===1){const[m,f]=t.shape,d=e.shape[0];if(f!==d)throw new Error(`dot: incompatible shapes (${m},${f}) and (${d},)`);const b=lt(t,e);if(b)return b;const l=k(t.dtype,e.dtype),s=z.zeros([m],l);if(c)for(let a=0;a<m;a++){let n=0,i=0;for(let r=0;r<f;r++){const o=t.get(a,r),u=e.get(r),w=o instanceof $?o:new $(Number(o),0),y=u instanceof $?u:new $(Number(u),0);n+=w.re*y.re-w.im*y.im,i+=w.re*y.im+w.im*y.re}s.set([a],new $(n,i))}else{const a=L(l);for(let n=0;n<m;n++)if(a){a[0]=0;for(let i=0;i<f;i++)a[0]+=Number(t.get(n,i))*Number(e.get(i));s.set([n],a[0])}else{let i=0;for(let r=0;r<f;r++){const o=t.get(n,r),u=e.get(r);typeof o=="bigint"&&typeof u=="bigint"?i=Number(i)+Number(o*u):i+=Number(o)*Number(u)}s.set([n],i)}}return s}if(g===1&&p===2){const m=t.shape[0],[f,d]=e.shape;if(m!==f)throw new Error(`dot: incompatible shapes (${m},) and (${f},${d})`);const b=ct(t,e);if(b)return b;const l=k(t.dtype,e.dtype),s=z.zeros([d],l);if(c)for(let a=0;a<d;a++){let n=0,i=0;for(let r=0;r<m;r++){const o=t.get(r),u=e.get(r,a),w=o instanceof $?o:new $(Number(o),0),y=u instanceof $?u:new $(Number(u),0);n+=w.re*y.re-w.im*y.im,i+=w.re*y.im+w.im*y.re}s.set([a],new $(n,i))}else{const a=L(l);for(let n=0;n<d;n++)if(a){a[0]=0;for(let i=0;i<m;i++)a[0]+=Number(t.get(i))*Number(e.get(i,n));s.set([n],a[0])}else{let i=0;for(let r=0;r<m;r++){const o=t.get(r),u=e.get(r,n);typeof o=="bigint"&&typeof u=="bigint"?i=Number(i)+Number(o*u):i+=Number(o)*Number(u)}s.set([n],i)}}return s}if(g>2&&p===1){const m=t.shape[g-1],f=e.shape[0];if(m!==f)throw new Error(`dot: incompatible shapes ${JSON.stringify(t.shape)} and (${f},)`);const d=[...t.shape.slice(0,-1)],b=k(t.dtype,e.dtype),l=z.zeros(d,b),s=d.reduce((a,n)=>a*n,1);if(c)for(let a=0;a<s;a++){let n=0,i=0,r=a;const o=[];for(let u=d.length-1;u>=0;u--)o[u]=r%d[u],r=Math.floor(r/d[u]);for(let u=0;u<m;u++){const w=[...o,u],y=t.get(...w),h=e.get(u),A=y instanceof $?y:new $(Number(y),0),x=h instanceof $?h:new $(Number(h),0);n+=A.re*x.re-A.im*x.im,i+=A.re*x.im+A.im*x.re}l.set(o,new $(n,i))}else{const a=L(b);for(let n=0;n<s;n++){let i=n;const r=[];for(let o=d.length-1;o>=0;o--)r[o]=i%d[o],i=Math.floor(i/d[o]);if(a){a[0]=0;for(let o=0;o<m;o++){const u=[...r,o];a[0]+=Number(t.get(...u))*Number(e.get(o))}l.set(r,a[0])}else{let o=0;for(let u=0;u<m;u++){const w=[...r,u],y=t.get(...w),h=e.get(u);typeof y=="bigint"&&typeof h=="bigint"?o=Number(o)+Number(y*h):o+=Number(y)*Number(h)}l.set(r,o)}}}return l}if(g===1&&p>2){const m=t.shape[0],f=1,d=e.shape[f];if(m!==d)throw new Error(`dot: incompatible shapes (${m},) and ${JSON.stringify(e.shape)}`);const b=[...e.shape.slice(0,f),...e.shape.slice(f+1)],l=k(t.dtype,e.dtype),s=z.zeros(b,l),a=b.reduce((n,i)=>n*i,1);if(c)for(let n=0;n<a;n++){let i=n;const r=[];for(let h=b.length-1;h>=0;h--)r[h]=i%b[h],i=Math.floor(i/b[h]);const o=r.slice(0,f),u=r.slice(f);let w=0,y=0;for(let h=0;h<m;h++){const A=t.get(h),x=[...o,h,...u],N=e.get(...x),S=A instanceof $?A:new $(Number(A),0),I=N instanceof $?N:new $(Number(N),0);w+=S.re*I.re-S.im*I.im,y+=S.re*I.im+S.im*I.re}s.set(r,new $(w,y))}else{const n=L(l);for(let i=0;i<a;i++){let r=i;const o=[];for(let y=b.length-1;y>=0;y--)o[y]=r%b[y],r=Math.floor(r/b[y]);const u=o.slice(0,f),w=o.slice(f);if(n){n[0]=0;for(let y=0;y<m;y++){const h=[...u,y,...w];n[0]+=Number(t.get(y))*Number(e.get(...h))}s.set(o,n[0])}else{let y=0;for(let h=0;h<m;h++){const A=t.get(h),x=[...u,h,...w],N=e.get(...x);typeof A=="bigint"&&typeof N=="bigint"?y=Number(y)+Number(A*N):y+=Number(A)*Number(N)}s.set(o,y)}}}return s}if(g>=2&&p>=2&&!(g===2&&p===2)){const m=t.shape[g-1],f=e.shape[p-2];if(m!==f)throw new Error(`dot: incompatible shapes ${JSON.stringify(t.shape)} and ${JSON.stringify(e.shape)}`);const d=[...t.shape.slice(0,-1),...e.shape.slice(0,-2),e.shape[p-1]],b=k(t.dtype,e.dtype),l=z.zeros(d,b),s=t.shape.slice(0,-1).reduce((r,o)=>r*o,1),a=e.shape.slice(0,-2).reduce((r,o)=>r*o,1),n=e.shape[p-1],i=m;if(c)for(let r=0;r<s;r++)for(let o=0;o<a;o++)for(let u=0;u<n;u++){let w=0,y=0;for(let x=0;x<i;x++){const N=[];let S=r;for(let j=t.shape.length-2;j>=0;j--)N.unshift(S%t.shape[j]),S=Math.floor(S/t.shape[j]);N.push(x);const I=t.get(...N),D=[];let v=o;for(let j=e.shape.length-3;j>=0;j--)D.unshift(v%e.shape[j]),v=Math.floor(v/e.shape[j]);D.push(x,u);const C=e.get(...D),M=I instanceof $?I:new $(Number(I),0),E=C instanceof $?C:new $(Number(C),0);w+=M.re*E.re-M.im*E.im,y+=M.re*E.im+M.im*E.re}const h=r*a*n+o*n+u,A=l.data;A[h*2]=w,A[h*2+1]=y}else if(t.isCContiguous&&e.isCContiguous&&!_(t.dtype)&&!_(e.dtype)&&!L(b))Ot(t.data,t.offset,s,e.data,e.offset,a,n,i,l.data);else{const r=L(b);for(let o=0;o<s;o++)for(let u=0;u<a;u++)for(let w=0;w<n;w++){const y=o*a*n+u*n+w;if(r){r[0]=0;for(let h=0;h<i;h++){const A=o*i+h,x=u*i*n+h*n+w;r[0]+=Number(t.iget(A))*Number(e.iget(x))}l.data[y]=r[0]}else{let h=0;for(let A=0;A<i;A++){const x=o*i+A,N=u*i*n+A*n+w,S=t.iget(x),I=e.iget(N);typeof S=="bigint"&&typeof I=="bigint"?h=Number(h)+Number(S*I):h+=Number(S)*Number(I)}l.data[y]=h}}}return l}throw new Error(`dot: unexpected combination of dimensions ${g}D \xB7 ${p}D`)}function ut(t,e){const[g=0,p=0]=t.shape,[c=0,m=0]=e.shape;if(p!==c)throw new Error(`matmul shape mismatch: (${g},${p}) @ (${c},${m})`);const f=k(t.dtype,e.dtype);if(q(f)){const N=z.zeros([g,m],f),S=N.data;for(let I=0;I<g;I++)for(let D=0;D<m;D++){let v=0,C=0;for(let E=0;E<p;E++){const j=t.iget(I*p+E),V=e.iget(E*m+D);v+=j.re*V.re-j.im*V.im,C+=j.re*V.im+j.im*V.re}const M=I*m+D;S[M*2]=v,S[M*2+1]=C}return N}if(f.startsWith("int")||f.startsWith("uint")||f==="bool"){const N=z.zeros([g,m],f),S=N.data,I=t.offset,D=e.offset,[v=0,C=0]=t.strides,[M=0,E=0]=e.strides;if(_(f)){const j=t.data,V=e.data,F=S;for(let T=0;T<g;T++)for(let B=0;B<m;B++){let W=0n;for(let U=0;U<p;U++)W+=j[I+T*v+U*C]*V[D+U*M+B*E];F[T*m+B]=W}}else{const j=t.data,V=e.data,F=S;for(let T=0;T<g;T++)for(let B=0;B<m;B++){let W=0;for(let U=0;U<p;U++)W+=j[I+T*v+U*C]*V[D+U*M+B*E];F[T*m+B]=W}}return N}const d=f;if(d!=="float64"&&d!=="float32")throw new Error(`matmul currently only supports float64/float32, got ${d}`);const b=N=>N.dtype==="float64"?N.data:N.dtype==="float32"?Float64Array.from(N.data):Float64Array.from(Array.from(N.data).map(Number));let l=b(t),s=b(e);t.offset>0&&(l=l.subarray(t.offset)),e.offset>0&&(s=s.subarray(e.offset));const[a=0,n=0]=t.strides,[i=0,r=0]=e.strides,o=n>a,u=r>i,w=o?"transpose":"no-transpose",y=u?"transpose":"no-transpose";let h,A;o?h=n:h=a,u?A=r:A=i;const x=z.zeros([g,m],"float64");if(Lt(w,y,g,m,p,1,l,h,s,A,x.data,m),d==="float32"){const N=z.zeros([g,m],"float32"),S=x.data,I=N.data;for(let D=0;D<S.length;D++)I[D]=S[D];return N}return x}function Pt(t,e){const g=Math.max(t.length,e.length),p=new Array(g);for(let c=0;c<g;c++){const m=t[t.length-g+c]??1,f=e[e.length-g+c]??1;if(m!==f&&m!==1&&f!==1)throw new Error(`matmul: cannot broadcast batch shapes ${JSON.stringify(t)} and ${JSON.stringify(e)}`);p[c]=Math.max(m,f)}return p}function Y(t,e){const g=new Array(e.length);let p=t;for(let c=e.length-1;c>=0;c--)g[c]=p%e[c],p=Math.floor(p/e[c]);return g}function mt(t,e){const g=e.length;let p=0;for(let c=0;c<g;c++){const m=t.length-g+c,f=m>=0?t[m]:0,d=e[c]===1?0:f;p=p*e[c]+d}return p}function O(t){if(t.isCContiguous&&t.offset===0&&t.dtype==="float64")return t.data;const e=new Float64Array(t.size);for(let g=0;g<t.size;g++)e[g]=Number(t.iget(g));return e}function ft(t,e,g,p){const c=t.ndim,m=g*p,f=q(t.dtype),d=_(t.dtype),b=f?2:1,l=at(t.dtype),s=new l(m*b);if(t.isCContiguous){const a=(t.offset+e*m)*b;if(d){const n=t.data,i=s;for(let r=0;r<m*b;r++)i[r]=n[a+r]}else{const n=t.data,i=s;for(let r=0;r<m*b;r++)i[r]=n[a+r]}}else{const a=e*m;for(let n=0;n<m;n++){let r=a+n,o=t.offset;for(let u=c-1;u>=0;u--){const w=t.shape[u];o+=r%w*t.strides[u],r=Math.floor(r/w)}if(f){const u=t.data,w=s;w[n*2]=u[o*2],w[n*2+1]=u[o*2+1]}else s[n]=t.data[o]}}return z.fromData(s,[g,p],t.dtype)}function X(t,e){if(t.ndim===1&&e.ndim===1){const M=nt(t,e);if(M!==null){const E=k(t.dtype,e.dtype),j=z.zeros([],E);return M instanceof $?(j.data[0]=M.re,j.data[1]=M.im):j.data[0]=M,j}}else if(t.ndim>=2&&e.ndim===1){if(t.ndim===2){const M=lt(t,e);if(M)return M}}else if(t.ndim===1&&e.ndim>=2&&e.ndim===2){const M=ct(t,e);if(M)return M}const g=It(t,e);if(g)return g;if(t.ndim===0||e.ndim===0)throw new Error("matmul: Input operand does not have enough dimensions (has 0, gufunc core with signature (n?,k),(k,m?)->(n?,m?) requires at least 1-D)");const p=t.ndim===1,c=e.ndim===1,m=p?R.reshape(t,[1,t.shape[0]]):t,f=c?R.reshape(e,[e.shape[0],1]):e,d=m.ndim,b=f.ndim,l=m.shape[d-2],s=m.shape[d-1],a=f.shape[b-2],n=f.shape[b-1];if(s!==a)throw new Error(`matmul: shape mismatch: (...,${l},${s}) @ (...,${a},${n}): inner dimensions must match`);if(d===2&&b===2){const M=ut(m,f);return p&&c?R.reshape(M,[]):p?R.reshape(M,[n]):c?R.reshape(M,[l]):M}const i=Array.from(m.shape).slice(0,d-2),r=Array.from(f.shape).slice(0,b-2),o=Pt(i,r),u=o.reduce((M,E)=>M*E,1),w=k(m.dtype,f.dtype),y=[];for(let M=0;M<u;M++){const E=Y(M,o),j=mt(E,i),V=mt(E,r),F=ft(m,j,l,s),T=ft(f,V,s,n);y.push(ut(F,T))}const h=l*n,A=q(w),x=_(w),N=A?2:1,S=at(w),I=u*h*N,D=new S(I);for(let M=0;M<u;M++){const j=y[M].data,V=M*h*N;if(x){const F=j,T=D;for(let B=0;B<h;B++)T[V+B]=F[B]}else{const F=j,T=D;for(let B=0;B<h*N;B++)T[V+B]=F[B]}}const v=[...o,l,n],C=z.fromData(D,v,w);return p&&c?R.reshape(C,[...o]):p?R.reshape(C,[...o,n]):c?R.reshape(C,[...o,l]):C}function be(t,e=0,g=0,p=1){if(t.ndim<2)throw new Error(`trace requires at least 2D array, got ${t.ndim}D`);if(t.ndim===2){const i=g<0?t.ndim+g:g,r=p<0?t.ndim+p:p,o=t.shape[i],u=t.shape[r],w=Math.min(o,u)-Math.max(0,e);if(w<=0)return q(t.dtype)?new $(0,0):0;if(q(t.dtype)){let h=0,A=0;for(let x=0;x<w;x++){const N=e>=0?x:x-e,S=e>=0?x+e:x,I=[0,0];I[i]=N,I[r]=S;const D=t.get(...I);h+=D.re,A+=D.im}return new $(h,A)}let y=0;for(let h=0;h<w;h++){const A=e>=0?h:h-e,x=e>=0?h+e:h,N=[0,0];N[i]=A,N[r]=x;const S=t.get(...N);typeof S=="bigint"?y=(typeof y=="bigint"?y:BigInt(y))+S:y=(typeof y=="bigint"?Number(y):y)+S}return y}const c=t.ndim,m=(g%c+c)%c,f=(p%c+c)%c;if(m===f)throw new Error("trace: axis1 and axis2 must be different");const d=t.shape[m],b=t.shape[f],l=Math.min(d,b)-Math.max(0,e),s=Array.from(t.shape).filter((i,r)=>r!==m&&r!==f),a=s.reduce((i,r)=>i*r,1),n=z.zeros(s.length>0?s:[1],t.dtype);if(l<=0)return n.shape.length===0?0:n;for(let i=0;i<a;i++){const r=new Array(s.length);let o=i;for(let A=s.length-1;A>=0;A--)r[A]=o%s[A],o=Math.floor(o/s[A]);let u=0,w=0,y=0;const h=q(t.dtype);for(let A=0;A<l;A++){const x=e>=0?A:A-e,N=e>=0?A+e:A,S=new Array(c);let I=0;for(let v=0;v<c;v++)v===m?S[v]=x:v===f?S[v]=N:S[v]=r[I++];const D=t.get(...S);h?(w+=D.re,y+=D.im):typeof D=="bigint"?u=(typeof u=="bigint"?u:BigInt(u))+D:u=(typeof u=="bigint"?Number(u):u)+D}h?n.iset(i,new $(w,y)):n.iset(i,typeof u=="bigint"?Number(u):u)}return n}function G(t,e){return R.transpose(t,e)}function ye(t,e){const g=t.ndim,p=e.ndim,c=q(t.dtype)||q(e.dtype);if(g===0||p===0)return K(t,e);const m=t.shape[g-1],f=e.shape[p-1];if(m!==f)throw new Error(`inner: incompatible shapes - last dimensions ${m} and ${f} don't match`);const d=Dt(t,e);if(d!==null)return d;if(g===1&&p===1)return K(t,e);const b=[...t.shape.slice(0,-1),...e.shape.slice(0,-1)],l=k(t.dtype,e.dtype),s=z.zeros(b,l),a=g===1?1:t.shape.slice(0,-1).reduce((r,o)=>r*o,1),n=p===1?1:e.shape.slice(0,-1).reduce((r,o)=>r*o,1),i=m;if(c)for(let r=0;r<a;r++)for(let o=0;o<n;o++){let u=0,w=0;for(let A=0;A<i;A++){let x,N;if(g===1)x=t.get(A);else{const D=[];let v=r;const C=t.shape.slice(0,-1);for(let M=C.length-1;M>=0;M--)D.unshift(v%C[M]),v=Math.floor(v/C[M]);D.push(A),x=t.get(...D)}if(p===1)N=e.get(A);else{const D=[];let v=o;const C=e.shape.slice(0,-1);for(let M=C.length-1;M>=0;M--)D.unshift(v%C[M]),v=Math.floor(v/C[M]);D.push(A),N=e.get(...D)}const S=x instanceof $?x:new $(Number(x),0),I=N instanceof $?N:new $(Number(N),0);u+=S.re*I.re-S.im*I.im,w+=S.re*I.im+S.im*I.re}if(b.length===0)return new $(u,w);const y=a===1?o:r*n+o,h=s.data;h[y*2]=u,h[y*2+1]=w}else{const r=L(l);if(t.isCContiguous&&e.isCContiguous&&!_(t.dtype)&&!_(e.dtype)&&!r){if(b.length===0){const o=t.data,u=e.data,w=t.offset,y=e.offset;let h=0;for(let A=0;A<i;A++)h+=o[w+A]*u[y+A];return h}Ut(t.data,t.offset,a,g,e.data,e.offset,n,p,i,s.data)}else for(let o=0;o<a;o++)for(let u=0;u<n;u++)if(r){r[0]=0;for(let y=0;y<i;y++){const h=g===1?y:o*i+y,A=p===1?y:u*i+y;r[0]+=Number(t.iget(h))*Number(e.iget(A))}if(b.length===0)return r[0];const w=a===1?u:o*n+u;s.data[w]=r[0]}else{let w=0;for(let h=0;h<i;h++){const A=g===1?h:o*i+h,x=p===1?h:u*i+h,N=t.iget(A),S=e.iget(x);typeof N=="bigint"&&typeof S=="bigint"?w=Number(w)+Number(N*S):w+=Number(N)*Number(S)}if(b.length===0)return w;const y=a===1?u:o*n+u;s.data[y]=w}}return s}function Jt(t,e){const g=t.ndim===1?t:R.ravel(t),p=e.ndim===1?e:R.ravel(e),c=vt(g,p);if(c)return c;const m=g.size,f=p.size,d=k(t.dtype,e.dtype),b=z.zeros([m,f],d);for(let l=0;l<m;l++)for(let s=0;s<f;s++){const a=g.get(l),n=p.get(s),i=J(a,n);b.set([l,s],i)}return b}function we(t,e,g){let p,c;if(typeof g=="number"){const r=g;if(r<0)throw new Error("tensordot: axes must be non-negative");if(r>t.ndim||r>e.ndim)throw new Error("tensordot: axes exceeds array dimensions");p=Array.from({length:r},(o,u)=>t.ndim-r+u),c=Array.from({length:r},(o,u)=>u)}else if([p,c]=g,p.length!==c.length)throw new Error("tensordot: axes lists must have same length");for(let r=0;r<p.length;r++){const o=p[r],u=c[r];if(o<0||o>=t.ndim||u<0||u>=e.ndim)throw new Error("tensordot: axis out of bounds");if(t.shape[o]!==e.shape[u])throw new Error(`tensordot: shape mismatch on axes ${o} and ${u}: ${t.shape[o]} != ${e.shape[u]}`)}const m=[],f=[];for(let r=0;r<t.ndim;r++)p.includes(r)||m.push(r);for(let r=0;r<e.ndim;r++)c.includes(r)||f.push(r);const d=[...m.map(r=>t.shape[r]),...f.map(r=>e.shape[r])],b=k(t.dtype,e.dtype),l=q(b),s=r=>r instanceof $?{re:r.re,im:r.im}:{re:Number(r),im:0};if(d.length===0){let r=0,o=0;const u=p.map(w=>t.shape[w]).reduce((w,y)=>w*y,1);for(let w=0;w<u;w++){let y=w;const h=new Array(p.length);for(let I=p.length-1;I>=0;I--){const D=p[I];h[I]=y%t.shape[D],y=Math.floor(y/t.shape[D])}const A=new Array(t.ndim),x=new Array(e.ndim);for(let I=0;I<p.length;I++)A[p[I]]=h[I];for(let I=0;I<c.length;I++)x[c[I]]=h[I];const N=t.get(...A),S=e.get(...x);if(l){const I=s(N),D=s(S);r+=I.re*D.re-I.im*D.im,o+=I.re*D.im+I.im*D.re}else typeof N=="bigint"&&typeof S=="bigint"?r+=Number(N*S):r+=Number(N)*Number(S)}return l?new $(r,o):r}const a=z.zeros(d,b),n=d.reduce((r,o)=>r*o,1),i=p.map(r=>t.shape[r]).reduce((r,o)=>r*o,1);for(let r=0;r<n;r++){let o=r;const u=[];for(let x=d.length-1;x>=0;x--)u[x]=o%d[x],o=Math.floor(o/d[x]);const w=u.slice(0,m.length),y=u.slice(m.length);let h=0,A=0;for(let x=0;x<i;x++){o=x;const N=[];for(let C=p.length-1;C>=0;C--){const M=p[C];N[C]=o%t.shape[M],o=Math.floor(o/t.shape[M])}const S=new Array(t.ndim),I=new Array(e.ndim);for(let C=0;C<m.length;C++)S[m[C]]=w[C];for(let C=0;C<f.length;C++)I[f[C]]=y[C];for(let C=0;C<p.length;C++)S[p[C]]=N[C],I[c[C]]=N[C];const D=t.get(...S),v=e.get(...I);if(l){const C=s(D),M=s(v);h+=C.re*M.re-C.im*M.im,A+=C.re*M.im+C.im*M.re}else typeof D=="bigint"&&typeof v=="bigint"?h+=Number(D*v):h+=Number(D)*Number(v)}l?a.set(u,new $(h,A)):a.set(u,h)}return a}function Ae(t,e=0,g=0,p=1){const c=t.shape,m=c.length;if(m<2)throw new Error("diagonal requires an array of at least two dimensions");const f=g<0?m+g:g,d=p<0?m+p:p;if(f<0||f>=m||d<0||d>=m)throw new Error("axis out of bounds");if(f===d)throw new Error("axis1 and axis2 cannot be the same");const b=c[f],l=c[d];let s;e>=0?s=Math.max(0,Math.min(b,l-e)):s=Math.max(0,Math.min(b+e,l));const a=[];for(let o=0;o<m;o++)o!==f&&o!==d&&a.push(c[o]);a.push(s);const n=z.zeros(a,t.dtype),i=c.filter((o,u)=>u!==f&&u!==d),r=i.reduce((o,u)=>o*u,1);for(let o=0;o<r;o++){let u=o;const w=[];for(let y=i.length-1;y>=0;y--)w.unshift(u%i[y]),u=Math.floor(u/i[y]);for(let y=0;y<s;y++){const h=new Array(m);let A=0;for(let S=0;S<m;S++)S===f?h[S]=e>=0?y:y-e:S===d?h[S]=e>=0?y+e:y:h[S]=w[A++];const x=[...w,y],N=t.get(...h);n.set(x,N)}}return n}function Se(t,...e){const g=t.indexOf("->");let p,c;g===-1?(p=t,c=pt(p)):(p=t.slice(0,g),c=t.slice(g+2));const m=p.split(",").map(o=>o.trim());if(m.length!==e.length)throw new Error(`einsum: expected ${m.length} operands, got ${e.length}`);const f=new Map;for(let o=0;o<e.length;o++){const u=m[o],w=e[o];if(u.length!==w.ndim)throw new Error(`einsum: operand ${o} has ${w.ndim} dimensions but subscript '${u}' has ${u.length} indices`);for(let y=0;y<u.length;y++){const h=u[y],A=w.shape[y];if(f.has(h)){if(f.get(h)!==A)throw new Error(`einsum: size mismatch for index '${h}': ${f.get(h)} vs ${A}`)}else f.set(h,A)}}for(const o of c)if(!f.has(o))throw new Error(`einsum: output subscript contains unknown index '${o}'`);const d=new Set(c),b=new Set;for(const o of m)for(const u of o)b.add(u);const l=[];for(const o of b)d.has(o)||l.push(o);if(e.length===2&&m.length===2){const[o,u]=m,[w,y]=e;if(o.length===2&&u.length===2&&c.length===2&&w.ndim===2&&y.ndim===2){const[h,A]=[o[0],o[1]],[x,N]=[u[0],u[1]],[S,I]=[c[0],c[1]];if(h===S&&N===I&&A===x&&l.length===1&&l[0]===A||h===S&&N===I&&A===x&&l.length===1&&l[0]===A)return X(w,y);if(A===S&&N===I&&h===x&&l.length===1&&l[0]===h){const D=G(w);return X(D,y)}if(h===S&&x===I&&A===N&&l.length===1&&l[0]===A){const D=G(y);return X(w,D)}}if(o.length===1&&u.length===1&&o===u&&c.length===0&&w.ndim===1&&y.ndim===1)return ot(e,m,l,f);if(o&&u&&o.length===1&&u.length===1&&c.length===2&&c===o+u&&l.length===0&&w.ndim===1&&y.ndim===1)return Jt(w,y)}if(e.length===1&&m[0].length===2&&c.length===0){const o=m[0];if(o[0]===o[1]&&e[0].ndim===2)return ot(e,m,l,f)}const s=Array.from(c).map(o=>f.get(o));if(s.length===0)return ot(e,m,l,f);let a=e[0].dtype;for(let o=1;o<e.length;o++)a=k(a,e[o].dtype);const n=z.zeros(s,a),i=s.reduce((o,u)=>o*u,1);let r=1;for(const o of l)r*=f.get(o);for(let o=0;o<i;o++){const u=Xt(o,s),w=new Map;for(let h=0;h<c.length;h++)w.set(c[h],u[h]);let y=0;for(let h=0;h<r;h++){let A=h;for(let N=l.length-1;N>=0;N--){const S=l[N],I=f.get(S);w.set(S,A%I),A=Math.floor(A/I)}let x=1;for(let N=0;N<e.length;N++){const S=e[N],I=m[N],D=[];for(const C of I)D.push(w.get(C));const v=S.get(...D);x*=Number(v)}y+=x}n.set(u,y)}return n}function pt(t){const e=new Map,g=t.split(",");for(const c of g)for(const m of c.trim())e.set(m,(e.get(m)||0)+1);const p=[];for(const[c,m]of e)m===1&&p.push(c);return p.sort().join("")}function ot(t,e,g,p){let c=!1;for(const l of t)if(q(l.dtype)){c=!0;break}const m=l=>l instanceof $?{re:l.re,im:l.im}:{re:Number(l),im:0};let f=1;for(const l of g)f*=p.get(l);let d=0,b=0;for(let l=0;l<f;l++){const s=new Map;let a=l;for(let r=g.length-1;r>=0;r--){const o=g[r],u=p.get(o);s.set(o,a%u),a=Math.floor(a/u)}let n=1,i=0;for(let r=0;r<t.length;r++){const o=t[r],u=e[r],w=[];for(const h of u)w.push(s.get(h));const y=o.get(...w);if(c){const h=m(y),A=n*h.re-i*h.im,x=n*h.im+i*h.re;n=A,i=x}else n*=Number(y)}d+=n,b+=i}return c?new $(d,b):d}function Xt(t,e){const g=new Array(e.length);let p=t;for(let c=e.length-1;c>=0;c--)g[c]=p%e[c],p=Math.floor(p/e[c]);return g}function xe(t,e){const g=t.shape,p=e.shape,c=g.length,m=p.length,f=k(t.dtype,e.dtype);if(c===2&&m===2){const r=Mt(t,e);if(r)return r}const d=Math.max(c,m),b=new Array(d),l=new Array(d).fill(1),s=new Array(d).fill(1);for(let r=0;r<c;r++)l[d-c+r]=g[r];for(let r=0;r<m;r++)s[d-m+r]=p[r];for(let r=0;r<d;r++)b[r]=l[r]*s[r];const a=z.zeros(b,f),n=g.reduce((r,o)=>r*o,1),i=p.reduce((r,o)=>r*o,1);for(let r=0;r<n;r++){let o=r;const u=new Array(c);for(let h=c-1;h>=0;h--)u[h]=o%g[h],o=Math.floor(o/g[h]);const w=new Array(d).fill(0);for(let h=0;h<c;h++)w[d-c+h]=u[h];const y=t.get(...u);for(let h=0;h<i;h++){let A=h;const x=new Array(m);for(let v=m-1;v>=0;v--)x[v]=A%p[v],A=Math.floor(A/p[v]);const N=new Array(d).fill(0);for(let v=0;v<m;v++)N[d-m+v]=x[v];const S=e.get(...x),I=new Array(d);for(let v=0;v<d;v++)I[v]=w[v]*s[v]+N[v];const D=J(y,S);a.set(I,D)}}return a}function Ne(t,e,g=-1,p=-1,c=-1,m){m!==void 0&&(g=m,p=m,c=m);const f=(I,D)=>I<0?D+I:I,d=f(g,t.ndim),b=f(p,e.ndim),l=k(t.dtype,e.dtype),s=q(l),a=(I,...D)=>{const v=I.get(...D);return v instanceof $||typeof v=="bigint"?v:Number(v)},n=(I,D)=>{if(I instanceof $||D instanceof $){const v=I instanceof $?I:new $(Number(I),0),C=D instanceof $?D:new $(Number(D),0);return v.mul(C)}return typeof I=="bigint"||typeof D=="bigint"?BigInt(I)*BigInt(D):I*D},i=(I,D)=>{if(I instanceof $||D instanceof $){const v=I instanceof $?I:new $(Number(I),0),C=D instanceof $?D:new $(Number(D),0);return v.sub(C)}return typeof I=="bigint"||typeof D=="bigint"?BigInt(I)-BigInt(D):I-D};if(t.ndim===1&&e.ndim===1){const I=t.shape[0],D=e.shape[0];if(I===3&&D===3){const v=a(t,0),C=a(t,1),M=a(t,2),E=a(e,0),j=a(e,1),V=a(e,2),F=z.zeros([3],l);return F.set([0],i(n(C,V),n(M,j))),F.set([1],i(n(M,E),n(v,V))),F.set([2],i(n(v,j),n(C,E))),F}else if(I===2&&D===2){const v=a(t,0),C=a(t,1),M=a(e,0),E=a(e,1);return i(n(v,E),n(C,M))}else if(I===2&&D===3||I===3&&D===2){const v=a(t,0),C=a(t,1),M=I===3?a(t,2):s?new $(0,0):_(l)?0n:0,E=a(e,0),j=a(e,1),V=D===3?a(e,2):s?new $(0,0):_(l)?0n:0,F=z.zeros([3],l);return F.set([0],i(n(C,V),n(M,j))),F.set([1],i(n(M,E),n(v,V))),F.set([2],i(n(v,j),n(C,E))),F}else throw new Error(`cross: incompatible dimensions for cross product: ${I} and ${D}`)}const r=t.shape[d],o=e.shape[b];if(r!==2&&r!==3||o!==2&&o!==3)throw new Error(`cross: incompatible dimensions for cross product: ${r} and ${o}`);const u=r===2&&o===2?0:3,w=[...t.shape.slice(0,d),...t.shape.slice(d+1)],y=[...e.shape.slice(0,b),...e.shape.slice(b+1)];if(w.length!==y.length)throw new Error("cross: incompatible shapes for cross product");for(let I=0;I<w.length;I++)if(w[I]!==y[I])throw new Error("cross: incompatible shapes for cross product");const h=w;if(r===3&&o===3&&d===t.ndim-1&&b===e.ndim-1){const I=h.reduce((v,C)=>v*C,1),D=Ct(t,e,I);if(D)return D}const A=c<0?h.length+1+c:c;let x;if(u===0?x=h:x=[...h.slice(0,A),u,...h.slice(A)],x.length===0)throw new Error("cross: unexpected scalar result from higher-dimensional input");const N=z.zeros(x,l),S=h.reduce((I,D)=>I*D,1);for(let I=0;I<S;I++){let D=I;const v=[];for(let P=h.length-1;P>=0;P--)v[P]=D%h[P],D=Math.floor(D/h[P]);const C=[...v.slice(0,d),0,...v.slice(d)],M=[...v.slice(0,b),0,...v.slice(b)],E=P=>(C[d]=P,a(t,...C)),j=P=>(M[b]=P,a(e,...M)),V=E(0),F=E(1),T=r===3?E(2):s?new $(0,0):_(l)?0n:0,B=j(0),W=j(1),U=o===3?j(2):s?new $(0,0):_(l)?0n:0;if(u===0)N.set(v,i(n(V,W),n(F,B)));else{const P=i(n(F,U),n(T,W)),wt=i(n(T,B),n(V,U)),At=i(n(V,W),n(F,B)),rt=(St,xt)=>{const Nt=[...v.slice(0,A),St,...v.slice(A)];N.set(Nt,xt)};rt(0,P),rt(1,wt),rt(2,At)}}return N}function Z(t,e=2,g,p=!1){if(typeof e!="number")throw new Error("vector_norm: ord must be a number");if(g==null){const l=t.ndim===1?t:R.ravel(t),s=l.size;let a;if(e===1/0){a=0;for(let n=0;n<s;n++)a=Math.max(a,Math.abs(Number(l.get(n))))}else if(e===-1/0){a=1/0;for(let n=0;n<s;n++)a=Math.min(a,Math.abs(Number(l.get(n))))}else if(e===0){a=0;for(let n=0;n<s;n++)Number(l.get(n))!==0&&a++}else if(e===1){a=0;for(let n=0;n<s;n++)a+=Math.abs(Number(l.get(n)))}else if(e===2){a=0;for(let n=0;n<s;n++){const i=Number(l.get(n));a+=i*i}a=Math.sqrt(a)}else{a=0;for(let n=0;n<s;n++)a+=Math.pow(Math.abs(Number(l.get(n))),e);a=Math.pow(a,1/e)}if(p){const n=new Array(t.ndim).fill(1),i=z.zeros(n,"float64");return i.set(new Array(t.ndim).fill(0),a),i}return a}const c=g<0?t.ndim+g:g;if(c<0||c>=t.ndim)throw new Error(`vector_norm: axis ${g} out of bounds for array with ${t.ndim} dimensions`);const m=p?[...t.shape.slice(0,c),1,...t.shape.slice(c+1)]:[...t.shape.slice(0,c),...t.shape.slice(c+1)];if(m.length===0)return Z(t,e,null,!1);const f=z.zeros(m,"float64"),d=t.shape[c],b=m.reduce((l,s)=>l*s,1);for(let l=0;l<b;l++){let s=l;const a=[];for(let r=m.length-1;r>=0;r--)a[r]=s%m[r],s=Math.floor(s/m[r]);const n=p?[...a.slice(0,c),0,...a.slice(c+1)]:[...a.slice(0,c),0,...a.slice(c)];let i;if(e===1/0){i=0;for(let r=0;r<d;r++)n[c]=r,i=Math.max(i,Math.abs(Number(t.get(...n))))}else if(e===-1/0){i=1/0;for(let r=0;r<d;r++)n[c]=r,i=Math.min(i,Math.abs(Number(t.get(...n))))}else if(e===0){i=0;for(let r=0;r<d;r++)n[c]=r,Number(t.get(...n))!==0&&i++}else if(e===1){i=0;for(let r=0;r<d;r++)n[c]=r,i+=Math.abs(Number(t.get(...n)))}else if(e===2){i=0;for(let r=0;r<d;r++){n[c]=r;const o=Number(t.get(...n));i+=o*o}i=Math.sqrt(i)}else{i=0;for(let r=0;r<d;r++)n[c]=r,i+=Math.pow(Math.abs(Number(t.get(...n))),e);i=Math.pow(i,1/e)}f.set(a,i)}return f}function H(t,e="fro",g=!1){if(t.ndim<2)throw new Error(`matrix_norm: input must be at least 2D, got ${t.ndim}D`);if(t.ndim>2){const f=Array.from(t.shape).slice(0,-2),d=t.shape[t.ndim-2],b=t.shape[t.ndim-1],l=f.reduce((n,i)=>n*i,1),s=new Float64Array(l),a=O(t);for(let n=0;n<l;n++){const i=n*d*b,r=z.fromData(a.slice(i,i+d*b),[d,b],"float64");s[n]=H(r,e,!1)}if(g){const n=[...f,1,1],i=z.fromData(s,f,"float64");return R.reshape(i,n)}return z.fromData(s,f,"float64")}const[p,c]=t.shape;let m;if(e==="fro"){m=0;for(let f=0;f<p;f++)for(let d=0;d<c;d++){const b=Number(t.get(f,d));m+=b*b}m=Math.sqrt(m)}else if(e==="nuc"){const{s:f}=Q(t);m=0;for(let d=0;d<f.size;d++)m+=Number(f.get(d))}else if(e===1){m=0;for(let f=0;f<c;f++){let d=0;for(let b=0;b<p;b++)d+=Math.abs(Number(t.get(b,f)));m=Math.max(m,d)}}else if(e===-1){m=1/0;for(let f=0;f<c;f++){let d=0;for(let b=0;b<p;b++)d+=Math.abs(Number(t.get(b,f)));m=Math.min(m,d)}}else if(e===1/0){m=0;for(let f=0;f<p;f++){let d=0;for(let b=0;b<c;b++)d+=Math.abs(Number(t.get(f,b)));m=Math.max(m,d)}}else if(e===-1/0){m=1/0;for(let f=0;f<p;f++){let d=0;for(let b=0;b<c;b++)d+=Math.abs(Number(t.get(f,b)));m=Math.min(m,d)}}else if(e===2){const{s:f}=Q(t);m=Number(f.get(0))}else if(e===-2){const{s:f}=Q(t);m=Number(f.get(f.size-1))}else throw new Error(`matrix_norm: invalid ord value: ${e}`);if(g){const f=z.zeros([1,1],"float64");return f.set([0,0],m),f}return m}function Ie(t,e=null,g=null,p=!1){if(e===null){if(g===null)return Z(t,2,null,p);if(typeof g=="number")return Z(t,2,g,p);e="fro"}if(Array.isArray(g)){if(g.length!==2)throw new Error("norm: axis must be a 2-tuple for matrix norms");const c=g[0]<0?t.ndim+g[0]:g[0],m=g[1]<0?t.ndim+g[1]:g[1],f=e??"fro";if(t.ndim===2)return H(t,f,p);const d=t.ndim,b=Array.from({length:d},(u,w)=>w).filter(u=>u!==c&&u!==m),l=b.map(u=>t.shape[u]),s=l.reduce((u,w)=>u*w,1)||1,a=t.shape[c],n=t.shape[m],i=[...b,c,m],r=G(t,i),o=new Float64Array(s);for(let u=0;u<s;u++){const w=new Array(l.length);let y=u;for(let x=l.length-1;x>=0;x--)w[x]=y%l[x],y=Math.floor(y/l[x]);const h=z.zeros([a,n],"float64");for(let x=0;x<a;x++)for(let N=0;N<n;N++)h.set([x,N],Number(r.get(...w,x,N)));const A=H(h,f,!1);o[u]=typeof A=="number"?A:Number(A)}if(p){const u=Array.from(t.shape);return u[c]=1,u[m]=1,z.fromData(o,u,"float64")}return l.length===0?o[0]:z.fromData(o,l,"float64")}if(t.ndim===2&&g===null&&(e==="fro"||e==="nuc"))return H(t,e,p);if(typeof e!="number"&&e!==null)throw new Error(`norm: ord '${e}' not valid for vector norm`);return Z(t,e??2,g,p)}function ht(t,e="reduced"){if(t.ndim>2){const i=t.shape.slice(0,-2),[r,o]=[t.shape[t.ndim-2],t.shape[t.ndim-1]],u=Math.min(r,o),w=i.reduce((x,N)=>x*N,1),y=e==="complete"?r:u,h=z.zeros([...i,r,y],"float64"),A=z.zeros([...i,y,o],"float64");for(let x=0;x<w;x++){const N=Y(x,i),S=z.zeros([r,o],"float64");for(let D=0;D<r;D++)for(let v=0;v<o;v++)S.set([D,v],Number(t.get(...N,D,v)));const I=ht(S,e);for(let D=0;D<r;D++)for(let v=0;v<y;v++)h.set([...N,D,v],Number(I.q.get(D,v)));for(let D=0;D<y;D++)for(let v=0;v<o;v++)A.set([...N,D,v],Number(I.r.get(D,v)))}return{q:h,r:A}}if(t.ndim!==2)throw new Error(`qr: input must be 2D, got ${t.ndim}D`);if(e==="reduced"){const i=Et(t);if(i)return i}const[g,p]=t.shape,c=Math.min(g,p),m=z.zeros([g,p],"float64");for(let i=0;i<g;i++)for(let r=0;r<p;r++)m.set([i,r],Number(t.get(i,r)));const f=[],d=[];for(let i=0;i<c;i++){const r=g-i,o=[];for(let x=i;x<g;x++)o.push(Number(m.get(x,i)));let u=0;for(let x=0;x<r;x++)u+=o[x]*o[x];if(u=Math.sqrt(u),u<1e-15){f.push(o),d.push(0);continue}const w=o[0]>=0?1:-1,y=o[0]+w*u,h=[1];for(let x=1;x<r;x++)h.push(o[x]/y);const A=w*y/u;d.push(A),f.push(h);for(let x=i;x<p;x++){let N=0;for(let S=0;S<r;S++)N+=h[S]*Number(m.get(i+S,x));for(let S=0;S<r;S++)m.set([i+S,x],Number(m.get(i+S,x))-A*h[S]*N)}}if(e==="raw"){const i=z.zeros([g,p],"float64");for(let o=0;o<g;o++)for(let u=0;u<p;u++)i.set([o,u],Number(m.get(o,u)));const r=z.zeros([c],"float64");for(let o=0;o<c;o++)r.set([o],d[o]);return{h:i,tau:r}}if(e==="r"){const i=z.zeros([c,p],"float64");for(let r=0;r<c;r++)for(let o=r;o<p;o++)i.set([r,o],Number(m.get(r,o)));return i}const b=e==="complete"?g:c,l=z.zeros([g,b],"float64");for(let i=0;i<Math.min(g,b);i++)l.set([i,i],1);for(let i=c-1;i>=0;i--){const r=f[i],o=d[i],u=g-i;for(let w=i;w<b;w++){let y=0;for(let h=0;h<u;h++)y+=r[h]*Number(l.get(i+h,w));for(let h=0;h<u;h++)l.set([i+h,w],Number(l.get(i+h,w))-o*r[h]*y)}}const s=z.zeros([g,b],"float64");for(let i=0;i<g;i++)for(let r=0;r<b;r++)s.set([i,r],Number(l.get(i,r)));const a=e==="complete"?g:c,n=z.zeros([a,p],"float64");for(let i=0;i<a;i++)for(let r=0;r<p;r++)r>=i&&n.set([i,r],Number(m.get(i,r)));return{q:s,r:n}}function Wt(t,e=!1){if(t.ndim<2)throw new Error(`cholesky: input must be at least 2D, got ${t.ndim}D`);if(t.ndim>2){const d=Array.from(t.shape).slice(0,-2),b=t.shape[t.ndim-1],l=t.shape[t.ndim-2];if(l!==b)throw new Error(`cholesky: last 2 dimensions must be square, got ${l}x${b}`);const s=d.reduce((i,r)=>i*r,1),a=new Float64Array(s*b*b),n=O(t);for(let i=0;i<s;i++){const r=i*b*b,o=z.fromData(n.slice(r,r+b*b),[b,b],"float64"),u=Wt(o,e);a.set(O(u),r)}return z.fromData(a,[...d,b,b],"float64")}const[g,p]=t.shape;if(g!==p)throw new Error(`cholesky: matrix must be square, got ${g}x${p}`);const c=jt(t);if(c){if(e){const d=g,b=z.zeros([d,d],"float64");for(let l=0;l<d;l++)for(let s=l;s<d;s++)b.set([l,s],Number(c.get(s,l)));return b}return c}const m=g,f=z.zeros([m,m],"float64");for(let d=0;d<m;d++)for(let b=0;b<=d;b++){let l=0;if(d===b){for(let a=0;a<b;a++)l+=Number(f.get(b,a))**2;const s=Number(t.get(b,b))-l;if(s<0)throw new Error("cholesky: matrix is not positive definite");f.set([b,b],Math.sqrt(s))}else{for(let a=0;a<b;a++)l+=Number(f.get(d,a))*Number(f.get(b,a));const s=Number(f.get(b,b));if(Math.abs(s)<1e-15)throw new Error("cholesky: matrix is not positive definite");f.set([d,b],(Number(t.get(d,b))-l)/s)}}if(e){const d=z.zeros([m,m],"float64");for(let b=0;b<m;b++)for(let l=b;l<m;l++)d.set([b,l],Number(f.get(l,b)));return d}return f}function Q(t){if(t.ndim!==2)throw new Error(`svd: input must be 2D, got ${t.ndim}D`);const e=Vt(t);if(e)return e;const[g,p]=t.shape,c=Math.min(g,p),m=z.zeros([p,p],"float64");for(let n=0;n<p;n++)for(let i=0;i<p;i++){let r=0;for(let o=0;o<g;o++)r+=Number(t.get(o,n))*Number(t.get(o,i));m.set([n,i],r)}const{values:f,vectors:d}=st(m),b=Array.from({length:p},(n,i)=>i);b.sort((n,i)=>f[i]-f[n]);const l=z.zeros([c],"float64");for(let n=0;n<c;n++){const i=f[b[n]];l.set([n],Math.sqrt(Math.max(0,i)))}const s=z.zeros([p,p],"float64");for(let n=0;n<p;n++)for(let i=0;i<p;i++)s.set([n,i],d[i][b[n]]);const a=z.zeros([g,g],"float64");for(let n=0;n<g;n++)for(let i=0;i<c;i++){const r=Number(l.get(i));if(r>1e-10){let o=0;for(let u=0;u<p;u++)o+=Number(t.get(n,u))*Number(s.get(i,u));a.set([n,i],o/r)}}if(g>c)for(let n=c;n<g;n++){const i=new Array(g).fill(0);i[n]=1;for(let o=0;o<n;o++){let u=0;for(let w=0;w<g;w++)u+=i[w]*Number(a.get(w,o));for(let w=0;w<g;w++)i[w]=i[w]-u*Number(a.get(w,o))}let r=0;for(let o=0;o<g;o++)r+=i[o]*i[o];if(r=Math.sqrt(r),r>1e-10)for(let o=0;o<g;o++)a.set([o,n],i[o]/r)}return{u:a,s:l,vt:s}}function st(t){const e=t.shape[0],g=100*e*e,p=1e-10,c=[];for(let d=0;d<e;d++){c.push([]);for(let b=0;b<e;b++)c[d].push(Number(t.get(d,b)))}const m=[];for(let d=0;d<e;d++){m.push([]);for(let b=0;b<e;b++)m[d].push(d===b?1:0)}for(let d=0;d<g;d++){let b=0,l=0,s=1;for(let h=0;h<e;h++)for(let A=h+1;A<e;A++)Math.abs(c[h][A])>b&&(b=Math.abs(c[h][A]),l=h,s=A);if(b<p)break;const a=c[l][l],n=c[s][s],i=c[l][s];let r;Math.abs(a-n)<1e-15?r=Math.PI/4:r=.5*Math.atan2(2*i,n-a);const o=Math.cos(r),u=Math.sin(r),w=o*o*a+u*u*n-2*u*o*i,y=u*u*a+o*o*n+2*u*o*i;c[l][l]=w,c[s][s]=y,c[l][s]=0,c[s][l]=0;for(let h=0;h<e;h++)if(h!==l&&h!==s){const A=c[h][l],x=c[h][s];c[h][l]=o*A-u*x,c[l][h]=c[h][l],c[h][s]=u*A+o*x,c[s][h]=c[h][s]}for(let h=0;h<e;h++){const A=m[h][l],x=m[h][s];m[h][l]=o*A-u*x,m[h][s]=u*A+o*x}}const f=[];for(let d=0;d<e;d++)f.push(c[d][d]);return{values:f,vectors:m}}function gt(t,e=!0,g=!0){if(t.ndim>2){const c=t.shape.slice(0,-2),[m,f]=[t.shape[t.ndim-2],t.shape[t.ndim-1]],d=Math.min(m,f),b=c.reduce((r,o)=>r*o,1);if(!g){const r=z.zeros([...c,d],"float64");for(let o=0;o<b;o++){const u=Y(o,c),w=z.zeros([m,f],"float64");for(let h=0;h<m;h++)for(let A=0;A<f;A++)w.set([h,A],Number(t.get(...u,h,A)));const{s:y}=Q(w);for(let h=0;h<d;h++)r.set([...u,h],Number(y.get(h)))}return r}const l=e?m:d,s=e?f:d,a=z.zeros([...c,m,l],"float64"),n=z.zeros([...c,d],"float64"),i=z.zeros([...c,s,f],"float64");for(let r=0;r<b;r++){const o=Y(r,c),u=z.zeros([m,f],"float64");for(let y=0;y<m;y++)for(let h=0;h<f;h++)u.set([y,h],Number(t.get(...o,y,h)));const w=gt(u,e,!0);for(let y=0;y<m;y++)for(let h=0;h<l;h++)a.set([...o,y,h],Number(w.u.get(y,h)));for(let y=0;y<d;y++)n.set([...o,y],Number(w.s.get(y)));for(let y=0;y<s;y++)for(let h=0;h<f;h++)i.set([...o,y,h],Number(w.vt.get(y,h)))}return{u:a,s:n,vt:i}}const p=Q(t);if(!g)return p.s;if(!e){const[c,m]=t.shape,f=Math.min(c,m),d=z.zeros([c,f],"float64");for(let l=0;l<c;l++)for(let s=0;s<f;s++)d.set([l,s],Number(p.u.get(l,s)));const b=z.zeros([f,m],"float64");for(let l=0;l<f;l++)for(let s=0;s<m;s++)b.set([l,s],Number(p.vt.get(l,s)));return{u:d,s:p.s,vt:b}}return p}function Qt(t){if(t.ndim<2)throw new Error(`det: input must be at least 2D, got ${t.ndim}D`);if(t.ndim>2){const l=Array.from(t.shape).slice(0,-2),s=t.shape[t.ndim-1],a=t.shape[t.ndim-2];if(a!==s)throw new Error(`det: last 2 dimensions must be square, got ${a}x${s}`);const n=l.reduce((o,u)=>o*u,1),i=new Float64Array(n),r=O(t);for(let o=0;o<n;o++){const u=o*s*s,w=z.fromData(r.slice(u,u+s*s),[s,s],"float64");i[o]=Qt(w)}return z.fromData(i,l,"float64")}const[e,g]=t.shape;if(e!==g)throw new Error(`det: matrix must be square, got ${e}x${g}`);const p=e;if(p===0)return 1;const c=t.data;if(p===1)return Number(c[0]);if(p===2)return Number(c[0])*Number(c[3])-Number(c[1])*Number(c[2]);const{lu:m,sign:f}=tt(t),d=m.data;let b=f;for(let l=0;l<p;l++)b*=d[l*p+l];return b}function tt(t){const[e,g]=t.shape,p=e,c=g,m=z.zeros([p,c],"float64"),f=m.data,d=t.data;for(let s=0;s<p*c;s++)f[s]=Number(d[s]);const b=Array.from({length:p},(s,a)=>a);let l=1;for(let s=0;s<Math.min(p,c);s++){let a=Math.abs(f[s*c+s]),n=s;for(let r=s+1;r<p;r++){const o=Math.abs(f[r*c+s]);o>a&&(a=o,n=r)}if(n!==s){for(let o=0;o<c;o++){const u=f[s*c+o];f[s*c+o]=f[n*c+o],f[n*c+o]=u}const r=b[s];b[s]=b[n],b[n]=r,l=-l}const i=f[s*c+s];if(Math.abs(i)>1e-15)for(let r=s+1;r<p;r++){const o=f[r*c+s]/i;f[r*c+s]=o;for(let u=s+1;u<c;u++)f[r*c+u]=f[r*c+u]-o*f[s*c+u]}}return{lu:m,piv:b,sign:l}}function et(t){if(t.ndim<2)throw new Error(`inv: input must be at least 2D, got ${t.ndim}D`);if(t.ndim>2){const l=Array.from(t.shape).slice(0,-2),s=t.shape[t.ndim-1],a=t.shape[t.ndim-2];if(a!==s)throw new Error(`inv: last 2 dimensions must be square, got ${a}x${s}`);const n=l.reduce((o,u)=>o*u,1),i=O(t),r=new Float64Array(n*s*s);for(let o=0;o<n;o++){const u=o*s*s,w=z.fromData(i.slice(u,u+s*s),[s,s],"float64"),h=et(w).data;for(let A=0;A<s*s;A++)r[u+A]=h[A]}return z.fromData(r,Array.from(t.shape),"float64")}const[e,g]=t.shape;if(e!==g)throw new Error(`inv: matrix must be square, got ${e}x${g}`);const p=e,{lu:c,piv:m}=tt(t),f=c.data,d=z.zeros([p,p],"float64"),b=d.data;for(let l=0;l<p;l++){const s=new Float64Array(p);for(let a=0;a<p;a++){let n=m[a]===l?1:0;for(let i=0;i<a;i++)n-=f[a*p+i]*s[i];s[a]=n}for(let a=p-1;a>=0;a--){let n=s[a];for(let r=a+1;r<p;r++)n-=f[a*p+r]*b[r*p+l];const i=f[a*p+a];if(Math.abs(i)<1e-15)throw new Error("inv: singular matrix");b[a*p+l]=n/i}}return d}function dt(t,e){const[g]=t.shape,p=g,{lu:c,piv:m}=tt(t),f=c.data,d=e.data,b=new Float64Array(p);for(let n=0;n<p;n++)b[n]=Number(d[m[n]]);const l=new Float64Array(p);for(let n=0;n<p;n++){let i=b[n];for(let r=0;r<n;r++)i-=f[n*p+r]*l[r];l[n]=i}const s=z.zeros([p],"float64"),a=s.data;for(let n=p-1;n>=0;n--){let i=l[n];for(let o=n+1;o<p;o++)i-=f[n*p+o]*a[o];const r=f[n*p+n];if(Math.abs(r)<1e-15)throw new Error("solve: singular matrix");a[n]=i/r}return s}function Gt(t,e){if(t.ndim!==2)throw new Error(`solve: coefficient matrix must be 2D, got ${t.ndim}D`);const[g,p]=t.shape;if(g!==p)throw new Error(`solve: coefficient matrix must be square, got ${g}x${p}`);const c=g;if(e.ndim===1){if(e.shape[0]!==c)throw new Error(`solve: incompatible shapes (${g},${p}) and (${e.shape[0]},)`);return dt(t,e)}if(e.ndim===2){if(e.shape[0]!==c)throw new Error(`solve: incompatible shapes (${g},${p}) and (${e.shape[0]},${e.shape[1]})`);const m=e.shape[1],f=z.zeros([c,m],"float64");for(let d=0;d<m;d++){const b=z.zeros([c],"float64");for(let s=0;s<c;s++)b.set([s],Number(e.get(s,d)));const l=dt(t,b);for(let s=0;s<c;s++)f.set([s,d],Number(l.get(s)))}return f}throw new Error(`solve: b must be 1D or 2D, got ${e.ndim}D`)}function De(t,e,g=null){if(t.ndim!==2)throw new Error(`lstsq: coefficient matrix must be 2D, got ${t.ndim}D`);const[p,c]=t.shape,{u:m,s:f,vt:d}=Q(t),b=Math.min(p,c),l=g??Math.max(p,c)*Number.EPSILON,a=Number(f.get(0))*l;let n=0;for(let y=0;y<b;y++)Number(f.get(y))>a&&n++;const i=e.ndim===1?R.reshape(e,[e.size,1]):e,r=i.shape[1];if(i.shape[0]!==p)throw new Error(`lstsq: incompatible shapes (${p},${c}) and (${e.shape.join(",")})`);const o=z.zeros([c,r],"float64");for(let y=0;y<r;y++){const h=new Array(p).fill(0);for(let A=0;A<p;A++)for(let x=0;x<p;x++)h[A]+=Number(m.get(x,A))*Number(i.get(x,y));for(let A=0;A<c;A++){let x=0;for(let N=0;N<b;N++){const S=Number(f.get(N));S>a&&(x+=Number(d.get(N,A))*h[N]/S)}o.set([A,y],x)}}let u;if(p>c){u=z.zeros([r],"float64");for(let y=0;y<r;y++){let h=0;for(let A=0;A<p;A++){let x=0;for(let S=0;S<c;S++)x+=Number(t.get(A,S))*Number(o.get(S,y));const N=x-Number(i.get(A,y));h+=N*N}u.set([y],h)}}else u=z.zeros([0],"float64");return{x:e.ndim===1?R.reshape(o,[c]):o,residuals:u,rank:n,s:f}}function ve(t,e=2){if(t.ndim!==2)throw new Error(`cond: input must be 2D, got ${t.ndim}D`);const[g,p]=t.shape;if(e===2||e===-2){const{s:d}=Q(t),b=Math.min(g,p),l=Number(d.get(0)),s=Number(d.get(b-1));return e===2?s>0?l/s:1/0:l>0?s/l:0}if(g!==p)throw new Error(`cond: matrix must be square for p=${e}`);const c=H(t,e),m=et(t),f=H(m,e);return c*f}function $e(t,e){if(t.ndim===0)return Number(t.get())!==0?1:0;if(t.ndim===1){for(let f=0;f<t.size;f++)if(Number(t.get(f))!==0)return 1;return 0}if(t.ndim!==2)throw new Error(`matrix_rank: input must be at most 2D, got ${t.ndim}D`);const{s:g}=Q(t),p=Number(g.get(0)),c=e??p*Math.max(t.shape[0],t.shape[1])*Number.EPSILON;let m=0;for(let f=0;f<g.size;f++)Number(g.get(f))>c&&m++;return m}function ze(t,e){if(t.ndim!==2)throw new Error(`matrix_power: input must be 2D, got ${t.ndim}D`);const[g,p]=t.shape;if(g!==p)throw new Error(`matrix_power: matrix must be square, got ${g}x${p}`);const c=g;if(!Number.isInteger(e))throw new Error("matrix_power: exponent must be an integer");if(e===0){const a=z.zeros([c,c],"float64");for(let n=0;n<c;n++)a.set([n,n],1);return a}let m=t,f=e;e<0&&(m=et(t),f=-e);const d=m.dtype==="float32"?"float32":"float64";let b=z.zeros([c,c],d);const l=b.data;for(let a=0;a<c;a++)l[a*c+a]=1;let s;if(m.isCContiguous&&(m.dtype==="float64"||m.dtype==="float32"))s=m.copy();else{s=z.zeros([c,c],d);const a=s.data,n=m.data,i=m.offset,[r=0,o=0]=m.strides;for(let u=0;u<c;u++)for(let w=0;w<c;w++)a[u*c+w]=Number(n[i+u*r+w*o])}for(;f>0;)f&1&&(b=X(b,s)),s=X(s,s),f>>=1;return b}function Ht(t,e=1e-15){if(t.ndim<2)throw new Error(`pinv: input must be at least 2D, got ${t.ndim}D`);if(t.ndim>2){const a=Array.from(t.shape).slice(0,-2),n=t.shape[t.ndim-2],i=t.shape[t.ndim-1],r=a.reduce((w,y)=>w*y,1),o=new Float64Array(r*i*n),u=O(t);for(let w=0;w<r;w++){const y=w*n*i,h=z.fromData(u.slice(y,y+n*i),[n,i],"float64"),A=Ht(h,e);o.set(O(A),w*i*n)}return z.fromData(o,[...a,i,n],"float64")}const[g,p]=t.shape,{u:c,s:m,vt:f}=Q(t),d=Math.min(g,p),l=Number(m.get(0))*e,s=z.zeros([p,g],"float64");for(let a=0;a<p;a++)for(let n=0;n<g;n++){let i=0;for(let r=0;r<d;r++){const o=Number(m.get(r));o>l&&(i+=Number(f.get(r,a))*Number(c.get(n,r))/o)}s.set([a,n],i)}return s}function bt(t){if(t.ndim<2)throw new Error(`eig: input must be at least 2D, got ${t.ndim}D`);if(t.ndim>2){const s=Array.from(t.shape).slice(0,-2),a=t.shape[t.ndim-1],n=t.shape[t.ndim-2];if(n!==a)throw new Error(`eig: last 2 dimensions must be square, got ${n}x${a}`);const i=s.reduce((w,y)=>w*y,1),r=new Float64Array(i*a),o=new Float64Array(i*a*a),u=O(t);for(let w=0;w<i;w++){const y=w*a*a,h=z.fromData(u.slice(y,y+a*a),[a,a],"float64"),{w:A,v:x}=bt(h);r.set(O(A),w*a),o.set(O(x),y)}return{w:z.fromData(r,[...s,a],"float64"),v:z.fromData(o,[...s,a,a],"float64")}}const[e,g]=t.shape;if(e!==g)throw new Error(`eig: matrix must be square, got ${e}x${g}`);const p=e;let c=!0;t:for(let s=0;s<p;s++)for(let a=s+1;a<p;a++)if(Math.abs(Number(t.get(s,a))-Number(t.get(a,s)))>1e-10){c=!1;break t}if(c){const{values:s,vectors:a}=st(t),n=z.zeros([p],"float64"),i=z.zeros([p,p],"float64");for(let r=0;r<p;r++){n.set([r],s[r]);for(let o=0;o<p;o++)i.set([o,r],a[o][r])}return{w:n,v:i}}const{values:m,vectors:f,hasComplexEigenvalues:d}=Kt(t);d&&console.warn("numpy-ts: eig() detected complex eigenvalues which cannot be represented. Results are real approximations and may be inaccurate. For symmetric matrices, use eigh() instead.");const b=z.zeros([p],"float64"),l=z.zeros([p,p],"float64");for(let s=0;s<p;s++){b.set([s],m[s]);for(let a=0;a<p;a++)l.set([a,s],f[a][s])}return{w:b,v:l}}function Kt(t){const e=t.shape[0],g=1e3,p=1e-10;let c=z.zeros([e,e],"float64");for(let l=0;l<e;l++)for(let s=0;s<e;s++)c.set([l,s],Number(t.get(l,s)));let m=z.zeros([e,e],"float64");for(let l=0;l<e;l++)m.set([l,l],1);for(let l=0;l<g;l++){let s=0;for(let r=0;r<e;r++)for(let o=0;o<e;o++)r!==o&&(s+=Number(c.get(r,o))**2);if(Math.sqrt(s)<p*e)break;const a=ht(c,"reduced"),n=a.q,i=a.r;c=X(i,n),m=X(m,n)}let f=!1;for(let l=0;l<e-1;l++){const s=Math.abs(Number(c.get(l+1,l))),a=Math.abs(Number(c.get(l,l))),n=Math.abs(Number(c.get(l+1,l+1))),i=Math.max(a,n,1e-10);if(s/i>1e-6){f=!0;break}}const d=[];for(let l=0;l<e;l++)d.push(Number(c.get(l,l)));const b=[];for(let l=0;l<e;l++){b.push([]);for(let s=0;s<e;s++)b[l].push(Number(m.get(l,s)))}return{values:d,vectors:b,hasComplexEigenvalues:f}}function yt(t,e="L"){if(t.ndim<2)throw new Error(`eigh: input must be at least 2D, got ${t.ndim}D`);if(t.ndim>2){const a=Array.from(t.shape).slice(0,-2),n=t.shape[t.ndim-1],i=t.shape[t.ndim-2];if(i!==n)throw new Error(`eigh: last 2 dimensions must be square, got ${i}x${n}`);const r=a.reduce((y,h)=>y*h,1),o=new Float64Array(r*n),u=new Float64Array(r*n*n),w=O(t);for(let y=0;y<r;y++){const h=y*n*n,A=z.fromData(w.slice(h,h+n*n),[n,n],"float64"),{w:x,v:N}=yt(A,e);o.set(O(x),y*n),u.set(O(N),h)}return{w:z.fromData(o,[...a,n],"float64"),v:z.fromData(u,[...a,n,n],"float64")}}const[g,p]=t.shape;if(g!==p)throw new Error(`eigh: matrix must be square, got ${g}x${p}`);const c=g,m=z.zeros([c,c],"float64");for(let a=0;a<c;a++)for(let n=0;n<c;n++)e==="L"?a>=n&&(m.set([a,n],Number(t.get(a,n))),m.set([n,a],Number(t.get(a,n)))):n>=a&&(m.set([a,n],Number(t.get(a,n))),m.set([n,a],Number(t.get(a,n))));const{values:f,vectors:d}=st(m),b=Array.from({length:c},(a,n)=>n);b.sort((a,n)=>f[a]-f[n]);const l=z.zeros([c],"float64"),s=z.zeros([c,c],"float64");for(let a=0;a<c;a++){l.set([a],f[b[a]]);for(let n=0;n<c;n++)s.set([n,a],d[n][b[a]])}return{w:l,v:s}}function Me(t){const{w:e}=bt(t);return e}function Ce(t,e="L"){const{w:g}=yt(t,e);return g}function Ee(t,e){const g=R.flatten(t),p=R.flatten(e),c=g.shape[0],m=p.shape[0];if(c!==m)throw new Error(`vdot: arrays must have same number of elements, got ${c} and ${m}`);const f=q(t.dtype)||q(e.dtype);if(f){const s=zt(g,p);if(s!==null)return s}else{const s=nt(g,p);if(s!==null)return s}if(f){let s=0,a=0;for(let n=0;n<c;n++){const i=g.get(n),r=p.get(n),o=i instanceof $?i.re:Number(i),u=i instanceof $?i.im:0,w=r instanceof $?r.re:Number(r),y=r instanceof $?r.im:0;s+=o*w+u*y,a+=-u*w+o*y}return Math.abs(a)<1e-15?s:new $(s,a)}const d=k(t.dtype,e.dtype),b=L(d);if(b){b[0]=0;for(let s=0;s<c;s++)b[0]+=Number(g.get(s))*Number(p.get(s));return b[0]}let l=0;for(let s=0;s<c;s++){const a=g.get(s),n=p.get(s);typeof a=="bigint"&&typeof n=="bigint"?l=(typeof l=="bigint"?l:BigInt(l))+a*n:l=(typeof l=="bigint"?Number(l):l)+Number(a)*Number(n)}return l}function je(t,e,g=-1){const p=t.ndim,c=e.ndim,m=g<0?p+g:g,f=g<0?c+g:g;if(m<0||m>=p)throw new Error(`vecdot: axis ${g} out of bounds for array with ${p} dimensions`);if(f<0||f>=c)throw new Error(`vecdot: axis ${g} out of bounds for array with ${c} dimensions`);const d=t.shape[m],b=e.shape[f];if(d!==b)throw new Error(`vecdot: axis dimensions must match, got ${d} and ${b}`);if(p===1&&c===1){if(!(q(t.dtype)||q(e.dtype)))return K(t,e);const h=t.shape[0];let A=0,x=0;for(let N=0;N<h;N++){const S=t.get(N),I=e.get(N),D=S instanceof $?new $(S.re,-S.im):S,v=J(D,I);v instanceof $?(A+=v.re,x+=v.im):A+=Number(v)}return new $(A,x)}if(p===2&&c===2&&g===-1){const y=$t(t,e);if(y)return y}const l=[...t.shape.slice(0,m),...t.shape.slice(m+1)],s=[...e.shape.slice(0,f),...e.shape.slice(f+1)],a=d,n=q(t.dtype)||q(e.dtype),i=k(t.dtype,e.dtype),r=l.length>s.length?l:s,o=L(i);if(r.length===0){if(o){o[0]=0;for(let h=0;h<a;h++)o[0]+=Number(t.get(h))*Number(e.get(h));return o[0]}let y=n?new $(0,0):_(i)?0n:0;for(let h=0;h<a;h++){const A=t.get(h),x=e.get(h),N=A instanceof $?new $(A.re,-A.im):A,S=J(N,x);if(y instanceof $||S instanceof $){const I=y instanceof $?y:new $(Number(y),0),D=S instanceof $?S:new $(Number(S),0);y=I.add(D)}else typeof y=="bigint"||typeof S=="bigint"?y=BigInt(y)+BigInt(S):y=y+S}return y}const u=z.zeros(r,i),w=r.reduce((y,h)=>y*h,1);for(let y=0;y<w;y++){const h=[];let A=y;for(let S=r.length-1;S>=0;S--)h.unshift(A%r[S]),A=Math.floor(A/r[S]);const x=[...h.slice(0,m),0,...h.slice(m)],N=[...h.slice(0,f),0,...h.slice(f)];if(o){o[0]=0;for(let S=0;S<a;S++)x[m]=S,N[f]=S,o[0]+=Number(t.get(...x))*Number(e.get(...N));u.set(h,o[0])}else{let S=n?new $(0,0):_(i)?0n:0;for(let I=0;I<a;I++){x[m]=I,N[f]=I;const D=t.get(...x),v=e.get(...N),C=D instanceof $?new $(D.re,-D.im):D,M=J(C,v);if(S instanceof $||M instanceof $){const E=S instanceof $?S:new $(Number(S),0),j=M instanceof $?M:new $(Number(M),0);S=E.add(j)}else typeof S=="bigint"||typeof M=="bigint"?S=BigInt(S)+BigInt(M):S=S+M}u.set(h,S)}}return u}function Ve(t){if(t.ndim<2)throw new Error(`matrix_transpose: input must have at least 2 dimensions, got ${t.ndim}D`);const e=Array.from({length:t.ndim},(p,c)=>c),g=e.length-1;return e[g]=g-1,e[g-1]=g,G(t,e)}function Fe(t,e){return G(t,e)}function Be(t,e){if(t.ndim<2)throw new Error(`matvec: x1 must have at least 2 dimensions, got ${t.ndim}D`);if(e.ndim<1)throw new Error(`matvec: x2 must have at least 1 dimension, got ${e.ndim}D`);const g=t.shape[t.ndim-2],p=t.shape[t.ndim-1],c=e.shape[e.ndim-1];if(p!==c)throw new Error(`matvec: last axis of x1 (${p}) must match last axis of x2 (${c})`);if(t.ndim===2&&e.ndim===1)return K(t,e);const m=t.shape.slice(0,-2),f=e.shape.slice(0,-1),d=Math.max(m.length,f.length),b=[...Array(d-m.length).fill(1),...m],l=[...Array(d-f.length).fill(1),...f],s=[];for(let u=0;u<d;u++){const w=b[u],y=l[u];if(w!==1&&y!==1&&w!==y)throw new Error(`matvec: batch dimensions not broadcastable: ${m} vs ${f}`);s.push(Math.max(w,y))}const a=[...s,g],n=k(t.dtype,e.dtype),i=z.zeros(a,n),r=q(n),o=s.reduce((u,w)=>u*w,1);for(let u=0;u<o;u++){const w=[];let y=u;for(let N=s.length-1;N>=0;N--)w.unshift(y%s[N]),y=Math.floor(y/s[N]);const h=w.slice(-(m.length||1)).map((N,S)=>(m[S]??1)===1?0:N),A=w.slice(-(f.length||1)).map((N,S)=>(f[S]??1)===1?0:N),x=L(n);for(let N=0;N<g;N++)if(x){x[0]=0;for(let S=0;S<p;S++){const I=[...h,N,S],D=[...A,S];x[0]+=Number(t.get(...I))*Number(e.get(...D))}i.set([...w,N],x[0])}else{let S=r?new $(0,0):_(n)?0n:0;for(let I=0;I<p;I++){const D=[...h,N,I],v=[...A,I],C=t.get(...D),M=e.get(...v),E=J(C,M);if(S instanceof $||E instanceof $){const j=S instanceof $?S:new $(Number(S),0),V=E instanceof $?E:new $(Number(E),0);S=j.add(V)}else typeof S=="bigint"||typeof E=="bigint"?S=BigInt(S)+BigInt(E):S=S+E}i.set([...w,N],S)}}return i}function Re(t,e){if(t.ndim<1)throw new Error(`vecmat: x1 must have at least 1 dimension, got ${t.ndim}D`);if(e.ndim<2)throw new Error(`vecmat: x2 must have at least 2 dimensions, got ${e.ndim}D`);const g=t.shape[t.ndim-1],p=e.shape[e.ndim-2],c=e.shape[e.ndim-1];if(g!==p)throw new Error(`vecmat: last axis of x1 (${g}) must match second-to-last axis of x2 (${p})`);if(t.ndim===1&&e.ndim===2)return K(t,e);const m=t.shape.slice(0,-1),f=e.shape.slice(0,-2),d=Math.max(m.length,f.length),b=[...Array(d-m.length).fill(1),...m],l=[...Array(d-f.length).fill(1),...f],s=[];for(let u=0;u<d;u++){const w=b[u],y=l[u];if(w!==1&&y!==1&&w!==y)throw new Error(`vecmat: batch dimensions not broadcastable: ${m} vs ${f}`);s.push(Math.max(w,y))}const a=[...s,c],n=k(t.dtype,e.dtype),i=z.zeros(a,n),r=q(n),o=s.reduce((u,w)=>u*w,1);for(let u=0;u<o;u++){const w=[];let y=u;for(let N=s.length-1;N>=0;N--)w.unshift(y%s[N]),y=Math.floor(y/s[N]);const h=w.slice(-(m.length||1)).map((N,S)=>(m[S]??1)===1?0:N),A=w.slice(-(f.length||1)).map((N,S)=>(f[S]??1)===1?0:N),x=L(n);for(let N=0;N<c;N++)if(x){x[0]=0;for(let S=0;S<g;S++){const I=[...h,S],D=[...A,S,N];x[0]+=Number(t.get(...I))*Number(e.get(...D))}i.set([...w,N],x[0])}else{let S=r?new $(0,0):_(n)?0n:0;for(let I=0;I<g;I++){const D=[...h,I],v=[...A,I,N],C=t.get(...D),M=e.get(...v),E=J(C,M);if(S instanceof $||E instanceof $){const j=S instanceof $?S:new $(Number(S),0),V=E instanceof $?E:new $(Number(E),0);S=j.add(V)}else typeof S=="bigint"||typeof E=="bigint"?S=BigInt(S)+BigInt(E):S=S+E}i.set([...w,N],S)}}return i}function Yt(t){if(t.ndim<2)throw new Error(`slogdet: input must be at least 2D, got ${t.ndim}D`);if(t.ndim>2){const l=Array.from(t.shape).slice(0,-2),s=t.shape[t.ndim-1],a=t.shape[t.ndim-2];if(a!==s)throw new Error(`slogdet: last 2 dimensions must be square, got ${a}x${s}`);const n=l.reduce((u,w)=>u*w,1),i=new Float64Array(n),r=new Float64Array(n),o=O(t);for(let u=0;u<n;u++){const w=u*s*s,y=z.fromData(o.slice(w,w+s*s),[s,s],"float64"),{sign:h,logabsdet:A}=Yt(y);i[u]=h,r[u]=A}return{sign:z.fromData(i,l,"float64"),logabsdet:z.fromData(r,l,"float64")}}const[e,g]=t.shape;if(e!==g)throw new Error(`slogdet: matrix must be square, got ${e}x${g}`);const p=e;if(p===0)return{sign:1,logabsdet:0};const{lu:c,sign:m}=tt(t),f=c.data;let d=0,b=m;for(let l=0;l<p;l++){const s=f[l*p+l];if(s===0)return{sign:0,logabsdet:-1/0};s<0&&(b=-b),d+=Math.log(Math.abs(s))}return{sign:b,logabsdet:d}}function ke(t){return gt(t,!0,!1)}function qe(t){if(t.length<2)throw new Error("multi_dot: need at least 2 arrays");if(t.length===2)return X(t[0],t[1]);let e=t[0];for(let g=1;g<t.length;g++)e=X(e,t[g]);return e}function Te(t,e=2){if(e<=0)throw new Error(`tensorinv: ind must be positive, got ${e}`);const g=t.shape,p=t.ndim;if(p<e)throw new Error(`tensorinv: array has ${p} dimensions, ind=${e} is too large`);let c=1;for(let l=0;l<e;l++)c*=g[l];let m=1;for(let l=e;l<p;l++)m*=g[l];if(c!==m)throw new Error(`tensorinv: product of first ${e} dimensions (${c}) must equal product of remaining dimensions (${m})`);const f=R.reshape(t,[c,m]),d=et(f),b=[...g.slice(e),...g.slice(0,e)];return R.reshape(d,b)}function _e(t,e,g){const p=t.shape,c=e.shape,m=t.ndim,f=e.ndim;let d;g==null?d=Array.from({length:f},(h,A)=>m-f+A):d=g.map(h=>h<0?m+h:h);const b=[];for(let h=0;h<m;h++)d.includes(h)||b.push(h);const l=[...b,...d],s=G(t,l),n=d.map(h=>p[h]).reduce((h,A)=>h*A,1),r=b.map(h=>p[h]).reduce((h,A)=>h*A,1),o=c.reduce((h,A)=>h*A,1);if(n!==o)throw new Error(`tensorsolve: dimensions don't match - sum dimensions product (${n}) != b total elements (${o})`);if(r!==n)throw new Error(`tensorsolve: non-square problem - other dimensions product (${r}) != sum dimensions product (${n})`);const u=R.reshape(s,[r,n]),w=R.reshape(e,[n]),y=Gt(u,w);return R.reshape(y,[...c])}function Oe(t,...e){const g=t.indexOf("->");let p,c;g===-1?(p=t,c=pt(p)):(p=t.slice(0,g),c=t.slice(g+2));const m=p.split(",").map(n=>n.trim());if(m.length!==e.length)throw new Error(`einsum_path: expected ${m.length} operands, got ${e.length}`);const f=e.map(n=>Array.isArray(n)?n:Array.from(n.shape)),d=new Map;for(let n=0;n<e.length;n++){const i=m[n],r=f[n];if(i.length!==r.length)throw new Error(`einsum_path: operand ${n} has ${r.length} dimensions but subscript '${i}' has ${i.length} indices`);for(let o=0;o<i.length;o++){const u=i[o],w=r[o];if(d.has(u)&&d.get(u)!==w)throw new Error(`einsum_path: size mismatch for index '${u}': ${d.get(u)} vs ${w}`);d.set(u,w)}}if(e.length===1){const n=[[0]];return[n,it(t,f,n,d)]}if(e.length===2){const n=[[0,1]];return[n,it(t,f,n,d)]}const b=[],l=[...m],s=[...f],a=e.map((n,i)=>i);for(;l.length>1;){let n=0,i=1,r=1/0;for(let w=0;w<l.length;w++)for(let y=w+1;y<l.length;y++){const h=Zt(l[w],l[y],s[w],s[y],c,d);h<r&&(r=h,n=w,i=y)}b.push([a[n],a[i]]);const[o,u]=te(l[n],l[i],s[n],s[i],c,d);l.splice(i,1),l.splice(n,1),s.splice(i,1),s.splice(n,1),a.splice(i,1),a.splice(n,1),l.push(o),s.push(u),a.push(-1)}return[b,it(t,f,b,d)]}function Zt(t,e,g,p,c,m){const f=new Set(t),d=new Set(e);let b=1;for(const l of f)b*=m.get(l)||1;for(const l of d)f.has(l)||(b*=m.get(l)||1);return b}function te(t,e,g,p,c,m){const f=new Set([...t,...e]),d=new Map;for(const a of t)d.set(a,(d.get(a)||0)+1);for(const a of e)d.set(a,(d.get(a)||0)+1);const b=new Set(c),l=[];for(const a of f)(b.has(a)||d.get(a)===1)&&l.push(a);l.sort();const s=l.map(a=>m.get(a));return[l.join(""),s]}function it(t,e,g,p){const c=[];c.push(" Complete contraction: "+t),c.push(" Operand shapes: "+e.map(f=>`(${f.join(", ")})`).join(", ")),c.push(" Contraction path: "+JSON.stringify(g));let m=0;for(const f of e)m+=f.reduce((d,b)=>d*b,1);return c.push(" Estimated FLOPS: ~"+m.toExponential(2)),c.join(`
2
+ `)}export{Wt as cholesky,ve as cond,Ne as cross,Qt as det,Ae as diagonal,K as dot,bt as eig,yt as eigh,Me as eigvals,Ce as eigvalsh,Se as einsum,Oe as einsum_path,ye as inner,et as inv,xe as kron,De as lstsq,X as matmul,H as matrix_norm,ze as matrix_power,$e as matrix_rank,Ve as matrix_transpose,Be as matvec,qe as multi_dot,Ie as norm,Jt as outer,Fe as permute_dims,Ht as pinv,ht as qr,Yt as slogdet,Gt as solve,gt as svd,ke as svdvals,we as tensordot,Te as tensorinv,_e as tensorsolve,be as trace,G as transpose,Ee as vdot,je as vecdot,Re as vecmat,Z as vector_norm};