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 A}from"../storage";import{isBigIntDType as J}from"../dtype";const B=624,T=397,Y=2567483615,G=2147483648,U=2147483647;let I={mt:new Uint32Array(B),mti:B+1};function R(t){const r=I.mt;r[0]=t>>>0;for(let e=1;e<B;e++){const n=r[e-1]^r[e-1]>>>30;r[e]=Math.imul(1812433253,n)+e>>>0}I.mti=B}function L(){const t=I.mt;let r;const e=[0,Y];if(I.mti>=B){let n;for(I.mti===B+1&&R(5489),n=0;n<B-T;n++)r=t[n]&G|t[n+1]&U,t[n]=t[n+T]^r>>>1^e[r&1];for(;n<B-1;n++)r=t[n]&G|t[n+1]&U,t[n]=t[n+(T-B)]^r>>>1^e[r&1];r=t[B-1]&G|t[0]&U,t[B-1]=t[T-1]^r>>>1^e[r&1],I.mti=0}return r=t[I.mti++],r^=r>>>11,r^=r<<7&2636928640,r^=r<<15&4022730752,r^=r>>>18,r>>>0}function c(){const t=L()>>>5,r=L()>>>6;return(t*67108864+r)/9007199254740992}const $=2468251765,V=1492356589,z=1135663077,rr=2337405405,tr=3389127133,er=1232336661,N=16,q=4;function M(t){return t>>>0}function j(t,r){return t=M(M(t)^r.val),r.val=M(Math.imul(r.val,$)),t=M(Math.imul(t,r.val)),t=M(t^t>>>N),t}function nr(t,r){let e=M(M(Math.imul(tr,M(t)))-M(Math.imul(er,M(r))));return e=M(e^e>>>N),e}function or(t){const r=[0,0,0,0],e=[t>>>0],n={val:z};for(let a=0;a<q;a++)a<e.length?r[a]=j(e[a],n):r[a]=j(0,n);for(let a=0;a<q;a++)for(let i=0;i<q;i++)if(a!==i){const s=j(r[a],n);r[i]=nr(r[i],s)}return r}function ar(t,r){const e=[];let n=rr;for(let a=0;a<r;a++){const i=t[a%q];let s=M(i^n);n=M(Math.imul(n,V)),s=M(Math.imul(s,n)),s=M(s^s>>>N),e.push(s)}return e}const ur=BigInt("4865540595714422341"),sr=BigInt("2549297995355413924"),ir=sr<<BigInt(64)|ur,D=BigInt("0xffffffffffffffff"),C=(BigInt(1)<<BigInt(128))-BigInt(1);function mr(t){const r=t>>BigInt(64),e=t&D,n=(r^e)&D,a=Number(t>>BigInt(122));return(n>>BigInt(a)|n<<BigInt(64-a))&D}function k(t,r){return t*ir+r&C}function K(t){const r=or(t),e=ar(r,8),n=BigInt(e[0])|BigInt(e[1])<<BigInt(32),a=BigInt(e[2])|BigInt(e[3])<<BigInt(32),i=BigInt(e[4])|BigInt(e[5])<<BigInt(32),s=BigInt(e[6])|BigInt(e[7])<<BigInt(32),u=n<<BigInt(64)|a;let o=(i<<BigInt(64)|s)<<BigInt(1);o=(o|BigInt(1))&C;let m=BigInt(0);return m=k(m,o),m=m+u&C,m=k(m,o),{state:m,inc:o}}function cr(t){return t.state=k(t.state,t.inc),mr(t.state)}function lr(t){const e=cr(t)>>BigInt(11);return Number(e)/9007199254740992}class fr{constructor(r){if(r!==void 0)this._pcgState=K(r);else{const e=Math.floor(Math.random()*4294967296);this._pcgState=K(e)}}_randomFloat(){return lr(this._pcgState)}random(r){if(r===void 0)return this._randomFloat();const e=Array.isArray(r)?r:[r],n=e.reduce((s,u)=>s*u,1),a=A.zeros(e,"float64"),i=a.data;for(let s=0;s<n;s++)i[s]=this._randomFloat();return a}integers(r,e,n){if(e===void 0&&(e=r,r=0),n===void 0)return Math.floor(this._randomFloat()*(e-r))+r;const a=Array.isArray(n)?n:[n],i=a.reduce((m,f)=>m*f,1),s=A.zeros(a,"int64"),u=s.data,o=e-r;for(let m=0;m<i;m++)u[m]=BigInt(Math.floor(this._randomFloat()*o)+r);return s}standard_normal(r){if(r===void 0)return _(this._randomFloat.bind(this));const e=Array.isArray(r)?r:[r],n=e.reduce((s,u)=>s*u,1),a=A.zeros(e,"float64"),i=a.data;for(let s=0;s<n;s+=2){const[u,o]=E(this._randomFloat.bind(this));i[s]=u,s+1<n&&(i[s+1]=o)}return a}normal(r=0,e=1,n){if(n===void 0)return _(this._randomFloat.bind(this))*e+r;const a=Array.isArray(n)?n:[n],i=a.reduce((o,m)=>o*m,1),s=A.zeros(a,"float64"),u=s.data;for(let o=0;o<i;o+=2){const[m,f]=E(this._randomFloat.bind(this));u[o]=m*e+r,o+1<i&&(u[o+1]=f*e+r)}return s}uniform(r=0,e=1,n){if(n===void 0)return this._randomFloat()*(e-r)+r;const a=Array.isArray(n)?n:[n],i=a.reduce((m,f)=>m*f,1),s=A.zeros(a,"float64"),u=s.data,o=e-r;for(let m=0;m<i;m++)u[m]=this._randomFloat()*o+r;return s}choice(r,e,n=!0,a){return X(r,e,n,a,this._randomFloat.bind(this))}permutation(r){return H(r,this._randomFloat.bind(this))}shuffle(r){Q(r,this._randomFloat.bind(this))}exponential(r=1,e){if(e===void 0)return-Math.log(1-this._randomFloat())*r;const n=Array.isArray(e)?e:[e],a=n.reduce((u,o)=>u*o,1),i=A.zeros(n,"float64"),s=i.data;for(let u=0;u<a;u++)s[u]=-Math.log(1-this._randomFloat())*r;return i}poisson(r=1,e){if(e===void 0)return F(r,this._randomFloat.bind(this));const n=Array.isArray(e)?e:[e],a=n.reduce((u,o)=>u*o,1),i=A.zeros(n,"int64"),s=i.data;for(let u=0;u<a;u++)s[u]=BigInt(F(r,this._randomFloat.bind(this)));return i}binomial(r,e,n){if(n===void 0)return P(r,e,this._randomFloat.bind(this));const a=Array.isArray(n)?n:[n],i=a.reduce((o,m)=>o*m,1),s=A.zeros(a,"int64"),u=s.data;for(let o=0;o<i;o++)u[o]=BigInt(P(r,e,this._randomFloat.bind(this)));return s}}function hr(t){return new fr(t)}function gr(t){t==null&&(t=Math.floor(Date.now()^Math.random()*4294967296)),R(t>>>0)}function pr(){return{mt:Array.from(I.mt),mti:I.mti}}function Sr(t){I.mt=new Uint32Array(t.mt),I.mti=t.mti}function _(t){let r,e;do r=t(),e=t();while(r===0);return Math.sqrt(-2*Math.log(r))*Math.cos(2*Math.PI*e)}function E(t){let r,e;do r=t(),e=t();while(r===0);const n=Math.sqrt(-2*Math.log(r)),a=2*Math.PI*e;return[n*Math.cos(a),n*Math.sin(a)]}function F(t,r){if(t<30){const e=Math.exp(-t);let n=0,a=1;do n++,a*=r();while(a>e);return n-1}else{const e=_(r);return Math.max(0,Math.round(t+Math.sqrt(t)*e))}}function P(t,r,e){if(t*r<10&&t*(1-r)<10){let n=0;for(let a=0;a<t;a++)e()<r&&n++;return n}else{const n=t*r,a=Math.sqrt(t*r*(1-r)),i=_(e);return Math.max(0,Math.min(t,Math.round(n+a*i)))}}function O(t){if(t===void 0)return c();const r=Array.isArray(t)?t:[t],e=r.reduce((i,s)=>i*s,1),n=A.zeros(r,"float64"),a=n.data;for(let i=0;i<e;i++)a[i]=c();return n}function Mr(...t){if(t.length===0)return c();const r=t.reduce((a,i)=>a*i,1),e=A.zeros(t,"float64"),n=e.data;for(let a=0;a<r;a++)n[a]=c();return e}function wr(...t){if(t.length===0)return _(c);const r=t.reduce((a,i)=>a*i,1),e=A.zeros(t,"float64"),n=e.data;for(let a=0;a<r;a+=2){const[i,s]=E(c);n[a]=i,a+1<r&&(n[a+1]=s)}return e}function br(t,r,e,n="int64"){r==null&&(r=t,t=0);const a=r-t;if(e===void 0)return Math.floor(c()*a)+t;const i=Array.isArray(e)?e:[e],s=i.reduce((m,f)=>m*f,1),u=A.zeros(i,n),o=u.data;if(J(n)){const m=o;for(let f=0;f<s;f++)m[f]=BigInt(Math.floor(c()*a)+t)}else{const m=o;for(let f=0;f<s;f++)m[f]=Math.floor(c()*a)+t}return u}function xr(t=0,r=1,e){if(e===void 0)return c()*(r-t)+t;const n=Array.isArray(e)?e:[e],a=n.reduce((o,m)=>o*m,1),i=A.zeros(n,"float64"),s=i.data,u=r-t;for(let o=0;o<a;o++)s[o]=c()*u+t;return i}function Ir(t=0,r=1,e){if(e===void 0)return _(c)*r+t;const n=Array.isArray(e)?e:[e],a=n.reduce((u,o)=>u*o,1),i=A.zeros(n,"float64"),s=i.data;for(let u=0;u<a;u+=2){const[o,m]=E(c);s[u]=o*r+t,u+1<a&&(s[u+1]=m*r+t)}return i}function _r(t){if(t===void 0)return _(c);const r=Array.isArray(t)?t:[t],e=r.reduce((i,s)=>i*s,1),n=A.zeros(r,"float64"),a=n.data;for(let i=0;i<e;i+=2){const[s,u]=E(c);a[i]=s,i+1<e&&(a[i+1]=u)}return n}function dr(t=1,r){if(r===void 0)return-Math.log(1-c())*t;const e=Array.isArray(r)?r:[r],n=e.reduce((s,u)=>s*u,1),a=A.zeros(e,"float64"),i=a.data;for(let s=0;s<n;s++)i[s]=-Math.log(1-c())*t;return a}function Br(t=1,r){if(r===void 0)return F(t,c);const e=Array.isArray(r)?r:[r],n=e.reduce((s,u)=>s*u,1),a=A.zeros(e,"int64"),i=a.data;for(let s=0;s<n;s++)i[s]=BigInt(F(t,c));return a}function Fr(t,r,e){if(e===void 0)return P(t,r,c);const n=Array.isArray(e)?e:[e],a=n.reduce((u,o)=>u*o,1),i=A.zeros(n,"int64"),s=i.data;for(let u=0;u<a;u++)s[u]=BigInt(P(t,r,c));return i}function X(t,r,e=!0,n,a=c){let i;if(typeof t=="number")i=Array.from({length:t},(d,l)=>l);else{const d=t.size;i=[];for(let l=0;l<d;l++)i.push(Number(t.iget(l)))}const s=i.length;if(s===0)throw new Error("cannot take a sample from an empty sequence");let u;if(n!==void 0){if(Array.isArray(n))u=n;else{const l=n.size;u=[];for(let y=0;y<l;y++)u.push(Number(n.iget(y)))}if(u.length!==s)throw new Error("p and a must have the same size");const d=u.reduce((l,y)=>l+y,0);Math.abs(d-1)>1e-10&&(u=u.map(l=>l/d))}if(r===void 0){if(u){const d=a();let l=0;for(let y=0;y<s;y++)if(l+=u[y],d<l)return i[y];return i[s-1]}return i[Math.floor(a()*s)]}const o=Array.isArray(r)?r:[r],m=o.reduce((d,l)=>d*l,1);if(!e&&m>s)throw new Error("cannot take a larger sample than population when replace=false");const f=A.zeros(o,"float64"),g=f.data;if(e)if(u){const d=new Array(s);d[0]=u[0];for(let l=1;l<s;l++)d[l]=d[l-1]+u[l];for(let l=0;l<m;l++){const y=a();let b=0;for(;b<s-1&&y>=d[b];)b++;g[l]=i[b]}}else for(let d=0;d<m;d++)g[d]=i[Math.floor(a()*s)];else{const d=[...i],l=u?[...u]:void 0;for(let y=0;y<m;y++){let b;if(l){const h=l.reduce((x,v)=>x+v,0),p=a()*h;let S=0;b=0;for(let x=0;x<d.length;x++)if(S+=l[x],p<S){b=x;break}b===0&&p>=S&&(b=d.length-1)}else b=Math.floor(a()*d.length);g[y]=d[b],d.splice(b,1),l&&l.splice(b,1)}}return f}function vr(t,r,e=!0,n){return X(t,r,e,n,c)}function H(t,r=c){let e;if(typeof t=="number"){const a=new Float64Array(t);for(let i=0;i<t;i++)a[i]=i;e=A.fromData(a,[t],"float64")}else e=t.copy();const n=e.size;for(let a=n-1;a>0;a--){const i=Math.floor(r()*(a+1)),s=e.iget(a);e.iset(a,e.iget(i)),e.iset(i,s)}return e}function Er(t){return H(t,c)}function Q(t,r=c){const e=t.size;for(let n=e-1;n>0;n--){const a=Math.floor(r()*(n+1)),i=t.iget(n);t.iset(n,t.iget(a)),t.iset(a,i)}}function Pr(t){Q(t,c)}function Tr(t){return O(t)}function qr(t){return O(t)}function Gr(t){return O(t)}function Ur(t,r,e){return r===void 0&&(r=t,t=1),br(t,r+1,e)}function Lr(t){const r=new Uint8Array(t);for(let e=0;e<t;e++)r[e]=L()&255;return r}let W={name:"MT19937",state:I};function Nr(){return W}function jr(t){W=t}function Dr(t){return dr(1,t)}function Cr(t,r){if(t<=0)throw new Error("shape must be positive");return Z(t,1,r)}function kr(t){if(t===void 0)return Math.tan(Math.PI*(c()-.5));const r=Array.isArray(t)?t:[t],e=r.reduce((i,s)=>i*s,1),n=A.zeros(r,"float64"),a=n.data;for(let i=0;i<e;i++)a[i]=Math.tan(Math.PI*(c()-.5));return n}function Or(t,r){if(t<=0)throw new Error("df must be positive");const e=u=>{const o=_(u),m=w(t/2,2,u);return o/Math.sqrt(m/t)};if(r===void 0)return e(c);const n=Array.isArray(r)?r:[r],a=n.reduce((u,o)=>u*o,1),i=A.zeros(n,"float64"),s=i.data;for(let u=0;u<a;u++)s[u]=e(c);return i}function w(t,r,e){if(t<1){const i=e();return w(1+t,r,e)*Math.pow(i,1/t)}const n=t-1/3,a=1/Math.sqrt(9*n);for(;;){let i,s;do i=_(e),s=1+a*i;while(s<=0);s=s*s*s;const u=e(),o=i*i;if(u<1-.0331*o*o||Math.log(u)<.5*o+n*(1-s+Math.log(s)))return n*s*r}}function Z(t,r=1,e){if(t<=0)throw new Error("shape must be positive");if(r<=0)throw new Error("scale must be positive");if(e===void 0)return w(t,r,c);const n=Array.isArray(e)?e:[e],a=n.reduce((u,o)=>u*o,1),i=A.zeros(n,"float64"),s=i.data;for(let u=0;u<a;u++)s[u]=w(t,r,c);return i}function Rr(t,r,e){if(t<=0||r<=0)throw new Error("a and b must be positive");const n=o=>{const m=w(t,1,o),f=w(r,1,o);return m/(m+f)};if(e===void 0)return n(c);const a=Array.isArray(e)?e:[e],i=a.reduce((o,m)=>o*m,1),s=A.zeros(a,"float64"),u=s.data;for(let o=0;o<i;o++)u[o]=n(c);return s}function Kr(t=0,r=1,e){if(r<=0)throw new Error("scale must be positive");const n=o=>{const m=o()-.5;return t-r*Math.sign(m)*Math.log(1-2*Math.abs(m))};if(e===void 0)return n(c);const a=Array.isArray(e)?e:[e],i=a.reduce((o,m)=>o*m,1),s=A.zeros(a,"float64"),u=s.data;for(let o=0;o<i;o++)u[o]=n(c);return s}function Xr(t=0,r=1,e){if(r<=0)throw new Error("scale must be positive");const n=o=>{const m=o();return t+r*Math.log(m/(1-m))};if(e===void 0)return n(c);const a=Array.isArray(e)?e:[e],i=a.reduce((o,m)=>o*m,1),s=A.zeros(a,"float64"),u=s.data;for(let o=0;o<i;o++)u[o]=n(c);return s}function Hr(t=0,r=1,e){if(r<=0)throw new Error("sigma must be positive");const n=o=>Math.exp(t+r*_(o));if(e===void 0)return n(c);const a=Array.isArray(e)?e:[e],i=a.reduce((o,m)=>o*m,1),s=A.zeros(a,"float64"),u=s.data;for(let o=0;o<i;o++)u[o]=n(c);return s}function Qr(t=0,r=1,e){if(r<=0)throw new Error("scale must be positive");const n=o=>{const m=o();return t-r*Math.log(-Math.log(m))};if(e===void 0)return n(c);const a=Array.isArray(e)?e:[e],i=a.reduce((o,m)=>o*m,1),s=A.zeros(a,"float64"),u=s.data;for(let o=0;o<i;o++)u[o]=n(c);return s}function Wr(t,r){if(t<=0)throw new Error("a must be positive");const e=u=>{const o=u();return Math.pow(1-o,-1/t)-1};if(r===void 0)return e(c);const n=Array.isArray(r)?r:[r],a=n.reduce((u,o)=>u*o,1),i=A.zeros(n,"float64"),s=i.data;for(let u=0;u<a;u++)s[u]=e(c);return i}function Zr(t,r){if(t<=0)throw new Error("a must be positive");const e=u=>{const o=u();return Math.pow(o,1/t)};if(r===void 0)return e(c);const n=Array.isArray(r)?r:[r],a=n.reduce((u,o)=>u*o,1),i=A.zeros(n,"float64"),s=i.data;for(let u=0;u<a;u++)s[u]=e(c);return i}function Jr(t=1,r){if(t<=0)throw new Error("scale must be positive");const e=u=>{const o=u();return t*Math.sqrt(-2*Math.log(o))};if(r===void 0)return e(c);const n=Array.isArray(r)?r:[r],a=n.reduce((u,o)=>u*o,1),i=A.zeros(n,"float64"),s=i.data;for(let u=0;u<a;u++)s[u]=e(c);return i}function Yr(t,r,e,n){if(t>r||r>e||t===e)throw new Error("must have left <= mode <= right and left < right");const a=m=>{const f=m(),g=(r-t)/(e-t);return f<g?t+Math.sqrt(f*(e-t)*(r-t)):e-Math.sqrt((1-f)*(e-t)*(e-r))};if(n===void 0)return a(c);const i=Array.isArray(n)?n:[n],s=i.reduce((m,f)=>m*f,1),u=A.zeros(i,"float64"),o=u.data;for(let m=0;m<s;m++)o[m]=a(c);return u}function $r(t,r,e){if(t<=0)throw new Error("mean must be positive");if(r<=0)throw new Error("scale must be positive");const n=o=>{const m=_(o),f=m*m,g=t/(2*r),d=t+g*(t*f-Math.sqrt(4*t*r*f+t*t*f*f));return o()<=t/(t+d)?d:t*t/d};if(e===void 0)return n(c);const a=Array.isArray(e)?e:[e],i=a.reduce((o,m)=>o*m,1),s=A.zeros(a,"float64"),u=s.data;for(let o=0;o<i;o++)u[o]=n(c);return s}function Vr(t,r){if(t<=0)throw new Error("a must be positive");const e=u=>{const o=u();return Math.pow(-Math.log(1-o),1/t)};if(r===void 0)return e(c);const n=Array.isArray(r)?r:[r],a=n.reduce((u,o)=>u*o,1),i=A.zeros(n,"float64"),s=i.data;for(let u=0;u<a;u++)s[u]=e(c);return i}function zr(t,r){if(t<=0)throw new Error("df must be positive");return Z(t/2,2,r)}function rt(t,r,e){if(t<=0)throw new Error("df must be positive");if(r<0)throw new Error("nonc must be non-negative");const n=o=>{if(r===0)return w(t/2,2,o);const m=F(r/2,o);return w(t/2+m,2,o)};if(e===void 0)return n(c);const a=Array.isArray(e)?e:[e],i=a.reduce((o,m)=>o*m,1),s=A.zeros(a,"float64"),u=s.data;for(let o=0;o<i;o++)u[o]=n(c);return s}function tt(t,r,e){if(t<=0)throw new Error("dfnum must be positive");if(r<=0)throw new Error("dfden must be positive");const n=o=>{const m=w(t/2,2,o),f=w(r/2,2,o);return m/t/(f/r)};if(e===void 0)return n(c);const a=Array.isArray(e)?e:[e],i=a.reduce((o,m)=>o*m,1),s=A.zeros(a,"float64"),u=s.data;for(let o=0;o<i;o++)u[o]=n(c);return s}function et(t,r,e,n){if(t<=0)throw new Error("dfnum must be positive");if(r<=0)throw new Error("dfden must be positive");if(e<0)throw new Error("nonc must be non-negative");const a=m=>{const f=w(e===0?t/2:t/2+F(e/2,m),2,m),g=w(r/2,2,m);return f/t/(g/r)};if(n===void 0)return a(c);const i=Array.isArray(n)?n:[n],s=i.reduce((m,f)=>m*f,1),u=A.zeros(i,"float64"),o=u.data;for(let m=0;m<s;m++)o[m]=a(c);return u}function nt(t,r){if(t<=0||t>1)throw new Error("p must be in (0, 1]");const e=u=>{if(t===1)return 1;const o=u();return Math.floor(Math.log(o)/Math.log(1-t))+1};if(r===void 0)return e(c);const n=Array.isArray(r)?r:[r],a=n.reduce((u,o)=>u*o,1),i=A.zeros(n,"int64"),s=i.data;for(let u=0;u<a;u++)s[u]=BigInt(e(c));return i}function ot(t,r,e,n){if(t<0)throw new Error("ngood must be non-negative");if(r<0)throw new Error("nbad must be non-negative");if(e<0)throw new Error("nsample must be non-negative");if(e>t+r)throw new Error("nsample must be <= ngood + nbad");const a=m=>{let f=t,g=r,d=0,l=e;for(;l>0;){const y=f+g;if(y===0)break;m()<f/y?(d++,f--):g--,l--}return d};if(n===void 0)return a(c);const i=Array.isArray(n)?n:[n],s=i.reduce((m,f)=>m*f,1),u=A.zeros(i,"int64"),o=u.data;for(let m=0;m<s;m++)o[m]=BigInt(a(c));return u}function at(t,r){if(t<=0||t>=1)throw new Error("p must be in (0, 1)");const e=Math.log(1-t),n=o=>{const m=o(),f=o(),g=1-Math.exp(e*m);if(f>=g||f===0)return 1;const d=Math.log(f),l=Math.log(g);return d>=l?1:d>=2*l?2:Math.floor(1+d/l)};if(r===void 0)return n(c);const a=Array.isArray(r)?r:[r],i=a.reduce((o,m)=>o*m,1),s=A.zeros(a,"int64"),u=s.data;for(let o=0;o<i;o++)u[o]=BigInt(n(c));return s}function ut(t,r,e){if(t<=0)throw new Error("n must be positive");if(r<=0||r>1)throw new Error("p must be in (0, 1]");const n=o=>{if(r===1)return 0;const m=w(t,(1-r)/r,o);return F(m,o)};if(e===void 0)return n(c);const a=Array.isArray(e)?e:[e],i=a.reduce((o,m)=>o*m,1),s=A.zeros(a,"int64"),u=s.data;for(let o=0;o<i;o++)u[o]=BigInt(n(c));return s}function st(t,r){if(t<=1)throw new Error("a must be > 1");const e=t-1,n=Math.pow(2,e),a=m=>{for(;;){const f=1-m(),g=m(),d=Math.floor(Math.pow(f,-1/e)),l=Math.pow(1+1/d,e);if(g*d*(l-1)/(n-1)<=l/n)return d}};if(r===void 0)return a(c);const i=Array.isArray(r)?r:[r],s=i.reduce((m,f)=>m*f,1),u=A.zeros(i,"int64"),o=u.data;for(let m=0;m<s;m++)o[m]=BigInt(a(c));return u}function it(t,r,e){const n=Array.isArray(r)?r:Array.from({length:r.size},(l,y)=>Number(r.iget(y))),a=n.length;if(a===0)throw new Error("pvals must have at least one element");const i=n.reduce((l,y)=>l+y,0),s=n.map(l=>l/i),u=l=>{const y=new Array(a).fill(0);let b=t,h=1;for(let p=0;p<a-1&&b>0;p++){const S=s[p]/h,x=P(b,Math.min(1,Math.max(0,S)),l);y[p]=x,b-=x,h-=s[p]}return y[a-1]=b,y};if(e===void 0){const l=u(c),y=A.zeros([a],"int64"),b=y.data;for(let h=0;h<a;h++)b[h]=BigInt(l[h]);return y}const o=Array.isArray(e)?e:[e],m=o.reduce((l,y)=>l*y,1),f=[...o,a],g=A.zeros(f,"int64"),d=g.data;for(let l=0;l<m;l++){const y=u(c);for(let b=0;b<a;b++)d[l*a+b]=BigInt(y[b])}return g}function mt(t,r,e,n="warn",a=1e-8){const i=Array.isArray(t)?t:Array.from({length:t.size},(b,h)=>Number(t.iget(h))),s=i.length;let u;if(Array.isArray(r))u=r;else{u=[];for(let b=0;b<s;b++){u.push([]);for(let h=0;h<s;h++)u[b].push(Number(r.iget(b*s+h)))}}const o=Array(s).fill(0).map(()=>Array(s).fill(0));for(let b=0;b<s;b++)for(let h=0;h<=b;h++){let p=u[b][h];for(let S=0;S<h;S++)p-=o[b][S]*o[h][S];if(b===h){if(p<-a){if(n==="raise")throw new Error("covariance matrix is not positive semi-definite");n==="warn"&&console.warn("covariance matrix is not positive semi-definite"),p=0}o[b][h]=Math.sqrt(Math.max(0,p))}else o[b][h]=o[h][h]!==0?p/o[h][h]:0}const m=b=>{const h=[];for(let S=0;S<s;S++)h.push(_(b));const p=[];for(let S=0;S<s;S++){let x=i[S];for(let v=0;v<=S;v++)x+=o[S][v]*h[v];p.push(x)}return p};if(e===void 0){const b=m(c),h=A.zeros([s],"float64"),p=h.data;for(let S=0;S<s;S++)p[S]=b[S];return h}const f=Array.isArray(e)?e:[e],g=f.reduce((b,h)=>b*h,1),d=[...f,s],l=A.zeros(d,"float64"),y=l.data;for(let b=0;b<g;b++){const h=m(c);for(let p=0;p<s;p++)y[b*s+p]=h[p]}return l}function ct(t,r){const e=Array.isArray(t)?t:Array.from({length:t.size},(f,g)=>Number(t.iget(g))),n=e.length;if(n<2)throw new Error("alpha must have at least 2 elements");for(const f of e)if(f<=0)throw new Error("all alpha values must be positive");const a=f=>{const g=[];let d=0;for(let l=0;l<n;l++){const y=w(e[l],1,f);g.push(y),d+=y}return g.map(l=>l/d)};if(r===void 0){const f=a(c),g=A.zeros([n],"float64"),d=g.data;for(let l=0;l<n;l++)d[l]=f[l];return g}const i=Array.isArray(r)?r:[r],s=i.reduce((f,g)=>f*g,1),u=[...i,n],o=A.zeros(u,"float64"),m=o.data;for(let f=0;f<s;f++){const g=a(c);for(let d=0;d<n;d++)m[f*n+d]=g[d]}return o}function lt(t,r,e){if(r<0)throw new Error("kappa must be non-negative");const n=o=>{if(r===0)return 2*Math.PI*o()-Math.PI;const m=1+Math.sqrt(1+4*r*r),f=(m-Math.sqrt(2*m))/(2*r),g=(1+f*f)/(2*f);for(;;){const d=o(),l=Math.cos(Math.PI*d),y=(1+g*l)/(g+l),b=r*(g-y),h=o();if(b*(2-b)>h||Math.log(b/h)+1-b>=0)return((o()>.5?Math.acos(y):-Math.acos(y))+t+Math.PI)%(2*Math.PI)-Math.PI}};if(e===void 0)return n(c);const a=Array.isArray(e)?e:[e],i=a.reduce((o,m)=>o*m,1),s=A.zeros(a,"float64"),u=s.data;for(let o=0;o<i;o++)u[o]=n(c);return s}export{fr as Generator,Rr as beta,Fr as binomial,Lr as bytes,zr as chisquare,vr as choice,hr as default_rng,ct as dirichlet,dr as exponential,tt as f,Z as gamma,nt as geometric,Nr as get_bit_generator,pr as get_state,Qr as gumbel,ot as hypergeometric,Kr as laplace,Xr as logistic,Hr as lognormal,at as logseries,it as multinomial,mt as multivariate_normal,ut as negative_binomial,rt as noncentral_chisquare,et as noncentral_f,Ir as normal,Wr as pareto,Er as permutation,Br as poisson,Zr as power,Mr as rand,br as randint,wr as randn,O as random,Ur as random_integers,Tr as random_sample,qr as ranf,Jr as rayleigh,Gr as sample,gr as seed,jr as set_bit_generator,Sr as set_state,Pr as shuffle,kr as standard_cauchy,Dr as standard_exponential,Cr as standard_gamma,_r as standard_normal,Or as standard_t,Yr as triangular,xr as uniform,lt as vonmises,$r as wald,Vr as weibull,st as zipf};
|
|
1
|
+
import{ArrayStorage as y}from"../storage.js";import{svd as yr}from"../ops/linalg.js";import{isBigIntDType as dr}from"../dtype.js";import{initMT19937 as hr,mt19937Uint32 as $,mt19937Float64 as S,getMT19937State as gr,setMT19937State as pr,initPCG64FromSeed as Sr,pcg64Float64 as R,pcg64SaveState as er,pcg64RestoreState as wr,pcg64BoundedUint64 as V,standardNormalPCG as nr,standardExponentialPCG as Mr,legacyGauss as L,legacyGaussReset as ar,legacyStandardExponential as Z,fillUniformF64MT as z,fillUniformF64PCG as or,fillStandardNormalPCG as ur,fillStandardExponentialPCG as xr,fillLegacyGauss as O,fillLegacyStandardExponential as vr,fillRkInterval as Dr,wasmLegacyStandardGamma as ir,fillLegacyStandardGamma as sr,fillLegacyChisquare as Fr,fillPareto as _r,fillPower as Er,fillWeibull as Ir,fillLogistic as Br,fillGumbel as qr,fillLaplace as Ur,fillRayleigh as Gr,fillTriangular as Nr,fillStandardCauchy as Pr,fillLognormal as Tr,fillWald as Cr,fillStandardT as kr,fillBeta as Xr,fillF as Lr,fillNoncentralChisquare as jr,fillNoncentralF as Rr,fillGeometric as Yr,fillPoisson as Wr,fillBinomial as Hr,fillNegativeBinomial as Vr,fillHypergeometric as Zr,fillLogseries as Or,fillZipf as Jr,fillVonmises as Kr,fillRandintI64 as Qr,fillRandintU8 as $r,fillRandintU16 as zr,fillPermutation as rt,fillPermutationPCG as mr,fillBoundedUint64PCG as tt}from"../wasm/rng.js";class et{constructor(t){const n=t!==void 0?t:Math.floor(Math.random()*4294967296);Sr(n),this._state=er()}_withState(t){wr(this._state);const n=t();return this._state=er(),n}random(t){return this._withState(()=>{if(t===void 0)return R();const n=Array.isArray(t)?t:[t],e=n.reduce((s,o)=>s*o,1),u=or(e);return y.fromData(new Float64Array(u),n,"float64")})}integers(t,n,e){return this._withState(()=>{n===void 0&&(n=t,t=0);const u=n-t-1;if(e===void 0)return Number(V(t,u));const s=Array.isArray(e)?e:[e],o=s.reduce((i,m)=>i*m,1),a=tt(o,t,u);return y.fromData(new BigInt64Array(a),s,"int64")})}standard_normal(t){return this._withState(()=>{if(t===void 0)return nr();const n=Array.isArray(t)?t:[t],e=n.reduce((s,o)=>s*o,1),u=ur(e);return y.fromData(new Float64Array(u),n,"float64")})}normal(t=0,n=1,e){return this._withState(()=>{if(e===void 0)return nr()*n+t;const u=Array.isArray(e)?e:[e],s=u.reduce((i,m)=>i*m,1),o=ur(s),a=new Float64Array(s);for(let i=0;i<s;i++)a[i]=o[i]*n+t;return y.fromData(a,u,"float64")})}uniform(t=0,n=1,e){return this._withState(()=>{if(e===void 0)return R()*(n-t)+t;const u=Array.isArray(e)?e:[e],s=u.reduce((m,l)=>m*l,1),o=or(s),a=new Float64Array(s),i=n-t;for(let m=0;m<s;m++)a[m]=o[m]*i+t;return y.fromData(a,u,"float64")})}choice(t,n,e=!0,u){return this._withState(()=>cr(t,n,e,u,R,!0))}permutation(t){return this._withState(()=>K(t,R,!0))}shuffle(t){this._withState(()=>{br(t,R,!0)})}exponential(t=1,n){return this._withState(()=>{if(n===void 0)return Mr()*t;const e=Array.isArray(n)?n:[n],u=e.reduce((a,i)=>a*i,1),s=xr(u),o=new Float64Array(u);for(let a=0;a<u;a++)o[a]=s[a]*t;return y.fromData(o,e,"float64")})}poisson(t=1,n){return this._withState(()=>{if(n===void 0)return H(t,R);const e=Array.isArray(n)?n:[n],u=e.reduce((a,i)=>a*i,1),s=y.zeros(e,"int64"),o=s.data;for(let a=0;a<u;a++)o[a]=BigInt(H(t,R));return s})}binomial(t,n,e){return this._withState(()=>{if(e===void 0)return J(t,n,R);const u=Array.isArray(e)?e:[e],s=u.reduce((i,m)=>i*m,1),o=y.zeros(u,"int64"),a=o.data;for(let i=0;i<s;i++)a[i]=BigInt(J(t,n,R));return o})}}function At(r){return new et(r)}function yt(r){r==null&&(r=Math.floor(Date.now()^Math.random()*4294967296)),hr(r>>>0),ar()}function dt(){const{mt:r,mti:t}=gr();return{mt:Array.from(r),mti:t}}function ht(r){pr(new Uint32Array(r.mt),r.mti),ar()}function nt(r){if(r===0)return 0;let t=r;t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16;let n;do n=($()&t)>>>0;while(n>r);return n}function Y(r){const t=[.08333333333333333,-.002777777777777778,.0007936507936507937,-.0005952380952380952,.0008417508417508418,-.001917526917526918,.00641025641025641,-.02955065359477124,.1796443723688307,-1.3924322169059];if(r===1||r===2)return 0;let n;r<7?n=Math.floor(7-r):n=0;let e=r+n;const u=1/e*(1/e),s=1.8378770664093453;let o=t[9];for(let i=8;i>=0;i--)o*=u,o+=t[i];let a=o/e+.5*s+(e-.5)*Math.log(e)-e;if(r<7)for(let i=1;i<=n;i++)a-=Math.log(e-1),e-=1;return a}function W(r){return ir(r)}function j(r){return 2*W(r/2)}function at(r,t,n){const e=t+r-n;let u=Math.min(t,r),s=u,o=n;for(;s>0;){const i=S();if(s-=Math.floor(i+s/(e+o)),o--,o===0)break}const a=u-s;return r>t?n-a:a}function ot(r,t,n){const e=1.7155277699214135,u=.8989161620588988,s=Math.min(r,t),o=r+t,a=Math.max(r,t),i=Math.min(n,o-n),m=s/o,l=1-m,g=i*m+.5,d=Math.sqrt((o-i)*n*m*l/(o-1)+.5),c=e*d+u,f=Math.floor((i+1)*(s+1)/(o+2)),b=Y(f+1)+Y(s-f+1)+Y(i-f+1)+Y(a-i+f+1),A=Math.min(Math.min(i,s)+1,Math.floor(g+16*d));let h;for(;;){const D=S(),v=S(),p=g+c*(v-.5)/D;if(p<0||p>=A)continue;h=Math.floor(p);const M=b-(Y(h+1)+Y(s-h+1)+Y(i-h+1)+Y(a-i+h+1));if(D*(4-D)-3<=M)break;if(!(D*(D-M)>=1)&&2*Math.log(D)<=M)break}return r>t&&(h=i-h),i<n&&(h=r-h),h}function ut(r,t){const n=Math.exp(-r);let e=0,u=1;for(;;){const s=t();if(u*=s,u>n)e+=1;else return e}}function it(r,t){const n=Math.sqrt(r),e=Math.log(r),u=.931+2.53*n,s=-.059+.02483*u,o=1.1239+1.1328/(u-3.4),a=.9277-3.6224/(u-2);for(;;){const i=t()-.5,m=t(),l=.5-Math.abs(i),g=Math.floor((2*s/l+u)*i+r+.43);if(l>=.07&&m<=a)return g;if(!(g<0||l<.013&&m>l)&&Math.log(m)+Math.log(o)-Math.log(s/(l*l)+u)<=-r+g*e-Y(g+1))return g}}function H(r,t){return r>=10?it(r,t):r===0?0:ut(r,t)}function st(){return{has_binomial:!1,nsave:0,psave:0,r:0,q:0,fm:0,m:0,p1:0,xm:0,xl:0,xr:0,c:0,laml:0,lamr:0,p2:0,p3:0,p4:0}}function fr(r,t,n,e){let u,s,o,a,i,m,l,g,d,c,f,b,A,h,D,v,p,M,G,B,E,I,q,N,P,T,C,k,U,X,Q,x,w,F;!e.has_binomial||e.nsave!==r||e.psave!==t?(e.nsave=r,e.psave=t,e.has_binomial=!0,e.r=u=Math.min(t,1-t),e.q=s=1-u,e.fm=o=r*u+u,e.m=x=Math.floor(o),e.p1=a=Math.floor(2.195*Math.sqrt(r*u*s)-4.6*s)+.5,e.xm=i=x+.5,e.xl=m=i-a,e.xr=l=i+a,e.c=g=.134+20.5/(15.3+x),h=(o-m)/(o-m*u),e.laml=d=h*(1+h/2),h=(l-o)/(l*s),e.lamr=c=h*(1+h/2),e.p2=f=a*(1+2*g),e.p3=b=f+g/d,e.p4=A=b+g/c):(u=e.r,s=e.q,x=e.m,a=e.p1,i=e.xm,m=e.xl,l=e.xr,g=e.c,d=e.laml,c=e.lamr,f=e.p2,b=e.p3,A=e.p4);r:for(;;){if(I=r*u*s,D=n()*A,v=n(),D<=a)w=Math.floor(i-a*v+D);else if(D<=f){if(Q=m+(D-a)/g,v=v*g+1-Math.abs(x-Q+.5)/a,v>1)continue r;if(w=Math.floor(Q),F=Math.abs(w-x),F>20&&F<I/2-1){if(G=F/I*((F*(F/3+.625)+.16666666666666666)/I+.5),B=-F*F/(2*I),E=Math.log(v),!(E<B-G)){if(E>B+G)continue r;if(q=w+1,P=x+1,C=r+1-x,U=r-w+1,N=q*q,T=P*P,k=C*C,X=U*U,E>i*Math.log(P/q)+(r-x+.5)*Math.log(C/U)+(w-x)*Math.log(U*u/(q*s))+(13680-(462-(132-(99-140/T)/T)/T)/T)/P/166320+(13680-(462-(132-(99-140/k)/k)/k)/k)/C/166320+(13680-(462-(132-(99-140/N)/N)/N)/N)/q/166320+(13680-(462-(132-(99-140/X)/X)/X)/X)/U/166320)continue r}}else{if(p=u/s,h=p*(r+1),M=1,x<w)for(let _=x+1;_<=w;_++)M*=h/_-p;else if(x>w)for(let _=w+1;_<=x;_++)M/=h/_-p;if(v>M)continue r}}else if(D<=b){if(w=Math.floor(m+Math.log(v)/d),w<0||v===0)continue r;if(v=v*(D-f)*d,F=Math.abs(w-x),F>20&&F<I/2-1){if(G=F/I*((F*(F/3+.625)+.16666666666666666)/I+.5),B=-F*F/(2*I),E=Math.log(v),!(E<B-G)){if(E>B+G)continue r;if(q=w+1,P=x+1,C=r+1-x,U=r-w+1,N=q*q,T=P*P,k=C*C,X=U*U,E>i*Math.log(P/q)+(r-x+.5)*Math.log(C/U)+(w-x)*Math.log(U*u/(q*s))+(13680-(462-(132-(99-140/T)/T)/T)/T)/P/166320+(13680-(462-(132-(99-140/k)/k)/k)/k)/C/166320+(13680-(462-(132-(99-140/N)/N)/N)/N)/q/166320+(13680-(462-(132-(99-140/X)/X)/X)/X)/U/166320)continue r}}else{if(p=u/s,h=p*(r+1),M=1,x<w)for(let _=x+1;_<=w;_++)M*=h/_-p;else if(x>w)for(let _=w+1;_<=x;_++)M/=h/_-p;if(v>M)continue r}}else{if(w=Math.floor(l-Math.log(v)/c),w>r||v===0)continue r;if(v=v*(D-b)*c,F=Math.abs(w-x),F>20&&F<I/2-1){if(G=F/I*((F*(F/3+.625)+.16666666666666666)/I+.5),B=-F*F/(2*I),E=Math.log(v),!(E<B-G)){if(E>B+G)continue r;if(q=w+1,P=x+1,C=r+1-x,U=r-w+1,N=q*q,T=P*P,k=C*C,X=U*U,E>i*Math.log(P/q)+(r-x+.5)*Math.log(C/U)+(w-x)*Math.log(U*u/(q*s))+(13680-(462-(132-(99-140/T)/T)/T)/T)/P/166320+(13680-(462-(132-(99-140/k)/k)/k)/k)/C/166320+(13680-(462-(132-(99-140/N)/N)/N)/N)/q/166320+(13680-(462-(132-(99-140/X)/X)/X)/X)/U/166320)continue r}}else{if(p=u/s,h=p*(r+1),M=1,x<w)for(let _=x+1;_<=w;_++)M*=h/_-p;else if(x>w)for(let _=w+1;_<=x;_++)M/=h/_-p;if(v>M)continue r}}return t>.5&&(w=r-w),w}}function lr(r,t,n,e){let u,s,o,a,i,m,l;for(!e.has_binomial||e.nsave!==r||e.psave!==t?(e.nsave=r,e.psave=t,e.has_binomial=!0,e.q=u=1-t,e.r=s=Math.exp(r*Math.log(u)),e.c=o=r*t,e.m=l=Math.min(r,Math.floor(o+10*Math.sqrt(o*u+1)))):(u=e.q,s=e.r,l=e.m),m=0,a=s,i=n();i>a;)m++,m>l?(m=0,a=s,i=n()):(i-=a,a=(r-m+1)*t*a/(m*u));return m}function J(r,t,n){if(r===0||t===0)return 0;const e=st();if(t<=.5)return t*r<=30?lr(r,t,n,e):fr(r,t,n,e);{const u=1-t;return u*r<=30?r-lr(r,u,n,e):r-fr(r,u,n,e)}}function rr(r){if(r===void 0)return S();const t=Array.isArray(r)?r:[r],n=t.reduce((u,s)=>u*s,1),e=z(n);return y.fromData(new Float64Array(e),t,"float64")}function gt(...r){if(r.length===0)return S();const t=r.reduce((e,u)=>e*u,1),n=z(t);return y.fromData(new Float64Array(n),r,"float64")}function pt(...r){if(r.length===0)return L();const t=r.reduce((e,u)=>e*u,1),n=O(t);return y.fromData(new Float64Array(n),r,"float64")}function tr(r,t,n,e="int64"){t==null&&(t=r,r=0);const s=t-r-1;if(n===void 0)return nt(s)+r;const o=Array.isArray(n)?n:[n],a=o.reduce((i,m)=>i*m,1);if(e==="int8"||e==="uint8"){const i=$r(a,s,r),m=y.zeros(o,e);return m.data.set(e==="int8"?new Int8Array(i.buffer):i),m}else if(e==="int16"||e==="uint16"){const i=zr(a,s,r),m=y.zeros(o,e);return m.data.set(e==="int16"?new Int16Array(i.buffer):i),m}else if(dr(e)){const i=Qr(a,s,r);return y.fromData(new BigInt64Array(i),o,e)}else{const i=Dr(a,s),m=y.zeros(o,e),l=m.data;for(let g=0;g<a;g++)l[g]=i[g]+r;return m}}function St(r=0,t=1,n){if(n===void 0)return S()*(t-r)+r;const e=Array.isArray(n)?n:[n],u=e.reduce((i,m)=>i*m,1),s=z(u),o=new Float64Array(u),a=t-r;for(let i=0;i<u;i++)o[i]=s[i]*a+r;return y.fromData(o,e,"float64")}function wt(r=0,t=1,n){if(n===void 0)return L()*t+r;const e=Array.isArray(n)?n:[n],u=e.reduce((a,i)=>a*i,1),s=O(u),o=new Float64Array(u);for(let a=0;a<u;a++)o[a]=s[a]*t+r;return y.fromData(o,e,"float64")}function Mt(r){if(r===void 0)return L();const t=Array.isArray(r)?r:[r],n=t.reduce((u,s)=>u*s,1),e=O(n);return y.fromData(new Float64Array(e),t,"float64")}function mt(r=1,t){if(t===void 0)return Z()*r;const n=Array.isArray(t)?t:[t],e=n.reduce((o,a)=>o*a,1),u=vr(e),s=new Float64Array(e);for(let o=0;o<e;o++)s[o]=u[o]*r;return y.fromData(s,n,"float64")}function xt(r=1,t){if(t===void 0)return H(r,S);const n=Array.isArray(t)?t:[t],e=n.reduce((s,o)=>s*o,1),u=Wr(e,r);return y.fromData(new BigInt64Array(u),n,"int64")}function vt(r,t,n){if(n===void 0)return J(r,t,S);const e=Array.isArray(n)?n:[n],u=e.reduce((o,a)=>o*a,1),s=Hr(u,r,t);return y.fromData(new BigInt64Array(s),e,"int64")}function cr(r,t,n=!0,e,u=S,s=!1){const o=typeof r=="number"?r:r.size;if(typeof r=="number"&&n&&e===void 0){if(o===0)throw new Error("cannot take a sample from an empty sequence");if(s){if(t===void 0)return Number(V(0,o-1));const c=Array.isArray(t)?t:[t],f=c.reduce((h,D)=>h*D,1),b=y.zeros(c,"int64"),A=b.data;for(let h=0;h<f;h++)A[h]=V(0,o-1);return b}return t===void 0?tr(0,o):tr(0,o,Array.isArray(t)?t:[t])}let a;if(typeof r=="number")a=Array.from({length:r},(c,f)=>f);else{a=[];for(let c=0;c<o;c++)a.push(Number(r.iget(c)))}if(o===0)throw new Error("cannot take a sample from an empty sequence");let i;if(e!==void 0){if(Array.isArray(e))i=e;else{const f=e.size;i=[];for(let b=0;b<f;b++)i.push(Number(e.iget(b)))}if(i.length!==o)throw new Error("p and a must have the same size");const c=i.reduce((f,b)=>f+b,0);Math.abs(c-1)>1e-10&&(i=i.map(f=>f/c))}if(t===void 0){if(i){const c=u();let f=0;for(let b=0;b<o;b++)if(f+=i[b],c<f)return a[b];return a[o-1]}return a[Math.floor(u()*o)]}const m=Array.isArray(t)?t:[t],l=m.reduce((c,f)=>c*f,1);if(!n&&l>o)throw new Error("cannot take a larger sample than population when replace=false");const g=y.zeros(m,"float64"),d=g.data;if(n)if(i){const c=new Array(o);c[0]=i[0];for(let f=1;f<o;f++)c[f]=c[f-1]+i[f];for(let f=0;f<l;f++){const b=u();let A=0;for(;A<o-1&&b>=c[A];)A++;d[f]=a[A]}}else for(let c=0;c<l;c++)d[c]=a[Math.floor(u()*o)];else if(i){const c=[...a],f=[...i];for(let b=0;b<l;b++){const A=f.reduce((p,M)=>p+M,0),h=u()*A;let D=0,v=0;for(let p=0;p<c.length;p++)if(D+=f[p],h<D){v=p;break}v===0&&h>=D&&(v=c.length-1),d[b]=c[v],c.splice(v,1),f.splice(v,1)}}else if(s)if(o>1e4&&l>o/50){const f=mr(o);for(let b=0;b<l;b++){const A=Number(f[o-l+b]);typeof r=="number"?d[b]=A:d[b]=Number(r.iget(A))}}else{const f=new Array(l),b=new Set;for(let A=o-l;A<o;A++){const h=Number(V(0,A));b.has(h)?(b.add(A),f[A-(o-l)]=A):(b.add(h),f[A-(o-l)]=h)}for(let A=l-1;A>0;A--){const h=Number(V(0,A)),D=f[A];f[A]=f[h],f[h]=D}for(let A=0;A<l;A++)typeof r=="number"?d[A]=f[A]:d[A]=Number(r.iget(f[A]))}else{const f=K(o,u,!1).data;for(let b=0;b<l;b++){const A=Number((f instanceof BigInt64Array,f[b]));typeof r=="number"?d[b]=A:d[b]=Number(r.iget(A))}}return g}function Dt(r,t,n=!0,e){return cr(r,t,n,e,S)}function K(r,t=S,n=!1){if(typeof r=="number"){if(n){const s=mr(r);return y.fromData(new BigInt64Array(s),[r],"int64")}if(t===S){const s=rt(r);return y.fromData(new Float64Array(s),[r],"float64")}}let e;if(typeof r=="number"){const s=new Float64Array(r);for(let o=0;o<r;o++)s[o]=o;e=y.fromData(s,[r],"float64")}else e=r.copy();const u=e.size;for(let s=u-1;s>0;s--){const o=Math.floor(t()*(s+1)),a=e.iget(s);e.iset(s,e.iget(o)),e.iset(o,a)}return e}function Ft(r){return K(r,S)}function br(r,t=S,n=!1){const e=r.size;if(e<=1)return;const s=K(e,t,n).data,o=new Array(e);for(let a=0;a<e;a++)o[a]=r.iget(a);for(let a=0;a<e;a++){const i=Number((s instanceof BigInt64Array,s[a]));r.iset(a,o[i])}}function _t(r){br(r,S)}function Et(r){return rr(r)}function It(r){return rr(r)}function Bt(r){return rr(r)}function qt(r,t,n){return t===void 0&&(t=r,r=1),tr(r,t+1,n)}function Ut(r){const t=new Uint8Array(r);let n=0;for(;n+3<r;n+=4){const e=$();t[n]=e&255,t[n+1]=e>>>8&255,t[n+2]=e>>>16&255,t[n+3]=e>>>24&255}if(n<r){let e=$();for(;n<r;n++,e>>>=8)t[n]=e&255}return t}let Ar={name:"MT19937",state:{}};function Gt(){return Ar}function Nt(r){Ar=r}function Pt(r){return mt(1,r)}function Tt(r,t){if(r<=0)throw new Error("shape must be positive");if(t===void 0)return W(r);const n=Array.isArray(t)?t:[t],e=n.reduce((s,o)=>s*o,1),u=sr(e,r);return y.fromData(new Float64Array(u),n,"float64")}function Ct(r){if(r===void 0)return L()/L();const t=Array.isArray(r)?r:[r],n=t.reduce((u,s)=>u*s,1),e=Pr(n);return y.fromData(new Float64Array(e),t,"float64")}function kt(r,t){if(r<=0)throw new Error("df must be positive");const n=()=>{const o=L(),a=W(r/2);return Math.sqrt(r/2)*o/Math.sqrt(a)};if(t===void 0)return n();const e=Array.isArray(t)?t:[t],u=e.reduce((o,a)=>o*a,1),s=kr(u,r);return y.fromData(new Float64Array(s),e,"float64")}function Xt(r,t=1,n){if(r<=0)throw new Error("shape must be positive");if(t<=0)throw new Error("scale must be positive");if(n===void 0)return t*W(r);const e=Array.isArray(n)?n:[n],u=e.reduce((a,i)=>a*i,1),s=sr(u,r),o=new Float64Array(u);for(let a=0;a<u;a++)o[a]=s[a]*t;return y.fromData(o,e,"float64")}function Lt(r,t,n){if(r<=0||t<=0)throw new Error("a and b must be positive");const e=()=>{if(r<=1&&t<=1)for(;;){const a=S(),i=S(),m=Math.pow(a,1/r),l=Math.pow(i,1/t);if(m+l<=1){if(m+l>0)return m/(m+l);{const g=Math.log(a)/r,d=Math.log(i)/t,c=g>d?g:d,f=g-c,b=d-c;return Math.exp(f-Math.log(Math.exp(f)+Math.exp(b)))}}}else{const a=W(r),i=W(t);return a/(a+i)}};if(n===void 0)return e();const u=Array.isArray(n)?n:[n],s=u.reduce((a,i)=>a*i,1),o=Xr(s,r,t);return y.fromData(new Float64Array(o),u,"float64")}function jt(r=0,t=1,n){if(t<=0)throw new Error("scale must be positive");const e=()=>{for(;;){const a=S();if(a>=.5)return r-t*Math.log(2-a-a);if(a>0)return r+t*Math.log(a+a)}};if(n===void 0)return e();const u=Array.isArray(n)?n:[n],s=u.reduce((a,i)=>a*i,1),o=Ur(s,r,t);return y.fromData(new Float64Array(o),u,"float64")}function Rt(r=0,t=1,n){if(t<=0)throw new Error("scale must be positive");const e=()=>{for(;;){const a=S();if(a>0)return r+t*Math.log(a/(1-a))}};if(n===void 0)return e();const u=Array.isArray(n)?n:[n],s=u.reduce((a,i)=>a*i,1),o=Br(s,r,t);return y.fromData(new Float64Array(o),u,"float64")}function Yt(r=0,t=1,n){if(t<=0)throw new Error("sigma must be positive");if(n===void 0)return Math.exp(L()*t+r);const e=Array.isArray(n)?n:[n],u=e.reduce((o,a)=>o*a,1),s=Tr(u,r,t);return y.fromData(new Float64Array(s),e,"float64")}function Wt(r=0,t=1,n){if(t<=0)throw new Error("scale must be positive");const e=()=>{for(;;){const a=1-S();if(a<1)return r-t*Math.log(-Math.log(a))}};if(n===void 0)return e();const u=Array.isArray(n)?n:[n],s=u.reduce((a,i)=>a*i,1),o=qr(s,r,t);return y.fromData(new Float64Array(o),u,"float64")}function Ht(r,t){if(r<=0)throw new Error("a must be positive");const n=()=>Math.exp(Z()/r)-1;if(t===void 0)return n();const e=Array.isArray(t)?t:[t],u=e.reduce((o,a)=>o*a,1),s=_r(u,r);return y.fromData(new Float64Array(s),e,"float64")}function Vt(r,t){if(r<=0)throw new Error("a must be positive");const n=()=>Math.pow(1-Math.exp(-Z()),1/r);if(t===void 0)return n();const e=Array.isArray(t)?t:[t],u=e.reduce((o,a)=>o*a,1),s=Er(u,r);return y.fromData(new Float64Array(s),e,"float64")}function Zt(r=1,t){if(r<=0)throw new Error("scale must be positive");if(t===void 0)return r*Math.sqrt(2*Z());const n=Array.isArray(t)?t:[t],e=n.reduce((s,o)=>s*o,1),u=Gr(e,r);return y.fromData(new Float64Array(u),n,"float64")}function Ot(r,t,n,e){if(r>t||t>n||r===n)throw new Error("must have left <= mode <= right and left < right");const u=n-r,s=t-r,o=s/u,a=s*u,i=(n-t)*u,m=()=>{const c=S();return c<=o?r+Math.sqrt(c*a):n-Math.sqrt((1-c)*i)};if(e===void 0)return m();const l=Array.isArray(e)?e:[e],g=l.reduce((c,f)=>c*f,1),d=Nr(g,r,t,n);return y.fromData(new Float64Array(d),l,"float64")}function Jt(r,t,n){if(r<=0)throw new Error("mean must be positive");if(t<=0)throw new Error("scale must be positive");const e=()=>{const a=r/(2*t);let i=L();i=r*i*i;const m=r+a*(i-Math.sqrt(4*t*i+i*i));return S()<=r/(r+m)?m:r*r/m};if(n===void 0)return e();const u=Array.isArray(n)?n:[n],s=u.reduce((a,i)=>a*i,1),o=Cr(s,r,t);return y.fromData(new Float64Array(o),u,"float64")}function Kt(r,t){if(r<=0)throw new Error("a must be positive");const n=()=>r===0?0:Math.pow(Z(),1/r);if(t===void 0)return n();const e=Array.isArray(t)?t:[t],u=e.reduce((o,a)=>o*a,1),s=Ir(u,r);return y.fromData(new Float64Array(s),e,"float64")}function Qt(r,t){if(r<=0)throw new Error("df must be positive");if(t===void 0)return j(r);const n=Array.isArray(t)?t:[t],e=n.reduce((s,o)=>s*o,1),u=Fr(e,r);return y.fromData(new Float64Array(u),n,"float64")}function $t(r,t,n){if(r<=0)throw new Error("df must be positive");if(t<0)throw new Error("nonc must be non-negative");const e=()=>{if(t===0)return j(r);if(1<r){const a=j(r-1),i=L()+Math.sqrt(t);return a+i*i}else{const a=H(t/2,S);return j(r+2*a)}};if(n===void 0)return e();const u=Array.isArray(n)?n:[n],s=u.reduce((a,i)=>a*i,1),o=jr(s,r,t);return y.fromData(new Float64Array(o),u,"float64")}function zt(r,t,n){if(r<=0)throw new Error("dfnum must be positive");if(t<=0)throw new Error("dfden must be positive");const e=()=>{const a=j(r)*t,i=j(t)*r;return a/i};if(n===void 0)return e();const u=Array.isArray(n)?n:[n],s=u.reduce((a,i)=>a*i,1),o=Lr(s,r,t);return y.fromData(new Float64Array(o),u,"float64")}function re(r,t,n,e){if(r<=0)throw new Error("dfnum must be positive");if(t<=0)throw new Error("dfden must be positive");if(n<0)throw new Error("nonc must be non-negative");const u=()=>{if(n===0)return j(r);if(1<r){const m=j(r-1),l=L()+Math.sqrt(n);return m+l*l}else{const m=H(n/2,S);return j(r+2*m)}},s=()=>u()*t/(j(t)*r);if(e===void 0)return s();const o=Array.isArray(e)?e:[e],a=o.reduce((m,l)=>m*l,1),i=Rr(a,r,t,n);return y.fromData(new Float64Array(i),o,"float64")}function te(r,t){if(r<=0||r>1)throw new Error("p must be in (0, 1]");const n=()=>{if(r>=1/3){let o=1,a=r,i=r;const m=1-r,l=S();for(;l>a;)i*=m,a+=i,o++;return o}else return Math.ceil(Math.log1p(-S())/Math.log(1-r))};if(t===void 0)return n();const e=Array.isArray(t)?t:[t],u=e.reduce((o,a)=>o*a,1),s=Yr(u,r);return y.fromData(new BigInt64Array(s),e,"int64")}function ee(r,t,n,e){if(r<0)throw new Error("ngood must be non-negative");if(t<0)throw new Error("nbad must be non-negative");if(n<0)throw new Error("nsample must be non-negative");if(n>r+t)throw new Error("nsample must be <= ngood + nbad");const u=()=>n>10?ot(r,t,n):n>0?at(r,t,n):0;if(e===void 0)return u();const s=Array.isArray(e)?e:[e],o=s.reduce((i,m)=>i*m,1),a=Zr(o,r,t,n);return y.fromData(new BigInt64Array(a),s,"int64")}function ne(r,t){if(r<=0||r>=1)throw new Error("p must be in (0, 1)");const n=Math.log(1-r),e=()=>{for(;;){const a=S();if(a>=r)return 1;const i=S(),m=1-Math.exp(n*i);if(a<=m*m){const l=Math.floor(1+Math.log(a)/Math.log(m));if(l<1||a===0)continue;return l}return a>=m?1:2}};if(t===void 0)return e();const u=Array.isArray(t)?t:[t],s=u.reduce((a,i)=>a*i,1),o=Or(s,r);return y.fromData(new BigInt64Array(o),u,"int64")}function ae(r,t,n){if(r<=0)throw new Error("n must be positive");if(t<=0||t>1)throw new Error("p must be in (0, 1]");const e=()=>{if(t===1)return 0;const a=W(r)*((1-t)/t);return H(a,S)};if(n===void 0)return e();const u=Array.isArray(n)?n:[n],s=u.reduce((a,i)=>a*i,1),o=Vr(s,r,t);return y.fromData(new BigInt64Array(o),u,"int64")}function oe(r,t){if(r<=1)throw new Error("a must be > 1");const n=r-1,e=Math.pow(2,n),u=9007199254740991,s=()=>{for(;;){const m=1-S(),l=S(),g=Math.floor(Math.pow(m,-1/n));if(g>u||g<1)continue;const d=Math.pow(1+1/g,n);if(l*g*(d-1)/(e-1)<=d/e)return g}};if(t===void 0)return s();const o=Array.isArray(t)?t:[t],a=o.reduce((m,l)=>m*l,1),i=Jr(a,r);return y.fromData(new BigInt64Array(i),o,"int64")}function ue(r,t,n){const e=Array.isArray(t)?t:Array.from({length:t.size},(c,f)=>Number(t.iget(f))),u=e.length;if(u===0)throw new Error("pvals must have at least one element");const s=e.reduce((c,f)=>c+f,0),o=e.map(c=>c/s),a=()=>{const c=new Array(u).fill(0);let f=r,b=1;for(let A=0;A<u-1;A++){const h=J(f,o[A]/b,S);if(c[A]=h,f-=h,f<=0)break;b-=o[A]}return f>0&&(c[u-1]=f),c};if(n===void 0){const c=a(),f=y.zeros([u],"int64"),b=f.data;for(let A=0;A<u;A++)b[A]=BigInt(c[A]);return f}const i=Array.isArray(n)?n:[n],m=i.reduce((c,f)=>c*f,1),l=[...i,u],g=y.zeros(l,"int64"),d=g.data;for(let c=0;c<m;c++){const f=a();for(let b=0;b<u;b++)d[c*u+b]=BigInt(f[b])}return g}function ie(r,t,n,e="warn",u=1e-8){const s=Array.isArray(r)?r:Array.from({length:r.size},(p,M)=>Number(r.iget(M))),o=s.length;let a;if(Array.isArray(t))a=t;else{a=[];for(let p=0;p<o;p++){a.push([]);for(let M=0;M<o;M++)a[p].push(Number(t.iget(p*o+M)))}}const i=y.fromData(new Float64Array(a.flat()),[o,o],"float64"),{s:m,vt:l}=yr(i,!0,!0),g=l.data,d=m.data;for(let p=0;p<o;p++)if(d[p]<-u){if(e==="raise")throw new Error("covariance matrix is not positive semi-definite");e==="warn"&&console.warn("covariance matrix is not positive semi-definite")}const c=g,f=new Float64Array(o);for(let p=0;p<o;p++)f[p]=Math.sqrt(Math.max(0,d[p]));if(n===void 0){const p=O(o),M=y.zeros([o],"float64"),G=M.data;for(let B=0;B<o;B++){let E=s[B];for(let I=0;I<o;I++)E+=p[I]*f[I]*c[I*o+B];G[B]=E}return M}const b=Array.isArray(n)?n:[n],A=b.reduce((p,M)=>p*M,1),h=[...b,o],D=O(A*o),v=new Float64Array(A*o);for(let p=0;p<A;p++){const M=p*o;for(let G=0;G<o;G++){let B=s[G];for(let E=0;E<o;E++)B+=D[M+E]*f[E]*c[E*o+G];v[M+G]=B}}return y.fromData(v,h,"float64")}function se(r,t){const n=Array.isArray(r)?r:Array.from({length:r.size},(m,l)=>Number(r.iget(l))),e=n.length;if(e<2)throw new Error("alpha must have at least 2 elements");for(const m of n)if(m<=0)throw new Error("all alpha values must be positive");const u=(m,l)=>{let g=0;for(let d=0;d<e;d++){const c=ir(n[d]);m[l+d]=c,g+=c}for(let d=0;d<e;d++)m[l+d]=m[l+d]/g};if(t===void 0){const m=new Float64Array(e);return u(m,0),y.fromData(m,[e],"float64")}const s=Array.isArray(t)?t:[t],o=s.reduce((m,l)=>m*l,1),a=[...s,e],i=new Float64Array(o*e);for(let m=0;m<o;m++)u(i,m*e);return y.fromData(i,a,"float64")}function me(r,t,n){if(t<0)throw new Error("kappa must be non-negative");const e=()=>{if(t<1e-8)return Math.PI*(2*S()-1);let a;if(t<1e-5)a=1/t+t;else{const c=1+Math.sqrt(1+4*t*t),f=(c-Math.sqrt(2*c))/(2*t);a=(1+f*f)/(2*f)}let i;for(;;){const c=S(),f=Math.cos(Math.PI*c);i=(1+a*f)/(a+f);const b=t*(a-i),A=S();if(b*(2-b)-A>=0||Math.log(b/A)+1-b>=0)break}const m=S();let l=Math.acos(i);m<.5&&(l=-l),l+=r;const g=l<0;let d=Math.abs(l);return d=(d+Math.PI)%(2*Math.PI)-Math.PI,g&&(d*=-1),d};if(n===void 0)return e();const u=Array.isArray(n)?n:[n],s=u.reduce((a,i)=>a*i,1),o=Kr(s,r,t);return y.fromData(new Float64Array(o),u,"float64")}export{et as Generator,Lt as beta,vt as binomial,Ut as bytes,Qt as chisquare,Dt as choice,At as default_rng,se as dirichlet,mt as exponential,zt as f,Xt as gamma,te as geometric,Gt as get_bit_generator,dt as get_state,Wt as gumbel,ee as hypergeometric,jt as laplace,Rt as logistic,Yt as lognormal,ne as logseries,ue as multinomial,ie as multivariate_normal,ae as negative_binomial,$t as noncentral_chisquare,re as noncentral_f,wt as normal,Ht as pareto,Ft as permutation,xt as poisson,Vt as power,gt as rand,tr as randint,pt as randn,rr as random,qt as random_integers,Et as random_sample,It as ranf,Zt as rayleigh,Bt as sample,yt as seed,Nt as set_bit_generator,ht as set_state,_t as shuffle,Ct as standard_cauchy,Pt as standard_exponential,Tt as standard_gamma,Mt as standard_normal,kt as standard_t,Ot as triangular,St as uniform,me as vonmises,Jt as wald,Kt as weibull,oe as zipf};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{ArrayStorage as B}from"../storage";import{isBigIntDType as Q,isComplexDType as k,throwIfComplex as H}from"../dtype";import{outerIndexToMultiIndex as M,multiIndexToBuffer as V}from"../internal/indexing";import{Complex as U}from"../complex";function J(n,p,F=!1){const x=n.dtype,c=n.shape,I=c.length,N=n.size,b=n.data,m=n.offset,h=n.strides,y=n.isCContiguous;if(p===void 0)if(k(x)){let t=0,o=0;if(y){const r=b;for(let s=0;s<N;s++)t+=r[(m+s)*2],o+=r[(m+s)*2+1]}else for(let r=0;r<N;r++){const s=n.iget(r);t+=s.re,o+=s.im}return new U(t,o)}else if(Q(x)){let t=BigInt(0);if(y){const o=b;for(let r=0;r<N;r++)t+=o[m+r]}else for(let o=0;o<N;o++)t+=n.iget(o);return Number(t)}else{let t=0;if(y)if(m===0)for(let o=0;o<N;o++)t+=Number(b[o]);else for(let o=0;o<N;o++)t+=Number(b[m+o]);else for(let o=0;o<N;o++)t+=Number(n.iget(o));return t}let A=p;if(A<0&&(A=I+A),A<0||A>=I)throw new Error(`axis ${p} is out of bounds for array of dimension ${I}`);const $=Array.from(c).filter((t,o)=>o!==A);if($.length===0)return J(n);const S=B.zeros($,x),D=S.data,l=c[A],e=$.reduce((t,o)=>t*o,1);if(k(x)){const t=b,o=D;for(let r=0;r<e;r++){let s=0,f=0;for(let a=0;a<l;a++){const i=M(r,A,a,c),d=V(i,h,m);s+=t[d*2],f+=t[d*2+1]}o[r*2]=s,o[r*2+1]=f}}else if(Q(x)){const t=b,o=D;for(let r=0;r<e;r++){let s=BigInt(0);for(let f=0;f<l;f++){const a=M(r,A,f,c),i=V(a,h,m);s+=t[i]}o[r]=s}}else for(let t=0;t<e;t++){let o=0;for(let r=0;r<l;r++){const s=M(t,A,r,c),f=V(s,h,m);o+=Number(b[f])}D[t]=o}if(F){const t=[...c];return t[A]=1,B.fromData(D,t,x)}return S}function X(n,p,F=!1){const x=n.dtype,c=n.shape;if(p===void 0){const $=J(n);return $ instanceof U?new U($.re/n.size,$.im/n.size):$/n.size}let I=p;if(I<0&&(I=c.length+I),I<0||I>=c.length)throw new Error(`axis ${p} is out of bounds for array of dimension ${c.length}`);const N=J(n,p,F);if(typeof N=="number")return N/c[I];if(N instanceof U)return new U(N.re/c[I],N.im/c[I]);const b=c[I];let m=x;k(x)?m=x:(Q(x)||x.startsWith("int")||x.startsWith("uint"))&&(m="float64");const h=B.zeros(Array.from(N.shape),m),y=h.data,A=N.data;if(k(x)){const $=A,S=y,D=N.size;for(let l=0;l<D;l++)S[l*2]=$[l*2]/b,S[l*2+1]=$[l*2+1]/b}else if(Q(x)){const $=A;for(let S=0;S<y.length;S++)y[S]=Number($[S])/b}else for(let $=0;$<y.length;$++)y[$]=Number(A[$])/b;return h}function j(n,p,F=!1){const x=n.dtype,c=n.shape,I=c.length,N=n.size,b=n.data,m=n.offset,h=n.strides;if(k(x)){const e=b;if(p===void 0){if(N===0)throw new Error("max of empty array");let i=e[m*2],d=e[m*2+1];for(let w=1;w<N;w++){const u=e[(m+w)*2],z=e[(m+w)*2+1];if(isNaN(u)||isNaN(z))return new U(NaN,NaN);(u>i||u===i&&z>d)&&(i=u,d=z)}return isNaN(i)||isNaN(d)?new U(NaN,NaN):new U(i,d)}let t=p;if(t<0&&(t=I+t),t<0||t>=I)throw new Error(`axis ${p} is out of bounds for array of dimension ${I}`);const o=Array.from(c).filter((i,d)=>d!==t);if(o.length===0)return j(n);const r=B.zeros(o,x),s=r.data,f=c[t],a=o.reduce((i,d)=>i*d,1);for(let i=0;i<a;i++){const d=M(i,t,0,c),w=V(d,h,m);let u=e[w*2],z=e[w*2+1];for(let C=1;C<f;C++){const E=M(i,t,C,c),R=V(E,h,m),v=e[R*2],g=e[R*2+1];if(isNaN(v)||isNaN(g)){u=NaN,z=NaN;break}(v>u||v===u&&g>z)&&(u=v,z=g)}s[i*2]=u,s[i*2+1]=z}if(F){const i=[...c];return i[t]=1,B.fromData(s,i,x)}return r}if(p===void 0){if(N===0)throw new Error("max of empty array");if(n.isCContiguous){let e=b[m];if(m===0)for(let t=1;t<N;t++)b[t]>e&&(e=b[t]);else for(let t=1;t<N;t++)b[m+t]>e&&(e=b[m+t]);return Number(e)}else{let e=n.iget(0);for(let t=1;t<N;t++){const o=n.iget(t);o>e&&(e=o)}return Number(e)}}let y=p;if(y<0&&(y=I+y),y<0||y>=I)throw new Error(`axis ${p} is out of bounds for array of dimension ${I}`);const A=Array.from(c).filter((e,t)=>t!==y);if(A.length===0)return j(n);const $=B.zeros(A,x),S=$.data,D=c[y],l=A.reduce((e,t)=>e*t,1);if(Q(x)){const e=b,t=S;for(let o=0;o<l;o++){const r=M(o,y,0,c),s=V(r,h,m);let f=e[s];for(let a=1;a<D;a++){const i=M(o,y,a,c),d=V(i,h,m),w=e[d];w>f&&(f=w)}t[o]=f}}else for(let e=0;e<l;e++){let t=-1/0;for(let o=0;o<D;o++){const r=M(e,y,o,c),s=V(r,h,m),f=Number(b[s]);f>t&&(t=f)}S[e]=t}if(F){const e=[...c];return e[y]=1,B.fromData(S,e,x)}return $}function rt(n,p,F=!1){const x=n.dtype,c=n.shape,I=c.length,N=n.size,b=n.data,m=n.offset,h=n.strides,y=n.isCContiguous;if(p===void 0)if(k(x)){let t=1,o=0;if(y){const r=b;for(let s=0;s<N;s++){const f=r[(m+s)*2],a=r[(m+s)*2+1],i=t*f-o*a,d=t*a+o*f;t=i,o=d}}else for(let r=0;r<N;r++){const s=n.iget(r),f=s.re,a=s.im,i=t*f-o*a,d=t*a+o*f;t=i,o=d}return new U(t,o)}else if(Q(x)){let t=BigInt(1);if(y){const o=b;for(let r=0;r<N;r++)t*=o[m+r]}else for(let o=0;o<N;o++)t*=n.iget(o);return Number(t)}else{let t=1;if(y)if(m===0)for(let o=0;o<N;o++)t*=Number(b[o]);else for(let o=0;o<N;o++)t*=Number(b[m+o]);else for(let o=0;o<N;o++)t*=Number(n.iget(o));return t}let A=p;if(A<0&&(A=I+A),A<0||A>=I)throw new Error(`axis ${p} is out of bounds for array of dimension ${I}`);const $=Array.from(c).filter((t,o)=>o!==A);if($.length===0)return rt(n);const S=B.zeros($,x),D=S.data,l=c[A],e=$.reduce((t,o)=>t*o,1);if(k(x)){const t=b,o=D;for(let r=0;r<e;r++){let s=1,f=0;for(let a=0;a<l;a++){const i=M(r,A,a,c),d=V(i,h,m),w=t[d*2],u=t[d*2+1],z=s*w-f*u,C=s*u+f*w;s=z,f=C}o[r*2]=s,o[r*2+1]=f}}else if(Q(x)){const t=b,o=D;for(let r=0;r<e;r++){let s=BigInt(1);for(let f=0;f<l;f++){const a=M(r,A,f,c),i=V(a,h,m);s*=t[i]}o[r]=s}}else for(let t=0;t<e;t++){let o=1;for(let r=0;r<l;r++){const s=M(t,A,r,c),f=V(s,h,m);o*=Number(b[f])}D[t]=o}if(F){const t=[...c];return t[A]=1,B.fromData(D,t,x)}return S}function G(n,p,F=!1){const x=n.dtype,c=n.shape,I=c.length,N=n.size,b=n.data,m=n.offset,h=n.strides;if(k(x)){const e=b;if(p===void 0){if(N===0)throw new Error("min of empty array");let i=e[m*2],d=e[m*2+1];for(let w=1;w<N;w++){const u=e[(m+w)*2],z=e[(m+w)*2+1];if(isNaN(u)||isNaN(z))return new U(NaN,NaN);(u<i||u===i&&z<d)&&(i=u,d=z)}return isNaN(i)||isNaN(d)?new U(NaN,NaN):new U(i,d)}let t=p;if(t<0&&(t=I+t),t<0||t>=I)throw new Error(`axis ${p} is out of bounds for array of dimension ${I}`);const o=Array.from(c).filter((i,d)=>d!==t);if(o.length===0)return G(n);const r=B.zeros(o,x),s=r.data,f=c[t],a=o.reduce((i,d)=>i*d,1);for(let i=0;i<a;i++){const d=M(i,t,0,c),w=V(d,h,m);let u=e[w*2],z=e[w*2+1];for(let C=1;C<f;C++){const E=M(i,t,C,c),R=V(E,h,m),v=e[R*2],g=e[R*2+1];if(isNaN(v)||isNaN(g)){u=NaN,z=NaN;break}(v<u||v===u&&g<z)&&(u=v,z=g)}s[i*2]=u,s[i*2+1]=z}if(F){const i=[...c];return i[t]=1,B.fromData(s,i,x)}return r}if(p===void 0){if(N===0)throw new Error("min of empty array");if(n.isCContiguous){let e=b[m];if(m===0)for(let t=1;t<N;t++)b[t]<e&&(e=b[t]);else for(let t=1;t<N;t++)b[m+t]<e&&(e=b[m+t]);return Number(e)}else{let e=n.iget(0);for(let t=1;t<N;t++){const o=n.iget(t);o<e&&(e=o)}return Number(e)}}let y=p;if(y<0&&(y=I+y),y<0||y>=I)throw new Error(`axis ${p} is out of bounds for array of dimension ${I}`);const A=Array.from(c).filter((e,t)=>t!==y);if(A.length===0)return G(n);const $=B.zeros(A,x),S=$.data,D=c[y],l=A.reduce((e,t)=>e*t,1);if(Q(x)){const e=b,t=S;for(let o=0;o<l;o++){const r=M(o,y,0,c),s=V(r,h,m);let f=e[s];for(let a=1;a<D;a++){const i=M(o,y,a,c),d=V(i,h,m),w=e[d];w<f&&(f=w)}t[o]=f}}else for(let e=0;e<l;e++){let t=1/0;for(let o=0;o<D;o++){const r=M(e,y,o,c),s=V(r,h,m),f=Number(b[s]);f<t&&(t=f)}S[e]=t}if(F){const e=[...c];return e[y]=1,B.fromData(S,e,x)}return $}function W(n,p,F,x){return n<F?-1:n>F?1:p<x?-1:p>x?1:0}function it(n,p){const F=n.dtype,x=k(F),c=n.shape,I=c.length,N=n.size,b=n.data,m=n.offset,h=n.strides,y=n.isCContiguous;if(p===void 0){if(N===0)throw new Error("argmin of empty array");if(x)if(y){const t=b;let o=t[m*2],r=t[m*2+1],s=0;for(let f=1;f<N;f++){const a=t[(m+f)*2],i=t[(m+f)*2+1];W(a,i,o,r)<0&&(o=a,r=i,s=f)}return s}else{const t=n.iget(0);let o=t.re,r=t.im,s=0;for(let f=1;f<N;f++){const a=n.iget(f);W(a.re,a.im,o,r)<0&&(o=a.re,r=a.im,s=f)}return s}if(y){let t=b[m],o=0;if(m===0)for(let r=1;r<N;r++)b[r]<t&&(t=b[r],o=r);else for(let r=1;r<N;r++)b[m+r]<t&&(t=b[m+r],o=r);return o}else{let t=n.iget(0),o=0;for(let r=1;r<N;r++){const s=n.iget(r);s<t&&(t=s,o=r)}return o}}let A=p;if(A<0&&(A=I+A),A<0||A>=I)throw new Error(`axis ${p} is out of bounds for array of dimension ${I}`);const $=Array.from(c).filter((t,o)=>o!==A);if($.length===0)return it(n);const S=B.zeros($,"int32"),D=S.data,l=c[A],e=$.reduce((t,o)=>t*o,1);if(x){const t=b;for(let o=0;o<e;o++){const r=M(o,A,0,c),s=V(r,h,m);let f=t[s*2],a=t[s*2+1],i=0;for(let d=1;d<l;d++){const w=M(o,A,d,c),u=V(w,h,m),z=t[u*2],C=t[u*2+1];W(z,C,f,a)<0&&(f=z,a=C,i=d)}D[o]=i}}else if(Q(F)){const t=b;for(let o=0;o<e;o++){const r=M(o,A,0,c),s=V(r,h,m);let f=t[s],a=0;for(let i=1;i<l;i++){const d=M(o,A,i,c),w=V(d,h,m),u=t[w];u<f&&(f=u,a=i)}D[o]=a}}else for(let t=0;t<e;t++){let o=1/0,r=0;for(let s=0;s<l;s++){const f=M(t,A,s,c),a=V(f,h,m),i=Number(b[a]);i<o&&(o=i,r=s)}D[t]=r}return S}function st(n,p){const F=n.dtype,x=k(F),c=n.shape,I=c.length,N=n.size,b=n.data,m=n.offset,h=n.strides,y=n.isCContiguous;if(p===void 0){if(N===0)throw new Error("argmax of empty array");if(x)if(y){const t=b;let o=t[m*2],r=t[m*2+1],s=0;for(let f=1;f<N;f++){const a=t[(m+f)*2],i=t[(m+f)*2+1];W(a,i,o,r)>0&&(o=a,r=i,s=f)}return s}else{const t=n.iget(0);let o=t.re,r=t.im,s=0;for(let f=1;f<N;f++){const a=n.iget(f);W(a.re,a.im,o,r)>0&&(o=a.re,r=a.im,s=f)}return s}if(y){let t=b[m],o=0;for(let r=1;r<N;r++)b[m+r]>t&&(t=b[m+r],o=r);return o}else{let t=n.iget(0),o=0;for(let r=1;r<N;r++){const s=n.iget(r);s>t&&(t=s,o=r)}return o}}let A=p;if(A<0&&(A=I+A),A<0||A>=I)throw new Error(`axis ${p} is out of bounds for array of dimension ${I}`);const $=Array.from(c).filter((t,o)=>o!==A);if($.length===0)return st(n);const S=B.zeros($,"int32"),D=S.data,l=c[A],e=$.reduce((t,o)=>t*o,1);if(x){const t=b;for(let o=0;o<e;o++){const r=M(o,A,0,c),s=V(r,h,m);let f=t[s*2],a=t[s*2+1],i=0;for(let d=1;d<l;d++){const w=M(o,A,d,c),u=V(w,h,m),z=t[u*2],C=t[u*2+1];W(z,C,f,a)>0&&(f=z,a=C,i=d)}D[o]=i}}else if(Q(F)){const t=b;for(let o=0;o<e;o++){const r=M(o,A,0,c),s=V(r,h,m);let f=t[s],a=0;for(let i=1;i<l;i++){const d=M(o,A,i,c),w=V(d,h,m),u=t[w];u>f&&(f=u,a=i)}D[o]=a}}else for(let t=0;t<e;t++){let o=-1/0,r=0;for(let s=0;s<l;s++){const f=M(t,A,s,c),a=V(f,h,m),i=Number(b[a]);i>o&&(o=i,r=s)}D[t]=r}return S}function at(n,p,F=0,x=!1){const c=n.dtype,I=n.shape,N=I.length,b=n.size,m=n.data,h=n.offset,y=n.strides,A=X(n,p,x),$=n.isCContiguous;if(p===void 0){if(k(c)){const i=A;let d=0;if($){const w=m;for(let u=0;u<b;u++){const z=w[(h+u)*2],C=w[(h+u)*2+1],E=z-i.re,R=C-i.im;d+=E*E+R*R}}else for(let w=0;w<b;w++){const u=n.iget(w),z=u.re-i.re,C=u.im-i.im;d+=z*z+C*C}return d/(b-F)}const f=A;let a=0;if($)for(let i=0;i<b;i++){const d=Number(m[h+i])-f;a+=d*d}else for(let i=0;i<b;i++){const d=Number(n.iget(i))-f;a+=d*d}return a/(b-F)}let S=p;if(S<0&&(S=N+S),S<0||S>=N)throw new Error(`axis ${p} is out of bounds for array of dimension ${N}`);const D=I[S],l=A,e=l.data,t=x?l.shape:Array.from(I).filter((f,a)=>a!==S),o=B.zeros(Array.from(t),"float64"),r=o.data,s=t.reduce((f,a)=>f*a,1);if(k(c)){const f=m,a=e;for(let i=0;i<s;i++){let d=0;const w=a[i*2],u=a[i*2+1];for(let z=0;z<D;z++){const C=M(i,S,z,I),E=V(C,y,h),R=f[E*2],v=f[E*2+1],g=R-w,_=v-u;d+=g*g+_*_}r[i]=d/(D-F)}}else for(let f=0;f<s;f++){let a=0;const i=Number(e[f]);for(let d=0;d<D;d++){const w=M(f,S,d,I),u=V(w,y,h),z=Number(m[u])-i;a+=z*z}r[f]=a/(D-F)}return o}function Nt(n,p,F=0,x=!1){const c=at(n,p,F,x);if(typeof c=="number")return Math.sqrt(c);const I=B.zeros(Array.from(c.shape),"float64"),N=c.data,b=I.data;for(let m=0;m<N.length;m++)b[m]=Math.sqrt(Number(N[m]));return I}function ft(n,p,F=!1){const x=n.shape,c=x.length,I=n.size,N=n.data,b=n.offset,m=n.strides,h=n.isCContiguous;if(p===void 0){if(h){for(let e=0;e<I;e++)if(!N[b+e])return!1}else for(let e=0;e<I;e++)if(!n.iget(e))return!1;return!0}let y=p;if(y<0&&(y=c+y),y<0||y>=c)throw new Error(`axis ${p} is out of bounds for array of dimension ${c}`);const A=Array.from(x).filter((e,t)=>t!==y);if(A.length===0)return ft(n);const $=B.zeros(A,"bool"),S=$.data,D=x[y],l=A.reduce((e,t)=>e*t,1);for(let e=0;e<l;e++){let t=!0;for(let o=0;o<D;o++){const r=M(e,y,o,x),s=V(r,m,b);if(!N[s]){t=!1;break}}S[e]=t?1:0}if(F){const e=[...x];return e[y]=1,B.fromData(S,e,"bool")}return $}function lt(n,p,F=!1){const x=n.shape,c=x.length,I=n.size,N=n.data,b=n.offset,m=n.strides,h=n.isCContiguous;if(p===void 0){if(h){for(let e=0;e<I;e++)if(N[b+e])return!0}else for(let e=0;e<I;e++)if(n.iget(e))return!0;return!1}let y=p;if(y<0&&(y=c+y),y<0||y>=c)throw new Error(`axis ${p} is out of bounds for array of dimension ${c}`);const A=Array.from(x).filter((e,t)=>t!==y);if(A.length===0)return lt(n);const $=B.zeros(A,"bool"),S=$.data,D=x[y],l=A.reduce((e,t)=>e*t,1);for(let e=0;e<l;e++){let t=!1;for(let o=0;o<D;o++){const r=M(e,y,o,x),s=V(r,m,b);if(N[s]){t=!0;break}}S[e]=t?1:0}if(F){const e=[...x];return e[y]=1,B.fromData(S,e,"bool")}return $}function bt(n,p){const F=n.dtype,x=n.shape,c=x.length,I=n.data,N=n.offset,b=n.strides,m=n.isCContiguous;if(k(F)){const e=I,t=n.size;if(p===void 0){const u=B.zeros([t],F),z=u.data;let C=0,E=0;if(m)for(let R=0;R<t;R++)C+=e[(N+R)*2],E+=e[(N+R)*2+1],z[R*2]=C,z[R*2+1]=E;else for(let R=0;R<t;R++){const v=n.iget(R);C+=v.re,E+=v.im,z[R*2]=C,z[R*2+1]=E}return u}let o=p;if(o<0&&(o=c+o),o<0||o>=c)throw new Error(`axis ${p} is out of bounds for array of dimension ${c}`);const r=B.zeros([...x],F),s=r.data,f=x[o],a=[];let i=1;for(let u=c-1;u>=0;u--)a.unshift(i),i*=x[u];const d=n.size,w=a[o];for(let u=0;u<d;u++){const z=Math.floor(u/w)%f,C=new Array(c);let E=u;for(let v=c-1;v>=0;v--)C[v]=E%x[v],E=Math.floor(E/x[v]);const R=V(C,b,N);z===0?(s[u*2]=e[R*2],s[u*2+1]=e[R*2+1]):(s[u*2]=s[(u-w)*2]+e[R*2],s[u*2+1]=s[(u-w)*2+1]+e[R*2+1])}return r}if(p===void 0){const e=n.size,t=new Float64Array(e);let o=0;if(m)for(let r=0;r<e;r++)o+=Number(I[N+r]),t[r]=o;else for(let r=0;r<e;r++)o+=Number(n.iget(r)),t[r]=o;return B.fromData(t,[e],"float64")}let h=p;if(h<0&&(h=c+h),h<0||h>=c)throw new Error(`axis ${p} is out of bounds for array of dimension ${c}`);const y=new Float64Array(n.size),A=x[h],$=[];let S=1;for(let e=c-1;e>=0;e--)$.unshift(S),S*=x[e];const D=n.size,l=$[h];for(let e=0;e<D;e++){const t=Math.floor(e/l)%A,o=new Array(c);let r=e;for(let f=c-1;f>=0;f--)o[f]=r%x[f],r=Math.floor(r/x[f]);const s=V(o,b,N);t===0?y[e]=Number(I[s]):y[e]=y[e-l]+Number(I[s])}return B.fromData(y,[...x],"float64")}function At(n,p){const F=n.dtype,x=n.shape,c=x.length,I=n.data,N=n.offset,b=n.strides,m=n.isCContiguous;if(k(F)){const e=I,t=n.size;if(p===void 0){const u=B.zeros([t],F),z=u.data;let C=1,E=0;if(m)for(let R=0;R<t;R++){const v=e[(N+R)*2],g=e[(N+R)*2+1],_=C*v-E*g,T=C*g+E*v;C=_,E=T,z[R*2]=C,z[R*2+1]=E}else for(let R=0;R<t;R++){const v=n.iget(R),g=v.re,_=v.im,T=C*g-E*_,q=C*_+E*g;C=T,E=q,z[R*2]=C,z[R*2+1]=E}return u}let o=p;if(o<0&&(o=c+o),o<0||o>=c)throw new Error(`axis ${p} is out of bounds for array of dimension ${c}`);const r=B.zeros([...x],F),s=r.data,f=x[o],a=[];let i=1;for(let u=c-1;u>=0;u--)a.unshift(i),i*=x[u];const d=n.size,w=a[o];for(let u=0;u<d;u++){const z=Math.floor(u/w)%f,C=new Array(c);let E=u;for(let v=c-1;v>=0;v--)C[v]=E%x[v],E=Math.floor(E/x[v]);const R=V(C,b,N);if(z===0)s[u*2]=e[R*2],s[u*2+1]=e[R*2+1];else{const v=s[(u-w)*2],g=s[(u-w)*2+1],_=e[R*2],T=e[R*2+1];s[u*2]=v*_-g*T,s[u*2+1]=v*T+g*_}}return r}if(p===void 0){const e=n.size,t=new Float64Array(e);let o=1;if(m)for(let r=0;r<e;r++)o*=Number(I[N+r]),t[r]=o;else for(let r=0;r<e;r++)o*=Number(n.iget(r)),t[r]=o;return B.fromData(t,[e],"float64")}let h=p;if(h<0&&(h=c+h),h<0||h>=c)throw new Error(`axis ${p} is out of bounds for array of dimension ${c}`);const y=new Float64Array(n.size),A=x[h],$=[];let S=1;for(let e=c-1;e>=0;e--)$.unshift(S),S*=x[e];const D=n.size,l=$[h];for(let e=0;e<D;e++){const t=Math.floor(e/l)%A,o=new Array(c);let r=e;for(let f=c-1;f>=0;f--)o[f]=r%x[f],r=Math.floor(r/x[f]);const s=V(o,b,N);t===0?y[e]=Number(I[s]):y[e]=y[e-l]*Number(I[s])}return B.fromData(y,[...x],"float64")}function ht(n,p,F=!1){const x=n.dtype;if(k(x)){const A=j(n,p,F),$=G(n,p,F);if(A instanceof U&&$ instanceof U)return new U(A.re-$.re,A.im-$.im);const S=A,D=$,l=S.data,e=D.data,t=new Float64Array(S.size*2);for(let o=0;o<S.size;o++)t[o*2]=l[o*2]-e[o*2],t[o*2+1]=l[o*2+1]-e[o*2+1];return B.fromData(t,[...S.shape],x)}const c=j(n,p,F),I=G(n,p,F);if(typeof c=="number"&&typeof I=="number")return c-I;const N=c,b=I,m=N.data,h=b.data,y=new Float64Array(N.size);for(let A=0;A<N.size;A++)y[A]=Number(m[A])-Number(h[A]);return B.fromData(y,[...N.shape],"float64")}function St(n,p,F=!1){return K(n,.5,p,F)}function zt(n,p,F,x=!1){return K(n,p/100,F,x)}function K(n,p,F,x=!1){if(H(n.dtype,"quantile","Complex numbers are not orderable."),p<0||p>1)throw new Error("Quantile must be between 0 and 1");const c=n.shape,I=c.length,N=n.data,b=n.offset,m=n.strides;if(F===void 0){const l=[];if(n.isCContiguous)for(let a=0;a<n.size;a++)l.push(Number(N[b+a]));else for(let a=0;a<n.size;a++)l.push(Number(n.iget(a)));l.sort((a,i)=>a-i);const t=l.length,o=p*(t-1),r=Math.floor(o),s=Math.ceil(o);if(r===s)return l[r];const f=o-r;return l[r]*(1-f)+l[s]*f}let h=F;if(h<0&&(h=I+h),h<0||h>=I)throw new Error(`axis ${F} is out of bounds for array of dimension ${I}`);const y=Array.from(c).filter((l,e)=>e!==h);if(y.length===0)return K(n,p);const A=y.reduce((l,e)=>l*e,1),$=c[h],S=new Float64Array(A);for(let l=0;l<A;l++){const e=[];for(let f=0;f<$;f++){const a=M(l,h,f,c),i=V(a,m,b);e.push(Number(N[i]))}e.sort((f,a)=>f-a);const t=e.length,o=p*(t-1),r=Math.floor(o),s=Math.ceil(o);if(r===s)S[l]=e[r];else{const f=o-r;S[l]=e[r]*(1-f)+e[s]*f}}const D=B.fromData(S,y,"float64");if(x){const l=[...c];return l[h]=1,B.fromData(S,l,"float64")}return D}function Y(n,p,F,x=!1){const c=n.dtype,I=n.shape,N=I.length,b=n.data,m=n.offset,h=n.strides;if(F===void 0)return X(n,p,x);if(k(c)){const o=b,r=F.data,s=F.offset;if(p===void 0){let z=0,C=0,E=0;if(n.isCContiguous)for(let v=0;v<n.size;v++){const g=Number(r[s+v%F.size]),_=o[(m+v)*2],T=o[(m+v)*2+1];z+=_*g,C+=T*g,E+=g}else for(let v=0;v<n.size;v++){const g=Number(r[s+v%F.size]),_=n.iget(v);z+=_.re*g,C+=_.im*g,E+=g}return E===0?new U(NaN,NaN):new U(z/E,C/E)}let f=p;if(f<0&&(f=N+f),f<0||f>=N)throw new Error(`axis ${p} is out of bounds for array of dimension ${N}`);const a=Array.from(I).filter((z,C)=>C!==f);if(a.length===0)return Y(n,void 0,F);const i=a.reduce((z,C)=>z*C,1),d=I[f],w=B.zeros(a,c),u=w.data;for(let z=0;z<i;z++){let C=0,E=0,R=0;for(let v=0;v<d;v++){const g=M(z,f,v,I),_=V(g,h,m),T=Number(r[s+v%F.size]),q=o[_*2],O=o[_*2+1];C+=q*T,E+=O*T,R+=T}R===0?(u[z*2]=NaN,u[z*2+1]=NaN):(u[z*2]=C/R,u[z*2+1]=E/R)}if(x){const z=[...I];return z[f]=1,B.fromData(u,z,c)}return w}const y=F.offset;if(p===void 0){let o=0,r=0;const s=F.data;if(n.isCContiguous)for(let a=0;a<n.size;a++){const i=Number(s[y+a%F.size]);o+=Number(b[m+a])*i,r+=i}else for(let a=0;a<n.size;a++){const i=Number(s[y+a%F.size]);o+=Number(n.iget(a))*i,r+=i}return r===0?NaN:o/r}let A=p;if(A<0&&(A=N+A),A<0||A>=N)throw new Error(`axis ${p} is out of bounds for array of dimension ${N}`);const $=Array.from(I).filter((o,r)=>r!==A);if($.length===0)return Y(n,void 0,F);const S=$.reduce((o,r)=>o*r,1),D=I[A],l=F.data,e=new Float64Array(S);for(let o=0;o<S;o++){let r=0,s=0;for(let f=0;f<D;f++){const a=M(o,A,f,I),i=V(a,h,m),d=Number(l[y+f%F.size]);r+=Number(b[i])*d,s+=d}e[o]=s===0?NaN:r/s}const t=B.fromData(e,$,"float64");if(x){const o=[...I];return o[A]=1,B.fromData(e,o,"float64")}return t}function P(n,p){return isNaN(n)||isNaN(p)}function ut(n,p,F=!1){const x=n.dtype,c=k(x),I=n.shape,N=I.length,b=n.data,m=n.offset,h=n.strides;if(p===void 0){if(c){const o=b;let r=0,s=0;if(n.isCContiguous)for(let a=0;a<n.size;a++){const i=o[(m+a)*2],d=o[(m+a)*2+1];P(i,d)||(r+=i,s+=d)}else for(let a=0;a<n.size;a++){const i=n.iget(a),d=i.re,w=i.im;P(d,w)||(r+=d,s+=w)}return new U(r,s)}let e=0;if(n.isCContiguous)for(let o=0;o<n.size;o++){const r=Number(b[m+o]);isNaN(r)||(e+=r)}else for(let o=0;o<n.size;o++){const r=Number(n.iget(o));isNaN(r)||(e+=r)}return e}let y=p;if(y<0&&(y=N+y),y<0||y>=N)throw new Error(`axis ${p} is out of bounds for array of dimension ${N}`);const A=Array.from(I).filter((e,t)=>t!==y);if(A.length===0)return ut(n);const $=A.reduce((e,t)=>e*t,1),S=I[y];if(c){const e=b,t=new Float64Array($*2);for(let o=0;o<$;o++){let r=0,s=0;for(let f=0;f<S;f++){const a=M(o,y,f,I),i=V(a,h,m),d=e[i*2],w=e[i*2+1];P(d,w)||(r+=d,s+=w)}t[o*2]=r,t[o*2+1]=s}if(F){const o=[...I];return o[y]=1,B.fromData(t,o,x)}return B.fromData(t,A,x)}const D=new Float64Array($);for(let e=0;e<$;e++){let t=0;for(let o=0;o<S;o++){const r=M(e,y,o,I),s=V(r,h,m),f=Number(b[s]);isNaN(f)||(t+=f)}D[e]=t}const l=B.fromData(D,A,"float64");if(F){const e=[...I];return e[y]=1,B.fromData(D,e,"float64")}return l}function ct(n,p,F=!1){const x=n.dtype,c=k(x),I=n.shape,N=I.length,b=n.data,m=n.offset,h=n.strides;if(p===void 0){if(c){const o=b;let r=1,s=0;if(n.isCContiguous)for(let a=0;a<n.size;a++){const i=o[(m+a)*2],d=o[(m+a)*2+1];if(!P(i,d)){const w=r*i-s*d,u=r*d+s*i;r=w,s=u}}else for(let a=0;a<n.size;a++){const i=n.iget(a),d=i.re,w=i.im;if(!P(d,w)){const u=r*d-s*w,z=r*w+s*d;r=u,s=z}}return new U(r,s)}let e=1;if(n.isCContiguous)for(let o=0;o<n.size;o++){const r=Number(b[m+o]);isNaN(r)||(e*=r)}else for(let o=0;o<n.size;o++){const r=Number(n.iget(o));isNaN(r)||(e*=r)}return e}let y=p;if(y<0&&(y=N+y),y<0||y>=N)throw new Error(`axis ${p} is out of bounds for array of dimension ${N}`);const A=Array.from(I).filter((e,t)=>t!==y);if(A.length===0)return ct(n);const $=A.reduce((e,t)=>e*t,1),S=I[y];if(c){const e=b,t=new Float64Array($*2);for(let o=0;o<$;o++){let r=1,s=0;for(let f=0;f<S;f++){const a=M(o,y,f,I),i=V(a,h,m),d=e[i*2],w=e[i*2+1];if(!P(d,w)){const u=r*d-s*w,z=r*w+s*d;r=u,s=z}}t[o*2]=r,t[o*2+1]=s}if(F){const o=[...I];return o[y]=1,B.fromData(t,o,x)}return B.fromData(t,A,x)}const D=new Float64Array($);for(let e=0;e<$;e++){let t=1;for(let o=0;o<S;o++){const r=M(e,y,o,I),s=V(r,h,m),f=Number(b[s]);isNaN(f)||(t*=f)}D[e]=t}const l=B.fromData(D,A,"float64");if(F){const e=[...I];return e[y]=1,B.fromData(D,e,"float64")}return l}function mt(n,p,F=!1){const x=n.dtype,c=k(x),I=n.shape,N=I.length,b=n.data,m=n.offset,h=n.strides;if(p===void 0){if(c){const r=b;let s=0,f=0,a=0;if(n.isCContiguous)for(let d=0;d<n.size;d++){const w=r[(m+d)*2],u=r[(m+d)*2+1];P(w,u)||(s+=w,f+=u,a++)}else for(let d=0;d<n.size;d++){const w=n.iget(d),u=w.re,z=w.im;P(u,z)||(s+=u,f+=z,a++)}return a===0?new U(NaN,NaN):new U(s/a,f/a)}let e=0,t=0;if(n.isCContiguous)for(let r=0;r<n.size;r++){const s=Number(b[m+r]);isNaN(s)||(e+=s,t++)}else for(let r=0;r<n.size;r++){const s=Number(n.iget(r));isNaN(s)||(e+=s,t++)}return t===0?NaN:e/t}let y=p;if(y<0&&(y=N+y),y<0||y>=N)throw new Error(`axis ${p} is out of bounds for array of dimension ${N}`);const A=Array.from(I).filter((e,t)=>t!==y);if(A.length===0)return mt(n);const $=A.reduce((e,t)=>e*t,1),S=I[y];if(c){const e=b,t=new Float64Array($*2);for(let o=0;o<$;o++){let r=0,s=0,f=0;for(let a=0;a<S;a++){const i=M(o,y,a,I),d=V(i,h,m),w=e[d*2],u=e[d*2+1];P(w,u)||(r+=w,s+=u,f++)}f===0?(t[o*2]=NaN,t[o*2+1]=NaN):(t[o*2]=r/f,t[o*2+1]=s/f)}if(F){const o=[...I];return o[y]=1,B.fromData(t,o,x)}return B.fromData(t,A,x)}const D=new Float64Array($);for(let e=0;e<$;e++){let t=0,o=0;for(let r=0;r<S;r++){const s=M(e,y,r,I),f=V(s,h,m),a=Number(b[f]);isNaN(a)||(t+=a,o++)}D[e]=o===0?NaN:t/o}const l=B.fromData(D,A,"float64");if(F){const e=[...I];return e[y]=1,B.fromData(D,e,"float64")}return l}function L(n,p,F=0,x=!1){const c=n.dtype,I=n.shape,N=I.length,b=n.data,m=n.offset,h=n.strides;if(k(c)){const e=b;if(p===void 0){let i=0,d=0,w=0;const u=n.isCContiguous;if(u)for(let R=0;R<n.size;R++){const v=e[(m+R)*2],g=e[(m+R)*2+1];P(v,g)||(i+=v,d+=g,w++)}else for(let R=0;R<n.size;R++){const v=n.iget(R),g=v.re,_=v.im;P(g,_)||(i+=g,d+=_,w++)}if(w-F<=0)return NaN;const z=i/w,C=d/w;let E=0;if(u)for(let R=0;R<n.size;R++){const v=e[(m+R)*2],g=e[(m+R)*2+1];if(!P(v,g)){const _=v-z,T=g-C;E+=_*_+T*T}}else for(let R=0;R<n.size;R++){const v=n.iget(R),g=v.re,_=v.im;if(!P(g,_)){const T=g-z,q=_-C;E+=T*T+q*q}}return E/(w-F)}let t=p;if(t<0&&(t=N+t),t<0||t>=N)throw new Error(`axis ${p} is out of bounds for array of dimension ${N}`);const o=Array.from(I).filter((i,d)=>d!==t);if(o.length===0)return L(n,void 0,F);const r=o.reduce((i,d)=>i*d,1),s=I[t],f=new Float64Array(r);for(let i=0;i<r;i++){let d=0,w=0,u=0;for(let R=0;R<s;R++){const v=M(i,t,R,I),g=V(v,h,m),_=e[g*2],T=e[g*2+1];P(_,T)||(d+=_,w+=T,u++)}if(u-F<=0){f[i]=NaN;continue}const z=d/u,C=w/u;let E=0;for(let R=0;R<s;R++){const v=M(i,t,R,I),g=V(v,h,m),_=e[g*2],T=e[g*2+1];if(!P(_,T)){const q=_-z,O=T-C;E+=q*q+O*O}}f[i]=E/(u-F)}const a=B.fromData(f,o,"float64");if(x){const i=[...I];return i[t]=1,B.fromData(f,i,"float64")}return a}if(p===void 0){let e=0,t=0;const o=n.isCContiguous;if(o)for(let f=0;f<n.size;f++){const a=Number(b[m+f]);isNaN(a)||(e+=a,t++)}else for(let f=0;f<n.size;f++){const a=Number(n.iget(f));isNaN(a)||(e+=a,t++)}if(t-F<=0)return NaN;const r=e/t;let s=0;if(o)for(let f=0;f<n.size;f++){const a=Number(b[m+f]);isNaN(a)||(s+=(a-r)**2)}else for(let f=0;f<n.size;f++){const a=Number(n.iget(f));isNaN(a)||(s+=(a-r)**2)}return s/(t-F)}let y=p;if(y<0&&(y=N+y),y<0||y>=N)throw new Error(`axis ${p} is out of bounds for array of dimension ${N}`);const A=Array.from(I).filter((e,t)=>t!==y);if(A.length===0)return L(n,void 0,F);const $=A.reduce((e,t)=>e*t,1),S=I[y],D=new Float64Array($);for(let e=0;e<$;e++){let t=0,o=0;for(let f=0;f<S;f++){const a=M(e,y,f,I),i=V(a,h,m),d=Number(b[i]);isNaN(d)||(t+=d,o++)}if(o-F<=0){D[e]=NaN;continue}const r=t/o;let s=0;for(let f=0;f<S;f++){const a=M(e,y,f,I),i=V(a,h,m),d=Number(b[i]);isNaN(d)||(s+=(d-r)**2)}D[e]=s/(o-F)}const l=B.fromData(D,A,"float64");if(x){const e=[...I];return e[y]=1,B.fromData(D,e,"float64")}return l}function Dt(n,p,F=0,x=!1){const c=L(n,p,F,x);if(typeof c=="number")return Math.sqrt(c);const I=c,N=new Float64Array(I.size);for(let b=0;b<I.size;b++)N[b]=Math.sqrt(Number(I.data[b]));return B.fromData(N,[...I.shape],"float64")}function Z(n,p,F=!1){const x=n.dtype,c=n.shape,I=c.length,N=n.data,b=n.offset,m=n.strides;if(k(x)){const l=N;if(p===void 0){let a=1/0,i=1/0,d=!1;if(n.isCContiguous)for(let u=0;u<n.size;u++){const z=l[(b+u)*2],C=l[(b+u)*2+1];isNaN(z)||isNaN(C)||(d?(z<a||z===a&&C<i)&&(a=z,i=C):(a=z,i=C,d=!0))}else for(let u=0;u<n.size;u++){const z=n.iget(u),C=z.re,E=z.im;isNaN(C)||isNaN(E)||(d?(C<a||C===a&&E<i)&&(a=C,i=E):(a=C,i=E,d=!0))}return d?new U(a,i):new U(NaN,NaN)}let e=p;if(e<0&&(e=I+e),e<0||e>=I)throw new Error(`axis ${p} is out of bounds for array of dimension ${I}`);const t=Array.from(c).filter((a,i)=>i!==e);if(t.length===0)return Z(n);const o=t.reduce((a,i)=>a*i,1),r=c[e],s=new Float64Array(o*2);for(let a=0;a<o;a++){let i=1/0,d=1/0,w=!1;for(let u=0;u<r;u++){const z=M(a,e,u,c),C=V(z,m,b),E=l[C*2],R=l[C*2+1];isNaN(E)||isNaN(R)||(w?(E<i||E===i&&R<d)&&(i=E,d=R):(i=E,d=R,w=!0))}s[a*2]=w?i:NaN,s[a*2+1]=w?d:NaN}const f=B.fromData(s,t,x);if(F){const a=[...c];return a[e]=1,B.fromData(s,a,x)}return f}if(p===void 0){let l=1/0;if(n.isCContiguous)for(let t=0;t<n.size;t++){const o=Number(N[b+t]);!isNaN(o)&&o<l&&(l=o)}else for(let t=0;t<n.size;t++){const o=Number(n.iget(t));!isNaN(o)&&o<l&&(l=o)}return l===1/0?NaN:l}let h=p;if(h<0&&(h=I+h),h<0||h>=I)throw new Error(`axis ${p} is out of bounds for array of dimension ${I}`);const y=Array.from(c).filter((l,e)=>e!==h);if(y.length===0)return Z(n);const A=y.reduce((l,e)=>l*e,1),$=c[h],S=new Float64Array(A);for(let l=0;l<A;l++){let e=1/0;for(let t=0;t<$;t++){const o=M(l,h,t,c),r=V(o,m,b),s=Number(N[r]);!isNaN(s)&&s<e&&(e=s)}S[l]=e===1/0?NaN:e}const D=B.fromData(S,y,"float64");if(F){const l=[...c];return l[h]=1,B.fromData(S,l,"float64")}return D}function tt(n,p,F=!1){const x=n.dtype,c=n.shape,I=c.length,N=n.data,b=n.offset,m=n.strides;if(k(x)){const l=N;if(p===void 0){let a=-1/0,i=-1/0,d=!1;if(n.isCContiguous)for(let u=0;u<n.size;u++){const z=l[(b+u)*2],C=l[(b+u)*2+1];isNaN(z)||isNaN(C)||(d?(z>a||z===a&&C>i)&&(a=z,i=C):(a=z,i=C,d=!0))}else for(let u=0;u<n.size;u++){const z=n.iget(u),C=z.re,E=z.im;isNaN(C)||isNaN(E)||(d?(C>a||C===a&&E>i)&&(a=C,i=E):(a=C,i=E,d=!0))}return d?new U(a,i):new U(NaN,NaN)}let e=p;if(e<0&&(e=I+e),e<0||e>=I)throw new Error(`axis ${p} is out of bounds for array of dimension ${I}`);const t=Array.from(c).filter((a,i)=>i!==e);if(t.length===0)return tt(n);const o=t.reduce((a,i)=>a*i,1),r=c[e],s=new Float64Array(o*2);for(let a=0;a<o;a++){let i=-1/0,d=-1/0,w=!1;for(let u=0;u<r;u++){const z=M(a,e,u,c),C=V(z,m,b),E=l[C*2],R=l[C*2+1];isNaN(E)||isNaN(R)||(w?(E>i||E===i&&R>d)&&(i=E,d=R):(i=E,d=R,w=!0))}s[a*2]=w?i:NaN,s[a*2+1]=w?d:NaN}const f=B.fromData(s,t,x);if(F){const a=[...c];return a[e]=1,B.fromData(s,a,x)}return f}if(p===void 0){let l=-1/0;if(n.isCContiguous)for(let t=0;t<n.size;t++){const o=Number(N[b+t]);!isNaN(o)&&o>l&&(l=o)}else for(let t=0;t<n.size;t++){const o=Number(n.iget(t));!isNaN(o)&&o>l&&(l=o)}return l===-1/0?NaN:l}let h=p;if(h<0&&(h=I+h),h<0||h>=I)throw new Error(`axis ${p} is out of bounds for array of dimension ${I}`);const y=Array.from(c).filter((l,e)=>e!==h);if(y.length===0)return tt(n);const A=y.reduce((l,e)=>l*e,1),$=c[h],S=new Float64Array(A);for(let l=0;l<A;l++){let e=-1/0;for(let t=0;t<$;t++){const o=M(l,h,t,c),r=V(o,m,b),s=Number(N[r]);!isNaN(s)&&s>e&&(e=s)}S[l]=e===-1/0?NaN:e}const D=B.fromData(S,y,"float64");if(F){const l=[...c];return l[h]=1,B.fromData(S,l,"float64")}return D}function et(n,p){const F=n.dtype,x=n.shape,c=x.length,I=n.data,N=n.offset,b=n.strides;if(k(F)){const S=I;if(p===void 0){let r=1/0,s=1/0,f=-1;if(n.isCContiguous)for(let i=0;i<n.size;i++){const d=S[(N+i)*2],w=S[(N+i)*2+1];!P(d,w)&&W(d,w,r,s)<0&&(r=d,s=w,f=i)}else for(let i=0;i<n.size;i++){const d=n.iget(i),w=d.re,u=d.im;!P(w,u)&&W(w,u,r,s)<0&&(r=w,s=u,f=i)}return f}let D=p;if(D<0&&(D=c+D),D<0||D>=c)throw new Error(`axis ${p} is out of bounds for array of dimension ${c}`);const l=Array.from(x).filter((r,s)=>s!==D);if(l.length===0)return et(n);const e=l.reduce((r,s)=>r*s,1),t=x[D],o=new Int32Array(e);for(let r=0;r<e;r++){let s=1/0,f=1/0,a=0;for(let i=0;i<t;i++){const d=M(r,D,i,x),w=V(d,b,N),u=S[w*2],z=S[w*2+1];!P(u,z)&&W(u,z,s,f)<0&&(s=u,f=z,a=i)}o[r]=a}return B.fromData(o,l,"int32")}if(p===void 0){let S=1/0,D=-1;if(n.isCContiguous)for(let e=0;e<n.size;e++){const t=Number(I[N+e]);!isNaN(t)&&t<S&&(S=t,D=e)}else for(let e=0;e<n.size;e++){const t=Number(n.iget(e));!isNaN(t)&&t<S&&(S=t,D=e)}return D}let m=p;if(m<0&&(m=c+m),m<0||m>=c)throw new Error(`axis ${p} is out of bounds for array of dimension ${c}`);const h=Array.from(x).filter((S,D)=>D!==m);if(h.length===0)return et(n);const y=h.reduce((S,D)=>S*D,1),A=x[m],$=new Int32Array(y);for(let S=0;S<y;S++){let D=1/0,l=0;for(let e=0;e<A;e++){const t=M(S,m,e,x),o=V(t,b,N),r=Number(I[o]);!isNaN(r)&&r<D&&(D=r,l=e)}$[S]=l}return B.fromData($,h,"int32")}function ot(n,p){const F=n.dtype,x=n.shape,c=x.length,I=n.data,N=n.offset,b=n.strides;if(k(F)){const S=I;if(p===void 0){let r=-1/0,s=-1/0,f=-1;if(n.isCContiguous)for(let i=0;i<n.size;i++){const d=S[(N+i)*2],w=S[(N+i)*2+1];!P(d,w)&&W(d,w,r,s)>0&&(r=d,s=w,f=i)}else for(let i=0;i<n.size;i++){const d=n.iget(i),w=d.re,u=d.im;!P(w,u)&&W(w,u,r,s)>0&&(r=w,s=u,f=i)}return f}let D=p;if(D<0&&(D=c+D),D<0||D>=c)throw new Error(`axis ${p} is out of bounds for array of dimension ${c}`);const l=Array.from(x).filter((r,s)=>s!==D);if(l.length===0)return ot(n);const e=l.reduce((r,s)=>r*s,1),t=x[D],o=new Int32Array(e);for(let r=0;r<e;r++){let s=-1/0,f=-1/0,a=0;for(let i=0;i<t;i++){const d=M(r,D,i,x),w=V(d,b,N),u=S[w*2],z=S[w*2+1];!P(u,z)&&W(u,z,s,f)>0&&(s=u,f=z,a=i)}o[r]=a}return B.fromData(o,l,"int32")}if(p===void 0){let S=-1/0,D=-1;if(n.isCContiguous)for(let e=0;e<n.size;e++){const t=Number(I[N+e]);!isNaN(t)&&t>S&&(S=t,D=e)}else for(let e=0;e<n.size;e++){const t=Number(n.iget(e));!isNaN(t)&&t>S&&(S=t,D=e)}return D}let m=p;if(m<0&&(m=c+m),m<0||m>=c)throw new Error(`axis ${p} is out of bounds for array of dimension ${c}`);const h=Array.from(x).filter((S,D)=>D!==m);if(h.length===0)return ot(n);const y=h.reduce((S,D)=>S*D,1),A=x[m],$=new Int32Array(y);for(let S=0;S<y;S++){let D=-1/0,l=0;for(let e=0;e<A;e++){const t=M(S,m,e,x),o=V(t,b,N),r=Number(I[o]);!isNaN(r)&&r>D&&(D=r,l=e)}$[S]=l}return B.fromData($,h,"int32")}function wt(n,p){const F=n.dtype,x=n.shape,c=x.length,I=n.data,N=n.offset;if(k(F)){const l=I,e=n.size;if(p===void 0){const u=B.zeros([e],F),z=u.data;let C=0,E=0;if(n.isCContiguous)for(let v=0;v<e;v++){const g=l[(N+v)*2],_=l[(N+v)*2+1];P(g,_)||(C+=g,E+=_),z[v*2]=C,z[v*2+1]=E}else for(let v=0;v<e;v++){const g=n.iget(v),_=g.re,T=g.im;P(_,T)||(C+=_,E+=T),z[v*2]=C,z[v*2+1]=E}return u}let t=p;if(t<0&&(t=c+t),t<0||t>=c)throw new Error(`axis ${p} is out of bounds for array of dimension ${c}`);const o=B.zeros([...x],F),r=o.data,s=x[t],f=[];let a=1;for(let u=c-1;u>=0;u--)f.unshift(a),a*=x[u];const i=n.size,d=f[t];if(n.isCContiguous)for(let u=0;u<i;u++){const z=l[(N+u)*2],C=l[(N+u)*2+1],E=Math.floor(u/d)%s,R=P(z,C);E===0?(r[u*2]=R?0:z,r[u*2+1]=R?0:C):(r[u*2]=r[(u-d)*2]+(R?0:z),r[u*2+1]=r[(u-d)*2+1]+(R?0:C))}else for(let u=0;u<i;u++){const z=n.iget(u),C=z.re,E=z.im,R=Math.floor(u/d)%s,v=P(C,E);R===0?(r[u*2]=v?0:C,r[u*2+1]=v?0:E):(r[u*2]=r[(u-d)*2]+(v?0:C),r[u*2+1]=r[(u-d)*2+1]+(v?0:E))}return o}if(p===void 0){const l=n.size,e=new Float64Array(l);let t=0;if(n.isCContiguous)for(let r=0;r<l;r++){const s=Number(I[N+r]);isNaN(s)||(t+=s),e[r]=t}else for(let r=0;r<l;r++){const s=Number(n.iget(r));isNaN(s)||(t+=s),e[r]=t}return B.fromData(e,[l],"float64")}let b=p;if(b<0&&(b=c+b),b<0||b>=c)throw new Error(`axis ${p} is out of bounds for array of dimension ${c}`);const m=new Float64Array(n.size),h=x[b],y=[];let A=1;for(let l=c-1;l>=0;l--)y.unshift(A),A*=x[l];const $=n.size,S=y[b];if(n.isCContiguous)for(let l=0;l<$;l++){const e=Number(I[N+l]);Math.floor(l/S)%h===0?m[l]=isNaN(e)?0:e:m[l]=m[l-S]+(isNaN(e)?0:e)}else for(let l=0;l<$;l++){const e=Number(n.iget(l));Math.floor(l/S)%h===0?m[l]=isNaN(e)?0:e:m[l]=m[l-S]+(isNaN(e)?0:e)}return B.fromData(m,[...x],"float64")}function Ct(n,p){const F=n.dtype,x=n.shape,c=x.length,I=n.data,N=n.offset;if(k(F)){const l=I,e=n.size;if(p===void 0){const u=B.zeros([e],F),z=u.data;let C=1,E=0;if(n.isCContiguous)for(let v=0;v<e;v++){const g=l[(N+v)*2],_=l[(N+v)*2+1];if(!P(g,_)){const T=C*g-E*_,q=C*_+E*g;C=T,E=q}z[v*2]=C,z[v*2+1]=E}else for(let v=0;v<e;v++){const g=n.iget(v),_=g.re,T=g.im;if(!P(_,T)){const q=C*_-E*T,O=C*T+E*_;C=q,E=O}z[v*2]=C,z[v*2+1]=E}return u}let t=p;if(t<0&&(t=c+t),t<0||t>=c)throw new Error(`axis ${p} is out of bounds for array of dimension ${c}`);const o=B.zeros([...x],F),r=o.data,s=x[t],f=[];let a=1;for(let u=c-1;u>=0;u--)f.unshift(a),a*=x[u];const i=n.size,d=f[t];if(n.isCContiguous)for(let u=0;u<i;u++){const z=l[(N+u)*2],C=l[(N+u)*2+1],E=Math.floor(u/d)%s,R=P(z,C);if(E===0)r[u*2]=R?1:z,r[u*2+1]=R?0:C;else{const v=r[(u-d)*2],g=r[(u-d)*2+1];R?(r[u*2]=v,r[u*2+1]=g):(r[u*2]=v*z-g*C,r[u*2+1]=v*C+g*z)}}else for(let u=0;u<i;u++){const z=n.iget(u),C=z.re,E=z.im,R=Math.floor(u/d)%s,v=P(C,E);if(R===0)r[u*2]=v?1:C,r[u*2+1]=v?0:E;else{const g=r[(u-d)*2],_=r[(u-d)*2+1];v?(r[u*2]=g,r[u*2+1]=_):(r[u*2]=g*C-_*E,r[u*2+1]=g*E+_*C)}}return o}if(p===void 0){const l=n.size,e=new Float64Array(l);let t=1;if(n.isCContiguous)for(let r=0;r<l;r++){const s=Number(I[N+r]);isNaN(s)||(t*=s),e[r]=t}else for(let r=0;r<l;r++){const s=Number(n.iget(r));isNaN(s)||(t*=s),e[r]=t}return B.fromData(e,[l],"float64")}let b=p;if(b<0&&(b=c+b),b<0||b>=c)throw new Error(`axis ${p} is out of bounds for array of dimension ${c}`);const m=new Float64Array(n.size),h=x[b],y=[];let A=1;for(let l=c-1;l>=0;l--)y.unshift(A),A*=x[l];const $=n.size,S=y[b];if(n.isCContiguous)for(let l=0;l<$;l++){const e=Number(I[N+l]);Math.floor(l/S)%h===0?m[l]=isNaN(e)?1:e:m[l]=m[l-S]*(isNaN(e)?1:e)}else for(let l=0;l<$;l++){const e=Number(n.iget(l));Math.floor(l/S)%h===0?m[l]=isNaN(e)?1:e:m[l]=m[l-S]*(isNaN(e)?1:e)}return B.fromData(m,[...x],"float64")}function dt(n,p,F=!1){H(n.dtype,"nanmedian","Complex numbers are not orderable.");const x=n.shape,c=x.length,I=n.data,N=n.offset,b=n.strides;if(p===void 0){const D=[];if(n.isCContiguous)for(let o=0;o<n.size;o++){const r=Number(I[N+o]);isNaN(r)||D.push(r)}else for(let o=0;o<n.size;o++){const r=Number(n.iget(o));isNaN(r)||D.push(r)}if(D.length===0)return NaN;D.sort((o,r)=>o-r);const e=D.length,t=Math.floor(e/2);return e%2===0?(D[t-1]+D[t])/2:D[t]}let m=p;if(m<0&&(m=c+m),m<0||m>=c)throw new Error(`axis ${p} is out of bounds for array of dimension ${c}`);const h=Array.from(x).filter((D,l)=>l!==m);if(h.length===0)return dt(n);const y=h.reduce((D,l)=>D*l,1),A=x[m],$=new Float64Array(y);for(let D=0;D<y;D++){const l=[];for(let o=0;o<A;o++){const r=M(D,m,o,x),s=V(r,b,N),f=Number(I[s]);isNaN(f)||l.push(f)}if(l.length===0){$[D]=NaN;continue}l.sort((o,r)=>o-r);const e=l.length,t=Math.floor(e/2);e%2===0?$[D]=(l[t-1]+l[t])/2:$[D]=l[t]}const S=B.fromData($,h,"float64");if(F){const D=[...x];return D[m]=1,B.fromData($,D,"float64")}return S}function nt(n,p,F,x=!1){if(H(n.dtype,"nanquantile","Complex numbers are not orderable."),p<0||p>1)throw new Error("Quantile must be between 0 and 1");const c=n.shape,I=c.length,N=n.data,b=n.offset,m=n.strides;if(F===void 0){const l=[];if(n.isCContiguous)for(let a=0;a<n.size;a++){const i=Number(N[b+a]);isNaN(i)||l.push(i)}else for(let a=0;a<n.size;a++){const i=Number(n.iget(a));isNaN(i)||l.push(i)}if(l.length===0)return NaN;l.sort((a,i)=>a-i);const t=l.length,o=p*(t-1),r=Math.floor(o),s=Math.ceil(o);if(r===s)return l[r];const f=o-r;return l[r]*(1-f)+l[s]*f}let h=F;if(h<0&&(h=I+h),h<0||h>=I)throw new Error(`axis ${F} is out of bounds for array of dimension ${I}`);const y=Array.from(c).filter((l,e)=>e!==h);if(y.length===0)return nt(n,p);const A=y.reduce((l,e)=>l*e,1),$=c[h],S=new Float64Array(A);for(let l=0;l<A;l++){const e=[];for(let f=0;f<$;f++){const a=M(l,h,f,c),i=V(a,m,b),d=Number(N[i]);isNaN(d)||e.push(d)}if(e.length===0){S[l]=NaN;continue}e.sort((f,a)=>f-a);const t=e.length,o=p*(t-1),r=Math.floor(o),s=Math.ceil(o);if(r===s)S[l]=e[r];else{const f=o-r;S[l]=e[r]*(1-f)+e[s]*f}}const D=B.fromData(S,y,"float64");if(x){const l=[...c];return l[h]=1,B.fromData(S,l,"float64")}return D}function Ft(n,p,F,x=!1){return nt(n,p/100,F,x)}export{ft as all,lt as any,st as argmax,it as argmin,Y as average,At as cumprod,bt as cumsum,j as max,X as mean,St as median,G as min,ot as nanargmax,et as nanargmin,Ct as nancumprod,wt as nancumsum,tt as nanmax,mt as nanmean,dt as nanmedian,Z as nanmin,Ft as nanpercentile,ct as nanprod,nt as nanquantile,Dt as nanstd,ut as nansum,L as nanvar,zt as percentile,rt as prod,ht as ptp,K as quantile,Nt as std,J as sum,at as variance};
|
|
1
|
+
import{ArrayStorage as E}from"../storage.js";import{getTypedArrayConstructor as rt,hasFloat16 as ut,isBigIntDType as L,isComplexDType as P,isFloatDType as H,throwIfComplex as st}from"../dtype.js";import{computeStrides as ot,precomputeAxisOffsets as q}from"../internal/indexing.js";import{Complex as Q}from"../complex.js";import{wasmReduceSum as ht,wasmReduceSumStrided as zt}from"../wasm/reduce_sum.js";import{wasmReduceMax as wt,wasmReduceMaxStrided as Dt}from"../wasm/reduce_max.js";import{wasmReduceMin as Ct,wasmReduceMinStrided as Ft}from"../wasm/reduce_min.js";import{wasmReduceArgmax as Rt}from"../wasm/reduce_argmax.js";import{wasmReduceArgmin as vt}from"../wasm/reduce_argmin.js";import{wasmReduceMean as $t,wasmReduceMeanStrided as Bt}from"../wasm/reduce_mean.js";import{wasmReduceVar as Et}from"../wasm/reduce_var.js";import{wasmReduceNansum as Tt}from"../wasm/reduce_nansum.js";import{wasmReduceNanmin as Ot}from"../wasm/reduce_nanmin.js";import{wasmReduceNanmax as Vt}from"../wasm/reduce_nanmax.js";import{wasmReduceProd as _t,wasmReduceProdStrided as gt}from"../wasm/reduce_prod.js";import{wasmReduceQuantile as Mt}from"../wasm/reduce_quantile.js";import{wasmReduceAny as Ut}from"../wasm/reduce_any.js";import{wasmReduceAll as Pt}from"../wasm/reduce_all.js";import{wasmReduceStd as qt}from"../wasm/reduce_std.js";const G=new Float32Array(2),Z=typeof globalThis.Float16Array<"u"?new Float16Array(2):null;function X(t){return t==="float16"?Z:t==="float32"?G:null}function at(t,p){const S=X(p);return S?(S[0]=t,S[0]):t}function ct(t){switch(t){case"int8":case"int16":case"int32":return"int64";case"uint8":case"uint16":case"uint32":return"uint64";default:return t}}function Wt(t){switch(t){case"int8":case"int16":case"int32":case"uint8":case"uint16":case"uint32":case"int64":case"uint64":return"float64";default:return t}}function j(t,p,S){const l=E.zeros(Array(p).fill(1),S);return l.iset(0,t),l}function k(t,p,S=!1){const l=t.dtype,d=t.shape,A=d.length,z=t.size,I=t.data,N=t.offset,F=t.strides,h=t.isCContiguous;if(p===void 0){const e=ht(t);if(e!==null)return e;if(P(l)){let o=0,n=0;if(h){const s=I;for(let a=0;a<z;a++)o+=s[(N+a)*2],n+=s[(N+a)*2+1]}else for(let s=0;s<z;s++){const a=t.iget(s);o+=a.re,n+=a.im}return new Q(o,n)}else if(L(l)){let o=BigInt(0);if(h){const n=I;for(let s=0;s<z;s++)o+=n[N+s]}else for(let n=0;n<z;n++)o+=t.iget(n);return Number(o)}else if(l==="float32"||l==="float16"&&Z){const o=X(l);if(o[0]=0,h){const n=l==="float16"?new Float32Array(I.subarray(N,N+z)):I,s=l==="float16"?0:N;for(let a=0;a<z;a++)o[0]+=Number(n[s+a])}else for(let n=0;n<z;n++)o[0]+=Number(t.iget(n));return o[0]}else{let o=0;if(h)if(N===0)for(let n=0;n<z;n++)o+=Number(I[n]);else for(let n=0;n<z;n++)o+=Number(I[N+n]);else for(let n=0;n<z;n++)o+=Number(t.iget(n));return o}}let w=p;if(w<0&&(w=A+w),w<0||w>=A)throw new Error(`axis ${p} is out of bounds for array of dimension ${A}`);const R=ct(l),$=Array.from(d).filter((e,o)=>o!==w);if($.length===0){const e=k(t);if(!S)return e;const o=E.zeros(Array(A).fill(1),R);return o.iset(0,e),o}const T=E.zeros($,R),x=T.data,y=d[w],u=$.reduce((e,o)=>e*o,1);if(h&&!P(l)){const e=d.slice(0,w).reduce((s,a)=>s*a,1),o=d.slice(w+1).reduce((s,a)=>s*a,1),n=zt(t,e,y,o);if(n){const s=S?d.map((m,c)=>c===w?1:m):$;if(R==="float64")return E.fromData(n.data,s,R);if(R==="float32"){const m=new Float32Array(n.data.length),c=n.data;for(let f=0;f<c.length;f++)m[f]=c[f];return E.fromData(m,s,R)}const a=n.data;for(let m=0;m<a.length;m++)x[m]=x instanceof BigInt64Array||x instanceof BigUint64Array?BigInt(Math.round(a[m])):a[m];return S?E.fromData(x,s,R):T}}const{baseOffsets:i,axisStride:r}=q(d,F,N,w,u);if(P(l)){const e=I,o=x;if(l==="complex64")for(let n=0;n<u;n++){G[0]=0,G[1]=0;let s=i[n];for(let a=0;a<y;a++)G[0]+=e[s*2],G[1]+=e[s*2+1],s+=r;o[n*2]=G[0],o[n*2+1]=G[1]}else for(let n=0;n<u;n++){let s=0,a=0,m=i[n];for(let c=0;c<y;c++)s+=e[m*2],a+=e[m*2+1],m+=r;o[n*2]=s,o[n*2+1]=a}}else if(L(l)){const e=I,o=x;for(let n=0;n<u;n++){let s=BigInt(0),a=i[n];for(let m=0;m<y;m++)s+=e[a],a+=r;o[n]=s}}else if(L(R)){const e=x;for(let o=0;o<u;o++){let n=0,s=i[o];for(let a=0;a<y;a++)n+=Number(I[s]),s+=r;e[o]=BigInt(Math.round(n))}}else if(l==="float32"||l==="float16"&&Z){const e=X(l);for(let o=0;o<u;o++){e[0]=0;let n=i[o];for(let s=0;s<y;s++)e[0]+=Number(I[n]),n+=r;x[o]=e[0]}}else for(let e=0;e<u;e++){let o=0,n=i[e];for(let s=0;s<y;s++)o+=Number(I[n]),n+=r;x[e]=o}if(S){const e=[...d];return e[w]=1,E.fromData(x,e,R)}return T}function ft(t,p,S=!1){const l=t.dtype,d=t.shape;if(p===void 0){const T=$t(t);if(T!==null)return T;if(l==="float16"||l==="float32"){let y=0;const u=t.offset;if(t.isCContiguous)for(let i=0;i<t.size;i++)y+=Number(t.data[u+i]);else for(let i=0;i<t.size;i++)y+=Number(t.iget(i));return at(y/t.size,l)}const x=k(t);return x instanceof Q?new Q(x.re/t.size,x.im/t.size):x/t.size}let A=p;if(A<0&&(A=d.length+A),A<0||A>=d.length)throw new Error(`axis ${p} is out of bounds for array of dimension ${d.length}`);if(t.isCContiguous&&!P(l)){const T=d[A],x=S?d.map((r,e)=>e===A?1:r):Array.from(d).filter((r,e)=>e!==A),y=d.slice(0,A).reduce((r,e)=>r*e,1),u=d.slice(A+1).reduce((r,e)=>r*e,1),i=Bt(t,y,T,u);if(i)return E.fromData(i.data,x,"float64")}let z;if(l==="float16"||l==="float32"){const T=E.zeros(Array.from(d),"float64"),x=t.data,y=T.data,u=t.offset;if(t.isCContiguous){const s=l==="float16"&&ut?new Float32Array(x.subarray(u,u+t.size)):x,a=l==="float16"&&ut?0:u;for(let m=0;m<t.size;m++)y[m]=Number(s[a+m])}else for(let s=0;s<t.size;s++)y[s]=Number(t.iget(s));const i=k(T,A,S);if(typeof i=="number")return at(i/d[A],l);z=i;const r=d[A],e=z.data,o=rt(l),n=new o(e.length);for(let s=0;s<e.length;s++)n[s]=e[s]/r;return E.fromData(n,Array.from(z.shape),l)}const I=k(t,p,S);if(typeof I=="number")return I/d[A];if(I instanceof Q)return new Q(I.re/d[A],I.im/d[A]);const N=d[A],F=Wt(l),h=E.zeros(Array.from(I.shape),F),w=h.data,R=I.data,$=I.dtype;if(P(l)){const T=R,x=w,y=I.size;for(let u=0;u<y;u++)x[u*2]=T[u*2]/N,x[u*2+1]=T[u*2+1]/N}else if(L($)){const T=R;for(let x=0;x<w.length;x++)w[x]=Number(T[x])/N}else for(let T=0;T<w.length;T++)w[T]=Number(R[T])/N;return h}function tt(t,p,S=!1){const l=t.dtype,d=t.shape,A=d.length,z=t.size,I=t.data,N=t.offset,F=t.strides;if(P(l)){const i=I;if(p===void 0){if(z===0)throw new Error("max of empty array");let f=i[N*2],b=i[N*2+1];for(let D=1;D<z;D++){const v=i[(N+D)*2],C=i[(N+D)*2+1];if(isNaN(v)||isNaN(C))return new Q(NaN,NaN);(v>f||v===f&&C>b)&&(f=v,b=C)}return isNaN(f)||isNaN(b)?new Q(NaN,NaN):new Q(f,b)}let r=p;if(r<0&&(r=A+r),r<0||r>=A)throw new Error(`axis ${p} is out of bounds for array of dimension ${A}`);const e=Array.from(d).filter((f,b)=>b!==r);if(e.length===0){const f=tt(t);return S?j(f,A,l):f}const o=E.zeros(e,l),n=o.data,s=d[r],a=e.reduce((f,b)=>f*b,1),{baseOffsets:m,axisStride:c}=q(d,F,N,r,a);for(let f=0;f<a;f++){let b=m[f],D=i[b*2],v=i[b*2+1];b+=c;for(let C=1;C<s;C++){const B=i[b*2],O=i[b*2+1];if(b+=c,isNaN(B)||isNaN(O)){D=NaN,v=NaN;break}(B>D||B===D&&O>v)&&(D=B,v=O)}n[f*2]=D,n[f*2+1]=v}if(S){const f=[...d];return f[r]=1,E.fromData(n,f,l)}return o}if(p===void 0){const i=wt(t);if(i!==null)return i;if(z===0)throw new Error("max of empty array");if(t.isCContiguous){let r=I[N];if(N===0)for(let e=1;e<z;e++)I[e]>r&&(r=I[e]);else for(let e=1;e<z;e++)I[N+e]>r&&(r=I[N+e]);return Number(r)}else{let r=t.iget(0);for(let e=1;e<z;e++){const o=t.iget(e);o>r&&(r=o)}return Number(r)}}let h=p;if(h<0&&(h=A+h),h<0||h>=A)throw new Error(`axis ${p} is out of bounds for array of dimension ${A}`);const w=Array.from(d).filter((i,r)=>r!==h);if(w.length===0){const i=tt(t);return S?j(i,A,l):i}const R=E.zeros(w,l),$=R.data,T=d[h],x=w.reduce((i,r)=>i*r,1);if(t.isCContiguous&&!P(l)){const i=d.slice(0,h).reduce((o,n)=>o*n,1),r=d.slice(h+1).reduce((o,n)=>o*n,1),e=Dt(t,i,T,r);if(e){const o=S?d.map((n,s)=>s===h?1:n):w;return E.fromData(e.data,o,l)}}const{baseOffsets:y,axisStride:u}=q(d,F,N,h,x);if(L(l)){const i=I,r=$;for(let e=0;e<x;e++){let o=y[e],n=i[o];o+=u;for(let s=1;s<T;s++){const a=i[o];a>n&&(n=a),o+=u}r[e]=n}}else for(let i=0;i<x;i++){let r=-1/0,e=y[i];for(let o=0;o<T;o++){const n=Number(I[e]);n>r&&(r=n),e+=u}$[i]=r}if(S){const i=[...d];return i[h]=1,E.fromData($,i,l)}return R}function mt(t,p,S=!1){const l=t.dtype,d=t.shape,A=d.length,z=t.size,I=t.data,N=t.offset,F=t.strides,h=t.isCContiguous;if(p===void 0){const e=_t(t);if(e!==null)return e;if(P(l)){let o=1,n=0;if(h){const s=I;for(let a=0;a<z;a++){const m=s[(N+a)*2],c=s[(N+a)*2+1],f=o*m-n*c,b=o*c+n*m;o=f,n=b}}else for(let s=0;s<z;s++){const a=t.iget(s),m=a.re,c=a.im,f=o*m-n*c,b=o*c+n*m;o=f,n=b}return new Q(o,n)}else if(L(l)){let o=BigInt(1);if(h){const n=I;for(let s=0;s<z;s++)o*=n[N+s]}else for(let n=0;n<z;n++)o*=t.iget(n);return Number(o)}else if(l==="float32"||l==="float16"&&Z){const o=X(l);if(o[0]=1,h)for(let n=0;n<z;n++)o[0]*=Number(I[N+n]);else for(let n=0;n<z;n++)o[0]*=Number(t.iget(n));return o[0]}else{let o=1;if(h)if(N===0)for(let n=0;n<z;n++)o*=Number(I[n]);else for(let n=0;n<z;n++)o*=Number(I[N+n]);else for(let n=0;n<z;n++)o*=Number(t.iget(n));return o}}let w=p;if(w<0&&(w=A+w),w<0||w>=A)throw new Error(`axis ${p} is out of bounds for array of dimension ${A}`);const R=ct(l),$=Array.from(d).filter((e,o)=>o!==w);if($.length===0){const e=mt(t);return S?j(e,A,R):e}const T=E.zeros($,R),x=T.data,y=d[w],u=$.reduce((e,o)=>e*o,1);if(h&&!P(l)){const e=d.slice(0,w).reduce((s,a)=>s*a,1),o=d.slice(w+1).reduce((s,a)=>s*a,1),n=gt(t,e,y,o);if(n){const s=S?d.map((a,m)=>m===w?1:a):$;return E.fromData(n.data,s,R)}}const{baseOffsets:i,axisStride:r}=q(d,F,N,w,u);if(P(l)){const e=I,o=x;if(l==="complex64")for(let n=0;n<u;n++){G[0]=1,G[1]=0;let s=i[n];for(let a=0;a<y;a++){const m=e[s*2],c=e[s*2+1],f=G[0],b=G[1];G[0]=f*m-b*c,G[1]=f*c+b*m,s+=r}o[n*2]=G[0],o[n*2+1]=G[1]}else for(let n=0;n<u;n++){let s=1,a=0,m=i[n];for(let c=0;c<y;c++){const f=e[m*2],b=e[m*2+1],D=s*f-a*b,v=s*b+a*f;s=D,a=v,m+=r}o[n*2]=s,o[n*2+1]=a}}else if(L(l)){const e=I,o=x;for(let n=0;n<u;n++){let s=BigInt(1),a=i[n];for(let m=0;m<y;m++)s*=e[a],a+=r;o[n]=s}}else if(L(R)){const e=x;for(let o=0;o<u;o++){let n=BigInt(1),s=i[o];for(let a=0;a<y;a++)n*=BigInt(Number(I[s])),s+=r;e[o]=n}}else if(l==="float32"||l==="float16"&&Z){const e=X(l);for(let o=0;o<u;o++){e[0]=1;let n=i[o];for(let s=0;s<y;s++)e[0]*=Number(I[n]),n+=r;x[o]=e[0]}}else for(let e=0;e<u;e++){let o=1,n=i[e];for(let s=0;s<y;s++)o*=Number(I[n]),n+=r;x[e]=o}if(S){const e=[...d];return e[w]=1,E.fromData(x,e,R)}return T}function et(t,p,S=!1){const l=t.dtype,d=t.shape,A=d.length,z=t.size,I=t.data,N=t.offset,F=t.strides;if(P(l)){const i=I;if(p===void 0){if(z===0)throw new Error("min of empty array");let f=i[N*2],b=i[N*2+1];for(let D=1;D<z;D++){const v=i[(N+D)*2],C=i[(N+D)*2+1];if(isNaN(v)||isNaN(C))return new Q(NaN,NaN);(v<f||v===f&&C<b)&&(f=v,b=C)}return isNaN(f)||isNaN(b)?new Q(NaN,NaN):new Q(f,b)}let r=p;if(r<0&&(r=A+r),r<0||r>=A)throw new Error(`axis ${p} is out of bounds for array of dimension ${A}`);const e=Array.from(d).filter((f,b)=>b!==r);if(e.length===0){const f=et(t);return S?j(f,A,l):f}const o=E.zeros(e,l),n=o.data,s=d[r],a=e.reduce((f,b)=>f*b,1),{baseOffsets:m,axisStride:c}=q(d,F,N,r,a);for(let f=0;f<a;f++){let b=m[f],D=i[b*2],v=i[b*2+1];b+=c;for(let C=1;C<s;C++){const B=i[b*2],O=i[b*2+1];if(b+=c,isNaN(B)||isNaN(O)){D=NaN,v=NaN;break}(B<D||B===D&&O<v)&&(D=B,v=O)}n[f*2]=D,n[f*2+1]=v}if(S){const f=[...d];return f[r]=1,E.fromData(n,f,l)}return o}if(p===void 0){const i=Ct(t);if(i!==null)return i;if(z===0)throw new Error("min of empty array");if(t.isCContiguous){let r=I[N];if(N===0)for(let e=1;e<z;e++)I[e]<r&&(r=I[e]);else for(let e=1;e<z;e++)I[N+e]<r&&(r=I[N+e]);return Number(r)}else{let r=t.iget(0);for(let e=1;e<z;e++){const o=t.iget(e);o<r&&(r=o)}return Number(r)}}let h=p;if(h<0&&(h=A+h),h<0||h>=A)throw new Error(`axis ${p} is out of bounds for array of dimension ${A}`);const w=Array.from(d).filter((i,r)=>r!==h);if(w.length===0){const i=et(t);return S?j(i,A,l):i}const R=E.zeros(w,l),$=R.data,T=d[h],x=w.reduce((i,r)=>i*r,1);if(t.isCContiguous&&!P(l)){const i=d.slice(0,h).reduce((o,n)=>o*n,1),r=d.slice(h+1).reduce((o,n)=>o*n,1),e=Ft(t,i,T,r);if(e){const o=S?d.map((n,s)=>s===h?1:n):w;return E.fromData(e.data,o,l)}}const{baseOffsets:y,axisStride:u}=q(d,F,N,h,x);if(L(l)){const i=I,r=$;for(let e=0;e<x;e++){let o=y[e],n=i[o];o+=u;for(let s=1;s<T;s++){const a=i[o];a<n&&(n=a),o+=u}r[e]=n}}else for(let i=0;i<x;i++){let r=1/0,e=y[i];for(let o=0;o<T;o++){const n=Number(I[e]);n<r&&(r=n),e+=u}$[i]=r}if(S){const i=[...d];return i[h]=1,E.fromData($,i,l)}return R}function J(t,p,S,l){return t<S?-1:t>S?1:p<l?-1:p>l?1:0}function dt(t,p){const S=t.dtype,l=P(S),d=t.shape,A=d.length,z=t.size,I=t.data,N=t.offset,F=t.strides,h=t.isCContiguous;if(p===void 0){const r=vt(t);if(r!==null)return r;if(z===0)throw new Error("argmin of empty array");if(l)if(h){const e=I;let o=e[N*2],n=e[N*2+1],s=0;for(let a=1;a<z;a++){const m=e[(N+a)*2],c=e[(N+a)*2+1];J(m,c,o,n)<0&&(o=m,n=c,s=a)}return s}else{const e=t.iget(0);let o=e.re,n=e.im,s=0;for(let a=1;a<z;a++){const m=t.iget(a);J(m.re,m.im,o,n)<0&&(o=m.re,n=m.im,s=a)}return s}if(h){let e=I[N],o=0;if(N===0)for(let n=1;n<z;n++)I[n]<e&&(e=I[n],o=n);else for(let n=1;n<z;n++)I[N+n]<e&&(e=I[N+n],o=n);return o}else{let e=t.iget(0),o=0;for(let n=1;n<z;n++){const s=t.iget(n);s<e&&(e=s,o=n)}return o}}let w=p;if(w<0&&(w=A+w),w<0||w>=A)throw new Error(`axis ${p} is out of bounds for array of dimension ${A}`);const R=Array.from(d).filter((r,e)=>e!==w);if(R.length===0)return dt(t);const $=E.zeros(R,"int32"),T=$.data,x=d[w],y=R.reduce((r,e)=>r*e,1),{baseOffsets:u,axisStride:i}=q(d,F,N,w,y);if(l){const r=I;for(let e=0;e<y;e++){let o=u[e],n=r[o*2],s=r[o*2+1],a=0;o+=i;for(let m=1;m<x;m++){const c=r[o*2],f=r[o*2+1];J(c,f,n,s)<0&&(n=c,s=f,a=m),o+=i}T[e]=a}}else if(L(S)){const r=I;for(let e=0;e<y;e++){let o=u[e],n=r[o],s=0;o+=i;for(let a=1;a<x;a++){const m=r[o];m<n&&(n=m,s=a),o+=i}T[e]=s}}else for(let r=0;r<y;r++){let e=1/0,o=0,n=u[r];for(let s=0;s<x;s++){const a=Number(I[n]);a<e&&(e=a,o=s),n+=i}T[r]=o}return $}function xt(t,p){const S=t.dtype,l=P(S),d=t.shape,A=d.length,z=t.size,I=t.data,N=t.offset,F=t.strides,h=t.isCContiguous;if(p===void 0){const r=Rt(t);if(r!==null)return r;if(z===0)throw new Error("argmax of empty array");if(l)if(h){const e=I;let o=e[N*2],n=e[N*2+1],s=0;for(let a=1;a<z;a++){const m=e[(N+a)*2],c=e[(N+a)*2+1];J(m,c,o,n)>0&&(o=m,n=c,s=a)}return s}else{const e=t.iget(0);let o=e.re,n=e.im,s=0;for(let a=1;a<z;a++){const m=t.iget(a);J(m.re,m.im,o,n)>0&&(o=m.re,n=m.im,s=a)}return s}if(h){let e=I[N],o=0;for(let n=1;n<z;n++)I[N+n]>e&&(e=I[N+n],o=n);return o}else{let e=t.iget(0),o=0;for(let n=1;n<z;n++){const s=t.iget(n);s>e&&(e=s,o=n)}return o}}let w=p;if(w<0&&(w=A+w),w<0||w>=A)throw new Error(`axis ${p} is out of bounds for array of dimension ${A}`);const R=Array.from(d).filter((r,e)=>e!==w);if(R.length===0)return xt(t);const $=E.zeros(R,"int32"),T=$.data,x=d[w],y=R.reduce((r,e)=>r*e,1),{baseOffsets:u,axisStride:i}=q(d,F,N,w,y);if(l){const r=I;for(let e=0;e<y;e++){let o=u[e],n=r[o*2],s=r[o*2+1],a=0;o+=i;for(let m=1;m<x;m++){const c=r[o*2],f=r[o*2+1];J(c,f,n,s)>0&&(n=c,s=f,a=m),o+=i}T[e]=a}}else if(L(S)){const r=I;for(let e=0;e<y;e++){let o=u[e],n=r[o],s=0;o+=i;for(let a=1;a<x;a++){const m=r[o];m>n&&(n=m,s=a),o+=i}T[e]=s}}else for(let r=0;r<y;r++){let e=-1/0,o=0,n=u[r];for(let s=0;s<x;s++){const a=Number(I[n]);a>e&&(e=a,o=s),n+=i}T[r]=o}return $}function yt(t,p,S=0,l=!1){const d=t.dtype,A=t.shape,z=A.length,I=t.size,N=t.data,F=t.offset,h=t.strides,w=ft(t,p,l),R=t.isCContiguous;if(p===void 0){const s=Et(t);if(s!==null)return s;if(P(d)){const f=w;let b=0;if(R){const D=N;for(let v=0;v<I;v++){const C=D[(F+v)*2],B=D[(F+v)*2+1],O=C-f.re,V=B-f.im;b+=O*O+V*V}}else for(let D=0;D<I;D++){const v=t.iget(D),C=v.re-f.re,B=v.im-f.im;b+=C*C+B*B}return b/(I-S)}const a=w,m=X(d);if(m){if(m[0]=0,R)for(let f=0;f<I;f++){const b=Number(N[F+f])-a;m[0]+=b*b}else for(let f=0;f<I;f++){const b=Number(t.iget(f))-a;m[0]+=b*b}return m[0]/=I-S,m[0]}let c=0;if(R)for(let f=0;f<I;f++){const b=Number(N[F+f])-a;c+=b*b}else for(let f=0;f<I;f++){const b=Number(t.iget(f))-a;c+=b*b}return c/(I-S)}let $=p;if($<0&&($=z+$),$<0||$>=z)throw new Error(`axis ${p} is out of bounds for array of dimension ${z}`);const T=A[$],x=w,y=x.data,u=l?x.shape:Array.from(A).filter((s,a)=>a!==$),i=E.zeros(Array.from(u),"float64"),r=i.data,e=u.reduce((s,a)=>s*a,1),{baseOffsets:o,axisStride:n}=q(A,h,F,$,e);if(P(d)){const s=N,a=y;for(let m=0;m<e;m++){let c=0;const f=a[m*2],b=a[m*2+1];let D=o[m];for(let v=0;v<T;v++){const C=s[D*2],B=s[D*2+1],O=C-f,V=B-b;c+=O*O+V*V,D+=n}r[m]=c/(T-S)}}else{const s=X(d);if(s){const a=rt(d),m=new a(e);for(let c=0;c<e;c++){s[0]=0;const f=Number(y[c]);let b=o[c];for(let D=0;D<T;D++){const v=Number(N[b])-f;s[0]+=v*v,b+=n}s[0]/=T-S,m[c]=s[0]}return E.fromData(m,Array.from(u),d)}for(let a=0;a<e;a++){let m=0;const c=Number(y[a]);let f=o[a];for(let b=0;b<T;b++){const D=Number(N[f])-c;m+=D*D,f+=n}r[a]=m/(T-S)}}return i}function be(t,p,S=0,l=!1){if(p===void 0&&S===0&&!l){const N=qt(t);if(N!==null)return N}const d=yt(t,p,S,l);if(typeof d=="number")return Math.sqrt(d);const A=E.zeros(Array.from(d.shape),"float64"),z=d.data,I=A.data;for(let N=0;N<z.length;N++)I[N]=Math.sqrt(Number(z[N]));return A}function Qt(t,p,S=!1){const l=t.shape,d=l.length,A=t.size,z=t.data,I=t.offset,N=t.strides,F=t.isCContiguous;if(p===void 0){const i=Pt(t);if(i!==null)return i===1;if(F){for(let r=0;r<A;r++)if(!z[I+r])return!1}else for(let r=0;r<A;r++)if(!t.iget(r))return!1;return!0}let h=p;if(h<0&&(h=d+h),h<0||h>=d)throw new Error(`axis ${p} is out of bounds for array of dimension ${d}`);const w=Array.from(l).filter((i,r)=>r!==h);if(w.length===0){const i=Qt(t);if(!S)return i;const r=E.zeros(Array(d).fill(1),"bool");return r.iset(0,i?1:0),r}const R=E.zeros(w,"bool"),$=R.data,T=l[h],x=w.reduce((i,r)=>i*r,1),{baseOffsets:y,axisStride:u}=q(l,N,I,h,x);for(let i=0;i<x;i++){let r=!0,e=y[i];for(let o=0;o<T;o++){if(!z[e]){r=!1;break}e+=u}$[i]=r?1:0}if(S){const i=[...l];return i[h]=1,E.fromData($,i,"bool")}return R}function Kt(t,p,S=!1){const l=t.shape,d=l.length,A=t.size,z=t.data,I=t.offset,N=t.strides,F=t.isCContiguous;if(p===void 0){const i=Ut(t);if(i!==null)return i===1;if(F){for(let r=0;r<A;r++)if(z[I+r])return!0}else for(let r=0;r<A;r++)if(t.iget(r))return!0;return!1}let h=p;if(h<0&&(h=d+h),h<0||h>=d)throw new Error(`axis ${p} is out of bounds for array of dimension ${d}`);const w=Array.from(l).filter((i,r)=>r!==h);if(w.length===0){const i=Kt(t);if(!S)return i;const r=E.zeros(Array(d).fill(1),"bool");return r.iset(0,i?1:0),r}const R=E.zeros(w,"bool"),$=R.data,T=l[h],x=w.reduce((i,r)=>i*r,1),{baseOffsets:y,axisStride:u}=q(l,N,I,h,x);for(let i=0;i<x;i++){let r=!1,e=y[i];for(let o=0;o<T;o++){if(z[e]){r=!0;break}e+=u}$[i]=r?1:0}if(S){const i=[...l];return i[h]=1,E.fromData($,i,"bool")}return R}function jt(t,p){const S=t.dtype,l=t.shape,d=l.length,A=t.data,z=t.offset,I=t.strides,N=t.isCContiguous;if(P(S)){const o=A,n=t.size;if(p===void 0){const V=E.zeros([n],S),_=V.data;let g=0,M=0;if(N)for(let U=0;U<n;U++)g+=o[(z+U)*2],M+=o[(z+U)*2+1],_[U*2]=g,_[U*2+1]=M;else for(let U=0;U<n;U++){const K=t.iget(U);g+=K.re,M+=K.im,_[U*2]=g,_[U*2+1]=M}return V}let s=p;if(s<0&&(s=d+s),s<0||s>=d)throw new Error(`axis ${p} is out of bounds for array of dimension ${d}`);const a=E.zeros([...l],S),m=a.data,c=l[s],f=Array.from(l).filter((V,_)=>_!==s),b=f.length===0?1:f.reduce((V,_)=>V*_,1),{baseOffsets:D,axisStride:v}=q(l,I,z,s,b),C=ot(l),{baseOffsets:B,axisStride:O}=q(l,C,0,s,b);for(let V=0;V<b;V++){let _=D[V],g=B[V],M=0,U=0;for(let K=0;K<c;K++)M+=o[_*2],U+=o[_*2+1],m[g*2]=M,m[g*2+1]=U,_+=v,g+=O}return a}if(p===void 0){const o=t.size,n=X(S);if(n){const m=rt(S),c=new m(o);if(n[0]=0,N)for(let f=0;f<o;f++)n[0]+=Number(A[z+f]),c[f]=n[0];else for(let f=0;f<o;f++)n[0]+=Number(t.iget(f)),c[f]=n[0];return E.fromData(c,[o],S)}const s=new Float64Array(o);let a=0;if(N)for(let m=0;m<o;m++)a+=Number(A[z+m]),s[m]=a;else for(let m=0;m<o;m++)a+=Number(t.iget(m)),s[m]=a;return E.fromData(s,[o],"float64")}let F=p;if(F<0&&(F=d+F),F<0||F>=d)throw new Error(`axis ${p} is out of bounds for array of dimension ${d}`);const h=X(S),w=h?rt(S):null,R=w?new w(t.size):new Float64Array(t.size),$=l[F],T=Array.from(l).filter((o,n)=>n!==F),x=T.length===0?1:T.reduce((o,n)=>o*n,1),{baseOffsets:y,axisStride:u}=q(l,I,z,F,x),i=ot(l),{baseOffsets:r,axisStride:e}=q(l,i,0,F,x);if(h)for(let o=0;o<x;o++){let n=y[o],s=r[o];h[0]=0;for(let a=0;a<$;a++)h[0]+=Number(A[n]),R[s]=h[0],n+=u,s+=e}else for(let o=0;o<x;o++){let n=y[o],s=r[o],a=0;for(let m=0;m<$;m++)a+=Number(A[n]),R[s]=a,n+=u,s+=e}return E.fromData(R,[...l],h?S:"float64")}function Gt(t,p){const S=t.dtype,l=t.shape,d=l.length,A=t.data,z=t.offset,I=t.strides,N=t.isCContiguous;if(P(S)){const r=A,e=t.size;if(p===void 0){const B=E.zeros([e],S),O=B.data;let V=1,_=0;if(N)for(let g=0;g<e;g++){const M=r[(z+g)*2],U=r[(z+g)*2+1],K=V*M-_*U,Y=V*U+_*M;V=K,_=Y,O[g*2]=V,O[g*2+1]=_}else for(let g=0;g<e;g++){const M=t.iget(g),U=M.re,K=M.im,Y=V*U-_*K,it=V*K+_*U;V=Y,_=it,O[g*2]=V,O[g*2+1]=_}return B}let o=p;if(o<0&&(o=d+o),o<0||o>=d)throw new Error(`axis ${p} is out of bounds for array of dimension ${d}`);const n=E.zeros([...l],S),s=n.data,a=l[o],m=Array.from(l).filter((B,O)=>O!==o),c=m.length===0?1:m.reduce((B,O)=>B*O,1),{baseOffsets:f,axisStride:b}=q(l,I,z,o,c),D=ot(l),{baseOffsets:v,axisStride:C}=q(l,D,0,o,c);for(let B=0;B<c;B++){let O=f[B],V=v[B],_=1,g=0;for(let M=0;M<a;M++){const U=r[O*2],K=r[O*2+1],Y=_*U-g*K,it=_*K+g*U;_=Y,g=it,s[V*2]=_,s[V*2+1]=g,O+=b,V+=C}}return n}if(p===void 0){const r=t.size,e=new Float64Array(r);let o=1;if(N)for(let n=0;n<r;n++)o*=Number(A[z+n]),e[n]=o;else for(let n=0;n<r;n++)o*=Number(t.iget(n)),e[n]=o;return E.fromData(e,[r],"float64")}let F=p;if(F<0&&(F=d+F),F<0||F>=d)throw new Error(`axis ${p} is out of bounds for array of dimension ${d}`);const h=new Float64Array(t.size),w=l[F],R=Array.from(l).filter((r,e)=>e!==F),$=R.length===0?1:R.reduce((r,e)=>r*e,1),{baseOffsets:T,axisStride:x}=q(l,I,z,F,$),y=ot(l),{baseOffsets:u,axisStride:i}=q(l,y,0,F,$);for(let r=0;r<$;r++){let e=T[r],o=u[r],n=1;for(let s=0;s<w;s++)n*=Number(A[e]),h[o]=n,e+=x,o+=i}return E.fromData(h,[...l],"float64")}function Ne(t,p,S=!1){const l=t.dtype;if(P(l)){const R=tt(t,p,S),$=et(t,p,S);if(R instanceof Q&&$ instanceof Q)return new Q(R.re-$.re,R.im-$.im);const T=R,x=$,y=T.data,u=x.data,i=new Float64Array(T.size*2);for(let r=0;r<T.size;r++)i[r*2]=y[r*2]-u[r*2],i[r*2+1]=y[r*2+1]-u[r*2+1];return E.fromData(i,[...T.shape],l)}const d=tt(t,p,S),A=et(t,p,S);if(typeof d=="number"&&typeof A=="number"){const R=d-A;if(l==="int8"||l==="int16"||l==="int32"||l==="uint8"||l==="uint16"||l==="uint32"){const $=E.zeros([1],l);return $.iset(0,R),Number($.iget(0))}return R}const z=d,I=A,N=z.data,F=I.data,h=E.zeros([...z.shape],l),w=h.data;for(let R=0;R<z.size;R++)w[R]=Number(N[R])-Number(F[R]);return h}function Ht(t,p,S=!1){return nt(t,.5,p,S)}function Ae(t,p,S,l=!1){return nt(t,p/100,S,l)}function nt(t,p,S,l=!1){if(st(t.dtype,"quantile","Complex numbers are not orderable."),p<0||p>1)throw new Error("Quantile must be between 0 and 1");const d=t.shape,A=d.length,z=t.data,I=t.offset,N=t.strides;if(S===void 0){const u=Mt(t,p);if(u!==null)return u;const i=[];if(t.isCContiguous)for(let m=0;m<t.size;m++)i.push(Number(z[I+m]));else for(let m=0;m<t.size;m++)i.push(Number(t.iget(m)));i.sort((m,c)=>m-c);const e=i.length,o=p*(e-1),n=Math.floor(o),s=Math.ceil(o);if(n===s)return i[n];const a=o-n;return i[n]*(1-a)+i[s]*a}let F=S;if(F<0&&(F=A+F),F<0||F>=A)throw new Error(`axis ${S} is out of bounds for array of dimension ${A}`);const h=Array.from(d).filter((u,i)=>i!==F);if(h.length===0){const u=nt(t,p);if(!l)return u;const i=E.zeros(Array(A).fill(1),"float64");return i.iset(0,u),i}const w=h.reduce((u,i)=>u*i,1),R=d[F],$=new Float64Array(w),{baseOffsets:T,axisStride:x}=q(d,N,I,F,w);for(let u=0;u<w;u++){const i=[];let r=T[u];for(let a=0;a<R;a++)i.push(Number(z[r])),r+=x;i.sort((a,m)=>a-m);const e=i.length,o=p*(e-1),n=Math.floor(o),s=Math.ceil(o);if(n===s)$[u]=i[n];else{const a=o-n;$[u]=i[n]*(1-a)+i[s]*a}}const y=E.fromData($,h,"float64");if(l){const u=[...d];return u[F]=1,E.fromData($,u,"float64")}return y}function pt(t,p,S,l=!1){const d=t.dtype,A=t.shape,z=A.length,I=t.data,N=t.offset,F=t.strides;if(S===void 0)return ft(t,p,l);if(P(d)){const e=I,o=S.data,n=S.offset;if(p===void 0){let C=0,B=0,O=0;if(t.isCContiguous)for(let _=0;_<t.size;_++){const g=Number(o[n+_%S.size]),M=e[(N+_)*2],U=e[(N+_)*2+1];C+=M*g,B+=U*g,O+=g}else for(let _=0;_<t.size;_++){const g=Number(o[n+_%S.size]),M=t.iget(_);C+=M.re*g,B+=M.im*g,O+=g}return O===0?new Q(NaN,NaN):new Q(C/O,B/O)}let s=p;if(s<0&&(s=z+s),s<0||s>=z)throw new Error(`axis ${p} is out of bounds for array of dimension ${z}`);const a=Array.from(A).filter((C,B)=>B!==s);if(a.length===0){const C=pt(t,void 0,S);return l?j(C,z,d):C}const m=a.reduce((C,B)=>C*B,1),c=A[s],f=E.zeros(a,d),b=f.data,{baseOffsets:D,axisStride:v}=q(A,F,N,s,m);for(let C=0;C<m;C++){let B=0,O=0,V=0,_=D[C];for(let g=0;g<c;g++){const M=Number(o[n+g%S.size]),U=e[_*2],K=e[_*2+1];B+=U*M,O+=K*M,V+=M,_+=v}V===0?(b[C*2]=NaN,b[C*2+1]=NaN):(b[C*2]=B/V,b[C*2+1]=O/V)}if(l){const C=[...A];return C[s]=1,E.fromData(b,C,d)}return f}const h=S.offset;if(p===void 0){let e=0,o=0;const n=S.data;if(t.isCContiguous)for(let a=0;a<t.size;a++){const m=Number(n[h+a%S.size]);e+=Number(I[N+a])*m,o+=m}else for(let a=0;a<t.size;a++){const m=Number(n[h+a%S.size]);e+=Number(t.iget(a))*m,o+=m}return o===0?NaN:at(e/o,d)}let w=p;if(w<0&&(w=z+w),w<0||w>=z)throw new Error(`axis ${p} is out of bounds for array of dimension ${z}`);const R=Array.from(A).filter((e,o)=>o!==w);if(R.length===0){const e=pt(t,void 0,S);return l?j(e,z,"float64"):e}const $=R.reduce((e,o)=>e*o,1),T=A[w],x=S.data,y=new Float64Array($),{baseOffsets:u,axisStride:i}=q(A,F,N,w,$);for(let e=0;e<$;e++){let o=0,n=0,s=u[e];for(let a=0;a<T;a++){const m=Number(x[h+a%S.size]);o+=Number(I[s])*m,n+=m,s+=i}y[e]=n===0?NaN:o/n}const r=E.fromData(y,R,"float64");if(l){const e=[...A];return e[w]=1,E.fromData(y,e,"float64")}return r}function W(t,p){return isNaN(t)||isNaN(p)}function Jt(t,p,S=!1){const l=t.dtype,d=P(l),A=t.shape,z=A.length,I=t.data,N=t.offset,F=t.strides;if(!d&&!H(l))return k(t,p,S);if(p===void 0){const i=Tt(t);if(i!==null)return i;if(d){const n=I;let s=0,a=0;if(t.isCContiguous)for(let c=0;c<t.size;c++){const f=n[(N+c)*2],b=n[(N+c)*2+1];W(f,b)||(s+=f,a+=b)}else for(let c=0;c<t.size;c++){const f=t.iget(c),b=f.re,D=f.im;W(b,D)||(s+=b,a+=D)}return new Q(s,a)}const r=X(l);if(r){if(r[0]=0,t.isCContiguous)for(let s=0;s<t.size;s++){const a=Number(I[N+s]);isNaN(a)||(r[0]+=a)}else for(let s=0;s<t.size;s++){const a=Number(t.iget(s));isNaN(a)||(r[0]+=a)}return r[0]}let e=0;if(t.isCContiguous)for(let n=0;n<t.size;n++){const s=Number(I[N+n]);isNaN(s)||(e+=s)}else for(let n=0;n<t.size;n++){const s=Number(t.iget(n));isNaN(s)||(e+=s)}return e}let h=p;if(h<0&&(h=z+h),h<0||h>=z)throw new Error(`axis ${p} is out of bounds for array of dimension ${z}`);const w=Array.from(A).filter((i,r)=>r!==h);if(w.length===0){const i=Jt(t);return S?j(i,z,l):i}const R=w.reduce((i,r)=>i*r,1),$=A[h],{baseOffsets:T,axisStride:x}=q(A,F,N,h,R);if(d){const i=I,r=new Float64Array(R*2);for(let e=0;e<R;e++){let o=0,n=0,s=T[e];for(let a=0;a<$;a++){const m=i[s*2],c=i[s*2+1];W(m,c)||(o+=m,n+=c),s+=x}r[e*2]=o,r[e*2+1]=n}if(S){const e=[...A];return e[h]=1,E.fromData(r,e,l)}return E.fromData(r,w,l)}const y=new Float64Array(R);for(let i=0;i<R;i++){let r=0,e=T[i];for(let o=0;o<$;o++){const n=Number(I[e]);isNaN(n)||(r+=n),e+=x}y[i]=r}const u=E.fromData(y,w,"float64");if(S){const i=[...A];return i[h]=1,E.fromData(y,i,"float64")}return u}function Lt(t,p,S=!1){const l=t.dtype,d=P(l);if(!d&&!H(l))return mt(t,p,S);const A=t.shape,z=A.length,I=t.data,N=t.offset,F=t.strides;if(p===void 0){if(d){const e=I;let o=1,n=0;if(t.isCContiguous)for(let a=0;a<t.size;a++){const m=e[(N+a)*2],c=e[(N+a)*2+1];if(!W(m,c)){const f=o*m-n*c,b=o*c+n*m;o=f,n=b}}else for(let a=0;a<t.size;a++){const m=t.iget(a),c=m.re,f=m.im;if(!W(c,f)){const b=o*c-n*f,D=o*f+n*c;o=b,n=D}}return new Q(o,n)}let i=1;if(t.isCContiguous)for(let e=0;e<t.size;e++){const o=Number(I[N+e]);isNaN(o)||(i*=o)}else for(let e=0;e<t.size;e++){const o=Number(t.iget(e));isNaN(o)||(i*=o)}return i}let h=p;if(h<0&&(h=z+h),h<0||h>=z)throw new Error(`axis ${p} is out of bounds for array of dimension ${z}`);const w=Array.from(A).filter((i,r)=>r!==h);if(w.length===0){const i=Lt(t);return S?j(i,z,l):i}const R=w.reduce((i,r)=>i*r,1),$=A[h],{baseOffsets:T,axisStride:x}=q(A,F,N,h,R);if(d){const i=I,r=new Float64Array(R*2);for(let e=0;e<R;e++){let o=1,n=0,s=T[e];for(let a=0;a<$;a++){const m=i[s*2],c=i[s*2+1];if(!W(m,c)){const f=o*m-n*c,b=o*c+n*m;o=f,n=b}s+=x}r[e*2]=o,r[e*2+1]=n}if(S){const e=[...A];return e[h]=1,E.fromData(r,e,l)}return E.fromData(r,w,l)}const y=new Float64Array(R);for(let i=0;i<R;i++){let r=1,e=T[i];for(let o=0;o<$;o++){const n=Number(I[e]);isNaN(n)||(r*=n),e+=x}y[i]=r}const u=E.fromData(y,w,"float64");if(S){const i=[...A];return i[h]=1,E.fromData(y,i,"float64")}return u}function Xt(t,p,S=!1){const l=t.dtype,d=P(l);if(!d&&!H(l))return ft(t,p,S);const A=t.shape,z=A.length,I=t.data,N=t.offset,F=t.strides;if(p===void 0){if(d){const n=I;let s=0,a=0,m=0;if(t.isCContiguous)for(let f=0;f<t.size;f++){const b=n[(N+f)*2],D=n[(N+f)*2+1];W(b,D)||(s+=b,a+=D,m++)}else for(let f=0;f<t.size;f++){const b=t.iget(f),D=b.re,v=b.im;W(D,v)||(s+=D,a+=v,m++)}return m===0?new Q(NaN,NaN):new Q(s/m,a/m)}const i=X(l);let r=0;const e=t.isCContiguous;if(i){if(i[0]=0,e)for(let n=0;n<t.size;n++){const s=Number(I[N+n]);isNaN(s)||(i[0]+=s,r++)}else for(let n=0;n<t.size;n++){const s=Number(t.iget(n));isNaN(s)||(i[0]+=s,r++)}return r===0?NaN:(i[0]/=r,i[0])}let o=0;if(e)for(let n=0;n<t.size;n++){const s=Number(I[N+n]);isNaN(s)||(o+=s,r++)}else for(let n=0;n<t.size;n++){const s=Number(t.iget(n));isNaN(s)||(o+=s,r++)}return r===0?NaN:o/r}let h=p;if(h<0&&(h=z+h),h<0||h>=z)throw new Error(`axis ${p} is out of bounds for array of dimension ${z}`);const w=Array.from(A).filter((i,r)=>r!==h);if(w.length===0){const i=Xt(t);return S?j(i,z,l):i}const R=w.reduce((i,r)=>i*r,1),$=A[h],{baseOffsets:T,axisStride:x}=q(A,F,N,h,R);if(d){const i=I,r=new Float64Array(R*2);for(let e=0;e<R;e++){let o=0,n=0,s=0,a=T[e];for(let m=0;m<$;m++){const c=i[a*2],f=i[a*2+1];W(c,f)||(o+=c,n+=f,s++),a+=x}s===0?(r[e*2]=NaN,r[e*2+1]=NaN):(r[e*2]=o/s,r[e*2+1]=n/s)}if(S){const e=[...A];return e[h]=1,E.fromData(r,e,l)}return E.fromData(r,w,l)}const y=new Float64Array(R);for(let i=0;i<R;i++){let r=0,e=0,o=T[i];for(let n=0;n<$;n++){const s=Number(I[o]);isNaN(s)||(r+=s,e++),o+=x}y[i]=e===0?NaN:r/e}const u=E.fromData(y,w,"float64");if(S){const i=[...A];return i[h]=1,E.fromData(y,i,"float64")}return u}function lt(t,p,S=0,l=!1){const d=t.dtype;if(!P(d)&&!H(d))return yt(t,p,S,l);const A=t.shape,z=A.length,I=t.data,N=t.offset,F=t.strides;if(P(d)){const i=I;if(p===void 0){let f=0,b=0,D=0;const v=t.isCContiguous;if(v)for(let V=0;V<t.size;V++){const _=i[(N+V)*2],g=i[(N+V)*2+1];W(_,g)||(f+=_,b+=g,D++)}else for(let V=0;V<t.size;V++){const _=t.iget(V),g=_.re,M=_.im;W(g,M)||(f+=g,b+=M,D++)}if(D-S<=0)return NaN;const C=f/D,B=b/D;let O=0;if(v)for(let V=0;V<t.size;V++){const _=i[(N+V)*2],g=i[(N+V)*2+1];if(!W(_,g)){const M=_-C,U=g-B;O+=M*M+U*U}}else for(let V=0;V<t.size;V++){const _=t.iget(V),g=_.re,M=_.im;if(!W(g,M)){const U=g-C,K=M-B;O+=U*U+K*K}}return O/(D-S)}let r=p;if(r<0&&(r=z+r),r<0||r>=z)throw new Error(`axis ${p} is out of bounds for array of dimension ${z}`);const e=Array.from(A).filter((f,b)=>b!==r);if(e.length===0){const f=lt(t,void 0,S);return l?j(f,z,"float64"):f}const o=e.reduce((f,b)=>f*b,1),n=A[r],s=new Float64Array(o),{baseOffsets:a,axisStride:m}=q(A,F,N,r,o);for(let f=0;f<o;f++){let b=0,D=0,v=0,C=a[f];for(let _=0;_<n;_++){const g=i[C*2],M=i[C*2+1];W(g,M)||(b+=g,D+=M,v++),C+=m}if(v-S<=0){s[f]=NaN;continue}const B=b/v,O=D/v;let V=0;C=a[f];for(let _=0;_<n;_++){const g=i[C*2],M=i[C*2+1];if(!W(g,M)){const U=g-B,K=M-O;V+=U*U+K*K}C+=m}s[f]=V/(v-S)}const c=E.fromData(s,e,"float64");if(l){const f=[...A];return f[r]=1,E.fromData(s,f,"float64")}return c}if(p===void 0){let i=0,r=0;const e=t.isCContiguous;if(e)for(let s=0;s<t.size;s++){const a=Number(I[N+s]);isNaN(a)||(i+=a,r++)}else for(let s=0;s<t.size;s++){const a=Number(t.iget(s));isNaN(a)||(i+=a,r++)}if(r-S<=0)return NaN;const o=i/r;let n=0;if(e)for(let s=0;s<t.size;s++){const a=Number(I[N+s]);isNaN(a)||(n+=(a-o)**2)}else for(let s=0;s<t.size;s++){const a=Number(t.iget(s));isNaN(a)||(n+=(a-o)**2)}return n/(r-S)}let h=p;if(h<0&&(h=z+h),h<0||h>=z)throw new Error(`axis ${p} is out of bounds for array of dimension ${z}`);const w=Array.from(A).filter((i,r)=>r!==h);if(w.length===0){const i=lt(t,void 0,S);return l?j(i,z,"float64"):i}const R=w.reduce((i,r)=>i*r,1),$=A[h],T=new Float64Array(R),{baseOffsets:x,axisStride:y}=q(A,F,N,h,R);for(let i=0;i<R;i++){let r=0,e=0,o=x[i];for(let a=0;a<$;a++){const m=Number(I[o]);isNaN(m)||(r+=m,e++),o+=y}if(e-S<=0){T[i]=NaN;continue}const n=r/e;let s=0;o=x[i];for(let a=0;a<$;a++){const m=Number(I[o]);isNaN(m)||(s+=(m-n)**2),o+=y}T[i]=s/(e-S)}const u=E.fromData(T,w,"float64");if(l){const i=[...A];return i[h]=1,E.fromData(T,i,"float64")}return u}function Se(t,p,S=0,l=!1){const d=lt(t,p,S,l);if(typeof d=="number")return Math.sqrt(d);const A=d,z=new Float64Array(A.size);for(let I=0;I<A.size;I++)z[I]=Math.sqrt(Number(A.data[I]));return E.fromData(z,[...A.shape],"float64")}function bt(t,p,S=!1){const l=t.dtype,d=t.shape,A=d.length,z=t.data,I=t.offset,N=t.strides;if(!P(l)&&!H(l))return et(t,p,S);if(P(l)){const u=z;if(p===void 0){let c=1/0,f=1/0,b=!1;if(t.isCContiguous)for(let v=0;v<t.size;v++){const C=u[(I+v)*2],B=u[(I+v)*2+1];isNaN(C)||isNaN(B)||(b?(C<c||C===c&&B<f)&&(c=C,f=B):(c=C,f=B,b=!0))}else for(let v=0;v<t.size;v++){const C=t.iget(v),B=C.re,O=C.im;isNaN(B)||isNaN(O)||(b?(B<c||B===c&&O<f)&&(c=B,f=O):(c=B,f=O,b=!0))}return b?new Q(c,f):new Q(NaN,NaN)}let i=p;if(i<0&&(i=A+i),i<0||i>=A)throw new Error(`axis ${p} is out of bounds for array of dimension ${A}`);const r=Array.from(d).filter((c,f)=>f!==i);if(r.length===0){const c=bt(t);return S?j(c,A,l):c}const e=r.reduce((c,f)=>c*f,1),o=d[i],n=new Float64Array(e*2),{baseOffsets:s,axisStride:a}=q(d,N,I,i,e);for(let c=0;c<e;c++){let f=1/0,b=1/0,D=!1,v=s[c];for(let C=0;C<o;C++){const B=u[v*2],O=u[v*2+1];v+=a,!(isNaN(B)||isNaN(O))&&(D?(B<f||B===f&&O<b)&&(f=B,b=O):(f=B,b=O,D=!0))}n[c*2]=D?f:NaN,n[c*2+1]=D?b:NaN}const m=E.fromData(n,r,l);if(S){const c=[...d];return c[i]=1,E.fromData(n,c,l)}return m}if(p===void 0){const u=Ot(t);if(u!==null)return u;let i=1/0;if(t.isCContiguous)for(let e=0;e<t.size;e++){const o=Number(z[I+e]);!isNaN(o)&&o<i&&(i=o)}else for(let e=0;e<t.size;e++){const o=Number(t.iget(e));!isNaN(o)&&o<i&&(i=o)}return i===1/0?NaN:i}let F=p;if(F<0&&(F=A+F),F<0||F>=A)throw new Error(`axis ${p} is out of bounds for array of dimension ${A}`);const h=Array.from(d).filter((u,i)=>i!==F);if(h.length===0){const u=bt(t);return S?j(u,A,"float64"):u}const w=h.reduce((u,i)=>u*i,1),R=d[F],$=new Float64Array(w),{baseOffsets:T,axisStride:x}=q(d,N,I,F,w);for(let u=0;u<w;u++){let i=1/0,r=T[u];for(let e=0;e<R;e++){const o=Number(z[r]);!isNaN(o)&&o<i&&(i=o),r+=x}$[u]=i===1/0?NaN:i}const y=E.fromData($,h,"float64");if(S){const u=[...d];return u[F]=1,E.fromData($,u,"float64")}return y}function Nt(t,p,S=!1){const l=t.dtype,d=t.shape,A=d.length,z=t.data,I=t.offset,N=t.strides;if(!P(l)&&!H(l))return tt(t,p,S);if(P(l)){const u=z;if(p===void 0){let c=-1/0,f=-1/0,b=!1;if(t.isCContiguous)for(let v=0;v<t.size;v++){const C=u[(I+v)*2],B=u[(I+v)*2+1];isNaN(C)||isNaN(B)||(b?(C>c||C===c&&B>f)&&(c=C,f=B):(c=C,f=B,b=!0))}else for(let v=0;v<t.size;v++){const C=t.iget(v),B=C.re,O=C.im;isNaN(B)||isNaN(O)||(b?(B>c||B===c&&O>f)&&(c=B,f=O):(c=B,f=O,b=!0))}return b?new Q(c,f):new Q(NaN,NaN)}let i=p;if(i<0&&(i=A+i),i<0||i>=A)throw new Error(`axis ${p} is out of bounds for array of dimension ${A}`);const r=Array.from(d).filter((c,f)=>f!==i);if(r.length===0){const c=Nt(t);return S?j(c,A,l):c}const e=r.reduce((c,f)=>c*f,1),o=d[i],n=new Float64Array(e*2),{baseOffsets:s,axisStride:a}=q(d,N,I,i,e);for(let c=0;c<e;c++){let f=-1/0,b=-1/0,D=!1,v=s[c];for(let C=0;C<o;C++){const B=u[v*2],O=u[v*2+1];v+=a,!(isNaN(B)||isNaN(O))&&(D?(B>f||B===f&&O>b)&&(f=B,b=O):(f=B,b=O,D=!0))}n[c*2]=D?f:NaN,n[c*2+1]=D?b:NaN}const m=E.fromData(n,r,l);if(S){const c=[...d];return c[i]=1,E.fromData(n,c,l)}return m}if(p===void 0){const u=Vt(t);if(u!==null)return u;let i=-1/0;if(t.isCContiguous)for(let e=0;e<t.size;e++){const o=Number(z[I+e]);!isNaN(o)&&o>i&&(i=o)}else for(let e=0;e<t.size;e++){const o=Number(t.iget(e));!isNaN(o)&&o>i&&(i=o)}return i===-1/0?NaN:i}let F=p;if(F<0&&(F=A+F),F<0||F>=A)throw new Error(`axis ${p} is out of bounds for array of dimension ${A}`);const h=Array.from(d).filter((u,i)=>i!==F);if(h.length===0){const u=Nt(t);return S?j(u,A,"float64"):u}const w=h.reduce((u,i)=>u*i,1),R=d[F],$=new Float64Array(w),{baseOffsets:T,axisStride:x}=q(d,N,I,F,w);for(let u=0;u<w;u++){let i=-1/0,r=T[u];for(let e=0;e<R;e++){const o=Number(z[r]);!isNaN(o)&&o>i&&(i=o),r+=x}$[u]=i===-1/0?NaN:i}const y=E.fromData($,h,"float64");if(S){const u=[...d];return u[F]=1,E.fromData($,u,"float64")}return y}function At(t,p){const S=t.dtype;if(!P(S)&&!H(S))return dt(t,p);const l=t.shape,d=l.length,A=t.data,z=t.offset,I=t.strides;if(P(S)){const x=A;if(p===void 0){let s=1/0,a=1/0,m=-1;if(t.isCContiguous)for(let f=0;f<t.size;f++){const b=x[(z+f)*2],D=x[(z+f)*2+1];!W(b,D)&&J(b,D,s,a)<0&&(s=b,a=D,m=f)}else for(let f=0;f<t.size;f++){const b=t.iget(f),D=b.re,v=b.im;!W(D,v)&&J(D,v,s,a)<0&&(s=D,a=v,m=f)}return m}let y=p;if(y<0&&(y=d+y),y<0||y>=d)throw new Error(`axis ${p} is out of bounds for array of dimension ${d}`);const u=Array.from(l).filter((s,a)=>a!==y);if(u.length===0)return At(t);const i=u.reduce((s,a)=>s*a,1),r=l[y],e=new Int32Array(i),{baseOffsets:o,axisStride:n}=q(l,I,z,y,i);for(let s=0;s<i;s++){let a=1/0,m=1/0,c=0,f=o[s];for(let b=0;b<r;b++){const D=x[f*2],v=x[f*2+1];!W(D,v)&&J(D,v,a,m)<0&&(a=D,m=v,c=b),f+=n}e[s]=c}return E.fromData(e,u,"int32")}if(p===void 0){let x=1/0,y=-1;if(t.isCContiguous)for(let i=0;i<t.size;i++){const r=Number(A[z+i]);!isNaN(r)&&r<x&&(x=r,y=i)}else for(let i=0;i<t.size;i++){const r=Number(t.iget(i));!isNaN(r)&&r<x&&(x=r,y=i)}return y}let N=p;if(N<0&&(N=d+N),N<0||N>=d)throw new Error(`axis ${p} is out of bounds for array of dimension ${d}`);const F=Array.from(l).filter((x,y)=>y!==N);if(F.length===0)return At(t);const h=F.reduce((x,y)=>x*y,1),w=l[N],R=new Int32Array(h),{baseOffsets:$,axisStride:T}=q(l,I,z,N,h);for(let x=0;x<h;x++){let y=1/0,u=0,i=$[x];for(let r=0;r<w;r++){const e=Number(A[i]);!isNaN(e)&&e<y&&(y=e,u=r),i+=T}R[x]=u}return E.fromData(R,F,"int32")}function St(t,p){const S=t.dtype;if(!P(S)&&!H(S))return xt(t,p);const l=t.shape,d=l.length,A=t.data,z=t.offset,I=t.strides;if(P(S)){const x=A;if(p===void 0){let s=-1/0,a=-1/0,m=-1;if(t.isCContiguous)for(let f=0;f<t.size;f++){const b=x[(z+f)*2],D=x[(z+f)*2+1];!W(b,D)&&J(b,D,s,a)>0&&(s=b,a=D,m=f)}else for(let f=0;f<t.size;f++){const b=t.iget(f),D=b.re,v=b.im;!W(D,v)&&J(D,v,s,a)>0&&(s=D,a=v,m=f)}return m}let y=p;if(y<0&&(y=d+y),y<0||y>=d)throw new Error(`axis ${p} is out of bounds for array of dimension ${d}`);const u=Array.from(l).filter((s,a)=>a!==y);if(u.length===0)return St(t);const i=u.reduce((s,a)=>s*a,1),r=l[y],e=new Int32Array(i),{baseOffsets:o,axisStride:n}=q(l,I,z,y,i);for(let s=0;s<i;s++){let a=-1/0,m=-1/0,c=0,f=o[s];for(let b=0;b<r;b++){const D=x[f*2],v=x[f*2+1];!W(D,v)&&J(D,v,a,m)>0&&(a=D,m=v,c=b),f+=n}e[s]=c}return E.fromData(e,u,"int32")}if(p===void 0){let x=-1/0,y=-1;if(t.isCContiguous)for(let i=0;i<t.size;i++){const r=Number(A[z+i]);!isNaN(r)&&r>x&&(x=r,y=i)}else for(let i=0;i<t.size;i++){const r=Number(t.iget(i));!isNaN(r)&&r>x&&(x=r,y=i)}return y}let N=p;if(N<0&&(N=d+N),N<0||N>=d)throw new Error(`axis ${p} is out of bounds for array of dimension ${d}`);const F=Array.from(l).filter((x,y)=>y!==N);if(F.length===0)return St(t);const h=F.reduce((x,y)=>x*y,1),w=l[N],R=new Int32Array(h),{baseOffsets:$,axisStride:T}=q(l,I,z,N,h);for(let x=0;x<h;x++){let y=-1/0,u=0,i=$[x];for(let r=0;r<w;r++){const e=Number(A[i]);!isNaN(e)&&e>y&&(y=e,u=r),i+=T}R[x]=u}return E.fromData(R,F,"int32")}function Ie(t,p){const S=t.dtype;if(!P(S)&&!H(S))return jt(t,p);const l=t.shape,d=l.length,A=t.data,z=t.offset;if(P(S)){const x=A,y=t.size;if(p===void 0){const c=E.zeros([y],S),f=c.data;let b=0,D=0;if(t.isCContiguous)for(let C=0;C<y;C++){const B=x[(z+C)*2],O=x[(z+C)*2+1];W(B,O)||(b+=B,D+=O),f[C*2]=b,f[C*2+1]=D}else for(let C=0;C<y;C++){const B=t.iget(C),O=B.re,V=B.im;W(O,V)||(b+=O,D+=V),f[C*2]=b,f[C*2+1]=D}return c}let u=p;if(u<0&&(u=d+u),u<0||u>=d)throw new Error(`axis ${p} is out of bounds for array of dimension ${d}`);const i=E.zeros([...l],S),r=i.data,e=l[u],o=[];let n=1;for(let c=d-1;c>=0;c--)o.unshift(n),n*=l[c];const s=t.size,a=o[u];if(t.isCContiguous)for(let c=0;c<s;c++){const f=x[(z+c)*2],b=x[(z+c)*2+1],D=Math.floor(c/a)%e,v=W(f,b);D===0?(r[c*2]=v?0:f,r[c*2+1]=v?0:b):(r[c*2]=r[(c-a)*2]+(v?0:f),r[c*2+1]=r[(c-a)*2+1]+(v?0:b))}else for(let c=0;c<s;c++){const f=t.iget(c),b=f.re,D=f.im,v=Math.floor(c/a)%e,C=W(b,D);v===0?(r[c*2]=C?0:b,r[c*2+1]=C?0:D):(r[c*2]=r[(c-a)*2]+(C?0:b),r[c*2+1]=r[(c-a)*2+1]+(C?0:D))}return i}if(p===void 0){const x=t.size,y=new Float64Array(x);let u=0;if(t.isCContiguous)for(let r=0;r<x;r++){const e=Number(A[z+r]);isNaN(e)||(u+=e),y[r]=u}else for(let r=0;r<x;r++){const e=Number(t.iget(r));isNaN(e)||(u+=e),y[r]=u}return E.fromData(y,[x],"float64")}let I=p;if(I<0&&(I=d+I),I<0||I>=d)throw new Error(`axis ${p} is out of bounds for array of dimension ${d}`);const N=new Float64Array(t.size),F=l[I],h=[];let w=1;for(let x=d-1;x>=0;x--)h.unshift(w),w*=l[x];const R=t.size,$=h[I];if(t.isCContiguous)for(let x=0;x<R;x++){const y=Number(A[z+x]);Math.floor(x/$)%F===0?N[x]=isNaN(y)?0:y:N[x]=N[x-$]+(isNaN(y)?0:y)}else for(let x=0;x<R;x++){const y=Number(t.iget(x));Math.floor(x/$)%F===0?N[x]=isNaN(y)?0:y:N[x]=N[x-$]+(isNaN(y)?0:y)}return E.fromData(N,[...l],"float64")}function he(t,p){const S=t.dtype;if(!P(S)&&!H(S))return Gt(t,p);const l=t.shape,d=l.length,A=t.data,z=t.offset;if(P(S)){const x=A,y=t.size;if(p===void 0){const c=E.zeros([y],S),f=c.data;let b=1,D=0;if(t.isCContiguous)for(let C=0;C<y;C++){const B=x[(z+C)*2],O=x[(z+C)*2+1];if(!W(B,O)){const V=b*B-D*O,_=b*O+D*B;b=V,D=_}f[C*2]=b,f[C*2+1]=D}else for(let C=0;C<y;C++){const B=t.iget(C),O=B.re,V=B.im;if(!W(O,V)){const _=b*O-D*V,g=b*V+D*O;b=_,D=g}f[C*2]=b,f[C*2+1]=D}return c}let u=p;if(u<0&&(u=d+u),u<0||u>=d)throw new Error(`axis ${p} is out of bounds for array of dimension ${d}`);const i=E.zeros([...l],S),r=i.data,e=l[u],o=[];let n=1;for(let c=d-1;c>=0;c--)o.unshift(n),n*=l[c];const s=t.size,a=o[u];if(t.isCContiguous)for(let c=0;c<s;c++){const f=x[(z+c)*2],b=x[(z+c)*2+1],D=Math.floor(c/a)%e,v=W(f,b);if(D===0)r[c*2]=v?1:f,r[c*2+1]=v?0:b;else{const C=r[(c-a)*2],B=r[(c-a)*2+1];v?(r[c*2]=C,r[c*2+1]=B):(r[c*2]=C*f-B*b,r[c*2+1]=C*b+B*f)}}else for(let c=0;c<s;c++){const f=t.iget(c),b=f.re,D=f.im,v=Math.floor(c/a)%e,C=W(b,D);if(v===0)r[c*2]=C?1:b,r[c*2+1]=C?0:D;else{const B=r[(c-a)*2],O=r[(c-a)*2+1];C?(r[c*2]=B,r[c*2+1]=O):(r[c*2]=B*b-O*D,r[c*2+1]=B*D+O*b)}}return i}if(p===void 0){const x=t.size,y=new Float64Array(x);let u=1;if(t.isCContiguous)for(let r=0;r<x;r++){const e=Number(A[z+r]);isNaN(e)||(u*=e),y[r]=u}else for(let r=0;r<x;r++){const e=Number(t.iget(r));isNaN(e)||(u*=e),y[r]=u}return E.fromData(y,[x],"float64")}let I=p;if(I<0&&(I=d+I),I<0||I>=d)throw new Error(`axis ${p} is out of bounds for array of dimension ${d}`);const N=new Float64Array(t.size),F=l[I],h=[];let w=1;for(let x=d-1;x>=0;x--)h.unshift(w),w*=l[x];const R=t.size,$=h[I];if(t.isCContiguous)for(let x=0;x<R;x++){const y=Number(A[z+x]);Math.floor(x/$)%F===0?N[x]=isNaN(y)?1:y:N[x]=N[x-$]*(isNaN(y)?1:y)}else for(let x=0;x<R;x++){const y=Number(t.iget(x));Math.floor(x/$)%F===0?N[x]=isNaN(y)?1:y:N[x]=N[x-$]*(isNaN(y)?1:y)}return E.fromData(N,[...l],"float64")}function Yt(t,p,S=!1){if(st(t.dtype,"nanmedian","Complex numbers are not orderable."),!H(t.dtype))return Ht(t,p,S);const l=t.shape,d=l.length,A=t.data,z=t.offset,I=t.strides;if(p===void 0){const y=[];if(t.isCContiguous)for(let e=0;e<t.size;e++){const o=Number(A[z+e]);isNaN(o)||y.push(o)}else for(let e=0;e<t.size;e++){const o=Number(t.iget(e));isNaN(o)||y.push(o)}if(y.length===0)return NaN;y.sort((e,o)=>e-o);const i=y.length,r=Math.floor(i/2);return i%2===0?(y[r-1]+y[r])/2:y[r]}let N=p;if(N<0&&(N=d+N),N<0||N>=d)throw new Error(`axis ${p} is out of bounds for array of dimension ${d}`);const F=Array.from(l).filter((y,u)=>u!==N);if(F.length===0){const y=Yt(t);return S?j(y,d,"float64"):y}const h=F.reduce((y,u)=>y*u,1),w=l[N],R=new Float64Array(h),{baseOffsets:$,axisStride:T}=q(l,I,z,N,h);for(let y=0;y<h;y++){const u=[];let i=$[y];for(let o=0;o<w;o++){const n=Number(A[i]);isNaN(n)||u.push(n),i+=T}if(u.length===0){R[y]=NaN;continue}u.sort((o,n)=>o-n);const r=u.length,e=Math.floor(r/2);r%2===0?R[y]=(u[e-1]+u[e])/2:R[y]=u[e]}const x=E.fromData(R,F,"float64");if(S){const y=[...l];return y[N]=1,E.fromData(R,y,"float64")}return x}function It(t,p,S,l=!1){if(st(t.dtype,"nanquantile","Complex numbers are not orderable."),!H(t.dtype))return nt(t,p,S,l);if(p<0||p>1)throw new Error("Quantile must be between 0 and 1");const d=t.shape,A=d.length,z=t.data,I=t.offset,N=t.strides;if(S===void 0){const u=[];if(t.isCContiguous)for(let a=0;a<t.size;a++){const m=Number(z[I+a]);isNaN(m)||u.push(m)}else for(let a=0;a<t.size;a++){const m=Number(t.iget(a));isNaN(m)||u.push(m)}if(u.length===0)return NaN;u.sort((a,m)=>a-m);const r=u.length,e=p*(r-1),o=Math.floor(e),n=Math.ceil(e);if(o===n)return u[o];const s=e-o;return u[o]*(1-s)+u[n]*s}let F=S;if(F<0&&(F=A+F),F<0||F>=A)throw new Error(`axis ${S} is out of bounds for array of dimension ${A}`);const h=Array.from(d).filter((u,i)=>i!==F);if(h.length===0){const u=It(t,p);return l?j(u,A,"float64"):u}const w=h.reduce((u,i)=>u*i,1),R=d[F],$=new Float64Array(w),{baseOffsets:T,axisStride:x}=q(d,N,I,F,w);for(let u=0;u<w;u++){const i=[];let r=T[u];for(let a=0;a<R;a++){const m=Number(z[r]);isNaN(m)||i.push(m),r+=x}if(i.length===0){$[u]=NaN;continue}i.sort((a,m)=>a-m);const e=i.length,o=p*(e-1),n=Math.floor(o),s=Math.ceil(o);if(n===s)$[u]=i[n];else{const a=o-n;$[u]=i[n]*(1-a)+i[s]*a}}const y=E.fromData($,h,"float64");if(l){const u=[...d];return u[F]=1,E.fromData($,u,"float64")}return y}function ze(t,p,S,l=!1){return It(t,p/100,S,l)}export{Qt as all,Kt as any,xt as argmax,dt as argmin,pt as average,Gt as cumprod,jt as cumsum,tt as max,ft as mean,Ht as median,et as min,St as nanargmax,At as nanargmin,he as nancumprod,Ie as nancumsum,Nt as nanmax,Xt as nanmean,Yt as nanmedian,bt as nanmin,ze as nanpercentile,Lt as nanprod,It as nanquantile,Se as nanstd,Jt as nansum,lt as nanvar,Ae as percentile,mt as prod,Ne as ptp,nt as quantile,be as std,k as sum,yt as variance};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{ArrayStorage as c}from"../storage";import{throwIfComplex as l}from"../dtype";function p(t){if(!isFinite(t))return t;const r=Math.floor(t),a=t-r;return Math.abs(a-.5)<1e-10?r%2===0?r:r+1:Math.round(t)}function g(t,r=0){l(t.dtype,"around","Rounding is not defined for complex numbers.");const a=t.dtype,n=Array.from(t.shape),u=t.size,f=a==="float32"?"float32":"float64",s=c.zeros(n,f),o=s.data,i=Math.pow(10,r);if(t.isCContiguous){const e=t.data,y=t.offset;for(let d=0;d<u;d++){const m=Number(e[y+d]);o[d]=p(m*i)/i}}else for(let e=0;e<u;e++){const y=Number(t.iget(e));o[e]=p(y*i)/i}return s}function A(t){l(t.dtype,"ceil","Rounding is not defined for complex numbers.");const r=t.dtype,a=Array.from(t.shape),n=t.size,u=r==="float32"?"float32":"float64",f=c.zeros(a,u),s=f.data;if(t.isCContiguous){const o=t.data,i=t.offset;for(let e=0;e<n;e++)s[e]=Math.ceil(Number(o[i+e]))}else for(let o=0;o<n;o++)s[o]=Math.ceil(Number(t.iget(o)));return f}function z(t){l(t.dtype,"fix","Rounding is not defined for complex numbers.");const r=t.dtype,a=Array.from(t.shape),n=t.size,u=r==="float32"?"float32":"float64",f=c.zeros(a,u),s=f.data;if(t.isCContiguous){const o=t.data,i=t.offset;for(let e=0;e<n;e++)s[e]=Math.trunc(Number(o[i+e]))}else for(let o=0;o<n;o++)s[o]=Math.trunc(Number(t.iget(o)));return f}function S(t){l(t.dtype,"floor","Rounding is not defined for complex numbers.");const r=t.dtype,a=Array.from(t.shape),n=t.size,u=r==="float32"?"float32":"float64",f=c.zeros(a,u),s=f.data;if(t.isCContiguous){const o=t.data,i=t.offset;for(let e=0;e<n;e++)s[e]=Math.floor(Number(o[i+e]))}else for(let o=0;o<n;o++)s[o]=Math.floor(Number(t.iget(o)));return f}function C(t){l(t.dtype,"rint","Rounding is not defined for complex numbers.");const r=t.dtype,a=Array.from(t.shape),n=t.size,u=r==="float32"?"float32":"float64",f=c.zeros(a,u),s=f.data;if(t.isCContiguous){const o=t.data,i=t.offset;for(let e=0;e<n;e++)s[e]=p(Number(o[i+e]))}else for(let o=0;o<n;o++)s[o]=p(Number(t.iget(o)));return f}function x(t,r=0){return g(t,r)}function D(t){l(t.dtype,"trunc","Rounding is not defined for complex numbers.");const r=t.dtype,a=Array.from(t.shape),n=t.size,u=r==="float32"?"float32":"float64",f=c.zeros(a,u),s=f.data;if(t.isCContiguous){const o=t.data,i=t.offset;for(let e=0;e<n;e++)s[e]=Math.trunc(Number(o[i+e]))}else for(let o=0;o<n;o++)s[o]=Math.trunc(Number(t.iget(o)));return f}export{g as around,A as ceil,z as fix,S as floor,C as rint,x as round,D as trunc};
|
|
1
|
+
import{ArrayStorage as c}from"../storage.js";import{throwIfComplex as l}from"../dtype.js";function p(t){if(!isFinite(t))return t;const r=Math.floor(t),a=t-r;return Math.abs(a-.5)<1e-10?r%2===0?r:r+1:Math.round(t)}function g(t,r=0){l(t.dtype,"around","Rounding is not defined for complex numbers.");const a=t.dtype,n=Array.from(t.shape),u=t.size,f=a==="float32"?"float32":"float64",s=c.zeros(n,f),o=s.data,i=Math.pow(10,r);if(t.isCContiguous){const e=t.data,y=t.offset;for(let d=0;d<u;d++){const m=Number(e[y+d]);o[d]=p(m*i)/i}}else for(let e=0;e<u;e++){const y=Number(t.iget(e));o[e]=p(y*i)/i}return s}function A(t){l(t.dtype,"ceil","Rounding is not defined for complex numbers.");const r=t.dtype,a=Array.from(t.shape),n=t.size,u=r==="float32"?"float32":"float64",f=c.zeros(a,u),s=f.data;if(t.isCContiguous){const o=t.data,i=t.offset;for(let e=0;e<n;e++)s[e]=Math.ceil(Number(o[i+e]))}else for(let o=0;o<n;o++)s[o]=Math.ceil(Number(t.iget(o)));return f}function z(t){l(t.dtype,"fix","Rounding is not defined for complex numbers.");const r=t.dtype,a=Array.from(t.shape),n=t.size,u=r==="float32"?"float32":"float64",f=c.zeros(a,u),s=f.data;if(t.isCContiguous){const o=t.data,i=t.offset;for(let e=0;e<n;e++)s[e]=Math.trunc(Number(o[i+e]))}else for(let o=0;o<n;o++)s[o]=Math.trunc(Number(t.iget(o)));return f}function S(t){l(t.dtype,"floor","Rounding is not defined for complex numbers.");const r=t.dtype,a=Array.from(t.shape),n=t.size,u=r==="float32"?"float32":"float64",f=c.zeros(a,u),s=f.data;if(t.isCContiguous){const o=t.data,i=t.offset;for(let e=0;e<n;e++)s[e]=Math.floor(Number(o[i+e]))}else for(let o=0;o<n;o++)s[o]=Math.floor(Number(t.iget(o)));return f}function C(t){l(t.dtype,"rint","Rounding is not defined for complex numbers.");const r=t.dtype,a=Array.from(t.shape),n=t.size,u=r==="float32"?"float32":"float64",f=c.zeros(a,u),s=f.data;if(t.isCContiguous){const o=t.data,i=t.offset;for(let e=0;e<n;e++)s[e]=p(Number(o[i+e]))}else for(let o=0;o<n;o++)s[o]=p(Number(t.iget(o)));return f}function x(t,r=0){return g(t,r)}function D(t){l(t.dtype,"trunc","Rounding is not defined for complex numbers.");const r=t.dtype,a=Array.from(t.shape),n=t.size,u=r==="float32"?"float32":"float64",f=c.zeros(a,u),s=f.data;if(t.isCContiguous){const o=t.data,i=t.offset;for(let e=0;e<n;e++)s[e]=Math.trunc(Number(o[i+e]))}else for(let o=0;o<n;o++)s[o]=Math.trunc(Number(t.iget(o)));return f}export{g as around,A as ceil,z as fix,S as floor,C as rint,x as round,D as trunc};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{ArrayStorage as
|
|
1
|
+
import{ArrayStorage as z}from"../storage.js";import{isComplexDType as H}from"../dtype.js";function P(o,f,s,l){const c=isNaN(o)||isNaN(f),r=isNaN(s)||isNaN(l);return c&&r?0:c?1:r||o<s?-1:o>s?1:f<l?-1:f>l?1:0}function W(o,f,s,l){const c=isNaN(o)||isNaN(f),r=isNaN(s)||isNaN(l);return c&&r?!0:c||r?!1:o===s&&f===l}function Q(o,f,s,l,c,r,t,u,A){const g=new Int32Array(r),y=t?new Int32Array(r).fill(-1):null;for(let x=0;x<s;x++){const n=Number(o[f+x])-c;g[n]++,y!==null&&y[n]===-1&&(y[n]=x)}let d=0;for(let x=0;x<r;x++)g[x]>0&&d++;const h=z.zeros([d],l),e=h.data,w=e instanceof BigInt64Array||e instanceof BigUint64Array,N=A?z.zeros([d],"int32"):null,q=N?N.data:null,B=t?z.zeros([d],"int32"):null,b=B?B.data:null,j=u?new Int32Array(r).fill(-1):null;let K=0;for(let x=0;x<r;x++)g[x]>0&&(w?e[K]=BigInt(x+c):e[K]=x+c,q&&(q[K]=g[x]),b&&(b[K]=y[x]),j&&(j[x]=K),K++);if(!t&&!u&&!A)return h;const J={values:h};if(B&&(J.indices=B),u){const x=z.zeros([s],"int32"),n=x.data;for(let m=0;m<s;m++)n[m]=j[Number(o[f+m])-c];J.inverse=x}return N&&(J.counts=N),J}function V(o,f=!1,s=!1,l=!1,c){if(c!==void 0){const n=Array.from(o.shape),m=n.length;let a=c<0?m+c:c;if(a<0||a>=m)throw new Error(`unique: axis ${c} out of bounds for array of dimension ${m}`);const F=n[a],D=[];for(let I=0;I<F;I++){const T=[],U=n.filter((i,S)=>S!==a),L=U.reduce((i,S)=>i*S,1);for(let i=0;i<L;i++){let S=i;const v=new Array(U.length);for(let $=U.length-1;$>=0;$--)v[$]=S%U[$],S=Math.floor(S/U[$]);const G=[];let O=0;for(let $=0;$<m;$++)G.push($===a?I:v[O++]);T.push(Number(o.get(...G)))}D.push(T.join(","))}const k=D.map((I,T)=>({key:I,i:T}));k.sort((I,T)=>I.key<T.key?-1:I.key>T.key?1:0);const _=[];let E;for(const{key:I,i:T}of k)I!==E&&(_.push(T),E=I);const p=n.map((I,T)=>T===a?_.length:I),M=z.zeros(p,o.dtype);for(let I=0;I<_.length;I++){const T=_[I],U=n.filter((i,S)=>S!==a),L=U.reduce((i,S)=>i*S,1);for(let i=0;i<L;i++){let S=i;const v=new Array(U.length);for(let R=U.length-1;R>=0;R--)v[R]=S%U[R],S=Math.floor(S/U[R]);const G=[],O=[];let $=0;for(let R=0;R<m;R++)G.push(R===a?T:v[$]),O.push(R===a?I:v[$]),R!==a&&$++;M.set(O,Number(o.get(...G)))}}return M}const r=o.dtype,t=o.size,u=o.data,A=o.offset;if(H(r)){const n=u,m=[];for(let i=0;i<t;i++)m.push({re:n[(A+i)*2],im:n[(A+i)*2+1],index:i});m.sort((i,S)=>P(i.re,i.im,S.re,S.im));const a=[],F=[],D=new Array(t),k=[];let _,E,p=0;for(let i=0;i<m.length;i++){const{re:S,im:v,index:G}=m[i];_===void 0||!W(S,v,_,E)?(_!==void 0&&k.push(p),a.push({re:S,im:v}),F.push(G),p=1,_=S,E=v):p++}p>0&&k.push(p);const M=new Map;let I=-1;for(let i=0;i<a.length;i++){const{re:S,im:v}=a[i];isNaN(S)||isNaN(v)?I=i:M.set(`${S},${v}`,i)}for(let i=0;i<t;i++){const S=n[(A+i)*2],v=n[(A+i)*2+1];isNaN(S)||isNaN(v)?D[i]=I:D[i]=M.get(`${S},${v}`)}const T=z.zeros([a.length],r),U=T.data;for(let i=0;i<a.length;i++)U[i*2]=a[i].re,U[i*2+1]=a[i].im;if(!f&&!s&&!l)return T;const L={values:T};if(f){const i=z.zeros([F.length],"int32"),S=i.data;for(let v=0;v<F.length;v++)S[v]=F[v];L.indices=i}if(s){const i=z.zeros([D.length],"int32"),S=i.data;for(let v=0;v<D.length;v++)S[v]=D[v];L.inverse=i}if(l){const i=z.zeros([k.length],"int32"),S=i.data;for(let v=0;v<k.length;v++)S[v]=k[v];L.counts=i}return L}if(r==="int8"||r==="uint8")return Q(u,A,t,r,r==="int8"?-128:0,256,f,s,l);if(r==="int16"||r==="uint16"||r==="int32"||r==="uint32"){let n=Number(u[A]),m=n;for(let F=1;F<t;F++){const D=Number(u[A+F]);D<n?n=D:D>m&&(m=D)}const a=m-n+1;if(a<=4*t)return Q(u,A,t,r,n,a,f,s,l)}const g=u instanceof BigInt64Array||u instanceof BigUint64Array,y=r==="float64"||r==="float32"||r==="float16";if(!f&&!s){const n=new Float64Array(t);for(let p=0;p<t;p++)n[p]=Number(u[A+p]);if(n.sort(),t===0){const p=z.zeros([0],r);return l?{values:p,counts:z.zeros([0],"int32")}:p}const m=[n[0]],a=[1];for(let p=1;p<t;p++){const M=n[p],I=n[p-1];M!==I&&!(M!==M&&I!==I)?(m.push(M),a.push(1)):a[a.length-1]++}const F=m.length,D=z.zeros([F],r),k=D.data;if(g)for(let p=0;p<F;p++)k[p]=BigInt(m[p]);else for(let p=0;p<F;p++)k[p]=m[p];if(!l)return D;const _=z.zeros([F],"int32"),E=_.data;for(let p=0;p<F;p++)E[p]=a[p];return{values:D,counts:_}}const d=new Float64Array(t),h=new Int32Array(t);for(let n=0;n<t;n++)d[n]=Number(u[A+n]),h[n]=n;y?h.sort((n,m)=>{const a=d[n],F=d[m];return a!==a&&F!==F?0:a!==a?1:F!==F?-1:a-F}):h.sort((n,m)=>d[n]-d[m]);const e=[],w=[],N=[];let q,B=0;for(let n=0;n<t;n++){const m=h[n],a=d[m];q===void 0||(y?a!==a&&q===q||a===a&&q!==q||a===a&&a!==q:a!==q)?(q!==void 0&&N.push(B),e.push(a),w.push(m),B=1,q=a):B++}B>0&&N.push(B);const b=e.length,j=z.zeros([b],r),K=j.data,J=K instanceof BigInt64Array||K instanceof BigUint64Array;for(let n=0;n<b;n++)K[n]=J?BigInt(e[n]):e[n];if(!f&&!s&&!l)return j;const x={values:j};if(f){const n=z.zeros([b],"int32"),m=n.data;for(let a=0;a<b;a++)m[a]=w[a];x.indices=n}if(s){const n=new Map;let m=-1;for(let D=0;D<b;D++){const k=e[D];k!==k?m=D:n.set(k,D)}const a=z.zeros([t],"int32"),F=a.data;for(let D=0;D<t;D++){const k=d[D];F[D]=k!==k?m:n.get(k)}x.inverse=a}if(l){const n=z.zeros([b],"int32"),m=n.data;for(let a=0;a<b;a++)m[a]=N[a];x.counts=n}return x}function C(o,f,s,l=0){if(s){const c=Number(o[(l+f)*2]),r=Number(o[(l+f)*2+1]);return`${c},${r}`}return String(Number(o[l+f]))}function tt(o,f){return X(o,f)}function rt(o,f){const s=o.dtype,l=H(s),c=V(o),r=V(f),t=new Set;for(let y=0;y<r.size;y++)t.add(C(r.data,y,l));const u=[];for(let y=0;y<c.size;y++){const d=C(c.data,y,l);t.has(d)&&u.push(y)}if(l){const y=z.zeros([u.length],s),d=y.data,h=c.data;for(let e=0;e<u.length;e++){const w=u[e];d[e*2]=h[w*2],d[e*2+1]=h[w*2+1]}return y}const A=z.zeros([u.length],s),g=A.data;for(let y=0;y<u.length;y++)g[y]=c.data[u[y]];return A}function X(o,f){const s=Array.from(o.shape),l=o.size,c=H(o.dtype),r=new Set;for(let A=0;A<f.size;A++)r.add(C(f.data,A,c,f.offset));const t=z.zeros(s,"bool"),u=t.data;for(let A=0;A<l;A++){const g=C(o.data,A,c,o.offset);u[A]=r.has(g)?1:0}return t}function et(o,f){const s=o.dtype,l=H(s),c=V(o),r=new Set;for(let g=0;g<f.size;g++)r.add(C(f.data,g,l,f.offset));const t=[];for(let g=0;g<c.size;g++){const y=C(c.data,g,l);r.has(y)||t.push(g)}if(l){const g=z.zeros([t.length],s),y=g.data,d=c.data;for(let h=0;h<t.length;h++){const e=t[h];y[h*2]=d[e*2],y[h*2+1]=d[e*2+1]}return g}const u=z.zeros([t.length],s),A=u.data;for(let g=0;g<t.length;g++)A[g]=c.data[t[g]];return u}function nt(o,f){const s=o.dtype,l=H(s),c=V(o),r=V(f),t=new Set,u=new Set;for(let e=0;e<c.size;e++)t.add(C(c.data,e,l));for(let e=0;e<r.size;e++)u.add(C(r.data,e,l));const A=[],g=[];for(let e=0;e<c.size;e++){const w=C(c.data,e,l);u.has(w)||A.push(e)}for(let e=0;e<r.size;e++){const w=C(r.data,e,l);t.has(w)||g.push(e)}if(l){const e=[],w=c.data,N=r.data;for(const b of A)e.push({re:w[b*2],im:w[b*2+1]});for(const b of g)e.push({re:N[b*2],im:N[b*2+1]});e.sort((b,j)=>P(b.re,b.im,j.re,j.im));const q=z.zeros([e.length],s),B=q.data;for(let b=0;b<e.length;b++)B[b*2]=e[b].re,B[b*2+1]=e[b].im;return q}const y=[];for(const e of A)y.push(Number(c.data[e]));for(const e of g)y.push(Number(r.data[e]));y.sort((e,w)=>isNaN(e)&&isNaN(w)?0:isNaN(e)?1:isNaN(w)?-1:e-w);const d=z.zeros([y.length],s),h=d.data;for(let e=0;e<y.length;e++)h[e]=y[e];return d}function st(o,f){const s=o.dtype,l=H(s),c=V(o),r=V(f),t=new Set,u=[];if(l){const d=c.data,h=r.data;for(let N=0;N<c.size;N++){const q=d[N*2],B=d[N*2+1],b=`${q},${B}`;t.has(b)||(t.add(b),u.push({re:q,im:B}))}for(let N=0;N<r.size;N++){const q=h[N*2],B=h[N*2+1],b=`${q},${B}`;t.has(b)||(t.add(b),u.push({re:q,im:B}))}u.sort((N,q)=>P(N.re,N.im,q.re,q.im));const e=z.zeros([u.length],s),w=e.data;for(let N=0;N<u.length;N++)w[N*2]=u[N].re,w[N*2+1]=u[N].im;return e}const A=[];for(let d=0;d<c.size;d++){const h=Number(c.data[d]),e=String(h);t.has(e)||(t.add(e),A.push(h))}for(let d=0;d<r.size;d++){const h=Number(r.data[d]),e=String(h);t.has(e)||(t.add(e),A.push(h))}A.sort((d,h)=>isNaN(d)&&isNaN(h)?0:isNaN(d)?1:isNaN(h)?-1:d-h);const g=z.zeros([A.length],s),y=g.data;for(let d=0;d<A.length;d++)y[d]=A[d];return g}function at(o,f="fb"){const s=o.dtype,l=o.data,c=o.size,r=o.offset;if(c===0)return z.zeros([0],s);let t=0,u=c-1;if(H(s)){const y=l;if(f!=="b")for(;t<c&&y[(r+t)*2]===0&&y[(r+t)*2+1]===0;)t++;if(f!=="f")for(;u>=t&&y[(r+u)*2]===0&&y[(r+u)*2+1]===0;)u--;if(t>u)return z.zeros([0],s);const d=u-t+1,h=z.zeros([d],s);return h.data.set(y.subarray((r+t)*2,(r+t+d)*2)),h}if(l instanceof BigInt64Array||l instanceof BigUint64Array){if(f!=="b")for(;t<c&&l[r+t]===0n;)t++;if(f!=="f")for(;u>=t&&l[r+u]===0n;)u--}else{const y=l.subarray(r,r+c);if(f!=="b")for(;t<c&&y[t]===0;)t++;if(f!=="f")for(;u>=t&&y[u]===0;)u--}if(t>u)return z.zeros([0],s);const A=u-t+1,g=z.zeros([A],s);return l instanceof BigInt64Array||l instanceof BigUint64Array,g.data.set(l.subarray(r+t,r+t+A)),g}function ot(o){const s=V(o,!0,!0,!0);return{values:s.values,indices:s.indices,inverse_indices:s.inverse,counts:s.counts}}function it(o){const s=V(o,!1,!1,!0);return{values:s.values,counts:s.counts}}function ut(o){const s=V(o,!1,!0,!1);return{values:s.values,inverse_indices:s.inverse}}function lt(o){return V(o)}export{tt as in1d,rt as intersect1d,X as isin,et as setdiff1d,nt as setxor1d,at as trim_zeros,st as union1d,V as unique,ot as unique_all,it as unique_counts,ut as unique_inverse,lt as unique_values};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{ArrayStorage as x,computeStrides as T}from"../storage";import{getTypedArrayConstructor as U,isBigIntDType as R}from"../dtype";function C(r,t){const n=r.size,e=r.dtype,o=t.indexOf(-1);let s;if(o!==-1){const i=t.reduce((l,m,y)=>y===o?l:l*m,1),p=n/i;if(!Number.isInteger(p))throw new Error(`cannot reshape array of size ${n} into shape ${JSON.stringify(t)}`);s=t.map((l,m)=>m===o?p:l)}else s=t;if(s.reduce((i,p)=>i*p,1)!==n)throw new Error(`cannot reshape array of size ${n} into shape ${JSON.stringify(s)}`);if(r.isCContiguous){const i=r.data;return x.fromData(i,s,e,T(s),0)}const u=r.copy().data;return x.fromData(u,s,e,T(s),0)}function q(r){const t=r.size,n=r.dtype,e=U(n);if(!e)throw new Error(`Cannot flatten array with dtype ${n}`);if(r.isCContiguous){const a=r.data.slice(r.offset,r.offset+t);return x.fromData(a,[t],n,[1],0)}const o=new e(t),s=R(n);for(let c=0;c<t;c++){const a=r.iget(c);o[c]=a}return x.fromData(o,[t],n,[1],0)}function L(r){const t=r.size,n=r.dtype;if(r.isCContiguous){const e=r.data;return x.fromData(e,[t],n,[1],0)}return q(r)}function N(r,t){const n=r.shape,e=n.length,o=r.strides,s=r.data,c=r.dtype;let a;if(t===void 0)a=Array.from({length:e},(l,m)=>e-1-m);else{if(t.length!==e)throw new Error(`axes must have length ${e}, got ${t.length}`);const l=new Set;for(const m of t){const y=m<0?e+m:m;if(y<0||y>=e)throw new Error(`axis ${m} is out of bounds for array of dimension ${e}`);if(l.has(y))throw new Error("repeated axis in transpose");l.add(y)}a=t.map(m=>m<0?e+m:m)}const u=a.map(l=>n[l]),i=Array.from(o),p=a.map(l=>i[l]);return x.fromData(s,u,c,p,r.offset)}function _(r,t){const n=r.shape,e=n.length,o=r.strides,s=r.data,c=r.dtype;if(t===void 0){const a=[],u=[];for(let i=0;i<e;i++)n[i]!==1&&(a.push(n[i]),u.push(o[i]));return a.length===0&&(a.push(1),u.push(1)),x.fromData(s,a,c,u,r.offset)}else{const a=t<0?e+t:t;if(a<0||a>=e)throw new Error(`axis ${t} is out of bounds for array of dimension ${e}`);if(n[a]!==1)throw new Error(`cannot select an axis which has size not equal to one (axis ${t} has size ${n[a]})`);const u=[],i=[];for(let p=0;p<e;p++)p!==a&&(u.push(n[p]),i.push(o[p]));return x.fromData(s,u,c,i,r.offset)}}function k(r,t){const n=r.shape,e=n.length,o=r.strides,s=r.data,c=r.dtype;let a=t;if(a<0&&(a=e+t+1),a<0||a>e)throw new Error(`axis ${t} is out of bounds for array of dimension ${e+1}`);const u=[...Array.from(n)];u.splice(a,0,1);const i=[...Array.from(o)],p=a<e?o[a]*(n[a]||1):1;return i.splice(a,0,p),x.fromData(s,u,c,i,r.offset)}function Q(r,t,n){const e=r.shape,o=e.length,s=r.strides,c=r.data,a=r.dtype;let u=t<0?o+t:t,i=n<0?o+n:n;if(u<0||u>=o)throw new Error(`axis1 ${t} is out of bounds for array of dimension ${o}`);if(i<0||i>=o)throw new Error(`axis2 ${n} is out of bounds for array of dimension ${o}`);if(u===i)return x.fromData(c,Array.from(e),a,Array.from(s),r.offset);const p=Array.from(e),l=Array.from(s);return[p[u],p[i]]=[p[i],p[u]],[l[u],l[i]]=[l[i],l[u]],x.fromData(c,p,a,l,r.offset)}function F(r,t,n){const e=r.ndim,o=Array.isArray(t)?t:[t],s=Array.isArray(n)?n:[n];if(o.length!==s.length)throw new Error("source and destination must have the same number of elements");const c=o.map(i=>{const p=i<0?e+i:i;if(p<0||p>=e)throw new Error(`source axis ${i} is out of bounds for array of dimension ${e}`);return p}),a=s.map(i=>{const p=i<0?e+i:i;if(p<0||p>=e)throw new Error(`destination axis ${i} is out of bounds for array of dimension ${e}`);return p});if(new Set(c).size!==c.length)throw new Error("repeated axis in source");if(new Set(a).size!==a.length)throw new Error("repeated axis in destination");const u=[];for(let i=0;i<e;i++)c.includes(i)||u.push(i);for(let i=0;i<c.length;i++){const p=a[i];u.splice(p,0,c[i])}return N(r,u)}function v(r,t=0){if(r.length===0)throw new Error("need at least one array to concatenate");if(r.length===1)return r[0].copy();const n=r[0],e=n.ndim,o=n.dtype,s=t<0?e+t:t;if(s<0||s>=e)throw new Error(`axis ${t} is out of bounds for array of dimension ${e}`);for(let y=1;y<r.length;y++){const h=r[y];if(h.ndim!==e)throw new Error("all the input arrays must have same number of dimensions");for(let A=0;A<e;A++)if(A!==s&&h.shape[A]!==n.shape[A])throw new Error("all the input array dimensions except for the concatenation axis must match exactly")}const c=Array.from(n.shape);let a=n.shape[s];for(let y=1;y<r.length;y++)a+=r[y].shape[s];c[s]=a;const u=c.reduce((y,h)=>y*h,1),i=U(o);if(!i)throw new Error(`Cannot concatenate arrays with dtype ${o}`);const p=new i(u),l=T(c);let m=0;for(const y of r){const h=y.shape[s];J(y,p,c,l,s,m,o),m+=h}return x.fromData(p,c,o)}function J(r,t,n,e,o,s,c){const a=r.shape,u=a.length,i=r.size,p=c==="int64"||c==="uint64";if(o===0&&r.isCContiguous&&u>0){const y=s*e[0],h=r.data,A=r.offset,w=A+i;t.set(h.subarray(A,w),y);return}if(o===1&&u===2&&r.isCContiguous){const y=a[0],h=a[1],A=n[1],w=r.data,I=r.offset;for(let f=0;f<y;f++){const d=I+f*h,E=f*A+s;t.set(w.subarray(d,d+h),E)}return}const l=new Array(u).fill(0),m=s*e[o];for(let y=0;y<i;y++){const h=r.iget(y);let A=m;for(let w=0;w<u;w++)A+=l[w]*e[w];t[A]=h;for(let w=u-1;w>=0&&(l[w]++,!(l[w]<a[w]));w--)l[w]=0}}function V(r,t=0){if(r.length===0)throw new Error("need at least one array to stack");const n=r[0],e=n.shape,o=n.ndim,s=t<0?o+1+t:t;if(s<0||s>o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o+1}`);for(let a=1;a<r.length;a++){const u=r[a];if(u.ndim!==o)throw new Error("all input arrays must have the same shape");for(let i=0;i<o;i++)if(u.shape[i]!==e[i])throw new Error("all input arrays must have the same shape")}const c=r.map(a=>k(a,s));return v(c,s)}function j(r){if(r.length===0)throw new Error("need at least one array to stack");const t=r.map(n=>n.ndim===1?C(n,[1,n.shape[0]]):n);return v(t,0)}function P(r){if(r.length===0)throw new Error("need at least one array to stack");return r.every(n=>n.ndim===1)?v(r,0):v(r,1)}function W(r){if(r.length===0)throw new Error("need at least one array to stack");const t=r.map(n=>n.ndim===1?C(k(C(n,[1,n.shape[0]]),2),[1,n.shape[0],1]):n.ndim===2?k(n,2):n);return v(t,2)}function X(r,t,n=0){const e=r.shape,o=e.length,s=n<0?o+n:n;if(s<0||s>=o)throw new Error(`axis ${n} is out of bounds for array of dimension ${o}`);const c=e[s];let a;if(typeof t=="number"){if(c%t!==0)throw new Error("array split does not result in an equal division");const u=c/t;a=[];for(let i=1;i<t;i++)a.push(i*u)}else a=t;return M(r,a,s)}function O(r,t,n=0){const e=r.shape,o=e.length,s=n<0?o+n:n;if(s<0||s>=o)throw new Error(`axis ${n} is out of bounds for array of dimension ${o}`);const c=e[s];let a;if(typeof t=="number"){const u=t,i=Math.floor(c/u),p=c%u;a=[];let l=0;for(let m=0;m<u-1;m++)l+=i+(m<p?1:0),a.push(l)}else a=t;return M(r,a,s)}function M(r,t,n){const e=r.shape,o=e[n],s=[0,...t,o],c=[];for(let a=0;a<s.length-1;a++){const u=s[a],i=s[a+1];if(u>i)throw new Error("split indices must be in ascending order");const p=Array.from(e);p[n]=i-u;const l=r.offset+u*r.strides[n];c.push(x.fromData(r.data,p,r.dtype,Array.from(r.strides),l))}return c}function Y(r,t){if(r.ndim<2)throw new Error("vsplit only works on arrays of 2 or more dimensions");return O(r,t,0)}function Z(r,t){if(r.ndim<1)throw new Error("hsplit only works on arrays of 1 or more dimensions");const n=r.ndim===1?0:1;return O(r,t,n)}function rr(r,t){const n=r.shape,e=n.length,o=r.dtype,s=Array.isArray(t)?t:[t],c=Math.max(e,s.length),a=new Array(c).fill(1),u=new Array(c).fill(1);for(let f=0;f<e;f++)a[c-e+f]=n[f];for(let f=0;f<s.length;f++)u[c-s.length+f]=s[f];const i=a.map((f,d)=>f*u[d]),p=i.reduce((f,d)=>f*d,1),l=U(o);if(!l)throw new Error(`Cannot tile array with dtype ${o}`);const m=new l(p),y=T(i);let h=r;e<c&&(h=C(r,a));const A=o==="int64"||o==="uint64",w=h.strides,I=new Array(c).fill(0);for(let f=0;f<p;f++){let d=h.offset;for(let g=0;g<c;g++){const b=I[g]%a[g];d+=b*w[g]}const E=h.data[d];let z=0;for(let g=0;g<c;g++)z+=I[g]*y[g];m[z]=E;for(let g=c-1;g>=0&&(I[g]++,!(I[g]<i[g]));g--)I[g]=0}return x.fromData(m,i,o)}function tr(r,t,n){const e=r.shape,o=e.length,s=r.dtype,c=r.size;if(n===void 0){const f=c,d=Array.isArray(t)?t:new Array(f).fill(t);if(d.length!==f)throw new Error(`operands could not be broadcast together with shape (${f},) (${d.length},)`);const E=d.reduce((B,S)=>B+S,0),z=U(s);if(!z)throw new Error(`Cannot repeat array with dtype ${s}`);const g=new z(E);let b=0;for(let B=0;B<f;B++){const S=r.iget(B),$=d[B];for(let D=0;D<$;D++)g[b++]=S}return x.fromData(g,[E],s)}const a=n<0?o+n:n;if(a<0||a>=o)throw new Error(`axis ${n} is out of bounds for array of dimension ${o}`);const u=e[a],i=Array.isArray(t)?t:new Array(u).fill(t);if(i.length!==u)throw new Error(`operands could not be broadcast together with shape (${u},) (${i.length},)`);const p=Array.from(e);p[a]=i.reduce((f,d)=>f+d,0);const l=p.reduce((f,d)=>f*d,1),m=U(s);if(!m)throw new Error(`Cannot repeat array with dtype ${s}`);const y=new m(l),h=T(p),A=new Array(o).fill(0),w=s==="int64"||s==="uint64",I=[0];for(let f=0;f<u;f++)I.push(I[f]+i[f]);for(let f=0;f<c;f++){const d=r.iget(f),E=A[a],z=i[E];let g=0;for(let S=0;S<o;S++)S!==a&&(g+=A[S]*h[S]);const b=h[a],B=I[E];for(let S=0;S<z;S++){const $=g+(B+S)*b;y[$]=d}for(let S=o-1;S>=0&&(A[S]++,!(A[S]<e[S]));S--)A[S]=0}return x.fromData(y,p,s)}function nr(r,t){const n=r.shape,e=n.length,o=r.dtype,s=r.size;let c;if(t===void 0)c=new Set(Array.from({length:e},(m,y)=>y));else if(typeof t=="number"){const m=t<0?e+t:t;if(m<0||m>=e)throw new Error(`axis ${t} is out of bounds for array of dimension ${e}`);c=new Set([m])}else c=new Set(t.map(m=>{const y=m<0?e+m:m;if(y<0||y>=e)throw new Error(`axis ${m} is out of bounds for array of dimension ${e}`);return y}));const a=U(o);if(!a)throw new Error(`Cannot flip array with dtype ${o}`);const u=new a(s),i=R(o);if(e===1&&r.isCContiguous){const m=r.data,y=r.offset;for(let h=0;h<s;h++)u[h]=m[y+s-1-h];return x.fromData(u,[...n],o)}if(e===2&&r.isCContiguous){const m=n[0],y=n[1],h=r.data,A=r.offset;if(c.size===2){for(let w=0;w<s;w++)u[w]=h[A+s-1-w];return x.fromData(u,[...n],o)}if(c.size===1){if(c.has(0)){for(let w=0;w<m;w++){const I=A+(m-1-w)*y,f=w*y;for(let d=0;d<y;d++)u[f+d]=h[I+d]}return x.fromData(u,[...n],o)}else if(c.has(1)){for(let w=0;w<m;w++){const I=A+w*y,f=w*y;for(let d=0;d<y;d++)u[f+d]=h[I+y-1-d]}return x.fromData(u,[...n],o)}}}const p=new Array(e),l=new Array(e).fill(0);for(let m=0;m<s;m++){for(let A=0;A<e;A++)p[A]=c.has(A)?n[A]-1-l[A]:l[A];let y=r.offset;for(let A=0;A<e;A++)y+=p[A]*r.strides[A];const h=r.data[y];u[m]=h;for(let A=e-1;A>=0&&(l[A]++,!(l[A]<n[A]));A--)l[A]=0}return x.fromData(u,[...n],o)}function er(r,t=1,n=[0,1]){const e=r.shape,o=e.length,s=r.dtype;if(o<2)throw new Error("Input must be at least 2-D");const c=n[0]<0?o+n[0]:n[0],a=n[1]<0?o+n[1]:n[1];if(c<0||c>=o||a<0||a>=o)throw new Error(`Axes are out of bounds for array of dimension ${o}`);if(c===a)throw new Error("Axes must be different");if(t=(t%4+4)%4,t===0)return r.copy();const u=U(s);if(!u)throw new Error(`Cannot rotate array with dtype ${s}`);const i=[...e];(t===1||t===3)&&([i[c],i[a]]=[i[a],i[c]]);const p=i.reduce((f,d)=>f*d,1),l=new u(p),m=R(s),y=r.data;if(o===2&&c===0&&a===1){const f=e[0],d=e[1];if(t===1){const E=d,z=f;if(m){const g=y,b=l;for(let B=0;B<E;B++){const S=B*z,$=d-1-B;for(let D=0;D<z;D++)b[S+D]=g[D*d+$]}}else{const g=y,b=l;for(let B=0;B<E;B++){const S=B*z,$=d-1-B;for(let D=0;D<z;D++)b[S+D]=g[D*d+$]}}}else if(t===2)if(m){const E=y,z=l;for(let g=0;g<f;g++){const b=g*d,B=(f-1-g)*d;for(let S=0;S<d;S++)z[b+S]=E[B+(d-1-S)]}}else{const E=y,z=l;for(let g=0;g<f;g++){const b=g*d,B=(f-1-g)*d;for(let S=0;S<d;S++)z[b+S]=E[B+(d-1-S)]}}else{const E=d,z=f;if(m){const g=y,b=l;for(let B=0;B<E;B++){const S=B*z;for(let $=0;$<z;$++)b[S+$]=g[(f-1-$)*d+B]}}else{const g=y,b=l;for(let B=0;B<E;B++){const S=B*z;for(let $=0;$<z;$++)b[S+$]=g[(f-1-$)*d+B]}}}return x.fromData(l,i,s)}const h=T(i),A=T(e),w=new Array(o).fill(0),I=new Array(o);for(let f=0;f<r.size;f++){for(let b=0;b<o;b++)I[b]=w[b];let d,E;t===1?(d=e[a]-1-w[a],E=w[c]):t===2?(d=e[c]-1-w[c],E=e[a]-1-w[a],I[c]=d,I[a]=E):(d=w[a],E=e[c]-1-w[c]),t!==2&&(I[c]=d,I[a]=E);let z=0;for(let b=0;b<o;b++)z+=I[b]*h[b];let g=0;for(let b=0;b<o;b++)g+=w[b]*A[b];if(m){const b=y,B=l;B[z]=b[g]}else{const b=y,B=l;B[z]=b[g]}for(let b=o-1;b>=0&&(w[b]++,!(w[b]<e[b]));b--)w[b]=0}return x.fromData(l,i,s)}function or(r,t,n){const e=r.shape,o=e.length,s=r.dtype,c=r.size;if(n===void 0){const h=Array.isArray(t)?t.reduce((d,E)=>d+E,0):t,A=q(r),w=U(s);if(!w)throw new Error(`Cannot roll array with dtype ${s}`);const I=new w(c),f=R(s);for(let d=0;d<c;d++){const E=((d-h)%c+c)%c,z=A.iget(E);I[d]=z}return x.fromData(I,[...e],s)}const a=Array.isArray(t)?t:[t],u=Array.isArray(n)?n:[n];if(a.length!==u.length)throw new Error("shift and axis must have the same length");const i=u.map(h=>{const A=h<0?o+h:h;if(A<0||A>=o)throw new Error(`axis ${h} is out of bounds for array of dimension ${o}`);return A}),p=U(s);if(!p)throw new Error(`Cannot roll array with dtype ${s}`);const l=new p(c),m=R(s),y=new Array(o).fill(0);for(let h=0;h<c;h++){const A=[...y];for(let f=0;f<i.length;f++){const d=i[f],E=e[d],z=a[f];A[d]=((A[d]-z)%E+E)%E}let w=r.offset;for(let f=0;f<o;f++)w+=A[f]*r.strides[f];const I=r.data[w];l[h]=I;for(let f=o-1;f>=0&&(y[f]++,!(y[f]<e[f]));f--)y[f]=0}return x.fromData(l,[...e],s)}function ar(r,t,n=0){const e=r.ndim;let o=t<0?e+t:t;if(o<0||o>=e)throw new Error(`axis ${t} is out of bounds for array of dimension ${e}`);let s=n<0?e+n:n;if(s<0||s>e)throw new Error(`start ${n} is out of bounds`);return o<s&&s--,o===s?x.fromData(r.data,Array.from(r.shape),r.dtype,Array.from(r.strides),r.offset):F(r,o,s)}function sr(r,t){if(r.ndim<3)throw new Error("dsplit only works on arrays of 3 or more dimensions");return O(r,t,2)}function ir(r){if(r.length===0)throw new Error("need at least one array to stack");const t=r.map(n=>n.ndim===1?C(n,[n.shape[0],1]):n);return P(t)}const cr=j;function ur(r,t){const n=r.dtype,e=t.reduce((u,i)=>u*i,1),o=r.size,s=U(n);if(!s)throw new Error(`Cannot resize array with dtype ${n}`);const c=new s(e),a=R(n);for(let u=0;u<e;u++){const i=u%o,p=r.iget(i);c[u]=p}return x.fromData(c,t,n)}function fr(r){return r.map(t=>t.ndim===0?C(t,[1]):t)}function dr(r){return r.map(t=>t.ndim===0?C(t,[1,1]):t.ndim===1?C(t,[1,t.shape[0]]):t)}function yr(r){return r.map(t=>t.ndim===0?C(t,[1,1,1]):t.ndim===1?C(t,[1,t.shape[0],1]):t.ndim===2?C(t,[t.shape[0],t.shape[1],1]):t)}function lr(r,t=0){return v(r,t)}function pr(r,t=0){const n=r.shape,e=n.length,o=t<0?e+t:t;if(o<0||o>=e)throw new Error(`axis ${t} is out of bounds for array of dimension ${e}`);const s=n[o],c=[];for(let a=0;a<s;a++){const u=[];for(let l=0;l<e;l++)l===o?u.push({start:a,stop:a+1,step:1}):u.push({start:0,stop:n[l],step:1});const i=G(r,u),p=_(i,o);c.push(p)}return c}function mr(r,t=1){if(r.length===0)throw new Error("need at least one array to block");return r.length===1?r[0].copy():v(r,-1)}function G(r,t){const n=r.shape,e=r.strides;let o=r.offset;const s=r.dtype,c=r.data,a=[],u=[];for(let i=0;i<n.length;i++){const p=t[i],{start:l,stop:m,step:y}=p,h=Math.ceil((m-l)/y);a.push(h),u.push(e[i]*y),o+=l*e[i]}return x.fromData(c,a,s,u,o)}export{O as arraySplit,fr as atleast1d,dr as atleast2d,yr as atleast3d,mr as block,ir as columnStack,lr as concat,v as concatenate,sr as dsplit,W as dstack,k as expandDims,q as flatten,nr as flip,Z as hsplit,P as hstack,F as moveaxis,L as ravel,tr as repeat,C as reshape,ur as resize,or as roll,ar as rollaxis,er as rot90,cr as rowStack,X as split,_ as squeeze,V as stack,Q as swapaxes,rr as tile,N as transpose,pr as unstack,Y as vsplit,j as vstack};
|
|
1
|
+
import{ArrayStorage as C,computeStrides as F}from"../storage.js";import{getTypedArrayConstructor as U,isBigIntDType as v,isComplexDType as q,hasFloat16 as T}from"../dtype.js";import{wasmFlip as N}from"../wasm/flip.js";import{wasmTile2D as _}from"../wasm/tile.js";import{wasmRoll as H}from"../wasm/roll.js";import{wasmRot90 as Q}from"../wasm/rot90.js";import{wasmRepeat as V}from"../wasm/repeat.js";import{parseSlice as j,normalizeSlice as J}from"../slicing.js";function lr(r,...t){if(t.length===0)return r;if(t.length>r.ndim)throw new Error(`Too many indices for array: array is ${r.ndim}-dimensional, but ${t.length} were indexed`);const n=t.map((s,f)=>{const u=j(s);return J(u,r.shape[f])});for(;n.length<r.ndim;)n.push({start:0,stop:r.shape[n.length],step:1,isIndex:!1});const o=[],i=[];let e=r.offset;for(let s=0;s<n.length;s++){const f=n[s];if(e+=f.start*r.strides[s],f.isIndex)continue;const u=Math.max(0,Math.ceil((f.stop-f.start)/f.step));o.push(u),i.push(r.strides[s]*f.step)}return C.fromData(r.data,o,r.dtype,i,e)}function dr(r,...t){if(t.length===0)return r;if(t.length>r.ndim)throw new Error(`Too many indices for array: array is ${r.ndim}-dimensional, but ${t.length} were indexed`);const n=t.map((s,f)=>{const u=j(s);return J(u,r.shape[f])});for(;n.length<r.ndim;)n.push({start:0,stop:r.shape[n.length],step:1,isIndex:!1});const o=[],i=[];let e=r.offset;for(let s=0;s<n.length;s++){const f=n[s];e+=f.start*r.strides[s];const u=f.isIndex?1:Math.max(0,Math.ceil((f.stop-f.start)/f.step));o.push(u),i.push(r.strides[s]*f.step)}return C.fromData(r.data,o,r.dtype,i,e)}function D(r,t){const n=r.size,o=r.dtype,i=t.indexOf(-1);let e;if(i!==-1){const a=t.reduce((b,m,y)=>y===i?b:b*m,1),A=n/a;if(!Number.isInteger(A))throw new Error(`cannot reshape array of size ${n} into shape ${JSON.stringify(t)}`);e=t.map((b,m)=>m===i?A:b)}else e=t;if(e.reduce((a,A)=>a*A,1)!==n)throw new Error(`cannot reshape array of size ${n} into shape ${JSON.stringify(e)}`);if(r.isCContiguous){const a=r.data;return C.fromData(a,e,o,F(e),0)}const u=r.copy().data;return C.fromData(u,e,o,F(e),0)}function L(r){const t=r.size,n=r.dtype,o=U(n);if(!o)throw new Error(`Cannot flatten array with dtype ${n}`);const i=q(n),e=i?t*2:t;if(r.isCContiguous){const u=r.data,a=i?r.offset*2:r.offset,A=u.slice(a,a+e);return C.fromData(A,[t],n,[1],0)}const s=new o(e),f=v(n);if(i)for(let u=0;u<t;u++){const a=r.iget(u);s[u*2]=a.re,s[u*2+1]=a.im}else for(let u=0;u<t;u++){const a=r.iget(u);s[u]=a}return C.fromData(s,[t],n,[1],0)}function yr(r){const t=r.size,n=r.dtype;if(r.isCContiguous){const o=r.data;return C.fromData(o,[t],n,[1],0)}return L(r)}function W(r,t){const n=r.shape,o=n.length,i=r.strides,e=r.data,s=r.dtype;let f;if(t===void 0)f=Array.from({length:o},(b,m)=>o-1-m);else{if(t.length!==o)throw new Error(`axes must have length ${o}, got ${t.length}`);const b=new Set;for(const m of t){const y=m<0?o+m:m;if(y<0||y>=o)throw new Error(`axis ${m} is out of bounds for array of dimension ${o}`);if(b.has(y))throw new Error("repeated axis in transpose");b.add(y)}f=t.map(m=>m<0?o+m:m)}const u=f.map(b=>n[b]),a=Array.from(i),A=f.map(b=>a[b]);return C.fromData(e,u,s,A,r.offset)}function pr(r,t){const n=r.shape,o=n.length,i=r.strides,e=r.data,s=r.dtype;if(t===void 0){const f=[],u=[];for(let a=0;a<o;a++)n[a]!==1&&(f.push(n[a]),u.push(i[a]));return C.fromData(e,f,s,u,r.offset)}else{const f=t<0?o+t:t;if(f<0||f>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);if(n[f]!==1)throw new Error(`cannot select an axis which has size not equal to one (axis ${t} has size ${n[f]})`);const u=[],a=[];for(let A=0;A<o;A++)A!==f&&(u.push(n[A]),a.push(i[A]));return C.fromData(e,u,s,a,r.offset)}}function R(r,t){const n=r.shape,o=n.length,i=r.strides,e=r.data,s=r.dtype;let f=t;if(f<0&&(f=o+t+1),f<0||f>o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o+1}`);const u=[...Array.from(n)];u.splice(f,0,1);const a=[...Array.from(i)],A=f<o?i[f]*(n[f]||1):1;return a.splice(f,0,A),C.fromData(e,u,s,a,r.offset)}function mr(r,t,n){const o=r.shape,i=o.length,e=r.strides,s=r.data,f=r.dtype;let u=t<0?i+t:t,a=n<0?i+n:n;if(u<0||u>=i)throw new Error(`axis1 ${t} is out of bounds for array of dimension ${i}`);if(a<0||a>=i)throw new Error(`axis2 ${n} is out of bounds for array of dimension ${i}`);if(u===a)return C.fromData(s,Array.from(o),f,Array.from(e),r.offset);const A=Array.from(o),b=Array.from(e);return[A[u],A[a]]=[A[a],A[u]],[b[u],b[a]]=[b[a],b[u]],C.fromData(s,A,f,b,r.offset)}function X(r,t,n){const o=r.ndim,i=Array.isArray(t)?t:[t],e=Array.isArray(n)?n:[n];if(i.length!==e.length)throw new Error("source and destination must have the same number of elements");const s=i.map(a=>{const A=a<0?o+a:a;if(A<0||A>=o)throw new Error(`source axis ${a} is out of bounds for array of dimension ${o}`);return A}),f=e.map(a=>{const A=a<0?o+a:a;if(A<0||A>=o)throw new Error(`destination axis ${a} is out of bounds for array of dimension ${o}`);return A});if(new Set(s).size!==s.length)throw new Error("repeated axis in source");if(new Set(f).size!==f.length)throw new Error("repeated axis in destination");const u=[];for(let a=0;a<o;a++)s.includes(a)||u.push(a);for(let a=0;a<s.length;a++){const A=f[a];u.splice(A,0,s[a])}return W(r,u)}function O(r,t=0){if(r.length===0)throw new Error("need at least one array to concatenate");if(r.length===1)return r[0].copy();const n=r[0],o=n.ndim,i=n.dtype,e=t<0?o+t:t;if(e<0||e>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);for(let y=1;y<r.length;y++){const d=r[y];if(d.ndim!==o)throw new Error("all the input arrays must have same number of dimensions");for(let p=0;p<o;p++)if(p!==e&&d.shape[p]!==n.shape[p])throw new Error("all the input array dimensions except for the concatenation axis must match exactly")}const s=Array.from(n.shape);let f=n.shape[e];for(let y=1;y<r.length;y++)f+=r[y].shape[e];s[e]=f;const u=s.reduce((y,d)=>y*d,1),a=U(i);if(!a)throw new Error(`Cannot concatenate arrays with dtype ${i}`);const A=new a(u),b=F(s);let m=0;for(const y of r){const d=y.shape[e];Y(y,A,s,b,e,m,i),m+=d}return C.fromData(A,s,i)}function Y(r,t,n,o,i,e,s){const f=r.shape,u=f.length,a=r.size,A=s==="int64"||s==="uint64";if(i===0&&r.isCContiguous&&u>0){const y=e*o[0],d=r.data,p=r.offset,h=p+a;t.set(d.subarray(p,h),y);return}if(i===1&&u===2&&r.isCContiguous){const y=f[0],d=f[1],p=n[1],h=r.data,I=r.offset;for(let c=0;c<y;c++){const l=I+c*d,w=c*p+e;t.set(h.subarray(l,l+d),w)}return}if(s==="float16"&&T&&r.isCContiguous){const y=new Float32Array(r.data.subarray(r.offset,r.offset+a)),d=new Array(u).fill(0),p=e*o[i];for(let h=0;h<a;h++){let I=p;for(let c=0;c<u;c++)I+=d[c]*o[c];t[I]=y[h];for(let c=u-1;c>=0&&(d[c]++,!(d[c]<f[c]));c--)d[c]=0}return}const b=new Array(u).fill(0),m=e*o[i];for(let y=0;y<a;y++){const d=r.iget(y);let p=m;for(let h=0;h<u;h++)p+=b[h]*o[h];t[p]=d;for(let h=u-1;h>=0&&(b[h]++,!(b[h]<f[h]));h--)b[h]=0}}function Ar(r,t=0){if(r.length===0)throw new Error("need at least one array to stack");const n=r[0],o=n.shape,i=n.ndim,e=t<0?i+1+t:t;if(e<0||e>i)throw new Error(`axis ${t} is out of bounds for array of dimension ${i+1}`);for(let f=1;f<r.length;f++){const u=r[f];if(u.ndim!==i)throw new Error("all input arrays must have the same shape");for(let a=0;a<i;a++)if(u.shape[a]!==o[a])throw new Error("all input arrays must have the same shape")}const s=r.map(f=>R(f,e));return O(s,e)}function Z(r){if(r.length===0)throw new Error("need at least one array to stack");const t=r.map(n=>n.ndim===1?D(n,[1,n.shape[0]]):n);return O(t,0)}function rr(r){if(r.length===0)throw new Error("need at least one array to stack");return r.every(n=>n.ndim===1)?O(r,0):O(r,1)}function hr(r){if(r.length===0)throw new Error("need at least one array to stack");const t=r.map(n=>n.ndim===1?D(R(D(n,[1,n.shape[0]]),2),[1,n.shape[0],1]):n.ndim===2?R(n,2):n);return O(t,2)}function wr(r,t,n=0){const o=r.shape,i=o.length,e=n<0?i+n:n;if(e<0||e>=i)throw new Error(`axis ${n} is out of bounds for array of dimension ${i}`);const s=o[e];let f;if(typeof t=="number"){if(s%t!==0)throw new Error("array split does not result in an equal division");const u=s/t;f=[];for(let a=1;a<t;a++)f.push(a*u)}else f=t;return K(r,f,e)}function k(r,t,n=0){const o=r.shape,i=o.length,e=n<0?i+n:n;if(e<0||e>=i)throw new Error(`axis ${n} is out of bounds for array of dimension ${i}`);const s=o[e];let f;if(typeof t=="number"){const u=t,a=Math.floor(s/u),A=s%u;f=[];let b=0;for(let m=0;m<u-1;m++)b+=a+(m<A?1:0),f.push(b)}else f=t;return K(r,f,e)}function K(r,t,n){const o=r.shape,i=o[n],e=[0,...t,i],s=[];for(let f=0;f<e.length-1;f++){const u=e[f],a=e[f+1];if(u>a)throw new Error("split indices must be in ascending order");const A=Array.from(o);A[n]=a-u;const b=r.offset+u*r.strides[n];s.push(C.fromData(r.data,A,r.dtype,Array.from(r.strides),b))}return s}function br(r,t){if(r.ndim<2)throw new Error("vsplit only works on arrays of 2 or more dimensions");return k(r,t,0)}function Sr(r,t){if(r.ndim<1)throw new Error("hsplit only works on arrays of 1 or more dimensions");const n=r.ndim===1?0:1;return k(r,t,n)}function gr(r,t){const n=r.shape,o=n.length,i=r.dtype,e=Array.isArray(t)?t:[t];if(o===2&&e.length===2&&r.isCContiguous){const c=_(r,e[0],e[1]);if(c)return c}if(o===1&&e.length===1&&r.isCContiguous){const c=_(r,1,e[0]);if(c)return C.fromData(c.data,[r.size*e[0]],r.dtype)}const s=Math.max(o,e.length),f=new Array(s).fill(1),u=new Array(s).fill(1);for(let c=0;c<o;c++)f[s-o+c]=n[c];for(let c=0;c<e.length;c++)u[s-e.length+c]=e[c];const a=f.map((c,l)=>c*u[l]),A=a.reduce((c,l)=>c*l,1),b=U(i);if(!b)throw new Error(`Cannot tile array with dtype ${i}`);const m=new b(A),y=F(a);let d=r;o<s&&(d=D(r,f));const p=i==="int64"||i==="uint64",h=d.strides;if(i==="float16"&&T&&d.isCContiguous){const c=d.size,l=new Float32Array(d.data.subarray(d.offset,d.offset+c)),w=new Float32Array(A),x=new Array(s).fill(0);for(let S=0;S<A;S++){let B=0;for(let g=0;g<s;g++){const E=x[g]%f[g];B+=E*h[g]}w[S]=l[B];for(let g=s-1;g>=0&&(x[g]++,!(x[g]<a[g]));g--)x[g]=0}return m.set(w),C.fromData(m,a,i)}const I=new Array(s).fill(0);for(let c=0;c<A;c++){let l=d.offset;for(let S=0;S<s;S++){const B=I[S]%f[S];l+=B*h[S]}const w=d.data[l];let x=0;for(let S=0;S<s;S++)x+=I[S]*y[S];m[x]=w;for(let S=s-1;S>=0&&(I[S]++,!(I[S]<a[S]));S--)I[S]=0}return C.fromData(m,a,i)}function Br(r,t,n){const o=r.shape,i=o.length,e=r.dtype,s=r.size;if(n===void 0){if(typeof t=="number"&&r.isCContiguous){const g=V(r,t);if(g)return g}const c=s,l=Array.isArray(t)?t:new Array(c).fill(t);if(l.length!==c)throw new Error(`operands could not be broadcast together with shape (${c},) (${l.length},)`);const w=l.reduce((g,E)=>g+E,0),x=U(e);if(!x)throw new Error(`Cannot repeat array with dtype ${e}`);const S=new x(w);if(e==="float16"&&T&&r.isCContiguous){const g=new Float32Array(r.data.subarray(r.offset,r.offset+c)),E=new Float32Array(w);let $=0;for(let z=0;z<c;z++){const P=g[z],G=l[z];for(let M=0;M<G;M++)E[$++]=P}return S.set(E),C.fromData(S,[w],e)}let B=0;for(let g=0;g<c;g++){const E=r.iget(g),$=l[g];for(let z=0;z<$;z++)S[B++]=E}return C.fromData(S,[w],e)}const f=n<0?i+n:n;if(f<0||f>=i)throw new Error(`axis ${n} is out of bounds for array of dimension ${i}`);const u=o[f],a=Array.isArray(t)?t:new Array(u).fill(t);if(a.length!==u)throw new Error(`operands could not be broadcast together with shape (${u},) (${a.length},)`);const A=Array.from(o);A[f]=a.reduce((c,l)=>c+l,0);const b=A.reduce((c,l)=>c*l,1),m=U(e);if(!m)throw new Error(`Cannot repeat array with dtype ${e}`);const y=new m(b),d=F(A),p=new Array(i).fill(0),h=e==="int64"||e==="uint64",I=[0];for(let c=0;c<u;c++)I.push(I[c]+a[c]);if(e==="float16"&&T&&r.isCContiguous){const c=new Float32Array(r.data.subarray(r.offset,r.offset+s)),l=new Float32Array(b);for(let w=0;w<s;w++){const x=c[w],S=p[f],B=a[S];let g=0;for(let z=0;z<i;z++)z!==f&&(g+=p[z]*d[z]);const E=d[f],$=I[S];for(let z=0;z<B;z++)l[g+($+z)*E]=x;for(let z=i-1;z>=0&&(p[z]++,!(p[z]<o[z]));z--)p[z]=0}return y.set(l),C.fromData(y,A,e)}for(let c=0;c<s;c++){const l=r.iget(c),w=p[f],x=a[w];let S=0;for(let E=0;E<i;E++)E!==f&&(S+=p[E]*d[E]);const B=d[f],g=I[w];for(let E=0;E<x;E++){const $=S+(g+E)*B;y[$]=l}for(let E=i-1;E>=0&&(p[E]++,!(p[E]<o[E]));E--)p[E]=0}return C.fromData(y,A,e)}function xr(r,t){const n=r.shape,o=n.length,i=r.dtype,e=r.size;let s;if(t===void 0)s=new Set(Array.from({length:o},(m,y)=>y));else if(typeof t=="number"){const m=t<0?o+t:t;if(m<0||m>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);s=new Set([m])}else s=new Set(t.map(m=>{const y=m<0?o+m:m;if(y<0||y>=o)throw new Error(`axis ${m} is out of bounds for array of dimension ${o}`);return y}));const f=U(i);if(!f)throw new Error(`Cannot flip array with dtype ${i}`);const u=v(i);if(s.size===o&&r.isCContiguous&&!q(i)){const m=N(r);if(m)return m}const a=new f(e);if(o===1&&r.isCContiguous){if(i==="float16"&&T){const d=r.offset,p=new Float32Array(r.data.subarray(d,d+e)),h=new Float32Array(e);for(let I=0;I<e;I++)h[I]=p[e-1-I];return a.set(h),C.fromData(a,[...n],i)}const m=r.data,y=r.offset;for(let d=0;d<e;d++)a[d]=m[y+e-1-d];return C.fromData(a,[...n],i)}if(o===2&&r.isCContiguous){const m=n[0],y=n[1],d=r.offset,p=r.data;if(s.size===2){for(let h=0;h<e;h++)a[h]=p[d+e-1-h];return C.fromData(a,[...n],i)}if(s.size===1){if(s.has(0)){for(let h=0;h<m;h++){const I=d+(m-1-h)*y,c=h*y;for(let l=0;l<y;l++)a[c+l]=p[I+l]}return C.fromData(a,[...n],i)}else if(s.has(1)){for(let h=0;h<m;h++){const I=d+h*y,c=h*y;for(let l=0;l<y;l++)a[c+l]=p[I+y-1-l]}return C.fromData(a,[...n],i)}}}const A=new Array(o),b=new Array(o).fill(0);for(let m=0;m<e;m++){for(let p=0;p<o;p++)A[p]=s.has(p)?n[p]-1-b[p]:b[p];let y=r.offset;for(let p=0;p<o;p++)y+=A[p]*r.strides[p];const d=r.data[y];a[m]=d;for(let p=o-1;p>=0&&(b[p]++,!(b[p]<n[p]));p--)b[p]=0}return C.fromData(a,[...n],i)}function Ir(r,t=1,n=[0,1]){const o=r.shape,i=o.length,e=r.dtype;if(i<2)throw new Error("Input must be at least 2-D");const s=n[0]<0?i+n[0]:n[0],f=n[1]<0?i+n[1]:n[1];if(s<0||s>=i||f<0||f>=i)throw new Error(`Axes are out of bounds for array of dimension ${i}`);if(s===f)throw new Error("Axes must be different");if(t=(t%4+4)%4,t===0)return r.copy();if(i===2&&s===0&&f===1&&r.isCContiguous){if(t===1){const c=Q(r);if(c)return c}else if(t===2){const c=N(r);if(c)return c}}const u=U(e);if(!u)throw new Error(`Cannot rotate array with dtype ${e}`);const a=[...o];(t===1||t===3)&&([a[s],a[f]]=[a[f],a[s]]);const A=a.reduce((c,l)=>c*l,1),b=new u(A),m=v(e),y=r.data;if(i===2&&s===0&&f===1){const c=o[0],l=o[1];if(t===1){const w=l,x=c;if(m){const S=y,B=b;for(let g=0;g<w;g++){const E=g*x,$=l-1-g;for(let z=0;z<x;z++)B[E+z]=S[z*l+$]}}else{const S=y,B=b;for(let g=0;g<w;g++){const E=g*x,$=l-1-g;for(let z=0;z<x;z++)B[E+z]=S[z*l+$]}}}else if(t===2)if(m){const w=y,x=b;for(let S=0;S<c;S++){const B=S*l,g=(c-1-S)*l;for(let E=0;E<l;E++)x[B+E]=w[g+(l-1-E)]}}else{const w=y,x=b;for(let S=0;S<c;S++){const B=S*l,g=(c-1-S)*l;for(let E=0;E<l;E++)x[B+E]=w[g+(l-1-E)]}}else{const w=l,x=c;if(m){const S=y,B=b;for(let g=0;g<w;g++){const E=g*x;for(let $=0;$<x;$++)B[E+$]=S[(c-1-$)*l+g]}}else{const S=y,B=b;for(let g=0;g<w;g++){const E=g*x;for(let $=0;$<x;$++)B[E+$]=S[(c-1-$)*l+g]}}}return C.fromData(b,a,e)}const d=F(a),p=F(o),h=new Array(i).fill(0),I=new Array(i);for(let c=0;c<r.size;c++){for(let B=0;B<i;B++)I[B]=h[B];let l,w;t===1?(l=o[f]-1-h[f],w=h[s]):t===2?(l=o[s]-1-h[s],w=o[f]-1-h[f],I[s]=l,I[f]=w):(l=h[f],w=o[s]-1-h[s]),t!==2&&(I[s]=l,I[f]=w);let x=0;for(let B=0;B<i;B++)x+=I[B]*d[B];let S=0;for(let B=0;B<i;B++)S+=h[B]*p[B];if(m){const B=y,g=b;g[x]=B[S]}else{const B=y,g=b;g[x]=B[S]}for(let B=i-1;B>=0&&(h[B]++,!(h[B]<o[B]));B--)h[B]=0}return C.fromData(b,a,e)}function Er(r,t,n){const o=r.shape,i=o.length,e=r.dtype,s=r.size;if(n===void 0){const d=Array.isArray(t)?t.reduce((l,w)=>l+w,0):t;if(r.isCContiguous){const l=H(r,d);if(l)return l}const p=L(r),h=U(e);if(!h)throw new Error(`Cannot roll array with dtype ${e}`);const I=new h(s),c=v(e);if(e==="float16"&&T&&p.isCContiguous){const l=new Float32Array(p.data.subarray(p.offset,p.offset+s)),w=new Float32Array(s);for(let x=0;x<s;x++){const S=((x-d)%s+s)%s;w[x]=l[S]}return I.set(w),C.fromData(I,[...o],e)}for(let l=0;l<s;l++){const w=((l-d)%s+s)%s,x=p.iget(w);I[l]=x}return C.fromData(I,[...o],e)}const f=Array.isArray(t)?t:[t],u=Array.isArray(n)?n:[n];if(f.length!==u.length)throw new Error("shift and axis must have the same length");const a=u.map(d=>{const p=d<0?i+d:d;if(p<0||p>=i)throw new Error(`axis ${d} is out of bounds for array of dimension ${i}`);return p}),A=U(e);if(!A)throw new Error(`Cannot roll array with dtype ${e}`);const b=new A(s),m=v(e),y=new Array(i).fill(0);if(e==="float16"&&T&&r.isCContiguous){const d=new Float32Array(r.data.subarray(r.offset,r.offset+s)),p=new Float32Array(s),h=r.strides;for(let I=0;I<s;I++){const c=[...y];for(let w=0;w<a.length;w++){const x=a[w],S=o[x],B=f[w];c[x]=((c[x]-B)%S+S)%S}let l=0;for(let w=0;w<i;w++)l+=c[w]*h[w];p[I]=d[l];for(let w=i-1;w>=0&&(y[w]++,!(y[w]<o[w]));w--)y[w]=0}return b.set(p),C.fromData(b,[...o],e)}for(let d=0;d<s;d++){const p=[...y];for(let c=0;c<a.length;c++){const l=a[c],w=o[l],x=f[c];p[l]=((p[l]-x)%w+w)%w}let h=r.offset;for(let c=0;c<i;c++)h+=p[c]*r.strides[c];const I=r.data[h];b[d]=I;for(let c=i-1;c>=0&&(y[c]++,!(y[c]<o[c]));c--)y[c]=0}return C.fromData(b,[...o],e)}function Cr(r,t,n=0){const o=r.ndim;let i=t<0?o+t:t;if(i<0||i>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);let e=n<0?o+n:n;if(e<0||e>o)throw new Error(`start ${n} is out of bounds`);return i<e&&e--,i===e?C.fromData(r.data,Array.from(r.shape),r.dtype,Array.from(r.strides),r.offset):X(r,i,e)}function zr(r,t){if(r.ndim<3)throw new Error("dsplit only works on arrays of 3 or more dimensions");return k(r,t,2)}function $r(r){if(r.length===0)throw new Error("need at least one array to stack");const t=r.map(n=>n.ndim===1?D(n,[n.shape[0],1]):n);return rr(t)}const Dr=Z;function Ur(r,t){const n=r.dtype,o=t.reduce((u,a)=>u*a,1),i=r.size,e=U(n);if(!e)throw new Error(`Cannot resize array with dtype ${n}`);const s=new e(o),f=v(n);for(let u=0;u<o;u++){const a=u%i,A=r.iget(a);s[u]=A}return C.fromData(s,t,n)}function Fr(r){return r.map(t=>t.ndim===0?D(t,[1]):t)}function Tr(r){return r.map(t=>t.ndim===0?D(t,[1,1]):t.ndim===1?D(t,[1,t.shape[0]]):t)}function Or(r){return r.map(t=>t.ndim===0?D(t,[1,1,1]):t.ndim===1?D(t,[1,t.shape[0],1]):t.ndim===2?D(t,[t.shape[0],t.shape[1],1]):t)}function vr(r,t=0){return O(r,t)}function Rr(r,t=0){const n=r.shape,o=n.length,i=t<0?o+t:t;if(i<0||i>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);const e=n[i],s=new Array(e),f=r.data,u=r.dtype,a=r.strides,A=r.offset,b=[],m=[];for(let d=0;d<o;d++)d!==i&&(b.push(n[d]),m.push(a[d]));const y=a[i];for(let d=0;d<e;d++)s[d]=C.fromData(f,b,u,m,A+d*y);return s}function kr(r,t=1){if(r.length===0)throw new Error("need at least one array to block");return r.length===1?r[0].copy():O(r,-1)}export{k as arraySplit,Fr as atleast1d,Tr as atleast2d,Or as atleast3d,kr as block,$r as columnStack,vr as concat,O as concatenate,zr as dsplit,hr as dstack,R as expandDims,L as flatten,xr as flip,Sr as hsplit,rr as hstack,X as moveaxis,yr as ravel,Br as repeat,D as reshape,Ur as resize,Er as roll,Cr as rollaxis,Ir as rot90,Dr as rowStack,lr as slice,dr as sliceKeepDim,wr as split,pr as squeeze,Ar as stack,mr as swapaxes,gr as tile,W as transpose,Rr as unstack,br as vsplit,Z as vstack};
|