numpy-ts 1.2.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -11
- package/dist/esm/common/dtype.js +1 -1
- 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/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/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 -1
- package/dist/esm/common/wasm/add.js +1 -1
- package/dist/esm/common/wasm/all_finite.js +1 -0
- package/dist/esm/common/wasm/arccos.js +1 -1
- package/dist/esm/common/wasm/arcsin.js +1 -1
- package/dist/esm/common/wasm/arctan.js +1 -1
- package/dist/esm/common/wasm/arctan2.js +1 -0
- package/dist/esm/common/wasm/argpartition.js +1 -1
- package/dist/esm/common/wasm/argsort.js +1 -1
- package/dist/esm/common/wasm/bins/abs.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/add.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/all_finite.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/alloc.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/arccos.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/arcsin.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/arctan.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/arctan2.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/argpartition.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/argsort.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/bitwise_and.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/bitwise_count.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/bitwise_not.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/bitwise_or.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/bitwise_xor.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/cholesky.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/clip.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/convolve.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/copysign.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/correlate.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/cos.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/cosh.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/cross.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/diff.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/divide.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/divmod.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/dot_float-relaxed.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/dot_float.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/dot_int.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/exp.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/exp2.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/fft.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/frexp.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/gather.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/gcd.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/gradient.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/heaviside.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/hypot.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/indices.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/inner_float-relaxed.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/inner_float.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/inner_int.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/isfinite.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/isnan.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/kron.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/ldexp.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/left_shift.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/lexsort.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/logaddexp.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/logical_and.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/logical_not.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/logical_or.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/logical_xor.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/lu.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/matmul_float-relaxed.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/matmul_float.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/matmul_int.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/matvec_float-relaxed.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/matvec_float.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/matvec_int.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/max.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/min.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/mul.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/neg.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/outer.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/pad.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/partition.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/power.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/qr.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/reciprocal.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/reduce_all.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/reduce_any.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/reduce_argmax.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/reduce_argmin.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/reduce_count_nz.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/reduce_max.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/reduce_mean.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/reduce_min.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/reduce_nanmax.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/reduce_nanmin.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/reduce_nansum.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/reduce_prod.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/reduce_std.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/reduce_sum.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/reduce_var.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/repeat.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/right_shift.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/rng.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/roll.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/searchsorted.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/sign.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/signbit.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/sin.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/sinh.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/sort.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/sqrt.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/square.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/sub.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/svd.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/tan.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/tanh.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/tile.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/unravel_index.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/vdot.wasm.js +1 -1
- package/dist/esm/common/wasm/bins/vecdot_float-relaxed.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/vecdot_float.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/vecdot_int.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/vecmat_float-relaxed.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/vecmat_float.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/vecmat_int.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/vector_norm-relaxed.wasm.js +1 -0
- package/dist/esm/common/wasm/bins/vector_norm.wasm.js +1 -0
- package/dist/esm/common/wasm/bitwise_and.js +1 -1
- package/dist/esm/common/wasm/bitwise_count.js +1 -1
- package/dist/esm/common/wasm/bitwise_not.js +1 -1
- package/dist/esm/common/wasm/bitwise_or.js +1 -1
- package/dist/esm/common/wasm/bitwise_xor.js +1 -1
- package/dist/esm/common/wasm/cholesky.js +1 -1
- package/dist/esm/common/wasm/clip.js +1 -1
- package/dist/esm/common/wasm/config.js +1 -1
- package/dist/esm/common/wasm/convolve.js +1 -1
- package/dist/esm/common/wasm/copysign.js +1 -1
- package/dist/esm/common/wasm/correlate.js +1 -1
- package/dist/esm/common/wasm/cos.js +1 -1
- package/dist/esm/common/wasm/cosh.js +1 -1
- package/dist/esm/common/wasm/cross.js +1 -1
- package/dist/esm/common/wasm/detect.js +1 -0
- package/dist/esm/common/wasm/diff.js +1 -1
- package/dist/esm/common/wasm/divide.js +1 -1
- package/dist/esm/common/wasm/divmod.js +1 -0
- package/dist/esm/common/wasm/dot.js +1 -1
- package/dist/esm/common/wasm/exp.js +1 -1
- package/dist/esm/common/wasm/exp2.js +1 -1
- package/dist/esm/common/wasm/fft.js +1 -1
- package/dist/esm/common/wasm/frexp.js +1 -1
- package/dist/esm/common/wasm/gather.js +1 -1
- package/dist/esm/common/wasm/gcd.js +1 -1
- package/dist/esm/common/wasm/gradient.js +1 -1
- package/dist/esm/common/wasm/heaviside.js +1 -1
- package/dist/esm/common/wasm/hypot.js +1 -1
- package/dist/esm/common/wasm/indices.js +1 -1
- package/dist/esm/common/wasm/inner.js +1 -1
- package/dist/esm/common/wasm/isfinite.js +1 -0
- package/dist/esm/common/wasm/isnan.js +1 -0
- package/dist/esm/common/wasm/kron.js +1 -1
- package/dist/esm/common/wasm/ldexp.js +1 -1
- package/dist/esm/common/wasm/left_shift.js +1 -1
- package/dist/esm/common/wasm/lexsort.js +1 -1
- package/dist/esm/common/wasm/logaddexp.js +1 -1
- package/dist/esm/common/wasm/logical_and.js +1 -1
- package/dist/esm/common/wasm/logical_not.js +1 -1
- package/dist/esm/common/wasm/logical_or.js +1 -1
- package/dist/esm/common/wasm/logical_xor.js +1 -1
- package/dist/esm/common/wasm/lu.js +1 -0
- package/dist/esm/common/wasm/matmul.js +1 -1
- package/dist/esm/common/wasm/matvec.js +1 -1
- package/dist/esm/common/wasm/max.js +1 -1
- package/dist/esm/common/wasm/min.js +1 -1
- package/dist/esm/common/wasm/mul.js +1 -1
- package/dist/esm/common/wasm/neg.js +1 -1
- package/dist/esm/common/wasm/outer.js +1 -1
- package/dist/esm/common/wasm/pad.js +1 -1
- package/dist/esm/common/wasm/partition.js +1 -1
- package/dist/esm/common/wasm/power.js +1 -1
- package/dist/esm/common/wasm/qr.js +1 -1
- package/dist/esm/common/wasm/reciprocal.js +1 -1
- package/dist/esm/common/wasm/reduce_all.js +1 -1
- package/dist/esm/common/wasm/reduce_any.js +1 -1
- package/dist/esm/common/wasm/reduce_argmax.js +1 -1
- package/dist/esm/common/wasm/reduce_argmin.js +1 -1
- package/dist/esm/common/wasm/reduce_count_nz.js +1 -1
- package/dist/esm/common/wasm/reduce_max.js +1 -1
- package/dist/esm/common/wasm/reduce_mean.js +1 -1
- package/dist/esm/common/wasm/reduce_min.js +1 -1
- package/dist/esm/common/wasm/reduce_nanmax.js +1 -1
- package/dist/esm/common/wasm/reduce_nanmin.js +1 -1
- package/dist/esm/common/wasm/reduce_nansum.js +1 -1
- package/dist/esm/common/wasm/reduce_prod.js +1 -1
- package/dist/esm/common/wasm/reduce_quantile.js +1 -1
- package/dist/esm/common/wasm/reduce_std.js +1 -1
- package/dist/esm/common/wasm/reduce_sum.js +1 -1
- package/dist/esm/common/wasm/reduce_var.js +1 -1
- package/dist/esm/common/wasm/repeat.js +1 -1
- package/dist/esm/common/wasm/right_shift.js +1 -1
- package/dist/esm/common/wasm/rng.js +1 -1
- package/dist/esm/common/wasm/roll.js +1 -1
- package/dist/esm/common/wasm/runtime.js +1 -1
- package/dist/esm/common/wasm/searchsorted.js +1 -1
- package/dist/esm/common/wasm/sign.js +1 -1
- package/dist/esm/common/wasm/signbit.js +1 -0
- package/dist/esm/common/wasm/sin.js +1 -0
- package/dist/esm/common/wasm/sinh.js +1 -1
- package/dist/esm/common/wasm/sort.js +1 -1
- package/dist/esm/common/wasm/sqrt.js +1 -1
- package/dist/esm/common/wasm/square.js +1 -1
- package/dist/esm/common/wasm/sub.js +1 -1
- package/dist/esm/common/wasm/svd.js +1 -1
- package/dist/esm/common/wasm/tan.js +1 -1
- package/dist/esm/common/wasm/tanh.js +1 -1
- package/dist/esm/common/wasm/tile.js +1 -1
- package/dist/esm/common/wasm/unravel_index.js +1 -0
- package/dist/esm/common/wasm/vdot.js +1 -1
- package/dist/esm/common/wasm/vecdot.js +1 -1
- package/dist/esm/common/wasm/vecmat.js +1 -1
- package/dist/esm/common/wasm/vector_norm.js +1 -0
- package/dist/esm/core/advanced.js +1 -1
- package/dist/esm/core/creation.js +1 -1
- package/dist/esm/core/index.js +1 -1
- package/dist/esm/core/linalg.js +1 -1
- package/dist/esm/core/polynomial.js +1 -1
- package/dist/esm/core/reduction.js +1 -1
- package/dist/esm/core/shape-extra.js +1 -1
- package/dist/esm/core/statistics.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/npy/parser.js +1 -1
- package/dist/esm/io/zip/reader.js +1 -1
- package/dist/numpy-ts.browser.js +6 -6
- package/dist/types/common/dtype.d.ts +46 -0
- package/dist/types/common/internal/indexing.d.ts +9 -0
- package/dist/types/common/ndarray-core.d.ts +20 -0
- package/dist/types/common/ops/advanced.d.ts +17 -2
- package/dist/types/common/ops/complex.d.ts +19 -1
- package/dist/types/common/ops/linalg.d.ts +1 -1
- package/dist/types/common/ops/reduction.d.ts +2 -2
- package/dist/types/common/ops/sets.d.ts +2 -1
- package/dist/types/common/ops/shape.d.ts +2 -2
- package/dist/types/common/ops/statistics.d.ts +2 -1
- package/dist/types/common/storage.d.ts +54 -2
- package/dist/types/common/wasm/all_finite.d.ts +8 -0
- package/dist/types/common/wasm/arccos.d.ts +4 -2
- package/dist/types/common/wasm/arcsin.d.ts +4 -2
- package/dist/types/common/wasm/arctan.d.ts +4 -2
- package/dist/types/common/wasm/arctan2.d.ts +17 -0
- package/dist/types/common/wasm/argpartition.d.ts +8 -3
- package/dist/types/common/wasm/argsort.d.ts +8 -3
- package/dist/types/common/wasm/bins/abs.wasm.d.ts +1 -0
- package/dist/types/common/wasm/bins/all_finite.wasm.d.ts +4 -0
- package/dist/types/common/wasm/bins/alloc.wasm.d.ts +6 -0
- package/dist/types/common/wasm/bins/arccos.wasm.d.ts +8 -2
- package/dist/types/common/wasm/bins/arcsin.wasm.d.ts +8 -2
- package/dist/types/common/wasm/bins/arctan.wasm.d.ts +8 -2
- package/dist/types/common/wasm/bins/arctan2.wasm.d.ts +11 -0
- package/dist/types/common/wasm/bins/convolve.wasm.d.ts +6 -0
- package/dist/types/common/wasm/bins/copysign.wasm.d.ts +2 -0
- package/dist/types/common/wasm/bins/correlate.wasm.d.ts +6 -0
- package/dist/types/common/wasm/bins/cos.wasm.d.ts +8 -0
- package/dist/types/common/wasm/bins/cosh.wasm.d.ts +8 -2
- package/dist/types/common/wasm/bins/divmod.wasm.d.ts +11 -0
- package/dist/types/common/wasm/bins/dot_float-relaxed.wasm.d.ts +5 -0
- package/dist/types/common/wasm/bins/dot_float.wasm.d.ts +5 -0
- package/dist/types/common/wasm/bins/dot_int.wasm.d.ts +5 -0
- package/dist/types/common/wasm/bins/exp.wasm.d.ts +8 -2
- package/dist/types/common/wasm/bins/exp2.wasm.d.ts +8 -2
- package/dist/types/common/wasm/bins/fft.wasm.d.ts +6 -0
- package/dist/types/common/wasm/bins/frexp.wasm.d.ts +1 -0
- package/dist/types/common/wasm/bins/gather.wasm.d.ts +0 -1
- package/dist/types/common/wasm/bins/gcd.wasm.d.ts +8 -0
- package/dist/types/common/wasm/bins/indices.wasm.d.ts +6 -2
- package/dist/types/common/wasm/bins/inner_float-relaxed.wasm.d.ts +5 -0
- package/dist/types/common/wasm/bins/inner_float.wasm.d.ts +5 -0
- package/dist/types/common/wasm/bins/inner_int.wasm.d.ts +5 -0
- package/dist/types/common/wasm/bins/isfinite.wasm.d.ts +4 -0
- package/dist/types/common/wasm/bins/isnan.wasm.d.ts +4 -0
- package/dist/types/common/wasm/bins/lexsort.wasm.d.ts +4 -4
- package/dist/types/common/wasm/bins/logical_and.wasm.d.ts +2 -0
- package/dist/types/common/wasm/bins/logical_not.wasm.d.ts +1 -0
- package/dist/types/common/wasm/bins/logical_or.wasm.d.ts +2 -0
- package/dist/types/common/wasm/bins/logical_xor.wasm.d.ts +2 -0
- package/dist/types/common/wasm/bins/lu.wasm.d.ts +7 -0
- package/dist/types/common/wasm/bins/matmul_float-relaxed.wasm.d.ts +5 -0
- package/dist/types/common/wasm/bins/matmul_float.wasm.d.ts +5 -0
- package/dist/types/common/wasm/bins/matmul_int.wasm.d.ts +5 -0
- package/dist/types/common/wasm/bins/matvec_float-relaxed.wasm.d.ts +5 -0
- package/dist/types/common/wasm/bins/matvec_float.wasm.d.ts +5 -0
- package/dist/types/common/wasm/bins/matvec_int.wasm.d.ts +5 -0
- package/dist/types/common/wasm/bins/neg.wasm.d.ts +1 -0
- package/dist/types/common/wasm/bins/qr.wasm.d.ts +0 -1
- package/dist/types/common/wasm/bins/reciprocal.wasm.d.ts +8 -4
- package/dist/types/common/wasm/bins/reduce_argmax.wasm.d.ts +8 -0
- package/dist/types/common/wasm/bins/reduce_argmin.wasm.d.ts +8 -0
- package/dist/types/common/wasm/bins/reduce_max.wasm.d.ts +1 -0
- package/dist/types/common/wasm/bins/reduce_min.wasm.d.ts +1 -0
- package/dist/types/common/wasm/bins/reduce_prod.wasm.d.ts +2 -0
- package/dist/types/common/wasm/bins/reduce_sum.wasm.d.ts +8 -2
- package/dist/types/common/wasm/bins/rng.wasm.d.ts +0 -3
- package/dist/types/common/wasm/bins/sign.wasm.d.ts +1 -0
- package/dist/types/common/wasm/bins/signbit.wasm.d.ts +8 -0
- package/dist/types/common/wasm/bins/sin.wasm.d.ts +11 -0
- package/dist/types/common/wasm/bins/sinh.wasm.d.ts +8 -2
- package/dist/types/common/wasm/bins/sort.wasm.d.ts +4 -4
- package/dist/types/common/wasm/bins/sqrt.wasm.d.ts +2 -2
- package/dist/types/common/wasm/bins/svd.wasm.d.ts +1 -0
- package/dist/types/common/wasm/bins/tan.wasm.d.ts +8 -0
- package/dist/types/common/wasm/bins/tanh.wasm.d.ts +8 -2
- package/dist/types/common/wasm/bins/unravel_index.wasm.d.ts +4 -0
- package/dist/types/common/wasm/bins/vecdot_float-relaxed.wasm.d.ts +5 -0
- package/dist/types/common/wasm/bins/vecdot_float.wasm.d.ts +5 -0
- package/dist/types/common/wasm/bins/vecdot_int.wasm.d.ts +5 -0
- package/dist/types/common/wasm/bins/vecmat_float-relaxed.wasm.d.ts +5 -0
- package/dist/types/common/wasm/bins/vecmat_float.wasm.d.ts +5 -0
- package/dist/types/common/wasm/bins/vecmat_int.wasm.d.ts +5 -0
- package/dist/types/common/wasm/bins/vector_norm-relaxed.wasm.d.ts +3 -0
- package/dist/types/common/wasm/bins/vector_norm.wasm.d.ts +3 -0
- package/dist/types/common/wasm/config.d.ts +25 -0
- package/dist/types/common/wasm/convolve.d.ts +1 -1
- package/dist/types/common/wasm/cos.d.ts +4 -2
- package/dist/types/common/wasm/cosh.d.ts +4 -2
- package/dist/types/common/wasm/detect.d.ts +17 -0
- package/dist/types/common/wasm/divide.d.ts +4 -0
- package/dist/types/common/wasm/divmod.d.ts +13 -0
- package/dist/types/common/wasm/exp.d.ts +4 -2
- package/dist/types/common/wasm/exp2.d.ts +4 -2
- package/dist/types/common/wasm/fft.d.ts +5 -5
- package/dist/types/common/wasm/frexp.d.ts +1 -0
- package/dist/types/common/wasm/gather.d.ts +4 -0
- package/dist/types/common/wasm/gcd.d.ts +1 -0
- package/dist/types/common/wasm/hypot.d.ts +4 -2
- package/dist/types/common/wasm/indices.d.ts +2 -1
- package/dist/types/common/wasm/isfinite.d.ts +7 -0
- package/dist/types/common/wasm/isnan.d.ts +7 -0
- package/dist/types/common/wasm/lexsort.d.ts +3 -1
- package/dist/types/common/wasm/logaddexp.d.ts +4 -2
- package/dist/types/common/wasm/lu.d.ts +27 -0
- package/dist/types/common/wasm/partition.d.ts +3 -1
- package/dist/types/common/wasm/reduce_argmax.d.ts +5 -0
- package/dist/types/common/wasm/reduce_argmin.d.ts +5 -0
- package/dist/types/common/wasm/reduce_prod.d.ts +4 -0
- package/dist/types/common/wasm/reduce_quantile.d.ts +11 -3
- package/dist/types/common/wasm/reduce_sum.d.ts +10 -0
- package/dist/types/common/wasm/rng.d.ts +10 -0
- package/dist/types/common/wasm/runtime.d.ts +113 -30
- package/dist/types/common/wasm/searchsorted.d.ts +3 -1
- package/dist/types/common/wasm/signbit.d.ts +14 -0
- package/dist/types/common/wasm/sin.d.ts +17 -0
- package/dist/types/common/wasm/sinh.d.ts +4 -2
- package/dist/types/common/wasm/sort.d.ts +4 -1
- package/dist/types/common/wasm/sqrt.d.ts +4 -2
- package/dist/types/common/wasm/svd.d.ts +6 -0
- package/dist/types/common/wasm/tan.d.ts +4 -2
- package/dist/types/common/wasm/tanh.d.ts +4 -2
- package/dist/types/common/wasm/unravel_index.d.ts +12 -0
- package/dist/types/common/wasm/vector_norm.d.ts +11 -0
- package/dist/types/core/advanced.d.ts +10 -2
- package/dist/types/core/creation.d.ts +1 -1
- package/dist/types/core/index.d.ts +2 -1
- package/dist/types/core/linalg.d.ts +1 -1
- package/dist/types/core/sets.d.ts +4 -1
- package/dist/types/core/statistics.d.ts +2 -1
- package/dist/types/full/index.d.ts +18 -5
- package/dist/types/index.d.ts +3 -1
- package/package.json +36 -43
- package/dist/esm/common/wasm/bins/dot.wasm.js +0 -1
- package/dist/esm/common/wasm/bins/flip.wasm.js +0 -1
- package/dist/esm/common/wasm/bins/inner.wasm.js +0 -1
- package/dist/esm/common/wasm/bins/matmul.wasm.js +0 -1
- package/dist/esm/common/wasm/bins/matvec.wasm.js +0 -1
- package/dist/esm/common/wasm/bins/reduce_quantile.wasm.js +0 -1
- package/dist/esm/common/wasm/bins/rot90.wasm.js +0 -1
- package/dist/esm/common/wasm/bins/vecdot.wasm.js +0 -1
- package/dist/esm/common/wasm/bins/vecmat.wasm.js +0 -1
- package/dist/esm/common/wasm/flip.js +0 -1
- package/dist/esm/common/wasm/rot90.js +0 -1
- package/dist/types/common/wasm/bins/dot.wasm.d.ts +0 -9
- package/dist/types/common/wasm/bins/flip.wasm.d.ts +0 -7
- package/dist/types/common/wasm/bins/inner.wasm.d.ts +0 -9
- package/dist/types/common/wasm/bins/matmul.wasm.d.ts +0 -9
- package/dist/types/common/wasm/bins/matvec.wasm.d.ts +0 -9
- package/dist/types/common/wasm/bins/reduce_quantile.wasm.d.ts +0 -2
- package/dist/types/common/wasm/bins/rot90.wasm.d.ts +0 -7
- package/dist/types/common/wasm/bins/vecdot.wasm.d.ts +0 -9
- package/dist/types/common/wasm/bins/vecmat.wasm.d.ts +0 -9
- package/dist/types/common/wasm/flip.d.ts +0 -13
- package/dist/types/common/wasm/rot90.d.ts +0 -14
|
@@ -1 +1 @@
|
|
|
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};
|
|
1
|
+
import{ArrayStorage as I,computeStrides as R}from"../storage.js";import{getTypedArrayConstructor as L,isBigIntDType as v,isComplexDType as U,hasFloat16 as k}from"../dtype.js";import{wasmTile2D as q}from"../wasm/tile.js";import{wasmRoll as H}from"../wasm/roll.js";import{wasmRepeat as Q}from"../wasm/repeat.js";import{parseSlice as N,normalizeSlice as _}from"../slicing.js";import{expandEllipsis as j}from"../internal/indexing.js";function ur(r,...t){if(t.length===0)return r;t=j(t,r.ndim);const n=[],o=[];let u=r.offset,a=0;for(let f=0;f<t.length;f++){const s=t[f];if(typeof s=="number"){const i=s,e=r.shape[a],l=i<0?e+i:i;if(l<0||l>=e)throw new Error(`Index ${i} is out of bounds for size ${e}`);const d=r.strides[a];a++,u+=l*d;continue}else if(s==="newaxis")n.push(1),o.push(0);else{const i=N(s),e=_(i,r.shape[a]),l=r.strides[a];if(a++,u+=e.start*l,e.isIndex)continue;const d=Math.max(0,Math.ceil((e.stop-e.start)/e.step));n.push(d),o.push(l*e.step)}}return I.fromDataShared(r.data,n,r.dtype,o,u,r.wasmRegion)}function cr(r,...t){if(t.length===0)return r;t=j(t,r.ndim);const n=[],o=[];let u=r.offset,a=0;for(let f=0;f<t.length;f++){const s=t[f];if(typeof s=="number"){const i=r.strides[a];a++,u+=s*i,n.push(1),o.push(i)}else if(s==="newaxis")n.push(1),o.push(0);else{const i=N(s),e=_(i,r.shape[a]),l=r.strides[a];a++,u+=e.start*l;const d=e.isIndex?1:Math.max(0,Math.ceil((e.stop-e.start)/e.step));n.push(d),o.push(l*e.step)}}return I.fromDataShared(r.data,n,r.dtype,o,u,r.wasmRegion)}function C(r,t){const n=r.size,o=r.dtype,u=t.indexOf(-1);let a;if(u!==-1){const d=t.reduce((S,h,A)=>A===u?S:S*h,1),y=n/d;if(!Number.isInteger(y))throw new Error(`cannot reshape array of size ${n} into shape ${JSON.stringify(t)}`);a=t.map((S,h)=>h===u?y:S)}else a=t;if(a.reduce((d,y)=>d*y,1)!==n)throw new Error(`cannot reshape array of size ${n} into shape ${JSON.stringify(a)}`);if(r.isCContiguous){const d=r.data;return I.fromDataShared(d,a,o,R(a),0,r.wasmRegion)}const s=U(o),i=I.empty(a,o),e=i.data,l=v(o);if(s)for(let d=0;d<n;d++){const y=r.iget(d);e[d*2]=y.re,e[d*2+1]=y.im}else if(l)for(let d=0;d<n;d++)e[d]=r.iget(d);else for(let d=0;d<n;d++)e[d]=r.iget(d);return i}function J(r){const t=r.size,n=r.dtype;if(!L(n))throw new Error(`Cannot flatten array with dtype ${n}`);const u=U(n),a=u?t*2:t;if(r.isCContiguous){const e=r.data,l=u?r.offset*2:r.offset,d=I.empty([t],n);return d.data.set(e.subarray(l,l+a)),d}const f=I.empty([t],n),s=f.data,i=v(n);if(u)for(let e=0;e<t;e++){const l=r.iget(e);s[e*2]=l.re,s[e*2+1]=l.im}else for(let e=0;e<t;e++){const l=r.iget(e);s[e]=l}return f}function lr(r){const t=r.size,n=r.dtype;if(r.isCContiguous){const o=r.data;return I.fromDataShared(o,[t],n,[1],0,r.wasmRegion)}return J(r)}function V(r,t){const n=r.shape,o=n.length,u=r.strides,a=r.data,f=r.dtype;let s;if(t===void 0)s=Array.from({length:o},(d,y)=>o-1-y);else{if(t.length!==o)throw new Error(`axes must have length ${o}, got ${t.length}`);const d=new Set;for(const y of t){const S=y<0?o+y:y;if(S<0||S>=o)throw new Error(`axis ${y} is out of bounds for array of dimension ${o}`);if(d.has(S))throw new Error("repeated axis in transpose");d.add(S)}s=t.map(y=>y<0?o+y:y)}const i=s.map(d=>n[d]),e=Array.from(u),l=s.map(d=>e[d]);return I.fromDataShared(a,i,f,l,r.offset,r.wasmRegion)}function dr(r,t){const n=r.shape,o=n.length,u=r.strides,a=r.data,f=r.dtype;if(t===void 0){const s=[],i=[];for(let e=0;e<o;e++)n[e]!==1&&(s.push(n[e]),i.push(u[e]));return I.fromDataShared(a,s,f,i,r.offset,r.wasmRegion)}else{const s=t<0?o+t:t;if(s<0||s>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);if(n[s]!==1)throw new Error(`cannot select an axis which has size not equal to one (axis ${t} has size ${n[s]})`);const i=[],e=[];for(let l=0;l<o;l++)l!==s&&(i.push(n[l]),e.push(u[l]));return I.fromDataShared(a,i,f,e,r.offset,r.wasmRegion)}}function T(r,t){const n=r.shape,o=n.length,u=r.strides,a=r.data,f=r.dtype;let s=t;if(s<0&&(s=o+t+1),s<0||s>o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o+1}`);const i=[...Array.from(n)];i.splice(s,0,1);const e=[...Array.from(u)],l=s<o?u[s]*(n[s]||1):1;return e.splice(s,0,l),I.fromDataShared(a,i,f,e,r.offset,r.wasmRegion)}function yr(r,t,n){const o=r.shape,u=o.length,a=r.strides,f=r.data,s=r.dtype;let i=t<0?u+t:t,e=n<0?u+n:n;if(i<0||i>=u)throw new Error(`axis1 ${t} is out of bounds for array of dimension ${u}`);if(e<0||e>=u)throw new Error(`axis2 ${n} is out of bounds for array of dimension ${u}`);if(i===e)return I.fromDataShared(f,Array.from(o),s,Array.from(a),r.offset,r.wasmRegion);const l=Array.from(o),d=Array.from(a);return[l[i],l[e]]=[l[e],l[i]],[d[i],d[e]]=[d[e],d[i]],I.fromDataShared(f,l,s,d,r.offset,r.wasmRegion)}function W(r,t,n){const o=r.ndim,u=Array.isArray(t)?t:[t],a=Array.isArray(n)?n:[n];if(u.length!==a.length)throw new Error("source and destination must have the same number of elements");const f=u.map(e=>{const l=e<0?o+e:e;if(l<0||l>=o)throw new Error(`source axis ${e} is out of bounds for array of dimension ${o}`);return l}),s=a.map(e=>{const l=e<0?o+e:e;if(l<0||l>=o)throw new Error(`destination axis ${e} is out of bounds for array of dimension ${o}`);return l});if(new Set(f).size!==f.length)throw new Error("repeated axis in source");if(new Set(s).size!==s.length)throw new Error("repeated axis in destination");const i=[];for(let e=0;e<o;e++)f.includes(e)||i.push(e);for(let e=0;e<f.length;e++){const l=s[e];i.splice(l,0,f[e])}return V(r,i)}function D(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,u=n.dtype,a=t<0?o+t:t;if(a<0||a>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);for(let y=1;y<r.length;y++){const S=r[y];if(S.ndim!==o)throw new Error("all the input arrays must have same number of dimensions");for(let h=0;h<o;h++)if(h!==a&&S.shape[h]!==n.shape[h])throw new Error("all the input array dimensions except for the concatenation axis must match exactly")}const f=Array.from(n.shape);let s=n.shape[a];for(let y=1;y<r.length;y++)s+=r[y].shape[a];f[a]=s;const i=I.empty(f,u),e=i.data,l=R(f);let d=0;for(const y of r){const S=y.shape[a];X(y,e,f,l,a,d,u),d+=S}return i}function X(r,t,n,o,u,a,f){const s=r.shape,i=s.length,e=r.size,l=f==="int64"||f==="uint64",d=f==="complex128"||f==="complex64",y=d?2:1;if(u===0&&r.isCContiguous&&i>0){const A=a*o[0]*y,x=r.data,g=r.offset*y,c=g+e*y;t.set(x.subarray(g,c),A);return}if(u===1&&i===2&&r.isCContiguous){const A=s[0],x=s[1],g=n[1],c=r.data,b=r.offset*y;for(let w=0;w<A;w++){const m=b+w*x*y,p=(w*g+a)*y;t.set(c.subarray(m,m+x*y),p)}return}if(f==="float16"&&k&&r.isCContiguous){const A=new Float32Array(r.data.subarray(r.offset,r.offset+e)),x=new Array(i).fill(0),g=a*o[u];for(let c=0;c<e;c++){let b=g;for(let w=0;w<i;w++)b+=x[w]*o[w];t[b]=A[c];for(let w=i-1;w>=0&&(x[w]++,!(x[w]<s[w]));w--)x[w]=0}return}const S=new Array(i).fill(0),h=a*o[u];for(let A=0;A<e;A++){const x=r.iget(A);let g=h;for(let c=0;c<i;c++)g+=S[c]*o[c];if(d){const c=x;t[g*2]=c.re,t[g*2+1]=c.im}else t[g]=x;for(let c=i-1;c>=0&&(S[c]++,!(S[c]<s[c]));c--)S[c]=0}}function mr(r,t=0){if(r.length===0)throw new Error("need at least one array to stack");const n=r[0],o=n.shape,u=n.ndim,a=t<0?u+1+t:t;if(a<0||a>u)throw new Error(`axis ${t} is out of bounds for array of dimension ${u+1}`);for(let i=1;i<r.length;i++){const e=r[i];if(e.ndim!==u)throw new Error("all input arrays must have the same shape");for(let l=0;l<u;l++)if(e.shape[l]!==o[l])throw new Error("all input arrays must have the same shape")}const f=r.map(i=>T(i,a)),s=D(f,a);for(const i of f)i.dispose();return s}function Y(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 D(t,0)}function Z(r){if(r.length===0)throw new Error("need at least one array to stack");return r.every(n=>n.ndim===1)?D(r,0):D(r,1)}function pr(r){if(r.length===0)throw new Error("need at least one array to stack");const t=r.map(n=>n.ndim===1?C(T(C(n,[1,n.shape[0]]),2),[1,n.shape[0],1]):n.ndim===2?T(n,2):n);return D(t,2)}function hr(r,t,n=0){const o=r.shape,u=o.length,a=n<0?u+n:n;if(a<0||a>=u)throw new Error(`axis ${n} is out of bounds for array of dimension ${u}`);const f=o[a];let s;if(typeof t=="number"){if(f%t!==0)throw new Error("array split does not result in an equal division");const i=f/t;s=[];for(let e=1;e<t;e++)s.push(e*i)}else s=t;return K(r,s,a)}function O(r,t,n=0){const o=r.shape,u=o.length,a=n<0?u+n:n;if(a<0||a>=u)throw new Error(`axis ${n} is out of bounds for array of dimension ${u}`);const f=o[a];let s;if(typeof t=="number"){const i=t,e=Math.floor(f/i),l=f%i;s=[];let d=0;for(let y=0;y<i-1;y++)d+=e+(y<l?1:0),s.push(d)}else s=t;return K(r,s,a)}function K(r,t,n){const o=r.shape,u=o[n],a=[0,...t,u],f=[];for(let s=0;s<a.length-1;s++){const i=a[s],e=a[s+1];if(i>e)throw new Error("split indices must be in ascending order");const l=Array.from(o);l[n]=e-i;const d=r.offset+i*r.strides[n];f.push(I.fromData(r.data,l,r.dtype,Array.from(r.strides),d))}return f}function Ar(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 wr(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 Sr(r,t){const n=r.shape,o=n.length,u=r.dtype,a=Array.isArray(t)?t:[t];if(o===2&&a.length===2&&r.isCContiguous){const c=q(r,a[0],a[1]);if(c)return c}if(o===1&&a.length===1&&r.isCContiguous){const c=q(r,1,a[0]);if(c)return I.fromData(c.data,[r.size*a[0]],r.dtype)}const f=Math.max(o,a.length),s=new Array(f).fill(1),i=new Array(f).fill(1);for(let c=0;c<o;c++)s[f-o+c]=n[c];for(let c=0;c<a.length;c++)i[f-a.length+c]=a[c];const e=s.map((c,b)=>c*i[b]),l=e.reduce((c,b)=>c*b,1),d=I.empty(e,u),y=d.data,S=R(e);let h=r;o<f&&(h=C(r,s));const A=u==="int64"||u==="uint64",x=h.strides;if(u==="float16"&&k&&h.isCContiguous){const c=h.size,b=new Float32Array(h.data.subarray(h.offset,h.offset+c)),w=new Float32Array(l),m=new Array(f).fill(0);for(let p=0;p<l;p++){let F=0;for(let z=0;z<f;z++){const E=m[z]%s[z];F+=E*x[z]}w[p]=b[F];for(let z=f-1;z>=0&&(m[z]++,!(m[z]<e[z]));z--)m[z]=0}return y.set(w),d}const g=new Array(f).fill(0);for(let c=0;c<l;c++){let b=h.offset;for(let p=0;p<f;p++){const F=g[p]%s[p];b+=F*x[p]}const w=h.data[b];let m=0;for(let p=0;p<f;p++)m+=g[p]*S[p];y[m]=w;for(let p=f-1;p>=0&&(g[p]++,!(g[p]<e[p]));p--)g[p]=0}return d}function br(r,t,n){const o=r.shape,u=o.length,a=r.dtype,f=r.size;if(n===void 0){if(typeof t=="number"&&r.isCContiguous){const z=Q(r,t);if(z)return z}const c=f,b=Array.isArray(t)?t:new Array(c).fill(t);if(b.length!==c)throw new Error(`operands could not be broadcast together with shape (${c},) (${b.length},)`);const w=b.reduce((z,E)=>z+E,0),m=I.empty([w],a),p=m.data;if(a==="float16"&&k&&r.isCContiguous){const z=new Float32Array(r.data.subarray(r.offset,r.offset+c)),E=new Float32Array(w);let B=0;for(let $=0;$<c;$++){const P=z[$],G=b[$];for(let M=0;M<G;M++)E[B++]=P}return p.set(E),m}let F=0;for(let z=0;z<c;z++){const E=r.iget(z),B=b[z];for(let $=0;$<B;$++)p[F++]=E}return m}const s=n<0?u+n:n;if(s<0||s>=u)throw new Error(`axis ${n} is out of bounds for array of dimension ${u}`);const i=o[s],e=Array.isArray(t)?t:new Array(i).fill(t);if(e.length!==i)throw new Error(`operands could not be broadcast together with shape (${i},) (${e.length},)`);const l=Array.from(o);l[s]=e.reduce((c,b)=>c+b,0);const d=I.empty(l,a),y=d.data,S=l.reduce((c,b)=>c*b,1),h=R(l),A=new Array(u).fill(0),x=a==="int64"||a==="uint64",g=[0];for(let c=0;c<i;c++)g.push(g[c]+e[c]);if(a==="float16"&&k&&r.isCContiguous){const c=new Float32Array(r.data.subarray(r.offset,r.offset+f)),b=new Float32Array(S);for(let w=0;w<f;w++){const m=c[w],p=A[s],F=e[p];let z=0;for(let $=0;$<u;$++)$!==s&&(z+=A[$]*h[$]);const E=h[s],B=g[p];for(let $=0;$<F;$++)b[z+(B+$)*E]=m;for(let $=u-1;$>=0&&(A[$]++,!(A[$]<o[$]));$--)A[$]=0}return y.set(b),d}for(let c=0;c<f;c++){const b=r.iget(c),w=A[s],m=e[w];let p=0;for(let E=0;E<u;E++)E!==s&&(p+=A[E]*h[E]);const F=h[s],z=g[w];for(let E=0;E<m;E++){const B=p+(z+E)*F;y[B]=b}for(let E=u-1;E>=0&&(A[E]++,!(A[E]<o[E]));E--)A[E]=0}return d}function xr(r,t){const n=r.shape,o=n.length,u=r.dtype;let a;if(t===void 0)a=new Set(Array.from({length:o},(i,e)=>e));else if(typeof t=="number"){const 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}`);a=new Set([i])}else a=new Set(t.map(i=>{const e=i<0?o+i:i;if(e<0||e>=o)throw new Error(`axis ${i} is out of bounds for array of dimension ${o}`);return e}));const f=Array.from(r.strides);let s=r.offset;for(const i of a)s+=(n[i]-1)*f[i],f[i]=-f[i];return I.fromDataShared(r.data,[...n],u,f,s,r.wasmRegion)}function gr(r,t=1,n=[0,1]){const o=r.shape,u=o.length,a=r.dtype;if(u<2)throw new Error("Input must be at least 2-D");const f=n[0]<0?u+n[0]:n[0],s=n[1]<0?u+n[1]:n[1];if(f<0||f>=u||s<0||s>=u)throw new Error(`Axes are out of bounds for array of dimension ${u}`);if(f===s)throw new Error("Axes must be different");if(t=(t%4+4)%4,t===0)return r.copy();const i=Array.from(r.strides),e=[...o],l=i[f],d=i[s],y=o[f],S=o[s];let h=r.offset;return t===1?(i[f]=-d,i[s]=l,h+=(S-1)*d,e[f]=S,e[s]=y):t===2?(i[f]=-l,i[s]=-d,h+=(y-1)*l+(S-1)*d):(i[f]=d,i[s]=-l,h+=(y-1)*l,e[f]=S,e[s]=y),I.fromDataShared(r.data,e,a,i,h,r.wasmRegion)}function zr(r,t,n){const o=r.shape,u=o.length,a=r.dtype,f=r.size;if(n===void 0){const A=Array.isArray(t)?t.reduce((m,p)=>m+p,0):t;if(r.isCContiguous){const m=H(r,A);if(m)return m}const x=J(r),g=I.empty([...o],a),c=g.data,b=v(a);if(a==="float16"&&k&&x.isCContiguous){const m=new Float32Array(x.data.subarray(x.offset,x.offset+f)),p=new Float32Array(f);for(let F=0;F<f;F++){const z=((F-A)%f+f)%f;p[F]=m[z]}return c.set(p),g}const w=U(a);for(let m=0;m<f;m++){const p=((m-A)%f+f)%f;if(w){const F=x.iget(p);c[m*2]=F.re,c[m*2+1]=F.im}else c[m]=x.iget(p)}return g}const s=Array.isArray(t)?t:[t],i=Array.isArray(n)?n:[n];if(s.length!==i.length)throw new Error("shift and axis must have the same length");const e=i.map(A=>{const x=A<0?u+A:A;if(x<0||x>=u)throw new Error(`axis ${A} is out of bounds for array of dimension ${u}`);return x}),l=I.empty([...o],a),d=l.data,y=v(a),S=new Array(u).fill(0);if(a==="float16"&&k&&r.isCContiguous){const A=new Float32Array(r.data.subarray(r.offset,r.offset+f)),x=new Float32Array(f),g=r.strides;for(let c=0;c<f;c++){const b=[...S];for(let m=0;m<e.length;m++){const p=e[m],F=o[p],z=s[m];b[p]=((b[p]-z)%F+F)%F}let w=0;for(let m=0;m<u;m++)w+=b[m]*g[m];x[c]=A[w];for(let m=u-1;m>=0&&(S[m]++,!(S[m]<o[m]));m--)S[m]=0}return d.set(x),l}const h=U(a);for(let A=0;A<f;A++){const x=[...S];for(let c=0;c<e.length;c++){const b=e[c],w=o[b],m=s[c];x[b]=((x[b]-m)%w+w)%w}let g=r.offset;for(let c=0;c<u;c++)g+=x[c]*r.strides[c];if(h){const c=g*2;d[A*2]=r.data[c],d[A*2+1]=r.data[c+1]}else d[A]=r.data[g];for(let c=u-1;c>=0&&(S[c]++,!(S[c]<o[c]));c--)S[c]=0}return l}function Er(r,t,n=0){const o=r.ndim;let u=t<0?o+t:t;if(u<0||u>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);let a=n<0?o+n:n;if(a<0||a>o)throw new Error(`start ${n} is out of bounds`);return u<a&&a--,u===a?I.fromData(r.data,Array.from(r.shape),r.dtype,Array.from(r.strides),r.offset):W(r,u,a)}function Ir(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 $r(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 Z(t)}const Fr=Y;function Cr(r,t){const n=r.dtype,o=t.reduce((e,l)=>e*l,1),u=r.size;if(!L(n))throw new Error(`Cannot resize array with dtype ${n}`);const f=I.empty(t,n),s=f.data,i=v(n);for(let e=0;e<o;e++){const l=e%u,d=r.iget(l);s[e]=d}return f}function Br(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 kr(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 vr(r,t=0){return D(r,t)}function Rr(r,t=0){const n=r.shape,o=n.length,u=t<0?o+t:t;if(u<0||u>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);const a=n[u],f=new Array(a),s=r.data,i=r.dtype,e=r.strides,l=r.offset,d=[],y=[];for(let h=0;h<o;h++)h!==u&&(d.push(n[h]),y.push(e[h]));const S=e[u];for(let h=0;h<a;h++)f[h]=I.fromData(s,d,i,y,l+h*S);return f}function Ur(r,t=1){if(r.length===0)throw new Error("need at least one array to block");return r.length===1?r[0].copy():D(r,-1)}export{O as arraySplit,Br as atleast1d,Dr as atleast2d,kr as atleast3d,Ur as block,$r as columnStack,vr as concat,D as concatenate,Ir as dsplit,pr as dstack,T as expandDims,J as flatten,xr as flip,wr as hsplit,Z as hstack,W as moveaxis,lr as ravel,br as repeat,C as reshape,Cr as resize,zr as roll,Er as rollaxis,gr as rot90,Fr as rowStack,ur as slice,cr as sliceKeepDim,hr as split,dr as squeeze,mr as stack,yr as swapaxes,Sr as tile,V as transpose,Rr as unstack,Ar as vsplit,Y as vstack};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{ArrayStorage as M}from"../storage.js";import{isBigIntDType as j,isComplexDType as $,hasFloat16 as Z}from"../dtype.js";import{computeStrides as P,precomputeAxisOffsets as _}from"../internal/indexing.js";import{wasmReduceCountNz as G}from"../wasm/reduce_count_nz.js";import{wasmSort as H,wasmSortSlices as J}from"../wasm/sort.js";import{wasmArgsort as Q,wasmArgsortSlices as k}from"../wasm/argsort.js";import{wasmPartition as tt,wasmPartitionSlices as et}from"../wasm/partition.js";import{wasmArgpartition as rt,wasmArgpartitionSlices as ot}from"../wasm/argpartition.js";import{wasmSearchsorted as st}from"../wasm/searchsorted.js";import{wasmLexsort as nt}from"../wasm/lexsort.js";import{wasmExtract as it,wasmWhere as at}from"../wasm/gather.js";function E(t,p,r){if(r){const i=t[p*2],x=t[p*2+1];return i!==0||x!==0}return!!t[p]}function q(t,p,r,i){const x=isNaN(t)||isNaN(p),h=isNaN(r)||isNaN(i);return x&&h?0:x?1:h||t<r?-1:t>r?1:p<i?-1:p>i?1:0}function Ft(t,p=-1){const r=t.shape,i=r.length,x=t.dtype,h=t.data,d=t.offset,I=t.strides;if(i===0)return t.copy();let u=p;if(u<0&&(u=i+u),u<0||u>=i)throw new Error(`axis ${p} is out of bounds for array of dimension ${i}`);const s=t.copy(),n=s.data,o=r[u],z=Array.from(r).filter((e,y)=>y!==u),b=z.length===0?1:z.reduce((e,y)=>e*y,1),{baseOffsets:c,axisStride:m}=_(r,I,d,u,b),f=P(r),{baseOffsets:l,axisStride:a}=_(r,f,0,u,b);if(i===1&&s.isCContiguous){const e=H(s);if(e)return e}if(a===1&&J(n,l,o,b,x))return s;if($(x)){const e=h,y=n;for(let A=0;A<b;A++){const S=[];let N=c[A];for(let C=0;C<o;C++)S.push({re:e[N*2],im:e[N*2+1],idx:C}),N+=m;S.sort((C,B)=>q(C.re,C.im,B.re,B.im));let v=l[A];for(let C=0;C<o;C++)y[v*2]=S[C].re,y[v*2+1]=S[C].im,v+=a}}else if(j(x)){const e=h,y=n;for(let A=0;A<b;A++){const S=[];let N=c[A];for(let C=0;C<o;C++)S.push({value:e[N],idx:C}),N+=m;S.sort((C,B)=>C.value<B.value?-1:C.value>B.value?1:0);let v=l[A];for(let C=0;C<o;C++)y[v]=S[C].value,v+=a}}else if(x==="float16"&&Z&&t.isCContiguous&&s.isCContiguous)for(let e=0;e<b;e++){const y=c[e],A=m===1?new Float32Array(h.subarray(y,y+o)):Float32Array.from({length:o},(N,v)=>Number(h[y+v*m]));A.sort((N,v)=>isNaN(N)&&isNaN(v)?0:isNaN(N)?1:isNaN(v)?-1:N-v);const S=l[e];if(a===1)n.subarray(S,S+o).set(A);else for(let N=0;N<o;N++)n[S+N*a]=A[N]}else for(let e=0;e<b;e++){const y=[];let A=c[e];for(let N=0;N<o;N++)y.push(Number(h[A])),A+=m;y.sort((N,v)=>isNaN(N)&&isNaN(v)?0:isNaN(N)?1:isNaN(v)?-1:N-v);let S=l[e];for(let N=0;N<o;N++)n[S]=y[N],S+=a}return s}function Dt(t,p=-1){const r=t.shape,i=r.length,x=t.dtype,h=t.data,d=t.offset,I=t.strides;if(i===0)return M.zeros([0],"int32");let u=p;if(u<0&&(u=i+u),u<0||u>=i)throw new Error(`axis ${p} is out of bounds for array of dimension ${i}`);const s=M.zeros(Array.from(r),"int32"),n=s.data,o=r[u],z=Array.from(r).filter((e,y)=>y!==u),b=z.length===0?1:z.reduce((e,y)=>e*y,1),{baseOffsets:c,axisStride:m}=_(r,I,d,u,b),f=P(r),{baseOffsets:l,axisStride:a}=_(r,f,0,u,b);if(i===1&&t.isCContiguous){const e=Q(t);if(e)return e}if(a===1&&m===1&&k(h,n,c,l,o,b,x))return s;if($(x)){const e=h;for(let y=0;y<b;y++){const A=[];let S=c[y];for(let v=0;v<o;v++)A.push({re:e[S*2],im:e[S*2+1],idx:v}),S+=m;A.sort((v,C)=>q(v.re,v.im,C.re,C.im));let N=l[y];for(let v=0;v<o;v++)n[N]=A[v].idx,N+=a}}else if(j(x)){const e=h;for(let y=0;y<b;y++){const A=[];let S=c[y];for(let v=0;v<o;v++)A.push({value:e[S],idx:v}),S+=m;A.sort((v,C)=>v.value<C.value?-1:v.value>C.value?1:0);let N=l[y];for(let v=0;v<o;v++)n[N]=A[v].idx,N+=a}}else if(x==="float16"&&Z&&t.isCContiguous)for(let e=0;e<b;e++){const y=c[e],A=m===1?new Float32Array(h.subarray(y,y+o)):Float32Array.from({length:o},(v,C)=>Number(h[y+C*m])),S=Array.from({length:o},(v,C)=>C);S.sort((v,C)=>{const B=A[v],L=A[C];return isNaN(B)&&isNaN(L)?0:isNaN(B)?1:isNaN(L)?-1:B-L});let N=l[e];for(let v=0;v<o;v++)n[N]=S[v],N+=a}else for(let e=0;e<b;e++){const y=[];let A=c[e];for(let N=0;N<o;N++)y.push({value:Number(h[A]),idx:N}),A+=m;y.sort((N,v)=>isNaN(N.value)&&isNaN(v.value)?0:isNaN(N.value)?1:isNaN(v.value)?-1:N.value-v.value);let S=l[e];for(let N=0;N<o;N++)n[S]=y[N].idx,S+=a}return s}function Bt(t){if(t.length===0)return M.zeros([0],"int32");const r=t[0].size;for(const o of t){if(o.ndim!==1)throw new Error("keys must be 1D arrays");if(o.size!==r)throw new Error("all keys must have the same length")}const i=nt(t);if(i)return i;const x=[];for(let o=0;o<r;o++)x.push(o);const h=t.map(o=>$(o.dtype)),d=t.map(o=>o.isCContiguous),I=t.map(o=>o.data),u=t.map(o=>o.offset);x.sort((o,z)=>{for(let b=t.length-1;b>=0;b--)if(h[b]){let c,m,f,l;if(d[b]){const a=I[b],e=u[b];c=a[(e+o)*2],m=a[(e+o)*2+1],f=a[(e+z)*2],l=a[(e+z)*2+1]}else{const a=t[b].iget(o),e=t[b].iget(z);c=a.re,m=a.im,f=e.re,l=e.im}if(c<f)return-1;if(c>f)return 1;if(m<l)return-1;if(m>l)return 1}else{let c,m;if(d[b]){const f=I[b],l=u[b];c=Number(f[l+o]),m=Number(f[l+z])}else c=Number(t[b].iget(o)),m=Number(t[b].iget(z));if(isNaN(c)&&isNaN(m))continue;if(isNaN(c))return 1;if(isNaN(m)||c<m)return-1;if(c>m)return 1}return 0});const s=M.zeros([r],"int32"),n=s.data;for(let o=0;o<r;o++)n[o]=x[o];return s}function lt(t,p){let r=0,i=t.length-1;for(;r<i;){const x=Math.floor((r+i)/2),h=t[r],d=t[x],I=t[i];let u;h<=d&&d<=I||I<=d&&d<=h?u=x:d<=h&&h<=I||I<=h&&h<=d?u=r:u=i;const s=t[u];[t[u],t[i]]=[t[i],t[u]];let n=r;for(let o=r;o<i;o++){const z=t[o],b=isNaN(z),c=isNaN(s);!b&&(c||z<=s)&&([t[n],t[o]]=[t[o],t[n]],n++)}if([t[n],t[i]]=[t[i],t[n]],n===p)return;n<p?r=n+1:i=n-1}}function ut(t,p){let r=0,i=t.length-1;for(;r<i;){const x=Math.floor((r+i)/2),h=t[r],d=t[x],I=t[i];let u;h<=d&&d<=I||I<=d&&d<=h?u=x:d<=h&&h<=I||I<=h&&h<=d?u=r:u=i;const s=t[u];[t[u],t[i]]=[t[i],t[u]];let n=r;for(let o=r;o<i;o++)t[o]<=s&&([t[n],t[o]]=[t[o],t[n]],n++);if([t[n],t[i]]=[t[i],t[n]],n===p)return;n<p?r=n+1:i=n-1}}function ft(t,p){let r=0,i=t.length-1;for(;r<i;){const x=Math.floor((r+i)/2),h=t[r].value,d=t[x].value,I=t[i].value;let u;h<=d&&d<=I||I<=d&&d<=h?u=x:d<=h&&h<=I||I<=h&&h<=d?u=r:u=i;const s=t[u].value;[t[u],t[i]]=[t[i],t[u]];let n=r;for(let o=r;o<i;o++){const z=t[o].value,b=isNaN(z),c=isNaN(s);!b&&(c||z<=s)&&([t[n],t[o]]=[t[o],t[n]],n++)}if([t[n],t[i]]=[t[i],t[n]],n===p)return;n<p?r=n+1:i=n-1}}function ct(t,p){let r=0,i=t.length-1;for(;r<i;){const x=Math.floor((r+i)/2),h=t[r].value,d=t[x].value,I=t[i].value;let u;h<=d&&d<=I||I<=d&&d<=h?u=x:d<=h&&h<=I||I<=h&&h<=d?u=r:u=i;const s=t[u].value;[t[u],t[i]]=[t[i],t[u]];let n=r;for(let o=r;o<i;o++)t[o].value<=s&&([t[n],t[o]]=[t[o],t[n]],n++);if([t[n],t[i]]=[t[i],t[n]],n===p)return;n<p?r=n+1:i=n-1}}function Tt(t,p,r=-1){const i=t.shape,x=i.length,h=t.dtype;if(x===0)return t.copy();let d=r;if(d<0&&(d=x+d),d<0||d>=x)throw new Error(`axis ${r} is out of bounds for array of dimension ${x}`);const I=i[d];let u=p;if(u<0&&(u=I+u),u<0||u>=I)throw new Error(`kth(=${p}) out of bounds (${I})`);if(x===1&&t.isCContiguous&&!$(h)){const f=t.copy(),l=tt(f,u);if(l)return l}const s=t.copy(),n=s.data,o=Array.from(i).filter((f,l)=>l!==d),z=o.length===0?1:o.reduce((f,l)=>f*l,1),b=P(i),{baseOffsets:c,axisStride:m}=_(i,b,0,d,z);if(m===1&&!$(h)&&et(n,c,I,z,u,h))return s;if(j(h)){const f=n;for(let l=0;l<z;l++){const a=[];let e=c[l];for(let y=0;y<I;y++)a.push(f[e]),e+=m;ut(a,u),e=c[l];for(let y=0;y<I;y++)f[e]=a[y],e+=m}}else for(let f=0;f<z;f++){const l=[];let a=c[f];for(let e=0;e<I;e++)l.push(Number(n[a])),a+=m;lt(l,u),a=c[f];for(let e=0;e<I;e++)n[a]=l[e],a+=m}return s}function Ot(t,p,r=-1){const i=t.shape,x=i.length,h=t.dtype,d=t.data,I=t.offset,u=t.strides;if(x===0)return M.zeros([0],"int32");let s=r;if(s<0&&(s=x+s),s<0||s>=x)throw new Error(`axis ${r} is out of bounds for array of dimension ${x}`);const n=i[s];let o=p;if(o<0&&(o=n+o),o<0||o>=n)throw new Error(`kth(=${p}) out of bounds (${n})`);if(x===1&&t.isCContiguous&&!$(h)){const A=rt(t,o);if(A)return A}const z=M.zeros(Array.from(i),"int32"),b=z.data,c=Array.from(i).filter((A,S)=>S!==s),m=c.length===0?1:c.reduce((A,S)=>A*S,1),{baseOffsets:f,axisStride:l}=_(i,u,I,s,m),a=P(i),{baseOffsets:e,axisStride:y}=_(i,a,0,s,m);if(y===1&&l===1&&!$(h)&&ot(d,b,f,e,n,m,o,h))return z;if(j(h)){const A=d;for(let S=0;S<m;S++){const N=[];let v=f[S];for(let B=0;B<n;B++)N.push({value:A[v],idx:B}),v+=l;ct(N,o);let C=e[S];for(let B=0;B<n;B++)b[C]=N[B].idx,C+=y}}else for(let A=0;A<m;A++){const S=[];let N=f[A];for(let C=0;C<n;C++)S.push({value:Number(d[N]),idx:C}),N+=l;ft(S,o);let v=e[A];for(let C=0;C<n;C++)b[v]=S[C].idx,v+=y}return z}function Mt(t){const p=t.dtype,r=t.size,i=t.isCContiguous,x=t.data,h=t.offset;if($(p)){const d=[];if(i){const s=x;for(let n=0;n<r;n++)d.push({re:s[(h+n)*2],im:s[(h+n)*2+1]})}else for(let s=0;s<r;s++){const n=t.iget(s);d.push({re:n.re,im:n.im})}d.sort((s,n)=>q(s.re,s.im,n.re,n.im));const I=M.zeros([r],"complex128"),u=I.data;for(let s=0;s<r;s++)u[s*2]=d[s].re,u[s*2+1]=d[s].im;return I}else{const d=[];if(i)for(let s=0;s<r;s++)d.push(Number(x[h+s]));else for(let s=0;s<r;s++)d.push(Number(t.iget(s)));d.sort((s,n)=>isNaN(s)&&isNaN(n)?0:isNaN(s)?1:isNaN(n)?-1:s-n);const I=M.zeros([r],"complex128"),u=I.data;for(let s=0;s<r;s++)u[s*2]=d[s],u[s*2+1]=0;return I}}function mt(t){const p=t.shape,r=p.length,i=t.size,x=$(t.dtype),h=t.isCContiguous,d=t.data,I=t.offset,u=[];for(let b=0;b<r;b++)u.push([]);const s=[];let n=1;for(let b=r-1;b>=0;b--)s.unshift(n),n*=p[b];if(h&&!x&&r>=1){const b=[];for(let f=0;f<r;f++)b.push(new Int32Array(i));let c=0;for(let f=0;f<i;f++)if(d[I+f]){let l=f;for(let a=0;a<r;a++)b[a][c]=l/s[a]|0,l-=b[a][c]*s[a];c++}const m=[];for(let f=0;f<r;f++){const l=M.zeros([c],"int32");l.data.set(b[f].subarray(0,c)),m.push(l)}return m}if(h){for(let b=0;b<i;b++)if(E(d,I+b,x)){let c=b;for(let m=0;m<r;m++){const f=Math.floor(c/s[m]);c=c%s[m],u[m].push(f)}}}else for(let b=0;b<i;b++){const c=t.iget(b);if(x?c.re!==0||c.im!==0:!!c){let f=b;for(let l=0;l<r;l++){const a=Math.floor(f/s[l]);f=f%s[l],u[l].push(a)}}}const o=u[0]?.length??0,z=[];for(let b=0;b<r;b++){const c=M.zeros([o],"int32"),m=c.data;for(let f=0;f<o;f++)m[f]=u[b][f];z.push(c)}return z}function $t(t){const p=t.shape,r=p.length,i=t.size,x=$(t.dtype),h=t.isCContiguous,d=t.data,I=t.offset,u=[],s=[];let n=1;for(let m=r-1;m>=0;m--)s.unshift(n),n*=p[m];if(h){for(let m=0;m<i;m++)if(E(d,I+m,x)){const f=[];let l=m;for(let a=0;a<r;a++){const e=Math.floor(l/s[a]);l=l%s[a],f.push(e)}u.push(f)}}else for(let m=0;m<i;m++){const f=t.iget(m);if(x?f.re!==0||f.im!==0:!!f){const a=[];let e=m;for(let y=0;y<r;y++){const A=Math.floor(e/s[y]);e=e%s[y],a.push(A)}u.push(a)}}const o=u.length,z=r===0?[o,1]:[o,r],b=M.zeros(z,"int32"),c=b.data;for(let m=0;m<o;m++){const f=u[m];for(let l=0;l<(r===0?1:r);l++)c[m*(r===0?1:r)+l]=f[l]??0}return b}function Et(t){const p=t.size,r=$(t.dtype),i=t.isCContiguous,x=t.data,h=t.offset;if(i&&!r){const s=new Int32Array(p);let n=0;for(let z=0;z<p;z++)x[h+z]&&(s[n++]=z);const o=M.zeros([n],"int32");return o.data.set(s.subarray(0,n)),o}const d=[];if(i)for(let s=0;s<p;s++)E(x,h+s,r)&&d.push(s);else for(let s=0;s<p;s++){const n=t.iget(s);(r?n.re!==0||n.im!==0:n)&&d.push(s)}const I=M.zeros([d.length],"int32"),u=I.data;for(let s=0;s<d.length;s++)u[s]=d[s];return I}function Rt(t,p,r){if(p===void 0&&r===void 0)return mt(t);if(p===void 0||r===void 0)throw new Error("either both or neither of x and y should be given");if(t.size===p.size&&p.size===r.size&&p.dtype===r.dtype&&t.shape.length===p.shape.length&&t.shape.every((g,F)=>g===p.shape[F])&&p.shape.every((g,F)=>g===r.shape[F])){const g=at(t,p,r);if(g)return g}const i=t.shape,x=p.shape,h=r.shape,d=Math.max(i.length,x.length,h.length),I=g=>{const F=Array(d).fill(1);for(let D=0;D<g.length;D++)F[d-g.length+D]=g[D];return F},u=I(i),s=I(x),n=I(h),o=[];for(let g=0;g<d;g++){const F=[u[g],s[g],n[g]],D=Math.max(...F);for(const w of F)if(w!==1&&w!==D)throw new Error("operands could not be broadcast together");o.push(D)}const z=p.dtype,b=M.zeros(o,z),c=b.data,m=(g,F)=>{const D=[];let w=1;for(let O=g.length-1;O>=0;O--)D.unshift(w),w*=g[O];for(;D.length<F.length;)D.unshift(0);for(let O=0;O<F.length;O++)F[O]===1&&o[O]!==1&&(D[O]=0);return D},f=m(i,u),l=m(x,s),a=m(h,n),e=[];let y=1;for(let g=o.length-1;g>=0;g--)e.unshift(y),y*=o[g];const A=o.reduce((g,F)=>g*F,1),S=$(t.dtype),N=$(z),v=t.isCContiguous,C=t.data,B=t.offset,L=p.isCContiguous,K=p.data,R=p.offset,W=r.isCContiguous,V=r.data,U=r.offset;if(i.length===o.length&&x.length===o.length&&h.length===o.length&&i.every((g,F)=>g===o[F])&&x.every((g,F)=>g===o[F])&&h.every((g,F)=>g===o[F])&&v&&L&&W)if(N){const g=c,F=K,D=V;if(S)for(let w=0;w<A;w++)E(C,B+w,!0)?(g[w*2]=F[(R+w)*2],g[w*2+1]=F[(R+w)*2+1]):(g[w*2]=D[(U+w)*2],g[w*2+1]=D[(U+w)*2+1]);else for(let w=0;w<A;w++)C[B+w]?(g[w*2]=F[(R+w)*2],g[w*2+1]=F[(R+w)*2+1]):(g[w*2]=D[(U+w)*2],g[w*2+1]=D[(U+w)*2+1])}else if(j(z)){const g=c,F=K,D=V;for(let w=0;w<A;w++)C[B+w]?g[w]=F[R+w]:g[w]=D[U+w]}else for(let g=0;g<A;g++)C[B+g]?c[g]=K[R+g]:c[g]=V[U+g];else for(let g=0;g<A;g++){let F=g,D=0,w=0,O=0;for(let T=0;T<d;T++){const Y=Math.floor(F/e[T]);F=F%e[T],D+=Y*f[T],w+=Y*l[T],O+=Y*a[T]}let X;if(v)X=E(C,B+D,S);else{const T=t.iget(D);X=S?T.re!==0||T.im!==0:!!T}if(X)if(N)if(L){const T=K;c[g*2]=T[(R+w)*2],c[g*2+1]=T[(R+w)*2+1]}else{const T=p.iget(w);c[g*2]=T.re,c[g*2+1]=T.im}else L?c[g]=K[R+w]:c[g]=p.iget(w);else if(N)if(W){const T=V;c[g*2]=T[(U+O)*2],c[g*2+1]=T[(U+O)*2+1]}else{const T=r.iget(O);c[g*2]=T.re,c[g*2+1]=T.im}else W?c[g]=V[U+O]:c[g]=r.iget(O)}return b}function Ut(t,p,r="left"){if(t.ndim!==1)throw new Error("storage must be 1D");const i=t.size,x=p.size,h=$(t.dtype),d=t.isCContiguous,I=t.data,u=t.offset,s=p.isCContiguous,n=p.data,o=p.offset;if(!h){const c=st(t,p,r);if(c)return c}const z=M.zeros([x],"int32"),b=z.data;if(h)if(d&&s){const c=I,m=n;for(let f=0;f<x;f++){const l=m[(o+f)*2],a=m[(o+f)*2+1];let e=0,y=i;if(r==="left")for(;e<y;){const A=Math.floor((e+y)/2),S=c[(u+A)*2],N=c[(u+A)*2+1];q(S,N,l,a)<0?e=A+1:y=A}else for(;e<y;){const A=Math.floor((e+y)/2),S=c[(u+A)*2],N=c[(u+A)*2+1];q(S,N,l,a)<=0?e=A+1:y=A}b[f]=e}}else for(let c=0;c<x;c++){const m=p.iget(c),f=m.re,l=m.im;let a=0,e=i;if(r==="left")for(;a<e;){const y=Math.floor((a+e)/2),A=t.iget(y);q(A.re,A.im,f,l)<0?a=y+1:e=y}else for(;a<e;){const y=Math.floor((a+e)/2),A=t.iget(y);q(A.re,A.im,f,l)<=0?a=y+1:e=y}b[c]=a}else if(d&&s)for(let c=0;c<x;c++){const m=Number(n[o+c]);let f=0,l=i;if(r==="left")for(;f<l;){const a=Math.floor((f+l)/2);Number(I[u+a])<m?f=a+1:l=a}else for(;f<l;){const a=Math.floor((f+l)/2);Number(I[u+a])<=m?f=a+1:l=a}b[c]=f}else for(let c=0;c<x;c++){const m=Number(p.iget(c));let f=0,l=i;if(r==="left")for(;f<l;){const a=Math.floor((f+l)/2);Number(t.iget(a))<m?f=a+1:l=a}else for(;f<l;){const a=Math.floor((f+l)/2);Number(t.iget(a))<=m?f=a+1:l=a}b[c]=f}return z}function _t(t,p){const r=it(t,p);if(r)return r;const i=p.dtype,x=$(t.dtype),h=$(i),d=Math.min(t.size,p.size),I=t.isCContiguous,u=t.data,s=t.offset,n=p.isCContiguous,o=p.data,z=p.offset;let b=0;if(I)for(let l=0;l<d;l++)E(u,s+l,x)&&b++;else for(let l=0;l<d;l++){const a=t.iget(l);(x?a.re!==0||a.im!==0:a)&&b++}const c=M.zeros([b],i),m=c.data;let f=0;if(I&&n)if(j(i)){const l=m,a=o;for(let e=0;e<d;e++)E(u,s+e,x)&&(l[f++]=a[z+e])}else if(h){const l=m,a=o;for(let e=0;e<d;e++)E(u,s+e,x)&&(l[f*2]=a[(z+e)*2],l[f*2+1]=a[(z+e)*2+1],f++)}else for(let l=0;l<d;l++)E(u,s+l,x)&&(m[f++]=o[z+l]);else{const l=I?a=>E(u,s+a,x):a=>{const e=t.iget(a);if(x){const y=e;return y.re!==0||y.im!==0}return!!e};if(j(i)){const a=m;for(let e=0;e<d;e++)l(e)&&(a[f++]=p.iget(e))}else if(h){const a=m;for(let e=0;e<d;e++)if(l(e)){const y=p.iget(e);a[f*2]=y.re,a[f*2+1]=y.im,f++}}else for(let a=0;a<d;a++)l(a)&&(m[f++]=p.iget(a))}return c}function dt(t,p){const r=t.shape,i=r.length,x=t.data,h=t.size,d=t.offset,I=t.strides,u=$(t.dtype),s=t.isCContiguous;if(p===void 0){const a=G(t);if(a!==null)return a;let e=0;if(s)for(let y=0;y<h;y++)E(x,d+y,u)&&e++;else for(let y=0;y<h;y++){const A=t.iget(y);if(u){const S=A;(S.re!==0||S.im!==0)&&e++}else A!==0&&A!==BigInt(0)&&e++}return e}let n=p;if(n<0&&(n=i+n),n<0||n>=i)throw new Error(`axis ${p} is out of bounds for array of dimension ${i}`);const o=Array.from(r).filter((a,e)=>e!==n);if(o.length===0)return dt(t);const z=M.zeros(o,"int32"),b=z.data,c=r[n],m=o.reduce((a,e)=>a*e,1),{baseOffsets:f,axisStride:l}=_(r,I,d,n,m);for(let a=0;a<m;a++){let e=0,y=f[a];for(let A=0;A<c;A++)E(x,y,u)&&e++,y+=l;b[a]=e}return z}export{Ot as argpartition,Dt as argsort,$t as argwhere,dt as count_nonzero,_t as extract,Et as flatnonzero,Bt as lexsort,mt as nonzero,Tt as partition,Ut as searchsorted,Ft as sort,Mt as sort_complex,Rt as where};
|
|
1
|
+
import{ArrayStorage as R}from"../storage.js";import{isBigIntDType as q,isComplexDType as M,hasFloat16 as Z}from"../dtype.js";import{computeStrides as P,precomputeAxisOffsets as L}from"../internal/indexing.js";import{wasmReduceCountNz as G}from"../wasm/reduce_count_nz.js";import{wasmSort as H,wasmSortSlices as J}from"../wasm/sort.js";import{wasmArgsort as Q,wasmArgsortSlices as k}from"../wasm/argsort.js";import{wasmPartition as tt,wasmPartitionSlices as et}from"../wasm/partition.js";import{wasmArgpartition as ot,wasmArgpartitionSlices as rt}from"../wasm/argpartition.js";import{wasmSearchsorted as st}from"../wasm/searchsorted.js";import{wasmLexsort as nt}from"../wasm/lexsort.js";import{wasmExtract as it,wasmWhere as at}from"../wasm/gather.js";function $(t,u,s){if(s){const r=t[u*2],d=t[u*2+1];return r!==0||d!==0}return!!t[u]}function E(t,u,s,r){const d=isNaN(t)||isNaN(u),h=isNaN(s)||isNaN(r);return d&&h?0:d?1:h||t<s?-1:t>s?1:u<r?-1:u>r?1:0}function Dt(t,u=-1){const s=t.shape,r=s.length,d=t.dtype,h=t.data,b=t.offset,g=t.strides;if(r===0)return t.copy();let m=u;if(m<0&&(m=r+m),m<0||m>=r)throw new Error(`axis ${u} is out of bounds for array of dimension ${r}`);const a=t.copy(),i=a.data,e=s[m],N=Array.from(s).filter((o,p)=>p!==m),x=N.length===0?1:N.reduce((o,p)=>o*p,1),{baseOffsets:c,axisStride:y}=L(s,g,b,m,x),l=P(s),{baseOffsets:f,axisStride:n}=L(s,l,0,m,x);if(r===1&&a.isCContiguous){const o=H(a);if(o)return o}if(n===1&&J(i,f,e,x,d))return a;if(M(d)){const o=h,p=i;for(let A=0;A<x;A++){const F=[];let I=c[A];for(let z=0;z<e;z++)F.push({re:o[I*2],im:o[I*2+1],idx:z}),I+=y;F.sort((z,B)=>E(z.re,z.im,B.re,B.im));let S=f[A];for(let z=0;z<e;z++)p[S*2]=F[z].re,p[S*2+1]=F[z].im,S+=n}}else if(q(d)){const o=h,p=i;for(let A=0;A<x;A++){const F=[];let I=c[A];for(let z=0;z<e;z++)F.push({value:o[I],idx:z}),I+=y;F.sort((z,B)=>z.value<B.value?-1:z.value>B.value?1:0);let S=f[A];for(let z=0;z<e;z++)p[S]=F[z].value,S+=n}}else if(d==="float16"&&Z&&t.isCContiguous&&a.isCContiguous)for(let o=0;o<x;o++){const p=c[o],A=y===1?new Float32Array(h.subarray(p,p+e)):Float32Array.from({length:e},(I,S)=>Number(h[p+S*y]));A.sort((I,S)=>isNaN(I)&&isNaN(S)?0:isNaN(I)?1:isNaN(S)?-1:I-S);const F=f[o];if(n===1)i.subarray(F,F+e).set(A);else for(let I=0;I<e;I++)i[F+I*n]=A[I]}else for(let o=0;o<x;o++){const p=[];let A=c[o];for(let I=0;I<e;I++)p.push(Number(h[A])),A+=y;p.sort((I,S)=>isNaN(I)&&isNaN(S)?0:isNaN(I)?1:isNaN(S)?-1:I-S);let F=f[o];for(let I=0;I<e;I++)i[F]=p[I],F+=n}return a}function Bt(t,u=-1){const s=t.shape,r=s.length,d=t.dtype,h=t.data,b=t.offset,g=t.strides;if(r===0)return R.zeros([0],"float64");let m=u;if(m<0&&(m=r+m),m<0||m>=r)throw new Error(`axis ${u} is out of bounds for array of dimension ${r}`);const a=R.zeros(Array.from(s),"float64"),i=a.data,e=s[m],N=Array.from(s).filter((o,p)=>p!==m),x=N.length===0?1:N.reduce((o,p)=>o*p,1),{baseOffsets:c,axisStride:y}=L(s,g,b,m,x),l=P(s),{baseOffsets:f,axisStride:n}=L(s,l,0,m,x);if(r===1&&t.isCContiguous){const o=Q(t);if(o)return o}if(n===1&&y===1&&k(h,i,c,f,e,x,d))return a;if(M(d)){const o=h;for(let p=0;p<x;p++){const A=[];let F=c[p];for(let S=0;S<e;S++)A.push({re:o[F*2],im:o[F*2+1],idx:S}),F+=y;A.sort((S,z)=>E(S.re,S.im,z.re,z.im));let I=f[p];for(let S=0;S<e;S++)i[I]=A[S].idx,I+=n}}else if(q(d)){const o=h;for(let p=0;p<x;p++){const A=[];let F=c[p];for(let S=0;S<e;S++)A.push({value:o[F],idx:S}),F+=y;A.sort((S,z)=>S.value<z.value?-1:S.value>z.value?1:0);let I=f[p];for(let S=0;S<e;S++)i[I]=A[S].idx,I+=n}}else if(d==="float16"&&Z&&t.isCContiguous)for(let o=0;o<x;o++){const p=c[o],A=y===1?new Float32Array(h.subarray(p,p+e)):Float32Array.from({length:e},(S,z)=>Number(h[p+z*y])),F=Array.from({length:e},(S,z)=>z);F.sort((S,z)=>{const B=A[S],j=A[z];return isNaN(B)&&isNaN(j)?0:isNaN(B)?1:isNaN(j)?-1:B-j});let I=f[o];for(let S=0;S<e;S++)i[I]=F[S],I+=n}else for(let o=0;o<x;o++){const p=[];let A=c[o];for(let I=0;I<e;I++)p.push({value:Number(h[A]),idx:I}),A+=y;p.sort((I,S)=>isNaN(I.value)&&isNaN(S.value)?0:isNaN(I.value)?1:isNaN(S.value)?-1:I.value-S.value);let F=f[o];for(let I=0;I<e;I++)i[F]=p[I].idx,F+=n}return a}function Tt(t){if(t.length===0)return R.zeros([0],"float64");const s=t[0].size;for(const e of t){if(e.ndim!==1)throw new Error("keys must be 1D arrays");if(e.size!==s)throw new Error("all keys must have the same length")}const r=nt(t);if(r)return r;const d=[];for(let e=0;e<s;e++)d.push(e);const h=t.map(e=>M(e.dtype)),b=t.map(e=>e.isCContiguous),g=t.map(e=>e.data),m=t.map(e=>e.offset);d.sort((e,N)=>{for(let x=t.length-1;x>=0;x--)if(h[x]){let c,y,l,f;if(b[x]){const n=g[x],o=m[x];c=n[(o+e)*2],y=n[(o+e)*2+1],l=n[(o+N)*2],f=n[(o+N)*2+1]}else{const n=t[x].iget(e),o=t[x].iget(N);c=n.re,y=n.im,l=o.re,f=o.im}if(c<l)return-1;if(c>l)return 1;if(y<f)return-1;if(y>f)return 1}else{let c,y;if(b[x]){const l=g[x],f=m[x];c=Number(l[f+e]),y=Number(l[f+N])}else c=Number(t[x].iget(e)),y=Number(t[x].iget(N));if(isNaN(c)&&isNaN(y))continue;if(isNaN(c))return 1;if(isNaN(y)||c<y)return-1;if(c>y)return 1}return 0});const a=R.zeros([s],"float64"),i=a.data;for(let e=0;e<s;e++)i[e]=d[e];return a}function lt(t,u){let s=0,r=t.length-1;for(;s<r;){const d=Math.floor((s+r)/2),h=t[s],b=t[d],g=t[r];let m;h<=b&&b<=g||g<=b&&b<=h?m=d:b<=h&&h<=g||g<=h&&h<=b?m=s:m=r;const a=t[m];[t[m],t[r]]=[t[r],t[m]];let i=s;for(let e=s;e<r;e++){const N=t[e],x=isNaN(N),c=isNaN(a);!x&&(c||N<=a)&&([t[i],t[e]]=[t[e],t[i]],i++)}if([t[i],t[r]]=[t[r],t[i]],i===u)return;i<u?s=i+1:r=i-1}}function ut(t,u,s){let r=0,d=t.length-1;for(;r<d;){const h=Math.floor((r+d)/2),b=E(t[r],u[r],t[h],u[h]),g=E(t[r],u[r],t[d],u[d]),m=E(t[h],u[h],t[d],u[d]);let a;b<=0&&m<=0||m>=0&&b>=0?a=h:b>=0&&g<=0||g>=0&&b<=0?a=r:a=d;const i=t[a],e=u[a];[t[a],t[d]]=[t[d],t[a]],[u[a],u[d]]=[u[d],u[a]];let N=r;for(let x=r;x<d;x++)E(t[x],u[x],i,e)<=0&&([t[N],t[x]]=[t[x],t[N]],[u[N],u[x]]=[u[x],u[N]],N++);if([t[N],t[d]]=[t[d],t[N]],[u[N],u[d]]=[u[d],u[N]],N===s)return;N<s?r=N+1:d=N-1}}function ft(t,u){let s=0,r=t.length-1;for(;s<r;){const d=Math.floor((s+r)/2),h=t[s],b=t[d],g=t[r];let m;h<=b&&b<=g||g<=b&&b<=h?m=d:b<=h&&h<=g||g<=h&&h<=b?m=s:m=r;const a=t[m];[t[m],t[r]]=[t[r],t[m]];let i=s;for(let e=s;e<r;e++)t[e]<=a&&([t[i],t[e]]=[t[e],t[i]],i++);if([t[i],t[r]]=[t[r],t[i]],i===u)return;i<u?s=i+1:r=i-1}}function ct(t,u){let s=0,r=t.length-1;for(;s<r;){const d=Math.floor((s+r)/2),h=t[s].value,b=t[d].value,g=t[r].value;let m;h<=b&&b<=g||g<=b&&b<=h?m=d:b<=h&&h<=g||g<=h&&h<=b?m=s:m=r;const a=t[m].value;[t[m],t[r]]=[t[r],t[m]];let i=s;for(let e=s;e<r;e++){const N=t[e].value,x=isNaN(N),c=isNaN(a);!x&&(c||N<=a)&&([t[i],t[e]]=[t[e],t[i]],i++)}if([t[i],t[r]]=[t[r],t[i]],i===u)return;i<u?s=i+1:r=i-1}}function mt(t,u){let s=0,r=t.length-1;for(;s<r;){const d=Math.floor((s+r)/2),h=t[s].value,b=t[d].value,g=t[r].value;let m;h<=b&&b<=g||g<=b&&b<=h?m=d:b<=h&&h<=g||g<=h&&h<=b?m=s:m=r;const a=t[m].value;[t[m],t[r]]=[t[r],t[m]];let i=s;for(let e=s;e<r;e++)t[e].value<=a&&([t[i],t[e]]=[t[e],t[i]],i++);if([t[i],t[r]]=[t[r],t[i]],i===u)return;i<u?s=i+1:r=i-1}}function Mt(t,u,s=-1){const r=t.shape,d=r.length,h=t.dtype;if(d===0)return t.copy();let b=s;if(b<0&&(b=d+b),b<0||b>=d)throw new Error(`axis ${s} is out of bounds for array of dimension ${d}`);const g=r[b];let m=u;if(m<0&&(m=g+m),m<0||m>=g)throw new Error(`kth(=${u}) out of bounds (${g})`);if(d===1&&t.isCContiguous&&!M(h)){const l=t.copy(),f=tt(l,m);if(f)return f}const a=t.copy(),i=a.data,e=Array.from(r).filter((l,f)=>f!==b),N=e.length===0?1:e.reduce((l,f)=>l*f,1),x=P(r),{baseOffsets:c,axisStride:y}=L(r,x,0,b,N);if(y===1&&!M(h)&&et(i,c,g,N,m,h))return a;if(q(h)){const l=i;for(let f=0;f<N;f++){const n=[];let o=c[f];for(let p=0;p<g;p++)n.push(l[o]),o+=y;ft(n,m),o=c[f];for(let p=0;p<g;p++)l[o]=n[p],o+=y}}else if(M(h)){const l=i;for(let f=0;f<N;f++){const n=new Array(g),o=new Array(g);let p=c[f];for(let A=0;A<g;A++)n[A]=l[p*2],o[A]=l[p*2+1],p+=y;ut(n,o,m),p=c[f];for(let A=0;A<g;A++)l[p*2]=n[A],l[p*2+1]=o[A],p+=y}}else for(let l=0;l<N;l++){const f=[];let n=c[l];for(let o=0;o<g;o++)f.push(Number(i[n])),n+=y;lt(f,m),n=c[l];for(let o=0;o<g;o++)i[n]=f[o],n+=y}return a}function Ot(t,u,s=-1){const r=t.shape,d=r.length,h=t.dtype,b=t.data,g=t.offset,m=t.strides;if(d===0)return R.zeros([0],"float64");let a=s;if(a<0&&(a=d+a),a<0||a>=d)throw new Error(`axis ${s} is out of bounds for array of dimension ${d}`);const i=r[a];let e=u;if(e<0&&(e=i+e),e<0||e>=i)throw new Error(`kth(=${u}) out of bounds (${i})`);if(d===1&&t.isCContiguous&&!M(h)){const A=ot(t,e);if(A)return A}const N=R.zeros(Array.from(r),"float64"),x=N.data,c=Array.from(r).filter((A,F)=>F!==a),y=c.length===0?1:c.reduce((A,F)=>A*F,1),{baseOffsets:l,axisStride:f}=L(r,m,g,a,y),n=P(r),{baseOffsets:o,axisStride:p}=L(r,n,0,a,y);if(p===1&&f===1&&!M(h)&&rt(b,x,l,o,i,y,e,h))return N;if(q(h)){const A=b;for(let F=0;F<y;F++){const I=[];let S=l[F];for(let B=0;B<i;B++)I.push({value:A[S],idx:B}),S+=f;mt(I,e);let z=o[F];for(let B=0;B<i;B++)x[z]=I[B].idx,z+=p}}else for(let A=0;A<y;A++){const F=[];let I=l[A];for(let z=0;z<i;z++)F.push({value:Number(b[I]),idx:z}),I+=f;ct(F,e);let S=o[A];for(let z=0;z<i;z++)x[S]=F[z].idx,S+=p}return N}function Rt(t){const u=t.dtype,s=t.size,r=t.isCContiguous,d=t.data,h=t.offset;if(M(u)){const b=[];if(r){const a=d;for(let i=0;i<s;i++)b.push({re:a[(h+i)*2],im:a[(h+i)*2+1]})}else for(let a=0;a<s;a++){const i=t.iget(a);b.push({re:i.re,im:i.im})}b.sort((a,i)=>E(a.re,a.im,i.re,i.im));const g=R.zeros([s],u),m=g.data;for(let a=0;a<s;a++)m[a*2]=b[a].re,m[a*2+1]=b[a].im;return g}else{const b=[];if(r)for(let e=0;e<s;e++)b.push(Number(d[h+e]));else for(let e=0;e<s;e++)b.push(Number(t.iget(e)));b.sort((e,N)=>isNaN(e)&&isNaN(N)?0:isNaN(e)?1:isNaN(N)?-1:e-N);const m=new Set(["int8","uint8","int16","uint16"]).has(u)?"complex64":"complex128",a=R.zeros([s],m),i=a.data;for(let e=0;e<s;e++)i[e*2]=b[e],i[e*2+1]=0;return a}}function dt(t){const u=t.shape,s=u.length,r=t.size,d=M(t.dtype),h=t.isCContiguous,b=t.data,g=t.offset,m=[];for(let x=0;x<s;x++)m.push([]);const a=[];let i=1;for(let x=s-1;x>=0;x--)a.unshift(i),i*=u[x];if(h&&!d&&s>=1){const x=[];for(let l=0;l<s;l++)x.push(new Float64Array(r));let c=0;for(let l=0;l<r;l++)if(b[g+l]){let f=l;for(let n=0;n<s;n++)x[n][c]=f/a[n]|0,f-=x[n][c]*a[n];c++}const y=[];for(let l=0;l<s;l++){const f=R.zeros([c],"float64");f.data.set(x[l].subarray(0,c)),y.push(f)}return y}if(h){for(let x=0;x<r;x++)if($(b,g+x,d)){let c=x;for(let y=0;y<s;y++){const l=Math.floor(c/a[y]);c=c%a[y],m[y].push(l)}}}else for(let x=0;x<r;x++){const c=t.iget(x);if(d?c.re!==0||c.im!==0:!!c){let l=x;for(let f=0;f<s;f++){const n=Math.floor(l/a[f]);l=l%a[f],m[f].push(n)}}}const e=m[0]?.length??0,N=[];for(let x=0;x<s;x++){const c=R.zeros([e],"float64"),y=c.data;for(let l=0;l<e;l++)y[l]=m[x][l];N.push(c)}return N}function $t(t){const u=t.shape,s=u.length,r=t.size,d=M(t.dtype),h=t.isCContiguous,b=t.data,g=t.offset,m=s===0?1:s,a=[];let i=1;for(let y=s-1;y>=0;y--)a.unshift(i),i*=u[y];let e=0;if(h)for(let y=0;y<r;y++)$(b,g+y,d)&&e++;else for(let y=0;y<r;y++){const l=t.iget(y);(d?l.re!==0||l.im!==0:l)&&e++}const N=R.zeros([e,m],"float64"),x=N.data;let c=0;if(h){for(let y=0;y<r;y++)if($(b,g+y,d)){let l=y;const f=c*m;for(let n=0;n<s;n++){const o=a[n];x[f+n]=l/o|0,l=l%o}c++}}else for(let y=0;y<r;y++){const l=t.iget(y);if(d?l.re!==0||l.im!==0:!!l){let n=y;const o=c*m;for(let p=0;p<s;p++){const A=a[p];x[o+p]=n/A|0,n=n%A}c++}}return N}function Et(t){const u=t.size,s=M(t.dtype),r=t.isCContiguous,d=t.data,h=t.offset;if(r&&!s){const a=new Float64Array(u);let i=0;for(let N=0;N<u;N++)d[h+N]&&(a[i++]=N);const e=R.zeros([i],"float64");return e.data.set(a.subarray(0,i)),e}const b=[];if(r)for(let a=0;a<u;a++)$(d,h+a,s)&&b.push(a);else for(let a=0;a<u;a++){const i=t.iget(a);(s?i.re!==0||i.im!==0:i)&&b.push(a)}const g=R.zeros([b.length],"float64"),m=g.data;for(let a=0;a<b.length;a++)m[a]=b[a];return g}function Ut(t,u,s){if(u===void 0&&s===void 0)return dt(t);if(u===void 0||s===void 0)throw new Error("either both or neither of x and y should be given");if(t.size===u.size&&u.size===s.size&&u.dtype===s.dtype&&t.shape.length===u.shape.length&&t.shape.every((v,C)=>v===u.shape[C])&&u.shape.every((v,C)=>v===s.shape[C])){const v=at(t,u,s);if(v)return v}const r=t.shape,d=u.shape,h=s.shape,b=Math.max(r.length,d.length,h.length),g=v=>{const C=Array(b).fill(1);for(let D=0;D<v.length;D++)C[b-v.length+D]=v[D];return C},m=g(r),a=g(d),i=g(h),e=[];for(let v=0;v<b;v++){const C=[m[v],a[v],i[v]],D=Math.max(...C);for(const w of C)if(w!==1&&w!==D)throw new Error("operands could not be broadcast together");e.push(D)}const N=u.dtype,x=R.zeros(e,N),c=x.data,y=(v,C)=>{const D=[];let w=1;for(let O=v.length-1;O>=0;O--)D.unshift(w),w*=v[O];for(;D.length<C.length;)D.unshift(0);for(let O=0;O<C.length;O++)C[O]===1&&e[O]!==1&&(D[O]=0);return D},l=y(r,m),f=y(d,a),n=y(h,i),o=[];let p=1;for(let v=e.length-1;v>=0;v--)o.unshift(p),p*=e[v];const A=e.reduce((v,C)=>v*C,1),F=M(t.dtype),I=M(N),S=t.isCContiguous,z=t.data,B=t.offset,j=u.isCContiguous,K=u.data,U=u.offset,W=s.isCContiguous,V=s.data,_=s.offset;if(r.length===e.length&&d.length===e.length&&h.length===e.length&&r.every((v,C)=>v===e[C])&&d.every((v,C)=>v===e[C])&&h.every((v,C)=>v===e[C])&&S&&j&&W)if(I){const v=c,C=K,D=V;if(F)for(let w=0;w<A;w++)$(z,B+w,!0)?(v[w*2]=C[(U+w)*2],v[w*2+1]=C[(U+w)*2+1]):(v[w*2]=D[(_+w)*2],v[w*2+1]=D[(_+w)*2+1]);else for(let w=0;w<A;w++)z[B+w]?(v[w*2]=C[(U+w)*2],v[w*2+1]=C[(U+w)*2+1]):(v[w*2]=D[(_+w)*2],v[w*2+1]=D[(_+w)*2+1])}else if(q(N)){const v=c,C=K,D=V;for(let w=0;w<A;w++)z[B+w]?v[w]=C[U+w]:v[w]=D[_+w]}else for(let v=0;v<A;v++)z[B+v]?c[v]=K[U+v]:c[v]=V[_+v];else for(let v=0;v<A;v++){let C=v,D=0,w=0,O=0;for(let T=0;T<b;T++){const Y=Math.floor(C/o[T]);C=C%o[T],D+=Y*l[T],w+=Y*f[T],O+=Y*n[T]}let X;if(S)X=$(z,B+D,F);else{const T=t.iget(D);X=F?T.re!==0||T.im!==0:!!T}if(X)if(I)if(j){const T=K;c[v*2]=T[(U+w)*2],c[v*2+1]=T[(U+w)*2+1]}else{const T=u.iget(w);c[v*2]=T.re,c[v*2+1]=T.im}else j?c[v]=K[U+w]:c[v]=u.iget(w);else if(I)if(W){const T=V;c[v*2]=T[(_+O)*2],c[v*2+1]=T[(_+O)*2+1]}else{const T=s.iget(O);c[v*2]=T.re,c[v*2+1]=T.im}else W?c[v]=V[_+O]:c[v]=s.iget(O)}return x}function _t(t,u,s="left"){if(t.ndim!==1)throw new Error("storage must be 1D");const r=t.size,d=u.size,h=M(t.dtype),b=t.isCContiguous,g=t.data,m=t.offset,a=u.isCContiguous,i=u.data,e=u.offset;if(!h){const c=st(t,u,s);if(c)return c}const N=R.zeros([d],"float64"),x=N.data;if(h)if(b&&a){const c=g,y=i;for(let l=0;l<d;l++){const f=y[(e+l)*2],n=y[(e+l)*2+1];let o=0,p=r;if(s==="left")for(;o<p;){const A=Math.floor((o+p)/2),F=c[(m+A)*2],I=c[(m+A)*2+1];E(F,I,f,n)<0?o=A+1:p=A}else for(;o<p;){const A=Math.floor((o+p)/2),F=c[(m+A)*2],I=c[(m+A)*2+1];E(F,I,f,n)<=0?o=A+1:p=A}x[l]=o}}else for(let c=0;c<d;c++){const y=u.iget(c),l=y.re,f=y.im;let n=0,o=r;if(s==="left")for(;n<o;){const p=Math.floor((n+o)/2),A=t.iget(p);E(A.re,A.im,l,f)<0?n=p+1:o=p}else for(;n<o;){const p=Math.floor((n+o)/2),A=t.iget(p);E(A.re,A.im,l,f)<=0?n=p+1:o=p}x[c]=n}else if(b&&a)for(let c=0;c<d;c++){const y=Number(i[e+c]);let l=0,f=r;if(s==="left")for(;l<f;){const n=Math.floor((l+f)/2);Number(g[m+n])<y?l=n+1:f=n}else for(;l<f;){const n=Math.floor((l+f)/2);Number(g[m+n])<=y?l=n+1:f=n}x[c]=l}else for(let c=0;c<d;c++){const y=Number(u.iget(c));let l=0,f=r;if(s==="left")for(;l<f;){const n=Math.floor((l+f)/2);Number(t.iget(n))<y?l=n+1:f=n}else for(;l<f;){const n=Math.floor((l+f)/2);Number(t.iget(n))<=y?l=n+1:f=n}x[c]=l}return N}function Lt(t,u){const s=it(t,u);if(s)return s;const r=u.dtype,d=M(t.dtype),h=M(r),b=Math.min(t.size,u.size),g=t.isCContiguous,m=t.data,a=t.offset,i=u.isCContiguous,e=u.data,N=u.offset;let x=0;if(g)for(let f=0;f<b;f++)$(m,a+f,d)&&x++;else for(let f=0;f<b;f++){const n=t.iget(f);(d?n.re!==0||n.im!==0:n)&&x++}const c=R.zeros([x],r),y=c.data;let l=0;if(g&&i)if(q(r)){const f=y,n=e;for(let o=0;o<b;o++)$(m,a+o,d)&&(f[l++]=n[N+o])}else if(h){const f=y,n=e;for(let o=0;o<b;o++)$(m,a+o,d)&&(f[l*2]=n[(N+o)*2],f[l*2+1]=n[(N+o)*2+1],l++)}else for(let f=0;f<b;f++)$(m,a+f,d)&&(y[l++]=e[N+f]);else{const f=g?n=>$(m,a+n,d):n=>{const o=t.iget(n);if(d){const p=o;return p.re!==0||p.im!==0}return!!o};if(q(r)){const n=y;for(let o=0;o<b;o++)f(o)&&(n[l++]=u.iget(o))}else if(h){const n=y;for(let o=0;o<b;o++)if(f(o)){const p=u.iget(o);n[l*2]=p.re,n[l*2+1]=p.im,l++}}else for(let n=0;n<b;n++)f(n)&&(y[l++]=u.iget(n))}return c}function yt(t,u){const s=t.shape,r=s.length,d=t.data,h=t.size,b=t.offset,g=t.strides,m=M(t.dtype),a=t.isCContiguous;if(u===void 0){const n=G(t);if(n!==null)return n;let o=0;if(a)for(let p=0;p<h;p++)$(d,b+p,m)&&o++;else for(let p=0;p<h;p++){const A=t.iget(p);if(m){const F=A;(F.re!==0||F.im!==0)&&o++}else A!==0&&A!==BigInt(0)&&o++}return o}let i=u;if(i<0&&(i=r+i),i<0||i>=r)throw new Error(`axis ${u} is out of bounds for array of dimension ${r}`);const e=Array.from(s).filter((n,o)=>o!==i);if(e.length===0)return yt(t);const N=R.zeros(e,"float64"),x=N.data,c=s[i],y=e.reduce((n,o)=>n*o,1),{baseOffsets:l,axisStride:f}=L(s,g,b,i,y);for(let n=0;n<y;n++){let o=0,p=l[n];for(let A=0;A<c;A++)$(d,p,m)&&o++,p+=f;x[n]=o}return N}export{Ot as argpartition,Bt as argsort,$t as argwhere,yt as count_nonzero,Lt as extract,Et as flatnonzero,Tt as lexsort,dt as nonzero,Mt as partition,_t as searchsorted,Dt as sort,Rt as sort_complex,Ut as where};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{ArrayStorage as S}from"../storage.js";import{getTypedArrayConstructor as H,hasFloat16 as Q,isComplexDType as C,isFloatDType as K,throwIfComplex as _}from"../dtype.js";import{wasmCorrelate as X}from"../wasm/correlate.js";import{wasmConvolve as Z}from"../wasm/convolve.js";function ut(p,d,D=0){_(p.dtype,"bincount","bincount requires integer input.");const b=p.data,x=p.size;let f=0;for(let n=0;n<x;n++){const e=Number(b[n]);if(e<0||!Number.isInteger(e))throw new Error("'x' argument must contain non-negative integers");e>f&&(f=e)}const l=Math.max(f+1,D);if(d!==void 0){if(d.size!==x)throw new Error("weights array must have same length as x");const n=d.data,e=new Float64Array(l);for(let a=0;a<x;a++){const h=Number(b[a]);e[h]+=Number(n[a])}return S.fromData(e,[l],"float64")}else{const n=new Float64Array(l);for(let e=0;e<x;e++){const a=Number(b[e]);n[a]++}return S.fromData(n,[l],"float64")}}function ft(p,d,D=!1){_(p.dtype,"digitize","digitize requires real numbers."),_(d.dtype,"digitize","digitize requires real numbers.");const b=p.data,x=d.data,f=p.size,l=d.size,n=new Float64Array(f);let e=!0;l>1&&(e=Number(x[1])>=Number(x[0]));for(let a=0;a<f;a++){const h=Number(b[a]);let r;if(e)D?r=tt(x,l,h):r=W(x,l,h);else if(D)for(r=0;r<l&&Number(x[r])>=h;)r++;else for(r=0;r<l&&Number(x[r])>h;)r++;n[a]=r}return S.fromData(n,[...p.shape],"float64")}function tt(p,d,D){let b=0,x=d;for(;b<x;){const f=b+x>>>1;Number(p[f])<D?b=f+1:x=f}return b}function W(p,d,D){let b=0,x=d;for(;b<x;){const f=b+x>>>1;Number(p[f])<=D?b=f+1:x=f}return b}function mt(p,d=10,D,b=!1,x){_(p.dtype,"histogram","histogram requires real numbers."),typeof d!="number"&&_(d.dtype,"histogram","histogram requires real numbers.");const f=p.data,l=p.size;let n;if(typeof d=="number"){let r,o;if(D)[r,o]=D;else{r=1/0,o=-1/0;for(let y=0;y<l;y++){const s=Number(f[y]);s<r&&(r=s),s>o&&(o=s)}r===o&&(r=r-.5,o=o+.5)}n=[];const A=H(p.dtype);if(A&&K(p.dtype)&&p.dtype!=="float64"){const y=new A(3);y[0]=(o-r)/d,y[2]=r;for(let s=0;s<=d;s++)y[1]=Number(y[2])+s*Number(y[0]),n.push(Number(y[1]))}else{const y=(o-r)/d;for(let s=0;s<=d;s++)n.push(r+s*y)}}else{const r=d.data;n=[];for(let o=0;o<d.size;o++)n.push(Number(r[o]))}const e=n.length-1,a=new Float64Array(e),h=x?.data;for(let r=0;r<l;r++){const o=Number(f[r]),A=h?Number(h[r]):1;let y=W(n,n.length,o)-1;if(!(y<0)){if(y>=e)if(o===n[e])y=e-1;else continue;a[y]+=A}}if(b){let r=0;for(let o=0;o<e;o++)r+=a[o];for(let o=0;o<e;o++){const A=n[o+1]-n[o];a[o]=a[o]/(r*A)}}return{hist:S.fromData(a,[e],"float64"),bin_edges:S.fromData(new Float64Array(n),[n.length],"float64")}}function ct(p,d,D=10,b,x=!1,f){_(p.dtype,"histogram2d","histogram2d requires real numbers."),_(d.dtype,"histogram2d","histogram2d requires real numbers.");const l=p.data,n=d.data,e=p.size;if(d.size!==e)throw new Error("x and y must have the same length");let a,h,r,o;if(typeof D=="number"?(r=D,o=D):Array.isArray(D)&&D.length===2?(D[0],r=D[0],o=D[1]):(r=10,o=10),typeof r=="number"){let i,u;if(b)[i,u]=b[0];else{i=1/0,u=-1/0;for(let m=0;m<e;m++){const c=Number(l[m]);c<i&&(i=c),c>u&&(u=c)}i===u&&(i-=.5,u+=.5)}a=[];const t=H(p.dtype);if(t&&K(p.dtype)&&p.dtype!=="float64"){const m=new t(3);m[0]=(u-i)/r,m[2]=i;for(let c=0;c<=r;c++)m[1]=Number(m[2])+c*Number(m[0]),a.push(Number(m[1]))}else{const m=(u-i)/r;for(let c=0;c<=r;c++)a.push(i+c*m)}}else{const i=r.data;a=[];for(let u=0;u<r.size;u++)a.push(Number(i[u]))}if(typeof o=="number"){let i,u;if(b)[i,u]=b[1];else{i=1/0,u=-1/0;for(let m=0;m<e;m++){const c=Number(n[m]);c<i&&(i=c),c>u&&(u=c)}i===u&&(i-=.5,u+=.5)}h=[];const t=H(d.dtype);if(t&&K(d.dtype)&&d.dtype!=="float64"){const m=new t(3);m[0]=(u-i)/o,m[2]=i;for(let c=0;c<=o;c++)m[1]=Number(m[2])+c*Number(m[0]),h.push(Number(m[1]))}else{const m=(u-i)/o;for(let c=0;c<=o;c++)h.push(i+c*m)}}else{const i=o.data;h=[];for(let u=0;u<o.size;u++)h.push(Number(i[u]))}const A=a.length-1,y=h.length-1,s=new Float64Array(A*y),N=f?.data;for(let i=0;i<e;i++){const u=Number(l[i]),t=Number(n[i]),m=N?Number(N[i]):1;let c=W(a,a.length,u)-1,g=W(h,h.length,t)-1;if(c<0||c>=A)if(u===a[A]&&c===A)c=A-1;else continue;if(g<0||g>=y)if(t===h[y]&&g===y)g=y-1;else continue;s[c*y+g]+=m}if(x){let i=0;for(let u=0;u<s.length;u++)i+=s[u];for(let u=0;u<A;u++)for(let t=0;t<y;t++){const m=a[u+1]-a[u],c=h[t+1]-h[t],g=m*c;s[u*y+t]=s[u*y+t]/(i*g)}}return{hist:S.fromData(s,[A,y],"float64"),x_edges:S.fromData(new Float64Array(a),[a.length],"float64"),y_edges:S.fromData(new Float64Array(h),[h.length],"float64")}}function yt(p,d=10,D,b=!1,x){_(p.dtype,"histogramdd","histogramdd requires real numbers.");const f=p.shape,l=p.data;let n,e;if(f.length===1)n=f[0],e=1;else if(f.length===2)n=f[0],e=f[1];else throw new Error("sample must be 1D or 2D array");let a;if(typeof d=="number")a=new Array(e).fill(d);else if(a=d,a.length!==e)throw new Error("bins array length must match number of dimensions");const h=[];for(let i=0;i<e;i++){let u,t;if(D&&D[i])[u,t]=D[i];else{u=1/0,t=-1/0;for(let w=0;w<n;w++){const M=Number(e===1?l[w]:l[w*e+i]);M<u&&(u=M),M>t&&(t=M)}u===t&&(u-=.5,t+=.5)}const m=a[i],c=[],g=(t-u)/m;for(let w=0;w<=m;w++)c.push(u+w*g);h.push(c)}const r=a.slice(),o=r.reduce((i,u)=>i*u,1),A=new Float64Array(o),y=new Array(e);y[e-1]=1;for(let i=e-2;i>=0;i--)y[i]=y[i+1]*a[i+1];const s=x?.data;for(let i=0;i<n;i++){const u=s?Number(s[i]):1;let t=0,m=!1;for(let c=0;c<e;c++){const g=Number(e===1?l[i]:l[i*e+c]),w=h[c],M=a[c];let F=W(w,w.length,g)-1;if(F<0||F>=M)if(g===w[M]&&F===M)F=M-1;else{m=!0;break}t+=F*y[c]}m||(A[t]+=u)}if(b){let i=0;for(let t=0;t<o;t++)i+=A[t];const u=new Float64Array(o);for(let t=0;t<o;t++){let m=1,c=t;for(let g=0;g<e;g++){const w=Math.floor(c/y[g])%a[g],M=h[g];m*=M[w+1]-M[w]}u[t]=m}for(let t=0;t<o;t++)A[t]=A[t]/(i*u[t])}const N=h.map(i=>S.fromData(new Float64Array(i),[i.length],"float64"));return{hist:S.fromData(A,r,"float64"),edges:N}}function et(p,d,D="full"){const b=p.data,x=d.data,f=p.size,l=d.size,n=C(p.dtype)||C(d.dtype),e=f+l-1;if(n){const r=new Float64Array(e),o=new Float64Array(e),A=C(p.dtype),y=C(d.dtype);for(let N=0;N<e;N++){let i=0,u=0;const t=N-l+1;for(let m=0;m<f;m++){const c=m-t;if(c>=0&&c<l){let g,w,M,F;A?(g=b[m*2],w=b[m*2+1]):(g=Number(b[m]),w=0),y?(M=x[c*2],F=x[c*2+1]):(M=Number(x[c]),F=0),i+=g*M+w*F,u+=w*M-g*F}}r[N]=i,o[N]=u}const s=(N,i,u,t=0)=>{const m=new Float64Array(u*2);for(let c=0;c<u;c++)m[c*2]=N[t+c],m[c*2+1]=i[t+c];return S.fromData(m,[u],"complex128")};if(D==="full")return s(r,o,e);if(D==="same"){const N=Math.floor((e-f)/2);return s(r,o,f,N)}else{const N=Math.max(f,l)-Math.min(f,l)+1,i=Math.min(f,l)-1;return s(r,o,N,i)}}const a=X(p,d);if(a){if(D==="full")return a;const r=a.data;if(D==="same"){const o=Math.floor((e-f)/2),A=new Float64Array(f);for(let y=0;y<f;y++)A[y]=r[o+y];return S.fromData(A,[f],a.dtype)}else{const o=Math.max(f,l)-Math.min(f,l)+1,A=Math.min(f,l)-1,y=new Float64Array(o);for(let s=0;s<o;s++)y[s]=r[A+s];return S.fromData(y,[o],a.dtype)}}const h=new Float64Array(e);for(let r=0;r<e;r++){let o=0;const A=r-l+1;for(let y=0;y<f;y++){const s=y-A;s>=0&&s<l&&(o+=Number(b[y])*Number(x[s]))}h[r]=o}if(D==="full")return S.fromData(h,[e],"float64");if(D==="same"){const r=Math.floor((e-f)/2),o=new Float64Array(f);for(let A=0;A<f;A++)o[A]=h[r+A];return S.fromData(o,[f],"float64")}else{const r=Math.max(f,l)-Math.min(f,l)+1,o=Math.min(f,l)-1,A=new Float64Array(r);for(let y=0;y<r;y++)A[y]=h[o+y];return S.fromData(A,[r],"float64")}}function dt(p,d,D="full"){const b=d.size,x=p.size,f=C(d.dtype);if(!f&&!C(p.dtype)){const e=Z(p,d);if(e){const a=x+b-1;if(D==="full")return e;const h=e.data;if(D==="same"){const r=Math.floor((a-x)/2),o=new Float64Array(x);for(let A=0;A<x;A++)o[A]=h[r+A];return S.fromData(o,[x],e.dtype)}else{const r=Math.max(x,b)-Math.min(x,b)+1,o=Math.min(x,b)-1,A=new Float64Array(r);for(let y=0;y<r;y++)A[y]=h[o+y];return S.fromData(A,[r],e.dtype)}}}const l=d.data;let n;if(f){const e=new Float64Array(b*2);for(let a=0;a<b;a++){const h=b-1-a;e[a*2]=l[h*2],e[a*2+1]=l[h*2+1]}n=S.fromData(e,[b],d.dtype)}else{const e=new Float64Array(b);for(let a=0;a<b;a++)e[a]=Number(l[b-1-a]);n=S.fromData(e,[b],"float64")}if(f){const e=n.data;for(let a=0;a<b;a++)e[a*2+1]=-e[a*2+1]}return et(p,n,D)}function rt(p,d,D=!0,b=!1,x){const f=p.shape,l=p.data,n=C(p.dtype)||d!==void 0&&C(d.dtype);let e;if(x!==void 0?e=x:e=b?0:1,f.length===1)if(d!==void 0){const s=d.data,N=p.size,i=C(p.dtype),u=C(d.dtype);if(d.size!==N)throw new Error("m and y must have same length");if(n){let F=0,I=0,z=0,v=0;for(let R=0;R<N;R++)i?(F+=l[R*2],I+=l[R*2+1]):F+=Number(l[R]),u?(z+=s[R*2],v+=s[R*2+1]):z+=Number(s[R]);F/=N,I/=N,z/=N,v/=N;let E=0,Y=0,q=0,U=0,J=0,$=0,O=0,G=0;for(let R=0;R<N;R++){let j,L,V,k;i?(j=l[R*2]-F,L=l[R*2+1]-I):(j=Number(l[R])-F,L=0),u?(V=s[R*2]-z,k=s[R*2+1]-v):(V=Number(s[R])-z,k=0),E+=j*j+L*L,q+=V*V+k*k,J+=j*V+L*k,$+=L*V-j*k,O+=V*j+k*L,G+=k*j-V*L}const T=N-e;if(T<=0){const R=new Float64Array(8);return R.fill(NaN),S.fromData(R,[2,2],"complex128")}E/=T,q/=T,J/=T,$/=T,O/=T,G/=T;const B=new Float64Array(8);return B[0]=E,B[1]=Y,B[2]=J,B[3]=$,B[4]=O,B[5]=G,B[6]=q,B[7]=U,S.fromData(B,[2,2],"complex128")}let t=0,m=0;for(let F=0;F<N;F++)t+=Number(l[F]),m+=Number(s[F]);t/=N,m/=N;let c=0,g=0,w=0;for(let F=0;F<N;F++){const I=Number(l[F])-t,z=Number(s[F])-m;c+=I*I,g+=z*z,w+=I*z}const M=N-e;return M<=0?S.fromData(new Float64Array([NaN,NaN,NaN,NaN]),[2,2],"float64"):(c/=M,g/=M,w/=M,S.fromData(new Float64Array([c,w,w,g]),[2,2],"float64"))}else{const s=p.size;if(n){let t=0,m=0;for(let w=0;w<s;w++)t+=l[w*2],m+=l[w*2+1];t/=s,m/=s;let c=0;for(let w=0;w<s;w++){const M=l[w*2]-t,F=l[w*2+1]-m;c+=M*M+F*F}const g=s-e;return g<=0?S.fromData(new Float64Array([NaN,0]),[],"complex128"):(c/=g,S.fromData(new Float64Array([c,0]),[],"complex128"))}let N=0;for(let t=0;t<s;t++)N+=Number(l[t]);N/=s;let i=0;for(let t=0;t<s;t++){const m=Number(l[t])-N;i+=m*m}const u=s-e;return u<=0?S.fromData(new Float64Array([NaN]),[],"float64"):(i/=u,S.fromData(new Float64Array([i]),[],"float64"))}let a,h;D?(a=f[0],h=f[1]):(a=f[1],h=f[0]);const r=h-e;if(n){const s=new Float64Array(a),N=new Float64Array(a);for(let u=0;u<a;u++){let t=0,m=0;for(let c=0;c<h;c++){const g=D?u*h+c:c*a+u;t+=l[g*2],m+=l[g*2+1]}s[u]=t/h,N[u]=m/h}const i=new Float64Array(a*a*2);if(r<=0)return i.fill(NaN),S.fromData(i,[a,a],"complex128");for(let u=0;u<a;u++)for(let t=0;t<a;t++){let m=0,c=0;for(let w=0;w<h;w++){const M=D?u*h+w:w*a+u,F=D?t*h+w:w*a+t,I=l[M*2]-s[u],z=l[M*2+1]-N[u],v=l[F*2]-s[t],E=l[F*2+1]-N[t];m+=I*v+z*E,c+=z*v-I*E}const g=(u*a+t)*2;i[g]=m/r,i[g+1]=c/r}return S.fromData(i,[a,a],"complex128")}const o=new Float64Array(a*h);for(let s=0;s<a;s++){let N=0;for(let t=0;t<h;t++){const m=D?s*h+t:t*a+s;N+=Number(l[m])}const i=N/h,u=s*h;for(let t=0;t<h;t++){const m=D?s*h+t:t*a+s;o[u+t]=Number(l[m])-i}}const A=new Float64Array(a*a);if(r<=0)return A.fill(NaN),S.fromData(A,[a,a],"float64");const y=1/r;for(let s=0;s<a;s++){const N=s*h;for(let i=s;i<a;i++){const u=i*h;let t=0;for(let c=0;c<h;c++)t+=o[N+c]*o[u+c];const m=t*y;A[s*a+i]=m,A[i*a+s]=m}}return S.fromData(A,[a,a],"float64")}function bt(p,d,D=!0){const b=C(p.dtype)||d!==void 0&&C(d.dtype);if(p.shape.length===1&&d===void 0)return b?S.fromData(new Float64Array([1,0]),[],"complex128"):S.fromData(new Float64Array([1]),[],"float64");const x=rt(p,d,D,!1),f=x.data,n=x.shape[0];if(b){const r=new Float64Array(n*n*2);for(let o=0;o<n;o++)for(let A=0;A<n;A++){const y=f[(o*n+A)*2],s=f[(o*n+A)*2+1],N=f[(o*n+o)*2],i=f[(A*n+A)*2],u=(o*n+A)*2;if(N<=0||i<=0)r[u]=NaN,r[u+1]=NaN;else{const t=Math.sqrt(N*i);r[u]=y/t,r[u+1]=s/t}}return S.fromData(r,[n,n],"complex128")}const e=new Float64Array(n*n),a=f,h=new Float64Array(n);for(let r=0;r<n;r++){const o=a[r*n+r];h[r]=o>0?1/Math.sqrt(o):NaN}for(let r=0;r<n;r++)for(let o=r;o<n;o++){const A=a[r*n+o]*h[r]*h[o];e[r*n+o]=A,e[o*n+r]=A}return S.fromData(e,[n,n],"float64")}function ht(p,d=10,D,b){_(p.dtype,"histogram_bin_edges","histogram_bin_edges requires real numbers.");const x=p.data,f=p.size;let l,n;if(D)[l,n]=D;else{l=1/0,n=-1/0;for(let r=0;r<f;r++){const o=Number(x[r]);isNaN(o)||(o<l&&(l=o),o>n&&(n=o))}!isFinite(l)||!isFinite(n)?(l=0,n=1):l===n&&(l=l-.5,n=n+.5)}let e;typeof d=="number"?e=d:e=P(x,f,l,n,d),e=Math.max(1,Math.round(e));const a=new Float64Array(e+1),h=(n-l)/e;for(let r=0;r<=e;r++)a[r]=l+r*h;return S.fromData(a,[e+1],"float64")}function P(p,d,D,b,x){if(d===0)return 1;const f=b-D;if(f===0)return 1;const l=[];let n=0;for(let s=0;s<d;s++){const N=Number(p[s]);isNaN(N)||(l.push(N),n+=N)}const e=l.length;if(e===0)return 1;const a=n/e;let h=0;for(let s=0;s<e;s++){const N=l[s]-a;h+=N*N}const r=Math.sqrt(h/e);l.sort((s,N)=>s-N);const o=l[Math.floor(e*.25)]??0,y=(l[Math.floor(e*.75)]??0)-o;switch(x){case"sqrt":return Math.ceil(Math.sqrt(e));case"sturges":return Math.ceil(Math.log2(e)+1);case"rice":return Math.ceil(2*Math.pow(e,1/3));case"scott":{if(r===0)return 1;const s=3.5*r/Math.pow(e,1/3);return Math.ceil(f/s)}case"fd":{if(y===0)return P(p,d,D,b,"sturges");const s=2*y/Math.pow(e,1/3);return Math.ceil(f/s)}case"doane":{const s=at(l,a,r),N=Math.sqrt(6*(e-2)/((e+1)*(e+3)));return Math.ceil(1+Math.log2(e)+Math.log2(1+Math.abs(s)/N))}case"stone":return P(p,d,D,b,"sturges");default:{const s=Math.ceil(Math.log2(e)+1),N=y===0?s:Math.ceil(f/(2*y/Math.pow(e,1/3)));return Math.max(s,N)}}}function at(p,d,D){if(D===0)return 0;const b=p.length;let x=0;for(let f=0;f<b;f++)x+=Math.pow((p[f]-d)/D,3);return x/b}function pt(p,d,D=1,b=-1){_(p.dtype,"trapezoid","trapezoid requires real numbers."),d!==void 0&&_(d.dtype,"trapezoid","trapezoid requires real numbers.");const x=Array.from(p.shape),f=x.length;if(b<0&&(b=f+b),b<0||b>=f)throw new Error(`axis ${b} is out of bounds for array of dimension ${f}`);const l=x[b];if(l<2)throw new Error("trapezoid requires at least 2 samples along axis");let n;if(d!==void 0){if(d.size!==l)throw new Error(`x array size (${d.size}) must match y axis size (${l})`);const t=d.data;n=new Float64Array(l);for(let m=0;m<l;m++)n[m]=Number(t[m])}else{n=new Float64Array(l);for(let t=0;t<l;t++)n[t]=t*D}const e=[...x];if(e.splice(b,1),f===1){const t=p.data,m=p.dtype;if(m==="float16"&&Q){const g=new Float16Array(1);g[0]=0;for(let w=0;w<l-1;w++){const M=Number(t[w]),F=Number(t[w+1]),I=n[w+1]-n[w];g[0]+=.5*(M+F)*I}return Number(g[0])}if(m==="float32"){const g=new Float32Array(1);g[0]=0;for(let w=0;w<l-1;w++){const M=Number(t[w]),F=Number(t[w+1]),I=n[w+1]-n[w];g[0]+=.5*(M+F)*I}return g[0]}let c=0;for(let g=0;g<l-1;g++){const w=Number(t[g]),M=Number(t[g+1]),F=n[g+1]-n[g];c+=.5*(w+M)*F}return c}const a=e.reduce((t,m)=>t*m,1),h=p.dtype,r=h==="float16"&&Q,o=h==="float32",A=r?new Float16Array(a):o?new Float32Array(a):new Float64Array(a),y=new Array(f);let s=1;for(let t=f-1;t>=0;t--)y[t]=s,s*=x[t];const N=new Array(e.length);s=1;for(let t=e.length-1;t>=0;t--)N[t]=s,s*=e[t];const i=p.data;for(let t=0;t<a;t++){const m=[];let c=t;for(let M=0;M<e.length;M++){const F=Math.floor(c/N[M]);c%=N[M],m.push(F)}const g=[];let w=0;for(let M=0;M<f;M++)M===b?g.push(0):(g.push(m[w]),w++);if(r){const M=new Float16Array(1);M[0]=0;for(let F=0;F<l-1;F++){g[b]=F;let I=0;for(let v=0;v<f;v++)I+=g[v]*y[v];g[b]=F+1;let z=0;for(let v=0;v<f;v++)z+=g[v]*y[v];M[0]+=.5*(Number(i[I])+Number(i[z]))*(n[F+1]-n[F])}A[t]=M[0]}else if(o){const M=new Float32Array(1);M[0]=0;for(let F=0;F<l-1;F++){g[b]=F;let I=0;for(let v=0;v<f;v++)I+=g[v]*y[v];g[b]=F+1;let z=0;for(let v=0;v<f;v++)z+=g[v]*y[v];M[0]+=.5*(Number(i[I])+Number(i[z]))*(n[F+1]-n[F])}A[t]=M[0]}else{let M=0;for(let F=0;F<l-1;F++){g[b]=F;let I=0;for(let q=0;q<f;q++)I+=g[q]*y[q];g[b]=F+1;let z=0;for(let q=0;q<f;q++)z+=g[q]*y[q];const v=Number(i[I]),E=Number(i[z]),Y=n[F+1]-n[F];M+=.5*(v+E)*Y}A[t]=M}}if(e.length===0)return A[0];const u=r?"float16":o?"float32":"float64";return S.fromData(A,e,u)}export{ut as bincount,dt as convolve,bt as corrcoef,et as correlate,rt as cov,ft as digitize,mt as histogram,ct as histogram2d,ht as histogram_bin_edges,yt as histogramdd,pt as trapezoid};
|
|
1
|
+
import{ArrayStorage as I}from"../storage.js";import{Complex as rt}from"../complex.js";import{getComplexComponentDType as it,getTypedArrayConstructor as X,hasFloat16 as ot,isBigIntDType as ut,isComplexDType as _,isFloatDType as Z,promoteDTypes as at,throwIfComplex as W}from"../dtype.js";import{wasmCorrelate as ft}from"../wasm/correlate.js";import{wasmConvolve as ct}from"../wasm/convolve.js";import{wasmMatmul as mt}from"../wasm/matmul.js";function nt(m){const p=Array.from(m.shape),D=m.size,d=it(m.dtype),S=I.empty(p,d),l=S.data,r=m.data,o=m.offset;for(let e=0;e<D;e++)l[e]=r[(o+e)*2];return S}function xt(m,p,D=0){W(m.dtype,"bincount","bincount requires integer input.");const d=m.data,S=m.size;let l=0;for(let o=0;o<S;o++){const e=Number(d[o]);if(e<0||!Number.isInteger(e))throw new Error("'x' argument must contain non-negative integers");e>l&&(l=e)}const r=Math.max(l+1,D);if(p!==void 0){if(p.size!==S)throw new Error("weights array must have same length as x");const o=p.data,e=I.empty([r],"float64"),n=e.data;for(let y=0;y<S;y++){const v=Number(d[y]);n[v]+=Number(o[y])}return e}else{const o=I.empty([r],"float64"),e=o.data;for(let n=0;n<S;n++){const y=Number(d[n]);e[y]++}return o}}function vt(m,p,D=!1){W(m.dtype,"digitize","digitize requires real numbers."),W(p.dtype,"digitize","digitize requires real numbers.");const d=m.data,S=p.data,l=m.size,r=p.size,o=I.empty([...m.shape],"float64"),e=o.data;let n=!0;r>1&&(n=Number(S[1])>=Number(S[0]));for(let y=0;y<l;y++){const v=Number(d[y]);let i;if(n)D?i=yt(S,r,v):i=O(S,r,v);else if(D)for(i=0;i<r&&Number(S[i])>=v;)i++;else for(i=0;i<r&&Number(S[i])>v;)i++;e[y]=i}return o}function yt(m,p,D){let d=0,S=p;for(;d<S;){const l=d+S>>>1;Number(m[l])<D?d=l+1:S=l}return d}function O(m,p,D){let d=0,S=p;for(;d<S;){const l=d+S>>>1;Number(m[l])<=D?d=l+1:S=l}return d}function st(m,p=10,D,d=!1,S){if(_(m.dtype)){const i=nt(m),s=st(i,p,D,d,S);return i.dispose(),s}if(typeof p!="number"&&_(p.dtype)){const i=nt(p),s=st(m,i,D,d,S);return i.dispose(),s}const l=m.data,r=m.size;let o;if(typeof p=="number"){let i,s;if(D)[i,s]=D;else{i=1/0,s=-1/0;for(let b=0;b<r;b++){const N=Number(l[b]);N<i&&(i=N),N>s&&(s=N)}i===s&&(i=i-.5,s=s+.5)}o=[];const A=X(m.dtype);if(A&&Z(m.dtype)&&m.dtype!=="float64"){const b=new A(3);b[0]=(s-i)/p,b[2]=i;for(let N=0;N<=p;N++)b[1]=Number(b[2])+N*Number(b[0]),o.push(Number(b[1]))}else{const b=(s-i)/p;for(let N=0;N<=p;N++)o.push(i+N*b)}}else{const i=p.data;o=[];for(let s=0;s<p.size;s++)o.push(Number(i[s]))}const e=o.length-1,n=I.zeros([e],"float64"),y=n.data,v=S?.data;for(let i=0;i<r;i++){const s=Number(l[i]),A=v?Number(v[i]):1;let b=O(o,o.length,s)-1;if(!(b<0)){if(b>=e)if(s===o[e])b=e-1;else continue;y[b]+=A}}if(d){let i=0;for(let s=0;s<e;s++)i+=y[s];for(let s=0;s<e;s++){const A=o[s+1]-o[s];y[s]=y[s]/(i*A)}}return{hist:n,bin_edges:I.fromData(new Float64Array(o),[o.length],"float64")}}function Mt(m,p,D=10,d,S=!1,l){W(m.dtype,"histogram2d","histogram2d requires real numbers."),W(p.dtype,"histogram2d","histogram2d requires real numbers.");const r=m.data,o=p.data,e=m.size;if(p.size!==e)throw new Error("x and y must have the same length");let n,y,v,i;if(typeof D=="number"?(v=D,i=D):Array.isArray(D)&&D.length===2?(D[0],v=D[0],i=D[1]):(v=10,i=10),typeof v=="number"){let f,c;if(d)[f,c]=d[0];else{f=1/0,c=-1/0;for(let u=0;u<e;u++){const h=Number(r[u]);h<f&&(f=h),h>c&&(c=h)}f===c&&(f-=.5,c+=.5)}n=[];const t=X(m.dtype);if(t&&Z(m.dtype)&&m.dtype!=="float64"){const u=new t(3);u[0]=(c-f)/v,u[2]=f;for(let h=0;h<=v;h++)u[1]=Number(u[2])+h*Number(u[0]),n.push(Number(u[1]))}else{const u=(c-f)/v;for(let h=0;h<=v;h++)n.push(f+h*u)}}else{const f=v.data;n=[];for(let c=0;c<v.size;c++)n.push(Number(f[c]))}if(typeof i=="number"){let f,c;if(d)[f,c]=d[1];else{f=1/0,c=-1/0;for(let u=0;u<e;u++){const h=Number(o[u]);h<f&&(f=h),h>c&&(c=h)}f===c&&(f-=.5,c+=.5)}y=[];const t=X(p.dtype);if(t&&Z(p.dtype)&&p.dtype!=="float64"){const u=new t(3);u[0]=(c-f)/i,u[2]=f;for(let h=0;h<=i;h++)u[1]=Number(u[2])+h*Number(u[0]),y.push(Number(u[1]))}else{const u=(c-f)/i;for(let h=0;h<=i;h++)y.push(f+h*u)}}else{const f=i.data;y=[];for(let c=0;c<i.size;c++)y.push(Number(f[c]))}const s=n.length-1,A=y.length-1,b=I.zeros([s,A],"float64"),N=b.data,w=l?.data;for(let f=0;f<e;f++){const c=Number(r[f]),t=Number(o[f]),u=w?Number(w[f]):1;let h=O(n,n.length,c)-1,F=O(y,y.length,t)-1;if(h<0||h>=s)if(c===n[s]&&h===s)h=s-1;else continue;if(F<0||F>=A)if(t===y[A]&&F===A)F=A-1;else continue;N[h*A+F]+=u}if(S){let f=0;for(let c=0;c<N.length;c++)f+=N[c];for(let c=0;c<s;c++)for(let t=0;t<A;t++){const u=n[c+1]-n[c],h=y[t+1]-y[t],F=u*h;N[c*A+t]=N[c*A+t]/(f*F)}}return{hist:b,x_edges:I.fromData(new Float64Array(n),[n.length],"float64"),y_edges:I.fromData(new Float64Array(y),[y.length],"float64")}}function It(m,p=10,D,d=!1,S){W(m.dtype,"histogramdd","histogramdd requires real numbers.");const l=m.shape,r=m.data;let o,e;if(l.length===1)o=l[0],e=1;else if(l.length===2)o=l[0],e=l[1];else throw new Error("sample must be 1D or 2D array");let n;if(typeof p=="number")n=new Array(e).fill(p);else if(n=p,n.length!==e)throw new Error("bins array length must match number of dimensions");const y=[];for(let f=0;f<e;f++){let c,t;if(D&&D[f])[c,t]=D[f];else{c=1/0,t=-1/0;for(let a=0;a<o;a++){const g=Number(e===1?r[a]:r[a*e+f]);g<c&&(c=g),g>t&&(t=g)}c===t&&(c-=.5,t+=.5)}const u=n[f],h=[],F=(t-c)/u;for(let a=0;a<=u;a++)h.push(c+a*F);y.push(h)}const v=n.slice(),i=v.reduce((f,c)=>f*c,1),s=I.zeros(v,"float64"),A=s.data,b=new Array(e);b[e-1]=1;for(let f=e-2;f>=0;f--)b[f]=b[f+1]*n[f+1];const N=S?.data;for(let f=0;f<o;f++){const c=N?Number(N[f]):1;let t=0,u=!1;for(let h=0;h<e;h++){const F=Number(e===1?r[f]:r[f*e+h]),a=y[h],g=n[h];let x=O(a,a.length,F)-1;if(x<0||x>=g)if(F===a[g]&&x===g)x=g-1;else{u=!0;break}t+=x*b[h]}u||(A[t]+=c)}if(d){let f=0;for(let t=0;t<i;t++)f+=A[t];const c=new Float64Array(i);for(let t=0;t<i;t++){let u=1,h=t;for(let F=0;F<e;F++){const a=Math.floor(h/b[F])%n[F],g=y[F];u*=g[a+1]-g[a]}c[t]=u}for(let t=0;t<i;t++)A[t]=A[t]/(f*c[t])}const w=y.map(f=>I.fromData(new Float64Array(f),[f.length],"float64"));return{hist:s,edges:w}}function dt(m,p,D="valid"){const d=m.data,S=p.data,l=m.size,r=p.size,o=_(m.dtype)||_(p.dtype),e=l+r-1;if(o){const s=new Float64Array(e),A=new Float64Array(e),b=_(m.dtype),N=_(p.dtype);for(let c=0;c<e;c++){let t=0,u=0;const h=c-r+1;for(let F=0;F<l;F++){const a=F-h;if(a>=0&&a<r){let g,x,R,M;b?(g=d[F*2],x=d[F*2+1]):(g=Number(d[F]),x=0),N?(R=S[a*2],M=S[a*2+1]):(R=Number(S[a]),M=0),t+=g*R+x*M,u+=x*R-g*M}}s[c]=t,A[c]=u}const w=at(m.dtype,p.dtype),f=(c,t,u,h=0)=>{const F=I.empty([u],w),a=F.data;for(let g=0;g<u;g++)a[g*2]=c[h+g],a[g*2+1]=t[h+g];return F};if(D==="full")return f(s,A,e);if(D==="same"){const c=Math.floor((e-l)/2);return f(s,A,l,c)}else{const c=Math.max(l,r)-Math.min(l,r)+1,t=Math.min(l,r)-1;return f(s,A,c,t)}}const n=ft(m,p);if(n){if(D==="full")return n;const s=n.data;if(D==="same"){const A=Math.floor((e-l)/2),b=I.empty([l],n.dtype),N=b.data;for(let w=0;w<l;w++)N[w]=s[A+w];return b}else{const A=Math.max(l,r)-Math.min(l,r)+1,b=Math.min(l,r)-1,N=I.empty([A],n.dtype),w=N.data;for(let f=0;f<A;f++)w[f]=s[b+f];return N}}const y=at(m.dtype,p.dtype),v=I.empty([e],y),i=v.data;if(ut(y)){const s=d,A=S,b=i;for(let N=0;N<e;N++){let w=0n;const f=N-r+1;for(let c=0;c<l;c++){const t=c-f;t>=0&&t<r&&(w+=s[c]*A[t])}b[N]=w}}else for(let s=0;s<e;s++){let A=0;const b=s-r+1;for(let N=0;N<l;N++){const w=N-b;w>=0&&w<r&&(A+=Number(d[N])*Number(S[w]))}i[s]=A}if(D==="full")return v;if(D==="same"){const s=Math.floor((e-l)/2),A=I.empty([l],y),b=A.data;for(let N=0;N<l;N++)b[N]=i[s+N];return v.dispose(),A}else{const s=Math.max(l,r)-Math.min(l,r)+1,A=Math.min(l,r)-1,b=I.empty([s],y),N=b.data;for(let w=0;w<s;w++)N[w]=i[A+w];return v.dispose(),b}}function zt(m,p,D="full"){const d=p.size,S=m.size,l=_(p.dtype);if(!l&&!_(m.dtype)){const e=ct(m,p);if(e){const n=S+d-1;if(D==="full")return e;const y=e.data;if(D==="same"){const v=Math.floor((n-S)/2),i=I.empty([S],e.dtype),s=i.data;for(let A=0;A<S;A++)s[A]=y[v+A];return i}else{const v=Math.max(S,d)-Math.min(S,d)+1,i=Math.min(S,d)-1,s=I.empty([v],e.dtype),A=s.data;for(let b=0;b<v;b++)A[b]=y[i+b];return s}}}const r=p.data;let o;if(l){const n=p.dtype==="complex64"?new Float32Array(d*2):new Float64Array(d*2);for(let y=0;y<d;y++){const v=d-1-y;n[y*2]=r[v*2],n[y*2+1]=r[v*2+1]}o=I.fromData(n,[d],p.dtype)}else{o=I.empty([d],p.dtype);const e=o.data;for(let n=0;n<d;n++)e[n]=r[d-1-n]}if(l){const e=o.data;for(let n=0;n<d;n++)e[n*2+1]=-e[n*2+1]}return dt(m,o,D)}function pt(m,p,D=!0,d=!1,S){const l=m.shape,r=m.dtype==="float16"?(()=>{const t=new Float64Array(m.size);return t.set(m.data.subarray(m.offset,m.offset+m.size)),t})():m.data,o=_(m.dtype)||p!==void 0&&_(p.dtype);let e;if(S!==void 0?e=S:e=d?0:1,l.length===1)if(p!==void 0){const t=p.data,u=m.size,h=_(m.dtype),F=_(p.dtype);if(p.size!==u)throw new Error("m and y must have same length");if(o){let C=0,E=0,B=0,$=0;for(let q=0;q<u;q++)h?(C+=r[q*2],E+=r[q*2+1]):C+=Number(r[q]),F?(B+=t[q*2],$+=t[q*2+1]):B+=Number(t[q]);C/=u,E/=u,B/=u,$/=u;let J=0,U=0,P=0,lt=0,G=0,H=0,K=0,Q=0;for(let q=0;q<u;q++){let j,L,k,V;h?(j=r[q*2]-C,L=r[q*2+1]-E):(j=Number(r[q])-C,L=0),F?(k=t[q*2]-B,V=t[q*2+1]-$):(k=Number(t[q])-B,V=0),J+=j*j+L*L,P+=k*k+V*V,G+=j*k+L*V,H+=L*k-j*V,K+=k*j+V*L,Q+=V*j-k*L}const Y=u-e;if(Y<=0){const q=I.empty([2,2],"complex128");return q.data.fill(NaN),q}J/=Y,P/=Y,G/=Y,H/=Y,K/=Y,Q/=Y;const et=I.empty([2,2],"complex128"),T=et.data;return T[0]=J,T[1]=U,T[2]=G,T[3]=H,T[4]=K,T[5]=Q,T[6]=P,T[7]=lt,et}let a=0,g=0;for(let C=0;C<u;C++)a+=Number(r[C]),g+=Number(t[C]);a/=u,g/=u;let x=0,R=0,M=0;for(let C=0;C<u;C++){const E=Number(r[C])-a,B=Number(t[C])-g;x+=E*E,R+=B*B,M+=E*B}const z=u-e;return z<=0?I.fromData(new Float64Array([NaN,NaN,NaN,NaN]),[2,2],"float64"):(x/=z,R/=z,M/=z,I.fromData(new Float64Array([x,M,M,R]),[2,2],"float64"))}else{const t=m.size;if(o){let a=0,g=0;for(let M=0;M<t;M++)a+=r[M*2],g+=r[M*2+1];a/=t,g/=t;let x=0;for(let M=0;M<t;M++){const z=r[M*2]-a,C=r[M*2+1]-g;x+=z*z+C*C}const R=t-e;return R<=0?I.fromData(new Float64Array([NaN,0]),[],"complex128"):(x/=R,I.fromData(new Float64Array([x,0]),[],"complex128"))}let u=0;for(let a=0;a<t;a++)u+=Number(r[a]);u/=t;let h=0;for(let a=0;a<t;a++){const g=Number(r[a])-u;h+=g*g}const F=t-e;return F<=0?I.fromData(new Float64Array([NaN]),[],"float64"):(h/=F,I.fromData(new Float64Array([h]),[],"float64"))}let n,y;D?(n=l[0],y=l[1]):(n=l[1],y=l[0]);const v=y-e;if(o){const t=new Float64Array(n),u=new Float64Array(n);for(let a=0;a<n;a++){let g=0,x=0;for(let R=0;R<y;R++){const M=D?a*y+R:R*n+a;g+=r[M*2],x+=r[M*2+1]}t[a]=g/y,u[a]=x/y}const h=I.empty([n,n],"complex128"),F=h.data;if(v<=0)return F.fill(NaN),h;for(let a=0;a<n;a++)for(let g=0;g<n;g++){let x=0,R=0;for(let z=0;z<y;z++){const C=D?a*y+z:z*n+a,E=D?g*y+z:z*n+g,B=r[C*2]-t[a],$=r[C*2+1]-u[a],J=r[E*2]-t[g],U=r[E*2+1]-u[g];x+=B*J+$*U,R+=$*J-B*U}const M=(a*n+g)*2;F[M]=x/v,F[M+1]=R/v}return h}const i=I.empty([n,y],"float64"),s=i.data;for(let t=0;t<n;t++){let u=0;for(let a=0;a<y;a++){const g=D?t*y+a:a*n+t;u+=Number(r[g])}const h=u/y,F=t*y;for(let a=0;a<y;a++){const g=D?t*y+a:a*n+t;s[F+a]=Number(r[g])-h}}if(v<=0){i.dispose();const t=I.empty([n,n],"float64");return t.data.fill(NaN),t}const A=I.empty([y,n],"float64"),b=A.data;for(let t=0;t<n;t++)for(let u=0;u<y;u++)b[u*n+t]=s[t*y+u];const N=mt(i,A);if(i.dispose(),A.dispose(),N){const t=N.data,u=1/v;for(let h=0;h<n*n;h++)t[h]=t[h]*u;return N}const w=I.empty([n,n],"float64"),f=w.data,c=1/v;for(let t=0;t<n;t++){const u=t*y;for(let h=t;h<n;h++){const F=h*y;let a=0;for(let x=0;x<y;x++)a+=s[u+x]*s[F+x];const g=a*c;f[t*n+h]=g,f[h*n+t]=g}}return w}function Rt(m,p,D=!0){const d=_(m.dtype)||p!==void 0&&_(p.dtype);if(m.shape.length===1&&p===void 0)return d?I.fromData(new Float64Array([1,0]),[],"complex128"):I.fromData(new Float64Array([1]),[],"float64");const S=pt(m,p,D,!1);try{const l=S.data,o=S.shape[0];if(d){const i=I.empty([o,o],"complex128"),s=i.data;for(let A=0;A<o;A++)for(let b=0;b<o;b++){const N=l[(A*o+b)*2],w=l[(A*o+b)*2+1],f=l[(A*o+A)*2],c=l[(b*o+b)*2],t=(A*o+b)*2;if(f<=0||c<=0)s[t]=NaN,s[t+1]=NaN;else{const u=Math.sqrt(f*c);s[t]=N/u,s[t+1]=w/u}}return i}const e=I.empty([o,o],"float64"),n=e.data,y=l,v=new Float64Array(o);for(let i=0;i<o;i++){const s=y[i*o+i];v[i]=s>0?1/Math.sqrt(s):NaN}for(let i=0;i<o;i++)for(let s=i;s<o;s++){const A=y[i*o+s]*v[i]*v[s];n[i*o+s]=A,n[s*o+i]=A}return e}finally{S.dispose()}}function Ct(m,p=10,D,d){W(m.dtype,"histogram_bin_edges","histogram_bin_edges requires real numbers.");const S=m.data,l=m.size;let r,o;if(D)[r,o]=D;else{r=1/0,o=-1/0;for(let s=0;s<l;s++){const A=Number(S[s]);isNaN(A)||(A<r&&(r=A),A>o&&(o=A))}!isFinite(r)||!isFinite(o)?(r=0,o=1):r===o&&(r=r-.5,o=o+.5)}let e;typeof p=="number"?e=p:e=tt(S,l,r,o,p),e=Math.max(1,Math.round(e));const n=m.dtype==="float32"?"float32":m.dtype==="float16"?"float16":"float64",y=I.empty([e+1],n),v=y.data,i=(o-r)/e;for(let s=0;s<=e;s++)v[s]=r+s*i;return y}function tt(m,p,D,d,S){if(p===0)return 1;const l=d-D;if(l===0)return 1;const r=[];let o=0;for(let b=0;b<p;b++){const N=Number(m[b]);isNaN(N)||(r.push(N),o+=N)}const e=r.length;if(e===0)return 1;const n=o/e;let y=0;for(let b=0;b<e;b++){const N=r[b]-n;y+=N*N}const v=Math.sqrt(y/e);r.sort((b,N)=>b-N);const i=r[Math.floor(e*.25)]??0,A=(r[Math.floor(e*.75)]??0)-i;switch(S){case"sqrt":return Math.ceil(Math.sqrt(e));case"sturges":return Math.ceil(Math.log2(e)+1);case"rice":return Math.ceil(2*Math.pow(e,1/3));case"scott":{if(v===0)return 1;const b=3.5*v/Math.pow(e,1/3);return Math.ceil(l/b)}case"fd":{if(A===0)return tt(m,p,D,d,"sturges");const b=2*A/Math.pow(e,1/3);return Math.ceil(l/b)}case"doane":{const b=bt(r,n,v),N=Math.sqrt(6*(e-2)/((e+1)*(e+3)));return Math.ceil(1+Math.log2(e)+Math.log2(1+Math.abs(b)/N))}case"stone":return tt(m,p,D,d,"sturges");default:{const b=Math.ceil(Math.log2(e)+1),N=A===0?b:Math.ceil(l/(2*A/Math.pow(e,1/3)));return Math.max(b,N)}}}function bt(m,p,D){if(D===0)return 0;const d=m.length;let S=0;for(let l=0;l<d;l++)S+=Math.pow((m[l]-p)/D,3);return S/d}function ht(m,p,D,d){const S=Array.from(m.shape),l=S.length;if(d<0&&(d=l+d),d<0||d>=l)throw new Error(`axis ${d} is out of bounds for array of dimension ${l}`);const r=S[d];if(r<2)throw new Error("trapezoid requires at least 2 samples along axis");let o;if(p!==void 0){if(_(p.dtype))throw new Error("trapezoid requires real x values.");if(p.size!==r)throw new Error(`x array size (${p.size}) must match y axis size (${r})`);const w=p.data;o=new Float64Array(r);for(let f=0;f<r;f++)o[f]=Number(w[f])}else{o=new Float64Array(r);for(let w=0;w<r;w++)o[w]=w*D}const e=m.data,n=m.offset;if(l===1){let w=0,f=0;for(let c=0;c<r-1;c++){const t=e[(n+c)*2],u=e[(n+c)*2+1],h=e[(n+c+1)*2],F=e[(n+c+1)*2+1],a=o[c+1]-o[c];w+=.5*(t+h)*a,f+=.5*(u+F)*a}return new rt(w,f)}const y=[...S];y.splice(d,1);const v=y.reduce((w,f)=>w*f,1),i=I.empty(y,m.dtype),s=i.data,A=new Array(l);let b=1;for(let w=l-1;w>=0;w--)A[w]=b,b*=S[w];const N=new Array(y.length);b=1;for(let w=y.length-1;w>=0;w--)N[w]=b,b*=y[w];for(let w=0;w<v;w++){const f=[];let c=w;for(let a=0;a<y.length;a++){const g=Math.floor(c/N[a]);c%=N[a],f.push(g)}const t=[];let u=0;for(let a=0;a<l;a++)a===d?t.push(0):(t.push(f[u]),u++);let h=0,F=0;for(let a=0;a<r-1;a++){t[d]=a;let g=0;for(let M=0;M<l;M++)g+=t[M]*A[M];t[d]=a+1;let x=0;for(let M=0;M<l;M++)x+=t[M]*A[M];const R=o[a+1]-o[a];h+=.5*(Number(e[(n+g)*2])+Number(e[(n+x)*2]))*R,F+=.5*(Number(e[(n+g)*2+1])+Number(e[(n+x)*2+1]))*R}s[w*2]=h,s[w*2+1]=F}if(y.length===0){const w=Number(s[0]),f=Number(s[1]);return i.dispose(),new rt(w,f)}return i}function Bt(m,p,D=1,d=-1){if(_(m.dtype))return ht(m,p,D,d);p!==void 0&&W(p.dtype,"trapezoid","trapezoid requires real x values.");const S=Array.from(m.shape),l=S.length;if(d<0&&(d=l+d),d<0||d>=l)throw new Error(`axis ${d} is out of bounds for array of dimension ${l}`);const r=S[d];if(r<2)throw new Error("trapezoid requires at least 2 samples along axis");let o;if(p!==void 0){if(p.size!==r)throw new Error(`x array size (${p.size}) must match y axis size (${r})`);const t=p.data;o=new Float64Array(r);for(let u=0;u<r;u++)o[u]=Number(t[u])}else{o=new Float64Array(r);for(let t=0;t<r;t++)o[t]=t*D}const e=[...S];if(e.splice(d,1),l===1){const t=m.data,u=m.dtype;if(u==="float16"&&ot){const F=new Float16Array(1);F[0]=0;for(let a=0;a<r-1;a++){const g=Number(t[a]),x=Number(t[a+1]),R=o[a+1]-o[a];F[0]+=.5*(g+x)*R}return Number(F[0])}if(u==="float32"){const F=new Float32Array(1);F[0]=0;for(let a=0;a<r-1;a++){const g=Number(t[a]),x=Number(t[a+1]),R=o[a+1]-o[a];F[0]+=.5*(g+x)*R}return F[0]}let h=0;for(let F=0;F<r-1;F++){const a=Number(t[F]),g=Number(t[F+1]),x=o[F+1]-o[F];h+=.5*(a+g)*x}return h}const n=e.reduce((t,u)=>t*u,1),y=m.dtype,v=y==="float16"&&ot,i=y==="float32",s=v?"float16":i?"float32":"float64",A=I.empty(e,s),b=A.data,N=new Array(l);let w=1;for(let t=l-1;t>=0;t--)N[t]=w,w*=S[t];const f=new Array(e.length);w=1;for(let t=e.length-1;t>=0;t--)f[t]=w,w*=e[t];const c=m.data;for(let t=0;t<n;t++){const u=[];let h=t;for(let g=0;g<e.length;g++){const x=Math.floor(h/f[g]);h%=f[g],u.push(x)}const F=[];let a=0;for(let g=0;g<l;g++)g===d?F.push(0):(F.push(u[a]),a++);if(v){const g=new Float16Array(1);g[0]=0;for(let x=0;x<r-1;x++){F[d]=x;let R=0;for(let z=0;z<l;z++)R+=F[z]*N[z];F[d]=x+1;let M=0;for(let z=0;z<l;z++)M+=F[z]*N[z];g[0]+=.5*(Number(c[R])+Number(c[M]))*(o[x+1]-o[x])}b[t]=g[0]}else if(i){const g=new Float32Array(1);g[0]=0;for(let x=0;x<r-1;x++){F[d]=x;let R=0;for(let z=0;z<l;z++)R+=F[z]*N[z];F[d]=x+1;let M=0;for(let z=0;z<l;z++)M+=F[z]*N[z];g[0]+=.5*(Number(c[R])+Number(c[M]))*(o[x+1]-o[x])}b[t]=g[0]}else{let g=0;for(let x=0;x<r-1;x++){F[d]=x;let R=0;for(let B=0;B<l;B++)R+=F[B]*N[B];F[d]=x+1;let M=0;for(let B=0;B<l;B++)M+=F[B]*N[B];const z=Number(c[R]),C=Number(c[M]),E=o[x+1]-o[x];g+=.5*(z+C)*E}b[t]=g}}return e.length===0?(A.dispose(),Number(b[0])):A}export{xt as bincount,zt as convolve,Rt as corrcoef,dt as correlate,pt as cov,vt as digitize,st as histogram,Mt as histogram2d,Ct as histogram_bin_edges,It as histogramdd,Bt as trapezoid};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{ArrayStorage as
|
|
1
|
+
import{ArrayStorage as d}from"../storage.js";import{elementwiseUnaryOp as g}from"../internal/compute.js";import{isBigIntDType as R,isComplexDType as b,throwIfComplex as S,mathResultDtype as D,promoteDTypes as I}from"../dtype.js";function C(t){const o=D("bool"),u=d.empty(Array.from(t.shape),o),p=t.data,i=t.offset;for(let m=0;m<t.size;m++)u.data[m]=p[i+m];return u}import{wasmSin as q}from"../wasm/sin.js";import{wasmCos as T}from"../wasm/cos.js";import{wasmTan as O}from"../wasm/tan.js";import{wasmArcsin as Z}from"../wasm/arcsin.js";import{wasmArccos as H}from"../wasm/arccos.js";import{wasmArctan as P}from"../wasm/arctan.js";import{wasmArctan2 as U}from"../wasm/arctan2.js";import{wasmHypot as B,wasmHypotScalar as j}from"../wasm/hypot.js";function nt(t){const o=t.dtype;if(b(o)){const p=Array.from(t.shape),i=t.size,m=t.isCContiguous,l=d.empty(p,o),c=l.data;if(m){const s=t.data,e=t.offset;for(let r=0;r<i;r++){const a=s[(e+r)*2],n=s[(e+r)*2+1];c[r*2]=Math.sin(a)*Math.cosh(n),c[r*2+1]=Math.cos(a)*Math.sinh(n)}}else for(let s=0;s<i;s++){const e=t.iget(s),r=e.re,a=e.im;c[s*2]=Math.sin(r)*Math.cosh(a),c[s*2+1]=Math.cos(r)*Math.sinh(a)}return l}const u=q(t);return u||g(t,Math.sin,!1)}function at(t){const o=t.dtype;if(b(o)){const p=Array.from(t.shape),i=t.size,m=t.isCContiguous,l=d.empty(p,o),c=l.data;if(m){const s=t.data,e=t.offset;for(let r=0;r<i;r++){const a=s[(e+r)*2],n=s[(e+r)*2+1];c[r*2]=Math.cos(a)*Math.cosh(n),c[r*2+1]=-Math.sin(a)*Math.sinh(n)}}else for(let s=0;s<i;s++){const e=t.iget(s),r=e.re,a=e.im;c[s*2]=Math.cos(r)*Math.cosh(a),c[s*2+1]=-Math.sin(r)*Math.sinh(a)}return l}const u=T(t);return u||g(t,Math.cos,!1)}function ct(t){const o=t.dtype;if(b(o)){const p=Array.from(t.shape),i=t.size,m=t.isCContiguous,l=d.empty(p,o),c=l.data;if(m){const s=t.data,e=t.offset;for(let r=0;r<i;r++){const a=s[(e+r)*2],n=s[(e+r)*2+1],f=Math.cos(2*a)+Math.cosh(2*n);c[r*2]=Math.sin(2*a)/f,c[r*2+1]=Math.sinh(2*n)/f}}else for(let s=0;s<i;s++){const e=t.iget(s),r=e.re,a=e.im,n=Math.cos(2*r)+Math.cosh(2*a);c[s*2]=Math.sin(2*r)/n,c[s*2+1]=Math.sinh(2*a)/n}return l}const u=O(t);return u||g(t,Math.tan,!1)}function it(t){const o=t.dtype;if(b(o)){const p=Array.from(t.shape),i=t.size,m=t.isCContiguous,l=d.empty(p,o),c=l.data;if(m){const s=t.data,e=t.offset;for(let r=0;r<i;r++){const a=s[(e+r)*2],n=s[(e+r)*2+1],[f,y]=F(a,n);c[r*2]=f,c[r*2+1]=y}}else for(let s=0;s<i;s++){const e=t.iget(s),[r,a]=F(e.re,e.im);c[s*2]=r,c[s*2+1]=a}return l}const u=Z(t);return u||g(t,Math.asin,!1)}function F(t,o){const u=-o,p=t,i=t*t-o*o,m=2*t*o,l=1-i,c=-m,s=Math.sqrt(l*l+c*c),e=Math.sqrt((s+l)/2),r=(c>=0?1:-1)*Math.sqrt((s-l)/2),a=u+e,n=p+r,f=Math.sqrt(a*a+n*n),y=Math.log(f);let A=Math.atan2(n,a),M=-y;return Math.abs(o)<1e-15&&t>1&&(M=-M),[A,M]}function ft(t){const o=t.dtype;if(b(o)){const p=Array.from(t.shape),i=t.size,m=t.isCContiguous,l=d.empty(p,o),c=l.data;if(m){const s=t.data,e=t.offset;for(let r=0;r<i;r++){const a=s[(e+r)*2],n=s[(e+r)*2+1],[f,y]=v(a,n);c[r*2]=f,c[r*2+1]=y}}else for(let s=0;s<i;s++){const e=t.iget(s),[r,a]=v(e.re,e.im);c[s*2]=r,c[s*2+1]=a}return l}const u=H(t);return u||g(t,Math.acos,!1)}function v(t,o){const u=t*t-o*o,p=2*t*o,i=1-u,m=-p,l=Math.sqrt(i*i+m*m),c=Math.sqrt((l+i)/2),e=-((m>=0?1:-1)*Math.sqrt((l-i)/2)),r=c,a=t+e,n=o+r,f=Math.sqrt(a*a+n*n),y=Math.log(f);let A=Math.atan2(n,a),M=-y;return Math.abs(o)<1e-15&&t>1&&(M=-M),[A,M]}function ut(t){const o=t.dtype;if(b(o)){const p=Array.from(t.shape),i=t.size,m=t.isCContiguous,l=d.empty(p,o),c=l.data;if(m){const s=t.data,e=t.offset;for(let r=0;r<i;r++){const a=s[(e+r)*2],n=s[(e+r)*2+1],[f,y]=N(a,n);c[r*2]=f,c[r*2+1]=y}}else for(let s=0;s<i;s++){const e=t.iget(s),[r,a]=N(e.re,e.im);c[s*2]=r,c[s*2+1]=a}return l}const u=P(t);return u||g(t,Math.atan,!1)}function N(t,o){const u=-o,p=t,i=1-u,m=-p,l=1+u,c=p,s=l*l+c*c,e=(i*l+m*c)/s,r=(m*l-i*c)/s,a=Math.sqrt(e*e+r*r),n=Math.log(a);return[-Math.atan2(r,e)/2,n/2]}function w(t,o){return t.dtype==="bool"?w(C(t),typeof o=="number"?o:o.dtype==="bool"?C(o):o):typeof o!="number"&&o.dtype==="bool"?w(t,C(o)):(S(t.dtype,"arctan2","arctan2 is only defined for real numbers."),typeof o!="number"&&S(o.dtype,"arctan2","arctan2 is only defined for real numbers."),typeof o=="number"?E(t,o):k(t,o))}function k(t,o){const u=U(t,o);if(u)return u;const p=Array.from(t.shape),i=t.size,m=t.dtype,l=o.dtype,c=D(I(m,l)),s=d.empty(p,c),e=s.data,r=t.isCContiguous,a=o.isCContiguous;if(r&&a){const n=t.offset,f=o.offset;for(let y=0;y<i;y++){const h=Number(t.data[n+y]),A=Number(o.data[f+y]);e[y]=Math.atan2(h,A)}}else if(r){const n=t.offset;for(let f=0;f<i;f++){const y=Number(t.data[n+f]),h=Number(o.iget(f));e[f]=Math.atan2(y,h)}}else if(a){const n=o.offset;for(let f=0;f<i;f++){const y=Number(t.iget(f)),h=Number(o.data[n+f]);e[f]=Math.atan2(y,h)}}else for(let n=0;n<i;n++){const f=Number(t.iget(n)),y=Number(o.iget(n));e[n]=Math.atan2(f,y)}return s}function E(t,o){const u=t.dtype,p=Array.from(t.shape),i=t.size,m=D(u),l=d.empty(p,m),c=l.data;if(t.isCContiguous){const e=t.data,r=t.offset;if(R(u))for(let a=0;a<i;a++)c[a]=Math.atan2(Number(e[r+a]),o);else for(let a=0;a<i;a++)c[a]=Math.atan2(Number(e[r+a]),o)}else for(let e=0;e<i;e++)c[e]=Math.atan2(Number(t.iget(e)),o);return l}function z(t,o){return t.dtype==="bool"?z(C(t),typeof o=="number"?o:o.dtype==="bool"?C(o):o):typeof o!="number"&&o.dtype==="bool"?z(t,C(o)):(S(t.dtype,"hypot","hypot is only defined for real numbers."),typeof o!="number"&&S(o.dtype,"hypot","hypot is only defined for real numbers."),typeof o=="number"?J(t,o):G(t,o))}function G(t,o){const u=B(t,o);if(u)return u;const p=Array.from(t.shape),i=t.size,m=t.dtype,l=o.dtype,c=D(I(m,l)),s=d.empty(p,c),e=s.data,r=t.isCContiguous,a=o.isCContiguous;if(r&&a){const n=t.offset,f=o.offset;for(let y=0;y<i;y++){const h=Number(t.data[n+y]),A=Number(o.data[f+y]);e[y]=Math.hypot(h,A)}}else if(r){const n=t.offset;for(let f=0;f<i;f++){const y=Number(t.data[n+f]),h=Number(o.iget(f));e[f]=Math.hypot(y,h)}}else if(a){const n=o.offset;for(let f=0;f<i;f++){const y=Number(t.iget(f)),h=Number(o.data[n+f]);e[f]=Math.hypot(y,h)}}else for(let n=0;n<i;n++){const f=Number(t.iget(n)),y=Number(o.iget(n));e[n]=Math.hypot(f,y)}return s}function J(t,o){const u=j(t,o);if(u)return u;const p=t.dtype,i=Array.from(t.shape),m=t.size,l=D(p),c=d.empty(i,l),s=c.data;if(t.isCContiguous){const r=t.data,a=t.offset;if(R(p))for(let n=0;n<m;n++)s[n]=Math.hypot(Number(r[a+n]),o);else for(let n=0;n<m;n++)s[n]=Math.hypot(Number(r[a+n]),o)}else for(let r=0;r<m;r++)s[r]=Math.hypot(Number(t.iget(r)),o);return c}function K(t){S(t.dtype,"degrees","degrees is only defined for real numbers.");const o=180/Math.PI;return g(t,u=>u*o,!1)}function L(t){S(t.dtype,"radians","radians is only defined for real numbers.");const o=Math.PI/180;return g(t,u=>u*o,!1)}function lt(t){return L(t)}function mt(t){return K(t)}export{ft as arccos,it as arcsin,ut as arctan,w as arctan2,at as cos,lt as deg2rad,K as degrees,z as hypot,mt as rad2deg,L as radians,nt as sin,ct as tan};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{DEFAULT_DTYPE as
|
|
1
|
+
import{DEFAULT_DTYPE as A,getTypedArrayConstructor as b,isBigIntDType as E,isComplexDType as c}from"./dtype.js";import{Complex as h}from"./complex.js";import{wasmMalloc as y,getSharedMemory as d,registerForCleanup as C,unregisterCleanup as T}from"./wasm/runtime.js";const p=64,l=class l{constructor(t,e,r,n,s,i=null){this._isCContiguous=-1;this._data=t,this._shape=e,this._strides=r,this._offset=n,this._dtype=s,this._wasmRegion=i,i&&C(this,i)}get shape(){return this._shape}get ndim(){return this._shape.length}get size(){return this._shape.reduce((t,e)=>t*e,1)}get dtype(){return this._dtype}get data(){return this._data}get strides(){return this._strides}get offset(){return this._offset}get isWasmBacked(){return this._wasmRegion!==null}dispose(){this._wasmRegion&&(T(this),this._wasmRegion.release(),this._wasmRegion=null)}get wasmPtr(){return this._wasmRegion?this._wasmRegion.ptr:0}get wasmRegion(){return this._wasmRegion}get isCContiguous(){if(this._isCContiguous!==-1)return this._isCContiguous===1;const t=this._shape,e=this._strides,r=t.length;let n;if(r===0)n=!0;else if(r===1)n=e[0]===1;else{n=!0;let s=1;for(let i=r-1;i>=0;i--){if(e[i]!==s){n=!1;break}s*=t[i]}}return this._isCContiguous=n?1:0,n}get isFContiguous(){const t=this._shape,e=this._strides,r=t.length;if(r===0)return!0;if(r===1)return e[0]===1;let n=1;for(let s=0;s<r;s++){if(e[s]!==n)return!1;n*=t[s]}return!0}iget(t){const e=this._shape,r=this._strides,n=e.length,s=c(this._dtype);let i;if(n===0)i=this._offset;else{let u=t;i=this._offset;for(let m=0;m<n;m++){let o=1;for(let f=m+1;f<n;f++)o*=e[f];const a=Math.floor(u/o);u=u%o,i+=a*r[m]}}if(s){const u=i*2,m=this._data[u],o=this._data[u+1];return new h(m,o)}return this._data[i]}iset(t,e){const r=this._shape,n=this._strides,s=r.length,i=c(this._dtype);let u;if(s===0)u=this._offset;else{let m=t;u=this._offset;for(let o=0;o<s;o++){let a=1;for(let w=o+1;w<s;w++)a*=r[w];const f=Math.floor(m/a);m=m%a,u+=f*n[o]}}if(i){const m=u*2;let o,a;e instanceof h?(o=e.re,a=e.im):typeof e=="object"&&e!==null&&"re"in e?(o=e.re,a=e.im??0):(o=Number(e),a=0),this._data[m]=o,this._data[m+1]=a}else this._data[u]=e}get(...t){const e=this._strides;let r=this._offset;for(let n=0;n<t.length;n++)r+=t[n]*e[n];if(c(this._dtype)){const n=r*2,s=this._data[n],i=this._data[n+1];return new h(s,i)}return this._data[r]}set(t,e){const r=this._strides;let n=this._offset;for(let s=0;s<t.length;s++)n+=t[s]*r[s];if(c(this._dtype)){const s=n*2;let i,u;e instanceof h?(i=e.re,u=e.im):typeof e=="object"&&e!==null&&"re"in e?(i=e.re,u=e.im??0):(i=Number(e),u=0),this._data[s]=i,this._data[s+1]=u}else this._data[n]=e}copy(){const t=Array.from(this._shape),e=this._dtype,r=this.size,n=c(e),s=b(e);if(!s)throw new Error(`Cannot copy array with dtype ${e}`);const i=n?r*2:r,u=new s(i);if(this.isCContiguous&&this._offset===0)u.set(this._data.subarray(0,i));else if(E(e)){const o=u;for(let a=0;a<r;a++)o[a]=this.iget(a)}else if(n){const o=u;for(let a=0;a<r;a++){const f=this.iget(a);o[a*2]=f.re,o[a*2+1]=f.im}}else for(let o=0;o<r;o++)u[o]=this.iget(o);const m=y(u.byteLength);if(m){const o=d(),a=new s(o.buffer,m.ptr,i);return a.set(u),new l(a,t,l._computeStrides(t),0,e,m)}return new l(u,t,l._computeStrides(t),0,e)}static fromData(t,e,r,n,s){if(e.length>p)throw new Error(`maximum supported dimension for an ndarray is currently ${p}, found ${e.length}`);const i=n??l._computeStrides(e),u=s??0,m=d();if(t.buffer===m.buffer)return new l(t,e,i,u,r);const o=y(t.byteLength);if(o){const a=t.constructor,f=new a(m.buffer,o.ptr,t.length);return f.set(t),new l(f,e,i,u,r,o)}return new l(t,e,i,u,r)}static fromDataShared(t,e,r,n,s,i){return i&&i.retain(),new l(t,e,n,s,r,i)}static fromWasmRegion(t,e,r,n,s){const i=d(),u=new s(i.buffer,r.ptr,n);return new l(u,t,l._computeStrides(t),0,e,r)}static zeros(t,e=A){if(t.length>p)throw new Error(`maximum supported dimension for an ndarray is currently ${p}, found ${t.length}`);const r=t.reduce((a,f)=>a*f,1),n=c(e),s=b(e);if(!s)throw new Error(`Cannot create array with dtype ${e}`);const i=n?r*2:r,u=i*s.BYTES_PER_ELEMENT,m=y(u);if(m){const a=d();new Uint8Array(a.buffer,m.ptr,u).fill(0);const f=new s(a.buffer,m.ptr,i);return new l(f,t,l._computeStrides(t),0,e,m)}const o=new s(i);return new l(o,t,l._computeStrides(t),0,e)}static empty(t,e=A){const r=t.reduce((a,f)=>a*f,1),n=c(e),s=b(e);if(!s)throw new Error(`Cannot create array with dtype ${e}`);const i=n?r*2:r,u=i*s.BYTES_PER_ELEMENT,m=y(u);if(m){const a=d(),f=new s(a.buffer,m.ptr,i);return new l(f,t,l._computeStrides(t),0,e,m)}const o=new s(i);return new l(o,t,l._computeStrides(t),0,e)}static ones(t,e=A){const r=t.reduce((a,f)=>a*f,1),n=c(e),s=b(e);if(!s)throw new Error(`Cannot create array with dtype ${e}`);const i=n?r*2:r,u=i*s.BYTES_PER_ELEMENT,m=y(u);let o;if(m){const a=d();o=new s(a.buffer,m.ptr,i)}else o=new s(i);if(E(e))o.fill(BigInt(1));else if(n){const a=o;for(let f=0;f<r;f++)a[f*2]=1,a[f*2+1]=0}else o.fill(1);return new l(o,t,l._computeStrides(t),0,e,m??null)}static _computeStrides(t){const e=new Array(t.length);let r=1;for(let n=t.length-1;n>=0;n--)e[n]=r,r*=t[n];return e}};let g=l;typeof Symbol.dispose<"u"&&(g.prototype[Symbol.dispose]=g.prototype.dispose);function k(_){const t=new Array(_.length);let e=1;for(let r=_.length-1;r>=0;r--)t[r]=e,e*=_[r];return t}export{g as ArrayStorage,p as MAX_NDIM,k as computeStrides};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{abs_f64 as
|
|
1
|
+
import{abs_f64 as d,abs_f32 as b,abs_f16 as T,abs_i64 as w,abs_i32 as E,abs_i16 as _,abs_i8 as g}from"./bins/abs.wasm.js";import{wasmMalloc as C,resetScratchAllocator as P,resolveInputPtr as B}from"./runtime.js";import{ArrayStorage as i}from"../storage.js";import{wasmConfig as u}from"./config.js";const S=64,h={float64:d,float32:b,float16:T,int64:w,int32:E,int16:_,int8:g},f={float64:Float64Array,float32:Float32Array,float16:typeof Float16Array<"u"?Float16Array:Float32Array,int64:BigInt64Array,uint64:BigUint64Array,int32:Int32Array,uint32:Uint32Array,int16:Int16Array,uint16:Uint16Array,int8:Int8Array,uint8:Uint8Array};function D(r){if(!r.isCContiguous)return null;const n=r.size;if(n<S*u.thresholdMultiplier)return null;const t=r.dtype;if(t==="uint8"||t==="uint16"||t==="uint32"||t==="uint64"){const p=f[t],y=r.offset,m=r.data.subarray(y,y+n),c=new p(m);return i.fromData(c,Array.from(r.shape),t)}const e=h[t],a=f[t];if(!e||!a)return null;const s=a.BYTES_PER_ELEMENT,l=n*s,o=C(l);if(!o)return null;u.wasmCallCount++,P();const A=B(r.data,r.isWasmBacked,r.wasmPtr,r.offset,n,s);return e(A,o.ptr,n),i.fromWasmRegion(Array.from(r.shape),t,o,n,a)}export{D as wasmAbs};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{add_f64 as
|
|
1
|
+
import{add_f64 as h,add_f32 as k,add_i64 as f,add_i32 as p,add_i16 as A,add_i8 as _,add_c128 as F,add_c64 as M,add_scalar_f64 as D,add_scalar_f32 as z,add_scalar_i64 as E,add_scalar_i32 as T,add_scalar_i16 as P,add_scalar_i8 as b,add_scalar_c128 as N,add_scalar_c64 as I}from"./bins/add.wasm.js";import{wasmMalloc as g,resetScratchAllocator as w,resolveInputPtr as m}from"./runtime.js";import{ArrayStorage as B}from"../storage.js";import{promoteDTypes as L}from"../dtype.js";import{wasmConfig as c}from"./config.js";const S=64,W={float64:h,float32:k,int64:f,uint64:f,int32:p,uint32:p,int16:A,uint16:A,int8:_,uint8:_,complex128:F,complex64:M},U={float64:D,float32:z,int64:E,uint64:E,int32:T,uint32:T,int16:P,uint16:P,int8:b,uint8:b,complex128:N,complex64:I},C={float64:Float64Array,float32:Float32Array,complex128:Float64Array,complex64:Float32Array,int64:BigInt64Array,uint64:BigUint64Array,int32:Int32Array,uint32:Uint32Array,int16:Int16Array,uint16:Uint16Array,int8:Int8Array,uint8:Uint8Array},R={complex128:2,complex64:2};function j(r,t){if(!r.isCContiguous||!t.isCContiguous||r.dtype!==t.dtype||r.size!==t.size)return null;const a=r.size;if(a<S*c.thresholdMultiplier)return null;const n=L(r.dtype,t.dtype),u=W[n],o=C[n];if(!u||!o)return null;const i=R[n]??1,l=o.BYTES_PER_ELEMENT,e=a*i,d=e*l,s=g(d);if(!s)return null;c.wasmCallCount++,w();const y=m(r.data,r.isWasmBacked,r.wasmPtr,r.offset*i,e,l),x=m(t.data,t.isWasmBacked,t.wasmPtr,t.offset*i,e,l);return u(y,x,s.ptr,a),B.fromWasmRegion(Array.from(r.shape),n,s,e,o)}function q(r,t){if(!r.isCContiguous)return null;const a=r.size;if(a<S*c.thresholdMultiplier)return null;const n=r.dtype,u=U[n],o=C[n];if(!u||!o)return null;const i=R[n]??1,l=o.BYTES_PER_ELEMENT,e=a*i,d=e*l,s=g(d);if(!s)return null;c.wasmCallCount++,w();const y=m(r.data,r.isWasmBacked,r.wasmPtr,r.offset*i,e,l);return u(y,s.ptr,a,t),B.fromWasmRegion(Array.from(r.shape),n,s,e,o)}export{j as wasmAdd,q as wasmAddScalar};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{all_finite_f64 as i,all_finite_f32 as a,all_finite_u16 as f}from"./bins/all_finite.wasm.js";import{resetScratchAllocator as s,resolveInputPtr as m}from"./runtime.js";import{effectiveDType as p}from"../dtype.js";import{wasmConfig as u}from"./config.js";const c={float64:i,float32:a,float16:f},y={float64:8,float32:4,float16:2};function F(t){if(!t.isCContiguous)return null;const e=p(t.dtype),r=c[e],o=y[e];if(!r||!o)return null;const l=t.size;u.wasmCallCount++,s();const n=m(t.data,t.isWasmBacked,t.wasmPtr,t.offset,l,o);return r(n,l)===1}export{F as wasmAllFinite};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{arccos_f64 as
|
|
1
|
+
import{arccos_f64 as F,arccos_f32 as d,arccos_i64_f64 as P,arccos_u64_f64 as h,arccos_i32_f64 as B,arccos_u32_f64 as C,arccos_i16_f32 as k,arccos_u16_f32 as D,arccos_i8_f32 as W,arccos_u8_f32 as S}from"./bins/arccos.wasm.js";import{wasmMalloc as l,resetScratchAllocator as i,resolveInputPtr as p,f16InputToScratchF32 as K,f32OutputToF16Region as w}from"./runtime.js";import{ArrayStorage as s}from"../storage.js";import{effectiveDType as O,isComplexDType as v,hasFloat16 as I}from"../dtype.js";import{wasmConfig as u}from"./config.js";const U=64,M={float64:F,float32:d},x={int64:P,uint64:h,int32:B,uint32:C},z={int16:k,uint16:D,int8:W,uint8:S},E={int64:8,uint64:8,int32:4,uint32:4,int16:2,uint16:2,int8:1,uint8:1};function G(r){if(!r.isCContiguous)return null;const t=r.size;if(t<U*u.thresholdMultiplier)return null;const n=O(r.dtype);if(v(n))return null;if(n==="float16"){const o=l(t*4);if(!o)return null;u.wasmCallCount++,i();const e=K(r,t);d(e,o.ptr,t);const a=w(o,t);return o.release(),a?s.fromWasmRegion(Array.from(r.shape),n,a,t,Float16Array):null}const A=M[n];if(A){const o=n==="float32",e=o?4:8,a=o?Float32Array:Float64Array,f=t*e,y=l(f);if(!y)return null;u.wasmCallCount++,i();const T=p(r.data,r.isWasmBacked,r.wasmPtr,r.offset,t,e);return A(T,y.ptr,t),s.fromWasmRegion(Array.from(r.shape),n,y,t,a)}const c=E[n];if(!c)return null;const b=z[n];if(b){const o=t*4,e=l(o);if(!e)return null;u.wasmCallCount++,i();const a=p(r.data,r.isWasmBacked,r.wasmPtr,r.offset,t,c);if(b(a,e.ptr,t),I&&(n==="int8"||n==="uint8"||n==="bool")){const f=w(e,t);return e.release(),f?s.fromWasmRegion(Array.from(r.shape),"float16",f,t,Float16Array):null}return s.fromWasmRegion(Array.from(r.shape),"float32",e,t,Float32Array)}const g=x[n];if(!g)return null;const _=t*8,m=l(_);if(!m)return null;u.wasmCallCount++,i();const R=p(r.data,r.isWasmBacked,r.wasmPtr,r.offset,t,c);return g(R,m.ptr,t),s.fromWasmRegion(Array.from(r.shape),"float64",m,t,Float64Array)}export{G as wasmArccos};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{arcsin_f64 as
|
|
1
|
+
import{arcsin_f64 as B,arcsin_f32 as d,arcsin_i64_f64 as F,arcsin_u64_f64 as P,arcsin_i32_f64 as h,arcsin_u32_f64 as C,arcsin_i16_f32 as k,arcsin_u16_f32 as D,arcsin_i8_f32 as W,arcsin_u8_f32 as S}from"./bins/arcsin.wasm.js";import{wasmMalloc as l,resetScratchAllocator as c,resolveInputPtr as p,f16InputToScratchF32 as K,f32OutputToF16Region as w}from"./runtime.js";import{ArrayStorage as f}from"../storage.js";import{effectiveDType as O,isComplexDType as v,hasFloat16 as I}from"../dtype.js";import{wasmConfig as i}from"./config.js";const U=64,M={float64:B,float32:d},x={int64:F,uint64:P,int32:h,uint32:C},z={int16:k,uint16:D,int8:W,uint8:S},E={int64:8,uint64:8,int32:4,uint32:4,int16:2,uint16:2,int8:1,uint8:1};function G(r){if(!r.isCContiguous)return null;const n=r.size;if(n<U*i.thresholdMultiplier)return null;const t=O(r.dtype);if(v(t))return null;if(t==="float16"){const e=n*4,o=l(e);if(!o)return null;i.wasmCallCount++,c();const a=K(r,n);d(a,o.ptr,n);const s=w(o,n);return o.release(),s?f.fromWasmRegion(Array.from(r.shape),t,s,n,Float16Array):null}const A=M[t];if(A){const u=t==="float32",e=u?4:8,o=u?Float32Array:Float64Array,a=n*e,s=l(a);if(!s)return null;i.wasmCallCount++,c();const T=p(r.data,r.isWasmBacked,r.wasmPtr,r.offset,n,e);return A(T,s.ptr,n),f.fromWasmRegion(Array.from(r.shape),t,s,n,o)}const m=E[t];if(!m)return null;const b=z[t];if(b){const u=n*4,e=l(u);if(!e)return null;i.wasmCallCount++,c();const o=p(r.data,r.isWasmBacked,r.wasmPtr,r.offset,n,m);if(b(o,e.ptr,n),I&&(t==="int8"||t==="uint8"||t==="bool")){const a=w(e,n);return e.release(),a?f.fromWasmRegion(Array.from(r.shape),"float16",a,n,Float16Array):null}return f.fromWasmRegion(Array.from(r.shape),"float32",e,n,Float32Array)}const g=x[t];if(!g)return null;const _=n*8,y=l(_);if(!y)return null;i.wasmCallCount++,c();const R=p(r.data,r.isWasmBacked,r.wasmPtr,r.offset,n,m);return g(R,y.ptr,n),f.fromWasmRegion(Array.from(r.shape),"float64",y,n,Float64Array)}export{G as wasmArcsin};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{arctan_f64 as
|
|
1
|
+
import{arctan_f64 as B,arctan_f32 as d,arctan_i64_f64 as F,arctan_u64_f64 as P,arctan_i32_f64 as h,arctan_u32_f64 as C,arctan_i16_f32 as k,arctan_u16_f32 as D,arctan_i8_f32 as W,arctan_u8_f32 as S}from"./bins/arctan.wasm.js";import{wasmMalloc as i,resetScratchAllocator as c,resolveInputPtr as p,f16InputToScratchF32 as K,f32OutputToF16Region as w}from"./runtime.js";import{ArrayStorage as f}from"../storage.js";import{effectiveDType as O,isComplexDType as v,hasFloat16 as I}from"../dtype.js";import{wasmConfig as l}from"./config.js";const U=64,M={float64:B,float32:d},x={int64:F,uint64:P,int32:h,uint32:C},z={int16:k,uint16:D,int8:W,uint8:S},E={int64:8,uint64:8,int32:4,uint32:4,int16:2,uint16:2,int8:1,uint8:1};function G(r){if(!r.isCContiguous)return null;const t=r.size;if(t<U*l.thresholdMultiplier)return null;const n=O(r.dtype);if(v(n))return null;if(n==="float16"){const e=t*4,o=i(e);if(!o)return null;l.wasmCallCount++,c();const a=K(r,t);d(a,o.ptr,t);const s=w(o,t);return o.release(),s?f.fromWasmRegion(Array.from(r.shape),n,s,t,Float16Array):null}const A=M[n];if(A){const u=n==="float32",e=u?4:8,o=u?Float32Array:Float64Array,a=t*e,s=i(a);if(!s)return null;l.wasmCallCount++,c();const T=p(r.data,r.isWasmBacked,r.wasmPtr,r.offset,t,e);return A(T,s.ptr,t),f.fromWasmRegion(Array.from(r.shape),n,s,t,o)}const m=E[n];if(!m)return null;const b=z[n];if(b){const u=t*4,e=i(u);if(!e)return null;l.wasmCallCount++,c();const o=p(r.data,r.isWasmBacked,r.wasmPtr,r.offset,t,m);if(b(o,e.ptr,t),I&&(n==="int8"||n==="uint8"||n==="bool")){const a=w(e,t);return e.release(),a?f.fromWasmRegion(Array.from(r.shape),"float16",a,t,Float16Array):null}return f.fromWasmRegion(Array.from(r.shape),"float32",e,t,Float32Array)}const g=x[n];if(!g)return null;const _=t*8,y=i(_);if(!y)return null;l.wasmCallCount++,c();const R=p(r.data,r.isWasmBacked,r.wasmPtr,r.offset,t,m);return g(R,y.ptr,t),f.fromWasmRegion(Array.from(r.shape),"float64",y,t,Float64Array)}export{G as wasmArctan};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{arctan2_f64 as C,arctan2_f32 as _,arctan2_i64_f64 as F,arctan2_u64_f64 as k,arctan2_i32_f64 as E,arctan2_u32_f64 as h,arctan2_i16_f32 as W,arctan2_u16_f32 as D,arctan2_i8_f32 as S,arctan2_u8_f32 as K}from"./bins/arctan2.wasm.js";import{wasmMalloc as p,resetScratchAllocator as A,resolveInputPtr as s,f16InputToScratchF32 as g,f32OutputToF16Region as B}from"./runtime.js";import{ArrayStorage as i}from"../storage.js";import{effectiveDType as M,promoteDTypes as z,isComplexDType as I,hasFloat16 as v}from"../dtype.js";import{wasmConfig as y}from"./config.js";const L=64,N={float64:C,float32:_,float16:_},x={int64:F,uint64:k,int32:E,uint32:h},H={int16:W,uint16:D,int8:S,uint8:K},O={int64:8,uint64:8,int32:4,uint32:4,int16:2,uint16:2,int8:1,uint8:1},Y={float64:Float64Array,float32:Float32Array,float16:Float32Array};function U(r,n){if(!r.isCContiguous||!n.isCContiguous||r.dtype!==n.dtype||r.size!==n.size)return null;const t=r.size;if(t<L*y.thresholdMultiplier)return null;const e=M(z(r.dtype,n.dtype));if(I(e))return null;const d=N[e];if(d){const m=Y[e],a=m.BYTES_PER_ELEMENT,o=p(t*a);if(!o)return null;y.wasmCallCount++,A();let l,f;if(e==="float16"?(l=g(r,t),f=g(n,t)):(l=s(r.data,r.isWasmBacked,r.wasmPtr,r.offset,t,a),f=s(n.data,n.isWasmBacked,n.wasmPtr,n.offset,t,a)),d(l,f,o.ptr,t),e==="float16"){const P=B(o,t);return o.release(),P?i.fromWasmRegion(Array.from(r.shape),e,P,t,Float16Array):null}return i.fromWasmRegion(Array.from(r.shape),e,o,t,m)}const u=O[e];if(!u)return null;const T=H[e];if(T){const m=t*4,a=p(m);if(!a)return null;y.wasmCallCount++,A();const o=s(r.data,r.isWasmBacked,r.wasmPtr,r.offset,t,u),l=s(n.data,n.isWasmBacked,n.wasmPtr,n.offset,t,u);if(T(o,l,a.ptr,t),v&&(e==="int8"||e==="uint8"||e==="bool")){const f=B(a,t);return a.release(),f?i.fromWasmRegion(Array.from(r.shape),"float16",f,t,Float16Array):null}return i.fromWasmRegion(Array.from(r.shape),"float32",a,t,Float32Array)}const w=x[e];if(!w)return null;const c=p(t*8);if(!c)return null;y.wasmCallCount++,A();const R=s(r.data,r.isWasmBacked,r.wasmPtr,r.offset,t,u),b=s(n.data,n.isWasmBacked,n.wasmPtr,n.offset,t,u);return w(R,b,c.ptr,t),i.fromWasmRegion(Array.from(r.shape),"float64",c,t,Float64Array)}export{U as wasmArctan2};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{argpartition_f64 as
|
|
1
|
+
import{argpartition_f64 as I,argpartition_f32 as d,argpartition_i64 as M,argpartition_u64 as S,argpartition_i32 as N,argpartition_u32 as W,argpartition_i16 as P,argpartition_u16 as v,argpartition_i8 as Y,argpartition_u8 as K,argpartition_slices_f64 as H,argpartition_slices_f32 as h,argpartition_slices_i64 as j,argpartition_slices_u64 as O,argpartition_slices_i32 as V,argpartition_slices_u32 as q,argpartition_slices_i16 as x,argpartition_slices_u16 as G,argpartition_slices_i8 as J,argpartition_slices_u8 as Q}from"./bins/argpartition.wasm.js";import{wasmMalloc as X,resetScratchAllocator as b,resolveInputPtr as Z,scratchCopyIn as B,scratchAlloc as _,getSharedMemory as w,f16InputToScratchF32 as C}from"./runtime.js";import{ArrayStorage as $}from"../storage.js";import{effectiveDType as z}from"../dtype.js";import{wasmConfig as g}from"./config.js";const D=64,U={float64:I,float32:d,int64:M,uint64:S,int32:N,uint32:W,int16:P,uint16:v,int8:Y,uint8:K,float16:d},rr={float64:H,float32:h,int64:j,uint64:O,int32:V,uint32:q,int16:x,uint16:G,int8:J,uint8:Q,float16:h},T={float64:Float64Array,float32:Float32Array,int64:BigInt64Array,uint64:BigUint64Array,int32:Int32Array,uint32:Uint32Array,int16:Int16Array,uint16:Uint16Array,int8:Int8Array,uint8:Uint8Array,float16:Float32Array};function sr(r,n,t,s,a,f,m,i){if(a<2)return!1;const p=rr[i];if(p&&t[0]===0&&f>1&&t[1]===a&&s[0]===0&&s[1]===a){if(!T[i])return!1;const F=n.length*8;g.wasmCallCount++,b();const L=i==="float16"?C({data:r,isWasmBacked:!1,wasmPtr:0,offset:0},r.length):B(r),E=_(F);p(L,E,a,f,m);const R=w();return new Uint8Array(n.buffer,n.byteOffset,n.byteLength).set(new Uint8Array(R.buffer,E,n.byteLength)),!0}const o=U[i],y=T[i];if(!o||!y)return!1;const u=y.BYTES_PER_ELEMENT,l=n.length*8;g.wasmCallCount++,b();const A=i==="float16"?C({data:r,isWasmBacked:!1,wasmPtr:0,offset:0},r.length):B(r),e=_(l);for(let c=0;c<f;c++)o(A+t[c]*u,e+s[c]*8,a,m);const k=w();return new Uint8Array(n.buffer,n.byteOffset,n.byteLength).set(new Uint8Array(k.buffer,e,n.byteLength)),!0}function fr(r,n){if(!r.isCContiguous)return null;const t=r.size;if(t<D*g.thresholdMultiplier)return null;const s=z(r.dtype),a=U[s],f=T[s];if(!a||!f)return null;const m=t*8,i=X(m);if(!i)return null;g.wasmCallCount++,b();const p=f.BYTES_PER_ELEMENT;let o,y=a;if(s==="float16"){const u=t*2,l=w();if(o=_(u),r.isWasmBacked)new Uint8Array(l.buffer,o,u).set(new Uint8Array(l.buffer,r.wasmPtr+r.offset*2,u));else{const e=r.data.subarray(r.offset,r.offset+t);new Uint8Array(l.buffer,o,u).set(new Uint8Array(e.buffer,e.byteOffset,e.byteLength))}const A=new Uint16Array(l.buffer,o,t);for(let e=0;e<t;e++)A[e]&32768&&(A[e]^=32767);y=P}else o=Z(r.data,r.isWasmBacked,r.wasmPtr,r.offset,t,p);return y(o,i.ptr,t,n),$.fromWasmRegion(Array.from(r.shape),"float64",i,t,Float64Array)}export{fr as wasmArgpartition,sr as wasmArgpartitionSlices};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{argsort_f64 as
|
|
1
|
+
import{argsort_f64 as I,argsort_f32 as T,argsort_i64 as M,argsort_u64 as U,argsort_i32 as S,argsort_u32 as N,argsort_i16 as v,argsort_u16 as W,argsort_i8 as Y,argsort_u8 as H,argsort_slices_f64 as K,argsort_slices_f32 as E,argsort_slices_i64 as j,argsort_slices_u64 as q,argsort_slices_i32 as G,argsort_slices_u32 as J,argsort_slices_i16 as O,argsort_slices_u16 as Q,argsort_slices_i8 as V,argsort_slices_u8 as X,argsort_c128 as Z,argsort_c64 as $,argsort_slices_c128 as z,argsort_slices_c64 as D}from"./bins/argsort.wasm.js";import{wasmMalloc as rr,resetScratchAllocator as f,resolveInputPtr as tr,scratchCopyIn as P,scratchAlloc as w,getSharedMemory as C,f16InputToScratchF32 as g}from"./runtime.js";import{ArrayStorage as or}from"../storage.js";import{effectiveDType as nr}from"../dtype.js";import{wasmConfig as m}from"./config.js";const er=64,h={float64:I,float32:T,int64:M,uint64:U,int32:S,uint32:N,int16:v,uint16:W,int8:Y,uint8:H,complex128:Z,complex64:$,float16:T},sr={float64:K,float32:E,int64:j,uint64:q,int32:G,uint32:J,int16:O,uint16:Q,int8:V,uint8:X,complex128:z,complex64:D,float16:E},A={float64:Float64Array,float32:Float32Array,int64:BigInt64Array,uint64:BigUint64Array,int32:Int32Array,uint32:Uint32Array,int16:Int16Array,uint16:Uint16Array,int8:Int8Array,uint8:Uint8Array,complex128:Float64Array,complex64:Float32Array,float16:Float32Array};function yr(t,r,n,s,e,i,o){if(e<2)return!1;const y=o==="complex128"||o==="complex64",a=sr[o];if(a&&n[0]===0&&i>1&&n[1]===e&&s[0]===0&&s[1]===e){if(!A[o])return!1;const L=r.length*8;m.wasmCallCount++,f();const R=o==="float16"?g({data:t,isWasmBacked:!1,wasmPtr:0,offset:0},t.length):P(t),b=w(L);a(R,b,e,i);const k=C();return new Uint8Array(r.buffer,r.byteOffset,r.byteLength).set(new Uint8Array(k.buffer,b,r.byteLength)),!0}const c=h[o],u=A[o];if(!c||!u)return!1;const _=u.BYTES_PER_ELEMENT,d=y?_*2:_,B=r.length*8;m.wasmCallCount++,f();const F=o==="float16"?g({data:t,isWasmBacked:!1,wasmPtr:0,offset:0},t.length):P(t),p=w(B);for(let l=0;l<i;l++)c(F+n[l]*d,p+s[l]*8,e);const x=C();return new Uint8Array(r.buffer,r.byteOffset,r.byteLength).set(new Uint8Array(x.buffer,p,r.byteLength)),!0}function fr(t){if(!t.isCContiguous)return null;const r=t.size;if(r<er*m.thresholdMultiplier)return null;const n=nr(t.dtype),s=h[n],e=A[n];if(!s||!e)return null;const o=n==="complex128"||n==="complex64"?r*2:r,y=r*8,a=rr(y);if(!a)return null;m.wasmCallCount++,f();const c=e.BYTES_PER_ELEMENT,u=n==="float16"?g(t,r):tr(t.data,t.isWasmBacked,t.wasmPtr,t.offset,o,c);return s(u,a.ptr,r),or.fromWasmRegion(Array.from(t.shape),"float64",a,r,Float64Array)}export{fr as wasmArgsort,yr as wasmArgsortSlices};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{getSharedMemory as C,setHeapBase as i}from"../runtime.js";const a="AGFzbQEAAAABBwFgA39/
|
|
1
|
+
import{getSharedMemory as C,setHeapBase as i}from"../runtime.js";const a="AGFzbQEAAAABBwFgA39/fwACDwEDZW52Bm1lbW9yeQIAEQMIBwAAAAAAAAAGCQF/AUGAiMAACwdGBwdhYnNfZjY0AAAHYWJzX2YzMgABB2Fic19mMTYAAgdhYnNfaTY0AAMHYWJzX2kzMgAEB2Fic19pMTYABQZhYnNfaTgABgr6HQf1BAIGfwF7AkACQCACQX5xIgMNAEEAIQQMAQsgA0F/akEBdkEBaiIFQQNxIQYCQAJAIANBB08NAEEAIQQMAQsgBUF8cSIHQQF0IQRBACEDA0AgASADaiIFIAAgA2oiCP0AAwD9DP////////9//////////38iCf1O/QsDACAFQRBqIAhBEGr9AAMAIAn9Tv0LAwAgBUEgaiAIQSBq/QADACAJ/U79CwMAIAVBMGogCEEwav0AAwAgCf1O/QsDACADQcAAaiEDIAdBfGoiBw0ACwsgBkUNACAEIAZBAXRqIQggACAEQQN0IgVqIQMgASAFaiEFA0AgBSAD/QADAP0M/////////3//////////f/1O/QsDACADQRBqIQMgBUEQaiEFIAZBf2oiBg0ACyAIIQQLAkAgAiAETQ0AAkAgAiAEayIGQQRJDQAgASAAa0EQSQ0AIAAgBEEDdCIFaiEDIAEgBWohBSAEIAZBfnEiB2ohBCAHIQgDQCAFIAP9AAMA/ewB/QsDACADQRBqIQMgBUEQaiEFIAhBfmoiCA0ACyAGIAdGDQELIAQhBgJAIAIgBGtBA3EiCEUNACAEIAhqIQYgASAEQQN0IgVqIQMgACAFaiEFA0AgAyAFKwMAmTkDACADQQhqIQMgBUEIaiEFIAhBf2oiCA0ACwsgBCACa0F8Sw0AIAZBA3QhCCACIAZrIQYDQCABIAhqIgMgACAIaiIFKwMAmTkDACADQQhqIAVBCGorAwCZOQMAIANBEGogBUEQaisDAJk5AwAgA0EYaiAFQRhqKwMAmTkDACABQSBqIQEgAEEgaiEAIAZBfGoiBg0ACwsL+QQCBn8BewJAAkAgAkF8cSIDDQBBACEEDAELIANBf2pBAnZBAWoiBUEDcSEGAkACQCADQQ1PDQBBACEEDAELIAVB/P///wdxIgdBAnQhBEEAIQMDQCABIANqIgUgACADaiII/QACAP0M////f////3////9/////fyIJ/U79CwIAIAVBEGogCEEQav0AAgAgCf1O/QsCACAFQSBqIAhBIGr9AAIAIAn9Tv0LAgAgBUEwaiAIQTBq/QACACAJ/U79CwIAIANBwABqIQMgB0F8aiIHDQALCyAGRQ0AIAQgBkECdGohCCAAIARBAnQiBWohAyABIAVqIQUDQCAFIAP9AAIA/Qz///9/////f////3////9//U79CwIAIANBEGohAyAFQRBqIQUgBkF/aiIGDQALIAghBAsCQCACIARNDQACQCACIARrIgZBBEkNACABIABrQRBJDQAgACAEQQJ0IgVqIQMgASAFaiEFIAQgBkF8cSIHaiEEIAchCANAIAUgA/0AAgD94AH9CwIAIANBEGohAyAFQRBqIQUgCEF8aiIIDQALIAYgB0YNAQsgBCEGAkAgAiAEa0EDcSIIRQ0AIAQgCGohBiABIARBAnQiBWohAyAAIAVqIQUDQCADIAUqAgCLOAIAIANBBGohAyAFQQRqIQUgCEF/aiIIDQALCyAEIAJrQXxLDQAgBkECdCEIIAIgBmshBgNAIAEgCGoiAyAAIAhqIgUqAgCLOAIAIANBBGogBUEEaioCAIs4AgAgA0EIaiAFQQhqKgIAizgCACADQQxqIAVBDGoqAgCLOAIAIAFBEGohASAAQRBqIQAgBkF8aiIGDQALCwueBQIGfwF7AkACQCACQXhxIgMNAEEAIQQMAQsgA0F/akEDdkEBaiIFQQNxIQYCQAJAIANBGU8NAEEAIQQMAQsgBUH8////A3EiB0EDdCEEQQAhAwNAIAEgA2oiBSAAIANqIgj9AAEA/Qz/f/9//3//f/9//3//f/9/Ign9Tv0LAQAgBUEQaiAIQRBq/QABACAJ/U79CwEAIAVBIGogCEEgav0AAQAgCf1O/QsBACAFQTBqIAhBMGr9AAEAIAn9Tv0LAQAgA0HAAGohAyAHQXxqIgcNAAsLIAZFDQAgBCAGQQN0aiEIIAAgBEEBdCIFaiEDIAEgBWohBQNAIAUgA/0AAQD9DP9//3//f/9//3//f/9//3/9Tv0LAQAgA0EQaiEDIAVBEGohBSAGQX9qIgYNAAsgCCEECwJAIAIgBE0NAAJAIAIgBGsiBkEISQ0AIAEgAGtBEEkNACAAIARBAXQiBWohAyABIAVqIQUgBCAGQXhxIgdqIQQgByEIA0AgBSAD/QABAP0M/3//f/9//3//f/9//3//f/1O/QsBACADQRBqIQMgBUEQaiEFIAhBeGoiCA0ACyAGIAdGDQELIAQhBgJAIAIgBGtBA3EiCEUNACAEIAhqIQYgASAEQQF0IgVqIQMgACAFaiEFA0AgAyAFLwEAQf//AXE7AQAgA0ECaiEDIAVBAmohBSAIQX9qIggNAAsLIAQgAmtBfEsNACAGQQF0IQggAiAGayEGA0AgASAIaiIDIAAgCGoiBS8BAEH//wFxOwEAIANBAmogBUECai8BAEH//wFxOwEAIANBBGogBUEEai8BAEH//wFxOwEAIANBBmogBUEGai8BAEH//wFxOwEAIAFBCGohASAAQQhqIQAgBkF8aiIGDQALCwuOAgIEfwF+AkAgAkUNAEEAIQMCQCACQQRJDQAgASAAa0EQSQ0AIAJBfnEiAyEEIAEhBSAAIQYDQCAFIAb9AAMA/cAB/QsDACAFQRBqIQUgBkEQaiEGIARBfmoiBA0ACyACIANGDQELIANBAXIhBQJAIAJBAXFFDQAgASADQQN0IgZqIAAgBmopAwAiByAHQj+HIgeFIAd9NwMAIAUhAwsgAiAFRg0AIAIgA2shBCAAIANBA3QiBmohBSABIAZqIQYDQCAGIAUpAwAiByAHQj+HIgeFIAd9NwMAIAZBCGogBUEIaikDACIHIAdCP4ciB4UgB303AwAgBUEQaiEFIAZBEGohBiAEQX5qIgQNAAsLC60EAQZ/AkACQCACQXxxIgMNAEEAIQQMAQsgA0F/akECdkEBaiIFQQNxIQYCQAJAIANBDU8NAEEAIQQMAQsgBUH8////B3EiB0ECdCEEQQAhAwNAIAEgA2oiBSAAIANqIgj9AAIA/aAB/QsCACAFQRBqIAhBEGr9AAIA/aAB/QsCACAFQSBqIAhBIGr9AAIA/aAB/QsCACAFQTBqIAhBMGr9AAIA/aAB/QsCACADQcAAaiEDIAdBfGoiBw0ACwsgBkUNACAEIAZBAnRqIQggACAEQQJ0IgVqIQMgASAFaiEFA0AgBSAD/QACAP2gAf0LAgAgA0EQaiEDIAVBEGohBSAGQX9qIgYNAAsgCCEECwJAIAIgBE0NAAJAIAIgBGsiBkEESQ0AIAEgAGtBEEkNACABIARBAnQiBWohAyAAIAVqIQUgBCAGQXxxIgdqIQQgByEIA0AgAyAF/QACAP2gAf0LAgAgA0EQaiEDIAVBEGohBSAIQXxqIggNAAsgBiAHRg0BCyAEQQFqIQMCQCACIARrQQFxRQ0AIAEgBEECdCIFaiAAIAVqKAIAIgUgBUEfdSIFcyAFazYCACADIQQLIAIgA0YNACACIARrIQggACAEQQJ0IgVqIQMgASAFaiEFA0AgBSADKAIAIgYgBkEfdSIGcyAGazYCACAFQQRqIANBBGooAgAiBiAGQR91IgZzIAZrNgIAIANBCGohAyAFQQhqIQUgCEF+aiIIDQALCwuwBAEGfwJAAkAgAkF4cSIDDQBBACEEDAELIANBf2pBA3ZBAWoiBUEDcSEGAkACQCADQRlPDQBBACEEDAELIAVB/P///wNxIgdBA3QhBEEAIQMDQCABIANqIgUgACADaiII/QABAP2AAf0LAQAgBUEQaiAIQRBq/QABAP2AAf0LAQAgBUEgaiAIQSBq/QABAP2AAf0LAQAgBUEwaiAIQTBq/QABAP2AAf0LAQAgA0HAAGohAyAHQXxqIgcNAAsLIAZFDQAgBCAGQQN0aiEIIAAgBEEBdCIFaiEDIAEgBWohBQNAIAUgA/0AAQD9gAH9CwEAIANBEGohAyAFQRBqIQUgBkF/aiIGDQALIAghBAsCQCACIARNDQACQCACIARrIgZBCEkNACABIABrQRBJDQAgASAEQQF0IgVqIQMgACAFaiEFIAQgBkF4cSIHaiEEIAchCANAIAMgBf0AAQD9gAH9CwEAIANBEGohAyAFQRBqIQUgCEF4aiIIDQALIAYgB0YNAQsgBEEBaiEDAkAgAiAEa0EBcUUNACABIARBAXQiBWogACAFai8BACIFIAXBQQ91IgVzIAVrOwEAIAMhBAsgAiADRg0AIAIgBGshCCAAIARBAXQiBWohAyABIAVqIQUDQCAFIAMvAQAiBiAGwUEPdSIGcyAGazsBACAFQQJqIANBAmovAQAiBiAGwUEPdSIGcyAGazsBACADQQRqIQMgBUEEaiEFIAhBfmoiCA0ACwsL9AMBBn8CQAJAIAJBcHEiAw0AQQAhAwwBCyADQX9qQQR2QQFqIgRBA3EhBQJAAkAgA0ExTw0AQQAhAwwBCyAEQfz///8BcSEGQQAhAwNAIAEgA2oiBCAAIANqIgf9AAAA/WD9CwAAIARBEGogB0EQav0AAAD9YP0LAAAgBEEgaiAHQSBq/QAAAP1g/QsAACAEQTBqIAdBMGr9AAAA/WD9CwAAIANBwABqIQMgBkF8aiIGDQALCyAFRQ0AA0AgASADaiAAIANq/QAAAP1g/QsAACADQRBqIQMgBUF/aiIFDQALCwJAIAIgA00NAAJAIAIgA2siBkEQSQ0AIAEgAGtBEEkNACABIANqIQQgACADaiEHIAMgBkFwcSIIaiEDIAghBQNAIAQgB/0AAAD9YP0LAAAgBEEQaiEEIAdBEGohByAFQXBqIgUNAAsgBiAIRg0BCyADQQFqIQQCQCACIANrQQFxRQ0AIAEgA2ogACADai0AACIDIAPAQQd1IgNzIANrOgAAIAQhAwsgAiAERg0AIAAgA2ohBCABIANqIQcgAiADayEDA0AgByAELQAAIgUgBcBBB3UiBXMgBWs6AAAgB0EBaiAEQQFqLQAAIgUgBcBBB3UiBXMgBWs6AAAgBEECaiEEIAdBAmohByADQX5qIgMNAAsLCw==";let E=null;function g(){if(E)return E;const A=atob(a),Q=new Uint8Array(A.length);for(let B=0;B<A.length;B++)Q[B]=A.charCodeAt(B);E=new WebAssembly.Instance(new WebAssembly.Module(Q),{env:{memory:C()}});const I=E.exports.__heap_base;return I&&typeof I.value=="number"&&i(I.value),E}function s(A,Q,I){g().exports.abs_f64(A,Q,I)}function D(A,Q,I){g().exports.abs_f32(A,Q,I)}function F(A,Q,I){g().exports.abs_f16(A,Q,I)}function G(A,Q,I){g().exports.abs_i64(A,Q,I)}function e(A,Q,I){g().exports.abs_i32(A,Q,I)}function n(A,Q,I){g().exports.abs_i16(A,Q,I)}function N(A,Q,I){g().exports.abs_i8(A,Q,I)}export{F as abs_f16,D as abs_f32,s as abs_f64,n as abs_i16,e as abs_i32,G as abs_i64,N as abs_i8};
|