numpy-ts 1.0.0 → 1.2.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/broadcasting.js +1 -1
- package/dist/esm/common/dtype.js +1 -1
- package/dist/esm/common/float16-conv.js +1 -0
- package/dist/esm/common/internal/compute.js +1 -1
- 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/comparison.js +1 -1
- package/dist/esm/common/ops/complex.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/formatting.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/random.js +1 -1
- package/dist/esm/common/ops/reduction.js +1 -1
- package/dist/esm/common/ops/rounding.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/rng.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/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/rng.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/advanced.js +1 -1
- package/dist/esm/core/arithmetic.js +1 -1
- package/dist/esm/core/bitwise.js +1 -1
- package/dist/esm/core/complex.js +1 -1
- package/dist/esm/core/creation.js +1 -1
- package/dist/esm/core/formatting.js +1 -1
- package/dist/esm/core/gradient.js +1 -1
- package/dist/esm/core/index.js +1 -1
- package/dist/esm/core/linalg.js +1 -1
- package/dist/esm/core/logic.js +1 -1
- package/dist/esm/core/polynomial.js +1 -1
- package/dist/esm/core/reduction.js +1 -1
- package/dist/esm/core/rounding.js +1 -1
- package/dist/esm/core/sets.js +1 -1
- package/dist/esm/core/shape-extra.js +1 -1
- package/dist/esm/core/shape.js +1 -1
- package/dist/esm/core/sorting.js +1 -1
- package/dist/esm/core/statistics.js +1 -1
- package/dist/esm/core/trig.js +1 -1
- package/dist/esm/core/typechecking.js +1 -1
- package/dist/esm/core/types.js +1 -1
- package/dist/esm/core/utility.js +1 -1
- package/dist/esm/core.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/file-ops.js +1 -0
- package/dist/esm/io/filesystem.js +1 -0
- package/dist/esm/io/index.js +1 -1
- package/dist/esm/io/npy/format.js +1 -1
- package/dist/esm/io/npy/index.js +1 -1
- package/dist/esm/io/npy/parser.js +1 -1
- package/dist/esm/io/npy/serializer.js +2 -2
- package/dist/esm/io/npz/index.js +1 -1
- package/dist/esm/io/npz/parser.js +1 -1
- package/dist/esm/io/npz/serializer.js +1 -1
- package/dist/esm/io/txt/index.js +1 -1
- package/dist/esm/io/txt/parser.js +1 -1
- package/dist/esm/io/zip/index.js +1 -1
- package/dist/esm/io/zip/reader.js +1 -1
- package/dist/esm/io/zip/types.js +1 -1
- package/dist/esm/io/zip/writer.js +1 -1
- package/dist/esm/node.js +1 -1
- package/dist/numpy-ts.browser.js +6 -6
- package/dist/types/common/dtype.d.ts +9 -4
- package/dist/types/common/float16-conv.d.ts +27 -0
- package/dist/types/common/internal/indexing.d.ts +15 -18
- 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/random.d.ts +10 -5
- 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 +22 -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/rng.wasm.d.ts +60 -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 +27 -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 +65 -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/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/rng.d.ts +65 -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 +55 -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/index.d.ts +94 -1
- package/dist/types/core/linalg.d.ts +10 -10
- package/dist/types/core/reduction.d.ts +17 -17
- package/dist/types/core/rounding.d.ts +0 -2
- 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 +18 -3
- package/dist/types/io/file-ops.d.ts +269 -0
- package/dist/types/io/filesystem.d.ts +21 -0
- package/dist/types/io/zip/types.d.ts +2 -1
- package/dist/types/node.d.ts +3 -275
- package/package.json +54 -35
- package/dist/numpy-ts.node-io.cjs +0 -8
- package/dist/numpy-ts.node-io.cjs.map +0 -7
- package/dist/numpy-ts.node-io.mjs +0 -8
- package/dist/numpy-ts.node-io.mjs.map +0 -7
- package/dist/numpy-ts.node.cjs +0 -8
- package/dist/numpy-ts.node.cjs.map +0 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
import{ArrayStorage as b}from"../storage";import{Complex as C}from"../complex";function U(o,r,a){const e=o.length;e!==0&&e!==1&&((e&e-1)===0?D(o,r,a):v(o,r,a))}const z=new Map;function K(o,r){const a=`${o}_${r}`;let e=z.get(a);if(e)return e;const f=new Float64Array(o/2),l=new Float64Array(o/2),c=r?1:-1;for(let t=0;t<o/2;t++){const n=c*2*Math.PI*t/o;f[t]=Math.cos(n),l[t]=Math.sin(n)}if(e={cos:f,sin:l},z.set(a,e),z.size>100){const t=z.keys().next().value;z.delete(t)}return e}function D(o,r,a){const e=o.length;let f=0;for(let t=0;t<e-1;t++){if(t<f){let d=o[t];o[t]=o[f],o[f]=d,d=r[t],r[t]=r[f],r[f]=d}let n=e>>1;for(;n<=f;)f-=n,n>>=1;f+=n}const{cos:l,sin:c}=K(e,a);for(let t=2;t<=e;t*=2){const n=t>>1,d=e/t;for(let u=0;u<e;u+=t)for(let i=0,s=0;i<n;i++,s+=d){const y=l[s],m=c[s],h=u+i,A=u+i+n,p=o[h],g=r[h],S=o[A],w=r[A],F=y*S-m*w,_=y*w+m*S;o[h]=p+F,r[h]=g+_,o[A]=p-F,r[A]=g-_}}if(a){const t=1/e;for(let n=0;n<e;n++)o[n]=o[n]*t,r[n]=r[n]*t}}function v(o,r,a){const e=o.length;let f=1;for(;f<2*e-1;)f*=2;const l=a?1:-1,c=new Float64Array(e),t=new Float64Array(e);for(let s=0;s<e;s++){const y=l*Math.PI*s*s/e;c[s]=Math.cos(y),t[s]=Math.sin(y)}const n=new Float64Array(f),d=new Float64Array(f);for(let s=0;s<e;s++){const y=c[s],m=t[s];n[s]=o[s]*y-r[s]*m,d[s]=r[s]*y+o[s]*m}const u=new Float64Array(f),i=new Float64Array(f);u[0]=c[0],i[0]=-t[0];for(let s=1;s<e;s++)u[s]=c[s],i[s]=-t[s],u[f-s]=c[s],i[f-s]=-t[s];D(n,d,!1),D(u,i,!1);for(let s=0;s<f;s++){const y=n[s],m=d[s],h=u[s],A=i[s];n[s]=y*h-m*A,d[s]=y*A+m*h}D(n,d,!0);for(let s=0;s<e;s++){const y=n[s],m=d[s],h=c[s],A=t[s];o[s]=y*h-m*A,r[s]=m*h+y*A}if(a)for(let s=0;s<e;s++)o[s]=o[s]/e,r[s]=r[s]/e}function x(o,r,a=-1,e="backward"){return k(o,r!==void 0?[r]:void 0,[a],e,!1)}function M(o,r,a=-1,e="backward"){return k(o,r!==void 0?[r]:void 0,[a],e,!0)}function G(o,r,a=[-2,-1],e="backward"){return k(o,r,a,e,!1)}function H(o,r,a=[-2,-1],e="backward"){return k(o,r,a,e,!0)}function J(o,r,a,e="backward"){return k(o,r,a,e,!1)}function Q(o,r,a,e="backward"){return k(o,r,a,e,!0)}function k(o,r,a,e="backward",f=!1){const l=Array.from(o.shape),c=l.length;if(o.size===0)return b.zeros(l,"complex128");if(c===0){const u=b.zeros([1],"complex128"),i=o.iget(0),s=i instanceof C?i.re:Number(i),y=i instanceof C?i.im:0,m=u.data;return m[0]=s,m[1]=y,b.fromData(u.data,[],"complex128")}let t;if(a===void 0)if(r===void 0)t=Array.from({length:c},(u,i)=>i);else{t=[];for(let u=0;u<r.length;u++)t.push(c-r.length+u)}else t=a.map(u=>u<0?c+u:u);const n=[...l];if(r!==void 0)for(let u=0;u<r.length;u++){const i=t[u];n[i]=r[u]}let d=I(o);r!==void 0&&(d=B(d,n,t));for(const u of t)d=$(d,u,f,e);return d}function I(o){const r=o.dtype,a=Array.from(o.shape),e=o.size;if(r==="complex128"||r==="complex64"){const t=b.zeros(a,"complex128"),n=t.data,d=o.data;for(let u=0;u<e*2;u++)n[u]=d[u];return t}const f=b.zeros(a,"complex128"),l=f.data,c=o.data;if(r==="float64"){const t=c;for(let n=0;n<e;n++)l[n*2]=t[n]}else if(r==="float32"){const t=c;for(let n=0;n<e;n++)l[n*2]=t[n]}else if(r==="int32"){const t=c;for(let n=0;n<e;n++)l[n*2]=t[n]}else if(r==="int16"){const t=c;for(let n=0;n<e;n++)l[n*2]=t[n]}else if(r==="int8"){const t=c;for(let n=0;n<e;n++)l[n*2]=t[n]}else if(r==="uint32"){const t=c;for(let n=0;n<e;n++)l[n*2]=t[n]}else if(r==="uint16"){const t=c;for(let n=0;n<e;n++)l[n*2]=t[n]}else if(r==="uint8"){const t=c;for(let n=0;n<e;n++)l[n*2]=t[n]}else if(r==="int64"||r==="uint64"){const t=c;for(let n=0;n<e;n++)l[n*2]=Number(t[n])}else for(let t=0;t<e;t++)l[t*2]=Number(c[t]);return f}function B(o,r,a){const e=Array.from(o.shape);let f=o;for(const l of a){const c=e[l],t=r[l];c!==t&&(t>c?f=P(f,l,t):f=R(f,l,t),e[l]=t)}return f}function P(o,r,a){const e=Array.from(o.shape),f=e[r];e[r]=a;const l=b.zeros(e,"complex128"),c=l.data,t=o.data,n=e.slice(0,r).reduce((u,i)=>u*i,1),d=e.slice(r+1).reduce((u,i)=>u*i,1);for(let u=0;u<n;u++)for(let i=0;i<f;i++)for(let s=0;s<d;s++){const y=(u*f+i)*d+s,m=(u*a+i)*d+s;c[m*2]=t[y*2],c[m*2+1]=t[y*2+1]}return l}function R(o,r,a){const e=Array.from(o.shape),f=e[r];e[r]=a;const l=b.zeros(e,"complex128"),c=l.data,t=o.data,n=e.slice(0,r).reduce((u,i)=>u*i,1),d=e.slice(r+1).reduce((u,i)=>u*i,1);for(let u=0;u<n;u++)for(let i=0;i<a;i++)for(let s=0;s<d;s++){const y=(u*f+i)*d+s,m=(u*a+i)*d+s;c[m*2]=t[y*2],c[m*2+1]=t[y*2+1]}return l}function $(o,r,a,e){const f=Array.from(o.shape),l=f[r];if(l===0)return o;const c=b.zeros(f,"complex128"),t=c.data,n=o.data,d=f.slice(0,r).reduce((y,m)=>y*m,1),u=f.slice(r+1).reduce((y,m)=>y*m,1),i=new Float64Array(l),s=new Float64Array(l);for(let y=0;y<d;y++)for(let m=0;m<u;m++){for(let h=0;h<l;h++){const A=(y*l+h)*u+m;i[h]=n[A*2],s[h]=n[A*2+1]}if(U(i,s,a),e==="ortho"){const h=1/Math.sqrt(l);if(a){const A=Math.sqrt(l);for(let p=0;p<l;p++)i[p]=i[p]*A,s[p]=s[p]*A}else for(let A=0;A<l;A++)i[A]=i[A]*h,s[A]=s[A]*h}else if(e==="forward"&&!a){const h=1/l;for(let A=0;A<l;A++)i[A]=i[A]*h,s[A]=s[A]*h}else if(!(e==="backward"&&a)){if(e==="forward"&&a)for(let h=0;h<l;h++)i[h]=i[h]*l,s[h]=s[h]*l}for(let h=0;h<l;h++){const A=(y*l+h)*u+m;t[A*2]=i[h],t[A*2+1]=s[h]}}return c}function j(o,r,a=-1,e="backward"){const f=Array.from(o.shape),l=f.length,c=a<0?l+a:a,t=r??f[c],n=x(o,t,a,e),d=Math.floor(t/2)+1;return R(n,c,d)}function T(o,r,a=-1,e="backward"){const f=Array.from(o.shape),l=f.length,c=a<0?l+a:a,t=f[c],n=r??(t-1)*2,d=[...f];d[c]=n;const u=b.zeros(d,"complex128"),i=u.data,s=I(o).data,y=f.slice(0,c).reduce((A,p)=>A*p,1),m=f.slice(c+1).reduce((A,p)=>A*p,1);for(let A=0;A<y;A++)for(let p=0;p<m;p++){for(let g=0;g<t;g++){const S=(A*t+g)*m+p,w=(A*n+g)*m+p;i[w*2]=s[S*2],i[w*2+1]=s[S*2+1]}for(let g=t;g<n;g++){const S=n-g,w=(A*t+S)*m+p,F=(A*n+g)*m+p;i[F*2]=s[w*2],i[F*2+1]=-s[w*2+1]}}const h=M(u,n,a,e);return L(h)}function V(o,r,a=[-2,-1],e="backward"){const l=Array.from(o.shape).length,c=a[0]<0?l+a[0]:a[0],t=a[1]<0?l+a[1]:a[1];let n=x(o,r?r[0]:void 0,c,e);const d=Array.from(n.shape),u=r?r[1]:d[t];n=x(n,u,t,e);const i=Math.floor(u/2)+1;return R(n,t,i)}function W(o,r,a=[-2,-1],e="backward"){const f=Array.from(o.shape),l=f.length,c=a[0]<0?l+a[0]:a[0],t=a[1]<0?l+a[1]:a[1],n=f[t],d=r?r[1]:(n-1)*2,u=r?r[0]:f[c];let i=T(o,d,t,e);return i=M(i,u,c,e),L(i)}function X(o,r,a,e="backward"){const l=Array.from(o.shape).length;let c;if(a===void 0?c=Array.from({length:l},(u,i)=>i):c=a.map(u=>u<0?l+u:u),c.length===0)return I(o);let t=o;for(let u=0;u<c.length-1;u++){const i=c[u],s=r?r[u]:void 0;t=x(t,s,i,e)}const n=c[c.length-1],d=r?r[c.length-1]:void 0;return j(t,d,n,e)}function Y(o,r,a,e="backward"){const f=Array.from(o.shape),l=f.length;let c;if(a===void 0?c=Array.from({length:l},(i,s)=>s):c=a.map(i=>i<0?l+i:i),c.length===0)return L(I(o));const t=c[c.length-1],n=f[t],d=r?[...r]:c.map((i,s)=>s===c.length-1?(n-1)*2:f[i]);let u=T(o,d[c.length-1],t,e);for(let i=c.length-2;i>=0;i--){const s=c[i];u=M(u,d[i],s,e)}return L(u)}function Z(o,r,a=-1,e="backward"){const f=Array.from(o.shape),l=f.length,c=a<0?l+a:a,t=f[c],n=r??(t-1)*2,d=q(I(o)),u=T(d,n,a,e),i=u.data;for(let s=0;s<u.size;s++)i[s]=i[s]*n;return u}function tt(o,r,a=-1,e="backward"){const f=Array.from(o.shape),l=f.length,c=a<0?l+a:a,t=r??f[c],n=j(o,t,a,e),d=q(n),u=d.data;for(let i=0;i<d.size*2;i++)u[i]=u[i]/t;return d}function q(o){const r=Array.from(o.shape),a=o.size,e=b.zeros(r,"complex128"),f=e.data,l=o.data;for(let c=0;c<a;c++)f[c*2]=l[c*2],f[c*2+1]=-l[c*2+1];return e}function L(o){const r=Array.from(o.shape),a=o.size,e=b.zeros(r,"float64"),f=e.data,l=o.data;for(let c=0;c<a;c++)f[c]=l[c*2];return e}function rt(o,r=1){const a=b.zeros([o],"float64"),e=a.data,f=Math.floor((o-1)/2)+1;for(let l=0;l<f;l++)e[l]=l/(o*r);for(let l=f;l<o;l++)e[l]=(l-o)/(o*r);return a}function et(o,r=1){const a=Math.floor(o/2)+1,e=b.zeros([a],"float64"),f=e.data;for(let l=0;l<a;l++)f[l]=l/(o*r);return e}function ot(o,r){const a=Array.from(o.shape),e=a.length;let f;r===void 0?f=Array.from({length:e},(c,t)=>t):typeof r=="number"?f=[r<0?e+r:r]:f=r.map(c=>c<0?e+c:c);const l=a.map((c,t)=>f.includes(t)?Math.floor(a[t]/2):0);return N(o,l)}function nt(o,r){const a=Array.from(o.shape),e=a.length;let f;r===void 0?f=Array.from({length:e},(c,t)=>t):typeof r=="number"?f=[r<0?e+r:r]:f=r.map(c=>c<0?e+c:c);const l=a.map((c,t)=>f.includes(t)?-Math.floor(a[t]/2):0);return N(o,l)}function N(o,r){const a=Array.from(o.shape),e=o.dtype,f=o.size,l=b.zeros(a,e),c=e==="complex128"||e==="complex64",t=new Array(a.length);t[a.length-1]=1;for(let n=a.length-2;n>=0;n--)t[n]=t[n+1]*a[n+1];for(let n=0;n<f;n++){const d=new Array(a.length);let u=n;for(let y=0;y<a.length;y++)d[y]=Math.floor(u/t[y]),u=u%t[y];const i=d.map((y,m)=>{let h=y+r[m];const A=a[m];return h=(h%A+A)%A,h});let s=0;for(let y=0;y<a.length;y++)s+=i[y]*t[y];if(c){const y=o.data,m=l.data;m[s*2]=y[n*2],m[s*2+1]=y[n*2+1]}else{const y=o.iget(n);l.iset(s,y)}}return l}export{x as fft,G as fft2,rt as fftfreq,J as fftn,ot as fftshift,Z as hfft,M as ifft,H as ifft2,Q as ifftn,nt as ifftshift,tt as ihfft,T as irfft,W as irfft2,Y as irfftn,j as rfft,V as rfft2,et as rfftfreq,X as rfftn};
|
|
1
|
+
import{ArrayStorage as S}from"../storage.js";import{Complex as H}from"../complex.js";import{isComplexDType as I}from"../dtype.js";import{roll as C}from"./shape.js";import{wasmFft as E,wasmIfft as P,wasmRfft as $,wasmIrfft as W,wasmFft2 as G,wasmFftBatch as N,wasmRfftBatch as J,wasmIrfftBatch as Q,wasmRfft2 as V,wasmIrfft2 as X,wasmIrfftn3d as Y}from"../wasm/fft.js";import{wasmConfig as D}from"../wasm/config.js";function Z(t,e,a){const r=t.length;r!==0&&r!==1&&((r&r-1)===0?R(t,e,a):tt(t,e,a))}const x=new Map;function v(t,e){const a=`${t}_${e}`;let r=x.get(a);if(r)return r;const l=new Float64Array(t/2),n=new Float64Array(t/2),f=e?1:-1;for(let o=0;o<t/2;o++){const c=f*2*Math.PI*o/t;l[o]=Math.cos(c),n[o]=Math.sin(c)}if(r={cos:l,sin:n},x.set(a,r),x.size>100){const o=x.keys().next().value;x.delete(o)}return r}function R(t,e,a){const r=t.length;let l=0;for(let o=0;o<r-1;o++){if(o<l){let d=t[o];t[o]=t[l],t[l]=d,d=e[o],e[o]=e[l],e[l]=d}let c=r>>1;for(;c<=l;)l-=c,c>>=1;l+=c}const{cos:n,sin:f}=v(r,a);for(let o=2;o<=r;o*=2){const c=o>>1,d=r/o;for(let u=0;u<r;u+=o)for(let i=0,s=0;i<c;i++,s+=d){const p=n[s],A=f[s],h=u+i,y=u+i+c,b=t[h],g=e[h],w=t[y],m=e[y],k=p*w-A*m,F=p*m+A*w;t[h]=b+k,e[h]=g+F,t[y]=b-k,e[y]=g-F}}if(a){const o=1/r;for(let c=0;c<r;c++)t[c]=t[c]*o,e[c]=e[c]*o}}function tt(t,e,a){const r=t.length;let l=1;for(;l<2*r-1;)l*=2;const n=a?1:-1,f=new Float64Array(r),o=new Float64Array(r);for(let s=0;s<r;s++){const p=n*Math.PI*s*s/r;f[s]=Math.cos(p),o[s]=Math.sin(p)}const c=new Float64Array(l),d=new Float64Array(l);for(let s=0;s<r;s++){const p=f[s],A=o[s];c[s]=t[s]*p-e[s]*A,d[s]=e[s]*p+t[s]*A}const u=new Float64Array(l),i=new Float64Array(l);u[0]=f[0],i[0]=-o[0];for(let s=1;s<r;s++)u[s]=f[s],i[s]=-o[s],u[l-s]=f[s],i[l-s]=-o[s];R(c,d,!1),R(u,i,!1);for(let s=0;s<l;s++){const p=c[s],A=d[s],h=u[s],y=i[s];c[s]=p*h-A*y,d[s]=p*y+A*h}R(c,d,!0);for(let s=0;s<r;s++){const p=c[s],A=d[s],h=f[s],y=o[s];t[s]=p*h-A*y,e[s]=A*h+p*y}if(a)for(let s=0;s<r;s++)t[s]=t[s]/r,e[s]=e[s]/r}function U(t,e,a=-1,r="backward"){if(e===void 0&&(a===-1||a===t.ndim-1)&&r==="backward"&&t.ndim===1){const l=I(t.dtype)?t:M(t),n=E(l);if(n)return n}return L(t,e!==void 0?[e]:void 0,[a],r,!1)}function q(t,e,a=-1,r="backward"){if(e===void 0&&(a===-1||a===t.ndim-1)&&r==="backward"&&t.ndim===1){const l=I(t.dtype)?t:M(t),n=P(l);if(n)return n}return L(t,e!==void 0?[e]:void 0,[a],r,!0)}function rt(t,e,a=[-2,-1],r="backward"){return L(t,e,a,r,!1)}function yt(t,e,a=[-2,-1],r="backward"){return L(t,e,a,r,!0)}function ht(t,e,a,r="backward"){return L(t,e,a,r,!1)}function pt(t,e,a,r="backward"){return L(t,e,a,r,!0)}function L(t,e,a,r="backward",l=!1){const n=Array.from(t.shape),f=n.length;if(t.size===0)return S.zeros(n,"complex128");if(f===0){const u=S.zeros([1],"complex128"),i=t.iget(0),s=i instanceof H?i.re:Number(i),p=i instanceof H?i.im:0,A=u.data;return A[0]=s,A[1]=p,S.fromData(u.data,[],"complex128")}let o;if(a===void 0)if(e===void 0)o=Array.from({length:f},(u,i)=>i);else{o=[];for(let u=0;u<e.length;u++)o.push(f-e.length+u)}else o=a.map(u=>u<0?f+u:u);const c=[...n];if(e!==void 0)for(let u=0;u<e.length;u++){const i=o[u];c[i]=e[u]}let d=M(t);if(e!==void 0&&(d=ot(d,c,o)),o.length===2&&d.ndim===2&&r==="backward"&&d.isCContiguous){const u=d.shape[o[0]],i=d.shape[o[1]];if(o[0]===0&&o[1]===1&&u>=z*D.thresholdMultiplier&&i>=z*D.thresholdMultiplier){const p=d.data,A=G(p,u,i,l);if(A)return S.fromData(A,[u,i],"complex128")}}for(const u of o)d=st(d,u,l,r);return d}function M(t){const e=t.dtype,a=Array.from(t.shape),r=t.size;if(e==="complex128"||e==="complex64"){const o=S.zeros(a,"complex128"),c=o.data,d=t.data;for(let u=0;u<r*2;u++)c[u]=d[u];return o}const l=S.zeros(a,"complex128"),n=l.data,f=t.data;if(e==="float64"){const o=f;for(let c=0;c<r;c++)n[c*2]=o[c]}else if(e==="float32"){const o=f;for(let c=0;c<r;c++)n[c*2]=o[c]}else if(e==="int32"){const o=f;for(let c=0;c<r;c++)n[c*2]=o[c]}else if(e==="int16"){const o=f;for(let c=0;c<r;c++)n[c*2]=o[c]}else if(e==="int8"){const o=f;for(let c=0;c<r;c++)n[c*2]=o[c]}else if(e==="uint32"){const o=f;for(let c=0;c<r;c++)n[c*2]=o[c]}else if(e==="uint16"){const o=f;for(let c=0;c<r;c++)n[c*2]=o[c]}else if(e==="uint8"){const o=f;for(let c=0;c<r;c++)n[c*2]=o[c]}else if(e==="int64"||e==="uint64"){const o=f;for(let c=0;c<r;c++)n[c*2]=Number(o[c])}else for(let o=0;o<r;o++)n[o*2]=Number(f[o]);return l}function ot(t,e,a){const r=Array.from(t.shape);let l=t;for(const n of a){const f=r[n],o=e[n];f!==o&&(o>f?l=et(l,n,o):l=_(l,n,o),r[n]=o)}return l}function et(t,e,a){const r=Array.from(t.shape),l=r[e];r[e]=a;const n=S.zeros(r,"complex128"),f=n.data,o=t.data,c=r.slice(0,e).reduce((u,i)=>u*i,1),d=r.slice(e+1).reduce((u,i)=>u*i,1);for(let u=0;u<c;u++)for(let i=0;i<l;i++)for(let s=0;s<d;s++){const p=(u*l+i)*d+s,A=(u*a+i)*d+s;f[A*2]=o[p*2],f[A*2+1]=o[p*2+1]}return n}function _(t,e,a){const r=Array.from(t.shape),l=r[e];r[e]=a;const n=S.zeros(r,"complex128"),f=n.data,o=t.data,c=r.slice(0,e).reduce((u,i)=>u*i,1),d=r.slice(e+1).reduce((u,i)=>u*i,1);for(let u=0;u<c;u++)for(let i=0;i<a;i++)for(let s=0;s<d;s++){const p=(u*l+i)*d+s,A=(u*a+i)*d+s;f[A*2]=o[p*2],f[A*2+1]=o[p*2+1]}return n}const z=32;function nt(t,e){const a=Array.from(t.shape),r=a.length,l=Math.floor(e/2)+1,n=a.slice(0,r-1).reduce((i,s)=>i*s,1),f=e,o=l*2,c=t.dtype==="float64"?t.data:Float64Array.from(t.data.subarray(t.offset,t.offset+t.size)),d=J(c,e,n,f,o);if(!d)return null;const u=[...a];return u[r-1]=l,S.fromData(d,u,"complex128")}function at(t,e){const a=Array.from(t.shape),r=a.length,l=a[r-1],n=a.slice(0,r-1).reduce((s,p)=>s*p,1),f=l*2,o=e,d=M(t).data,u=Q(d,l,e,n,f,o);if(!u)return null;const i=[...a];return i[r-1]=e,S.fromData(u,i,"float64")}function st(t,e,a,r){const l=Array.from(t.shape),n=l[e];if(n===0)return t;const f=S.zeros(l,"complex128"),o=f.data,c=t.data,d=l.slice(0,e).reduce((p,A)=>p*A,1),u=l.slice(e+1).reduce((p,A)=>p*A,1);if(u===1&&n>=z*D.thresholdMultiplier){const p=d*n*2,A=N(c,n,d,a);if(A){if(o.set(A),r==="ortho"){const h=a?Math.sqrt(n):1/Math.sqrt(n);for(let y=0;y<p;y++)o[y]=o[y]*h}else if(r==="forward"&&!a){const h=1/n;for(let y=0;y<p;y++)o[y]=o[y]*h}else if(r==="forward"&&a)for(let h=0;h<p;h++)o[h]=o[h]*n;return f}}if(u>1&&n>=z*D.thresholdMultiplier){const p=d*u,A=p*n*2,h=new Float64Array(A);let y=0;for(let g=0;g<d;g++)for(let w=0;w<u;w++){const m=y*n*2;for(let k=0;k<n;k++){const F=((g*n+k)*u+w)*2;h[m+k*2]=c[F],h[m+k*2+1]=c[F+1]}y++}const b=N(h,n,p,a);if(b){y=0;for(let w=0;w<d;w++)for(let m=0;m<u;m++){const k=y*n*2;for(let F=0;F<n;F++){const j=((w*n+F)*u+m)*2;o[j]=b[k+F*2],o[j+1]=b[k+F*2+1]}y++}const g=d*n*u*2;if(r==="ortho"){const w=a?Math.sqrt(n):1/Math.sqrt(n);for(let m=0;m<g;m++)o[m]=o[m]*w}else if(r==="forward"&&!a){const w=1/n;for(let m=0;m<g;m++)o[m]=o[m]*w}else if(r==="forward"&&a)for(let w=0;w<g;w++)o[w]=o[w]*n;return f}}const i=new Float64Array(n),s=new Float64Array(n);for(let p=0;p<d;p++)for(let A=0;A<u;A++){for(let h=0;h<n;h++){const y=(p*n+h)*u+A;i[h]=c[y*2],s[h]=c[y*2+1]}if(Z(i,s,a),r==="ortho"){const h=1/Math.sqrt(n);if(a){const y=Math.sqrt(n);for(let b=0;b<n;b++)i[b]=i[b]*y,s[b]=s[b]*y}else for(let y=0;y<n;y++)i[y]=i[y]*h,s[y]=s[y]*h}else if(r==="forward"&&!a){const h=1/n;for(let y=0;y<n;y++)i[y]=i[y]*h,s[y]=s[y]*h}else if(!(r==="backward"&&a)){if(r==="forward"&&a)for(let h=0;h<n;h++)i[h]=i[h]*n,s[h]=s[h]*n}for(let h=0;h<n;h++){const y=(p*n+h)*u+A;o[y*2]=i[h],o[y*2+1]=s[h]}}return f}function K(t,e,a=-1,r="backward"){const l=Array.from(t.shape),n=l.length,f=a<0?n+a:a,o=e??l[f],c=Math.floor(o/2)+1;if(n===1&&e===void 0&&r==="backward"&&!I(t.dtype)&&t.dtype==="float64"){const u=$(t,o);if(u)return u}if(f===n-1&&t.isCContiguous&&e===void 0&&r==="backward"&&!I(t.dtype)&&o>=z*D.thresholdMultiplier&&o%2===0){const u=nt(t,o);if(u)return u}const d=U(t,o,a,r);return _(d,f,c)}function B(t,e,a=-1,r="backward"){const l=Array.from(t.shape),n=l.length,f=a<0?n+a:a,o=l[f],c=e??(o-1)*2;if(n===1&&r==="backward"&&I(t.dtype)&&t.dtype==="complex128"){const y=W(t,c);if(y)return y}if(f===n-1&&t.isCContiguous&&r==="backward"&&c%2===0&&c>=z*D.thresholdMultiplier&&o===Math.floor(c/2)+1){const y=at(t,c);if(y)return y}const d=[...l];d[f]=c;const u=S.zeros(d,"complex128"),i=u.data,s=M(t).data,p=l.slice(0,f).reduce((y,b)=>y*b,1),A=l.slice(f+1).reduce((y,b)=>y*b,1);for(let y=0;y<p;y++)for(let b=0;b<A;b++){for(let g=0;g<o;g++){const w=(y*o+g)*A+b,m=(y*c+g)*A+b;i[m*2]=s[w*2],i[m*2+1]=s[w*2+1]}for(let g=o;g<c;g++){const w=c-g,m=(y*o+w)*A+b,k=(y*c+g)*A+b;i[k*2]=s[m*2],i[k*2+1]=-s[m*2+1]}}const h=q(u,c,a,r);return T(h)}function At(t,e,a=[-2,-1],r="backward"){const l=Array.from(t.shape),n=l.length,f=a[0]<0?n+a[0]:a[0],o=a[1]<0?n+a[1]:a[1];if(n===2&&f===0&&o===1&&r==="backward"&&!e&&t.isCContiguous&&!I(t.dtype)){const i=l[0],s=l[1];if(i>=z*D.thresholdMultiplier&&s>=z*D.thresholdMultiplier){const p=Math.floor(s/2)+1,A=t.dtype==="float64"?t.data.subarray(t.offset,t.offset+i*s):Float64Array.from(t.data.subarray(t.offset,t.offset+i*s)),h=V(A,i,s);if(h)return S.fromData(h,[i,p],"complex128")}}const c=rt(t,e,a,r),d=e?e[1]:l[o],u=Math.floor(d/2)+1;return _(c,o,u)}function mt(t,e,a=[-2,-1],r="backward"){const l=Array.from(t.shape),n=l.length,f=a[0]<0?n+a[0]:a[0],o=a[1]<0?n+a[1]:a[1],c=l[o],d=e?e[1]:(c-1)*2,u=e?e[0]:l[f];if(n===2&&f===0&&o===1&&r==="backward"&&!e&&t.isCContiguous&&I(t.dtype)){const s=l[0],p=l[1];if(s>=z*D.thresholdMultiplier&&d>=z*D.thresholdMultiplier){const A=t.data.subarray(t.offset,t.offset+s*p*2),h=X(A,s,p,d);if(h)return S.fromData(h,[s,d],"float64")}}let i=B(t,d,o,r);return i=q(i,u,f,r),T(i)}function bt(t,e,a,r="backward"){const n=Array.from(t.shape).length;let f;if(a===void 0?f=Array.from({length:n},(u,i)=>i):f=a.map(u=>u<0?n+u:u),f.length===0)return M(t);const o=f[f.length-1],c=e?e[f.length-1]:void 0;let d=K(t,c,o,r);for(let u=0;u<f.length-1;u++){const i=f[u],s=e?e[u]:void 0;d=U(d,s,i,r)}return d}function wt(t,e,a,r="backward"){const l=Array.from(t.shape),n=l.length;let f;if(a===void 0?f=Array.from({length:n},(i,s)=>s):f=a.map(i=>i<0?n+i:i),f.length===0)return T(M(t));const o=f[f.length-1],c=l[o],d=e?[...e]:f.map((i,s)=>s===f.length-1?(c-1)*2:l[i]);if(n===3&&f.length===3&&f[0]===0&&f[1]===1&&f[2]===2&&r==="backward"&&e===void 0&&t.isCContiguous&&I(t.dtype)&&d[2]%2===0){const i=d[0],s=d[1],p=c,A=d[2],h=M(t),y=Y(h.data,i,s,p,A);if(y)return S.fromData(y,[i,s,A],"float64")}let u=B(t,d[f.length-1],o,r);for(let i=f.length-2;i>=0;i--){const s=f[i];u=q(u,d[i],s,r)}return T(u)}function gt(t,e,a=-1,r="backward"){const l=Array.from(t.shape),n=l.length,f=a<0?n+a:a,o=l[f],c=e??(o-1)*2,d=O(M(t)),u=B(d,c,a,r),i=u.data;for(let s=0;s<u.size;s++)i[s]=i[s]*c;return u}function St(t,e,a=-1,r="backward"){const l=Array.from(t.shape),n=l.length,f=a<0?n+a:a,o=e??l[f],c=K(t,o,a,r),d=O(c),u=d.data;for(let i=0;i<d.size*2;i++)u[i]=u[i]/o;return d}function O(t){const e=Array.from(t.shape),a=t.size,r=S.zeros(e,"complex128"),l=r.data,n=t.data;for(let f=0;f<a;f++)l[f*2]=n[f*2],l[f*2+1]=-n[f*2+1];return r}function T(t){const e=Array.from(t.shape),a=t.size,r=S.zeros(e,"float64"),l=r.data,n=t.data;for(let f=0;f<a;f++)l[f]=n[f*2];return r}function kt(t,e=1){const a=S.zeros([t],"float64"),r=a.data,l=Math.floor((t-1)/2)+1;for(let n=0;n<l;n++)r[n]=n/(t*e);for(let n=l;n<t;n++)r[n]=(n-t)/(t*e);return a}function Ft(t,e=1){const a=Math.floor(t/2)+1,r=S.zeros([a],"float64"),l=r.data;for(let n=0;n<a;n++)l[n]=n/(t*e);return r}function Dt(t,e){const a=Array.from(t.shape),r=a.length;let l;e===void 0?l=Array.from({length:r},(f,o)=>o):typeof e=="number"?l=[e<0?r+e:e]:l=e.map(f=>f<0?r+f:f);const n=l.map(f=>Math.floor(a[f]/2));return r===1&&l.length===1&&l[0]===0?C(t,n[0]):C(t,n,l)}function zt(t,e){const a=Array.from(t.shape),r=a.length;let l;e===void 0?l=Array.from({length:r},(f,o)=>o):typeof e=="number"?l=[e<0?r+e:e]:l=e.map(f=>f<0?r+f:f);const n=l.map(f=>-Math.floor(a[f]/2));return r===1&&l.length===1&&l[0]===0?C(t,n[0]):C(t,n,l)}export{U as fft,rt as fft2,kt as fftfreq,ht as fftn,Dt as fftshift,gt as hfft,q as ifft,yt as ifft2,pt as ifftn,zt as ifftshift,St as ihfft,B as irfft,mt as irfft2,wt as irfftn,K as rfft,At as rfft2,Ft as rfftfreq,bt as rfftn};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{Complex as z}from"../complex";const D={threshold:1e3,edgeitems:3,precision:8,linewidth:75,floatmode:"maxprec",suppress:!0,separator:" ",prefix:"",suffix:"",nanstr:"nan",infstr:"inf",sign:"-",legacy:!1};let x={...D};function q(n){x={...x,...n}}function E(){return{...x}}function R(n){let t=null;const e={_savedOptions:null,enter(){t={...x},e._savedOptions=t,x={...x,...n}},exit(){t&&(x=t,t=null,e._savedOptions=null)},apply(r){e.enter();try{return r()}finally{e.exit()}}};return e}function C(n,t=null,e=!0,r=!0,a="k",o="-",g=null,f=null,h=null){const u=t??x.precision;if(!Number.isFinite(n))return Number.isNaN(n)?x.nanstr:(n>0?"":"-")+x.infstr;let s;if(e&&t===null?(s=n.toString(),r&&!s.includes(".")&&!s.includes("e")&&(s+=".0")):s=n.toFixed(u),h!==null){const p=s.indexOf(".");if(p!==-1){const i=s.length-p-1;i<h&&(s+="0".repeat(h-i))}else r&&(s+="."+"0".repeat(h))}if(a!=="k"&&s.includes(".")){if(a==="."||a==="0"||a==="-"){let p=s.length;for(;p>0&&s[p-1]==="0";)p--;s=s.slice(0,p)}a==="0"&&s.endsWith(".")&&(s+="0"),a==="-"&&s.endsWith(".")&&(s=s.slice(0,-1))}if(n>=0&&!Object.is(n,-0)&&(o==="+"?s="+"+s:o===" "&&(s=" "+s)),g!==null&&s.length<g&&(s=" ".repeat(g-s.length)+s),f!==null){const p=s.indexOf(".");if(p!==-1){const i=s.length-p-1;i<f&&(s+="0".repeat(f-i))}}return s}function w(n,t=null,e=!0,r="k",a="-",o=null,g=2,f=null){const h=t??x.precision;if(!Number.isFinite(n))return Number.isNaN(n)?x.nanstr:(n>0?"":"-")+x.infstr;let u=n.toExponential(h);if(f!==null){const l=u.indexOf("e"),d=u.slice(0,l),S=u.slice(l),N=d.indexOf(".");if(N!==-1){const c=d.length-N-1;c<f&&(u=d+"0".repeat(f-c)+S)}}if(r!=="k"){const l=u.indexOf("e");let d=u.slice(0,l);const S=u.slice(l);d.includes(".")&&((r==="."||r==="0"||r==="-")&&(d=d.replace(/0+$/,"")),r==="0"&&d.endsWith(".")&&(d+="0"),r==="-"&&(d=d.replace(/\.$/,""))),u=d+S}const s=u.indexOf("e"),p=u.slice(0,s);let i=u.slice(s+1);const m=i[0]==="-"?"-":"+";let b=i.replace(/^[+-]/,"");for(;b.length<g;)b="0"+b;return u=p+"e"+m+b,n>=0&&!Object.is(n,-0)&&(a==="+"?u="+"+u:a===" "&&(u=" "+u)),o!==null&&u.length<o&&(u=" ".repeat(o-u.length)+u),u}function U(n,t=2,e=0){if(t<2||t>36)throw new Error("base must be between 2 and 36");n=Math.trunc(n);let r;if(n<0?r="-"+Math.abs(n).toString(t).toUpperCase():r=n.toString(t).toUpperCase(),e>0){const a="0".repeat(e);r.startsWith("-")?r="-"+a+r.slice(1):r=a+r}return r}function B(n,t=null){if(n=Math.trunc(n),t!==null&&n<0){if(n=Math.pow(2,t)+n,n<0)throw new Error("width too small for negative number");let a=n.toString(2);return a.length<t&&(a="0".repeat(t-a.length)+a),a}let e;return n<0?e="-"+Math.abs(n).toString(2):e=n.toString(2),t!==null&&e.length<t&&(e="0".repeat(t-e.length)+e),e}function P(n,t,e){if(n instanceof z){const r=P(n.re,"float64",e),a=P(Math.abs(n.im),"float64",e),o=n.im>=0?"+":"-";return`${r}${o}${a}j`}return typeof n=="boolean"?n?" True":"False":typeof n=="bigint"?n.toString():Number.isFinite(n)?t==="float32"||t==="float64"?e.suppress&&Math.abs(n)<1e-10&&n!==0?"0.":C(n,e.precision,!1,!0,"k",e.sign):n.toString():Number.isNaN(n)?e.nanstr:(n>0?"":"-")+e.infstr}function $(n,t){const e=[],r=n.shape,a=r.length,o=n.strides;function g(f,h){if(h===a){let i=0;for(let m=0;m<a;m++)i+=f[m]*o[m];e.push(n.iget(i));return}const u=r[h];if(r.reduce((i,m)=>i*m,1)>t.threshold&&u>2*t.edgeitems){for(let i=0;i<t.edgeitems;i++)f[h]=i,g(f,h+1);for(let i=u-t.edgeitems;i<u;i++)f[h]=i,g(f,h+1)}else for(let i=0;i<u;i++)f[h]=i,g(f,h+1)}return a>0?g(new Array(a).fill(0),0):e.push(n.iget(0)),e}function T(n,t){return n<0||Object.is(n,-0)?"-"+Math.abs(n).toString()+".":t==="+"?"+"+n.toString()+".":t===" "?" "+n.toString()+".":n.toString()+"."}function M(n,t,e){const r=n.indexOf(".");if(r===-1)return n.padStart(t+(e>0?1+e:0));const a=n.slice(0,r),o=n.slice(r+1),g=a.padStart(t),f=e>0?o.padEnd(e):o;return g+"."+f}function W(n){let t=0,e=0;for(const r of n){const a=r.indexOf(".");a===-1?t=Math.max(t,r.length):(t=Math.max(t,a),e=Math.max(e,r.length-a-1))}return{maxLeft:t,maxRight:e}}function A(n,t){const e=n.filter(i=>Number.isFinite(i));if(e.length===0){const i=n.map(b=>Number.isNaN(b)?t.nanstr:(b>0?"":"-")+t.infstr),m=i.length>0?Math.max(...i.map(b=>b.length)):1;return b=>Number.isNaN(b)?t.nanstr.padStart(m):Number.isFinite(b)?b.toString().padStart(m):((b>0?"":"-")+t.infstr).padStart(m)}const r=t.suppress?e.map(i=>Math.abs(i)<1e-10&&i!==0?0:i):e,a=r.map(Math.abs).filter(i=>i>0),o=a.length>0?Math.max(...a):0,g=a.length>0?Math.min(...a):0;if(o>=1e16||g>0&&g<1e-4||g>0&&o/g>1e3){const i=r.map(c=>w(c,t.precision,!1,".",t.sign));let m=0;for(const c of i){const
|
|
1
|
+
import{Complex as z}from"../complex.js";const D={threshold:1e3,edgeitems:3,precision:8,linewidth:75,floatmode:"maxprec",suppress:!0,separator:" ",prefix:"",suffix:"",nanstr:"nan",infstr:"inf",sign:"-",legacy:!1};let x={...D};function q(n){x={...x,...n}}function E(){return{...x}}function R(n){let t=null;const e={_savedOptions:null,enter(){t={...x},e._savedOptions=t,x={...x,...n}},exit(){t&&(x=t,t=null,e._savedOptions=null)},apply(r){e.enter();try{return r()}finally{e.exit()}}};return e}function C(n,t=null,e=!0,r=!0,a="k",o="-",g=null,f=null,h=null){const u=t??x.precision;if(!Number.isFinite(n))return Number.isNaN(n)?x.nanstr:(n>0?"":"-")+x.infstr;let s;if(e&&t===null?(s=n.toString(),r&&!s.includes(".")&&!s.includes("e")&&(s+=".0")):s=n.toFixed(u),h!==null){const p=s.indexOf(".");if(p!==-1){const i=s.length-p-1;i<h&&(s+="0".repeat(h-i))}else r&&(s+="."+"0".repeat(h))}if(a!=="k"&&s.includes(".")){if(a==="."||a==="0"||a==="-"){let p=s.length;for(;p>0&&s[p-1]==="0";)p--;s=s.slice(0,p)}a==="0"&&s.endsWith(".")&&(s+="0"),a==="-"&&s.endsWith(".")&&(s=s.slice(0,-1))}if(n>=0&&!Object.is(n,-0)&&(o==="+"?s="+"+s:o===" "&&(s=" "+s)),g!==null&&s.length<g&&(s=" ".repeat(g-s.length)+s),f!==null){const p=s.indexOf(".");if(p!==-1){const i=s.length-p-1;i<f&&(s+="0".repeat(f-i))}}return s}function w(n,t=null,e=!0,r="k",a="-",o=null,g=2,f=null){const h=t??x.precision;if(!Number.isFinite(n))return Number.isNaN(n)?x.nanstr:(n>0?"":"-")+x.infstr;let u=n.toExponential(h);if(f!==null){const l=u.indexOf("e"),d=u.slice(0,l),S=u.slice(l),N=d.indexOf(".");if(N!==-1){const c=d.length-N-1;c<f&&(u=d+"0".repeat(f-c)+S)}}if(r!=="k"){const l=u.indexOf("e");let d=u.slice(0,l);const S=u.slice(l);d.includes(".")&&((r==="."||r==="0"||r==="-")&&(d=d.replace(/0+$/,"")),r==="0"&&d.endsWith(".")&&(d+="0"),r==="-"&&(d=d.replace(/\.$/,""))),u=d+S}const s=u.indexOf("e"),p=u.slice(0,s);let i=u.slice(s+1);const m=i[0]==="-"?"-":"+";let b=i.replace(/^[+-]/,"");for(;b.length<g;)b="0"+b;return u=p+"e"+m+b,n>=0&&!Object.is(n,-0)&&(a==="+"?u="+"+u:a===" "&&(u=" "+u)),o!==null&&u.length<o&&(u=" ".repeat(o-u.length)+u),u}function U(n,t=2,e=0){if(t<2||t>36)throw new Error("base must be between 2 and 36");n=Math.trunc(n);let r;if(n<0?r="-"+Math.abs(n).toString(t).toUpperCase():r=n.toString(t).toUpperCase(),e>0){const a="0".repeat(e);r.startsWith("-")?r="-"+a+r.slice(1):r=a+r}return r}function B(n,t=null){if(n=Math.trunc(n),t!==null&&n<0){if(n=Math.pow(2,t)+n,n<0)throw new Error("width too small for negative number");let a=n.toString(2);return a.length<t&&(a="0".repeat(t-a.length)+a),a}let e;return n<0?e="-"+Math.abs(n).toString(2):e=n.toString(2),t!==null&&e.length<t&&(e="0".repeat(t-e.length)+e),e}function P(n,t,e){if(n instanceof z){const r=P(n.re,"float64",e),a=P(Math.abs(n.im),"float64",e),o=n.im>=0?"+":"-";return`${r}${o}${a}j`}return typeof n=="boolean"?n?" True":"False":typeof n=="bigint"?n.toString():Number.isFinite(n)?t==="float16"||t==="float32"||t==="float64"?e.suppress&&Math.abs(n)<1e-10&&n!==0?"0.":C(n,e.precision,!1,!0,"k",e.sign):n.toString():Number.isNaN(n)?e.nanstr:(n>0?"":"-")+e.infstr}function $(n,t){const e=[],r=n.shape,a=r.length,o=n.strides;function g(f,h){if(h===a){let i=0;for(let m=0;m<a;m++)i+=f[m]*o[m];e.push(n.iget(i));return}const u=r[h];if(r.reduce((i,m)=>i*m,1)>t.threshold&&u>2*t.edgeitems){for(let i=0;i<t.edgeitems;i++)f[h]=i,g(f,h+1);for(let i=u-t.edgeitems;i<u;i++)f[h]=i,g(f,h+1)}else for(let i=0;i<u;i++)f[h]=i,g(f,h+1)}return a>0?g(new Array(a).fill(0),0):e.push(n.iget(0)),e}function T(n,t){return n<0||Object.is(n,-0)?"-"+Math.abs(n).toString()+".":t==="+"?"+"+n.toString()+".":t===" "?" "+n.toString()+".":n.toString()+"."}function M(n,t,e){const r=n.indexOf(".");if(r===-1)return n.padStart(t+(e>0?1+e:0));const a=n.slice(0,r),o=n.slice(r+1),g=a.padStart(t),f=e>0?o.padEnd(e):o;return g+"."+f}function W(n){let t=0,e=0;for(const r of n){const a=r.indexOf(".");a===-1?t=Math.max(t,r.length):(t=Math.max(t,a),e=Math.max(e,r.length-a-1))}return{maxLeft:t,maxRight:e}}function A(n,t){const e=n.filter(i=>Number.isFinite(i));if(e.length===0){const i=n.map(b=>Number.isNaN(b)?t.nanstr:(b>0?"":"-")+t.infstr),m=i.length>0?Math.max(...i.map(b=>b.length)):1;return b=>Number.isNaN(b)?t.nanstr.padStart(m):Number.isFinite(b)?b.toString().padStart(m):((b>0?"":"-")+t.infstr).padStart(m)}const r=t.suppress?e.map(i=>Math.abs(i)<1e-10&&i!==0?0:i):e,a=r.map(Math.abs).filter(i=>i>0),o=a.length>0?Math.max(...a):0,g=a.length>0?Math.min(...a):0;if(o>=1e16||g>0&&g<1e-4||g>0&&o/g>1e3){const i=r.map(c=>w(c,t.precision,!1,".",t.sign));let m=0;for(const c of i){const O=c.indexOf("e"),y=O!==-1?c.slice(0,O):c,F=y.indexOf(".");F!==-1&&(m=Math.max(m,y.length-F-1))}const b=Math.max(m,0),l=Math.max(b,1),d=b===0?".":"k",S=r.map(c=>w(c,l,!1,d,t.sign));for(const c of n)Number.isFinite(c)||S.push(Number.isNaN(c)?t.nanstr:(c>0?"":"-")+t.infstr);const N=Math.max(...S.map(c=>c.length));return c=>(t.suppress&&Math.abs(c)<1e-10&&c!==0&&Number.isFinite(c)&&(c=0),Number.isNaN(c)?t.nanstr.padStart(N):Number.isFinite(c)?w(c,l,!1,d,t.sign).padStart(N):((c>0?"":"-")+t.infstr).padStart(N))}if(r.every(i=>Number.isInteger(i))){const i=r.map(l=>T(l,t.sign));for(const l of n)Number.isFinite(l)||i.push(Number.isNaN(l)?t.nanstr:(l>0?"":"-")+t.infstr);const{maxLeft:m,maxRight:b}=W(i);return l=>(t.suppress&&Math.abs(l)<1e-10&&l!==0&&Number.isFinite(l)&&(l=0),Number.isNaN(l)?M(t.nanstr,m,b):Number.isFinite(l)?M(T(l,t.sign),m,b):M((l>0?"":"-")+t.infstr,m,b))}const u=r.map(i=>C(i,t.precision,!1,!0,".",t.sign));for(const i of n)Number.isFinite(i)||u.push(Number.isNaN(i)?t.nanstr:(i>0?"":"-")+t.infstr);const{maxLeft:s,maxRight:p}=W(u);return i=>(t.suppress&&Math.abs(i)<1e-10&&i!==0&&Number.isFinite(i)&&(i=0),Number.isNaN(i)?M(t.nanstr,s,p):Number.isFinite(i)?M(C(i,t.precision,!1,!0,".",t.sign),s,p):M((i>0?"":"-")+t.infstr,s,p))}function j(n,t){const e=n.dtype,r=$(n,t);if(r.length===0)return o=>P(o,e,t);if(e==="bool")return o=>o?" True":"False";if(e==="int64"||e==="uint64"){const o=r.map(f=>f.toString()),g=Math.max(...o.map(f=>f.length));return f=>f.toString().padStart(g)}if(e.startsWith("int")||e.startsWith("uint")){const o=r.map(f=>f.toString()),g=Math.max(...o.map(f=>f.length));return f=>f.toString().padStart(g)}if(e==="complex64"||e==="complex128"){const o=r.map(u=>u.re),g=r.map(u=>Math.abs(u.im)),f=A(o,t),h=A(g,t);return u=>{const s=u,p=f(s.re),i=h(Math.abs(s.im)),m=s.im>=0?"+":"-";return`${p}${m}${i}j`}}const a=A(r,t);return o=>a(o)}function I(n,t,e,r,a,o){const g=n.shape,f=g.length;if(e===f){let l=0;const d=n.strides;for(let N=0;N<f;N++)l+=t[N]*d[N];const S=n.iget(l);return a(S)}const h=g[e],u=r.threshold,s=r.edgeitems,i=g.reduce((l,d)=>l*d,1)>u&&h>2*s,m=[],b=[...t];if(i){for(let l=0;l<s;l++)b[e]=l,m.push(I(n,b,e+1,r,a,o+1));m.push("...");for(let l=h-s;l<h;l++)b[e]=l,m.push(I(n,b,e+1,r,a,o+1))}else for(let l=0;l<h;l++)b[e]=l,m.push(I(n,b,e+1,r,a,o+1));if(e===f-1){const l="["+m.join(r.separator)+"]";if(o+l.length<r.linewidth)return l;const d=" ".repeat(o+1),S=r.linewidth-o-1,N=[];let c="";for(let O=0;O<m.length;O++){const y=m[O];if(c==="")c=y;else{const F=c+r.separator+y;F.length<S?c=F:(N.push(c),c=y)}}return c&&N.push(c),"["+N.join(`
|
|
2
2
|
`+d)+"]"}else{const l=" ".repeat(o+1),d=f-e-2,S=`
|
|
3
3
|
`+`
|
|
4
4
|
`.repeat(Math.max(0,d))+l;return"["+m.join(S)+"]"}}function k(n,t=null,e=null,r=null,a=" ",o="",g="",f=null,h=null,u=null,s=null){const p={...x,linewidth:t??x.linewidth,precision:e??x.precision,suppress:r??x.suppress,separator:a,prefix:o,suffix:g,threshold:f??x.threshold,edgeitems:h??x.edgeitems,floatmode:u??x.floatmode,sign:s??x.sign};if(n.ndim===0){const l=n.iget(0);return P(l,n.dtype,p)}const i=j(n,p),m=p.prefix.length,b=I(n,new Array(n.ndim).fill(0),0,p,i,m);return p.prefix+b+p.suffix}function G(n,t=null,e=null,r=null){let o="array("+k(n,t,e,r,", ");return n.dtype!=="float64"&&(o+=`, dtype='${n.dtype}'`),o+=")",o}function H(n,t=null,e=null,r=null){return k(n,t,e,r)}export{k as array2string,G as array_repr,H as array_str,U as base_repr,B as binary_repr,C as format_float_positional,w as format_float_scientific,E as get_printoptions,R as printoptions,q as set_printoptions};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{ArrayStorage as O}from"../storage";import{isBigIntDType as v,isComplexDType as H,promoteDTypes as et}from"../dtype";function
|
|
1
|
+
import{ArrayStorage as O}from"../storage.js";import{isBigIntDType as v,isComplexDType as H,promoteDTypes as et}from"../dtype.js";import{wasmDiff as ot}from"../wasm/diff.js";import{wasmGradient1D as rt}from"../wasm/gradient.js";function ft(e,r=1,g=-1){if(r<0)throw new Error(`order must be non-negative but got ${r}`);if(r===0)return e.copy();const x=Array.from(e.shape),A=x.length,d=g<0?A+g:g;if(d<0||d>=A)throw new Error(`axis ${g} is out of bounds for array of dimension ${A}`);if(x[d]<r+1)throw new Error(`diff requires at least ${r+1} elements along axis ${g}, but got ${x[d]}`);if(r===1&&!H(e.dtype)){const h=ot(e,d);if(h)return h}let p=e;for(let h=0;h<r;h++)p=st(p,d);return p}function st(e,r){const g=Array.from(e.shape),x=g.length,A=g[r],d=[...g];d[r]=A-1;const p=e.dtype,h=H(p),I=v(p)?"float64":p,D=O.zeros(d,I),P=D.data,w=e.strides,N=D.size,y=e.offset;for(let b=0;b<N;b++){let n=b;const u=new Array(x);for(let t=x-1;t>=0;t--)u[t]=n%d[t],n=Math.floor(n/d[t]);const M=[...u],a=[...u];a[r]=M[r]+1;let o=0,s=0;for(let t=0;t<x;t++)o+=M[t]*w[t],s+=a[t]*w[t];if(h){const t=e.data,c=t[(y+o)*2],m=t[(y+o)*2+1],l=t[(y+s)*2],i=t[(y+s)*2+1];P[b*2]=l-c,P[b*2+1]=i-m}else{const t=(v(p),Number(e.data[y+o])),c=(v(p),Number(e.data[y+s]));P[b]=c-t}}return D}function dt(e,r=null,g=null){const x=e.size,A=e.dtype,d=H(A),p=v(A)?"float64":A,h=Math.max(0,x-1),I=g?g.length:0,D=r?r.length:0,P=I+h+D,w=O.zeros([P],p),N=w.data;let y=0;if(g)if(d)for(const b of g)N[y*2]=b,N[y*2+1]=0,y++;else for(const b of g)N[y++]=b;if(d)for(let b=0;b<h;b++){const n=e.iget(b),u=e.iget(b+1);N[y*2]=u.re-n.re,N[y*2+1]=u.im-n.im,y++}else for(let b=0;b<h;b++){const n=(v(A),Number(e.iget(b))),u=(v(A),Number(e.iget(b+1)));N[y++]=u-n}if(r)if(d)for(const b of r)N[y*2]=b,N[y*2+1]=0,y++;else for(const b of r)N[y++]=b;return w}function bt(e,r=1,g=null){const A=Array.from(e.shape).length;let d;if(g===null)d=Array.from({length:A},(I,D)=>D);else if(typeof g=="number"){const I=g<0?A+g:g;if(I<0||I>=A)throw new Error(`axis ${g} is out of bounds for array of dimension ${A}`);d=[I]}else d=g.map(I=>{const D=I<0?A+I:I;if(D<0||D>=A)throw new Error(`axis ${I} is out of bounds for array of dimension ${A}`);return D});let p;if(typeof r=="number")p=d.map(()=>r);else{if(r.length!==d.length)throw new Error("Number of spacings must match number of axes");p=r}if(d.length===1&&e.shape.length===1&&!H(e.dtype)&&typeof r=="number"){const I=rt(e,p[0]);if(I)return I}const h=[];for(let I=0;I<d.length;I++)h.push(nt(e,d[I],p[I]));return h.length===1?h[0]:h}function nt(e,r,g){const x=Array.from(e.shape),A=x.length,d=x[r];if(d<2)throw new Error(`Shape of array along axis ${r} must be at least 2, but got ${d}`);const p=e.dtype,h=H(p),I=v(p)?"float64":p==="float32"?"float32":h?p:"float64",D=O.zeros(x,I),P=D.data,w=e.strides,N=g,y=2*N,b=e.size,n=e.offset;for(let u=0;u<b;u++){let M=u;const a=new Array(A);for(let t=A-1;t>=0;t--)a[t]=M%x[t],M=Math.floor(M/x[t]);let o=n;for(let t=0;t<A;t++)o+=a[t]*w[t];const s=a[r];if(h){const t=e.data,c=P;let m,l;if(s===0){const i=[...a];i[r]=1;let f=0;for(let S=0;S<A;S++)f+=i[S]*w[S];const F=t[o*2],R=t[o*2+1],z=t[(n+f)*2],$=t[(n+f)*2+1];m=(z-F)/N,l=($-R)/N}else if(s===d-1){const i=[...a];i[r]=d-2;let f=0;for(let S=0;S<A;S++)f+=i[S]*w[S];const F=t[o*2],R=t[o*2+1],z=t[(n+f)*2],$=t[(n+f)*2+1];m=(F-z)/N,l=(R-$)/N}else{const i=[...a],f=[...a];i[r]=s+1,f[r]=s-1;let F=0,R=0;for(let q=0;q<A;q++)F+=i[q]*w[q],R+=f[q]*w[q];const z=t[(n+F)*2],$=t[(n+F)*2+1],S=t[(n+R)*2],E=t[(n+R)*2+1];m=(z-S)/y,l=($-E)/y}c[u*2]=m,c[u*2+1]=l}else{let t;if(s===0){const c=[...a];c[r]=1;let m=0;for(let f=0;f<A;f++)m+=c[f]*w[f];const l=(v(p),Number(e.data[o]));t=((v(p),Number(e.data[n+m]))-l)/N}else if(s===d-1){const c=[...a];c[r]=d-2;let m=0;for(let f=0;f<A;f++)m+=c[f]*w[f];const l=(v(p),Number(e.data[o])),i=(v(p),Number(e.data[n+m]));t=(l-i)/N}else{const c=[...a],m=[...a];c[r]=s+1,m[r]=s-1;let l=0,i=0;for(let R=0;R<A;R++)l+=c[R]*w[R],i+=m[R]*w[R];const f=(v(p),Number(e.data[n+l])),F=(v(p),Number(e.data[n+i]));t=(f-F)/y}P[u]=t}}return D}function pt(e,r,g=-1,x=-1,A=-1){const d=Array.from(e.shape),p=Array.from(r.shape),h=d.length,I=p.length,D=g<0?h+g:g,P=x<0?I+x:x;if(D<0||D>=h)throw new Error(`axisa ${g} is out of bounds for array of dimension ${h}`);if(P<0||P>=I)throw new Error(`axisb ${x} is out of bounds for array of dimension ${I}`);const w=d[D],N=p[P];if(w!==2&&w!==3)throw new Error(`incompatible dimensions for cross product (dimension must be 2 or 3, got ${w})`);if(N!==2&&N!==3)throw new Error(`incompatible dimensions for cross product (dimension must be 2 or 3, got ${N})`);const y=et(e.dtype,r.dtype),b=H(y),n=(a,o)=>{if(H(a.dtype)){const s=a.data,t=a.offset;return[s[(t+o)*2],s[(t+o)*2+1]]}return[Number(a.iget(o)),0]},u=(a,o,s,t)=>[a*s-o*t,a*t+o*s],M=(a,o,s,t)=>[a-s,o-t];if(h===1&&I===1&&w===3&&N===3){const a=O.zeros([3],y);if(b){const o=a.data,[s,t]=n(e,0),[c,m]=n(e,1),[l,i]=n(e,2),[f,F]=n(r,0),[R,z]=n(r,1),[$,S]=n(r,2),[E,q]=u(c,m,$,S),[C,B]=u(l,i,R,z),[T,J]=M(E,q,C,B),[V,G]=u(l,i,f,F),[j,k]=u(s,t,$,S),[K,L]=M(V,G,j,k),[Q,U]=u(s,t,R,z),[W,X]=u(c,m,f,F),[Y,Z]=M(Q,U,W,X);o[0]=T,o[1]=J,o[2]=K,o[3]=L,o[4]=Y,o[5]=Z}else{const o=a.data,s=Number(e.iget(0)),t=Number(e.iget(1)),c=Number(e.iget(2)),m=Number(r.iget(0)),l=Number(r.iget(1)),i=Number(r.iget(2));o[0]=t*i-c*l,o[1]=c*m-s*i,o[2]=s*l-t*m}return a}if(h===1&&I===1&&w===2&&N===2){const a=O.zeros([],y);if(b){const o=a.data,[s,t]=n(e,0),[c,m]=n(e,1),[l,i]=n(r,0),[f,F]=n(r,1),[R,z]=u(s,t,f,F),[$,S]=u(c,m,l,i),[E,q]=M(R,z,$,S);o[0]=E,o[1]=q}else{const o=Number(e.iget(0)),s=Number(e.iget(1)),t=Number(r.iget(0)),c=Number(r.iget(1));a.data[0]=o*c-s*t}return a}if(h===1&&I===1){if(w===2&&N===3){const a=O.zeros([3],y);if(b){const o=a.data,[s,t]=n(e,0),[c,m]=n(e,1),[l,i]=n(r,0),[f,F]=n(r,1),[R,z]=n(r,2),[$,S]=u(c,m,R,z),[E,q]=u(s,t,R,z),C=-E,B=-q,[T,J]=u(s,t,f,F),[V,G]=u(c,m,l,i),[j,k]=M(T,J,V,G);o[0]=$,o[1]=S,o[2]=C,o[3]=B,o[4]=j,o[5]=k}else{const o=a.data,s=Number(e.iget(0)),t=Number(e.iget(1)),c=Number(r.iget(0)),m=Number(r.iget(1)),l=Number(r.iget(2));o[0]=t*l,o[1]=-s*l,o[2]=s*m-t*c}return a}else if(w===3&&N===2){const a=O.zeros([3],y);if(b){const o=a.data,[s,t]=n(e,0),[c,m]=n(e,1),[l,i]=n(e,2),[f,F]=n(r,0),[R,z]=n(r,1),[$,S]=u(l,i,R,z),E=-$,q=-S,[C,B]=u(l,i,f,F),[T,J]=u(s,t,R,z),[V,G]=u(c,m,f,F),[j,k]=M(T,J,V,G);o[0]=E,o[1]=q,o[2]=C,o[3]=B,o[4]=j,o[5]=k}else{const o=a.data,s=Number(e.iget(0)),t=Number(e.iget(1)),c=Number(e.iget(2)),m=Number(r.iget(0)),l=Number(r.iget(1));o[0]=-c*l,o[1]=c*m,o[2]=s*l-t*m}return a}}if(h===2&&I===2&&D===1&&P===1){const a=d[0];if(p[0]!==a)throw new Error(`Shape mismatch: a has ${a} vectors, b has ${p[0]} vectors`);if(w===3&&N===3){const o=O.zeros([a,3],y);if(b){const s=o.data;for(let t=0;t<a;t++){const[c,m]=n(e,t*3),[l,i]=n(e,t*3+1),[f,F]=n(e,t*3+2),[R,z]=n(r,t*3),[$,S]=n(r,t*3+1),[E,q]=n(r,t*3+2),[C,B]=u(l,i,E,q),[T,J]=u(f,F,$,S),[V,G]=M(C,B,T,J),[j,k]=u(f,F,R,z),[K,L]=u(c,m,E,q),[Q,U]=M(j,k,K,L),[W,X]=u(c,m,$,S),[Y,Z]=u(l,i,R,z),[_,tt]=M(W,X,Y,Z);s[t*3*2]=V,s[t*3*2+1]=G,s[(t*3+1)*2]=Q,s[(t*3+1)*2+1]=U,s[(t*3+2)*2]=_,s[(t*3+2)*2+1]=tt}}else{const s=o.data;for(let t=0;t<a;t++){const c=Number(e.iget(t*3)),m=Number(e.iget(t*3+1)),l=Number(e.iget(t*3+2)),i=Number(r.iget(t*3)),f=Number(r.iget(t*3+1)),F=Number(r.iget(t*3+2));s[t*3]=m*F-l*f,s[t*3+1]=l*i-c*F,s[t*3+2]=c*f-m*i}}return o}if(w===2&&N===2){const o=O.zeros([a],y);if(b){const s=o.data;for(let t=0;t<a;t++){const[c,m]=n(e,t*2),[l,i]=n(e,t*2+1),[f,F]=n(r,t*2),[R,z]=n(r,t*2+1),[$,S]=u(c,m,R,z),[E,q]=u(l,i,f,F),[C,B]=M($,S,E,q);s[t*2]=C,s[t*2+1]=B}}else{const s=o.data;for(let t=0;t<a;t++){const c=Number(e.iget(t*2)),m=Number(e.iget(t*2+1)),l=Number(r.iget(t*2)),i=Number(r.iget(t*2+1));s[t]=c*i-m*l}}return o}}throw new Error(`cross product not implemented for arrays with shapes ${JSON.stringify(d)} and ${JSON.stringify(p)}`)}export{pt as cross,ft as diff,dt as ediff1d,bt as gradient};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{ArrayStorage as z}from"../storage";import{elementwiseUnaryOp as g}from"../internal/compute";import{isComplexDType as F}from"../dtype";function
|
|
1
|
+
import{ArrayStorage as z}from"../storage.js";import{elementwiseUnaryOp as g}from"../internal/compute.js";import{isComplexDType as F}from"../dtype.js";import{wasmSinh as S}from"../wasm/sinh.js";import{wasmCosh as q}from"../wasm/cosh.js";import{wasmTanh as T}from"../wasm/tanh.js";function U(t){const o=t.dtype;if(F(o)){const m=Array.from(t.shape),y=t.size,e=t.data,n=z.zeros(m,o),a=n.data;for(let s=0;s<y;s++){const r=e[s*2],c=e[s*2+1];a[s*2]=Math.sinh(r)*Math.cos(c),a[s*2+1]=Math.cosh(r)*Math.sin(c)}return n}const h=S(t);return h||g(t,Math.sinh,!1)}function j(t){const o=t.dtype;if(F(o)){const m=Array.from(t.shape),y=t.size,e=t.data,n=z.zeros(m,o),a=n.data;for(let s=0;s<y;s++){const r=e[s*2],c=e[s*2+1];a[s*2]=Math.cosh(r)*Math.cos(c),a[s*2+1]=Math.sinh(r)*Math.sin(c)}return n}const h=q(t);return h||g(t,Math.cosh,!1)}function k(t){const o=t.dtype;if(F(o)){const m=Array.from(t.shape),y=t.size,e=t.data,n=z.zeros(m,o),a=n.data;for(let s=0;s<y;s++){const r=e[s*2],c=e[s*2+1],p=Math.cosh(2*r)+Math.cos(2*c);a[s*2]=Math.sinh(2*r)/p,a[s*2+1]=Math.sin(2*c)/p}return n}const h=T(t);return h||g(t,Math.tanh,!1)}function B(t){const o=t.dtype;if(F(o)){const h=Array.from(t.shape),m=t.size,y=t.data,e=z.zeros(h,o),n=e.data;for(let a=0;a<m;a++){const s=y[a*2],r=y[a*2+1],c=s*s-r*r,p=2*s*r,l=c+1,i=p,u=Math.sqrt(l*l+i*i),M=Math.sqrt((u+l)/2),d=(i>=0?1:-1)*Math.sqrt((u-l)/2),A=s+M,f=r+d,D=Math.sqrt(A*A+f*f);n[a*2]=Math.log(D),n[a*2+1]=Math.atan2(f,A)}return e}return g(t,Math.asinh,!1)}function E(t){const o=t.dtype;if(F(o)){const h=Array.from(t.shape),m=t.size,y=t.data,e=z.zeros(h,o),n=e.data;for(let a=0;a<m;a++){const s=y[a*2],r=y[a*2+1],c=s*s-r*r,p=2*s*r,l=c-1,i=p,u=Math.sqrt(l*l+i*i),M=Math.sqrt((u+l)/2),d=(i>=0?1:-1)*Math.sqrt((u-l)/2),A=s+M,f=r+d,D=Math.sqrt(A*A+f*f);let I=Math.log(D),R=Math.atan2(f,A);Math.abs(r)<1e-15&&s<1&&(R=-R),n[a*2]=I,n[a*2+1]=R}return e}return g(t,Math.acosh,!1)}function G(t){const o=t.dtype;if(F(o)){const h=Array.from(t.shape),m=t.size,y=t.data,e=z.zeros(h,o),n=e.data;for(let a=0;a<m;a++){const s=y[a*2],r=y[a*2+1],c=1+s,p=r,l=1-s,i=-r,u=l*l+i*i,M=(c*l+p*i)/u,d=(p*l-c*i)/u,A=Math.sqrt(M*M+d*d),f=Math.log(A),D=Math.atan2(d,M);n[a*2]=f/2,n[a*2+1]=D/2}return e}return g(t,Math.atanh,!1)}export{E as arccosh,B as arcsinh,G as arctanh,j as cosh,U as sinh,k as tanh};
|
|
@@ -1,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.js";import{promoteDTypes as q,isComplexDType as T,isBigIntDType as _,hasFloat16 as tt,getTypedArrayConstructor as ut}from"../dtype.js";import{Complex as $}from"../complex.js";import{wasmMatmul as Y}from"../wasm/matmul.js";import{wasmInner as vt}from"../wasm/inner.js";import{wasmDot1D as it}from"../wasm/dot.js";import{wasmMatvec as mt}from"../wasm/matvec.js";import{wasmVecmat as ft}from"../wasm/vecmat.js";import{wasmOuter as $t}from"../wasm/outer.js";import{wasmVecdot as zt}from"../wasm/vecdot.js";import{wasmVdotComplex as Mt}from"../wasm/vdot.js";import{wasmKron as Ct}from"../wasm/kron.js";import{wasmCross as Et}from"../wasm/cross.js";import{wasmQr as Ft}from"../wasm/qr.js";import{wasmCholesky as jt,wasmCholeskyF32 as Vt}from"../wasm/cholesky.js";import{wasmSvd as Bt}from"../wasm/svd.js";import*as R from"./shape.js";const Rt=new Int32Array(1),kt=new Uint32Array(1),qt=new Int16Array(1),Tt=new Uint16Array(1),_t=new Int8Array(1),Ot=new Uint8Array(1),Ut={int32:Rt,uint32:kt,int16:qt,uint16:Tt,int8:_t,uint8:Ot};function L(t){return Ut[t]??null}function J(t,e){if(t instanceof $||e instanceof $){const g=t instanceof $?t:new $(Number(t),0),f=e instanceof $?e:new $(Number(e),0);return g.mul(f)}return typeof t=="bigint"&&typeof e=="bigint"?Number(t*e):Number(t)*Number(e)}function Lt(t,e,g,f,l,u,p,d,b){for(let c=0;c<g;c++)for(let s=0;s<u;s++)for(let i=0;i<p;i++){let n=0;for(let a=0;a<d;a++)n+=t[e+c*d+a]*f[l+s*d*p+a*p+i];b[c*u*p+s*p+i]=n}}function Pt(t,e,g,f,l,u,p,d,b,c){for(let s=0;s<g;s++)for(let i=0;i<p;i++){let n=0;for(let r=0;r<b;r++){const o=f===1?r:s*b+r,m=d===1?r:i*b+r;n+=t[e+o]*l[u+m]}const a=g===1?i:s*p+i;c[a]=n}}function Jt(t,e,g,f,l,u,p,d,b,c,s,i){for(let r=0;r<g*f;r++)s[r]=0;const n=t==="transpose",a=e==="transpose";if(!n&&!a)for(let r=0;r<g;r++)for(let o=0;o<f;o++){let m=0;for(let y=0;y<l;y++)m+=(p[r*d+y]??0)*(b[y*c+o]??0);s[r*i+o]=u*m}else if(n&&!a)for(let r=0;r<g;r++)for(let o=0;o<f;o++){let m=0;for(let y=0;y<l;y++)m+=(p[y*d+r]??0)*(b[y*c+o]??0);s[r*i+o]=u*m}else if(!n&&a)for(let r=0;r<g;r++)for(let o=0;o<f;o++){let m=0;for(let y=0;y<l;y++)m+=(p[r*d+y]??0)*(b[o*c+y]??0);s[r*i+o]=u*m}else for(let r=0;r<g;r++)for(let o=0;o<f;o++){let m=0;for(let y=0;y<l;y++)m+=(p[y*d+r]??0)*(b[o*c+y]??0);s[r*i+o]=u*m}}function Z(t,e){const g=t.ndim,f=e.ndim,l=T(t.dtype)||T(e.dtype);if(g===0||f===0){const u=g===0?t.get():null,p=f===0?e.get():null;if(g===0&&f===0)return J(u,p);if(g===0){const d=q(t.dtype,e.dtype),b=z.zeros([...e.shape],d),c=(s,i)=>{const n=new Array(i.length);let a=s;for(let r=i.length-1;r>=0;r--)n[r]=a%i[r],a=Math.floor(a/i[r]);return n};for(let s=0;s<e.size;s++){const i=c(s,e.shape),n=e.get(...i);b.set(i,J(u,n))}return b}else{const d=q(t.dtype,e.dtype),b=z.zeros([...t.shape],d),c=(s,i)=>{const n=new Array(i.length);let a=s;for(let r=i.length-1;r>=0;r--)n[r]=a%i[r],a=Math.floor(a/i[r]);return n};for(let s=0;s<t.size;s++){const i=c(s,t.shape),n=t.get(...i);b.set(i,J(n,p))}return b}}if(g===1&&f===1){if(t.shape[0]!==e.shape[0])throw new Error(`dot: incompatible shapes (${t.shape[0]},) and (${e.shape[0]},)`);const u=it(t,e);if(u!==null)return u;const p=t.shape[0];if(l){let s=0,i=0;for(let n=0;n<p;n++){const a=t.get(n),r=e.get(n),o=J(a,r);o instanceof $?(s+=o.re,i+=o.im):s+=o}return new $(s,i)}const d=q(t.dtype,e.dtype),b=L(d);if(b){b[0]=0;for(let s=0;s<p;s++)b[0]+=Number(t.get(s))*Number(e.get(s));return b[0]}if(d==="float16"&&tt){const s=new Float16Array(1);s[0]=0;for(let i=0;i<p;i++)s[0]+=Number(t.get(i))*Number(e.get(i));return Number(s[0])}if(d==="float32"){const s=new Float32Array(1);s[0]=0;for(let i=0;i<p;i++)s[0]+=Number(t.get(i))*Number(e.get(i));return s[0]}let c=0;for(let s=0;s<p;s++){const i=t.get(s),n=e.get(s);typeof i=="bigint"&&typeof n=="bigint"?c=Number(c)+Number(i*n):c+=Number(i)*Number(n)}return c}if(g===2&&f===2)return X(t,e);if(g===2&&f===1){const[u,p]=t.shape,d=e.shape[0];if(p!==d)throw new Error(`dot: incompatible shapes (${u},${p}) and (${d},)`);const b=mt(t,e);if(b)return b;const c=q(t.dtype,e.dtype),s=z.zeros([u],c);if(l)for(let i=0;i<u;i++){let n=0,a=0;for(let r=0;r<p;r++){const o=t.get(i,r),m=e.get(r),y=o instanceof $?o:new $(Number(o),0),w=m instanceof $?m:new $(Number(m),0);n+=y.re*w.re-y.im*w.im,a+=y.re*w.im+y.im*w.re}s.set([i],new $(n,a))}else{const i=L(c);for(let n=0;n<u;n++)if(i){i[0]=0;for(let a=0;a<p;a++)i[0]+=Number(t.get(n,a))*Number(e.get(a));s.set([n],i[0])}else{let a=0;for(let r=0;r<p;r++){const o=t.get(n,r),m=e.get(r);typeof o=="bigint"&&typeof m=="bigint"?a=Number(a)+Number(o*m):a+=Number(o)*Number(m)}s.set([n],a)}}return s}if(g===1&&f===2){const u=t.shape[0],[p,d]=e.shape;if(u!==p)throw new Error(`dot: incompatible shapes (${u},) and (${p},${d})`);const b=ft(t,e);if(b)return b;const c=q(t.dtype,e.dtype),s=z.zeros([d],c);if(l)for(let i=0;i<d;i++){let n=0,a=0;for(let r=0;r<u;r++){const o=t.get(r),m=e.get(r,i),y=o instanceof $?o:new $(Number(o),0),w=m instanceof $?m:new $(Number(m),0);n+=y.re*w.re-y.im*w.im,a+=y.re*w.im+y.im*w.re}s.set([i],new $(n,a))}else{const i=L(c);for(let n=0;n<d;n++)if(i){i[0]=0;for(let a=0;a<u;a++)i[0]+=Number(t.get(a))*Number(e.get(a,n));s.set([n],i[0])}else{let a=0;for(let r=0;r<u;r++){const o=t.get(r),m=e.get(r,n);typeof o=="bigint"&&typeof m=="bigint"?a=Number(a)+Number(o*m):a+=Number(o)*Number(m)}s.set([n],a)}}return s}if(g>2&&f===1){const u=t.shape[g-1],p=e.shape[0];if(u!==p)throw new Error(`dot: incompatible shapes ${JSON.stringify(t.shape)} and (${p},)`);const d=[...t.shape.slice(0,-1)],b=q(t.dtype,e.dtype),c=z.zeros(d,b),s=d.reduce((i,n)=>i*n,1);if(l)for(let i=0;i<s;i++){let n=0,a=0,r=i;const o=[];for(let m=d.length-1;m>=0;m--)o[m]=r%d[m],r=Math.floor(r/d[m]);for(let m=0;m<u;m++){const y=[...o,m],w=t.get(...y),h=e.get(m),A=w instanceof $?w:new $(Number(w),0),N=h instanceof $?h:new $(Number(h),0);n+=A.re*N.re-A.im*N.im,a+=A.re*N.im+A.im*N.re}c.set(o,new $(n,a))}else{const i=L(b);for(let n=0;n<s;n++){let a=n;const r=[];for(let o=d.length-1;o>=0;o--)r[o]=a%d[o],a=Math.floor(a/d[o]);if(i){i[0]=0;for(let o=0;o<u;o++){const m=[...r,o];i[0]+=Number(t.get(...m))*Number(e.get(o))}c.set(r,i[0])}else{let o=0;for(let m=0;m<u;m++){const y=[...r,m],w=t.get(...y),h=e.get(m);typeof w=="bigint"&&typeof h=="bigint"?o=Number(o)+Number(w*h):o+=Number(w)*Number(h)}c.set(r,o)}}}return c}if(g===1&&f>2){const u=t.shape[0],p=1,d=e.shape[p];if(u!==d)throw new Error(`dot: incompatible shapes (${u},) and ${JSON.stringify(e.shape)}`);const b=[...e.shape.slice(0,p),...e.shape.slice(p+1)],c=q(t.dtype,e.dtype),s=z.zeros(b,c),i=b.reduce((n,a)=>n*a,1);if(l)for(let n=0;n<i;n++){let a=n;const r=[];for(let h=b.length-1;h>=0;h--)r[h]=a%b[h],a=Math.floor(a/b[h]);const o=r.slice(0,p),m=r.slice(p);let y=0,w=0;for(let h=0;h<u;h++){const A=t.get(h),N=[...o,h,...m],I=e.get(...N),S=A instanceof $?A:new $(Number(A),0),x=I instanceof $?I:new $(Number(I),0);y+=S.re*x.re-S.im*x.im,w+=S.re*x.im+S.im*x.re}s.set(r,new $(y,w))}else{const n=L(c);for(let a=0;a<i;a++){let r=a;const o=[];for(let w=b.length-1;w>=0;w--)o[w]=r%b[w],r=Math.floor(r/b[w]);const m=o.slice(0,p),y=o.slice(p);if(n){n[0]=0;for(let w=0;w<u;w++){const h=[...m,w,...y];n[0]+=Number(t.get(w))*Number(e.get(...h))}s.set(o,n[0])}else{let w=0;for(let h=0;h<u;h++){const A=t.get(h),N=[...m,h,...y],I=e.get(...N);typeof A=="bigint"&&typeof I=="bigint"?w=Number(w)+Number(A*I):w+=Number(A)*Number(I)}s.set(o,w)}}}return s}if(g>=2&&f>=2&&!(g===2&&f===2)){const u=t.shape[g-1],p=e.shape[f-2];if(u!==p)throw new Error(`dot: incompatible shapes ${JSON.stringify(t.shape)} and ${JSON.stringify(e.shape)}`);const d=[...t.shape.slice(0,-1),...e.shape.slice(0,-2),e.shape[f-1]],b=q(t.dtype,e.dtype),c=z.zeros(d,b),s=t.shape.slice(0,-1).reduce((r,o)=>r*o,1),i=e.shape.slice(0,-2).reduce((r,o)=>r*o,1),n=e.shape[f-1],a=u;if(l)for(let r=0;r<s;r++)for(let o=0;o<i;o++)for(let m=0;m<n;m++){let y=0,w=0;for(let N=0;N<a;N++){const I=[];let S=r;for(let F=t.shape.length-2;F>=0;F--)I.unshift(S%t.shape[F]),S=Math.floor(S/t.shape[F]);I.push(N);const x=t.get(...I),D=[];let v=o;for(let F=e.shape.length-3;F>=0;F--)D.unshift(v%e.shape[F]),v=Math.floor(v/e.shape[F]);D.push(N,m);const M=e.get(...D),C=x instanceof $?x:new $(Number(x),0),E=M instanceof $?M:new $(Number(M),0);y+=C.re*E.re-C.im*E.im,w+=C.re*E.im+C.im*E.re}const h=r*i*n+o*n+m,A=c.data;A[h*2]=y,A[h*2+1]=w}else if(t.isCContiguous&&e.isCContiguous&&!_(t.dtype)&&!_(e.dtype)&&!L(b))Lt(t.data,t.offset,s,e.data,e.offset,i,n,a,c.data);else{const r=L(b);for(let o=0;o<s;o++)for(let m=0;m<i;m++)for(let y=0;y<n;y++){const w=o*i*n+m*n+y;if(r){r[0]=0;for(let h=0;h<a;h++){const A=o*a+h,N=m*a*n+h*n+y;r[0]+=Number(t.iget(A))*Number(e.iget(N))}c.data[w]=r[0]}else{let h=0;for(let A=0;A<a;A++){const N=o*a+A,I=m*a*n+A*n+y,S=t.iget(N),x=e.iget(I);typeof S=="bigint"&&typeof x=="bigint"?h=Number(h)+Number(S*x):h+=Number(S)*Number(x)}c.data[w]=h}}}return c}throw new Error(`dot: unexpected combination of dimensions ${g}D \xB7 ${f}D`)}function G(t,e){const[g=0,f=0]=t.shape,[l=0,u=0]=e.shape;if(f!==l)throw new Error(`matmul shape mismatch: (${g},${f}) @ (${l},${u})`);const p=q(t.dtype,e.dtype);if(T(p)){const I=z.zeros([g,u],p),S=I.data;for(let x=0;x<g;x++)for(let D=0;D<u;D++){let v=0,M=0;for(let E=0;E<f;E++){const F=t.iget(x*f+E),j=e.iget(E*u+D);v+=F.re*j.re-F.im*j.im,M+=F.re*j.im+F.im*j.re}const C=x*u+D;S[C*2]=v,S[C*2+1]=M}return I}if(p.startsWith("int")||p.startsWith("uint")||p==="bool"){const I=z.zeros([g,u],p),S=I.data,x=t.offset,D=e.offset,[v=0,M=0]=t.strides,[C=0,E=0]=e.strides;if(_(p)){const F=t.data,j=e.data,V=S;for(let k=0;k<g;k++)for(let B=0;B<u;B++){let W=0n;for(let U=0;U<f;U++)W+=F[x+k*v+U*M]*j[D+U*C+B*E];V[k*u+B]=W}}else{const F=t.data,j=e.data,V=S;for(let k=0;k<g;k++)for(let B=0;B<u;B++){let W=0;for(let U=0;U<f;U++)W+=F[x+k*v+U*M]*j[D+U*C+B*E];V[k*u+B]=W}}return I}const d=p;if(d!=="float64"&&d!=="float32"&&d!=="float16")throw new Error(`matmul currently only supports float64/float32/float16, got ${d}`);const b=I=>I.dtype==="float64"?I.data:I.dtype==="float32"||I.dtype==="float16"?Float64Array.from(I.data):Float64Array.from(Array.from(I.data).map(Number));let c=b(t),s=b(e);t.offset>0&&(c=c.subarray(t.offset)),e.offset>0&&(s=s.subarray(e.offset));const[i=0,n=0]=t.strides,[a=0,r=0]=e.strides,o=n>i,m=r>a,y=o?"transpose":"no-transpose",w=m?"transpose":"no-transpose";let h,A;o?h=n:h=i,m?A=r:A=a;const N=z.zeros([g,u],"float64");if(Jt(y,w,g,u,f,1,c,h,s,A,N.data,u),d==="float32"||d==="float16"){const I=z.zeros([g,u],d),S=N.data,x=I.data;for(let D=0;D<S.length;D++)x[D]=S[D];return I}return N}function Xt(t,e){const g=Math.max(t.length,e.length),f=new Array(g);for(let l=0;l<g;l++){const u=t[t.length-g+l]??1,p=e[e.length-g+l]??1;if(u!==p&&u!==1&&p!==1)throw new Error(`matmul: cannot broadcast batch shapes ${JSON.stringify(t)} and ${JSON.stringify(e)}`);f[l]=Math.max(u,p)}return f}function et(t,e){const g=new Array(e.length);let f=t;for(let l=e.length-1;l>=0;l--)g[l]=f%e[l],f=Math.floor(f/e[l]);return g}function pt(t,e){const g=e.length;let f=0;for(let l=0;l<g;l++){const u=t.length-g+l,p=u>=0?t[u]:0,d=e[l]===1?0:p;f=f*e[l]+d}return f}function O(t){if(t.isCContiguous&&t.offset===0&&t.dtype==="float64")return t.data;const e=new Float64Array(t.size);for(let g=0;g<t.size;g++)e[g]=Number(t.iget(g));return e}function ht(t,e,g,f){const l=t.ndim,u=g*f,p=T(t.dtype),d=_(t.dtype),b=p?2:1,c=ut(t.dtype),s=new c(u*b);if(t.isCContiguous){const i=(t.offset+e*u)*b;if(d){const n=t.data,a=s;for(let r=0;r<u*b;r++)a[r]=n[i+r]}else{const n=t.data,a=s;for(let r=0;r<u*b;r++)a[r]=n[i+r]}}else{const i=e*u;for(let n=0;n<u;n++){let r=i+n,o=t.offset;for(let m=l-1;m>=0;m--){const y=t.shape[m];o+=r%y*t.strides[m],r=Math.floor(r/y)}if(p){const m=t.data,y=s;y[n*2]=m[o*2],y[n*2+1]=m[o*2+1]}else s[n]=t.data[o]}}return z.fromData(s,[g,f],t.dtype)}function X(t,e){if(t.ndim===1&&e.ndim===1){const C=it(t,e);if(C!==null){const E=q(t.dtype,e.dtype),F=z.zeros([],E);return C instanceof $?(F.data[0]=C.re,F.data[1]=C.im):F.data[0]=C,F}}else if(t.ndim>=2&&e.ndim===1){if(t.ndim===2){const C=mt(t,e);if(C)return C}}else if(t.ndim===1&&e.ndim>=2&&e.ndim===2){const C=ft(t,e);if(C)return C}const g=Y(t,e);if(g)return g;if(t.ndim===0||e.ndim===0)throw new Error("matmul: Input operand does not have enough dimensions (has 0, gufunc core with signature (n?,k),(k,m?)->(n?,m?) requires at least 1-D)");const f=t.ndim===1,l=e.ndim===1,u=f?R.reshape(t,[1,t.shape[0]]):t,p=l?R.reshape(e,[e.shape[0],1]):e,d=u.ndim,b=p.ndim,c=u.shape[d-2],s=u.shape[d-1],i=p.shape[b-2],n=p.shape[b-1];if(s!==i)throw new Error(`matmul: shape mismatch: (...,${c},${s}) @ (...,${i},${n}): inner dimensions must match`);if(d===2&&b===2){const C=G(u,p);return f&&l?R.reshape(C,[]):f?R.reshape(C,[n]):l?R.reshape(C,[c]):C}const a=Array.from(u.shape).slice(0,d-2),r=Array.from(p.shape).slice(0,b-2),o=Xt(a,r),m=o.reduce((C,E)=>C*E,1),y=q(u.dtype,p.dtype),w=[];for(let C=0;C<m;C++){const E=et(C,o),F=pt(E,a),j=pt(E,r),V=ht(u,F,c,s),k=ht(p,j,s,n);w.push(G(V,k))}const h=c*n,A=T(y),N=_(y),I=A?2:1,S=ut(y),x=m*h*I,D=new S(x);for(let C=0;C<m;C++){const F=w[C].data,j=C*h*I;if(N){const V=F,k=D;for(let B=0;B<h;B++)k[j+B]=V[B]}else{const V=F,k=D;for(let B=0;B<h*I;B++)k[j+B]=V[B]}}const v=[...o,c,n],M=z.fromData(D,v,y);return f&&l?R.reshape(M,[...o]):f?R.reshape(M,[...o,n]):l?R.reshape(M,[...o,c]):M}function we(t,e=0,g=0,f=1){if(t.ndim<2)throw new Error(`trace requires at least 2D array, got ${t.ndim}D`);if(t.ndim===2){const a=g<0?t.ndim+g:g,r=f<0?t.ndim+f:f,o=t.shape[a],m=t.shape[r],y=Math.min(o,m)-Math.max(0,e);if(y<=0)return T(t.dtype)?new $(0,0):0;if(T(t.dtype)){let h=0,A=0;for(let N=0;N<y;N++){const I=e>=0?N:N-e,S=e>=0?N+e:N,x=[0,0];x[a]=I,x[r]=S;const D=t.get(...x);h+=D.re,A+=D.im}return new $(h,A)}if(t.dtype==="float16"&&tt){const h=new Float16Array(1);h[0]=0;for(let A=0;A<y;A++){const N=e>=0?A:A-e,I=e>=0?A+e:A,S=[0,0];S[a]=N,S[r]=I,h[0]+=Number(t.get(...S))}return Number(h[0])}if(t.dtype==="float32"){const h=new Float32Array(1);h[0]=0;for(let A=0;A<y;A++){const N=e>=0?A:A-e,I=e>=0?A+e:A,S=[0,0];S[a]=N,S[r]=I,h[0]+=Number(t.get(...S))}return h[0]}let w=0;for(let h=0;h<y;h++){const A=e>=0?h:h-e,N=e>=0?h+e:h,I=[0,0];I[a]=A,I[r]=N;const S=t.get(...I);typeof S=="bigint"?w=(typeof w=="bigint"?w:BigInt(w))+S:w=(typeof w=="bigint"?Number(w):w)+S}return w}const l=t.ndim,u=(g%l+l)%l,p=(f%l+l)%l;if(u===p)throw new Error("trace: axis1 and axis2 must be different");const d=t.shape[u],b=t.shape[p],c=Math.min(d,b)-Math.max(0,e),s=Array.from(t.shape).filter((a,r)=>r!==u&&r!==p),i=s.reduce((a,r)=>a*r,1),n=z.zeros(s.length>0?s:[1],t.dtype);if(c<=0)return n.shape.length===0?0:n;for(let a=0;a<i;a++){const r=new Array(s.length);let o=a;for(let A=s.length-1;A>=0;A--)r[A]=o%s[A],o=Math.floor(o/s[A]);let m=0,y=0,w=0;const h=T(t.dtype);for(let A=0;A<c;A++){const N=e>=0?A:A-e,I=e>=0?A+e:A,S=new Array(l);let x=0;for(let v=0;v<l;v++)v===u?S[v]=N:v===p?S[v]=I:S[v]=r[x++];const D=t.get(...S);h?(y+=D.re,w+=D.im):typeof D=="bigint"?m=(typeof m=="bigint"?m:BigInt(m))+D:m=(typeof m=="bigint"?Number(m):m)+D}h?n.iset(a,new $(y,w)):n.iset(a,typeof m=="bigint"?Number(m):m)}return n}function H(t,e){return R.transpose(t,e)}function Ae(t,e){const g=t.ndim,f=e.ndim,l=T(t.dtype)||T(e.dtype);if(g===0||f===0)return Z(t,e);const u=t.shape[g-1],p=e.shape[f-1];if(u!==p)throw new Error(`inner: incompatible shapes - last dimensions ${u} and ${p} don't match`);const d=vt(t,e);if(d!==null)return d;if(g===1&&f===1)return Z(t,e);const b=[...t.shape.slice(0,-1),...e.shape.slice(0,-1)],c=q(t.dtype,e.dtype),s=z.zeros(b,c),i=g===1?1:t.shape.slice(0,-1).reduce((r,o)=>r*o,1),n=f===1?1:e.shape.slice(0,-1).reduce((r,o)=>r*o,1),a=u;if(l)for(let r=0;r<i;r++)for(let o=0;o<n;o++){let m=0,y=0;for(let A=0;A<a;A++){let N,I;if(g===1)N=t.get(A);else{const D=[];let v=r;const M=t.shape.slice(0,-1);for(let C=M.length-1;C>=0;C--)D.unshift(v%M[C]),v=Math.floor(v/M[C]);D.push(A),N=t.get(...D)}if(f===1)I=e.get(A);else{const D=[];let v=o;const M=e.shape.slice(0,-1);for(let C=M.length-1;C>=0;C--)D.unshift(v%M[C]),v=Math.floor(v/M[C]);D.push(A),I=e.get(...D)}const S=N instanceof $?N:new $(Number(N),0),x=I instanceof $?I:new $(Number(I),0);m+=S.re*x.re-S.im*x.im,y+=S.re*x.im+S.im*x.re}if(b.length===0)return new $(m,y);const w=i===1?o:r*n+o,h=s.data;h[w*2]=m,h[w*2+1]=y}else{const r=L(c);if(t.isCContiguous&&e.isCContiguous&&!_(t.dtype)&&!_(e.dtype)&&!r){if(b.length===0){const o=t.data,m=e.data,y=t.offset,w=e.offset;let h=0;for(let A=0;A<a;A++)h+=o[y+A]*m[w+A];return h}Pt(t.data,t.offset,i,g,e.data,e.offset,n,f,a,s.data)}else for(let o=0;o<i;o++)for(let m=0;m<n;m++)if(r){r[0]=0;for(let w=0;w<a;w++){const h=g===1?w:o*a+w,A=f===1?w:m*a+w;r[0]+=Number(t.iget(h))*Number(e.iget(A))}if(b.length===0)return r[0];const y=i===1?m:o*n+m;s.data[y]=r[0]}else{let y=0;for(let h=0;h<a;h++){const A=g===1?h:o*a+h,N=f===1?h:m*a+h,I=t.iget(A),S=e.iget(N);typeof I=="bigint"&&typeof S=="bigint"?y=Number(y)+Number(I*S):y+=Number(I)*Number(S)}if(b.length===0)return y;const w=i===1?m:o*n+m;s.data[w]=y}}return s}function Wt(t,e){const g=t.ndim===1?t:R.ravel(t),f=e.ndim===1?e:R.ravel(e),l=$t(g,f);if(l)return l;const u=g.size,p=f.size,d=q(t.dtype,e.dtype),b=z.zeros([u,p],d);if(d==="float16"&&tt&&g.isCContiguous&&f.isCContiguous){const c=new Float32Array(g.data.subarray(g.offset,g.offset+u)),s=new Float32Array(f.data.subarray(f.offset,f.offset+p)),i=new Float32Array(u*p);for(let n=0;n<u;n++){const a=c[n],r=n*p;for(let o=0;o<p;o++)i[r+o]=a*s[o]}return b.data.set(i),b}for(let c=0;c<u;c++)for(let s=0;s<p;s++){const i=g.get(c),n=f.get(s),a=J(i,n);b.set([c,s],a)}return b}function Se(t,e,g){let f,l;if(typeof g=="number"){const r=g;if(r<0)throw new Error("tensordot: axes must be non-negative");if(r>t.ndim||r>e.ndim)throw new Error("tensordot: axes exceeds array dimensions");f=Array.from({length:r},(o,m)=>t.ndim-r+m),l=Array.from({length:r},(o,m)=>m)}else if([f,l]=g,f.length!==l.length)throw new Error("tensordot: axes lists must have same length");for(let r=0;r<f.length;r++){const o=f[r],m=l[r];if(o<0||o>=t.ndim||m<0||m>=e.ndim)throw new Error("tensordot: axis out of bounds");if(t.shape[o]!==e.shape[m])throw new Error(`tensordot: shape mismatch on axes ${o} and ${m}: ${t.shape[o]} != ${e.shape[m]}`)}const u=[],p=[];for(let r=0;r<t.ndim;r++)f.includes(r)||u.push(r);for(let r=0;r<e.ndim;r++)l.includes(r)||p.push(r);const d=[...u.map(r=>t.shape[r]),...p.map(r=>e.shape[r])],b=q(t.dtype,e.dtype),c=T(b),s=r=>r instanceof $?{re:r.re,im:r.im}:{re:Number(r),im:0};if(d.length===0){let r=0,o=0;const m=f.map(y=>t.shape[y]).reduce((y,w)=>y*w,1);for(let y=0;y<m;y++){let w=y;const h=new Array(f.length);for(let x=f.length-1;x>=0;x--){const D=f[x];h[x]=w%t.shape[D],w=Math.floor(w/t.shape[D])}const A=new Array(t.ndim),N=new Array(e.ndim);for(let x=0;x<f.length;x++)A[f[x]]=h[x];for(let x=0;x<l.length;x++)N[l[x]]=h[x];const I=t.get(...A),S=e.get(...N);if(c){const x=s(I),D=s(S);r+=x.re*D.re-x.im*D.im,o+=x.re*D.im+x.im*D.re}else typeof I=="bigint"&&typeof S=="bigint"?r+=Number(I*S):r+=Number(I)*Number(S)}return c?new $(r,o):r}const i=z.zeros(d,b),n=d.reduce((r,o)=>r*o,1),a=f.map(r=>t.shape[r]).reduce((r,o)=>r*o,1);for(let r=0;r<n;r++){let o=r;const m=[];for(let N=d.length-1;N>=0;N--)m[N]=o%d[N],o=Math.floor(o/d[N]);const y=m.slice(0,u.length),w=m.slice(u.length);let h=0,A=0;for(let N=0;N<a;N++){o=N;const I=[];for(let M=f.length-1;M>=0;M--){const C=f[M];I[M]=o%t.shape[C],o=Math.floor(o/t.shape[C])}const S=new Array(t.ndim),x=new Array(e.ndim);for(let M=0;M<u.length;M++)S[u[M]]=y[M];for(let M=0;M<p.length;M++)x[p[M]]=w[M];for(let M=0;M<f.length;M++)S[f[M]]=I[M],x[l[M]]=I[M];const D=t.get(...S),v=e.get(...x);if(c){const M=s(D),C=s(v);h+=M.re*C.re-M.im*C.im,A+=M.re*C.im+M.im*C.re}else typeof D=="bigint"&&typeof v=="bigint"?h+=Number(D*v):h+=Number(D)*Number(v)}c?i.set(m,new $(h,A)):i.set(m,h)}return i}function xe(t,e=0,g=0,f=1){const l=t.shape,u=l.length;if(u<2)throw new Error("diagonal requires an array of at least two dimensions");const p=g<0?u+g:g,d=f<0?u+f:f;if(p<0||p>=u||d<0||d>=u)throw new Error("axis out of bounds");if(p===d)throw new Error("axis1 and axis2 cannot be the same");const b=l[p],c=l[d];let s;e>=0?s=Math.max(0,Math.min(b,c-e)):s=Math.max(0,Math.min(b+e,c));const i=[];for(let o=0;o<u;o++)o!==p&&o!==d&&i.push(l[o]);i.push(s);const n=z.zeros(i,t.dtype),a=l.filter((o,m)=>m!==p&&m!==d),r=a.reduce((o,m)=>o*m,1);for(let o=0;o<r;o++){let m=o;const y=[];for(let w=a.length-1;w>=0;w--)y.unshift(m%a[w]),m=Math.floor(m/a[w]);for(let w=0;w<s;w++){const h=new Array(u);let A=0;for(let S=0;S<u;S++)S===p?h[S]=e>=0?w:w-e:S===d?h[S]=e>=0?w+e:w:h[S]=y[A++];const N=[...y,w],I=t.get(...h);n.set(N,I)}}return n}function Ne(t,...e){const g=t.indexOf("->");let f,l;g===-1?(f=t,l=dt(f)):(f=t.slice(0,g),l=t.slice(g+2));const u=f.split(",").map(o=>o.trim());if(u.length!==e.length)throw new Error(`einsum: expected ${u.length} operands, got ${e.length}`);const p=new Map;for(let o=0;o<e.length;o++){const m=u[o],y=e[o];if(m.length!==y.ndim)throw new Error(`einsum: operand ${o} has ${y.ndim} dimensions but subscript '${m}' has ${m.length} indices`);for(let w=0;w<m.length;w++){const h=m[w],A=y.shape[w];if(p.has(h)){if(p.get(h)!==A)throw new Error(`einsum: size mismatch for index '${h}': ${p.get(h)} vs ${A}`)}else p.set(h,A)}}for(const o of l)if(!p.has(o))throw new Error(`einsum: output subscript contains unknown index '${o}'`);const d=new Set(l),b=new Set;for(const o of u)for(const m of o)b.add(m);const c=[];for(const o of b)d.has(o)||c.push(o);if(e.length===2&&u.length===2){const[o,m]=u,[y,w]=e;if(o.length===2&&m.length===2&&l.length===2&&y.ndim===2&&w.ndim===2){const[h,A]=[o[0],o[1]],[N,I]=[m[0],m[1]],[S,x]=[l[0],l[1]];if(h===S&&I===x&&A===N&&c.length===1&&c[0]===A||h===S&&I===x&&A===N&&c.length===1&&c[0]===A)return X(y,w);if(A===S&&I===x&&h===N&&c.length===1&&c[0]===h){const D=H(y);return X(D,w)}if(h===S&&N===x&&A===I&&c.length===1&&c[0]===A){const D=H(w);return X(y,D)}}if(o.length===1&&m.length===1&&o===m&&l.length===0&&y.ndim===1&&w.ndim===1)return at(e,u,c,p);if(o&&m&&o.length===1&&m.length===1&&l.length===2&&l===o+m&&c.length===0&&y.ndim===1&&w.ndim===1)return Wt(y,w)}if(e.length===1&&u[0].length===2&&l.length===0){const o=u[0];if(o[0]===o[1]&&e[0].ndim===2)return at(e,u,c,p)}const s=Array.from(l).map(o=>p.get(o));if(s.length===0)return at(e,u,c,p);let i=e[0].dtype;for(let o=1;o<e.length;o++)i=q(i,e[o].dtype);const n=z.zeros(s,i),a=s.reduce((o,m)=>o*m,1);let r=1;for(const o of c)r*=p.get(o);for(let o=0;o<a;o++){const m=Qt(o,s),y=new Map;for(let h=0;h<l.length;h++)y.set(l[h],m[h]);let w=0;for(let h=0;h<r;h++){let A=h;for(let I=c.length-1;I>=0;I--){const S=c[I],x=p.get(S);y.set(S,A%x),A=Math.floor(A/x)}let N=1;for(let I=0;I<e.length;I++){const S=e[I],x=u[I],D=[];for(const M of x)D.push(y.get(M));const v=S.get(...D);N*=Number(v)}w+=N}n.set(m,w)}return n}function dt(t){const e=new Map,g=t.split(",");for(const l of g)for(const u of l.trim())e.set(u,(e.get(u)||0)+1);const f=[];for(const[l,u]of e)u===1&&f.push(l);return f.sort().join("")}function at(t,e,g,f){let l=!1;for(const c of t)if(T(c.dtype)){l=!0;break}const u=c=>c instanceof $?{re:c.re,im:c.im}:{re:Number(c),im:0};let p=1;for(const c of g)p*=f.get(c);let d=0,b=0;for(let c=0;c<p;c++){const s=new Map;let i=c;for(let r=g.length-1;r>=0;r--){const o=g[r],m=f.get(o);s.set(o,i%m),i=Math.floor(i/m)}let n=1,a=0;for(let r=0;r<t.length;r++){const o=t[r],m=e[r],y=[];for(const h of m)y.push(s.get(h));const w=o.get(...y);if(l){const h=u(w),A=n*h.re-a*h.im,N=n*h.im+a*h.re;n=A,a=N}else n*=Number(w)}d+=n,b+=a}return l?new $(d,b):d}function Qt(t,e){const g=new Array(e.length);let f=t;for(let l=e.length-1;l>=0;l--)g[l]=f%e[l],f=Math.floor(f/e[l]);return g}function Ie(t,e){const g=t.shape,f=e.shape,l=g.length,u=f.length,p=q(t.dtype,e.dtype);if(l===2&&u===2){const r=Ct(t,e);if(r)return r}const d=Math.max(l,u),b=new Array(d),c=new Array(d).fill(1),s=new Array(d).fill(1);for(let r=0;r<l;r++)c[d-l+r]=g[r];for(let r=0;r<u;r++)s[d-u+r]=f[r];for(let r=0;r<d;r++)b[r]=c[r]*s[r];const i=z.zeros(b,p),n=g.reduce((r,o)=>r*o,1),a=f.reduce((r,o)=>r*o,1);for(let r=0;r<n;r++){let o=r;const m=new Array(l);for(let h=l-1;h>=0;h--)m[h]=o%g[h],o=Math.floor(o/g[h]);const y=new Array(d).fill(0);for(let h=0;h<l;h++)y[d-l+h]=m[h];const w=t.get(...m);for(let h=0;h<a;h++){let A=h;const N=new Array(u);for(let v=u-1;v>=0;v--)N[v]=A%f[v],A=Math.floor(A/f[v]);const I=new Array(d).fill(0);for(let v=0;v<u;v++)I[d-u+v]=N[v];const S=e.get(...N),x=new Array(d);for(let v=0;v<d;v++)x[v]=y[v]*s[v]+I[v];const D=J(w,S);i.set(x,D)}}return i}function De(t,e,g=-1,f=-1,l=-1,u){u!==void 0&&(g=u,f=u,l=u);const p=(x,D)=>x<0?D+x:x,d=p(g,t.ndim),b=p(f,e.ndim),c=q(t.dtype,e.dtype),s=T(c),i=(x,...D)=>{const v=x.get(...D);return v instanceof $||typeof v=="bigint"?v:Number(v)},n=(x,D)=>{if(x instanceof $||D instanceof $){const v=x instanceof $?x:new $(Number(x),0),M=D instanceof $?D:new $(Number(D),0);return v.mul(M)}return typeof x=="bigint"||typeof D=="bigint"?BigInt(x)*BigInt(D):x*D},a=(x,D)=>{if(x instanceof $||D instanceof $){const v=x instanceof $?x:new $(Number(x),0),M=D instanceof $?D:new $(Number(D),0);return v.sub(M)}return typeof x=="bigint"||typeof D=="bigint"?BigInt(x)-BigInt(D):x-D};if(t.ndim===1&&e.ndim===1){const x=t.shape[0],D=e.shape[0];if(x===3&&D===3){const v=i(t,0),M=i(t,1),C=i(t,2),E=i(e,0),F=i(e,1),j=i(e,2),V=z.zeros([3],c);return V.set([0],a(n(M,j),n(C,F))),V.set([1],a(n(C,E),n(v,j))),V.set([2],a(n(v,F),n(M,E))),V}else if(x===2&&D===2){const v=i(t,0),M=i(t,1),C=i(e,0),E=i(e,1);return a(n(v,E),n(M,C))}else if(x===2&&D===3||x===3&&D===2){const v=i(t,0),M=i(t,1),C=x===3?i(t,2):s?new $(0,0):_(c)?0n:0,E=i(e,0),F=i(e,1),j=D===3?i(e,2):s?new $(0,0):_(c)?0n:0,V=z.zeros([3],c);return V.set([0],a(n(M,j),n(C,F))),V.set([1],a(n(C,E),n(v,j))),V.set([2],a(n(v,F),n(M,E))),V}else throw new Error(`cross: incompatible dimensions for cross product: ${x} and ${D}`)}const r=t.shape[d],o=e.shape[b];if(r!==2&&r!==3||o!==2&&o!==3)throw new Error(`cross: incompatible dimensions for cross product: ${r} and ${o}`);const m=r===2&&o===2?0:3,y=[...t.shape.slice(0,d),...t.shape.slice(d+1)],w=[...e.shape.slice(0,b),...e.shape.slice(b+1)];if(y.length!==w.length)throw new Error("cross: incompatible shapes for cross product");for(let x=0;x<y.length;x++)if(y[x]!==w[x])throw new Error("cross: incompatible shapes for cross product");const h=y;if(r===3&&o===3&&d===t.ndim-1&&b===e.ndim-1){const x=h.reduce((v,M)=>v*M,1),D=Et(t,e,x);if(D)return D}const A=l<0?h.length+1+l:l;let N;if(m===0?N=h:N=[...h.slice(0,A),m,...h.slice(A)],N.length===0)throw new Error("cross: unexpected scalar result from higher-dimensional input");const I=z.zeros(N,c),S=h.reduce((x,D)=>x*D,1);for(let x=0;x<S;x++){let D=x;const v=[];for(let P=h.length-1;P>=0;P--)v[P]=D%h[P],D=Math.floor(D/h[P]);const M=[...v.slice(0,d),0,...v.slice(d)],C=[...v.slice(0,b),0,...v.slice(b)],E=P=>(M[d]=P,i(t,...M)),F=P=>(C[b]=P,i(e,...C)),j=E(0),V=E(1),k=r===3?E(2):s?new $(0,0):_(c)?0n:0,B=F(0),W=F(1),U=o===3?F(2):s?new $(0,0):_(c)?0n:0;if(m===0)I.set(v,a(n(j,W),n(V,B)));else{const P=a(n(V,U),n(k,W)),St=a(n(k,B),n(j,U)),xt=a(n(j,W),n(V,B)),st=(Nt,It)=>{const Dt=[...v.slice(0,A),Nt,...v.slice(A)];I.set(Dt,It)};st(0,P),st(1,St),st(2,xt)}}return I}function rt(t,e=2,g,f=!1){if(typeof e!="number")throw new Error("vector_norm: ord must be a number");if(g==null){const c=t.ndim===1?t:R.ravel(t),s=c.size;let i;if(e===1/0){i=0;for(let n=0;n<s;n++)i=Math.max(i,Math.abs(Number(c.get(n))))}else if(e===-1/0){i=1/0;for(let n=0;n<s;n++)i=Math.min(i,Math.abs(Number(c.get(n))))}else if(e===0){i=0;for(let n=0;n<s;n++)Number(c.get(n))!==0&&i++}else if(e===1){i=0;for(let n=0;n<s;n++)i+=Math.abs(Number(c.get(n)))}else if(e===2){i=0;for(let n=0;n<s;n++){const a=Number(c.get(n));i+=a*a}i=Math.sqrt(i)}else{i=0;for(let n=0;n<s;n++)i+=Math.pow(Math.abs(Number(c.get(n))),e);i=Math.pow(i,1/e)}if(f){const n=new Array(t.ndim).fill(1),a=z.zeros(n,"float64");return a.set(new Array(t.ndim).fill(0),i),a}return i}const l=g<0?t.ndim+g:g;if(l<0||l>=t.ndim)throw new Error(`vector_norm: axis ${g} out of bounds for array with ${t.ndim} dimensions`);const u=f?[...t.shape.slice(0,l),1,...t.shape.slice(l+1)]:[...t.shape.slice(0,l),...t.shape.slice(l+1)];if(u.length===0)return rt(t,e,null,!1);const p=z.zeros(u,"float64"),d=t.shape[l],b=u.reduce((c,s)=>c*s,1);for(let c=0;c<b;c++){let s=c;const i=[];for(let r=u.length-1;r>=0;r--)i[r]=s%u[r],s=Math.floor(s/u[r]);const n=f?[...i.slice(0,l),0,...i.slice(l+1)]:[...i.slice(0,l),0,...i.slice(l)];let a;if(e===1/0){a=0;for(let r=0;r<d;r++)n[l]=r,a=Math.max(a,Math.abs(Number(t.get(...n))))}else if(e===-1/0){a=1/0;for(let r=0;r<d;r++)n[l]=r,a=Math.min(a,Math.abs(Number(t.get(...n))))}else if(e===0){a=0;for(let r=0;r<d;r++)n[l]=r,Number(t.get(...n))!==0&&a++}else if(e===1){a=0;for(let r=0;r<d;r++)n[l]=r,a+=Math.abs(Number(t.get(...n)))}else if(e===2){a=0;for(let r=0;r<d;r++){n[l]=r;const o=Number(t.get(...n));a+=o*o}a=Math.sqrt(a)}else{a=0;for(let r=0;r<d;r++)n[l]=r,a+=Math.pow(Math.abs(Number(t.get(...n))),e);a=Math.pow(a,1/e)}p.set(i,a)}return p}function K(t,e="fro",g=!1){if(t.ndim<2)throw new Error(`matrix_norm: input must be at least 2D, got ${t.ndim}D`);if(t.ndim>2){const p=Array.from(t.shape).slice(0,-2),d=t.shape[t.ndim-2],b=t.shape[t.ndim-1],c=p.reduce((n,a)=>n*a,1),s=new Float64Array(c),i=O(t);for(let n=0;n<c;n++){const a=n*d*b,r=z.fromData(i.slice(a,a+d*b),[d,b],"float64");s[n]=K(r,e,!1)}if(g){const n=[...p,1,1],a=z.fromData(s,p,"float64");return R.reshape(a,n)}return z.fromData(s,p,"float64")}const[f,l]=t.shape;let u;if(e==="fro"){u=0;for(let p=0;p<f;p++)for(let d=0;d<l;d++){const b=Number(t.get(p,d));u+=b*b}u=Math.sqrt(u)}else if(e==="nuc"){const{s:p}=Q(t);u=0;for(let d=0;d<p.size;d++)u+=Number(p.get(d))}else if(e===1){u=0;for(let p=0;p<l;p++){let d=0;for(let b=0;b<f;b++)d+=Math.abs(Number(t.get(b,p)));u=Math.max(u,d)}}else if(e===-1){u=1/0;for(let p=0;p<l;p++){let d=0;for(let b=0;b<f;b++)d+=Math.abs(Number(t.get(b,p)));u=Math.min(u,d)}}else if(e===1/0){u=0;for(let p=0;p<f;p++){let d=0;for(let b=0;b<l;b++)d+=Math.abs(Number(t.get(p,b)));u=Math.max(u,d)}}else if(e===-1/0){u=1/0;for(let p=0;p<f;p++){let d=0;for(let b=0;b<l;b++)d+=Math.abs(Number(t.get(p,b)));u=Math.min(u,d)}}else if(e===2){const{s:p}=Q(t);u=Number(p.get(0))}else if(e===-2){const{s:p}=Q(t);u=Number(p.get(p.size-1))}else throw new Error(`matrix_norm: invalid ord value: ${e}`);if(g){const p=z.zeros([1,1],"float64");return p.set([0,0],u),p}return u}function ve(t,e=null,g=null,f=!1){if(e===null){if(g===null)return rt(t,2,null,f);if(typeof g=="number")return rt(t,2,g,f);e="fro"}if(Array.isArray(g)){if(g.length!==2)throw new Error("norm: axis must be a 2-tuple for matrix norms");const l=g[0]<0?t.ndim+g[0]:g[0],u=g[1]<0?t.ndim+g[1]:g[1],p=e??"fro";if(t.ndim===2)return K(t,p,f);const d=t.ndim,b=Array.from({length:d},(m,y)=>y).filter(m=>m!==l&&m!==u),c=b.map(m=>t.shape[m]),s=c.reduce((m,y)=>m*y,1)||1,i=t.shape[l],n=t.shape[u],a=[...b,l,u],r=H(t,a),o=new Float64Array(s);for(let m=0;m<s;m++){const y=new Array(c.length);let w=m;for(let N=c.length-1;N>=0;N--)y[N]=w%c[N],w=Math.floor(w/c[N]);const h=z.zeros([i,n],"float64");for(let N=0;N<i;N++)for(let I=0;I<n;I++)h.set([N,I],Number(r.get(...y,N,I)));const A=K(h,p,!1);o[m]=typeof A=="number"?A:Number(A)}if(f){const m=Array.from(t.shape);return m[l]=1,m[u]=1,z.fromData(o,m,"float64")}return c.length===0?o[0]:z.fromData(o,c,"float64")}if(t.ndim===2&&g===null&&(e==="fro"||e==="nuc"))return K(t,e,f);if(typeof e!="number"&&e!==null)throw new Error(`norm: ord '${e}' not valid for vector norm`);return rt(t,e??2,g,f)}function gt(t,e="reduced"){if(t.ndim>2){const a=t.shape.slice(0,-2),[r,o]=[t.shape[t.ndim-2],t.shape[t.ndim-1]],m=Math.min(r,o),y=a.reduce((N,I)=>N*I,1),w=e==="complete"?r:m,h=z.zeros([...a,r,w],"float64"),A=z.zeros([...a,w,o],"float64");for(let N=0;N<y;N++){const I=et(N,a),S=z.zeros([r,o],"float64");for(let D=0;D<r;D++)for(let v=0;v<o;v++)S.set([D,v],Number(t.get(...I,D,v)));const x=gt(S,e);for(let D=0;D<r;D++)for(let v=0;v<w;v++)h.set([...I,D,v],Number(x.q.get(D,v)));for(let D=0;D<w;D++)for(let v=0;v<o;v++)A.set([...I,D,v],Number(x.r.get(D,v)))}return{q:h,r:A}}if(t.ndim!==2)throw new Error(`qr: input must be 2D, got ${t.ndim}D`);if(e==="reduced"){const a=Ft(t);if(a)return a}const[g,f]=t.shape,l=Math.min(g,f),u=z.zeros([g,f],"float64");for(let a=0;a<g;a++)for(let r=0;r<f;r++)u.set([a,r],Number(t.get(a,r)));const p=[],d=[];for(let a=0;a<l;a++){const r=g-a,o=[];for(let N=a;N<g;N++)o.push(Number(u.get(N,a)));let m=0;for(let N=0;N<r;N++)m+=o[N]*o[N];if(m=Math.sqrt(m),m<1e-15){p.push(o),d.push(0);continue}const y=o[0]>=0?1:-1,w=o[0]+y*m,h=[1];for(let N=1;N<r;N++)h.push(o[N]/w);const A=y*w/m;d.push(A),p.push(h);for(let N=a;N<f;N++){let I=0;for(let S=0;S<r;S++)I+=h[S]*Number(u.get(a+S,N));for(let S=0;S<r;S++)u.set([a+S,N],Number(u.get(a+S,N))-A*h[S]*I)}}if(e==="raw"){const a=z.zeros([g,f],"float64");for(let o=0;o<g;o++)for(let m=0;m<f;m++)a.set([o,m],Number(u.get(o,m)));const r=z.zeros([l],"float64");for(let o=0;o<l;o++)r.set([o],d[o]);return{h:a,tau:r}}if(e==="r"){const a=z.zeros([l,f],"float64");for(let r=0;r<l;r++)for(let o=r;o<f;o++)a.set([r,o],Number(u.get(r,o)));return a}const b=e==="complete"?g:l,c=z.zeros([g,b],"float64");for(let a=0;a<Math.min(g,b);a++)c.set([a,a],1);for(let a=l-1;a>=0;a--){const r=p[a],o=d[a],m=g-a;for(let y=a;y<b;y++){let w=0;for(let h=0;h<m;h++)w+=r[h]*Number(c.get(a+h,y));for(let h=0;h<m;h++)c.set([a+h,y],Number(c.get(a+h,y))-o*r[h]*w)}}const s=z.zeros([g,b],"float64");for(let a=0;a<g;a++)for(let r=0;r<b;r++)s.set([a,r],Number(c.get(a,r)));const i=e==="complete"?g:l,n=z.zeros([i,f],"float64");for(let a=0;a<i;a++)for(let r=0;r<f;r++)r>=a&&n.set([a,r],Number(u.get(a,r)));return{q:s,r:n}}function Gt(t,e=!1){if(t.ndim<2)throw new Error(`cholesky: input must be at least 2D, got ${t.ndim}D`);if(t.ndim>2){const d=Array.from(t.shape).slice(0,-2),b=t.shape[t.ndim-1],c=t.shape[t.ndim-2];if(c!==b)throw new Error(`cholesky: last 2 dimensions must be square, got ${c}x${b}`);const s=d.reduce((a,r)=>a*r,1),i=new Float64Array(s*b*b),n=O(t);for(let a=0;a<s;a++){const r=a*b*b,o=z.fromData(n.slice(r,r+b*b),[b,b],"float64"),m=Gt(o,e);i.set(O(m),r)}return z.fromData(i,[...d,b,b],"float64")}const[g,f]=t.shape;if(g!==f)throw new Error(`cholesky: matrix must be square, got ${g}x${f}`);const l=t.dtype==="float32"?Vt(t):jt(t);if(l){if(e){const d=g,b=z.zeros([d,d],l.dtype);for(let c=0;c<d;c++)for(let s=c;s<d;s++)b.set([c,s],Number(l.get(s,c)));return b}return l}const u=g,p=z.zeros([u,u],"float64");for(let d=0;d<u;d++)for(let b=0;b<=d;b++){let c=0;if(d===b){for(let i=0;i<b;i++)c+=Number(p.get(b,i))**2;const s=Number(t.get(b,b))-c;if(s<0)throw new Error("cholesky: matrix is not positive definite");p.set([b,b],Math.sqrt(s))}else{for(let i=0;i<b;i++)c+=Number(p.get(d,i))*Number(p.get(b,i));const s=Number(p.get(b,b));if(Math.abs(s)<1e-15)throw new Error("cholesky: matrix is not positive definite");p.set([d,b],(Number(t.get(d,b))-c)/s)}}if(e){const d=z.zeros([u,u],"float64");for(let b=0;b<u;b++)for(let c=b;c<u;c++)d.set([b,c],Number(p.get(c,b)));return d}return p}function Q(t){if(t.ndim!==2)throw new Error(`svd: input must be 2D, got ${t.ndim}D`);const e=Bt(t);if(e)return e;const[g,f]=t.shape,l=Math.min(g,f),u=z.zeros([f,f],"float64");for(let n=0;n<f;n++)for(let a=0;a<f;a++){let r=0;for(let o=0;o<g;o++)r+=Number(t.get(o,n))*Number(t.get(o,a));u.set([n,a],r)}const{values:p,vectors:d}=lt(u),b=Array.from({length:f},(n,a)=>a);b.sort((n,a)=>p[a]-p[n]);const c=z.zeros([l],"float64");for(let n=0;n<l;n++){const a=p[b[n]];c.set([n],Math.sqrt(Math.max(0,a)))}const s=z.zeros([f,f],"float64");for(let n=0;n<f;n++)for(let a=0;a<f;a++)s.set([n,a],d[a][b[n]]);const i=z.zeros([g,g],"float64");for(let n=0;n<g;n++)for(let a=0;a<l;a++){const r=Number(c.get(a));if(r>1e-10){let o=0;for(let m=0;m<f;m++)o+=Number(t.get(n,m))*Number(s.get(a,m));i.set([n,a],o/r)}}if(g>l)for(let n=l;n<g;n++){const a=new Array(g).fill(0);a[n]=1;for(let o=0;o<n;o++){let m=0;for(let y=0;y<g;y++)m+=a[y]*Number(i.get(y,o));for(let y=0;y<g;y++)a[y]=a[y]-m*Number(i.get(y,o))}let r=0;for(let o=0;o<g;o++)r+=a[o]*a[o];if(r=Math.sqrt(r),r>1e-10)for(let o=0;o<g;o++)i.set([o,n],a[o]/r)}return{u:i,s:c,vt:s}}function lt(t){const e=t.shape[0],g=100*e*e,f=1e-10,l=[];for(let d=0;d<e;d++){l.push([]);for(let b=0;b<e;b++)l[d].push(Number(t.get(d,b)))}const u=[];for(let d=0;d<e;d++){u.push([]);for(let b=0;b<e;b++)u[d].push(d===b?1:0)}for(let d=0;d<g;d++){let b=0,c=0,s=1;for(let h=0;h<e;h++)for(let A=h+1;A<e;A++)Math.abs(l[h][A])>b&&(b=Math.abs(l[h][A]),c=h,s=A);if(b<f)break;const i=l[c][c],n=l[s][s],a=l[c][s];let r;Math.abs(i-n)<1e-15?r=Math.PI/4:r=.5*Math.atan2(2*a,n-i);const o=Math.cos(r),m=Math.sin(r),y=o*o*i+m*m*n-2*m*o*a,w=m*m*i+o*o*n+2*m*o*a;l[c][c]=y,l[s][s]=w,l[c][s]=0,l[s][c]=0;for(let h=0;h<e;h++)if(h!==c&&h!==s){const A=l[h][c],N=l[h][s];l[h][c]=o*A-m*N,l[c][h]=l[h][c],l[h][s]=m*A+o*N,l[s][h]=l[h][s]}for(let h=0;h<e;h++){const A=u[h][c],N=u[h][s];u[h][c]=o*A-m*N,u[h][s]=m*A+o*N}}const p=[];for(let d=0;d<e;d++)p.push(l[d][d]);return{values:p,vectors:u}}function bt(t,e=!0,g=!0){if(t.ndim>2){const l=t.shape.slice(0,-2),[u,p]=[t.shape[t.ndim-2],t.shape[t.ndim-1]],d=Math.min(u,p),b=l.reduce((r,o)=>r*o,1);if(!g){const r=z.zeros([...l,d],"float64");for(let o=0;o<b;o++){const m=et(o,l),y=z.zeros([u,p],"float64");for(let h=0;h<u;h++)for(let A=0;A<p;A++)y.set([h,A],Number(t.get(...m,h,A)));const{s:w}=Q(y);for(let h=0;h<d;h++)r.set([...m,h],Number(w.get(h)))}return r}const c=e?u:d,s=e?p:d,i=z.zeros([...l,u,c],"float64"),n=z.zeros([...l,d],"float64"),a=z.zeros([...l,s,p],"float64");for(let r=0;r<b;r++){const o=et(r,l),m=z.zeros([u,p],"float64");for(let w=0;w<u;w++)for(let h=0;h<p;h++)m.set([w,h],Number(t.get(...o,w,h)));const y=bt(m,e,!0);for(let w=0;w<u;w++)for(let h=0;h<c;h++)i.set([...o,w,h],Number(y.u.get(w,h)));for(let w=0;w<d;w++)n.set([...o,w],Number(y.s.get(w)));for(let w=0;w<s;w++)for(let h=0;h<p;h++)a.set([...o,w,h],Number(y.vt.get(w,h)))}return{u:i,s:n,vt:a}}const f=Q(t);if(!g)return f.s;if(!e){const[l,u]=t.shape,p=Math.min(l,u),d=z.zeros([l,p],"float64");for(let c=0;c<l;c++)for(let s=0;s<p;s++)d.set([c,s],Number(f.u.get(c,s)));const b=z.zeros([p,u],"float64");for(let c=0;c<p;c++)for(let s=0;s<u;s++)b.set([c,s],Number(f.vt.get(c,s)));return{u:d,s:f.s,vt:b}}return f}function Ht(t){if(t.ndim<2)throw new Error(`det: input must be at least 2D, got ${t.ndim}D`);if(t.ndim>2){const c=Array.from(t.shape).slice(0,-2),s=t.shape[t.ndim-1],i=t.shape[t.ndim-2];if(i!==s)throw new Error(`det: last 2 dimensions must be square, got ${i}x${s}`);const n=c.reduce((o,m)=>o*m,1),a=new Float64Array(n),r=O(t);for(let o=0;o<n;o++){const m=o*s*s,y=z.fromData(r.slice(m,m+s*s),[s,s],"float64");a[o]=Ht(y)}return z.fromData(a,c,"float64")}const[e,g]=t.shape;if(e!==g)throw new Error(`det: matrix must be square, got ${e}x${g}`);const f=e;if(f===0)return 1;const l=t.data;if(f===1)return Number(l[0]);if(f===2)return Number(l[0])*Number(l[3])-Number(l[1])*Number(l[2]);const{lu:u,sign:p}=nt(t),d=u.data;let b=p;for(let c=0;c<f;c++)b*=d[c*f+c];return b}function nt(t){const[e,g]=t.shape,f=e,l=g,u=z.zeros([f,l],"float64"),p=u.data,d=t.data;for(let s=0;s<f*l;s++)p[s]=Number(d[s]);const b=Array.from({length:f},(s,i)=>i);let c=1;for(let s=0;s<Math.min(f,l);s++){let i=Math.abs(p[s*l+s]),n=s;for(let r=s+1;r<f;r++){const o=Math.abs(p[r*l+s]);o>i&&(i=o,n=r)}if(n!==s){for(let o=0;o<l;o++){const m=p[s*l+o];p[s*l+o]=p[n*l+o],p[n*l+o]=m}const r=b[s];b[s]=b[n],b[n]=r,c=-c}const a=p[s*l+s];if(Math.abs(a)>1e-15)for(let r=s+1;r<f;r++){const o=p[r*l+s]/a;p[r*l+s]=o;for(let m=s+1;m<l;m++)p[r*l+m]=p[r*l+m]-o*p[s*l+m]}}return{lu:u,piv:b,sign:c}}function ot(t){if(t.ndim<2)throw new Error(`inv: input must be at least 2D, got ${t.ndim}D`);if(t.ndim>2){const c=Array.from(t.shape).slice(0,-2),s=t.shape[t.ndim-1],i=t.shape[t.ndim-2];if(i!==s)throw new Error(`inv: last 2 dimensions must be square, got ${i}x${s}`);const n=c.reduce((o,m)=>o*m,1),a=O(t),r=new Float64Array(n*s*s);for(let o=0;o<n;o++){const m=o*s*s,y=z.fromData(a.slice(m,m+s*s),[s,s],"float64"),h=ot(y).data;for(let A=0;A<s*s;A++)r[m+A]=h[A]}return z.fromData(r,Array.from(t.shape),"float64")}const[e,g]=t.shape;if(e!==g)throw new Error(`inv: matrix must be square, got ${e}x${g}`);const f=e,{lu:l,piv:u}=nt(t),p=l.data,d=z.zeros([f,f],"float64"),b=d.data;for(let c=0;c<f;c++){const s=new Float64Array(f);for(let i=0;i<f;i++){let n=u[i]===c?1:0;for(let a=0;a<i;a++)n-=p[i*f+a]*s[a];s[i]=n}for(let i=f-1;i>=0;i--){let n=s[i];for(let r=i+1;r<f;r++)n-=p[i*f+r]*b[r*f+c];const a=p[i*f+i];if(Math.abs(a)<1e-15)throw new Error("inv: singular matrix");b[i*f+c]=n/a}}return d}function yt(t,e){const[g]=t.shape,f=g,{lu:l,piv:u}=nt(t),p=l.data,d=e.data,b=new Float64Array(f);for(let n=0;n<f;n++)b[n]=Number(d[u[n]]);const c=new Float64Array(f);for(let n=0;n<f;n++){let a=b[n];for(let r=0;r<n;r++)a-=p[n*f+r]*c[r];c[n]=a}const s=z.zeros([f],"float64"),i=s.data;for(let n=f-1;n>=0;n--){let a=c[n];for(let o=n+1;o<f;o++)a-=p[n*f+o]*i[o];const r=p[n*f+n];if(Math.abs(r)<1e-15)throw new Error("solve: singular matrix");i[n]=a/r}return s}function Kt(t,e){if(t.ndim!==2)throw new Error(`solve: coefficient matrix must be 2D, got ${t.ndim}D`);const[g,f]=t.shape;if(g!==f)throw new Error(`solve: coefficient matrix must be square, got ${g}x${f}`);const l=g;if(e.ndim===1){if(e.shape[0]!==l)throw new Error(`solve: incompatible shapes (${g},${f}) and (${e.shape[0]},)`);return yt(t,e)}if(e.ndim===2){if(e.shape[0]!==l)throw new Error(`solve: incompatible shapes (${g},${f}) and (${e.shape[0]},${e.shape[1]})`);const u=e.shape[1],p=z.zeros([l,u],"float64");for(let d=0;d<u;d++){const b=z.zeros([l],"float64");for(let s=0;s<l;s++)b.set([s],Number(e.get(s,d)));const c=yt(t,b);for(let s=0;s<l;s++)p.set([s,d],Number(c.get(s)))}return p}throw new Error(`solve: b must be 1D or 2D, got ${e.ndim}D`)}function $e(t,e,g=null){if(t.ndim!==2)throw new Error(`lstsq: coefficient matrix must be 2D, got ${t.ndim}D`);const[f,l]=t.shape,u=Math.min(f,l),p=e.ndim===1?R.reshape(e,[e.size,1]):e,d=p.shape[1];if(p.shape[0]!==f)throw new Error(`lstsq: incompatible shapes (${f},${l}) and (${e.shape.join(",")})`);const{u:b,s:c,vt:s}=Q(t),i=c.data,n=b.data,a=s.data,r=g??Math.max(f,l)*Number.EPSILON,m=i[0]*r;let y=0;for(let v=0;v<u;v++)i[v]>m&&y++;const w=new Float64Array(l*u);for(let v=0;v<u;v++){const M=i[v];if(M>m){const C=1/M;for(let E=0;E<l;E++)w[E*u+v]=a[v*l+E]*C}}const h=new Float64Array(u*f);for(let v=0;v<u;v++)for(let M=0;M<f;M++)h[v*f+M]=n[M*f+v];const A=z.fromData(w,[l,u],"float64"),N=z.fromData(h,[u,f],"float64"),I=Y(N,p)??G(N,p);let S=Y(A,I)??G(A,I),x;if(f>l&&y===l){const v=new Float64Array(d),M=e.ndim===1?R.reshape(S,[l,1]):S,E=(Y(t,M)??G(t,M)).data;for(let F=0;F<d;F++){let j=0;for(let V=0;V<f;V++){const k=E[V*d+F]-Number(p.iget(V*d+F));j+=k*k}v[F]=j}x=z.fromData(v,[d],"float64")}else x=z.zeros([0],"float64");return{x:e.ndim===1?R.reshape(S,[l]):S,residuals:x,rank:y,s:c}}function ze(t,e=2){if(t.ndim!==2)throw new Error(`cond: input must be 2D, got ${t.ndim}D`);const[g,f]=t.shape;if(e===2||e===-2){const{s:d}=Q(t),b=Math.min(g,f),c=Number(d.get(0)),s=Number(d.get(b-1));return e===2?s>0?c/s:1/0:c>0?s/c:0}if(g!==f)throw new Error(`cond: matrix must be square for p=${e}`);const l=K(t,e),u=ot(t),p=K(u,e);return l*p}function Me(t,e){if(t.ndim===0)return Number(t.get())!==0?1:0;if(t.ndim===1){for(let p=0;p<t.size;p++)if(Number(t.get(p))!==0)return 1;return 0}if(t.ndim!==2)throw new Error(`matrix_rank: input must be at most 2D, got ${t.ndim}D`);const{s:g}=Q(t),f=Number(g.get(0)),l=e??f*Math.max(t.shape[0],t.shape[1])*Number.EPSILON;let u=0;for(let p=0;p<g.size;p++)Number(g.get(p))>l&&u++;return u}function Ce(t,e){if(t.ndim!==2)throw new Error(`matrix_power: input must be 2D, got ${t.ndim}D`);const[g,f]=t.shape;if(g!==f)throw new Error(`matrix_power: matrix must be square, got ${g}x${f}`);const l=g;if(!Number.isInteger(e))throw new Error("matrix_power: exponent must be an integer");if(e===0){const i=z.zeros([l,l],"float64");for(let n=0;n<l;n++)i.set([n,n],1);return i}let u=t,p=e;e<0&&(u=ot(t),p=-e);const d=u.dtype==="float32"?"float32":"float64";let b=z.zeros([l,l],d);const c=b.data;for(let i=0;i<l;i++)c[i*l+i]=1;let s;if(u.isCContiguous&&(u.dtype==="float64"||u.dtype==="float32"))s=u.copy();else{s=z.zeros([l,l],d);const i=s.data,n=u.data,a=u.offset,[r=0,o=0]=u.strides;for(let m=0;m<l;m++)for(let y=0;y<l;y++)i[m*l+y]=Number(n[a+m*r+y*o])}for(;p>0;)p&1&&(b=X(b,s)),s=X(s,s),p>>=1;return b}function Yt(t,e=1e-15){if(t.ndim<2)throw new Error(`pinv: input must be at least 2D, got ${t.ndim}D`);if(t.ndim>2){const y=Array.from(t.shape).slice(0,-2),w=t.shape[t.ndim-2],h=t.shape[t.ndim-1],A=y.reduce((S,x)=>S*x,1),N=new Float64Array(A*h*w),I=O(t);for(let S=0;S<A;S++){const x=S*w*h,D=z.fromData(I.slice(x,x+w*h),[w,h],"float64"),v=Yt(D,e);N.set(O(v),S*h*w)}return z.fromData(N,[...y,h,w],"float64")}const[g,f]=t.shape,{u:l,s:u,vt:p}=Q(t),d=Math.min(g,f),b=u.data,s=b[0]*e,i=new Float64Array(f*d);for(let y=0;y<d;y++){const w=b[y];if(w>s){const h=1/w;for(let A=0;A<f;A++)i[A*d+y]=p.data[y*f+A]*h}}const n=z.fromData(i,[f,d],"float64"),a=new Float64Array(d*g),r=l.data;for(let y=0;y<d;y++)for(let w=0;w<g;w++)a[y*g+w]=r[w*g+y];const o=z.fromData(a,[d,g],"float64");return Y(n,o)??G(n,o)}function wt(t){if(t.ndim<2)throw new Error(`eig: input must be at least 2D, got ${t.ndim}D`);if(t.ndim>2){const s=Array.from(t.shape).slice(0,-2),i=t.shape[t.ndim-1],n=t.shape[t.ndim-2];if(n!==i)throw new Error(`eig: last 2 dimensions must be square, got ${n}x${i}`);const a=s.reduce((y,w)=>y*w,1),r=new Float64Array(a*i),o=new Float64Array(a*i*i),m=O(t);for(let y=0;y<a;y++){const w=y*i*i,h=z.fromData(m.slice(w,w+i*i),[i,i],"float64"),{w:A,v:N}=wt(h);r.set(O(A),y*i),o.set(O(N),w)}return{w:z.fromData(r,[...s,i],"float64"),v:z.fromData(o,[...s,i,i],"float64")}}const[e,g]=t.shape;if(e!==g)throw new Error(`eig: matrix must be square, got ${e}x${g}`);const f=e;let l=!0;t:for(let s=0;s<f;s++)for(let i=s+1;i<f;i++)if(Math.abs(Number(t.get(s,i))-Number(t.get(i,s)))>1e-10){l=!1;break t}if(l){const{values:s,vectors:i}=lt(t),n=z.zeros([f],"float64"),a=z.zeros([f,f],"float64");for(let r=0;r<f;r++){n.set([r],s[r]);for(let o=0;o<f;o++)a.set([o,r],i[o][r])}return{w:n,v:a}}const{values:u,vectors:p,hasComplexEigenvalues:d}=Zt(t);d&&console.warn("numpy-ts: eig() detected complex eigenvalues which cannot be represented. Results are real approximations and may be inaccurate. For symmetric matrices, use eigh() instead.");const b=z.zeros([f],"float64"),c=z.zeros([f,f],"float64");for(let s=0;s<f;s++){b.set([s],u[s]);for(let i=0;i<f;i++)c.set([i,s],p[i][s])}return{w:b,v:c}}function Zt(t){const e=t.shape[0],g=1e3,f=1e-10;let l=z.zeros([e,e],"float64");for(let c=0;c<e;c++)for(let s=0;s<e;s++)l.set([c,s],Number(t.get(c,s)));let u=z.zeros([e,e],"float64");for(let c=0;c<e;c++)u.set([c,c],1);for(let c=0;c<g;c++){let s=0;for(let r=0;r<e;r++)for(let o=0;o<e;o++)r!==o&&(s+=Number(l.get(r,o))**2);if(Math.sqrt(s)<f*e)break;const i=gt(l,"reduced"),n=i.q,a=i.r;l=X(a,n),u=X(u,n)}let p=!1;for(let c=0;c<e-1;c++){const s=Math.abs(Number(l.get(c+1,c))),i=Math.abs(Number(l.get(c,c))),n=Math.abs(Number(l.get(c+1,c+1))),a=Math.max(i,n,1e-10);if(s/a>1e-6){p=!0;break}}const d=[];for(let c=0;c<e;c++)d.push(Number(l.get(c,c)));const b=[];for(let c=0;c<e;c++){b.push([]);for(let s=0;s<e;s++)b[c].push(Number(u.get(c,s)))}return{values:d,vectors:b,hasComplexEigenvalues:p}}function At(t,e="L"){if(t.ndim<2)throw new Error(`eigh: input must be at least 2D, got ${t.ndim}D`);if(t.ndim>2){const i=Array.from(t.shape).slice(0,-2),n=t.shape[t.ndim-1],a=t.shape[t.ndim-2];if(a!==n)throw new Error(`eigh: last 2 dimensions must be square, got ${a}x${n}`);const r=i.reduce((w,h)=>w*h,1),o=new Float64Array(r*n),m=new Float64Array(r*n*n),y=O(t);for(let w=0;w<r;w++){const h=w*n*n,A=z.fromData(y.slice(h,h+n*n),[n,n],"float64"),{w:N,v:I}=At(A,e);o.set(O(N),w*n),m.set(O(I),h)}return{w:z.fromData(o,[...i,n],"float64"),v:z.fromData(m,[...i,n,n],"float64")}}const[g,f]=t.shape;if(g!==f)throw new Error(`eigh: matrix must be square, got ${g}x${f}`);const l=g,u=z.zeros([l,l],"float64");for(let i=0;i<l;i++)for(let n=0;n<l;n++)e==="L"?i>=n&&(u.set([i,n],Number(t.get(i,n))),u.set([n,i],Number(t.get(i,n)))):n>=i&&(u.set([i,n],Number(t.get(i,n))),u.set([n,i],Number(t.get(i,n))));const{values:p,vectors:d}=lt(u),b=Array.from({length:l},(i,n)=>n);b.sort((i,n)=>p[i]-p[n]);const c=z.zeros([l],"float64"),s=z.zeros([l,l],"float64");for(let i=0;i<l;i++){c.set([i],p[b[i]]);for(let n=0;n<l;n++)s.set([n,i],d[n][b[i]])}return{w:c,v:s}}function Ee(t){const{w:e}=wt(t);return e}function Fe(t,e="L"){const{w:g}=At(t,e);return g}function je(t,e){const g=R.flatten(t),f=R.flatten(e),l=g.shape[0],u=f.shape[0];if(l!==u)throw new Error(`vdot: arrays must have same number of elements, got ${l} and ${u}`);const p=T(t.dtype)||T(e.dtype);if(p){const s=Mt(g,f);if(s!==null)return s}else{const s=it(g,f);if(s!==null)return s}if(p){let s=0,i=0;for(let n=0;n<l;n++){const a=g.get(n),r=f.get(n),o=a instanceof $?a.re:Number(a),m=a instanceof $?a.im:0,y=r instanceof $?r.re:Number(r),w=r instanceof $?r.im:0;s+=o*y+m*w,i+=-m*y+o*w}return Math.abs(i)<1e-15?s:new $(s,i)}const d=q(t.dtype,e.dtype),b=L(d);if(b){b[0]=0;for(let s=0;s<l;s++)b[0]+=Number(g.get(s))*Number(f.get(s));return b[0]}if(d==="float16"&&tt){const s=new Float16Array(1);s[0]=0;for(let i=0;i<l;i++)s[0]+=Number(g.get(i))*Number(f.get(i));return Number(s[0])}if(d==="float32"){const s=new Float32Array(1);s[0]=0;for(let i=0;i<l;i++)s[0]+=Number(g.get(i))*Number(f.get(i));return s[0]}let c=0;for(let s=0;s<l;s++){const i=g.get(s),n=f.get(s);typeof i=="bigint"&&typeof n=="bigint"?c=(typeof c=="bigint"?c:BigInt(c))+i*n:c=(typeof c=="bigint"?Number(c):c)+Number(i)*Number(n)}return c}function Ve(t,e,g=-1){const f=t.ndim,l=e.ndim,u=g<0?f+g:g,p=g<0?l+g:g;if(u<0||u>=f)throw new Error(`vecdot: axis ${g} out of bounds for array with ${f} dimensions`);if(p<0||p>=l)throw new Error(`vecdot: axis ${g} out of bounds for array with ${l} dimensions`);const d=t.shape[u],b=e.shape[p];if(d!==b)throw new Error(`vecdot: axis dimensions must match, got ${d} and ${b}`);if(f===1&&l===1){if(!(T(t.dtype)||T(e.dtype)))return Z(t,e);const h=t.shape[0];let A=0,N=0;for(let I=0;I<h;I++){const S=t.get(I),x=e.get(I),D=S instanceof $?new $(S.re,-S.im):S,v=J(D,x);v instanceof $?(A+=v.re,N+=v.im):A+=Number(v)}return new $(A,N)}if(f===2&&l===2&&g===-1){const w=zt(t,e);if(w)return w}const c=[...t.shape.slice(0,u),...t.shape.slice(u+1)],s=[...e.shape.slice(0,p),...e.shape.slice(p+1)],i=d,n=T(t.dtype)||T(e.dtype),a=q(t.dtype,e.dtype),r=c.length>s.length?c:s,o=L(a);if(r.length===0){if(o){o[0]=0;for(let h=0;h<i;h++)o[0]+=Number(t.get(h))*Number(e.get(h));return o[0]}let w=n?new $(0,0):_(a)?0n:0;for(let h=0;h<i;h++){const A=t.get(h),N=e.get(h),I=A instanceof $?new $(A.re,-A.im):A,S=J(I,N);if(w instanceof $||S instanceof $){const x=w instanceof $?w:new $(Number(w),0),D=S instanceof $?S:new $(Number(S),0);w=x.add(D)}else typeof w=="bigint"||typeof S=="bigint"?w=BigInt(w)+BigInt(S):w=w+S}return w}const m=z.zeros(r,a),y=r.reduce((w,h)=>w*h,1);for(let w=0;w<y;w++){const h=[];let A=w;for(let S=r.length-1;S>=0;S--)h.unshift(A%r[S]),A=Math.floor(A/r[S]);const N=[...h.slice(0,u),0,...h.slice(u)],I=[...h.slice(0,p),0,...h.slice(p)];if(o){o[0]=0;for(let S=0;S<i;S++)N[u]=S,I[p]=S,o[0]+=Number(t.get(...N))*Number(e.get(...I));m.set(h,o[0])}else{let S=n?new $(0,0):_(a)?0n:0;for(let x=0;x<i;x++){N[u]=x,I[p]=x;const D=t.get(...N),v=e.get(...I),M=D instanceof $?new $(D.re,-D.im):D,C=J(M,v);if(S instanceof $||C instanceof $){const E=S instanceof $?S:new $(Number(S),0),F=C instanceof $?C:new $(Number(C),0);S=E.add(F)}else typeof S=="bigint"||typeof C=="bigint"?S=BigInt(S)+BigInt(C):S=S+C}m.set(h,S)}}return m}function Be(t){if(t.ndim<2)throw new Error(`matrix_transpose: input must have at least 2 dimensions, got ${t.ndim}D`);const e=Array.from({length:t.ndim},(f,l)=>l),g=e.length-1;return e[g]=g-1,e[g-1]=g,H(t,e)}function Re(t,e){return H(t,e)}function ke(t,e){if(t.ndim<2)throw new Error(`matvec: x1 must have at least 2 dimensions, got ${t.ndim}D`);if(e.ndim<1)throw new Error(`matvec: x2 must have at least 1 dimension, got ${e.ndim}D`);const g=t.shape[t.ndim-2],f=t.shape[t.ndim-1],l=e.shape[e.ndim-1];if(f!==l)throw new Error(`matvec: last axis of x1 (${f}) must match last axis of x2 (${l})`);if(t.ndim===2&&e.ndim===1)return Z(t,e);const u=t.shape.slice(0,-2),p=e.shape.slice(0,-1),d=Math.max(u.length,p.length),b=[...Array(d-u.length).fill(1),...u],c=[...Array(d-p.length).fill(1),...p],s=[];for(let m=0;m<d;m++){const y=b[m],w=c[m];if(y!==1&&w!==1&&y!==w)throw new Error(`matvec: batch dimensions not broadcastable: ${u} vs ${p}`);s.push(Math.max(y,w))}const i=[...s,g],n=q(t.dtype,e.dtype),a=z.zeros(i,n),r=T(n),o=s.reduce((m,y)=>m*y,1);for(let m=0;m<o;m++){const y=[];let w=m;for(let I=s.length-1;I>=0;I--)y.unshift(w%s[I]),w=Math.floor(w/s[I]);const h=y.slice(-(u.length||1)).map((I,S)=>(u[S]??1)===1?0:I),A=y.slice(-(p.length||1)).map((I,S)=>(p[S]??1)===1?0:I),N=L(n);for(let I=0;I<g;I++)if(N){N[0]=0;for(let S=0;S<f;S++){const x=[...h,I,S],D=[...A,S];N[0]+=Number(t.get(...x))*Number(e.get(...D))}a.set([...y,I],N[0])}else{let S=r?new $(0,0):_(n)?0n:0;for(let x=0;x<f;x++){const D=[...h,I,x],v=[...A,x],M=t.get(...D),C=e.get(...v),E=J(M,C);if(S instanceof $||E instanceof $){const F=S instanceof $?S:new $(Number(S),0),j=E instanceof $?E:new $(Number(E),0);S=F.add(j)}else typeof S=="bigint"||typeof E=="bigint"?S=BigInt(S)+BigInt(E):S=S+E}a.set([...y,I],S)}}return a}function qe(t,e){if(t.ndim<1)throw new Error(`vecmat: x1 must have at least 1 dimension, got ${t.ndim}D`);if(e.ndim<2)throw new Error(`vecmat: x2 must have at least 2 dimensions, got ${e.ndim}D`);const g=t.shape[t.ndim-1],f=e.shape[e.ndim-2],l=e.shape[e.ndim-1];if(g!==f)throw new Error(`vecmat: last axis of x1 (${g}) must match second-to-last axis of x2 (${f})`);if(t.ndim===1&&e.ndim===2)return Z(t,e);const u=t.shape.slice(0,-1),p=e.shape.slice(0,-2),d=Math.max(u.length,p.length),b=[...Array(d-u.length).fill(1),...u],c=[...Array(d-p.length).fill(1),...p],s=[];for(let m=0;m<d;m++){const y=b[m],w=c[m];if(y!==1&&w!==1&&y!==w)throw new Error(`vecmat: batch dimensions not broadcastable: ${u} vs ${p}`);s.push(Math.max(y,w))}const i=[...s,l],n=q(t.dtype,e.dtype),a=z.zeros(i,n),r=T(n),o=s.reduce((m,y)=>m*y,1);for(let m=0;m<o;m++){const y=[];let w=m;for(let I=s.length-1;I>=0;I--)y.unshift(w%s[I]),w=Math.floor(w/s[I]);const h=y.slice(-(u.length||1)).map((I,S)=>(u[S]??1)===1?0:I),A=y.slice(-(p.length||1)).map((I,S)=>(p[S]??1)===1?0:I),N=L(n);for(let I=0;I<l;I++)if(N){N[0]=0;for(let S=0;S<g;S++){const x=[...h,S],D=[...A,S,I];N[0]+=Number(t.get(...x))*Number(e.get(...D))}a.set([...y,I],N[0])}else{let S=r?new $(0,0):_(n)?0n:0;for(let x=0;x<g;x++){const D=[...h,x],v=[...A,x,I],M=t.get(...D),C=e.get(...v),E=J(M,C);if(S instanceof $||E instanceof $){const F=S instanceof $?S:new $(Number(S),0),j=E instanceof $?E:new $(Number(E),0);S=F.add(j)}else typeof S=="bigint"||typeof E=="bigint"?S=BigInt(S)+BigInt(E):S=S+E}a.set([...y,I],S)}}return a}function te(t){if(t.ndim<2)throw new Error(`slogdet: input must be at least 2D, got ${t.ndim}D`);if(t.ndim>2){const c=Array.from(t.shape).slice(0,-2),s=t.shape[t.ndim-1],i=t.shape[t.ndim-2];if(i!==s)throw new Error(`slogdet: last 2 dimensions must be square, got ${i}x${s}`);const n=c.reduce((m,y)=>m*y,1),a=new Float64Array(n),r=new Float64Array(n),o=O(t);for(let m=0;m<n;m++){const y=m*s*s,w=z.fromData(o.slice(y,y+s*s),[s,s],"float64"),{sign:h,logabsdet:A}=te(w);a[m]=h,r[m]=A}return{sign:z.fromData(a,c,"float64"),logabsdet:z.fromData(r,c,"float64")}}const[e,g]=t.shape;if(e!==g)throw new Error(`slogdet: matrix must be square, got ${e}x${g}`);const f=e;if(f===0)return{sign:1,logabsdet:0};const{lu:l,sign:u}=nt(t),p=l.data;let d=0,b=u;for(let c=0;c<f;c++){const s=p[c*f+c];if(s===0)return{sign:0,logabsdet:-1/0};s<0&&(b=-b),d+=Math.log(Math.abs(s))}return{sign:b,logabsdet:d}}function Te(t){return bt(t,!0,!1)}function _e(t){if(t.length<2)throw new Error("multi_dot: need at least 2 arrays");if(t.length===2)return X(t[0],t[1]);let e=t[0];for(let g=1;g<t.length;g++)e=X(e,t[g]);return e}function Oe(t,e=2){if(e<=0)throw new Error(`tensorinv: ind must be positive, got ${e}`);const g=t.shape,f=t.ndim;if(f<e)throw new Error(`tensorinv: array has ${f} dimensions, ind=${e} is too large`);let l=1;for(let c=0;c<e;c++)l*=g[c];let u=1;for(let c=e;c<f;c++)u*=g[c];if(l!==u)throw new Error(`tensorinv: product of first ${e} dimensions (${l}) must equal product of remaining dimensions (${u})`);const p=R.reshape(t,[l,u]),d=ot(p),b=[...g.slice(e),...g.slice(0,e)];return R.reshape(d,b)}function Ue(t,e,g){const f=t.shape,l=e.shape,u=t.ndim,p=e.ndim;let d;g==null?d=Array.from({length:p},(h,A)=>u-p+A):d=g.map(h=>h<0?u+h:h);const b=[];for(let h=0;h<u;h++)d.includes(h)||b.push(h);const c=[...b,...d],s=H(t,c),n=d.map(h=>f[h]).reduce((h,A)=>h*A,1),r=b.map(h=>f[h]).reduce((h,A)=>h*A,1),o=l.reduce((h,A)=>h*A,1);if(n!==o)throw new Error(`tensorsolve: dimensions don't match - sum dimensions product (${n}) != b total elements (${o})`);if(r!==n)throw new Error(`tensorsolve: non-square problem - other dimensions product (${r}) != sum dimensions product (${n})`);const m=R.reshape(s,[r,n]),y=R.reshape(e,[n]),w=Kt(m,y);return R.reshape(w,[...l])}function Le(t,...e){const g=t.indexOf("->");let f,l;g===-1?(f=t,l=dt(f)):(f=t.slice(0,g),l=t.slice(g+2));const u=f.split(",").map(n=>n.trim());if(u.length!==e.length)throw new Error(`einsum_path: expected ${u.length} operands, got ${e.length}`);const p=e.map(n=>Array.isArray(n)?n:Array.from(n.shape)),d=new Map;for(let n=0;n<e.length;n++){const a=u[n],r=p[n];if(a.length!==r.length)throw new Error(`einsum_path: operand ${n} has ${r.length} dimensions but subscript '${a}' has ${a.length} indices`);for(let o=0;o<a.length;o++){const m=a[o],y=r[o];if(d.has(m)&&d.get(m)!==y)throw new Error(`einsum_path: size mismatch for index '${m}': ${d.get(m)} vs ${y}`);d.set(m,y)}}if(e.length===1){const n=[[0]];return[n,ct(t,p,n,d)]}if(e.length===2){const n=[[0,1]];return[n,ct(t,p,n,d)]}const b=[],c=[...u],s=[...p],i=e.map((n,a)=>a);for(;c.length>1;){let n=0,a=1,r=1/0;for(let y=0;y<c.length;y++)for(let w=y+1;w<c.length;w++){const h=ee(c[y],c[w],s[y],s[w],l,d);h<r&&(r=h,n=y,a=w)}b.push([i[n],i[a]]);const[o,m]=re(c[n],c[a],s[n],s[a],l,d);c.splice(a,1),c.splice(n,1),s.splice(a,1),s.splice(n,1),i.splice(a,1),i.splice(n,1),c.push(o),s.push(m),i.push(-1)}return[b,ct(t,p,b,d)]}function ee(t,e,g,f,l,u){const p=new Set(t),d=new Set(e);let b=1;for(const c of p)b*=u.get(c)||1;for(const c of d)p.has(c)||(b*=u.get(c)||1);return b}function re(t,e,g,f,l,u){const p=new Set([...t,...e]),d=new Map;for(const i of t)d.set(i,(d.get(i)||0)+1);for(const i of e)d.set(i,(d.get(i)||0)+1);const b=new Set(l),c=[];for(const i of p)(b.has(i)||d.get(i)===1)&&c.push(i);c.sort();const s=c.map(i=>u.get(i));return[c.join(""),s]}function ct(t,e,g,f){const l=[];l.push(" Complete contraction: "+t),l.push(" Operand shapes: "+e.map(p=>`(${p.join(", ")})`).join(", ")),l.push(" Contraction path: "+JSON.stringify(g));let u=0;for(const p of e)u+=p.reduce((d,b)=>d*b,1);return l.push(" Estimated FLOPS: ~"+u.toExponential(2)),l.join(`
|
|
2
|
+
`)}export{Gt as cholesky,ze as cond,De as cross,Ht as det,xe as diagonal,Z as dot,wt as eig,At as eigh,Ee as eigvals,Fe as eigvalsh,Ne as einsum,Le as einsum_path,Ae as inner,ot as inv,Ie as kron,$e as lstsq,X as matmul,K as matrix_norm,Ce as matrix_power,Me as matrix_rank,Be as matrix_transpose,ke as matvec,_e as multi_dot,ve as norm,Wt as outer,Re as permute_dims,Yt as pinv,gt as qr,te as slogdet,Kt as solve,bt as svd,Te as svdvals,Se as tensordot,Oe as tensorinv,Ue as tensorsolve,we as trace,H as transpose,je as vdot,Ve as vecdot,qe as vecmat,rt as vector_norm};
|
|
@@ -1 +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.js";import{isBigIntDType as u,isComplexDType as y,isIntegerDType as N,throwIfComplex as D}from"../dtype.js";import{elementwiseComparisonOp as C}from"../internal/compute.js";import{broadcastShapes as I}from"../internal/compute.js";import{wasmLogicalAnd as L,wasmLogicalAndScalar as B}from"../wasm/logical_and.js";import{wasmLogicalOr as _,wasmLogicalOrScalar as v}from"../wasm/logical_or.js";import{wasmLogicalXor as k,wasmLogicalXorScalar as x}from"../wasm/logical_xor.js";import{wasmCopysign as X,wasmCopysignScalar as U}from"../wasm/copysign.js";import{wasmLogicalNot as E}from"../wasm/logical_not.js";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};
|