numpy-ts 1.1.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.
Files changed (456) hide show
  1. package/README.md +3 -11
  2. package/dist/esm/common/broadcasting.js +1 -1
  3. package/dist/esm/common/dtype.js +1 -1
  4. package/dist/esm/common/float16-conv.js +1 -0
  5. package/dist/esm/common/internal/compute.js +1 -1
  6. package/dist/esm/common/internal/indexing.js +1 -1
  7. package/dist/esm/common/ndarray-core.js +1 -1
  8. package/dist/esm/common/ops/advanced.js +1 -1
  9. package/dist/esm/common/ops/arithmetic.js +1 -1
  10. package/dist/esm/common/ops/bitwise.js +1 -1
  11. package/dist/esm/common/ops/comparison.js +1 -1
  12. package/dist/esm/common/ops/complex.js +1 -1
  13. package/dist/esm/common/ops/exponential.js +1 -1
  14. package/dist/esm/common/ops/fft.js +1 -1
  15. package/dist/esm/common/ops/formatting.js +1 -1
  16. package/dist/esm/common/ops/gradient.js +1 -1
  17. package/dist/esm/common/ops/hyperbolic.js +1 -1
  18. package/dist/esm/common/ops/linalg.js +2 -2
  19. package/dist/esm/common/ops/logic.js +1 -1
  20. package/dist/esm/common/ops/random.js +1 -1
  21. package/dist/esm/common/ops/reduction.js +1 -1
  22. package/dist/esm/common/ops/rounding.js +1 -1
  23. package/dist/esm/common/ops/sets.js +1 -1
  24. package/dist/esm/common/ops/shape.js +1 -1
  25. package/dist/esm/common/ops/sorting.js +1 -1
  26. package/dist/esm/common/ops/statistics.js +1 -1
  27. package/dist/esm/common/ops/trig.js +1 -1
  28. package/dist/esm/common/storage.js +1 -1
  29. package/dist/esm/common/wasm/abs.js +1 -1
  30. package/dist/esm/common/wasm/add.js +1 -1
  31. package/dist/esm/common/wasm/all_finite.js +1 -0
  32. package/dist/esm/common/wasm/arccos.js +1 -1
  33. package/dist/esm/common/wasm/arcsin.js +1 -1
  34. package/dist/esm/common/wasm/arctan.js +1 -1
  35. package/dist/esm/common/wasm/arctan2.js +1 -0
  36. package/dist/esm/common/wasm/argpartition.js +1 -1
  37. package/dist/esm/common/wasm/argsort.js +1 -1
  38. package/dist/esm/common/wasm/bins/abs.wasm.js +1 -1
  39. package/dist/esm/common/wasm/bins/add.wasm.js +1 -1
  40. package/dist/esm/common/wasm/bins/all_finite.wasm.js +1 -0
  41. package/dist/esm/common/wasm/bins/alloc.wasm.js +1 -0
  42. package/dist/esm/common/wasm/bins/arccos.wasm.js +1 -1
  43. package/dist/esm/common/wasm/bins/arcsin.wasm.js +1 -1
  44. package/dist/esm/common/wasm/bins/arctan.wasm.js +1 -1
  45. package/dist/esm/common/wasm/bins/arctan2.wasm.js +1 -0
  46. package/dist/esm/common/wasm/bins/argpartition.wasm.js +1 -1
  47. package/dist/esm/common/wasm/bins/argsort.wasm.js +1 -1
  48. package/dist/esm/common/wasm/bins/bitwise_and.wasm.js +1 -1
  49. package/dist/esm/common/wasm/bins/bitwise_count.wasm.js +1 -1
  50. package/dist/esm/common/wasm/bins/bitwise_not.wasm.js +1 -1
  51. package/dist/esm/common/wasm/bins/bitwise_or.wasm.js +1 -1
  52. package/dist/esm/common/wasm/bins/bitwise_xor.wasm.js +1 -1
  53. package/dist/esm/common/wasm/bins/cholesky.wasm.js +1 -1
  54. package/dist/esm/common/wasm/bins/clip.wasm.js +1 -1
  55. package/dist/esm/common/wasm/bins/convolve.wasm.js +1 -1
  56. package/dist/esm/common/wasm/bins/copysign.wasm.js +1 -1
  57. package/dist/esm/common/wasm/bins/correlate.wasm.js +1 -1
  58. package/dist/esm/common/wasm/bins/cos.wasm.js +1 -1
  59. package/dist/esm/common/wasm/bins/cosh.wasm.js +1 -1
  60. package/dist/esm/common/wasm/bins/cross.wasm.js +1 -1
  61. package/dist/esm/common/wasm/bins/diff.wasm.js +1 -1
  62. package/dist/esm/common/wasm/bins/divide.wasm.js +1 -1
  63. package/dist/esm/common/wasm/bins/divmod.wasm.js +1 -0
  64. package/dist/esm/common/wasm/bins/dot_float-relaxed.wasm.js +1 -0
  65. package/dist/esm/common/wasm/bins/dot_float.wasm.js +1 -0
  66. package/dist/esm/common/wasm/bins/dot_int.wasm.js +1 -0
  67. package/dist/esm/common/wasm/bins/exp.wasm.js +1 -1
  68. package/dist/esm/common/wasm/bins/exp2.wasm.js +1 -1
  69. package/dist/esm/common/wasm/bins/fft.wasm.js +1 -1
  70. package/dist/esm/common/wasm/bins/frexp.wasm.js +1 -1
  71. package/dist/esm/common/wasm/bins/gather.wasm.js +1 -1
  72. package/dist/esm/common/wasm/bins/gcd.wasm.js +1 -1
  73. package/dist/esm/common/wasm/bins/gradient.wasm.js +1 -1
  74. package/dist/esm/common/wasm/bins/heaviside.wasm.js +1 -1
  75. package/dist/esm/common/wasm/bins/hypot.wasm.js +1 -1
  76. package/dist/esm/common/wasm/bins/indices.wasm.js +1 -1
  77. package/dist/esm/common/wasm/bins/inner_float-relaxed.wasm.js +1 -0
  78. package/dist/esm/common/wasm/bins/inner_float.wasm.js +1 -0
  79. package/dist/esm/common/wasm/bins/inner_int.wasm.js +1 -0
  80. package/dist/esm/common/wasm/bins/isfinite.wasm.js +1 -0
  81. package/dist/esm/common/wasm/bins/isnan.wasm.js +1 -0
  82. package/dist/esm/common/wasm/bins/kron.wasm.js +1 -1
  83. package/dist/esm/common/wasm/bins/ldexp.wasm.js +1 -1
  84. package/dist/esm/common/wasm/bins/left_shift.wasm.js +1 -1
  85. package/dist/esm/common/wasm/bins/lexsort.wasm.js +1 -1
  86. package/dist/esm/common/wasm/bins/logaddexp.wasm.js +1 -1
  87. package/dist/esm/common/wasm/bins/logical_and.wasm.js +1 -1
  88. package/dist/esm/common/wasm/bins/logical_not.wasm.js +1 -1
  89. package/dist/esm/common/wasm/bins/logical_or.wasm.js +1 -1
  90. package/dist/esm/common/wasm/bins/logical_xor.wasm.js +1 -1
  91. package/dist/esm/common/wasm/bins/lu.wasm.js +1 -0
  92. package/dist/esm/common/wasm/bins/matmul_float-relaxed.wasm.js +1 -0
  93. package/dist/esm/common/wasm/bins/matmul_float.wasm.js +1 -0
  94. package/dist/esm/common/wasm/bins/matmul_int.wasm.js +1 -0
  95. package/dist/esm/common/wasm/bins/matvec_float-relaxed.wasm.js +1 -0
  96. package/dist/esm/common/wasm/bins/matvec_float.wasm.js +1 -0
  97. package/dist/esm/common/wasm/bins/matvec_int.wasm.js +1 -0
  98. package/dist/esm/common/wasm/bins/max.wasm.js +1 -1
  99. package/dist/esm/common/wasm/bins/min.wasm.js +1 -1
  100. package/dist/esm/common/wasm/bins/mul.wasm.js +1 -1
  101. package/dist/esm/common/wasm/bins/neg.wasm.js +1 -1
  102. package/dist/esm/common/wasm/bins/outer.wasm.js +1 -1
  103. package/dist/esm/common/wasm/bins/pad.wasm.js +1 -1
  104. package/dist/esm/common/wasm/bins/partition.wasm.js +1 -1
  105. package/dist/esm/common/wasm/bins/power.wasm.js +1 -1
  106. package/dist/esm/common/wasm/bins/qr.wasm.js +1 -1
  107. package/dist/esm/common/wasm/bins/reciprocal.wasm.js +1 -1
  108. package/dist/esm/common/wasm/bins/reduce_all.wasm.js +1 -1
  109. package/dist/esm/common/wasm/bins/reduce_any.wasm.js +1 -1
  110. package/dist/esm/common/wasm/bins/reduce_argmax.wasm.js +1 -1
  111. package/dist/esm/common/wasm/bins/reduce_argmin.wasm.js +1 -1
  112. package/dist/esm/common/wasm/bins/reduce_count_nz.wasm.js +1 -1
  113. package/dist/esm/common/wasm/bins/reduce_max.wasm.js +1 -1
  114. package/dist/esm/common/wasm/bins/reduce_mean.wasm.js +1 -1
  115. package/dist/esm/common/wasm/bins/reduce_min.wasm.js +1 -1
  116. package/dist/esm/common/wasm/bins/reduce_nanmax.wasm.js +1 -1
  117. package/dist/esm/common/wasm/bins/reduce_nanmin.wasm.js +1 -1
  118. package/dist/esm/common/wasm/bins/reduce_nansum.wasm.js +1 -1
  119. package/dist/esm/common/wasm/bins/reduce_prod.wasm.js +1 -1
  120. package/dist/esm/common/wasm/bins/reduce_std.wasm.js +1 -1
  121. package/dist/esm/common/wasm/bins/reduce_sum.wasm.js +1 -1
  122. package/dist/esm/common/wasm/bins/reduce_var.wasm.js +1 -1
  123. package/dist/esm/common/wasm/bins/repeat.wasm.js +1 -1
  124. package/dist/esm/common/wasm/bins/right_shift.wasm.js +1 -1
  125. package/dist/esm/common/wasm/bins/rng.wasm.js +1 -0
  126. package/dist/esm/common/wasm/bins/roll.wasm.js +1 -1
  127. package/dist/esm/common/wasm/bins/searchsorted.wasm.js +1 -1
  128. package/dist/esm/common/wasm/bins/sign.wasm.js +1 -1
  129. package/dist/esm/common/wasm/bins/signbit.wasm.js +1 -0
  130. package/dist/esm/common/wasm/bins/sin.wasm.js +1 -0
  131. package/dist/esm/common/wasm/bins/sinh.wasm.js +1 -1
  132. package/dist/esm/common/wasm/bins/sort.wasm.js +1 -1
  133. package/dist/esm/common/wasm/bins/sqrt.wasm.js +1 -1
  134. package/dist/esm/common/wasm/bins/square.wasm.js +1 -1
  135. package/dist/esm/common/wasm/bins/sub.wasm.js +1 -1
  136. package/dist/esm/common/wasm/bins/svd.wasm.js +1 -1
  137. package/dist/esm/common/wasm/bins/tan.wasm.js +1 -1
  138. package/dist/esm/common/wasm/bins/tanh.wasm.js +1 -1
  139. package/dist/esm/common/wasm/bins/tile.wasm.js +1 -1
  140. package/dist/esm/common/wasm/bins/unravel_index.wasm.js +1 -0
  141. package/dist/esm/common/wasm/bins/vdot.wasm.js +1 -1
  142. package/dist/esm/common/wasm/bins/vecdot_float-relaxed.wasm.js +1 -0
  143. package/dist/esm/common/wasm/bins/vecdot_float.wasm.js +1 -0
  144. package/dist/esm/common/wasm/bins/vecdot_int.wasm.js +1 -0
  145. package/dist/esm/common/wasm/bins/vecmat_float-relaxed.wasm.js +1 -0
  146. package/dist/esm/common/wasm/bins/vecmat_float.wasm.js +1 -0
  147. package/dist/esm/common/wasm/bins/vecmat_int.wasm.js +1 -0
  148. package/dist/esm/common/wasm/bins/vector_norm-relaxed.wasm.js +1 -0
  149. package/dist/esm/common/wasm/bins/vector_norm.wasm.js +1 -0
  150. package/dist/esm/common/wasm/bitwise_and.js +1 -1
  151. package/dist/esm/common/wasm/bitwise_count.js +1 -1
  152. package/dist/esm/common/wasm/bitwise_not.js +1 -1
  153. package/dist/esm/common/wasm/bitwise_or.js +1 -1
  154. package/dist/esm/common/wasm/bitwise_xor.js +1 -1
  155. package/dist/esm/common/wasm/cholesky.js +1 -1
  156. package/dist/esm/common/wasm/clip.js +1 -1
  157. package/dist/esm/common/wasm/config.js +1 -1
  158. package/dist/esm/common/wasm/convolve.js +1 -1
  159. package/dist/esm/common/wasm/copysign.js +1 -1
  160. package/dist/esm/common/wasm/correlate.js +1 -1
  161. package/dist/esm/common/wasm/cos.js +1 -1
  162. package/dist/esm/common/wasm/cosh.js +1 -1
  163. package/dist/esm/common/wasm/cross.js +1 -1
  164. package/dist/esm/common/wasm/detect.js +1 -0
  165. package/dist/esm/common/wasm/diff.js +1 -1
  166. package/dist/esm/common/wasm/divide.js +1 -1
  167. package/dist/esm/common/wasm/divmod.js +1 -0
  168. package/dist/esm/common/wasm/dot.js +1 -1
  169. package/dist/esm/common/wasm/exp.js +1 -1
  170. package/dist/esm/common/wasm/exp2.js +1 -1
  171. package/dist/esm/common/wasm/fft.js +1 -1
  172. package/dist/esm/common/wasm/frexp.js +1 -1
  173. package/dist/esm/common/wasm/gather.js +1 -1
  174. package/dist/esm/common/wasm/gcd.js +1 -1
  175. package/dist/esm/common/wasm/gradient.js +1 -1
  176. package/dist/esm/common/wasm/heaviside.js +1 -1
  177. package/dist/esm/common/wasm/hypot.js +1 -1
  178. package/dist/esm/common/wasm/indices.js +1 -1
  179. package/dist/esm/common/wasm/inner.js +1 -1
  180. package/dist/esm/common/wasm/isfinite.js +1 -0
  181. package/dist/esm/common/wasm/isnan.js +1 -0
  182. package/dist/esm/common/wasm/kron.js +1 -1
  183. package/dist/esm/common/wasm/ldexp.js +1 -1
  184. package/dist/esm/common/wasm/left_shift.js +1 -1
  185. package/dist/esm/common/wasm/lexsort.js +1 -1
  186. package/dist/esm/common/wasm/logaddexp.js +1 -1
  187. package/dist/esm/common/wasm/logical_and.js +1 -1
  188. package/dist/esm/common/wasm/logical_not.js +1 -1
  189. package/dist/esm/common/wasm/logical_or.js +1 -1
  190. package/dist/esm/common/wasm/logical_xor.js +1 -1
  191. package/dist/esm/common/wasm/lu.js +1 -0
  192. package/dist/esm/common/wasm/matmul.js +1 -1
  193. package/dist/esm/common/wasm/matvec.js +1 -1
  194. package/dist/esm/common/wasm/max.js +1 -1
  195. package/dist/esm/common/wasm/min.js +1 -1
  196. package/dist/esm/common/wasm/mul.js +1 -1
  197. package/dist/esm/common/wasm/neg.js +1 -1
  198. package/dist/esm/common/wasm/outer.js +1 -1
  199. package/dist/esm/common/wasm/pad.js +1 -1
  200. package/dist/esm/common/wasm/partition.js +1 -1
  201. package/dist/esm/common/wasm/power.js +1 -1
  202. package/dist/esm/common/wasm/qr.js +1 -1
  203. package/dist/esm/common/wasm/reciprocal.js +1 -1
  204. package/dist/esm/common/wasm/reduce_all.js +1 -1
  205. package/dist/esm/common/wasm/reduce_any.js +1 -1
  206. package/dist/esm/common/wasm/reduce_argmax.js +1 -1
  207. package/dist/esm/common/wasm/reduce_argmin.js +1 -1
  208. package/dist/esm/common/wasm/reduce_count_nz.js +1 -1
  209. package/dist/esm/common/wasm/reduce_max.js +1 -1
  210. package/dist/esm/common/wasm/reduce_mean.js +1 -1
  211. package/dist/esm/common/wasm/reduce_min.js +1 -1
  212. package/dist/esm/common/wasm/reduce_nanmax.js +1 -1
  213. package/dist/esm/common/wasm/reduce_nanmin.js +1 -1
  214. package/dist/esm/common/wasm/reduce_nansum.js +1 -1
  215. package/dist/esm/common/wasm/reduce_prod.js +1 -1
  216. package/dist/esm/common/wasm/reduce_quantile.js +1 -1
  217. package/dist/esm/common/wasm/reduce_std.js +1 -1
  218. package/dist/esm/common/wasm/reduce_sum.js +1 -1
  219. package/dist/esm/common/wasm/reduce_var.js +1 -1
  220. package/dist/esm/common/wasm/repeat.js +1 -1
  221. package/dist/esm/common/wasm/right_shift.js +1 -1
  222. package/dist/esm/common/wasm/rng.js +1 -0
  223. package/dist/esm/common/wasm/roll.js +1 -1
  224. package/dist/esm/common/wasm/runtime.js +1 -1
  225. package/dist/esm/common/wasm/searchsorted.js +1 -1
  226. package/dist/esm/common/wasm/sign.js +1 -1
  227. package/dist/esm/common/wasm/signbit.js +1 -0
  228. package/dist/esm/common/wasm/sin.js +1 -0
  229. package/dist/esm/common/wasm/sinh.js +1 -1
  230. package/dist/esm/common/wasm/sort.js +1 -1
  231. package/dist/esm/common/wasm/sqrt.js +1 -1
  232. package/dist/esm/common/wasm/square.js +1 -1
  233. package/dist/esm/common/wasm/sub.js +1 -1
  234. package/dist/esm/common/wasm/svd.js +1 -1
  235. package/dist/esm/common/wasm/tan.js +1 -1
  236. package/dist/esm/common/wasm/tanh.js +1 -1
  237. package/dist/esm/common/wasm/tile.js +1 -1
  238. package/dist/esm/common/wasm/unravel_index.js +1 -0
  239. package/dist/esm/common/wasm/vdot.js +1 -1
  240. package/dist/esm/common/wasm/vecdot.js +1 -1
  241. package/dist/esm/common/wasm/vecmat.js +1 -1
  242. package/dist/esm/common/wasm/vector_norm.js +1 -0
  243. package/dist/esm/core/advanced.js +1 -1
  244. package/dist/esm/core/arithmetic.js +1 -1
  245. package/dist/esm/core/bitwise.js +1 -1
  246. package/dist/esm/core/complex.js +1 -1
  247. package/dist/esm/core/creation.js +1 -1
  248. package/dist/esm/core/formatting.js +1 -1
  249. package/dist/esm/core/gradient.js +1 -1
  250. package/dist/esm/core/index.js +1 -1
  251. package/dist/esm/core/linalg.js +1 -1
  252. package/dist/esm/core/logic.js +1 -1
  253. package/dist/esm/core/polynomial.js +1 -1
  254. package/dist/esm/core/reduction.js +1 -1
  255. package/dist/esm/core/rounding.js +1 -1
  256. package/dist/esm/core/sets.js +1 -1
  257. package/dist/esm/core/shape-extra.js +1 -1
  258. package/dist/esm/core/shape.js +1 -1
  259. package/dist/esm/core/sorting.js +1 -1
  260. package/dist/esm/core/statistics.js +1 -1
  261. package/dist/esm/core/trig.js +1 -1
  262. package/dist/esm/core/typechecking.js +1 -1
  263. package/dist/esm/core/types.js +1 -1
  264. package/dist/esm/core/utility.js +1 -1
  265. package/dist/esm/core.js +1 -1
  266. package/dist/esm/full/index.js +1 -1
  267. package/dist/esm/full/ndarray.js +1 -1
  268. package/dist/esm/index.js +1 -1
  269. package/dist/esm/io/file-ops.js +1 -0
  270. package/dist/esm/io/filesystem.js +1 -0
  271. package/dist/esm/io/index.js +1 -1
  272. package/dist/esm/io/npy/format.js +1 -1
  273. package/dist/esm/io/npy/index.js +1 -1
  274. package/dist/esm/io/npy/parser.js +1 -1
  275. package/dist/esm/io/npy/serializer.js +2 -2
  276. package/dist/esm/io/npz/index.js +1 -1
  277. package/dist/esm/io/npz/parser.js +1 -1
  278. package/dist/esm/io/npz/serializer.js +1 -1
  279. package/dist/esm/io/txt/index.js +1 -1
  280. package/dist/esm/io/txt/parser.js +1 -1
  281. package/dist/esm/io/zip/index.js +1 -1
  282. package/dist/esm/io/zip/reader.js +1 -1
  283. package/dist/esm/io/zip/writer.js +1 -1
  284. package/dist/esm/node.js +1 -1
  285. package/dist/numpy-ts.browser.js +6 -6
  286. package/dist/types/common/dtype.d.ts +55 -4
  287. package/dist/types/common/float16-conv.d.ts +27 -0
  288. package/dist/types/common/internal/indexing.d.ts +9 -21
  289. package/dist/types/common/ndarray-core.d.ts +20 -0
  290. package/dist/types/common/ops/advanced.d.ts +17 -2
  291. package/dist/types/common/ops/complex.d.ts +19 -1
  292. package/dist/types/common/ops/linalg.d.ts +1 -1
  293. package/dist/types/common/ops/random.d.ts +10 -5
  294. package/dist/types/common/ops/reduction.d.ts +2 -2
  295. package/dist/types/common/ops/sets.d.ts +2 -1
  296. package/dist/types/common/ops/shape.d.ts +2 -2
  297. package/dist/types/common/ops/statistics.d.ts +2 -1
  298. package/dist/types/common/storage.d.ts +54 -2
  299. package/dist/types/common/wasm/all_finite.d.ts +8 -0
  300. package/dist/types/common/wasm/arccos.d.ts +4 -2
  301. package/dist/types/common/wasm/arcsin.d.ts +4 -2
  302. package/dist/types/common/wasm/arctan.d.ts +4 -2
  303. package/dist/types/common/wasm/arctan2.d.ts +17 -0
  304. package/dist/types/common/wasm/argpartition.d.ts +8 -3
  305. package/dist/types/common/wasm/argsort.d.ts +8 -3
  306. package/dist/types/common/wasm/bins/abs.wasm.d.ts +1 -0
  307. package/dist/types/common/wasm/bins/all_finite.wasm.d.ts +4 -0
  308. package/dist/types/common/wasm/bins/alloc.wasm.d.ts +6 -0
  309. package/dist/types/common/wasm/bins/arccos.wasm.d.ts +8 -2
  310. package/dist/types/common/wasm/bins/arcsin.wasm.d.ts +8 -2
  311. package/dist/types/common/wasm/bins/arctan.wasm.d.ts +8 -2
  312. package/dist/types/common/wasm/bins/arctan2.wasm.d.ts +11 -0
  313. package/dist/types/common/wasm/bins/convolve.wasm.d.ts +6 -0
  314. package/dist/types/common/wasm/bins/copysign.wasm.d.ts +2 -0
  315. package/dist/types/common/wasm/bins/correlate.wasm.d.ts +6 -0
  316. package/dist/types/common/wasm/bins/cos.wasm.d.ts +8 -0
  317. package/dist/types/common/wasm/bins/cosh.wasm.d.ts +8 -2
  318. package/dist/types/common/wasm/bins/divmod.wasm.d.ts +11 -0
  319. package/dist/types/common/wasm/bins/dot_float-relaxed.wasm.d.ts +5 -0
  320. package/dist/types/common/wasm/bins/dot_float.wasm.d.ts +5 -0
  321. package/dist/types/common/wasm/bins/dot_int.wasm.d.ts +5 -0
  322. package/dist/types/common/wasm/bins/exp.wasm.d.ts +8 -2
  323. package/dist/types/common/wasm/bins/exp2.wasm.d.ts +8 -2
  324. package/dist/types/common/wasm/bins/fft.wasm.d.ts +11 -0
  325. package/dist/types/common/wasm/bins/frexp.wasm.d.ts +1 -0
  326. package/dist/types/common/wasm/bins/gather.wasm.d.ts +0 -1
  327. package/dist/types/common/wasm/bins/gcd.wasm.d.ts +8 -0
  328. package/dist/types/common/wasm/bins/indices.wasm.d.ts +6 -2
  329. package/dist/types/common/wasm/bins/inner_float-relaxed.wasm.d.ts +5 -0
  330. package/dist/types/common/wasm/bins/inner_float.wasm.d.ts +5 -0
  331. package/dist/types/common/wasm/bins/inner_int.wasm.d.ts +5 -0
  332. package/dist/types/common/wasm/bins/isfinite.wasm.d.ts +4 -0
  333. package/dist/types/common/wasm/bins/isnan.wasm.d.ts +4 -0
  334. package/dist/types/common/wasm/bins/lexsort.wasm.d.ts +4 -4
  335. package/dist/types/common/wasm/bins/logical_and.wasm.d.ts +2 -0
  336. package/dist/types/common/wasm/bins/logical_not.wasm.d.ts +1 -0
  337. package/dist/types/common/wasm/bins/logical_or.wasm.d.ts +2 -0
  338. package/dist/types/common/wasm/bins/logical_xor.wasm.d.ts +2 -0
  339. package/dist/types/common/wasm/bins/lu.wasm.d.ts +7 -0
  340. package/dist/types/common/wasm/bins/matmul_float-relaxed.wasm.d.ts +5 -0
  341. package/dist/types/common/wasm/bins/matmul_float.wasm.d.ts +5 -0
  342. package/dist/types/common/wasm/bins/matmul_int.wasm.d.ts +5 -0
  343. package/dist/types/common/wasm/bins/matvec_float-relaxed.wasm.d.ts +5 -0
  344. package/dist/types/common/wasm/bins/matvec_float.wasm.d.ts +5 -0
  345. package/dist/types/common/wasm/bins/matvec_int.wasm.d.ts +5 -0
  346. package/dist/types/common/wasm/bins/neg.wasm.d.ts +1 -0
  347. package/dist/types/common/wasm/bins/qr.wasm.d.ts +0 -1
  348. package/dist/types/common/wasm/bins/reciprocal.wasm.d.ts +8 -4
  349. package/dist/types/common/wasm/bins/reduce_argmax.wasm.d.ts +8 -0
  350. package/dist/types/common/wasm/bins/reduce_argmin.wasm.d.ts +8 -0
  351. package/dist/types/common/wasm/bins/reduce_max.wasm.d.ts +1 -0
  352. package/dist/types/common/wasm/bins/reduce_min.wasm.d.ts +1 -0
  353. package/dist/types/common/wasm/bins/reduce_prod.wasm.d.ts +2 -0
  354. package/dist/types/common/wasm/bins/reduce_sum.wasm.d.ts +8 -2
  355. package/dist/types/common/wasm/bins/rng.wasm.d.ts +57 -0
  356. package/dist/types/common/wasm/bins/sign.wasm.d.ts +1 -0
  357. package/dist/types/common/wasm/bins/signbit.wasm.d.ts +8 -0
  358. package/dist/types/common/wasm/bins/sin.wasm.d.ts +11 -0
  359. package/dist/types/common/wasm/bins/sinh.wasm.d.ts +8 -2
  360. package/dist/types/common/wasm/bins/sort.wasm.d.ts +6 -4
  361. package/dist/types/common/wasm/bins/sqrt.wasm.d.ts +2 -2
  362. package/dist/types/common/wasm/bins/svd.wasm.d.ts +1 -0
  363. package/dist/types/common/wasm/bins/tan.wasm.d.ts +8 -0
  364. package/dist/types/common/wasm/bins/tanh.wasm.d.ts +8 -2
  365. package/dist/types/common/wasm/bins/unravel_index.wasm.d.ts +4 -0
  366. package/dist/types/common/wasm/bins/vecdot_float-relaxed.wasm.d.ts +5 -0
  367. package/dist/types/common/wasm/bins/vecdot_float.wasm.d.ts +5 -0
  368. package/dist/types/common/wasm/bins/vecdot_int.wasm.d.ts +5 -0
  369. package/dist/types/common/wasm/bins/vecmat_float-relaxed.wasm.d.ts +5 -0
  370. package/dist/types/common/wasm/bins/vecmat_float.wasm.d.ts +5 -0
  371. package/dist/types/common/wasm/bins/vecmat_int.wasm.d.ts +5 -0
  372. package/dist/types/common/wasm/bins/vector_norm-relaxed.wasm.d.ts +3 -0
  373. package/dist/types/common/wasm/bins/vector_norm.wasm.d.ts +3 -0
  374. package/dist/types/common/wasm/config.d.ts +25 -0
  375. package/dist/types/common/wasm/convolve.d.ts +1 -1
  376. package/dist/types/common/wasm/cos.d.ts +4 -2
  377. package/dist/types/common/wasm/cosh.d.ts +4 -2
  378. package/dist/types/common/wasm/detect.d.ts +17 -0
  379. package/dist/types/common/wasm/divide.d.ts +4 -0
  380. package/dist/types/common/wasm/divmod.d.ts +13 -0
  381. package/dist/types/common/wasm/exp.d.ts +4 -2
  382. package/dist/types/common/wasm/exp2.d.ts +4 -2
  383. package/dist/types/common/wasm/fft.d.ts +36 -0
  384. package/dist/types/common/wasm/frexp.d.ts +1 -0
  385. package/dist/types/common/wasm/gather.d.ts +4 -0
  386. package/dist/types/common/wasm/gcd.d.ts +1 -0
  387. package/dist/types/common/wasm/heaviside.d.ts +2 -2
  388. package/dist/types/common/wasm/hypot.d.ts +4 -2
  389. package/dist/types/common/wasm/indices.d.ts +2 -1
  390. package/dist/types/common/wasm/isfinite.d.ts +7 -0
  391. package/dist/types/common/wasm/isnan.d.ts +7 -0
  392. package/dist/types/common/wasm/lexsort.d.ts +3 -1
  393. package/dist/types/common/wasm/logaddexp.d.ts +4 -2
  394. package/dist/types/common/wasm/lu.d.ts +27 -0
  395. package/dist/types/common/wasm/partition.d.ts +3 -1
  396. package/dist/types/common/wasm/reduce_argmax.d.ts +5 -0
  397. package/dist/types/common/wasm/reduce_argmin.d.ts +5 -0
  398. package/dist/types/common/wasm/reduce_prod.d.ts +4 -0
  399. package/dist/types/common/wasm/reduce_quantile.d.ts +11 -3
  400. package/dist/types/common/wasm/reduce_sum.d.ts +10 -0
  401. package/dist/types/common/wasm/rng.d.ts +75 -0
  402. package/dist/types/common/wasm/runtime.d.ts +117 -23
  403. package/dist/types/common/wasm/searchsorted.d.ts +3 -1
  404. package/dist/types/common/wasm/signbit.d.ts +14 -0
  405. package/dist/types/common/wasm/sin.d.ts +17 -0
  406. package/dist/types/common/wasm/sinh.d.ts +4 -2
  407. package/dist/types/common/wasm/sort.d.ts +4 -1
  408. package/dist/types/common/wasm/sqrt.d.ts +4 -2
  409. package/dist/types/common/wasm/svd.d.ts +6 -0
  410. package/dist/types/common/wasm/tan.d.ts +4 -2
  411. package/dist/types/common/wasm/tanh.d.ts +4 -2
  412. package/dist/types/common/wasm/unravel_index.d.ts +12 -0
  413. package/dist/types/common/wasm/vector_norm.d.ts +11 -0
  414. package/dist/types/core/advanced.d.ts +10 -2
  415. package/dist/types/core/creation.d.ts +1 -1
  416. package/dist/types/core/index.d.ts +96 -2
  417. package/dist/types/core/linalg.d.ts +1 -1
  418. package/dist/types/core/rounding.d.ts +0 -2
  419. package/dist/types/core/sets.d.ts +4 -1
  420. package/dist/types/core/statistics.d.ts +2 -1
  421. package/dist/types/full/index.d.ts +19 -6
  422. package/dist/types/index.d.ts +20 -4
  423. package/dist/types/io/file-ops.d.ts +269 -0
  424. package/dist/types/io/filesystem.d.ts +21 -0
  425. package/dist/types/node.d.ts +3 -275
  426. package/package.json +52 -62
  427. package/dist/esm/common/wasm/bins/dot.wasm.js +0 -1
  428. package/dist/esm/common/wasm/bins/flip.wasm.js +0 -1
  429. package/dist/esm/common/wasm/bins/inner.wasm.js +0 -1
  430. package/dist/esm/common/wasm/bins/matmul.wasm.js +0 -1
  431. package/dist/esm/common/wasm/bins/matvec.wasm.js +0 -1
  432. package/dist/esm/common/wasm/bins/reduce_quantile.wasm.js +0 -1
  433. package/dist/esm/common/wasm/bins/rot90.wasm.js +0 -1
  434. package/dist/esm/common/wasm/bins/vecdot.wasm.js +0 -1
  435. package/dist/esm/common/wasm/bins/vecmat.wasm.js +0 -1
  436. package/dist/esm/common/wasm/flip.js +0 -1
  437. package/dist/esm/common/wasm/lstsq.js +0 -1
  438. package/dist/esm/common/wasm/rot90.js +0 -1
  439. package/dist/numpy-ts.node-io.cjs +0 -8
  440. package/dist/numpy-ts.node-io.cjs.map +0 -7
  441. package/dist/numpy-ts.node-io.mjs +0 -8
  442. package/dist/numpy-ts.node-io.mjs.map +0 -7
  443. package/dist/numpy-ts.node.cjs +0 -8
  444. package/dist/numpy-ts.node.cjs.map +0 -7
  445. package/dist/types/common/wasm/bins/dot.wasm.d.ts +0 -9
  446. package/dist/types/common/wasm/bins/flip.wasm.d.ts +0 -7
  447. package/dist/types/common/wasm/bins/inner.wasm.d.ts +0 -9
  448. package/dist/types/common/wasm/bins/matmul.wasm.d.ts +0 -9
  449. package/dist/types/common/wasm/bins/matvec.wasm.d.ts +0 -9
  450. package/dist/types/common/wasm/bins/reduce_quantile.wasm.d.ts +0 -2
  451. package/dist/types/common/wasm/bins/rot90.wasm.d.ts +0 -7
  452. package/dist/types/common/wasm/bins/vecdot.wasm.d.ts +0 -9
  453. package/dist/types/common/wasm/bins/vecmat.wasm.d.ts +0 -9
  454. package/dist/types/common/wasm/flip.d.ts +0 -13
  455. package/dist/types/common/wasm/lstsq.d.ts +0 -14
  456. package/dist/types/common/wasm/rot90.d.ts +0 -14
@@ -1 +1 @@
1
- import{ArrayStorage as d}from"../storage";import{elementwiseUnaryOp as D,elementwiseBinaryOp as T,broadcastShapes as q}from"../internal/compute";import{isBigIntDType as b,isComplexDType as M,throwIfComplex as N}from"../dtype";import{wasmSqrt as R}from"../wasm/sqrt";import{wasmPower as I,wasmPowerScalar as V}from"../wasm/power";import{wasmExp as L}from"../wasm/exp";import{wasmExp2 as P}from"../wasm/exp2";import{wasmLogaddexp as B,wasmLogaddexpScalar as O}from"../wasm/logaddexp";function ot(t){const r=t.dtype;if(M(r)){const u=Array.from(t.shape),y=t.size,p=t.isCContiguous,l=d.zeros(u,r),i=l.data;if(p){const n=t.data,e=t.offset;for(let a=0;a<y;a++){const o=n[(e+a)*2],c=n[(e+a)*2+1],s=Math.sqrt(o*o+c*c),f=Math.sqrt((s+o)/2),g=(c>=0?1:-1)*Math.sqrt((s-o)/2);i[a*2]=f,i[a*2+1]=g}}else for(let n=0;n<y;n++){const e=t.iget(n),a=e.re,o=e.im,c=Math.sqrt(a*a+o*o),s=Math.sqrt((c+a)/2),f=(o>=0?1:-1)*Math.sqrt((c-a)/2);i[n*2]=s,i[n*2+1]=f}return l}const m=R(t);return m||D(t,Math.sqrt,!1)}function at(t,r){if(typeof r=="number")return G(t,r);const m=M(t.dtype),u=M(r.dtype);if(m||u)return E(t,r);const y=I(t,r);return y||T(t,r,Math.pow,"power")}function E(t,r){const m=M(t.dtype),u=M(r.dtype),y=t.dtype==="complex128"||r.dtype==="complex128"||r.dtype==="float64"?"complex128":"complex64",p=Array.from(t.shape),l=t.size,i=d.zeros(p,y),n=i.data,e=t.isCContiguous,a=r.isCContiguous,o=t.offset,c=r.offset;for(let s=0;s<l;s++){let f,g;if(m)if(e){const S=t.data;f=S[(o+s)*2],g=S[(o+s)*2+1]}else{const S=t.iget(s);f=S.re,g=S.im}else f=Number(t.iget(s)),g=0;let h,A;if(u)if(a){const S=r.data;h=S[(c+s)*2],A=S[(c+s)*2+1]}else{const S=r.iget(s);h=S.re,A=S.im}else h=Number(r.iget(s)),A=0;const C=Math.sqrt(f*f+g*g),z=Math.atan2(g,f),w=Math.log(C),F=h*w-A*z,x=h*z+A*w,v=Math.exp(F);n[s*2]=v*Math.cos(x),n[s*2+1]=v*Math.sin(x)}return i}function G(t,r){const m=t.dtype,u=Array.from(t.shape),y=t.data,p=t.size,l=t.offset,i=t.isCContiguous;if(!M(m)){const s=V(t,r);if(s)return s}if(M(m)){const s=d.zeros(u,m),f=s.data;if(i){const g=y;for(let h=0;h<p;h++){const A=g[(l+h)*2],C=g[(l+h)*2+1],z=Math.sqrt(A*A+C*C),w=Math.atan2(C,A),F=Math.pow(z,r),x=w*r;f[h*2]=F*Math.cos(x),f[h*2+1]=F*Math.sin(x)}}else for(let g=0;g<p;g++){const h=t.iget(g),A=h.re,C=h.im,z=Math.sqrt(A*A+C*C),w=Math.atan2(C,A),F=Math.pow(z,r),x=w*r;f[g*2]=F*Math.cos(x),f[g*2+1]=F*Math.sin(x)}return s}const a=m!=="float32"&&m!=="float64"&&(r<0||!Number.isInteger(r))?"float64":m,o=d.zeros(u,a),c=o.data;if(b(m))if(b(a)&&Number.isInteger(r)&&r>=0)if(i){const s=y,f=c;for(let g=0;g<p;g++)f[g]=s[l+g]**BigInt(r)}else{const s=c;for(let f=0;f<p;f++)s[f]=t.iget(f)**BigInt(r)}else if(i)for(let s=0;s<p;s++)c[s]=Math.pow(Number(y[l+s]),r);else for(let s=0;s<p;s++)c[s]=Math.pow(Number(t.iget(s)),r);else if(i)for(let s=0;s<p;s++)c[s]=Math.pow(Number(y[l+s]),r);else for(let s=0;s<p;s++)c[s]=Math.pow(Number(t.iget(s)),r);return o}function rt(t){const r=t.dtype;if(M(r)){const u=Array.from(t.shape),y=t.size,p=t.isCContiguous,l=d.zeros(u,r),i=l.data;if(p){const n=t.data,e=t.offset;for(let a=0;a<y;a++){const o=n[(e+a)*2],c=n[(e+a)*2+1],s=Math.exp(o);i[a*2]=s*Math.cos(c),i[a*2+1]=s*Math.sin(c)}}else for(let n=0;n<y;n++){const e=t.iget(n),a=e.re,o=e.im,c=Math.exp(a);i[n*2]=c*Math.cos(o),i[n*2+1]=c*Math.sin(o)}return l}const m=L(t);return m||D(t,Math.exp,!1)}function st(t){const r=t.dtype;if(M(r)){const u=Array.from(t.shape),y=t.size,p=t.isCContiguous,l=Math.LN2,i=d.zeros(u,r),n=i.data;if(p){const e=t.data,a=t.offset;for(let o=0;o<y;o++){const c=e[(a+o)*2],s=e[(a+o)*2+1],f=Math.exp(c*l),g=s*l;n[o*2]=f*Math.cos(g),n[o*2+1]=f*Math.sin(g)}}else for(let e=0;e<y;e++){const a=t.iget(e),o=a.re,c=a.im,s=Math.exp(o*l),f=c*l;n[e*2]=s*Math.cos(f),n[e*2+1]=s*Math.sin(f)}return i}const m=P(t);return m||D(t,u=>Math.pow(2,u),!1)}function et(t){const r=t.dtype;if(M(r)){const m=Array.from(t.shape),u=t.size,y=t.isCContiguous,p=d.zeros(m,r),l=p.data;if(y){const i=t.data,n=t.offset;for(let e=0;e<u;e++){const a=i[(n+e)*2],o=i[(n+e)*2+1],c=Math.exp(a);l[e*2]=c*Math.cos(o)-1,l[e*2+1]=c*Math.sin(o)}}else for(let i=0;i<u;i++){const n=t.iget(i),e=n.re,a=n.im,o=Math.exp(e);l[i*2]=o*Math.cos(a)-1,l[i*2+1]=o*Math.sin(a)}return p}return D(t,Math.expm1,!1)}function nt(t){const r=t.dtype;if(M(r)){const m=Array.from(t.shape),u=t.size,y=t.isCContiguous,p=d.zeros(m,r),l=p.data;if(y){const i=t.data,n=t.offset;for(let e=0;e<u;e++){const a=i[(n+e)*2],o=i[(n+e)*2+1],c=Math.sqrt(a*a+o*o),s=Math.atan2(o,a);l[e*2]=Math.log(c),l[e*2+1]=s}}else for(let i=0;i<u;i++){const n=t.iget(i),e=n.re,a=n.im,o=Math.sqrt(e*e+a*a),c=Math.atan2(a,e);l[i*2]=Math.log(o),l[i*2+1]=c}return p}return D(t,Math.log,!1)}function ct(t){const r=t.dtype;if(M(r)){const m=Array.from(t.shape),u=t.size,y=t.isCContiguous,p=1/Math.LN2,l=d.zeros(m,r),i=l.data;if(y){const n=t.data,e=t.offset;for(let a=0;a<u;a++){const o=n[(e+a)*2],c=n[(e+a)*2+1],s=Math.sqrt(o*o+c*c),f=Math.atan2(c,o);i[a*2]=Math.log(s)*p,i[a*2+1]=f*p}}else for(let n=0;n<u;n++){const e=t.iget(n),a=e.re,o=e.im,c=Math.sqrt(a*a+o*o),s=Math.atan2(o,a);i[n*2]=Math.log(c)*p,i[n*2+1]=s*p}return l}return D(t,Math.log2,!1)}function it(t){const r=t.dtype;if(M(r)){const m=Array.from(t.shape),u=t.size,y=t.isCContiguous,p=1/Math.LN10,l=d.zeros(m,r),i=l.data;if(y){const n=t.data,e=t.offset;for(let a=0;a<u;a++){const o=n[(e+a)*2],c=n[(e+a)*2+1],s=Math.sqrt(o*o+c*c),f=Math.atan2(c,o);i[a*2]=Math.log(s)*p,i[a*2+1]=f*p}}else for(let n=0;n<u;n++){const e=t.iget(n),a=e.re,o=e.im,c=Math.sqrt(a*a+o*o),s=Math.atan2(o,a);i[n*2]=Math.log(c)*p,i[n*2+1]=s*p}return l}return D(t,Math.log10,!1)}function lt(t){const r=t.dtype;if(M(r)){const m=Array.from(t.shape),u=t.size,y=t.isCContiguous,p=d.zeros(m,r),l=p.data;if(y){const i=t.data,n=t.offset;for(let e=0;e<u;e++){const a=i[(n+e)*2],o=i[(n+e)*2+1],c=1+a,s=Math.sqrt(c*c+o*o),f=Math.atan2(o,c);l[e*2]=Math.log(s),l[e*2+1]=f}}else for(let i=0;i<u;i++){const n=t.iget(i),e=n.re,a=n.im,o=1+e,c=Math.sqrt(o*o+a*a),s=Math.atan2(a,o);l[i*2]=Math.log(c),l[i*2+1]=s}return p}return D(t,Math.log1p,!1)}function pt(t,r){return N(t.dtype,"logaddexp","logaddexp is not supported for complex numbers."),typeof r!="number"&&N(r.dtype,"logaddexp","logaddexp is not supported for complex numbers."),typeof r=="number"?_(t,r):U(t,r)}function U(t,r){const m=B(t,r);if(m)return m;const u=q(t.shape,r.shape),y=u.reduce((o,c)=>o*c,1),p=t.dtype,l=r.dtype,i=o=>o==="float32"||o==="int8"||o==="uint8"||o==="int16"||o==="uint16",n=i(p)&&i(l)?"float32":"float64",e=d.zeros(u,n),a=e.data;for(let o=0;o<y;o++){const c=(b(p),Number(t.iget(o))),s=(b(l),Number(r.iget(o))),f=Math.max(c,s),g=Math.min(c,s);a[o]=f+Math.log1p(Math.exp(g-f))}return e}function _(t,r){const m=O(t,r);if(m)return m;const u=t.dtype,y=Array.from(t.shape),p=t.size,l=t.isCContiguous,i=u==="float32"||u==="int8"||u==="uint8"||u==="int16"||u==="uint16"?"float32":"float64",n=d.zeros(y,i),e=n.data;if(l){const a=t.offset;for(let o=0;o<p;o++){const c=Number(t.data[a+o]),s=Math.max(c,r),f=Math.min(c,r);e[o]=s+Math.log1p(Math.exp(f-s))}}else for(let a=0;a<p;a++){const o=Number(t.iget(a)),c=Math.max(o,r),s=Math.min(o,r);e[a]=c+Math.log1p(Math.exp(s-c))}return n}function ft(t,r){return N(t.dtype,"logaddexp2","logaddexp2 is not supported for complex numbers."),typeof r!="number"&&N(r.dtype,"logaddexp2","logaddexp2 is not supported for complex numbers."),typeof r=="number"?k(t,r):j(t,r)}function j(t,r){const m=q(t.shape,r.shape),u=m.reduce((a,o)=>a*o,1),y=t.dtype,p=r.dtype,l=y==="float32"&&p==="float32"?"float32":"float64",i=d.zeros(m,l),n=i.data,e=Math.LOG2E;for(let a=0;a<u;a++){const o=(b(y),Number(t.iget(a))),c=(b(p),Number(r.iget(a))),s=Math.max(o,c),f=Math.min(o,c);n[a]=s+Math.log1p(Math.pow(2,f-s))*e}return i}function k(t,r){const m=t.dtype,u=Array.from(t.shape),y=t.size,p=t.isCContiguous,l=m==="float32"?"float32":"float64",i=d.zeros(u,l),n=i.data,e=Math.LOG2E;if(p){const a=t.offset;for(let o=0;o<y;o++){const c=Number(t.data[a+o]),s=Math.max(c,r),f=Math.min(c,r);n[o]=s+Math.log1p(Math.pow(2,f-s))*e}}else for(let a=0;a<y;a++){const o=Number(t.iget(a)),c=Math.max(o,r),s=Math.min(o,r);n[a]=c+Math.log1p(Math.pow(2,s-c))*e}return i}export{rt as exp,st as exp2,et as expm1,nt as log,it as log10,lt as log1p,ct as log2,pt as logaddexp,ft as logaddexp2,at as power,ot as sqrt};
1
+ import{ArrayStorage as h}from"../storage.js";import{elementwiseUnaryOp as F,elementwiseBinaryOp as U,broadcastShapes as V}from"../internal/compute.js";import{isBigIntDType as w,isComplexDType as M,throwIfComplex as q,mathResultDtype as v,promoteDTypes as I}from"../dtype.js";import{wasmSqrt as G}from"../wasm/sqrt.js";function L(t){return x(t,"int8")}function x(t,o){const y=h.empty(Array.from(t.shape),o),f=t.data,u=t.offset,p=t.size;if(w(o)){const l=y.data;for(let s=0;s<p;s++)l[s]=BigInt(f[u+s])}else if(M(o)){const l=y.data;for(let s=0;s<p;s++)l[s*2]=f[u+s],l[s*2+1]=0}else{const l=y.data;for(let s=0;s<p;s++)l[s]=f[u+s]}return y}function T(t){const o=v("bool"),y=h.empty(Array.from(t.shape),o),f=t.data,u=y.data,p=t.offset;for(let l=0;l<t.size;l++)u[l]=f[p+l];return y}import{wasmPower as _,wasmPowerScalar as k}from"../wasm/power.js";import{wasmExp as j}from"../wasm/exp.js";import{wasmExp2 as H}from"../wasm/exp2.js";import{wasmLogaddexp as J,wasmLogaddexpScalar as K}from"../wasm/logaddexp.js";function lt(t){const o=t.dtype;if(M(o)){const f=Array.from(t.shape),u=t.size,p=t.isCContiguous,l=h.empty(f,o),s=l.data;if(p){const n=t.data,c=t.offset;for(let r=0;r<u;r++){const a=n[(c+r)*2],i=n[(c+r)*2+1],e=Math.sqrt(a*a+i*i),m=Math.sqrt((e+a)/2),g=(i>=0?1:-1)*Math.sqrt((e-a)/2);s[r*2]=m,s[r*2+1]=g}}else for(let n=0;n<u;n++){const c=t.iget(n),r=c.re,a=c.im,i=Math.sqrt(r*r+a*a),e=Math.sqrt((i+r)/2),m=(a>=0?1:-1)*Math.sqrt((i-r)/2);s[n*2]=e,s[n*2+1]=m}return l}const y=G(t);return y||F(t,Math.sqrt,!1)}function R(t,o){if(t.dtype==="bool"&&typeof o!="number"&&o.dtype!=="bool")return R(x(t,o.dtype),o);if(t.dtype==="bool"){const p=L(t);return R(p,typeof o=="number"?o:o.dtype==="bool"?L(o):o)}if(typeof o!="number"&&o.dtype==="bool")return R(t,x(o,t.dtype));if(typeof o=="number")return P(t,o);const y=M(t.dtype),f=M(o.dtype);if(y||f)return Q(t,o);if(o.size===1&&t.dtype===o.dtype)return P(t,Number(o.iget(0)));const u=_(t,o);return u||U(t,o,Math.pow,"power")}function Q(t,o){const y=M(t.dtype),f=M(o.dtype),u=I(t.dtype,o.dtype),p=Array.from(t.shape),l=t.size,s=h.empty(p,u),n=s.data,c=t.isCContiguous,r=o.isCContiguous,a=t.offset,i=o.offset;for(let e=0;e<l;e++){let m,g;if(y)if(c){const S=t.data;m=S[(a+e)*2],g=S[(a+e)*2+1]}else{const S=t.iget(e);m=S.re,g=S.im}else m=Number(t.iget(e)),g=0;let d,A;if(f)if(r){const S=o.data;d=S[(i+e)*2],A=S[(i+e)*2+1]}else{const S=o.iget(e);d=S.re,A=S.im}else d=Number(o.iget(e)),A=0;if(m===0&&g===0){d>0&&A===0?(n[e*2]=0,n[e*2+1]=0):d===0&&A===0?(n[e*2]=1,n[e*2+1]=0):(n[e*2]=NaN,n[e*2+1]=NaN);continue}const D=Math.sqrt(m*m+g*g),z=Math.atan2(g,m),N=Math.log(D),b=d*N-A*z,C=d*z+A*N,B=Math.exp(b);n[e*2]=B*Math.cos(C),n[e*2+1]=B*Math.sin(C)}return s}function P(t,o){const y=t.dtype,f=Array.from(t.shape),u=t.data,p=t.size,l=t.offset,s=t.isCContiguous;if(!M(y)){const e=k(t,o);if(e)return e}if(M(y)){const e=h.empty(f,y),m=e.data;if(s){const g=u;for(let d=0;d<p;d++){const A=g[(l+d)*2],D=g[(l+d)*2+1],z=Math.sqrt(A*A+D*D),N=Math.atan2(D,A),b=Math.pow(z,o),C=N*o;m[d*2]=b*Math.cos(C),m[d*2+1]=b*Math.sin(C)}}else for(let g=0;g<p;g++){const d=t.iget(g),A=d.re,D=d.im,z=Math.sqrt(A*A+D*D),N=Math.atan2(D,A),b=Math.pow(z,o),C=N*o;m[g*2]=b*Math.cos(C),m[g*2+1]=b*Math.sin(C)}return e}const r=y!=="float32"&&y!=="float64"&&(o<0||!Number.isInteger(o))?"float64":y,a=h.empty(f,r),i=a.data;if(w(y))if(w(r)&&Number.isInteger(o)&&o>=0)if(s){const e=u,m=i;for(let g=0;g<p;g++)m[g]=e[l+g]**BigInt(o)}else{const e=i;for(let m=0;m<p;m++)e[m]=t.iget(m)**BigInt(o)}else if(s)for(let e=0;e<p;e++)i[e]=Math.pow(Number(u[l+e]),o);else for(let e=0;e<p;e++)i[e]=Math.pow(Number(t.iget(e)),o);else if(s)for(let e=0;e<p;e++)i[e]=Math.pow(Number(u[l+e]),o);else for(let e=0;e<p;e++)i[e]=Math.pow(Number(t.iget(e)),o);return a}function pt(t){const o=t.dtype;if(M(o)){const f=Array.from(t.shape),u=t.size,p=t.isCContiguous,l=h.empty(f,o),s=l.data;if(p){const n=t.data,c=t.offset;for(let r=0;r<u;r++){const a=n[(c+r)*2],i=n[(c+r)*2+1],e=Math.exp(a);s[r*2]=e*Math.cos(i),s[r*2+1]=e*Math.sin(i)}}else for(let n=0;n<u;n++){const c=t.iget(n),r=c.re,a=c.im,i=Math.exp(r);s[n*2]=i*Math.cos(a),s[n*2+1]=i*Math.sin(a)}return l}const y=j(t);return y||F(t,Math.exp,!1)}function yt(t){const o=t.dtype;if(M(o)){const f=Array.from(t.shape),u=t.size,p=t.isCContiguous,l=Math.LN2,s=h.empty(f,o),n=s.data;if(p){const c=t.data,r=t.offset;for(let a=0;a<u;a++){const i=c[(r+a)*2],e=c[(r+a)*2+1],m=Math.exp(i*l),g=e*l;n[a*2]=m*Math.cos(g),n[a*2+1]=m*Math.sin(g)}}else for(let c=0;c<u;c++){const r=t.iget(c),a=r.re,i=r.im,e=Math.exp(a*l),m=i*l;n[c*2]=e*Math.cos(m),n[c*2+1]=e*Math.sin(m)}return s}const y=H(t);return y||F(t,f=>Math.pow(2,f),!1)}function ft(t){const o=t.dtype;if(M(o)){const y=Array.from(t.shape),f=t.size,u=t.isCContiguous,p=h.empty(y,o),l=p.data;if(u){const s=t.data,n=t.offset;for(let c=0;c<f;c++){const r=s[(n+c)*2],a=s[(n+c)*2+1],i=Math.exp(r);l[c*2]=i*Math.cos(a)-1,l[c*2+1]=i*Math.sin(a)}}else for(let s=0;s<f;s++){const n=t.iget(s),c=n.re,r=n.im,a=Math.exp(c);l[s*2]=a*Math.cos(r)-1,l[s*2+1]=a*Math.sin(r)}return p}return F(t,Math.expm1,!1)}function ut(t){const o=t.dtype;if(M(o)){const y=Array.from(t.shape),f=t.size,u=t.isCContiguous,p=h.empty(y,o),l=p.data;if(u){const s=t.data,n=t.offset;for(let c=0;c<f;c++){const r=s[(n+c)*2],a=s[(n+c)*2+1],i=Math.sqrt(r*r+a*a),e=Math.atan2(a,r);l[c*2]=Math.log(i),l[c*2+1]=e}}else for(let s=0;s<f;s++){const n=t.iget(s),c=n.re,r=n.im,a=Math.sqrt(c*c+r*r),i=Math.atan2(r,c);l[s*2]=Math.log(a),l[s*2+1]=i}return p}return F(t,Math.log,!1)}function mt(t){const o=t.dtype;if(M(o)){const y=Array.from(t.shape),f=t.size,u=t.isCContiguous,p=1/Math.LN2,l=h.empty(y,o),s=l.data;if(u){const n=t.data,c=t.offset;for(let r=0;r<f;r++){const a=n[(c+r)*2],i=n[(c+r)*2+1],e=Math.sqrt(a*a+i*i),m=Math.atan2(i,a);s[r*2]=Math.log(e)*p,s[r*2+1]=m*p}}else for(let n=0;n<f;n++){const c=t.iget(n),r=c.re,a=c.im,i=Math.sqrt(r*r+a*a),e=Math.atan2(a,r);s[n*2]=Math.log(i)*p,s[n*2+1]=e*p}return l}return F(t,Math.log2,!1)}function gt(t){const o=t.dtype;if(M(o)){const y=Array.from(t.shape),f=t.size,u=t.isCContiguous,p=1/Math.LN10,l=h.empty(y,o),s=l.data;if(u){const n=t.data,c=t.offset;for(let r=0;r<f;r++){const a=n[(c+r)*2],i=n[(c+r)*2+1],e=Math.sqrt(a*a+i*i),m=Math.atan2(i,a);s[r*2]=Math.log(e)*p,s[r*2+1]=m*p}}else for(let n=0;n<f;n++){const c=t.iget(n),r=c.re,a=c.im,i=Math.sqrt(r*r+a*a),e=Math.atan2(a,r);s[n*2]=Math.log(i)*p,s[n*2+1]=e*p}return l}return F(t,Math.log10,!1)}function dt(t){const o=t.dtype;if(M(o)){const y=Array.from(t.shape),f=t.size,u=t.isCContiguous,p=h.empty(y,o),l=p.data;if(u){const s=t.data,n=t.offset;for(let c=0;c<f;c++){const r=s[(n+c)*2],a=s[(n+c)*2+1],i=1+r,e=Math.sqrt(i*i+a*a),m=Math.atan2(a,i);l[c*2]=Math.log(e),l[c*2+1]=m}}else for(let s=0;s<f;s++){const n=t.iget(s),c=n.re,r=n.im,a=1+c,i=Math.sqrt(a*a+r*r),e=Math.atan2(r,a);l[s*2]=Math.log(i),l[s*2+1]=e}return p}return F(t,Math.log1p,!1)}function O(t,o){return t.dtype==="bool"?O(T(t),typeof o=="number"?o:o.dtype==="bool"?T(o):o):typeof o!="number"&&o.dtype==="bool"?O(t,T(o)):(q(t.dtype,"logaddexp","logaddexp is not supported for complex numbers."),typeof o!="number"&&q(o.dtype,"logaddexp","logaddexp is not supported for complex numbers."),typeof o=="number"?X(t,o):W(t,o))}function W(t,o){const y=J(t,o);if(y)return y;const f=V(t.shape,o.shape),u=f.reduce((r,a)=>r*a,1),p=t.dtype,l=o.dtype,s=v(I(p,l)),n=h.empty(f,s),c=n.data;for(let r=0;r<u;r++){const a=(w(p),Number(t.iget(r))),i=(w(l),Number(o.iget(r))),e=Math.max(a,i),m=Math.min(a,i);c[r]=e+Math.log1p(Math.exp(m-e))}return n}function X(t,o){const y=K(t,o);if(y)return y;const f=t.dtype,u=Array.from(t.shape),p=t.size,l=t.isCContiguous,s=v(f),n=h.empty(u,s),c=n.data;if(l){const r=t.offset;for(let a=0;a<p;a++){const i=Number(t.data[r+a]),e=Math.max(i,o),m=Math.min(i,o);c[a]=e+Math.log1p(Math.exp(m-e))}}else for(let r=0;r<p;r++){const a=Number(t.iget(r)),i=Math.max(a,o),e=Math.min(a,o);c[r]=i+Math.log1p(Math.exp(e-i))}return n}function E(t,o){return t.dtype==="bool"?E(T(t),typeof o=="number"?o:o.dtype==="bool"?T(o):o):typeof o!="number"&&o.dtype==="bool"?E(t,T(o)):(q(t.dtype,"logaddexp2","logaddexp2 is not supported for complex numbers."),typeof o!="number"&&q(o.dtype,"logaddexp2","logaddexp2 is not supported for complex numbers."),typeof o=="number"?Z(t,o):Y(t,o))}function Y(t,o){const y=V(t.shape,o.shape),f=y.reduce((r,a)=>r*a,1),u=t.dtype,p=o.dtype,l=v(I(u,p)),s=h.empty(y,l),n=s.data,c=Math.LOG2E;for(let r=0;r<f;r++){const a=(w(u),Number(t.iget(r))),i=(w(p),Number(o.iget(r))),e=Math.max(a,i),m=Math.min(a,i);n[r]=e+Math.log1p(Math.pow(2,m-e))*c}return s}function Z(t,o){const y=t.dtype,f=Array.from(t.shape),u=t.size,p=t.isCContiguous,l=v(y),s=h.empty(f,l),n=s.data,c=Math.LOG2E;if(p){const r=t.offset;for(let a=0;a<u;a++){const i=Number(t.data[r+a]),e=Math.max(i,o),m=Math.min(i,o);n[a]=e+Math.log1p(Math.pow(2,m-e))*c}}else for(let r=0;r<u;r++){const a=Number(t.iget(r)),i=Math.max(a,o),e=Math.min(a,o);n[r]=i+Math.log1p(Math.pow(2,e-i))*c}return s}export{pt as exp,yt as exp2,ft as expm1,ut as log,gt as log10,dt as log1p,mt as log2,O as logaddexp,E as logaddexp2,R as power,lt as sqrt};
@@ -1 +1 @@
1
- import{ArrayStorage as S}from"../storage";import{Complex as J}from"../complex";import{isComplexDType as Q}from"../dtype";import{fft_batch_c128 as V,ifft_batch_c128 as X,fft_scratch_size as Y,fft2_c128 as ot,ifft2_c128 as et,fft2_scratch_size as nt,rfft2_f64 as at,rfft2_scratch_size as st,irfft2_f64 as ct,irfft2_scratch_size as lt}from"../wasm/bins/fft.wasm";import{ensureMemory as R,resetAllocator as N,copyIn as q,alloc as x,copyOut as j}from"../wasm/runtime";import{wasmConfig as _}from"../wasm/config";function ft(r,e,s){const o=r.length;o!==0&&o!==1&&((o&o-1)===0?H(r,e,s):it(r,e,s))}const O=new Map;function ut(r,e){const s=`${r}_${e}`;let o=O.get(s);if(o)return o;const i=new Float64Array(r/2),n=new Float64Array(r/2),l=e?1:-1;for(let t=0;t<r/2;t++){const c=l*2*Math.PI*t/r;i[t]=Math.cos(c),n[t]=Math.sin(c)}if(o={cos:i,sin:n},O.set(s,o),O.size>100){const t=O.keys().next().value;O.delete(t)}return o}function H(r,e,s){const o=r.length;let i=0;for(let t=0;t<o-1;t++){if(t<i){let y=r[t];r[t]=r[i],r[i]=y,y=e[t],e[t]=e[i],e[i]=y}let c=o>>1;for(;c<=i;)i-=c,c>>=1;i+=c}const{cos:n,sin:l}=ut(o,s);for(let t=2;t<=o;t*=2){const c=t>>1,y=o/t;for(let f=0;f<o;f+=t)for(let u=0,a=0;u<c;u++,a+=y){const d=n[a],h=l[a],p=f+u,A=f+u+c,m=r[p],b=e[p],w=r[A],g=e[A],D=d*w-h*g,z=d*g+h*w;r[p]=m+D,e[p]=b+z,r[A]=m-D,e[A]=b-z}}if(s){const t=1/o;for(let c=0;c<o;c++)r[c]=r[c]*t,e[c]=e[c]*t}}function it(r,e,s){const o=r.length;let i=1;for(;i<2*o-1;)i*=2;const n=s?1:-1,l=new Float64Array(o),t=new Float64Array(o);for(let a=0;a<o;a++){const d=n*Math.PI*a*a/o;l[a]=Math.cos(d),t[a]=Math.sin(d)}const c=new Float64Array(i),y=new Float64Array(i);for(let a=0;a<o;a++){const d=l[a],h=t[a];c[a]=r[a]*d-e[a]*h,y[a]=e[a]*d+r[a]*h}const f=new Float64Array(i),u=new Float64Array(i);f[0]=l[0],u[0]=-t[0];for(let a=1;a<o;a++)f[a]=l[a],u[a]=-t[a],f[i-a]=l[a],u[i-a]=-t[a];H(c,y,!1),H(f,u,!1);for(let a=0;a<i;a++){const d=c[a],h=y[a],p=f[a],A=u[a];c[a]=d*p-h*A,y[a]=d*A+h*p}H(c,y,!0);for(let a=0;a<o;a++){const d=c[a],h=y[a],p=l[a],A=t[a];r[a]=d*p-h*A,e[a]=h*p+d*A}if(s)for(let a=0;a<o;a++)r[a]=r[a]/o,e[a]=e[a]/o}function Z(r,e,s=-1,o="backward"){return B(r,e!==void 0?[e]:void 0,[s],o,!1)}function $(r,e,s=-1,o="backward"){return B(r,e!==void 0?[e]:void 0,[s],o,!0)}function dt(r,e,s=[-2,-1],o="backward"){return B(r,e,s,o,!1)}function St(r,e,s=[-2,-1],o="backward"){return B(r,e,s,o,!0)}function Ft(r,e,s,o="backward"){return B(r,e,s,o,!1)}function Dt(r,e,s,o="backward"){return B(r,e,s,o,!0)}function B(r,e,s,o="backward",i=!1){const n=Array.from(r.shape),l=n.length;if(r.size===0)return S.zeros(n,"complex128");if(l===0){const f=S.zeros([1],"complex128"),u=r.iget(0),a=u instanceof J?u.re:Number(u),d=u instanceof J?u.im:0,h=f.data;return h[0]=a,h[1]=d,S.fromData(f.data,[],"complex128")}let t;if(s===void 0)if(e===void 0)t=Array.from({length:l},(f,u)=>u);else{t=[];for(let f=0;f<e.length;f++)t.push(l-e.length+f)}else t=s.map(f=>f<0?l+f:f);const c=[...n];if(e!==void 0)for(let f=0;f<e.length;f++){const u=t[f];c[u]=e[f]}let y=U(r);if(e!==void 0&&(y=yt(y,c,t)),t.length===2&&y.ndim===2&&o==="backward"&&y.isCContiguous){const f=y.shape[t[0]],u=y.shape[t[1]];if(t[0]===0&&t[1]===1&&f>=T*_.thresholdMultiplier&&u>=T*_.thresholdMultiplier){const d=f*u*2,h=nt(f,u),p=d*8,A=h*8;R(p*2+A),N();const m=y.data,b=q(m.subarray(0,d)),w=x(p),g=x(A);(i?et:ot)(b,w,g,f,u);const z=j(w,d,Float64Array);return S.fromData(z,[f,u],"complex128")}}for(const f of t)y=ht(y,f,i,o);return y}function U(r){const e=r.dtype,s=Array.from(r.shape),o=r.size;if(e==="complex128"||e==="complex64"){const t=S.zeros(s,"complex128"),c=t.data,y=r.data;for(let f=0;f<o*2;f++)c[f]=y[f];return t}const i=S.zeros(s,"complex128"),n=i.data,l=r.data;if(e==="float64"){const t=l;for(let c=0;c<o;c++)n[c*2]=t[c]}else if(e==="float32"){const t=l;for(let c=0;c<o;c++)n[c*2]=t[c]}else if(e==="int32"){const t=l;for(let c=0;c<o;c++)n[c*2]=t[c]}else if(e==="int16"){const t=l;for(let c=0;c<o;c++)n[c*2]=t[c]}else if(e==="int8"){const t=l;for(let c=0;c<o;c++)n[c*2]=t[c]}else if(e==="uint32"){const t=l;for(let c=0;c<o;c++)n[c*2]=t[c]}else if(e==="uint16"){const t=l;for(let c=0;c<o;c++)n[c*2]=t[c]}else if(e==="uint8"){const t=l;for(let c=0;c<o;c++)n[c*2]=t[c]}else if(e==="int64"||e==="uint64"){const t=l;for(let c=0;c<o;c++)n[c*2]=Number(t[c])}else for(let t=0;t<o;t++)n[t*2]=Number(l[t]);return i}function yt(r,e,s){const o=Array.from(r.shape);let i=r;for(const n of s){const l=o[n],t=e[n];l!==t&&(t>l?i=At(i,n,t):i=W(i,n,t),o[n]=t)}return i}function At(r,e,s){const o=Array.from(r.shape),i=o[e];o[e]=s;const n=S.zeros(o,"complex128"),l=n.data,t=r.data,c=o.slice(0,e).reduce((f,u)=>f*u,1),y=o.slice(e+1).reduce((f,u)=>f*u,1);for(let f=0;f<c;f++)for(let u=0;u<i;u++)for(let a=0;a<y;a++){const d=(f*i+u)*y+a,h=(f*s+u)*y+a;l[h*2]=t[d*2],l[h*2+1]=t[d*2+1]}return n}function W(r,e,s){const o=Array.from(r.shape),i=o[e];o[e]=s;const n=S.zeros(o,"complex128"),l=n.data,t=r.data,c=o.slice(0,e).reduce((f,u)=>f*u,1),y=o.slice(e+1).reduce((f,u)=>f*u,1);for(let f=0;f<c;f++)for(let u=0;u<s;u++)for(let a=0;a<y;a++){const d=(f*i+u)*y+a,h=(f*s+u)*y+a;l[h*2]=t[d*2],l[h*2+1]=t[d*2+1]}return n}const T=32;function ht(r,e,s,o){const i=Array.from(r.shape),n=i[e];if(n===0)return r;const l=S.zeros(i,"complex128"),t=l.data,c=r.data,y=i.slice(0,e).reduce((d,h)=>d*h,1),f=i.slice(e+1).reduce((d,h)=>d*h,1);if(f===1&&n>=T*_.thresholdMultiplier){const d=y*n*2,h=Y(n),p=d*8,A=h*8;R(p*2+A),N();const m=c.subarray(0,d),b=q(m),w=x(p),g=x(A);(s?X:V)(b,w,g,n,y);const z=j(w,d,Float64Array);if(t.set(z),o==="ortho"){const L=s?Math.sqrt(n):1/Math.sqrt(n);for(let M=0;M<d;M++)t[M]=t[M]*L}else if(o==="forward"&&!s){const L=1/n;for(let M=0;M<d;M++)t[M]=t[M]*L}else if(o==="forward"&&s)for(let L=0;L<d;L++)t[L]=t[L]*n;return l}if(f>1&&n>=T*_.thresholdMultiplier){const d=y*f,h=d*n*2,p=Y(n),A=h*8,m=p*8;R(A*2+m),N();const b=new Float64Array(h);let w=0;for(let F=0;F<y;F++)for(let k=0;k<f;k++){const P=w*n*2;for(let I=0;I<n;I++){const C=((F*n+I)*f+k)*2;b[P+I*2]=c[C],b[P+I*2+1]=c[C+1]}w++}const g=q(b),D=x(A),z=x(m);(s?X:V)(g,D,z,n,d);const M=j(D,h,Float64Array);w=0;for(let F=0;F<y;F++)for(let k=0;k<f;k++){const P=w*n*2;for(let I=0;I<n;I++){const C=((F*n+I)*f+k)*2;t[C]=M[P+I*2],t[C+1]=M[P+I*2+1]}w++}const E=y*n*f*2;if(o==="ortho"){const F=s?Math.sqrt(n):1/Math.sqrt(n);for(let k=0;k<E;k++)t[k]=t[k]*F}else if(o==="forward"&&!s){const F=1/n;for(let k=0;k<E;k++)t[k]=t[k]*F}else if(o==="forward"&&s)for(let F=0;F<E;F++)t[F]=t[F]*n;return l}const u=new Float64Array(n),a=new Float64Array(n);for(let d=0;d<y;d++)for(let h=0;h<f;h++){for(let p=0;p<n;p++){const A=(d*n+p)*f+h;u[p]=c[A*2],a[p]=c[A*2+1]}if(ft(u,a,s),o==="ortho"){const p=1/Math.sqrt(n);if(s){const A=Math.sqrt(n);for(let m=0;m<n;m++)u[m]=u[m]*A,a[m]=a[m]*A}else for(let A=0;A<n;A++)u[A]=u[A]*p,a[A]=a[A]*p}else if(o==="forward"&&!s){const p=1/n;for(let A=0;A<n;A++)u[A]=u[A]*p,a[A]=a[A]*p}else if(!(o==="backward"&&s)){if(o==="forward"&&s)for(let p=0;p<n;p++)u[p]=u[p]*n,a[p]=a[p]*n}for(let p=0;p<n;p++){const A=(d*n+p)*f+h;t[A*2]=u[p],t[A*2+1]=a[p]}}return l}function v(r,e,s=-1,o="backward"){const i=Array.from(r.shape),n=i.length,l=s<0?n+s:s,t=e??i[l],c=Z(r,t,s,o),y=Math.floor(t/2)+1;return W(c,l,y)}function G(r,e,s=-1,o="backward"){const i=Array.from(r.shape),n=i.length,l=s<0?n+s:s,t=i[l],c=e??(t-1)*2,y=[...i];y[l]=c;const f=S.zeros(y,"complex128"),u=f.data,a=U(r).data,d=i.slice(0,l).reduce((A,m)=>A*m,1),h=i.slice(l+1).reduce((A,m)=>A*m,1);for(let A=0;A<d;A++)for(let m=0;m<h;m++){for(let b=0;b<t;b++){const w=(A*t+b)*h+m,g=(A*c+b)*h+m;u[g*2]=a[w*2],u[g*2+1]=a[w*2+1]}for(let b=t;b<c;b++){const w=c-b,g=(A*t+w)*h+m,D=(A*c+b)*h+m;u[D*2]=a[g*2],u[D*2+1]=-a[g*2+1]}}const p=$(f,c,s,o);return K(p)}function zt(r,e,s=[-2,-1],o="backward"){const i=Array.from(r.shape),n=i.length,l=s[0]<0?n+s[0]:s[0],t=s[1]<0?n+s[1]:s[1];if(n===2&&l===0&&t===1&&o==="backward"&&!e&&r.isCContiguous&&!Q(r.dtype)){const u=i[0],a=i[1];if(u>=T*_.thresholdMultiplier&&a>=T*_.thresholdMultiplier){const d=Math.floor(a/2)+1,h=st(u,a),p=u*a*8,A=u*d*2*8,m=h*8;R(p+A+m),N();const b=r.dtype==="float64"?r.data.subarray(r.offset,r.offset+u*a):Float64Array.from(r.data.subarray(r.offset,r.offset+u*a)),w=q(b),g=x(A),D=x(m);at(w,g,D,u,a);const z=j(g,u*d*2,Float64Array);return S.fromData(z,[u,d],"complex128")}}const c=dt(r,e,s,o),y=e?e[1]:i[t],f=Math.floor(y/2)+1;return W(c,t,f)}function Mt(r,e,s=[-2,-1],o="backward"){const i=Array.from(r.shape),n=i.length,l=s[0]<0?n+s[0]:s[0],t=s[1]<0?n+s[1]:s[1],c=i[t],y=e?e[1]:(c-1)*2,f=e?e[0]:i[l];if(n===2&&l===0&&t===1&&o==="backward"&&!e&&r.isCContiguous&&Q(r.dtype)){const a=i[0],d=i[1];if(a>=T*_.thresholdMultiplier&&y>=T*_.thresholdMultiplier){const h=lt(a,y),p=a*d*2*8,A=a*y*8,m=h*8;R(p+A+m),N();const b=r.data.subarray(r.offset,r.offset+a*d*2),w=q(b),g=x(A),D=x(m);ct(w,g,D,a,d,y);const z=j(g,a*y,Float64Array);return S.fromData(z,[a,y],"float64")}}let u=G(r,y,t,o);return u=$(u,f,l,o),K(u)}function It(r,e,s,o="backward"){const n=Array.from(r.shape).length;let l;if(s===void 0?l=Array.from({length:n},(f,u)=>u):l=s.map(f=>f<0?n+f:f),l.length===0)return U(r);let t=r;for(let f=0;f<l.length-1;f++){const u=l[f],a=e?e[f]:void 0;t=Z(t,a,u,o)}const c=l[l.length-1],y=e?e[l.length-1]:void 0;return v(t,y,c,o)}function xt(r,e,s,o="backward"){const i=Array.from(r.shape),n=i.length;let l;if(s===void 0?l=Array.from({length:n},(u,a)=>a):l=s.map(u=>u<0?n+u:u),l.length===0)return K(U(r));const t=l[l.length-1],c=i[t],y=e?[...e]:l.map((u,a)=>a===l.length-1?(c-1)*2:i[u]);let f=G(r,y[l.length-1],t,o);for(let u=l.length-2;u>=0;u--){const a=l[u];f=$(f,y[u],a,o)}return K(f)}function Lt(r,e,s=-1,o="backward"){const i=Array.from(r.shape),n=i.length,l=s<0?n+s:s,t=i[l],c=e??(t-1)*2,y=tt(U(r)),f=G(y,c,s,o),u=f.data;for(let a=0;a<f.size;a++)u[a]=u[a]*c;return f}function _t(r,e,s=-1,o="backward"){const i=Array.from(r.shape),n=i.length,l=s<0?n+s:s,t=e??i[l],c=v(r,t,s,o),y=tt(c),f=y.data;for(let u=0;u<y.size*2;u++)f[u]=f[u]/t;return y}function tt(r){const e=Array.from(r.shape),s=r.size,o=S.zeros(e,"complex128"),i=o.data,n=r.data;for(let l=0;l<s;l++)i[l*2]=n[l*2],i[l*2+1]=-n[l*2+1];return o}function K(r){const e=Array.from(r.shape),s=r.size,o=S.zeros(e,"float64"),i=o.data,n=r.data;for(let l=0;l<s;l++)i[l]=n[l*2];return o}function Tt(r,e=1){const s=S.zeros([r],"float64"),o=s.data,i=Math.floor((r-1)/2)+1;for(let n=0;n<i;n++)o[n]=n/(r*e);for(let n=i;n<r;n++)o[n]=(n-r)/(r*e);return s}function Bt(r,e=1){const s=Math.floor(r/2)+1,o=S.zeros([s],"float64"),i=o.data;for(let n=0;n<s;n++)i[n]=n/(r*e);return o}function Pt(r,e){const s=Array.from(r.shape),o=s.length;let i;e===void 0?i=Array.from({length:o},(l,t)=>t):typeof e=="number"?i=[e<0?o+e:e]:i=e.map(l=>l<0?o+l:l);const n=s.map((l,t)=>i.includes(t)?Math.floor(s[t]/2):0);return rt(r,n)}function Ct(r,e){const s=Array.from(r.shape),o=s.length;let i;e===void 0?i=Array.from({length:o},(l,t)=>t):typeof e=="number"?i=[e<0?o+e:e]:i=e.map(l=>l<0?o+l:l);const n=s.map((l,t)=>i.includes(t)?-Math.floor(s[t]/2):0);return rt(r,n)}function rt(r,e){const s=Array.from(r.shape),o=r.dtype,i=r.size,n=S.zeros(s,o),l=o==="complex128"||o==="complex64",t=new Array(s.length);t[s.length-1]=1;for(let c=s.length-2;c>=0;c--)t[c]=t[c+1]*s[c+1];for(let c=0;c<i;c++){const y=new Array(s.length);let f=c;for(let d=0;d<s.length;d++)y[d]=Math.floor(f/t[d]),f=f%t[d];const u=y.map((d,h)=>{let p=d+e[h];const A=s[h];return p=(p%A+A)%A,p});let a=0;for(let d=0;d<s.length;d++)a+=u[d]*t[d];if(l){const d=r.data,h=n.data;h[a*2]=d[c*2],h[a*2+1]=d[c*2+1]}else{const d=r.iget(c);n.iset(a,d)}}return n}export{Z as fft,dt as fft2,Tt as fftfreq,Ft as fftn,Pt as fftshift,Lt as hfft,$ as ifft,St as ifft2,Dt as ifftn,Ct as ifftshift,_t as ihfft,G as irfft,Mt as irfft2,xt as irfftn,v as rfft,zt as rfft2,Bt as rfftfreq,It as rfftn};
1
+ import{ArrayStorage as F}from"../storage.js";import{Complex as O}from"../complex.js";import{isComplexDType as x,throwIfComplex as T,fftResultDtype as C,hasFloat16 as W}from"../dtype.js";import{roll as B}from"./shape.js";import{wasmFft as G,wasmIfft as J,wasmRfft as Q,wasmIrfft as V,wasmFft2 as X,wasmFftBatch as K,wasmRfftBatch as Y,wasmIrfftBatch as Z,wasmRfft2 as v,wasmIrfft2 as tt,wasmIrfftn3d as rt}from"../wasm/fft.js";import{wasmConfig as D}from"../wasm/config.js";function ot(t,e,n){const o=t.length;o!==0&&o!==1&&((o&o-1)===0?q(t,e,n):at(t,e,n))}const R=new Map;function et(t,e){const n=`${t}_${e}`;let o=R.get(n);if(o)return o;const u=new Float64Array(t/2),a=new Float64Array(t/2),c=e?1:-1;for(let s=0;s<t/2;s++){const f=c*2*Math.PI*s/t;u[s]=Math.cos(f),a[s]=Math.sin(f)}if(o={cos:u,sin:a},R.set(n,o),R.size>100){const s=R.keys().next().value;R.delete(s)}return o}function q(t,e,n){const o=t.length;let u=0;for(let s=0;s<o-1;s++){if(s<u){let i=t[s];t[s]=t[u],t[u]=i,i=e[s],e[s]=e[u],e[u]=i}let f=o>>1;for(;f<=u;)u-=f,f>>=1;u+=f}const{cos:a,sin:c}=et(o,n);for(let s=2;s<=o;s*=2){const f=s>>1,i=o/s;for(let d=0;d<o;d+=s)for(let l=0,r=0;l<f;l++,r+=i){const h=a[r],A=c[r],y=d+l,p=d+l+f,b=t[y],k=e[y],m=t[p],w=e[p],g=h*m-A*w,S=h*w+A*m;t[y]=b+g,e[y]=k+S,t[p]=b-g,e[p]=k-S}}if(n){const s=1/o;for(let f=0;f<o;f++)t[f]=t[f]*s,e[f]=e[f]*s}}function at(t,e,n){const o=t.length;let u=1;for(;u<2*o-1;)u*=2;const a=n?1:-1,c=new Float64Array(o),s=new Float64Array(o);for(let r=0;r<o;r++){const h=a*Math.PI*r*r/o;c[r]=Math.cos(h),s[r]=Math.sin(h)}const f=new Float64Array(u),i=new Float64Array(u);for(let r=0;r<o;r++){const h=c[r],A=s[r];f[r]=t[r]*h-e[r]*A,i[r]=e[r]*h+t[r]*A}const d=new Float64Array(u),l=new Float64Array(u);d[0]=c[0],l[0]=-s[0];for(let r=1;r<o;r++)d[r]=c[r],l[r]=-s[r],d[u-r]=c[r],l[u-r]=-s[r];q(f,i,!1),q(d,l,!1);for(let r=0;r<u;r++){const h=f[r],A=i[r],y=d[r],p=l[r];f[r]=h*y-A*p,i[r]=h*p+A*y}q(f,i,!0);for(let r=0;r<o;r++){const h=f[r],A=i[r],y=c[r],p=s[r];t[r]=h*y-A*p,e[r]=A*y+h*p}if(n)for(let r=0;r<o;r++)t[r]=t[r]/o,e[r]=e[r]/o}function E(t,e,n=-1,o="backward"){if(e===void 0&&(n===-1||n===t.ndim-1)&&o==="backward"&&t.ndim===1){const u=x(t.dtype),a=u?t:I(t);try{const c=G(a);if(c)return c}finally{u||a.dispose()}}return L(t,e!==void 0?[e]:void 0,[n],o,!1)}function _(t,e,n=-1,o="backward"){if(e===void 0&&(n===-1||n===t.ndim-1)&&o==="backward"&&t.ndim===1){const u=x(t.dtype),a=u?t:I(t);try{const c=J(a);if(c)return c}finally{u||a.dispose()}}return L(t,e!==void 0?[e]:void 0,[n],o,!0)}function nt(t,e,n=[-2,-1],o="backward"){return L(t,e,n,o,!1)}function mt(t,e,n=[-2,-1],o="backward"){return L(t,e,n,o,!0)}function bt(t,e,n,o="backward"){return L(t,e,n,o,!1)}function wt(t,e,n,o="backward"){return L(t,e,n,o,!0)}function L(t,e,n,o="backward",u=!1){const a=Array.from(t.shape),c=a.length,s=C(t.dtype);if(t.size===0)return F.zeros(a,s);if(c===0){const l=F.zeros([1],s),r=t.iget(0),h=r instanceof O?r.re:Number(r),A=r instanceof O?r.im:0,y=l.data;return y[0]=h,y[1]=A,F.fromData(l.data,[],s)}let f;if(n===void 0)if(e===void 0)f=Array.from({length:c},(l,r)=>r);else{f=[];for(let l=0;l<e.length;l++)f.push(c-e.length+l)}else f=n.map(l=>l<0?c+l:l);const i=[...a];if(e!==void 0)for(let l=0;l<e.length;l++){const r=f[l];i[r]=e[l]}let d=I(t);if(e!==void 0){const l=d;d=st(d,i,f),d!==l&&l.dispose()}if(f.length===2&&d.ndim===2&&o==="backward"&&d.isCContiguous){const l=d.shape[f[0]],r=d.shape[f[1]];if(f[0]===0&&f[1]===1&&l>=z*D.thresholdMultiplier&&r>=z*D.thresholdMultiplier){const A=d.data,y=X(A,l,r,u);if(y)return d.dispose(),F.fromData(y,[l,r],s)}}for(const l of f){const r=d;d=it(d,l,u,o),r.dispose()}return d}function I(t){const e=t.dtype,n=Array.from(t.shape),o=t.size,u=C(e);if(e==="complex128"||e==="complex64"){const f=F.zeros(n,u),i=f.data,d=t.data;for(let l=0;l<o*2;l++)i[l]=d[l];return f}const a=F.zeros(n,u),c=a.data,s=t.data;if(e==="float64"){const f=s;for(let i=0;i<o;i++)c[i*2]=f[i]}else if(e==="float32"){const f=s;for(let i=0;i<o;i++)c[i*2]=f[i]}else if(e==="int32"){const f=s;for(let i=0;i<o;i++)c[i*2]=f[i]}else if(e==="int16"){const f=s;for(let i=0;i<o;i++)c[i*2]=f[i]}else if(e==="int8"){const f=s;for(let i=0;i<o;i++)c[i*2]=f[i]}else if(e==="uint32"){const f=s;for(let i=0;i<o;i++)c[i*2]=f[i]}else if(e==="uint16"){const f=s;for(let i=0;i<o;i++)c[i*2]=f[i]}else if(e==="uint8"){const f=s;for(let i=0;i<o;i++)c[i*2]=f[i]}else if(e==="int64"||e==="uint64"){const f=s;for(let i=0;i<o;i++)c[i*2]=Number(f[i])}else for(let f=0;f<o;f++)c[f*2]=Number(s[f]);return a}function st(t,e,n){const o=Array.from(t.shape);let u=t;for(const a of n){const c=o[a],s=e[a];c!==s&&(s>c?u=ct(u,a,s):u=U(u,a,s),o[a]=s)}return u}function ct(t,e,n){const o=Array.from(t.shape),u=o[e];o[e]=n;const a=F.zeros(o,t.dtype),c=a.data,s=t.data,f=o.slice(0,e).reduce((d,l)=>d*l,1),i=o.slice(e+1).reduce((d,l)=>d*l,1);for(let d=0;d<f;d++)for(let l=0;l<u;l++)for(let r=0;r<i;r++){const h=(d*u+l)*i+r,A=(d*n+l)*i+r;c[A*2]=s[h*2],c[A*2+1]=s[h*2+1]}return a}function U(t,e,n){const o=Array.from(t.shape),u=o[e];o[e]=n;const a=F.zeros(o,t.dtype),c=a.data,s=t.data,f=o.slice(0,e).reduce((d,l)=>d*l,1),i=o.slice(e+1).reduce((d,l)=>d*l,1);for(let d=0;d<f;d++)for(let l=0;l<n;l++)for(let r=0;r<i;r++){const h=(d*u+l)*i+r,A=(d*n+l)*i+r;c[A*2]=s[h*2],c[A*2+1]=s[h*2+1]}return a}const z=32;function lt(t,e){const n=Array.from(t.shape),o=n.length,u=Math.floor(e/2)+1,a=n.slice(0,o-1).reduce((l,r)=>l*r,1),c=e,s=u*2;let f;if(t.dtype==="float64")f=t.data;else if(t.dtype==="float32")f=t.data;else if(t.dtype==="int64"||t.dtype==="uint64"){const l=t.data;f=new Float64Array(t.size);for(let r=0;r<t.size;r++)f[r]=Number(l[t.offset+r])}else f=Float64Array.from(t.data.subarray(t.offset,t.offset+t.size));const i=Y(f,e,a,c,s);if(!i)return null;const d=[...n];return d[o-1]=u,F.fromData(i,d,C(t.dtype))}function ft(t,e){const n=Array.from(t.shape),o=n.length,u=n[o-1],a=n.slice(0,o-1).reduce((A,y)=>A*y,1),c=u*2,s=e,f=I(t),i=f.dtype==="complex64",d=i?"float32":"float64";let l;if(i&&!(f.data instanceof Float32Array)){const A=f.size*2;l=new Float32Array(A);const y=f.data;for(let p=0;p<A;p++)l[p]=Number(y[p])}else l=f.data;const r=Z(l,u,e,a,c,s);if(!r)return null;const h=[...n];return h[o-1]=e,F.fromData(r,h,d)}function it(t,e,n,o){const u=Array.from(t.shape),a=u[e];if(a===0)return t;const c=F.zeros(u,t.dtype),s=c.data,f=t.data,i=u.slice(0,e).reduce((h,A)=>h*A,1),d=u.slice(e+1).reduce((h,A)=>h*A,1);if(d===1&&a>=z*D.thresholdMultiplier){const h=i*a*2,A=K(f,a,i,n);if(A){if(s.set(A),o==="ortho"){const y=n?Math.sqrt(a):1/Math.sqrt(a);for(let p=0;p<h;p++)s[p]=s[p]*y}else if(o==="forward"&&!n){const y=1/a;for(let p=0;p<h;p++)s[p]=s[p]*y}else if(o==="forward"&&n)for(let y=0;y<h;y++)s[y]=s[y]*a;return c}}if(d>1&&a>=z*D.thresholdMultiplier){const h=i*d,A=h*a*2,y=new Float64Array(A);let p=0;for(let k=0;k<i;k++)for(let m=0;m<d;m++){const w=p*a*2;for(let g=0;g<a;g++){const S=((k*a+g)*d+m)*2;y[w+g*2]=f[S],y[w+g*2+1]=f[S+1]}p++}const b=K(y,a,h,n);if(b){p=0;for(let m=0;m<i;m++)for(let w=0;w<d;w++){const g=p*a*2;for(let S=0;S<a;S++){const M=((m*a+S)*d+w)*2;s[M]=b[g+S*2],s[M+1]=b[g+S*2+1]}p++}const k=i*a*d*2;if(o==="ortho"){const m=n?Math.sqrt(a):1/Math.sqrt(a);for(let w=0;w<k;w++)s[w]=s[w]*m}else if(o==="forward"&&!n){const m=1/a;for(let w=0;w<k;w++)s[w]=s[w]*m}else if(o==="forward"&&n)for(let m=0;m<k;m++)s[m]=s[m]*a;return c}}const l=new Float64Array(a),r=new Float64Array(a);for(let h=0;h<i;h++)for(let A=0;A<d;A++){for(let y=0;y<a;y++){const p=(h*a+y)*d+A;l[y]=f[p*2],r[y]=f[p*2+1]}if(ot(l,r,n),o==="ortho"){const y=1/Math.sqrt(a);if(n){const p=Math.sqrt(a);for(let b=0;b<a;b++)l[b]=l[b]*p,r[b]=r[b]*p}else for(let p=0;p<a;p++)l[p]=l[p]*y,r[p]=r[p]*y}else if(o==="forward"&&!n){const y=1/a;for(let p=0;p<a;p++)l[p]=l[p]*y,r[p]=r[p]*y}else if(!(o==="backward"&&n)){if(o==="forward"&&n)for(let y=0;y<a;y++)l[y]=l[y]*a,r[y]=r[y]*a}for(let y=0;y<a;y++){const p=(h*a+y)*d+A;s[p*2]=l[y],s[p*2+1]=r[y]}}return c}function P(t,e,n=-1,o="backward"){T(t.dtype,"rfft","rfft expects real input.");const u=Array.from(t.shape),a=u.length,c=n<0?a+n:n,s=e??u[c],f=Math.floor(s/2)+1;if(a===1&&e===void 0&&o==="backward"&&!x(t.dtype)&&t.dtype==="float64"){const l=Q(t,s);if(l)return l}if(c===a-1&&t.isCContiguous&&e===void 0&&o==="backward"&&!x(t.dtype)&&s>=z*D.thresholdMultiplier&&s%2===0){const l=lt(t,s);if(l)return l}const i=E(t,s,n,o),d=U(i,c,f);return i.dispose(),d}function j(t,e,n=-1,o="backward"){const u=Array.from(t.shape),a=u.length,c=n<0?a+n:n,s=u[c],f=e??(s-1)*2;if(a===1&&o==="backward"&&x(t.dtype)&&t.dtype==="complex128"){const m=V(t,f);if(m)return m}if(c===a-1&&t.isCContiguous&&o==="backward"&&f%2===0&&f>=z*D.thresholdMultiplier&&s===Math.floor(f/2)+1){const m=ft(t,f);if(m)return m}const i=[...u];i[c]=f;const d=C(t.dtype),l=F.zeros(i,d),r=l.data,h=I(t),A=h.data,y=u.slice(0,c).reduce((m,w)=>m*w,1),p=u.slice(c+1).reduce((m,w)=>m*w,1);for(let m=0;m<y;m++)for(let w=0;w<p;w++){for(let g=0;g<s;g++){const S=(m*s+g)*p+w,M=(m*f+g)*p+w;r[M*2]=A[S*2],r[M*2+1]=A[S*2+1]}for(let g=s;g<f;g++){const S=f-g,M=(m*s+S)*p+w,H=(m*f+g)*p+w;r[H*2]=A[M*2],r[H*2+1]=-A[M*2+1]}}h.dispose();const b=_(l,f,n,o);l.dispose();const k=N(b);return b.dispose(),k}function gt(t,e,n=[-2,-1],o="backward"){T(t.dtype,"rfft2","rfft2 expects real input.");const u=Array.from(t.shape),a=u.length,c=n[0]<0?a+n[0]:n[0],s=n[1]<0?a+n[1]:n[1];if(a===2&&c===0&&s===1&&o==="backward"&&!e&&t.isCContiguous&&!x(t.dtype)){const l=u[0],r=u[1];if(l>=z*D.thresholdMultiplier&&r>=z*D.thresholdMultiplier){const h=Math.floor(r/2)+1;let A;if(t.dtype==="float64")A=t.data.subarray(t.offset,t.offset+l*r);else if(t.dtype==="int64"||t.dtype==="uint64"){const p=t.data;A=new Float64Array(l*r);for(let b=0;b<l*r;b++)A[b]=Number(p[t.offset+b])}else A=Float64Array.from(t.data.subarray(t.offset,t.offset+l*r));const y=v(A,l,r);if(y){const p=C(t.dtype),b=p==="complex64"?Float32Array.from(y):y;return F.fromData(b,[l,h],p)}}}const f=nt(t,e,n,o),i=e?e[1]:u[s],d=Math.floor(i/2)+1;return U(f,s,d)}function Ft(t,e,n=[-2,-1],o="backward"){const u=Array.from(t.shape),a=u.length,c=n[0]<0?a+n[0]:n[0],s=n[1]<0?a+n[1]:n[1],f=u[s],i=e?e[1]:(f-1)*2,d=e?e[0]:u[c];if(a===2&&c===0&&s===1&&o==="backward"&&!e&&t.isCContiguous&&x(t.dtype)){const r=u[0],h=u[1];if(r>=z*D.thresholdMultiplier&&i>=z*D.thresholdMultiplier){const A=r*h*2;let y;if(t.dtype==="complex64"){y=new Float32Array(A);const b=t.data,k=t.offset;for(let m=0;m<A;m++)y[m]=Number(b[k+m])}else y=t.data.subarray(t.offset,t.offset+A);const p=tt(y,r,h,i);if(p){const b=t.dtype==="complex64"?"float32":"float64";return F.fromData(p,[r,i],b)}}}let l=j(t,i,s,o);return l=_(l,d,c,o),N(l)}function St(t,e,n,o="backward"){T(t.dtype,"rfftn","rfftn expects real input.");const a=Array.from(t.shape).length;let c;if(n===void 0?c=Array.from({length:a},(d,l)=>l):c=n.map(d=>d<0?a+d:d),c.length===0)return I(t);const s=c[c.length-1],f=e?e[c.length-1]:void 0;let i=P(t,f,s,o);for(let d=0;d<c.length-1;d++){const l=c[d],r=e?e[d]:void 0,h=i;i=E(i,r,l,o),h.dispose()}return i}function kt(t,e,n,o="backward"){const u=Array.from(t.shape),a=u.length;let c;if(n===void 0?c=Array.from({length:a},(r,h)=>h):c=n.map(r=>r<0?a+r:r),c.length===0){const r=I(t),h=N(r);return r.dispose(),h}const s=c[c.length-1],f=u[s],i=e?[...e]:c.map((r,h)=>h===c.length-1?(f-1)*2:u[r]);if(a===3&&c.length===3&&c[0]===0&&c[1]===1&&c[2]===2&&o==="backward"&&e===void 0&&t.isCContiguous&&x(t.dtype)&&i[2]%2===0&&(t.dtype==="complex128"||t.dtype==="float64")){const r=i[0],h=i[1],A=f,y=i[2],p=I(t),b=rt(p.data,r,h,A,y);if(p.dispose(),b)return F.fromData(b,[r,h,y],"float64")}let d=j(t,i[c.length-1],s,o);for(let r=c.length-2;r>=0;r--){const h=c[r],A=d;d=_(d,i[r],h,o),A.dispose()}const l=N(d);return d.dispose(),l}function Dt(t,e,n=-1,o="backward"){const u=Array.from(t.shape),a=u.length,c=n<0?a+n:n,s=u[c],f=e??(s-1)*2,i=t.dtype,d=I(t),l=$(d);d.dispose();const r=j(l,f,n,o);l.dispose();const h=r.data;for(let A=0;A<r.size;A++)h[A]=h[A]*f;if(i==="float16"&&W){const A=F.empty(Array.from(r.shape),"float16");return A.data.set(r.data),r.dispose(),A}return r}function zt(t,e,n=-1,o="backward"){T(t.dtype,"ihfft","ihfft expects real input.");const u=Array.from(t.shape),a=u.length,c=n<0?a+n:n,s=e??u[c],f=P(t,s,n,o),i=$(f);f.dispose();const d=i.data;for(let l=0;l<i.size*2;l++)d[l]=d[l]/s;return i}function $(t){const e=Array.from(t.shape),n=t.size,o=F.zeros(e,t.dtype),u=o.data,a=t.data;for(let c=0;c<n;c++)u[c*2]=a[c*2],u[c*2+1]=-a[c*2+1];return o}function N(t){const e=Array.from(t.shape),n=t.size,o=t.dtype==="complex64"?"float32":"float64",u=F.zeros(e,o),a=u.data,c=t.data;for(let s=0;s<n;s++)a[s]=c[s*2];return u}function It(t,e=1){const n=F.zeros([t],"float64"),o=n.data,u=Math.floor((t-1)/2)+1;for(let a=0;a<u;a++)o[a]=a/(t*e);for(let a=u;a<t;a++)o[a]=(a-t)/(t*e);return n}function Mt(t,e=1){const n=Math.floor(t/2)+1,o=F.zeros([n],"float64"),u=o.data;for(let a=0;a<n;a++)u[a]=a/(t*e);return o}function xt(t,e){const n=Array.from(t.shape),o=n.length;let u;e===void 0?u=Array.from({length:o},(c,s)=>s):typeof e=="number"?u=[e<0?o+e:e]:u=e.map(c=>c<0?o+c:c);const a=u.map(c=>Math.floor(n[c]/2));return o===1&&u.length===1&&u[0]===0?B(t,a[0]):B(t,a,u)}function Lt(t,e){const n=Array.from(t.shape),o=n.length;let u;e===void 0?u=Array.from({length:o},(c,s)=>s):typeof e=="number"?u=[e<0?o+e:e]:u=e.map(c=>c<0?o+c:c);const a=u.map(c=>-Math.floor(n[c]/2));return o===1&&u.length===1&&u[0]===0?B(t,a[0]):B(t,a,u)}export{E as fft,nt as fft2,It as fftfreq,bt as fftn,xt as fftshift,Dt as hfft,_ as ifft,mt as ifft2,wt as ifftn,Lt as ifftshift,zt as ihfft,j as irfft,Ft as irfft2,kt as irfftn,P as rfft,gt as rfft2,Mt as rfftfreq,St as rfftn};
@@ -1,4 +1,4 @@
1
- import{Complex as z}from"../complex";const D={threshold:1e3,edgeitems:3,precision:8,linewidth:75,floatmode:"maxprec",suppress:!0,separator:" ",prefix:"",suffix:"",nanstr:"nan",infstr:"inf",sign:"-",legacy:!1};let x={...D};function q(n){x={...x,...n}}function E(){return{...x}}function R(n){let t=null;const e={_savedOptions:null,enter(){t={...x},e._savedOptions=t,x={...x,...n}},exit(){t&&(x=t,t=null,e._savedOptions=null)},apply(r){e.enter();try{return r()}finally{e.exit()}}};return e}function C(n,t=null,e=!0,r=!0,a="k",o="-",g=null,f=null,h=null){const u=t??x.precision;if(!Number.isFinite(n))return Number.isNaN(n)?x.nanstr:(n>0?"":"-")+x.infstr;let s;if(e&&t===null?(s=n.toString(),r&&!s.includes(".")&&!s.includes("e")&&(s+=".0")):s=n.toFixed(u),h!==null){const p=s.indexOf(".");if(p!==-1){const i=s.length-p-1;i<h&&(s+="0".repeat(h-i))}else r&&(s+="."+"0".repeat(h))}if(a!=="k"&&s.includes(".")){if(a==="."||a==="0"||a==="-"){let p=s.length;for(;p>0&&s[p-1]==="0";)p--;s=s.slice(0,p)}a==="0"&&s.endsWith(".")&&(s+="0"),a==="-"&&s.endsWith(".")&&(s=s.slice(0,-1))}if(n>=0&&!Object.is(n,-0)&&(o==="+"?s="+"+s:o===" "&&(s=" "+s)),g!==null&&s.length<g&&(s=" ".repeat(g-s.length)+s),f!==null){const p=s.indexOf(".");if(p!==-1){const i=s.length-p-1;i<f&&(s+="0".repeat(f-i))}}return s}function w(n,t=null,e=!0,r="k",a="-",o=null,g=2,f=null){const h=t??x.precision;if(!Number.isFinite(n))return Number.isNaN(n)?x.nanstr:(n>0?"":"-")+x.infstr;let u=n.toExponential(h);if(f!==null){const l=u.indexOf("e"),d=u.slice(0,l),S=u.slice(l),N=d.indexOf(".");if(N!==-1){const c=d.length-N-1;c<f&&(u=d+"0".repeat(f-c)+S)}}if(r!=="k"){const l=u.indexOf("e");let d=u.slice(0,l);const S=u.slice(l);d.includes(".")&&((r==="."||r==="0"||r==="-")&&(d=d.replace(/0+$/,"")),r==="0"&&d.endsWith(".")&&(d+="0"),r==="-"&&(d=d.replace(/\.$/,""))),u=d+S}const s=u.indexOf("e"),p=u.slice(0,s);let i=u.slice(s+1);const m=i[0]==="-"?"-":"+";let b=i.replace(/^[+-]/,"");for(;b.length<g;)b="0"+b;return u=p+"e"+m+b,n>=0&&!Object.is(n,-0)&&(a==="+"?u="+"+u:a===" "&&(u=" "+u)),o!==null&&u.length<o&&(u=" ".repeat(o-u.length)+u),u}function U(n,t=2,e=0){if(t<2||t>36)throw new Error("base must be between 2 and 36");n=Math.trunc(n);let r;if(n<0?r="-"+Math.abs(n).toString(t).toUpperCase():r=n.toString(t).toUpperCase(),e>0){const a="0".repeat(e);r.startsWith("-")?r="-"+a+r.slice(1):r=a+r}return r}function B(n,t=null){if(n=Math.trunc(n),t!==null&&n<0){if(n=Math.pow(2,t)+n,n<0)throw new Error("width too small for negative number");let a=n.toString(2);return a.length<t&&(a="0".repeat(t-a.length)+a),a}let e;return n<0?e="-"+Math.abs(n).toString(2):e=n.toString(2),t!==null&&e.length<t&&(e="0".repeat(t-e.length)+e),e}function P(n,t,e){if(n instanceof z){const r=P(n.re,"float64",e),a=P(Math.abs(n.im),"float64",e),o=n.im>=0?"+":"-";return`${r}${o}${a}j`}return typeof n=="boolean"?n?" True":"False":typeof n=="bigint"?n.toString():Number.isFinite(n)?t==="float32"||t==="float64"?e.suppress&&Math.abs(n)<1e-10&&n!==0?"0.":C(n,e.precision,!1,!0,"k",e.sign):n.toString():Number.isNaN(n)?e.nanstr:(n>0?"":"-")+e.infstr}function $(n,t){const e=[],r=n.shape,a=r.length,o=n.strides;function g(f,h){if(h===a){let i=0;for(let m=0;m<a;m++)i+=f[m]*o[m];e.push(n.iget(i));return}const u=r[h];if(r.reduce((i,m)=>i*m,1)>t.threshold&&u>2*t.edgeitems){for(let i=0;i<t.edgeitems;i++)f[h]=i,g(f,h+1);for(let i=u-t.edgeitems;i<u;i++)f[h]=i,g(f,h+1)}else for(let i=0;i<u;i++)f[h]=i,g(f,h+1)}return a>0?g(new Array(a).fill(0),0):e.push(n.iget(0)),e}function T(n,t){return n<0||Object.is(n,-0)?"-"+Math.abs(n).toString()+".":t==="+"?"+"+n.toString()+".":t===" "?" "+n.toString()+".":n.toString()+"."}function M(n,t,e){const r=n.indexOf(".");if(r===-1)return n.padStart(t+(e>0?1+e:0));const a=n.slice(0,r),o=n.slice(r+1),g=a.padStart(t),f=e>0?o.padEnd(e):o;return g+"."+f}function W(n){let t=0,e=0;for(const r of n){const a=r.indexOf(".");a===-1?t=Math.max(t,r.length):(t=Math.max(t,a),e=Math.max(e,r.length-a-1))}return{maxLeft:t,maxRight:e}}function A(n,t){const e=n.filter(i=>Number.isFinite(i));if(e.length===0){const i=n.map(b=>Number.isNaN(b)?t.nanstr:(b>0?"":"-")+t.infstr),m=i.length>0?Math.max(...i.map(b=>b.length)):1;return b=>Number.isNaN(b)?t.nanstr.padStart(m):Number.isFinite(b)?b.toString().padStart(m):((b>0?"":"-")+t.infstr).padStart(m)}const r=t.suppress?e.map(i=>Math.abs(i)<1e-10&&i!==0?0:i):e,a=r.map(Math.abs).filter(i=>i>0),o=a.length>0?Math.max(...a):0,g=a.length>0?Math.min(...a):0;if(o>=1e16||g>0&&g<1e-4||g>0&&o/g>1e3){const i=r.map(c=>w(c,t.precision,!1,".",t.sign));let m=0;for(const c of i){const y=c.indexOf("e"),O=y!==-1?c.slice(0,y):c,F=O.indexOf(".");F!==-1&&(m=Math.max(m,O.length-F-1))}const b=Math.max(m,0),l=Math.max(b,1),d=b===0?".":"k",S=r.map(c=>w(c,l,!1,d,t.sign));for(const c of n)Number.isFinite(c)||S.push(Number.isNaN(c)?t.nanstr:(c>0?"":"-")+t.infstr);const N=Math.max(...S.map(c=>c.length));return c=>(t.suppress&&Math.abs(c)<1e-10&&c!==0&&Number.isFinite(c)&&(c=0),Number.isNaN(c)?t.nanstr.padStart(N):Number.isFinite(c)?w(c,l,!1,d,t.sign).padStart(N):((c>0?"":"-")+t.infstr).padStart(N))}if(r.every(i=>Number.isInteger(i))){const i=r.map(l=>T(l,t.sign));for(const l of n)Number.isFinite(l)||i.push(Number.isNaN(l)?t.nanstr:(l>0?"":"-")+t.infstr);const{maxLeft:m,maxRight:b}=W(i);return l=>(t.suppress&&Math.abs(l)<1e-10&&l!==0&&Number.isFinite(l)&&(l=0),Number.isNaN(l)?M(t.nanstr,m,b):Number.isFinite(l)?M(T(l,t.sign),m,b):M((l>0?"":"-")+t.infstr,m,b))}const u=r.map(i=>C(i,t.precision,!1,!0,".",t.sign));for(const i of n)Number.isFinite(i)||u.push(Number.isNaN(i)?t.nanstr:(i>0?"":"-")+t.infstr);const{maxLeft:s,maxRight:p}=W(u);return i=>(t.suppress&&Math.abs(i)<1e-10&&i!==0&&Number.isFinite(i)&&(i=0),Number.isNaN(i)?M(t.nanstr,s,p):Number.isFinite(i)?M(C(i,t.precision,!1,!0,".",t.sign),s,p):M((i>0?"":"-")+t.infstr,s,p))}function j(n,t){const e=n.dtype,r=$(n,t);if(r.length===0)return o=>P(o,e,t);if(e==="bool")return o=>o?" True":"False";if(e==="int64"||e==="uint64"){const o=r.map(f=>f.toString()),g=Math.max(...o.map(f=>f.length));return f=>f.toString().padStart(g)}if(e.startsWith("int")||e.startsWith("uint")){const o=r.map(f=>f.toString()),g=Math.max(...o.map(f=>f.length));return f=>f.toString().padStart(g)}if(e==="complex64"||e==="complex128"){const o=r.map(u=>u.re),g=r.map(u=>Math.abs(u.im)),f=A(o,t),h=A(g,t);return u=>{const s=u,p=f(s.re),i=h(Math.abs(s.im)),m=s.im>=0?"+":"-";return`${p}${m}${i}j`}}const a=A(r,t);return o=>a(o)}function I(n,t,e,r,a,o){const g=n.shape,f=g.length;if(e===f){let l=0;const d=n.strides;for(let N=0;N<f;N++)l+=t[N]*d[N];const S=n.iget(l);return a(S)}const h=g[e],u=r.threshold,s=r.edgeitems,i=g.reduce((l,d)=>l*d,1)>u&&h>2*s,m=[],b=[...t];if(i){for(let l=0;l<s;l++)b[e]=l,m.push(I(n,b,e+1,r,a,o+1));m.push("...");for(let l=h-s;l<h;l++)b[e]=l,m.push(I(n,b,e+1,r,a,o+1))}else for(let l=0;l<h;l++)b[e]=l,m.push(I(n,b,e+1,r,a,o+1));if(e===f-1){const l="["+m.join(r.separator)+"]";if(o+l.length<r.linewidth)return l;const d=" ".repeat(o+1),S=r.linewidth-o-1,N=[];let c="";for(let y=0;y<m.length;y++){const O=m[y];if(c==="")c=O;else{const F=c+r.separator+O;F.length<S?c=F:(N.push(c),c=O)}}return c&&N.push(c),"["+N.join(`
1
+ import{Complex as z}from"../complex.js";const D={threshold:1e3,edgeitems:3,precision:8,linewidth:75,floatmode:"maxprec",suppress:!0,separator:" ",prefix:"",suffix:"",nanstr:"nan",infstr:"inf",sign:"-",legacy:!1};let x={...D};function q(n){x={...x,...n}}function E(){return{...x}}function R(n){let t=null;const e={_savedOptions:null,enter(){t={...x},e._savedOptions=t,x={...x,...n}},exit(){t&&(x=t,t=null,e._savedOptions=null)},apply(r){e.enter();try{return r()}finally{e.exit()}}};return e}function C(n,t=null,e=!0,r=!0,a="k",o="-",g=null,f=null,h=null){const u=t??x.precision;if(!Number.isFinite(n))return Number.isNaN(n)?x.nanstr:(n>0?"":"-")+x.infstr;let s;if(e&&t===null?(s=n.toString(),r&&!s.includes(".")&&!s.includes("e")&&(s+=".0")):s=n.toFixed(u),h!==null){const p=s.indexOf(".");if(p!==-1){const i=s.length-p-1;i<h&&(s+="0".repeat(h-i))}else r&&(s+="."+"0".repeat(h))}if(a!=="k"&&s.includes(".")){if(a==="."||a==="0"||a==="-"){let p=s.length;for(;p>0&&s[p-1]==="0";)p--;s=s.slice(0,p)}a==="0"&&s.endsWith(".")&&(s+="0"),a==="-"&&s.endsWith(".")&&(s=s.slice(0,-1))}if(n>=0&&!Object.is(n,-0)&&(o==="+"?s="+"+s:o===" "&&(s=" "+s)),g!==null&&s.length<g&&(s=" ".repeat(g-s.length)+s),f!==null){const p=s.indexOf(".");if(p!==-1){const i=s.length-p-1;i<f&&(s+="0".repeat(f-i))}}return s}function w(n,t=null,e=!0,r="k",a="-",o=null,g=2,f=null){const h=t??x.precision;if(!Number.isFinite(n))return Number.isNaN(n)?x.nanstr:(n>0?"":"-")+x.infstr;let u=n.toExponential(h);if(f!==null){const l=u.indexOf("e"),d=u.slice(0,l),S=u.slice(l),N=d.indexOf(".");if(N!==-1){const c=d.length-N-1;c<f&&(u=d+"0".repeat(f-c)+S)}}if(r!=="k"){const l=u.indexOf("e");let d=u.slice(0,l);const S=u.slice(l);d.includes(".")&&((r==="."||r==="0"||r==="-")&&(d=d.replace(/0+$/,"")),r==="0"&&d.endsWith(".")&&(d+="0"),r==="-"&&(d=d.replace(/\.$/,""))),u=d+S}const s=u.indexOf("e"),p=u.slice(0,s);let i=u.slice(s+1);const m=i[0]==="-"?"-":"+";let b=i.replace(/^[+-]/,"");for(;b.length<g;)b="0"+b;return u=p+"e"+m+b,n>=0&&!Object.is(n,-0)&&(a==="+"?u="+"+u:a===" "&&(u=" "+u)),o!==null&&u.length<o&&(u=" ".repeat(o-u.length)+u),u}function U(n,t=2,e=0){if(t<2||t>36)throw new Error("base must be between 2 and 36");n=Math.trunc(n);let r;if(n<0?r="-"+Math.abs(n).toString(t).toUpperCase():r=n.toString(t).toUpperCase(),e>0){const a="0".repeat(e);r.startsWith("-")?r="-"+a+r.slice(1):r=a+r}return r}function B(n,t=null){if(n=Math.trunc(n),t!==null&&n<0){if(n=Math.pow(2,t)+n,n<0)throw new Error("width too small for negative number");let a=n.toString(2);return a.length<t&&(a="0".repeat(t-a.length)+a),a}let e;return n<0?e="-"+Math.abs(n).toString(2):e=n.toString(2),t!==null&&e.length<t&&(e="0".repeat(t-e.length)+e),e}function P(n,t,e){if(n instanceof z){const r=P(n.re,"float64",e),a=P(Math.abs(n.im),"float64",e),o=n.im>=0?"+":"-";return`${r}${o}${a}j`}return typeof n=="boolean"?n?" True":"False":typeof n=="bigint"?n.toString():Number.isFinite(n)?t==="float16"||t==="float32"||t==="float64"?e.suppress&&Math.abs(n)<1e-10&&n!==0?"0.":C(n,e.precision,!1,!0,"k",e.sign):n.toString():Number.isNaN(n)?e.nanstr:(n>0?"":"-")+e.infstr}function $(n,t){const e=[],r=n.shape,a=r.length,o=n.strides;function g(f,h){if(h===a){let i=0;for(let m=0;m<a;m++)i+=f[m]*o[m];e.push(n.iget(i));return}const u=r[h];if(r.reduce((i,m)=>i*m,1)>t.threshold&&u>2*t.edgeitems){for(let i=0;i<t.edgeitems;i++)f[h]=i,g(f,h+1);for(let i=u-t.edgeitems;i<u;i++)f[h]=i,g(f,h+1)}else for(let i=0;i<u;i++)f[h]=i,g(f,h+1)}return a>0?g(new Array(a).fill(0),0):e.push(n.iget(0)),e}function T(n,t){return n<0||Object.is(n,-0)?"-"+Math.abs(n).toString()+".":t==="+"?"+"+n.toString()+".":t===" "?" "+n.toString()+".":n.toString()+"."}function M(n,t,e){const r=n.indexOf(".");if(r===-1)return n.padStart(t+(e>0?1+e:0));const a=n.slice(0,r),o=n.slice(r+1),g=a.padStart(t),f=e>0?o.padEnd(e):o;return g+"."+f}function W(n){let t=0,e=0;for(const r of n){const a=r.indexOf(".");a===-1?t=Math.max(t,r.length):(t=Math.max(t,a),e=Math.max(e,r.length-a-1))}return{maxLeft:t,maxRight:e}}function A(n,t){const e=n.filter(i=>Number.isFinite(i));if(e.length===0){const i=n.map(b=>Number.isNaN(b)?t.nanstr:(b>0?"":"-")+t.infstr),m=i.length>0?Math.max(...i.map(b=>b.length)):1;return b=>Number.isNaN(b)?t.nanstr.padStart(m):Number.isFinite(b)?b.toString().padStart(m):((b>0?"":"-")+t.infstr).padStart(m)}const r=t.suppress?e.map(i=>Math.abs(i)<1e-10&&i!==0?0:i):e,a=r.map(Math.abs).filter(i=>i>0),o=a.length>0?Math.max(...a):0,g=a.length>0?Math.min(...a):0;if(o>=1e16||g>0&&g<1e-4||g>0&&o/g>1e3){const i=r.map(c=>w(c,t.precision,!1,".",t.sign));let m=0;for(const c of i){const O=c.indexOf("e"),y=O!==-1?c.slice(0,O):c,F=y.indexOf(".");F!==-1&&(m=Math.max(m,y.length-F-1))}const b=Math.max(m,0),l=Math.max(b,1),d=b===0?".":"k",S=r.map(c=>w(c,l,!1,d,t.sign));for(const c of n)Number.isFinite(c)||S.push(Number.isNaN(c)?t.nanstr:(c>0?"":"-")+t.infstr);const N=Math.max(...S.map(c=>c.length));return c=>(t.suppress&&Math.abs(c)<1e-10&&c!==0&&Number.isFinite(c)&&(c=0),Number.isNaN(c)?t.nanstr.padStart(N):Number.isFinite(c)?w(c,l,!1,d,t.sign).padStart(N):((c>0?"":"-")+t.infstr).padStart(N))}if(r.every(i=>Number.isInteger(i))){const i=r.map(l=>T(l,t.sign));for(const l of n)Number.isFinite(l)||i.push(Number.isNaN(l)?t.nanstr:(l>0?"":"-")+t.infstr);const{maxLeft:m,maxRight:b}=W(i);return l=>(t.suppress&&Math.abs(l)<1e-10&&l!==0&&Number.isFinite(l)&&(l=0),Number.isNaN(l)?M(t.nanstr,m,b):Number.isFinite(l)?M(T(l,t.sign),m,b):M((l>0?"":"-")+t.infstr,m,b))}const u=r.map(i=>C(i,t.precision,!1,!0,".",t.sign));for(const i of n)Number.isFinite(i)||u.push(Number.isNaN(i)?t.nanstr:(i>0?"":"-")+t.infstr);const{maxLeft:s,maxRight:p}=W(u);return i=>(t.suppress&&Math.abs(i)<1e-10&&i!==0&&Number.isFinite(i)&&(i=0),Number.isNaN(i)?M(t.nanstr,s,p):Number.isFinite(i)?M(C(i,t.precision,!1,!0,".",t.sign),s,p):M((i>0?"":"-")+t.infstr,s,p))}function j(n,t){const e=n.dtype,r=$(n,t);if(r.length===0)return o=>P(o,e,t);if(e==="bool")return o=>o?" True":"False";if(e==="int64"||e==="uint64"){const o=r.map(f=>f.toString()),g=Math.max(...o.map(f=>f.length));return f=>f.toString().padStart(g)}if(e.startsWith("int")||e.startsWith("uint")){const o=r.map(f=>f.toString()),g=Math.max(...o.map(f=>f.length));return f=>f.toString().padStart(g)}if(e==="complex64"||e==="complex128"){const o=r.map(u=>u.re),g=r.map(u=>Math.abs(u.im)),f=A(o,t),h=A(g,t);return u=>{const s=u,p=f(s.re),i=h(Math.abs(s.im)),m=s.im>=0?"+":"-";return`${p}${m}${i}j`}}const a=A(r,t);return o=>a(o)}function I(n,t,e,r,a,o){const g=n.shape,f=g.length;if(e===f){let l=0;const d=n.strides;for(let N=0;N<f;N++)l+=t[N]*d[N];const S=n.iget(l);return a(S)}const h=g[e],u=r.threshold,s=r.edgeitems,i=g.reduce((l,d)=>l*d,1)>u&&h>2*s,m=[],b=[...t];if(i){for(let l=0;l<s;l++)b[e]=l,m.push(I(n,b,e+1,r,a,o+1));m.push("...");for(let l=h-s;l<h;l++)b[e]=l,m.push(I(n,b,e+1,r,a,o+1))}else for(let l=0;l<h;l++)b[e]=l,m.push(I(n,b,e+1,r,a,o+1));if(e===f-1){const l="["+m.join(r.separator)+"]";if(o+l.length<r.linewidth)return l;const d=" ".repeat(o+1),S=r.linewidth-o-1,N=[];let c="";for(let O=0;O<m.length;O++){const y=m[O];if(c==="")c=y;else{const F=c+r.separator+y;F.length<S?c=F:(N.push(c),c=y)}}return c&&N.push(c),"["+N.join(`
2
2
  `+d)+"]"}else{const l=" ".repeat(o+1),d=f-e-2,S=`
3
3
  `+`
4
4
  `.repeat(Math.max(0,d))+l;return"["+m.join(S)+"]"}}function k(n,t=null,e=null,r=null,a=" ",o="",g="",f=null,h=null,u=null,s=null){const p={...x,linewidth:t??x.linewidth,precision:e??x.precision,suppress:r??x.suppress,separator:a,prefix:o,suffix:g,threshold:f??x.threshold,edgeitems:h??x.edgeitems,floatmode:u??x.floatmode,sign:s??x.sign};if(n.ndim===0){const l=n.iget(0);return P(l,n.dtype,p)}const i=j(n,p),m=p.prefix.length,b=I(n,new Array(n.ndim).fill(0),0,p,i,m);return p.prefix+b+p.suffix}function G(n,t=null,e=null,r=null){let o="array("+k(n,t,e,r,", ");return n.dtype!=="float64"&&(o+=`, dtype='${n.dtype}'`),o+=")",o}function H(n,t=null,e=null,r=null){return k(n,t,e,r)}export{k as array2string,G as array_repr,H as array_str,U as base_repr,B as binary_repr,C as format_float_positional,w as format_float_scientific,E as get_printoptions,R as printoptions,q as set_printoptions};
@@ -1 +1 @@
1
- import{ArrayStorage as O}from"../storage";import{isBigIntDType as v,isComplexDType as H,promoteDTypes as et}from"../dtype";import{wasmDiff as ot}from"../wasm/diff";import{wasmGradient1D as rt}from"../wasm/gradient";function ft(e,r=1,g=-1){if(r<0)throw new Error(`order must be non-negative but got ${r}`);if(r===0)return e.copy();const x=Array.from(e.shape),A=x.length,d=g<0?A+g:g;if(d<0||d>=A)throw new Error(`axis ${g} is out of bounds for array of dimension ${A}`);if(x[d]<r+1)throw new Error(`diff requires at least ${r+1} elements along axis ${g}, but got ${x[d]}`);if(r===1&&!H(e.dtype)){const h=ot(e,d);if(h)return h}let p=e;for(let h=0;h<r;h++)p=st(p,d);return p}function st(e,r){const g=Array.from(e.shape),x=g.length,A=g[r],d=[...g];d[r]=A-1;const p=e.dtype,h=H(p),I=v(p)?"float64":p,D=O.zeros(d,I),P=D.data,w=e.strides,N=D.size,y=e.offset;for(let b=0;b<N;b++){let n=b;const u=new Array(x);for(let t=x-1;t>=0;t--)u[t]=n%d[t],n=Math.floor(n/d[t]);const M=[...u],a=[...u];a[r]=M[r]+1;let o=0,s=0;for(let t=0;t<x;t++)o+=M[t]*w[t],s+=a[t]*w[t];if(h){const t=e.data,c=t[(y+o)*2],m=t[(y+o)*2+1],l=t[(y+s)*2],i=t[(y+s)*2+1];P[b*2]=l-c,P[b*2+1]=i-m}else{const t=(v(p),Number(e.data[y+o])),c=(v(p),Number(e.data[y+s]));P[b]=c-t}}return D}function dt(e,r=null,g=null){const x=e.size,A=e.dtype,d=H(A),p=v(A)?"float64":A,h=Math.max(0,x-1),I=g?g.length:0,D=r?r.length:0,P=I+h+D,w=O.zeros([P],p),N=w.data;let y=0;if(g)if(d)for(const b of g)N[y*2]=b,N[y*2+1]=0,y++;else for(const b of g)N[y++]=b;if(d)for(let b=0;b<h;b++){const n=e.iget(b),u=e.iget(b+1);N[y*2]=u.re-n.re,N[y*2+1]=u.im-n.im,y++}else for(let b=0;b<h;b++){const n=(v(A),Number(e.iget(b))),u=(v(A),Number(e.iget(b+1)));N[y++]=u-n}if(r)if(d)for(const b of r)N[y*2]=b,N[y*2+1]=0,y++;else for(const b of r)N[y++]=b;return w}function bt(e,r=1,g=null){const A=Array.from(e.shape).length;let d;if(g===null)d=Array.from({length:A},(I,D)=>D);else if(typeof g=="number"){const I=g<0?A+g:g;if(I<0||I>=A)throw new Error(`axis ${g} is out of bounds for array of dimension ${A}`);d=[I]}else d=g.map(I=>{const D=I<0?A+I:I;if(D<0||D>=A)throw new Error(`axis ${I} is out of bounds for array of dimension ${A}`);return D});let p;if(typeof r=="number")p=d.map(()=>r);else{if(r.length!==d.length)throw new Error("Number of spacings must match number of axes");p=r}if(d.length===1&&e.shape.length===1&&!H(e.dtype)&&typeof r=="number"){const I=rt(e,p[0]);if(I)return I}const h=[];for(let I=0;I<d.length;I++)h.push(nt(e,d[I],p[I]));return h.length===1?h[0]:h}function nt(e,r,g){const x=Array.from(e.shape),A=x.length,d=x[r];if(d<2)throw new Error(`Shape of array along axis ${r} must be at least 2, but got ${d}`);const p=e.dtype,h=H(p),I=v(p)?"float64":p==="float32"?"float32":h?p:"float64",D=O.zeros(x,I),P=D.data,w=e.strides,N=g,y=2*N,b=e.size,n=e.offset;for(let u=0;u<b;u++){let M=u;const a=new Array(A);for(let t=A-1;t>=0;t--)a[t]=M%x[t],M=Math.floor(M/x[t]);let o=n;for(let t=0;t<A;t++)o+=a[t]*w[t];const s=a[r];if(h){const t=e.data,c=P;let m,l;if(s===0){const i=[...a];i[r]=1;let f=0;for(let S=0;S<A;S++)f+=i[S]*w[S];const F=t[o*2],R=t[o*2+1],z=t[(n+f)*2],$=t[(n+f)*2+1];m=(z-F)/N,l=($-R)/N}else if(s===d-1){const i=[...a];i[r]=d-2;let f=0;for(let S=0;S<A;S++)f+=i[S]*w[S];const F=t[o*2],R=t[o*2+1],z=t[(n+f)*2],$=t[(n+f)*2+1];m=(F-z)/N,l=(R-$)/N}else{const i=[...a],f=[...a];i[r]=s+1,f[r]=s-1;let F=0,R=0;for(let q=0;q<A;q++)F+=i[q]*w[q],R+=f[q]*w[q];const z=t[(n+F)*2],$=t[(n+F)*2+1],S=t[(n+R)*2],E=t[(n+R)*2+1];m=(z-S)/y,l=($-E)/y}c[u*2]=m,c[u*2+1]=l}else{let t;if(s===0){const c=[...a];c[r]=1;let m=0;for(let f=0;f<A;f++)m+=c[f]*w[f];const l=(v(p),Number(e.data[o]));t=((v(p),Number(e.data[n+m]))-l)/N}else if(s===d-1){const c=[...a];c[r]=d-2;let m=0;for(let f=0;f<A;f++)m+=c[f]*w[f];const l=(v(p),Number(e.data[o])),i=(v(p),Number(e.data[n+m]));t=(l-i)/N}else{const c=[...a],m=[...a];c[r]=s+1,m[r]=s-1;let l=0,i=0;for(let R=0;R<A;R++)l+=c[R]*w[R],i+=m[R]*w[R];const f=(v(p),Number(e.data[n+l])),F=(v(p),Number(e.data[n+i]));t=(f-F)/y}P[u]=t}}return D}function pt(e,r,g=-1,x=-1,A=-1){const d=Array.from(e.shape),p=Array.from(r.shape),h=d.length,I=p.length,D=g<0?h+g:g,P=x<0?I+x:x;if(D<0||D>=h)throw new Error(`axisa ${g} is out of bounds for array of dimension ${h}`);if(P<0||P>=I)throw new Error(`axisb ${x} is out of bounds for array of dimension ${I}`);const w=d[D],N=p[P];if(w!==2&&w!==3)throw new Error(`incompatible dimensions for cross product (dimension must be 2 or 3, got ${w})`);if(N!==2&&N!==3)throw new Error(`incompatible dimensions for cross product (dimension must be 2 or 3, got ${N})`);const y=et(e.dtype,r.dtype),b=H(y),n=(a,o)=>{if(H(a.dtype)){const s=a.data,t=a.offset;return[s[(t+o)*2],s[(t+o)*2+1]]}return[Number(a.iget(o)),0]},u=(a,o,s,t)=>[a*s-o*t,a*t+o*s],M=(a,o,s,t)=>[a-s,o-t];if(h===1&&I===1&&w===3&&N===3){const a=O.zeros([3],y);if(b){const o=a.data,[s,t]=n(e,0),[c,m]=n(e,1),[l,i]=n(e,2),[f,F]=n(r,0),[R,z]=n(r,1),[$,S]=n(r,2),[E,q]=u(c,m,$,S),[C,B]=u(l,i,R,z),[T,J]=M(E,q,C,B),[V,G]=u(l,i,f,F),[j,k]=u(s,t,$,S),[K,L]=M(V,G,j,k),[Q,U]=u(s,t,R,z),[W,X]=u(c,m,f,F),[Y,Z]=M(Q,U,W,X);o[0]=T,o[1]=J,o[2]=K,o[3]=L,o[4]=Y,o[5]=Z}else{const o=a.data,s=Number(e.iget(0)),t=Number(e.iget(1)),c=Number(e.iget(2)),m=Number(r.iget(0)),l=Number(r.iget(1)),i=Number(r.iget(2));o[0]=t*i-c*l,o[1]=c*m-s*i,o[2]=s*l-t*m}return a}if(h===1&&I===1&&w===2&&N===2){const a=O.zeros([],y);if(b){const o=a.data,[s,t]=n(e,0),[c,m]=n(e,1),[l,i]=n(r,0),[f,F]=n(r,1),[R,z]=u(s,t,f,F),[$,S]=u(c,m,l,i),[E,q]=M(R,z,$,S);o[0]=E,o[1]=q}else{const o=Number(e.iget(0)),s=Number(e.iget(1)),t=Number(r.iget(0)),c=Number(r.iget(1));a.data[0]=o*c-s*t}return a}if(h===1&&I===1){if(w===2&&N===3){const a=O.zeros([3],y);if(b){const o=a.data,[s,t]=n(e,0),[c,m]=n(e,1),[l,i]=n(r,0),[f,F]=n(r,1),[R,z]=n(r,2),[$,S]=u(c,m,R,z),[E,q]=u(s,t,R,z),C=-E,B=-q,[T,J]=u(s,t,f,F),[V,G]=u(c,m,l,i),[j,k]=M(T,J,V,G);o[0]=$,o[1]=S,o[2]=C,o[3]=B,o[4]=j,o[5]=k}else{const o=a.data,s=Number(e.iget(0)),t=Number(e.iget(1)),c=Number(r.iget(0)),m=Number(r.iget(1)),l=Number(r.iget(2));o[0]=t*l,o[1]=-s*l,o[2]=s*m-t*c}return a}else if(w===3&&N===2){const a=O.zeros([3],y);if(b){const o=a.data,[s,t]=n(e,0),[c,m]=n(e,1),[l,i]=n(e,2),[f,F]=n(r,0),[R,z]=n(r,1),[$,S]=u(l,i,R,z),E=-$,q=-S,[C,B]=u(l,i,f,F),[T,J]=u(s,t,R,z),[V,G]=u(c,m,f,F),[j,k]=M(T,J,V,G);o[0]=E,o[1]=q,o[2]=C,o[3]=B,o[4]=j,o[5]=k}else{const o=a.data,s=Number(e.iget(0)),t=Number(e.iget(1)),c=Number(e.iget(2)),m=Number(r.iget(0)),l=Number(r.iget(1));o[0]=-c*l,o[1]=c*m,o[2]=s*l-t*m}return a}}if(h===2&&I===2&&D===1&&P===1){const a=d[0];if(p[0]!==a)throw new Error(`Shape mismatch: a has ${a} vectors, b has ${p[0]} vectors`);if(w===3&&N===3){const o=O.zeros([a,3],y);if(b){const s=o.data;for(let t=0;t<a;t++){const[c,m]=n(e,t*3),[l,i]=n(e,t*3+1),[f,F]=n(e,t*3+2),[R,z]=n(r,t*3),[$,S]=n(r,t*3+1),[E,q]=n(r,t*3+2),[C,B]=u(l,i,E,q),[T,J]=u(f,F,$,S),[V,G]=M(C,B,T,J),[j,k]=u(f,F,R,z),[K,L]=u(c,m,E,q),[Q,U]=M(j,k,K,L),[W,X]=u(c,m,$,S),[Y,Z]=u(l,i,R,z),[_,tt]=M(W,X,Y,Z);s[t*3*2]=V,s[t*3*2+1]=G,s[(t*3+1)*2]=Q,s[(t*3+1)*2+1]=U,s[(t*3+2)*2]=_,s[(t*3+2)*2+1]=tt}}else{const s=o.data;for(let t=0;t<a;t++){const c=Number(e.iget(t*3)),m=Number(e.iget(t*3+1)),l=Number(e.iget(t*3+2)),i=Number(r.iget(t*3)),f=Number(r.iget(t*3+1)),F=Number(r.iget(t*3+2));s[t*3]=m*F-l*f,s[t*3+1]=l*i-c*F,s[t*3+2]=c*f-m*i}}return o}if(w===2&&N===2){const o=O.zeros([a],y);if(b){const s=o.data;for(let t=0;t<a;t++){const[c,m]=n(e,t*2),[l,i]=n(e,t*2+1),[f,F]=n(r,t*2),[R,z]=n(r,t*2+1),[$,S]=u(c,m,R,z),[E,q]=u(l,i,f,F),[C,B]=M($,S,E,q);s[t*2]=C,s[t*2+1]=B}}else{const s=o.data;for(let t=0;t<a;t++){const c=Number(e.iget(t*2)),m=Number(e.iget(t*2+1)),l=Number(r.iget(t*2)),i=Number(r.iget(t*2+1));s[t]=c*i-m*l}}return o}}throw new Error(`cross product not implemented for arrays with shapes ${JSON.stringify(d)} and ${JSON.stringify(p)}`)}export{pt as cross,ft as diff,dt as ediff1d,bt as gradient};
1
+ import{ArrayStorage as C}from"../storage.js";import{isBigIntDType as T,isComplexDType as k,promoteDTypes as et}from"../dtype.js";import{wasmDiff as ot}from"../wasm/diff.js";import{wasmGradient1D as rt}from"../wasm/gradient.js";function ft(e,r=1,I=-1){if(r<0)throw new Error(`order must be non-negative but got ${r}`);if(r===0)return e.copy();const x=Array.from(e.shape),h=x.length,b=I<0?h+I:I;if(b<0||b>=h)throw new Error(`axis ${I} is out of bounds for array of dimension ${h}`);if(x[b]<r+1)throw new Error(`diff requires at least ${r+1} elements along axis ${I}, but got ${x[b]}`);if(r===1&&!k(e.dtype)&&e.dtype!=="bool"){const N=ot(e,b);if(N)return N}let y=e;for(let N=0;N<r;N++)y=st(y,b);return y}function st(e,r){const I=Array.from(e.shape),x=I.length,h=I[r],b=[...I];b[r]=h-1;const y=e.dtype,N=k(y),g=y,D=C.zeros(b,g),M=D.data,F=e.strides,A=D.size,p=e.offset;for(let d=0;d<A;d++){let n=d;const m=new Array(x);for(let t=x-1;t>=0;t--)m[t]=n%b[t],n=Math.floor(n/b[t]);const E=[...m],a=[...m];a[r]=E[r]+1;let o=0,s=0;for(let t=0;t<x;t++)o+=E[t]*F[t],s+=a[t]*F[t];if(N){const t=e.data,c=t[(p+o)*2],l=t[(p+o)*2+1],i=t[(p+s)*2],u=t[(p+s)*2+1];M[d*2]=i-c,M[d*2+1]=u-l}else if(y==="bool"){const t=e.data[p+o],c=e.data[p+s];M[d]=t!==c?1:0}else if(T(y)){const t=e.data,c=t[p+o],l=t[p+s];M[d]=l-c}else{const t=Number(e.data[p+o]),c=Number(e.data[p+s]);M[d]=c-t}}return D}function dt(e,r=null,I=null){if(e.dtype==="bool")throw new TypeError("ufunc 'subtract' not supported for boolean dtype. The '-' operator is not supported for booleans, use 'bitwise_xor' instead.");const x=e.size,h=e.dtype,b=k(h),y=h,N=Math.max(0,x-1),g=I?I.length:0,D=r?r.length:0,M=g+N+D,F=C.zeros([M],y),A=F.data;let p=0;if(I)if(b)for(const d of I)A[p*2]=d,A[p*2+1]=0,p++;else for(const d of I)A[p++]=d;if(b)for(let d=0;d<N;d++){const n=e.iget(d),m=e.iget(d+1);A[p*2]=m.re-n.re,A[p*2+1]=m.im-n.im,p++}else if(T(h)){const d=e.data,n=e.offset;for(let m=0;m<N;m++)A[p++]=d[n+m+1]-d[n+m]}else for(let d=0;d<N;d++)A[p++]=Number(e.iget(d+1))-Number(e.iget(d));if(r)if(b)for(const d of r)A[p*2]=d,A[p*2+1]=0,p++;else for(const d of r)A[p++]=d;return F}function bt(e,r=1,I=null){if(e.dtype==="bool")throw new TypeError("ufunc 'subtract' not supported for boolean dtype. The '-' operator is not supported for booleans, use 'bitwise_xor' instead.");const h=Array.from(e.shape).length;let b;if(I===null)b=Array.from({length:h},(g,D)=>D);else if(typeof I=="number"){const g=I<0?h+I:I;if(g<0||g>=h)throw new Error(`axis ${I} is out of bounds for array of dimension ${h}`);b=[g]}else b=I.map(g=>{const D=g<0?h+g:g;if(D<0||D>=h)throw new Error(`axis ${g} is out of bounds for array of dimension ${h}`);return D});let y;if(typeof r=="number")y=b.map(()=>r);else{if(r.length!==b.length)throw new Error("Number of spacings must match number of axes");y=r}if(b.length===1&&e.shape.length===1&&!k(e.dtype)&&typeof r=="number"){const g=rt(e,y[0]);if(g)return g}const N=[];for(let g=0;g<b.length;g++)N.push(nt(e,b[g],y[g]));return N.length===1?N[0]:N}function nt(e,r,I){const x=Array.from(e.shape),h=x.length,b=x[r];if(b<2)throw new Error(`Shape of array along axis ${r} must be at least 2, but got ${b}`);const y=e.dtype,N=k(y),g=T(y)?"float64":y==="float16"||y==="float32"||N?y:"float64",D=C.zeros(x,g),M=D.data,F=e.strides,A=I,p=2*A,d=e.size,n=e.offset;for(let m=0;m<d;m++){let E=m;const a=new Array(h);for(let t=h-1;t>=0;t--)a[t]=E%x[t],E=Math.floor(E/x[t]);let o=n;for(let t=0;t<h;t++)o+=a[t]*F[t];const s=a[r];if(N){const t=e.data,c=M;let l,i;if(s===0){const u=[...a];u[r]=1;let f=0;for(let S=0;S<h;S++)f+=u[S]*F[S];const w=t[o*2],R=t[o*2+1],z=t[(n+f)*2],$=t[(n+f)*2+1];l=(z-w)/A,i=($-R)/A}else if(s===b-1){const u=[...a];u[r]=b-2;let f=0;for(let S=0;S<h;S++)f+=u[S]*F[S];const w=t[o*2],R=t[o*2+1],z=t[(n+f)*2],$=t[(n+f)*2+1];l=(w-z)/A,i=(R-$)/A}else{const u=[...a],f=[...a];u[r]=s+1,f[r]=s-1;let w=0,R=0;for(let q=0;q<h;q++)w+=u[q]*F[q],R+=f[q]*F[q];const z=t[(n+w)*2],$=t[(n+w)*2+1],S=t[(n+R)*2],B=t[(n+R)*2+1];l=(z-S)/p,i=($-B)/p}c[m*2]=l,c[m*2+1]=i}else{let t;if(s===0){const c=[...a];c[r]=1;let l=0;for(let f=0;f<h;f++)l+=c[f]*F[f];const i=(T(y),Number(e.data[o]));t=((T(y),Number(e.data[n+l]))-i)/A}else if(s===b-1){const c=[...a];c[r]=b-2;let l=0;for(let f=0;f<h;f++)l+=c[f]*F[f];const i=(T(y),Number(e.data[o])),u=(T(y),Number(e.data[n+l]));t=(i-u)/A}else{const c=[...a],l=[...a];c[r]=s+1,l[r]=s-1;let i=0,u=0;for(let R=0;R<h;R++)i+=c[R]*F[R],u+=l[R]*F[R];const f=(T(y),Number(e.data[n+i])),w=(T(y),Number(e.data[n+u]));t=(f-w)/p}M[m]=t}}return D}function pt(e,r,I=-1,x=-1,h=-1){if(e.dtype==="bool"||r.dtype==="bool")throw new TypeError("ufunc 'subtract' not supported for boolean dtype. The '-' operator is not supported for booleans, use 'bitwise_xor' instead.");const b=Array.from(e.shape),y=Array.from(r.shape),N=b.length,g=y.length,D=I<0?N+I:I,M=x<0?g+x:x;if(D<0||D>=N)throw new Error(`axisa ${I} is out of bounds for array of dimension ${N}`);if(M<0||M>=g)throw new Error(`axisb ${x} is out of bounds for array of dimension ${g}`);const F=b[D],A=y[M];if(F!==2&&F!==3)throw new Error(`incompatible dimensions for cross product (dimension must be 2 or 3, got ${F})`);if(A!==2&&A!==3)throw new Error(`incompatible dimensions for cross product (dimension must be 2 or 3, got ${A})`);const p=et(e.dtype,r.dtype),d=k(p),n=(a,o)=>{if(k(a.dtype)){const s=a.data,t=a.offset;return[s[(t+o)*2],s[(t+o)*2+1]]}return[Number(a.iget(o)),0]},m=(a,o,s,t)=>[a*s-o*t,a*t+o*s],E=(a,o,s,t)=>[a-s,o-t];if(N===1&&g===1&&F===3&&A===3){const a=C.zeros([3],p);if(d){const o=a.data,[s,t]=n(e,0),[c,l]=n(e,1),[i,u]=n(e,2),[f,w]=n(r,0),[R,z]=n(r,1),[$,S]=n(r,2),[B,q]=m(c,l,$,S),[v,P]=m(i,u,R,z),[O,U]=E(B,q,v,P),[J,V]=m(i,u,f,w),[G,j]=m(s,t,$,S),[H,K]=E(J,V,G,j),[L,Q]=m(s,t,R,z),[W,X]=m(c,l,f,w),[Y,Z]=E(L,Q,W,X);o[0]=O,o[1]=U,o[2]=H,o[3]=K,o[4]=Y,o[5]=Z}else{const o=a.data,s=Number(e.iget(0)),t=Number(e.iget(1)),c=Number(e.iget(2)),l=Number(r.iget(0)),i=Number(r.iget(1)),u=Number(r.iget(2));o[0]=t*u-c*i,o[1]=c*l-s*u,o[2]=s*i-t*l}return a}if(N===1&&g===1&&F===2&&A===2){const a=C.zeros([],p);if(d){const o=a.data,[s,t]=n(e,0),[c,l]=n(e,1),[i,u]=n(r,0),[f,w]=n(r,1),[R,z]=m(s,t,f,w),[$,S]=m(c,l,i,u),[B,q]=E(R,z,$,S);o[0]=B,o[1]=q}else{const o=Number(e.iget(0)),s=Number(e.iget(1)),t=Number(r.iget(0)),c=Number(r.iget(1));a.data[0]=o*c-s*t}return a}if(N===1&&g===1){if(F===2&&A===3){const a=C.zeros([3],p);if(d){const o=a.data,[s,t]=n(e,0),[c,l]=n(e,1),[i,u]=n(r,0),[f,w]=n(r,1),[R,z]=n(r,2),[$,S]=m(c,l,R,z),[B,q]=m(s,t,R,z),v=-B,P=-q,[O,U]=m(s,t,f,w),[J,V]=m(c,l,i,u),[G,j]=E(O,U,J,V);o[0]=$,o[1]=S,o[2]=v,o[3]=P,o[4]=G,o[5]=j}else{const o=a.data,s=Number(e.iget(0)),t=Number(e.iget(1)),c=Number(r.iget(0)),l=Number(r.iget(1)),i=Number(r.iget(2));o[0]=t*i,o[1]=-s*i,o[2]=s*l-t*c}return a}else if(F===3&&A===2){const a=C.zeros([3],p);if(d){const o=a.data,[s,t]=n(e,0),[c,l]=n(e,1),[i,u]=n(e,2),[f,w]=n(r,0),[R,z]=n(r,1),[$,S]=m(i,u,R,z),B=-$,q=-S,[v,P]=m(i,u,f,w),[O,U]=m(s,t,R,z),[J,V]=m(c,l,f,w),[G,j]=E(O,U,J,V);o[0]=B,o[1]=q,o[2]=v,o[3]=P,o[4]=G,o[5]=j}else{const o=a.data,s=Number(e.iget(0)),t=Number(e.iget(1)),c=Number(e.iget(2)),l=Number(r.iget(0)),i=Number(r.iget(1));o[0]=-c*i,o[1]=c*l,o[2]=s*i-t*l}return a}}if(N===2&&g===2&&D===1&&M===1){const a=b[0];if(y[0]!==a)throw new Error(`Shape mismatch: a has ${a} vectors, b has ${y[0]} vectors`);if(F===3&&A===3){const o=C.zeros([a,3],p);if(d){const s=o.data;for(let t=0;t<a;t++){const[c,l]=n(e,t*3),[i,u]=n(e,t*3+1),[f,w]=n(e,t*3+2),[R,z]=n(r,t*3),[$,S]=n(r,t*3+1),[B,q]=n(r,t*3+2),[v,P]=m(i,u,B,q),[O,U]=m(f,w,$,S),[J,V]=E(v,P,O,U),[G,j]=m(f,w,R,z),[H,K]=m(c,l,B,q),[L,Q]=E(G,j,H,K),[W,X]=m(c,l,$,S),[Y,Z]=m(i,u,R,z),[_,tt]=E(W,X,Y,Z);s[t*3*2]=J,s[t*3*2+1]=V,s[(t*3+1)*2]=L,s[(t*3+1)*2+1]=Q,s[(t*3+2)*2]=_,s[(t*3+2)*2+1]=tt}}else{const s=o.data;for(let t=0;t<a;t++){const c=Number(e.iget(t*3)),l=Number(e.iget(t*3+1)),i=Number(e.iget(t*3+2)),u=Number(r.iget(t*3)),f=Number(r.iget(t*3+1)),w=Number(r.iget(t*3+2));s[t*3]=l*w-i*f,s[t*3+1]=i*u-c*w,s[t*3+2]=c*f-l*u}}return o}if(F===2&&A===2){const o=C.zeros([a],p);if(d){const s=o.data;for(let t=0;t<a;t++){const[c,l]=n(e,t*2),[i,u]=n(e,t*2+1),[f,w]=n(r,t*2),[R,z]=n(r,t*2+1),[$,S]=m(c,l,R,z),[B,q]=m(i,u,f,w),[v,P]=E($,S,B,q);s[t*2]=v,s[t*2+1]=P}}else{const s=o.data;for(let t=0;t<a;t++){const c=Number(e.iget(t*2)),l=Number(e.iget(t*2+1)),i=Number(r.iget(t*2)),u=Number(r.iget(t*2+1));s[t]=c*u-l*i}}return o}}throw new Error(`cross product not implemented for arrays with shapes ${JSON.stringify(b)} and ${JSON.stringify(y)}`)}export{pt as cross,ft as diff,dt as ediff1d,bt as gradient};
@@ -1 +1 @@
1
- import{ArrayStorage as z}from"../storage";import{elementwiseUnaryOp as g}from"../internal/compute";import{isComplexDType as F}from"../dtype";import{wasmSinh as S}from"../wasm/sinh";import{wasmCosh as q}from"../wasm/cosh";import{wasmTanh as T}from"../wasm/tanh";function U(t){const o=t.dtype;if(F(o)){const m=Array.from(t.shape),y=t.size,e=t.data,n=z.zeros(m,o),a=n.data;for(let s=0;s<y;s++){const r=e[s*2],c=e[s*2+1];a[s*2]=Math.sinh(r)*Math.cos(c),a[s*2+1]=Math.cosh(r)*Math.sin(c)}return n}const h=S(t);return h||g(t,Math.sinh,!1)}function j(t){const o=t.dtype;if(F(o)){const m=Array.from(t.shape),y=t.size,e=t.data,n=z.zeros(m,o),a=n.data;for(let s=0;s<y;s++){const r=e[s*2],c=e[s*2+1];a[s*2]=Math.cosh(r)*Math.cos(c),a[s*2+1]=Math.sinh(r)*Math.sin(c)}return n}const h=q(t);return h||g(t,Math.cosh,!1)}function k(t){const o=t.dtype;if(F(o)){const m=Array.from(t.shape),y=t.size,e=t.data,n=z.zeros(m,o),a=n.data;for(let s=0;s<y;s++){const r=e[s*2],c=e[s*2+1],p=Math.cosh(2*r)+Math.cos(2*c);a[s*2]=Math.sinh(2*r)/p,a[s*2+1]=Math.sin(2*c)/p}return n}const h=T(t);return h||g(t,Math.tanh,!1)}function B(t){const o=t.dtype;if(F(o)){const h=Array.from(t.shape),m=t.size,y=t.data,e=z.zeros(h,o),n=e.data;for(let a=0;a<m;a++){const s=y[a*2],r=y[a*2+1],c=s*s-r*r,p=2*s*r,l=c+1,i=p,u=Math.sqrt(l*l+i*i),M=Math.sqrt((u+l)/2),d=(i>=0?1:-1)*Math.sqrt((u-l)/2),A=s+M,f=r+d,D=Math.sqrt(A*A+f*f);n[a*2]=Math.log(D),n[a*2+1]=Math.atan2(f,A)}return e}return g(t,Math.asinh,!1)}function E(t){const o=t.dtype;if(F(o)){const h=Array.from(t.shape),m=t.size,y=t.data,e=z.zeros(h,o),n=e.data;for(let a=0;a<m;a++){const s=y[a*2],r=y[a*2+1],c=s*s-r*r,p=2*s*r,l=c-1,i=p,u=Math.sqrt(l*l+i*i),M=Math.sqrt((u+l)/2),d=(i>=0?1:-1)*Math.sqrt((u-l)/2),A=s+M,f=r+d,D=Math.sqrt(A*A+f*f);let I=Math.log(D),R=Math.atan2(f,A);Math.abs(r)<1e-15&&s<1&&(R=-R),n[a*2]=I,n[a*2+1]=R}return e}return g(t,Math.acosh,!1)}function G(t){const o=t.dtype;if(F(o)){const h=Array.from(t.shape),m=t.size,y=t.data,e=z.zeros(h,o),n=e.data;for(let a=0;a<m;a++){const s=y[a*2],r=y[a*2+1],c=1+s,p=r,l=1-s,i=-r,u=l*l+i*i,M=(c*l+p*i)/u,d=(p*l-c*i)/u,A=Math.sqrt(M*M+d*d),f=Math.log(A),D=Math.atan2(d,M);n[a*2]=f/2,n[a*2+1]=D/2}return e}return g(t,Math.atanh,!1)}export{E as arccosh,B as arcsinh,G as arctanh,j as cosh,U as sinh,k as tanh};
1
+ import{ArrayStorage as g}from"../storage.js";import{elementwiseUnaryOp as z}from"../internal/compute.js";import{isComplexDType as F}from"../dtype.js";import{wasmSinh as S}from"../wasm/sinh.js";import{wasmCosh as q}from"../wasm/cosh.js";import{wasmTanh as T}from"../wasm/tanh.js";function U(t){const o=t.dtype;if(F(o)){const i=Array.from(t.shape),h=t.size,e=t.data,n=g.empty(i,o),s=n.data;for(let a=0;a<h;a++){const r=e[a*2],c=e[a*2+1];s[a*2]=Math.sinh(r)*Math.cos(c),s[a*2+1]=Math.cosh(r)*Math.sin(c)}return n}const y=S(t);return y||z(t,Math.sinh,!1)}function j(t){const o=t.dtype;if(F(o)){const i=Array.from(t.shape),h=t.size,e=t.data,n=g.empty(i,o),s=n.data;for(let a=0;a<h;a++){const r=e[a*2],c=e[a*2+1];s[a*2]=Math.cosh(r)*Math.cos(c),s[a*2+1]=Math.sinh(r)*Math.sin(c)}return n}const y=q(t);return y||z(t,Math.cosh,!1)}function k(t){const o=t.dtype;if(F(o)){const i=Array.from(t.shape),h=t.size,e=t.data,n=g.empty(i,o),s=n.data;for(let a=0;a<h;a++){const r=e[a*2],c=e[a*2+1],p=Math.cosh(2*r)+Math.cos(2*c);s[a*2]=Math.sinh(2*r)/p,s[a*2+1]=Math.sin(2*c)/p}return n}const y=T(t);return y||z(t,Math.tanh,!1)}function B(t){const o=t.dtype;if(F(o)){const y=Array.from(t.shape),i=t.size,h=t.data,e=g.empty(y,o),n=e.data;for(let s=0;s<i;s++){const a=h[s*2],r=h[s*2+1],c=a*a-r*r,p=2*a*r,m=c+1,l=p,u=Math.sqrt(m*m+l*l),M=Math.sqrt((u+m)/2),d=(l>=0?1:-1)*Math.sqrt((u-m)/2),A=a+M,f=r+d,D=Math.sqrt(A*A+f*f);n[s*2]=Math.log(D),n[s*2+1]=Math.atan2(f,A)}return e}return z(t,Math.asinh,!1)}function E(t){const o=t.dtype;if(F(o)){const y=Array.from(t.shape),i=t.size,h=t.data,e=g.empty(y,o),n=e.data;for(let s=0;s<i;s++){const a=h[s*2],r=h[s*2+1],c=a*a-r*r,p=2*a*r,m=c-1,l=p,u=Math.sqrt(m*m+l*l),M=Math.sqrt((u+m)/2),d=(l>=0?1:-1)*Math.sqrt((u-m)/2),A=a+M,f=r+d,D=Math.sqrt(A*A+f*f);let I=Math.log(D),R=Math.atan2(f,A);Math.abs(r)<1e-15&&a<1&&(R=-R),n[s*2]=I,n[s*2+1]=R}return e}return z(t,Math.acosh,!1)}function G(t){const o=t.dtype;if(F(o)){const y=Array.from(t.shape),i=t.size,h=t.data,e=g.empty(y,o),n=e.data;for(let s=0;s<i;s++){const a=h[s*2],r=h[s*2+1],c=1+a,p=r,m=1-a,l=-r,u=m*m+l*l,M=(c*m+p*l)/u,d=(p*m-c*l)/u,A=Math.sqrt(M*M+d*d),f=Math.log(A),D=Math.atan2(d,M);n[s*2]=f/2,n[s*2+1]=D/2}return e}return z(t,Math.atanh,!1)}export{E as arccosh,B as arcsinh,G as arctanh,j as cosh,U as sinh,k as tanh};