numpy-ts 0.4.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +200 -294
- package/dist/numpy-ts.browser.js +2 -2
- package/dist/numpy-ts.esm.js +2 -2
- package/dist/numpy-ts.node-io.cjs +3 -0
- package/dist/numpy-ts.node-io.cjs.map +7 -0
- package/dist/numpy-ts.node-io.mjs +3 -0
- package/dist/numpy-ts.node-io.mjs.map +7 -0
- package/dist/numpy-ts.node.cjs +2 -1
- package/dist/numpy-ts.node.cjs.map +7 -0
- package/dist/types/core/broadcasting.d.ts +18 -0
- package/dist/types/core/ndarray.d.ts +1109 -0
- package/dist/types/index.d.ts +2 -1
- package/dist/types/io/index.d.ts +17 -0
- package/dist/types/io/npy/format.d.ts +91 -0
- package/dist/types/io/npy/index.d.ts +7 -0
- package/dist/types/io/npy/parser.d.ts +28 -0
- package/dist/types/io/npy/serializer.d.ts +17 -0
- package/dist/types/io/npz/index.d.ts +6 -0
- package/dist/types/io/npz/parser.d.ts +57 -0
- package/dist/types/io/npz/serializer.d.ts +49 -0
- package/dist/types/io/zip/index.d.ts +7 -0
- package/dist/types/io/zip/reader.d.ts +22 -0
- package/dist/types/io/zip/types.d.ts +59 -0
- package/dist/types/io/zip/writer.d.ts +29 -0
- package/dist/types/node.d.ts +154 -0
- package/dist/types/ops/advanced.d.ts +40 -0
- package/dist/types/ops/arithmetic.d.ts +54 -0
- package/dist/types/ops/comparison.d.ts +12 -0
- package/dist/types/ops/hyperbolic.d.ts +59 -0
- package/dist/types/ops/linalg.d.ts +51 -0
- package/dist/types/ops/reduction.d.ts +76 -0
- package/dist/types/ops/shape.d.ts +105 -0
- package/dist/types/ops/trig.d.ts +110 -0
- package/package.json +22 -9
package/dist/numpy-ts.esm.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
function or(t){if(!t.includes(":")){if(t.includes("."))throw new Error(`Invalid slice index: "${t}" (must be integer)`);let a=parseInt(t,10);if(isNaN(a))throw new Error(`Invalid slice index: "${t}"`);return{start:a,stop:null,step:1,isIndex:!0}}let r=t.split(":");if(r.length>3)throw new Error(`Invalid slice notation: "${t}" (too many colons)`);let n=r[0]===""?null:parseInt(r[0],10),e=r[1]===""||r[1]===void 0?null:parseInt(r[1],10),o=r[2]===""||r[2]===void 0?1:parseInt(r[2],10);if(n!==null&&isNaN(n))throw new Error(`Invalid start index in slice: "${t}"`);if(e!==null&&isNaN(e))throw new Error(`Invalid stop index in slice: "${t}"`);if(isNaN(o))throw new Error(`Invalid step in slice: "${t}"`);if(o===0)throw new Error("Slice step cannot be zero");return{start:n,stop:e,step:o,isIndex:!1}}function sr(t,r){let{start:n,stop:e}=t,{step:o,isIndex:a}=t;if(a){if(n===null)throw new Error("Index cannot be null");let l=n<0?r+n:n;if(l<0||l>=r)throw new Error(`Index ${n} is out of bounds for size ${r}`);return{start:l,stop:l+1,step:1,isIndex:!0}}return o>0?(n===null&&(n=0),e===null&&(e=r)):(n===null&&(n=r-1),e===null&&(e=-r-1)),n<0&&(n=r+n),e<0&&(e=r+e),n=Math.max(0,Math.min(n,r)),e=Math.max(-1,Math.min(e,r)),{start:n,stop:e,step:o,isIndex:!1}}var T="float64";function U(t){switch(t){case"float64":return Float64Array;case"float32":return Float32Array;case"int64":return BigInt64Array;case"int32":return Int32Array;case"int16":return Int16Array;case"int8":return Int8Array;case"uint64":return BigUint64Array;case"uint32":return Uint32Array;case"uint16":return Uint16Array;case"uint8":return Uint8Array;case"bool":return Uint8Array;default:throw new Error(`Unknown dtype: ${t}`)}}function ar(t){return t==="float64"||t==="float32"}function x(t){return t==="int64"||t==="uint64"}function _(t,r){if(t===r)return t;if(t==="bool")return r;if(r==="bool")return t;if(ar(t)||ar(r)){if(t==="float64"||r==="float64")return"float64";if(t==="float32"){let u=r;return u==="int32"||u==="int64"||u==="uint32"||u==="uint64"?"float64":"float32"}if(r==="float32"){let u=t;return u==="int32"||u==="int64"||u==="uint32"||u==="uint64"?"float64":"float32"}return"float32"}let n=t.startsWith("int"),e=r.startsWith("int"),o=t.startsWith("uint"),a=r.startsWith("uint"),l=u=>u.includes("64")?64:u.includes("32")?32:u.includes("16")?16:u.includes("8")?8:0,i=l(t),s=l(r);if(t==="int64"&&r==="uint64"||t==="uint64"&&r==="int64")return"float64";if(n&&a&&i===s){if(i===8)return"int16";if(i===16)return"int32";if(i===32)return"int64"}if(o&&e&&i===s){if(s===8)return"int16";if(s===16)return"int32";if(s===32)return"int64"}if(n&&e||o&&a){let u=Math.max(i,s);return n?u===64?"int64":u===32?"int32":u===16?"int16":"int8":u===64?"uint64":u===32?"uint32":u===16?"uint16":"uint8"}return n&&a?i>s?t:s===8?"int16":s===16?"int32":s===32?"int64":"float64":o&&e?s>i?r:i===8?"int16":i===16?"int32":i===32?"int64":"float64":"float64"}var D=class t{constructor(r,n,e,o,a){this._data=r,this._shape=n,this._strides=e,this._offset=o,this._dtype=a}get shape(){return this._shape}get ndim(){return this._shape.length}get size(){return this._shape.reduce((r,n)=>r*n,1)}get dtype(){return this._dtype}get data(){return this._data}get strides(){return this._strides}get offset(){return this._offset}get isCContiguous(){let r=this._shape,n=this._strides,e=r.length;if(e===0)return!0;if(e===1)return n[0]===1;let o=1;for(let a=e-1;a>=0;a--){if(n[a]!==o)return!1;o*=r[a]}return!0}get isFContiguous(){let r=this._shape,n=this._strides,e=r.length;if(e===0)return!0;if(e===1)return n[0]===1;let o=1;for(let a=0;a<e;a++){if(n[a]!==o)return!1;o*=r[a]}return!0}iget(r){let n=this._shape,e=this._strides,o=n.length;if(o===0)return this._data[this._offset];let a=r,l=this._offset;for(let i=0;i<o;i++){let s=1;for(let c=i+1;c<o;c++)s*=n[c];let u=Math.floor(a/s);a=a%s,l+=u*e[i]}return this._data[l]}iset(r,n){let e=this._shape,o=this._strides,a=e.length;if(a===0){this._data[this._offset]=n;return}let l=r,i=this._offset;for(let s=0;s<a;s++){let u=1;for(let f=s+1;f<a;f++)u*=e[f];let c=Math.floor(l/u);l=l%u,i+=c*o[s]}this._data[i]=n}get(...r){let n=this._strides,e=this._offset;for(let o=0;o<r.length;o++)e+=r[o]*n[o];return this._data[e]}set(r,n){let e=this._strides,o=this._offset;for(let a=0;a<r.length;a++)o+=r[a]*e[a];this._data[o]=n}copy(){let r=Array.from(this._shape),n=this._dtype,e=this.size,o=U(n);if(!o)throw new Error(`Cannot copy array with dtype ${n}`);let a=new o(e);if(this.isCContiguous&&this._offset===0)if(x(n)){let l=this._data,i=a;for(let s=0;s<e;s++)i[s]=l[s]}else a.set(this._data);else if(x(n)){let l=a;for(let i=0;i<e;i++)l[i]=this.iget(i)}else for(let l=0;l<e;l++)a[l]=this.iget(l);return new t(a,r,t._computeStrides(r),0,n)}static fromData(r,n,e,o,a){let l=o??t._computeStrides(n),i=a??0;return new t(r,n,l,i,e)}static zeros(r,n=T){let e=r.reduce((l,i)=>l*i,1),o=U(n);if(!o)throw new Error(`Cannot create array with dtype ${n}`);let a=new o(e);return new t(a,r,t._computeStrides(r),0,n)}static ones(r,n=T){let e=r.reduce((l,i)=>l*i,1),o=U(n);if(!o)throw new Error(`Cannot create array with dtype ${n}`);let a=new o(e);return x(n)?a.fill(BigInt(1)):a.fill(1),new t(a,r,t._computeStrides(r),0,n)}static _computeStrides(r){let n=new Array(r.length),e=1;for(let o=r.length-1;o>=0;o--)n[o]=e,e*=r[o];return n}};function j(t){let r=new Array(t.length),n=1;for(let e=t.length-1;e>=0;e--)r[e]=n,n*=t[e];return r}function ir(t,r){let n=t.length,e=r.length,o=Math.max(n,e),a=new Array(o);for(let l=0;l<o;l++){let i=l<o-n?1:t[l-(o-n)],s=l<o-e?1:r[l-(o-e)];if(i===s)a[l]=i;else if(i===1)a[l]=s;else if(s===1)a[l]=i;else throw new Error(`operands could not be broadcast together with shapes ${JSON.stringify(Array.from(t))} ${JSON.stringify(Array.from(r))}`)}return a}function Rr(t,r,n){let e=t.length,o=n.length,a=new Array(o).fill(0);for(let l=0;l<e;l++){let i=o-e+l,s=t[l],u=n[i];if(s===u)a[i]=r[l];else if(s===1)a[i]=0;else throw new Error("Invalid broadcast")}return a}function k(t,r){let n=Rr(t.shape,t.strides,r);return D.fromData(t.data,Array.from(r),t.dtype,n,t.offset)}function O(t,r,n,e){let o=ir(t.shape,r.shape),a=k(t,o),l=k(r,o),i=_(t.dtype,r.dtype),s=D.zeros(o,i),u=s.data,c=s.size;if(x(i)){let f=u;for(let y=0;y<c;y++){let m=a.iget(y),p=l.iget(y),d=typeof m=="bigint"?m:BigInt(Math.round(m)),A=typeof p=="bigint"?p:BigInt(Math.round(p));e==="add"?f[y]=d+A:e==="subtract"?f[y]=d-A:e==="multiply"?f[y]=d*A:e==="divide"?f[y]=d/A:f[y]=BigInt(Math.round(n(Number(d),Number(A))))}}else{let f=x(t.dtype)||x(r.dtype);for(let y=0;y<c;y++){let m=a.iget(y),p=l.iget(y),d=Number(m),A=Number(p);u[y]=n(d,A)}}return s}function v(t,r,n){let e=ir(t.shape,r.shape),o=k(t,e),a=k(r,e),l=e.reduce((u,c)=>u*c,1),i=new Uint8Array(l),s=x(t.dtype)||x(r.dtype);for(let u=0;u<l;u++){let c=o.iget(u),f=a.iget(u),y=Number(c),m=Number(f);i[u]=n(y,m)?1:0}return D.fromData(i,e,"bool")}function ur(t,r,n=!0){let e=t.dtype,o=Array.from(t.shape),a=t.size,i=n?e:e!=="float32"&&e!=="float64"?"float64":e,s=D.zeros(o,i),u=s.data,c=t.data;if(x(e))if(x(i)){let f=u;for(let y=0;y<a;y++){let m=Number(c[y]);f[y]=BigInt(Math.round(r(m)))}}else for(let f=0;f<a;f++)u[f]=r(Number(c[f]));else for(let f=0;f<a;f++)u[f]=r(Number(c[f]));return s}function L(t,r){return t.isCContiguous&&r.isCContiguous&&t.shape.length===r.shape.length&&t.shape.every((n,e)=>n===r.shape[e])}function lr(t,r){return typeof r=="number"?Gr(t,r):L(t,r)?Wr(t,r):O(t,r,(n,e)=>n+e,"add")}function Wr(t,r){let n=_(t.dtype,r.dtype),e=D.zeros(Array.from(t.shape),n),o=t.size,a=t.data,l=r.data,i=e.data;if(x(n)){let s=i;if(!x(t.dtype)||!x(r.dtype))for(let c=0;c<o;c++){let f=typeof a[c]=="bigint"?a[c]:BigInt(Math.round(Number(a[c]))),y=typeof l[c]=="bigint"?l[c]:BigInt(Math.round(Number(l[c])));s[c]=f+y}else{let c=a,f=l;for(let y=0;y<o;y++)s[y]=c[y]+f[y]}}else if(x(t.dtype)||x(r.dtype))for(let u=0;u<o;u++){let c=typeof a[u]=="bigint"?Number(a[u]):a[u],f=typeof l[u]=="bigint"?Number(l[u]):l[u];i[u]=c+f}else for(let u=0;u<o;u++)i[u]=a[u]+l[u];return e}function fr(t,r){return typeof r=="number"?Hr(t,r):L(t,r)?Jr(t,r):O(t,r,(n,e)=>n-e,"subtract")}function Jr(t,r){let n=_(t.dtype,r.dtype),e=D.zeros(Array.from(t.shape),n),o=t.size,a=t.data,l=r.data,i=e.data;if(x(n)){let s=i;if(!x(t.dtype)||!x(r.dtype))for(let c=0;c<o;c++){let f=typeof a[c]=="bigint"?a[c]:BigInt(Math.round(Number(a[c]))),y=typeof l[c]=="bigint"?l[c]:BigInt(Math.round(Number(l[c])));s[c]=f-y}else{let c=a,f=l;for(let y=0;y<o;y++)s[y]=c[y]-f[y]}}else if(x(t.dtype)||x(r.dtype))for(let u=0;u<o;u++){let c=typeof a[u]=="bigint"?Number(a[u]):a[u],f=typeof l[u]=="bigint"?Number(l[u]):l[u];i[u]=c-f}else for(let u=0;u<o;u++)i[u]=a[u]-l[u];return e}function cr(t,r){return typeof r=="number"?Yr(t,r):L(t,r)?Pr(t,r):O(t,r,(n,e)=>n*e,"multiply")}function Pr(t,r){let n=_(t.dtype,r.dtype),e=D.zeros(Array.from(t.shape),n),o=t.size,a=t.data,l=r.data,i=e.data;if(x(n)){let s=i;if(!x(t.dtype)||!x(r.dtype))for(let c=0;c<o;c++){let f=typeof a[c]=="bigint"?a[c]:BigInt(Math.round(Number(a[c]))),y=typeof l[c]=="bigint"?l[c]:BigInt(Math.round(Number(l[c])));s[c]=f*y}else{let c=a,f=l;for(let y=0;y<o;y++)s[y]=c[y]*f[y]}}else if(x(t.dtype)||x(r.dtype))for(let u=0;u<o;u++){let c=typeof a[u]=="bigint"?Number(a[u]):a[u],f=typeof l[u]=="bigint"?Number(l[u]):l[u];i[u]=c*f}else for(let u=0;u<o;u++)i[u]=a[u]*l[u];return e}function yr(t,r){if(typeof r=="number")return Qr(t,r);let n=t.dtype==="float64",e=r.dtype==="float64",o=t.dtype==="float32",a=r.dtype==="float32";if(n||e){let s=n?t:V(t,"float64"),u=e?r:V(r,"float64");return O(s,u,(c,f)=>c/f,"divide")}if(o||a){let s=o?t:V(t,"float32"),u=a?r:V(r,"float32");return O(s,u,(c,f)=>c/f,"divide")}let l=V(t,"float64"),i=V(r,"float64");return O(l,i,(s,u)=>s/u,"divide")}function V(t,r){let n=D.zeros(Array.from(t.shape),r),e=t.size,o=t.data,a=n.data;for(let l=0;l<e;l++)a[l]=Number(o[l]);return n}function Gr(t,r){let n=t.dtype,e=Array.from(t.shape),o=t.data,a=t.size,l=D.zeros(e,n),i=l.data;if(x(n)){let s=o,u=i,c=BigInt(Math.round(r));for(let f=0;f<a;f++)u[f]=s[f]+c}else for(let s=0;s<a;s++)i[s]=Number(o[s])+r;return l}function Hr(t,r){let n=t.dtype,e=Array.from(t.shape),o=t.data,a=t.size,l=D.zeros(e,n),i=l.data;if(x(n)){let s=o,u=i,c=BigInt(Math.round(r));for(let f=0;f<a;f++)u[f]=s[f]-c}else for(let s=0;s<a;s++)i[s]=Number(o[s])-r;return l}function Yr(t,r){let n=t.dtype,e=Array.from(t.shape),o=t.data,a=t.size,l=D.zeros(e,n),i=l.data;if(x(n)){let s=o,u=i,c=BigInt(Math.round(r));for(let f=0;f<a;f++)u[f]=s[f]*c}else for(let s=0;s<a;s++)i[s]=Number(o[s])*r;return l}function Qr(t,r){let n=t.dtype,e=Array.from(t.shape),o=t.data,a=t.size,i=n!=="float32"&&n!=="float64"?"float64":n,s=D.zeros(e,i),u=s.data;if(x(n))for(let c=0;c<a;c++)u[c]=Number(o[c])/r;else for(let c=0;c<a;c++)u[c]=Number(o[c])/r;return s}function pr(t){let r=t.dtype,n=Array.from(t.shape),e=t.data,o=t.size,a=D.zeros(n,r),l=a.data;if(x(r)){let i=e,s=l;for(let u=0;u<o;u++){let c=i[u];s[u]=c<0n?-c:c}}else for(let i=0;i<o;i++)l[i]=Math.abs(Number(e[i]));return a}function mr(t){let r=t.dtype,n=Array.from(t.shape),e=t.data,o=t.size,a=D.zeros(n,r),l=a.data;if(x(r)){let i=e,s=l;for(let u=0;u<o;u++)s[u]=-i[u]}else for(let i=0;i<o;i++)l[i]=-Number(e[i]);return a}function dr(t){let r=t.dtype,n=Array.from(t.shape),e=t.data,o=t.size,a=D.zeros(n,r),l=a.data;if(x(r)){let i=e,s=l;for(let u=0;u<o;u++){let c=i[u];s[u]=c>0n?1n:c<0n?-1n:0n}}else for(let i=0;i<o;i++){let s=Number(e[i]);l[i]=s>0?1:s<0?-1:0}return a}function gr(t,r){return typeof r=="number"?Xr(t,r):O(t,r,(n,e)=>(n%e+e)%e,"mod")}function Xr(t,r){let n=t.dtype,e=Array.from(t.shape),o=t.data,a=t.size,l=D.zeros(e,n),i=l.data;if(x(n)){let s=o,u=i,c=BigInt(Math.round(r));for(let f=0;f<a;f++){let y=s[f];u[f]=(y%c+c)%c}}else for(let s=0;s<a;s++){let u=Number(o[s]);i[s]=(u%r+r)%r}return l}function hr(t,r){return typeof r=="number"?Zr(t,r):O(t,r,(n,e)=>Math.floor(n/e),"floor_divide")}function Zr(t,r){let n=t.dtype,e=Array.from(t.shape),o=t.data,a=t.size,l=D.zeros(e,n),i=l.data;if(x(n)){let s=o,u=i,c=BigInt(Math.round(r));for(let f=0;f<a;f++)u[f]=s[f]/c}else for(let s=0;s<a;s++)i[s]=Math.floor(Number(o[s])/r);return l}function Ar(t){let r=t.dtype,n=Array.from(t.shape),e=t.data,o=t.size,a=D.zeros(n,r),l=a.data;for(let i=0;i<o;i++)l[i]=e[i];return a}function br(t){let r=t.dtype,n=Array.from(t.shape),e=t.data,o=t.size,l=r!=="float32"&&r!=="float64"?"float64":r,i=D.zeros(n,l),s=i.data;if(x(r))for(let u=0;u<o;u++)s[u]=1/Number(e[u]);else for(let u=0;u<o;u++)s[u]=1/Number(e[u]);return i}function Sr(t,r){return typeof r=="number"?rt(t,r):v(t,r,(n,e)=>n>e)}function Dr(t,r){return typeof r=="number"?tt(t,r):v(t,r,(n,e)=>n>=e)}function xr(t,r){return typeof r=="number"?et(t,r):v(t,r,(n,e)=>n<e)}function Ir(t,r){return typeof r=="number"?nt(t,r):v(t,r,(n,e)=>n<=e)}function wr(t,r){return typeof r=="number"?ot(t,r):v(t,r,(n,e)=>n===e)}function Nr(t,r){return typeof r=="number"?st(t,r):v(t,r,(n,e)=>n!==e)}function R(t,r,n=1e-5,e=1e-8){return typeof r=="number"?at(t,r,n,e):v(t,r,(o,a)=>{let l=Math.abs(o-a),i=e+n*Math.abs(a);return l<=i})}function Br(t,r,n=1e-5,e=1e-8){let o=R(t,r,n,e),a=o.data;for(let l=0;l<o.size;l++)if(a[l]===0)return!1;return!0}function rt(t,r){let n=new Uint8Array(t.size),e=t.data;for(let o=0;o<t.size;o++)n[o]=e[o]>r?1:0;return D.fromData(n,Array.from(t.shape),"bool")}function tt(t,r){let n=new Uint8Array(t.size),e=t.data;for(let o=0;o<t.size;o++)n[o]=e[o]>=r?1:0;return D.fromData(n,Array.from(t.shape),"bool")}function et(t,r){let n=new Uint8Array(t.size),e=t.data;for(let o=0;o<t.size;o++)n[o]=e[o]<r?1:0;return D.fromData(n,Array.from(t.shape),"bool")}function nt(t,r){let n=new Uint8Array(t.size),e=t.data;for(let o=0;o<t.size;o++)n[o]=e[o]<=r?1:0;return D.fromData(n,Array.from(t.shape),"bool")}function ot(t,r){let n=new Uint8Array(t.size),e=t.data,o=t.dtype;if(x(o)){let a=BigInt(Math.round(r)),l=e;for(let i=0;i<t.size;i++)n[i]=l[i]===a?1:0}else for(let a=0;a<t.size;a++)n[a]=e[a]===r?1:0;return D.fromData(n,Array.from(t.shape),"bool")}function st(t,r){let n=new Uint8Array(t.size),e=t.data;for(let o=0;o<t.size;o++)n[o]=e[o]!==r?1:0;return D.fromData(n,Array.from(t.shape),"bool")}function at(t,r,n,e){let o=new Uint8Array(t.size),a=t.data,l=t.dtype;if(x(l)){let i=a;for(let s=0;s<t.size;s++){let u=Number(i[s]),c=Math.abs(u-r),f=e+n*Math.abs(r);o[s]=c<=f?1:0}}else for(let i=0;i<t.size;i++){let s=Number(a[i]),u=Math.abs(s-r),c=e+n*Math.abs(r);o[i]=u<=c?1:0}return D.fromData(o,Array.from(t.shape),"bool")}function B(t,r){let n=0,e=1;for(let o=t.length-1;o>=0;o--)n+=t[o]*e,e*=r[o];return n}function z(t,r,n,e){let o=e.length,a=new Array(o),l=Array.from(e).filter((s,u)=>u!==r),i=t;for(let s=l.length-1;s>=0;s--)a[s>=r?s+1:s]=i%l[s],i=Math.floor(i/l[s]);return a[r]=n,a}function C(t,r,n=!1){let e=t.dtype,o=t.shape,a=o.length,l=t.size,i=t.data;if(r===void 0)if(x(e)){let p=i,d=BigInt(0);for(let A=0;A<l;A++)d+=p[A];return Number(d)}else{let p=0;for(let d=0;d<l;d++)p+=Number(i[d]);return p}let s=r;if(s<0&&(s=a+s),s<0||s>=a)throw new Error(`axis ${r} is out of bounds for array of dimension ${a}`);let u=Array.from(o).filter((p,d)=>d!==s);if(u.length===0)return C(t);let c=D.zeros(u,e),f=c.data,y=o[s],m=u.reduce((p,d)=>p*d,1);if(x(e)){let p=i,d=f;for(let A=0;A<m;A++){let g=BigInt(0);for(let h=0;h<y;h++){let S=z(A,s,h,o),b=B(S,o);g+=p[b]}d[A]=g}}else for(let p=0;p<m;p++){let d=0;for(let A=0;A<y;A++){let g=z(p,s,A,o),h=B(g,o);d+=Number(i[h])}f[p]=d}if(n){let p=[...o];return p[s]=1,D.fromData(f,p,e)}return c}function W(t,r,n=!1){let e=t.dtype,o=t.shape;if(r===void 0)return C(t)/t.size;let a=r;if(a<0&&(a=o.length+a),a<0||a>=o.length)throw new Error(`axis ${r} is out of bounds for array of dimension ${o.length}`);let l=C(t,r,n);if(typeof l=="number")return l/o[a];let i=o[a],s=e;(x(e)||e.startsWith("int")||e.startsWith("uint"))&&(s="float64");let u=D.zeros(Array.from(l.shape),s),c=u.data,f=l.data;if(x(e)){let y=f;for(let m=0;m<c.length;m++)c[m]=Number(y[m])/i}else for(let y=0;y<c.length;y++)c[y]=Number(f[y])/i;return u}function J(t,r,n=!1){let e=t.dtype,o=t.shape,a=o.length,l=t.size,i=t.data;if(r===void 0){if(l===0)throw new Error("max of empty array");let p=i[0];for(let d=1;d<l;d++)i[d]>p&&(p=i[d]);return Number(p)}let s=r;if(s<0&&(s=a+s),s<0||s>=a)throw new Error(`axis ${r} is out of bounds for array of dimension ${a}`);let u=Array.from(o).filter((p,d)=>d!==s);if(u.length===0)return J(t);let c=D.zeros(u,e),f=c.data,y=o[s],m=u.reduce((p,d)=>p*d,1);if(x(e)){let p=i,d=f;for(let A=0;A<m;A++){let g=z(A,s,0,o),h=B(g,o),S=p[h];for(let b=1;b<y;b++){let I=z(A,s,b,o),w=B(I,o),$=p[w];$>S&&(S=$)}d[A]=S}}else for(let p=0;p<m;p++){let d=-1/0;for(let A=0;A<y;A++){let g=z(p,s,A,o),h=B(g,o),S=Number(i[h]);S>d&&(d=S)}f[p]=d}if(n){let p=[...o];return p[s]=1,D.fromData(f,p,e)}return c}function P(t,r,n=!1){let e=t.dtype,o=t.shape,a=o.length,l=t.size,i=t.data;if(r===void 0)if(x(e)){let p=i,d=BigInt(1);for(let A=0;A<l;A++)d*=p[A];return Number(d)}else{let p=1;for(let d=0;d<l;d++)p*=Number(i[d]);return p}let s=r;if(s<0&&(s=a+s),s<0||s>=a)throw new Error(`axis ${r} is out of bounds for array of dimension ${a}`);let u=Array.from(o).filter((p,d)=>d!==s);if(u.length===0)return P(t);let c=D.zeros(u,e),f=c.data,y=o[s],m=u.reduce((p,d)=>p*d,1);if(x(e)){let p=i,d=f;for(let A=0;A<m;A++){let g=BigInt(1);for(let h=0;h<y;h++){let S=z(A,s,h,o),b=B(S,o);g*=p[b]}d[A]=g}}else for(let p=0;p<m;p++){let d=1;for(let A=0;A<y;A++){let g=z(p,s,A,o),h=B(g,o);d*=Number(i[h])}f[p]=d}if(n){let p=[...o];return p[s]=1,D.fromData(f,p,e)}return c}function G(t,r,n=!1){let e=t.dtype,o=t.shape,a=o.length,l=t.size,i=t.data;if(r===void 0){if(l===0)throw new Error("min of empty array");let p=i[0];for(let d=1;d<l;d++)i[d]<p&&(p=i[d]);return Number(p)}let s=r;if(s<0&&(s=a+s),s<0||s>=a)throw new Error(`axis ${r} is out of bounds for array of dimension ${a}`);let u=Array.from(o).filter((p,d)=>d!==s);if(u.length===0)return G(t);let c=D.zeros(u,e),f=c.data,y=o[s],m=u.reduce((p,d)=>p*d,1);if(x(e)){let p=i,d=f;for(let A=0;A<m;A++){let g=z(A,s,0,o),h=B(g,o),S=p[h];for(let b=1;b<y;b++){let I=z(A,s,b,o),w=B(I,o),$=p[w];$<S&&(S=$)}d[A]=S}}else for(let p=0;p<m;p++){let d=1/0;for(let A=0;A<y;A++){let g=z(p,s,A,o),h=B(g,o),S=Number(i[h]);S<d&&(d=S)}f[p]=d}if(n){let p=[...o];return p[s]=1,D.fromData(f,p,e)}return c}function H(t,r){let n=t.dtype,e=t.shape,o=e.length,a=t.size,l=t.data;if(r===void 0){if(a===0)throw new Error("argmin of empty array");let m=l[0],p=0;for(let d=1;d<a;d++)l[d]<m&&(m=l[d],p=d);return p}let i=r;if(i<0&&(i=o+i),i<0||i>=o)throw new Error(`axis ${r} is out of bounds for array of dimension ${o}`);let s=Array.from(e).filter((m,p)=>p!==i);if(s.length===0)return H(t);let u=D.zeros(s,"int32"),c=u.data,f=e[i],y=s.reduce((m,p)=>m*p,1);if(x(n)){let m=l;for(let p=0;p<y;p++){let d=z(p,i,0,e),A=B(d,e),g=m[A],h=0;for(let S=1;S<f;S++){let b=z(p,i,S,e),I=B(b,e),w=m[I];w<g&&(g=w,h=S)}c[p]=h}}else for(let m=0;m<y;m++){let p=1/0,d=0;for(let A=0;A<f;A++){let g=z(m,i,A,e),h=B(g,e),S=Number(l[h]);S<p&&(p=S,d=A)}c[m]=d}return u}function Y(t,r){let n=t.dtype,e=t.shape,o=e.length,a=t.size,l=t.data;if(r===void 0){if(a===0)throw new Error("argmax of empty array");let m=l[0],p=0;for(let d=1;d<a;d++)l[d]>m&&(m=l[d],p=d);return p}let i=r;if(i<0&&(i=o+i),i<0||i>=o)throw new Error(`axis ${r} is out of bounds for array of dimension ${o}`);let s=Array.from(e).filter((m,p)=>p!==i);if(s.length===0)return Y(t);let u=D.zeros(s,"int32"),c=u.data,f=e[i],y=s.reduce((m,p)=>m*p,1);if(x(n)){let m=l;for(let p=0;p<y;p++){let d=z(p,i,0,e),A=B(d,e),g=m[A],h=0;for(let S=1;S<f;S++){let b=z(p,i,S,e),I=B(b,e),w=m[I];w>g&&(g=w,h=S)}c[p]=h}}else for(let m=0;m<y;m++){let p=-1/0,d=0;for(let A=0;A<f;A++){let g=z(m,i,A,e),h=B(g,e),S=Number(l[h]);S>p&&(p=S,d=A)}c[m]=d}return u}function Q(t,r,n=0,e=!1){let o=t.shape,a=o.length,l=t.size,i=t.data,s=W(t,r,e);if(r===void 0){let g=s,h=0;for(let S=0;S<l;S++){let b=Number(i[S])-g;h+=b*b}return h/(l-n)}let u=r;if(u<0&&(u=a+u),u<0||u>=a)throw new Error(`axis ${r} is out of bounds for array of dimension ${a}`);let c=o[u],f=s,y=f.data,m=e?f.shape:Array.from(o).filter((g,h)=>h!==u),p=D.zeros(Array.from(m),"float64"),d=p.data,A=m.reduce((g,h)=>g*h,1);for(let g=0;g<A;g++){let h=0,S=Number(y[g]);for(let b=0;b<c;b++){let I=z(g,u,b,o),w=B(I,o),$=Number(i[w])-S;h+=$*$}d[g]=h/(c-n)}return p}function zr(t,r,n=0,e=!1){let o=Q(t,r,n,e);if(typeof o=="number")return Math.sqrt(o);let a=D.zeros(Array.from(o.shape),"float64"),l=o.data,i=a.data;for(let s=0;s<l.length;s++)i[s]=Math.sqrt(Number(l[s]));return a}function X(t,r,n=!1){let e=t.shape,o=e.length,a=t.size,l=t.data;if(r===void 0){for(let m=0;m<a;m++)if(!l[m])return!1;return!0}let i=r;if(i<0&&(i=o+i),i<0||i>=o)throw new Error(`axis ${r} is out of bounds for array of dimension ${o}`);let s=Array.from(e).filter((m,p)=>p!==i);if(s.length===0)return X(t);let u=D.zeros(s,"bool"),c=u.data,f=e[i],y=s.reduce((m,p)=>m*p,1);for(let m=0;m<y;m++){let p=!0;for(let d=0;d<f;d++){let A=z(m,i,d,e),g=B(A,e);if(!l[g]){p=!1;break}}c[m]=p?1:0}if(n){let m=[...e];return m[i]=1,D.fromData(c,m,"bool")}return u}function Z(t,r,n=!1){let e=t.shape,o=e.length,a=t.size,l=t.data;if(r===void 0){for(let m=0;m<a;m++)if(l[m])return!0;return!1}let i=r;if(i<0&&(i=o+i),i<0||i>=o)throw new Error(`axis ${r} is out of bounds for array of dimension ${o}`);let s=Array.from(e).filter((m,p)=>p!==i);if(s.length===0)return Z(t);let u=D.zeros(s,"bool"),c=u.data,f=e[i],y=s.reduce((m,p)=>m*p,1);for(let m=0;m<y;m++){let p=!1;for(let d=0;d<f;d++){let A=z(m,i,d,e),g=B(A,e);if(l[g]){p=!0;break}}c[m]=p?1:0}if(n){let m=[...e];return m[i]=1,D.fromData(c,m,"bool")}return u}function _r(t,r){let n=t.size,e=t.dtype,o=r.indexOf(-1),a;if(o!==-1){let u=r.reduce((f,y,m)=>m===o?f:f*y,1),c=n/u;if(!Number.isInteger(c))throw new Error(`cannot reshape array of size ${n} into shape ${JSON.stringify(r)}`);a=r.map((f,y)=>y===o?c:f)}else a=r;if(a.reduce((u,c)=>u*c,1)!==n)throw new Error(`cannot reshape array of size ${n} into shape ${JSON.stringify(a)}`);if(t.isCContiguous){let u=t.data;return D.fromData(u,a,e,j(a),0)}let s=t.copy().data;return D.fromData(s,a,e,j(a),0)}function K(t){let r=t.shape,n=r.length,e=t.size,o=t.dtype,a=U(o);if(!a)throw new Error(`Cannot flatten array with dtype ${o}`);let l=new a(e),i=0,s=(u,c)=>{if(c===n){let f=t.get(...u);l[i++]=f;return}for(let f=0;f<r[c];f++)u[c]=f,s(u,c+1)};return s(new Array(n),0),D.fromData(l,[e],o,[1],0)}function F(t){let r=t.size,n=t.dtype;if(t.isCContiguous){let e=t.data;return D.fromData(e,[r],n,[1],0)}return K(t)}function rr(t,r){let n=t.shape,e=n.length,o=t.strides,a=t.data,l=t.dtype,i;if(r===void 0)i=Array.from({length:e},(f,y)=>e-1-y);else{if(r.length!==e)throw new Error(`axes must have length ${e}, got ${r.length}`);let f=new Set;for(let y of r){let m=y<0?e+y:y;if(m<0||m>=e)throw new Error(`axis ${y} is out of bounds for array of dimension ${e}`);if(f.has(m))throw new Error("repeated axis in transpose");f.add(m)}i=r.map(y=>y<0?e+y:y)}let s=i.map(f=>n[f]),u=Array.from(o),c=i.map(f=>u[f]);return D.fromData(a,s,l,c,t.offset)}function Tr(t,r){let n=t.shape,e=n.length,o=t.strides,a=t.data,l=t.dtype;if(r===void 0){let i=[],s=[];for(let u=0;u<e;u++)n[u]!==1&&(i.push(n[u]),s.push(o[u]));return i.length===0&&(i.push(1),s.push(1)),D.fromData(a,i,l,s,t.offset)}else{let i=r<0?e+r:r;if(i<0||i>=e)throw new Error(`axis ${r} is out of bounds for array of dimension ${e}`);if(n[i]!==1)throw new Error(`cannot select an axis which has size not equal to one (axis ${r} has size ${n[i]})`);let s=[],u=[];for(let c=0;c<e;c++)c!==i&&(s.push(n[c]),u.push(o[c]));return D.fromData(a,s,l,u,t.offset)}}function Ur(t,r){let n=t.shape,e=n.length,o=t.strides,a=t.data,l=t.dtype,i=r;if(i<0&&(i=e+r+1),i<0||i>e)throw new Error(`axis ${r} is out of bounds for array of dimension ${e+1}`);let s=[...Array.from(n)];s.splice(i,0,1);let u=[...Array.from(o)],c=i<e?o[i]*(n[i]||1):1;return u.splice(i,0,c),D.fromData(a,s,l,u,t.offset)}function lt(t,r,n,e,o,a,l,i,s,u,c,f,y,m){if(f===0)for(let g=0;g<e*o;g++)y[g]=0;else if(f!==1)for(let g=0;g<e*o;g++)y[g]=(y[g]??0)*f;let p=t==="row-major",d=r==="transpose",A=n==="transpose";if(p&&!d&&!A)for(let g=0;g<e;g++)for(let h=0;h<o;h++){let S=0;for(let b=0;b<a;b++)S+=(i[g*s+b]??0)*(u[b*c+h]??0);y[g*m+h]=(y[g*m+h]??0)+l*S}else if(p&&d&&!A)for(let g=0;g<e;g++)for(let h=0;h<o;h++){let S=0;for(let b=0;b<a;b++)S+=(i[b*s+g]??0)*(u[b*c+h]??0);y[g*m+h]=(y[g*m+h]??0)+l*S}else if(p&&!d&&A)for(let g=0;g<e;g++)for(let h=0;h<o;h++){let S=0;for(let b=0;b<a;b++)S+=(i[g*s+b]??0)*(u[h*c+b]??0);y[g*m+h]=(y[g*m+h]??0)+l*S}else if(p&&d&&A)for(let g=0;g<e;g++)for(let h=0;h<o;h++){let S=0;for(let b=0;b<a;b++)S+=(i[b*s+g]??0)*(u[h*c+b]??0);y[g*m+h]=(y[g*m+h]??0)+l*S}else if(!p&&!d&&!A)for(let g=0;g<e;g++)for(let h=0;h<o;h++){let S=0;for(let b=0;b<a;b++)S+=(i[b*s+g]??0)*(u[h*c+b]??0);y[h*m+g]=(y[h*m+g]??0)+l*S}else if(!p&&d&&!A)for(let g=0;g<e;g++)for(let h=0;h<o;h++){let S=0;for(let b=0;b<a;b++)S+=(i[g*s+b]??0)*(u[h*c+b]??0);y[h*m+g]=(y[h*m+g]??0)+l*S}else if(!p&&!d&&A)for(let g=0;g<e;g++)for(let h=0;h<o;h++){let S=0;for(let b=0;b<a;b++)S+=(i[b*s+g]??0)*(u[b*c+h]??0);y[h*m+g]=(y[h*m+g]??0)+l*S}else for(let g=0;g<e;g++)for(let h=0;h<o;h++){let S=0;for(let b=0;b<a;b++)S+=(i[g*s+b]??0)*(u[b*c+h]??0);y[h*m+g]=(y[h*m+g]??0)+l*S}}function tr(t,r){let n=t.ndim,e=r.ndim;if(n===0||e===0){let o=n===0?t.get():null,a=e===0?r.get():null;if(n===0&&e===0)return typeof o=="bigint"&&typeof a=="bigint"?o*a:Number(o)*Number(a);if(n===0){let l=_(t.dtype,r.dtype),i=D.zeros([...r.shape],l);for(let s=0;s<r.size;s++){let u=r.data[s+r.offset];typeof o=="bigint"&&typeof u=="bigint"?i.data[s]=o*u:i.data[s]=Number(o)*Number(u)}return i}else{let l=_(t.dtype,r.dtype),i=D.zeros([...t.shape],l);for(let s=0;s<t.size;s++){let u=t.data[s+t.offset];typeof u=="bigint"&&typeof a=="bigint"?i.data[s]=u*a:i.data[s]=Number(u)*Number(a)}return i}}if(n===1&&e===1){if(t.shape[0]!==r.shape[0])throw new Error(`dot: incompatible shapes (${t.shape[0]},) and (${r.shape[0]},)`);let o=t.shape[0],a=0;for(let l=0;l<o;l++){let i=t.get(l),s=r.get(l);typeof i=="bigint"&&typeof s=="bigint"?a=Number(a)+Number(i*s):a+=Number(i)*Number(s)}return a}if(n===2&&e===2)return er(t,r);if(n===2&&e===1){let[o,a]=t.shape,l=r.shape[0];if(a!==l)throw new Error(`dot: incompatible shapes (${o},${a}) and (${l},)`);let i=_(t.dtype,r.dtype),s=D.zeros([o],i);for(let u=0;u<o;u++){let c=0;for(let f=0;f<a;f++){let y=t.get(u,f),m=r.get(f);typeof y=="bigint"&&typeof m=="bigint"?c=Number(c)+Number(y*m):c+=Number(y)*Number(m)}s.set([u],c)}return s}if(n===1&&e===2){let o=t.shape[0],[a,l]=r.shape;if(o!==a)throw new Error(`dot: incompatible shapes (${o},) and (${a},${l})`);let i=_(t.dtype,r.dtype),s=D.zeros([l],i);for(let u=0;u<l;u++){let c=0;for(let f=0;f<o;f++){let y=t.get(f),m=r.get(f,u);typeof y=="bigint"&&typeof m=="bigint"?c=Number(c)+Number(y*m):c+=Number(y)*Number(m)}s.set([u],c)}return s}if(n>2&&e===1){let o=t.shape[n-1],a=r.shape[0];if(o!==a)throw new Error(`dot: incompatible shapes ${JSON.stringify(t.shape)} and (${a},)`);let l=[...t.shape.slice(0,-1)],i=_(t.dtype,r.dtype),s=D.zeros(l,i),u=l.reduce((c,f)=>c*f,1);for(let c=0;c<u;c++){let f=0,y=c,m=[];for(let p=l.length-1;p>=0;p--)m[p]=y%l[p],y=Math.floor(y/l[p]);for(let p=0;p<o;p++){let d=[...m,p],A=t.get(...d),g=r.get(p);typeof A=="bigint"&&typeof g=="bigint"?f=Number(f)+Number(A*g):f+=Number(A)*Number(g)}s.set(m,f)}return s}if(n===1&&e>2){let o=t.shape[0],a=1,l=r.shape[a];if(o!==l)throw new Error(`dot: incompatible shapes (${o},) and ${JSON.stringify(r.shape)}`);let i=[...r.shape.slice(0,a),...r.shape.slice(a+1)],s=_(t.dtype,r.dtype),u=D.zeros(i,s),c=i.reduce((f,y)=>f*y,1);for(let f=0;f<c;f++){let y=f,m=[];for(let g=i.length-1;g>=0;g--)m[g]=y%i[g],y=Math.floor(y/i[g]);let p=m.slice(0,a),d=m.slice(a),A=0;for(let g=0;g<o;g++){let h=t.get(g),S=[...p,g,...d],b=r.get(...S);typeof h=="bigint"&&typeof b=="bigint"?A=Number(A)+Number(h*b):A+=Number(h)*Number(b)}u.set(m,A)}return u}if(n>=2&&e>=2&&!(n===2&&e===2)){let o=t.shape[n-1],a=r.shape[e-2];if(o!==a)throw new Error(`dot: incompatible shapes ${JSON.stringify(t.shape)} and ${JSON.stringify(r.shape)}`);let l=[...t.shape.slice(0,-1),...r.shape.slice(0,-2),r.shape[e-1]],i=_(t.dtype,r.dtype),s=D.zeros(l,i),u=t.shape.slice(0,-1).reduce((m,p)=>m*p,1),c=r.shape.slice(0,-2).reduce((m,p)=>m*p,1),f=r.shape[e-1],y=o;for(let m=0;m<u;m++)for(let p=0;p<c;p++)for(let d=0;d<f;d++){let A=0;for(let h=0;h<y;h++){let S=m*y+h,b=t.data[S+t.offset],I=p*y*f+h*f+d,w=r.data[I+r.offset];typeof b=="bigint"&&typeof w=="bigint"?A=Number(A)+Number(b*w):A+=Number(b)*Number(w)}let g=m*c*f+p*f+d;s.data[g]=A}return s}throw new Error(`dot: unexpected combination of dimensions ${n}D \xB7 ${e}D`)}function er(t,r){if(t.ndim!==2||r.ndim!==2)throw new Error("matmul requires 2D arrays");let[n=0,e=0]=t.shape,[o=0,a=0]=r.shape;if(e!==o)throw new Error(`matmul shape mismatch: (${n},${e}) @ (${o},${a})`);let l=_(t.dtype,r.dtype),i=l.startsWith("int")||l.startsWith("uint")||l==="bool"?"float64":l;if(i!=="float64")throw new Error(`matmul currently only supports float64, got ${i}`);let s=t.dtype==="float64"?t.data:Float64Array.from(Array.from(t.data).map(Number)),u=r.dtype==="float64"?r.data:Float64Array.from(Array.from(r.data).map(Number));t.offset>0&&(s=s.subarray(t.offset)),r.offset>0&&(u=u.subarray(r.offset));let[c=0,f=0]=t.strides,[y=0,m=0]=r.strides,p=f>c,d=m>y,A=p?"transpose":"no-transpose",g=d?"transpose":"no-transpose",h,S;p?h=f:h=c,d?S=m:S=y;let b=D.zeros([n,a],"float64");return lt("row-major",A,g,n,a,e,1,s,h,u,S,0,b.data,a),b}function $r(t){if(t.ndim!==2)throw new Error(`trace requires 2D array, got ${t.ndim}D`);let[r=0,n=0]=t.shape,e=Math.min(r,n),o=0;for(let a=0;a<e;a++){let l=t.get(a,a);typeof l=="bigint"?o=(typeof o=="bigint"?o:BigInt(o))+l:o=(typeof o=="bigint"?Number(o):o)+l}return o}function Or(t,r){let n=t.ndim,e=r.ndim,o=t.shape[n-1],a=r.shape[e-1];if(o!==a)throw new Error(`inner: incompatible shapes - last dimensions ${o} and ${a} don't match`);if(n===1&&e===1)return tr(t,r);let l=[...t.shape.slice(0,-1),...r.shape.slice(0,-1)],i=_(t.dtype,r.dtype),s=D.zeros(l,i),u=n===1?1:t.shape.slice(0,-1).reduce((y,m)=>y*m,1),c=e===1?1:r.shape.slice(0,-1).reduce((y,m)=>y*m,1),f=o;for(let y=0;y<u;y++)for(let m=0;m<c;m++){let p=0;for(let A=0;A<f;A++){let g=n===1?A:y*f+A,h=e===1?A:m*f+A,S=t.data[g+t.offset],b=r.data[h+r.offset];typeof S=="bigint"&&typeof b=="bigint"?p=Number(p)+Number(S*b):p+=Number(S)*Number(b)}if(l.length===0)return p;let d=u===1?m:y*c+m;s.data[d]=p}return s}function vr(t,r){let n=t.ndim===1?t:F(t),e=r.ndim===1?r:F(r),o=n.size,a=e.size,l=_(t.dtype,r.dtype),i=D.zeros([o,a],l);for(let s=0;s<o;s++)for(let u=0;u<a;u++){let c=n.get(s),f=e.get(u),y;typeof c=="bigint"&&typeof f=="bigint"?y=c*f:y=Number(c)*Number(f),i.set([s,u],y)}return i}function Mr(t,r,n){let e,o;if(typeof n=="number"){let y=n;if(y<0)throw new Error("tensordot: axes must be non-negative");if(y>t.ndim||y>r.ndim)throw new Error("tensordot: axes exceeds array dimensions");e=Array.from({length:y},(m,p)=>t.ndim-y+p),o=Array.from({length:y},(m,p)=>p)}else if([e,o]=n,e.length!==o.length)throw new Error("tensordot: axes lists must have same length");for(let y=0;y<e.length;y++){let m=e[y],p=o[y];if(m<0||m>=t.ndim||p<0||p>=r.ndim)throw new Error("tensordot: axis out of bounds");if(t.shape[m]!==r.shape[p])throw new Error(`tensordot: shape mismatch on axes ${m} and ${p}: ${t.shape[m]} != ${r.shape[p]}`)}let a=[],l=[];for(let y=0;y<t.ndim;y++)e.includes(y)||a.push(y);for(let y=0;y<r.ndim;y++)o.includes(y)||l.push(y);let i=[...a.map(y=>t.shape[y]),...l.map(y=>r.shape[y])];if(i.length===0){let y=0,m=e.map(p=>t.shape[p]).reduce((p,d)=>p*d,1);for(let p=0;p<m;p++){let d=p,A=new Array(e.length);for(let I=e.length-1;I>=0;I--){let w=e[I];A[I]=d%t.shape[w],d=Math.floor(d/t.shape[w])}let g=new Array(t.ndim),h=new Array(r.ndim);for(let I=0;I<e.length;I++)g[e[I]]=A[I];for(let I=0;I<o.length;I++)h[o[I]]=A[I];let S=t.get(...g),b=r.get(...h);typeof S=="bigint"&&typeof b=="bigint"?y=Number(y)+Number(S*b):y+=Number(S)*Number(b)}return y}let s=_(t.dtype,r.dtype),u=D.zeros(i,s),c=i.reduce((y,m)=>y*m,1),f=e.map(y=>t.shape[y]).reduce((y,m)=>y*m,1);for(let y=0;y<c;y++){let m=y,p=[];for(let h=i.length-1;h>=0;h--)p[h]=m%i[h],m=Math.floor(m/i[h]);let d=p.slice(0,a.length),A=p.slice(a.length),g=0;for(let h=0;h<f;h++){m=h;let S=[];for(let N=e.length-1;N>=0;N--){let nr=e[N];S[N]=m%t.shape[nr],m=Math.floor(m/t.shape[nr])}let b=new Array(t.ndim),I=new Array(r.ndim);for(let N=0;N<a.length;N++)b[a[N]]=d[N];for(let N=0;N<l.length;N++)I[l[N]]=A[N];for(let N=0;N<e.length;N++)b[e[N]]=S[N],I[o[N]]=S[N];let w=t.get(...b),$=r.get(...I);typeof w=="bigint"&&typeof $=="bigint"?g=Number(g)+Number(w*$):g+=Number(w)*Number($)}u.set(p,g)}return u}function Vr(t){return ur(t,Math.sqrt,!1)}function Cr(t,r){return typeof r=="number"?ct(t,r):O(t,r,Math.pow,"power")}function ct(t,r){let n=t.dtype,e=Array.from(t.shape),o=t.data,a=t.size,s=n!=="float32"&&n!=="float64"&&(r<0||!Number.isInteger(r))?"float64":n,u=D.zeros(e,s),c=u.data;if(x(n))if(x(s)&&Number.isInteger(r)&&r>=0){let f=o,y=c;for(let m=0;m<a;m++)y[m]=f[m]**BigInt(r)}else for(let f=0;f<a;f++)c[f]=Math.pow(Number(o[f]),r);else for(let f=0;f<a;f++)c[f]=Math.pow(Number(o[f]),r);return u}var E=class t{constructor(r,n){this._storage=r,this._base=n}get storage(){return this._storage}static _fromStorage(r,n){return new t(r,n)}get shape(){return this._storage.shape}get ndim(){return this._storage.ndim}get size(){return this._storage.size}get dtype(){return this._storage.dtype}get data(){return this._storage.data}get strides(){return this._storage.strides}get flags(){return{C_CONTIGUOUS:this._storage.isCContiguous,F_CONTIGUOUS:this._storage.isFContiguous,OWNDATA:this._base===void 0}}get base(){return this._base??null}get(r){if(r.length!==this.ndim)throw new Error(`Index has ${r.length} dimensions, but array has ${this.ndim} dimensions`);let n=r.map((e,o)=>{let a=e;if(a<0&&(a=this.shape[o]+a),a<0||a>=this.shape[o])throw new Error(`Index ${e} is out of bounds for axis ${o} with size ${this.shape[o]}`);return a});return this._storage.get(...n)}set(r,n){if(r.length!==this.ndim)throw new Error(`Index has ${r.length} dimensions, but array has ${this.ndim} dimensions`);let e=r.map((l,i)=>{let s=l;if(s<0&&(s=this.shape[i]+s),s<0||s>=this.shape[i])throw new Error(`Index ${l} is out of bounds for axis ${i} with size ${this.shape[i]}`);return s}),o=this.dtype,a;x(o)?a=typeof n=="bigint"?n:BigInt(Math.round(n)):o==="bool"?a=n?1:0:a=Number(n),this._storage.set(e,a)}copy(){return new t(this._storage.copy())}astype(r,n=!0){let e=this.dtype;if(e===r&&!n)return this;if(e===r&&n)return this.copy();let o=Array.from(this.shape),a=this.size,l=U(r);if(!l)throw new Error(`Cannot convert to dtype ${r}`);let i=new l(a),s=this.data;if(x(e)&&!x(r)){let c=s;if(r==="bool")for(let f=0;f<a;f++)i[f]=c[f]!==BigInt(0)?1:0;else for(let f=0;f<a;f++)i[f]=Number(c[f])}else if(!x(e)&&x(r)){let c=s;for(let f=0;f<a;f++)i[f]=BigInt(Math.round(Number(c[f])))}else if(r==="bool"){let c=s;for(let f=0;f<a;f++)i[f]=c[f]!==0?1:0}else if(e==="bool"&&!x(r)){let c=s;for(let f=0;f<a;f++)i[f]=c[f]}else if(!x(e)&&!x(r)){let c=s;for(let f=0;f<a;f++)i[f]=c[f]}else{let c=s;for(let f=0;f<a;f++)i[f]=c[f]}let u=D.fromData(i,o,r);return new t(u)}add(r){let n=typeof r=="number"?r:r._storage,e=lr(this._storage,n);return t._fromStorage(e)}subtract(r){let n=typeof r=="number"?r:r._storage,e=fr(this._storage,n);return t._fromStorage(e)}multiply(r){let n=typeof r=="number"?r:r._storage,e=cr(this._storage,n);return t._fromStorage(e)}divide(r){let n=typeof r=="number"?r:r._storage,e=yr(this._storage,n);return t._fromStorage(e)}mod(r){let n=typeof r=="number"?r:r._storage,e=gr(this._storage,n);return t._fromStorage(e)}floor_divide(r){let n=typeof r=="number"?r:r._storage,e=hr(this._storage,n);return t._fromStorage(e)}positive(){let r=Ar(this._storage);return t._fromStorage(r)}reciprocal(){let r=br(this._storage);return t._fromStorage(r)}sqrt(){let r=Vr(this._storage);return t._fromStorage(r)}power(r){let n=typeof r=="number"?r:r._storage,e=Cr(this._storage,n);return t._fromStorage(e)}absolute(){let r=pr(this._storage);return t._fromStorage(r)}negative(){let r=mr(this._storage);return t._fromStorage(r)}sign(){let r=dr(this._storage);return t._fromStorage(r)}greater(r){let n=typeof r=="number"?r:r._storage,e=Sr(this._storage,n);return t._fromStorage(e)}greater_equal(r){let n=typeof r=="number"?r:r._storage,e=Dr(this._storage,n);return t._fromStorage(e)}less(r){let n=typeof r=="number"?r:r._storage,e=xr(this._storage,n);return t._fromStorage(e)}less_equal(r){let n=typeof r=="number"?r:r._storage,e=Ir(this._storage,n);return t._fromStorage(e)}equal(r){let n=typeof r=="number"?r:r._storage,e=wr(this._storage,n);return t._fromStorage(e)}not_equal(r){let n=typeof r=="number"?r:r._storage,e=Nr(this._storage,n);return t._fromStorage(e)}isclose(r,n=1e-5,e=1e-8){let o=typeof r=="number"?r:r._storage,a=R(this._storage,o,n,e);return t._fromStorage(a)}allclose(r,n=1e-5,e=1e-8){let o=typeof r=="number"?r:r._storage;return Br(this._storage,o,n,e)}sum(r,n=!1){let e=C(this._storage,r,n);return typeof e=="number"?e:t._fromStorage(e)}mean(r,n=!1){let e=W(this._storage,r,n);return typeof e=="number"?e:t._fromStorage(e)}max(r,n=!1){let e=J(this._storage,r,n);return typeof e=="number"?e:t._fromStorage(e)}min(r,n=!1){let e=G(this._storage,r,n);return typeof e=="number"?e:t._fromStorage(e)}prod(r,n=!1){let e=P(this._storage,r,n);return typeof e=="number"?e:t._fromStorage(e)}argmin(r){let n=H(this._storage,r);return typeof n=="number"?n:t._fromStorage(n)}argmax(r){let n=Y(this._storage,r);return typeof n=="number"?n:t._fromStorage(n)}var(r,n=0,e=!1){let o=Q(this._storage,r,n,e);return typeof o=="number"?o:t._fromStorage(o)}std(r,n=0,e=!1){let o=zr(this._storage,r,n,e);return typeof o=="number"?o:t._fromStorage(o)}all(r,n=!1){let e=X(this._storage,r,n);return typeof e=="boolean"?e:t._fromStorage(e)}any(r,n=!1){let e=Z(this._storage,r,n);return typeof e=="boolean"?e:t._fromStorage(e)}reshape(...r){let n=r.length===1&&Array.isArray(r[0])?r[0]:r,e=_r(this._storage,n),a=e.data===this.data?this._base??this:void 0;return t._fromStorage(e,a)}flatten(){let r=K(this._storage);return t._fromStorage(r)}ravel(){let r=F(this._storage),e=r.data===this.data?this._base??this:void 0;return t._fromStorage(r,e)}transpose(r){let n=rr(this._storage,r),e=this._base??this;return t._fromStorage(n,e)}squeeze(r){let n=Tr(this._storage,r),e=this._base??this;return t._fromStorage(n,e)}expand_dims(r){let n=Ur(this._storage,r),e=this._base??this;return t._fromStorage(n,e)}matmul(r){let n=er(this._storage,r._storage);return t._fromStorage(n)}dot(r){let n=tr(this._storage,r._storage);return typeof n=="number"||typeof n=="bigint"?n:t._fromStorage(n)}trace(){return $r(this._storage)}inner(r){let n=Or(this._storage,r._storage);return typeof n=="number"||typeof n=="bigint"?n:t._fromStorage(n)}outer(r){let n=vr(this._storage,r._storage);return t._fromStorage(n)}tensordot(r,n=2){let e=Mr(this._storage,r._storage,n);return typeof e=="number"||typeof e=="bigint"?e:t._fromStorage(e)}slice(...r){if(r.length===0)return this;if(r.length>this.ndim)throw new Error(`Too many indices for array: array is ${this.ndim}-dimensional, but ${r.length} were indexed`);let n=r.map((s,u)=>{let c=or(s);return sr(c,this.shape[u])});for(;n.length<this.ndim;)n.push({start:0,stop:this.shape[n.length],step:1,isIndex:!1});let e=[],o=[],a=this._storage.offset;for(let s=0;s<n.length;s++){let u=n[s],c=this._storage.strides[s];if(a+=u.start*c,!u.isIndex){let f;u.step>0?f=Math.max(0,Math.ceil((u.stop-u.start)/u.step)):f=Math.max(0,Math.ceil((u.start-u.stop)/Math.abs(u.step))),e.push(f),o.push(c*u.step)}}let l=D.fromData(this._storage.data,e,this._storage.dtype,o,a),i=this._base??this;return new t(l,i)}row(r){if(this.ndim<2)throw new Error("row() requires at least 2 dimensions");return this.slice(String(r),":")}col(r){if(this.ndim<2)throw new Error("col() requires at least 2 dimensions");return this.slice(":",String(r))}rows(r,n){if(this.ndim<2)throw new Error("rows() requires at least 2 dimensions");return this.slice(`${r}:${n}`,":")}cols(r,n){if(this.ndim<2)throw new Error("cols() requires at least 2 dimensions");return this.slice(":",`${r}:${n}`)}toString(){return`NDArray(shape=${JSON.stringify(this.shape)}, dtype=${this.dtype})`}toArray(){if(this.ndim===0)return this._storage.iget(0);let r=this.shape,n=r.length,e=(o,a)=>{if(a===n)return this._storage.get(...o);let l=[];for(let i=0;i<r[a];i++)o[a]=i,l.push(e(o,a+1));return l};return e(new Array(n),0)}};function q(t,r=T){let n=D.zeros(t,r);return new E(n)}function Fr(t,r=T){let n=D.ones(t,r);return new E(n)}function pt(t){let r=[],n=t;for(;Array.isArray(n);)r.push(n.length),n=n[0];return r}function kr(t){return typeof t=="bigint"?!0:Array.isArray(t)?t.some(r=>kr(r)):!1}function mt(t){let r=[];function n(e){Array.isArray(e)?e.forEach(o=>n(o)):r.push(e)}return n(t),r}function M(t,r){if(t instanceof E)return!r||t.dtype===r?t.copy():t.astype(r);let n=kr(t),e=pt(t),o=e.reduce((c,f)=>c*f,1),a=r;a||(n?a="int64":a=T);let l=U(a);if(!l)throw new Error(`Cannot create array with dtype ${a}`);let i=new l(o),s=mt(t);if(x(a)){let c=i;for(let f=0;f<o;f++){let y=s[f];c[f]=typeof y=="bigint"?y:BigInt(Math.round(Number(y)))}}else if(a==="bool"){let c=i;for(let f=0;f<o;f++)c[f]=s[f]?1:0}else{let c=i;for(let f=0;f<o;f++){let y=s[f];c[f]=Number(y)}}let u=D.fromData(i,e,a);return new E(u)}function dt(t,r,n=1,e=T){let o=t,a=r;if(r===void 0&&(o=0,a=t),a===void 0)throw new Error("stop is required");let l=Math.max(0,Math.ceil((a-o)/n)),i=U(e);if(!i)throw new Error(`Cannot create arange array with dtype ${e}`);let s=new i(l);if(x(e))for(let c=0;c<l;c++)s[c]=BigInt(Math.round(o+c*n));else if(e==="bool")for(let c=0;c<l;c++)s[c]=o+c*n!==0?1:0;else for(let c=0;c<l;c++)s[c]=o+c*n;let u=D.fromData(s,[l],e);return new E(u)}function gt(t,r,n=50,e=T){if(n<0)throw new Error("num must be non-negative");if(n===0)return M([],e);if(n===1)return M([t],e);let o=U(e);if(!o)throw new Error(`Cannot create linspace array with dtype ${e}`);let a=new o(n),l=(r-t)/(n-1);if(x(e))for(let s=0;s<n;s++)a[s]=BigInt(Math.round(t+s*l));else if(e==="bool")for(let s=0;s<n;s++)a[s]=t+s*l!==0?1:0;else for(let s=0;s<n;s++)a[s]=t+s*l;let i=D.fromData(a,[n],e);return new E(i)}function ht(t,r,n=50,e=10,o=T){if(n<0)throw new Error("num must be non-negative");if(n===0)return M([],o);if(n===1)return M([Math.pow(e,t)],o);let a=U(o);if(!a)throw new Error(`Cannot create logspace array with dtype ${o}`);let l=new a(n),i=(r-t)/(n-1);if(x(o))for(let u=0;u<n;u++){let c=t+u*i;l[u]=BigInt(Math.round(Math.pow(e,c)))}else if(o==="bool")for(let u=0;u<n;u++){let c=t+u*i;l[u]=Math.pow(e,c)!==0?1:0}else for(let u=0;u<n;u++){let c=t+u*i;l[u]=Math.pow(e,c)}let s=D.fromData(l,[n],o);return new E(s)}function At(t,r,n=50,e=T){if(n<0)throw new Error("num must be non-negative");if(t===0||r===0)throw new Error("Geometric sequence cannot include zero");if(n===0)return M([],e);if(n===1)return M([t],e);let o=Math.sign(t),a=Math.sign(r);if(o!==a)throw new Error("Geometric sequence cannot contain both positive and negative values");let l=U(e);if(!l)throw new Error(`Cannot create geomspace array with dtype ${e}`);let i=new l(n),s=Math.log(Math.abs(t)),c=(Math.log(Math.abs(r))-s)/(n-1);if(x(e))for(let y=0;y<n;y++){let m=o*Math.exp(s+y*c);i[y]=BigInt(Math.round(m))}else if(e==="bool")for(let y=0;y<n;y++){let m=o*Math.exp(s+y*c);i[y]=m!==0?1:0}else for(let y=0;y<n;y++){let m=o*Math.exp(s+y*c);i[y]=m}let f=D.fromData(i,[n],e);return new E(f)}function qr(t,r,n=0,e=T){let o=r??t,a=q([t,o],e),l=a.data;if(x(e)){let i=l;for(let s=0;s<t;s++){let u=s+n;u>=0&&u<o&&(i[s*o+u]=BigInt(1))}}else{let i=l;for(let s=0;s<t;s++){let u=s+n;u>=0&&u<o&&(i[s*o+u]=1)}}return a}function jr(t,r=T){return q(t,r)}function Lr(t,r,n){let e=n;e||(typeof r=="bigint"?e="int64":typeof r=="boolean"?e="bool":Number.isInteger(r)?e="int32":e=T);let o=U(e);if(!o)throw new Error(`Cannot create full array with dtype ${e}`);let a=t.reduce((s,u)=>s*u,1),l=new o(a);if(x(e)){let s=typeof r=="bigint"?r:BigInt(Math.round(Number(r)));l.fill(s)}else e==="bool"?l.fill(r?1:0):l.fill(Number(r));let i=D.fromData(l,t,e);return new E(i)}function bt(t,r=T){return qr(t,t,0,r)}function St(t,r){return t instanceof E?!r||t.dtype===r?t:t.astype(r):M(t,r)}function Dt(t){return t.copy()}function xt(t,r){return q(Array.from(t.shape),r??t.dtype)}function It(t,r){return Fr(Array.from(t.shape),r??t.dtype)}function wt(t,r){return jr(Array.from(t.shape),r??t.dtype)}function Nt(t,r,n){return Lr(Array.from(t.shape),r,n??t.dtype)}function Bt(t){return t.sqrt()}function zt(t,r){return t.power(r)}function _t(t){return t.absolute()}function Tt(t){return t.negative()}function Ut(t){return t.sign()}function Et(t,r){return t.mod(r)}function $t(t,r){return t.floor_divide(r)}function Ot(t){return t.positive()}function vt(t){return t.reciprocal()}function Mt(t,r){return t.dot(r)}function Vt(t){return t.trace()}function Ct(t,r){return t.transpose(r)}function Ft(t,r){return t.inner(r)}function kt(t,r){return t.outer(r)}function qt(t,r,n=2){return t.tensordot(r,n)}var de="0.4.0";export{E as NDArray,de as __version__,_t as absolute,dt as arange,M as array,St as asarray,Dt as copy,Mt as dot,jr as empty,wt as empty_like,qr as eye,$t as floor_divide,Lr as full,Nt as full_like,At as geomspace,bt as identity,Ft as inner,gt as linspace,ht as logspace,Et as mod,Tt as negative,Fr as ones,It as ones_like,kt as outer,Ot as positive,zt as power,vt as reciprocal,Ut as sign,Bt as sqrt,qt as tensordot,Vt as trace,Ct as transpose,q as zeros,xt as zeros_like};
|
|
2
|
-
|
|
1
|
+
function st(r){if(!r.includes(":")){if(r.includes("."))throw new Error(`Invalid slice index: "${r}" (must be integer)`);let a=parseInt(r,10);if(isNaN(a))throw new Error(`Invalid slice index: "${r}"`);return{start:a,stop:null,step:1,isIndex:!0}}let t=r.split(":");if(t.length>3)throw new Error(`Invalid slice notation: "${r}" (too many colons)`);let e=t[0]===""?null:parseInt(t[0],10),n=t[1]===""||t[1]===void 0?null:parseInt(t[1],10),o=t[2]===""||t[2]===void 0?1:parseInt(t[2],10);if(e!==null&&isNaN(e))throw new Error(`Invalid start index in slice: "${r}"`);if(n!==null&&isNaN(n))throw new Error(`Invalid stop index in slice: "${r}"`);if(isNaN(o))throw new Error(`Invalid step in slice: "${r}"`);if(o===0)throw new Error("Slice step cannot be zero");return{start:e,stop:n,step:o,isIndex:!1}}function it(r,t){let{start:e,stop:n}=r,{step:o,isIndex:a}=r;if(a){if(e===null)throw new Error("Index cannot be null");let i=e<0?t+e:e;if(i<0||i>=t)throw new Error(`Index ${e} is out of bounds for size ${t}`);return{start:i,stop:i+1,step:1,isIndex:!0}}return o>0?(e===null&&(e=0),n===null&&(n=t)):(e===null&&(e=t-1),n===null&&(n=-t-1)),e<0&&(e=t+e),n<0&&(n=t+n),e=Math.max(0,Math.min(e,t)),n=Math.max(-1,Math.min(n,t)),{start:e,stop:n,step:o,isIndex:!1}}var $="float64";function _(r){switch(r){case"float64":return Float64Array;case"float32":return Float32Array;case"int64":return BigInt64Array;case"int32":return Int32Array;case"int16":return Int16Array;case"int8":return Int8Array;case"uint64":return BigUint64Array;case"uint32":return Uint32Array;case"uint16":return Uint16Array;case"uint8":return Uint8Array;case"bool":return Uint8Array;default:throw new Error(`Unknown dtype: ${r}`)}}function ct(r){switch(r){case"float64":case"int64":case"uint64":return 8;case"float32":case"int32":case"uint32":return 4;case"int16":case"uint16":return 2;case"int8":case"uint8":case"bool":return 1;default:throw new Error(`Unknown dtype: ${r}`)}}function ut(r){return r==="float64"||r==="float32"}function N(r){return r==="int64"||r==="uint64"}function v(r,t){if(r===t)return r;if(r==="bool")return t;if(t==="bool")return r;if(ut(r)||ut(t)){if(r==="float64"||t==="float64")return"float64";if(r==="float32"){let c=t;return c==="int32"||c==="int64"||c==="uint32"||c==="uint64"?"float64":"float32"}if(t==="float32"){let c=r;return c==="int32"||c==="int64"||c==="uint32"||c==="uint64"?"float64":"float32"}return"float32"}let e=r.startsWith("int"),n=t.startsWith("int"),o=r.startsWith("uint"),a=t.startsWith("uint"),i=c=>c.includes("64")?64:c.includes("32")?32:c.includes("16")?16:c.includes("8")?8:0,s=i(r),u=i(t);if(r==="int64"&&t==="uint64"||r==="uint64"&&t==="int64")return"float64";if(e&&a&&s===u){if(s===8)return"int16";if(s===16)return"int32";if(s===32)return"int64"}if(o&&n&&s===u){if(u===8)return"int16";if(u===16)return"int32";if(u===32)return"int64"}if(e&&n||o&&a){let c=Math.max(s,u);return e?c===64?"int64":c===32?"int32":c===16?"int16":"int8":c===64?"uint64":c===32?"uint32":c===16?"uint16":"uint8"}return e&&a?s>u?r:u===8?"int16":u===16?"int32":u===32?"int64":"float64":o&&n?u>s?t:s===8?"int16":s===16?"int32":s===32?"int64":"float64":"float64"}var D=class r{constructor(t,e,n,o,a){this._data=t,this._shape=e,this._strides=n,this._offset=o,this._dtype=a}get shape(){return this._shape}get ndim(){return this._shape.length}get size(){return this._shape.reduce((t,e)=>t*e,1)}get dtype(){return this._dtype}get data(){return this._data}get strides(){return this._strides}get offset(){return this._offset}get isCContiguous(){let t=this._shape,e=this._strides,n=t.length;if(n===0)return!0;if(n===1)return e[0]===1;let o=1;for(let a=n-1;a>=0;a--){if(e[a]!==o)return!1;o*=t[a]}return!0}get isFContiguous(){let t=this._shape,e=this._strides,n=t.length;if(n===0)return!0;if(n===1)return e[0]===1;let o=1;for(let a=0;a<n;a++){if(e[a]!==o)return!1;o*=t[a]}return!0}iget(t){let e=this._shape,n=this._strides,o=e.length;if(o===0)return this._data[this._offset];let a=t,i=this._offset;for(let s=0;s<o;s++){let u=1;for(let l=s+1;l<o;l++)u*=e[l];let c=Math.floor(a/u);a=a%u,i+=c*n[s]}return this._data[i]}iset(t,e){let n=this._shape,o=this._strides,a=n.length;if(a===0){this._data[this._offset]=e;return}let i=t,s=this._offset;for(let u=0;u<a;u++){let c=1;for(let m=u+1;m<a;m++)c*=n[m];let l=Math.floor(i/c);i=i%c,s+=l*o[u]}this._data[s]=e}get(...t){let e=this._strides,n=this._offset;for(let o=0;o<t.length;o++)n+=t[o]*e[o];return this._data[n]}set(t,e){let n=this._strides,o=this._offset;for(let a=0;a<t.length;a++)o+=t[a]*n[a];this._data[o]=e}copy(){let t=Array.from(this._shape),e=this._dtype,n=this.size,o=_(e);if(!o)throw new Error(`Cannot copy array with dtype ${e}`);let a=new o(n);if(this.isCContiguous&&this._offset===0)if(N(e)){let i=this._data,s=a;for(let u=0;u<n;u++)s[u]=i[u]}else a.set(this._data);else if(N(e)){let i=a;for(let s=0;s<n;s++)i[s]=this.iget(s)}else for(let i=0;i<n;i++)a[i]=this.iget(i);return new r(a,t,r._computeStrides(t),0,e)}static fromData(t,e,n,o,a){let i=o??r._computeStrides(e),s=a??0;return new r(t,e,i,s,n)}static zeros(t,e=$){let n=t.reduce((i,s)=>i*s,1),o=_(e);if(!o)throw new Error(`Cannot create array with dtype ${e}`);let a=new o(n);return new r(a,t,r._computeStrides(t),0,e)}static ones(t,e=$){let n=t.reduce((i,s)=>i*s,1),o=_(e);if(!o)throw new Error(`Cannot create array with dtype ${e}`);let a=new o(n);return N(e)?a.fill(BigInt(1)):a.fill(1),new r(a,t,r._computeStrides(t),0,e)}static _computeStrides(t){let e=new Array(t.length),n=1;for(let o=t.length-1;o>=0;o--)e[o]=n,n*=t[o];return e}};function F(r){let t=new Array(r.length),e=1;for(let n=r.length-1;n>=0;n--)t[n]=e,e*=r[n];return t}function ft(r,t){let e=r.length,n=t.length,o=Math.max(e,n),a=new Array(o);for(let i=0;i<o;i++){let s=i<o-e?1:r[i-(o-e)],u=i<o-n?1:t[i-(o-n)];if(s===u)a[i]=s;else if(s===1)a[i]=u;else if(u===1)a[i]=s;else throw new Error(`operands could not be broadcast together with shapes ${JSON.stringify(Array.from(r))} ${JSON.stringify(Array.from(t))}`)}return a}function nn(r,t,e){let n=r.length,o=e.length,a=new Array(o).fill(0);for(let i=0;i<n;i++){let s=o-n+i,u=r[i],c=e[s];if(u===c)a[s]=t[i];else if(u===1)a[s]=0;else throw new Error("Invalid broadcast")}return a}function ur(r,t){let e=nn(r.shape,r.strides,t);return D.fromData(r.data,Array.from(t),r.dtype,e,r.offset)}function P(r,t,e,n){let o=ft(r.shape,t.shape),a=ur(r,o),i=ur(t,o),s=v(r.dtype,t.dtype),u=D.zeros(o,s),c=u.data,l=u.size;if(N(s)){let m=c;for(let f=0;f<l;f++){let p=a.iget(f),y=i.iget(f),d=typeof p=="bigint"?p:BigInt(Math.round(p)),g=typeof y=="bigint"?y:BigInt(Math.round(y));n==="add"?m[f]=d+g:n==="subtract"?m[f]=d-g:n==="multiply"?m[f]=d*g:n==="divide"?m[f]=d/g:m[f]=BigInt(Math.round(e(Number(d),Number(g))))}}else{let m=N(r.dtype)||N(t.dtype);for(let f=0;f<l;f++){let p=a.iget(f),y=i.iget(f),d=Number(p),g=Number(y);c[f]=e(d,g)}}return u}function L(r,t,e){let n=ft(r.shape,t.shape),o=ur(r,n),a=ur(t,n),i=n.reduce((c,l)=>c*l,1),s=new Uint8Array(i),u=N(r.dtype)||N(t.dtype);for(let c=0;c<i;c++){let l=o.iget(c),m=a.iget(c),f=Number(l),p=Number(m);s[c]=e(f,p)?1:0}return D.fromData(s,n,"bool")}function M(r,t,e=!0){let n=r.dtype,o=Array.from(r.shape),a=r.size,s=e?n:n!=="float32"&&n!=="float64"?"float64":n,u=D.zeros(o,s),c=u.data,l=r.data;if(N(n))if(N(s)){let m=c;for(let f=0;f<a;f++){let p=Number(l[f]);m[f]=BigInt(Math.round(t(p)))}}else for(let m=0;m<a;m++)c[m]=t(Number(l[m]));else for(let m=0;m<a;m++)c[m]=t(Number(l[m]));return u}function zr(r,t){return r.isCContiguous&&t.isCContiguous&&r.shape.length===t.shape.length&&r.shape.every((e,n)=>e===t.shape[n])}function lt(r,t){return typeof t=="number"?un(r,t):zr(r,t)?on(r,t):P(r,t,(e,n)=>e+n,"add")}function on(r,t){let e=v(r.dtype,t.dtype),n=D.zeros(Array.from(r.shape),e),o=r.size,a=r.data,i=t.data,s=n.data;if(N(e)){let u=s;if(!N(r.dtype)||!N(t.dtype))for(let l=0;l<o;l++){let m=typeof a[l]=="bigint"?a[l]:BigInt(Math.round(Number(a[l]))),f=typeof i[l]=="bigint"?i[l]:BigInt(Math.round(Number(i[l])));u[l]=m+f}else{let l=a,m=i;for(let f=0;f<o;f++)u[f]=l[f]+m[f]}}else if(N(r.dtype)||N(t.dtype))for(let c=0;c<o;c++){let l=typeof a[c]=="bigint"?Number(a[c]):a[c],m=typeof i[c]=="bigint"?Number(i[c]):i[c];s[c]=l+m}else for(let c=0;c<o;c++)s[c]=a[c]+i[c];return n}function pt(r,t){return typeof t=="number"?cn(r,t):zr(r,t)?an(r,t):P(r,t,(e,n)=>e-n,"subtract")}function an(r,t){let e=v(r.dtype,t.dtype),n=D.zeros(Array.from(r.shape),e),o=r.size,a=r.data,i=t.data,s=n.data;if(N(e)){let u=s;if(!N(r.dtype)||!N(t.dtype))for(let l=0;l<o;l++){let m=typeof a[l]=="bigint"?a[l]:BigInt(Math.round(Number(a[l]))),f=typeof i[l]=="bigint"?i[l]:BigInt(Math.round(Number(i[l])));u[l]=m-f}else{let l=a,m=i;for(let f=0;f<o;f++)u[f]=l[f]-m[f]}}else if(N(r.dtype)||N(t.dtype))for(let c=0;c<o;c++){let l=typeof a[c]=="bigint"?Number(a[c]):a[c],m=typeof i[c]=="bigint"?Number(i[c]):i[c];s[c]=l-m}else for(let c=0;c<o;c++)s[c]=a[c]-i[c];return n}function mt(r,t){return typeof t=="number"?fn(r,t):zr(r,t)?sn(r,t):P(r,t,(e,n)=>e*n,"multiply")}function sn(r,t){let e=v(r.dtype,t.dtype),n=D.zeros(Array.from(r.shape),e),o=r.size,a=r.data,i=t.data,s=n.data;if(N(e)){let u=s;if(!N(r.dtype)||!N(t.dtype))for(let l=0;l<o;l++){let m=typeof a[l]=="bigint"?a[l]:BigInt(Math.round(Number(a[l]))),f=typeof i[l]=="bigint"?i[l]:BigInt(Math.round(Number(i[l])));u[l]=m*f}else{let l=a,m=i;for(let f=0;f<o;f++)u[f]=l[f]*m[f]}}else if(N(r.dtype)||N(t.dtype))for(let c=0;c<o;c++){let l=typeof a[c]=="bigint"?Number(a[c]):a[c],m=typeof i[c]=="bigint"?Number(i[c]):i[c];s[c]=l*m}else for(let c=0;c<o;c++)s[c]=a[c]*i[c];return n}function yt(r,t){if(typeof t=="number")return ln(r,t);let e=r.dtype==="float64",n=t.dtype==="float64",o=r.dtype==="float32",a=t.dtype==="float32";if(e||n){let u=e?r:Y(r,"float64"),c=n?t:Y(t,"float64");return P(u,c,(l,m)=>l/m,"divide")}if(o||a){let u=o?r:Y(r,"float32"),c=a?t:Y(t,"float32");return P(u,c,(l,m)=>l/m,"divide")}let i=Y(r,"float64"),s=Y(t,"float64");return P(i,s,(u,c)=>u/c,"divide")}function Y(r,t){let e=D.zeros(Array.from(r.shape),t),n=r.size,o=r.data,a=e.data;for(let i=0;i<n;i++)a[i]=Number(o[i]);return e}function un(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,i=D.zeros(n,e),s=i.data;if(N(e)){let u=o,c=s,l=BigInt(Math.round(t));for(let m=0;m<a;m++)c[m]=u[m]+l}else for(let u=0;u<a;u++)s[u]=Number(o[u])+t;return i}function cn(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,i=D.zeros(n,e),s=i.data;if(N(e)){let u=o,c=s,l=BigInt(Math.round(t));for(let m=0;m<a;m++)c[m]=u[m]-l}else for(let u=0;u<a;u++)s[u]=Number(o[u])-t;return i}function fn(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,i=D.zeros(n,e),s=i.data;if(N(e)){let u=o,c=s,l=BigInt(Math.round(t));for(let m=0;m<a;m++)c[m]=u[m]*l}else for(let u=0;u<a;u++)s[u]=Number(o[u])*t;return i}function ln(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,s=e!=="float32"&&e!=="float64"?"float64":e,u=D.zeros(n,s),c=u.data;if(N(e))for(let l=0;l<a;l++)c[l]=Number(o[l])/t;else for(let l=0;l<a;l++)c[l]=Number(o[l])/t;return u}function dt(r){let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size,a=D.zeros(e,t),i=a.data;if(N(t)){let s=n,u=i;for(let c=0;c<o;c++){let l=s[c];u[c]=l<0n?-l:l}}else for(let s=0;s<o;s++)i[s]=Math.abs(Number(n[s]));return a}function gt(r){let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size,a=D.zeros(e,t),i=a.data;if(N(t)){let s=n,u=i;for(let c=0;c<o;c++)u[c]=-s[c]}else for(let s=0;s<o;s++)i[s]=-Number(n[s]);return a}function ht(r){let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size,a=D.zeros(e,t),i=a.data;if(N(t)){let s=n,u=i;for(let c=0;c<o;c++){let l=s[c];u[c]=l>0n?1n:l<0n?-1n:0n}}else for(let s=0;s<o;s++){let u=Number(n[s]);i[s]=u>0?1:u<0?-1:0}return a}function cr(r,t){return typeof t=="number"?pn(r,t):P(r,t,(e,n)=>(e%n+n)%n,"mod")}function pn(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,i=D.zeros(n,e),s=i.data;if(N(e)){let u=o,c=s,l=BigInt(Math.round(t));for(let m=0;m<a;m++){let f=u[m];c[m]=(f%l+l)%l}}else for(let u=0;u<a;u++){let c=Number(o[u]);s[u]=(c%t+t)%t}return i}function Br(r,t){return typeof t=="number"?mn(r,t):P(r,t,(e,n)=>Math.floor(e/n),"floor_divide")}function mn(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,i=D.zeros(n,e),s=i.data;if(N(e)){let u=o,c=s,l=BigInt(Math.round(t));for(let m=0;m<a;m++)c[m]=u[m]/l}else for(let u=0;u<a;u++)s[u]=Math.floor(Number(o[u])/t);return i}function At(r){let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size,a=D.zeros(e,t),i=a.data;for(let s=0;s<o;s++)i[s]=n[s];return a}function bt(r){let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size,i=t!=="float32"&&t!=="float64"?"float64":t,s=D.zeros(e,i),u=s.data;if(N(t))for(let c=0;c<o;c++)u[c]=1/Number(n[c]);else for(let c=0;c<o;c++)u[c]=1/Number(n[c]);return s}function St(r){let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size,i=t!=="float32"&&t!=="float64"?"float64":t,s=D.zeros(e,i),u=s.data;for(let c=0;c<o;c++)u[c]=Math.cbrt(Number(n[c]));return s}function Dt(r){let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size,a=t==="float32"?"float32":"float64",i=D.zeros(e,a),s=i.data;for(let u=0;u<o;u++)s[u]=Math.abs(Number(n[u]));return i}function Nt(r,t){let e=Br(r,t),n=cr(r,t);return[e,n]}function wt(r){let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size,a=D.zeros(e,t),i=a.data;if(N(t)){let s=n,u=i;for(let c=0;c<o;c++)u[c]=s[c]*s[c]}else for(let s=0;s<o;s++){let u=Number(n[s]);i[s]=u*u}return a}function xt(r,t){return cr(r,t)}function It(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.size,a=e==="float32"?"float32":"float64",i=D.zeros(n,a),s=i.data;if(typeof t=="number")for(let u=0;u<o;u++){let c=Number(r.data[u]);c<0?s[u]=0:c===0?s[u]=t:s[u]=1}else{let u=t.data,c=t.shape;if(n.every((l,m)=>l===c[m]))for(let l=0;l<o;l++){let m=Number(r.data[l]);m<0?s[l]=0:m===0?s[l]=Number(u[l]):s[l]=1}else for(let l=0;l<o;l++){let m=Number(r.data[l]),f=l%t.size;m<0?s[l]=0:m===0?s[l]=Number(u[f]):s[l]=1}}return i}function Z(r){if(r.length===0)return[];if(r.length===1)return Array.from(r[0]);let t=Math.max(...r.map(n=>n.length)),e=new Array(t);for(let n=0;n<t;n++){let o=1;for(let a of r){let i=a.length-t+n,s=i<0?1:a[i];if(s!==1){if(o===1)o=s;else if(o!==s)return null}}e[n]=o}return e}function dn(r,t,e){let n=r.length,o=e.length,a=new Array(o).fill(0);for(let i=0;i<n;i++){let s=o-n+i,u=r[i],c=e[s];if(u===c)a[s]=t[i];else if(u===1)a[s]=0;else throw new Error("Invalid broadcast")}return a}function j(r,t){let e=dn(r.shape,r.strides,t);return D.fromData(r.data,Array.from(t),r.dtype,e,r.offset)}function _r(...r){let t=Z(r);if(t===null){let e=r.map(n=>`(${n.join(",")})`).join(" ");throw new Error(`shape mismatch: objects cannot be broadcast to a single shape. Mismatch is between ${e}`)}return t}function zt(r,t){return typeof t=="number"?gn(r,t):L(r,t,(e,n)=>e>n)}function Bt(r,t){return typeof t=="number"?hn(r,t):L(r,t,(e,n)=>e>=n)}function _t(r,t){return typeof t=="number"?An(r,t):L(r,t,(e,n)=>e<n)}function Et(r,t){return typeof t=="number"?bn(r,t):L(r,t,(e,n)=>e<=n)}function Ut(r,t){return typeof t=="number"?Sn(r,t):L(r,t,(e,n)=>e===n)}function Tt(r,t){return typeof t=="number"?Dn(r,t):L(r,t,(e,n)=>e!==n)}function Er(r,t,e=1e-5,n=1e-8){return typeof t=="number"?Nn(r,t,e,n):L(r,t,(o,a)=>{let i=Math.abs(o-a),s=n+e*Math.abs(a);return i<=s})}function Ot(r,t,e=1e-5,n=1e-8){let o=Er(r,t,e,n),a=o.data;for(let i=0;i<o.size;i++)if(a[i]===0)return!1;return!0}function $t(r,t){let e=[Array.from(r.shape),Array.from(t.shape)],n=Z(e);if(n===null)return!1;let o=j(r,n),a=j(t,n),i=n.length,s=n.reduce((l,m)=>l*m,1),u=N(o.dtype),c=N(a.dtype);for(let l=0;l<s;l++){let m=l,f=new Array(i);for(let d=i-1;d>=0;d--)f[d]=m%n[d],m=Math.floor(m/n[d]);let p=o.get(...f),y=a.get(...f);if(u||c){let d=typeof p=="bigint"?p:BigInt(Number(p)),g=typeof y=="bigint"?y:BigInt(Number(y));if(d!==g)return!1}else if(p!==y)return!1}return!0}function gn(r,t){let e=new Uint8Array(r.size),n=r.data;for(let o=0;o<r.size;o++)e[o]=n[o]>t?1:0;return D.fromData(e,Array.from(r.shape),"bool")}function hn(r,t){let e=new Uint8Array(r.size),n=r.data;for(let o=0;o<r.size;o++)e[o]=n[o]>=t?1:0;return D.fromData(e,Array.from(r.shape),"bool")}function An(r,t){let e=new Uint8Array(r.size),n=r.data;for(let o=0;o<r.size;o++)e[o]=n[o]<t?1:0;return D.fromData(e,Array.from(r.shape),"bool")}function bn(r,t){let e=new Uint8Array(r.size),n=r.data;for(let o=0;o<r.size;o++)e[o]=n[o]<=t?1:0;return D.fromData(e,Array.from(r.shape),"bool")}function Sn(r,t){let e=new Uint8Array(r.size),n=r.data,o=r.dtype;if(N(o)){let a=BigInt(Math.round(t)),i=n;for(let s=0;s<r.size;s++)e[s]=i[s]===a?1:0}else for(let a=0;a<r.size;a++)e[a]=n[a]===t?1:0;return D.fromData(e,Array.from(r.shape),"bool")}function Dn(r,t){let e=new Uint8Array(r.size),n=r.data;for(let o=0;o<r.size;o++)e[o]=n[o]!==t?1:0;return D.fromData(e,Array.from(r.shape),"bool")}function Nn(r,t,e,n){let o=new Uint8Array(r.size),a=r.data,i=r.dtype;if(N(i)){let s=a;for(let u=0;u<r.size;u++){let c=Number(s[u]),l=Math.abs(c-t),m=n+e*Math.abs(t);o[u]=l<=m?1:0}}else for(let s=0;s<r.size;s++){let u=Number(a[s]),c=Math.abs(u-t),l=n+e*Math.abs(t);o[s]=c<=l?1:0}return D.fromData(o,Array.from(r.shape),"bool")}function U(r,t){let e=0,n=1;for(let o=r.length-1;o>=0;o--)e+=r[o]*n,n*=t[o];return e}function T(r,t,e,n){let o=n.length,a=new Array(o),i=Array.from(n).filter((u,c)=>c!==t),s=r;for(let u=i.length-1;u>=0;u--)a[u>=t?u+1:u]=s%i[u],s=Math.floor(s/i[u]);return a[t]=e,a}function X(r,t,e=!1){let n=r.dtype,o=r.shape,a=o.length,i=r.size,s=r.data;if(t===void 0)if(N(n)){let y=s,d=BigInt(0);for(let g=0;g<i;g++)d+=y[g];return Number(d)}else{let y=0;for(let d=0;d<i;d++)y+=Number(s[d]);return y}let u=t;if(u<0&&(u=a+u),u<0||u>=a)throw new Error(`axis ${t} is out of bounds for array of dimension ${a}`);let c=Array.from(o).filter((y,d)=>d!==u);if(c.length===0)return X(r);let l=D.zeros(c,n),m=l.data,f=o[u],p=c.reduce((y,d)=>y*d,1);if(N(n)){let y=s,d=m;for(let g=0;g<p;g++){let A=BigInt(0);for(let h=0;h<f;h++){let b=T(g,u,h,o),S=U(b,o);A+=y[S]}d[g]=A}}else for(let y=0;y<p;y++){let d=0;for(let g=0;g<f;g++){let A=T(y,u,g,o),h=U(A,o);d+=Number(s[h])}m[y]=d}if(e){let y=[...o];return y[u]=1,D.fromData(m,y,n)}return l}function fr(r,t,e=!1){let n=r.dtype,o=r.shape;if(t===void 0)return X(r)/r.size;let a=t;if(a<0&&(a=o.length+a),a<0||a>=o.length)throw new Error(`axis ${t} is out of bounds for array of dimension ${o.length}`);let i=X(r,t,e);if(typeof i=="number")return i/o[a];let s=o[a],u=n;(N(n)||n.startsWith("int")||n.startsWith("uint"))&&(u="float64");let c=D.zeros(Array.from(i.shape),u),l=c.data,m=i.data;if(N(n)){let f=m;for(let p=0;p<l.length;p++)l[p]=Number(f[p])/s}else for(let f=0;f<l.length;f++)l[f]=Number(m[f])/s;return c}function lr(r,t,e=!1){let n=r.dtype,o=r.shape,a=o.length,i=r.size,s=r.data;if(t===void 0){if(i===0)throw new Error("max of empty array");let y=s[0];for(let d=1;d<i;d++)s[d]>y&&(y=s[d]);return Number(y)}let u=t;if(u<0&&(u=a+u),u<0||u>=a)throw new Error(`axis ${t} is out of bounds for array of dimension ${a}`);let c=Array.from(o).filter((y,d)=>d!==u);if(c.length===0)return lr(r);let l=D.zeros(c,n),m=l.data,f=o[u],p=c.reduce((y,d)=>y*d,1);if(N(n)){let y=s,d=m;for(let g=0;g<p;g++){let A=T(g,u,0,o),h=U(A,o),b=y[h];for(let S=1;S<f;S++){let w=T(g,u,S,o),x=U(w,o),z=y[x];z>b&&(b=z)}d[g]=b}}else for(let y=0;y<p;y++){let d=-1/0;for(let g=0;g<f;g++){let A=T(y,u,g,o),h=U(A,o),b=Number(s[h]);b>d&&(d=b)}m[y]=d}if(e){let y=[...o];return y[u]=1,D.fromData(m,y,n)}return l}function Ur(r,t,e=!1){let n=r.dtype,o=r.shape,a=o.length,i=r.size,s=r.data;if(t===void 0)if(N(n)){let y=s,d=BigInt(1);for(let g=0;g<i;g++)d*=y[g];return Number(d)}else{let y=1;for(let d=0;d<i;d++)y*=Number(s[d]);return y}let u=t;if(u<0&&(u=a+u),u<0||u>=a)throw new Error(`axis ${t} is out of bounds for array of dimension ${a}`);let c=Array.from(o).filter((y,d)=>d!==u);if(c.length===0)return Ur(r);let l=D.zeros(c,n),m=l.data,f=o[u],p=c.reduce((y,d)=>y*d,1);if(N(n)){let y=s,d=m;for(let g=0;g<p;g++){let A=BigInt(1);for(let h=0;h<f;h++){let b=T(g,u,h,o),S=U(b,o);A*=y[S]}d[g]=A}}else for(let y=0;y<p;y++){let d=1;for(let g=0;g<f;g++){let A=T(y,u,g,o),h=U(A,o);d*=Number(s[h])}m[y]=d}if(e){let y=[...o];return y[u]=1,D.fromData(m,y,n)}return l}function pr(r,t,e=!1){let n=r.dtype,o=r.shape,a=o.length,i=r.size,s=r.data;if(t===void 0){if(i===0)throw new Error("min of empty array");let y=s[0];for(let d=1;d<i;d++)s[d]<y&&(y=s[d]);return Number(y)}let u=t;if(u<0&&(u=a+u),u<0||u>=a)throw new Error(`axis ${t} is out of bounds for array of dimension ${a}`);let c=Array.from(o).filter((y,d)=>d!==u);if(c.length===0)return pr(r);let l=D.zeros(c,n),m=l.data,f=o[u],p=c.reduce((y,d)=>y*d,1);if(N(n)){let y=s,d=m;for(let g=0;g<p;g++){let A=T(g,u,0,o),h=U(A,o),b=y[h];for(let S=1;S<f;S++){let w=T(g,u,S,o),x=U(w,o),z=y[x];z<b&&(b=z)}d[g]=b}}else for(let y=0;y<p;y++){let d=1/0;for(let g=0;g<f;g++){let A=T(y,u,g,o),h=U(A,o),b=Number(s[h]);b<d&&(d=b)}m[y]=d}if(e){let y=[...o];return y[u]=1,D.fromData(m,y,n)}return l}function Tr(r,t){let e=r.dtype,n=r.shape,o=n.length,a=r.size,i=r.data;if(t===void 0){if(a===0)throw new Error("argmin of empty array");let p=i[0],y=0;for(let d=1;d<a;d++)i[d]<p&&(p=i[d],y=d);return y}let s=t;if(s<0&&(s=o+s),s<0||s>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);let u=Array.from(n).filter((p,y)=>y!==s);if(u.length===0)return Tr(r);let c=D.zeros(u,"int32"),l=c.data,m=n[s],f=u.reduce((p,y)=>p*y,1);if(N(e)){let p=i;for(let y=0;y<f;y++){let d=T(y,s,0,n),g=U(d,n),A=p[g],h=0;for(let b=1;b<m;b++){let S=T(y,s,b,n),w=U(S,n),x=p[w];x<A&&(A=x,h=b)}l[y]=h}}else for(let p=0;p<f;p++){let y=1/0,d=0;for(let g=0;g<m;g++){let A=T(p,s,g,n),h=U(A,n),b=Number(i[h]);b<y&&(y=b,d=g)}l[p]=d}return c}function Or(r,t){let e=r.dtype,n=r.shape,o=n.length,a=r.size,i=r.data;if(t===void 0){if(a===0)throw new Error("argmax of empty array");let p=i[0],y=0;for(let d=1;d<a;d++)i[d]>p&&(p=i[d],y=d);return y}let s=t;if(s<0&&(s=o+s),s<0||s>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);let u=Array.from(n).filter((p,y)=>y!==s);if(u.length===0)return Or(r);let c=D.zeros(u,"int32"),l=c.data,m=n[s],f=u.reduce((p,y)=>p*y,1);if(N(e)){let p=i;for(let y=0;y<f;y++){let d=T(y,s,0,n),g=U(d,n),A=p[g],h=0;for(let b=1;b<m;b++){let S=T(y,s,b,n),w=U(S,n),x=p[w];x>A&&(A=x,h=b)}l[y]=h}}else for(let p=0;p<f;p++){let y=-1/0,d=0;for(let g=0;g<m;g++){let A=T(p,s,g,n),h=U(A,n),b=Number(i[h]);b>y&&(y=b,d=g)}l[p]=d}return c}function $r(r,t,e=0,n=!1){let o=r.shape,a=o.length,i=r.size,s=r.data,u=fr(r,t,n);if(t===void 0){let A=u,h=0;for(let b=0;b<i;b++){let S=Number(s[b])-A;h+=S*S}return h/(i-e)}let c=t;if(c<0&&(c=a+c),c<0||c>=a)throw new Error(`axis ${t} is out of bounds for array of dimension ${a}`);let l=o[c],m=u,f=m.data,p=n?m.shape:Array.from(o).filter((A,h)=>h!==c),y=D.zeros(Array.from(p),"float64"),d=y.data,g=p.reduce((A,h)=>A*h,1);for(let A=0;A<g;A++){let h=0,b=Number(f[A]);for(let S=0;S<l;S++){let w=T(A,c,S,o),x=U(w,o),z=Number(s[x])-b;h+=z*z}d[A]=h/(l-e)}return y}function vt(r,t,e=0,n=!1){let o=$r(r,t,e,n);if(typeof o=="number")return Math.sqrt(o);let a=D.zeros(Array.from(o.shape),"float64"),i=o.data,s=a.data;for(let u=0;u<i.length;u++)s[u]=Math.sqrt(Number(i[u]));return a}function vr(r,t,e=!1){let n=r.shape,o=n.length,a=r.size,i=r.data;if(t===void 0){for(let p=0;p<a;p++)if(!i[p])return!1;return!0}let s=t;if(s<0&&(s=o+s),s<0||s>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);let u=Array.from(n).filter((p,y)=>y!==s);if(u.length===0)return vr(r);let c=D.zeros(u,"bool"),l=c.data,m=n[s],f=u.reduce((p,y)=>p*y,1);for(let p=0;p<f;p++){let y=!0;for(let d=0;d<m;d++){let g=T(p,s,d,n),A=U(g,n);if(!i[A]){y=!1;break}}l[p]=y?1:0}if(e){let p=[...n];return p[s]=1,D.fromData(l,p,"bool")}return c}function Mr(r,t,e=!1){let n=r.shape,o=n.length,a=r.size,i=r.data;if(t===void 0){for(let p=0;p<a;p++)if(i[p])return!0;return!1}let s=t;if(s<0&&(s=o+s),s<0||s>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);let u=Array.from(n).filter((p,y)=>y!==s);if(u.length===0)return Mr(r);let c=D.zeros(u,"bool"),l=c.data,m=n[s],f=u.reduce((p,y)=>p*y,1);for(let p=0;p<f;p++){let y=!1;for(let d=0;d<m;d++){let g=T(p,s,d,n),A=U(g,n);if(i[A]){y=!0;break}}l[p]=y?1:0}if(e){let p=[...n];return p[s]=1,D.fromData(l,p,"bool")}return c}function Cr(r,t){let e=r.shape,n=e.length,o=r.data;if(t===void 0){let f=r.size,p=new Float64Array(f),y=0;for(let d=0;d<f;d++)y+=Number(o[d]),p[d]=y;return D.fromData(p,[f],"float64")}let a=t;if(a<0&&(a=n+a),a<0||a>=n)throw new Error(`axis ${t} is out of bounds for array of dimension ${n}`);let i=new Float64Array(r.size),s=e[a],u=[],c=1;for(let f=n-1;f>=0;f--)u.unshift(c),c*=e[f];let l=r.size,m=u[a];for(let f=0;f<l;f++)Math.floor(f/m)%s===0?i[f]=Number(o[f]):i[f]=i[f-m]+Number(o[f]);return D.fromData(i,[...e],"float64")}function kr(r,t){let e=r.shape,n=e.length,o=r.data;if(t===void 0){let f=r.size,p=new Float64Array(f),y=1;for(let d=0;d<f;d++)y*=Number(o[d]),p[d]=y;return D.fromData(p,[f],"float64")}let a=t;if(a<0&&(a=n+a),a<0||a>=n)throw new Error(`axis ${t} is out of bounds for array of dimension ${n}`);let i=new Float64Array(r.size),s=e[a],u=[],c=1;for(let f=n-1;f>=0;f--)u.unshift(c),c*=e[f];let l=r.size,m=u[a];for(let f=0;f<l;f++)Math.floor(f/m)%s===0?i[f]=Number(o[f]):i[f]=i[f-m]*Number(o[f]);return D.fromData(i,[...e],"float64")}function Vr(r,t,e=!1){let n=lr(r,t,e),o=pr(r,t,e);if(typeof n=="number"&&typeof o=="number")return n-o;let a=n,i=o,s=a.data,u=i.data,c=new Float64Array(a.size);for(let l=0;l<a.size;l++)c[l]=Number(s[l])-Number(u[l]);return D.fromData(c,[...a.shape],"float64")}function Pr(r,t,e=!1){return G(r,.5,t,e)}function Fr(r,t,e,n=!1){return G(r,t/100,e,n)}function G(r,t,e,n=!1){if(t<0||t>1)throw new Error("Quantile must be between 0 and 1");let o=r.shape,a=o.length,i=r.data;if(e===void 0){let p=[];for(let b=0;b<r.size;b++)p.push(Number(i[b]));p.sort((b,S)=>b-S);let y=p.length,d=t*(y-1),g=Math.floor(d),A=Math.ceil(d);if(g===A)return p[g];let h=d-g;return p[g]*(1-h)+p[A]*h}let s=e;if(s<0&&(s=a+s),s<0||s>=a)throw new Error(`axis ${e} is out of bounds for array of dimension ${a}`);let u=Array.from(o).filter((p,y)=>y!==s);if(u.length===0)return G(r,t);let c=u.reduce((p,y)=>p*y,1),l=o[s],m=new Float64Array(c);for(let p=0;p<c;p++){let y=[];for(let b=0;b<l;b++){let S=T(p,s,b,o),w=U(S,o);y.push(Number(i[w]))}y.sort((b,S)=>b-S);let d=y.length,g=t*(d-1),A=Math.floor(g),h=Math.ceil(g);if(A===h)m[p]=y[A];else{let b=g-A;m[p]=y[A]*(1-b)+y[h]*b}}let f=D.fromData(m,u,"float64");if(n){let p=[...o];return p[s]=1,D.fromData(m,p,"float64")}return f}function mr(r,t,e,n=!1){let o=r.shape,a=o.length,i=r.data;if(e===void 0)return fr(r,t,n);if(t===void 0){let y=0,d=0,g=e.data;for(let A=0;A<r.size;A++){let h=Number(g[A%e.size]);y+=Number(i[A])*h,d+=h}return d===0?NaN:y/d}let s=t;if(s<0&&(s=a+s),s<0||s>=a)throw new Error(`axis ${t} is out of bounds for array of dimension ${a}`);let u=Array.from(o).filter((y,d)=>d!==s);if(u.length===0)return mr(r,void 0,e);let c=u.reduce((y,d)=>y*d,1),l=o[s],m=e.data,f=new Float64Array(c);for(let y=0;y<c;y++){let d=0,g=0;for(let A=0;A<l;A++){let h=T(y,s,A,o),b=U(h,o),S=Number(m[A%e.size]);d+=Number(i[b])*S,g+=S}f[y]=g===0?NaN:d/g}let p=D.fromData(f,u,"float64");if(n){let y=[...o];return y[s]=1,D.fromData(f,y,"float64")}return p}function yr(r,t,e=!1){let n=r.shape,o=n.length,a=r.data;if(t===void 0){let f=0;for(let p=0;p<r.size;p++){let y=Number(a[p]);isNaN(y)||(f+=y)}return f}let i=t;if(i<0&&(i=o+i),i<0||i>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);let s=Array.from(n).filter((f,p)=>p!==i);if(s.length===0)return yr(r);let u=s.reduce((f,p)=>f*p,1),c=n[i],l=new Float64Array(u);for(let f=0;f<u;f++){let p=0;for(let y=0;y<c;y++){let d=T(f,i,y,n),g=U(d,n),A=Number(a[g]);isNaN(A)||(p+=A)}l[f]=p}let m=D.fromData(l,s,"float64");if(e){let f=[...n];return f[i]=1,D.fromData(l,f,"float64")}return m}function dr(r,t,e=!1){let n=r.shape,o=n.length,a=r.data;if(t===void 0){let f=1;for(let p=0;p<r.size;p++){let y=Number(a[p]);isNaN(y)||(f*=y)}return f}let i=t;if(i<0&&(i=o+i),i<0||i>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);let s=Array.from(n).filter((f,p)=>p!==i);if(s.length===0)return dr(r);let u=s.reduce((f,p)=>f*p,1),c=n[i],l=new Float64Array(u);for(let f=0;f<u;f++){let p=1;for(let y=0;y<c;y++){let d=T(f,i,y,n),g=U(d,n),A=Number(a[g]);isNaN(A)||(p*=A)}l[f]=p}let m=D.fromData(l,s,"float64");if(e){let f=[...n];return f[i]=1,D.fromData(l,f,"float64")}return m}function gr(r,t,e=!1){let n=r.shape,o=n.length,a=r.data;if(t===void 0){let f=0,p=0;for(let y=0;y<r.size;y++){let d=Number(a[y]);isNaN(d)||(f+=d,p++)}return p===0?NaN:f/p}let i=t;if(i<0&&(i=o+i),i<0||i>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);let s=Array.from(n).filter((f,p)=>p!==i);if(s.length===0)return gr(r);let u=s.reduce((f,p)=>f*p,1),c=n[i],l=new Float64Array(u);for(let f=0;f<u;f++){let p=0,y=0;for(let d=0;d<c;d++){let g=T(f,i,d,n),A=U(g,n),h=Number(a[A]);isNaN(h)||(p+=h,y++)}l[f]=y===0?NaN:p/y}let m=D.fromData(l,s,"float64");if(e){let f=[...n];return f[i]=1,D.fromData(l,f,"float64")}return m}function K(r,t,e=0,n=!1){let o=r.shape,a=o.length,i=r.data;if(t===void 0){let p=0,y=0;for(let A=0;A<r.size;A++){let h=Number(i[A]);isNaN(h)||(p+=h,y++)}if(y-e<=0)return NaN;let d=p/y,g=0;for(let A=0;A<r.size;A++){let h=Number(i[A]);isNaN(h)||(g+=(h-d)**2)}return g/(y-e)}let s=t;if(s<0&&(s=a+s),s<0||s>=a)throw new Error(`axis ${t} is out of bounds for array of dimension ${a}`);let u=Array.from(o).filter((p,y)=>y!==s);if(u.length===0)return K(r,void 0,e);let c=u.reduce((p,y)=>p*y,1),l=o[s],m=new Float64Array(c);for(let p=0;p<c;p++){let y=0,d=0;for(let h=0;h<l;h++){let b=T(p,s,h,o),S=U(b,o),w=Number(i[S]);isNaN(w)||(y+=w,d++)}if(d-e<=0){m[p]=NaN;continue}let g=y/d,A=0;for(let h=0;h<l;h++){let b=T(p,s,h,o),S=U(b,o),w=Number(i[S]);isNaN(w)||(A+=(w-g)**2)}m[p]=A/(d-e)}let f=D.fromData(m,u,"float64");if(n){let p=[...o];return p[s]=1,D.fromData(m,p,"float64")}return f}function Rr(r,t,e=0,n=!1){let o=K(r,t,e,n);if(typeof o=="number")return Math.sqrt(o);let a=o,i=new Float64Array(a.size);for(let s=0;s<a.size;s++)i[s]=Math.sqrt(Number(a.data[s]));return D.fromData(i,[...a.shape],"float64")}function hr(r,t,e=!1){let n=r.shape,o=n.length,a=r.data;if(t===void 0){let f=1/0;for(let p=0;p<r.size;p++){let y=Number(a[p]);!isNaN(y)&&y<f&&(f=y)}return f===1/0?NaN:f}let i=t;if(i<0&&(i=o+i),i<0||i>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);let s=Array.from(n).filter((f,p)=>p!==i);if(s.length===0)return hr(r);let u=s.reduce((f,p)=>f*p,1),c=n[i],l=new Float64Array(u);for(let f=0;f<u;f++){let p=1/0;for(let y=0;y<c;y++){let d=T(f,i,y,n),g=U(d,n),A=Number(a[g]);!isNaN(A)&&A<p&&(p=A)}l[f]=p===1/0?NaN:p}let m=D.fromData(l,s,"float64");if(e){let f=[...n];return f[i]=1,D.fromData(l,f,"float64")}return m}function Ar(r,t,e=!1){let n=r.shape,o=n.length,a=r.data;if(t===void 0){let f=-1/0;for(let p=0;p<r.size;p++){let y=Number(a[p]);!isNaN(y)&&y>f&&(f=y)}return f===-1/0?NaN:f}let i=t;if(i<0&&(i=o+i),i<0||i>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);let s=Array.from(n).filter((f,p)=>p!==i);if(s.length===0)return Ar(r);let u=s.reduce((f,p)=>f*p,1),c=n[i],l=new Float64Array(u);for(let f=0;f<u;f++){let p=-1/0;for(let y=0;y<c;y++){let d=T(f,i,y,n),g=U(d,n),A=Number(a[g]);!isNaN(A)&&A>p&&(p=A)}l[f]=p===-1/0?NaN:p}let m=D.fromData(l,s,"float64");if(e){let f=[...n];return f[i]=1,D.fromData(l,f,"float64")}return m}function br(r,t){let e=r.shape,n=e.length,o=r.data;if(t===void 0){let l=1/0,m=-1;for(let f=0;f<r.size;f++){let p=Number(o[f]);!isNaN(p)&&p<l&&(l=p,m=f)}return m}let a=t;if(a<0&&(a=n+a),a<0||a>=n)throw new Error(`axis ${t} is out of bounds for array of dimension ${n}`);let i=Array.from(e).filter((l,m)=>m!==a);if(i.length===0)return br(r);let s=i.reduce((l,m)=>l*m,1),u=e[a],c=new Int32Array(s);for(let l=0;l<s;l++){let m=1/0,f=0;for(let p=0;p<u;p++){let y=T(l,a,p,e),d=U(y,e),g=Number(o[d]);!isNaN(g)&&g<m&&(m=g,f=p)}c[l]=f}return D.fromData(c,i,"int32")}function Sr(r,t){let e=r.shape,n=e.length,o=r.data;if(t===void 0){let l=-1/0,m=-1;for(let f=0;f<r.size;f++){let p=Number(o[f]);!isNaN(p)&&p>l&&(l=p,m=f)}return m}let a=t;if(a<0&&(a=n+a),a<0||a>=n)throw new Error(`axis ${t} is out of bounds for array of dimension ${n}`);let i=Array.from(e).filter((l,m)=>m!==a);if(i.length===0)return Sr(r);let s=i.reduce((l,m)=>l*m,1),u=e[a],c=new Int32Array(s);for(let l=0;l<s;l++){let m=-1/0,f=0;for(let p=0;p<u;p++){let y=T(l,a,p,e),d=U(y,e),g=Number(o[d]);!isNaN(g)&&g>m&&(m=g,f=p)}c[l]=f}return D.fromData(c,i,"int32")}function qr(r,t){let e=r.shape,n=e.length,o=r.data;if(t===void 0){let f=r.size,p=new Float64Array(f),y=0;for(let d=0;d<f;d++){let g=Number(o[d]);isNaN(g)||(y+=g),p[d]=y}return D.fromData(p,[f],"float64")}let a=t;if(a<0&&(a=n+a),a<0||a>=n)throw new Error(`axis ${t} is out of bounds for array of dimension ${n}`);let i=new Float64Array(r.size),s=e[a],u=[],c=1;for(let f=n-1;f>=0;f--)u.unshift(c),c*=e[f];let l=r.size,m=u[a];for(let f=0;f<l;f++){let p=Number(o[f]);Math.floor(f/m)%s===0?i[f]=isNaN(p)?0:p:i[f]=i[f-m]+(isNaN(p)?0:p)}return D.fromData(i,[...e],"float64")}function Lr(r,t){let e=r.shape,n=e.length,o=r.data;if(t===void 0){let f=r.size,p=new Float64Array(f),y=1;for(let d=0;d<f;d++){let g=Number(o[d]);isNaN(g)||(y*=g),p[d]=y}return D.fromData(p,[f],"float64")}let a=t;if(a<0&&(a=n+a),a<0||a>=n)throw new Error(`axis ${t} is out of bounds for array of dimension ${n}`);let i=new Float64Array(r.size),s=e[a],u=[],c=1;for(let f=n-1;f>=0;f--)u.unshift(c),c*=e[f];let l=r.size,m=u[a];for(let f=0;f<l;f++){let p=Number(o[f]);Math.floor(f/m)%s===0?i[f]=isNaN(p)?1:p:i[f]=i[f-m]*(isNaN(p)?1:p)}return D.fromData(i,[...e],"float64")}function Dr(r,t,e=!1){let n=r.shape,o=n.length,a=r.data;if(t===void 0){let f=[];for(let d=0;d<r.size;d++){let g=Number(a[d]);isNaN(g)||f.push(g)}if(f.length===0)return NaN;f.sort((d,g)=>d-g);let p=f.length,y=Math.floor(p/2);return p%2===0?(f[y-1]+f[y])/2:f[y]}let i=t;if(i<0&&(i=o+i),i<0||i>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);let s=Array.from(n).filter((f,p)=>p!==i);if(s.length===0)return Dr(r);let u=s.reduce((f,p)=>f*p,1),c=n[i],l=new Float64Array(u);for(let f=0;f<u;f++){let p=[];for(let g=0;g<c;g++){let A=T(f,i,g,n),h=U(A,n),b=Number(a[h]);isNaN(b)||p.push(b)}if(p.length===0){l[f]=NaN;continue}p.sort((g,A)=>g-A);let y=p.length,d=Math.floor(y/2);y%2===0?l[f]=(p[d-1]+p[d])/2:l[f]=p[d]}let m=D.fromData(l,s,"float64");if(e){let f=[...n];return f[i]=1,D.fromData(l,f,"float64")}return m}function V(r,t){let e=r.size,n=r.dtype,o=t.indexOf(-1),a;if(o!==-1){let c=t.reduce((m,f,p)=>p===o?m:m*f,1),l=e/c;if(!Number.isInteger(l))throw new Error(`cannot reshape array of size ${e} into shape ${JSON.stringify(t)}`);a=t.map((m,f)=>f===o?l:m)}else a=t;if(a.reduce((c,l)=>c*l,1)!==e)throw new Error(`cannot reshape array of size ${e} into shape ${JSON.stringify(a)}`);if(r.isCContiguous){let c=r.data;return D.fromData(c,a,n,F(a),0)}let u=r.copy().data;return D.fromData(u,a,n,F(a),0)}function Nr(r){let t=r.size,e=r.dtype,n=_(e);if(!n)throw new Error(`Cannot flatten array with dtype ${e}`);if(r.isCContiguous){let s=r.data.slice(r.offset,r.offset+t);return D.fromData(s,[t],e,[1],0)}let o=new n(t),a=N(e);for(let i=0;i<t;i++){let s=r.iget(i);o[i]=s}return D.fromData(o,[t],e,[1],0)}function tr(r){let t=r.size,e=r.dtype;if(r.isCContiguous){let n=r.data;return D.fromData(n,[t],e,[1],0)}return Nr(r)}function er(r,t){let e=r.shape,n=e.length,o=r.strides,a=r.data,i=r.dtype,s;if(t===void 0)s=Array.from({length:n},(m,f)=>n-1-f);else{if(t.length!==n)throw new Error(`axes must have length ${n}, got ${t.length}`);let m=new Set;for(let f of t){let p=f<0?n+f:f;if(p<0||p>=n)throw new Error(`axis ${f} is out of bounds for array of dimension ${n}`);if(m.has(p))throw new Error("repeated axis in transpose");m.add(p)}s=t.map(f=>f<0?n+f:f)}let u=s.map(m=>e[m]),c=Array.from(o),l=s.map(m=>c[m]);return D.fromData(a,u,i,l,r.offset)}function Mt(r,t){let e=r.shape,n=e.length,o=r.strides,a=r.data,i=r.dtype;if(t===void 0){let s=[],u=[];for(let c=0;c<n;c++)e[c]!==1&&(s.push(e[c]),u.push(o[c]));return s.length===0&&(s.push(1),u.push(1)),D.fromData(a,s,i,u,r.offset)}else{let s=t<0?n+t:t;if(s<0||s>=n)throw new Error(`axis ${t} is out of bounds for array of dimension ${n}`);if(e[s]!==1)throw new Error(`cannot select an axis which has size not equal to one (axis ${t} has size ${e[s]})`);let u=[],c=[];for(let l=0;l<n;l++)l!==s&&(u.push(e[l]),c.push(o[l]));return D.fromData(a,u,i,c,r.offset)}}function rr(r,t){let e=r.shape,n=e.length,o=r.strides,a=r.data,i=r.dtype,s=t;if(s<0&&(s=n+t+1),s<0||s>n)throw new Error(`axis ${t} is out of bounds for array of dimension ${n+1}`);let u=[...Array.from(e)];u.splice(s,0,1);let c=[...Array.from(o)],l=s<n?o[s]*(e[s]||1):1;return c.splice(s,0,l),D.fromData(a,u,i,c,r.offset)}function Ct(r,t,e){let n=r.shape,o=n.length,a=r.strides,i=r.data,s=r.dtype,u=t<0?o+t:t,c=e<0?o+e:e;if(u<0||u>=o)throw new Error(`axis1 ${t} is out of bounds for array of dimension ${o}`);if(c<0||c>=o)throw new Error(`axis2 ${e} is out of bounds for array of dimension ${o}`);if(u===c)return D.fromData(i,Array.from(n),s,Array.from(a),r.offset);let l=Array.from(n),m=Array.from(a);return[l[u],l[c]]=[l[c],l[u]],[m[u],m[c]]=[m[c],m[u]],D.fromData(i,l,s,m,r.offset)}function jr(r,t,e){let n=r.ndim,o=Array.isArray(t)?t:[t],a=Array.isArray(e)?e:[e];if(o.length!==a.length)throw new Error("source and destination must have the same number of elements");let i=o.map(c=>{let l=c<0?n+c:c;if(l<0||l>=n)throw new Error(`source axis ${c} is out of bounds for array of dimension ${n}`);return l}),s=a.map(c=>{let l=c<0?n+c:c;if(l<0||l>=n)throw new Error(`destination axis ${c} is out of bounds for array of dimension ${n}`);return l});if(new Set(i).size!==i.length)throw new Error("repeated axis in source");if(new Set(s).size!==s.length)throw new Error("repeated axis in destination");let u=[];for(let c=0;c<n;c++)i.includes(c)||u.push(c);for(let c=0;c<i.length;c++){let l=s[c];u.splice(l,0,i[c])}return er(r,u)}function W(r,t=0){if(r.length===0)throw new Error("need at least one array to concatenate");if(r.length===1)return r[0].copy();let e=r[0],n=e.ndim,o=e.dtype,a=t<0?n+t:t;if(a<0||a>=n)throw new Error(`axis ${t} is out of bounds for array of dimension ${n}`);for(let p=1;p<r.length;p++){let y=r[p];if(y.ndim!==n)throw new Error("all the input arrays must have same number of dimensions");for(let d=0;d<n;d++)if(d!==a&&y.shape[d]!==e.shape[d])throw new Error("all the input array dimensions except for the concatenation axis must match exactly")}let i=Array.from(e.shape),s=e.shape[a];for(let p=1;p<r.length;p++)s+=r[p].shape[a];i[a]=s;let u=i.reduce((p,y)=>p*y,1),c=_(o);if(!c)throw new Error(`Cannot concatenate arrays with dtype ${o}`);let l=new c(u),m=F(i),f=0;for(let p of r){let y=p.shape[a];In(p,l,i,m,a,f,o),f+=y}return D.fromData(l,i,o)}function In(r,t,e,n,o,a,i){let s=r.shape,u=s.length,c=r.size,l=i==="int64"||i==="uint64";if(o===0&&r.isCContiguous&&u>0){let p=a*n[0],y=r.data,d=r.offset,g=d+c;t.set(y.subarray(d,g),p);return}if(o===1&&u===2&&r.isCContiguous){let p=s[0],y=s[1],d=e[1],g=r.data,A=r.offset;for(let h=0;h<p;h++){let b=A+h*y,S=h*d+a;t.set(g.subarray(b,b+y),S)}return}let m=new Array(u).fill(0),f=a*n[o];for(let p=0;p<c;p++){let y=r.iget(p),d=f;for(let g=0;g<u;g++)d+=m[g]*n[g];t[d]=y;for(let g=u-1;g>=0&&(m[g]++,!(m[g]<s[g]));g--)m[g]=0}}function kt(r,t=0){if(r.length===0)throw new Error("need at least one array to stack");let e=r[0],n=e.shape,o=e.ndim,a=t<0?o+1+t:t;if(a<0||a>o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o+1}`);for(let s=1;s<r.length;s++){let u=r[s];if(u.ndim!==o)throw new Error("all input arrays must have the same shape");for(let c=0;c<o;c++)if(u.shape[c]!==n[c])throw new Error("all input arrays must have the same shape")}let i=r.map(s=>rr(s,a));return W(i,a)}function Vt(r){if(r.length===0)throw new Error("need at least one array to stack");let t=r.map(e=>e.ndim===1?V(e,[1,e.shape[0]]):e);return W(t,0)}function Zr(r){if(r.length===0)throw new Error("need at least one array to stack");return r.every(e=>e.ndim===1)?W(r,0):W(r,1)}function Pt(r){if(r.length===0)throw new Error("need at least one array to stack");let t=r.map(e=>e.ndim===1?V(rr(V(e,[1,e.shape[0]]),2),[1,e.shape[0],1]):e.ndim===2?rr(e,2):e);return W(t,2)}function Ft(r,t,e=0){let n=r.shape,o=n.length,a=e<0?o+e:e;if(a<0||a>=o)throw new Error(`axis ${e} is out of bounds for array of dimension ${o}`);let i=n[a],s;if(typeof t=="number"){if(i%t!==0)throw new Error("array split does not result in an equal division");let u=i/t;s=[];for(let c=1;c<t;c++)s.push(c*u)}else s=t;return Rt(r,s,a)}function nr(r,t,e=0){let n=r.shape,o=n.length,a=e<0?o+e:e;if(a<0||a>=o)throw new Error(`axis ${e} is out of bounds for array of dimension ${o}`);let i=n[a],s;if(typeof t=="number"){let u=t,c=Math.floor(i/u),l=i%u;s=[];let m=0;for(let f=0;f<u-1;f++)m+=c+(f<l?1:0),s.push(m)}else s=t;return Rt(r,s,a)}function Rt(r,t,e){let n=r.shape,o=n[e],a=[0,...t,o],i=[];for(let s=0;s<a.length-1;s++){let u=a[s],c=a[s+1];if(u>c)throw new Error("split indices must be in ascending order");let l=Array.from(n);l[e]=c-u;let m=r.offset+u*r.strides[e];i.push(D.fromData(r.data,l,r.dtype,Array.from(r.strides),m))}return i}function qt(r,t){if(r.ndim<2)throw new Error("vsplit only works on arrays of 2 or more dimensions");return nr(r,t,0)}function Lt(r,t){if(r.ndim<1)throw new Error("hsplit only works on arrays of 1 or more dimensions");let e=r.ndim===1?0:1;return nr(r,t,e)}function jt(r,t){let e=r.shape,n=e.length,o=r.dtype,a=Array.isArray(t)?t:[t],i=Math.max(n,a.length),s=new Array(i).fill(1),u=new Array(i).fill(1);for(let h=0;h<n;h++)s[i-n+h]=e[h];for(let h=0;h<a.length;h++)u[i-a.length+h]=a[h];let c=s.map((h,b)=>h*u[b]),l=c.reduce((h,b)=>h*b,1),m=_(o);if(!m)throw new Error(`Cannot tile array with dtype ${o}`);let f=new m(l),p=F(c),y=r;n<i&&(y=V(r,s));let d=o==="int64"||o==="uint64",g=y.strides,A=new Array(i).fill(0);for(let h=0;h<l;h++){let b=y.offset;for(let x=0;x<i;x++){let z=A[x]%s[x];b+=z*g[x]}let S=y.data[b],w=0;for(let x=0;x<i;x++)w+=A[x]*p[x];f[w]=S;for(let x=i-1;x>=0&&(A[x]++,!(A[x]<c[x]));x--)A[x]=0}return D.fromData(f,c,o)}function Zt(r,t,e){let n=r.shape,o=n.length,a=r.dtype,i=r.size;if(e===void 0){let h=i,b=Array.isArray(t)?t:new Array(h).fill(t);if(b.length!==h)throw new Error(`operands could not be broadcast together with shape (${h},) (${b.length},)`);let S=b.reduce((B,E)=>B+E,0),w=_(a);if(!w)throw new Error(`Cannot repeat array with dtype ${a}`);let x=new w(S),z=0;for(let B=0;B<h;B++){let E=r.iget(B),O=b[B];for(let ir=0;ir<O;ir++)x[z++]=E}return D.fromData(x,[S],a)}let s=e<0?o+e:e;if(s<0||s>=o)throw new Error(`axis ${e} is out of bounds for array of dimension ${o}`);let u=n[s],c=Array.isArray(t)?t:new Array(u).fill(t);if(c.length!==u)throw new Error(`operands could not be broadcast together with shape (${u},) (${c.length},)`);let l=Array.from(n);l[s]=c.reduce((h,b)=>h+b,0);let m=l.reduce((h,b)=>h*b,1),f=_(a);if(!f)throw new Error(`Cannot repeat array with dtype ${a}`);let p=new f(m),y=F(l),d=new Array(o).fill(0),g=a==="int64"||a==="uint64",A=[0];for(let h=0;h<u;h++)A.push(A[h]+c[h]);for(let h=0;h<i;h++){let b=r.iget(h),S=d[s],w=c[S],x=0;for(let E=0;E<o;E++)E!==s&&(x+=d[E]*y[E]);let z=y[s],B=A[S];for(let E=0;E<w;E++){let O=x+(B+E)*z;p[O]=b}for(let E=o-1;E>=0&&(d[E]++,!(d[E]<n[E]));E--)d[E]=0}return D.fromData(p,l,a)}function Wt(r,t){let e=r.shape,n=e.length,o=r.dtype,a=r.size,i;if(t===void 0)i=new Set(Array.from({length:n},(f,p)=>p));else if(typeof t=="number"){let f=t<0?n+t:t;if(f<0||f>=n)throw new Error(`axis ${t} is out of bounds for array of dimension ${n}`);i=new Set([f])}else i=new Set(t.map(f=>{let p=f<0?n+f:f;if(p<0||p>=n)throw new Error(`axis ${f} is out of bounds for array of dimension ${n}`);return p}));let s=_(o);if(!s)throw new Error(`Cannot flip array with dtype ${o}`);let u=new s(a),c=N(o);if(n===1&&r.isCContiguous){let f=r.data,p=r.offset;for(let y=0;y<a;y++)u[y]=f[p+a-1-y];return D.fromData(u,[...e],o)}if(n===2&&r.isCContiguous){let f=e[0],p=e[1],y=r.data,d=r.offset;if(i.size===2){for(let g=0;g<a;g++)u[g]=y[d+a-1-g];return D.fromData(u,[...e],o)}if(i.size===1){if(i.has(0)){for(let g=0;g<f;g++){let A=d+(f-1-g)*p,h=g*p;for(let b=0;b<p;b++)u[h+b]=y[A+b]}return D.fromData(u,[...e],o)}else if(i.has(1)){for(let g=0;g<f;g++){let A=d+g*p,h=g*p;for(let b=0;b<p;b++)u[h+b]=y[A+p-1-b]}return D.fromData(u,[...e],o)}}}let l=new Array(n),m=new Array(n).fill(0);for(let f=0;f<a;f++){for(let d=0;d<n;d++)l[d]=i.has(d)?e[d]-1-m[d]:m[d];let p=r.offset;for(let d=0;d<n;d++)p+=l[d]*r.strides[d];let y=r.data[p];u[f]=y;for(let d=n-1;d>=0&&(m[d]++,!(m[d]<e[d]));d--)m[d]=0}return D.fromData(u,[...e],o)}function Ht(r,t=1,e=[0,1]){let n=r.shape,o=n.length,a=r.dtype;if(o<2)throw new Error("Input must be at least 2-D");let i=e[0]<0?o+e[0]:e[0],s=e[1]<0?o+e[1]:e[1];if(i<0||i>=o||s<0||s>=o)throw new Error(`Axes are out of bounds for array of dimension ${o}`);if(i===s)throw new Error("Axes must be different");if(t=(t%4+4)%4,t===0)return r.copy();let u=_(a);if(!u)throw new Error(`Cannot rotate array with dtype ${a}`);let c=[...n];(t===1||t===3)&&([c[i],c[s]]=[c[s],c[i]]);let l=c.reduce((g,A)=>g*A,1),m=new u(l),f=F(c),p=N(a),y=new Array(o).fill(0),d=new Array(o);for(let g=0;g<r.size;g++){for(let w=0;w<o;w++)d[w]=y[w];let A,h;t===1?(A=n[s]-1-y[s],h=y[i]):t===2?(A=n[i]-1-y[i],h=n[s]-1-y[s],d[i]=A,d[s]=h):(A=y[s],h=n[i]-1-y[i]),t!==2&&(d[i]=A,d[s]=h);let b=0;for(let w=0;w<o;w++)b+=d[w]*f[w];let S=r.iget(g);m[b]=S;for(let w=o-1;w>=0&&(y[w]++,!(y[w]<n[w]));w--)y[w]=0}return D.fromData(m,c,a)}function Yt(r,t,e){let n=r.shape,o=n.length,a=r.dtype,i=r.size;if(e===void 0){let y=Array.isArray(t)?t.reduce((b,S)=>b+S,0):t,d=Nr(r),g=_(a);if(!g)throw new Error(`Cannot roll array with dtype ${a}`);let A=new g(i),h=N(a);for(let b=0;b<i;b++){let S=((b-y)%i+i)%i,w=d.iget(S);A[b]=w}return D.fromData(A,[...n],a)}let s=Array.isArray(t)?t:[t],u=Array.isArray(e)?e:[e];if(s.length!==u.length)throw new Error("shift and axis must have the same length");let c=u.map(y=>{let d=y<0?o+y:y;if(d<0||d>=o)throw new Error(`axis ${y} is out of bounds for array of dimension ${o}`);return d}),l=_(a);if(!l)throw new Error(`Cannot roll array with dtype ${a}`);let m=new l(i),f=N(a),p=new Array(o).fill(0);for(let y=0;y<i;y++){let d=[...p];for(let h=0;h<c.length;h++){let b=c[h],S=n[b],w=s[h];d[b]=((d[b]-w)%S+S)%S}let g=r.offset;for(let h=0;h<o;h++)g+=d[h]*r.strides[h];let A=r.data[g];m[y]=A;for(let h=o-1;h>=0&&(p[h]++,!(p[h]<n[h]));h--)p[h]=0}return D.fromData(m,[...n],a)}function Gt(r,t,e=0){let n=r.ndim,o=t<0?n+t:t;if(o<0||o>=n)throw new Error(`axis ${t} is out of bounds for array of dimension ${n}`);let a=e<0?n+e:e;if(a<0||a>n)throw new Error(`start ${e} is out of bounds`);return o<a&&a--,o===a?D.fromData(r.data,Array.from(r.shape),r.dtype,Array.from(r.strides),r.offset):jr(r,o,a)}function Jt(r,t){if(r.ndim<3)throw new Error("dsplit only works on arrays of 3 or more dimensions");return nr(r,t,2)}function Qt(r){if(r.length===0)throw new Error("need at least one array to stack");let t=r.map(e=>e.ndim===1?V(e,[e.shape[0],1]):e);return Zr(t)}function Xt(r,t){let e=r.dtype,n=t.reduce((u,c)=>u*c,1),o=r.size,a=_(e);if(!a)throw new Error(`Cannot resize array with dtype ${e}`);let i=new a(n),s=N(e);for(let u=0;u<n;u++){let c=u%o,l=r.iget(c);i[u]=l}return D.fromData(i,t,e)}function Kt(r){return r.map(t=>t.ndim===0?V(t,[1]):t)}function re(r){return r.map(t=>t.ndim===0?V(t,[1,1]):t.ndim===1?V(t,[1,t.shape[0]]):t)}function te(r){return r.map(t=>t.ndim===0?V(t,[1,1,1]):t.ndim===1?V(t,[1,t.shape[0],1]):t.ndim===2?V(t,[t.shape[0],t.shape[1],1]):t)}function zn(r,t,e,n,o,a,i,s,u,c,l,m,f,p){if(m===0)for(let A=0;A<n*o;A++)f[A]=0;else if(m!==1)for(let A=0;A<n*o;A++)f[A]=(f[A]??0)*m;let y=r==="row-major",d=t==="transpose",g=e==="transpose";if(y&&!d&&!g)for(let A=0;A<n;A++)for(let h=0;h<o;h++){let b=0;for(let S=0;S<a;S++)b+=(s[A*u+S]??0)*(c[S*l+h]??0);f[A*p+h]=(f[A*p+h]??0)+i*b}else if(y&&d&&!g)for(let A=0;A<n;A++)for(let h=0;h<o;h++){let b=0;for(let S=0;S<a;S++)b+=(s[S*u+A]??0)*(c[S*l+h]??0);f[A*p+h]=(f[A*p+h]??0)+i*b}else if(y&&!d&&g)for(let A=0;A<n;A++)for(let h=0;h<o;h++){let b=0;for(let S=0;S<a;S++)b+=(s[A*u+S]??0)*(c[h*l+S]??0);f[A*p+h]=(f[A*p+h]??0)+i*b}else if(y&&d&&g)for(let A=0;A<n;A++)for(let h=0;h<o;h++){let b=0;for(let S=0;S<a;S++)b+=(s[S*u+A]??0)*(c[h*l+S]??0);f[A*p+h]=(f[A*p+h]??0)+i*b}else if(!y&&!d&&!g)for(let A=0;A<n;A++)for(let h=0;h<o;h++){let b=0;for(let S=0;S<a;S++)b+=(s[S*u+A]??0)*(c[h*l+S]??0);f[h*p+A]=(f[h*p+A]??0)+i*b}else if(!y&&d&&!g)for(let A=0;A<n;A++)for(let h=0;h<o;h++){let b=0;for(let S=0;S<a;S++)b+=(s[A*u+S]??0)*(c[h*l+S]??0);f[h*p+A]=(f[h*p+A]??0)+i*b}else if(!y&&!d&&g)for(let A=0;A<n;A++)for(let h=0;h<o;h++){let b=0;for(let S=0;S<a;S++)b+=(s[S*u+A]??0)*(c[S*l+h]??0);f[h*p+A]=(f[h*p+A]??0)+i*b}else for(let A=0;A<n;A++)for(let h=0;h<o;h++){let b=0;for(let S=0;S<a;S++)b+=(s[A*u+S]??0)*(c[S*l+h]??0);f[h*p+A]=(f[h*p+A]??0)+i*b}}function Hr(r,t){let e=r.ndim,n=t.ndim;if(e===0||n===0){let o=e===0?r.get():null,a=n===0?t.get():null;if(e===0&&n===0)return typeof o=="bigint"&&typeof a=="bigint"?o*a:Number(o)*Number(a);if(e===0){let i=v(r.dtype,t.dtype),s=D.zeros([...t.shape],i);for(let u=0;u<t.size;u++){let c=t.data[u+t.offset];typeof o=="bigint"&&typeof c=="bigint"?s.data[u]=o*c:s.data[u]=Number(o)*Number(c)}return s}else{let i=v(r.dtype,t.dtype),s=D.zeros([...r.shape],i);for(let u=0;u<r.size;u++){let c=r.data[u+r.offset];typeof c=="bigint"&&typeof a=="bigint"?s.data[u]=c*a:s.data[u]=Number(c)*Number(a)}return s}}if(e===1&&n===1){if(r.shape[0]!==t.shape[0])throw new Error(`dot: incompatible shapes (${r.shape[0]},) and (${t.shape[0]},)`);let o=r.shape[0],a=0;for(let i=0;i<o;i++){let s=r.get(i),u=t.get(i);typeof s=="bigint"&&typeof u=="bigint"?a=Number(a)+Number(s*u):a+=Number(s)*Number(u)}return a}if(e===2&&n===2)return H(r,t);if(e===2&&n===1){let[o,a]=r.shape,i=t.shape[0];if(a!==i)throw new Error(`dot: incompatible shapes (${o},${a}) and (${i},)`);let s=v(r.dtype,t.dtype),u=D.zeros([o],s);for(let c=0;c<o;c++){let l=0;for(let m=0;m<a;m++){let f=r.get(c,m),p=t.get(m);typeof f=="bigint"&&typeof p=="bigint"?l=Number(l)+Number(f*p):l+=Number(f)*Number(p)}u.set([c],l)}return u}if(e===1&&n===2){let o=r.shape[0],[a,i]=t.shape;if(o!==a)throw new Error(`dot: incompatible shapes (${o},) and (${a},${i})`);let s=v(r.dtype,t.dtype),u=D.zeros([i],s);for(let c=0;c<i;c++){let l=0;for(let m=0;m<o;m++){let f=r.get(m),p=t.get(m,c);typeof f=="bigint"&&typeof p=="bigint"?l=Number(l)+Number(f*p):l+=Number(f)*Number(p)}u.set([c],l)}return u}if(e>2&&n===1){let o=r.shape[e-1],a=t.shape[0];if(o!==a)throw new Error(`dot: incompatible shapes ${JSON.stringify(r.shape)} and (${a},)`);let i=[...r.shape.slice(0,-1)],s=v(r.dtype,t.dtype),u=D.zeros(i,s),c=i.reduce((l,m)=>l*m,1);for(let l=0;l<c;l++){let m=0,f=l,p=[];for(let y=i.length-1;y>=0;y--)p[y]=f%i[y],f=Math.floor(f/i[y]);for(let y=0;y<o;y++){let d=[...p,y],g=r.get(...d),A=t.get(y);typeof g=="bigint"&&typeof A=="bigint"?m=Number(m)+Number(g*A):m+=Number(g)*Number(A)}u.set(p,m)}return u}if(e===1&&n>2){let o=r.shape[0],a=1,i=t.shape[a];if(o!==i)throw new Error(`dot: incompatible shapes (${o},) and ${JSON.stringify(t.shape)}`);let s=[...t.shape.slice(0,a),...t.shape.slice(a+1)],u=v(r.dtype,t.dtype),c=D.zeros(s,u),l=s.reduce((m,f)=>m*f,1);for(let m=0;m<l;m++){let f=m,p=[];for(let A=s.length-1;A>=0;A--)p[A]=f%s[A],f=Math.floor(f/s[A]);let y=p.slice(0,a),d=p.slice(a),g=0;for(let A=0;A<o;A++){let h=r.get(A),b=[...y,A,...d],S=t.get(...b);typeof h=="bigint"&&typeof S=="bigint"?g=Number(g)+Number(h*S):g+=Number(h)*Number(S)}c.set(p,g)}return c}if(e>=2&&n>=2&&!(e===2&&n===2)){let o=r.shape[e-1],a=t.shape[n-2];if(o!==a)throw new Error(`dot: incompatible shapes ${JSON.stringify(r.shape)} and ${JSON.stringify(t.shape)}`);let i=[...r.shape.slice(0,-1),...t.shape.slice(0,-2),t.shape[n-1]],s=v(r.dtype,t.dtype),u=D.zeros(i,s),c=r.shape.slice(0,-1).reduce((p,y)=>p*y,1),l=t.shape.slice(0,-2).reduce((p,y)=>p*y,1),m=t.shape[n-1],f=o;for(let p=0;p<c;p++)for(let y=0;y<l;y++)for(let d=0;d<m;d++){let g=0;for(let h=0;h<f;h++){let b=p*f+h,S=r.data[b+r.offset],w=y*f*m+h*m+d,x=t.data[w+t.offset];typeof S=="bigint"&&typeof x=="bigint"?g=Number(g)+Number(S*x):g+=Number(S)*Number(x)}let A=p*l*m+y*m+d;u.data[A]=g}return u}throw new Error(`dot: unexpected combination of dimensions ${e}D \xB7 ${n}D`)}function H(r,t){if(r.ndim!==2||t.ndim!==2)throw new Error("matmul requires 2D arrays");let[e=0,n=0]=r.shape,[o=0,a=0]=t.shape;if(n!==o)throw new Error(`matmul shape mismatch: (${e},${n}) @ (${o},${a})`);let i=v(r.dtype,t.dtype),s=i.startsWith("int")||i.startsWith("uint")||i==="bool"?"float64":i;if(s!=="float64")throw new Error(`matmul currently only supports float64, got ${s}`);let u=r.dtype==="float64"?r.data:Float64Array.from(Array.from(r.data).map(Number)),c=t.dtype==="float64"?t.data:Float64Array.from(Array.from(t.data).map(Number));r.offset>0&&(u=u.subarray(r.offset)),t.offset>0&&(c=c.subarray(t.offset));let[l=0,m=0]=r.strides,[f=0,p=0]=t.strides,y=m>l,d=p>f,g=y?"transpose":"no-transpose",A=d?"transpose":"no-transpose",h,b;y?h=m:h=l,d?b=p:b=f;let S=D.zeros([e,a],"float64");return zn("row-major",g,A,e,a,n,1,u,h,c,b,0,S.data,a),S}function oe(r){if(r.ndim!==2)throw new Error(`trace requires 2D array, got ${r.ndim}D`);let[t=0,e=0]=r.shape,n=Math.min(t,e),o=0;for(let a=0;a<n;a++){let i=r.get(a,a);typeof i=="bigint"?o=(typeof o=="bigint"?o:BigInt(o))+i:o=(typeof o=="bigint"?Number(o):o)+i}return o}function ne(r,t){return er(r,t)}function ae(r,t){let e=r.ndim,n=t.ndim,o=r.shape[e-1],a=t.shape[n-1];if(o!==a)throw new Error(`inner: incompatible shapes - last dimensions ${o} and ${a} don't match`);if(e===1&&n===1)return Hr(r,t);let i=[...r.shape.slice(0,-1),...t.shape.slice(0,-1)],s=v(r.dtype,t.dtype),u=D.zeros(i,s),c=e===1?1:r.shape.slice(0,-1).reduce((f,p)=>f*p,1),l=n===1?1:t.shape.slice(0,-1).reduce((f,p)=>f*p,1),m=o;for(let f=0;f<c;f++)for(let p=0;p<l;p++){let y=0;for(let g=0;g<m;g++){let A=e===1?g:f*m+g,h=n===1?g:p*m+g,b=r.data[A+r.offset],S=t.data[h+t.offset];typeof b=="bigint"&&typeof S=="bigint"?y=Number(y)+Number(b*S):y+=Number(b)*Number(S)}if(i.length===0)return y;let d=c===1?p:f*l+p;u.data[d]=y}return u}function Yr(r,t){let e=r.ndim===1?r:tr(r),n=t.ndim===1?t:tr(t),o=e.size,a=n.size,i=v(r.dtype,t.dtype),s=D.zeros([o,a],i);for(let u=0;u<o;u++)for(let c=0;c<a;c++){let l=e.get(u),m=n.get(c),f;typeof l=="bigint"&&typeof m=="bigint"?f=l*m:f=Number(l)*Number(m),s.set([u,c],f)}return s}function se(r,t,e){let n,o;if(typeof e=="number"){let f=e;if(f<0)throw new Error("tensordot: axes must be non-negative");if(f>r.ndim||f>t.ndim)throw new Error("tensordot: axes exceeds array dimensions");n=Array.from({length:f},(p,y)=>r.ndim-f+y),o=Array.from({length:f},(p,y)=>y)}else if([n,o]=e,n.length!==o.length)throw new Error("tensordot: axes lists must have same length");for(let f=0;f<n.length;f++){let p=n[f],y=o[f];if(p<0||p>=r.ndim||y<0||y>=t.ndim)throw new Error("tensordot: axis out of bounds");if(r.shape[p]!==t.shape[y])throw new Error(`tensordot: shape mismatch on axes ${p} and ${y}: ${r.shape[p]} != ${t.shape[y]}`)}let a=[],i=[];for(let f=0;f<r.ndim;f++)n.includes(f)||a.push(f);for(let f=0;f<t.ndim;f++)o.includes(f)||i.push(f);let s=[...a.map(f=>r.shape[f]),...i.map(f=>t.shape[f])];if(s.length===0){let f=0,p=n.map(y=>r.shape[y]).reduce((y,d)=>y*d,1);for(let y=0;y<p;y++){let d=y,g=new Array(n.length);for(let w=n.length-1;w>=0;w--){let x=n[w];g[w]=d%r.shape[x],d=Math.floor(d/r.shape[x])}let A=new Array(r.ndim),h=new Array(t.ndim);for(let w=0;w<n.length;w++)A[n[w]]=g[w];for(let w=0;w<o.length;w++)h[o[w]]=g[w];let b=r.get(...A),S=t.get(...h);typeof b=="bigint"&&typeof S=="bigint"?f=Number(f)+Number(b*S):f+=Number(b)*Number(S)}return f}let u=v(r.dtype,t.dtype),c=D.zeros(s,u),l=s.reduce((f,p)=>f*p,1),m=n.map(f=>r.shape[f]).reduce((f,p)=>f*p,1);for(let f=0;f<l;f++){let p=f,y=[];for(let h=s.length-1;h>=0;h--)y[h]=p%s[h],p=Math.floor(p/s[h]);let d=y.slice(0,a.length),g=y.slice(a.length),A=0;for(let h=0;h<m;h++){p=h;let b=[];for(let B=n.length-1;B>=0;B--){let E=n[B];b[B]=p%r.shape[E],p=Math.floor(p/r.shape[E])}let S=new Array(r.ndim),w=new Array(t.ndim);for(let B=0;B<a.length;B++)S[a[B]]=d[B];for(let B=0;B<i.length;B++)w[i[B]]=g[B];for(let B=0;B<n.length;B++)S[n[B]]=b[B],w[o[B]]=b[B];let x=r.get(...S),z=t.get(...w);typeof x=="bigint"&&typeof z=="bigint"?A=Number(A)+Number(x*z):A+=Number(x)*Number(z)}c.set(y,A)}return c}function ie(r,t=0,e=0,n=1){let o=r.shape,a=o.length;if(a<2)throw new Error("diagonal requires an array of at least two dimensions");let i=e<0?a+e:e,s=n<0?a+n:n;if(i<0||i>=a||s<0||s>=a)throw new Error("axis out of bounds");if(i===s)throw new Error("axis1 and axis2 cannot be the same");let u=o[i],c=o[s],l;t>=0?l=Math.max(0,Math.min(u,c-t)):l=Math.max(0,Math.min(u+t,c));let m=[];for(let d=0;d<a;d++)d!==i&&d!==s&&m.push(o[d]);m.push(l);let f=D.zeros(m,r.dtype),p=o.filter((d,g)=>g!==i&&g!==s),y=p.reduce((d,g)=>d*g,1);for(let d=0;d<y;d++){let g=d,A=[];for(let h=p.length-1;h>=0;h--)A.unshift(g%p[h]),g=Math.floor(g/p[h]);for(let h=0;h<l;h++){let b=new Array(a),S=0;for(let z=0;z<a;z++)z===i?b[z]=t>=0?h:h-t:z===s?b[z]=t>=0?h+t:h:b[z]=A[S++];let w=[...A,h],x=r.get(...b);f.set(w,x)}}return f}function ue(r,...t){let e=r.indexOf("->"),n,o;e===-1?(n=r,o=Bn(n)):(n=r.slice(0,e),o=r.slice(e+2));let a=n.split(",").map(d=>d.trim());if(a.length!==t.length)throw new Error(`einsum: expected ${a.length} operands, got ${t.length}`);let i=new Map;for(let d=0;d<t.length;d++){let g=a[d],A=t[d];if(g.length!==A.ndim)throw new Error(`einsum: operand ${d} has ${A.ndim} dimensions but subscript '${g}' has ${g.length} indices`);for(let h=0;h<g.length;h++){let b=g[h],S=A.shape[h];if(i.has(b)){if(i.get(b)!==S)throw new Error(`einsum: size mismatch for index '${b}': ${i.get(b)} vs ${S}`)}else i.set(b,S)}}for(let d of o)if(!i.has(d))throw new Error(`einsum: output subscript contains unknown index '${d}'`);let s=new Set(o),u=new Set;for(let d of a)for(let g of d)u.add(g);let c=[];for(let d of u)s.has(d)||c.push(d);if(t.length===2&&a.length===2){let[d,g]=a,[A,h]=t;if(d.length===2&&g.length===2&&o.length===2&&A.ndim===2&&h.ndim===2){let[b,S]=[d[0],d[1]],[w,x]=[g[0],g[1]],[z,B]=[o[0],o[1]];if(b===z&&x===B&&S===w&&c.length===1&&c[0]===S||b===z&&x===B&&S===w&&c.length===1&&c[0]===S)return H(A,h);if(S===z&&x===B&&b===w&&c.length===1&&c[0]===b){let E=ne(A);return H(E,h)}if(b===z&&w===B&&S===x&&c.length===1&&c[0]===S){let E=ne(h);return H(A,E)}}if(d.length===1&&g.length===1&&d===g&&o.length===0&&A.ndim===1&&h.ndim===1)return Wr(t,a,c,i);if(d&&g&&d.length===1&&g.length===1&&o.length===2&&o===d+g&&c.length===0&&A.ndim===1&&h.ndim===1)return Yr(A,h)}if(t.length===1&&a[0].length===2&&o.length===0){let d=a[0];if(d[0]===d[1]&&t[0].ndim===2)return Wr(t,a,c,i)}let l=Array.from(o).map(d=>i.get(d));if(l.length===0)return Wr(t,a,c,i);let m=t[0].dtype;for(let d=1;d<t.length;d++)m=v(m,t[d].dtype);let f=D.zeros(l,m),p=l.reduce((d,g)=>d*g,1),y=1;for(let d of c)y*=i.get(d);for(let d=0;d<p;d++){let g=_n(d,l),A=new Map;for(let b=0;b<o.length;b++)A.set(o[b],g[b]);let h=0;for(let b=0;b<y;b++){let S=b;for(let x=c.length-1;x>=0;x--){let z=c[x],B=i.get(z);A.set(z,S%B),S=Math.floor(S/B)}let w=1;for(let x=0;x<t.length;x++){let z=t[x],B=a[x],E=[];for(let ir of B)E.push(A.get(ir));let O=z.get(...E);w*=Number(O)}h+=w}f.set(g,h)}return f}function Bn(r){let t=new Map,e=r.split(",");for(let o of e)for(let a of o.trim())t.set(a,(t.get(a)||0)+1);let n=[];for(let[o,a]of t)a===1&&n.push(o);return n.sort().join("")}function Wr(r,t,e,n){let o=1;for(let i of e)o*=n.get(i);let a=0;for(let i=0;i<o;i++){let s=new Map,u=i;for(let l=e.length-1;l>=0;l--){let m=e[l],f=n.get(m);s.set(m,u%f),u=Math.floor(u/f)}let c=1;for(let l=0;l<r.length;l++){let m=r[l],f=t[l],p=[];for(let d of f)p.push(s.get(d));let y=m.get(...p);c*=Number(y)}a+=c}return a}function _n(r,t){let e=new Array(t.length),n=r;for(let o=t.length-1;o>=0;o--)e[o]=n%t[o],n=Math.floor(n/t[o]);return e}function ce(r,t){let e=r.shape,n=t.shape,o=e.length,a=n.length,i=v(r.dtype,t.dtype),s=Math.max(o,a),u=new Array(s),c=new Array(s).fill(1),l=new Array(s).fill(1);for(let y=0;y<o;y++)c[s-o+y]=e[y];for(let y=0;y<a;y++)l[s-a+y]=n[y];for(let y=0;y<s;y++)u[y]=c[y]*l[y];let m=D.zeros(u,i),f=e.reduce((y,d)=>y*d,1),p=n.reduce((y,d)=>y*d,1);for(let y=0;y<f;y++){let d=y,g=new Array(o);for(let b=o-1;b>=0;b--)g[b]=d%e[b],d=Math.floor(d/e[b]);let A=new Array(s).fill(0);for(let b=0;b<o;b++)A[s-o+b]=g[b];let h=r.get(...g);for(let b=0;b<p;b++){let S=b,w=new Array(a);for(let O=a-1;O>=0;O--)w[O]=S%n[O],S=Math.floor(S/n[O]);let x=new Array(s).fill(0);for(let O=0;O<a;O++)x[s-a+O]=w[O];let z=t.get(...w),B=new Array(s);for(let O=0;O<s;O++)B[O]=A[O]*l[O]+x[O];let E=typeof h=="bigint"||typeof z=="bigint"?BigInt(Number(h))*BigInt(Number(z)):Number(h)*Number(z);m.set(B,E)}}return m}function fe(r){return M(r,Math.sqrt,!1)}function le(r,t){return typeof t=="number"?Un(r,t):P(r,t,Math.pow,"power")}function Un(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,u=e!=="float32"&&e!=="float64"&&(t<0||!Number.isInteger(t))?"float64":e,c=D.zeros(n,u),l=c.data;if(N(e))if(N(u)&&Number.isInteger(t)&&t>=0){let m=o,f=l;for(let p=0;p<a;p++)f[p]=m[p]**BigInt(t)}else for(let m=0;m<a;m++)l[m]=Math.pow(Number(o[m]),t);else for(let m=0;m<a;m++)l[m]=Math.pow(Number(o[m]),t);return c}function pe(r){return M(r,Math.sin,!1)}function me(r){return M(r,Math.cos,!1)}function ye(r){return M(r,Math.tan,!1)}function de(r){return M(r,Math.asin,!1)}function ge(r){return M(r,Math.acos,!1)}function he(r){return M(r,Math.atan,!1)}function Ae(r,t){return typeof t=="number"?$n(r,t):On(r,t)}function On(r,t){let e=Array.from(r.shape),n=r.size,o=r.dtype,a=t.dtype,i=o==="float32"&&a==="float32"?"float32":"float64",s=D.zeros(e,i),u=s.data;for(let c=0;c<n;c++){let l=(N(o),Number(r.data[c])),m=(N(a),Number(t.data[c]));u[c]=Math.atan2(l,m)}return s}function $n(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,i=e==="float32"?"float32":"float64",s=D.zeros(n,i),u=s.data;if(N(e))for(let c=0;c<a;c++)u[c]=Math.atan2(Number(o[c]),t);else for(let c=0;c<a;c++)u[c]=Math.atan2(Number(o[c]),t);return s}function be(r,t){return typeof t=="number"?Mn(r,t):vn(r,t)}function vn(r,t){let e=Array.from(r.shape),n=r.size,o=r.dtype,a=t.dtype,i=o==="float32"&&a==="float32"?"float32":"float64",s=D.zeros(e,i),u=s.data;for(let c=0;c<n;c++){let l=(N(o),Number(r.data[c])),m=(N(a),Number(t.data[c]));u[c]=Math.hypot(l,m)}return s}function Mn(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,i=e==="float32"?"float32":"float64",s=D.zeros(n,i),u=s.data;if(N(e))for(let c=0;c<a;c++)u[c]=Math.hypot(Number(o[c]),t);else for(let c=0;c<a;c++)u[c]=Math.hypot(Number(o[c]),t);return s}function Se(r){let t=180/Math.PI;return M(r,e=>e*t,!1)}function De(r){let t=Math.PI/180;return M(r,e=>e*t,!1)}function Ne(r){return M(r,Math.sinh,!1)}function we(r){return M(r,Math.cosh,!1)}function xe(r){return M(r,Math.tanh,!1)}function Ie(r){return M(r,Math.asinh,!1)}function ze(r){return M(r,Math.acosh,!1)}function Be(r){return M(r,Math.atanh,!1)}function Gr(r,t){let e=r.shape,n=e.length,o=t.length;if(o<n)throw new Error("input operand has more dimensions than allowed by the axis remapping");let a=Z([Array.from(e),t]);if(a===null)throw new Error(`operands could not be broadcast together with shape (${e.join(",")}) (${t.join(",")})`);for(let i=0;i<o;i++)if(a[i]!==t[i])throw new Error(`operands could not be broadcast together with shape (${e.join(",")}) (${t.join(",")})`);return j(r,t)}function _e(r){if(r.length===0)return[];if(r.length===1)return[r[0]];let t=r.map(n=>Array.from(n.shape)),e=Z(t);if(e===null)throw new Error(`operands could not be broadcast together with shapes ${t.map(n=>`(${n.join(",")})`).join(" ")}`);return r.map(n=>j(n,e))}function Ee(r,t,e){let n=r.shape,o=n.length,a=r.dtype;if(e===void 0){let y=r.size;for(let h of t){let b=h<0?y+h:h;if(b<0||b>=y)throw new Error(`index ${h} is out of bounds for axis 0 with size ${y}`)}let d=t.length,g=_(a);if(!g)throw new Error(`Cannot take from array with dtype ${a}`);let A=new g(d);for(let h=0;h<d;h++){let b=t[h];b<0&&(b=y+b);let S=r.iget(b);N(a),A[h]=S}return D.fromData(A,[d],a)}let i=e<0?o+e:e;if(i<0||i>=o)throw new Error(`axis ${e} is out of bounds for array of dimension ${o}`);let s=n[i];for(let y of t){let d=y<0?s+y:y;if(d<0||d>=s)throw new Error(`index ${y} is out of bounds for axis ${i} with size ${s}`)}let u=Array.from(n);u[i]=t.length;let c=u.reduce((y,d)=>y*d,1),l=_(a);if(!l)throw new Error(`Cannot take from array with dtype ${a}`);let m=new l(c),f=F(u),p=new Array(o).fill(0);for(let y=0;y<c;y++){let d=[...p],g=p[i],A=t[g];A<0&&(A=s+A),d[i]=A;let h=r.get(...d),b=0;for(let S=0;S<o;S++)b+=p[S]*f[S];N(a),m[b]=h;for(let S=o-1;S>=0&&(p[S]++,!(p[S]<u[S]));S--)p[S]=0}return D.fromData(m,u,a)}function Ue(r,t,e){let n=r.size,o=r.dtype,a;if(typeof e=="number"||typeof e=="bigint")a=new Array(t.length).fill(e);else{a=[];for(let i=0;i<e.size;i++)a.push(e.iget(i));if(a.length===1)a=new Array(t.length).fill(a[0]);else if(a.length!==t.length){let i=[...a];a=[];for(let s=0;s<t.length;s++)a.push(i[s%i.length])}}for(let i=0;i<t.length;i++){let s=t[i];if(s<0&&(s=n+s),s<0||s>=n)throw new Error(`index ${t[i]} is out of bounds for axis 0 with size ${n}`);let u=a[i];N(o)?typeof u!="bigint"&&(u=BigInt(Math.round(Number(u)))):typeof u=="bigint"&&(u=Number(u)),r.iset(s,u)}}function Te(r,t){if(t.length===0)throw new Error("choices cannot be empty");let e=r.shape,n=t.length,o=t[0].dtype,a=t.map(f=>Array.from(f.shape));a.unshift(Array.from(e));let i=Z(a);if(i===null)throw new Error("operands could not be broadcast together");let s=j(r,i),u=t.map(f=>j(f,i)),c=i.reduce((f,p)=>f*p,1),l=_(o);if(!l)throw new Error(`Cannot choose with dtype ${o}`);let m=new l(c);for(let f=0;f<c;f++){let p=Number(s.iget(f));if(p<0||p>=n)throw new Error(`index ${p} is out of bounds for axis 0 with size ${n}`);let y=u[p].iget(f);N(o),m[f]=y}return D.fromData(m,i,o)}function Oe(r,t,e=!1){if(r.ndim!==t.ndim)return!1;for(let o=0;o<r.ndim;o++)if(r.shape[o]!==t.shape[o])return!1;let n=r.size;for(let o=0;o<n;o++){let a=r.iget(o),i=t.iget(o);if(e){let s=typeof a=="number"&&Number.isNaN(a),u=typeof i=="number"&&Number.isNaN(i);if(s&&u)continue}if(a!==i)return!1}return!0}var I=class r{constructor(t,e){this._storage=t,this._base=e}get storage(){return this._storage}static _fromStorage(t,e){return new r(t,e)}get shape(){return this._storage.shape}get ndim(){return this._storage.ndim}get size(){return this._storage.size}get dtype(){return this._storage.dtype}get data(){return this._storage.data}get strides(){return this._storage.strides}get flags(){return{C_CONTIGUOUS:this._storage.isCContiguous,F_CONTIGUOUS:this._storage.isFContiguous,OWNDATA:this._base===void 0}}get base(){return this._base??null}get(t){if(t.length!==this.ndim)throw new Error(`Index has ${t.length} dimensions, but array has ${this.ndim} dimensions`);let e=t.map((n,o)=>{let a=n;if(a<0&&(a=this.shape[o]+a),a<0||a>=this.shape[o])throw new Error(`Index ${n} is out of bounds for axis ${o} with size ${this.shape[o]}`);return a});return this._storage.get(...e)}set(t,e){if(t.length!==this.ndim)throw new Error(`Index has ${t.length} dimensions, but array has ${this.ndim} dimensions`);let n=t.map((i,s)=>{let u=i;if(u<0&&(u=this.shape[s]+u),u<0||u>=this.shape[s])throw new Error(`Index ${i} is out of bounds for axis ${s} with size ${this.shape[s]}`);return u}),o=this.dtype,a;N(o)?a=typeof e=="bigint"?e:BigInt(Math.round(e)):o==="bool"?a=e?1:0:a=Number(e),this._storage.set(n,a)}copy(){return new r(this._storage.copy())}astype(t,e=!0){let n=this.dtype;if(n===t&&!e)return this;if(n===t&&e)return this.copy();let o=Array.from(this.shape),a=this.size,i=_(t);if(!i)throw new Error(`Cannot convert to dtype ${t}`);let s=new i(a),u=this.data;if(N(n)&&!N(t)){let l=u;if(t==="bool")for(let m=0;m<a;m++)s[m]=l[m]!==BigInt(0)?1:0;else for(let m=0;m<a;m++)s[m]=Number(l[m])}else if(!N(n)&&N(t)){let l=u;for(let m=0;m<a;m++)s[m]=BigInt(Math.round(Number(l[m])))}else if(t==="bool"){let l=u;for(let m=0;m<a;m++)s[m]=l[m]!==0?1:0}else if(n==="bool"&&!N(t)){let l=u;for(let m=0;m<a;m++)s[m]=l[m]}else if(!N(n)&&!N(t)){let l=u;for(let m=0;m<a;m++)s[m]=l[m]}else{let l=u;for(let m=0;m<a;m++)s[m]=l[m]}let c=D.fromData(s,o,t);return new r(c)}add(t){let e=typeof t=="number"?t:t._storage,n=lt(this._storage,e);return r._fromStorage(n)}subtract(t){let e=typeof t=="number"?t:t._storage,n=pt(this._storage,e);return r._fromStorage(n)}multiply(t){let e=typeof t=="number"?t:t._storage,n=mt(this._storage,e);return r._fromStorage(n)}divide(t){let e=typeof t=="number"?t:t._storage,n=yt(this._storage,e);return r._fromStorage(n)}mod(t){let e=typeof t=="number"?t:t._storage,n=cr(this._storage,e);return r._fromStorage(n)}floor_divide(t){let e=typeof t=="number"?t:t._storage,n=Br(this._storage,e);return r._fromStorage(n)}positive(){let t=At(this._storage);return r._fromStorage(t)}reciprocal(){let t=bt(this._storage);return r._fromStorage(t)}sqrt(){let t=fe(this._storage);return r._fromStorage(t)}power(t){let e=typeof t=="number"?t:t._storage,n=le(this._storage,e);return r._fromStorage(n)}absolute(){let t=dt(this._storage);return r._fromStorage(t)}negative(){let t=gt(this._storage);return r._fromStorage(t)}sign(){let t=ht(this._storage);return r._fromStorage(t)}sin(){let t=pe(this._storage);return r._fromStorage(t)}cos(){let t=me(this._storage);return r._fromStorage(t)}tan(){let t=ye(this._storage);return r._fromStorage(t)}arcsin(){let t=de(this._storage);return r._fromStorage(t)}arccos(){let t=ge(this._storage);return r._fromStorage(t)}arctan(){let t=he(this._storage);return r._fromStorage(t)}arctan2(t){let e=typeof t=="number"?t:t._storage,n=Ae(this._storage,e);return r._fromStorage(n)}hypot(t){let e=typeof t=="number"?t:t._storage,n=be(this._storage,e);return r._fromStorage(n)}degrees(){let t=Se(this._storage);return r._fromStorage(t)}radians(){let t=De(this._storage);return r._fromStorage(t)}sinh(){let t=Ne(this._storage);return r._fromStorage(t)}cosh(){let t=we(this._storage);return r._fromStorage(t)}tanh(){let t=xe(this._storage);return r._fromStorage(t)}arcsinh(){let t=Ie(this._storage);return r._fromStorage(t)}arccosh(){let t=ze(this._storage);return r._fromStorage(t)}arctanh(){let t=Be(this._storage);return r._fromStorage(t)}greater(t){let e=typeof t=="number"?t:t._storage,n=zt(this._storage,e);return r._fromStorage(n)}greater_equal(t){let e=typeof t=="number"?t:t._storage,n=Bt(this._storage,e);return r._fromStorage(n)}less(t){let e=typeof t=="number"?t:t._storage,n=_t(this._storage,e);return r._fromStorage(n)}less_equal(t){let e=typeof t=="number"?t:t._storage,n=Et(this._storage,e);return r._fromStorage(n)}equal(t){let e=typeof t=="number"?t:t._storage,n=Ut(this._storage,e);return r._fromStorage(n)}not_equal(t){let e=typeof t=="number"?t:t._storage,n=Tt(this._storage,e);return r._fromStorage(n)}isclose(t,e=1e-5,n=1e-8){let o=typeof t=="number"?t:t._storage,a=Er(this._storage,o,e,n);return r._fromStorage(a)}allclose(t,e=1e-5,n=1e-8){let o=typeof t=="number"?t:t._storage;return Ot(this._storage,o,e,n)}sum(t,e=!1){let n=X(this._storage,t,e);return typeof n=="number"?n:r._fromStorage(n)}mean(t,e=!1){let n=fr(this._storage,t,e);return typeof n=="number"?n:r._fromStorage(n)}max(t,e=!1){let n=lr(this._storage,t,e);return typeof n=="number"?n:r._fromStorage(n)}min(t,e=!1){let n=pr(this._storage,t,e);return typeof n=="number"?n:r._fromStorage(n)}prod(t,e=!1){let n=Ur(this._storage,t,e);return typeof n=="number"?n:r._fromStorage(n)}argmin(t){let e=Tr(this._storage,t);return typeof e=="number"?e:r._fromStorage(e)}argmax(t){let e=Or(this._storage,t);return typeof e=="number"?e:r._fromStorage(e)}var(t,e=0,n=!1){let o=$r(this._storage,t,e,n);return typeof o=="number"?o:r._fromStorage(o)}std(t,e=0,n=!1){let o=vt(this._storage,t,e,n);return typeof o=="number"?o:r._fromStorage(o)}all(t,e=!1){let n=vr(this._storage,t,e);return typeof n=="boolean"?n:r._fromStorage(n)}any(t,e=!1){let n=Mr(this._storage,t,e);return typeof n=="boolean"?n:r._fromStorage(n)}cumsum(t){return r._fromStorage(Cr(this._storage,t))}cumprod(t){return r._fromStorage(kr(this._storage,t))}ptp(t,e=!1){let n=Vr(this._storage,t,e);return typeof n=="number"?n:r._fromStorage(n)}median(t,e=!1){let n=Pr(this._storage,t,e);return typeof n=="number"?n:r._fromStorage(n)}percentile(t,e,n=!1){let o=Fr(this._storage,t,e,n);return typeof o=="number"?o:r._fromStorage(o)}quantile(t,e,n=!1){let o=G(this._storage,t,e,n);return typeof o=="number"?o:r._fromStorage(o)}average(t,e){let n=mr(this._storage,e,t?.storage);return typeof n=="number"?n:r._fromStorage(n)}nansum(t,e=!1){let n=yr(this._storage,t,e);return typeof n=="number"?n:r._fromStorage(n)}nanprod(t,e=!1){let n=dr(this._storage,t,e);return typeof n=="number"?n:r._fromStorage(n)}nanmean(t,e=!1){let n=gr(this._storage,t,e);return typeof n=="number"?n:r._fromStorage(n)}nanvar(t,e=0,n=!1){let o=K(this._storage,t,e,n);return typeof o=="number"?o:r._fromStorage(o)}nanstd(t,e=0,n=!1){let o=Rr(this._storage,t,e,n);return typeof o=="number"?o:r._fromStorage(o)}nanmin(t,e=!1){let n=hr(this._storage,t,e);return typeof n=="number"?n:r._fromStorage(n)}nanmax(t,e=!1){let n=Ar(this._storage,t,e);return typeof n=="number"?n:r._fromStorage(n)}nanargmin(t){let e=br(this._storage,t);return typeof e=="number"?e:r._fromStorage(e)}nanargmax(t){let e=Sr(this._storage,t);return typeof e=="number"?e:r._fromStorage(e)}nancumsum(t){return r._fromStorage(qr(this._storage,t))}nancumprod(t){return r._fromStorage(Lr(this._storage,t))}nanmedian(t,e=!1){let n=Dr(this._storage,t,e);return typeof n=="number"?n:r._fromStorage(n)}reshape(...t){let e=t.length===1&&Array.isArray(t[0])?t[0]:t,n=V(this._storage,e),a=n.data===this.data?this._base??this:void 0;return r._fromStorage(n,a)}flatten(){let t=Nr(this._storage);return r._fromStorage(t)}ravel(){let t=tr(this._storage),n=t.data===this.data?this._base??this:void 0;return r._fromStorage(t,n)}transpose(t){let e=er(this._storage,t),n=this._base??this;return r._fromStorage(e,n)}squeeze(t){let e=Mt(this._storage,t),n=this._base??this;return r._fromStorage(e,n)}expand_dims(t){let e=rr(this._storage,t),n=this._base??this;return r._fromStorage(e,n)}swapaxes(t,e){let n=Ct(this._storage,t,e),o=this._base??this;return r._fromStorage(n,o)}moveaxis(t,e){let n=jr(this._storage,t,e),o=this._base??this;return r._fromStorage(n,o)}repeat(t,e){let n=Zt(this._storage,t,e);return r._fromStorage(n)}take(t,e){let n=Ee(this._storage,t,e);return r._fromStorage(n)}put(t,e){let n=e instanceof r?e._storage:e;Ue(this._storage,t,n)}matmul(t){let e=H(this._storage,t._storage);return r._fromStorage(e)}dot(t){let e=Hr(this._storage,t._storage);return typeof e=="number"||typeof e=="bigint"?e:r._fromStorage(e)}trace(){return oe(this._storage)}inner(t){let e=ae(this._storage,t._storage);return typeof e=="number"||typeof e=="bigint"?e:r._fromStorage(e)}outer(t){let e=Yr(this._storage,t._storage);return r._fromStorage(e)}tensordot(t,e=2){let n=se(this._storage,t._storage,e);return typeof n=="number"||typeof n=="bigint"?n:r._fromStorage(n)}cbrt(){let t=St(this._storage);return r._fromStorage(t)}fabs(){let t=Dt(this._storage);return r._fromStorage(t)}divmod(t){let e=typeof t=="number"?t:t._storage,[n,o]=Nt(this._storage,e);return[r._fromStorage(n),r._fromStorage(o)]}square(){let t=wt(this._storage);return r._fromStorage(t)}remainder(t){let e=typeof t=="number"?t:t._storage,n=xt(this._storage,e);return r._fromStorage(n)}heaviside(t){let e=typeof t=="number"?t:t._storage,n=It(this._storage,e);return r._fromStorage(n)}slice(...t){if(t.length===0)return this;if(t.length>this.ndim)throw new Error(`Too many indices for array: array is ${this.ndim}-dimensional, but ${t.length} were indexed`);let e=t.map((u,c)=>{let l=st(u);return it(l,this.shape[c])});for(;e.length<this.ndim;)e.push({start:0,stop:this.shape[e.length],step:1,isIndex:!1});let n=[],o=[],a=this._storage.offset;for(let u=0;u<e.length;u++){let c=e[u],l=this._storage.strides[u];if(a+=c.start*l,!c.isIndex){let m;c.step>0?m=Math.max(0,Math.ceil((c.stop-c.start)/c.step)):m=Math.max(0,Math.ceil((c.start-c.stop)/Math.abs(c.step))),n.push(m),o.push(l*c.step)}}let i=D.fromData(this._storage.data,n,this._storage.dtype,o,a),s=this._base??this;return new r(i,s)}row(t){if(this.ndim<2)throw new Error("row() requires at least 2 dimensions");return this.slice(String(t),":")}col(t){if(this.ndim<2)throw new Error("col() requires at least 2 dimensions");return this.slice(":",String(t))}rows(t,e){if(this.ndim<2)throw new Error("rows() requires at least 2 dimensions");return this.slice(`${t}:${e}`,":")}cols(t,e){if(this.ndim<2)throw new Error("cols() requires at least 2 dimensions");return this.slice(":",`${t}:${e}`)}toString(){return`NDArray(shape=${JSON.stringify(this.shape)}, dtype=${this.dtype})`}toArray(){if(this.ndim===0)return this._storage.iget(0);let t=this.shape,e=t.length,n=(o,a)=>{if(a===e)return this._storage.get(...o);let i=[];for(let s=0;s<t[a];s++)o[a]=s,i.push(n(o,a+1));return i};return n(new Array(e),0)}};function R(r,t=$){let e=D.zeros(r,t);return new I(e)}function $e(r,t=$){let e=D.ones(r,t);return new I(e)}function Pn(r){let t=[],e=r;for(;Array.isArray(e);)t.push(e.length),e=e[0];return t}function ve(r){return typeof r=="bigint"?!0:Array.isArray(r)?r.some(t=>ve(t)):!1}function Fn(r){let t=[];function e(n){Array.isArray(n)?n.forEach(o=>e(o)):t.push(n)}return e(r),t}function C(r,t){if(r instanceof I)return!t||r.dtype===t?r.copy():r.astype(t);let e=ve(r),n=Pn(r),o=n.reduce((l,m)=>l*m,1),a=t;a||(e?a="int64":a=$);let i=_(a);if(!i)throw new Error(`Cannot create array with dtype ${a}`);let s=new i(o),u=Fn(r);if(N(a)){let l=s;for(let m=0;m<o;m++){let f=u[m];l[m]=typeof f=="bigint"?f:BigInt(Math.round(Number(f)))}}else if(a==="bool"){let l=s;for(let m=0;m<o;m++)l[m]=u[m]?1:0}else{let l=s;for(let m=0;m<o;m++){let f=u[m];l[m]=Number(f)}}let c=D.fromData(s,n,a);return new I(c)}function Rn(r,t,e=1,n=$){let o=r,a=t;if(t===void 0&&(o=0,a=r),a===void 0)throw new Error("stop is required");let i=Math.max(0,Math.ceil((a-o)/e)),s=_(n);if(!s)throw new Error(`Cannot create arange array with dtype ${n}`);let u=new s(i);if(N(n))for(let l=0;l<i;l++)u[l]=BigInt(Math.round(o+l*e));else if(n==="bool")for(let l=0;l<i;l++)u[l]=o+l*e!==0?1:0;else for(let l=0;l<i;l++)u[l]=o+l*e;let c=D.fromData(u,[i],n);return new I(c)}function qn(r,t,e=50,n=$){if(e<0)throw new Error("num must be non-negative");if(e===0)return C([],n);if(e===1)return C([r],n);let o=_(n);if(!o)throw new Error(`Cannot create linspace array with dtype ${n}`);let a=new o(e),i=(t-r)/(e-1);if(N(n))for(let u=0;u<e;u++)a[u]=BigInt(Math.round(r+u*i));else if(n==="bool")for(let u=0;u<e;u++)a[u]=r+u*i!==0?1:0;else for(let u=0;u<e;u++)a[u]=r+u*i;let s=D.fromData(a,[e],n);return new I(s)}function Ln(r,t,e=50,n=10,o=$){if(e<0)throw new Error("num must be non-negative");if(e===0)return C([],o);if(e===1)return C([Math.pow(n,r)],o);let a=_(o);if(!a)throw new Error(`Cannot create logspace array with dtype ${o}`);let i=new a(e),s=(t-r)/(e-1);if(N(o))for(let c=0;c<e;c++){let l=r+c*s;i[c]=BigInt(Math.round(Math.pow(n,l)))}else if(o==="bool")for(let c=0;c<e;c++){let l=r+c*s;i[c]=Math.pow(n,l)!==0?1:0}else for(let c=0;c<e;c++){let l=r+c*s;i[c]=Math.pow(n,l)}let u=D.fromData(i,[e],o);return new I(u)}function jn(r,t,e=50,n=$){if(e<0)throw new Error("num must be non-negative");if(r===0||t===0)throw new Error("Geometric sequence cannot include zero");if(e===0)return C([],n);if(e===1)return C([r],n);let o=Math.sign(r),a=Math.sign(t);if(o!==a)throw new Error("Geometric sequence cannot contain both positive and negative values");let i=_(n);if(!i)throw new Error(`Cannot create geomspace array with dtype ${n}`);let s=new i(e),u=Math.log(Math.abs(r)),l=(Math.log(Math.abs(t))-u)/(e-1);if(N(n))for(let f=0;f<e;f++){let p=o*Math.exp(u+f*l);s[f]=BigInt(Math.round(p))}else if(n==="bool")for(let f=0;f<e;f++){let p=o*Math.exp(u+f*l);s[f]=p!==0?1:0}else for(let f=0;f<e;f++){let p=o*Math.exp(u+f*l);s[f]=p}let m=D.fromData(s,[e],n);return new I(m)}function Me(r,t,e=0,n=$){let o=t??r,a=R([r,o],n),i=a.data;if(N(n)){let s=i;for(let u=0;u<r;u++){let c=u+e;c>=0&&c<o&&(s[u*o+c]=BigInt(1))}}else{let s=i;for(let u=0;u<r;u++){let c=u+e;c>=0&&c<o&&(s[u*o+c]=1)}}return a}function Ce(r,t=$){return R(r,t)}function ke(r,t,e){let n=e;n||(typeof t=="bigint"?n="int64":typeof t=="boolean"?n="bool":Number.isInteger(t)?n="int32":n=$);let o=_(n);if(!o)throw new Error(`Cannot create full array with dtype ${n}`);let a=r.reduce((u,c)=>u*c,1),i=new o(a);if(N(n)){let u=typeof t=="bigint"?t:BigInt(Math.round(Number(t)));i.fill(u)}else n==="bool"?i.fill(t?1:0):i.fill(Number(t));let s=D.fromData(i,r,n);return new I(s)}function Zn(r,t=$){return Me(r,r,0,t)}function wr(r,t){return r instanceof I?!t||r.dtype===t?r:r.astype(t):C(r,t)}function Wn(r){return r.copy()}function Hn(r,t){return R(Array.from(r.shape),t??r.dtype)}function Yn(r,t){return $e(Array.from(r.shape),t??r.dtype)}function Gn(r,t){return Ce(Array.from(r.shape),t??r.dtype)}function Jn(r,t,e){return ke(Array.from(r.shape),t,e??r.dtype)}function Qn(r,t){return wr(r,t)}function Xn(r,t){let e=wr(r,t);return e.flags.C_CONTIGUOUS?e:e.copy()}function Kn(r,t){return wr(r,t).copy()}function Ve(r,t=0){if(r.ndim===1){let e=r.size,n=e+Math.abs(t),o=R([n,n],r.dtype);for(let a=0;a<e;a++){let i=t>=0?a:a-t,s=t>=0?a+t:a;o.set([i,s],r.get([a]))}return o}else if(r.ndim===2){let[e,n]=r.shape,o,a,i;if(t>=0?(o=0,a=t,i=Math.min(e,n-t)):(o=-t,a=0,i=Math.min(e+t,n)),i<=0)return R([0],r.dtype);let s=_(r.dtype),u=new s(i);for(let l=0;l<i;l++){let m=r.get([o+l,a+l]);N(r.dtype)?u[l]=typeof m=="bigint"?m:BigInt(m):u[l]=m}let c=D.fromData(u,[i],r.dtype);return new I(c)}else throw new Error("Input must be 1-D or 2-D")}function ro(r,t=0){let e=r.flatten();return Ve(e,t)}function to(r,t,e=$){let n=t.reduce((c,l)=>c*l,1),o=_(e);if(!o)throw new Error(`Cannot create array with dtype ${e}`);let a=new o(n),i=t.length,s=new Array(i).fill(0);for(let c=0;c<n;c++){let l=r(...s);N(e)?a[c]=typeof l=="bigint"?l:BigInt(Number(l)):e==="bool"?a[c]=l?1:0:a[c]=Number(l);for(let m=i-1;m>=0&&(s[m]++,!(s[m]<t[m]));m--)s[m]=0}let u=D.fromData(a,t,e);return new I(u)}function eo(...r){let t=[],e="xy";for(let s of r)s instanceof I?t.push(s):typeof s=="object"&&"indexing"in s&&(e=s.indexing||"xy");if(t.length===0)return[];if(t.length===1)return[t[0].copy()];let n=t.map(s=>s.size);e==="xy"&&t.length>=2&&(t=[t[1],t[0],...t.slice(2)],[n[0],n[1]]=[n[1],n[0]]);let o=n,a=o.length,i=[];for(let s=0;s<t.length;s++){let u=t[s],c=u.size,l=new Array(a).fill(1);l[s]=c;let m=u.reshape(...l),f=Gr(m.storage,o),p=I._fromStorage(f.copy());i.push(p)}return e==="xy"&&i.length>=2&&([i[0],i[1]]=[i[1],i[0]]),i}function no(r,t,e=0,n=$){let o=t??r,a=R([r,o],n);for(let i=0;i<r;i++)for(let s=0;s<=i+e&&s<o;s++)s>=0&&a.set([i,s],1);return a}function oo(r,t=0){if(r.ndim<2)throw new Error("Input must have at least 2 dimensions");let e=r.copy(),n=e.shape,o=n[n.length-2],a=n[n.length-1],i=n.slice(0,-2).reduce((s,u)=>s*u,1);for(let s=0;s<i;s++)for(let u=0;u<o;u++)for(let c=0;c<a;c++)if(c>u+t){let l=[],m=s;for(let f=n.length-3;f>=0;f--)l.unshift(m%n[f]),m=Math.floor(m/n[f]);l.push(u,c),e.set(l,0)}return e}function ao(r,t=0){if(r.ndim<2)throw new Error("Input must have at least 2 dimensions");let e=r.copy(),n=e.shape,o=n[n.length-2],a=n[n.length-1],i=n.slice(0,-2).reduce((s,u)=>s*u,1);for(let s=0;s<i;s++)for(let u=0;u<o;u++)for(let c=0;c<a;c++)if(c<u+t){let l=[],m=s;for(let f=n.length-3;f>=0;f--)l.unshift(m%n[f]),m=Math.floor(m/n[f]);l.push(u,c),e.set(l,0)}return e}function so(r,t,e=!1){if(r.ndim!==1)throw new Error("Input must be 1-D");let n=r.size,o=t??n;if(o<0)throw new Error("N must be non-negative");let a=R([n,o],r.dtype);for(let i=0;i<n;i++){let s=r.get([i]);for(let u=0;u<o;u++){let c=e?u:o-1-u;a.set([i,u],Math.pow(s,c))}}return a}function io(r,t=$,e=-1,n=0){let o,a=n;r instanceof ArrayBuffer?o=r:(o=r.buffer,a+=r.byteOffset);let i=lo(t),s=o.byteLength-a,u=Math.floor(s/i),c=e<0?u:Math.min(e,u);if(c<=0)return C([],t);let l=_(t);if(!l)throw new Error(`Unsupported dtype: ${t}`);let m=new l(o,a,c),f=D.fromData(m,[c],t);return new I(f)}function uo(r,t=$,e=-1){let n=[],o=0;for(let a of r){if(e>=0&&o>=e)break;n.push(a),o++}return C(n,t)}function co(r,t=$,e=-1){let n=[],o=0;for(let a of r){if(e>=0&&o>=e)break;n.push(a),o++}return C(n,t)}function fo(r,t=$,e=-1,n=""){let o;n===""?o=r.trim().split(/\s+/):o=r.split(n);let a=[],i=0;for(let s of o){if(e>=0&&i>=e)break;let u=s.trim();u!==""&&(N(t)?a.push(BigInt(u)):a.push(parseFloat(u)),i++)}return C(a,t)}function lo(r){switch(r){case"int8":case"uint8":case"bool":return 1;case"int16":case"uint16":return 2;case"int32":case"uint32":case"float32":return 4;case"int64":case"uint64":case"float64":return 8;default:return 8}}function po(r){return r.sqrt()}function mo(r,t){return r.power(t)}function yo(r){return r.absolute()}function go(r){return r.negative()}function ho(r){return r.sign()}function Ao(r,t){return r.mod(t)}function bo(r,t){return r.floor_divide(t)}function So(r){return r.positive()}function Do(r){return r.reciprocal()}function No(r,t){return r.dot(t)}function wo(r){return r.trace()}function xo(r,t=0,e=0,n=1){let o=ie(r.storage,t,e,n);return I._fromStorage(o)}function Io(r,t){let e=ce(r.storage,t.storage);return I._fromStorage(e)}function zo(r,t){return r.transpose(t)}function Bo(r,t){return r.inner(t)}function _o(r,t){return r.outer(t)}function Eo(r,t,e=2){return r.tensordot(t,e)}function Uo(r){return r.sin()}function To(r){return r.cos()}function Oo(r){return r.tan()}function $o(r){return r.arcsin()}function vo(r){return r.arccos()}function Mo(r){return r.arctan()}function Co(r,t){return r.arctan2(t)}function ko(r,t){return r.hypot(t)}function Vo(r){return r.degrees()}function Po(r){return r.radians()}function Fo(r){return r.radians()}function Ro(r){return r.degrees()}function qo(r){return r.sinh()}function Lo(r){return r.cosh()}function jo(r){return r.tanh()}function Zo(r){return r.arcsinh()}function Wo(r){return r.arccosh()}function Ho(r){return r.arctanh()}function Yo(r,t,e){return r.swapaxes(t,e)}function Go(r,t,e){return r.moveaxis(t,e)}function J(r,t=0){if(r.length===0)throw new Error("need at least one array to concatenate");let e=r.map(o=>o.storage),n=W(e,t);return I._fromStorage(n)}function Jo(r,t=0){if(r.length===0)throw new Error("need at least one array to stack");let e=r.map(o=>o.storage),n=kt(e,t);return I._fromStorage(n)}function Pe(r){if(r.length===0)throw new Error("need at least one array to stack");let t=r.map(n=>n.storage),e=Vt(t);return I._fromStorage(e)}function Qo(r){if(r.length===0)throw new Error("need at least one array to stack");let t=r.map(n=>n.storage),e=Zr(t);return I._fromStorage(e)}function Xo(r){if(r.length===0)throw new Error("need at least one array to stack");let t=r.map(n=>n.storage),e=Pt(t);return I._fromStorage(e)}function Ko(r,t,e=0){return Ft(r.storage,t,e).map(o=>I._fromStorage(o,r.base??r))}function ra(r,t,e=0){return nr(r.storage,t,e).map(o=>I._fromStorage(o,r.base??r))}function ta(r,t){return qt(r.storage,t).map(n=>I._fromStorage(n,r.base??r))}function ea(r,t){return Lt(r.storage,t).map(n=>I._fromStorage(n,r.base??r))}function na(r,t){let e=jt(r.storage,t);return I._fromStorage(e)}function oa(r,t,e){return r.repeat(t,e)}function aa(r){return r.ravel()}function sa(r,t){return r.reshape(...t)}function ia(r,t){return r.squeeze(t)}function ua(r,t){return r.expand_dims(t)}function Jr(r,t){let e=Wt(r.storage,t);return I._fromStorage(e)}function ca(r){if(r.ndim<2)throw new Error("Input must be at least 2-D");return Jr(r,1)}function fa(r){if(r.ndim<2)throw new Error("Input must be at least 2-D");return Jr(r,0)}function la(r,t=1,e=[0,1]){let n=Ht(r.storage,t,e);return I._fromStorage(n)}function pa(r,t,e){let n=Yt(r.storage,t,e);return I._fromStorage(n)}function ma(r,t,e=0){let n=Gt(r.storage,t,e);return I._fromStorage(n,r.base??r)}function ya(...r){let t=r.map(o=>o.storage),n=Kt(t).map((o,a)=>o===t[a]?r[a]:I._fromStorage(o));return n.length===1?n[0]:n}function da(...r){let t=r.map(o=>o.storage),n=re(t).map((o,a)=>o===t[a]?r[a]:I._fromStorage(o));return n.length===1?n[0]:n}function ga(...r){let t=r.map(o=>o.storage),n=te(t).map((o,a)=>o===t[a]?r[a]:I._fromStorage(o));return n.length===1?n[0]:n}function ha(r,t){return Jt(r.storage,t).map(n=>I._fromStorage(n,r.base??r))}function Aa(r){if(r.length===0)throw new Error("need at least one array to stack");let t=r.map(n=>n.storage),e=Qt(t);return I._fromStorage(e)}function ba(r){return Pe(r)}function Sa(r,t){let e=Xt(r.storage,t);return I._fromStorage(e)}function Da(r,t,e){let n=t instanceof I?t:C(t,r.dtype);if(e===void 0){let o=r.flatten(),a=n.flatten();return J([o,a])}return J([r,n],e)}function Na(r,t,e){let n=r.dtype;if(e===void 0){let p=r.flatten(),d=(Array.isArray(t)?t:[t]).map(S=>S<0?p.size+S:S),g=[];for(let S=0;S<p.size;S++)d.includes(S)||g.push(S);let A=_(n),h=new A(g.length);for(let S=0;S<g.length;S++){let w=p.get([g[S]]);N(n)?h[S]=typeof w=="bigint"?w:BigInt(w):h[S]=w}let b=D.fromData(h,[g.length],n);return new I(b)}let o=r.shape,a=o.length,i=e<0?a+e:e;if(i<0||i>=a)throw new Error(`axis ${e} is out of bounds for array of dimension ${a}`);let s=o[i],u=Array.isArray(t)?t:[t],c=new Set(u.map(p=>p<0?s+p:p)),l=[],m=0;for(let p=0;p<=s;p++)(c.has(p)||p===s)&&(p>m&&l.push([m,p]),m=p+1);if(l.length===0){let p=[...o];return p[i]=0,R(p,n)}let f=[];for(let[p,y]of l){let d=o.map(()=>":");d[i]=`${p}:${y}`,f.push(r.slice(...d))}return J(f,i)}function wa(r,t,e,n){let o=e instanceof I?e:C(e,r.dtype);if(n===void 0){let m=r.flatten(),f=o.flatten(),p=t<0?m.size+t:t;if(p<0||p>m.size)throw new Error(`index ${t} is out of bounds for array of size ${m.size}`);let y=p>0?m.slice(`0:${p}`):null,d=p<m.size?m.slice(`${p}:`):null,g=[];return y&&g.push(y),g.push(f),d&&g.push(d),J(g)}let a=r.shape,i=a.length,s=n<0?i+n:n;if(s<0||s>=i)throw new Error(`axis ${n} is out of bounds for array of dimension ${i}`);let u=a[s],c=t<0?u+t:t;if(c<0||c>u)throw new Error(`index ${t} is out of bounds for axis ${n} with size ${u}`);let l=[];if(c>0){let m=a.map(()=>":");m[s]=`0:${c}`,l.push(r.slice(...m))}if(l.push(o),c<u){let m=a.map(()=>":");m[s]=`${c}:`,l.push(r.slice(...m))}return J(l,s)}function xa(r,t,e="constant",n=0){let o=r.shape,a=o.length,i=r.dtype,s;if(typeof t=="number"?s=o.map(()=>[t,t]):Array.isArray(t)&&typeof t[0]=="number"?s=o.map(()=>t):s=t,s.length!==a)throw new Error(`pad_width must have ${a} elements`);let u=o.map((d,g)=>d+s[g][0]+s[g][1]),c=u.reduce((d,g)=>d*g,1),l=_(i),m=new l(c),f=N(i);e==="constant"&&(f?m.fill(BigInt(n)):m.fill(n));let p=new Array(a).fill(0);for(let d=0;d<c;d++){let g=!0,A=[];for(let b=0;b<a;b++){let[S]=s[b],w=p[b]-S;if(w<0||w>=o[b]){g=!1;break}A.push(w)}let h;if(g)h=r.get(A);else if(e==="constant"){for(let b=a-1;b>=0&&(p[b]++,!(p[b]<u[b]));b--)p[b]=0;continue}else{let b=[];for(let S=0;S<a;S++){let[w]=s[S],x=p[S]-w,z=o[S];x<0?e==="edge"?x=0:e==="reflect"?(x=-x,x>=z&&(x=z-1)):e==="symmetric"?(x=-x-1,x>=z&&(x=z-1),x<0&&(x=0)):e==="wrap"&&(x=(x%z+z)%z):x>=z&&(e==="edge"?x=z-1:e==="reflect"?(x=2*z-x-2,x<0&&(x=0)):e==="symmetric"?(x=2*z-x-1,x<0&&(x=0)):e==="wrap"&&(x=x%z)),b.push(Math.max(0,Math.min(z-1,x)))}h=r.get(b)}f?m[d]=typeof h=="bigint"?h:BigInt(Number(h)):m[d]=Number(h);for(let b=a-1;b>=0&&(p[b]++,!(p[b]<u[b]));b--)p[b]=0}let y=D.fromData(m,u,i);return new I(y)}function Ia(r,t){let e=Gr(r.storage,t);return I._fromStorage(e,r.base??r)}function za(...r){let t=r.map(n=>n.storage);return _e(t).map((n,o)=>I._fromStorage(n,r[o].base??r[o]))}function Ba(...r){return _r(...r)}function _a(r,t,e){return r.take(t,e)}function Ea(r,t,e){r.put(t,e)}function Ua(r,t){let e=t.map(o=>o.storage),n=Te(r.storage,e);return I._fromStorage(n)}function Ta(r,t,e=!1){return Oe(r.storage,t.storage,e)}function Oa(r,t){return $t(r.storage,t.storage)}function $a(r,t){return I._fromStorage(Cr(r.storage,t))}function va(r,t){return I._fromStorage(kr(r.storage,t))}function Ma(r,t,e=!1){let n=Vr(r.storage,t,e);return typeof n=="number"?n:I._fromStorage(n)}function Ca(r,t,e=!1){let n=Pr(r.storage,t,e);return typeof n=="number"?n:I._fromStorage(n)}function ka(r,t,e,n=!1){let o=Fr(r.storage,t,e,n);return typeof o=="number"?o:I._fromStorage(o)}function Va(r,t,e,n=!1){let o=G(r.storage,t,e,n);return typeof o=="number"?o:I._fromStorage(o)}function Pa(r,t,e,n=!1){let o=e?e.storage:void 0,a=mr(r.storage,t,o,n);return typeof a=="number"?a:I._fromStorage(a)}function Fa(r,t,e=!1){let n=yr(r.storage,t,e);return typeof n=="number"?n:I._fromStorage(n)}function Ra(r,t,e=!1){let n=dr(r.storage,t,e);return typeof n=="number"?n:I._fromStorage(n)}function qa(r,t,e=!1){let n=gr(r.storage,t,e);return typeof n=="number"?n:I._fromStorage(n)}function La(r,t,e=0,n=!1){let o=K(r.storage,t,e,n);return typeof o=="number"?o:I._fromStorage(o)}function ja(r,t,e=0,n=!1){let o=Rr(r.storage,t,e,n);return typeof o=="number"?o:I._fromStorage(o)}function Za(r,t,e=!1){let n=hr(r.storage,t,e);return typeof n=="number"?n:I._fromStorage(n)}function Wa(r,t,e=!1){let n=Ar(r.storage,t,e);return typeof n=="number"?n:I._fromStorage(n)}function Ha(r,t){let e=br(r.storage,t);return typeof e=="number"?e:I._fromStorage(e)}function Ya(r,t){let e=Sr(r.storage,t);return typeof e=="number"?e:I._fromStorage(e)}function Ga(r,t){return I._fromStorage(qr(r.storage,t))}function Ja(r,t){return I._fromStorage(Lr(r.storage,t))}function Qa(r,t,e=!1){let n=Dr(r.storage,t,e);return typeof n=="number"?n:I._fromStorage(n)}function Xa(r){return r.cbrt()}function Ka(r){return r.fabs()}function rs(r,t){return r.divmod(t)}function ts(r){return r.square()}function es(r,t){return r.remainder(t)}function ns(r,t){return r.heaviside(t)}function os(r,...t){let e=t.map(o=>o.storage),n=ue(r,...e);return typeof n=="number"||typeof n=="bigint"?n:I._fromStorage(n)}var or=new Uint8Array([147,78,85,77,80,89]),Qr=["float64","float32","int64","int32","int16","int8","uint64","uint32","uint16","uint8","bool"];function Xr(){let r=new ArrayBuffer(2);return new DataView(r).setInt16(0,256,!0),new Int16Array(r)[0]===256}var as={f8:"float64",f4:"float32",i8:"int64",i4:"int32",i2:"int16",i1:"int8",u8:"uint64",u4:"uint32",u2:"uint16",u1:"uint8",b1:"bool"},xr={float64:"<f8",float32:"<f4",int64:"<i8",int32:"<i4",int16:"<i2",int8:"|i1",uint64:"<u8",uint32:"<u4",uint16:"<u2",uint8:"|u1",bool:"|b1"},Fe={c:"complex numbers",S:"byte strings",U:"Unicode strings",O:"Python objects",V:"structured arrays (void)",M:"datetime64",m:"timedelta64"};function Re(r){if(r.startsWith("[")||r.startsWith("("))throw new q(`Structured/compound dtypes are not supported: ${r}`);let t="",e=r;(r[0]==="<"||r[0]===">"||r[0]==="="||r[0]==="|")&&(t=r[0],e=r.slice(1));let n=e[0];if(n&&n in Fe)throw new q(`Unsupported dtype: ${Fe[n]} (${r}). Use the 'force' parameter to skip arrays with unsupported dtypes.`);let o=as[e];if(!o)throw new q(`Unknown or unsupported dtype descriptor: ${r}. Supported types: ${Qr.join(", ")}. Use the 'force' parameter to skip arrays with unsupported dtypes.`);let a=Xr(),i=t==="<"||t==="|"||t==="="&&a,s=t===">"||t==="="&&!a,u=parseInt(e.slice(1),10),c=u>1&&(s&&a||i&&!a);return{dtype:o,needsByteSwap:c,itemsize:u}}var q=class extends Error{constructor(t){super(t),this.name="UnsupportedDTypeError"}},k=class extends Error{constructor(t){super(t),this.name="InvalidNpyError"}};function Ir(r){let t=r instanceof ArrayBuffer?new Uint8Array(r):r,e=Kr(t);return rt(t,e)}function Kr(r){if(r.length<10)throw new k("File too small to be a valid NPY file");for(let c=0;c<or.length;c++)if(r[c]!==or[c])throw new k("Invalid NPY magic number");let t=r[6],e=r[7];if(t!==1&&t!==2&&t!==3)throw new k(`Unsupported NPY version: ${t}.${e}`);let n,o;t===1?(n=r[8]|r[9]<<8,o=10):(n=r[8]|r[9]<<8|r[10]<<16|r[11]<<24,o=12);let a=o+n;if(r.length<a)throw new k("File truncated: header extends beyond file");let i=r.slice(o,a),s=new TextDecoder("utf-8").decode(i).trim(),u=ss(s);return{version:{major:t,minor:e},header:u,dataOffset:a}}function rt(r,t){let{header:e,dataOffset:n}=t,{dtype:o,needsByteSwap:a,itemsize:i}=Re(e.descr),s=e.shape.reduce((d,g)=>d*g,1),u=s*i,c=r.length-n;if(c<u)throw new k(`File truncated: expected ${u} bytes of data, got ${c}`);let l=new ArrayBuffer(u);new Uint8Array(l).set(r.subarray(n,n+u));let f=is(l,o,s,a,i),p=e.shape,y;if(e.fortran_order&&p.length>1){let d=[...p].reverse(),g=D.fromData(f,d,o);y=us(g,d),p=e.shape}else y=D.fromData(f,[...p],o);return new I(y)}function ss(r){let t=r.match(/'descr'\s*:\s*'([^']+)'/),e=r.match(/'fortran_order'\s*:\s*(True|False)/),n=r.match(/'shape'\s*:\s*\(([^)]*)\)/);if(!t||!e||!n)throw new k(`Failed to parse NPY header: ${r}`);let o=t[1],a=e[1]==="True",i=n[1].trim(),s;return i===""?s=[]:s=i.split(",").map(u=>u.trim()).filter(u=>u!=="").map(u=>{let c=parseInt(u,10);if(isNaN(c))throw new k(`Invalid shape value: ${u}`);return c}),{descr:o,fortran_order:a,shape:s}}function is(r,t,e,n,o){let a=_(t);if(!a)throw new k(`Cannot create array for dtype: ${t}`);if(!n)return new a(r,0,e);let i=new Uint8Array(r),s=new Uint8Array(r.byteLength);for(let u=0;u<e;u++){let c=u*o;for(let l=0;l<o;l++)s[c+l]=i[c+o-1-l]}return new a(s.buffer,0,e)}function us(r,t){let e=t.length,n=r.size,o=r.dtype,a=_(o);if(!a)throw new k(`Cannot create array for dtype: ${o}`);let i=new a(n),s=[...t].reverse(),u=qe(t),c=qe(s),l=new Array(e).fill(0);for(let m=0;m<n;m++){let f=m;for(let y=0;y<e;y++){let d=u[y];l[y]=Math.floor(f/d),f=f%d}let p=0;for(let y=0;y<e;y++)p+=l[e-1-y]*c[y];N(o),i[p]=r.iget(m)}return D.fromData(i,s,o)}function qe(r){let t=new Array(r.length),e=1;for(let n=r.length-1;n>=0;n--)t[n]=e,e*=r[n];return t}function ar(r){let t=r.shape,e=r.dtype,n=xr[e],o=t.length===0?"()":t.length===1?`(${t[0]},)`:`(${t.join(", ")})`,a=`{'descr': '${n}', 'fortran_order': False, 'shape': ${o}, }`,i=12,u=(64-(i+a.length+1)%64)%64;a=a+" ".repeat(u)+`
|
|
2
|
+
`;let c=new TextEncoder().encode(a),l=c.length,m=r.size,f=ct(e),p=m*f,y=i+l+p,d=new Uint8Array(y);d.set(or,0),d[6]=3,d[7]=0,d[8]=l&255,d[9]=l>>8&255,d[10]=l>>16&255,d[11]=l>>24&255,d.set(c,i);let g=i+l;return cs(r,d.subarray(g),f),d}function cs(r,t,e){let n=r.dtype,o=r.size,a=Xr(),i=N(n),s=r._storage;if(s.isCContiguous&&s.offset===0&&a){let c=s.data,l=new Uint8Array(c.buffer,c.byteOffset,o*e);t.set(l)}else{let c=new DataView(t.buffer,t.byteOffset,t.byteLength);for(let l=0;l<o;l++){let m=s.iget(l),f=l*e;i?fs(c,f,m,n==="uint64"):ls(c,f,m,n)}}}function fs(r,t,e,n){n?r.setBigUint64(t,e,!0):r.setBigInt64(t,e,!0)}function ls(r,t,e,n){switch(n){case"float64":r.setFloat64(t,e,!0);break;case"float32":r.setFloat32(t,e,!0);break;case"int32":r.setInt32(t,e,!0);break;case"int16":r.setInt16(t,e,!0);break;case"int8":r.setInt8(t,e);break;case"uint32":r.setUint32(t,e,!0);break;case"uint16":r.setUint16(t,e,!0);break;case"uint8":case"bool":r.setUint8(t,e);break;default:throw new Error(`Unsupported dtype for serialization: ${n}`)}}var ps=(()=>{let r=new Uint32Array(256);for(let t=0;t<256;t++){let e=t;for(let n=0;n<8;n++)e=e&1?3988292384^e>>>1:e>>>1;r[t]=e}return r})();function tt(r){let t=4294967295;for(let e=0;e<r.length;e++)t=ps[(t^r[e])&255]^t>>>8;return(t^4294967295)>>>0}async function Le(r){let t=Ze(r),e=new Map;for(let n of t){let o=await ms(n);e.set(n.name,o)}return e}function je(r){let t=Ze(r),e=new Map;for(let n of t){if(n.compressionMethod!==0)throw new Error(`Cannot read compressed entry synchronously: ${n.name}. Use readZip() (async) for DEFLATE-compressed files.`);e.set(n.name,n.compressedData)}return e}function Ze(r){let t=r instanceof ArrayBuffer?new Uint8Array(r):r,e=new DataView(t.buffer,t.byteOffset,t.byteLength),n=[],o=-1;for(let c=t.length-22;c>=0;c--)if(e.getUint32(c,!0)===101010256){o=c;break}if(o===-1)throw new Error("Invalid ZIP file: end of central directory not found");let a=e.getUint32(o+16,!0),i=e.getUint16(o+10,!0),s=[],u=a;for(let c=0;c<i&&e.getUint32(u,!0)===33639248;c++){let m=e.getUint16(u+10,!0),f=e.getUint32(u+16,!0),p=e.getUint32(u+20,!0),y=e.getUint32(u+24,!0),d=e.getUint16(u+28,!0),g=e.getUint16(u+30,!0),A=e.getUint16(u+32,!0),h=e.getUint32(u+42,!0),b=t.slice(u+46,u+46+d),S=new TextDecoder("utf-8").decode(b);s.push({name:S,compressionMethod:m,crc32:f,compressedSize:p,uncompressedSize:y,localHeaderOffset:h}),u=u+46+d+g+A}for(let c of s){let l=c.localHeaderOffset;if(e.getUint32(l,!0)!==67324752)throw new Error(`Invalid local file header at offset ${l}`);let f=e.getUint16(l+26,!0),p=e.getUint16(l+28,!0),y=l+30+f+p,d=t.slice(y,y+c.compressedSize);n.push({name:c.name,compressedData:d,compressionMethod:c.compressionMethod,crc32:c.crc32,compressedSize:c.compressedSize,uncompressedSize:c.uncompressedSize})}return n}async function ms(r){if(r.compressionMethod===0)return r.compressedData;if(r.compressionMethod===8)return await ys(r.compressedData);throw new Error(`Unsupported compression method: ${r.compressionMethod}`)}async function ys(r){if(typeof DecompressionStream>"u")throw new Error("DecompressionStream is not available. This environment does not support the Compression Streams API. Please use a modern browser or Node.js 18+.");let t=new DecompressionStream("deflate-raw"),e=new Uint8Array(r.length);e.set(r);let n=t.writable.getWriter();n.write(e),n.close();let o=t.readable.getReader(),a=[];for(;;){let{done:c,value:l}=await o.read();if(c)break;a.push(l)}let i=a.reduce((c,l)=>c+l.length,0),s=new Uint8Array(i),u=0;for(let c of a)s.set(c,u),u+=c.length;return s}async function ot(r,t={}){let e=t.force??!1,n=await Le(r);return We(n,e)}function at(r,t={}){let e=t.force??!1,n=je(r);return We(n,e)}function We(r,t){let e=new Map,n=[],o=new Map;for(let[a,i]of r){if(!a.endsWith(".npy"))continue;let s=a.slice(0,-4);try{let u=Ir(i);e.set(s,u)}catch(u){if(u instanceof q&&t)n.push(s),o.set(s,u.message);else throw u}}return{arrays:e,skipped:n,errors:o}}async function He(r,t={}){let e=await ot(r,t);return Object.fromEntries(e.arrays)}function Ye(r,t={}){let e=at(r,t);return Object.fromEntries(e.arrays)}async function Ge(r,t={}){let e=t.compress??!1,n=[];for(let[f,p]of r){let y=tt(p),d,g;e?(d=await gs(p),d.length<p.length?g=8:(d=p,g=0)):(d=p,g=0),n.push({name:f,data:p,compressedData:d,crc:y,compressionMethod:g,offset:0})}let o=0;for(let f of n){let p=new TextEncoder().encode(f.name);o+=30+p.length+f.compressedData.length}let a=0;for(let f of n){let p=new TextEncoder().encode(f.name);a+=46+p.length}let s=o+a+22,u=new Uint8Array(s),c=new DataView(u.buffer),l=0;for(let f of n)f.offset=l,l=Qe(u,c,l,f);let m=l;for(let f of n)l=Xe(u,c,l,f);return Ke(c,l,n.length,a,m),u}function Je(r){let t=[];for(let[l,m]of r){let f=tt(m);t.push({name:l,data:m,compressedData:m,crc:f,compressionMethod:0,offset:0})}let e=0;for(let l of t){let m=new TextEncoder().encode(l.name);e+=30+m.length+l.compressedData.length}let n=0;for(let l of t){let m=new TextEncoder().encode(l.name);n+=46+m.length}let a=e+n+22,i=new Uint8Array(a),s=new DataView(i.buffer),u=0;for(let l of t)l.offset=u,u=Qe(i,s,u,l);let c=u;for(let l of t)u=Xe(i,s,u,l);return Ke(s,u,t.length,n,c),i}function Qe(r,t,e,n){let o=new TextEncoder().encode(n.name);return t.setUint32(e,67324752,!0),e+=4,t.setUint16(e,n.compressionMethod===8?20:10,!0),e+=2,t.setUint16(e,0,!0),e+=2,t.setUint16(e,n.compressionMethod,!0),e+=2,t.setUint16(e,0,!0),e+=2,t.setUint16(e,33,!0),e+=2,t.setUint32(e,n.crc,!0),e+=4,t.setUint32(e,n.compressedData.length,!0),e+=4,t.setUint32(e,n.data.length,!0),e+=4,t.setUint16(e,o.length,!0),e+=2,t.setUint16(e,0,!0),e+=2,r.set(o,e),e+=o.length,r.set(n.compressedData,e),e+=n.compressedData.length,e}function Xe(r,t,e,n){let o=new TextEncoder().encode(n.name);return t.setUint32(e,33639248,!0),e+=4,t.setUint16(e,20,!0),e+=2,t.setUint16(e,n.compressionMethod===8?20:10,!0),e+=2,t.setUint16(e,0,!0),e+=2,t.setUint16(e,n.compressionMethod,!0),e+=2,t.setUint16(e,0,!0),e+=2,t.setUint16(e,33,!0),e+=2,t.setUint32(e,n.crc,!0),e+=4,t.setUint32(e,n.compressedData.length,!0),e+=4,t.setUint32(e,n.data.length,!0),e+=4,t.setUint16(e,o.length,!0),e+=2,t.setUint16(e,0,!0),e+=2,t.setUint16(e,0,!0),e+=2,t.setUint16(e,0,!0),e+=2,t.setUint16(e,0,!0),e+=2,t.setUint32(e,0,!0),e+=4,t.setUint32(e,n.offset,!0),e+=4,r.set(o,e),e+=o.length,e}function Ke(r,t,e,n,o){r.setUint32(t,101010256,!0),t+=4,r.setUint16(t,0,!0),t+=2,r.setUint16(t,0,!0),t+=2,r.setUint16(t,e,!0),t+=2,r.setUint16(t,e,!0),t+=2,r.setUint32(t,n,!0),t+=4,r.setUint32(t,o,!0),t+=4,r.setUint16(t,0,!0)}async function gs(r){if(typeof CompressionStream>"u")throw new Error("CompressionStream is not available. This environment does not support the Compression Streams API. Please use a modern browser or Node.js 18+.");let t=new CompressionStream("deflate-raw"),e=new Uint8Array(r.length);e.set(r);let n=t.writable.getWriter();n.write(e),n.close();let o=t.readable.getReader(),a=[];for(;;){let{done:c,value:l}=await o.read();if(c)break;a.push(l)}let i=a.reduce((c,l)=>c+l.length,0),s=new Uint8Array(i),u=0;for(let c of a)s.set(c,u),u+=c.length;return s}async function rn(r,t={}){let e=en(r);return Ge(e,{compress:t.compress??!1})}function tn(r){let t=en(r);return Je(t)}function en(r){let t=new Map;if(Array.isArray(r)){for(let n=0;n<r.length;n++){let o=r[n],a=ar(o);t.set(`arr_${n}.npy`,a)}return t}let e=r instanceof Map?r.entries():Object.entries(r);for(let[n,o]of e){if(typeof n!="string"||n.length===0)throw new Error("Array names must be non-empty strings");let a=ar(o),i=n.endsWith(".npy")?n:`${n}.npy`;t.set(i,a)}return t}var _i="0.6.0";export{xr as DTYPE_TO_DESCR,k as InvalidNpyError,I as NDArray,Qr as SUPPORTED_DTYPES,q as UnsupportedDTypeError,_i as __version__,yo as absolute,Da as append,Rn as arange,vo as arccos,Wo as arccosh,$o as arcsin,Zo as arcsinh,Mo as arctan,Co as arctan2,Ho as arctanh,C as array,Ta as array_equal,Oa as array_equiv,ra as array_split,Qn as asanyarray,wr as asarray,Xn as ascontiguousarray,Kn as asfortranarray,ya as atleast_1d,da as atleast_2d,ga as atleast_3d,Pa as average,za as broadcast_arrays,Ba as broadcast_shapes,Ia as broadcast_to,Xa as cbrt,Ua as choose,Aa as column_stack,J as concatenate,Wn as copy,To as cos,Lo as cosh,va as cumprod,$a as cumsum,Fo as deg2rad,Vo as degrees,Na as delete,Ve as diag,ro as diagflat,xo as diagonal,rs as divmod,No as dot,ha as dsplit,Xo as dstack,os as einsum,Ce as empty,Gn as empty_like,ua as expand_dims,Me as eye,Ka as fabs,Jr as flip,ca as fliplr,fa as flipud,bo as floor_divide,io as frombuffer,uo as fromfile,to as fromfunction,co as fromiter,fo as fromstring,ke as full,Jn as full_like,jn as geomspace,ns as heaviside,ea as hsplit,Qo as hstack,ko as hypot,Zn as identity,Bo as inner,wa as insert,Io as kron,qn as linspace,He as loadNpz,Ye as loadNpzSync,Ln as logspace,Ca as median,eo as meshgrid,Ao as mod,Go as moveaxis,Ya as nanargmax,Ha as nanargmin,Ja as nancumprod,Ga as nancumsum,Wa as nanmax,qa as nanmean,Qa as nanmedian,Za as nanmin,Ra as nanprod,ja as nanstd,Fa as nansum,La as nanvar,go as negative,$e as ones,Yn as ones_like,_o as outer,xa as pad,Ir as parseNpy,rt as parseNpyData,Kr as parseNpyHeader,ot as parseNpz,at as parseNpzSync,ka as percentile,So as positive,mo as power,Ma as ptp,Ea as put,Va as quantile,Ro as rad2deg,Po as radians,aa as ravel,Do as reciprocal,es as remainder,oa as repeat,sa as reshape,Sa as resize,pa as roll,ma as rollaxis,la as rot90,ba as row_stack,ar as serializeNpy,rn as serializeNpz,tn as serializeNpzSync,ho as sign,Uo as sin,qo as sinh,Ko as split,po as sqrt,ts as square,ia as squeeze,Jo as stack,Yo as swapaxes,_a as take,Oo as tan,jo as tanh,Eo as tensordot,na as tile,wo as trace,zo as transpose,no as tri,oo as tril,ao as triu,so as vander,ta as vsplit,Pe as vstack,R as zeros,Hn as zeros_like};
|