numpy-ts 1.0.0 → 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.
- package/README.md +4 -3
- package/dist/esm/common/internal/indexing.js +1 -1
- package/dist/esm/common/ndarray-core.js +1 -1
- package/dist/esm/common/ops/advanced.js +1 -1
- package/dist/esm/common/ops/arithmetic.js +1 -1
- package/dist/esm/common/ops/bitwise.js +1 -1
- package/dist/esm/common/ops/exponential.js +1 -1
- package/dist/esm/common/ops/fft.js +1 -1
- package/dist/esm/common/ops/gradient.js +1 -1
- package/dist/esm/common/ops/hyperbolic.js +1 -1
- package/dist/esm/common/ops/linalg.js +2 -2
- package/dist/esm/common/ops/logic.js +1 -1
- package/dist/esm/common/ops/reduction.js +1 -1
- package/dist/esm/common/ops/sets.js +1 -1
- package/dist/esm/common/ops/shape.js +1 -1
- package/dist/esm/common/ops/sorting.js +1 -1
- package/dist/esm/common/ops/statistics.js +1 -1
- package/dist/esm/common/ops/trig.js +1 -1
- package/dist/esm/common/storage.js +1 -1
- package/dist/esm/common/wasm/abs.js +1 -0
- package/dist/esm/common/wasm/add.js +1 -0
- package/dist/esm/common/wasm/arccos.js +1 -0
- package/dist/esm/common/wasm/arcsin.js +1 -0
- package/dist/esm/common/wasm/arctan.js +1 -0
- package/dist/esm/common/wasm/argpartition.js +1 -0
- package/dist/esm/common/wasm/argsort.js +1 -0
- package/dist/esm/common/wasm/bins/abs.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/add.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/arccos.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/arcsin.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/arctan.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/argpartition.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/argsort.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/bitwise_and.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/bitwise_count.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/bitwise_not.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/bitwise_or.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/bitwise_xor.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/cholesky.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/clip.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/convolve.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/copysign.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/correlate.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/cos.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/cosh.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/cross.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/diff.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/divide.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/dot.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/exp.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/exp2.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/fft.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/flip.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/frexp.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/gather.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/gcd.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/gradient.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/heaviside.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/hypot.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/indices.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/inner.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/kron.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/ldexp.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/left_shift.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/lexsort.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/logaddexp.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/logical_and.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/logical_not.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/logical_or.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/logical_xor.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/matmul.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/matvec.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/max.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/min.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/mul.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/neg.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/outer.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/pad.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/partition.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/power.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/qr.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/reciprocal.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/reduce_all.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/reduce_any.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/reduce_argmax.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/reduce_argmin.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/reduce_count_nz.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/reduce_max.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/reduce_mean.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/reduce_min.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/reduce_nanmax.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/reduce_nanmin.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/reduce_nansum.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/reduce_prod.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/reduce_quantile.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/reduce_std.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/reduce_sum.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/reduce_var.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/repeat.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/right_shift.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/roll.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/rot90.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/searchsorted.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/sign.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/sinh.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/sort.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/sqrt.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/square.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/sub.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/svd.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/tan.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/tanh.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/tile.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/vdot.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/vecdot.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/vecmat.wasm.js +1 -0
- package/dist/esm/common/wasm/bitwise_and.js +1 -0
- package/dist/esm/common/wasm/bitwise_count.js +1 -0
- package/dist/esm/common/wasm/bitwise_not.js +1 -0
- package/dist/esm/common/wasm/bitwise_or.js +1 -0
- package/dist/esm/common/wasm/bitwise_xor.js +1 -0
- package/dist/esm/common/wasm/cholesky.js +1 -0
- package/dist/esm/common/wasm/clip.js +1 -0
- package/dist/esm/common/wasm/config.js +1 -0
- package/dist/esm/common/wasm/convolve.js +1 -0
- package/dist/esm/common/wasm/copysign.js +1 -0
- package/dist/esm/common/wasm/correlate.js +1 -0
- package/dist/esm/common/wasm/cos.js +1 -0
- package/dist/esm/common/wasm/cosh.js +1 -0
- package/dist/esm/common/wasm/cross.js +1 -0
- package/dist/esm/common/wasm/diff.js +1 -0
- package/dist/esm/common/wasm/divide.js +1 -0
- package/dist/esm/common/wasm/dot.js +1 -0
- package/dist/esm/common/wasm/exp.js +1 -0
- package/dist/esm/common/wasm/exp2.js +1 -0
- package/dist/esm/common/wasm/fft.js +1 -0
- package/dist/esm/common/wasm/flip.js +1 -0
- package/dist/esm/common/wasm/frexp.js +1 -0
- package/dist/esm/common/wasm/gather.js +1 -0
- package/dist/esm/common/wasm/gcd.js +1 -0
- package/dist/esm/common/wasm/gradient.js +1 -0
- package/dist/esm/common/wasm/heaviside.js +1 -0
- package/dist/esm/common/wasm/hypot.js +1 -0
- package/dist/esm/common/wasm/indices.js +1 -0
- package/dist/esm/common/wasm/inner.js +1 -0
- package/dist/esm/common/wasm/kron.js +1 -0
- package/dist/esm/common/wasm/ldexp.js +1 -0
- package/dist/esm/common/wasm/left_shift.js +1 -0
- package/dist/esm/common/wasm/lexsort.js +1 -0
- package/dist/esm/common/wasm/logaddexp.js +1 -0
- package/dist/esm/common/wasm/logical_and.js +1 -0
- package/dist/esm/common/wasm/logical_not.js +1 -0
- package/dist/esm/common/wasm/logical_or.js +1 -0
- package/dist/esm/common/wasm/logical_xor.js +1 -0
- package/dist/esm/common/wasm/lstsq.js +1 -0
- package/dist/esm/common/wasm/matmul.js +1 -0
- package/dist/esm/common/wasm/matvec.js +1 -0
- package/dist/esm/common/wasm/max.js +1 -0
- package/dist/esm/common/wasm/min.js +1 -0
- package/dist/esm/common/wasm/mul.js +1 -0
- package/dist/esm/common/wasm/neg.js +1 -0
- package/dist/esm/common/wasm/outer.js +1 -0
- package/dist/esm/common/wasm/pad.js +1 -0
- package/dist/esm/common/wasm/partition.js +1 -0
- package/dist/esm/common/wasm/power.js +1 -0
- package/dist/esm/common/wasm/qr.js +1 -0
- package/dist/esm/common/wasm/reciprocal.js +1 -0
- package/dist/esm/common/wasm/reduce_all.js +1 -0
- package/dist/esm/common/wasm/reduce_any.js +1 -0
- package/dist/esm/common/wasm/reduce_argmax.js +1 -0
- package/dist/esm/common/wasm/reduce_argmin.js +1 -0
- package/dist/esm/common/wasm/reduce_count_nz.js +1 -0
- package/dist/esm/common/wasm/reduce_max.js +1 -0
- package/dist/esm/common/wasm/reduce_mean.js +1 -0
- package/dist/esm/common/wasm/reduce_min.js +1 -0
- package/dist/esm/common/wasm/reduce_nanmax.js +1 -0
- package/dist/esm/common/wasm/reduce_nanmin.js +1 -0
- package/dist/esm/common/wasm/reduce_nansum.js +1 -0
- package/dist/esm/common/wasm/reduce_prod.js +1 -0
- package/dist/esm/common/wasm/reduce_quantile.js +1 -0
- package/dist/esm/common/wasm/reduce_std.js +1 -0
- package/dist/esm/common/wasm/reduce_sum.js +1 -0
- package/dist/esm/common/wasm/reduce_var.js +1 -0
- package/dist/esm/common/wasm/repeat.js +1 -0
- package/dist/esm/common/wasm/right_shift.js +1 -0
- package/dist/esm/common/wasm/roll.js +1 -0
- package/dist/esm/common/wasm/rot90.js +1 -0
- package/dist/esm/common/wasm/runtime.js +1 -0
- package/dist/esm/common/wasm/searchsorted.js +1 -0
- package/dist/esm/common/wasm/sign.js +1 -0
- package/dist/esm/common/wasm/sinh.js +1 -0
- package/dist/esm/common/wasm/sort.js +1 -0
- package/dist/esm/common/wasm/sqrt.js +1 -0
- package/dist/esm/common/wasm/square.js +1 -0
- package/dist/esm/common/wasm/sub.js +1 -0
- package/dist/esm/common/wasm/svd.js +1 -0
- package/dist/esm/common/wasm/tan.js +1 -0
- package/dist/esm/common/wasm/tanh.js +1 -0
- package/dist/esm/common/wasm/tile.js +1 -0
- package/dist/esm/common/wasm/vdot.js +1 -0
- package/dist/esm/common/wasm/vecdot.js +1 -0
- package/dist/esm/common/wasm/vecmat.js +1 -0
- package/dist/esm/core/creation.js +1 -1
- package/dist/esm/core/linalg.js +1 -1
- package/dist/esm/core/polynomial.js +1 -1
- package/dist/esm/core/reduction.js +1 -1
- package/dist/esm/core/sets.js +1 -1
- package/dist/esm/core/shape-extra.js +1 -1
- package/dist/esm/core/sorting.js +1 -1
- package/dist/esm/full/index.js +1 -1
- package/dist/esm/full/ndarray.js +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/io/zip/types.js +1 -1
- package/dist/esm/io/zip/writer.js +1 -1
- package/dist/numpy-ts.browser.js +6 -6
- package/dist/numpy-ts.node-io.cjs +6 -6
- package/dist/numpy-ts.node-io.cjs.map +4 -4
- package/dist/numpy-ts.node-io.mjs +6 -6
- package/dist/numpy-ts.node-io.mjs.map +4 -4
- package/dist/numpy-ts.node.cjs +6 -6
- package/dist/numpy-ts.node.cjs.map +4 -4
- package/dist/types/common/internal/indexing.d.ts +18 -0
- package/dist/types/common/ndarray-core.d.ts +3 -13
- package/dist/types/common/ops/linalg.d.ts +13 -12
- package/dist/types/common/ops/sets.d.ts +1 -1
- package/dist/types/common/ops/shape.d.ts +11 -0
- package/dist/types/common/storage.d.ts +4 -0
- package/dist/types/common/wasm/abs.d.ts +14 -0
- package/dist/types/common/wasm/add.d.ts +19 -0
- package/dist/types/common/wasm/arccos.d.ts +15 -0
- package/dist/types/common/wasm/arcsin.d.ts +15 -0
- package/dist/types/common/wasm/arctan.d.ts +15 -0
- package/dist/types/common/wasm/argpartition.d.ts +18 -0
- package/dist/types/common/wasm/argsort.d.ts +18 -0
- package/dist/types/common/wasm/bins/abs.wasm.d.ts +7 -0
- package/dist/types/common/wasm/bins/add.wasm.d.ts +17 -0
- package/dist/types/common/wasm/bins/arccos.wasm.d.ts +5 -0
- package/dist/types/common/wasm/bins/arcsin.wasm.d.ts +5 -0
- package/dist/types/common/wasm/bins/arctan.wasm.d.ts +5 -0
- package/dist/types/common/wasm/bins/argpartition.wasm.d.ts +21 -0
- package/dist/types/common/wasm/bins/argsort.wasm.d.ts +25 -0
- package/dist/types/common/wasm/bins/bitwise_and.wasm.d.ts +5 -0
- package/dist/types/common/wasm/bins/bitwise_count.wasm.d.ts +9 -0
- package/dist/types/common/wasm/bins/bitwise_not.wasm.d.ts +5 -0
- package/dist/types/common/wasm/bins/bitwise_or.wasm.d.ts +5 -0
- package/dist/types/common/wasm/bins/bitwise_xor.wasm.d.ts +5 -0
- package/dist/types/common/wasm/bins/cholesky.wasm.d.ts +3 -0
- package/dist/types/common/wasm/bins/clip.wasm.d.ts +11 -0
- package/dist/types/common/wasm/bins/convolve.wasm.d.ts +3 -0
- package/dist/types/common/wasm/bins/copysign.wasm.d.ts +21 -0
- package/dist/types/common/wasm/bins/correlate.wasm.d.ts +3 -0
- package/dist/types/common/wasm/bins/cos.wasm.d.ts +3 -0
- package/dist/types/common/wasm/bins/cosh.wasm.d.ts +5 -0
- package/dist/types/common/wasm/bins/cross.wasm.d.ts +9 -0
- package/dist/types/common/wasm/bins/diff.wasm.d.ts +13 -0
- package/dist/types/common/wasm/bins/divide.wasm.d.ts +23 -0
- package/dist/types/common/wasm/bins/dot.wasm.d.ts +9 -0
- package/dist/types/common/wasm/bins/exp.wasm.d.ts +5 -0
- package/dist/types/common/wasm/bins/exp2.wasm.d.ts +5 -0
- package/dist/types/common/wasm/bins/fft.wasm.d.ts +17 -0
- package/dist/types/common/wasm/bins/flip.wasm.d.ts +7 -0
- package/dist/types/common/wasm/bins/frexp.wasm.d.ts +2 -0
- package/dist/types/common/wasm/bins/gather.wasm.d.ts +32 -0
- package/dist/types/common/wasm/bins/gcd.wasm.d.ts +3 -0
- package/dist/types/common/wasm/bins/gradient.wasm.d.ts +11 -0
- package/dist/types/common/wasm/bins/heaviside.wasm.d.ts +5 -0
- package/dist/types/common/wasm/bins/hypot.wasm.d.ts +13 -0
- package/dist/types/common/wasm/bins/indices.wasm.d.ts +3 -0
- package/dist/types/common/wasm/bins/inner.wasm.d.ts +9 -0
- package/dist/types/common/wasm/bins/kron.wasm.d.ts +9 -0
- package/dist/types/common/wasm/bins/ldexp.wasm.d.ts +3 -0
- package/dist/types/common/wasm/bins/left_shift.wasm.d.ts +9 -0
- package/dist/types/common/wasm/bins/lexsort.wasm.d.ts +11 -0
- package/dist/types/common/wasm/bins/logaddexp.wasm.d.ts +21 -0
- package/dist/types/common/wasm/bins/logical_and.wasm.d.ts +13 -0
- package/dist/types/common/wasm/bins/logical_not.wasm.d.ts +7 -0
- package/dist/types/common/wasm/bins/logical_or.wasm.d.ts +13 -0
- package/dist/types/common/wasm/bins/logical_xor.wasm.d.ts +13 -0
- package/dist/types/common/wasm/bins/matmul.wasm.d.ts +9 -0
- package/dist/types/common/wasm/bins/matvec.wasm.d.ts +9 -0
- package/dist/types/common/wasm/bins/max.wasm.d.ts +21 -0
- package/dist/types/common/wasm/bins/min.wasm.d.ts +21 -0
- package/dist/types/common/wasm/bins/mul.wasm.d.ts +17 -0
- package/dist/types/common/wasm/bins/neg.wasm.d.ts +9 -0
- package/dist/types/common/wasm/bins/outer.wasm.d.ts +9 -0
- package/dist/types/common/wasm/bins/pad.wasm.d.ts +7 -0
- package/dist/types/common/wasm/bins/partition.wasm.d.ts +21 -0
- package/dist/types/common/wasm/bins/power.wasm.d.ts +13 -0
- package/dist/types/common/wasm/bins/qr.wasm.d.ts +3 -0
- package/dist/types/common/wasm/bins/reciprocal.wasm.d.ts +7 -0
- package/dist/types/common/wasm/bins/reduce_all.wasm.d.ts +7 -0
- package/dist/types/common/wasm/bins/reduce_any.wasm.d.ts +7 -0
- package/dist/types/common/wasm/bins/reduce_argmax.wasm.d.ts +11 -0
- package/dist/types/common/wasm/bins/reduce_argmin.wasm.d.ts +11 -0
- package/dist/types/common/wasm/bins/reduce_count_nz.wasm.d.ts +7 -0
- package/dist/types/common/wasm/bins/reduce_max.wasm.d.ts +20 -0
- package/dist/types/common/wasm/bins/reduce_mean.wasm.d.ts +21 -0
- package/dist/types/common/wasm/bins/reduce_min.wasm.d.ts +20 -0
- package/dist/types/common/wasm/bins/reduce_nanmax.wasm.d.ts +3 -0
- package/dist/types/common/wasm/bins/reduce_nanmin.wasm.d.ts +3 -0
- package/dist/types/common/wasm/bins/reduce_nansum.wasm.d.ts +3 -0
- package/dist/types/common/wasm/bins/reduce_prod.wasm.d.ts +19 -0
- package/dist/types/common/wasm/bins/reduce_quantile.wasm.d.ts +2 -0
- package/dist/types/common/wasm/bins/reduce_std.wasm.d.ts +11 -0
- package/dist/types/common/wasm/bins/reduce_sum.wasm.d.ts +17 -0
- package/dist/types/common/wasm/bins/reduce_var.wasm.d.ts +11 -0
- package/dist/types/common/wasm/bins/repeat.wasm.d.ts +7 -0
- package/dist/types/common/wasm/bins/right_shift.wasm.d.ts +17 -0
- package/dist/types/common/wasm/bins/roll.wasm.d.ts +7 -0
- package/dist/types/common/wasm/bins/rot90.wasm.d.ts +7 -0
- package/dist/types/common/wasm/bins/searchsorted.wasm.d.ts +21 -0
- package/dist/types/common/wasm/bins/sign.wasm.d.ts +7 -0
- package/dist/types/common/wasm/bins/sinh.wasm.d.ts +5 -0
- package/dist/types/common/wasm/bins/sort.wasm.d.ts +25 -0
- package/dist/types/common/wasm/bins/sqrt.wasm.d.ts +7 -0
- package/dist/types/common/wasm/bins/square.wasm.d.ts +9 -0
- package/dist/types/common/wasm/bins/sub.wasm.d.ts +17 -0
- package/dist/types/common/wasm/bins/svd.wasm.d.ts +2 -0
- package/dist/types/common/wasm/bins/tan.wasm.d.ts +3 -0
- package/dist/types/common/wasm/bins/tanh.wasm.d.ts +5 -0
- package/dist/types/common/wasm/bins/tile.wasm.d.ts +7 -0
- package/dist/types/common/wasm/bins/vdot.wasm.d.ts +3 -0
- package/dist/types/common/wasm/bins/vecdot.wasm.d.ts +9 -0
- package/dist/types/common/wasm/bins/vecmat.wasm.d.ts +9 -0
- package/dist/types/common/wasm/bitwise_and.d.ts +9 -0
- package/dist/types/common/wasm/bitwise_count.d.ts +11 -0
- package/dist/types/common/wasm/bitwise_not.d.ts +9 -0
- package/dist/types/common/wasm/bitwise_or.d.ts +9 -0
- package/dist/types/common/wasm/bitwise_xor.d.ts +9 -0
- package/dist/types/common/wasm/cholesky.d.ts +20 -0
- package/dist/types/common/wasm/clip.d.ts +13 -0
- package/dist/types/common/wasm/config.d.ts +21 -0
- package/dist/types/common/wasm/convolve.d.ts +14 -0
- package/dist/types/common/wasm/copysign.d.ts +19 -0
- package/dist/types/common/wasm/correlate.d.ts +14 -0
- package/dist/types/common/wasm/cos.d.ts +15 -0
- package/dist/types/common/wasm/cosh.d.ts +15 -0
- package/dist/types/common/wasm/cross.d.ts +15 -0
- package/dist/types/common/wasm/diff.d.ts +15 -0
- package/dist/types/common/wasm/divide.d.ts +11 -0
- package/dist/types/common/wasm/dot.d.ts +14 -0
- package/dist/types/common/wasm/exp.d.ts +15 -0
- package/dist/types/common/wasm/exp2.d.ts +15 -0
- package/dist/types/common/wasm/fft.d.ts +29 -0
- package/dist/types/common/wasm/flip.d.ts +13 -0
- package/dist/types/common/wasm/frexp.d.ts +9 -0
- package/dist/types/common/wasm/gather.d.ts +23 -0
- package/dist/types/common/wasm/gcd.d.ts +11 -0
- package/dist/types/common/wasm/gradient.d.ts +13 -0
- package/dist/types/common/wasm/heaviside.d.ts +11 -0
- package/dist/types/common/wasm/hypot.d.ts +21 -0
- package/dist/types/common/wasm/indices.d.ts +10 -0
- package/dist/types/common/wasm/inner.d.ts +20 -0
- package/dist/types/common/wasm/kron.d.ts +13 -0
- package/dist/types/common/wasm/ldexp.d.ts +9 -0
- package/dist/types/common/wasm/left_shift.d.ts +11 -0
- package/dist/types/common/wasm/lexsort.d.ts +14 -0
- package/dist/types/common/wasm/logaddexp.d.ts +21 -0
- package/dist/types/common/wasm/logical_and.d.ts +19 -0
- package/dist/types/common/wasm/logical_not.d.ts +13 -0
- package/dist/types/common/wasm/logical_or.d.ts +19 -0
- package/dist/types/common/wasm/logical_xor.d.ts +19 -0
- package/dist/types/common/wasm/lstsq.d.ts +14 -0
- package/dist/types/common/wasm/matmul.d.ts +18 -0
- package/dist/types/common/wasm/matvec.d.ts +13 -0
- package/dist/types/common/wasm/max.d.ts +11 -0
- package/dist/types/common/wasm/min.d.ts +11 -0
- package/dist/types/common/wasm/mul.d.ts +19 -0
- package/dist/types/common/wasm/neg.d.ts +13 -0
- package/dist/types/common/wasm/outer.d.ts +13 -0
- package/dist/types/common/wasm/pad.d.ts +14 -0
- package/dist/types/common/wasm/partition.d.ts +20 -0
- package/dist/types/common/wasm/power.d.ts +19 -0
- package/dist/types/common/wasm/qr.d.ts +17 -0
- package/dist/types/common/wasm/reciprocal.d.ts +9 -0
- package/dist/types/common/wasm/reduce_all.d.ts +14 -0
- package/dist/types/common/wasm/reduce_any.d.ts +14 -0
- package/dist/types/common/wasm/reduce_argmax.d.ts +14 -0
- package/dist/types/common/wasm/reduce_argmin.d.ts +14 -0
- package/dist/types/common/wasm/reduce_count_nz.d.ts +14 -0
- package/dist/types/common/wasm/reduce_max.d.ts +19 -0
- package/dist/types/common/wasm/reduce_mean.d.ts +19 -0
- package/dist/types/common/wasm/reduce_min.d.ts +19 -0
- package/dist/types/common/wasm/reduce_nanmax.d.ts +14 -0
- package/dist/types/common/wasm/reduce_nanmin.d.ts +14 -0
- package/dist/types/common/wasm/reduce_nansum.d.ts +14 -0
- package/dist/types/common/wasm/reduce_prod.d.ts +20 -0
- package/dist/types/common/wasm/reduce_quantile.d.ts +15 -0
- package/dist/types/common/wasm/reduce_std.d.ts +14 -0
- package/dist/types/common/wasm/reduce_sum.d.ts +20 -0
- package/dist/types/common/wasm/reduce_var.d.ts +14 -0
- package/dist/types/common/wasm/repeat.d.ts +14 -0
- package/dist/types/common/wasm/right_shift.d.ts +11 -0
- package/dist/types/common/wasm/roll.d.ts +13 -0
- package/dist/types/common/wasm/rot90.d.ts +14 -0
- package/dist/types/common/wasm/runtime.d.ts +44 -0
- package/dist/types/common/wasm/searchsorted.d.ts +12 -0
- package/dist/types/common/wasm/sign.d.ts +14 -0
- package/dist/types/common/wasm/sinh.d.ts +15 -0
- package/dist/types/common/wasm/sort.d.ts +20 -0
- package/dist/types/common/wasm/sqrt.d.ts +15 -0
- package/dist/types/common/wasm/square.d.ts +13 -0
- package/dist/types/common/wasm/sub.d.ts +19 -0
- package/dist/types/common/wasm/svd.d.ts +18 -0
- package/dist/types/common/wasm/tan.d.ts +15 -0
- package/dist/types/common/wasm/tanh.d.ts +15 -0
- package/dist/types/common/wasm/tile.d.ts +14 -0
- package/dist/types/common/wasm/vdot.d.ts +16 -0
- package/dist/types/common/wasm/vecdot.d.ts +15 -0
- package/dist/types/common/wasm/vecmat.d.ts +13 -0
- package/dist/types/core/linalg.d.ts +10 -10
- package/dist/types/core/reduction.d.ts +17 -17
- package/dist/types/core/sets.d.ts +1 -1
- package/dist/types/core/sorting.d.ts +1 -1
- package/dist/types/full/index.d.ts +20 -18
- package/dist/types/full/ndarray.d.ts +16 -22
- package/dist/types/index.d.ts +1 -0
- package/dist/types/io/zip/types.d.ts +2 -1
- package/package.json +37 -15
|
@@ -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{
|
|
1
|
+
import{ArrayStorage as z}from"../storage";import{promoteDTypes as k,isComplexDType as q,isBigIntDType as _,getTypedArrayConstructor as at}from"../dtype";import{Complex as $}from"../complex";import{wasmMatmul as It}from"../wasm/matmul";import{wasmInner as Dt}from"../wasm/inner";import{wasmDot1D as nt}from"../wasm/dot";import{wasmMatvec as lt}from"../wasm/matvec";import{wasmVecmat as ct}from"../wasm/vecmat";import{wasmOuter as vt}from"../wasm/outer";import{wasmVecdot as $t}from"../wasm/vecdot";import{wasmVdotComplex as zt}from"../wasm/vdot";import{wasmKron as Mt}from"../wasm/kron";import{wasmCross as Ct}from"../wasm/cross";import{wasmQr as Et}from"../wasm/qr";import{wasmCholesky as jt}from"../wasm/cholesky";import{wasmSvd as Vt}from"../wasm/svd";import*as R from"./shape";const Ft=new Int32Array(1),Bt=new Uint32Array(1),Rt=new Int16Array(1),kt=new Uint16Array(1),qt=new Int8Array(1),Tt=new Uint8Array(1),_t={int32:Ft,uint32:Bt,int16:Rt,uint16:kt,int8:qt,uint8:Tt};function L(t){return _t[t]??null}function J(t,e){if(t instanceof $||e instanceof $){const g=t instanceof $?t:new $(Number(t),0),p=e instanceof $?e:new $(Number(e),0);return g.mul(p)}return typeof t=="bigint"&&typeof e=="bigint"?Number(t*e):Number(t)*Number(e)}function Ot(t,e,g,p,c,m,f,d,b){for(let l=0;l<g;l++)for(let s=0;s<m;s++)for(let a=0;a<f;a++){let n=0;for(let i=0;i<d;i++)n+=t[e+l*d+i]*p[c+s*d*f+i*f+a];b[l*m*f+s*f+a]=n}}function Ut(t,e,g,p,c,m,f,d,b,l){for(let s=0;s<g;s++)for(let a=0;a<f;a++){let n=0;for(let r=0;r<b;r++){const o=p===1?r:s*b+r,u=d===1?r:a*b+r;n+=t[e+o]*c[m+u]}const i=g===1?a:s*f+a;l[i]=n}}function Lt(t,e,g,p,c,m,f,d,b,l,s,a){for(let r=0;r<g*p;r++)s[r]=0;const n=t==="transpose",i=e==="transpose";if(!n&&!i)for(let r=0;r<g;r++)for(let o=0;o<p;o++){let u=0;for(let w=0;w<c;w++)u+=(f[r*d+w]??0)*(b[w*l+o]??0);s[r*a+o]=m*u}else if(n&&!i)for(let r=0;r<g;r++)for(let o=0;o<p;o++){let u=0;for(let w=0;w<c;w++)u+=(f[w*d+r]??0)*(b[w*l+o]??0);s[r*a+o]=m*u}else if(!n&&i)for(let r=0;r<g;r++)for(let o=0;o<p;o++){let u=0;for(let w=0;w<c;w++)u+=(f[r*d+w]??0)*(b[o*l+w]??0);s[r*a+o]=m*u}else for(let r=0;r<g;r++)for(let o=0;o<p;o++){let u=0;for(let w=0;w<c;w++)u+=(f[w*d+r]??0)*(b[o*l+w]??0);s[r*a+o]=m*u}}function K(t,e){const g=t.ndim,p=e.ndim,c=q(t.dtype)||q(e.dtype);if(g===0||p===0){const m=g===0?t.get():null,f=p===0?e.get():null;if(g===0&&p===0)return J(m,f);if(g===0){const d=k(t.dtype,e.dtype),b=z.zeros([...e.shape],d),l=(s,a)=>{const n=new Array(a.length);let i=s;for(let r=a.length-1;r>=0;r--)n[r]=i%a[r],i=Math.floor(i/a[r]);return n};for(let s=0;s<e.size;s++){const a=l(s,e.shape),n=e.get(...a);b.set(a,J(m,n))}return b}else{const d=k(t.dtype,e.dtype),b=z.zeros([...t.shape],d),l=(s,a)=>{const n=new Array(a.length);let i=s;for(let r=a.length-1;r>=0;r--)n[r]=i%a[r],i=Math.floor(i/a[r]);return n};for(let s=0;s<t.size;s++){const a=l(s,t.shape),n=t.get(...a);b.set(a,J(n,f))}return b}}if(g===1&&p===1){if(t.shape[0]!==e.shape[0])throw new Error(`dot: incompatible shapes (${t.shape[0]},) and (${e.shape[0]},)`);const m=nt(t,e);if(m!==null)return m;const f=t.shape[0];if(c){let s=0,a=0;for(let n=0;n<f;n++){const i=t.get(n),r=e.get(n),o=J(i,r);o instanceof $?(s+=o.re,a+=o.im):s+=o}return new $(s,a)}const d=k(t.dtype,e.dtype),b=L(d);if(b){b[0]=0;for(let s=0;s<f;s++)b[0]+=Number(t.get(s))*Number(e.get(s));return b[0]}let l=0;for(let s=0;s<f;s++){const a=t.get(s),n=e.get(s);typeof a=="bigint"&&typeof n=="bigint"?l=Number(l)+Number(a*n):l+=Number(a)*Number(n)}return l}if(g===2&&p===2)return X(t,e);if(g===2&&p===1){const[m,f]=t.shape,d=e.shape[0];if(f!==d)throw new Error(`dot: incompatible shapes (${m},${f}) and (${d},)`);const b=lt(t,e);if(b)return b;const l=k(t.dtype,e.dtype),s=z.zeros([m],l);if(c)for(let a=0;a<m;a++){let n=0,i=0;for(let r=0;r<f;r++){const o=t.get(a,r),u=e.get(r),w=o instanceof $?o:new $(Number(o),0),y=u instanceof $?u:new $(Number(u),0);n+=w.re*y.re-w.im*y.im,i+=w.re*y.im+w.im*y.re}s.set([a],new $(n,i))}else{const a=L(l);for(let n=0;n<m;n++)if(a){a[0]=0;for(let i=0;i<f;i++)a[0]+=Number(t.get(n,i))*Number(e.get(i));s.set([n],a[0])}else{let i=0;for(let r=0;r<f;r++){const o=t.get(n,r),u=e.get(r);typeof o=="bigint"&&typeof u=="bigint"?i=Number(i)+Number(o*u):i+=Number(o)*Number(u)}s.set([n],i)}}return s}if(g===1&&p===2){const m=t.shape[0],[f,d]=e.shape;if(m!==f)throw new Error(`dot: incompatible shapes (${m},) and (${f},${d})`);const b=ct(t,e);if(b)return b;const l=k(t.dtype,e.dtype),s=z.zeros([d],l);if(c)for(let a=0;a<d;a++){let n=0,i=0;for(let r=0;r<m;r++){const o=t.get(r),u=e.get(r,a),w=o instanceof $?o:new $(Number(o),0),y=u instanceof $?u:new $(Number(u),0);n+=w.re*y.re-w.im*y.im,i+=w.re*y.im+w.im*y.re}s.set([a],new $(n,i))}else{const a=L(l);for(let n=0;n<d;n++)if(a){a[0]=0;for(let i=0;i<m;i++)a[0]+=Number(t.get(i))*Number(e.get(i,n));s.set([n],a[0])}else{let i=0;for(let r=0;r<m;r++){const o=t.get(r),u=e.get(r,n);typeof o=="bigint"&&typeof u=="bigint"?i=Number(i)+Number(o*u):i+=Number(o)*Number(u)}s.set([n],i)}}return s}if(g>2&&p===1){const m=t.shape[g-1],f=e.shape[0];if(m!==f)throw new Error(`dot: incompatible shapes ${JSON.stringify(t.shape)} and (${f},)`);const d=[...t.shape.slice(0,-1)],b=k(t.dtype,e.dtype),l=z.zeros(d,b),s=d.reduce((a,n)=>a*n,1);if(c)for(let a=0;a<s;a++){let n=0,i=0,r=a;const o=[];for(let u=d.length-1;u>=0;u--)o[u]=r%d[u],r=Math.floor(r/d[u]);for(let u=0;u<m;u++){const w=[...o,u],y=t.get(...w),h=e.get(u),A=y instanceof $?y:new $(Number(y),0),x=h instanceof $?h:new $(Number(h),0);n+=A.re*x.re-A.im*x.im,i+=A.re*x.im+A.im*x.re}l.set(o,new $(n,i))}else{const a=L(b);for(let n=0;n<s;n++){let i=n;const r=[];for(let o=d.length-1;o>=0;o--)r[o]=i%d[o],i=Math.floor(i/d[o]);if(a){a[0]=0;for(let o=0;o<m;o++){const u=[...r,o];a[0]+=Number(t.get(...u))*Number(e.get(o))}l.set(r,a[0])}else{let o=0;for(let u=0;u<m;u++){const w=[...r,u],y=t.get(...w),h=e.get(u);typeof y=="bigint"&&typeof h=="bigint"?o=Number(o)+Number(y*h):o+=Number(y)*Number(h)}l.set(r,o)}}}return l}if(g===1&&p>2){const m=t.shape[0],f=1,d=e.shape[f];if(m!==d)throw new Error(`dot: incompatible shapes (${m},) and ${JSON.stringify(e.shape)}`);const b=[...e.shape.slice(0,f),...e.shape.slice(f+1)],l=k(t.dtype,e.dtype),s=z.zeros(b,l),a=b.reduce((n,i)=>n*i,1);if(c)for(let n=0;n<a;n++){let i=n;const r=[];for(let h=b.length-1;h>=0;h--)r[h]=i%b[h],i=Math.floor(i/b[h]);const o=r.slice(0,f),u=r.slice(f);let w=0,y=0;for(let h=0;h<m;h++){const A=t.get(h),x=[...o,h,...u],N=e.get(...x),S=A instanceof $?A:new $(Number(A),0),I=N instanceof $?N:new $(Number(N),0);w+=S.re*I.re-S.im*I.im,y+=S.re*I.im+S.im*I.re}s.set(r,new $(w,y))}else{const n=L(l);for(let i=0;i<a;i++){let r=i;const o=[];for(let y=b.length-1;y>=0;y--)o[y]=r%b[y],r=Math.floor(r/b[y]);const u=o.slice(0,f),w=o.slice(f);if(n){n[0]=0;for(let y=0;y<m;y++){const h=[...u,y,...w];n[0]+=Number(t.get(y))*Number(e.get(...h))}s.set(o,n[0])}else{let y=0;for(let h=0;h<m;h++){const A=t.get(h),x=[...u,h,...w],N=e.get(...x);typeof A=="bigint"&&typeof N=="bigint"?y=Number(y)+Number(A*N):y+=Number(A)*Number(N)}s.set(o,y)}}}return s}if(g>=2&&p>=2&&!(g===2&&p===2)){const m=t.shape[g-1],f=e.shape[p-2];if(m!==f)throw new Error(`dot: incompatible shapes ${JSON.stringify(t.shape)} and ${JSON.stringify(e.shape)}`);const d=[...t.shape.slice(0,-1),...e.shape.slice(0,-2),e.shape[p-1]],b=k(t.dtype,e.dtype),l=z.zeros(d,b),s=t.shape.slice(0,-1).reduce((r,o)=>r*o,1),a=e.shape.slice(0,-2).reduce((r,o)=>r*o,1),n=e.shape[p-1],i=m;if(c)for(let r=0;r<s;r++)for(let o=0;o<a;o++)for(let u=0;u<n;u++){let w=0,y=0;for(let x=0;x<i;x++){const N=[];let S=r;for(let j=t.shape.length-2;j>=0;j--)N.unshift(S%t.shape[j]),S=Math.floor(S/t.shape[j]);N.push(x);const I=t.get(...N),D=[];let v=o;for(let j=e.shape.length-3;j>=0;j--)D.unshift(v%e.shape[j]),v=Math.floor(v/e.shape[j]);D.push(x,u);const C=e.get(...D),M=I instanceof $?I:new $(Number(I),0),E=C instanceof $?C:new $(Number(C),0);w+=M.re*E.re-M.im*E.im,y+=M.re*E.im+M.im*E.re}const h=r*a*n+o*n+u,A=l.data;A[h*2]=w,A[h*2+1]=y}else if(t.isCContiguous&&e.isCContiguous&&!_(t.dtype)&&!_(e.dtype)&&!L(b))Ot(t.data,t.offset,s,e.data,e.offset,a,n,i,l.data);else{const r=L(b);for(let o=0;o<s;o++)for(let u=0;u<a;u++)for(let w=0;w<n;w++){const y=o*a*n+u*n+w;if(r){r[0]=0;for(let h=0;h<i;h++){const A=o*i+h,x=u*i*n+h*n+w;r[0]+=Number(t.iget(A))*Number(e.iget(x))}l.data[y]=r[0]}else{let h=0;for(let A=0;A<i;A++){const x=o*i+A,N=u*i*n+A*n+w,S=t.iget(x),I=e.iget(N);typeof S=="bigint"&&typeof I=="bigint"?h=Number(h)+Number(S*I):h+=Number(S)*Number(I)}l.data[y]=h}}}return l}throw new Error(`dot: unexpected combination of dimensions ${g}D \xB7 ${p}D`)}function ut(t,e){const[g=0,p=0]=t.shape,[c=0,m=0]=e.shape;if(p!==c)throw new Error(`matmul shape mismatch: (${g},${p}) @ (${c},${m})`);const f=k(t.dtype,e.dtype);if(q(f)){const N=z.zeros([g,m],f),S=N.data;for(let I=0;I<g;I++)for(let D=0;D<m;D++){let v=0,C=0;for(let E=0;E<p;E++){const j=t.iget(I*p+E),V=e.iget(E*m+D);v+=j.re*V.re-j.im*V.im,C+=j.re*V.im+j.im*V.re}const M=I*m+D;S[M*2]=v,S[M*2+1]=C}return N}if(f.startsWith("int")||f.startsWith("uint")||f==="bool"){const N=z.zeros([g,m],f),S=N.data,I=t.offset,D=e.offset,[v=0,C=0]=t.strides,[M=0,E=0]=e.strides;if(_(f)){const j=t.data,V=e.data,F=S;for(let T=0;T<g;T++)for(let B=0;B<m;B++){let W=0n;for(let U=0;U<p;U++)W+=j[I+T*v+U*C]*V[D+U*M+B*E];F[T*m+B]=W}}else{const j=t.data,V=e.data,F=S;for(let T=0;T<g;T++)for(let B=0;B<m;B++){let W=0;for(let U=0;U<p;U++)W+=j[I+T*v+U*C]*V[D+U*M+B*E];F[T*m+B]=W}}return N}const d=f;if(d!=="float64"&&d!=="float32")throw new Error(`matmul currently only supports float64/float32, got ${d}`);const b=N=>N.dtype==="float64"?N.data:N.dtype==="float32"?Float64Array.from(N.data):Float64Array.from(Array.from(N.data).map(Number));let l=b(t),s=b(e);t.offset>0&&(l=l.subarray(t.offset)),e.offset>0&&(s=s.subarray(e.offset));const[a=0,n=0]=t.strides,[i=0,r=0]=e.strides,o=n>a,u=r>i,w=o?"transpose":"no-transpose",y=u?"transpose":"no-transpose";let h,A;o?h=n:h=a,u?A=r:A=i;const x=z.zeros([g,m],"float64");if(Lt(w,y,g,m,p,1,l,h,s,A,x.data,m),d==="float32"){const N=z.zeros([g,m],"float32"),S=x.data,I=N.data;for(let D=0;D<S.length;D++)I[D]=S[D];return N}return x}function Pt(t,e){const g=Math.max(t.length,e.length),p=new Array(g);for(let c=0;c<g;c++){const m=t[t.length-g+c]??1,f=e[e.length-g+c]??1;if(m!==f&&m!==1&&f!==1)throw new Error(`matmul: cannot broadcast batch shapes ${JSON.stringify(t)} and ${JSON.stringify(e)}`);p[c]=Math.max(m,f)}return p}function Y(t,e){const g=new Array(e.length);let p=t;for(let c=e.length-1;c>=0;c--)g[c]=p%e[c],p=Math.floor(p/e[c]);return g}function mt(t,e){const g=e.length;let p=0;for(let c=0;c<g;c++){const m=t.length-g+c,f=m>=0?t[m]:0,d=e[c]===1?0:f;p=p*e[c]+d}return p}function O(t){if(t.isCContiguous&&t.offset===0&&t.dtype==="float64")return t.data;const e=new Float64Array(t.size);for(let g=0;g<t.size;g++)e[g]=Number(t.iget(g));return e}function ft(t,e,g,p){const c=t.ndim,m=g*p,f=q(t.dtype),d=_(t.dtype),b=f?2:1,l=at(t.dtype),s=new l(m*b);if(t.isCContiguous){const a=(t.offset+e*m)*b;if(d){const n=t.data,i=s;for(let r=0;r<m*b;r++)i[r]=n[a+r]}else{const n=t.data,i=s;for(let r=0;r<m*b;r++)i[r]=n[a+r]}}else{const a=e*m;for(let n=0;n<m;n++){let r=a+n,o=t.offset;for(let u=c-1;u>=0;u--){const w=t.shape[u];o+=r%w*t.strides[u],r=Math.floor(r/w)}if(f){const u=t.data,w=s;w[n*2]=u[o*2],w[n*2+1]=u[o*2+1]}else s[n]=t.data[o]}}return z.fromData(s,[g,p],t.dtype)}function X(t,e){if(t.ndim===1&&e.ndim===1){const M=nt(t,e);if(M!==null){const E=k(t.dtype,e.dtype),j=z.zeros([],E);return M instanceof $?(j.data[0]=M.re,j.data[1]=M.im):j.data[0]=M,j}}else if(t.ndim>=2&&e.ndim===1){if(t.ndim===2){const M=lt(t,e);if(M)return M}}else if(t.ndim===1&&e.ndim>=2&&e.ndim===2){const M=ct(t,e);if(M)return M}const g=It(t,e);if(g)return g;if(t.ndim===0||e.ndim===0)throw new Error("matmul: Input operand does not have enough dimensions (has 0, gufunc core with signature (n?,k),(k,m?)->(n?,m?) requires at least 1-D)");const p=t.ndim===1,c=e.ndim===1,m=p?R.reshape(t,[1,t.shape[0]]):t,f=c?R.reshape(e,[e.shape[0],1]):e,d=m.ndim,b=f.ndim,l=m.shape[d-2],s=m.shape[d-1],a=f.shape[b-2],n=f.shape[b-1];if(s!==a)throw new Error(`matmul: shape mismatch: (...,${l},${s}) @ (...,${a},${n}): inner dimensions must match`);if(d===2&&b===2){const M=ut(m,f);return p&&c?R.reshape(M,[]):p?R.reshape(M,[n]):c?R.reshape(M,[l]):M}const i=Array.from(m.shape).slice(0,d-2),r=Array.from(f.shape).slice(0,b-2),o=Pt(i,r),u=o.reduce((M,E)=>M*E,1),w=k(m.dtype,f.dtype),y=[];for(let M=0;M<u;M++){const E=Y(M,o),j=mt(E,i),V=mt(E,r),F=ft(m,j,l,s),T=ft(f,V,s,n);y.push(ut(F,T))}const h=l*n,A=q(w),x=_(w),N=A?2:1,S=at(w),I=u*h*N,D=new S(I);for(let M=0;M<u;M++){const j=y[M].data,V=M*h*N;if(x){const F=j,T=D;for(let B=0;B<h;B++)T[V+B]=F[B]}else{const F=j,T=D;for(let B=0;B<h*N;B++)T[V+B]=F[B]}}const v=[...o,l,n],C=z.fromData(D,v,w);return p&&c?R.reshape(C,[...o]):p?R.reshape(C,[...o,n]):c?R.reshape(C,[...o,l]):C}function be(t,e=0,g=0,p=1){if(t.ndim<2)throw new Error(`trace requires at least 2D array, got ${t.ndim}D`);if(t.ndim===2){const i=g<0?t.ndim+g:g,r=p<0?t.ndim+p:p,o=t.shape[i],u=t.shape[r],w=Math.min(o,u)-Math.max(0,e);if(w<=0)return q(t.dtype)?new $(0,0):0;if(q(t.dtype)){let h=0,A=0;for(let x=0;x<w;x++){const N=e>=0?x:x-e,S=e>=0?x+e:x,I=[0,0];I[i]=N,I[r]=S;const D=t.get(...I);h+=D.re,A+=D.im}return new $(h,A)}let y=0;for(let h=0;h<w;h++){const A=e>=0?h:h-e,x=e>=0?h+e:h,N=[0,0];N[i]=A,N[r]=x;const S=t.get(...N);typeof S=="bigint"?y=(typeof y=="bigint"?y:BigInt(y))+S:y=(typeof y=="bigint"?Number(y):y)+S}return y}const c=t.ndim,m=(g%c+c)%c,f=(p%c+c)%c;if(m===f)throw new Error("trace: axis1 and axis2 must be different");const d=t.shape[m],b=t.shape[f],l=Math.min(d,b)-Math.max(0,e),s=Array.from(t.shape).filter((i,r)=>r!==m&&r!==f),a=s.reduce((i,r)=>i*r,1),n=z.zeros(s.length>0?s:[1],t.dtype);if(l<=0)return n.shape.length===0?0:n;for(let i=0;i<a;i++){const r=new Array(s.length);let o=i;for(let A=s.length-1;A>=0;A--)r[A]=o%s[A],o=Math.floor(o/s[A]);let u=0,w=0,y=0;const h=q(t.dtype);for(let A=0;A<l;A++){const x=e>=0?A:A-e,N=e>=0?A+e:A,S=new Array(c);let I=0;for(let v=0;v<c;v++)v===m?S[v]=x:v===f?S[v]=N:S[v]=r[I++];const D=t.get(...S);h?(w+=D.re,y+=D.im):typeof D=="bigint"?u=(typeof u=="bigint"?u:BigInt(u))+D:u=(typeof u=="bigint"?Number(u):u)+D}h?n.iset(i,new $(w,y)):n.iset(i,typeof u=="bigint"?Number(u):u)}return n}function G(t,e){return R.transpose(t,e)}function ye(t,e){const g=t.ndim,p=e.ndim,c=q(t.dtype)||q(e.dtype);if(g===0||p===0)return K(t,e);const m=t.shape[g-1],f=e.shape[p-1];if(m!==f)throw new Error(`inner: incompatible shapes - last dimensions ${m} and ${f} don't match`);const d=Dt(t,e);if(d!==null)return d;if(g===1&&p===1)return K(t,e);const b=[...t.shape.slice(0,-1),...e.shape.slice(0,-1)],l=k(t.dtype,e.dtype),s=z.zeros(b,l),a=g===1?1:t.shape.slice(0,-1).reduce((r,o)=>r*o,1),n=p===1?1:e.shape.slice(0,-1).reduce((r,o)=>r*o,1),i=m;if(c)for(let r=0;r<a;r++)for(let o=0;o<n;o++){let u=0,w=0;for(let A=0;A<i;A++){let x,N;if(g===1)x=t.get(A);else{const D=[];let v=r;const C=t.shape.slice(0,-1);for(let M=C.length-1;M>=0;M--)D.unshift(v%C[M]),v=Math.floor(v/C[M]);D.push(A),x=t.get(...D)}if(p===1)N=e.get(A);else{const D=[];let v=o;const C=e.shape.slice(0,-1);for(let M=C.length-1;M>=0;M--)D.unshift(v%C[M]),v=Math.floor(v/C[M]);D.push(A),N=e.get(...D)}const S=x instanceof $?x:new $(Number(x),0),I=N instanceof $?N:new $(Number(N),0);u+=S.re*I.re-S.im*I.im,w+=S.re*I.im+S.im*I.re}if(b.length===0)return new $(u,w);const y=a===1?o:r*n+o,h=s.data;h[y*2]=u,h[y*2+1]=w}else{const r=L(l);if(t.isCContiguous&&e.isCContiguous&&!_(t.dtype)&&!_(e.dtype)&&!r){if(b.length===0){const o=t.data,u=e.data,w=t.offset,y=e.offset;let h=0;for(let A=0;A<i;A++)h+=o[w+A]*u[y+A];return h}Ut(t.data,t.offset,a,g,e.data,e.offset,n,p,i,s.data)}else for(let o=0;o<a;o++)for(let u=0;u<n;u++)if(r){r[0]=0;for(let y=0;y<i;y++){const h=g===1?y:o*i+y,A=p===1?y:u*i+y;r[0]+=Number(t.iget(h))*Number(e.iget(A))}if(b.length===0)return r[0];const w=a===1?u:o*n+u;s.data[w]=r[0]}else{let w=0;for(let h=0;h<i;h++){const A=g===1?h:o*i+h,x=p===1?h:u*i+h,N=t.iget(A),S=e.iget(x);typeof N=="bigint"&&typeof S=="bigint"?w=Number(w)+Number(N*S):w+=Number(N)*Number(S)}if(b.length===0)return w;const y=a===1?u:o*n+u;s.data[y]=w}}return s}function Jt(t,e){const g=t.ndim===1?t:R.ravel(t),p=e.ndim===1?e:R.ravel(e),c=vt(g,p);if(c)return c;const m=g.size,f=p.size,d=k(t.dtype,e.dtype),b=z.zeros([m,f],d);for(let l=0;l<m;l++)for(let s=0;s<f;s++){const a=g.get(l),n=p.get(s),i=J(a,n);b.set([l,s],i)}return b}function we(t,e,g){let p,c;if(typeof g=="number"){const r=g;if(r<0)throw new Error("tensordot: axes must be non-negative");if(r>t.ndim||r>e.ndim)throw new Error("tensordot: axes exceeds array dimensions");p=Array.from({length:r},(o,u)=>t.ndim-r+u),c=Array.from({length:r},(o,u)=>u)}else if([p,c]=g,p.length!==c.length)throw new Error("tensordot: axes lists must have same length");for(let r=0;r<p.length;r++){const o=p[r],u=c[r];if(o<0||o>=t.ndim||u<0||u>=e.ndim)throw new Error("tensordot: axis out of bounds");if(t.shape[o]!==e.shape[u])throw new Error(`tensordot: shape mismatch on axes ${o} and ${u}: ${t.shape[o]} != ${e.shape[u]}`)}const m=[],f=[];for(let r=0;r<t.ndim;r++)p.includes(r)||m.push(r);for(let r=0;r<e.ndim;r++)c.includes(r)||f.push(r);const d=[...m.map(r=>t.shape[r]),...f.map(r=>e.shape[r])],b=k(t.dtype,e.dtype),l=q(b),s=r=>r instanceof $?{re:r.re,im:r.im}:{re:Number(r),im:0};if(d.length===0){let r=0,o=0;const u=p.map(w=>t.shape[w]).reduce((w,y)=>w*y,1);for(let w=0;w<u;w++){let y=w;const h=new Array(p.length);for(let I=p.length-1;I>=0;I--){const D=p[I];h[I]=y%t.shape[D],y=Math.floor(y/t.shape[D])}const A=new Array(t.ndim),x=new Array(e.ndim);for(let I=0;I<p.length;I++)A[p[I]]=h[I];for(let I=0;I<c.length;I++)x[c[I]]=h[I];const N=t.get(...A),S=e.get(...x);if(l){const I=s(N),D=s(S);r+=I.re*D.re-I.im*D.im,o+=I.re*D.im+I.im*D.re}else typeof N=="bigint"&&typeof S=="bigint"?r+=Number(N*S):r+=Number(N)*Number(S)}return l?new $(r,o):r}const a=z.zeros(d,b),n=d.reduce((r,o)=>r*o,1),i=p.map(r=>t.shape[r]).reduce((r,o)=>r*o,1);for(let r=0;r<n;r++){let o=r;const u=[];for(let x=d.length-1;x>=0;x--)u[x]=o%d[x],o=Math.floor(o/d[x]);const w=u.slice(0,m.length),y=u.slice(m.length);let h=0,A=0;for(let x=0;x<i;x++){o=x;const N=[];for(let C=p.length-1;C>=0;C--){const M=p[C];N[C]=o%t.shape[M],o=Math.floor(o/t.shape[M])}const S=new Array(t.ndim),I=new Array(e.ndim);for(let C=0;C<m.length;C++)S[m[C]]=w[C];for(let C=0;C<f.length;C++)I[f[C]]=y[C];for(let C=0;C<p.length;C++)S[p[C]]=N[C],I[c[C]]=N[C];const D=t.get(...S),v=e.get(...I);if(l){const C=s(D),M=s(v);h+=C.re*M.re-C.im*M.im,A+=C.re*M.im+C.im*M.re}else typeof D=="bigint"&&typeof v=="bigint"?h+=Number(D*v):h+=Number(D)*Number(v)}l?a.set(u,new $(h,A)):a.set(u,h)}return a}function Ae(t,e=0,g=0,p=1){const c=t.shape,m=c.length;if(m<2)throw new Error("diagonal requires an array of at least two dimensions");const f=g<0?m+g:g,d=p<0?m+p:p;if(f<0||f>=m||d<0||d>=m)throw new Error("axis out of bounds");if(f===d)throw new Error("axis1 and axis2 cannot be the same");const b=c[f],l=c[d];let s;e>=0?s=Math.max(0,Math.min(b,l-e)):s=Math.max(0,Math.min(b+e,l));const a=[];for(let o=0;o<m;o++)o!==f&&o!==d&&a.push(c[o]);a.push(s);const n=z.zeros(a,t.dtype),i=c.filter((o,u)=>u!==f&&u!==d),r=i.reduce((o,u)=>o*u,1);for(let o=0;o<r;o++){let u=o;const w=[];for(let y=i.length-1;y>=0;y--)w.unshift(u%i[y]),u=Math.floor(u/i[y]);for(let y=0;y<s;y++){const h=new Array(m);let A=0;for(let S=0;S<m;S++)S===f?h[S]=e>=0?y:y-e:S===d?h[S]=e>=0?y+e:y:h[S]=w[A++];const x=[...w,y],N=t.get(...h);n.set(x,N)}}return n}function Se(t,...e){const g=t.indexOf("->");let p,c;g===-1?(p=t,c=pt(p)):(p=t.slice(0,g),c=t.slice(g+2));const m=p.split(",").map(o=>o.trim());if(m.length!==e.length)throw new Error(`einsum: expected ${m.length} operands, got ${e.length}`);const f=new Map;for(let o=0;o<e.length;o++){const u=m[o],w=e[o];if(u.length!==w.ndim)throw new Error(`einsum: operand ${o} has ${w.ndim} dimensions but subscript '${u}' has ${u.length} indices`);for(let y=0;y<u.length;y++){const h=u[y],A=w.shape[y];if(f.has(h)){if(f.get(h)!==A)throw new Error(`einsum: size mismatch for index '${h}': ${f.get(h)} vs ${A}`)}else f.set(h,A)}}for(const o of c)if(!f.has(o))throw new Error(`einsum: output subscript contains unknown index '${o}'`);const d=new Set(c),b=new Set;for(const o of m)for(const u of o)b.add(u);const l=[];for(const o of b)d.has(o)||l.push(o);if(e.length===2&&m.length===2){const[o,u]=m,[w,y]=e;if(o.length===2&&u.length===2&&c.length===2&&w.ndim===2&&y.ndim===2){const[h,A]=[o[0],o[1]],[x,N]=[u[0],u[1]],[S,I]=[c[0],c[1]];if(h===S&&N===I&&A===x&&l.length===1&&l[0]===A||h===S&&N===I&&A===x&&l.length===1&&l[0]===A)return X(w,y);if(A===S&&N===I&&h===x&&l.length===1&&l[0]===h){const D=G(w);return X(D,y)}if(h===S&&x===I&&A===N&&l.length===1&&l[0]===A){const D=G(y);return X(w,D)}}if(o.length===1&&u.length===1&&o===u&&c.length===0&&w.ndim===1&&y.ndim===1)return ot(e,m,l,f);if(o&&u&&o.length===1&&u.length===1&&c.length===2&&c===o+u&&l.length===0&&w.ndim===1&&y.ndim===1)return Jt(w,y)}if(e.length===1&&m[0].length===2&&c.length===0){const o=m[0];if(o[0]===o[1]&&e[0].ndim===2)return ot(e,m,l,f)}const s=Array.from(c).map(o=>f.get(o));if(s.length===0)return ot(e,m,l,f);let a=e[0].dtype;for(let o=1;o<e.length;o++)a=k(a,e[o].dtype);const n=z.zeros(s,a),i=s.reduce((o,u)=>o*u,1);let r=1;for(const o of l)r*=f.get(o);for(let o=0;o<i;o++){const u=Xt(o,s),w=new Map;for(let h=0;h<c.length;h++)w.set(c[h],u[h]);let y=0;for(let h=0;h<r;h++){let A=h;for(let N=l.length-1;N>=0;N--){const S=l[N],I=f.get(S);w.set(S,A%I),A=Math.floor(A/I)}let x=1;for(let N=0;N<e.length;N++){const S=e[N],I=m[N],D=[];for(const C of I)D.push(w.get(C));const v=S.get(...D);x*=Number(v)}y+=x}n.set(u,y)}return n}function pt(t){const e=new Map,g=t.split(",");for(const c of g)for(const m of c.trim())e.set(m,(e.get(m)||0)+1);const p=[];for(const[c,m]of e)m===1&&p.push(c);return p.sort().join("")}function ot(t,e,g,p){let c=!1;for(const l of t)if(q(l.dtype)){c=!0;break}const m=l=>l instanceof $?{re:l.re,im:l.im}:{re:Number(l),im:0};let f=1;for(const l of g)f*=p.get(l);let d=0,b=0;for(let l=0;l<f;l++){const s=new Map;let a=l;for(let r=g.length-1;r>=0;r--){const o=g[r],u=p.get(o);s.set(o,a%u),a=Math.floor(a/u)}let n=1,i=0;for(let r=0;r<t.length;r++){const o=t[r],u=e[r],w=[];for(const h of u)w.push(s.get(h));const y=o.get(...w);if(c){const h=m(y),A=n*h.re-i*h.im,x=n*h.im+i*h.re;n=A,i=x}else n*=Number(y)}d+=n,b+=i}return c?new $(d,b):d}function Xt(t,e){const g=new Array(e.length);let p=t;for(let c=e.length-1;c>=0;c--)g[c]=p%e[c],p=Math.floor(p/e[c]);return g}function xe(t,e){const g=t.shape,p=e.shape,c=g.length,m=p.length,f=k(t.dtype,e.dtype);if(c===2&&m===2){const r=Mt(t,e);if(r)return r}const d=Math.max(c,m),b=new Array(d),l=new Array(d).fill(1),s=new Array(d).fill(1);for(let r=0;r<c;r++)l[d-c+r]=g[r];for(let r=0;r<m;r++)s[d-m+r]=p[r];for(let r=0;r<d;r++)b[r]=l[r]*s[r];const a=z.zeros(b,f),n=g.reduce((r,o)=>r*o,1),i=p.reduce((r,o)=>r*o,1);for(let r=0;r<n;r++){let o=r;const u=new Array(c);for(let h=c-1;h>=0;h--)u[h]=o%g[h],o=Math.floor(o/g[h]);const w=new Array(d).fill(0);for(let h=0;h<c;h++)w[d-c+h]=u[h];const y=t.get(...u);for(let h=0;h<i;h++){let A=h;const x=new Array(m);for(let v=m-1;v>=0;v--)x[v]=A%p[v],A=Math.floor(A/p[v]);const N=new Array(d).fill(0);for(let v=0;v<m;v++)N[d-m+v]=x[v];const S=e.get(...x),I=new Array(d);for(let v=0;v<d;v++)I[v]=w[v]*s[v]+N[v];const D=J(y,S);a.set(I,D)}}return a}function Ne(t,e,g=-1,p=-1,c=-1,m){m!==void 0&&(g=m,p=m,c=m);const f=(I,D)=>I<0?D+I:I,d=f(g,t.ndim),b=f(p,e.ndim),l=k(t.dtype,e.dtype),s=q(l),a=(I,...D)=>{const v=I.get(...D);return v instanceof $||typeof v=="bigint"?v:Number(v)},n=(I,D)=>{if(I instanceof $||D instanceof $){const v=I instanceof $?I:new $(Number(I),0),C=D instanceof $?D:new $(Number(D),0);return v.mul(C)}return typeof I=="bigint"||typeof D=="bigint"?BigInt(I)*BigInt(D):I*D},i=(I,D)=>{if(I instanceof $||D instanceof $){const v=I instanceof $?I:new $(Number(I),0),C=D instanceof $?D:new $(Number(D),0);return v.sub(C)}return typeof I=="bigint"||typeof D=="bigint"?BigInt(I)-BigInt(D):I-D};if(t.ndim===1&&e.ndim===1){const I=t.shape[0],D=e.shape[0];if(I===3&&D===3){const v=a(t,0),C=a(t,1),M=a(t,2),E=a(e,0),j=a(e,1),V=a(e,2),F=z.zeros([3],l);return F.set([0],i(n(C,V),n(M,j))),F.set([1],i(n(M,E),n(v,V))),F.set([2],i(n(v,j),n(C,E))),F}else if(I===2&&D===2){const v=a(t,0),C=a(t,1),M=a(e,0),E=a(e,1);return i(n(v,E),n(C,M))}else if(I===2&&D===3||I===3&&D===2){const v=a(t,0),C=a(t,1),M=I===3?a(t,2):s?new $(0,0):_(l)?0n:0,E=a(e,0),j=a(e,1),V=D===3?a(e,2):s?new $(0,0):_(l)?0n:0,F=z.zeros([3],l);return F.set([0],i(n(C,V),n(M,j))),F.set([1],i(n(M,E),n(v,V))),F.set([2],i(n(v,j),n(C,E))),F}else throw new Error(`cross: incompatible dimensions for cross product: ${I} and ${D}`)}const r=t.shape[d],o=e.shape[b];if(r!==2&&r!==3||o!==2&&o!==3)throw new Error(`cross: incompatible dimensions for cross product: ${r} and ${o}`);const u=r===2&&o===2?0:3,w=[...t.shape.slice(0,d),...t.shape.slice(d+1)],y=[...e.shape.slice(0,b),...e.shape.slice(b+1)];if(w.length!==y.length)throw new Error("cross: incompatible shapes for cross product");for(let I=0;I<w.length;I++)if(w[I]!==y[I])throw new Error("cross: incompatible shapes for cross product");const h=w;if(r===3&&o===3&&d===t.ndim-1&&b===e.ndim-1){const I=h.reduce((v,C)=>v*C,1),D=Ct(t,e,I);if(D)return D}const A=c<0?h.length+1+c:c;let x;if(u===0?x=h:x=[...h.slice(0,A),u,...h.slice(A)],x.length===0)throw new Error("cross: unexpected scalar result from higher-dimensional input");const N=z.zeros(x,l),S=h.reduce((I,D)=>I*D,1);for(let I=0;I<S;I++){let D=I;const v=[];for(let P=h.length-1;P>=0;P--)v[P]=D%h[P],D=Math.floor(D/h[P]);const C=[...v.slice(0,d),0,...v.slice(d)],M=[...v.slice(0,b),0,...v.slice(b)],E=P=>(C[d]=P,a(t,...C)),j=P=>(M[b]=P,a(e,...M)),V=E(0),F=E(1),T=r===3?E(2):s?new $(0,0):_(l)?0n:0,B=j(0),W=j(1),U=o===3?j(2):s?new $(0,0):_(l)?0n:0;if(u===0)N.set(v,i(n(V,W),n(F,B)));else{const P=i(n(F,U),n(T,W)),wt=i(n(T,B),n(V,U)),At=i(n(V,W),n(F,B)),rt=(St,xt)=>{const Nt=[...v.slice(0,A),St,...v.slice(A)];N.set(Nt,xt)};rt(0,P),rt(1,wt),rt(2,At)}}return N}function Z(t,e=2,g,p=!1){if(typeof e!="number")throw new Error("vector_norm: ord must be a number");if(g==null){const l=t.ndim===1?t:R.ravel(t),s=l.size;let a;if(e===1/0){a=0;for(let n=0;n<s;n++)a=Math.max(a,Math.abs(Number(l.get(n))))}else if(e===-1/0){a=1/0;for(let n=0;n<s;n++)a=Math.min(a,Math.abs(Number(l.get(n))))}else if(e===0){a=0;for(let n=0;n<s;n++)Number(l.get(n))!==0&&a++}else if(e===1){a=0;for(let n=0;n<s;n++)a+=Math.abs(Number(l.get(n)))}else if(e===2){a=0;for(let n=0;n<s;n++){const i=Number(l.get(n));a+=i*i}a=Math.sqrt(a)}else{a=0;for(let n=0;n<s;n++)a+=Math.pow(Math.abs(Number(l.get(n))),e);a=Math.pow(a,1/e)}if(p){const n=new Array(t.ndim).fill(1),i=z.zeros(n,"float64");return i.set(new Array(t.ndim).fill(0),a),i}return a}const c=g<0?t.ndim+g:g;if(c<0||c>=t.ndim)throw new Error(`vector_norm: axis ${g} out of bounds for array with ${t.ndim} dimensions`);const m=p?[...t.shape.slice(0,c),1,...t.shape.slice(c+1)]:[...t.shape.slice(0,c),...t.shape.slice(c+1)];if(m.length===0)return Z(t,e,null,!1);const f=z.zeros(m,"float64"),d=t.shape[c],b=m.reduce((l,s)=>l*s,1);for(let l=0;l<b;l++){let s=l;const a=[];for(let r=m.length-1;r>=0;r--)a[r]=s%m[r],s=Math.floor(s/m[r]);const n=p?[...a.slice(0,c),0,...a.slice(c+1)]:[...a.slice(0,c),0,...a.slice(c)];let i;if(e===1/0){i=0;for(let r=0;r<d;r++)n[c]=r,i=Math.max(i,Math.abs(Number(t.get(...n))))}else if(e===-1/0){i=1/0;for(let r=0;r<d;r++)n[c]=r,i=Math.min(i,Math.abs(Number(t.get(...n))))}else if(e===0){i=0;for(let r=0;r<d;r++)n[c]=r,Number(t.get(...n))!==0&&i++}else if(e===1){i=0;for(let r=0;r<d;r++)n[c]=r,i+=Math.abs(Number(t.get(...n)))}else if(e===2){i=0;for(let r=0;r<d;r++){n[c]=r;const o=Number(t.get(...n));i+=o*o}i=Math.sqrt(i)}else{i=0;for(let r=0;r<d;r++)n[c]=r,i+=Math.pow(Math.abs(Number(t.get(...n))),e);i=Math.pow(i,1/e)}f.set(a,i)}return f}function H(t,e="fro",g=!1){if(t.ndim<2)throw new Error(`matrix_norm: input must be at least 2D, got ${t.ndim}D`);if(t.ndim>2){const f=Array.from(t.shape).slice(0,-2),d=t.shape[t.ndim-2],b=t.shape[t.ndim-1],l=f.reduce((n,i)=>n*i,1),s=new Float64Array(l),a=O(t);for(let n=0;n<l;n++){const i=n*d*b,r=z.fromData(a.slice(i,i+d*b),[d,b],"float64");s[n]=H(r,e,!1)}if(g){const n=[...f,1,1],i=z.fromData(s,f,"float64");return R.reshape(i,n)}return z.fromData(s,f,"float64")}const[p,c]=t.shape;let m;if(e==="fro"){m=0;for(let f=0;f<p;f++)for(let d=0;d<c;d++){const b=Number(t.get(f,d));m+=b*b}m=Math.sqrt(m)}else if(e==="nuc"){const{s:f}=Q(t);m=0;for(let d=0;d<f.size;d++)m+=Number(f.get(d))}else if(e===1){m=0;for(let f=0;f<c;f++){let d=0;for(let b=0;b<p;b++)d+=Math.abs(Number(t.get(b,f)));m=Math.max(m,d)}}else if(e===-1){m=1/0;for(let f=0;f<c;f++){let d=0;for(let b=0;b<p;b++)d+=Math.abs(Number(t.get(b,f)));m=Math.min(m,d)}}else if(e===1/0){m=0;for(let f=0;f<p;f++){let d=0;for(let b=0;b<c;b++)d+=Math.abs(Number(t.get(f,b)));m=Math.max(m,d)}}else if(e===-1/0){m=1/0;for(let f=0;f<p;f++){let d=0;for(let b=0;b<c;b++)d+=Math.abs(Number(t.get(f,b)));m=Math.min(m,d)}}else if(e===2){const{s:f}=Q(t);m=Number(f.get(0))}else if(e===-2){const{s:f}=Q(t);m=Number(f.get(f.size-1))}else throw new Error(`matrix_norm: invalid ord value: ${e}`);if(g){const f=z.zeros([1,1],"float64");return f.set([0,0],m),f}return m}function Ie(t,e=null,g=null,p=!1){if(e===null){if(g===null)return Z(t,2,null,p);if(typeof g=="number")return Z(t,2,g,p);e="fro"}if(Array.isArray(g)){if(g.length!==2)throw new Error("norm: axis must be a 2-tuple for matrix norms");const c=g[0]<0?t.ndim+g[0]:g[0],m=g[1]<0?t.ndim+g[1]:g[1],f=e??"fro";if(t.ndim===2)return H(t,f,p);const d=t.ndim,b=Array.from({length:d},(u,w)=>w).filter(u=>u!==c&&u!==m),l=b.map(u=>t.shape[u]),s=l.reduce((u,w)=>u*w,1)||1,a=t.shape[c],n=t.shape[m],i=[...b,c,m],r=G(t,i),o=new Float64Array(s);for(let u=0;u<s;u++){const w=new Array(l.length);let y=u;for(let x=l.length-1;x>=0;x--)w[x]=y%l[x],y=Math.floor(y/l[x]);const h=z.zeros([a,n],"float64");for(let x=0;x<a;x++)for(let N=0;N<n;N++)h.set([x,N],Number(r.get(...w,x,N)));const A=H(h,f,!1);o[u]=typeof A=="number"?A:Number(A)}if(p){const u=Array.from(t.shape);return u[c]=1,u[m]=1,z.fromData(o,u,"float64")}return l.length===0?o[0]:z.fromData(o,l,"float64")}if(t.ndim===2&&g===null&&(e==="fro"||e==="nuc"))return H(t,e,p);if(typeof e!="number"&&e!==null)throw new Error(`norm: ord '${e}' not valid for vector norm`);return Z(t,e??2,g,p)}function ht(t,e="reduced"){if(t.ndim>2){const i=t.shape.slice(0,-2),[r,o]=[t.shape[t.ndim-2],t.shape[t.ndim-1]],u=Math.min(r,o),w=i.reduce((x,N)=>x*N,1),y=e==="complete"?r:u,h=z.zeros([...i,r,y],"float64"),A=z.zeros([...i,y,o],"float64");for(let x=0;x<w;x++){const N=Y(x,i),S=z.zeros([r,o],"float64");for(let D=0;D<r;D++)for(let v=0;v<o;v++)S.set([D,v],Number(t.get(...N,D,v)));const I=ht(S,e);for(let D=0;D<r;D++)for(let v=0;v<y;v++)h.set([...N,D,v],Number(I.q.get(D,v)));for(let D=0;D<y;D++)for(let v=0;v<o;v++)A.set([...N,D,v],Number(I.r.get(D,v)))}return{q:h,r:A}}if(t.ndim!==2)throw new Error(`qr: input must be 2D, got ${t.ndim}D`);if(e==="reduced"){const i=Et(t);if(i)return i}const[g,p]=t.shape,c=Math.min(g,p),m=z.zeros([g,p],"float64");for(let i=0;i<g;i++)for(let r=0;r<p;r++)m.set([i,r],Number(t.get(i,r)));const f=[],d=[];for(let i=0;i<c;i++){const r=g-i,o=[];for(let x=i;x<g;x++)o.push(Number(m.get(x,i)));let u=0;for(let x=0;x<r;x++)u+=o[x]*o[x];if(u=Math.sqrt(u),u<1e-15){f.push(o),d.push(0);continue}const w=o[0]>=0?1:-1,y=o[0]+w*u,h=[1];for(let x=1;x<r;x++)h.push(o[x]/y);const A=w*y/u;d.push(A),f.push(h);for(let x=i;x<p;x++){let N=0;for(let S=0;S<r;S++)N+=h[S]*Number(m.get(i+S,x));for(let S=0;S<r;S++)m.set([i+S,x],Number(m.get(i+S,x))-A*h[S]*N)}}if(e==="raw"){const i=z.zeros([g,p],"float64");for(let o=0;o<g;o++)for(let u=0;u<p;u++)i.set([o,u],Number(m.get(o,u)));const r=z.zeros([c],"float64");for(let o=0;o<c;o++)r.set([o],d[o]);return{h:i,tau:r}}if(e==="r"){const i=z.zeros([c,p],"float64");for(let r=0;r<c;r++)for(let o=r;o<p;o++)i.set([r,o],Number(m.get(r,o)));return i}const b=e==="complete"?g:c,l=z.zeros([g,b],"float64");for(let i=0;i<Math.min(g,b);i++)l.set([i,i],1);for(let i=c-1;i>=0;i--){const r=f[i],o=d[i],u=g-i;for(let w=i;w<b;w++){let y=0;for(let h=0;h<u;h++)y+=r[h]*Number(l.get(i+h,w));for(let h=0;h<u;h++)l.set([i+h,w],Number(l.get(i+h,w))-o*r[h]*y)}}const s=z.zeros([g,b],"float64");for(let i=0;i<g;i++)for(let r=0;r<b;r++)s.set([i,r],Number(l.get(i,r)));const a=e==="complete"?g:c,n=z.zeros([a,p],"float64");for(let i=0;i<a;i++)for(let r=0;r<p;r++)r>=i&&n.set([i,r],Number(m.get(i,r)));return{q:s,r:n}}function Wt(t,e=!1){if(t.ndim<2)throw new Error(`cholesky: input must be at least 2D, got ${t.ndim}D`);if(t.ndim>2){const d=Array.from(t.shape).slice(0,-2),b=t.shape[t.ndim-1],l=t.shape[t.ndim-2];if(l!==b)throw new Error(`cholesky: last 2 dimensions must be square, got ${l}x${b}`);const s=d.reduce((i,r)=>i*r,1),a=new Float64Array(s*b*b),n=O(t);for(let i=0;i<s;i++){const r=i*b*b,o=z.fromData(n.slice(r,r+b*b),[b,b],"float64"),u=Wt(o,e);a.set(O(u),r)}return z.fromData(a,[...d,b,b],"float64")}const[g,p]=t.shape;if(g!==p)throw new Error(`cholesky: matrix must be square, got ${g}x${p}`);const c=jt(t);if(c){if(e){const d=g,b=z.zeros([d,d],"float64");for(let l=0;l<d;l++)for(let s=l;s<d;s++)b.set([l,s],Number(c.get(s,l)));return b}return c}const m=g,f=z.zeros([m,m],"float64");for(let d=0;d<m;d++)for(let b=0;b<=d;b++){let l=0;if(d===b){for(let a=0;a<b;a++)l+=Number(f.get(b,a))**2;const s=Number(t.get(b,b))-l;if(s<0)throw new Error("cholesky: matrix is not positive definite");f.set([b,b],Math.sqrt(s))}else{for(let a=0;a<b;a++)l+=Number(f.get(d,a))*Number(f.get(b,a));const s=Number(f.get(b,b));if(Math.abs(s)<1e-15)throw new Error("cholesky: matrix is not positive definite");f.set([d,b],(Number(t.get(d,b))-l)/s)}}if(e){const d=z.zeros([m,m],"float64");for(let b=0;b<m;b++)for(let l=b;l<m;l++)d.set([b,l],Number(f.get(l,b)));return d}return f}function Q(t){if(t.ndim!==2)throw new Error(`svd: input must be 2D, got ${t.ndim}D`);const e=Vt(t);if(e)return e;const[g,p]=t.shape,c=Math.min(g,p),m=z.zeros([p,p],"float64");for(let n=0;n<p;n++)for(let i=0;i<p;i++){let r=0;for(let o=0;o<g;o++)r+=Number(t.get(o,n))*Number(t.get(o,i));m.set([n,i],r)}const{values:f,vectors:d}=st(m),b=Array.from({length:p},(n,i)=>i);b.sort((n,i)=>f[i]-f[n]);const l=z.zeros([c],"float64");for(let n=0;n<c;n++){const i=f[b[n]];l.set([n],Math.sqrt(Math.max(0,i)))}const s=z.zeros([p,p],"float64");for(let n=0;n<p;n++)for(let i=0;i<p;i++)s.set([n,i],d[i][b[n]]);const a=z.zeros([g,g],"float64");for(let n=0;n<g;n++)for(let i=0;i<c;i++){const r=Number(l.get(i));if(r>1e-10){let o=0;for(let u=0;u<p;u++)o+=Number(t.get(n,u))*Number(s.get(i,u));a.set([n,i],o/r)}}if(g>c)for(let n=c;n<g;n++){const i=new Array(g).fill(0);i[n]=1;for(let o=0;o<n;o++){let u=0;for(let w=0;w<g;w++)u+=i[w]*Number(a.get(w,o));for(let w=0;w<g;w++)i[w]=i[w]-u*Number(a.get(w,o))}let r=0;for(let o=0;o<g;o++)r+=i[o]*i[o];if(r=Math.sqrt(r),r>1e-10)for(let o=0;o<g;o++)a.set([o,n],i[o]/r)}return{u:a,s:l,vt:s}}function st(t){const e=t.shape[0],g=100*e*e,p=1e-10,c=[];for(let d=0;d<e;d++){c.push([]);for(let b=0;b<e;b++)c[d].push(Number(t.get(d,b)))}const m=[];for(let d=0;d<e;d++){m.push([]);for(let b=0;b<e;b++)m[d].push(d===b?1:0)}for(let d=0;d<g;d++){let b=0,l=0,s=1;for(let h=0;h<e;h++)for(let A=h+1;A<e;A++)Math.abs(c[h][A])>b&&(b=Math.abs(c[h][A]),l=h,s=A);if(b<p)break;const a=c[l][l],n=c[s][s],i=c[l][s];let r;Math.abs(a-n)<1e-15?r=Math.PI/4:r=.5*Math.atan2(2*i,n-a);const o=Math.cos(r),u=Math.sin(r),w=o*o*a+u*u*n-2*u*o*i,y=u*u*a+o*o*n+2*u*o*i;c[l][l]=w,c[s][s]=y,c[l][s]=0,c[s][l]=0;for(let h=0;h<e;h++)if(h!==l&&h!==s){const A=c[h][l],x=c[h][s];c[h][l]=o*A-u*x,c[l][h]=c[h][l],c[h][s]=u*A+o*x,c[s][h]=c[h][s]}for(let h=0;h<e;h++){const A=m[h][l],x=m[h][s];m[h][l]=o*A-u*x,m[h][s]=u*A+o*x}}const f=[];for(let d=0;d<e;d++)f.push(c[d][d]);return{values:f,vectors:m}}function gt(t,e=!0,g=!0){if(t.ndim>2){const c=t.shape.slice(0,-2),[m,f]=[t.shape[t.ndim-2],t.shape[t.ndim-1]],d=Math.min(m,f),b=c.reduce((r,o)=>r*o,1);if(!g){const r=z.zeros([...c,d],"float64");for(let o=0;o<b;o++){const u=Y(o,c),w=z.zeros([m,f],"float64");for(let h=0;h<m;h++)for(let A=0;A<f;A++)w.set([h,A],Number(t.get(...u,h,A)));const{s:y}=Q(w);for(let h=0;h<d;h++)r.set([...u,h],Number(y.get(h)))}return r}const l=e?m:d,s=e?f:d,a=z.zeros([...c,m,l],"float64"),n=z.zeros([...c,d],"float64"),i=z.zeros([...c,s,f],"float64");for(let r=0;r<b;r++){const o=Y(r,c),u=z.zeros([m,f],"float64");for(let y=0;y<m;y++)for(let h=0;h<f;h++)u.set([y,h],Number(t.get(...o,y,h)));const w=gt(u,e,!0);for(let y=0;y<m;y++)for(let h=0;h<l;h++)a.set([...o,y,h],Number(w.u.get(y,h)));for(let y=0;y<d;y++)n.set([...o,y],Number(w.s.get(y)));for(let y=0;y<s;y++)for(let h=0;h<f;h++)i.set([...o,y,h],Number(w.vt.get(y,h)))}return{u:a,s:n,vt:i}}const p=Q(t);if(!g)return p.s;if(!e){const[c,m]=t.shape,f=Math.min(c,m),d=z.zeros([c,f],"float64");for(let l=0;l<c;l++)for(let s=0;s<f;s++)d.set([l,s],Number(p.u.get(l,s)));const b=z.zeros([f,m],"float64");for(let l=0;l<f;l++)for(let s=0;s<m;s++)b.set([l,s],Number(p.vt.get(l,s)));return{u:d,s:p.s,vt:b}}return p}function Qt(t){if(t.ndim<2)throw new Error(`det: input must be at least 2D, got ${t.ndim}D`);if(t.ndim>2){const l=Array.from(t.shape).slice(0,-2),s=t.shape[t.ndim-1],a=t.shape[t.ndim-2];if(a!==s)throw new Error(`det: last 2 dimensions must be square, got ${a}x${s}`);const n=l.reduce((o,u)=>o*u,1),i=new Float64Array(n),r=O(t);for(let o=0;o<n;o++){const u=o*s*s,w=z.fromData(r.slice(u,u+s*s),[s,s],"float64");i[o]=Qt(w)}return z.fromData(i,l,"float64")}const[e,g]=t.shape;if(e!==g)throw new Error(`det: matrix must be square, got ${e}x${g}`);const p=e;if(p===0)return 1;const c=t.data;if(p===1)return Number(c[0]);if(p===2)return Number(c[0])*Number(c[3])-Number(c[1])*Number(c[2]);const{lu:m,sign:f}=tt(t),d=m.data;let b=f;for(let l=0;l<p;l++)b*=d[l*p+l];return b}function tt(t){const[e,g]=t.shape,p=e,c=g,m=z.zeros([p,c],"float64"),f=m.data,d=t.data;for(let s=0;s<p*c;s++)f[s]=Number(d[s]);const b=Array.from({length:p},(s,a)=>a);let l=1;for(let s=0;s<Math.min(p,c);s++){let a=Math.abs(f[s*c+s]),n=s;for(let r=s+1;r<p;r++){const o=Math.abs(f[r*c+s]);o>a&&(a=o,n=r)}if(n!==s){for(let o=0;o<c;o++){const u=f[s*c+o];f[s*c+o]=f[n*c+o],f[n*c+o]=u}const r=b[s];b[s]=b[n],b[n]=r,l=-l}const i=f[s*c+s];if(Math.abs(i)>1e-15)for(let r=s+1;r<p;r++){const o=f[r*c+s]/i;f[r*c+s]=o;for(let u=s+1;u<c;u++)f[r*c+u]=f[r*c+u]-o*f[s*c+u]}}return{lu:m,piv:b,sign:l}}function et(t){if(t.ndim<2)throw new Error(`inv: input must be at least 2D, got ${t.ndim}D`);if(t.ndim>2){const l=Array.from(t.shape).slice(0,-2),s=t.shape[t.ndim-1],a=t.shape[t.ndim-2];if(a!==s)throw new Error(`inv: last 2 dimensions must be square, got ${a}x${s}`);const n=l.reduce((o,u)=>o*u,1),i=O(t),r=new Float64Array(n*s*s);for(let o=0;o<n;o++){const u=o*s*s,w=z.fromData(i.slice(u,u+s*s),[s,s],"float64"),h=et(w).data;for(let A=0;A<s*s;A++)r[u+A]=h[A]}return z.fromData(r,Array.from(t.shape),"float64")}const[e,g]=t.shape;if(e!==g)throw new Error(`inv: matrix must be square, got ${e}x${g}`);const p=e,{lu:c,piv:m}=tt(t),f=c.data,d=z.zeros([p,p],"float64"),b=d.data;for(let l=0;l<p;l++){const s=new Float64Array(p);for(let a=0;a<p;a++){let n=m[a]===l?1:0;for(let i=0;i<a;i++)n-=f[a*p+i]*s[i];s[a]=n}for(let a=p-1;a>=0;a--){let n=s[a];for(let r=a+1;r<p;r++)n-=f[a*p+r]*b[r*p+l];const i=f[a*p+a];if(Math.abs(i)<1e-15)throw new Error("inv: singular matrix");b[a*p+l]=n/i}}return d}function dt(t,e){const[g]=t.shape,p=g,{lu:c,piv:m}=tt(t),f=c.data,d=e.data,b=new Float64Array(p);for(let n=0;n<p;n++)b[n]=Number(d[m[n]]);const l=new Float64Array(p);for(let n=0;n<p;n++){let i=b[n];for(let r=0;r<n;r++)i-=f[n*p+r]*l[r];l[n]=i}const s=z.zeros([p],"float64"),a=s.data;for(let n=p-1;n>=0;n--){let i=l[n];for(let o=n+1;o<p;o++)i-=f[n*p+o]*a[o];const r=f[n*p+n];if(Math.abs(r)<1e-15)throw new Error("solve: singular matrix");a[n]=i/r}return s}function Gt(t,e){if(t.ndim!==2)throw new Error(`solve: coefficient matrix must be 2D, got ${t.ndim}D`);const[g,p]=t.shape;if(g!==p)throw new Error(`solve: coefficient matrix must be square, got ${g}x${p}`);const c=g;if(e.ndim===1){if(e.shape[0]!==c)throw new Error(`solve: incompatible shapes (${g},${p}) and (${e.shape[0]},)`);return dt(t,e)}if(e.ndim===2){if(e.shape[0]!==c)throw new Error(`solve: incompatible shapes (${g},${p}) and (${e.shape[0]},${e.shape[1]})`);const m=e.shape[1],f=z.zeros([c,m],"float64");for(let d=0;d<m;d++){const b=z.zeros([c],"float64");for(let s=0;s<c;s++)b.set([s],Number(e.get(s,d)));const l=dt(t,b);for(let s=0;s<c;s++)f.set([s,d],Number(l.get(s)))}return f}throw new Error(`solve: b must be 1D or 2D, got ${e.ndim}D`)}function De(t,e,g=null){if(t.ndim!==2)throw new Error(`lstsq: coefficient matrix must be 2D, got ${t.ndim}D`);const[p,c]=t.shape,{u:m,s:f,vt:d}=Q(t),b=Math.min(p,c),l=g??Math.max(p,c)*Number.EPSILON,a=Number(f.get(0))*l;let n=0;for(let y=0;y<b;y++)Number(f.get(y))>a&&n++;const i=e.ndim===1?R.reshape(e,[e.size,1]):e,r=i.shape[1];if(i.shape[0]!==p)throw new Error(`lstsq: incompatible shapes (${p},${c}) and (${e.shape.join(",")})`);const o=z.zeros([c,r],"float64");for(let y=0;y<r;y++){const h=new Array(p).fill(0);for(let A=0;A<p;A++)for(let x=0;x<p;x++)h[A]+=Number(m.get(x,A))*Number(i.get(x,y));for(let A=0;A<c;A++){let x=0;for(let N=0;N<b;N++){const S=Number(f.get(N));S>a&&(x+=Number(d.get(N,A))*h[N]/S)}o.set([A,y],x)}}let u;if(p>c){u=z.zeros([r],"float64");for(let y=0;y<r;y++){let h=0;for(let A=0;A<p;A++){let x=0;for(let S=0;S<c;S++)x+=Number(t.get(A,S))*Number(o.get(S,y));const N=x-Number(i.get(A,y));h+=N*N}u.set([y],h)}}else u=z.zeros([0],"float64");return{x:e.ndim===1?R.reshape(o,[c]):o,residuals:u,rank:n,s:f}}function ve(t,e=2){if(t.ndim!==2)throw new Error(`cond: input must be 2D, got ${t.ndim}D`);const[g,p]=t.shape;if(e===2||e===-2){const{s:d}=Q(t),b=Math.min(g,p),l=Number(d.get(0)),s=Number(d.get(b-1));return e===2?s>0?l/s:1/0:l>0?s/l:0}if(g!==p)throw new Error(`cond: matrix must be square for p=${e}`);const c=H(t,e),m=et(t),f=H(m,e);return c*f}function $e(t,e){if(t.ndim===0)return Number(t.get())!==0?1:0;if(t.ndim===1){for(let f=0;f<t.size;f++)if(Number(t.get(f))!==0)return 1;return 0}if(t.ndim!==2)throw new Error(`matrix_rank: input must be at most 2D, got ${t.ndim}D`);const{s:g}=Q(t),p=Number(g.get(0)),c=e??p*Math.max(t.shape[0],t.shape[1])*Number.EPSILON;let m=0;for(let f=0;f<g.size;f++)Number(g.get(f))>c&&m++;return m}function ze(t,e){if(t.ndim!==2)throw new Error(`matrix_power: input must be 2D, got ${t.ndim}D`);const[g,p]=t.shape;if(g!==p)throw new Error(`matrix_power: matrix must be square, got ${g}x${p}`);const c=g;if(!Number.isInteger(e))throw new Error("matrix_power: exponent must be an integer");if(e===0){const a=z.zeros([c,c],"float64");for(let n=0;n<c;n++)a.set([n,n],1);return a}let m=t,f=e;e<0&&(m=et(t),f=-e);const d=m.dtype==="float32"?"float32":"float64";let b=z.zeros([c,c],d);const l=b.data;for(let a=0;a<c;a++)l[a*c+a]=1;let s;if(m.isCContiguous&&(m.dtype==="float64"||m.dtype==="float32"))s=m.copy();else{s=z.zeros([c,c],d);const a=s.data,n=m.data,i=m.offset,[r=0,o=0]=m.strides;for(let u=0;u<c;u++)for(let w=0;w<c;w++)a[u*c+w]=Number(n[i+u*r+w*o])}for(;f>0;)f&1&&(b=X(b,s)),s=X(s,s),f>>=1;return b}function Ht(t,e=1e-15){if(t.ndim<2)throw new Error(`pinv: input must be at least 2D, got ${t.ndim}D`);if(t.ndim>2){const a=Array.from(t.shape).slice(0,-2),n=t.shape[t.ndim-2],i=t.shape[t.ndim-1],r=a.reduce((w,y)=>w*y,1),o=new Float64Array(r*i*n),u=O(t);for(let w=0;w<r;w++){const y=w*n*i,h=z.fromData(u.slice(y,y+n*i),[n,i],"float64"),A=Ht(h,e);o.set(O(A),w*i*n)}return z.fromData(o,[...a,i,n],"float64")}const[g,p]=t.shape,{u:c,s:m,vt:f}=Q(t),d=Math.min(g,p),l=Number(m.get(0))*e,s=z.zeros([p,g],"float64");for(let a=0;a<p;a++)for(let n=0;n<g;n++){let i=0;for(let r=0;r<d;r++){const o=Number(m.get(r));o>l&&(i+=Number(f.get(r,a))*Number(c.get(n,r))/o)}s.set([a,n],i)}return s}function bt(t){if(t.ndim<2)throw new Error(`eig: input must be at least 2D, got ${t.ndim}D`);if(t.ndim>2){const s=Array.from(t.shape).slice(0,-2),a=t.shape[t.ndim-1],n=t.shape[t.ndim-2];if(n!==a)throw new Error(`eig: last 2 dimensions must be square, got ${n}x${a}`);const i=s.reduce((w,y)=>w*y,1),r=new Float64Array(i*a),o=new Float64Array(i*a*a),u=O(t);for(let w=0;w<i;w++){const y=w*a*a,h=z.fromData(u.slice(y,y+a*a),[a,a],"float64"),{w:A,v:x}=bt(h);r.set(O(A),w*a),o.set(O(x),y)}return{w:z.fromData(r,[...s,a],"float64"),v:z.fromData(o,[...s,a,a],"float64")}}const[e,g]=t.shape;if(e!==g)throw new Error(`eig: matrix must be square, got ${e}x${g}`);const p=e;let c=!0;t:for(let s=0;s<p;s++)for(let a=s+1;a<p;a++)if(Math.abs(Number(t.get(s,a))-Number(t.get(a,s)))>1e-10){c=!1;break t}if(c){const{values:s,vectors:a}=st(t),n=z.zeros([p],"float64"),i=z.zeros([p,p],"float64");for(let r=0;r<p;r++){n.set([r],s[r]);for(let o=0;o<p;o++)i.set([o,r],a[o][r])}return{w:n,v:i}}const{values:m,vectors:f,hasComplexEigenvalues:d}=Kt(t);d&&console.warn("numpy-ts: eig() detected complex eigenvalues which cannot be represented. Results are real approximations and may be inaccurate. For symmetric matrices, use eigh() instead.");const b=z.zeros([p],"float64"),l=z.zeros([p,p],"float64");for(let s=0;s<p;s++){b.set([s],m[s]);for(let a=0;a<p;a++)l.set([a,s],f[a][s])}return{w:b,v:l}}function Kt(t){const e=t.shape[0],g=1e3,p=1e-10;let c=z.zeros([e,e],"float64");for(let l=0;l<e;l++)for(let s=0;s<e;s++)c.set([l,s],Number(t.get(l,s)));let m=z.zeros([e,e],"float64");for(let l=0;l<e;l++)m.set([l,l],1);for(let l=0;l<g;l++){let s=0;for(let r=0;r<e;r++)for(let o=0;o<e;o++)r!==o&&(s+=Number(c.get(r,o))**2);if(Math.sqrt(s)<p*e)break;const a=ht(c,"reduced"),n=a.q,i=a.r;c=X(i,n),m=X(m,n)}let f=!1;for(let l=0;l<e-1;l++){const s=Math.abs(Number(c.get(l+1,l))),a=Math.abs(Number(c.get(l,l))),n=Math.abs(Number(c.get(l+1,l+1))),i=Math.max(a,n,1e-10);if(s/i>1e-6){f=!0;break}}const d=[];for(let l=0;l<e;l++)d.push(Number(c.get(l,l)));const b=[];for(let l=0;l<e;l++){b.push([]);for(let s=0;s<e;s++)b[l].push(Number(m.get(l,s)))}return{values:d,vectors:b,hasComplexEigenvalues:f}}function yt(t,e="L"){if(t.ndim<2)throw new Error(`eigh: input must be at least 2D, got ${t.ndim}D`);if(t.ndim>2){const a=Array.from(t.shape).slice(0,-2),n=t.shape[t.ndim-1],i=t.shape[t.ndim-2];if(i!==n)throw new Error(`eigh: last 2 dimensions must be square, got ${i}x${n}`);const r=a.reduce((y,h)=>y*h,1),o=new Float64Array(r*n),u=new Float64Array(r*n*n),w=O(t);for(let y=0;y<r;y++){const h=y*n*n,A=z.fromData(w.slice(h,h+n*n),[n,n],"float64"),{w:x,v:N}=yt(A,e);o.set(O(x),y*n),u.set(O(N),h)}return{w:z.fromData(o,[...a,n],"float64"),v:z.fromData(u,[...a,n,n],"float64")}}const[g,p]=t.shape;if(g!==p)throw new Error(`eigh: matrix must be square, got ${g}x${p}`);const c=g,m=z.zeros([c,c],"float64");for(let a=0;a<c;a++)for(let n=0;n<c;n++)e==="L"?a>=n&&(m.set([a,n],Number(t.get(a,n))),m.set([n,a],Number(t.get(a,n)))):n>=a&&(m.set([a,n],Number(t.get(a,n))),m.set([n,a],Number(t.get(a,n))));const{values:f,vectors:d}=st(m),b=Array.from({length:c},(a,n)=>n);b.sort((a,n)=>f[a]-f[n]);const l=z.zeros([c],"float64"),s=z.zeros([c,c],"float64");for(let a=0;a<c;a++){l.set([a],f[b[a]]);for(let n=0;n<c;n++)s.set([n,a],d[n][b[a]])}return{w:l,v:s}}function Me(t){const{w:e}=bt(t);return e}function Ce(t,e="L"){const{w:g}=yt(t,e);return g}function Ee(t,e){const g=R.flatten(t),p=R.flatten(e),c=g.shape[0],m=p.shape[0];if(c!==m)throw new Error(`vdot: arrays must have same number of elements, got ${c} and ${m}`);const f=q(t.dtype)||q(e.dtype);if(f){const s=zt(g,p);if(s!==null)return s}else{const s=nt(g,p);if(s!==null)return s}if(f){let s=0,a=0;for(let n=0;n<c;n++){const i=g.get(n),r=p.get(n),o=i instanceof $?i.re:Number(i),u=i instanceof $?i.im:0,w=r instanceof $?r.re:Number(r),y=r instanceof $?r.im:0;s+=o*w+u*y,a+=-u*w+o*y}return Math.abs(a)<1e-15?s:new $(s,a)}const d=k(t.dtype,e.dtype),b=L(d);if(b){b[0]=0;for(let s=0;s<c;s++)b[0]+=Number(g.get(s))*Number(p.get(s));return b[0]}let l=0;for(let s=0;s<c;s++){const a=g.get(s),n=p.get(s);typeof a=="bigint"&&typeof n=="bigint"?l=(typeof l=="bigint"?l:BigInt(l))+a*n:l=(typeof l=="bigint"?Number(l):l)+Number(a)*Number(n)}return l}function je(t,e,g=-1){const p=t.ndim,c=e.ndim,m=g<0?p+g:g,f=g<0?c+g:g;if(m<0||m>=p)throw new Error(`vecdot: axis ${g} out of bounds for array with ${p} dimensions`);if(f<0||f>=c)throw new Error(`vecdot: axis ${g} out of bounds for array with ${c} dimensions`);const d=t.shape[m],b=e.shape[f];if(d!==b)throw new Error(`vecdot: axis dimensions must match, got ${d} and ${b}`);if(p===1&&c===1){if(!(q(t.dtype)||q(e.dtype)))return K(t,e);const h=t.shape[0];let A=0,x=0;for(let N=0;N<h;N++){const S=t.get(N),I=e.get(N),D=S instanceof $?new $(S.re,-S.im):S,v=J(D,I);v instanceof $?(A+=v.re,x+=v.im):A+=Number(v)}return new $(A,x)}if(p===2&&c===2&&g===-1){const y=$t(t,e);if(y)return y}const l=[...t.shape.slice(0,m),...t.shape.slice(m+1)],s=[...e.shape.slice(0,f),...e.shape.slice(f+1)],a=d,n=q(t.dtype)||q(e.dtype),i=k(t.dtype,e.dtype),r=l.length>s.length?l:s,o=L(i);if(r.length===0){if(o){o[0]=0;for(let h=0;h<a;h++)o[0]+=Number(t.get(h))*Number(e.get(h));return o[0]}let y=n?new $(0,0):_(i)?0n:0;for(let h=0;h<a;h++){const A=t.get(h),x=e.get(h),N=A instanceof $?new $(A.re,-A.im):A,S=J(N,x);if(y instanceof $||S instanceof $){const I=y instanceof $?y:new $(Number(y),0),D=S instanceof $?S:new $(Number(S),0);y=I.add(D)}else typeof y=="bigint"||typeof S=="bigint"?y=BigInt(y)+BigInt(S):y=y+S}return y}const u=z.zeros(r,i),w=r.reduce((y,h)=>y*h,1);for(let y=0;y<w;y++){const h=[];let A=y;for(let S=r.length-1;S>=0;S--)h.unshift(A%r[S]),A=Math.floor(A/r[S]);const x=[...h.slice(0,m),0,...h.slice(m)],N=[...h.slice(0,f),0,...h.slice(f)];if(o){o[0]=0;for(let S=0;S<a;S++)x[m]=S,N[f]=S,o[0]+=Number(t.get(...x))*Number(e.get(...N));u.set(h,o[0])}else{let S=n?new $(0,0):_(i)?0n:0;for(let I=0;I<a;I++){x[m]=I,N[f]=I;const D=t.get(...x),v=e.get(...N),C=D instanceof $?new $(D.re,-D.im):D,M=J(C,v);if(S instanceof $||M instanceof $){const E=S instanceof $?S:new $(Number(S),0),j=M instanceof $?M:new $(Number(M),0);S=E.add(j)}else typeof S=="bigint"||typeof M=="bigint"?S=BigInt(S)+BigInt(M):S=S+M}u.set(h,S)}}return u}function Ve(t){if(t.ndim<2)throw new Error(`matrix_transpose: input must have at least 2 dimensions, got ${t.ndim}D`);const e=Array.from({length:t.ndim},(p,c)=>c),g=e.length-1;return e[g]=g-1,e[g-1]=g,G(t,e)}function Fe(t,e){return G(t,e)}function Be(t,e){if(t.ndim<2)throw new Error(`matvec: x1 must have at least 2 dimensions, got ${t.ndim}D`);if(e.ndim<1)throw new Error(`matvec: x2 must have at least 1 dimension, got ${e.ndim}D`);const g=t.shape[t.ndim-2],p=t.shape[t.ndim-1],c=e.shape[e.ndim-1];if(p!==c)throw new Error(`matvec: last axis of x1 (${p}) must match last axis of x2 (${c})`);if(t.ndim===2&&e.ndim===1)return K(t,e);const m=t.shape.slice(0,-2),f=e.shape.slice(0,-1),d=Math.max(m.length,f.length),b=[...Array(d-m.length).fill(1),...m],l=[...Array(d-f.length).fill(1),...f],s=[];for(let u=0;u<d;u++){const w=b[u],y=l[u];if(w!==1&&y!==1&&w!==y)throw new Error(`matvec: batch dimensions not broadcastable: ${m} vs ${f}`);s.push(Math.max(w,y))}const a=[...s,g],n=k(t.dtype,e.dtype),i=z.zeros(a,n),r=q(n),o=s.reduce((u,w)=>u*w,1);for(let u=0;u<o;u++){const w=[];let y=u;for(let N=s.length-1;N>=0;N--)w.unshift(y%s[N]),y=Math.floor(y/s[N]);const h=w.slice(-(m.length||1)).map((N,S)=>(m[S]??1)===1?0:N),A=w.slice(-(f.length||1)).map((N,S)=>(f[S]??1)===1?0:N),x=L(n);for(let N=0;N<g;N++)if(x){x[0]=0;for(let S=0;S<p;S++){const I=[...h,N,S],D=[...A,S];x[0]+=Number(t.get(...I))*Number(e.get(...D))}i.set([...w,N],x[0])}else{let S=r?new $(0,0):_(n)?0n:0;for(let I=0;I<p;I++){const D=[...h,N,I],v=[...A,I],C=t.get(...D),M=e.get(...v),E=J(C,M);if(S instanceof $||E instanceof $){const j=S instanceof $?S:new $(Number(S),0),V=E instanceof $?E:new $(Number(E),0);S=j.add(V)}else typeof S=="bigint"||typeof E=="bigint"?S=BigInt(S)+BigInt(E):S=S+E}i.set([...w,N],S)}}return i}function Re(t,e){if(t.ndim<1)throw new Error(`vecmat: x1 must have at least 1 dimension, got ${t.ndim}D`);if(e.ndim<2)throw new Error(`vecmat: x2 must have at least 2 dimensions, got ${e.ndim}D`);const g=t.shape[t.ndim-1],p=e.shape[e.ndim-2],c=e.shape[e.ndim-1];if(g!==p)throw new Error(`vecmat: last axis of x1 (${g}) must match second-to-last axis of x2 (${p})`);if(t.ndim===1&&e.ndim===2)return K(t,e);const m=t.shape.slice(0,-1),f=e.shape.slice(0,-2),d=Math.max(m.length,f.length),b=[...Array(d-m.length).fill(1),...m],l=[...Array(d-f.length).fill(1),...f],s=[];for(let u=0;u<d;u++){const w=b[u],y=l[u];if(w!==1&&y!==1&&w!==y)throw new Error(`vecmat: batch dimensions not broadcastable: ${m} vs ${f}`);s.push(Math.max(w,y))}const a=[...s,c],n=k(t.dtype,e.dtype),i=z.zeros(a,n),r=q(n),o=s.reduce((u,w)=>u*w,1);for(let u=0;u<o;u++){const w=[];let y=u;for(let N=s.length-1;N>=0;N--)w.unshift(y%s[N]),y=Math.floor(y/s[N]);const h=w.slice(-(m.length||1)).map((N,S)=>(m[S]??1)===1?0:N),A=w.slice(-(f.length||1)).map((N,S)=>(f[S]??1)===1?0:N),x=L(n);for(let N=0;N<c;N++)if(x){x[0]=0;for(let S=0;S<g;S++){const I=[...h,S],D=[...A,S,N];x[0]+=Number(t.get(...I))*Number(e.get(...D))}i.set([...w,N],x[0])}else{let S=r?new $(0,0):_(n)?0n:0;for(let I=0;I<g;I++){const D=[...h,I],v=[...A,I,N],C=t.get(...D),M=e.get(...v),E=J(C,M);if(S instanceof $||E instanceof $){const j=S instanceof $?S:new $(Number(S),0),V=E instanceof $?E:new $(Number(E),0);S=j.add(V)}else typeof S=="bigint"||typeof E=="bigint"?S=BigInt(S)+BigInt(E):S=S+E}i.set([...w,N],S)}}return i}function Yt(t){if(t.ndim<2)throw new Error(`slogdet: input must be at least 2D, got ${t.ndim}D`);if(t.ndim>2){const l=Array.from(t.shape).slice(0,-2),s=t.shape[t.ndim-1],a=t.shape[t.ndim-2];if(a!==s)throw new Error(`slogdet: last 2 dimensions must be square, got ${a}x${s}`);const n=l.reduce((u,w)=>u*w,1),i=new Float64Array(n),r=new Float64Array(n),o=O(t);for(let u=0;u<n;u++){const w=u*s*s,y=z.fromData(o.slice(w,w+s*s),[s,s],"float64"),{sign:h,logabsdet:A}=Yt(y);i[u]=h,r[u]=A}return{sign:z.fromData(i,l,"float64"),logabsdet:z.fromData(r,l,"float64")}}const[e,g]=t.shape;if(e!==g)throw new Error(`slogdet: matrix must be square, got ${e}x${g}`);const p=e;if(p===0)return{sign:1,logabsdet:0};const{lu:c,sign:m}=tt(t),f=c.data;let d=0,b=m;for(let l=0;l<p;l++){const s=f[l*p+l];if(s===0)return{sign:0,logabsdet:-1/0};s<0&&(b=-b),d+=Math.log(Math.abs(s))}return{sign:b,logabsdet:d}}function ke(t){return gt(t,!0,!1)}function qe(t){if(t.length<2)throw new Error("multi_dot: need at least 2 arrays");if(t.length===2)return X(t[0],t[1]);let e=t[0];for(let g=1;g<t.length;g++)e=X(e,t[g]);return e}function Te(t,e=2){if(e<=0)throw new Error(`tensorinv: ind must be positive, got ${e}`);const g=t.shape,p=t.ndim;if(p<e)throw new Error(`tensorinv: array has ${p} dimensions, ind=${e} is too large`);let c=1;for(let l=0;l<e;l++)c*=g[l];let m=1;for(let l=e;l<p;l++)m*=g[l];if(c!==m)throw new Error(`tensorinv: product of first ${e} dimensions (${c}) must equal product of remaining dimensions (${m})`);const f=R.reshape(t,[c,m]),d=et(f),b=[...g.slice(e),...g.slice(0,e)];return R.reshape(d,b)}function _e(t,e,g){const p=t.shape,c=e.shape,m=t.ndim,f=e.ndim;let d;g==null?d=Array.from({length:f},(h,A)=>m-f+A):d=g.map(h=>h<0?m+h:h);const b=[];for(let h=0;h<m;h++)d.includes(h)||b.push(h);const l=[...b,...d],s=G(t,l),n=d.map(h=>p[h]).reduce((h,A)=>h*A,1),r=b.map(h=>p[h]).reduce((h,A)=>h*A,1),o=c.reduce((h,A)=>h*A,1);if(n!==o)throw new Error(`tensorsolve: dimensions don't match - sum dimensions product (${n}) != b total elements (${o})`);if(r!==n)throw new Error(`tensorsolve: non-square problem - other dimensions product (${r}) != sum dimensions product (${n})`);const u=R.reshape(s,[r,n]),w=R.reshape(e,[n]),y=Gt(u,w);return R.reshape(y,[...c])}function Oe(t,...e){const g=t.indexOf("->");let p,c;g===-1?(p=t,c=pt(p)):(p=t.slice(0,g),c=t.slice(g+2));const m=p.split(",").map(n=>n.trim());if(m.length!==e.length)throw new Error(`einsum_path: expected ${m.length} operands, got ${e.length}`);const f=e.map(n=>Array.isArray(n)?n:Array.from(n.shape)),d=new Map;for(let n=0;n<e.length;n++){const i=m[n],r=f[n];if(i.length!==r.length)throw new Error(`einsum_path: operand ${n} has ${r.length} dimensions but subscript '${i}' has ${i.length} indices`);for(let o=0;o<i.length;o++){const u=i[o],w=r[o];if(d.has(u)&&d.get(u)!==w)throw new Error(`einsum_path: size mismatch for index '${u}': ${d.get(u)} vs ${w}`);d.set(u,w)}}if(e.length===1){const n=[[0]];return[n,it(t,f,n,d)]}if(e.length===2){const n=[[0,1]];return[n,it(t,f,n,d)]}const b=[],l=[...m],s=[...f],a=e.map((n,i)=>i);for(;l.length>1;){let n=0,i=1,r=1/0;for(let w=0;w<l.length;w++)for(let y=w+1;y<l.length;y++){const h=Zt(l[w],l[y],s[w],s[y],c,d);h<r&&(r=h,n=w,i=y)}b.push([a[n],a[i]]);const[o,u]=te(l[n],l[i],s[n],s[i],c,d);l.splice(i,1),l.splice(n,1),s.splice(i,1),s.splice(n,1),a.splice(i,1),a.splice(n,1),l.push(o),s.push(u),a.push(-1)}return[b,it(t,f,b,d)]}function Zt(t,e,g,p,c,m){const f=new Set(t),d=new Set(e);let b=1;for(const l of f)b*=m.get(l)||1;for(const l of d)f.has(l)||(b*=m.get(l)||1);return b}function te(t,e,g,p,c,m){const f=new Set([...t,...e]),d=new Map;for(const a of t)d.set(a,(d.get(a)||0)+1);for(const a of e)d.set(a,(d.get(a)||0)+1);const b=new Set(c),l=[];for(const a of f)(b.has(a)||d.get(a)===1)&&l.push(a);l.sort();const s=l.map(a=>m.get(a));return[l.join(""),s]}function it(t,e,g,p){const c=[];c.push(" Complete contraction: "+t),c.push(" Operand shapes: "+e.map(f=>`(${f.join(", ")})`).join(", ")),c.push(" Contraction path: "+JSON.stringify(g));let m=0;for(const f of e)m+=f.reduce((d,b)=>d*b,1);return c.push(" Estimated FLOPS: ~"+m.toExponential(2)),c.join(`
|
|
2
|
+
`)}export{Wt as cholesky,ve as cond,Ne as cross,Qt as det,Ae as diagonal,K as dot,bt as eig,yt as eigh,Me as eigvals,Ce as eigvalsh,Se as einsum,Oe as einsum_path,ye as inner,et as inv,xe as kron,De as lstsq,X as matmul,H as matrix_norm,ze as matrix_power,$e as matrix_rank,Ve as matrix_transpose,Be as matvec,qe as multi_dot,Ie as norm,Jt as outer,Fe as permute_dims,Ht as pinv,ht as qr,Yt as slogdet,Gt as solve,gt as svd,ke as svdvals,we as tensordot,Te as tensorinv,_e as tensorsolve,be as trace,G as transpose,Ee as vdot,je as vecdot,Re as vecmat,Z as vector_norm};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{ArrayStorage as p}from"../storage";import{isBigIntDType as u,isComplexDType as b,throwIfComplex as N}from"../dtype";import{elementwiseComparisonOp as F}from"../internal/compute";import{broadcastShapes as I}from"../internal/compute";function D(t){return t!==0&&t!==0n}function g(t,o){const a=t[o*2],r=t[o*2+1];return a!==0||r!==0}function h(t,o){return t.isCContiguous&&o.isCContiguous&&t.shape.length===o.shape.length&&t.shape.every((a,r)=>a===o.shape[r])}function P(t,o){return typeof o=="number"?v(t,o):h(t,o)?x(t,o):F(t,o,(a,r)=>D(a)&&D(r))}function x(t,o){const a=new Uint8Array(t.size),r=t.data,n=o.data,e=t.offset,s=o.offset,f=t.size,i=u(t.dtype),c=u(o.dtype),y=b(t.dtype),m=b(o.dtype);if(y||m)for(let l=0;l<f;l++){const A=y?g(r,e+l):r[e+l]!==0,d=m?g(n,s+l):n[s+l]!==0;a[l]=A&&d?1:0}else if(i||c)for(let l=0;l<f;l++){const A=i?r[e+l]!==0n:r[e+l]!==0,d=c?n[s+l]!==0n:n[s+l]!==0;a[l]=A&&d?1:0}else for(let l=0;l<f;l++)a[l]=r[e+l]!==0&&n[s+l]!==0?1:0;return p.fromData(a,Array.from(t.shape),"bool")}function v(t,o){const a=new Uint8Array(t.size),r=o!==0,n=t.size;if(t.isCContiguous){const e=t.data,s=t.offset;if(b(t.dtype)){const f=e;for(let i=0;i<n;i++)a[i]=g(f,s+i)&&r?1:0}else if(u(t.dtype)){const f=e;for(let i=0;i<n;i++)a[i]=f[s+i]!==0n&&r?1:0}else if(s===0)for(let f=0;f<n;f++)a[f]=e[f]!==0&&r?1:0;else for(let f=0;f<n;f++)a[f]=e[s+f]!==0&&r?1:0}else if(b(t.dtype))for(let e=0;e<n;e++){const s=t.iget(e);a[e]=(s.re!==0||s.im!==0)&&r?1:0}else if(u(t.dtype))for(let e=0;e<n;e++)a[e]=t.iget(e)!==0n&&r?1:0;else for(let e=0;e<n;e++)a[e]=Number(t.iget(e))!==0&&r?1:0;return p.fromData(a,Array.from(t.shape),"bool")}function q(t,o){if(typeof o=="number")return B(t,o);if(o.size===1&&!b(o.dtype)&&t.dtype===o.dtype){const a=Number(o.iget(0));return B(t,a)}return h(t,o)?w(t,o):F(t,o,(a,r)=>D(a)||D(r))}function w(t,o){const a=new Uint8Array(t.size),r=t.data,n=o.data,e=t.offset,s=o.offset,f=t.size,i=u(t.dtype),c=u(o.dtype),y=b(t.dtype),m=b(o.dtype);if(y||m)for(let l=0;l<f;l++){const A=y?g(r,e+l):r[e+l]!==0,d=m?g(n,s+l):n[s+l]!==0;a[l]=A||d?1:0}else if(i||c)for(let l=0;l<f;l++){const A=i?r[e+l]!==0n:r[e+l]!==0,d=c?n[s+l]!==0n:n[s+l]!==0;a[l]=A||d?1:0}else for(let l=0;l<f;l++)a[l]=r[e+l]!==0||n[s+l]!==0?1:0;return p.fromData(a,Array.from(t.shape),"bool")}function B(t,o){const a=new Uint8Array(t.size),r=o!==0,n=t.size;if(t.isCContiguous){const e=t.data,s=t.offset;if(b(t.dtype)){const f=e;for(let i=0;i<n;i++)a[i]=g(f,s+i)||r?1:0}else if(u(t.dtype)){const f=e;for(let i=0;i<n;i++)a[i]=f[s+i]!==0n||r?1:0}else if(s===0)for(let f=0;f<n;f++)a[f]=e[f]!==0||r?1:0;else for(let f=0;f<n;f++)a[f]=e[s+f]!==0||r?1:0}else if(b(t.dtype))for(let e=0;e<n;e++){const s=t.iget(e);a[e]=s.re!==0||s.im!==0||r?1:0}else if(u(t.dtype))for(let e=0;e<n;e++)a[e]=t.iget(e)!==0n||r?1:0;else for(let e=0;e<n;e++)a[e]=Number(t.iget(e))!==0||r?1:0;return p.fromData(a,Array.from(t.shape),"bool")}function G(t){const o=new Uint8Array(t.size),a=t.size;if(t.isCContiguous){const r=t.data,n=t.offset;if(b(t.dtype)){const e=r;for(let s=0;s<a;s++)o[s]=g(e,n+s)?0:1}else if(u(t.dtype)){const e=r;for(let s=0;s<a;s++)o[s]=e[n+s]===0n?1:0}else if(n===0)for(let e=0;e<a;e++)o[e]=r[e]===0?1:0;else for(let e=0;e<a;e++)o[e]=r[n+e]===0?1:0}else if(b(t.dtype))for(let r=0;r<a;r++){const n=t.iget(r);o[r]=n.re===0&&n.im===0?1:0}else if(u(t.dtype))for(let r=0;r<a;r++)o[r]=t.iget(r)===0n?1:0;else for(let r=0;r<a;r++)o[r]=Number(t.iget(r))===0?1:0;return p.fromData(o,Array.from(t.shape),"bool")}function H(t,o){return typeof o=="number"?T(t,o):h(t,o)?U(t,o):F(t,o,(a,r)=>D(a)!==D(r))}function U(t,o){const a=new Uint8Array(t.size),r=t.data,n=o.data,e=t.offset,s=o.offset,f=t.size,i=u(t.dtype),c=u(o.dtype),y=b(t.dtype),m=b(o.dtype);if(y||m)for(let l=0;l<f;l++){const A=y?g(r,e+l):r[e+l]!==0,d=m?g(n,s+l):n[s+l]!==0;a[l]=A!==d?1:0}else if(i||c)for(let l=0;l<f;l++){const A=i?r[e+l]!==0n:r[e+l]!==0,d=c?n[s+l]!==0n:n[s+l]!==0;a[l]=A!==d?1:0}else for(let l=0;l<f;l++){const A=r[e+l]!==0,d=n[s+l]!==0;a[l]=A!==d?1:0}return p.fromData(a,Array.from(t.shape),"bool")}function T(t,o){const a=new Uint8Array(t.size),r=o!==0,n=t.size;if(t.isCContiguous){const e=t.data,s=t.offset;if(b(t.dtype)){const f=e;for(let i=0;i<n;i++){const c=g(f,s+i);a[i]=c!==r?1:0}}else if(u(t.dtype)){const f=e;for(let i=0;i<n;i++){const c=f[s+i]!==0n;a[i]=c!==r?1:0}}else if(s===0)for(let f=0;f<n;f++){const i=e[f]!==0;a[f]=i!==r?1:0}else for(let f=0;f<n;f++){const i=e[s+f]!==0;a[f]=i!==r?1:0}}else if(b(t.dtype))for(let e=0;e<n;e++){const s=t.iget(e),f=s.re!==0||s.im!==0;a[e]=f!==r?1:0}else if(u(t.dtype))for(let e=0;e<n;e++){const s=t.iget(e)!==0n;a[e]=s!==r?1:0}else for(let e=0;e<n;e++){const s=Number(t.iget(e))!==0;a[e]=s!==r?1:0}return p.fromData(a,Array.from(t.shape),"bool")}function J(t){const o=new Uint8Array(t.size),a=t.size;if(t.isCContiguous){const r=t.data,n=t.offset;if(b(t.dtype)){const e=r;for(let s=0;s<a;s++){const f=e[(n+s)*2],i=e[(n+s)*2+1];o[s]=Number.isFinite(f)&&Number.isFinite(i)?1:0}}else if(u(t.dtype))for(let e=0;e<a;e++)o[e]=1;else if(n===0)for(let e=0;e<a;e++)o[e]=Number.isFinite(r[e])?1:0;else for(let e=0;e<a;e++){const s=r[n+e];o[e]=Number.isFinite(s)?1:0}}else if(b(t.dtype))for(let r=0;r<a;r++){const n=t.iget(r);o[r]=Number.isFinite(n.re)&&Number.isFinite(n.im)?1:0}else if(u(t.dtype))for(let r=0;r<a;r++)o[r]=1;else for(let r=0;r<a;r++)o[r]=Number.isFinite(Number(t.iget(r)))?1:0;return p.fromData(o,Array.from(t.shape),"bool")}function K(t){const o=new Uint8Array(t.size),a=t.size;if(t.isCContiguous){const r=t.data,n=t.offset;if(b(t.dtype)){const e=r;for(let s=0;s<a;s++){const f=e[(n+s)*2],i=e[(n+s)*2+1],c=!Number.isFinite(f)&&!Number.isNaN(f),y=!Number.isFinite(i)&&!Number.isNaN(i);o[s]=c||y?1:0}}else if(u(t.dtype))for(let e=0;e<a;e++)o[e]=0;else if(n===0)for(let e=0;e<a;e++){const s=r[e];o[e]=!Number.isFinite(s)&&!Number.isNaN(s)?1:0}else for(let e=0;e<a;e++){const s=r[n+e];o[e]=!Number.isFinite(s)&&!Number.isNaN(s)?1:0}}else if(b(t.dtype))for(let r=0;r<a;r++){const n=t.iget(r),e=!Number.isFinite(n.re)&&!Number.isNaN(n.re),s=!Number.isFinite(n.im)&&!Number.isNaN(n.im);o[r]=e||s?1:0}else if(u(t.dtype))for(let r=0;r<a;r++)o[r]=0;else for(let r=0;r<a;r++){const n=Number(t.iget(r));o[r]=!Number.isFinite(n)&&!Number.isNaN(n)?1:0}return p.fromData(o,Array.from(t.shape),"bool")}function Q(t){const o=new Uint8Array(t.size),a=t.size;if(t.isCContiguous){const r=t.data,n=t.offset;if(b(t.dtype)){const e=r;for(let s=0;s<a;s++){const f=e[(n+s)*2],i=e[(n+s)*2+1];o[s]=Number.isNaN(f)||Number.isNaN(i)?1:0}}else if(u(t.dtype))for(let e=0;e<a;e++)o[e]=0;else for(let e=0;e<a;e++)o[e]=Number.isNaN(r[n+e])?1:0}else if(b(t.dtype))for(let r=0;r<a;r++){const n=t.iget(r);o[r]=Number.isNaN(n.re)||Number.isNaN(n.im)?1:0}else if(u(t.dtype))for(let r=0;r<a;r++)o[r]=0;else for(let r=0;r<a;r++)o[r]=Number.isNaN(Number(t.iget(r)))?1:0;return p.fromData(o,Array.from(t.shape),"bool")}function W(t){const o=new Uint8Array(t.size);return p.fromData(o,Array.from(t.shape),"bool")}function Y(t,o){if(N(t.dtype,"copysign","copysign is only defined for real numbers."),typeof o!="number"&&N(o.dtype,"copysign","copysign is only defined for real numbers."),typeof o=="number")return M(t,o);if(h(t,o))return V(t,o);const a=I(t.shape,o.shape),r=a.reduce((i,c)=>i*c,1),n=p.zeros(a,"float64"),e=n.data,s=z(t,a),f=z(o,a);for(let i=0;i<r;i++){const c=Number(s.iget(i)),y=Number(f.iget(i));e[i]=Math.sign(y)*Math.abs(c)}return n}function V(t,o){const a=p.zeros(Array.from(t.shape),"float64"),r=a.data,n=t.size,e=t.data,s=o.data,f=t.offset,i=o.offset,c=u(t.dtype),y=u(o.dtype);for(let m=0;m<n;m++){const l=c?Number(e[f+m]):e[f+m],A=y?Number(s[i+m]):s[i+m];r[m]=Math.sign(A)*Math.abs(l)}return a}function M(t,o){const a=p.zeros(Array.from(t.shape),"float64"),r=a.data,n=t.size,e=Math.sign(o);if(!t.isCContiguous){for(let i=0;i<n;i++)r[i]=e*Math.abs(Number(t.iget(i)));return a}const s=t.data,f=t.offset;if(u(t.dtype)){const i=s;for(let c=0;c<n;c++)r[c]=e*Math.abs(Number(i[f+c]))}else if(f===0)for(let i=0;i<n;i++)r[i]=e*Math.abs(s[i]);else for(let i=0;i<n;i++)r[i]=e*Math.abs(s[f+i]);return a}function Z(t){N(t.dtype,"signbit","signbit is only defined for real numbers.");const o=new Uint8Array(t.size),a=t.size;if(t.isCContiguous){const r=t.data,n=t.offset;if(u(t.dtype)){const e=r;for(let s=0;s<a;s++)o[s]=e[n+s]<0n?1:0}else for(let e=0;e<a;e++){const s=r[n+e];o[e]=s<0||Object.is(s,-0)?1:0}}else if(u(t.dtype))for(let r=0;r<a;r++)o[r]=t.iget(r)<0n?1:0;else for(let r=0;r<a;r++){const n=Number(t.iget(r));o[r]=n<0||Object.is(n,-0)?1:0}return p.fromData(o,Array.from(t.shape),"bool")}function $(t,o){if(N(t.dtype,"nextafter","nextafter is only defined for real numbers."),typeof o!="number"&&N(o.dtype,"nextafter","nextafter is only defined for real numbers."),typeof o=="number")return _(t,o);if(h(t,o))return O(t,o);const a=I(t.shape,o.shape),r=a.reduce((i,c)=>i*c,1),n=p.zeros(a,"float64"),e=n.data,s=z(t,a),f=z(o,a);for(let i=0;i<r;i++){const c=Number(s.iget(i)),y=Number(f.iget(i));e[i]=S(c,y)}return n}function O(t,o){const a=p.zeros(Array.from(t.shape),"float64"),r=a.data,n=t.size,e=t.data,s=o.data,f=t.offset,i=o.offset,c=u(t.dtype),y=u(o.dtype);for(let m=0;m<n;m++){const l=c?Number(e[f+m]):e[f+m],A=y?Number(s[i+m]):s[i+m];r[m]=S(l,A)}return a}function _(t,o){const a=p.zeros(Array.from(t.shape),"float64"),r=a.data,n=t.size;if(t.isCContiguous){const e=t.data,s=t.offset;if(u(t.dtype)){const f=e;for(let i=0;i<n;i++)r[i]=S(Number(f[s+i]),o)}else for(let f=0;f<n;f++)r[f]=S(e[s+f],o)}else for(let e=0;e<n;e++)r[e]=S(Number(t.iget(e)),o);return a}function S(t,o){if(Number.isNaN(t)||Number.isNaN(o))return NaN;if(t===o)return o;if(t===0)return o>0?Number.MIN_VALUE:-Number.MIN_VALUE;const a=new ArrayBuffer(8),r=new Float64Array(a),n=new BigInt64Array(a);r[0]=t;let e=n[0];return t>0&&o>t||t<0&&o>t?e=e+1n:e=e-1n,n[0]=e,r[0]}function tt(t){N(t.dtype,"spacing","spacing is only defined for real numbers.");const o=p.zeros(Array.from(t.shape),"float64"),a=o.data,r=t.size;if(t.isCContiguous){const n=t.data,e=t.offset;if(u(t.dtype)){const s=n;for(let f=0;f<r;f++)a[f]=C(Number(s[e+f]))}else for(let s=0;s<r;s++)a[s]=C(n[e+s])}else for(let n=0;n<r;n++)a[n]=C(Number(t.iget(n)));return o}function C(t){if(Number.isNaN(t))return NaN;if(!Number.isFinite(t))return NaN;if(Math.abs(t)===0)return Number.MIN_VALUE;const a=S(t,1/0);return Math.abs(a-t)}function z(t,o){const a=t.shape.length,r=o.length,n=new Array(r).fill(0);for(let e=0;e<a;e++){const s=r-a+e,f=t.shape[e],i=o[s];if(f===i)n[s]=t.strides[e];else if(f===1)n[s]=0;else throw new Error("Invalid broadcast")}return p.fromData(t.data,Array.from(o),t.dtype,n,t.offset)}function et(t){const o=t.dtype,a=t.size,r=new Uint8Array(a);if(b(o))if(t.isCContiguous){const n=t.offset,e=t.data;for(let s=0;s<a;s++)r[s]=e[(n+s)*2+1]!==0?1:0}else for(let n=0;n<a;n++){const e=t.iget(n);r[n]=e.im!==0?1:0}return p.fromData(r,Array.from(t.shape),"bool")}function rt(t){return b(t.dtype)}function ot(t){const o=t.dtype,a=t.size,r=new Uint8Array(a);if(b(o))if(t.isCContiguous){const n=t.offset,e=t.data;for(let s=0;s<a;s++)r[s]=e[(n+s)*2+1]===0?1:0}else for(let n=0;n<a;n++){const e=t.iget(n);r[n]=e.im===0?1:0}else r.fill(1);return p.fromData(r,Array.from(t.shape),"bool")}function at(t){return!b(t.dtype)}function st(t){N(t.dtype,"isneginf","This operation is not supported for complex values because it would be ambiguous.");const o=new Uint8Array(t.size),a=t.size;if(!u(t.dtype))if(t.isCContiguous){const r=t.data,n=t.offset;for(let e=0;e<a;e++){const s=r[n+e];o[e]=s===-1/0?1:0}}else for(let r=0;r<a;r++)o[r]=Number(t.iget(r))===-1/0?1:0;return p.fromData(o,Array.from(t.shape),"bool")}function nt(t){N(t.dtype,"isposinf","This operation is not supported for complex values because it would be ambiguous.");const o=new Uint8Array(t.size),a=t.size;if(!u(t.dtype))if(t.isCContiguous){const r=t.data,n=t.offset;for(let e=0;e<a;e++){const s=r[n+e];o[e]=s===1/0?1:0}}else for(let r=0;r<a;r++)o[r]=Number(t.iget(r))===1/0?1:0;return p.fromData(o,Array.from(t.shape),"bool")}function it(t){return t.isFContiguous}function ft(t,o=100){const a=t.dtype;if(b(a)){const r=t.size,e=o*(a==="complex64"?11920929e-14:2220446049250313e-31);if(t.isCContiguous){const s=t.data,f=t.offset;let i=!0;for(let c=0;c<r;c++){const y=s[(f+c)*2+1];if(Math.abs(y)>e){i=!1;break}}if(i){const c=a==="complex64"?"float32":"float64",y=p.zeros(Array.from(t.shape),c),m=y.data;for(let l=0;l<r;l++)m[l]=s[(f+l)*2];return y}}else{let s=!0;for(let f=0;f<r;f++){const i=t.iget(f);if(Math.abs(i.im)>e){s=!1;break}}if(s){const f=a==="complex64"?"float32":"float64",i=p.zeros(Array.from(t.shape),f),c=i.data;for(let y=0;y<r;y++){const m=t.iget(y);c[y]=m.re}return i}}return t.copy()}return t.copy()}function lt(t){return typeof t=="number"||typeof t=="bigint"||typeof t=="boolean"||typeof t=="string"}function ct(t){return t==null?!1:typeof t[Symbol.iterator]=="function"}function ut(t,o){const r={b:["bool"],i:["int8","int16","int32","int64"],u:["uint8","uint16","uint32","uint64"],f:["float32","float64"]}[o];return r?r.includes(t):!1}function yt(t,o){const a=["float64","float32","int64","int32","int16","int8","uint64","uint32","uint16","uint8","bool"],r=a.indexOf(t),n=a.indexOf(o);return r<=n?t:o}export{Y as copysign,et as iscomplex,rt as iscomplexobj,ut as isdtype,J as isfinite,it as isfortran,K as isinf,Q as isnan,W as isnat,st as isneginf,nt as isposinf,ot as isreal,at as isrealobj,lt as isscalar,ct as iterable,P as logical_and,G as logical_not,q as logical_or,H as logical_xor,$ as nextafter,yt as promote_types,ft as real_if_close,Z as signbit,tt as spacing};
|
|
1
|
+
import{ArrayStorage as b}from"../storage";import{isBigIntDType as u,isComplexDType as y,isIntegerDType as N,throwIfComplex as D}from"../dtype";import{elementwiseComparisonOp as C}from"../internal/compute";import{broadcastShapes as I}from"../internal/compute";import{wasmLogicalAnd as L,wasmLogicalAndScalar as B}from"../wasm/logical_and";import{wasmLogicalOr as _,wasmLogicalOrScalar as v}from"../wasm/logical_or";import{wasmLogicalXor as k,wasmLogicalXorScalar as x}from"../wasm/logical_xor";import{wasmCopysign as X,wasmCopysignScalar as U}from"../wasm/copysign";import{wasmLogicalNot as E}from"../wasm/logical_not";function S(t){return t!==0&&t!==0n}function g(t,s){const o=t[s*2],r=t[s*2+1];return o!==0||r!==0}function z(t,s){return t.isCContiguous&&s.isCContiguous&&t.shape.length===s.shape.length&&t.shape.every((o,r)=>o===s.shape[r])}function st(t,s){if(typeof s=="number"){const o=B(t,s);return o||T(t,s)}if(s.size===1&&!y(s.dtype)){const o=Number(s.iget(0)),r=B(t,o);return r||T(t,o)}if(z(t,s)){const o=L(t,s);return o||j(t,s)}return C(t,s,(o,r)=>S(o)&&S(r))}function j(t,s){const o=new Uint8Array(t.size),r=t.data,n=s.data,e=t.offset,a=s.offset,f=t.size,i=u(t.dtype),c=u(s.dtype),m=y(t.dtype),p=y(s.dtype);if(m||p)for(let l=0;l<f;l++){const d=m?g(r,e+l):r[e+l]!==0,A=p?g(n,a+l):n[a+l]!==0;o[l]=d&&A?1:0}else if(i||c)for(let l=0;l<f;l++){const d=i?r[e+l]!==0n:r[e+l]!==0,A=c?n[a+l]!==0n:n[a+l]!==0;o[l]=d&&A?1:0}else for(let l=0;l<f;l++)o[l]=r[e+l]!==0&&n[a+l]!==0?1:0;return b.fromData(o,Array.from(t.shape),"bool")}function T(t,s){const o=new Uint8Array(t.size),r=s!==0,n=t.size;if(t.isCContiguous){const e=t.data,a=t.offset;if(y(t.dtype)){const f=e;for(let i=0;i<n;i++)o[i]=g(f,a+i)&&r?1:0}else if(u(t.dtype)){const f=e;for(let i=0;i<n;i++)o[i]=f[a+i]!==0n&&r?1:0}else if(a===0)for(let f=0;f<n;f++)o[f]=e[f]!==0&&r?1:0;else for(let f=0;f<n;f++)o[f]=e[a+f]!==0&&r?1:0}else if(y(t.dtype))for(let e=0;e<n;e++){const a=t.iget(e);o[e]=(a.re!==0||a.im!==0)&&r?1:0}else if(u(t.dtype))for(let e=0;e<n;e++)o[e]=t.iget(e)!==0n&&r?1:0;else for(let e=0;e<n;e++)o[e]=Number(t.iget(e))!==0&&r?1:0;return b.fromData(o,Array.from(t.shape),"bool")}function nt(t,s){if(typeof s=="number"){const o=v(t,s);return o||V(t,s)}if(s.size===1&&!y(s.dtype)){const o=Number(s.iget(0)),r=v(t,o);return r||V(t,o)}if(z(t,s)){const o=_(t,s);return o||R(t,s)}return C(t,s,(o,r)=>S(o)||S(r))}function R(t,s){const o=new Uint8Array(t.size),r=t.data,n=s.data,e=t.offset,a=s.offset,f=t.size,i=u(t.dtype),c=u(s.dtype),m=y(t.dtype),p=y(s.dtype);if(m||p)for(let l=0;l<f;l++){const d=m?g(r,e+l):r[e+l]!==0,A=p?g(n,a+l):n[a+l]!==0;o[l]=d||A?1:0}else if(i||c)for(let l=0;l<f;l++){const d=i?r[e+l]!==0n:r[e+l]!==0,A=c?n[a+l]!==0n:n[a+l]!==0;o[l]=d||A?1:0}else for(let l=0;l<f;l++)o[l]=r[e+l]!==0||n[a+l]!==0?1:0;return b.fromData(o,Array.from(t.shape),"bool")}function V(t,s){const o=new Uint8Array(t.size),r=s!==0,n=t.size;if(t.isCContiguous){const e=t.data,a=t.offset;if(y(t.dtype)){const f=e;for(let i=0;i<n;i++)o[i]=g(f,a+i)||r?1:0}else if(u(t.dtype)){const f=e;for(let i=0;i<n;i++)o[i]=f[a+i]!==0n||r?1:0}else if(a===0)for(let f=0;f<n;f++)o[f]=e[f]!==0||r?1:0;else for(let f=0;f<n;f++)o[f]=e[a+f]!==0||r?1:0}else if(y(t.dtype))for(let e=0;e<n;e++){const a=t.iget(e);o[e]=a.re!==0||a.im!==0||r?1:0}else if(u(t.dtype))for(let e=0;e<n;e++)o[e]=t.iget(e)!==0n||r?1:0;else for(let e=0;e<n;e++)o[e]=Number(t.iget(e))!==0||r?1:0;return b.fromData(o,Array.from(t.shape),"bool")}function at(t){const s=E(t);if(s)return s;const o=new Uint8Array(t.size),r=t.size;if(t.isCContiguous){const n=t.data,e=t.offset;if(y(t.dtype)){const a=n;for(let f=0;f<r;f++)o[f]=g(a,e+f)?0:1}else if(u(t.dtype)){const a=n;for(let f=0;f<r;f++)o[f]=a[e+f]===0n?1:0}else if(e===0)for(let a=0;a<r;a++)o[a]=n[a]===0?1:0;else for(let a=0;a<r;a++)o[a]=n[e+a]===0?1:0}else if(y(t.dtype))for(let n=0;n<r;n++){const e=t.iget(n);o[n]=e.re===0&&e.im===0?1:0}else if(u(t.dtype))for(let n=0;n<r;n++)o[n]=t.iget(n)===0n?1:0;else for(let n=0;n<r;n++)o[n]=Number(t.iget(n))===0?1:0;return b.fromData(o,Array.from(t.shape),"bool")}function it(t,s){if(typeof s=="number"){const o=x(t,s);return o||O(t,s)}if(s.size===1&&!y(s.dtype)){const o=Number(s.iget(0)),r=x(t,o);return r||O(t,o)}if(z(t,s)){const o=k(t,s);return o||P(t,s)}return C(t,s,(o,r)=>S(o)!==S(r))}function P(t,s){const o=new Uint8Array(t.size),r=t.data,n=s.data,e=t.offset,a=s.offset,f=t.size,i=u(t.dtype),c=u(s.dtype),m=y(t.dtype),p=y(s.dtype);if(m||p)for(let l=0;l<f;l++){const d=m?g(r,e+l):r[e+l]!==0,A=p?g(n,a+l):n[a+l]!==0;o[l]=d!==A?1:0}else if(i||c)for(let l=0;l<f;l++){const d=i?r[e+l]!==0n:r[e+l]!==0,A=c?n[a+l]!==0n:n[a+l]!==0;o[l]=d!==A?1:0}else for(let l=0;l<f;l++){const d=r[e+l]!==0,A=n[a+l]!==0;o[l]=d!==A?1:0}return b.fromData(o,Array.from(t.shape),"bool")}function O(t,s){const o=new Uint8Array(t.size),r=s!==0,n=t.size;if(t.isCContiguous){const e=t.data,a=t.offset;if(y(t.dtype)){const f=e;for(let i=0;i<n;i++){const c=g(f,a+i);o[i]=c!==r?1:0}}else if(u(t.dtype)){const f=e;for(let i=0;i<n;i++){const c=f[a+i]!==0n;o[i]=c!==r?1:0}}else if(a===0)for(let f=0;f<n;f++){const i=e[f]!==0;o[f]=i!==r?1:0}else for(let f=0;f<n;f++){const i=e[a+f]!==0;o[f]=i!==r?1:0}}else if(y(t.dtype))for(let e=0;e<n;e++){const a=t.iget(e),f=a.re!==0||a.im!==0;o[e]=f!==r?1:0}else if(u(t.dtype))for(let e=0;e<n;e++){const a=t.iget(e)!==0n;o[e]=a!==r?1:0}else for(let e=0;e<n;e++){const a=Number(t.iget(e))!==0;o[e]=a!==r?1:0}return b.fromData(o,Array.from(t.shape),"bool")}function ft(t){const s=new Uint8Array(t.size),o=t.size;if(t.isCContiguous){const r=t.data,n=t.offset;if(y(t.dtype)){const e=r;for(let a=0;a<o;a++){const f=e[(n+a)*2],i=e[(n+a)*2+1];s[a]=Number.isFinite(f)&&Number.isFinite(i)?1:0}}else if(u(t.dtype)||N(t.dtype))s.fill(1);else if(n===0)for(let e=0;e<o;e++)s[e]=Number.isFinite(r[e])?1:0;else for(let e=0;e<o;e++){const a=r[n+e];s[e]=Number.isFinite(a)?1:0}}else if(y(t.dtype))for(let r=0;r<o;r++){const n=t.iget(r);s[r]=Number.isFinite(n.re)&&Number.isFinite(n.im)?1:0}else if(u(t.dtype)||N(t.dtype))s.fill(1);else for(let r=0;r<o;r++)s[r]=Number.isFinite(Number(t.iget(r)))?1:0;return b.fromData(s,Array.from(t.shape),"bool")}function lt(t){const s=new Uint8Array(t.size),o=t.size;if(t.isCContiguous){const r=t.data,n=t.offset;if(y(t.dtype)){const e=r;for(let a=0;a<o;a++){const f=e[(n+a)*2],i=e[(n+a)*2+1],c=!Number.isFinite(f)&&!Number.isNaN(f),m=!Number.isFinite(i)&&!Number.isNaN(i);s[a]=c||m?1:0}}else if(!(u(t.dtype)||N(t.dtype)))if(n===0)for(let e=0;e<o;e++){const a=r[e];s[e]=!Number.isFinite(a)&&!Number.isNaN(a)?1:0}else for(let e=0;e<o;e++){const a=r[n+e];s[e]=!Number.isFinite(a)&&!Number.isNaN(a)?1:0}}else if(y(t.dtype))for(let r=0;r<o;r++){const n=t.iget(r),e=!Number.isFinite(n.re)&&!Number.isNaN(n.re),a=!Number.isFinite(n.im)&&!Number.isNaN(n.im);s[r]=e||a?1:0}else if(!(u(t.dtype)||N(t.dtype)))for(let r=0;r<o;r++){const n=Number(t.iget(r));s[r]=!Number.isFinite(n)&&!Number.isNaN(n)?1:0}return b.fromData(s,Array.from(t.shape),"bool")}function ct(t){const s=new Uint8Array(t.size),o=t.size;if(t.isCContiguous){const r=t.data,n=t.offset;if(y(t.dtype)){const e=r;for(let a=0;a<o;a++){const f=e[(n+a)*2],i=e[(n+a)*2+1];s[a]=Number.isNaN(f)||Number.isNaN(i)?1:0}}else if(!(u(t.dtype)||N(t.dtype)))for(let e=0;e<o;e++)s[e]=Number.isNaN(r[n+e])?1:0}else if(y(t.dtype))for(let r=0;r<o;r++){const n=t.iget(r);s[r]=Number.isNaN(n.re)||Number.isNaN(n.im)?1:0}else if(!(u(t.dtype)||N(t.dtype)))for(let r=0;r<o;r++)s[r]=Number.isNaN(Number(t.iget(r)))?1:0;return b.fromData(s,Array.from(t.shape),"bool")}function ut(t){const s=new Uint8Array(t.size);return b.fromData(s,Array.from(t.shape),"bool")}function yt(t,s){if(D(t.dtype,"copysign","copysign is only defined for real numbers."),typeof s!="number"&&D(s.dtype,"copysign","copysign is only defined for real numbers."),typeof s=="number"){const i=U(t,s);return i||M(t,s)}if(s.size===1&&!y(s.dtype)){const i=Number(s.iget(0)),c=U(t,i);return c||M(t,i)}if(z(t,s)){const i=X(t,s);return i||q(t,s)}const o=I(t.shape,s.shape),r=o.reduce((i,c)=>i*c,1),n=b.zeros(o,"float64"),e=n.data,a=F(t,o),f=F(s,o);for(let i=0;i<r;i++){const c=Number(a.iget(i)),m=Number(f.iget(i));e[i]=Math.sign(m)*Math.abs(c)}return n}function q(t,s){const o=b.zeros(Array.from(t.shape),"float64"),r=o.data,n=t.size,e=t.data,a=s.data,f=t.offset,i=s.offset,c=u(t.dtype),m=u(s.dtype);for(let p=0;p<n;p++){const l=c?Number(e[f+p]):e[f+p],d=m?Number(a[i+p]):a[i+p];r[p]=Math.sign(d)*Math.abs(l)}return o}function M(t,s){const o=b.zeros(Array.from(t.shape),"float64"),r=o.data,n=t.size,e=Math.sign(s);if(!t.isCContiguous){for(let i=0;i<n;i++)r[i]=e*Math.abs(Number(t.iget(i)));return o}const a=t.data,f=t.offset;if(u(t.dtype)){const i=a;for(let c=0;c<n;c++)r[c]=e*Math.abs(Number(i[f+c]))}else if(f===0)for(let i=0;i<n;i++)r[i]=e*Math.abs(a[i]);else for(let i=0;i<n;i++)r[i]=e*Math.abs(a[f+i]);return o}function mt(t){D(t.dtype,"signbit","signbit is only defined for real numbers.");const s=new Uint8Array(t.size),o=t.size;if(t.isCContiguous){const r=t.data,n=t.offset;if(u(t.dtype)){const e=r;for(let a=0;a<o;a++)s[a]=e[n+a]<0n?1:0}else for(let e=0;e<o;e++){const a=r[n+e];s[e]=a<0||Object.is(a,-0)?1:0}}else if(u(t.dtype))for(let r=0;r<o;r++)s[r]=t.iget(r)<0n?1:0;else for(let r=0;r<o;r++){const n=Number(t.iget(r));s[r]=n<0||Object.is(n,-0)?1:0}return b.fromData(s,Array.from(t.shape),"bool")}function pt(t,s){if(D(t.dtype,"nextafter","nextafter is only defined for real numbers."),typeof s!="number"&&D(s.dtype,"nextafter","nextafter is only defined for real numbers."),typeof s=="number")return H(t,s);if(z(t,s))return G(t,s);const o=I(t.shape,s.shape),r=o.reduce((i,c)=>i*c,1),n=b.zeros(o,"float64"),e=n.data,a=F(t,o),f=F(s,o);for(let i=0;i<r;i++){const c=Number(a.iget(i)),m=Number(f.iget(i));e[i]=h(c,m)}return n}function G(t,s){const o=b.zeros(Array.from(t.shape),"float64"),r=o.data,n=t.size,e=t.data,a=s.data,f=t.offset,i=s.offset,c=u(t.dtype),m=u(s.dtype);for(let p=0;p<n;p++){const l=c?Number(e[f+p]):e[f+p],d=m?Number(a[i+p]):a[i+p];r[p]=h(l,d)}return o}function H(t,s){const o=b.zeros(Array.from(t.shape),"float64"),r=o.data,n=t.size;if(t.isCContiguous){const e=t.data,a=t.offset;if(u(t.dtype)){const f=e;for(let i=0;i<n;i++)r[i]=h(Number(f[a+i]),s)}else for(let f=0;f<n;f++)r[f]=h(e[a+f],s)}else for(let e=0;e<n;e++)r[e]=h(Number(t.iget(e)),s);return o}function h(t,s){if(Number.isNaN(t)||Number.isNaN(s))return NaN;if(t===s)return s;if(t===0)return s>0?Number.MIN_VALUE:-Number.MIN_VALUE;const o=new ArrayBuffer(8),r=new Float64Array(o),n=new BigInt64Array(o);r[0]=t;let e=n[0];return(t>0?s>t:s<t)?e=e+1n:e=e-1n,n[0]=e,r[0]}function bt(t){D(t.dtype,"spacing","spacing is only defined for real numbers.");const s=b.zeros(Array.from(t.shape),"float64"),o=s.data,r=t.size;if(t.isCContiguous){const n=t.data,e=t.offset;if(u(t.dtype)){const a=n;for(let f=0;f<r;f++)o[f]=w(Number(a[e+f]))}else for(let a=0;a<r;a++)o[a]=w(n[e+a])}else for(let n=0;n<r;n++)o[n]=w(Number(t.iget(n)));return s}function w(t){if(Number.isNaN(t))return NaN;if(!Number.isFinite(t))return NaN;if(Math.abs(t)===0)return Number.MIN_VALUE;const o=h(t,1/0);return Math.abs(o-t)}function F(t,s){const o=t.shape.length,r=s.length,n=new Array(r).fill(0);for(let e=0;e<o;e++){const a=r-o+e,f=t.shape[e],i=s[a];if(f===i)n[a]=t.strides[e];else if(f===1)n[a]=0;else throw new Error("Invalid broadcast")}return b.fromData(t.data,Array.from(s),t.dtype,n,t.offset)}function dt(t){const s=t.dtype,o=t.size,r=new Uint8Array(o);if(y(s))if(t.isCContiguous){const n=t.offset,e=t.data;for(let a=0;a<o;a++)r[a]=e[(n+a)*2+1]!==0?1:0}else for(let n=0;n<o;n++){const e=t.iget(n);r[n]=e.im!==0?1:0}return b.fromData(r,Array.from(t.shape),"bool")}function At(t){return y(t.dtype)}function gt(t){const s=t.dtype,o=t.size,r=new Uint8Array(o);if(y(s))if(t.isCContiguous){const n=t.offset,e=t.data;for(let a=0;a<o;a++)r[a]=e[(n+a)*2+1]===0?1:0}else for(let n=0;n<o;n++){const e=t.iget(n);r[n]=e.im===0?1:0}else r.fill(1);return b.fromData(r,Array.from(t.shape),"bool")}function Nt(t){return!y(t.dtype)}function Dt(t){D(t.dtype,"isneginf","This operation is not supported for complex values because it would be ambiguous.");const s=new Uint8Array(t.size),o=t.size;if(!(u(t.dtype)||N(t.dtype)))if(t.isCContiguous){const r=t.data,n=t.offset;for(let e=0;e<o;e++){const a=r[n+e];s[e]=a===-1/0?1:0}}else for(let r=0;r<o;r++)s[r]=Number(t.iget(r))===-1/0?1:0;return b.fromData(s,Array.from(t.shape),"bool")}function St(t){D(t.dtype,"isposinf","This operation is not supported for complex values because it would be ambiguous.");const s=new Uint8Array(t.size),o=t.size;if(!(u(t.dtype)||N(t.dtype)))if(t.isCContiguous){const r=t.data,n=t.offset;for(let e=0;e<o;e++){const a=r[n+e];s[e]=a===1/0?1:0}}else for(let r=0;r<o;r++)s[r]=Number(t.iget(r))===1/0?1:0;return b.fromData(s,Array.from(t.shape),"bool")}function ht(t){return t.isFContiguous}function zt(t,s=100){const o=t.dtype;if(y(o)){const r=t.size,e=s*(o==="complex64"?11920929e-14:2220446049250313e-31);if(t.isCContiguous){const a=t.data,f=t.offset;let i=!0;for(let c=0;c<r;c++){const m=a[(f+c)*2+1];if(Math.abs(m)>e){i=!1;break}}if(i){const c=o==="complex64"?"float32":"float64",m=b.zeros(Array.from(t.shape),c),p=m.data;for(let l=0;l<r;l++)p[l]=a[(f+l)*2];return m}}else{let a=!0;for(let f=0;f<r;f++){const i=t.iget(f);if(Math.abs(i.im)>e){a=!1;break}}if(a){const f=o==="complex64"?"float32":"float64",i=b.zeros(Array.from(t.shape),f),c=i.data;for(let m=0;m<r;m++){const p=t.iget(m);c[m]=p.re}return i}}return t.copy()}return t.copy()}function Ft(t){return typeof t=="number"||typeof t=="bigint"||typeof t=="boolean"||typeof t=="string"}function Ct(t){return t==null?!1:typeof t[Symbol.iterator]=="function"}function wt(t,s){const r={b:["bool"],i:["int8","int16","int32","int64"],u:["uint8","uint16","uint32","uint64"],f:["float32","float64"]}[s];return r?r.includes(t):!1}function It(t,s){const o=["float64","float32","int64","int32","int16","int8","uint64","uint32","uint16","uint8","bool"],r=o.indexOf(t),n=o.indexOf(s);return r<=n?t:s}export{yt as copysign,dt as iscomplex,At as iscomplexobj,wt as isdtype,ft as isfinite,ht as isfortran,lt as isinf,ct as isnan,ut as isnat,Dt as isneginf,St as isposinf,gt as isreal,Nt as isrealobj,Ft as isscalar,Ct as iterable,st as logical_and,at as logical_not,nt as logical_or,it as logical_xor,pt as nextafter,It as promote_types,zt as real_if_close,mt as signbit,bt as spacing};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{ArrayStorage as B}from"../storage";import{isBigIntDType as Q,isComplexDType as k,throwIfComplex as H}from"../dtype";import{outerIndexToMultiIndex as M,multiIndexToBuffer as V}from"../internal/indexing";import{Complex as U}from"../complex";function J(n,p,F=!1){const x=n.dtype,c=n.shape,I=c.length,N=n.size,b=n.data,m=n.offset,h=n.strides,y=n.isCContiguous;if(p===void 0)if(k(x)){let t=0,o=0;if(y){const r=b;for(let s=0;s<N;s++)t+=r[(m+s)*2],o+=r[(m+s)*2+1]}else for(let r=0;r<N;r++){const s=n.iget(r);t+=s.re,o+=s.im}return new U(t,o)}else if(Q(x)){let t=BigInt(0);if(y){const o=b;for(let r=0;r<N;r++)t+=o[m+r]}else for(let o=0;o<N;o++)t+=n.iget(o);return Number(t)}else{let t=0;if(y)if(m===0)for(let o=0;o<N;o++)t+=Number(b[o]);else for(let o=0;o<N;o++)t+=Number(b[m+o]);else for(let o=0;o<N;o++)t+=Number(n.iget(o));return t}let A=p;if(A<0&&(A=I+A),A<0||A>=I)throw new Error(`axis ${p} is out of bounds for array of dimension ${I}`);const $=Array.from(c).filter((t,o)=>o!==A);if($.length===0)return J(n);const S=B.zeros($,x),D=S.data,l=c[A],e=$.reduce((t,o)=>t*o,1);if(k(x)){const t=b,o=D;for(let r=0;r<e;r++){let s=0,f=0;for(let a=0;a<l;a++){const i=M(r,A,a,c),d=V(i,h,m);s+=t[d*2],f+=t[d*2+1]}o[r*2]=s,o[r*2+1]=f}}else if(Q(x)){const t=b,o=D;for(let r=0;r<e;r++){let s=BigInt(0);for(let f=0;f<l;f++){const a=M(r,A,f,c),i=V(a,h,m);s+=t[i]}o[r]=s}}else for(let t=0;t<e;t++){let o=0;for(let r=0;r<l;r++){const s=M(t,A,r,c),f=V(s,h,m);o+=Number(b[f])}D[t]=o}if(F){const t=[...c];return t[A]=1,B.fromData(D,t,x)}return S}function X(n,p,F=!1){const x=n.dtype,c=n.shape;if(p===void 0){const $=J(n);return $ instanceof U?new U($.re/n.size,$.im/n.size):$/n.size}let I=p;if(I<0&&(I=c.length+I),I<0||I>=c.length)throw new Error(`axis ${p} is out of bounds for array of dimension ${c.length}`);const N=J(n,p,F);if(typeof N=="number")return N/c[I];if(N instanceof U)return new U(N.re/c[I],N.im/c[I]);const b=c[I];let m=x;k(x)?m=x:(Q(x)||x.startsWith("int")||x.startsWith("uint"))&&(m="float64");const h=B.zeros(Array.from(N.shape),m),y=h.data,A=N.data;if(k(x)){const $=A,S=y,D=N.size;for(let l=0;l<D;l++)S[l*2]=$[l*2]/b,S[l*2+1]=$[l*2+1]/b}else if(Q(x)){const $=A;for(let S=0;S<y.length;S++)y[S]=Number($[S])/b}else for(let $=0;$<y.length;$++)y[$]=Number(A[$])/b;return h}function j(n,p,F=!1){const x=n.dtype,c=n.shape,I=c.length,N=n.size,b=n.data,m=n.offset,h=n.strides;if(k(x)){const e=b;if(p===void 0){if(N===0)throw new Error("max of empty array");let i=e[m*2],d=e[m*2+1];for(let w=1;w<N;w++){const u=e[(m+w)*2],z=e[(m+w)*2+1];if(isNaN(u)||isNaN(z))return new U(NaN,NaN);(u>i||u===i&&z>d)&&(i=u,d=z)}return isNaN(i)||isNaN(d)?new U(NaN,NaN):new U(i,d)}let t=p;if(t<0&&(t=I+t),t<0||t>=I)throw new Error(`axis ${p} is out of bounds for array of dimension ${I}`);const o=Array.from(c).filter((i,d)=>d!==t);if(o.length===0)return j(n);const r=B.zeros(o,x),s=r.data,f=c[t],a=o.reduce((i,d)=>i*d,1);for(let i=0;i<a;i++){const d=M(i,t,0,c),w=V(d,h,m);let u=e[w*2],z=e[w*2+1];for(let C=1;C<f;C++){const E=M(i,t,C,c),R=V(E,h,m),v=e[R*2],g=e[R*2+1];if(isNaN(v)||isNaN(g)){u=NaN,z=NaN;break}(v>u||v===u&&g>z)&&(u=v,z=g)}s[i*2]=u,s[i*2+1]=z}if(F){const i=[...c];return i[t]=1,B.fromData(s,i,x)}return r}if(p===void 0){if(N===0)throw new Error("max of empty array");if(n.isCContiguous){let e=b[m];if(m===0)for(let t=1;t<N;t++)b[t]>e&&(e=b[t]);else for(let t=1;t<N;t++)b[m+t]>e&&(e=b[m+t]);return Number(e)}else{let e=n.iget(0);for(let t=1;t<N;t++){const o=n.iget(t);o>e&&(e=o)}return Number(e)}}let y=p;if(y<0&&(y=I+y),y<0||y>=I)throw new Error(`axis ${p} is out of bounds for array of dimension ${I}`);const A=Array.from(c).filter((e,t)=>t!==y);if(A.length===0)return j(n);const $=B.zeros(A,x),S=$.data,D=c[y],l=A.reduce((e,t)=>e*t,1);if(Q(x)){const e=b,t=S;for(let o=0;o<l;o++){const r=M(o,y,0,c),s=V(r,h,m);let f=e[s];for(let a=1;a<D;a++){const i=M(o,y,a,c),d=V(i,h,m),w=e[d];w>f&&(f=w)}t[o]=f}}else for(let e=0;e<l;e++){let t=-1/0;for(let o=0;o<D;o++){const r=M(e,y,o,c),s=V(r,h,m),f=Number(b[s]);f>t&&(t=f)}S[e]=t}if(F){const e=[...c];return e[y]=1,B.fromData(S,e,x)}return $}function rt(n,p,F=!1){const x=n.dtype,c=n.shape,I=c.length,N=n.size,b=n.data,m=n.offset,h=n.strides,y=n.isCContiguous;if(p===void 0)if(k(x)){let t=1,o=0;if(y){const r=b;for(let s=0;s<N;s++){const f=r[(m+s)*2],a=r[(m+s)*2+1],i=t*f-o*a,d=t*a+o*f;t=i,o=d}}else for(let r=0;r<N;r++){const s=n.iget(r),f=s.re,a=s.im,i=t*f-o*a,d=t*a+o*f;t=i,o=d}return new U(t,o)}else if(Q(x)){let t=BigInt(1);if(y){const o=b;for(let r=0;r<N;r++)t*=o[m+r]}else for(let o=0;o<N;o++)t*=n.iget(o);return Number(t)}else{let t=1;if(y)if(m===0)for(let o=0;o<N;o++)t*=Number(b[o]);else for(let o=0;o<N;o++)t*=Number(b[m+o]);else for(let o=0;o<N;o++)t*=Number(n.iget(o));return t}let A=p;if(A<0&&(A=I+A),A<0||A>=I)throw new Error(`axis ${p} is out of bounds for array of dimension ${I}`);const $=Array.from(c).filter((t,o)=>o!==A);if($.length===0)return rt(n);const S=B.zeros($,x),D=S.data,l=c[A],e=$.reduce((t,o)=>t*o,1);if(k(x)){const t=b,o=D;for(let r=0;r<e;r++){let s=1,f=0;for(let a=0;a<l;a++){const i=M(r,A,a,c),d=V(i,h,m),w=t[d*2],u=t[d*2+1],z=s*w-f*u,C=s*u+f*w;s=z,f=C}o[r*2]=s,o[r*2+1]=f}}else if(Q(x)){const t=b,o=D;for(let r=0;r<e;r++){let s=BigInt(1);for(let f=0;f<l;f++){const a=M(r,A,f,c),i=V(a,h,m);s*=t[i]}o[r]=s}}else for(let t=0;t<e;t++){let o=1;for(let r=0;r<l;r++){const s=M(t,A,r,c),f=V(s,h,m);o*=Number(b[f])}D[t]=o}if(F){const t=[...c];return t[A]=1,B.fromData(D,t,x)}return S}function G(n,p,F=!1){const x=n.dtype,c=n.shape,I=c.length,N=n.size,b=n.data,m=n.offset,h=n.strides;if(k(x)){const e=b;if(p===void 0){if(N===0)throw new Error("min of empty array");let i=e[m*2],d=e[m*2+1];for(let w=1;w<N;w++){const u=e[(m+w)*2],z=e[(m+w)*2+1];if(isNaN(u)||isNaN(z))return new U(NaN,NaN);(u<i||u===i&&z<d)&&(i=u,d=z)}return isNaN(i)||isNaN(d)?new U(NaN,NaN):new U(i,d)}let t=p;if(t<0&&(t=I+t),t<0||t>=I)throw new Error(`axis ${p} is out of bounds for array of dimension ${I}`);const o=Array.from(c).filter((i,d)=>d!==t);if(o.length===0)return G(n);const r=B.zeros(o,x),s=r.data,f=c[t],a=o.reduce((i,d)=>i*d,1);for(let i=0;i<a;i++){const d=M(i,t,0,c),w=V(d,h,m);let u=e[w*2],z=e[w*2+1];for(let C=1;C<f;C++){const E=M(i,t,C,c),R=V(E,h,m),v=e[R*2],g=e[R*2+1];if(isNaN(v)||isNaN(g)){u=NaN,z=NaN;break}(v<u||v===u&&g<z)&&(u=v,z=g)}s[i*2]=u,s[i*2+1]=z}if(F){const i=[...c];return i[t]=1,B.fromData(s,i,x)}return r}if(p===void 0){if(N===0)throw new Error("min of empty array");if(n.isCContiguous){let e=b[m];if(m===0)for(let t=1;t<N;t++)b[t]<e&&(e=b[t]);else for(let t=1;t<N;t++)b[m+t]<e&&(e=b[m+t]);return Number(e)}else{let e=n.iget(0);for(let t=1;t<N;t++){const o=n.iget(t);o<e&&(e=o)}return Number(e)}}let y=p;if(y<0&&(y=I+y),y<0||y>=I)throw new Error(`axis ${p} is out of bounds for array of dimension ${I}`);const A=Array.from(c).filter((e,t)=>t!==y);if(A.length===0)return G(n);const $=B.zeros(A,x),S=$.data,D=c[y],l=A.reduce((e,t)=>e*t,1);if(Q(x)){const e=b,t=S;for(let o=0;o<l;o++){const r=M(o,y,0,c),s=V(r,h,m);let f=e[s];for(let a=1;a<D;a++){const i=M(o,y,a,c),d=V(i,h,m),w=e[d];w<f&&(f=w)}t[o]=f}}else for(let e=0;e<l;e++){let t=1/0;for(let o=0;o<D;o++){const r=M(e,y,o,c),s=V(r,h,m),f=Number(b[s]);f<t&&(t=f)}S[e]=t}if(F){const e=[...c];return e[y]=1,B.fromData(S,e,x)}return $}function W(n,p,F,x){return n<F?-1:n>F?1:p<x?-1:p>x?1:0}function it(n,p){const F=n.dtype,x=k(F),c=n.shape,I=c.length,N=n.size,b=n.data,m=n.offset,h=n.strides,y=n.isCContiguous;if(p===void 0){if(N===0)throw new Error("argmin of empty array");if(x)if(y){const t=b;let o=t[m*2],r=t[m*2+1],s=0;for(let f=1;f<N;f++){const a=t[(m+f)*2],i=t[(m+f)*2+1];W(a,i,o,r)<0&&(o=a,r=i,s=f)}return s}else{const t=n.iget(0);let o=t.re,r=t.im,s=0;for(let f=1;f<N;f++){const a=n.iget(f);W(a.re,a.im,o,r)<0&&(o=a.re,r=a.im,s=f)}return s}if(y){let t=b[m],o=0;if(m===0)for(let r=1;r<N;r++)b[r]<t&&(t=b[r],o=r);else for(let r=1;r<N;r++)b[m+r]<t&&(t=b[m+r],o=r);return o}else{let t=n.iget(0),o=0;for(let r=1;r<N;r++){const s=n.iget(r);s<t&&(t=s,o=r)}return o}}let A=p;if(A<0&&(A=I+A),A<0||A>=I)throw new Error(`axis ${p} is out of bounds for array of dimension ${I}`);const $=Array.from(c).filter((t,o)=>o!==A);if($.length===0)return it(n);const S=B.zeros($,"int32"),D=S.data,l=c[A],e=$.reduce((t,o)=>t*o,1);if(x){const t=b;for(let o=0;o<e;o++){const r=M(o,A,0,c),s=V(r,h,m);let f=t[s*2],a=t[s*2+1],i=0;for(let d=1;d<l;d++){const w=M(o,A,d,c),u=V(w,h,m),z=t[u*2],C=t[u*2+1];W(z,C,f,a)<0&&(f=z,a=C,i=d)}D[o]=i}}else if(Q(F)){const t=b;for(let o=0;o<e;o++){const r=M(o,A,0,c),s=V(r,h,m);let f=t[s],a=0;for(let i=1;i<l;i++){const d=M(o,A,i,c),w=V(d,h,m),u=t[w];u<f&&(f=u,a=i)}D[o]=a}}else for(let t=0;t<e;t++){let o=1/0,r=0;for(let s=0;s<l;s++){const f=M(t,A,s,c),a=V(f,h,m),i=Number(b[a]);i<o&&(o=i,r=s)}D[t]=r}return S}function st(n,p){const F=n.dtype,x=k(F),c=n.shape,I=c.length,N=n.size,b=n.data,m=n.offset,h=n.strides,y=n.isCContiguous;if(p===void 0){if(N===0)throw new Error("argmax of empty array");if(x)if(y){const t=b;let o=t[m*2],r=t[m*2+1],s=0;for(let f=1;f<N;f++){const a=t[(m+f)*2],i=t[(m+f)*2+1];W(a,i,o,r)>0&&(o=a,r=i,s=f)}return s}else{const t=n.iget(0);let o=t.re,r=t.im,s=0;for(let f=1;f<N;f++){const a=n.iget(f);W(a.re,a.im,o,r)>0&&(o=a.re,r=a.im,s=f)}return s}if(y){let t=b[m],o=0;for(let r=1;r<N;r++)b[m+r]>t&&(t=b[m+r],o=r);return o}else{let t=n.iget(0),o=0;for(let r=1;r<N;r++){const s=n.iget(r);s>t&&(t=s,o=r)}return o}}let A=p;if(A<0&&(A=I+A),A<0||A>=I)throw new Error(`axis ${p} is out of bounds for array of dimension ${I}`);const $=Array.from(c).filter((t,o)=>o!==A);if($.length===0)return st(n);const S=B.zeros($,"int32"),D=S.data,l=c[A],e=$.reduce((t,o)=>t*o,1);if(x){const t=b;for(let o=0;o<e;o++){const r=M(o,A,0,c),s=V(r,h,m);let f=t[s*2],a=t[s*2+1],i=0;for(let d=1;d<l;d++){const w=M(o,A,d,c),u=V(w,h,m),z=t[u*2],C=t[u*2+1];W(z,C,f,a)>0&&(f=z,a=C,i=d)}D[o]=i}}else if(Q(F)){const t=b;for(let o=0;o<e;o++){const r=M(o,A,0,c),s=V(r,h,m);let f=t[s],a=0;for(let i=1;i<l;i++){const d=M(o,A,i,c),w=V(d,h,m),u=t[w];u>f&&(f=u,a=i)}D[o]=a}}else for(let t=0;t<e;t++){let o=-1/0,r=0;for(let s=0;s<l;s++){const f=M(t,A,s,c),a=V(f,h,m),i=Number(b[a]);i>o&&(o=i,r=s)}D[t]=r}return S}function at(n,p,F=0,x=!1){const c=n.dtype,I=n.shape,N=I.length,b=n.size,m=n.data,h=n.offset,y=n.strides,A=X(n,p,x),$=n.isCContiguous;if(p===void 0){if(k(c)){const i=A;let d=0;if($){const w=m;for(let u=0;u<b;u++){const z=w[(h+u)*2],C=w[(h+u)*2+1],E=z-i.re,R=C-i.im;d+=E*E+R*R}}else for(let w=0;w<b;w++){const u=n.iget(w),z=u.re-i.re,C=u.im-i.im;d+=z*z+C*C}return d/(b-F)}const f=A;let a=0;if($)for(let i=0;i<b;i++){const d=Number(m[h+i])-f;a+=d*d}else for(let i=0;i<b;i++){const d=Number(n.iget(i))-f;a+=d*d}return a/(b-F)}let S=p;if(S<0&&(S=N+S),S<0||S>=N)throw new Error(`axis ${p} is out of bounds for array of dimension ${N}`);const D=I[S],l=A,e=l.data,t=x?l.shape:Array.from(I).filter((f,a)=>a!==S),o=B.zeros(Array.from(t),"float64"),r=o.data,s=t.reduce((f,a)=>f*a,1);if(k(c)){const f=m,a=e;for(let i=0;i<s;i++){let d=0;const w=a[i*2],u=a[i*2+1];for(let z=0;z<D;z++){const C=M(i,S,z,I),E=V(C,y,h),R=f[E*2],v=f[E*2+1],g=R-w,_=v-u;d+=g*g+_*_}r[i]=d/(D-F)}}else for(let f=0;f<s;f++){let a=0;const i=Number(e[f]);for(let d=0;d<D;d++){const w=M(f,S,d,I),u=V(w,y,h),z=Number(m[u])-i;a+=z*z}r[f]=a/(D-F)}return o}function Nt(n,p,F=0,x=!1){const c=at(n,p,F,x);if(typeof c=="number")return Math.sqrt(c);const I=B.zeros(Array.from(c.shape),"float64"),N=c.data,b=I.data;for(let m=0;m<N.length;m++)b[m]=Math.sqrt(Number(N[m]));return I}function ft(n,p,F=!1){const x=n.shape,c=x.length,I=n.size,N=n.data,b=n.offset,m=n.strides,h=n.isCContiguous;if(p===void 0){if(h){for(let e=0;e<I;e++)if(!N[b+e])return!1}else for(let e=0;e<I;e++)if(!n.iget(e))return!1;return!0}let y=p;if(y<0&&(y=c+y),y<0||y>=c)throw new Error(`axis ${p} is out of bounds for array of dimension ${c}`);const A=Array.from(x).filter((e,t)=>t!==y);if(A.length===0)return ft(n);const $=B.zeros(A,"bool"),S=$.data,D=x[y],l=A.reduce((e,t)=>e*t,1);for(let e=0;e<l;e++){let t=!0;for(let o=0;o<D;o++){const r=M(e,y,o,x),s=V(r,m,b);if(!N[s]){t=!1;break}}S[e]=t?1:0}if(F){const e=[...x];return e[y]=1,B.fromData(S,e,"bool")}return $}function lt(n,p,F=!1){const x=n.shape,c=x.length,I=n.size,N=n.data,b=n.offset,m=n.strides,h=n.isCContiguous;if(p===void 0){if(h){for(let e=0;e<I;e++)if(N[b+e])return!0}else for(let e=0;e<I;e++)if(n.iget(e))return!0;return!1}let y=p;if(y<0&&(y=c+y),y<0||y>=c)throw new Error(`axis ${p} is out of bounds for array of dimension ${c}`);const A=Array.from(x).filter((e,t)=>t!==y);if(A.length===0)return lt(n);const $=B.zeros(A,"bool"),S=$.data,D=x[y],l=A.reduce((e,t)=>e*t,1);for(let e=0;e<l;e++){let t=!1;for(let o=0;o<D;o++){const r=M(e,y,o,x),s=V(r,m,b);if(N[s]){t=!0;break}}S[e]=t?1:0}if(F){const e=[...x];return e[y]=1,B.fromData(S,e,"bool")}return $}function bt(n,p){const F=n.dtype,x=n.shape,c=x.length,I=n.data,N=n.offset,b=n.strides,m=n.isCContiguous;if(k(F)){const e=I,t=n.size;if(p===void 0){const u=B.zeros([t],F),z=u.data;let C=0,E=0;if(m)for(let R=0;R<t;R++)C+=e[(N+R)*2],E+=e[(N+R)*2+1],z[R*2]=C,z[R*2+1]=E;else for(let R=0;R<t;R++){const v=n.iget(R);C+=v.re,E+=v.im,z[R*2]=C,z[R*2+1]=E}return u}let o=p;if(o<0&&(o=c+o),o<0||o>=c)throw new Error(`axis ${p} is out of bounds for array of dimension ${c}`);const r=B.zeros([...x],F),s=r.data,f=x[o],a=[];let i=1;for(let u=c-1;u>=0;u--)a.unshift(i),i*=x[u];const d=n.size,w=a[o];for(let u=0;u<d;u++){const z=Math.floor(u/w)%f,C=new Array(c);let E=u;for(let v=c-1;v>=0;v--)C[v]=E%x[v],E=Math.floor(E/x[v]);const R=V(C,b,N);z===0?(s[u*2]=e[R*2],s[u*2+1]=e[R*2+1]):(s[u*2]=s[(u-w)*2]+e[R*2],s[u*2+1]=s[(u-w)*2+1]+e[R*2+1])}return r}if(p===void 0){const e=n.size,t=new Float64Array(e);let o=0;if(m)for(let r=0;r<e;r++)o+=Number(I[N+r]),t[r]=o;else for(let r=0;r<e;r++)o+=Number(n.iget(r)),t[r]=o;return B.fromData(t,[e],"float64")}let h=p;if(h<0&&(h=c+h),h<0||h>=c)throw new Error(`axis ${p} is out of bounds for array of dimension ${c}`);const y=new Float64Array(n.size),A=x[h],$=[];let S=1;for(let e=c-1;e>=0;e--)$.unshift(S),S*=x[e];const D=n.size,l=$[h];for(let e=0;e<D;e++){const t=Math.floor(e/l)%A,o=new Array(c);let r=e;for(let f=c-1;f>=0;f--)o[f]=r%x[f],r=Math.floor(r/x[f]);const s=V(o,b,N);t===0?y[e]=Number(I[s]):y[e]=y[e-l]+Number(I[s])}return B.fromData(y,[...x],"float64")}function At(n,p){const F=n.dtype,x=n.shape,c=x.length,I=n.data,N=n.offset,b=n.strides,m=n.isCContiguous;if(k(F)){const e=I,t=n.size;if(p===void 0){const u=B.zeros([t],F),z=u.data;let C=1,E=0;if(m)for(let R=0;R<t;R++){const v=e[(N+R)*2],g=e[(N+R)*2+1],_=C*v-E*g,T=C*g+E*v;C=_,E=T,z[R*2]=C,z[R*2+1]=E}else for(let R=0;R<t;R++){const v=n.iget(R),g=v.re,_=v.im,T=C*g-E*_,q=C*_+E*g;C=T,E=q,z[R*2]=C,z[R*2+1]=E}return u}let o=p;if(o<0&&(o=c+o),o<0||o>=c)throw new Error(`axis ${p} is out of bounds for array of dimension ${c}`);const r=B.zeros([...x],F),s=r.data,f=x[o],a=[];let i=1;for(let u=c-1;u>=0;u--)a.unshift(i),i*=x[u];const d=n.size,w=a[o];for(let u=0;u<d;u++){const z=Math.floor(u/w)%f,C=new Array(c);let E=u;for(let v=c-1;v>=0;v--)C[v]=E%x[v],E=Math.floor(E/x[v]);const R=V(C,b,N);if(z===0)s[u*2]=e[R*2],s[u*2+1]=e[R*2+1];else{const v=s[(u-w)*2],g=s[(u-w)*2+1],_=e[R*2],T=e[R*2+1];s[u*2]=v*_-g*T,s[u*2+1]=v*T+g*_}}return r}if(p===void 0){const e=n.size,t=new Float64Array(e);let o=1;if(m)for(let r=0;r<e;r++)o*=Number(I[N+r]),t[r]=o;else for(let r=0;r<e;r++)o*=Number(n.iget(r)),t[r]=o;return B.fromData(t,[e],"float64")}let h=p;if(h<0&&(h=c+h),h<0||h>=c)throw new Error(`axis ${p} is out of bounds for array of dimension ${c}`);const y=new Float64Array(n.size),A=x[h],$=[];let S=1;for(let e=c-1;e>=0;e--)$.unshift(S),S*=x[e];const D=n.size,l=$[h];for(let e=0;e<D;e++){const t=Math.floor(e/l)%A,o=new Array(c);let r=e;for(let f=c-1;f>=0;f--)o[f]=r%x[f],r=Math.floor(r/x[f]);const s=V(o,b,N);t===0?y[e]=Number(I[s]):y[e]=y[e-l]*Number(I[s])}return B.fromData(y,[...x],"float64")}function ht(n,p,F=!1){const x=n.dtype;if(k(x)){const A=j(n,p,F),$=G(n,p,F);if(A instanceof U&&$ instanceof U)return new U(A.re-$.re,A.im-$.im);const S=A,D=$,l=S.data,e=D.data,t=new Float64Array(S.size*2);for(let o=0;o<S.size;o++)t[o*2]=l[o*2]-e[o*2],t[o*2+1]=l[o*2+1]-e[o*2+1];return B.fromData(t,[...S.shape],x)}const c=j(n,p,F),I=G(n,p,F);if(typeof c=="number"&&typeof I=="number")return c-I;const N=c,b=I,m=N.data,h=b.data,y=new Float64Array(N.size);for(let A=0;A<N.size;A++)y[A]=Number(m[A])-Number(h[A]);return B.fromData(y,[...N.shape],"float64")}function St(n,p,F=!1){return K(n,.5,p,F)}function zt(n,p,F,x=!1){return K(n,p/100,F,x)}function K(n,p,F,x=!1){if(H(n.dtype,"quantile","Complex numbers are not orderable."),p<0||p>1)throw new Error("Quantile must be between 0 and 1");const c=n.shape,I=c.length,N=n.data,b=n.offset,m=n.strides;if(F===void 0){const l=[];if(n.isCContiguous)for(let a=0;a<n.size;a++)l.push(Number(N[b+a]));else for(let a=0;a<n.size;a++)l.push(Number(n.iget(a)));l.sort((a,i)=>a-i);const t=l.length,o=p*(t-1),r=Math.floor(o),s=Math.ceil(o);if(r===s)return l[r];const f=o-r;return l[r]*(1-f)+l[s]*f}let h=F;if(h<0&&(h=I+h),h<0||h>=I)throw new Error(`axis ${F} is out of bounds for array of dimension ${I}`);const y=Array.from(c).filter((l,e)=>e!==h);if(y.length===0)return K(n,p);const A=y.reduce((l,e)=>l*e,1),$=c[h],S=new Float64Array(A);for(let l=0;l<A;l++){const e=[];for(let f=0;f<$;f++){const a=M(l,h,f,c),i=V(a,m,b);e.push(Number(N[i]))}e.sort((f,a)=>f-a);const t=e.length,o=p*(t-1),r=Math.floor(o),s=Math.ceil(o);if(r===s)S[l]=e[r];else{const f=o-r;S[l]=e[r]*(1-f)+e[s]*f}}const D=B.fromData(S,y,"float64");if(x){const l=[...c];return l[h]=1,B.fromData(S,l,"float64")}return D}function Y(n,p,F,x=!1){const c=n.dtype,I=n.shape,N=I.length,b=n.data,m=n.offset,h=n.strides;if(F===void 0)return X(n,p,x);if(k(c)){const o=b,r=F.data,s=F.offset;if(p===void 0){let z=0,C=0,E=0;if(n.isCContiguous)for(let v=0;v<n.size;v++){const g=Number(r[s+v%F.size]),_=o[(m+v)*2],T=o[(m+v)*2+1];z+=_*g,C+=T*g,E+=g}else for(let v=0;v<n.size;v++){const g=Number(r[s+v%F.size]),_=n.iget(v);z+=_.re*g,C+=_.im*g,E+=g}return E===0?new U(NaN,NaN):new U(z/E,C/E)}let f=p;if(f<0&&(f=N+f),f<0||f>=N)throw new Error(`axis ${p} is out of bounds for array of dimension ${N}`);const a=Array.from(I).filter((z,C)=>C!==f);if(a.length===0)return Y(n,void 0,F);const i=a.reduce((z,C)=>z*C,1),d=I[f],w=B.zeros(a,c),u=w.data;for(let z=0;z<i;z++){let C=0,E=0,R=0;for(let v=0;v<d;v++){const g=M(z,f,v,I),_=V(g,h,m),T=Number(r[s+v%F.size]),q=o[_*2],O=o[_*2+1];C+=q*T,E+=O*T,R+=T}R===0?(u[z*2]=NaN,u[z*2+1]=NaN):(u[z*2]=C/R,u[z*2+1]=E/R)}if(x){const z=[...I];return z[f]=1,B.fromData(u,z,c)}return w}const y=F.offset;if(p===void 0){let o=0,r=0;const s=F.data;if(n.isCContiguous)for(let a=0;a<n.size;a++){const i=Number(s[y+a%F.size]);o+=Number(b[m+a])*i,r+=i}else for(let a=0;a<n.size;a++){const i=Number(s[y+a%F.size]);o+=Number(n.iget(a))*i,r+=i}return r===0?NaN:o/r}let A=p;if(A<0&&(A=N+A),A<0||A>=N)throw new Error(`axis ${p} is out of bounds for array of dimension ${N}`);const $=Array.from(I).filter((o,r)=>r!==A);if($.length===0)return Y(n,void 0,F);const S=$.reduce((o,r)=>o*r,1),D=I[A],l=F.data,e=new Float64Array(S);for(let o=0;o<S;o++){let r=0,s=0;for(let f=0;f<D;f++){const a=M(o,A,f,I),i=V(a,h,m),d=Number(l[y+f%F.size]);r+=Number(b[i])*d,s+=d}e[o]=s===0?NaN:r/s}const t=B.fromData(e,$,"float64");if(x){const o=[...I];return o[A]=1,B.fromData(e,o,"float64")}return t}function P(n,p){return isNaN(n)||isNaN(p)}function ut(n,p,F=!1){const x=n.dtype,c=k(x),I=n.shape,N=I.length,b=n.data,m=n.offset,h=n.strides;if(p===void 0){if(c){const o=b;let r=0,s=0;if(n.isCContiguous)for(let a=0;a<n.size;a++){const i=o[(m+a)*2],d=o[(m+a)*2+1];P(i,d)||(r+=i,s+=d)}else for(let a=0;a<n.size;a++){const i=n.iget(a),d=i.re,w=i.im;P(d,w)||(r+=d,s+=w)}return new U(r,s)}let e=0;if(n.isCContiguous)for(let o=0;o<n.size;o++){const r=Number(b[m+o]);isNaN(r)||(e+=r)}else for(let o=0;o<n.size;o++){const r=Number(n.iget(o));isNaN(r)||(e+=r)}return e}let y=p;if(y<0&&(y=N+y),y<0||y>=N)throw new Error(`axis ${p} is out of bounds for array of dimension ${N}`);const A=Array.from(I).filter((e,t)=>t!==y);if(A.length===0)return ut(n);const $=A.reduce((e,t)=>e*t,1),S=I[y];if(c){const e=b,t=new Float64Array($*2);for(let o=0;o<$;o++){let r=0,s=0;for(let f=0;f<S;f++){const a=M(o,y,f,I),i=V(a,h,m),d=e[i*2],w=e[i*2+1];P(d,w)||(r+=d,s+=w)}t[o*2]=r,t[o*2+1]=s}if(F){const o=[...I];return o[y]=1,B.fromData(t,o,x)}return B.fromData(t,A,x)}const D=new Float64Array($);for(let e=0;e<$;e++){let t=0;for(let o=0;o<S;o++){const r=M(e,y,o,I),s=V(r,h,m),f=Number(b[s]);isNaN(f)||(t+=f)}D[e]=t}const l=B.fromData(D,A,"float64");if(F){const e=[...I];return e[y]=1,B.fromData(D,e,"float64")}return l}function ct(n,p,F=!1){const x=n.dtype,c=k(x),I=n.shape,N=I.length,b=n.data,m=n.offset,h=n.strides;if(p===void 0){if(c){const o=b;let r=1,s=0;if(n.isCContiguous)for(let a=0;a<n.size;a++){const i=o[(m+a)*2],d=o[(m+a)*2+1];if(!P(i,d)){const w=r*i-s*d,u=r*d+s*i;r=w,s=u}}else for(let a=0;a<n.size;a++){const i=n.iget(a),d=i.re,w=i.im;if(!P(d,w)){const u=r*d-s*w,z=r*w+s*d;r=u,s=z}}return new U(r,s)}let e=1;if(n.isCContiguous)for(let o=0;o<n.size;o++){const r=Number(b[m+o]);isNaN(r)||(e*=r)}else for(let o=0;o<n.size;o++){const r=Number(n.iget(o));isNaN(r)||(e*=r)}return e}let y=p;if(y<0&&(y=N+y),y<0||y>=N)throw new Error(`axis ${p} is out of bounds for array of dimension ${N}`);const A=Array.from(I).filter((e,t)=>t!==y);if(A.length===0)return ct(n);const $=A.reduce((e,t)=>e*t,1),S=I[y];if(c){const e=b,t=new Float64Array($*2);for(let o=0;o<$;o++){let r=1,s=0;for(let f=0;f<S;f++){const a=M(o,y,f,I),i=V(a,h,m),d=e[i*2],w=e[i*2+1];if(!P(d,w)){const u=r*d-s*w,z=r*w+s*d;r=u,s=z}}t[o*2]=r,t[o*2+1]=s}if(F){const o=[...I];return o[y]=1,B.fromData(t,o,x)}return B.fromData(t,A,x)}const D=new Float64Array($);for(let e=0;e<$;e++){let t=1;for(let o=0;o<S;o++){const r=M(e,y,o,I),s=V(r,h,m),f=Number(b[s]);isNaN(f)||(t*=f)}D[e]=t}const l=B.fromData(D,A,"float64");if(F){const e=[...I];return e[y]=1,B.fromData(D,e,"float64")}return l}function mt(n,p,F=!1){const x=n.dtype,c=k(x),I=n.shape,N=I.length,b=n.data,m=n.offset,h=n.strides;if(p===void 0){if(c){const r=b;let s=0,f=0,a=0;if(n.isCContiguous)for(let d=0;d<n.size;d++){const w=r[(m+d)*2],u=r[(m+d)*2+1];P(w,u)||(s+=w,f+=u,a++)}else for(let d=0;d<n.size;d++){const w=n.iget(d),u=w.re,z=w.im;P(u,z)||(s+=u,f+=z,a++)}return a===0?new U(NaN,NaN):new U(s/a,f/a)}let e=0,t=0;if(n.isCContiguous)for(let r=0;r<n.size;r++){const s=Number(b[m+r]);isNaN(s)||(e+=s,t++)}else for(let r=0;r<n.size;r++){const s=Number(n.iget(r));isNaN(s)||(e+=s,t++)}return t===0?NaN:e/t}let y=p;if(y<0&&(y=N+y),y<0||y>=N)throw new Error(`axis ${p} is out of bounds for array of dimension ${N}`);const A=Array.from(I).filter((e,t)=>t!==y);if(A.length===0)return mt(n);const $=A.reduce((e,t)=>e*t,1),S=I[y];if(c){const e=b,t=new Float64Array($*2);for(let o=0;o<$;o++){let r=0,s=0,f=0;for(let a=0;a<S;a++){const i=M(o,y,a,I),d=V(i,h,m),w=e[d*2],u=e[d*2+1];P(w,u)||(r+=w,s+=u,f++)}f===0?(t[o*2]=NaN,t[o*2+1]=NaN):(t[o*2]=r/f,t[o*2+1]=s/f)}if(F){const o=[...I];return o[y]=1,B.fromData(t,o,x)}return B.fromData(t,A,x)}const D=new Float64Array($);for(let e=0;e<$;e++){let t=0,o=0;for(let r=0;r<S;r++){const s=M(e,y,r,I),f=V(s,h,m),a=Number(b[f]);isNaN(a)||(t+=a,o++)}D[e]=o===0?NaN:t/o}const l=B.fromData(D,A,"float64");if(F){const e=[...I];return e[y]=1,B.fromData(D,e,"float64")}return l}function L(n,p,F=0,x=!1){const c=n.dtype,I=n.shape,N=I.length,b=n.data,m=n.offset,h=n.strides;if(k(c)){const e=b;if(p===void 0){let i=0,d=0,w=0;const u=n.isCContiguous;if(u)for(let R=0;R<n.size;R++){const v=e[(m+R)*2],g=e[(m+R)*2+1];P(v,g)||(i+=v,d+=g,w++)}else for(let R=0;R<n.size;R++){const v=n.iget(R),g=v.re,_=v.im;P(g,_)||(i+=g,d+=_,w++)}if(w-F<=0)return NaN;const z=i/w,C=d/w;let E=0;if(u)for(let R=0;R<n.size;R++){const v=e[(m+R)*2],g=e[(m+R)*2+1];if(!P(v,g)){const _=v-z,T=g-C;E+=_*_+T*T}}else for(let R=0;R<n.size;R++){const v=n.iget(R),g=v.re,_=v.im;if(!P(g,_)){const T=g-z,q=_-C;E+=T*T+q*q}}return E/(w-F)}let t=p;if(t<0&&(t=N+t),t<0||t>=N)throw new Error(`axis ${p} is out of bounds for array of dimension ${N}`);const o=Array.from(I).filter((i,d)=>d!==t);if(o.length===0)return L(n,void 0,F);const r=o.reduce((i,d)=>i*d,1),s=I[t],f=new Float64Array(r);for(let i=0;i<r;i++){let d=0,w=0,u=0;for(let R=0;R<s;R++){const v=M(i,t,R,I),g=V(v,h,m),_=e[g*2],T=e[g*2+1];P(_,T)||(d+=_,w+=T,u++)}if(u-F<=0){f[i]=NaN;continue}const z=d/u,C=w/u;let E=0;for(let R=0;R<s;R++){const v=M(i,t,R,I),g=V(v,h,m),_=e[g*2],T=e[g*2+1];if(!P(_,T)){const q=_-z,O=T-C;E+=q*q+O*O}}f[i]=E/(u-F)}const a=B.fromData(f,o,"float64");if(x){const i=[...I];return i[t]=1,B.fromData(f,i,"float64")}return a}if(p===void 0){let e=0,t=0;const o=n.isCContiguous;if(o)for(let f=0;f<n.size;f++){const a=Number(b[m+f]);isNaN(a)||(e+=a,t++)}else for(let f=0;f<n.size;f++){const a=Number(n.iget(f));isNaN(a)||(e+=a,t++)}if(t-F<=0)return NaN;const r=e/t;let s=0;if(o)for(let f=0;f<n.size;f++){const a=Number(b[m+f]);isNaN(a)||(s+=(a-r)**2)}else for(let f=0;f<n.size;f++){const a=Number(n.iget(f));isNaN(a)||(s+=(a-r)**2)}return s/(t-F)}let y=p;if(y<0&&(y=N+y),y<0||y>=N)throw new Error(`axis ${p} is out of bounds for array of dimension ${N}`);const A=Array.from(I).filter((e,t)=>t!==y);if(A.length===0)return L(n,void 0,F);const $=A.reduce((e,t)=>e*t,1),S=I[y],D=new Float64Array($);for(let e=0;e<$;e++){let t=0,o=0;for(let f=0;f<S;f++){const a=M(e,y,f,I),i=V(a,h,m),d=Number(b[i]);isNaN(d)||(t+=d,o++)}if(o-F<=0){D[e]=NaN;continue}const r=t/o;let s=0;for(let f=0;f<S;f++){const a=M(e,y,f,I),i=V(a,h,m),d=Number(b[i]);isNaN(d)||(s+=(d-r)**2)}D[e]=s/(o-F)}const l=B.fromData(D,A,"float64");if(x){const e=[...I];return e[y]=1,B.fromData(D,e,"float64")}return l}function Dt(n,p,F=0,x=!1){const c=L(n,p,F,x);if(typeof c=="number")return Math.sqrt(c);const I=c,N=new Float64Array(I.size);for(let b=0;b<I.size;b++)N[b]=Math.sqrt(Number(I.data[b]));return B.fromData(N,[...I.shape],"float64")}function Z(n,p,F=!1){const x=n.dtype,c=n.shape,I=c.length,N=n.data,b=n.offset,m=n.strides;if(k(x)){const l=N;if(p===void 0){let a=1/0,i=1/0,d=!1;if(n.isCContiguous)for(let u=0;u<n.size;u++){const z=l[(b+u)*2],C=l[(b+u)*2+1];isNaN(z)||isNaN(C)||(d?(z<a||z===a&&C<i)&&(a=z,i=C):(a=z,i=C,d=!0))}else for(let u=0;u<n.size;u++){const z=n.iget(u),C=z.re,E=z.im;isNaN(C)||isNaN(E)||(d?(C<a||C===a&&E<i)&&(a=C,i=E):(a=C,i=E,d=!0))}return d?new U(a,i):new U(NaN,NaN)}let e=p;if(e<0&&(e=I+e),e<0||e>=I)throw new Error(`axis ${p} is out of bounds for array of dimension ${I}`);const t=Array.from(c).filter((a,i)=>i!==e);if(t.length===0)return Z(n);const o=t.reduce((a,i)=>a*i,1),r=c[e],s=new Float64Array(o*2);for(let a=0;a<o;a++){let i=1/0,d=1/0,w=!1;for(let u=0;u<r;u++){const z=M(a,e,u,c),C=V(z,m,b),E=l[C*2],R=l[C*2+1];isNaN(E)||isNaN(R)||(w?(E<i||E===i&&R<d)&&(i=E,d=R):(i=E,d=R,w=!0))}s[a*2]=w?i:NaN,s[a*2+1]=w?d:NaN}const f=B.fromData(s,t,x);if(F){const a=[...c];return a[e]=1,B.fromData(s,a,x)}return f}if(p===void 0){let l=1/0;if(n.isCContiguous)for(let t=0;t<n.size;t++){const o=Number(N[b+t]);!isNaN(o)&&o<l&&(l=o)}else for(let t=0;t<n.size;t++){const o=Number(n.iget(t));!isNaN(o)&&o<l&&(l=o)}return l===1/0?NaN:l}let h=p;if(h<0&&(h=I+h),h<0||h>=I)throw new Error(`axis ${p} is out of bounds for array of dimension ${I}`);const y=Array.from(c).filter((l,e)=>e!==h);if(y.length===0)return Z(n);const A=y.reduce((l,e)=>l*e,1),$=c[h],S=new Float64Array(A);for(let l=0;l<A;l++){let e=1/0;for(let t=0;t<$;t++){const o=M(l,h,t,c),r=V(o,m,b),s=Number(N[r]);!isNaN(s)&&s<e&&(e=s)}S[l]=e===1/0?NaN:e}const D=B.fromData(S,y,"float64");if(F){const l=[...c];return l[h]=1,B.fromData(S,l,"float64")}return D}function tt(n,p,F=!1){const x=n.dtype,c=n.shape,I=c.length,N=n.data,b=n.offset,m=n.strides;if(k(x)){const l=N;if(p===void 0){let a=-1/0,i=-1/0,d=!1;if(n.isCContiguous)for(let u=0;u<n.size;u++){const z=l[(b+u)*2],C=l[(b+u)*2+1];isNaN(z)||isNaN(C)||(d?(z>a||z===a&&C>i)&&(a=z,i=C):(a=z,i=C,d=!0))}else for(let u=0;u<n.size;u++){const z=n.iget(u),C=z.re,E=z.im;isNaN(C)||isNaN(E)||(d?(C>a||C===a&&E>i)&&(a=C,i=E):(a=C,i=E,d=!0))}return d?new U(a,i):new U(NaN,NaN)}let e=p;if(e<0&&(e=I+e),e<0||e>=I)throw new Error(`axis ${p} is out of bounds for array of dimension ${I}`);const t=Array.from(c).filter((a,i)=>i!==e);if(t.length===0)return tt(n);const o=t.reduce((a,i)=>a*i,1),r=c[e],s=new Float64Array(o*2);for(let a=0;a<o;a++){let i=-1/0,d=-1/0,w=!1;for(let u=0;u<r;u++){const z=M(a,e,u,c),C=V(z,m,b),E=l[C*2],R=l[C*2+1];isNaN(E)||isNaN(R)||(w?(E>i||E===i&&R>d)&&(i=E,d=R):(i=E,d=R,w=!0))}s[a*2]=w?i:NaN,s[a*2+1]=w?d:NaN}const f=B.fromData(s,t,x);if(F){const a=[...c];return a[e]=1,B.fromData(s,a,x)}return f}if(p===void 0){let l=-1/0;if(n.isCContiguous)for(let t=0;t<n.size;t++){const o=Number(N[b+t]);!isNaN(o)&&o>l&&(l=o)}else for(let t=0;t<n.size;t++){const o=Number(n.iget(t));!isNaN(o)&&o>l&&(l=o)}return l===-1/0?NaN:l}let h=p;if(h<0&&(h=I+h),h<0||h>=I)throw new Error(`axis ${p} is out of bounds for array of dimension ${I}`);const y=Array.from(c).filter((l,e)=>e!==h);if(y.length===0)return tt(n);const A=y.reduce((l,e)=>l*e,1),$=c[h],S=new Float64Array(A);for(let l=0;l<A;l++){let e=-1/0;for(let t=0;t<$;t++){const o=M(l,h,t,c),r=V(o,m,b),s=Number(N[r]);!isNaN(s)&&s>e&&(e=s)}S[l]=e===-1/0?NaN:e}const D=B.fromData(S,y,"float64");if(F){const l=[...c];return l[h]=1,B.fromData(S,l,"float64")}return D}function et(n,p){const F=n.dtype,x=n.shape,c=x.length,I=n.data,N=n.offset,b=n.strides;if(k(F)){const S=I;if(p===void 0){let r=1/0,s=1/0,f=-1;if(n.isCContiguous)for(let i=0;i<n.size;i++){const d=S[(N+i)*2],w=S[(N+i)*2+1];!P(d,w)&&W(d,w,r,s)<0&&(r=d,s=w,f=i)}else for(let i=0;i<n.size;i++){const d=n.iget(i),w=d.re,u=d.im;!P(w,u)&&W(w,u,r,s)<0&&(r=w,s=u,f=i)}return f}let D=p;if(D<0&&(D=c+D),D<0||D>=c)throw new Error(`axis ${p} is out of bounds for array of dimension ${c}`);const l=Array.from(x).filter((r,s)=>s!==D);if(l.length===0)return et(n);const e=l.reduce((r,s)=>r*s,1),t=x[D],o=new Int32Array(e);for(let r=0;r<e;r++){let s=1/0,f=1/0,a=0;for(let i=0;i<t;i++){const d=M(r,D,i,x),w=V(d,b,N),u=S[w*2],z=S[w*2+1];!P(u,z)&&W(u,z,s,f)<0&&(s=u,f=z,a=i)}o[r]=a}return B.fromData(o,l,"int32")}if(p===void 0){let S=1/0,D=-1;if(n.isCContiguous)for(let e=0;e<n.size;e++){const t=Number(I[N+e]);!isNaN(t)&&t<S&&(S=t,D=e)}else for(let e=0;e<n.size;e++){const t=Number(n.iget(e));!isNaN(t)&&t<S&&(S=t,D=e)}return D}let m=p;if(m<0&&(m=c+m),m<0||m>=c)throw new Error(`axis ${p} is out of bounds for array of dimension ${c}`);const h=Array.from(x).filter((S,D)=>D!==m);if(h.length===0)return et(n);const y=h.reduce((S,D)=>S*D,1),A=x[m],$=new Int32Array(y);for(let S=0;S<y;S++){let D=1/0,l=0;for(let e=0;e<A;e++){const t=M(S,m,e,x),o=V(t,b,N),r=Number(I[o]);!isNaN(r)&&r<D&&(D=r,l=e)}$[S]=l}return B.fromData($,h,"int32")}function ot(n,p){const F=n.dtype,x=n.shape,c=x.length,I=n.data,N=n.offset,b=n.strides;if(k(F)){const S=I;if(p===void 0){let r=-1/0,s=-1/0,f=-1;if(n.isCContiguous)for(let i=0;i<n.size;i++){const d=S[(N+i)*2],w=S[(N+i)*2+1];!P(d,w)&&W(d,w,r,s)>0&&(r=d,s=w,f=i)}else for(let i=0;i<n.size;i++){const d=n.iget(i),w=d.re,u=d.im;!P(w,u)&&W(w,u,r,s)>0&&(r=w,s=u,f=i)}return f}let D=p;if(D<0&&(D=c+D),D<0||D>=c)throw new Error(`axis ${p} is out of bounds for array of dimension ${c}`);const l=Array.from(x).filter((r,s)=>s!==D);if(l.length===0)return ot(n);const e=l.reduce((r,s)=>r*s,1),t=x[D],o=new Int32Array(e);for(let r=0;r<e;r++){let s=-1/0,f=-1/0,a=0;for(let i=0;i<t;i++){const d=M(r,D,i,x),w=V(d,b,N),u=S[w*2],z=S[w*2+1];!P(u,z)&&W(u,z,s,f)>0&&(s=u,f=z,a=i)}o[r]=a}return B.fromData(o,l,"int32")}if(p===void 0){let S=-1/0,D=-1;if(n.isCContiguous)for(let e=0;e<n.size;e++){const t=Number(I[N+e]);!isNaN(t)&&t>S&&(S=t,D=e)}else for(let e=0;e<n.size;e++){const t=Number(n.iget(e));!isNaN(t)&&t>S&&(S=t,D=e)}return D}let m=p;if(m<0&&(m=c+m),m<0||m>=c)throw new Error(`axis ${p} is out of bounds for array of dimension ${c}`);const h=Array.from(x).filter((S,D)=>D!==m);if(h.length===0)return ot(n);const y=h.reduce((S,D)=>S*D,1),A=x[m],$=new Int32Array(y);for(let S=0;S<y;S++){let D=-1/0,l=0;for(let e=0;e<A;e++){const t=M(S,m,e,x),o=V(t,b,N),r=Number(I[o]);!isNaN(r)&&r>D&&(D=r,l=e)}$[S]=l}return B.fromData($,h,"int32")}function wt(n,p){const F=n.dtype,x=n.shape,c=x.length,I=n.data,N=n.offset;if(k(F)){const l=I,e=n.size;if(p===void 0){const u=B.zeros([e],F),z=u.data;let C=0,E=0;if(n.isCContiguous)for(let v=0;v<e;v++){const g=l[(N+v)*2],_=l[(N+v)*2+1];P(g,_)||(C+=g,E+=_),z[v*2]=C,z[v*2+1]=E}else for(let v=0;v<e;v++){const g=n.iget(v),_=g.re,T=g.im;P(_,T)||(C+=_,E+=T),z[v*2]=C,z[v*2+1]=E}return u}let t=p;if(t<0&&(t=c+t),t<0||t>=c)throw new Error(`axis ${p} is out of bounds for array of dimension ${c}`);const o=B.zeros([...x],F),r=o.data,s=x[t],f=[];let a=1;for(let u=c-1;u>=0;u--)f.unshift(a),a*=x[u];const i=n.size,d=f[t];if(n.isCContiguous)for(let u=0;u<i;u++){const z=l[(N+u)*2],C=l[(N+u)*2+1],E=Math.floor(u/d)%s,R=P(z,C);E===0?(r[u*2]=R?0:z,r[u*2+1]=R?0:C):(r[u*2]=r[(u-d)*2]+(R?0:z),r[u*2+1]=r[(u-d)*2+1]+(R?0:C))}else for(let u=0;u<i;u++){const z=n.iget(u),C=z.re,E=z.im,R=Math.floor(u/d)%s,v=P(C,E);R===0?(r[u*2]=v?0:C,r[u*2+1]=v?0:E):(r[u*2]=r[(u-d)*2]+(v?0:C),r[u*2+1]=r[(u-d)*2+1]+(v?0:E))}return o}if(p===void 0){const l=n.size,e=new Float64Array(l);let t=0;if(n.isCContiguous)for(let r=0;r<l;r++){const s=Number(I[N+r]);isNaN(s)||(t+=s),e[r]=t}else for(let r=0;r<l;r++){const s=Number(n.iget(r));isNaN(s)||(t+=s),e[r]=t}return B.fromData(e,[l],"float64")}let b=p;if(b<0&&(b=c+b),b<0||b>=c)throw new Error(`axis ${p} is out of bounds for array of dimension ${c}`);const m=new Float64Array(n.size),h=x[b],y=[];let A=1;for(let l=c-1;l>=0;l--)y.unshift(A),A*=x[l];const $=n.size,S=y[b];if(n.isCContiguous)for(let l=0;l<$;l++){const e=Number(I[N+l]);Math.floor(l/S)%h===0?m[l]=isNaN(e)?0:e:m[l]=m[l-S]+(isNaN(e)?0:e)}else for(let l=0;l<$;l++){const e=Number(n.iget(l));Math.floor(l/S)%h===0?m[l]=isNaN(e)?0:e:m[l]=m[l-S]+(isNaN(e)?0:e)}return B.fromData(m,[...x],"float64")}function Ct(n,p){const F=n.dtype,x=n.shape,c=x.length,I=n.data,N=n.offset;if(k(F)){const l=I,e=n.size;if(p===void 0){const u=B.zeros([e],F),z=u.data;let C=1,E=0;if(n.isCContiguous)for(let v=0;v<e;v++){const g=l[(N+v)*2],_=l[(N+v)*2+1];if(!P(g,_)){const T=C*g-E*_,q=C*_+E*g;C=T,E=q}z[v*2]=C,z[v*2+1]=E}else for(let v=0;v<e;v++){const g=n.iget(v),_=g.re,T=g.im;if(!P(_,T)){const q=C*_-E*T,O=C*T+E*_;C=q,E=O}z[v*2]=C,z[v*2+1]=E}return u}let t=p;if(t<0&&(t=c+t),t<0||t>=c)throw new Error(`axis ${p} is out of bounds for array of dimension ${c}`);const o=B.zeros([...x],F),r=o.data,s=x[t],f=[];let a=1;for(let u=c-1;u>=0;u--)f.unshift(a),a*=x[u];const i=n.size,d=f[t];if(n.isCContiguous)for(let u=0;u<i;u++){const z=l[(N+u)*2],C=l[(N+u)*2+1],E=Math.floor(u/d)%s,R=P(z,C);if(E===0)r[u*2]=R?1:z,r[u*2+1]=R?0:C;else{const v=r[(u-d)*2],g=r[(u-d)*2+1];R?(r[u*2]=v,r[u*2+1]=g):(r[u*2]=v*z-g*C,r[u*2+1]=v*C+g*z)}}else for(let u=0;u<i;u++){const z=n.iget(u),C=z.re,E=z.im,R=Math.floor(u/d)%s,v=P(C,E);if(R===0)r[u*2]=v?1:C,r[u*2+1]=v?0:E;else{const g=r[(u-d)*2],_=r[(u-d)*2+1];v?(r[u*2]=g,r[u*2+1]=_):(r[u*2]=g*C-_*E,r[u*2+1]=g*E+_*C)}}return o}if(p===void 0){const l=n.size,e=new Float64Array(l);let t=1;if(n.isCContiguous)for(let r=0;r<l;r++){const s=Number(I[N+r]);isNaN(s)||(t*=s),e[r]=t}else for(let r=0;r<l;r++){const s=Number(n.iget(r));isNaN(s)||(t*=s),e[r]=t}return B.fromData(e,[l],"float64")}let b=p;if(b<0&&(b=c+b),b<0||b>=c)throw new Error(`axis ${p} is out of bounds for array of dimension ${c}`);const m=new Float64Array(n.size),h=x[b],y=[];let A=1;for(let l=c-1;l>=0;l--)y.unshift(A),A*=x[l];const $=n.size,S=y[b];if(n.isCContiguous)for(let l=0;l<$;l++){const e=Number(I[N+l]);Math.floor(l/S)%h===0?m[l]=isNaN(e)?1:e:m[l]=m[l-S]*(isNaN(e)?1:e)}else for(let l=0;l<$;l++){const e=Number(n.iget(l));Math.floor(l/S)%h===0?m[l]=isNaN(e)?1:e:m[l]=m[l-S]*(isNaN(e)?1:e)}return B.fromData(m,[...x],"float64")}function dt(n,p,F=!1){H(n.dtype,"nanmedian","Complex numbers are not orderable.");const x=n.shape,c=x.length,I=n.data,N=n.offset,b=n.strides;if(p===void 0){const D=[];if(n.isCContiguous)for(let o=0;o<n.size;o++){const r=Number(I[N+o]);isNaN(r)||D.push(r)}else for(let o=0;o<n.size;o++){const r=Number(n.iget(o));isNaN(r)||D.push(r)}if(D.length===0)return NaN;D.sort((o,r)=>o-r);const e=D.length,t=Math.floor(e/2);return e%2===0?(D[t-1]+D[t])/2:D[t]}let m=p;if(m<0&&(m=c+m),m<0||m>=c)throw new Error(`axis ${p} is out of bounds for array of dimension ${c}`);const h=Array.from(x).filter((D,l)=>l!==m);if(h.length===0)return dt(n);const y=h.reduce((D,l)=>D*l,1),A=x[m],$=new Float64Array(y);for(let D=0;D<y;D++){const l=[];for(let o=0;o<A;o++){const r=M(D,m,o,x),s=V(r,b,N),f=Number(I[s]);isNaN(f)||l.push(f)}if(l.length===0){$[D]=NaN;continue}l.sort((o,r)=>o-r);const e=l.length,t=Math.floor(e/2);e%2===0?$[D]=(l[t-1]+l[t])/2:$[D]=l[t]}const S=B.fromData($,h,"float64");if(F){const D=[...x];return D[m]=1,B.fromData($,D,"float64")}return S}function nt(n,p,F,x=!1){if(H(n.dtype,"nanquantile","Complex numbers are not orderable."),p<0||p>1)throw new Error("Quantile must be between 0 and 1");const c=n.shape,I=c.length,N=n.data,b=n.offset,m=n.strides;if(F===void 0){const l=[];if(n.isCContiguous)for(let a=0;a<n.size;a++){const i=Number(N[b+a]);isNaN(i)||l.push(i)}else for(let a=0;a<n.size;a++){const i=Number(n.iget(a));isNaN(i)||l.push(i)}if(l.length===0)return NaN;l.sort((a,i)=>a-i);const t=l.length,o=p*(t-1),r=Math.floor(o),s=Math.ceil(o);if(r===s)return l[r];const f=o-r;return l[r]*(1-f)+l[s]*f}let h=F;if(h<0&&(h=I+h),h<0||h>=I)throw new Error(`axis ${F} is out of bounds for array of dimension ${I}`);const y=Array.from(c).filter((l,e)=>e!==h);if(y.length===0)return nt(n,p);const A=y.reduce((l,e)=>l*e,1),$=c[h],S=new Float64Array(A);for(let l=0;l<A;l++){const e=[];for(let f=0;f<$;f++){const a=M(l,h,f,c),i=V(a,m,b),d=Number(N[i]);isNaN(d)||e.push(d)}if(e.length===0){S[l]=NaN;continue}e.sort((f,a)=>f-a);const t=e.length,o=p*(t-1),r=Math.floor(o),s=Math.ceil(o);if(r===s)S[l]=e[r];else{const f=o-r;S[l]=e[r]*(1-f)+e[s]*f}}const D=B.fromData(S,y,"float64");if(x){const l=[...c];return l[h]=1,B.fromData(S,l,"float64")}return D}function Ft(n,p,F,x=!1){return nt(n,p/100,F,x)}export{ft as all,lt as any,st as argmax,it as argmin,Y as average,At as cumprod,bt as cumsum,j as max,X as mean,St as median,G as min,ot as nanargmax,et as nanargmin,Ct as nancumprod,wt as nancumsum,tt as nanmax,mt as nanmean,dt as nanmedian,Z as nanmin,Ft as nanpercentile,ct as nanprod,nt as nanquantile,Dt as nanstd,ut as nansum,L as nanvar,zt as percentile,rt as prod,ht as ptp,K as quantile,Nt as std,J as sum,at as variance};
|
|
1
|
+
import{ArrayStorage as O}from"../storage";import{isBigIntDType as L,isComplexDType as U,isFloatDType as H,throwIfComplex as ot}from"../dtype";import{computeStrides as k,precomputeAxisOffsets as P}from"../internal/indexing";import{Complex as Q}from"../complex";import{wasmReduceSum as bt,wasmReduceSumStrided as Nt}from"../wasm/reduce_sum";import{wasmReduceMax as St,wasmReduceMaxStrided as At}from"../wasm/reduce_max";import{wasmReduceMin as It,wasmReduceMinStrided as ht}from"../wasm/reduce_min";import{wasmReduceArgmax as zt}from"../wasm/reduce_argmax";import{wasmReduceArgmin as wt}from"../wasm/reduce_argmin";import{wasmReduceMean as Dt,wasmReduceMeanStrided as Ct}from"../wasm/reduce_mean";import{wasmReduceVar as Ft}from"../wasm/reduce_var";import{wasmReduceNansum as Rt}from"../wasm/reduce_nansum";import{wasmReduceNanmin as vt}from"../wasm/reduce_nanmin";import{wasmReduceNanmax as $t}from"../wasm/reduce_nanmax";import{wasmReduceProd as Bt,wasmReduceProdStrided as Et}from"../wasm/reduce_prod";import{wasmReduceQuantile as Ot}from"../wasm/reduce_quantile";import{wasmReduceAny as gt}from"../wasm/reduce_any";import{wasmReduceAll as Vt}from"../wasm/reduce_all";const W=new Float32Array(2);function st(t){switch(t){case"int8":case"int16":case"int32":return"int64";case"uint8":case"uint16":case"uint32":return"uint64";default:return t}}function Tt(t){switch(t){case"int8":case"int16":case"int32":case"uint8":case"uint16":case"uint32":case"int64":case"uint64":return"float64";default:return t}}function j(t,x,z){const u=O.zeros(Array(x).fill(1),z);return u.iset(0,t),u}function tt(t,x,z=!1){const u=t.dtype,m=t.shape,b=m.length,S=t.size,h=t.data,A=t.offset,R=t.strides,I=t.isCContiguous;if(x===void 0){const e=bt(t);if(e!==null)return e;if(U(u)){let o=0,i=0;if(I){const a=h;for(let s=0;s<S;s++)o+=a[(A+s)*2],i+=a[(A+s)*2+1]}else for(let a=0;a<S;a++){const s=t.iget(a);o+=s.re,i+=s.im}return new Q(o,i)}else if(L(u)){let o=BigInt(0);if(I){const i=h;for(let a=0;a<S;a++)o+=i[A+a]}else for(let i=0;i<S;i++)o+=t.iget(i);return Number(o)}else if(u==="float32"){if(W[0]=0,I)for(let o=0;o<S;o++)W[0]+=Number(h[A+o]);else for(let o=0;o<S;o++)W[0]+=Number(t.iget(o));return W[0]}else{let o=0;if(I)if(A===0)for(let i=0;i<S;i++)o+=Number(h[i]);else for(let i=0;i<S;i++)o+=Number(h[A+i]);else for(let i=0;i<S;i++)o+=Number(t.iget(i));return o}}let w=x;if(w<0&&(w=b+w),w<0||w>=b)throw new Error(`axis ${x} is out of bounds for array of dimension ${b}`);const v=st(u),D=Array.from(m).filter((e,o)=>o!==w);if(D.length===0){const e=tt(t);if(!z)return e;const o=O.zeros(Array(b).fill(1),v);return o.iset(0,e),o}const g=O.zeros(D,v),y=g.data,d=m[w],c=D.reduce((e,o)=>e*o,1);if(I&&!U(u)){const e=m.slice(0,w).reduce((a,s)=>a*s,1),o=m.slice(w+1).reduce((a,s)=>a*s,1),i=Nt(t,e,d,o);if(i){const a=z?m.map((p,f)=>f===w?1:p):D;if(v==="float64")return O.fromData(i.data,a,v);if(v==="float32"){const p=new Float32Array(i.data.length),f=i.data;for(let l=0;l<f.length;l++)p[l]=f[l];return O.fromData(p,a,v)}const s=i.data;for(let p=0;p<s.length;p++)y[p]=y instanceof BigInt64Array||y instanceof BigUint64Array?BigInt(Math.round(s[p])):s[p];return z?O.fromData(y,a,v):g}}const{baseOffsets:n,axisStride:r}=P(m,R,A,w,c);if(U(u)){const e=h,o=y;if(u==="complex64")for(let i=0;i<c;i++){W[0]=0,W[1]=0;let a=n[i];for(let s=0;s<d;s++)W[0]+=e[a*2],W[1]+=e[a*2+1],a+=r;o[i*2]=W[0],o[i*2+1]=W[1]}else for(let i=0;i<c;i++){let a=0,s=0,p=n[i];for(let f=0;f<d;f++)a+=e[p*2],s+=e[p*2+1],p+=r;o[i*2]=a,o[i*2+1]=s}}else if(L(u)){const e=h,o=y;for(let i=0;i<c;i++){let a=BigInt(0),s=n[i];for(let p=0;p<d;p++)a+=e[s],s+=r;o[i]=a}}else if(L(v)){const e=y;for(let o=0;o<c;o++){let i=0,a=n[o];for(let s=0;s<d;s++)i+=Number(h[a]),a+=r;e[o]=BigInt(Math.round(i))}}else if(u==="float32")for(let e=0;e<c;e++){W[0]=0;let o=n[e];for(let i=0;i<d;i++)W[0]+=Number(h[o]),o+=r;y[e]=W[0]}else for(let e=0;e<c;e++){let o=0,i=n[e];for(let a=0;a<d;a++)o+=Number(h[i]),i+=r;y[e]=o}if(z){const e=[...m];return e[w]=1,O.fromData(y,e,v)}return g}function nt(t,x,z=!1){const u=t.dtype,m=t.shape;if(x===void 0){const D=Dt(t);if(D!==null)return D;const g=tt(t);return g instanceof Q?new Q(g.re/t.size,g.im/t.size):g/t.size}let b=x;if(b<0&&(b=m.length+b),b<0||b>=m.length)throw new Error(`axis ${x} is out of bounds for array of dimension ${m.length}`);if(t.isCContiguous&&!U(u)){const D=m[b],g=z?m.map((n,r)=>r===b?1:n):Array.from(m).filter((n,r)=>r!==b),y=m.slice(0,b).reduce((n,r)=>n*r,1),d=m.slice(b+1).reduce((n,r)=>n*r,1),c=Ct(t,y,D,d);if(c)return O.fromData(c.data,g,"float64")}const S=tt(t,x,z);if(typeof S=="number")return S/m[b];if(S instanceof Q)return new Q(S.re/m[b],S.im/m[b]);const h=m[b],A=Tt(u),R=O.zeros(Array.from(S.shape),A),I=R.data,w=S.data,v=S.dtype;if(U(u)){const D=w,g=I,y=S.size;for(let d=0;d<y;d++)g[d*2]=D[d*2]/h,g[d*2+1]=D[d*2+1]/h}else if(L(v)){const D=w;for(let g=0;g<I.length;g++)I[g]=Number(D[g])/h}else for(let D=0;D<I.length;D++)I[D]=Number(w[D])/h;return R}function Y(t,x,z=!1){const u=t.dtype,m=t.shape,b=m.length,S=t.size,h=t.data,A=t.offset,R=t.strides;if(U(u)){const n=h;if(x===void 0){if(S===0)throw new Error("max of empty array");let l=n[A*2],N=n[A*2+1];for(let C=1;C<S;C++){const B=n[(A+C)*2],F=n[(A+C)*2+1];if(isNaN(B)||isNaN(F))return new Q(NaN,NaN);(B>l||B===l&&F>N)&&(l=B,N=F)}return isNaN(l)||isNaN(N)?new Q(NaN,NaN):new Q(l,N)}let r=x;if(r<0&&(r=b+r),r<0||r>=b)throw new Error(`axis ${x} is out of bounds for array of dimension ${b}`);const e=Array.from(m).filter((l,N)=>N!==r);if(e.length===0){const l=Y(t);return z?j(l,b,u):l}const o=O.zeros(e,u),i=o.data,a=m[r],s=e.reduce((l,N)=>l*N,1),{baseOffsets:p,axisStride:f}=P(m,R,A,r,s);for(let l=0;l<s;l++){let N=p[l],C=n[N*2],B=n[N*2+1];N+=f;for(let F=1;F<a;F++){const $=n[N*2],E=n[N*2+1];if(N+=f,isNaN($)||isNaN(E)){C=NaN,B=NaN;break}($>C||$===C&&E>B)&&(C=$,B=E)}i[l*2]=C,i[l*2+1]=B}if(z){const l=[...m];return l[r]=1,O.fromData(i,l,u)}return o}if(x===void 0){const n=St(t);if(n!==null)return n;if(S===0)throw new Error("max of empty array");if(t.isCContiguous){let r=h[A];if(A===0)for(let e=1;e<S;e++)h[e]>r&&(r=h[e]);else for(let e=1;e<S;e++)h[A+e]>r&&(r=h[A+e]);return Number(r)}else{let r=t.iget(0);for(let e=1;e<S;e++){const o=t.iget(e);o>r&&(r=o)}return Number(r)}}let I=x;if(I<0&&(I=b+I),I<0||I>=b)throw new Error(`axis ${x} is out of bounds for array of dimension ${b}`);const w=Array.from(m).filter((n,r)=>r!==I);if(w.length===0){const n=Y(t);return z?j(n,b,u):n}const v=O.zeros(w,u),D=v.data,g=m[I],y=w.reduce((n,r)=>n*r,1);if(t.isCContiguous&&!U(u)){const n=m.slice(0,I).reduce((o,i)=>o*i,1),r=m.slice(I+1).reduce((o,i)=>o*i,1),e=At(t,n,g,r);if(e){const o=z?m.map((i,a)=>a===I?1:i):w;return O.fromData(e.data,o,u)}}const{baseOffsets:d,axisStride:c}=P(m,R,A,I,y);if(L(u)){const n=h,r=D;for(let e=0;e<y;e++){let o=d[e],i=n[o];o+=c;for(let a=1;a<g;a++){const s=n[o];s>i&&(i=s),o+=c}r[e]=i}}else for(let n=0;n<y;n++){let r=-1/0,e=d[n];for(let o=0;o<g;o++){const i=Number(h[e]);i>r&&(r=i),e+=c}D[n]=r}if(z){const n=[...m];return n[I]=1,O.fromData(D,n,u)}return v}function at(t,x,z=!1){const u=t.dtype,m=t.shape,b=m.length,S=t.size,h=t.data,A=t.offset,R=t.strides,I=t.isCContiguous;if(x===void 0){const e=Bt(t);if(e!==null)return e;if(U(u)){let o=1,i=0;if(I){const a=h;for(let s=0;s<S;s++){const p=a[(A+s)*2],f=a[(A+s)*2+1],l=o*p-i*f,N=o*f+i*p;o=l,i=N}}else for(let a=0;a<S;a++){const s=t.iget(a),p=s.re,f=s.im,l=o*p-i*f,N=o*f+i*p;o=l,i=N}return new Q(o,i)}else if(L(u)){let o=BigInt(1);if(I){const i=h;for(let a=0;a<S;a++)o*=i[A+a]}else for(let i=0;i<S;i++)o*=t.iget(i);return Number(o)}else if(u==="float32"){if(W[0]=1,I)for(let o=0;o<S;o++)W[0]*=Number(h[A+o]);else for(let o=0;o<S;o++)W[0]*=Number(t.iget(o));return W[0]}else{let o=1;if(I)if(A===0)for(let i=0;i<S;i++)o*=Number(h[i]);else for(let i=0;i<S;i++)o*=Number(h[A+i]);else for(let i=0;i<S;i++)o*=Number(t.iget(i));return o}}let w=x;if(w<0&&(w=b+w),w<0||w>=b)throw new Error(`axis ${x} is out of bounds for array of dimension ${b}`);const v=st(u),D=Array.from(m).filter((e,o)=>o!==w);if(D.length===0){const e=at(t);return z?j(e,b,v):e}const g=O.zeros(D,v),y=g.data,d=m[w],c=D.reduce((e,o)=>e*o,1);if(I&&!U(u)){const e=m.slice(0,w).reduce((a,s)=>a*s,1),o=m.slice(w+1).reduce((a,s)=>a*s,1),i=Et(t,e,d,o);if(i){const a=z?m.map((s,p)=>p===w?1:s):D;return O.fromData(i.data,a,v)}}const{baseOffsets:n,axisStride:r}=P(m,R,A,w,c);if(U(u)){const e=h,o=y;if(u==="complex64")for(let i=0;i<c;i++){W[0]=1,W[1]=0;let a=n[i];for(let s=0;s<d;s++){const p=e[a*2],f=e[a*2+1],l=W[0],N=W[1];W[0]=l*p-N*f,W[1]=l*f+N*p,a+=r}o[i*2]=W[0],o[i*2+1]=W[1]}else for(let i=0;i<c;i++){let a=1,s=0,p=n[i];for(let f=0;f<d;f++){const l=e[p*2],N=e[p*2+1],C=a*l-s*N,B=a*N+s*l;a=C,s=B,p+=r}o[i*2]=a,o[i*2+1]=s}}else if(L(u)){const e=h,o=y;for(let i=0;i<c;i++){let a=BigInt(1),s=n[i];for(let p=0;p<d;p++)a*=e[s],s+=r;o[i]=a}}else if(L(v)){const e=y;for(let o=0;o<c;o++){let i=BigInt(1),a=n[o];for(let s=0;s<d;s++)i*=BigInt(Number(h[a])),a+=r;e[o]=i}}else if(u==="float32")for(let e=0;e<c;e++){W[0]=1;let o=n[e];for(let i=0;i<d;i++)W[0]*=Number(h[o]),o+=r;y[e]=W[0]}else for(let e=0;e<c;e++){let o=1,i=n[e];for(let a=0;a<d;a++)o*=Number(h[i]),i+=r;y[e]=o}if(z){const e=[...m];return e[w]=1,O.fromData(y,e,v)}return g}function Z(t,x,z=!1){const u=t.dtype,m=t.shape,b=m.length,S=t.size,h=t.data,A=t.offset,R=t.strides;if(U(u)){const n=h;if(x===void 0){if(S===0)throw new Error("min of empty array");let l=n[A*2],N=n[A*2+1];for(let C=1;C<S;C++){const B=n[(A+C)*2],F=n[(A+C)*2+1];if(isNaN(B)||isNaN(F))return new Q(NaN,NaN);(B<l||B===l&&F<N)&&(l=B,N=F)}return isNaN(l)||isNaN(N)?new Q(NaN,NaN):new Q(l,N)}let r=x;if(r<0&&(r=b+r),r<0||r>=b)throw new Error(`axis ${x} is out of bounds for array of dimension ${b}`);const e=Array.from(m).filter((l,N)=>N!==r);if(e.length===0){const l=Z(t);return z?j(l,b,u):l}const o=O.zeros(e,u),i=o.data,a=m[r],s=e.reduce((l,N)=>l*N,1),{baseOffsets:p,axisStride:f}=P(m,R,A,r,s);for(let l=0;l<s;l++){let N=p[l],C=n[N*2],B=n[N*2+1];N+=f;for(let F=1;F<a;F++){const $=n[N*2],E=n[N*2+1];if(N+=f,isNaN($)||isNaN(E)){C=NaN,B=NaN;break}($<C||$===C&&E<B)&&(C=$,B=E)}i[l*2]=C,i[l*2+1]=B}if(z){const l=[...m];return l[r]=1,O.fromData(i,l,u)}return o}if(x===void 0){const n=It(t);if(n!==null)return n;if(S===0)throw new Error("min of empty array");if(t.isCContiguous){let r=h[A];if(A===0)for(let e=1;e<S;e++)h[e]<r&&(r=h[e]);else for(let e=1;e<S;e++)h[A+e]<r&&(r=h[A+e]);return Number(r)}else{let r=t.iget(0);for(let e=1;e<S;e++){const o=t.iget(e);o<r&&(r=o)}return Number(r)}}let I=x;if(I<0&&(I=b+I),I<0||I>=b)throw new Error(`axis ${x} is out of bounds for array of dimension ${b}`);const w=Array.from(m).filter((n,r)=>r!==I);if(w.length===0){const n=Z(t);return z?j(n,b,u):n}const v=O.zeros(w,u),D=v.data,g=m[I],y=w.reduce((n,r)=>n*r,1);if(t.isCContiguous&&!U(u)){const n=m.slice(0,I).reduce((o,i)=>o*i,1),r=m.slice(I+1).reduce((o,i)=>o*i,1),e=ht(t,n,g,r);if(e){const o=z?m.map((i,a)=>a===I?1:i):w;return O.fromData(e.data,o,u)}}const{baseOffsets:d,axisStride:c}=P(m,R,A,I,y);if(L(u)){const n=h,r=D;for(let e=0;e<y;e++){let o=d[e],i=n[o];o+=c;for(let a=1;a<g;a++){const s=n[o];s<i&&(i=s),o+=c}r[e]=i}}else for(let n=0;n<y;n++){let r=1/0,e=d[n];for(let o=0;o<g;o++){const i=Number(h[e]);i<r&&(r=i),e+=c}D[n]=r}if(z){const n=[...m];return n[I]=1,O.fromData(D,n,u)}return v}function J(t,x,z,u){return t<z?-1:t>z?1:x<u?-1:x>u?1:0}function ft(t,x){const z=t.dtype,u=U(z),m=t.shape,b=m.length,S=t.size,h=t.data,A=t.offset,R=t.strides,I=t.isCContiguous;if(x===void 0){const r=wt(t);if(r!==null)return r;if(S===0)throw new Error("argmin of empty array");if(u)if(I){const e=h;let o=e[A*2],i=e[A*2+1],a=0;for(let s=1;s<S;s++){const p=e[(A+s)*2],f=e[(A+s)*2+1];J(p,f,o,i)<0&&(o=p,i=f,a=s)}return a}else{const e=t.iget(0);let o=e.re,i=e.im,a=0;for(let s=1;s<S;s++){const p=t.iget(s);J(p.re,p.im,o,i)<0&&(o=p.re,i=p.im,a=s)}return a}if(I){let e=h[A],o=0;if(A===0)for(let i=1;i<S;i++)h[i]<e&&(e=h[i],o=i);else for(let i=1;i<S;i++)h[A+i]<e&&(e=h[A+i],o=i);return o}else{let e=t.iget(0),o=0;for(let i=1;i<S;i++){const a=t.iget(i);a<e&&(e=a,o=i)}return o}}let w=x;if(w<0&&(w=b+w),w<0||w>=b)throw new Error(`axis ${x} is out of bounds for array of dimension ${b}`);const v=Array.from(m).filter((r,e)=>e!==w);if(v.length===0)return ft(t);const D=O.zeros(v,"int32"),g=D.data,y=m[w],d=v.reduce((r,e)=>r*e,1),{baseOffsets:c,axisStride:n}=P(m,R,A,w,d);if(u){const r=h;for(let e=0;e<d;e++){let o=c[e],i=r[o*2],a=r[o*2+1],s=0;o+=n;for(let p=1;p<y;p++){const f=r[o*2],l=r[o*2+1];J(f,l,i,a)<0&&(i=f,a=l,s=p),o+=n}g[e]=s}}else if(L(z)){const r=h;for(let e=0;e<d;e++){let o=c[e],i=r[o],a=0;o+=n;for(let s=1;s<y;s++){const p=r[o];p<i&&(i=p,a=s),o+=n}g[e]=a}}else for(let r=0;r<d;r++){let e=1/0,o=0,i=c[r];for(let a=0;a<y;a++){const s=Number(h[i]);s<e&&(e=s,o=a),i+=n}g[r]=o}return D}function lt(t,x){const z=t.dtype,u=U(z),m=t.shape,b=m.length,S=t.size,h=t.data,A=t.offset,R=t.strides,I=t.isCContiguous;if(x===void 0){const r=zt(t);if(r!==null)return r;if(S===0)throw new Error("argmax of empty array");if(u)if(I){const e=h;let o=e[A*2],i=e[A*2+1],a=0;for(let s=1;s<S;s++){const p=e[(A+s)*2],f=e[(A+s)*2+1];J(p,f,o,i)>0&&(o=p,i=f,a=s)}return a}else{const e=t.iget(0);let o=e.re,i=e.im,a=0;for(let s=1;s<S;s++){const p=t.iget(s);J(p.re,p.im,o,i)>0&&(o=p.re,i=p.im,a=s)}return a}if(I){let e=h[A],o=0;for(let i=1;i<S;i++)h[A+i]>e&&(e=h[A+i],o=i);return o}else{let e=t.iget(0),o=0;for(let i=1;i<S;i++){const a=t.iget(i);a>e&&(e=a,o=i)}return o}}let w=x;if(w<0&&(w=b+w),w<0||w>=b)throw new Error(`axis ${x} is out of bounds for array of dimension ${b}`);const v=Array.from(m).filter((r,e)=>e!==w);if(v.length===0)return lt(t);const D=O.zeros(v,"int32"),g=D.data,y=m[w],d=v.reduce((r,e)=>r*e,1),{baseOffsets:c,axisStride:n}=P(m,R,A,w,d);if(u){const r=h;for(let e=0;e<d;e++){let o=c[e],i=r[o*2],a=r[o*2+1],s=0;o+=n;for(let p=1;p<y;p++){const f=r[o*2],l=r[o*2+1];J(f,l,i,a)>0&&(i=f,a=l,s=p),o+=n}g[e]=s}}else if(L(z)){const r=h;for(let e=0;e<d;e++){let o=c[e],i=r[o],a=0;o+=n;for(let s=1;s<y;s++){const p=r[o];p>i&&(i=p,a=s),o+=n}g[e]=a}}else for(let r=0;r<d;r++){let e=-1/0,o=0,i=c[r];for(let a=0;a<y;a++){const s=Number(h[i]);s>e&&(e=s,o=a),i+=n}g[r]=o}return D}function ut(t,x,z=0,u=!1){const m=t.dtype,b=t.shape,S=b.length,h=t.size,A=t.data,R=t.offset,I=t.strides,w=nt(t,x,u),v=t.isCContiguous;if(x===void 0){const a=Ft(t);if(a!==null)return a;if(U(m)){const f=w;let l=0;if(v){const N=A;for(let C=0;C<h;C++){const B=N[(R+C)*2],F=N[(R+C)*2+1],$=B-f.re,E=F-f.im;l+=$*$+E*E}}else for(let N=0;N<h;N++){const C=t.iget(N),B=C.re-f.re,F=C.im-f.im;l+=B*B+F*F}return l/(h-z)}const s=w;let p=0;if(v)for(let f=0;f<h;f++){const l=Number(A[R+f])-s;p+=l*l}else for(let f=0;f<h;f++){const l=Number(t.iget(f))-s;p+=l*l}return p/(h-z)}let D=x;if(D<0&&(D=S+D),D<0||D>=S)throw new Error(`axis ${x} is out of bounds for array of dimension ${S}`);const g=b[D],y=w,d=y.data,c=u?y.shape:Array.from(b).filter((a,s)=>s!==D),n=O.zeros(Array.from(c),"float64"),r=n.data,e=c.reduce((a,s)=>a*s,1),{baseOffsets:o,axisStride:i}=P(b,I,R,D,e);if(U(m)){const a=A,s=d;for(let p=0;p<e;p++){let f=0;const l=s[p*2],N=s[p*2+1];let C=o[p];for(let B=0;B<g;B++){const F=a[C*2],$=a[C*2+1],E=F-l,T=$-N;f+=E*E+T*T,C+=i}r[p]=f/(g-z)}}else for(let a=0;a<e;a++){let s=0;const p=Number(d[a]);let f=o[a];for(let l=0;l<g;l++){const N=Number(A[f])-p;s+=N*N,f+=i}r[a]=s/(g-z)}return n}function ue(t,x,z=0,u=!1){const m=ut(t,x,z,u);if(typeof m=="number")return Math.sqrt(m);const b=O.zeros(Array.from(m.shape),"float64"),S=m.data,h=b.data;for(let A=0;A<S.length;A++)h[A]=Math.sqrt(Number(S[A]));return b}function _t(t,x,z=!1){const u=t.shape,m=u.length,b=t.size,S=t.data,h=t.offset,A=t.strides,R=t.isCContiguous;if(x===void 0){const n=Vt(t);if(n!==null)return n===1;if(R){for(let r=0;r<b;r++)if(!S[h+r])return!1}else for(let r=0;r<b;r++)if(!t.iget(r))return!1;return!0}let I=x;if(I<0&&(I=m+I),I<0||I>=m)throw new Error(`axis ${x} is out of bounds for array of dimension ${m}`);const w=Array.from(u).filter((n,r)=>r!==I);if(w.length===0){const n=_t(t);if(!z)return n;const r=O.zeros(Array(m).fill(1),"bool");return r.iset(0,n?1:0),r}const v=O.zeros(w,"bool"),D=v.data,g=u[I],y=w.reduce((n,r)=>n*r,1),{baseOffsets:d,axisStride:c}=P(u,A,h,I,y);for(let n=0;n<y;n++){let r=!0,e=d[n];for(let o=0;o<g;o++){if(!S[e]){r=!1;break}e+=c}D[n]=r?1:0}if(z){const n=[...u];return n[I]=1,O.fromData(D,n,"bool")}return v}function Mt(t,x,z=!1){const u=t.shape,m=u.length,b=t.size,S=t.data,h=t.offset,A=t.strides,R=t.isCContiguous;if(x===void 0){const n=gt(t);if(n!==null)return n===1;if(R){for(let r=0;r<b;r++)if(S[h+r])return!0}else for(let r=0;r<b;r++)if(t.iget(r))return!0;return!1}let I=x;if(I<0&&(I=m+I),I<0||I>=m)throw new Error(`axis ${x} is out of bounds for array of dimension ${m}`);const w=Array.from(u).filter((n,r)=>r!==I);if(w.length===0){const n=Mt(t);if(!z)return n;const r=O.zeros(Array(m).fill(1),"bool");return r.iset(0,n?1:0),r}const v=O.zeros(w,"bool"),D=v.data,g=u[I],y=w.reduce((n,r)=>n*r,1),{baseOffsets:d,axisStride:c}=P(u,A,h,I,y);for(let n=0;n<y;n++){let r=!1,e=d[n];for(let o=0;o<g;o++){if(S[e]){r=!0;break}e+=c}D[n]=r?1:0}if(z){const n=[...u];return n[I]=1,O.fromData(D,n,"bool")}return v}function Ut(t,x){const z=t.dtype,u=t.shape,m=u.length,b=t.data,S=t.offset,h=t.strides,A=t.isCContiguous;if(U(z)){const r=b,e=t.size;if(x===void 0){const $=O.zeros([e],z),E=$.data;let T=0,_=0;if(A)for(let V=0;V<e;V++)T+=r[(S+V)*2],_+=r[(S+V)*2+1],E[V*2]=T,E[V*2+1]=_;else for(let V=0;V<e;V++){const M=t.iget(V);T+=M.re,_+=M.im,E[V*2]=T,E[V*2+1]=_}return $}let o=x;if(o<0&&(o=m+o),o<0||o>=m)throw new Error(`axis ${x} is out of bounds for array of dimension ${m}`);const i=O.zeros([...u],z),a=i.data,s=u[o],p=Array.from(u).filter(($,E)=>E!==o),f=p.length===0?1:p.reduce(($,E)=>$*E,1),{baseOffsets:l,axisStride:N}=P(u,h,S,o,f),C=k(u),{baseOffsets:B,axisStride:F}=P(u,C,0,o,f);for(let $=0;$<f;$++){let E=l[$],T=B[$],_=0,V=0;for(let M=0;M<s;M++)_+=r[E*2],V+=r[E*2+1],a[T*2]=_,a[T*2+1]=V,E+=N,T+=F}return i}if(x===void 0){const r=t.size,e=new Float64Array(r);let o=0;if(A)for(let i=0;i<r;i++)o+=Number(b[S+i]),e[i]=o;else for(let i=0;i<r;i++)o+=Number(t.iget(i)),e[i]=o;return O.fromData(e,[r],"float64")}let R=x;if(R<0&&(R=m+R),R<0||R>=m)throw new Error(`axis ${x} is out of bounds for array of dimension ${m}`);const I=new Float64Array(t.size),w=u[R],v=Array.from(u).filter((r,e)=>e!==R),D=v.length===0?1:v.reduce((r,e)=>r*e,1),{baseOffsets:g,axisStride:y}=P(u,h,S,R,D),d=k(u),{baseOffsets:c,axisStride:n}=P(u,d,0,R,D);for(let r=0;r<D;r++){let e=g[r],o=c[r],i=0;for(let a=0;a<w;a++)i+=Number(b[e]),I[o]=i,e+=y,o+=n}return O.fromData(I,[...u],"float64")}function Pt(t,x){const z=t.dtype,u=t.shape,m=u.length,b=t.data,S=t.offset,h=t.strides,A=t.isCContiguous;if(U(z)){const r=b,e=t.size;if(x===void 0){const $=O.zeros([e],z),E=$.data;let T=1,_=0;if(A)for(let V=0;V<e;V++){const M=r[(S+V)*2],K=r[(S+V)*2+1],G=T*M-_*K,X=T*K+_*M;T=G,_=X,E[V*2]=T,E[V*2+1]=_}else for(let V=0;V<e;V++){const M=t.iget(V),K=M.re,G=M.im,X=T*K-_*G,rt=T*G+_*K;T=X,_=rt,E[V*2]=T,E[V*2+1]=_}return $}let o=x;if(o<0&&(o=m+o),o<0||o>=m)throw new Error(`axis ${x} is out of bounds for array of dimension ${m}`);const i=O.zeros([...u],z),a=i.data,s=u[o],p=Array.from(u).filter(($,E)=>E!==o),f=p.length===0?1:p.reduce(($,E)=>$*E,1),{baseOffsets:l,axisStride:N}=P(u,h,S,o,f),C=k(u),{baseOffsets:B,axisStride:F}=P(u,C,0,o,f);for(let $=0;$<f;$++){let E=l[$],T=B[$],_=1,V=0;for(let M=0;M<s;M++){const K=r[E*2],G=r[E*2+1],X=_*K-V*G,rt=_*G+V*K;_=X,V=rt,a[T*2]=_,a[T*2+1]=V,E+=N,T+=F}}return i}if(x===void 0){const r=t.size,e=new Float64Array(r);let o=1;if(A)for(let i=0;i<r;i++)o*=Number(b[S+i]),e[i]=o;else for(let i=0;i<r;i++)o*=Number(t.iget(i)),e[i]=o;return O.fromData(e,[r],"float64")}let R=x;if(R<0&&(R=m+R),R<0||R>=m)throw new Error(`axis ${x} is out of bounds for array of dimension ${m}`);const I=new Float64Array(t.size),w=u[R],v=Array.from(u).filter((r,e)=>e!==R),D=v.length===0?1:v.reduce((r,e)=>r*e,1),{baseOffsets:g,axisStride:y}=P(u,h,S,R,D),d=k(u),{baseOffsets:c,axisStride:n}=P(u,d,0,R,D);for(let r=0;r<D;r++){let e=g[r],o=c[r],i=1;for(let a=0;a<w;a++)i*=Number(b[e]),I[o]=i,e+=y,o+=n}return O.fromData(I,[...u],"float64")}function ce(t,x,z=!1){const u=t.dtype;if(U(u)){const v=Y(t,x,z),D=Z(t,x,z);if(v instanceof Q&&D instanceof Q)return new Q(v.re-D.re,v.im-D.im);const g=v,y=D,d=g.data,c=y.data,n=new Float64Array(g.size*2);for(let r=0;r<g.size;r++)n[r*2]=d[r*2]-c[r*2],n[r*2+1]=d[r*2+1]-c[r*2+1];return O.fromData(n,[...g.shape],u)}const m=Y(t,x,z),b=Z(t,x,z);if(typeof m=="number"&&typeof b=="number"){const v=m-b;if(u==="int8"||u==="int16"||u==="int32"||u==="uint8"||u==="uint16"||u==="uint32"){const D=O.zeros([1],u);return D.iset(0,v),Number(D.iget(0))}return v}const S=m,h=b,A=S.data,R=h.data,I=O.zeros([...S.shape],u),w=I.data;for(let v=0;v<S.size;v++)w[v]=Number(A[v])-Number(R[v]);return I}function qt(t,x,z=!1){return et(t,.5,x,z)}function me(t,x,z,u=!1){return et(t,x/100,z,u)}function et(t,x,z,u=!1){if(ot(t.dtype,"quantile","Complex numbers are not orderable."),x<0||x>1)throw new Error("Quantile must be between 0 and 1");const m=t.shape,b=m.length,S=t.data,h=t.offset,A=t.strides;if(z===void 0){const c=Ot(t,x);if(c!==null)return c;const n=[];if(t.isCContiguous)for(let p=0;p<t.size;p++)n.push(Number(S[h+p]));else for(let p=0;p<t.size;p++)n.push(Number(t.iget(p)));n.sort((p,f)=>p-f);const e=n.length,o=x*(e-1),i=Math.floor(o),a=Math.ceil(o);if(i===a)return n[i];const s=o-i;return n[i]*(1-s)+n[a]*s}let R=z;if(R<0&&(R=b+R),R<0||R>=b)throw new Error(`axis ${z} is out of bounds for array of dimension ${b}`);const I=Array.from(m).filter((c,n)=>n!==R);if(I.length===0){const c=et(t,x);if(!u)return c;const n=O.zeros(Array(b).fill(1),"float64");return n.iset(0,c),n}const w=I.reduce((c,n)=>c*n,1),v=m[R],D=new Float64Array(w),{baseOffsets:g,axisStride:y}=P(m,A,h,R,w);for(let c=0;c<w;c++){const n=[];let r=g[c];for(let s=0;s<v;s++)n.push(Number(S[r])),r+=y;n.sort((s,p)=>s-p);const e=n.length,o=x*(e-1),i=Math.floor(o),a=Math.ceil(o);if(i===a)D[c]=n[i];else{const s=o-i;D[c]=n[i]*(1-s)+n[a]*s}}const d=O.fromData(D,I,"float64");if(u){const c=[...m];return c[R]=1,O.fromData(D,c,"float64")}return d}function ct(t,x,z,u=!1){const m=t.dtype,b=t.shape,S=b.length,h=t.data,A=t.offset,R=t.strides;if(z===void 0)return nt(t,x,u);if(U(m)){const e=h,o=z.data,i=z.offset;if(x===void 0){let F=0,$=0,E=0;if(t.isCContiguous)for(let _=0;_<t.size;_++){const V=Number(o[i+_%z.size]),M=e[(A+_)*2],K=e[(A+_)*2+1];F+=M*V,$+=K*V,E+=V}else for(let _=0;_<t.size;_++){const V=Number(o[i+_%z.size]),M=t.iget(_);F+=M.re*V,$+=M.im*V,E+=V}return E===0?new Q(NaN,NaN):new Q(F/E,$/E)}let a=x;if(a<0&&(a=S+a),a<0||a>=S)throw new Error(`axis ${x} is out of bounds for array of dimension ${S}`);const s=Array.from(b).filter((F,$)=>$!==a);if(s.length===0){const F=ct(t,void 0,z);return u?j(F,S,m):F}const p=s.reduce((F,$)=>F*$,1),f=b[a],l=O.zeros(s,m),N=l.data,{baseOffsets:C,axisStride:B}=P(b,R,A,a,p);for(let F=0;F<p;F++){let $=0,E=0,T=0,_=C[F];for(let V=0;V<f;V++){const M=Number(o[i+V%z.size]),K=e[_*2],G=e[_*2+1];$+=K*M,E+=G*M,T+=M,_+=B}T===0?(N[F*2]=NaN,N[F*2+1]=NaN):(N[F*2]=$/T,N[F*2+1]=E/T)}if(u){const F=[...b];return F[a]=1,O.fromData(N,F,m)}return l}const I=z.offset;if(x===void 0){let e=0,o=0;const i=z.data;if(t.isCContiguous)for(let s=0;s<t.size;s++){const p=Number(i[I+s%z.size]);e+=Number(h[A+s])*p,o+=p}else for(let s=0;s<t.size;s++){const p=Number(i[I+s%z.size]);e+=Number(t.iget(s))*p,o+=p}return o===0?NaN:e/o}let w=x;if(w<0&&(w=S+w),w<0||w>=S)throw new Error(`axis ${x} is out of bounds for array of dimension ${S}`);const v=Array.from(b).filter((e,o)=>o!==w);if(v.length===0){const e=ct(t,void 0,z);return u?j(e,S,"float64"):e}const D=v.reduce((e,o)=>e*o,1),g=b[w],y=z.data,d=new Float64Array(D),{baseOffsets:c,axisStride:n}=P(b,R,A,w,D);for(let e=0;e<D;e++){let o=0,i=0,a=c[e];for(let s=0;s<g;s++){const p=Number(y[I+s%z.size]);o+=Number(h[a])*p,i+=p,a+=n}d[e]=i===0?NaN:o/i}const r=O.fromData(d,v,"float64");if(u){const e=[...b];return e[w]=1,O.fromData(d,e,"float64")}return r}function q(t,x){return isNaN(t)||isNaN(x)}function Wt(t,x,z=!1){const u=t.dtype,m=U(u),b=t.shape,S=b.length,h=t.data,A=t.offset,R=t.strides;if(!m&&!H(u))return tt(t,x,z);if(x===void 0){const n=Rt(t);if(n!==null)return n;if(m){const o=h;let i=0,a=0;if(t.isCContiguous)for(let p=0;p<t.size;p++){const f=o[(A+p)*2],l=o[(A+p)*2+1];q(f,l)||(i+=f,a+=l)}else for(let p=0;p<t.size;p++){const f=t.iget(p),l=f.re,N=f.im;q(l,N)||(i+=l,a+=N)}return new Q(i,a)}let r=0;if(t.isCContiguous)for(let o=0;o<t.size;o++){const i=Number(h[A+o]);isNaN(i)||(r+=i)}else for(let o=0;o<t.size;o++){const i=Number(t.iget(o));isNaN(i)||(r+=i)}return r}let I=x;if(I<0&&(I=S+I),I<0||I>=S)throw new Error(`axis ${x} is out of bounds for array of dimension ${S}`);const w=Array.from(b).filter((n,r)=>r!==I);if(w.length===0){const n=Wt(t);return z?j(n,S,u):n}const v=w.reduce((n,r)=>n*r,1),D=b[I],{baseOffsets:g,axisStride:y}=P(b,R,A,I,v);if(m){const n=h,r=new Float64Array(v*2);for(let e=0;e<v;e++){let o=0,i=0,a=g[e];for(let s=0;s<D;s++){const p=n[a*2],f=n[a*2+1];q(p,f)||(o+=p,i+=f),a+=y}r[e*2]=o,r[e*2+1]=i}if(z){const e=[...b];return e[I]=1,O.fromData(r,e,u)}return O.fromData(r,w,u)}const d=new Float64Array(v);for(let n=0;n<v;n++){let r=0,e=g[n];for(let o=0;o<D;o++){const i=Number(h[e]);isNaN(i)||(r+=i),e+=y}d[n]=r}const c=O.fromData(d,w,"float64");if(z){const n=[...b];return n[I]=1,O.fromData(d,n,"float64")}return c}function Qt(t,x,z=!1){const u=t.dtype,m=U(u);if(!m&&!H(u))return at(t,x,z);const b=t.shape,S=b.length,h=t.data,A=t.offset,R=t.strides;if(x===void 0){if(m){const e=h;let o=1,i=0;if(t.isCContiguous)for(let s=0;s<t.size;s++){const p=e[(A+s)*2],f=e[(A+s)*2+1];if(!q(p,f)){const l=o*p-i*f,N=o*f+i*p;o=l,i=N}}else for(let s=0;s<t.size;s++){const p=t.iget(s),f=p.re,l=p.im;if(!q(f,l)){const N=o*f-i*l,C=o*l+i*f;o=N,i=C}}return new Q(o,i)}let n=1;if(t.isCContiguous)for(let e=0;e<t.size;e++){const o=Number(h[A+e]);isNaN(o)||(n*=o)}else for(let e=0;e<t.size;e++){const o=Number(t.iget(e));isNaN(o)||(n*=o)}return n}let I=x;if(I<0&&(I=S+I),I<0||I>=S)throw new Error(`axis ${x} is out of bounds for array of dimension ${S}`);const w=Array.from(b).filter((n,r)=>r!==I);if(w.length===0){const n=Qt(t);return z?j(n,S,u):n}const v=w.reduce((n,r)=>n*r,1),D=b[I],{baseOffsets:g,axisStride:y}=P(b,R,A,I,v);if(m){const n=h,r=new Float64Array(v*2);for(let e=0;e<v;e++){let o=1,i=0,a=g[e];for(let s=0;s<D;s++){const p=n[a*2],f=n[a*2+1];if(!q(p,f)){const l=o*p-i*f,N=o*f+i*p;o=l,i=N}a+=y}r[e*2]=o,r[e*2+1]=i}if(z){const e=[...b];return e[I]=1,O.fromData(r,e,u)}return O.fromData(r,w,u)}const d=new Float64Array(v);for(let n=0;n<v;n++){let r=1,e=g[n];for(let o=0;o<D;o++){const i=Number(h[e]);isNaN(i)||(r*=i),e+=y}d[n]=r}const c=O.fromData(d,w,"float64");if(z){const n=[...b];return n[I]=1,O.fromData(d,n,"float64")}return c}function Kt(t,x,z=!1){const u=t.dtype,m=U(u);if(!m&&!H(u))return nt(t,x,z);const b=t.shape,S=b.length,h=t.data,A=t.offset,R=t.strides;if(x===void 0){if(m){const o=h;let i=0,a=0,s=0;if(t.isCContiguous)for(let f=0;f<t.size;f++){const l=o[(A+f)*2],N=o[(A+f)*2+1];q(l,N)||(i+=l,a+=N,s++)}else for(let f=0;f<t.size;f++){const l=t.iget(f),N=l.re,C=l.im;q(N,C)||(i+=N,a+=C,s++)}return s===0?new Q(NaN,NaN):new Q(i/s,a/s)}let n=0,r=0;if(t.isCContiguous)for(let o=0;o<t.size;o++){const i=Number(h[A+o]);isNaN(i)||(n+=i,r++)}else for(let o=0;o<t.size;o++){const i=Number(t.iget(o));isNaN(i)||(n+=i,r++)}return r===0?NaN:n/r}let I=x;if(I<0&&(I=S+I),I<0||I>=S)throw new Error(`axis ${x} is out of bounds for array of dimension ${S}`);const w=Array.from(b).filter((n,r)=>r!==I);if(w.length===0){const n=Kt(t);return z?j(n,S,u):n}const v=w.reduce((n,r)=>n*r,1),D=b[I],{baseOffsets:g,axisStride:y}=P(b,R,A,I,v);if(m){const n=h,r=new Float64Array(v*2);for(let e=0;e<v;e++){let o=0,i=0,a=0,s=g[e];for(let p=0;p<D;p++){const f=n[s*2],l=n[s*2+1];q(f,l)||(o+=f,i+=l,a++),s+=y}a===0?(r[e*2]=NaN,r[e*2+1]=NaN):(r[e*2]=o/a,r[e*2+1]=i/a)}if(z){const e=[...b];return e[I]=1,O.fromData(r,e,u)}return O.fromData(r,w,u)}const d=new Float64Array(v);for(let n=0;n<v;n++){let r=0,e=0,o=g[n];for(let i=0;i<D;i++){const a=Number(h[o]);isNaN(a)||(r+=a,e++),o+=y}d[n]=e===0?NaN:r/e}const c=O.fromData(d,w,"float64");if(z){const n=[...b];return n[I]=1,O.fromData(d,n,"float64")}return c}function it(t,x,z=0,u=!1){const m=t.dtype;if(!U(m)&&!H(m))return ut(t,x,z,u);const b=t.shape,S=b.length,h=t.data,A=t.offset,R=t.strides;if(U(m)){const n=h;if(x===void 0){let l=0,N=0,C=0;const B=t.isCContiguous;if(B)for(let T=0;T<t.size;T++){const _=n[(A+T)*2],V=n[(A+T)*2+1];q(_,V)||(l+=_,N+=V,C++)}else for(let T=0;T<t.size;T++){const _=t.iget(T),V=_.re,M=_.im;q(V,M)||(l+=V,N+=M,C++)}if(C-z<=0)return NaN;const F=l/C,$=N/C;let E=0;if(B)for(let T=0;T<t.size;T++){const _=n[(A+T)*2],V=n[(A+T)*2+1];if(!q(_,V)){const M=_-F,K=V-$;E+=M*M+K*K}}else for(let T=0;T<t.size;T++){const _=t.iget(T),V=_.re,M=_.im;if(!q(V,M)){const K=V-F,G=M-$;E+=K*K+G*G}}return E/(C-z)}let r=x;if(r<0&&(r=S+r),r<0||r>=S)throw new Error(`axis ${x} is out of bounds for array of dimension ${S}`);const e=Array.from(b).filter((l,N)=>N!==r);if(e.length===0){const l=it(t,void 0,z);return u?j(l,S,"float64"):l}const o=e.reduce((l,N)=>l*N,1),i=b[r],a=new Float64Array(o),{baseOffsets:s,axisStride:p}=P(b,R,A,r,o);for(let l=0;l<o;l++){let N=0,C=0,B=0,F=s[l];for(let _=0;_<i;_++){const V=n[F*2],M=n[F*2+1];q(V,M)||(N+=V,C+=M,B++),F+=p}if(B-z<=0){a[l]=NaN;continue}const $=N/B,E=C/B;let T=0;F=s[l];for(let _=0;_<i;_++){const V=n[F*2],M=n[F*2+1];if(!q(V,M)){const K=V-$,G=M-E;T+=K*K+G*G}F+=p}a[l]=T/(B-z)}const f=O.fromData(a,e,"float64");if(u){const l=[...b];return l[r]=1,O.fromData(a,l,"float64")}return f}if(x===void 0){let n=0,r=0;const e=t.isCContiguous;if(e)for(let a=0;a<t.size;a++){const s=Number(h[A+a]);isNaN(s)||(n+=s,r++)}else for(let a=0;a<t.size;a++){const s=Number(t.iget(a));isNaN(s)||(n+=s,r++)}if(r-z<=0)return NaN;const o=n/r;let i=0;if(e)for(let a=0;a<t.size;a++){const s=Number(h[A+a]);isNaN(s)||(i+=(s-o)**2)}else for(let a=0;a<t.size;a++){const s=Number(t.iget(a));isNaN(s)||(i+=(s-o)**2)}return i/(r-z)}let I=x;if(I<0&&(I=S+I),I<0||I>=S)throw new Error(`axis ${x} is out of bounds for array of dimension ${S}`);const w=Array.from(b).filter((n,r)=>r!==I);if(w.length===0){const n=it(t,void 0,z);return u?j(n,S,"float64"):n}const v=w.reduce((n,r)=>n*r,1),D=b[I],g=new Float64Array(v),{baseOffsets:y,axisStride:d}=P(b,R,A,I,v);for(let n=0;n<v;n++){let r=0,e=0,o=y[n];for(let s=0;s<D;s++){const p=Number(h[o]);isNaN(p)||(r+=p,e++),o+=d}if(e-z<=0){g[n]=NaN;continue}const i=r/e;let a=0;o=y[n];for(let s=0;s<D;s++){const p=Number(h[o]);isNaN(p)||(a+=(p-i)**2),o+=d}g[n]=a/(e-z)}const c=O.fromData(g,w,"float64");if(u){const n=[...b];return n[I]=1,O.fromData(g,n,"float64")}return c}function de(t,x,z=0,u=!1){const m=it(t,x,z,u);if(typeof m=="number")return Math.sqrt(m);const b=m,S=new Float64Array(b.size);for(let h=0;h<b.size;h++)S[h]=Math.sqrt(Number(b.data[h]));return O.fromData(S,[...b.shape],"float64")}function mt(t,x,z=!1){const u=t.dtype,m=t.shape,b=m.length,S=t.data,h=t.offset,A=t.strides;if(!U(u)&&!H(u))return Z(t,x,z);if(U(u)){const c=S;if(x===void 0){let f=1/0,l=1/0,N=!1;if(t.isCContiguous)for(let B=0;B<t.size;B++){const F=c[(h+B)*2],$=c[(h+B)*2+1];isNaN(F)||isNaN($)||(N?(F<f||F===f&&$<l)&&(f=F,l=$):(f=F,l=$,N=!0))}else for(let B=0;B<t.size;B++){const F=t.iget(B),$=F.re,E=F.im;isNaN($)||isNaN(E)||(N?($<f||$===f&&E<l)&&(f=$,l=E):(f=$,l=E,N=!0))}return N?new Q(f,l):new Q(NaN,NaN)}let n=x;if(n<0&&(n=b+n),n<0||n>=b)throw new Error(`axis ${x} is out of bounds for array of dimension ${b}`);const r=Array.from(m).filter((f,l)=>l!==n);if(r.length===0){const f=mt(t);return z?j(f,b,u):f}const e=r.reduce((f,l)=>f*l,1),o=m[n],i=new Float64Array(e*2),{baseOffsets:a,axisStride:s}=P(m,A,h,n,e);for(let f=0;f<e;f++){let l=1/0,N=1/0,C=!1,B=a[f];for(let F=0;F<o;F++){const $=c[B*2],E=c[B*2+1];B+=s,!(isNaN($)||isNaN(E))&&(C?($<l||$===l&&E<N)&&(l=$,N=E):(l=$,N=E,C=!0))}i[f*2]=C?l:NaN,i[f*2+1]=C?N:NaN}const p=O.fromData(i,r,u);if(z){const f=[...m];return f[n]=1,O.fromData(i,f,u)}return p}if(x===void 0){const c=vt(t);if(c!==null)return c;let n=1/0;if(t.isCContiguous)for(let e=0;e<t.size;e++){const o=Number(S[h+e]);!isNaN(o)&&o<n&&(n=o)}else for(let e=0;e<t.size;e++){const o=Number(t.iget(e));!isNaN(o)&&o<n&&(n=o)}return n===1/0?NaN:n}let R=x;if(R<0&&(R=b+R),R<0||R>=b)throw new Error(`axis ${x} is out of bounds for array of dimension ${b}`);const I=Array.from(m).filter((c,n)=>n!==R);if(I.length===0){const c=mt(t);return z?j(c,b,"float64"):c}const w=I.reduce((c,n)=>c*n,1),v=m[R],D=new Float64Array(w),{baseOffsets:g,axisStride:y}=P(m,A,h,R,w);for(let c=0;c<w;c++){let n=1/0,r=g[c];for(let e=0;e<v;e++){const o=Number(S[r]);!isNaN(o)&&o<n&&(n=o),r+=y}D[c]=n===1/0?NaN:n}const d=O.fromData(D,I,"float64");if(z){const c=[...m];return c[R]=1,O.fromData(D,c,"float64")}return d}function dt(t,x,z=!1){const u=t.dtype,m=t.shape,b=m.length,S=t.data,h=t.offset,A=t.strides;if(!U(u)&&!H(u))return Y(t,x,z);if(U(u)){const c=S;if(x===void 0){let f=-1/0,l=-1/0,N=!1;if(t.isCContiguous)for(let B=0;B<t.size;B++){const F=c[(h+B)*2],$=c[(h+B)*2+1];isNaN(F)||isNaN($)||(N?(F>f||F===f&&$>l)&&(f=F,l=$):(f=F,l=$,N=!0))}else for(let B=0;B<t.size;B++){const F=t.iget(B),$=F.re,E=F.im;isNaN($)||isNaN(E)||(N?($>f||$===f&&E>l)&&(f=$,l=E):(f=$,l=E,N=!0))}return N?new Q(f,l):new Q(NaN,NaN)}let n=x;if(n<0&&(n=b+n),n<0||n>=b)throw new Error(`axis ${x} is out of bounds for array of dimension ${b}`);const r=Array.from(m).filter((f,l)=>l!==n);if(r.length===0){const f=dt(t);return z?j(f,b,u):f}const e=r.reduce((f,l)=>f*l,1),o=m[n],i=new Float64Array(e*2),{baseOffsets:a,axisStride:s}=P(m,A,h,n,e);for(let f=0;f<e;f++){let l=-1/0,N=-1/0,C=!1,B=a[f];for(let F=0;F<o;F++){const $=c[B*2],E=c[B*2+1];B+=s,!(isNaN($)||isNaN(E))&&(C?($>l||$===l&&E>N)&&(l=$,N=E):(l=$,N=E,C=!0))}i[f*2]=C?l:NaN,i[f*2+1]=C?N:NaN}const p=O.fromData(i,r,u);if(z){const f=[...m];return f[n]=1,O.fromData(i,f,u)}return p}if(x===void 0){const c=$t(t);if(c!==null)return c;let n=-1/0;if(t.isCContiguous)for(let e=0;e<t.size;e++){const o=Number(S[h+e]);!isNaN(o)&&o>n&&(n=o)}else for(let e=0;e<t.size;e++){const o=Number(t.iget(e));!isNaN(o)&&o>n&&(n=o)}return n===-1/0?NaN:n}let R=x;if(R<0&&(R=b+R),R<0||R>=b)throw new Error(`axis ${x} is out of bounds for array of dimension ${b}`);const I=Array.from(m).filter((c,n)=>n!==R);if(I.length===0){const c=dt(t);return z?j(c,b,"float64"):c}const w=I.reduce((c,n)=>c*n,1),v=m[R],D=new Float64Array(w),{baseOffsets:g,axisStride:y}=P(m,A,h,R,w);for(let c=0;c<w;c++){let n=-1/0,r=g[c];for(let e=0;e<v;e++){const o=Number(S[r]);!isNaN(o)&&o>n&&(n=o),r+=y}D[c]=n===-1/0?NaN:n}const d=O.fromData(D,I,"float64");if(z){const c=[...m];return c[R]=1,O.fromData(D,c,"float64")}return d}function xt(t,x){const z=t.dtype;if(!U(z)&&!H(z))return ft(t,x);const u=t.shape,m=u.length,b=t.data,S=t.offset,h=t.strides;if(U(z)){const y=b;if(x===void 0){let a=1/0,s=1/0,p=-1;if(t.isCContiguous)for(let l=0;l<t.size;l++){const N=y[(S+l)*2],C=y[(S+l)*2+1];!q(N,C)&&J(N,C,a,s)<0&&(a=N,s=C,p=l)}else for(let l=0;l<t.size;l++){const N=t.iget(l),C=N.re,B=N.im;!q(C,B)&&J(C,B,a,s)<0&&(a=C,s=B,p=l)}return p}let d=x;if(d<0&&(d=m+d),d<0||d>=m)throw new Error(`axis ${x} is out of bounds for array of dimension ${m}`);const c=Array.from(u).filter((a,s)=>s!==d);if(c.length===0)return xt(t);const n=c.reduce((a,s)=>a*s,1),r=u[d],e=new Int32Array(n),{baseOffsets:o,axisStride:i}=P(u,h,S,d,n);for(let a=0;a<n;a++){let s=1/0,p=1/0,f=0,l=o[a];for(let N=0;N<r;N++){const C=y[l*2],B=y[l*2+1];!q(C,B)&&J(C,B,s,p)<0&&(s=C,p=B,f=N),l+=i}e[a]=f}return O.fromData(e,c,"int32")}if(x===void 0){let y=1/0,d=-1;if(t.isCContiguous)for(let n=0;n<t.size;n++){const r=Number(b[S+n]);!isNaN(r)&&r<y&&(y=r,d=n)}else for(let n=0;n<t.size;n++){const r=Number(t.iget(n));!isNaN(r)&&r<y&&(y=r,d=n)}return d}let A=x;if(A<0&&(A=m+A),A<0||A>=m)throw new Error(`axis ${x} is out of bounds for array of dimension ${m}`);const R=Array.from(u).filter((y,d)=>d!==A);if(R.length===0)return xt(t);const I=R.reduce((y,d)=>y*d,1),w=u[A],v=new Int32Array(I),{baseOffsets:D,axisStride:g}=P(u,h,S,A,I);for(let y=0;y<I;y++){let d=1/0,c=0,n=D[y];for(let r=0;r<w;r++){const e=Number(b[n]);!isNaN(e)&&e<d&&(d=e,c=r),n+=g}v[y]=c}return O.fromData(v,R,"int32")}function pt(t,x){const z=t.dtype;if(!U(z)&&!H(z))return lt(t,x);const u=t.shape,m=u.length,b=t.data,S=t.offset,h=t.strides;if(U(z)){const y=b;if(x===void 0){let a=-1/0,s=-1/0,p=-1;if(t.isCContiguous)for(let l=0;l<t.size;l++){const N=y[(S+l)*2],C=y[(S+l)*2+1];!q(N,C)&&J(N,C,a,s)>0&&(a=N,s=C,p=l)}else for(let l=0;l<t.size;l++){const N=t.iget(l),C=N.re,B=N.im;!q(C,B)&&J(C,B,a,s)>0&&(a=C,s=B,p=l)}return p}let d=x;if(d<0&&(d=m+d),d<0||d>=m)throw new Error(`axis ${x} is out of bounds for array of dimension ${m}`);const c=Array.from(u).filter((a,s)=>s!==d);if(c.length===0)return pt(t);const n=c.reduce((a,s)=>a*s,1),r=u[d],e=new Int32Array(n),{baseOffsets:o,axisStride:i}=P(u,h,S,d,n);for(let a=0;a<n;a++){let s=-1/0,p=-1/0,f=0,l=o[a];for(let N=0;N<r;N++){const C=y[l*2],B=y[l*2+1];!q(C,B)&&J(C,B,s,p)>0&&(s=C,p=B,f=N),l+=i}e[a]=f}return O.fromData(e,c,"int32")}if(x===void 0){let y=-1/0,d=-1;if(t.isCContiguous)for(let n=0;n<t.size;n++){const r=Number(b[S+n]);!isNaN(r)&&r>y&&(y=r,d=n)}else for(let n=0;n<t.size;n++){const r=Number(t.iget(n));!isNaN(r)&&r>y&&(y=r,d=n)}return d}let A=x;if(A<0&&(A=m+A),A<0||A>=m)throw new Error(`axis ${x} is out of bounds for array of dimension ${m}`);const R=Array.from(u).filter((y,d)=>d!==A);if(R.length===0)return pt(t);const I=R.reduce((y,d)=>y*d,1),w=u[A],v=new Int32Array(I),{baseOffsets:D,axisStride:g}=P(u,h,S,A,I);for(let y=0;y<I;y++){let d=-1/0,c=0,n=D[y];for(let r=0;r<w;r++){const e=Number(b[n]);!isNaN(e)&&e>d&&(d=e,c=r),n+=g}v[y]=c}return O.fromData(v,R,"int32")}function xe(t,x){const z=t.dtype;if(!U(z)&&!H(z))return Ut(t,x);const u=t.shape,m=u.length,b=t.data,S=t.offset;if(U(z)){const y=b,d=t.size;if(x===void 0){const f=O.zeros([d],z),l=f.data;let N=0,C=0;if(t.isCContiguous)for(let F=0;F<d;F++){const $=y[(S+F)*2],E=y[(S+F)*2+1];q($,E)||(N+=$,C+=E),l[F*2]=N,l[F*2+1]=C}else for(let F=0;F<d;F++){const $=t.iget(F),E=$.re,T=$.im;q(E,T)||(N+=E,C+=T),l[F*2]=N,l[F*2+1]=C}return f}let c=x;if(c<0&&(c=m+c),c<0||c>=m)throw new Error(`axis ${x} is out of bounds for array of dimension ${m}`);const n=O.zeros([...u],z),r=n.data,e=u[c],o=[];let i=1;for(let f=m-1;f>=0;f--)o.unshift(i),i*=u[f];const a=t.size,s=o[c];if(t.isCContiguous)for(let f=0;f<a;f++){const l=y[(S+f)*2],N=y[(S+f)*2+1],C=Math.floor(f/s)%e,B=q(l,N);C===0?(r[f*2]=B?0:l,r[f*2+1]=B?0:N):(r[f*2]=r[(f-s)*2]+(B?0:l),r[f*2+1]=r[(f-s)*2+1]+(B?0:N))}else for(let f=0;f<a;f++){const l=t.iget(f),N=l.re,C=l.im,B=Math.floor(f/s)%e,F=q(N,C);B===0?(r[f*2]=F?0:N,r[f*2+1]=F?0:C):(r[f*2]=r[(f-s)*2]+(F?0:N),r[f*2+1]=r[(f-s)*2+1]+(F?0:C))}return n}if(x===void 0){const y=t.size,d=new Float64Array(y);let c=0;if(t.isCContiguous)for(let r=0;r<y;r++){const e=Number(b[S+r]);isNaN(e)||(c+=e),d[r]=c}else for(let r=0;r<y;r++){const e=Number(t.iget(r));isNaN(e)||(c+=e),d[r]=c}return O.fromData(d,[y],"float64")}let h=x;if(h<0&&(h=m+h),h<0||h>=m)throw new Error(`axis ${x} is out of bounds for array of dimension ${m}`);const A=new Float64Array(t.size),R=u[h],I=[];let w=1;for(let y=m-1;y>=0;y--)I.unshift(w),w*=u[y];const v=t.size,D=I[h];if(t.isCContiguous)for(let y=0;y<v;y++){const d=Number(b[S+y]);Math.floor(y/D)%R===0?A[y]=isNaN(d)?0:d:A[y]=A[y-D]+(isNaN(d)?0:d)}else for(let y=0;y<v;y++){const d=Number(t.iget(y));Math.floor(y/D)%R===0?A[y]=isNaN(d)?0:d:A[y]=A[y-D]+(isNaN(d)?0:d)}return O.fromData(A,[...u],"float64")}function pe(t,x){const z=t.dtype;if(!U(z)&&!H(z))return Pt(t,x);const u=t.shape,m=u.length,b=t.data,S=t.offset;if(U(z)){const y=b,d=t.size;if(x===void 0){const f=O.zeros([d],z),l=f.data;let N=1,C=0;if(t.isCContiguous)for(let F=0;F<d;F++){const $=y[(S+F)*2],E=y[(S+F)*2+1];if(!q($,E)){const T=N*$-C*E,_=N*E+C*$;N=T,C=_}l[F*2]=N,l[F*2+1]=C}else for(let F=0;F<d;F++){const $=t.iget(F),E=$.re,T=$.im;if(!q(E,T)){const _=N*E-C*T,V=N*T+C*E;N=_,C=V}l[F*2]=N,l[F*2+1]=C}return f}let c=x;if(c<0&&(c=m+c),c<0||c>=m)throw new Error(`axis ${x} is out of bounds for array of dimension ${m}`);const n=O.zeros([...u],z),r=n.data,e=u[c],o=[];let i=1;for(let f=m-1;f>=0;f--)o.unshift(i),i*=u[f];const a=t.size,s=o[c];if(t.isCContiguous)for(let f=0;f<a;f++){const l=y[(S+f)*2],N=y[(S+f)*2+1],C=Math.floor(f/s)%e,B=q(l,N);if(C===0)r[f*2]=B?1:l,r[f*2+1]=B?0:N;else{const F=r[(f-s)*2],$=r[(f-s)*2+1];B?(r[f*2]=F,r[f*2+1]=$):(r[f*2]=F*l-$*N,r[f*2+1]=F*N+$*l)}}else for(let f=0;f<a;f++){const l=t.iget(f),N=l.re,C=l.im,B=Math.floor(f/s)%e,F=q(N,C);if(B===0)r[f*2]=F?1:N,r[f*2+1]=F?0:C;else{const $=r[(f-s)*2],E=r[(f-s)*2+1];F?(r[f*2]=$,r[f*2+1]=E):(r[f*2]=$*N-E*C,r[f*2+1]=$*C+E*N)}}return n}if(x===void 0){const y=t.size,d=new Float64Array(y);let c=1;if(t.isCContiguous)for(let r=0;r<y;r++){const e=Number(b[S+r]);isNaN(e)||(c*=e),d[r]=c}else for(let r=0;r<y;r++){const e=Number(t.iget(r));isNaN(e)||(c*=e),d[r]=c}return O.fromData(d,[y],"float64")}let h=x;if(h<0&&(h=m+h),h<0||h>=m)throw new Error(`axis ${x} is out of bounds for array of dimension ${m}`);const A=new Float64Array(t.size),R=u[h],I=[];let w=1;for(let y=m-1;y>=0;y--)I.unshift(w),w*=u[y];const v=t.size,D=I[h];if(t.isCContiguous)for(let y=0;y<v;y++){const d=Number(b[S+y]);Math.floor(y/D)%R===0?A[y]=isNaN(d)?1:d:A[y]=A[y-D]*(isNaN(d)?1:d)}else for(let y=0;y<v;y++){const d=Number(t.iget(y));Math.floor(y/D)%R===0?A[y]=isNaN(d)?1:d:A[y]=A[y-D]*(isNaN(d)?1:d)}return O.fromData(A,[...u],"float64")}function jt(t,x,z=!1){if(ot(t.dtype,"nanmedian","Complex numbers are not orderable."),!H(t.dtype))return qt(t,x,z);const u=t.shape,m=u.length,b=t.data,S=t.offset,h=t.strides;if(x===void 0){const d=[];if(t.isCContiguous)for(let e=0;e<t.size;e++){const o=Number(b[S+e]);isNaN(o)||d.push(o)}else for(let e=0;e<t.size;e++){const o=Number(t.iget(e));isNaN(o)||d.push(o)}if(d.length===0)return NaN;d.sort((e,o)=>e-o);const n=d.length,r=Math.floor(n/2);return n%2===0?(d[r-1]+d[r])/2:d[r]}let A=x;if(A<0&&(A=m+A),A<0||A>=m)throw new Error(`axis ${x} is out of bounds for array of dimension ${m}`);const R=Array.from(u).filter((d,c)=>c!==A);if(R.length===0){const d=jt(t);return z?j(d,m,"float64"):d}const I=R.reduce((d,c)=>d*c,1),w=u[A],v=new Float64Array(I),{baseOffsets:D,axisStride:g}=P(u,h,S,A,I);for(let d=0;d<I;d++){const c=[];let n=D[d];for(let o=0;o<w;o++){const i=Number(b[n]);isNaN(i)||c.push(i),n+=g}if(c.length===0){v[d]=NaN;continue}c.sort((o,i)=>o-i);const r=c.length,e=Math.floor(r/2);r%2===0?v[d]=(c[e-1]+c[e])/2:v[d]=c[e]}const y=O.fromData(v,R,"float64");if(z){const d=[...u];return d[A]=1,O.fromData(v,d,"float64")}return y}function yt(t,x,z,u=!1){if(ot(t.dtype,"nanquantile","Complex numbers are not orderable."),!H(t.dtype))return et(t,x,z,u);if(x<0||x>1)throw new Error("Quantile must be between 0 and 1");const m=t.shape,b=m.length,S=t.data,h=t.offset,A=t.strides;if(z===void 0){const c=[];if(t.isCContiguous)for(let s=0;s<t.size;s++){const p=Number(S[h+s]);isNaN(p)||c.push(p)}else for(let s=0;s<t.size;s++){const p=Number(t.iget(s));isNaN(p)||c.push(p)}if(c.length===0)return NaN;c.sort((s,p)=>s-p);const r=c.length,e=x*(r-1),o=Math.floor(e),i=Math.ceil(e);if(o===i)return c[o];const a=e-o;return c[o]*(1-a)+c[i]*a}let R=z;if(R<0&&(R=b+R),R<0||R>=b)throw new Error(`axis ${z} is out of bounds for array of dimension ${b}`);const I=Array.from(m).filter((c,n)=>n!==R);if(I.length===0){const c=yt(t,x);return u?j(c,b,"float64"):c}const w=I.reduce((c,n)=>c*n,1),v=m[R],D=new Float64Array(w),{baseOffsets:g,axisStride:y}=P(m,A,h,R,w);for(let c=0;c<w;c++){const n=[];let r=g[c];for(let s=0;s<v;s++){const p=Number(S[r]);isNaN(p)||n.push(p),r+=y}if(n.length===0){D[c]=NaN;continue}n.sort((s,p)=>s-p);const e=n.length,o=x*(e-1),i=Math.floor(o),a=Math.ceil(o);if(i===a)D[c]=n[i];else{const s=o-i;D[c]=n[i]*(1-s)+n[a]*s}}const d=O.fromData(D,I,"float64");if(u){const c=[...m];return c[R]=1,O.fromData(D,c,"float64")}return d}function ye(t,x,z,u=!1){return yt(t,x/100,z,u)}export{_t as all,Mt as any,lt as argmax,ft as argmin,ct as average,Pt as cumprod,Ut as cumsum,Y as max,nt as mean,qt as median,Z as min,pt as nanargmax,xt as nanargmin,pe as nancumprod,xe as nancumsum,dt as nanmax,Kt as nanmean,jt as nanmedian,mt as nanmin,ye as nanpercentile,Qt as nanprod,yt as nanquantile,de as nanstd,Wt as nansum,it as nanvar,me as percentile,at as prod,ce as ptp,et as quantile,ue as std,tt as sum,ut as variance};
|