numpy-ts 0.11.0 → 0.12.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.
@@ -1,2 +1,2 @@
1
- var O=class r{constructor(t,e=0){this.re=t,this.im=e}abs(){return Math.sqrt(this.re*this.re+this.im*this.im)}angle(){return Math.atan2(this.im,this.re)}conj(){return new r(this.re,-this.im)}add(t){return typeof t=="number"?new r(this.re+t,this.im):new r(this.re+t.re,this.im+t.im)}sub(t){return typeof t=="number"?new r(this.re-t,this.im):new r(this.re-t.re,this.im-t.im)}mul(t){return typeof t=="number"?new r(this.re*t,this.im*t):new r(this.re*t.re-this.im*t.im,this.re*t.im+this.im*t.re)}div(t){if(typeof t=="number")return new r(this.re/t,this.im/t);let e=t.re*t.re+t.im*t.im;return new r((this.re*t.re+this.im*t.im)/e,(this.im*t.re-this.re*t.im)/e)}neg(){return new r(-this.re,-this.im)}equals(t){return this.re===t.re&&this.im===t.im}toString(){return this.im===0?`(${this.re}+0j)`:this.im<0?`(${this.re}${this.im}j)`:`(${this.re}+${this.im}j)`}static from(t){if(t instanceof r)return t;if(typeof t=="number")return new r(t,0);if(Array.isArray(t))return new r(t[0]??0,t[1]??0);if(typeof t=="object"&&t!==null&&"re"in t)return new r(t.re??0,t.im??0);throw new Error(`Cannot convert ${t} to Complex`)}static isComplex(t){return t instanceof r||typeof t=="object"&&t!==null&&"re"in t&&"im"in t}};function Ke(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 rn(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 u=e<0?t+e:e;if(u<0||u>=t)throw new Error(`Index ${e} is out of bounds for size ${t}`);return{start:u,stop:u+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 X="float64";function P(r){switch(r){case"float64":return Float64Array;case"float32":return Float32Array;case"complex128":return Float64Array;case"complex64":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 lt(r){switch(r){case"complex128":return 16;case"float64":case"int64":case"uint64":case"complex64":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 en(r){return r==="int64"||r==="int32"||r==="int16"||r==="int8"||r==="uint64"||r==="uint32"||r==="uint16"||r==="uint8"}function tn(r){return r==="float64"||r==="float32"}function B(r){return r==="int64"||r==="uint64"}function M(r){return r==="complex64"||r==="complex128"}function q(r,t,e){if(M(r)){let n=e?` ${e}`:"";throw new TypeError(`ufunc '${t}' not supported for complex dtype '${r}'.${n}`)}}function Lr(r){if(r==="complex128")return"float64";if(r==="complex64")return"float32";throw new Error(`${r} is not a complex dtype`)}function nn(r){return typeof r=="object"&&r!==null&&"re"in r&&"im"in r}function G(r,t){if(r===t)return r;if(r==="bool")return t;if(t==="bool")return r;if(M(r)||M(t)){if(M(r)&&M(t))return r==="complex128"||t==="complex128"?"complex128":"complex64";let c=M(r)?r:t,l=M(r)?t:r;return c==="complex128"||l==="float64"||l==="int64"||l==="uint64"||l==="int32"||l==="uint32"?"complex128":"complex64"}if(tn(r)||tn(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"),u=c=>c.includes("64")?64:c.includes("32")?32:c.includes("16")?16:c.includes("8")?8:0,s=u(r),i=u(t);if(r==="int64"&&t==="uint64"||r==="uint64"&&t==="int64")return"float64";if(e&&a&&s===i){if(s===8)return"int16";if(s===16)return"int32";if(s===32)return"int64"}if(o&&n&&s===i){if(i===8)return"int16";if(i===16)return"int32";if(i===32)return"int64"}if(e&&n||o&&a){let c=Math.max(s,i);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>i?r:i===8?"int16":i===16?"int32":i===32?"int64":"float64":o&&n?i>s?t:s===8?"int16":s===16?"int32":s===32?"int64":"float64":"float64"}var x=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,a=M(this._dtype),u;if(o===0)u=this._offset;else{let s=t;u=this._offset;for(let i=0;i<o;i++){let c=1;for(let m=i+1;m<o;m++)c*=e[m];let l=Math.floor(s/c);s=s%c,u+=l*n[i]}}if(a){let s=u*2,i=this._data[s],c=this._data[s+1];return new O(i,c)}return this._data[u]}iset(t,e){let n=this._shape,o=this._strides,a=n.length,u=M(this._dtype),s;if(a===0)s=this._offset;else{let i=t;s=this._offset;for(let c=0;c<a;c++){let l=1;for(let d=c+1;d<a;d++)l*=n[d];let m=Math.floor(i/l);i=i%l,s+=m*o[c]}}if(u){let i=s*2,c,l;e instanceof O?(c=e.re,l=e.im):typeof e=="object"&&e!==null&&"re"in e?(c=e.re,l=e.im??0):(c=Number(e),l=0),this._data[i]=c,this._data[i+1]=l}else 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];if(M(this._dtype)){let o=n*2,a=this._data[o],u=this._data[o+1];return new O(a,u)}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];if(M(this._dtype)){let a=o*2,u,s;e instanceof O?(u=e.re,s=e.im):typeof e=="object"&&e!==null&&"re"in e?(u=e.re,s=e.im??0):(u=Number(e),s=0),this._data[a]=u,this._data[a+1]=s}else this._data[o]=e}copy(){let t=Array.from(this._shape),e=this._dtype,n=this.size,o=M(e),a=P(e);if(!a)throw new Error(`Cannot copy array with dtype ${e}`);let u=o?n*2:n,s=new a(u);if(this.isCContiguous&&this._offset===0)if(B(e)){let i=this._data,c=s;for(let l=0;l<u;l++)c[l]=i[l]}else s.set(this._data.subarray(0,u));else if(B(e)){let i=s;for(let c=0;c<n;c++)i[c]=this.iget(c)}else if(o){let i=s;for(let c=0;c<n;c++){let l=this.iget(c);i[c*2]=l.re,i[c*2+1]=l.im}}else for(let i=0;i<n;i++)s[i]=this.iget(i);return new r(s,t,r._computeStrides(t),0,e)}static fromData(t,e,n,o,a){let u=o??r._computeStrides(e),s=a??0;return new r(t,e,u,s,n)}static zeros(t,e=X){let n=t.reduce((i,c)=>i*c,1),o=M(e),a=P(e);if(!a)throw new Error(`Cannot create array with dtype ${e}`);let u=o?n*2:n,s=new a(u);return new r(s,t,r._computeStrides(t),0,e)}static ones(t,e=X){let n=t.reduce((i,c)=>i*c,1),o=M(e),a=P(e);if(!a)throw new Error(`Cannot create array with dtype ${e}`);let u=o?n*2:n,s=new a(u);if(B(e))s.fill(BigInt(1));else if(o){let i=s;for(let c=0;c<n;c++)i[c*2]=1,i[c*2+1]=0}else s.fill(1);return new r(s,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 or(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 yr(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 u=a.length-t+n,s=u<0?1:a[u];if(s!==1){if(o===1)o=s;else if(o!==s)return null}}e[n]=o}return e}function Ui(r,t,e){let n=r.length,o=e.length,a=new Array(o).fill(0);for(let u=0;u<n;u++){let s=o-n+u,i=r[u],c=e[s];if(i===c)a[s]=t[u];else if(i===1)a[s]=0;else throw new Error("Invalid broadcast")}return a}function lr(r,t){let e=Ui(r.shape,r.strides,t);return x.fromData(r.data,Array.from(t),r.dtype,e,r.offset)}function Rt(...r){let t=yr(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 Ir(r,t){let e=r.length,n=t.length,o=Math.max(e,n),a=new Array(o);for(let u=0;u<o;u++){let s=u<o-e?1:r[u-(o-e)],i=u<o-n?1:t[u-(o-n)];if(s===i)a[u]=s;else if(s===1)a[u]=i;else if(i===1)a[u]=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 $i(r,t,e){let n=r.length,o=e.length,a=new Array(o).fill(0);for(let u=0;u<n;u++){let s=o-n+u,i=r[u],c=e[s];if(i===c)a[s]=t[u];else if(i===1)a[s]=0;else throw new Error("Invalid broadcast")}return a}function ft(r,t){let e=$i(r.shape,r.strides,t);return x.fromData(r.data,Array.from(t),r.dtype,e,r.offset)}function J(r,t,e,n){let o=Ir(r.shape,t.shape),a=ft(r,o),u=ft(t,o),s=G(r.dtype,t.dtype),i=x.zeros(o,s),c=i.data,l=i.size;if(B(s)){let m=c;for(let d=0;d<l;d++){let p=a.iget(d),f=u.iget(d),y=p instanceof O?p.re:p,g=f instanceof O?f.re:f,h=typeof y=="bigint"?y:BigInt(Math.round(y)),b=typeof g=="bigint"?g:BigInt(Math.round(g));n==="add"?m[d]=h+b:n==="subtract"?m[d]=h-b:n==="multiply"?m[d]=h*b:n==="divide"?m[d]=h/b:m[d]=BigInt(Math.round(e(Number(h),Number(b))))}}else{let m=B(r.dtype)||B(t.dtype);for(let d=0;d<l;d++){let p=a.iget(d),f=u.iget(d),y=Number(p),g=Number(f);c[d]=e(y,g)}}return i}function fr(r,t,e){let n=Ir(r.shape,t.shape),o=ft(r,n),a=ft(t,n),u=n.reduce((c,l)=>c*l,1),s=new Uint8Array(u),i=B(r.dtype)||B(t.dtype);for(let c=0;c<u;c++){let l=o.iget(c),m=a.iget(c),d=Number(l),p=Number(m);s[c]=e(d,p)?1:0}return x.fromData(s,n,"bool")}function Y(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,i=x.zeros(o,s),c=i.data,l=r.data;if(B(n))if(B(s)){let m=c;for(let d=0;d<a;d++){let p=Number(l[d]);m[d]=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 i}function kt(r,t){return r.isCContiguous&&t.isCContiguous&&r.shape.length===t.shape.length&&r.shape.every((e,n)=>e===t.shape[n])}function ur(r,t){return[r[t*2],r[t*2+1]]}function Dr(r,t,e,n){r[t*2]=e,r[t*2+1]=n}function on(r,t){return typeof t=="number"?Vi(r,t):kt(r,t)?Ri(r,t):J(r,t,(e,n)=>e+n,"add")}function Ri(r,t){let e=G(r.dtype,t.dtype),n=x.zeros(Array.from(r.shape),e),o=r.size,a=r.data,u=t.data,s=n.data;if(M(e)){let i=s,c=M(r.dtype),l=M(t.dtype);for(let m=0;m<o;m++){let[d,p]=c?ur(a,m):[Number(a[m]),0],[f,y]=l?ur(u,m):[Number(u[m]),0];Dr(i,m,d+f,p+y)}return n}if(B(e)){let i=s;if(!B(r.dtype)||!B(t.dtype))for(let l=0;l<o;l++){let m=typeof a[l]=="bigint"?a[l]:BigInt(Math.round(Number(a[l]))),d=typeof u[l]=="bigint"?u[l]:BigInt(Math.round(Number(u[l])));i[l]=m+d}else{let l=a,m=u;for(let d=0;d<o;d++)i[d]=l[d]+m[d]}}else if(B(r.dtype)||B(t.dtype))for(let c=0;c<o;c++){let l=typeof a[c]=="bigint"?Number(a[c]):a[c],m=typeof u[c]=="bigint"?Number(u[c]):u[c];s[c]=l+m}else for(let c=0;c<o;c++)s[c]=a[c]+u[c];return n}function an(r,t){return typeof t=="number"?ji(r,t):kt(r,t)?ki(r,t):J(r,t,(e,n)=>e-n,"subtract")}function ki(r,t){let e=G(r.dtype,t.dtype),n=x.zeros(Array.from(r.shape),e),o=r.size,a=r.data,u=t.data,s=n.data;if(M(e)){let i=s,c=M(r.dtype),l=M(t.dtype);for(let m=0;m<o;m++){let[d,p]=c?ur(a,m):[Number(a[m]),0],[f,y]=l?ur(u,m):[Number(u[m]),0];Dr(i,m,d-f,p-y)}return n}if(B(e)){let i=s;if(!B(r.dtype)||!B(t.dtype))for(let l=0;l<o;l++){let m=typeof a[l]=="bigint"?a[l]:BigInt(Math.round(Number(a[l]))),d=typeof u[l]=="bigint"?u[l]:BigInt(Math.round(Number(u[l])));i[l]=m-d}else{let l=a,m=u;for(let d=0;d<o;d++)i[d]=l[d]-m[d]}}else if(B(r.dtype)||B(t.dtype))for(let c=0;c<o;c++){let l=typeof a[c]=="bigint"?Number(a[c]):a[c],m=typeof u[c]=="bigint"?Number(u[c]):u[c];s[c]=l-m}else for(let c=0;c<o;c++)s[c]=a[c]-u[c];return n}function sn(r,t){return typeof t=="number"?Pi(r,t):kt(r,t)?qi(r,t):J(r,t,(e,n)=>e*n,"multiply")}function qi(r,t){let e=G(r.dtype,t.dtype),n=x.zeros(Array.from(r.shape),e),o=r.size,a=r.data,u=t.data,s=n.data;if(M(e)){let i=s,c=M(r.dtype),l=M(t.dtype);for(let m=0;m<o;m++){let[d,p]=c?ur(a,m):[Number(a[m]),0],[f,y]=l?ur(u,m):[Number(u[m]),0],g=d*f-p*y,h=d*y+p*f;Dr(i,m,g,h)}return n}if(B(e)){let i=s;if(!B(r.dtype)||!B(t.dtype))for(let l=0;l<o;l++){let m=typeof a[l]=="bigint"?a[l]:BigInt(Math.round(Number(a[l]))),d=typeof u[l]=="bigint"?u[l]:BigInt(Math.round(Number(u[l])));i[l]=m*d}else{let l=a,m=u;for(let d=0;d<o;d++)i[d]=l[d]*m[d]}}else if(B(r.dtype)||B(t.dtype))for(let c=0;c<o;c++){let l=typeof a[c]=="bigint"?Number(a[c]):a[c],m=typeof u[c]=="bigint"?Number(u[c]):u[c];s[c]=l*m}else for(let c=0;c<o;c++)s[c]=a[c]*u[c];return n}function un(r,t){if(typeof t=="number")return Li(r,t);let e=M(r.dtype),n=M(t.dtype);if(e||n){let l=G(r.dtype,t.dtype),m=x.zeros(Array.from(r.shape),l),d=m.data,p=r.size,f=r.data,y=t.data;for(let g=0;g<p;g++){let[h,b]=e?ur(f,g):[Number(f[g]),0],[A,S]=n?ur(y,g):[Number(y[g]),0],D=A*A+S*S,w=(h*A+b*S)/D,N=(b*A-h*S)/D;Dr(d,g,w,N)}return m}let o=r.dtype==="float64",a=t.dtype==="float64",u=r.dtype==="float32",s=t.dtype==="float32";if(o||a){let l=o?r:Er(r,"float64"),m=a?t:Er(t,"float64");return J(l,m,(d,p)=>d/p,"divide")}if(u||s){let l=u?r:Er(r,"float32"),m=s?t:Er(t,"float32");return J(l,m,(d,p)=>d/p,"divide")}let i=Er(r,"float64"),c=Er(t,"float64");return J(i,c,(l,m)=>l/m,"divide")}function Er(r,t){let e=x.zeros(Array.from(r.shape),t),n=r.size,o=r.data,a=e.data;for(let u=0;u<n;u++)a[u]=Number(o[u]);return e}function Vi(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,u=x.zeros(n,e),s=u.data;if(M(e)){let i=o,c=s;for(let l=0;l<a;l++){let[m,d]=ur(i,l);Dr(c,l,m+t,d)}}else if(B(e)){let i=o,c=s,l=BigInt(Math.round(t));for(let m=0;m<a;m++)c[m]=i[m]+l}else for(let i=0;i<a;i++)s[i]=Number(o[i])+t;return u}function ji(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,u=x.zeros(n,e),s=u.data;if(M(e)){let i=o,c=s;for(let l=0;l<a;l++){let[m,d]=ur(i,l);Dr(c,l,m-t,d)}}else if(B(e)){let i=o,c=s,l=BigInt(Math.round(t));for(let m=0;m<a;m++)c[m]=i[m]-l}else for(let i=0;i<a;i++)s[i]=Number(o[i])-t;return u}function Pi(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,u=x.zeros(n,e),s=u.data;if(M(e)){let i=o,c=s;for(let l=0;l<a;l++){let[m,d]=ur(i,l);Dr(c,l,m*t,d*t)}}else if(B(e)){let i=o,c=s,l=BigInt(Math.round(t));for(let m=0;m<a;m++)c[m]=i[m]*l}else for(let i=0;i<a;i++)s[i]=Number(o[i])*t;return u}function Li(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size;if(M(e)){let l=x.zeros(n,e),m=o,d=l.data;for(let p=0;p<a;p++){let[f,y]=ur(m,p);Dr(d,p,f/t,y/t)}return l}let s=e!=="float32"&&e!=="float64"?"float64":e,i=x.zeros(n,s),c=i.data;if(B(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 i}function cn(r){let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size;if(M(t)){let s=Lr(t),i=x.zeros(e,s),c=i.data,l=n;for(let m=0;m<o;m++){let d=l[m*2],p=l[m*2+1];c[m]=Math.sqrt(d*d+p*p)}return i}let a=x.zeros(e,t),u=a.data;if(B(t)){let s=n,i=u;for(let c=0;c<o;c++){let l=s[c];i[c]=l<0n?-l:l}}else for(let s=0;s<o;s++)u[s]=Math.abs(Number(n[s]));return a}function ln(r){let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size,a=x.zeros(e,t),u=a.data;if(M(t)){let s=n,i=u;for(let c=0;c<o;c++){let[l,m]=ur(s,c);Dr(i,c,-l,-m)}}else if(B(t)){let s=n,i=u;for(let c=0;c<o;c++)i[c]=-s[c]}else for(let s=0;s<o;s++)u[s]=-Number(n[s]);return a}function fn(r){q(r.dtype,"sign","Sign is not defined for complex numbers.");let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size,a=x.zeros(e,t),u=a.data;if(B(t)){let s=n,i=u;for(let c=0;c<o;c++){let l=s[c];i[c]=l>0n?1n:l<0n?-1n:0n}}else for(let s=0;s<o;s++){let i=Number(n[s]);u[s]=i>0?1:i<0?-1:0}return a}function mt(r,t){return q(r.dtype,"mod","Modulo is not defined for complex numbers."),typeof t!="number"&&q(t.dtype,"mod","Modulo is not defined for complex numbers."),typeof t=="number"?Zi(r,t):J(r,t,(e,n)=>(e%n+n)%n,"mod")}function Zi(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,u=x.zeros(n,e),s=u.data;if(B(e)){let i=o,c=s,l=BigInt(Math.round(t));for(let m=0;m<a;m++){let d=i[m];c[m]=(d%l+l)%l}}else for(let i=0;i<a;i++){let c=Number(o[i]);s[i]=(c%t+t)%t}return u}function qt(r,t){return q(r.dtype,"floor_divide","Floor division is not defined for complex numbers."),typeof t!="number"&&q(t.dtype,"floor_divide","Floor division is not defined for complex numbers."),typeof t=="number"?Gi(r,t):J(r,t,(e,n)=>Math.floor(e/n),"floor_divide")}function Gi(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,u=x.zeros(n,e),s=u.data;if(B(e)){let i=o,c=s,l=BigInt(Math.round(t));for(let m=0;m<a;m++)c[m]=i[m]/l}else for(let i=0;i<a;i++)s[i]=Math.floor(Number(o[i])/t);return u}function mn(r){let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size,a=x.zeros(e,t),u=a.data;if(M(t)){let s=n,i=u;for(let c=0;c<o;c++)i[c*2]=s[c*2],i[c*2+1]=s[c*2+1]}else for(let s=0;s<o;s++)u[s]=n[s];return a}function yn(r){let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size;if(M(t)){let c=x.zeros(e,t),l=n,m=c.data;for(let d=0;d<o;d++){let p=l[d*2],f=l[d*2+1],y=p*p+f*f;m[d*2]=p/y,m[d*2+1]=-f/y}return c}let u=t!=="float32"&&t!=="float64"?"float64":t,s=x.zeros(e,u),i=s.data;if(B(t))for(let c=0;c<o;c++)i[c]=1/Number(n[c]);else for(let c=0;c<o;c++)i[c]=1/Number(n[c]);return s}function pn(r){let t=r.dtype;q(t,"cbrt","cbrt is not supported for complex numbers.");let e=Array.from(r.shape),n=r.data,o=r.size,u=t!=="float32"&&t!=="float64"?"float64":t,s=x.zeros(e,u),i=s.data;for(let c=0;c<o;c++)i[c]=Math.cbrt(Number(n[c]));return s}function dn(r){let t=r.dtype;q(t,"fabs","fabs is only for real numbers. Use absolute() for complex.");let e=Array.from(r.shape),n=r.data,o=r.size,a=t==="float32"?"float32":"float64",u=x.zeros(e,a),s=u.data;for(let i=0;i<o;i++)s[i]=Math.abs(Number(n[i]));return u}function gn(r,t){let e=qt(r,t),n=mt(r,t);return[e,n]}function An(r){let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size,a=x.zeros(e,t),u=a.data;if(M(t)){let s=n,i=u;for(let c=0;c<o;c++){let l=s[c*2],m=s[c*2+1];i[c*2]=l*l-m*m,i[c*2+1]=2*l*m}}else if(B(t)){let s=n,i=u;for(let c=0;c<o;c++)i[c]=s[c]*s[c]}else for(let s=0;s<o;s++){let i=Number(n[s]);u[s]=i*i}return a}function bn(r,t){return mt(r,t)}function hn(r,t){q(r.dtype,"heaviside","Heaviside step function is not defined for complex numbers."),typeof t!="number"&&q(t.dtype,"heaviside","Heaviside step function is not defined for complex numbers.");let e=r.dtype,n=Array.from(r.shape),o=r.size,a=e==="float32"?"float32":"float64",u=x.zeros(n,a),s=u.data;if(typeof t=="number")for(let i=0;i<o;i++){let c=Number(r.data[i]);c<0?s[i]=0:c===0?s[i]=t:s[i]=1}else{let i=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(i[l]):s[l]=1}else for(let l=0;l<o;l++){let m=Number(r.data[l]),d=l%t.size;m<0?s[l]=0:m===0?s[l]=Number(i[d]):s[l]=1}}return u}function Sn(r,t){let e=r.dtype;if(M(e)){let n=r.data,o=r.size,a=x.zeros(Array.from(r.shape),e),u=a.data;if(typeof t=="number")for(let s=0;s<o;s++){let i=n[s*2],c=n[s*2+1],l=Math.hypot(i,c),m=Math.atan2(c,i),d=Math.pow(l,t),p=m*t;u[s*2]=d*Math.cos(p),u[s*2+1]=d*Math.sin(p)}else{let s=t.data,i=M(t.dtype);for(let c=0;c<o;c++){let l=n[c*2],m=n[c*2+1],d,p;i?(d=s[c*2],p=s[c*2+1]):(d=Number(s[c]),p=0);let f=Math.hypot(l,m),y=Math.atan2(m,l),g=Math.log(f),h=y,b=d*g-p*h,A=d*h+p*g,S=Math.exp(b);u[c*2]=S*Math.cos(A),u[c*2+1]=S*Math.sin(A)}}return a}if(typeof t=="number"){let n=x.zeros(Array.from(r.shape),"float64"),o=n.data,a=r.data,u=r.size;for(let s=0;s<u;s++)o[s]=Math.pow(Number(a[s]),t);return n}return J(r,t,(n,o)=>Math.pow(n,o),"float_power")}function Dn(r,t){if(q(r.dtype,"fmod","fmod is not defined for complex numbers."),typeof t!="number"&&q(t.dtype,"fmod","fmod is not defined for complex numbers."),typeof t=="number"){let e=r.copy(),n=e.data,o=r.size;for(let a=0;a<o;a++){let u=Number(n[a]);n[a]=u-Math.trunc(u/t)*t}return e}return J(r,t,(e,n)=>e-Math.trunc(e/n)*n,"fmod")}function xn(r){q(r.dtype,"frexp","frexp is not defined for complex numbers.");let t=x.zeros(Array.from(r.shape),"float64"),e=x.zeros(Array.from(r.shape),"int32"),n=t.data,o=e.data,a=r.data,u=r.size;for(let s=0;s<u;s++){let i=Number(a[s]);if(i===0||!isFinite(i))n[s]=i,o[s]=0;else{let c=Math.floor(Math.log2(Math.abs(i)))+1,l=i/Math.pow(2,c);n[s]=l,o[s]=c}}return[t,e]}function Nn(r,t){q(r.dtype,"gcd","GCD is only defined for integers."),typeof t!="number"&&q(t.dtype,"gcd","GCD is only defined for integers.");let e=(i,c)=>{for(i=Math.abs(Math.trunc(i)),c=Math.abs(Math.trunc(c));c!==0;){let l=c;c=i%c,i=l}return i};if(typeof t=="number"){let i=x.zeros(Array.from(r.shape),"int32"),c=i.data,l=r.data,m=r.size,d=Math.abs(Math.trunc(t));for(let p=0;p<m;p++)c[p]=e(Number(l[p]),d);return i}let n=J(r,t,e,"gcd"),o=x.zeros(Array.from(n.shape),"int32"),a=o.data,u=n.data,s=n.size;for(let i=0;i<s;i++)a[i]=Math.round(Number(u[i]));return o}function wn(r,t){q(r.dtype,"lcm","LCM is only defined for integers."),typeof t!="number"&&q(t.dtype,"lcm","LCM is only defined for integers.");let e=(c,l)=>{for(c=Math.abs(Math.trunc(c)),l=Math.abs(Math.trunc(l));l!==0;){let m=l;l=c%l,c=m}return c},n=(c,l)=>(c=Math.abs(Math.trunc(c)),l=Math.abs(Math.trunc(l)),c===0||l===0?0:c*l/e(c,l));if(typeof t=="number"){let c=x.zeros(Array.from(r.shape),"int32"),l=c.data,m=r.data,d=r.size,p=Math.abs(Math.trunc(t));for(let f=0;f<d;f++)l[f]=n(Number(m[f]),p);return c}let o=J(r,t,n,"lcm"),a=x.zeros(Array.from(o.shape),"int32"),u=a.data,s=o.data,i=o.size;for(let c=0;c<i;c++)u[c]=Math.round(Number(s[c]));return a}function In(r,t){if(q(r.dtype,"ldexp","ldexp is not defined for complex numbers."),typeof t!="number"&&q(t.dtype,"ldexp","ldexp is not defined for complex numbers."),typeof t=="number"){let e=x.zeros(Array.from(r.shape),"float64"),n=e.data,o=r.data,a=r.size,u=Math.pow(2,t);for(let s=0;s<a;s++)n[s]=Number(o[s])*u;return e}return J(r,t,(e,n)=>e*Math.pow(2,n),"ldexp")}function zn(r){q(r.dtype,"modf","modf is not defined for complex numbers.");let t=x.zeros(Array.from(r.shape),"float64"),e=x.zeros(Array.from(r.shape),"float64"),n=t.data,o=e.data,a=r.data,u=r.size;for(let s=0;s<u;s++){let i=Number(a[s]),c=Math.trunc(i);o[s]=c,n[s]=i-c}return[t,e]}function Fr(r,t){return[r[t*2],r[t*2+1]]}function _n(r,t){if(M(r.dtype))return Fr(r.data,t);let e=r.iget(t);return e instanceof O?[e.re,e.im]:[Number(e),0]}function Tr(r,t,e){let n=yr([Array.from(r.shape),Array.from(t.shape)]);if(!n)throw new Error("Cannot broadcast arrays together");let o=lr(r,n),a=lr(t,n),u=n.reduce((i,c)=>i*c,1),s=new Uint8Array(u);for(let i=0;i<u;i++){let[c,l]=_n(o,i),[m,d]=_n(a,i);s[i]=e(c,l,m,d)?1:0}return x.fromData(s,n,"bool")}function Fn(r,t){return typeof t=="number"?Yi(r,t):M(r.dtype)||M(t.dtype)?Tr(r,t,(e,n,o,a)=>e!==o?e>o:n>a):fr(r,t,(e,n)=>e>n)}function Mn(r,t){return typeof t=="number"?Hi(r,t):M(r.dtype)||M(t.dtype)?Tr(r,t,(e,n,o,a)=>e!==o?e>=o:n>=a):fr(r,t,(e,n)=>e>=n)}function Bn(r,t){return typeof t=="number"?Ji(r,t):M(r.dtype)||M(t.dtype)?Tr(r,t,(e,n,o,a)=>e!==o?e<o:n<a):fr(r,t,(e,n)=>e<n)}function vn(r,t){return typeof t=="number"?Xi(r,t):M(r.dtype)||M(t.dtype)?Tr(r,t,(e,n,o,a)=>e!==o?e<=o:n<=a):fr(r,t,(e,n)=>e<=n)}function En(r,t){return typeof t=="number"?Qi(r,t):M(r.dtype)||M(t.dtype)?Tr(r,t,(e,n,o,a)=>e===o&&n===a):fr(r,t,(e,n)=>e===n)}function Tn(r,t){return typeof t=="number"?Ki(r,t):M(r.dtype)||M(t.dtype)?Tr(r,t,(e,n,o,a)=>e!==o||n!==a):fr(r,t,(e,n)=>e!==n)}function Vt(r,t,e=1e-5,n=1e-8){return typeof t=="number"?ru(r,t,e,n):fr(r,t,(o,a)=>{let u=Math.abs(o-a),s=n+e*Math.abs(a);return u<=s})}function On(r,t,e=1e-5,n=1e-8){let o=Vt(r,t,e,n),a=o.data;for(let u=0;u<o.size;u++)if(a[u]===0)return!1;return!0}function Cn(r,t){let e=[Array.from(r.shape),Array.from(t.shape)],n=yr(e);if(n===null)return!1;let o=lr(r,n),a=lr(t,n),u=n.length,s=n.reduce((l,m)=>l*m,1),i=B(o.dtype),c=B(a.dtype);for(let l=0;l<s;l++){let m=l,d=new Array(u);for(let y=u-1;y>=0;y--)d[y]=m%n[y],m=Math.floor(m/n[y]);let p=o.get(...d),f=a.get(...d);if(i||c){let y=typeof p=="bigint"?p:BigInt(Number(p)),g=typeof f=="bigint"?f:BigInt(Number(f));if(y!==g)return!1}else if(p!==f)return!1}return!0}function Yi(r,t){let e=new Uint8Array(r.size),n=r.data;if(M(r.dtype)){let o=n;for(let a=0;a<r.size;a++){let[u,s]=Fr(o,a);e[a]=(u!==t?u>t:s>0)?1:0}}else for(let o=0;o<r.size;o++)e[o]=n[o]>t?1:0;return x.fromData(e,Array.from(r.shape),"bool")}function Hi(r,t){let e=new Uint8Array(r.size),n=r.data;if(M(r.dtype)){let o=n;for(let a=0;a<r.size;a++){let[u,s]=Fr(o,a);e[a]=(u!==t?u>=t:s>=0)?1:0}}else for(let o=0;o<r.size;o++)e[o]=n[o]>=t?1:0;return x.fromData(e,Array.from(r.shape),"bool")}function Ji(r,t){let e=new Uint8Array(r.size),n=r.data;if(M(r.dtype)){let o=n;for(let a=0;a<r.size;a++){let[u,s]=Fr(o,a);e[a]=(u!==t?u<t:s<0)?1:0}}else for(let o=0;o<r.size;o++)e[o]=n[o]<t?1:0;return x.fromData(e,Array.from(r.shape),"bool")}function Xi(r,t){let e=new Uint8Array(r.size),n=r.data;if(M(r.dtype)){let o=n;for(let a=0;a<r.size;a++){let[u,s]=Fr(o,a);e[a]=(u!==t?u<=t:s<=0)?1:0}}else for(let o=0;o<r.size;o++)e[o]=n[o]<=t?1:0;return x.fromData(e,Array.from(r.shape),"bool")}function Qi(r,t){let e=new Uint8Array(r.size),n=r.data,o=r.dtype;if(M(o)){let a=n;for(let u=0;u<r.size;u++){let[s,i]=Fr(a,u);e[u]=s===t&&i===0?1:0}}else if(B(o)){let a=BigInt(Math.round(t)),u=n;for(let s=0;s<r.size;s++)e[s]=u[s]===a?1:0}else for(let a=0;a<r.size;a++)e[a]=n[a]===t?1:0;return x.fromData(e,Array.from(r.shape),"bool")}function Ki(r,t){let e=new Uint8Array(r.size),n=r.data,o=r.dtype;if(M(o)){let a=n;for(let u=0;u<r.size;u++){let[s,i]=Fr(a,u);e[u]=s!==t||i!==0?1:0}}else for(let a=0;a<r.size;a++)e[a]=n[a]!==t?1:0;return x.fromData(e,Array.from(r.shape),"bool")}function ru(r,t,e,n){let o=new Uint8Array(r.size),a=r.data,u=r.dtype;if(B(u)){let s=a;for(let i=0;i<r.size;i++){let c=Number(s[i]),l=Math.abs(c-t),m=n+e*Math.abs(t);o[i]=l<=m?1:0}}else for(let s=0;s<r.size;s++){let i=Number(a[s]),c=Math.abs(i-t),l=n+e*Math.abs(t);o[s]=c<=l?1:0}return x.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 $(r,t,e,n){let o=n.length,a=new Array(o),u=Array.from(n).filter((i,c)=>c!==t),s=r;for(let i=u.length-1;i>=0;i--)a[i>=t?i+1:i]=s%u[i],s=Math.floor(s/u[i]);return a[t]=e,a}function Zr(r,t,e=!1){let n=r.dtype,o=r.shape,a=o.length,u=r.size,s=r.data;if(t===void 0)if(M(n)){let f=s,y=0,g=0;for(let h=0;h<u;h++)y+=f[h*2],g+=f[h*2+1];return new O(y,g)}else if(B(n)){let f=s,y=BigInt(0);for(let g=0;g<u;g++)y+=f[g];return Number(y)}else{let f=0;for(let y=0;y<u;y++)f+=Number(s[y]);return f}let i=t;if(i<0&&(i=a+i),i<0||i>=a)throw new Error(`axis ${t} is out of bounds for array of dimension ${a}`);let c=Array.from(o).filter((f,y)=>y!==i);if(c.length===0)return Zr(r);let l=x.zeros(c,n),m=l.data,d=o[i],p=c.reduce((f,y)=>f*y,1);if(M(n)){let f=s,y=m;for(let g=0;g<p;g++){let h=0,b=0;for(let A=0;A<d;A++){let S=$(g,i,A,o),D=U(S,o);h+=f[D*2],b+=f[D*2+1]}y[g*2]=h,y[g*2+1]=b}}else if(B(n)){let f=s,y=m;for(let g=0;g<p;g++){let h=BigInt(0);for(let b=0;b<d;b++){let A=$(g,i,b,o),S=U(A,o);h+=f[S]}y[g]=h}}else for(let f=0;f<p;f++){let y=0;for(let g=0;g<d;g++){let h=$(f,i,g,o),b=U(h,o);y+=Number(s[b])}m[f]=y}if(e){let f=[...o];return f[i]=1,x.fromData(m,f,n)}return l}function yt(r,t,e=!1){let n=r.dtype,o=r.shape;if(t===void 0){let d=Zr(r);return d instanceof O?new O(d.re/r.size,d.im/r.size):d/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 u=Zr(r,t,e);if(typeof u=="number")return u/o[a];if(u instanceof O)return new O(u.re/o[a],u.im/o[a]);let s=o[a],i=n;M(n)?i=n:(B(n)||n.startsWith("int")||n.startsWith("uint"))&&(i="float64");let c=x.zeros(Array.from(u.shape),i),l=c.data,m=u.data;if(M(n)){let d=m,p=l,f=u.size;for(let y=0;y<f;y++)p[y*2]=d[y*2]/s,p[y*2+1]=d[y*2+1]/s}else if(B(n)){let d=m;for(let p=0;p<l.length;p++)l[p]=Number(d[p])/s}else for(let d=0;d<l.length;d++)l[d]=Number(m[d])/s;return c}function Or(r,t,e=!1){let n=r.dtype,o=r.shape,a=o.length,u=r.size,s=r.data;if(M(n)){let f=s;if(t===void 0){if(u===0)throw new Error("max of empty array");let D=f[0],w=f[1];for(let N=1;N<u;N++){let I=f[N*2],z=f[N*2+1];if(isNaN(I)||isNaN(z))return new O(NaN,NaN);(I>D||I===D&&z>w)&&(D=I,w=z)}return isNaN(D)||isNaN(w)?new O(NaN,NaN):new O(D,w)}let y=t;if(y<0&&(y=a+y),y<0||y>=a)throw new Error(`axis ${t} is out of bounds for array of dimension ${a}`);let g=Array.from(o).filter((D,w)=>w!==y);if(g.length===0)return Or(r);let h=x.zeros(g,n),b=h.data,A=o[y],S=g.reduce((D,w)=>D*w,1);for(let D=0;D<S;D++){let w=$(D,y,0,o),N=U(w,o),I=f[N*2],z=f[N*2+1];for(let F=1;F<A;F++){let _=$(D,y,F,o),E=U(_,o),T=f[E*2],C=f[E*2+1];if(isNaN(T)||isNaN(C)){I=NaN,z=NaN;break}(T>I||T===I&&C>z)&&(I=T,z=C)}b[D*2]=I,b[D*2+1]=z}if(e){let D=[...o];return D[y]=1,x.fromData(b,D,n)}return h}if(t===void 0){if(u===0)throw new Error("max of empty array");let f=s[0];for(let y=1;y<u;y++)s[y]>f&&(f=s[y]);return Number(f)}let i=t;if(i<0&&(i=a+i),i<0||i>=a)throw new Error(`axis ${t} is out of bounds for array of dimension ${a}`);let c=Array.from(o).filter((f,y)=>y!==i);if(c.length===0)return Or(r);let l=x.zeros(c,n),m=l.data,d=o[i],p=c.reduce((f,y)=>f*y,1);if(B(n)){let f=s,y=m;for(let g=0;g<p;g++){let h=$(g,i,0,o),b=U(h,o),A=f[b];for(let S=1;S<d;S++){let D=$(g,i,S,o),w=U(D,o),N=f[w];N>A&&(A=N)}y[g]=A}}else for(let f=0;f<p;f++){let y=-1/0;for(let g=0;g<d;g++){let h=$(f,i,g,o),b=U(h,o),A=Number(s[b]);A>y&&(y=A)}m[f]=y}if(e){let f=[...o];return f[i]=1,x.fromData(m,f,n)}return l}function jt(r,t,e=!1){let n=r.dtype,o=r.shape,a=o.length,u=r.size,s=r.data;if(t===void 0)if(M(n)){let f=s,y=1,g=0;for(let h=0;h<u;h++){let b=f[h*2],A=f[h*2+1],S=y*b-g*A,D=y*A+g*b;y=S,g=D}return new O(y,g)}else if(B(n)){let f=s,y=BigInt(1);for(let g=0;g<u;g++)y*=f[g];return Number(y)}else{let f=1;for(let y=0;y<u;y++)f*=Number(s[y]);return f}let i=t;if(i<0&&(i=a+i),i<0||i>=a)throw new Error(`axis ${t} is out of bounds for array of dimension ${a}`);let c=Array.from(o).filter((f,y)=>y!==i);if(c.length===0)return jt(r);let l=x.zeros(c,n),m=l.data,d=o[i],p=c.reduce((f,y)=>f*y,1);if(M(n)){let f=s,y=m;for(let g=0;g<p;g++){let h=1,b=0;for(let A=0;A<d;A++){let S=$(g,i,A,o),D=U(S,o),w=f[D*2],N=f[D*2+1],I=h*w-b*N,z=h*N+b*w;h=I,b=z}y[g*2]=h,y[g*2+1]=b}}else if(B(n)){let f=s,y=m;for(let g=0;g<p;g++){let h=BigInt(1);for(let b=0;b<d;b++){let A=$(g,i,b,o),S=U(A,o);h*=f[S]}y[g]=h}}else for(let f=0;f<p;f++){let y=1;for(let g=0;g<d;g++){let h=$(f,i,g,o),b=U(h,o);y*=Number(s[b])}m[f]=y}if(e){let f=[...o];return f[i]=1,x.fromData(m,f,n)}return l}function Cr(r,t,e=!1){let n=r.dtype,o=r.shape,a=o.length,u=r.size,s=r.data;if(M(n)){let f=s;if(t===void 0){if(u===0)throw new Error("min of empty array");let D=f[0],w=f[1];for(let N=1;N<u;N++){let I=f[N*2],z=f[N*2+1];if(isNaN(I)||isNaN(z))return new O(NaN,NaN);(I<D||I===D&&z<w)&&(D=I,w=z)}return isNaN(D)||isNaN(w)?new O(NaN,NaN):new O(D,w)}let y=t;if(y<0&&(y=a+y),y<0||y>=a)throw new Error(`axis ${t} is out of bounds for array of dimension ${a}`);let g=Array.from(o).filter((D,w)=>w!==y);if(g.length===0)return Cr(r);let h=x.zeros(g,n),b=h.data,A=o[y],S=g.reduce((D,w)=>D*w,1);for(let D=0;D<S;D++){let w=$(D,y,0,o),N=U(w,o),I=f[N*2],z=f[N*2+1];for(let F=1;F<A;F++){let _=$(D,y,F,o),E=U(_,o),T=f[E*2],C=f[E*2+1];if(isNaN(T)||isNaN(C)){I=NaN,z=NaN;break}(T<I||T===I&&C<z)&&(I=T,z=C)}b[D*2]=I,b[D*2+1]=z}if(e){let D=[...o];return D[y]=1,x.fromData(b,D,n)}return h}if(t===void 0){if(u===0)throw new Error("min of empty array");let f=s[0];for(let y=1;y<u;y++)s[y]<f&&(f=s[y]);return Number(f)}let i=t;if(i<0&&(i=a+i),i<0||i>=a)throw new Error(`axis ${t} is out of bounds for array of dimension ${a}`);let c=Array.from(o).filter((f,y)=>y!==i);if(c.length===0)return Cr(r);let l=x.zeros(c,n),m=l.data,d=o[i],p=c.reduce((f,y)=>f*y,1);if(B(n)){let f=s,y=m;for(let g=0;g<p;g++){let h=$(g,i,0,o),b=U(h,o),A=f[b];for(let S=1;S<d;S++){let D=$(g,i,S,o),w=U(D,o),N=f[w];N<A&&(A=N)}y[g]=A}}else for(let f=0;f<p;f++){let y=1/0;for(let g=0;g<d;g++){let h=$(f,i,g,o),b=U(h,o),A=Number(s[b]);A<y&&(y=A)}m[f]=y}if(e){let f=[...o];return f[i]=1,x.fromData(m,f,n)}return l}function zr(r,t,e,n){return r<e?-1:r>e?1:t<n?-1:t>n?1:0}function Pt(r,t){let e=r.dtype,n=M(e),o=r.shape,a=o.length,u=r.size,s=r.data;if(t===void 0){if(u===0)throw new Error("argmin of empty array");if(n){let g=s,h=g[0],b=g[1],A=0;for(let S=1;S<u;S++){let D=g[S*2],w=g[S*2+1];zr(D,w,h,b)<0&&(h=D,b=w,A=S)}return A}let f=s[0],y=0;for(let g=1;g<u;g++)s[g]<f&&(f=s[g],y=g);return y}let i=t;if(i<0&&(i=a+i),i<0||i>=a)throw new Error(`axis ${t} is out of bounds for array of dimension ${a}`);let c=Array.from(o).filter((f,y)=>y!==i);if(c.length===0)return Pt(r);let l=x.zeros(c,"int32"),m=l.data,d=o[i],p=c.reduce((f,y)=>f*y,1);if(n){let f=s;for(let y=0;y<p;y++){let g=$(y,i,0,o),h=U(g,o),b=f[h*2],A=f[h*2+1],S=0;for(let D=1;D<d;D++){let w=$(y,i,D,o),N=U(w,o),I=f[N*2],z=f[N*2+1];zr(I,z,b,A)<0&&(b=I,A=z,S=D)}m[y]=S}}else if(B(e)){let f=s;for(let y=0;y<p;y++){let g=$(y,i,0,o),h=U(g,o),b=f[h],A=0;for(let S=1;S<d;S++){let D=$(y,i,S,o),w=U(D,o),N=f[w];N<b&&(b=N,A=S)}m[y]=A}}else for(let f=0;f<p;f++){let y=1/0,g=0;for(let h=0;h<d;h++){let b=$(f,i,h,o),A=U(b,o),S=Number(s[A]);S<y&&(y=S,g=h)}m[f]=g}return l}function Lt(r,t){let e=r.dtype,n=M(e),o=r.shape,a=o.length,u=r.size,s=r.data;if(t===void 0){if(u===0)throw new Error("argmax of empty array");if(n){let g=s,h=g[0],b=g[1],A=0;for(let S=1;S<u;S++){let D=g[S*2],w=g[S*2+1];zr(D,w,h,b)>0&&(h=D,b=w,A=S)}return A}let f=s[0],y=0;for(let g=1;g<u;g++)s[g]>f&&(f=s[g],y=g);return y}let i=t;if(i<0&&(i=a+i),i<0||i>=a)throw new Error(`axis ${t} is out of bounds for array of dimension ${a}`);let c=Array.from(o).filter((f,y)=>y!==i);if(c.length===0)return Lt(r);let l=x.zeros(c,"int32"),m=l.data,d=o[i],p=c.reduce((f,y)=>f*y,1);if(n){let f=s;for(let y=0;y<p;y++){let g=$(y,i,0,o),h=U(g,o),b=f[h*2],A=f[h*2+1],S=0;for(let D=1;D<d;D++){let w=$(y,i,D,o),N=U(w,o),I=f[N*2],z=f[N*2+1];zr(I,z,b,A)>0&&(b=I,A=z,S=D)}m[y]=S}}else if(B(e)){let f=s;for(let y=0;y<p;y++){let g=$(y,i,0,o),h=U(g,o),b=f[h],A=0;for(let S=1;S<d;S++){let D=$(y,i,S,o),w=U(D,o),N=f[w];N>b&&(b=N,A=S)}m[y]=A}}else for(let f=0;f<p;f++){let y=-1/0,g=0;for(let h=0;h<d;h++){let b=$(f,i,h,o),A=U(b,o),S=Number(s[A]);S>y&&(y=S,g=h)}m[f]=g}return l}function Zt(r,t,e=0,n=!1){let o=r.dtype,a=r.shape,u=a.length,s=r.size,i=r.data,c=yt(r,t,n);if(t===void 0){if(M(o)){let S=i,D=c,w=0;for(let N=0;N<s;N++){let I=S[N*2],z=S[N*2+1],F=I-D.re,_=z-D.im;w+=F*F+_*_}return w/(s-e)}let b=c,A=0;for(let S=0;S<s;S++){let D=Number(i[S])-b;A+=D*D}return A/(s-e)}let l=t;if(l<0&&(l=u+l),l<0||l>=u)throw new Error(`axis ${t} is out of bounds for array of dimension ${u}`);let m=a[l],d=c,p=d.data,f=n?d.shape:Array.from(a).filter((b,A)=>A!==l),y=x.zeros(Array.from(f),"float64"),g=y.data,h=f.reduce((b,A)=>b*A,1);if(M(o)){let b=i,A=p;for(let S=0;S<h;S++){let D=0,w=A[S*2],N=A[S*2+1];for(let I=0;I<m;I++){let z=$(S,l,I,a),F=U(z,a),_=b[F*2],E=b[F*2+1],T=_-w,C=E-N;D+=T*T+C*C}g[S]=D/(m-e)}}else for(let b=0;b<h;b++){let A=0,S=Number(p[b]);for(let D=0;D<m;D++){let w=$(b,l,D,a),N=U(w,a),I=Number(i[N])-S;A+=I*I}g[b]=A/(m-e)}return y}function Un(r,t,e=0,n=!1){let o=Zt(r,t,e,n);if(typeof o=="number")return Math.sqrt(o);let a=x.zeros(Array.from(o.shape),"float64"),u=o.data,s=a.data;for(let i=0;i<u.length;i++)s[i]=Math.sqrt(Number(u[i]));return a}function Gt(r,t,e=!1){let n=r.shape,o=n.length,a=r.size,u=r.data;if(t===void 0){for(let p=0;p<a;p++)if(!u[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 i=Array.from(n).filter((p,f)=>f!==s);if(i.length===0)return Gt(r);let c=x.zeros(i,"bool"),l=c.data,m=n[s],d=i.reduce((p,f)=>p*f,1);for(let p=0;p<d;p++){let f=!0;for(let y=0;y<m;y++){let g=$(p,s,y,n),h=U(g,n);if(!u[h]){f=!1;break}}l[p]=f?1:0}if(e){let p=[...n];return p[s]=1,x.fromData(l,p,"bool")}return c}function Wt(r,t,e=!1){let n=r.shape,o=n.length,a=r.size,u=r.data;if(t===void 0){for(let p=0;p<a;p++)if(u[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 i=Array.from(n).filter((p,f)=>f!==s);if(i.length===0)return Wt(r);let c=x.zeros(i,"bool"),l=c.data,m=n[s],d=i.reduce((p,f)=>p*f,1);for(let p=0;p<d;p++){let f=!1;for(let y=0;y<m;y++){let g=$(p,s,y,n),h=U(g,n);if(u[h]){f=!0;break}}l[p]=f?1:0}if(e){let p=[...n];return p[s]=1,x.fromData(l,p,"bool")}return c}function Yt(r,t){let e=r.dtype,n=r.shape,o=n.length,a=r.data;if(M(e)){let p=a,f=r.size;if(t===void 0){let N=x.zeros([f],e),I=N.data,z=0,F=0;for(let _=0;_<f;_++)z+=p[_*2],F+=p[_*2+1],I[_*2]=z,I[_*2+1]=F;return N}let y=t;if(y<0&&(y=o+y),y<0||y>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);let g=x.zeros([...n],e),h=g.data,b=n[y],A=[],S=1;for(let N=o-1;N>=0;N--)A.unshift(S),S*=n[N];let D=r.size,w=A[y];for(let N=0;N<D;N++)Math.floor(N/w)%b===0?(h[N*2]=p[N*2],h[N*2+1]=p[N*2+1]):(h[N*2]=h[(N-w)*2]+p[N*2],h[N*2+1]=h[(N-w)*2+1]+p[N*2+1]);return g}if(t===void 0){let p=r.size,f=new Float64Array(p),y=0;for(let g=0;g<p;g++)y+=Number(a[g]),f[g]=y;return x.fromData(f,[p],"float64")}let u=t;if(u<0&&(u=o+u),u<0||u>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);let s=new Float64Array(r.size),i=n[u],c=[],l=1;for(let p=o-1;p>=0;p--)c.unshift(l),l*=n[p];let m=r.size,d=c[u];for(let p=0;p<m;p++)Math.floor(p/d)%i===0?s[p]=Number(a[p]):s[p]=s[p-d]+Number(a[p]);return x.fromData(s,[...n],"float64")}function Ht(r,t){let e=r.dtype,n=r.shape,o=n.length,a=r.data;if(M(e)){let p=a,f=r.size;if(t===void 0){let N=x.zeros([f],e),I=N.data,z=1,F=0;for(let _=0;_<f;_++){let E=p[_*2],T=p[_*2+1],C=z*E-F*T,k=z*T+F*E;z=C,F=k,I[_*2]=z,I[_*2+1]=F}return N}let y=t;if(y<0&&(y=o+y),y<0||y>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);let g=x.zeros([...n],e),h=g.data,b=n[y],A=[],S=1;for(let N=o-1;N>=0;N--)A.unshift(S),S*=n[N];let D=r.size,w=A[y];for(let N=0;N<D;N++)if(Math.floor(N/w)%b===0)h[N*2]=p[N*2],h[N*2+1]=p[N*2+1];else{let z=h[(N-w)*2],F=h[(N-w)*2+1],_=p[N*2],E=p[N*2+1];h[N*2]=z*_-F*E,h[N*2+1]=z*E+F*_}return g}if(t===void 0){let p=r.size,f=new Float64Array(p),y=1;for(let g=0;g<p;g++)y*=Number(a[g]),f[g]=y;return x.fromData(f,[p],"float64")}let u=t;if(u<0&&(u=o+u),u<0||u>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);let s=new Float64Array(r.size),i=n[u],c=[],l=1;for(let p=o-1;p>=0;p--)c.unshift(l),l*=n[p];let m=r.size,d=c[u];for(let p=0;p<m;p++)Math.floor(p/d)%i===0?s[p]=Number(a[p]):s[p]=s[p-d]*Number(a[p]);return x.fromData(s,[...n],"float64")}function Jt(r,t,e=!1){let n=r.dtype;if(M(n)){let m=Or(r,t,e),d=Cr(r,t,e);if(m instanceof O&&d instanceof O)return new O(m.re-d.re,m.im-d.im);let p=m,f=d,y=p.data,g=f.data,h=new Float64Array(p.size*2);for(let b=0;b<p.size;b++)h[b*2]=y[b*2]-g[b*2],h[b*2+1]=y[b*2+1]-g[b*2+1];return x.fromData(h,[...p.shape],n)}let o=Or(r,t,e),a=Cr(r,t,e);if(typeof o=="number"&&typeof a=="number")return o-a;let u=o,s=a,i=u.data,c=s.data,l=new Float64Array(u.size);for(let m=0;m<u.size;m++)l[m]=Number(i[m])-Number(c[m]);return x.fromData(l,[...u.shape],"float64")}function Xt(r,t,e=!1){return $r(r,.5,t,e)}function Qt(r,t,e,n=!1){return $r(r,t/100,e,n)}function $r(r,t,e,n=!1){if(q(r.dtype,"quantile","Complex numbers are not orderable."),t<0||t>1)throw new Error("Quantile must be between 0 and 1");let o=r.shape,a=o.length,u=r.data;if(e===void 0){let p=[];for(let A=0;A<r.size;A++)p.push(Number(u[A]));p.sort((A,S)=>A-S);let f=p.length,y=t*(f-1),g=Math.floor(y),h=Math.ceil(y);if(g===h)return p[g];let b=y-g;return p[g]*(1-b)+p[h]*b}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 i=Array.from(o).filter((p,f)=>f!==s);if(i.length===0)return $r(r,t);let c=i.reduce((p,f)=>p*f,1),l=o[s],m=new Float64Array(c);for(let p=0;p<c;p++){let f=[];for(let A=0;A<l;A++){let S=$(p,s,A,o),D=U(S,o);f.push(Number(u[D]))}f.sort((A,S)=>A-S);let y=f.length,g=t*(y-1),h=Math.floor(g),b=Math.ceil(g);if(h===b)m[p]=f[h];else{let A=g-h;m[p]=f[h]*(1-A)+f[b]*A}}let d=x.fromData(m,i,"float64");if(n){let p=[...o];return p[s]=1,x.fromData(m,p,"float64")}return d}function Gr(r,t,e,n=!1){let o=r.dtype,a=r.shape,u=a.length,s=r.data;if(e===void 0)return yt(r,t,n);if(M(o)){let y=s,g=e.data;if(t===void 0){let N=0,I=0,z=0;for(let F=0;F<r.size;F++){let _=Number(g[F%e.size]),E=y[F*2],T=y[F*2+1];N+=E*_,I+=T*_,z+=_}return z===0?new O(NaN,NaN):new O(N/z,I/z)}let h=t;if(h<0&&(h=u+h),h<0||h>=u)throw new Error(`axis ${t} is out of bounds for array of dimension ${u}`);let b=Array.from(a).filter((N,I)=>I!==h);if(b.length===0)return Gr(r,void 0,e);let A=b.reduce((N,I)=>N*I,1),S=a[h],D=x.zeros(b,o),w=D.data;for(let N=0;N<A;N++){let I=0,z=0,F=0;for(let _=0;_<S;_++){let E=$(N,h,_,a),T=U(E,a),C=Number(g[_%e.size]),k=y[T*2],V=y[T*2+1];I+=k*C,z+=V*C,F+=C}F===0?(w[N*2]=NaN,w[N*2+1]=NaN):(w[N*2]=I/F,w[N*2+1]=z/F)}if(n){let N=[...a];return N[h]=1,x.fromData(w,N,o)}return D}if(t===void 0){let y=0,g=0,h=e.data;for(let b=0;b<r.size;b++){let A=Number(h[b%e.size]);y+=Number(s[b])*A,g+=A}return g===0?NaN:y/g}let i=t;if(i<0&&(i=u+i),i<0||i>=u)throw new Error(`axis ${t} is out of bounds for array of dimension ${u}`);let c=Array.from(a).filter((y,g)=>g!==i);if(c.length===0)return Gr(r,void 0,e);let l=c.reduce((y,g)=>y*g,1),m=a[i],d=e.data,p=new Float64Array(l);for(let y=0;y<l;y++){let g=0,h=0;for(let b=0;b<m;b++){let A=$(y,i,b,a),S=U(A,a),D=Number(d[b%e.size]);g+=Number(s[S])*D,h+=D}p[y]=h===0?NaN:g/h}let f=x.fromData(p,c,"float64");if(n){let y=[...a];return y[i]=1,x.fromData(p,y,"float64")}return f}function K(r,t){return isNaN(r)||isNaN(t)}function pt(r,t,e=!1){let n=r.dtype,o=M(n),a=r.shape,u=a.length,s=r.data;if(t===void 0){if(o){let y=s,g=0,h=0;for(let b=0;b<r.size;b++){let A=y[b*2],S=y[b*2+1];K(A,S)||(g+=A,h+=S)}return new O(g,h)}let f=0;for(let y=0;y<r.size;y++){let g=Number(s[y]);isNaN(g)||(f+=g)}return f}let i=t;if(i<0&&(i=u+i),i<0||i>=u)throw new Error(`axis ${t} is out of bounds for array of dimension ${u}`);let c=Array.from(a).filter((f,y)=>y!==i);if(c.length===0)return pt(r);let l=c.reduce((f,y)=>f*y,1),m=a[i];if(o){let f=s,y=new Float64Array(l*2);for(let g=0;g<l;g++){let h=0,b=0;for(let A=0;A<m;A++){let S=$(g,i,A,a),D=U(S,a),w=f[D*2],N=f[D*2+1];K(w,N)||(h+=w,b+=N)}y[g*2]=h,y[g*2+1]=b}if(e){let g=[...a];return g[i]=1,x.fromData(y,g,n)}return x.fromData(y,c,n)}let d=new Float64Array(l);for(let f=0;f<l;f++){let y=0;for(let g=0;g<m;g++){let h=$(f,i,g,a),b=U(h,a),A=Number(s[b]);isNaN(A)||(y+=A)}d[f]=y}let p=x.fromData(d,c,"float64");if(e){let f=[...a];return f[i]=1,x.fromData(d,f,"float64")}return p}function dt(r,t,e=!1){let n=r.dtype,o=M(n),a=r.shape,u=a.length,s=r.data;if(t===void 0){if(o){let y=s,g=1,h=0;for(let b=0;b<r.size;b++){let A=y[b*2],S=y[b*2+1];if(!K(A,S)){let D=g*A-h*S,w=g*S+h*A;g=D,h=w}}return new O(g,h)}let f=1;for(let y=0;y<r.size;y++){let g=Number(s[y]);isNaN(g)||(f*=g)}return f}let i=t;if(i<0&&(i=u+i),i<0||i>=u)throw new Error(`axis ${t} is out of bounds for array of dimension ${u}`);let c=Array.from(a).filter((f,y)=>y!==i);if(c.length===0)return dt(r);let l=c.reduce((f,y)=>f*y,1),m=a[i];if(o){let f=s,y=new Float64Array(l*2);for(let g=0;g<l;g++){let h=1,b=0;for(let A=0;A<m;A++){let S=$(g,i,A,a),D=U(S,a),w=f[D*2],N=f[D*2+1];if(!K(w,N)){let I=h*w-b*N,z=h*N+b*w;h=I,b=z}}y[g*2]=h,y[g*2+1]=b}if(e){let g=[...a];return g[i]=1,x.fromData(y,g,n)}return x.fromData(y,c,n)}let d=new Float64Array(l);for(let f=0;f<l;f++){let y=1;for(let g=0;g<m;g++){let h=$(f,i,g,a),b=U(h,a),A=Number(s[b]);isNaN(A)||(y*=A)}d[f]=y}let p=x.fromData(d,c,"float64");if(e){let f=[...a];return f[i]=1,x.fromData(d,f,"float64")}return p}function gt(r,t,e=!1){let n=r.dtype,o=M(n),a=r.shape,u=a.length,s=r.data;if(t===void 0){if(o){let g=s,h=0,b=0,A=0;for(let S=0;S<r.size;S++){let D=g[S*2],w=g[S*2+1];K(D,w)||(h+=D,b+=w,A++)}return A===0?new O(NaN,NaN):new O(h/A,b/A)}let f=0,y=0;for(let g=0;g<r.size;g++){let h=Number(s[g]);isNaN(h)||(f+=h,y++)}return y===0?NaN:f/y}let i=t;if(i<0&&(i=u+i),i<0||i>=u)throw new Error(`axis ${t} is out of bounds for array of dimension ${u}`);let c=Array.from(a).filter((f,y)=>y!==i);if(c.length===0)return gt(r);let l=c.reduce((f,y)=>f*y,1),m=a[i];if(o){let f=s,y=new Float64Array(l*2);for(let g=0;g<l;g++){let h=0,b=0,A=0;for(let S=0;S<m;S++){let D=$(g,i,S,a),w=U(D,a),N=f[w*2],I=f[w*2+1];K(N,I)||(h+=N,b+=I,A++)}A===0?(y[g*2]=NaN,y[g*2+1]=NaN):(y[g*2]=h/A,y[g*2+1]=b/A)}if(e){let g=[...a];return g[i]=1,x.fromData(y,g,n)}return x.fromData(y,c,n)}let d=new Float64Array(l);for(let f=0;f<l;f++){let y=0,g=0;for(let h=0;h<m;h++){let b=$(f,i,h,a),A=U(b,a),S=Number(s[A]);isNaN(S)||(y+=S,g++)}d[f]=g===0?NaN:y/g}let p=x.fromData(d,c,"float64");if(e){let f=[...a];return f[i]=1,x.fromData(d,f,"float64")}return p}function Ur(r,t,e=0,n=!1){let o=r.dtype,a=r.shape,u=a.length,s=r.data;if(M(o)){let f=s;if(t===void 0){let D=0,w=0,N=0;for(let _=0;_<r.size;_++){let E=f[_*2],T=f[_*2+1];K(E,T)||(D+=E,w+=T,N++)}if(N-e<=0)return NaN;let I=D/N,z=w/N,F=0;for(let _=0;_<r.size;_++){let E=f[_*2],T=f[_*2+1];if(!K(E,T)){let C=E-I,k=T-z;F+=C*C+k*k}}return F/(N-e)}let y=t;if(y<0&&(y=u+y),y<0||y>=u)throw new Error(`axis ${t} is out of bounds for array of dimension ${u}`);let g=Array.from(a).filter((D,w)=>w!==y);if(g.length===0)return Ur(r,void 0,e);let h=g.reduce((D,w)=>D*w,1),b=a[y],A=new Float64Array(h);for(let D=0;D<h;D++){let w=0,N=0,I=0;for(let E=0;E<b;E++){let T=$(D,y,E,a),C=U(T,a),k=f[C*2],V=f[C*2+1];K(k,V)||(w+=k,N+=V,I++)}if(I-e<=0){A[D]=NaN;continue}let z=w/I,F=N/I,_=0;for(let E=0;E<b;E++){let T=$(D,y,E,a),C=U(T,a),k=f[C*2],V=f[C*2+1];if(!K(k,V)){let R=k-z,L=V-F;_+=R*R+L*L}}A[D]=_/(I-e)}let S=x.fromData(A,g,"float64");if(n){let D=[...a];return D[y]=1,x.fromData(A,D,"float64")}return S}if(t===void 0){let f=0,y=0;for(let b=0;b<r.size;b++){let A=Number(s[b]);isNaN(A)||(f+=A,y++)}if(y-e<=0)return NaN;let g=f/y,h=0;for(let b=0;b<r.size;b++){let A=Number(s[b]);isNaN(A)||(h+=(A-g)**2)}return h/(y-e)}let i=t;if(i<0&&(i=u+i),i<0||i>=u)throw new Error(`axis ${t} is out of bounds for array of dimension ${u}`);let c=Array.from(a).filter((f,y)=>y!==i);if(c.length===0)return Ur(r,void 0,e);let l=c.reduce((f,y)=>f*y,1),m=a[i],d=new Float64Array(l);for(let f=0;f<l;f++){let y=0,g=0;for(let A=0;A<m;A++){let S=$(f,i,A,a),D=U(S,a),w=Number(s[D]);isNaN(w)||(y+=w,g++)}if(g-e<=0){d[f]=NaN;continue}let h=y/g,b=0;for(let A=0;A<m;A++){let S=$(f,i,A,a),D=U(S,a),w=Number(s[D]);isNaN(w)||(b+=(w-h)**2)}d[f]=b/(g-e)}let p=x.fromData(d,c,"float64");if(n){let f=[...a];return f[i]=1,x.fromData(d,f,"float64")}return p}function Kt(r,t,e=0,n=!1){let o=Ur(r,t,e,n);if(typeof o=="number")return Math.sqrt(o);let a=o,u=new Float64Array(a.size);for(let s=0;s<a.size;s++)u[s]=Math.sqrt(Number(a.data[s]));return x.fromData(u,[...a.shape],"float64")}function Wr(r,t,e=!1){let n=r.dtype,o=r.shape,a=o.length,u=r.data;if(M(n)){let p=u;if(t===void 0){let S=1/0,D=1/0,w=!1;for(let N=0;N<r.size;N++){let I=p[N*2],z=p[N*2+1];isNaN(I)||isNaN(z)||(w?(I<S||I===S&&z<D)&&(S=I,D=z):(S=I,D=z,w=!0))}return w?new O(S,D):new O(NaN,NaN)}let f=t;if(f<0&&(f=a+f),f<0||f>=a)throw new Error(`axis ${t} is out of bounds for array of dimension ${a}`);let y=Array.from(o).filter((S,D)=>D!==f);if(y.length===0)return Wr(r);let g=y.reduce((S,D)=>S*D,1),h=o[f],b=new Float64Array(g*2);for(let S=0;S<g;S++){let D=1/0,w=1/0,N=!1;for(let I=0;I<h;I++){let z=$(S,f,I,o),F=U(z,o),_=p[F*2],E=p[F*2+1];isNaN(_)||isNaN(E)||(N?(_<D||_===D&&E<w)&&(D=_,w=E):(D=_,w=E,N=!0))}b[S*2]=N?D:NaN,b[S*2+1]=N?w:NaN}let A=x.fromData(b,y,n);if(e){let S=[...o];return S[f]=1,x.fromData(b,S,n)}return A}if(t===void 0){let p=1/0;for(let f=0;f<r.size;f++){let y=Number(u[f]);!isNaN(y)&&y<p&&(p=y)}return p===1/0?NaN:p}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 i=Array.from(o).filter((p,f)=>f!==s);if(i.length===0)return Wr(r);let c=i.reduce((p,f)=>p*f,1),l=o[s],m=new Float64Array(c);for(let p=0;p<c;p++){let f=1/0;for(let y=0;y<l;y++){let g=$(p,s,y,o),h=U(g,o),b=Number(u[h]);!isNaN(b)&&b<f&&(f=b)}m[p]=f===1/0?NaN:f}let d=x.fromData(m,i,"float64");if(e){let p=[...o];return p[s]=1,x.fromData(m,p,"float64")}return d}function Yr(r,t,e=!1){let n=r.dtype,o=r.shape,a=o.length,u=r.data;if(M(n)){let p=u;if(t===void 0){let S=-1/0,D=-1/0,w=!1;for(let N=0;N<r.size;N++){let I=p[N*2],z=p[N*2+1];isNaN(I)||isNaN(z)||(w?(I>S||I===S&&z>D)&&(S=I,D=z):(S=I,D=z,w=!0))}return w?new O(S,D):new O(NaN,NaN)}let f=t;if(f<0&&(f=a+f),f<0||f>=a)throw new Error(`axis ${t} is out of bounds for array of dimension ${a}`);let y=Array.from(o).filter((S,D)=>D!==f);if(y.length===0)return Yr(r);let g=y.reduce((S,D)=>S*D,1),h=o[f],b=new Float64Array(g*2);for(let S=0;S<g;S++){let D=-1/0,w=-1/0,N=!1;for(let I=0;I<h;I++){let z=$(S,f,I,o),F=U(z,o),_=p[F*2],E=p[F*2+1];isNaN(_)||isNaN(E)||(N?(_>D||_===D&&E>w)&&(D=_,w=E):(D=_,w=E,N=!0))}b[S*2]=N?D:NaN,b[S*2+1]=N?w:NaN}let A=x.fromData(b,y,n);if(e){let S=[...o];return S[f]=1,x.fromData(b,S,n)}return A}if(t===void 0){let p=-1/0;for(let f=0;f<r.size;f++){let y=Number(u[f]);!isNaN(y)&&y>p&&(p=y)}return p===-1/0?NaN:p}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 i=Array.from(o).filter((p,f)=>f!==s);if(i.length===0)return Yr(r);let c=i.reduce((p,f)=>p*f,1),l=o[s],m=new Float64Array(c);for(let p=0;p<c;p++){let f=-1/0;for(let y=0;y<l;y++){let g=$(p,s,y,o),h=U(g,o),b=Number(u[h]);!isNaN(b)&&b>f&&(f=b)}m[p]=f===-1/0?NaN:f}let d=x.fromData(m,i,"float64");if(e){let p=[...o];return p[s]=1,x.fromData(m,p,"float64")}return d}function Hr(r,t){let e=r.dtype,n=r.shape,o=n.length,a=r.data;if(M(e)){let m=a;if(t===void 0){let h=1/0,b=1/0,A=-1;for(let S=0;S<r.size;S++){let D=m[S*2],w=m[S*2+1];!K(D,w)&&zr(D,w,h,b)<0&&(h=D,b=w,A=S)}return A}let d=t;if(d<0&&(d=o+d),d<0||d>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);let p=Array.from(n).filter((h,b)=>b!==d);if(p.length===0)return Hr(r);let f=p.reduce((h,b)=>h*b,1),y=n[d],g=new Int32Array(f);for(let h=0;h<f;h++){let b=1/0,A=1/0,S=0;for(let D=0;D<y;D++){let w=$(h,d,D,n),N=U(w,n),I=m[N*2],z=m[N*2+1];!K(I,z)&&zr(I,z,b,A)<0&&(b=I,A=z,S=D)}g[h]=S}return x.fromData(g,p,"int32")}if(t===void 0){let m=1/0,d=-1;for(let p=0;p<r.size;p++){let f=Number(a[p]);!isNaN(f)&&f<m&&(m=f,d=p)}return d}let u=t;if(u<0&&(u=o+u),u<0||u>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);let s=Array.from(n).filter((m,d)=>d!==u);if(s.length===0)return Hr(r);let i=s.reduce((m,d)=>m*d,1),c=n[u],l=new Int32Array(i);for(let m=0;m<i;m++){let d=1/0,p=0;for(let f=0;f<c;f++){let y=$(m,u,f,n),g=U(y,n),h=Number(a[g]);!isNaN(h)&&h<d&&(d=h,p=f)}l[m]=p}return x.fromData(l,s,"int32")}function Jr(r,t){let e=r.dtype,n=r.shape,o=n.length,a=r.data;if(M(e)){let m=a;if(t===void 0){let h=-1/0,b=-1/0,A=-1;for(let S=0;S<r.size;S++){let D=m[S*2],w=m[S*2+1];!K(D,w)&&zr(D,w,h,b)>0&&(h=D,b=w,A=S)}return A}let d=t;if(d<0&&(d=o+d),d<0||d>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);let p=Array.from(n).filter((h,b)=>b!==d);if(p.length===0)return Jr(r);let f=p.reduce((h,b)=>h*b,1),y=n[d],g=new Int32Array(f);for(let h=0;h<f;h++){let b=-1/0,A=-1/0,S=0;for(let D=0;D<y;D++){let w=$(h,d,D,n),N=U(w,n),I=m[N*2],z=m[N*2+1];!K(I,z)&&zr(I,z,b,A)>0&&(b=I,A=z,S=D)}g[h]=S}return x.fromData(g,p,"int32")}if(t===void 0){let m=-1/0,d=-1;for(let p=0;p<r.size;p++){let f=Number(a[p]);!isNaN(f)&&f>m&&(m=f,d=p)}return d}let u=t;if(u<0&&(u=o+u),u<0||u>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);let s=Array.from(n).filter((m,d)=>d!==u);if(s.length===0)return Jr(r);let i=s.reduce((m,d)=>m*d,1),c=n[u],l=new Int32Array(i);for(let m=0;m<i;m++){let d=-1/0,p=0;for(let f=0;f<c;f++){let y=$(m,u,f,n),g=U(y,n),h=Number(a[g]);!isNaN(h)&&h>d&&(d=h,p=f)}l[m]=p}return x.fromData(l,s,"int32")}function re(r,t){let e=r.dtype,n=r.shape,o=n.length,a=r.data;if(M(e)){let p=a,f=r.size;if(t===void 0){let N=x.zeros([f],e),I=N.data,z=0,F=0;for(let _=0;_<f;_++){let E=p[_*2],T=p[_*2+1];K(E,T)||(z+=E,F+=T),I[_*2]=z,I[_*2+1]=F}return N}let y=t;if(y<0&&(y=o+y),y<0||y>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);let g=x.zeros([...n],e),h=g.data,b=n[y],A=[],S=1;for(let N=o-1;N>=0;N--)A.unshift(S),S*=n[N];let D=r.size,w=A[y];for(let N=0;N<D;N++){let I=p[N*2],z=p[N*2+1],F=Math.floor(N/w)%b,_=K(I,z);F===0?(h[N*2]=_?0:I,h[N*2+1]=_?0:z):(h[N*2]=h[(N-w)*2]+(_?0:I),h[N*2+1]=h[(N-w)*2+1]+(_?0:z))}return g}if(t===void 0){let p=r.size,f=new Float64Array(p),y=0;for(let g=0;g<p;g++){let h=Number(a[g]);isNaN(h)||(y+=h),f[g]=y}return x.fromData(f,[p],"float64")}let u=t;if(u<0&&(u=o+u),u<0||u>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);let s=new Float64Array(r.size),i=n[u],c=[],l=1;for(let p=o-1;p>=0;p--)c.unshift(l),l*=n[p];let m=r.size,d=c[u];for(let p=0;p<m;p++){let f=Number(a[p]);Math.floor(p/d)%i===0?s[p]=isNaN(f)?0:f:s[p]=s[p-d]+(isNaN(f)?0:f)}return x.fromData(s,[...n],"float64")}function te(r,t){let e=r.dtype,n=r.shape,o=n.length,a=r.data;if(M(e)){let p=a,f=r.size;if(t===void 0){let N=x.zeros([f],e),I=N.data,z=1,F=0;for(let _=0;_<f;_++){let E=p[_*2],T=p[_*2+1];if(!K(E,T)){let C=z*E-F*T,k=z*T+F*E;z=C,F=k}I[_*2]=z,I[_*2+1]=F}return N}let y=t;if(y<0&&(y=o+y),y<0||y>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);let g=x.zeros([...n],e),h=g.data,b=n[y],A=[],S=1;for(let N=o-1;N>=0;N--)A.unshift(S),S*=n[N];let D=r.size,w=A[y];for(let N=0;N<D;N++){let I=p[N*2],z=p[N*2+1],F=Math.floor(N/w)%b,_=K(I,z);if(F===0)h[N*2]=_?1:I,h[N*2+1]=_?0:z;else{let E=h[(N-w)*2],T=h[(N-w)*2+1];_?(h[N*2]=E,h[N*2+1]=T):(h[N*2]=E*I-T*z,h[N*2+1]=E*z+T*I)}}return g}if(t===void 0){let p=r.size,f=new Float64Array(p),y=1;for(let g=0;g<p;g++){let h=Number(a[g]);isNaN(h)||(y*=h),f[g]=y}return x.fromData(f,[p],"float64")}let u=t;if(u<0&&(u=o+u),u<0||u>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);let s=new Float64Array(r.size),i=n[u],c=[],l=1;for(let p=o-1;p>=0;p--)c.unshift(l),l*=n[p];let m=r.size,d=c[u];for(let p=0;p<m;p++){let f=Number(a[p]);Math.floor(p/d)%i===0?s[p]=isNaN(f)?1:f:s[p]=s[p-d]*(isNaN(f)?1:f)}return x.fromData(s,[...n],"float64")}function At(r,t,e=!1){q(r.dtype,"nanmedian","Complex numbers are not orderable.");let n=r.shape,o=n.length,a=r.data;if(t===void 0){let d=[];for(let y=0;y<r.size;y++){let g=Number(a[y]);isNaN(g)||d.push(g)}if(d.length===0)return NaN;d.sort((y,g)=>y-g);let p=d.length,f=Math.floor(p/2);return p%2===0?(d[f-1]+d[f])/2:d[f]}let u=t;if(u<0&&(u=o+u),u<0||u>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);let s=Array.from(n).filter((d,p)=>p!==u);if(s.length===0)return At(r);let i=s.reduce((d,p)=>d*p,1),c=n[u],l=new Float64Array(i);for(let d=0;d<i;d++){let p=[];for(let g=0;g<c;g++){let h=$(d,u,g,n),b=U(h,n),A=Number(a[b]);isNaN(A)||p.push(A)}if(p.length===0){l[d]=NaN;continue}p.sort((g,h)=>g-h);let f=p.length,y=Math.floor(f/2);f%2===0?l[d]=(p[y-1]+p[y])/2:l[d]=p[y]}let m=x.fromData(l,s,"float64");if(e){let d=[...n];return d[u]=1,x.fromData(l,d,"float64")}return m}function nr(r,t){let e=r.size,n=r.dtype,o=t.indexOf(-1),a;if(o!==-1){let c=t.reduce((m,d,p)=>p===o?m:m*d,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,d)=>d===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 x.fromData(c,a,n,or(a),0)}let i=r.copy().data;return x.fromData(i,a,n,or(a),0)}function bt(r){let t=r.size,e=r.dtype,n=P(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 x.fromData(s,[t],e,[1],0)}let o=new n(t),a=B(e);for(let u=0;u<t;u++){let s=r.iget(u);o[u]=s}return x.fromData(o,[t],e,[1],0)}function Rr(r){let t=r.size,e=r.dtype;if(r.isCContiguous){let n=r.data;return x.fromData(n,[t],e,[1],0)}return bt(r)}function Qr(r,t){let e=r.shape,n=e.length,o=r.strides,a=r.data,u=r.dtype,s;if(t===void 0)s=Array.from({length:n},(m,d)=>n-1-d);else{if(t.length!==n)throw new Error(`axes must have length ${n}, got ${t.length}`);let m=new Set;for(let d of t){let p=d<0?n+d:d;if(p<0||p>=n)throw new Error(`axis ${d} 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(d=>d<0?n+d:d)}let i=s.map(m=>e[m]),c=Array.from(o),l=s.map(m=>c[m]);return x.fromData(a,i,u,l,r.offset)}function $n(r,t){let e=r.shape,n=e.length,o=r.strides,a=r.data,u=r.dtype;if(t===void 0){let s=[],i=[];for(let c=0;c<n;c++)e[c]!==1&&(s.push(e[c]),i.push(o[c]));return s.length===0&&(s.push(1),i.push(1)),x.fromData(a,s,u,i,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 i=[],c=[];for(let l=0;l<n;l++)l!==s&&(i.push(e[l]),c.push(o[l]));return x.fromData(a,i,u,c,r.offset)}}function Xr(r,t){let e=r.shape,n=e.length,o=r.strides,a=r.data,u=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 i=[...Array.from(e)];i.splice(s,0,1);let c=[...Array.from(o)],l=s<n?o[s]*(e[s]||1):1;return c.splice(s,0,l),x.fromData(a,i,u,c,r.offset)}function Rn(r,t,e){let n=r.shape,o=n.length,a=r.strides,u=r.data,s=r.dtype,i=t<0?o+t:t,c=e<0?o+e:e;if(i<0||i>=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(i===c)return x.fromData(u,Array.from(n),s,Array.from(a),r.offset);let l=Array.from(n),m=Array.from(a);return[l[i],l[c]]=[l[c],l[i]],[m[i],m[c]]=[m[c],m[i]],x.fromData(u,l,s,m,r.offset)}function ee(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 u=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(u).size!==u.length)throw new Error("repeated axis in source");if(new Set(s).size!==s.length)throw new Error("repeated axis in destination");let i=[];for(let c=0;c<n;c++)u.includes(c)||i.push(c);for(let c=0;c<u.length;c++){let l=s[c];i.splice(l,0,u[c])}return Qr(r,i)}function Mr(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 f=r[p];if(f.ndim!==n)throw new Error("all the input arrays must have same number of dimensions");for(let y=0;y<n;y++)if(y!==a&&f.shape[y]!==e.shape[y])throw new Error("all the input array dimensions except for the concatenation axis must match exactly")}let u=Array.from(e.shape),s=e.shape[a];for(let p=1;p<r.length;p++)s+=r[p].shape[a];u[a]=s;let i=u.reduce((p,f)=>p*f,1),c=P(o);if(!c)throw new Error(`Cannot concatenate arrays with dtype ${o}`);let l=new c(i),m=or(u),d=0;for(let p of r){let f=p.shape[a];nu(p,l,u,m,a,d,o),d+=f}return x.fromData(l,u,o)}function nu(r,t,e,n,o,a,u){let s=r.shape,i=s.length,c=r.size,l=u==="int64"||u==="uint64";if(o===0&&r.isCContiguous&&i>0){let p=a*n[0],f=r.data,y=r.offset,g=y+c;t.set(f.subarray(y,g),p);return}if(o===1&&i===2&&r.isCContiguous){let p=s[0],f=s[1],y=e[1],g=r.data,h=r.offset;for(let b=0;b<p;b++){let A=h+b*f,S=b*y+a;t.set(g.subarray(A,A+f),S)}return}let m=new Array(i).fill(0),d=a*n[o];for(let p=0;p<c;p++){let f=r.iget(p),y=d;for(let g=0;g<i;g++)y+=m[g]*n[g];t[y]=f;for(let g=i-1;g>=0&&(m[g]++,!(m[g]<s[g]));g--)m[g]=0}}function kn(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 i=r[s];if(i.ndim!==o)throw new Error("all input arrays must have the same shape");for(let c=0;c<o;c++)if(i.shape[c]!==n[c])throw new Error("all input arrays must have the same shape")}let u=r.map(s=>Xr(s,a));return Mr(u,a)}function qn(r){if(r.length===0)throw new Error("need at least one array to stack");let t=r.map(e=>e.ndim===1?nr(e,[1,e.shape[0]]):e);return Mr(t,0)}function ne(r){if(r.length===0)throw new Error("need at least one array to stack");return r.every(e=>e.ndim===1)?Mr(r,0):Mr(r,1)}function Vn(r){if(r.length===0)throw new Error("need at least one array to stack");let t=r.map(e=>e.ndim===1?nr(Xr(nr(e,[1,e.shape[0]]),2),[1,e.shape[0],1]):e.ndim===2?Xr(e,2):e);return Mr(t,2)}function jn(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 u=n[a],s;if(typeof t=="number"){if(u%t!==0)throw new Error("array split does not result in an equal division");let i=u/t;s=[];for(let c=1;c<t;c++)s.push(c*i)}else s=t;return Pn(r,s,a)}function Kr(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 u=n[a],s;if(typeof t=="number"){let i=t,c=Math.floor(u/i),l=u%i;s=[];let m=0;for(let d=0;d<i-1;d++)m+=c+(d<l?1:0),s.push(m)}else s=t;return Pn(r,s,a)}function Pn(r,t,e){let n=r.shape,o=n[e],a=[0,...t,o],u=[];for(let s=0;s<a.length-1;s++){let i=a[s],c=a[s+1];if(i>c)throw new Error("split indices must be in ascending order");let l=Array.from(n);l[e]=c-i;let m=r.offset+i*r.strides[e];u.push(x.fromData(r.data,l,r.dtype,Array.from(r.strides),m))}return u}function Ln(r,t){if(r.ndim<2)throw new Error("vsplit only works on arrays of 2 or more dimensions");return Kr(r,t,0)}function Zn(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 Kr(r,t,e)}function Gn(r,t){let e=r.shape,n=e.length,o=r.dtype,a=Array.isArray(t)?t:[t],u=Math.max(n,a.length),s=new Array(u).fill(1),i=new Array(u).fill(1);for(let b=0;b<n;b++)s[u-n+b]=e[b];for(let b=0;b<a.length;b++)i[u-a.length+b]=a[b];let c=s.map((b,A)=>b*i[A]),l=c.reduce((b,A)=>b*A,1),m=P(o);if(!m)throw new Error(`Cannot tile array with dtype ${o}`);let d=new m(l),p=or(c),f=r;n<u&&(f=nr(r,s));let y=o==="int64"||o==="uint64",g=f.strides,h=new Array(u).fill(0);for(let b=0;b<l;b++){let A=f.offset;for(let w=0;w<u;w++){let N=h[w]%s[w];A+=N*g[w]}let S=f.data[A],D=0;for(let w=0;w<u;w++)D+=h[w]*p[w];d[D]=S;for(let w=u-1;w>=0&&(h[w]++,!(h[w]<c[w]));w--)h[w]=0}return x.fromData(d,c,o)}function Wn(r,t,e){let n=r.shape,o=n.length,a=r.dtype,u=r.size;if(e===void 0){let b=u,A=Array.isArray(t)?t:new Array(b).fill(t);if(A.length!==b)throw new Error(`operands could not be broadcast together with shape (${b},) (${A.length},)`);let S=A.reduce((I,z)=>I+z,0),D=P(a);if(!D)throw new Error(`Cannot repeat array with dtype ${a}`);let w=new D(S),N=0;for(let I=0;I<b;I++){let z=r.iget(I),F=A[I];for(let _=0;_<F;_++)w[N++]=z}return x.fromData(w,[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 i=n[s],c=Array.isArray(t)?t:new Array(i).fill(t);if(c.length!==i)throw new Error(`operands could not be broadcast together with shape (${i},) (${c.length},)`);let l=Array.from(n);l[s]=c.reduce((b,A)=>b+A,0);let m=l.reduce((b,A)=>b*A,1),d=P(a);if(!d)throw new Error(`Cannot repeat array with dtype ${a}`);let p=new d(m),f=or(l),y=new Array(o).fill(0),g=a==="int64"||a==="uint64",h=[0];for(let b=0;b<i;b++)h.push(h[b]+c[b]);for(let b=0;b<u;b++){let A=r.iget(b),S=y[s],D=c[S],w=0;for(let z=0;z<o;z++)z!==s&&(w+=y[z]*f[z]);let N=f[s],I=h[S];for(let z=0;z<D;z++){let F=w+(I+z)*N;p[F]=A}for(let z=o-1;z>=0&&(y[z]++,!(y[z]<n[z]));z--)y[z]=0}return x.fromData(p,l,a)}function Yn(r,t){let e=r.shape,n=e.length,o=r.dtype,a=r.size,u;if(t===void 0)u=new Set(Array.from({length:n},(d,p)=>p));else if(typeof t=="number"){let d=t<0?n+t:t;if(d<0||d>=n)throw new Error(`axis ${t} is out of bounds for array of dimension ${n}`);u=new Set([d])}else u=new Set(t.map(d=>{let p=d<0?n+d:d;if(p<0||p>=n)throw new Error(`axis ${d} is out of bounds for array of dimension ${n}`);return p}));let s=P(o);if(!s)throw new Error(`Cannot flip array with dtype ${o}`);let i=new s(a),c=B(o);if(n===1&&r.isCContiguous){let d=r.data,p=r.offset;for(let f=0;f<a;f++)i[f]=d[p+a-1-f];return x.fromData(i,[...e],o)}if(n===2&&r.isCContiguous){let d=e[0],p=e[1],f=r.data,y=r.offset;if(u.size===2){for(let g=0;g<a;g++)i[g]=f[y+a-1-g];return x.fromData(i,[...e],o)}if(u.size===1){if(u.has(0)){for(let g=0;g<d;g++){let h=y+(d-1-g)*p,b=g*p;for(let A=0;A<p;A++)i[b+A]=f[h+A]}return x.fromData(i,[...e],o)}else if(u.has(1)){for(let g=0;g<d;g++){let h=y+g*p,b=g*p;for(let A=0;A<p;A++)i[b+A]=f[h+p-1-A]}return x.fromData(i,[...e],o)}}}let l=new Array(n),m=new Array(n).fill(0);for(let d=0;d<a;d++){for(let y=0;y<n;y++)l[y]=u.has(y)?e[y]-1-m[y]:m[y];let p=r.offset;for(let y=0;y<n;y++)p+=l[y]*r.strides[y];let f=r.data[p];i[d]=f;for(let y=n-1;y>=0&&(m[y]++,!(m[y]<e[y]));y--)m[y]=0}return x.fromData(i,[...e],o)}function Hn(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 u=e[0]<0?o+e[0]:e[0],s=e[1]<0?o+e[1]:e[1];if(u<0||u>=o||s<0||s>=o)throw new Error(`Axes are out of bounds for array of dimension ${o}`);if(u===s)throw new Error("Axes must be different");if(t=(t%4+4)%4,t===0)return r.copy();let i=P(a);if(!i)throw new Error(`Cannot rotate array with dtype ${a}`);let c=[...n];(t===1||t===3)&&([c[u],c[s]]=[c[s],c[u]]);let l=c.reduce((g,h)=>g*h,1),m=new i(l),d=or(c),p=B(a),f=new Array(o).fill(0),y=new Array(o);for(let g=0;g<r.size;g++){for(let D=0;D<o;D++)y[D]=f[D];let h,b;t===1?(h=n[s]-1-f[s],b=f[u]):t===2?(h=n[u]-1-f[u],b=n[s]-1-f[s],y[u]=h,y[s]=b):(h=f[s],b=n[u]-1-f[u]),t!==2&&(y[u]=h,y[s]=b);let A=0;for(let D=0;D<o;D++)A+=y[D]*d[D];let S=r.iget(g);m[A]=S;for(let D=o-1;D>=0&&(f[D]++,!(f[D]<n[D]));D--)f[D]=0}return x.fromData(m,c,a)}function Jn(r,t,e){let n=r.shape,o=n.length,a=r.dtype,u=r.size;if(e===void 0){let f=Array.isArray(t)?t.reduce((A,S)=>A+S,0):t,y=bt(r),g=P(a);if(!g)throw new Error(`Cannot roll array with dtype ${a}`);let h=new g(u),b=B(a);for(let A=0;A<u;A++){let S=((A-f)%u+u)%u,D=y.iget(S);h[A]=D}return x.fromData(h,[...n],a)}let s=Array.isArray(t)?t:[t],i=Array.isArray(e)?e:[e];if(s.length!==i.length)throw new Error("shift and axis must have the same length");let c=i.map(f=>{let y=f<0?o+f:f;if(y<0||y>=o)throw new Error(`axis ${f} is out of bounds for array of dimension ${o}`);return y}),l=P(a);if(!l)throw new Error(`Cannot roll array with dtype ${a}`);let m=new l(u),d=B(a),p=new Array(o).fill(0);for(let f=0;f<u;f++){let y=[...p];for(let b=0;b<c.length;b++){let A=c[b],S=n[A],D=s[b];y[A]=((y[A]-D)%S+S)%S}let g=r.offset;for(let b=0;b<o;b++)g+=y[b]*r.strides[b];let h=r.data[g];m[f]=h;for(let b=o-1;b>=0&&(p[b]++,!(p[b]<n[b]));b--)p[b]=0}return x.fromData(m,[...n],a)}function Xn(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?x.fromData(r.data,Array.from(r.shape),r.dtype,Array.from(r.strides),r.offset):ee(r,o,a)}function Qn(r,t){if(r.ndim<3)throw new Error("dsplit only works on arrays of 3 or more dimensions");return Kr(r,t,2)}function Kn(r){if(r.length===0)throw new Error("need at least one array to stack");let t=r.map(e=>e.ndim===1?nr(e,[e.shape[0],1]):e);return ne(t)}function ro(r,t){let e=r.dtype,n=t.reduce((i,c)=>i*c,1),o=r.size,a=P(e);if(!a)throw new Error(`Cannot resize array with dtype ${e}`);let u=new a(n),s=B(e);for(let i=0;i<n;i++){let c=i%o,l=r.iget(c);u[i]=l}return x.fromData(u,t,e)}function to(r){return r.map(t=>t.ndim===0?nr(t,[1]):t)}function eo(r){return r.map(t=>t.ndim===0?nr(t,[1,1]):t.ndim===1?nr(t,[1,t.shape[0]]):t)}function no(r){return r.map(t=>t.ndim===0?nr(t,[1,1,1]):t.ndim===1?nr(t,[1,t.shape[0],1]):t.ndim===2?nr(t,[t.shape[0],t.shape[1],1]):t)}function kr(r,t){if(r instanceof O||t instanceof O){let e=r instanceof O?r:new O(Number(r),0),n=t instanceof O?t:new O(Number(t),0);return e.mul(n)}return typeof r=="bigint"&&typeof t=="bigint"?Number(r*t):Number(r)*Number(t)}function ou(r,t,e,n,o,a,u,s,i,c,l,m,d,p){if(m===0)for(let h=0;h<n*o;h++)d[h]=0;else if(m!==1)for(let h=0;h<n*o;h++)d[h]=(d[h]??0)*m;let f=r==="row-major",y=t==="transpose",g=e==="transpose";if(f&&!y&&!g)for(let h=0;h<n;h++)for(let b=0;b<o;b++){let A=0;for(let S=0;S<a;S++)A+=(s[h*i+S]??0)*(c[S*l+b]??0);d[h*p+b]=(d[h*p+b]??0)+u*A}else if(f&&y&&!g)for(let h=0;h<n;h++)for(let b=0;b<o;b++){let A=0;for(let S=0;S<a;S++)A+=(s[S*i+h]??0)*(c[S*l+b]??0);d[h*p+b]=(d[h*p+b]??0)+u*A}else if(f&&!y&&g)for(let h=0;h<n;h++)for(let b=0;b<o;b++){let A=0;for(let S=0;S<a;S++)A+=(s[h*i+S]??0)*(c[b*l+S]??0);d[h*p+b]=(d[h*p+b]??0)+u*A}else if(f&&y&&g)for(let h=0;h<n;h++)for(let b=0;b<o;b++){let A=0;for(let S=0;S<a;S++)A+=(s[S*i+h]??0)*(c[b*l+S]??0);d[h*p+b]=(d[h*p+b]??0)+u*A}else if(!f&&!y&&!g)for(let h=0;h<n;h++)for(let b=0;b<o;b++){let A=0;for(let S=0;S<a;S++)A+=(s[S*i+h]??0)*(c[b*l+S]??0);d[b*p+h]=(d[b*p+h]??0)+u*A}else if(!f&&y&&!g)for(let h=0;h<n;h++)for(let b=0;b<o;b++){let A=0;for(let S=0;S<a;S++)A+=(s[h*i+S]??0)*(c[b*l+S]??0);d[b*p+h]=(d[b*p+h]??0)+u*A}else if(!f&&!y&&g)for(let h=0;h<n;h++)for(let b=0;b<o;b++){let A=0;for(let S=0;S<a;S++)A+=(s[S*i+h]??0)*(c[S*l+b]??0);d[b*p+h]=(d[b*p+h]??0)+u*A}else for(let h=0;h<n;h++)for(let b=0;b<o;b++){let A=0;for(let S=0;S<a;S++)A+=(s[h*i+S]??0)*(c[S*l+b]??0);d[b*p+h]=(d[b*p+h]??0)+u*A}}function ae(r,t){let e=r.ndim,n=t.ndim,o=M(r.dtype)||M(t.dtype);if(e===0||n===0){let a=e===0?r.get():null,u=n===0?t.get():null;if(e===0&&n===0)return kr(a,u);if(e===0){let s=G(r.dtype,t.dtype),i=x.zeros([...t.shape],s),c=(l,m)=>{let d=new Array(m.length),p=l;for(let f=m.length-1;f>=0;f--)d[f]=p%m[f],p=Math.floor(p/m[f]);return d};for(let l=0;l<t.size;l++){let m=c(l,t.shape),d=t.get(...m);i.set(m,kr(a,d))}return i}else{let s=G(r.dtype,t.dtype),i=x.zeros([...r.shape],s),c=(l,m)=>{let d=new Array(m.length),p=l;for(let f=m.length-1;f>=0;f--)d[f]=p%m[f],p=Math.floor(p/m[f]);return d};for(let l=0;l<r.size;l++){let m=c(l,r.shape),d=r.get(...m);i.set(m,kr(d,u))}return i}}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 a=r.shape[0];if(o){let s=0,i=0;for(let c=0;c<a;c++){let l=r.get(c),m=t.get(c),d=kr(l,m);d instanceof O?(s+=d.re,i+=d.im):s+=d}return new O(s,i)}let u=0;for(let s=0;s<a;s++){let i=r.get(s),c=t.get(s);typeof i=="bigint"&&typeof c=="bigint"?u=Number(u)+Number(i*c):u+=Number(i)*Number(c)}return u}if(e===2&&n===2)return pr(r,t);if(e===2&&n===1){let[a,u]=r.shape,s=t.shape[0];if(u!==s)throw new Error(`dot: incompatible shapes (${a},${u}) and (${s},)`);let i=G(r.dtype,t.dtype),c=x.zeros([a],i);if(o)for(let l=0;l<a;l++){let m=0,d=0;for(let p=0;p<u;p++){let f=r.get(l,p),y=t.get(p),g=f instanceof O?f:new O(Number(f),0),h=y instanceof O?y:new O(Number(y),0);m+=g.re*h.re-g.im*h.im,d+=g.re*h.im+g.im*h.re}c.set([l],new O(m,d))}else for(let l=0;l<a;l++){let m=0;for(let d=0;d<u;d++){let p=r.get(l,d),f=t.get(d);typeof p=="bigint"&&typeof f=="bigint"?m=Number(m)+Number(p*f):m+=Number(p)*Number(f)}c.set([l],m)}return c}if(e===1&&n===2){let a=r.shape[0],[u,s]=t.shape;if(a!==u)throw new Error(`dot: incompatible shapes (${a},) and (${u},${s})`);let i=G(r.dtype,t.dtype),c=x.zeros([s],i);if(o)for(let l=0;l<s;l++){let m=0,d=0;for(let p=0;p<a;p++){let f=r.get(p),y=t.get(p,l),g=f instanceof O?f:new O(Number(f),0),h=y instanceof O?y:new O(Number(y),0);m+=g.re*h.re-g.im*h.im,d+=g.re*h.im+g.im*h.re}c.set([l],new O(m,d))}else for(let l=0;l<s;l++){let m=0;for(let d=0;d<a;d++){let p=r.get(d),f=t.get(d,l);typeof p=="bigint"&&typeof f=="bigint"?m=Number(m)+Number(p*f):m+=Number(p)*Number(f)}c.set([l],m)}return c}if(e>2&&n===1){let a=r.shape[e-1],u=t.shape[0];if(a!==u)throw new Error(`dot: incompatible shapes ${JSON.stringify(r.shape)} and (${u},)`);let s=[...r.shape.slice(0,-1)],i=G(r.dtype,t.dtype),c=x.zeros(s,i),l=s.reduce((m,d)=>m*d,1);if(o)for(let m=0;m<l;m++){let d=0,p=0,f=m,y=[];for(let g=s.length-1;g>=0;g--)y[g]=f%s[g],f=Math.floor(f/s[g]);for(let g=0;g<a;g++){let h=[...y,g],b=r.get(...h),A=t.get(g),S=b instanceof O?b:new O(Number(b),0),D=A instanceof O?A:new O(Number(A),0);d+=S.re*D.re-S.im*D.im,p+=S.re*D.im+S.im*D.re}c.set(y,new O(d,p))}else for(let m=0;m<l;m++){let d=0,p=m,f=[];for(let y=s.length-1;y>=0;y--)f[y]=p%s[y],p=Math.floor(p/s[y]);for(let y=0;y<a;y++){let g=[...f,y],h=r.get(...g),b=t.get(y);typeof h=="bigint"&&typeof b=="bigint"?d=Number(d)+Number(h*b):d+=Number(h)*Number(b)}c.set(f,d)}return c}if(e===1&&n>2){let a=r.shape[0],u=1,s=t.shape[u];if(a!==s)throw new Error(`dot: incompatible shapes (${a},) and ${JSON.stringify(t.shape)}`);let i=[...t.shape.slice(0,u),...t.shape.slice(u+1)],c=G(r.dtype,t.dtype),l=x.zeros(i,c),m=i.reduce((d,p)=>d*p,1);if(o)for(let d=0;d<m;d++){let p=d,f=[];for(let A=i.length-1;A>=0;A--)f[A]=p%i[A],p=Math.floor(p/i[A]);let y=f.slice(0,u),g=f.slice(u),h=0,b=0;for(let A=0;A<a;A++){let S=r.get(A),D=[...y,A,...g],w=t.get(...D),N=S instanceof O?S:new O(Number(S),0),I=w instanceof O?w:new O(Number(w),0);h+=N.re*I.re-N.im*I.im,b+=N.re*I.im+N.im*I.re}l.set(f,new O(h,b))}else for(let d=0;d<m;d++){let p=d,f=[];for(let b=i.length-1;b>=0;b--)f[b]=p%i[b],p=Math.floor(p/i[b]);let y=f.slice(0,u),g=f.slice(u),h=0;for(let b=0;b<a;b++){let A=r.get(b),S=[...y,b,...g],D=t.get(...S);typeof A=="bigint"&&typeof D=="bigint"?h=Number(h)+Number(A*D):h+=Number(A)*Number(D)}l.set(f,h)}return l}if(e>=2&&n>=2&&!(e===2&&n===2)){let a=r.shape[e-1],u=t.shape[n-2];if(a!==u)throw new Error(`dot: incompatible shapes ${JSON.stringify(r.shape)} and ${JSON.stringify(t.shape)}`);let s=[...r.shape.slice(0,-1),...t.shape.slice(0,-2),t.shape[n-1]],i=G(r.dtype,t.dtype),c=x.zeros(s,i),l=r.shape.slice(0,-1).reduce((f,y)=>f*y,1),m=t.shape.slice(0,-2).reduce((f,y)=>f*y,1),d=t.shape[n-1],p=a;if(o)for(let f=0;f<l;f++)for(let y=0;y<m;y++)for(let g=0;g<d;g++){let h=0,b=0;for(let D=0;D<p;D++){let w=[],N=f;for(let C=r.shape.length-2;C>=0;C--)w.unshift(N%r.shape[C]),N=Math.floor(N/r.shape[C]);w.push(D);let I=r.get(...w),z=[],F=y;for(let C=t.shape.length-3;C>=0;C--)z.unshift(F%t.shape[C]),F=Math.floor(F/t.shape[C]);z.push(D,g);let _=t.get(...z),E=I instanceof O?I:new O(Number(I),0),T=_ instanceof O?_:new O(Number(_),0);h+=E.re*T.re-E.im*T.im,b+=E.re*T.im+E.im*T.re}let A=f*m*d+y*d+g,S=c.data;S[A*2]=h,S[A*2+1]=b}else for(let f=0;f<l;f++)for(let y=0;y<m;y++)for(let g=0;g<d;g++){let h=0;for(let A=0;A<p;A++){let S=f*p+A,D=y*p*d+A*d+g,w=r.data[S+r.offset],N=t.data[D+t.offset];typeof w=="bigint"&&typeof N=="bigint"?h=Number(h)+Number(w*N):h+=Number(w)*Number(N)}let b=f*m*d+y*d+g;c.data[b]=h}return c}throw new Error(`dot: unexpected combination of dimensions ${e}D \xB7 ${n}D`)}function pr(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 u=G(r.dtype,t.dtype);if(M(u)){let D=x.zeros([e,a],u),w=D.data,N=r.data,I=t.data;for(let z=0;z<e;z++)for(let F=0;F<a;F++){let _=0,E=0;for(let C=0;C<n;C++){let k=(z*n+C)*2,V=(C*a+F)*2,R=N[k],L=N[k+1],j=I[V],H=I[V+1];_+=R*j-L*H,E+=R*H+L*j}let T=z*a+F;w[T*2]=_,w[T*2+1]=E}return D}let s=u.startsWith("int")||u.startsWith("uint")||u==="bool"?"float64":u;if(s!=="float64")throw new Error(`matmul currently only supports float64, got ${s}`);let i=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&&(i=i.subarray(r.offset)),t.offset>0&&(c=c.subarray(t.offset));let[l=0,m=0]=r.strides,[d=0,p=0]=t.strides,f=m>l,y=p>d,g=f?"transpose":"no-transpose",h=y?"transpose":"no-transpose",b,A;f?b=m:b=l,y?A=p:A=d;let S=x.zeros([e,a],"float64");return ou("row-major",g,h,e,a,n,1,i,b,c,A,0,S.data,a),S}function io(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);if(M(r.dtype)){let a=0,u=0;for(let s=0;s<n;s++){let i=r.get(s,s);a+=i.re,u+=i.im}return new O(a,u)}let o=0;for(let a=0;a<n;a++){let u=r.get(a,a);typeof u=="bigint"?o=(typeof o=="bigint"?o:BigInt(o))+u:o=(typeof o=="bigint"?Number(o):o)+u}return o}function ao(r,t){return Qr(r,t)}function uo(r,t){let e=r.ndim,n=t.ndim,o=M(r.dtype)||M(t.dtype),a=r.shape[e-1],u=t.shape[n-1];if(a!==u)throw new Error(`inner: incompatible shapes - last dimensions ${a} and ${u} don't match`);if(e===1&&n===1)return ae(r,t);let s=[...r.shape.slice(0,-1),...t.shape.slice(0,-1)],i=G(r.dtype,t.dtype),c=x.zeros(s,i),l=e===1?1:r.shape.slice(0,-1).reduce((p,f)=>p*f,1),m=n===1?1:t.shape.slice(0,-1).reduce((p,f)=>p*f,1),d=a;if(o)for(let p=0;p<l;p++)for(let f=0;f<m;f++){let y=0,g=0;for(let A=0;A<d;A++){let S,D;if(e===1)S=r.get(A);else{let I=[],z=p,F=r.shape.slice(0,-1);for(let _=F.length-1;_>=0;_--)I.unshift(z%F[_]),z=Math.floor(z/F[_]);I.push(A),S=r.get(...I)}if(n===1)D=t.get(A);else{let I=[],z=f,F=t.shape.slice(0,-1);for(let _=F.length-1;_>=0;_--)I.unshift(z%F[_]),z=Math.floor(z/F[_]);I.push(A),D=t.get(...I)}let w=S instanceof O?S:new O(Number(S),0),N=D instanceof O?D:new O(Number(D),0);y+=w.re*N.re-w.im*N.im,g+=w.re*N.im+w.im*N.re}if(s.length===0)return new O(y,g);let h=l===1?f:p*m+f,b=c.data;b[h*2]=y,b[h*2+1]=g}else for(let p=0;p<l;p++)for(let f=0;f<m;f++){let y=0;for(let h=0;h<d;h++){let b=e===1?h:p*d+h,A=n===1?h:f*d+h,S=r.data[b+r.offset],D=t.data[A+t.offset];typeof S=="bigint"&&typeof D=="bigint"?y=Number(y)+Number(S*D):y+=Number(S)*Number(D)}if(s.length===0)return y;let g=l===1?f:p*m+f;c.data[g]=y}return c}function se(r,t){let e=r.ndim===1?r:Rr(r),n=t.ndim===1?t:Rr(t),o=e.size,a=n.size,u=G(r.dtype,t.dtype),s=x.zeros([o,a],u);for(let i=0;i<o;i++)for(let c=0;c<a;c++){let l=e.get(i),m=n.get(c),d=kr(l,m);s.set([i,c],d)}return s}function co(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},(y,g)=>r.ndim-f+g),o=Array.from({length:f},(y,g)=>g)}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 y=n[f],g=o[f];if(y<0||y>=r.ndim||g<0||g>=t.ndim)throw new Error("tensordot: axis out of bounds");if(r.shape[y]!==t.shape[g])throw new Error(`tensordot: shape mismatch on axes ${y} and ${g}: ${r.shape[y]} != ${t.shape[g]}`)}let a=[],u=[];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)||u.push(f);let s=[...a.map(f=>r.shape[f]),...u.map(f=>t.shape[f])],i=G(r.dtype,t.dtype),c=M(i),l=f=>f instanceof O?{re:f.re,im:f.im}:{re:Number(f),im:0};if(s.length===0){let f=0,y=0,g=n.map(h=>r.shape[h]).reduce((h,b)=>h*b,1);for(let h=0;h<g;h++){let b=h,A=new Array(n.length);for(let I=n.length-1;I>=0;I--){let z=n[I];A[I]=b%r.shape[z],b=Math.floor(b/r.shape[z])}let S=new Array(r.ndim),D=new Array(t.ndim);for(let I=0;I<n.length;I++)S[n[I]]=A[I];for(let I=0;I<o.length;I++)D[o[I]]=A[I];let w=r.get(...S),N=t.get(...D);if(c){let I=l(w),z=l(N);f+=I.re*z.re-I.im*z.im,y+=I.re*z.im+I.im*z.re}else typeof w=="bigint"&&typeof N=="bigint"?f+=Number(w*N):f+=Number(w)*Number(N)}return c?new O(f,y):f}let m=x.zeros(s,i),d=s.reduce((f,y)=>f*y,1),p=n.map(f=>r.shape[f]).reduce((f,y)=>f*y,1);for(let f=0;f<d;f++){let y=f,g=[];for(let D=s.length-1;D>=0;D--)g[D]=y%s[D],y=Math.floor(y/s[D]);let h=g.slice(0,a.length),b=g.slice(a.length),A=0,S=0;for(let D=0;D<p;D++){y=D;let w=[];for(let _=n.length-1;_>=0;_--){let E=n[_];w[_]=y%r.shape[E],y=Math.floor(y/r.shape[E])}let N=new Array(r.ndim),I=new Array(t.ndim);for(let _=0;_<a.length;_++)N[a[_]]=h[_];for(let _=0;_<u.length;_++)I[u[_]]=b[_];for(let _=0;_<n.length;_++)N[n[_]]=w[_],I[o[_]]=w[_];let z=r.get(...N),F=t.get(...I);if(c){let _=l(z),E=l(F);A+=_.re*E.re-_.im*E.im,S+=_.re*E.im+_.im*E.re}else typeof z=="bigint"&&typeof F=="bigint"?A+=Number(z*F):A+=Number(z)*Number(F)}c?m.set(g,new O(A,S)):m.set(g,A)}return m}function lo(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 u=e<0?a+e:e,s=n<0?a+n:n;if(u<0||u>=a||s<0||s>=a)throw new Error("axis out of bounds");if(u===s)throw new Error("axis1 and axis2 cannot be the same");let i=o[u],c=o[s],l;t>=0?l=Math.max(0,Math.min(i,c-t)):l=Math.max(0,Math.min(i+t,c));let m=[];for(let y=0;y<a;y++)y!==u&&y!==s&&m.push(o[y]);m.push(l);let d=x.zeros(m,r.dtype),p=o.filter((y,g)=>g!==u&&g!==s),f=p.reduce((y,g)=>y*g,1);for(let y=0;y<f;y++){let g=y,h=[];for(let b=p.length-1;b>=0;b--)h.unshift(g%p[b]),g=Math.floor(g/p[b]);for(let b=0;b<l;b++){let A=new Array(a),S=0;for(let N=0;N<a;N++)N===u?A[N]=t>=0?b:b-t:N===s?A[N]=t>=0?b+t:b:A[N]=h[S++];let D=[...h,b],w=r.get(...A);d.set(D,w)}}return d}function fo(r,...t){let e=r.indexOf("->"),n,o;e===-1?(n=r,o=au(n)):(n=r.slice(0,e),o=r.slice(e+2));let a=n.split(",").map(y=>y.trim());if(a.length!==t.length)throw new Error(`einsum: expected ${a.length} operands, got ${t.length}`);let u=new Map;for(let y=0;y<t.length;y++){let g=a[y],h=t[y];if(g.length!==h.ndim)throw new Error(`einsum: operand ${y} has ${h.ndim} dimensions but subscript '${g}' has ${g.length} indices`);for(let b=0;b<g.length;b++){let A=g[b],S=h.shape[b];if(u.has(A)){if(u.get(A)!==S)throw new Error(`einsum: size mismatch for index '${A}': ${u.get(A)} vs ${S}`)}else u.set(A,S)}}for(let y of o)if(!u.has(y))throw new Error(`einsum: output subscript contains unknown index '${y}'`);let s=new Set(o),i=new Set;for(let y of a)for(let g of y)i.add(g);let c=[];for(let y of i)s.has(y)||c.push(y);if(t.length===2&&a.length===2){let[y,g]=a,[h,b]=t;if(y.length===2&&g.length===2&&o.length===2&&h.ndim===2&&b.ndim===2){let[A,S]=[y[0],y[1]],[D,w]=[g[0],g[1]],[N,I]=[o[0],o[1]];if(A===N&&w===I&&S===D&&c.length===1&&c[0]===S||A===N&&w===I&&S===D&&c.length===1&&c[0]===S)return pr(h,b);if(S===N&&w===I&&A===D&&c.length===1&&c[0]===A){let z=ao(h);return pr(z,b)}if(A===N&&D===I&&S===w&&c.length===1&&c[0]===S){let z=ao(b);return pr(h,z)}}if(y.length===1&&g.length===1&&y===g&&o.length===0&&h.ndim===1&&b.ndim===1)return oe(t,a,c,u);if(y&&g&&y.length===1&&g.length===1&&o.length===2&&o===y+g&&c.length===0&&h.ndim===1&&b.ndim===1)return se(h,b)}if(t.length===1&&a[0].length===2&&o.length===0){let y=a[0];if(y[0]===y[1]&&t[0].ndim===2)return oe(t,a,c,u)}let l=Array.from(o).map(y=>u.get(y));if(l.length===0)return oe(t,a,c,u);let m=t[0].dtype;for(let y=1;y<t.length;y++)m=G(m,t[y].dtype);let d=x.zeros(l,m),p=l.reduce((y,g)=>y*g,1),f=1;for(let y of c)f*=u.get(y);for(let y=0;y<p;y++){let g=su(y,l),h=new Map;for(let A=0;A<o.length;A++)h.set(o[A],g[A]);let b=0;for(let A=0;A<f;A++){let S=A;for(let w=c.length-1;w>=0;w--){let N=c[w],I=u.get(N);h.set(N,S%I),S=Math.floor(S/I)}let D=1;for(let w=0;w<t.length;w++){let N=t[w],I=a[w],z=[];for(let _ of I)z.push(h.get(_));let F=N.get(...z);D*=Number(F)}b+=D}d.set(g,b)}return d}function au(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 oe(r,t,e,n){let o=!1;for(let c of r)if(M(c.dtype)){o=!0;break}let a=c=>c instanceof O?{re:c.re,im:c.im}:{re:Number(c),im:0},u=1;for(let c of e)u*=n.get(c);let s=0,i=0;for(let c=0;c<u;c++){let l=new Map,m=c;for(let f=e.length-1;f>=0;f--){let y=e[f],g=n.get(y);l.set(y,m%g),m=Math.floor(m/g)}let d=1,p=0;for(let f=0;f<r.length;f++){let y=r[f],g=t[f],h=[];for(let A of g)h.push(l.get(A));let b=y.get(...h);if(o){let A=a(b),S=d*A.re-p*A.im,D=d*A.im+p*A.re;d=S,p=D}else d*=Number(b)}s+=d,i+=p}return o?new O(s,i):s}function su(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 mo(r,t){let e=r.shape,n=t.shape,o=e.length,a=n.length,u=G(r.dtype,t.dtype),s=Math.max(o,a),i=new Array(s),c=new Array(s).fill(1),l=new Array(s).fill(1);for(let f=0;f<o;f++)c[s-o+f]=e[f];for(let f=0;f<a;f++)l[s-a+f]=n[f];for(let f=0;f<s;f++)i[f]=c[f]*l[f];let m=x.zeros(i,u),d=e.reduce((f,y)=>f*y,1),p=n.reduce((f,y)=>f*y,1);for(let f=0;f<d;f++){let y=f,g=new Array(o);for(let A=o-1;A>=0;A--)g[A]=y%e[A],y=Math.floor(y/e[A]);let h=new Array(s).fill(0);for(let A=0;A<o;A++)h[s-o+A]=g[A];let b=r.get(...g);for(let A=0;A<p;A++){let S=A,D=new Array(a);for(let F=a-1;F>=0;F--)D[F]=S%n[F],S=Math.floor(S/n[F]);let w=new Array(s).fill(0);for(let F=0;F<a;F++)w[s-a+F]=D[F];let N=t.get(...D),I=new Array(s);for(let F=0;F<s;F++)I[F]=h[F]*l[F]+w[F];let z=kr(b,N);m.set(I,z)}}return m}function yo(r,t,e=-1,n=-1,o=-1,a){a!==void 0&&(e=a,n=a,o=a);let u=(A,S)=>A<0?S+A:A,s=u(e,r.ndim),i=u(n,t.ndim);if(r.ndim===1&&t.ndim===1){let A=r.shape[0],S=t.shape[0];if(A===3&&S===3){let D=Number(r.get(0)),w=Number(r.get(1)),N=Number(r.get(2)),I=Number(t.get(0)),z=Number(t.get(1)),F=Number(t.get(2)),_=x.zeros([3],"float64");return _.set([0],w*F-N*z),_.set([1],N*I-D*F),_.set([2],D*z-w*I),_}else if(A===2&&S===2){let D=Number(r.get(0)),w=Number(r.get(1)),N=Number(t.get(0)),I=Number(t.get(1));return D*I-w*N}else if(A===2&&S===3||A===3&&S===2){let D=Number(r.get(0)),w=Number(r.get(1)),N=A===3?Number(r.get(2)):0,I=Number(t.get(0)),z=Number(t.get(1)),F=S===3?Number(t.get(2)):0,_=x.zeros([3],"float64");return _.set([0],w*F-N*z),_.set([1],N*I-D*F),_.set([2],D*z-w*I),_}else throw new Error(`cross: incompatible dimensions for cross product: ${A} and ${S}`)}let c=r.shape[s],l=t.shape[i];if(c!==2&&c!==3||l!==2&&l!==3)throw new Error(`cross: incompatible dimensions for cross product: ${c} and ${l}`);let m=c===2&&l===2?0:3,d=[...r.shape.slice(0,s),...r.shape.slice(s+1)],p=[...t.shape.slice(0,i),...t.shape.slice(i+1)];if(d.length!==p.length)throw new Error("cross: incompatible shapes for cross product");for(let A=0;A<d.length;A++)if(d[A]!==p[A])throw new Error("cross: incompatible shapes for cross product");let f=d,y=o<0?f.length+1+o:o,g;if(m===0?g=f:g=[...f.slice(0,y),m,...f.slice(y)],g.length===0)throw new Error("cross: unexpected scalar result from higher-dimensional input");let h=x.zeros(g,"float64"),b=f.reduce((A,S)=>A*S,1);for(let A=0;A<b;A++){let S=A,D=[];for(let V=f.length-1;V>=0;V--)D[V]=S%f[V],S=Math.floor(S/f[V]);let w=[...D.slice(0,s),0,...D.slice(s)],N=[...D.slice(0,i),0,...D.slice(i)],I=V=>(w[s]=V,Number(r.get(...w))),z=V=>(N[i]=V,Number(t.get(...N))),F=I(0),_=I(1),E=c===3?I(2):0,T=z(0),C=z(1),k=l===3?z(2):0;if(m===0)h.set(D,F*C-_*T);else{let V=_*k-E*C,R=E*T-F*k,L=F*C-_*T,j=(H,Q)=>{let Z=[...D.slice(0,y),H,...D.slice(y)];h.set(Z,Q)};j(0,V),j(1,R),j(2,L)}}return h}function qr(r,t=2,e,n=!1){if(typeof t!="number")throw new Error("vector_norm: ord must be a number");if(e==null){let c=r.ndim===1?r:Rr(r),l=c.size,m;if(t===1/0){m=0;for(let d=0;d<l;d++)m=Math.max(m,Math.abs(Number(c.get(d))))}else if(t===-1/0){m=1/0;for(let d=0;d<l;d++)m=Math.min(m,Math.abs(Number(c.get(d))))}else if(t===0){m=0;for(let d=0;d<l;d++)Number(c.get(d))!==0&&m++}else if(t===1){m=0;for(let d=0;d<l;d++)m+=Math.abs(Number(c.get(d)))}else if(t===2){m=0;for(let d=0;d<l;d++){let p=Number(c.get(d));m+=p*p}m=Math.sqrt(m)}else{m=0;for(let d=0;d<l;d++)m+=Math.pow(Math.abs(Number(c.get(d))),t);m=Math.pow(m,1/t)}if(n){let d=new Array(r.ndim).fill(1),p=x.zeros(d,"float64");return p.set(new Array(r.ndim).fill(0),m),p}return m}let o=e<0?r.ndim+e:e;if(o<0||o>=r.ndim)throw new Error(`vector_norm: axis ${e} out of bounds for array with ${r.ndim} dimensions`);let a=n?[...r.shape.slice(0,o),1,...r.shape.slice(o+1)]:[...r.shape.slice(0,o),...r.shape.slice(o+1)];if(a.length===0)return qr(r,t,null,!1);let u=x.zeros(a,"float64"),s=r.shape[o],i=a.reduce((c,l)=>c*l,1);for(let c=0;c<i;c++){let l=c,m=[];for(let f=a.length-1;f>=0;f--)m[f]=l%a[f],l=Math.floor(l/a[f]);let d=n?[...m.slice(0,o),0,...m.slice(o+1)]:[...m.slice(0,o),0,...m.slice(o)],p;if(t===1/0){p=0;for(let f=0;f<s;f++)d[o]=f,p=Math.max(p,Math.abs(Number(r.get(...d))))}else if(t===-1/0){p=1/0;for(let f=0;f<s;f++)d[o]=f,p=Math.min(p,Math.abs(Number(r.get(...d))))}else if(t===0){p=0;for(let f=0;f<s;f++)d[o]=f,Number(r.get(...d))!==0&&p++}else if(t===1){p=0;for(let f=0;f<s;f++)d[o]=f,p+=Math.abs(Number(r.get(...d)))}else if(t===2){p=0;for(let f=0;f<s;f++){d[o]=f;let y=Number(r.get(...d));p+=y*y}p=Math.sqrt(p)}else{p=0;for(let f=0;f<s;f++)d[o]=f,p+=Math.pow(Math.abs(Number(r.get(...d))),t);p=Math.pow(p,1/t)}u.set(m,p)}return u}function Br(r,t="fro",e=!1){if(r.ndim!==2)throw new Error(`matrix_norm: input must be 2D, got ${r.ndim}D`);let[n,o]=r.shape,a;if(t==="fro"){a=0;for(let u=0;u<n;u++)for(let s=0;s<o;s++){let i=Number(r.get(u,s));a+=i*i}a=Math.sqrt(a)}else if(t==="nuc"){let{s:u}=_r(r);a=0;for(let s=0;s<u.size;s++)a+=Number(u.get(s))}else if(t===1){a=0;for(let u=0;u<o;u++){let s=0;for(let i=0;i<n;i++)s+=Math.abs(Number(r.get(i,u)));a=Math.max(a,s)}}else if(t===-1){a=1/0;for(let u=0;u<o;u++){let s=0;for(let i=0;i<n;i++)s+=Math.abs(Number(r.get(i,u)));a=Math.min(a,s)}}else if(t===1/0){a=0;for(let u=0;u<n;u++){let s=0;for(let i=0;i<o;i++)s+=Math.abs(Number(r.get(u,i)));a=Math.max(a,s)}}else if(t===-1/0){a=1/0;for(let u=0;u<n;u++){let s=0;for(let i=0;i<o;i++)s+=Math.abs(Number(r.get(u,i)));a=Math.min(a,s)}}else if(t===2){let{s:u}=_r(r);a=Number(u.get(0))}else if(t===-2){let{s:u}=_r(r);a=Number(u.get(u.size-1))}else throw new Error(`matrix_norm: invalid ord value: ${t}`);if(e){let u=x.zeros([1,1],"float64");return u.set([0,0],a),u}return a}function po(r,t=null,e=null,n=!1){if(t===null)return e===null?qr(r,2,null,n):typeof e=="number"?qr(r,2,e,n):Br(r,"fro",n);if(Array.isArray(e)){if(e.length!==2)throw new Error("norm: axis must be a 2-tuple for matrix norms");let o=e[0]<0?r.ndim+e[0]:e[0],a=e[1]<0?r.ndim+e[1]:e[1];if(r.ndim!==2||o!==0&&o!==1||a!==0&&a!==1||o===a)throw new Error("norm: complex axis specification not yet supported");return Br(r,t,n)}if(r.ndim===2&&e===null&&(t==="fro"||t==="nuc"))return Br(r,t,n);if(typeof t!="number"&&t!==null)throw new Error(`norm: ord '${t}' not valid for vector norm`);return qr(r,t??2,e,n)}function ie(r,t="reduced"){if(r.ndim!==2)throw new Error(`qr: input must be 2D, got ${r.ndim}D`);let[e,n]=r.shape,o=Math.min(e,n),a=x.zeros([e,n],"float64");for(let p=0;p<e;p++)for(let f=0;f<n;f++)a.set([p,f],Number(r.get(p,f)));let u=[],s=[];for(let p=0;p<o;p++){let f=e-p,y=[];for(let D=p;D<e;D++)y.push(Number(a.get(D,p)));let g=0;for(let D=0;D<f;D++)g+=y[D]*y[D];if(g=Math.sqrt(g),g<1e-15){u.push(y),s.push(0);continue}let h=y[0]>=0?1:-1,b=y[0]+h*g,A=[1];for(let D=1;D<f;D++)A.push(y[D]/b);let S=h*b/g;s.push(S),u.push(A);for(let D=p;D<n;D++){let w=0;for(let N=0;N<f;N++)w+=A[N]*Number(a.get(p+N,D));for(let N=0;N<f;N++)a.set([p+N,D],Number(a.get(p+N,D))-S*A[N]*w)}}if(t==="raw"){let p=x.zeros([e,n],"float64");for(let y=0;y<e;y++)for(let g=0;g<n;g++)p.set([y,g],Number(a.get(y,g)));let f=x.zeros([o],"float64");for(let y=0;y<o;y++)f.set([y],s[y]);return{h:p,tau:f}}if(t==="r"){let p=x.zeros([o,n],"float64");for(let f=0;f<o;f++)for(let y=f;y<n;y++)p.set([f,y],Number(a.get(f,y)));return p}let i=t==="complete"?e:o,c=x.zeros([e,i],"float64");for(let p=0;p<Math.min(e,i);p++)c.set([p,p],1);for(let p=o-1;p>=0;p--){let f=u[p],y=s[p],g=e-p;for(let h=p;h<i;h++){let b=0;for(let A=0;A<g;A++)b+=f[A]*Number(c.get(p+A,h));for(let A=0;A<g;A++)c.set([p+A,h],Number(c.get(p+A,h))-y*f[A]*b)}}let l=x.zeros([e,i],"float64");for(let p=0;p<e;p++)for(let f=0;f<i;f++)l.set([p,f],Number(c.get(p,f)));let m=t==="complete"?e:o,d=x.zeros([m,n],"float64");for(let p=0;p<m;p++)for(let f=0;f<n;f++)f>=p&&d.set([p,f],Number(a.get(p,f)));return{q:l,r:d}}function go(r,t=!1){if(r.ndim!==2)throw new Error(`cholesky: input must be 2D, got ${r.ndim}D`);let[e,n]=r.shape;if(e!==n)throw new Error(`cholesky: matrix must be square, got ${e}x${n}`);let o=e,a=x.zeros([o,o],"float64");for(let u=0;u<o;u++)for(let s=0;s<=u;s++){let i=0;if(u===s){for(let l=0;l<s;l++)i+=Number(a.get(s,l))**2;let c=Number(r.get(s,s))-i;if(c<0)throw new Error("cholesky: matrix is not positive definite");a.set([s,s],Math.sqrt(c))}else{for(let l=0;l<s;l++)i+=Number(a.get(u,l))*Number(a.get(s,l));let c=Number(a.get(s,s));if(Math.abs(c)<1e-15)throw new Error("cholesky: matrix is not positive definite");a.set([u,s],(Number(r.get(u,s))-i)/c)}}if(t){let u=x.zeros([o,o],"float64");for(let s=0;s<o;s++)for(let i=s;i<o;i++)u.set([s,i],Number(a.get(i,s)));return u}return a}function _r(r){if(r.ndim!==2)throw new Error(`svd: input must be 2D, got ${r.ndim}D`);let[t,e]=r.shape,n=Math.min(t,e),o=x.zeros([e,e],"float64");for(let m=0;m<e;m++)for(let d=0;d<e;d++){let p=0;for(let f=0;f<t;f++)p+=Number(r.get(f,m))*Number(r.get(f,d));o.set([m,d],p)}let{values:a,vectors:u}=ue(o),s=Array.from({length:e},(m,d)=>d);s.sort((m,d)=>a[d]-a[m]);let i=x.zeros([n],"float64");for(let m=0;m<n;m++){let d=a[s[m]];i.set([m],Math.sqrt(Math.max(0,d)))}let c=x.zeros([e,e],"float64");for(let m=0;m<e;m++)for(let d=0;d<e;d++)c.set([m,d],u[d][s[m]]);let l=x.zeros([t,t],"float64");for(let m=0;m<t;m++)for(let d=0;d<n;d++){let p=Number(i.get(d));if(p>1e-10){let f=0;for(let y=0;y<e;y++)f+=Number(r.get(m,y))*Number(c.get(d,y));l.set([m,d],f/p)}}if(t>n)for(let m=n;m<t;m++){let d=new Array(t).fill(0);d[m]=1;for(let f=0;f<m;f++){let y=0;for(let g=0;g<t;g++)y+=d[g]*Number(l.get(g,f));for(let g=0;g<t;g++)d[g]=d[g]-y*Number(l.get(g,f))}let p=0;for(let f=0;f<t;f++)p+=d[f]*d[f];if(p=Math.sqrt(p),p>1e-10)for(let f=0;f<t;f++)l.set([f,m],d[f]/p)}return{u:l,s:i,vt:c}}function ue(r){let t=r.shape[0],e=100*t*t,n=1e-10,o=[];for(let s=0;s<t;s++){o.push([]);for(let i=0;i<t;i++)o[s].push(Number(r.get(s,i)))}let a=[];for(let s=0;s<t;s++){a.push([]);for(let i=0;i<t;i++)a[s].push(s===i?1:0)}for(let s=0;s<e;s++){let i=0,c=0,l=1;for(let A=0;A<t;A++)for(let S=A+1;S<t;S++)Math.abs(o[A][S])>i&&(i=Math.abs(o[A][S]),c=A,l=S);if(i<n)break;let m=o[c][c],d=o[l][l],p=o[c][l],f;Math.abs(m-d)<1e-15?f=Math.PI/4:f=.5*Math.atan2(2*p,d-m);let y=Math.cos(f),g=Math.sin(f),h=y*y*m+g*g*d-2*g*y*p,b=g*g*m+y*y*d+2*g*y*p;o[c][c]=h,o[l][l]=b,o[c][l]=0,o[l][c]=0;for(let A=0;A<t;A++)if(A!==c&&A!==l){let S=o[A][c],D=o[A][l];o[A][c]=y*S-g*D,o[c][A]=o[A][c],o[A][l]=g*S+y*D,o[l][A]=o[A][l]}for(let A=0;A<t;A++){let S=a[A][c],D=a[A][l];a[A][c]=y*S-g*D,a[A][l]=g*S+y*D}}let u=[];for(let s=0;s<t;s++)u.push(o[s][s]);return{values:u,vectors:a}}function Ao(r,t=!0,e=!0){let n=_r(r);if(!e)return n.s;if(!t){let[o,a]=r.shape,u=Math.min(o,a),s=x.zeros([o,u],"float64");for(let c=0;c<o;c++)for(let l=0;l<u;l++)s.set([c,l],Number(n.u.get(c,l)));let i=x.zeros([u,a],"float64");for(let c=0;c<u;c++)for(let l=0;l<a;l++)i.set([c,l],Number(n.vt.get(c,l)));return{u:s,s:n.s,vt:i}}return n}function bo(r){if(r.ndim!==2)throw new Error(`det: input must be 2D, got ${r.ndim}D`);let[t,e]=r.shape;if(t!==e)throw new Error(`det: matrix must be square, got ${t}x${e}`);let n=t;if(n===0)return 1;let o=r.data;if(n===1)return Number(o[0]);if(n===2)return Number(o[0])*Number(o[3])-Number(o[1])*Number(o[2]);let{lu:a,sign:u}=ce(r),s=a.data,i=u;for(let c=0;c<n;c++)i*=s[c*n+c];return i}function ce(r){let[t,e]=r.shape,n=t,o=e,a=x.zeros([n,o],"float64"),u=a.data,s=r.data;for(let l=0;l<n*o;l++)u[l]=Number(s[l]);let i=Array.from({length:n},(l,m)=>m),c=1;for(let l=0;l<Math.min(n,o);l++){let m=Math.abs(u[l*o+l]),d=l;for(let f=l+1;f<n;f++){let y=Math.abs(u[f*o+l]);y>m&&(m=y,d=f)}if(d!==l){for(let y=0;y<o;y++){let g=u[l*o+y];u[l*o+y]=u[d*o+y],u[d*o+y]=g}let f=i[l];i[l]=i[d],i[d]=f,c=-c}let p=u[l*o+l];if(Math.abs(p)>1e-15)for(let f=l+1;f<n;f++){let y=u[f*o+l]/p;u[f*o+l]=y;for(let g=l+1;g<o;g++)u[f*o+g]=u[f*o+g]-y*u[l*o+g]}}return{lu:a,piv:i,sign:c}}function ht(r){if(r.ndim!==2)throw new Error(`inv: input must be 2D, got ${r.ndim}D`);let[t,e]=r.shape;if(t!==e)throw new Error(`inv: matrix must be square, got ${t}x${e}`);let n=t,{lu:o,piv:a}=ce(r),u=o.data,s=x.zeros([n,n],"float64"),i=s.data;for(let c=0;c<n;c++){let l=new Float64Array(n);for(let m=0;m<n;m++){let d=a[m]===c?1:0;for(let p=0;p<m;p++)d-=u[m*n+p]*l[p];l[m]=d}for(let m=n-1;m>=0;m--){let d=l[m];for(let f=m+1;f<n;f++)d-=u[m*n+f]*i[f*n+c];let p=u[m*n+m];if(Math.abs(p)<1e-15)throw new Error("inv: singular matrix");i[m*n+c]=d/p}}return s}function so(r,t){let[e]=r.shape,n=e,{lu:o,piv:a}=ce(r),u=o.data,s=t.data,i=new Float64Array(n);for(let d=0;d<n;d++)i[d]=Number(s[a[d]]);let c=new Float64Array(n);for(let d=0;d<n;d++){let p=i[d];for(let f=0;f<d;f++)p-=u[d*n+f]*c[f];c[d]=p}let l=x.zeros([n],"float64"),m=l.data;for(let d=n-1;d>=0;d--){let p=c[d];for(let y=d+1;y<n;y++)p-=u[d*n+y]*m[y];let f=u[d*n+d];if(Math.abs(f)<1e-15)throw new Error("solve: singular matrix");m[d]=p/f}return l}function ho(r,t){if(r.ndim!==2)throw new Error(`solve: coefficient matrix must be 2D, got ${r.ndim}D`);let[e,n]=r.shape;if(e!==n)throw new Error(`solve: coefficient matrix must be square, got ${e}x${n}`);let o=e;if(t.ndim===1){if(t.shape[0]!==o)throw new Error(`solve: incompatible shapes (${e},${n}) and (${t.shape[0]},)`);return so(r,t)}if(t.ndim===2){if(t.shape[0]!==o)throw new Error(`solve: incompatible shapes (${e},${n}) and (${t.shape[0]},${t.shape[1]})`);let a=t.shape[1],u=x.zeros([o,a],"float64");for(let s=0;s<a;s++){let i=x.zeros([o],"float64");for(let l=0;l<o;l++)i.set([l],Number(t.get(l,s)));let c=so(r,i);for(let l=0;l<o;l++)u.set([l,s],Number(c.get(l)))}return u}throw new Error(`solve: b must be 1D or 2D, got ${t.ndim}D`)}function So(r,t,e=null){if(r.ndim!==2)throw new Error(`lstsq: coefficient matrix must be 2D, got ${r.ndim}D`);let[n,o]=r.shape,{u:a,s:u,vt:s}=_r(r),i=Math.min(n,o),c=e??Math.max(n,o)*Number.EPSILON,m=Number(u.get(0))*c,d=0;for(let b=0;b<i;b++)Number(u.get(b))>m&&d++;let p=t.ndim===1?nr(t,[t.size,1]):t,f=p.shape[1];if(p.shape[0]!==n)throw new Error(`lstsq: incompatible shapes (${n},${o}) and (${t.shape.join(",")})`);let y=x.zeros([o,f],"float64");for(let b=0;b<f;b++){let A=new Array(n).fill(0);for(let S=0;S<n;S++)for(let D=0;D<n;D++)A[S]+=Number(a.get(D,S))*Number(p.get(D,b));for(let S=0;S<o;S++){let D=0;for(let w=0;w<i;w++){let N=Number(u.get(w));N>m&&(D+=Number(s.get(w,S))*A[w]/N)}y.set([S,b],D)}}let g;if(n>o){g=x.zeros([f],"float64");for(let b=0;b<f;b++){let A=0;for(let S=0;S<n;S++){let D=0;for(let N=0;N<o;N++)D+=Number(r.get(S,N))*Number(y.get(N,b));let w=D-Number(p.get(S,b));A+=w*w}g.set([b],A)}}else g=x.zeros([0],"float64");return{x:t.ndim===1?nr(y,[o]):y,residuals:g,rank:d,s:u}}function Do(r,t=2){if(r.ndim!==2)throw new Error(`cond: input must be 2D, got ${r.ndim}D`);let[e,n]=r.shape;if(t===2||t===-2){let{s}=_r(r),i=Math.min(e,n),c=Number(s.get(0)),l=Number(s.get(i-1));return t===2?l>0?c/l:1/0:c>0?l/c:0}if(e!==n)throw new Error(`cond: matrix must be square for p=${t}`);let o=Br(r,t),a=ht(r),u=Br(a,t);return o*u}function xo(r,t){if(r.ndim===0)return Number(r.get())!==0?1:0;if(r.ndim===1){for(let u=0;u<r.size;u++)if(Number(r.get(u))!==0)return 1;return 0}if(r.ndim!==2)throw new Error(`matrix_rank: input must be at most 2D, got ${r.ndim}D`);let{s:e}=_r(r),n=Number(e.get(0)),o=t??n*Math.max(r.shape[0],r.shape[1])*Number.EPSILON,a=0;for(let u=0;u<e.size;u++)Number(e.get(u))>o&&a++;return a}function No(r,t){if(r.ndim!==2)throw new Error(`matrix_power: input must be 2D, got ${r.ndim}D`);let[e,n]=r.shape;if(e!==n)throw new Error(`matrix_power: matrix must be square, got ${e}x${n}`);let o=e;if(!Number.isInteger(t))throw new Error("matrix_power: exponent must be an integer");if(t===0){let c=x.zeros([o,o],"float64");for(let l=0;l<o;l++)c.set([l,l],1);return c}let a=r,u=t;t<0&&(a=ht(r),u=-t);let s=x.zeros([o,o],"float64");for(let c=0;c<o;c++)s.set([c,c],1);let i=x.zeros([o,o],"float64");for(let c=0;c<o;c++)for(let l=0;l<o;l++)i.set([c,l],Number(a.get(c,l)));for(;u>0;)u&1&&(s=pr(s,i)),i=pr(i,i),u>>=1;return s}function wo(r,t=1e-15){if(r.ndim!==2)throw new Error(`pinv: input must be 2D, got ${r.ndim}D`);let[e,n]=r.shape,{u:o,s:a,vt:u}=_r(r),s=Math.min(e,n),c=Number(a.get(0))*t,l=x.zeros([n,e],"float64");for(let m=0;m<n;m++)for(let d=0;d<e;d++){let p=0;for(let f=0;f<s;f++){let y=Number(a.get(f));y>c&&(p+=Number(u.get(f,m))*Number(o.get(d,f))/y)}l.set([m,d],p)}return l}function le(r){if(r.ndim!==2)throw new Error(`eig: input must be 2D, got ${r.ndim}D`);let[t,e]=r.shape;if(t!==e)throw new Error(`eig: matrix must be square, got ${t}x${e}`);let n=t,o=!0;r:for(let c=0;c<n;c++)for(let l=c+1;l<n;l++)if(Math.abs(Number(r.get(c,l))-Number(r.get(l,c)))>1e-10){o=!1;break r}if(o){let{values:c,vectors:l}=ue(r),m=x.zeros([n],"float64"),d=x.zeros([n,n],"float64");for(let p=0;p<n;p++){m.set([p],c[p]);for(let f=0;f<n;f++)d.set([f,p],l[f][p])}return{w:m,v:d}}console.warn("numpy-ts: eig() called on non-symmetric matrix. Complex eigenvalues are not supported; results may be inaccurate. For symmetric matrices, use eigh() instead.");let{values:a,vectors:u}=iu(r),s=x.zeros([n],"float64"),i=x.zeros([n,n],"float64");for(let c=0;c<n;c++){s.set([c],a[c]);for(let l=0;l<n;l++)i.set([l,c],u[l][c])}return{w:s,v:i}}function iu(r){let t=r.shape[0],e=1e3,n=1e-10,o=x.zeros([t,t],"float64");for(let i=0;i<t;i++)for(let c=0;c<t;c++)o.set([i,c],Number(r.get(i,c)));let a=x.zeros([t,t],"float64");for(let i=0;i<t;i++)a.set([i,i],1);for(let i=0;i<e;i++){let c=0;for(let p=0;p<t;p++)for(let f=0;f<t;f++)p!==f&&(c+=Number(o.get(p,f))**2);if(Math.sqrt(c)<n*t)break;let l=ie(o,"reduced"),m=l.q,d=l.r;o=pr(d,m),a=pr(a,m)}let u=[];for(let i=0;i<t;i++)u.push(Number(o.get(i,i)));let s=[];for(let i=0;i<t;i++){s.push([]);for(let c=0;c<t;c++)s[i].push(Number(a.get(i,c)))}return{values:u,vectors:s}}function fe(r,t="L"){if(r.ndim!==2)throw new Error(`eigh: input must be 2D, got ${r.ndim}D`);let[e,n]=r.shape;if(e!==n)throw new Error(`eigh: matrix must be square, got ${e}x${n}`);let o=e,a=x.zeros([o,o],"float64");for(let m=0;m<o;m++)for(let d=0;d<o;d++)t==="L"?m>=d&&(a.set([m,d],Number(r.get(m,d))),a.set([d,m],Number(r.get(m,d)))):d>=m&&(a.set([m,d],Number(r.get(m,d))),a.set([d,m],Number(r.get(m,d))));let{values:u,vectors:s}=ue(a),i=Array.from({length:o},(m,d)=>d);i.sort((m,d)=>u[m]-u[d]);let c=x.zeros([o],"float64"),l=x.zeros([o,o],"float64");for(let m=0;m<o;m++){c.set([m],u[i[m]]);for(let d=0;d<o;d++)l.set([d,m],s[d][i[m]])}return{w:c,v:l}}function Io(r){let{w:t}=le(r);return t}function zo(r,t="L"){let{w:e}=fe(r,t);return e}function _o(r){let t=r.dtype;if(M(t)){let e=Array.from(r.shape),n=r.size,o=r.data,a=x.zeros(e,t),u=a.data;for(let s=0;s<n;s++){let i=o[s*2],c=o[s*2+1],l=Math.sqrt(i*i+c*c),m=Math.sqrt((l+i)/2),d=(c>=0?1:-1)*Math.sqrt((l-i)/2);u[s*2]=m,u[s*2+1]=d}return a}return Y(r,Math.sqrt,!1)}function Fo(r,t){if(typeof t=="number")return lu(r,t);let e=M(r.dtype),n=M(t.dtype);return e||n?cu(r,t):J(r,t,Math.pow,"power")}function cu(r,t){let e=M(r.dtype),n=M(t.dtype),o=r.dtype==="complex128"||t.dtype==="complex128"||t.dtype==="float64"?"complex128":"complex64",a=Array.from(r.shape),u=r.size,s=x.zeros(a,o),i=s.data;for(let c=0;c<u;c++){let l,m;if(e){let S=r.data;l=S[c*2],m=S[c*2+1]}else l=Number(r.iget(c)),m=0;let d,p;if(n){let S=t.data;d=S[c*2],p=S[c*2+1]}else d=Number(t.iget(c)),p=0;let f=Math.sqrt(l*l+m*m),y=Math.atan2(m,l),g=Math.log(f),h=d*g-p*y,b=d*y+p*g,A=Math.exp(h);i[c*2]=A*Math.cos(b),i[c*2+1]=A*Math.sin(b)}return s}function lu(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size;if(M(e)){let m=x.zeros(n,e),d=o,p=m.data;for(let f=0;f<a;f++){let y=d[f*2],g=d[f*2+1],h=Math.sqrt(y*y+g*g),b=Math.atan2(g,y),A=Math.pow(h,t),S=b*t;p[f*2]=A*Math.cos(S),p[f*2+1]=A*Math.sin(S)}return m}let i=e!=="float32"&&e!=="float64"&&(t<0||!Number.isInteger(t))?"float64":e,c=x.zeros(n,i),l=c.data;if(B(e))if(B(i)&&Number.isInteger(t)&&t>=0){let m=o,d=l;for(let p=0;p<a;p++)d[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 Mo(r){let t=r.dtype;if(M(t)){let e=Array.from(r.shape),n=r.size,o=r.data,a=x.zeros(e,t),u=a.data;for(let s=0;s<n;s++){let i=o[s*2],c=o[s*2+1],l=Math.exp(i);u[s*2]=l*Math.cos(c),u[s*2+1]=l*Math.sin(c)}return a}return Y(r,Math.exp,!1)}function Bo(r){let t=r.dtype;if(M(t)){let e=Array.from(r.shape),n=r.size,o=r.data,a=Math.LN2,u=x.zeros(e,t),s=u.data;for(let i=0;i<n;i++){let c=o[i*2],l=o[i*2+1],m=Math.exp(c*a),d=l*a;s[i*2]=m*Math.cos(d),s[i*2+1]=m*Math.sin(d)}return u}return Y(r,e=>Math.pow(2,e),!1)}function vo(r){let t=r.dtype;if(M(t)){let e=Array.from(r.shape),n=r.size,o=r.data,a=x.zeros(e,t),u=a.data;for(let s=0;s<n;s++){let i=o[s*2],c=o[s*2+1],l=Math.exp(i);u[s*2]=l*Math.cos(c)-1,u[s*2+1]=l*Math.sin(c)}return a}return Y(r,Math.expm1,!1)}function Eo(r){let t=r.dtype;if(M(t)){let e=Array.from(r.shape),n=r.size,o=r.data,a=x.zeros(e,t),u=a.data;for(let s=0;s<n;s++){let i=o[s*2],c=o[s*2+1],l=Math.sqrt(i*i+c*c),m=Math.atan2(c,i);u[s*2]=Math.log(l),u[s*2+1]=m}return a}return Y(r,Math.log,!1)}function To(r){let t=r.dtype;if(M(t)){let e=Array.from(r.shape),n=r.size,o=r.data,a=1/Math.LN2,u=x.zeros(e,t),s=u.data;for(let i=0;i<n;i++){let c=o[i*2],l=o[i*2+1],m=Math.sqrt(c*c+l*l),d=Math.atan2(l,c);s[i*2]=Math.log(m)*a,s[i*2+1]=d*a}return u}return Y(r,Math.log2,!1)}function Oo(r){let t=r.dtype;if(M(t)){let e=Array.from(r.shape),n=r.size,o=r.data,a=1/Math.LN10,u=x.zeros(e,t),s=u.data;for(let i=0;i<n;i++){let c=o[i*2],l=o[i*2+1],m=Math.sqrt(c*c+l*l),d=Math.atan2(l,c);s[i*2]=Math.log(m)*a,s[i*2+1]=d*a}return u}return Y(r,Math.log10,!1)}function Co(r){let t=r.dtype;if(M(t)){let e=Array.from(r.shape),n=r.size,o=r.data,a=x.zeros(e,t),u=a.data;for(let s=0;s<n;s++){let i=o[s*2],c=o[s*2+1],l=1+i,m=Math.sqrt(l*l+c*c),d=Math.atan2(c,l);u[s*2]=Math.log(m),u[s*2+1]=d}return a}return Y(r,Math.log1p,!1)}function Uo(r,t){return q(r.dtype,"logaddexp","logaddexp is not supported for complex numbers."),typeof t!="number"&&q(t.dtype,"logaddexp","logaddexp is not supported for complex numbers."),typeof t=="number"?mu(r,t):fu(r,t)}function fu(r,t){let e=Ir(r.shape,t.shape),n=e.reduce((c,l)=>c*l,1),o=r.dtype,a=t.dtype,u=o==="float32"&&a==="float32"?"float32":"float64",s=x.zeros(e,u),i=s.data;for(let c=0;c<n;c++){let l=(B(o),Number(r.iget(c))),m=(B(a),Number(t.iget(c))),d=Math.max(l,m),p=Math.min(l,m);i[c]=d+Math.log1p(Math.exp(p-d))}return s}function mu(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.size,a=e==="float32"?"float32":"float64",u=x.zeros(n,a),s=u.data;for(let i=0;i<o;i++){let c=(B(e),Number(r.data[i])),l=Math.max(c,t),m=Math.min(c,t);s[i]=l+Math.log1p(Math.exp(m-l))}return u}function $o(r,t){return q(r.dtype,"logaddexp2","logaddexp2 is not supported for complex numbers."),typeof t!="number"&&q(t.dtype,"logaddexp2","logaddexp2 is not supported for complex numbers."),typeof t=="number"?pu(r,t):yu(r,t)}function yu(r,t){let e=Ir(r.shape,t.shape),n=e.reduce((l,m)=>l*m,1),o=r.dtype,a=t.dtype,u=o==="float32"&&a==="float32"?"float32":"float64",s=x.zeros(e,u),i=s.data,c=Math.LOG2E;for(let l=0;l<n;l++){let m=(B(o),Number(r.iget(l))),d=(B(a),Number(t.iget(l))),p=Math.max(m,d),f=Math.min(m,d);i[l]=p+Math.log1p(Math.pow(2,f-p))*c}return s}function pu(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.size,a=e==="float32"?"float32":"float64",u=x.zeros(n,a),s=u.data,i=Math.LOG2E;for(let c=0;c<o;c++){let l=(B(e),Number(r.data[c])),m=Math.max(l,t),d=Math.min(l,t);s[c]=m+Math.log1p(Math.pow(2,d-m))*i}return u}function Ro(r){let t=r.dtype;if(M(t)){let e=Array.from(r.shape),n=r.size,o=r.data,a=x.zeros(e,t),u=a.data;for(let s=0;s<n;s++){let i=o[s*2],c=o[s*2+1];u[s*2]=Math.sin(i)*Math.cosh(c),u[s*2+1]=Math.cos(i)*Math.sinh(c)}return a}return Y(r,Math.sin,!1)}function ko(r){let t=r.dtype;if(M(t)){let e=Array.from(r.shape),n=r.size,o=r.data,a=x.zeros(e,t),u=a.data;for(let s=0;s<n;s++){let i=o[s*2],c=o[s*2+1];u[s*2]=Math.cos(i)*Math.cosh(c),u[s*2+1]=-Math.sin(i)*Math.sinh(c)}return a}return Y(r,Math.cos,!1)}function qo(r){let t=r.dtype;if(M(t)){let e=Array.from(r.shape),n=r.size,o=r.data,a=x.zeros(e,t),u=a.data;for(let s=0;s<n;s++){let i=o[s*2],c=o[s*2+1],l=Math.cos(2*i)+Math.cosh(2*c);u[s*2]=Math.sin(2*i)/l,u[s*2+1]=Math.sinh(2*c)/l}return a}return Y(r,Math.tan,!1)}function Vo(r){let t=r.dtype;if(M(t)){let e=Array.from(r.shape),n=r.size,o=r.data,a=x.zeros(e,t),u=a.data;for(let s=0;s<n;s++){let i=o[s*2],c=o[s*2+1],l=-c,m=i,d=i*i-c*c,p=2*i*c,f=1-d,y=-p,g=Math.sqrt(f*f+y*y),h=Math.sqrt((g+f)/2),b=(y>=0?1:-1)*Math.sqrt((g-f)/2),A=l+h,S=m+b,D=Math.sqrt(A*A+S*S),w=Math.log(D),I=Math.atan2(S,A),z=-w;Math.abs(c)<1e-15&&i>1&&(z=-z),u[s*2]=I,u[s*2+1]=z}return a}return Y(r,Math.asin,!1)}function jo(r){let t=r.dtype;if(M(t)){let e=Array.from(r.shape),n=r.size,o=r.data,a=x.zeros(e,t),u=a.data;for(let s=0;s<n;s++){let i=o[s*2],c=o[s*2+1],l=i*i-c*c,m=2*i*c,d=1-l,p=-m,f=Math.sqrt(d*d+p*p),y=Math.sqrt((f+d)/2),h=-((p>=0?1:-1)*Math.sqrt((f-d)/2)),b=y,A=i+h,S=c+b,D=Math.sqrt(A*A+S*S),w=Math.log(D),I=Math.atan2(S,A),z=-w;Math.abs(c)<1e-15&&i>1&&(z=-z),u[s*2]=I,u[s*2+1]=z}return a}return Y(r,Math.acos,!1)}function Po(r){let t=r.dtype;if(M(t)){let e=Array.from(r.shape),n=r.size,o=r.data,a=x.zeros(e,t),u=a.data;for(let s=0;s<n;s++){let i=o[s*2],l=-o[s*2+1],m=i,d=1-l,p=-m,f=1+l,y=m,g=f*f+y*y,h=(d*f+p*y)/g,b=(p*f-d*y)/g,A=Math.sqrt(h*h+b*b),S=Math.log(A),D=Math.atan2(b,h);u[s*2]=-D/2,u[s*2+1]=S/2}return a}return Y(r,Math.atan,!1)}function Lo(r,t){return q(r.dtype,"arctan2","arctan2 is only defined for real numbers."),typeof t!="number"&&q(t.dtype,"arctan2","arctan2 is only defined for real numbers."),typeof t=="number"?Au(r,t):gu(r,t)}function gu(r,t){let e=Array.from(r.shape),n=r.size,o=r.dtype,a=t.dtype,u=o==="float32"&&a==="float32"?"float32":"float64",s=x.zeros(e,u),i=s.data;for(let c=0;c<n;c++){let l=(B(o),Number(r.data[c])),m=(B(a),Number(t.data[c]));i[c]=Math.atan2(l,m)}return s}function Au(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,u=e==="float32"?"float32":"float64",s=x.zeros(n,u),i=s.data;if(B(e))for(let c=0;c<a;c++)i[c]=Math.atan2(Number(o[c]),t);else for(let c=0;c<a;c++)i[c]=Math.atan2(Number(o[c]),t);return s}function Zo(r,t){return q(r.dtype,"hypot","hypot is only defined for real numbers."),typeof t!="number"&&q(t.dtype,"hypot","hypot is only defined for real numbers."),typeof t=="number"?hu(r,t):bu(r,t)}function bu(r,t){let e=Array.from(r.shape),n=r.size,o=r.dtype,a=t.dtype,u=o==="float32"&&a==="float32"?"float32":"float64",s=x.zeros(e,u),i=s.data;for(let c=0;c<n;c++){let l=(B(o),Number(r.data[c])),m=(B(a),Number(t.data[c]));i[c]=Math.hypot(l,m)}return s}function hu(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,u=e==="float32"?"float32":"float64",s=x.zeros(n,u),i=s.data;if(B(e))for(let c=0;c<a;c++)i[c]=Math.hypot(Number(o[c]),t);else for(let c=0;c<a;c++)i[c]=Math.hypot(Number(o[c]),t);return s}function Go(r){q(r.dtype,"degrees","degrees is only defined for real numbers.");let t=180/Math.PI;return Y(r,e=>e*t,!1)}function Wo(r){q(r.dtype,"radians","radians is only defined for real numbers.");let t=Math.PI/180;return Y(r,e=>e*t,!1)}function Yo(r){let t=r.dtype;if(M(t)){let e=Array.from(r.shape),n=r.size,o=r.data,a=x.zeros(e,t),u=a.data;for(let s=0;s<n;s++){let i=o[s*2],c=o[s*2+1];u[s*2]=Math.sinh(i)*Math.cos(c),u[s*2+1]=Math.cosh(i)*Math.sin(c)}return a}return Y(r,Math.sinh,!1)}function Ho(r){let t=r.dtype;if(M(t)){let e=Array.from(r.shape),n=r.size,o=r.data,a=x.zeros(e,t),u=a.data;for(let s=0;s<n;s++){let i=o[s*2],c=o[s*2+1];u[s*2]=Math.cosh(i)*Math.cos(c),u[s*2+1]=Math.sinh(i)*Math.sin(c)}return a}return Y(r,Math.cosh,!1)}function Jo(r){let t=r.dtype;if(M(t)){let e=Array.from(r.shape),n=r.size,o=r.data,a=x.zeros(e,t),u=a.data;for(let s=0;s<n;s++){let i=o[s*2],c=o[s*2+1],l=Math.cosh(2*i)+Math.cos(2*c);u[s*2]=Math.sinh(2*i)/l,u[s*2+1]=Math.sin(2*c)/l}return a}return Y(r,Math.tanh,!1)}function Xo(r){let t=r.dtype;if(M(t)){let e=Array.from(r.shape),n=r.size,o=r.data,a=x.zeros(e,t),u=a.data;for(let s=0;s<n;s++){let i=o[s*2],c=o[s*2+1],l=i*i-c*c,m=2*i*c,d=l+1,p=m,f=Math.sqrt(d*d+p*p),y=Math.sqrt((f+d)/2),g=(p>=0?1:-1)*Math.sqrt((f-d)/2),h=i+y,b=c+g,A=Math.sqrt(h*h+b*b);u[s*2]=Math.log(A),u[s*2+1]=Math.atan2(b,h)}return a}return Y(r,Math.asinh,!1)}function Qo(r){let t=r.dtype;if(M(t)){let e=Array.from(r.shape),n=r.size,o=r.data,a=x.zeros(e,t),u=a.data;for(let s=0;s<n;s++){let i=o[s*2],c=o[s*2+1],l=i*i-c*c,m=2*i*c,d=l-1,p=m,f=Math.sqrt(d*d+p*p),y=Math.sqrt((f+d)/2),g=(p>=0?1:-1)*Math.sqrt((f-d)/2),h=i+y,b=c+g,A=Math.sqrt(h*h+b*b),S=Math.log(A),D=Math.atan2(b,h);Math.abs(c)<1e-15&&i<1&&(D=-D),u[s*2]=S,u[s*2+1]=D}return a}return Y(r,Math.acosh,!1)}function Ko(r){let t=r.dtype;if(M(t)){let e=Array.from(r.shape),n=r.size,o=r.data,a=x.zeros(e,t),u=a.data;for(let s=0;s<n;s++){let i=o[s*2],c=o[s*2+1],l=1+i,m=c,d=1-i,p=-c,f=d*d+p*p,y=(l*d+m*p)/f,g=(m*d-l*p)/f,h=Math.sqrt(y*y+g*g),b=Math.log(h),A=Math.atan2(g,y);u[s*2]=b/2,u[s*2+1]=A/2}return a}return Y(r,Math.atanh,!1)}function St(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=yr([Array.from(e),t]);if(a===null)throw new Error(`operands could not be broadcast together with shape (${e.join(",")}) (${t.join(",")})`);for(let u=0;u<o;u++)if(a[u]!==t[u])throw new Error(`operands could not be broadcast together with shape (${e.join(",")}) (${t.join(",")})`);return lr(r,t)}function ra(r){if(r.length===0)return[];if(r.length===1)return[r[0]];let t=r.map(n=>Array.from(n.shape)),e=yr(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=>lr(n,e))}function ta(r,t,e){let n=r.shape,o=n.length,a=r.dtype;if(e===void 0){let f=r.size;for(let b of t){let A=b<0?f+b:b;if(A<0||A>=f)throw new Error(`index ${b} is out of bounds for axis 0 with size ${f}`)}let y=t.length,g=P(a);if(!g)throw new Error(`Cannot take from array with dtype ${a}`);let h=new g(y);for(let b=0;b<y;b++){let A=t[b];A<0&&(A=f+A);let S=r.iget(A);B(a),h[b]=S}return x.fromData(h,[y],a)}let u=e<0?o+e:e;if(u<0||u>=o)throw new Error(`axis ${e} is out of bounds for array of dimension ${o}`);let s=n[u];for(let f of t){let y=f<0?s+f:f;if(y<0||y>=s)throw new Error(`index ${f} is out of bounds for axis ${u} with size ${s}`)}let i=Array.from(n);i[u]=t.length;let c=i.reduce((f,y)=>f*y,1),l=P(a);if(!l)throw new Error(`Cannot take from array with dtype ${a}`);let m=new l(c),d=or(i),p=new Array(o).fill(0);for(let f=0;f<c;f++){let y=[...p],g=p[u],h=t[g];h<0&&(h=s+h),y[u]=h;let b=r.get(...y),A=0;for(let S=0;S<o;S++)A+=p[S]*d[S];B(a),m[A]=b;for(let S=o-1;S>=0&&(p[S]++,!(p[S]<i[S]));S--)p[S]=0}return x.fromData(m,i,a)}function ea(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 u=0;u<e.size;u++){let s=e.iget(u);a.push(s instanceof O?s.re:s)}if(a.length===1)a=new Array(t.length).fill(a[0]);else if(a.length!==t.length){let u=[...a];a=[];for(let s=0;s<t.length;s++)a.push(u[s%u.length])}}for(let u=0;u<t.length;u++){let s=t[u];if(s<0&&(s=n+s),s<0||s>=n)throw new Error(`index ${t[u]} is out of bounds for axis 0 with size ${n}`);let i=a[u];B(o)?typeof i!="bigint"&&(i=BigInt(Math.round(Number(i)))):typeof i=="bigint"&&(i=Number(i)),r.iset(s,i)}}function na(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(d=>Array.from(d.shape));a.unshift(Array.from(e));let u=yr(a);if(u===null)throw new Error("operands could not be broadcast together");let s=lr(r,u),i=t.map(d=>lr(d,u)),c=u.reduce((d,p)=>d*p,1),l=P(o);if(!l)throw new Error(`Cannot choose with dtype ${o}`);let m=new l(c);for(let d=0;d<c;d++){let p=Number(s.iget(d));if(p<0||p>=n)throw new Error(`index ${p} is out of bounds for axis 0 with size ${n}`);let f=i[p].iget(d);B(o),m[d]=f}return x.fromData(m,u,o)}function oa(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),u=t.iget(o);if(e){let s=typeof a=="number"&&Number.isNaN(a),i=typeof u=="number"&&Number.isNaN(u);if(s&&i)continue}if(a!==u)return!1}return!0}function aa(r,t,e){let n=r.shape,o=n.length,a=r.dtype,u=e<0?o+e:e;if(u<0||u>=o)throw new Error(`axis ${e} is out of bounds for array of dimension ${o}`);let s=t.shape;if(s.length!==o)throw new Error(`indices and arr must have the same number of dimensions, got ${s.length} vs ${o}`);for(let y=0;y<o;y++)if(y!==u&&s[y]!==n[y]&&s[y]!==1&&n[y]!==1)throw new Error(`index ${s[y]} is out of bounds for size ${n[y]} in dimension ${y}`);let i=Array.from(s),c=i.reduce((y,g)=>y*g,1),l=P(a);if(!l)throw new Error(`Cannot take_along_axis with dtype ${a}`);let m=new l(c),d=or(n),p=or(s),f=n[u];for(let y=0;y<c;y++){let g=new Array(o),h=y;for(let N=o-1;N>=0;N--)g[N]=h%i[N],h=Math.floor(h/i[N]);let b=0;for(let N=0;N<o;N++){let I=s[N]===1?0:g[N];b+=I*p[N]}let A=Number(t.iget(b));if(A<0&&(A=f+A),A<0||A>=f)throw new Error(`index ${A} is out of bounds for axis ${u} with size ${f}`);let S=[...g];S[u]=A;let D=0;for(let N=0;N<o;N++){let I=n[N]===1?0:S[N];D+=I*d[N]}let w=r.iget(D);B(a),m[y]=w}return x.fromData(m,i,a)}function sa(r,t,e,n){let o=r.shape,a=o.length,u=r.dtype,s=n<0?a+n:n;if(s<0||s>=a)throw new Error(`axis ${n} is out of bounds for array of dimension ${a}`);let i=t.shape,c=e.shape;if(i.length!==a||c.length!==a)throw new Error("indices, arr, and values must have same ndim");let l=o[s],m=or(o),d=or(i),p=or(c),f=i.reduce((y,g)=>y*g,1);for(let y=0;y<f;y++){let g=new Array(a),h=y;for(let I=a-1;I>=0;I--)g[I]=h%i[I],h=Math.floor(h/i[I]);let b=0;for(let I=0;I<a;I++)b+=g[I]*d[I];let A=Number(t.iget(b));if(A<0&&(A=l+A),A<0||A>=l)throw new Error(`index ${A} is out of bounds for axis ${s} with size ${l}`);let S=0;for(let I=0;I<a;I++){let z=c[I]===1?0:g[I];S+=z*p[I]}let D=e.iget(S),w=[...g];w[s]=A;let N=0;for(let I=0;I<a;I++)N+=w[I]*m[I];B(u)?typeof D!="bigint"&&(D=BigInt(Math.round(Number(D)))):typeof D=="bigint"&&(D=Number(D)),r.iset(N,D)}}function ia(r,t,e){let n=r.size,o=r.dtype,a;if(typeof e=="number"||typeof e=="bigint")a=[e];else{a=[];for(let s=0;s<e.size;s++){let i=e.iget(s);a.push(i instanceof O?i.re:i)}}let u=0;for(let s=0;s<n;s++)if(t.iget(s)){let c=a[u%a.length];B(o)?typeof c!="bigint"&&(c=BigInt(Math.round(Number(c)))):typeof c=="bigint"&&(c=Number(c)),r.iset(s,c),u++}}function me(r,t,e){let n=t.shape,o=n.length,a=t.dtype,u=t.data,s=B(a);if(e===void 0){let b=0,A=Math.min(r.size,t.size);for(let N=0;N<A;N++)r.iget(N)&&b++;let S=P(a);if(!S)throw new Error(`Cannot compress with dtype ${a}`);let D=new S(b),w=0;for(let N=0;N<A;N++)r.iget(N)&&(D[w]=u[N],w++);return x.fromData(D,[b],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 c=n[i],l=Math.min(r.size,c),m=[];for(let b=0;b<l;b++)r.iget(b)&&m.push(b);let d=m.length,p=[...n];p[i]=d;let f=p.reduce((b,A)=>b*A,1),y=P(a);if(!y)throw new Error(`Cannot compress with dtype ${a}`);let g=new y(f),h=or(n);if(i===0){let b=h[0],A=n.slice(1).reduce((D,w)=>D*w,1),S=0;for(let D=0;D<d;D++){let N=m[D]*b;if(s){let I=u,z=g;for(let F=0;F<A;F++)z[S++]=I[N+F]}else{let I=u,z=g;for(let F=0;F<A;F++)z[S++]=I[N+F]}}}else{let b=n.slice(0,i).reduce((D,w)=>D*w,1),A=n.slice(i+1).reduce((D,w)=>D*w,1),S=0;for(let D=0;D<b;D++)for(let w=0;w<d;w++){let N=m[w],I=0,z=D;for(let F=i-1;F>=0;F--){let _=z%n[F];z=Math.floor(z/n[F]),I+=_*h[F]}if(I+=N*h[i],s){let F=u,_=g;for(let E=0;E<A;E++)_[S++]=F[I+E]}else{let F=u,_=g;for(let E=0;E<A;E++)_[S++]=F[I+E]}}}return x.fromData(g,p,a)}function ua(r,t,e=0){if(r.length!==t.length)throw new Error("condlist and choicelist must have same length");if(r.length===0)throw new Error("condlist and choicelist cannot be empty");let n=[...r.map(d=>Array.from(d.shape)),...t.map(d=>Array.from(d.shape))],o=yr(n);if(o===null)throw new Error("condlist and choicelist arrays could not be broadcast together");let a=t[0].dtype,u=o.reduce((d,p)=>d*p,1),s=P(a);if(!s)throw new Error(`Cannot select with dtype ${a}`);let i=e;B(a)?i=typeof e=="bigint"?e:BigInt(e):i=typeof e=="bigint"?Number(e):e;let c=new s(u);for(let d=0;d<u;d++)B(a),c[d]=i;let l=r.map(d=>lr(d,o)),m=t.map(d=>lr(d,o));for(let d=0;d<u;d++)for(let p=0;p<r.length;p++)if(l[p].iget(d)){let f=m[p].iget(d);B(a),c[d]=f;break}return x.fromData(c,o,a)}function ca(r,t,e){let n=r.size,o=r.dtype,a=[];for(let s=0;s<e.size;s++){let i=e.iget(s);a.push(i instanceof O?i.re:i)}if(a.length===0)return;let u=0;for(let s=0;s<n;s++)if(t.iget(s)){let c=a[u%a.length];B(o)?typeof c!="bigint"&&(c=BigInt(Math.round(Number(c)))):typeof c=="bigint"&&(c=Number(c)),r.iset(s,c),u++}}function ye(r,t=2){if(t<1)throw new Error("ndim must be at least 1");let e=new Int32Array(r);for(let o=0;o<r;o++)e[o]=o;let n=[];for(let o=0;o<t;o++)n.push(x.fromData(new Int32Array(e),[r],"int32"));return n}function la(r){let t=r.shape,e=t.length;if(e<2)throw new Error("array must be at least 2-D");let n=t[0];for(let o=1;o<e;o++)if(t[o]!==n)throw new Error("All dimensions of input must be equal");return ye(n,e)}function pe(r,t=0,e){let n=e??r,o=[],a=[];for(let u=0;u<r;u++)for(let s=0;s<=Math.min(u+t,n-1);s++)s>=0&&(o.push(u),a.push(s));return[x.fromData(new Int32Array(o),[o.length],"int32"),x.fromData(new Int32Array(a),[a.length],"int32")]}function fa(r,t=0){let e=r.shape;if(e.length!==2)throw new Error("array must be 2-D");return pe(e[0],t,e[1])}function de(r,t=0,e){let n=e??r,o=[],a=[];for(let u=0;u<r;u++)for(let s=Math.max(u+t,0);s<n;s++)o.push(u),a.push(s);return[x.fromData(new Int32Array(o),[o.length],"int32"),x.fromData(new Int32Array(a),[a.length],"int32")]}function ma(r,t=0){let e=r.shape;if(e.length!==2)throw new Error("array must be 2-D");return de(e[0],t,e[1])}function ya(r,t,e=0){let n=t(r,e),o=n.shape;if(o.length!==2||o[0]!==r||o[1]!==r)throw new Error("mask_func must return n x n array");let a=[],u=[];for(let s=0;s<r;s++)for(let i=0;i<r;i++)n.get(s,i)&&(a.push(s),u.push(i));return[x.fromData(new Int32Array(a),[a.length],"int32"),x.fromData(new Int32Array(u),[u.length],"int32")]}function pa(r,t="int32"){let e=r.length,n=[e,...r],o=n.reduce((i,c)=>i*c,1),a=P(t);if(!a)throw new Error(`Cannot create indices with dtype ${t}`);let u=new a(o),s=r.reduce((i,c)=>i*c,1);for(let i=0;i<e;i++){let c=i*s;for(let l=0;l<s;l++){let m=new Array(e),d=l;for(let f=e-1;f>=0;f--)m[f]=d%r[f],d=Math.floor(d/r[f]);let p=m[i];t==="int64"?u[c+l]=BigInt(p):u[c+l]=p}}return x.fromData(u,n,t)}function da(...r){let t=r.length,e=[];for(let n=0;n<t;n++){let o=r[n],a=o.size,u=o.dtype,s=new Array(t).fill(1);s[n]=a;let i=P(u);if(!i)throw new Error(`Cannot create ix_ with dtype ${u}`);let c=new i(a);for(let l=0;l<a;l++){let m=o.iget(l);B(u),c[l]=m}e.push(x.fromData(c,s,u))}return e}function ga(r,t,e="raise"){if(r.length!==t.length)throw new Error("multi_index length must equal dims length");if(r.length===0)throw new Error("multi_index cannot be empty");let n=r[0].size,o=t.length,a=new Int32Array(n),u=new Array(o),s=1;for(let i=o-1;i>=0;i--)u[i]=s,s*=t[i];for(let i=0;i<n;i++){let c=0;for(let l=0;l<o;l++){let m=Number(r[l].iget(i)),d=t[l];if(e==="wrap")m=(m%d+d)%d;else if(e==="clip")m=Math.max(0,Math.min(m,d-1));else if(m<0||m>=d)throw new Error(`index ${m} is out of bounds for axis ${l} with size ${d}`);c+=m*u[l]}a[i]=c}return x.fromData(a,[n],"int32")}function Aa(r,t,e="C"){let n=t.length,o,a;if(typeof r=="number")o=[r],a=[];else{o=[];for(let l=0;l<r.size;l++)o.push(Number(r.iget(l)));a=Array.from(r.shape)}let u=o.length,s=t.reduce((l,m)=>l*m,1),i=new Array(n);if(e==="C"){let l=1;for(let m=n-1;m>=0;m--)i[m]=l,l*=t[m]}else{let l=1;for(let m=0;m<n;m++)i[m]=l,l*=t[m]}let c=[];for(let l=0;l<n;l++){let m=new Int32Array(u);c.push(x.fromData(m,a.length?a:[1],"int32"))}for(let l=0;l<u;l++){let m=o[l];if(m<0||m>=s)throw new Error(`index ${m} is out of bounds for array with size ${s}`);if(e==="C")for(let d=0;d<n;d++){let p=Math.floor(m/i[d]);m=m%i[d],c[d].data[l]=p%t[d]}else for(let d=n-1;d>=0;d--){let p=Math.floor(m/i[d]);m=m%i[d],c[d].data[l]=p%t[d]}}return typeof r=="number"?c.map(l=>{let m=l.iget(0);return x.fromData(new Int32Array([Number(m)]),[],"int32")}):c}function ba(r,t,e=!1){let n=r.shape,o=n.length;if(o<2)throw new Error("array must be at least 2-d");let a;if(o===2)a=n[1]+1;else{a=1;for(let c=1;c<o;c++){let l=1;for(let m=c;m<o;m++)l*=n[m];a+=l}}let u=r.data,s=r.size,i=Math.min(...n);if(e&&o===2&&(i=Math.max(n[0],n[1])),typeof t=="number")for(let c=0;c<i&&c*a<s;c++){let l=c*a;if(l<s)u[l]=t;else break}else{let c=t.data,l=t.size;for(let m=0;m<i&&m*a<s;m++){let d=m*a;if(d<s)u[d]=c[m%l];else break}}}function dr(r,t){if(!en(r)&&r!=="bool")throw new TypeError(`ufunc '${t}' not supported for the input types, and the inputs could not be safely coerced to any supported types`)}function rt(r,t){return r.isCContiguous&&t.isCContiguous&&r.shape.length===t.shape.length&&r.shape.every((e,n)=>e===t.shape[n])}function Da(r,t){return dr(r.dtype,"bitwise_and"),typeof t=="number"?wu(r,t):(dr(t.dtype,"bitwise_and"),rt(r,t)?Nu(r,t):J(r,t,(e,n)=>e&n,"bitwise_and"))}function Nu(r,t){let e=G(r.dtype,t.dtype),n=x.zeros(Array.from(r.shape),e),o=r.size,a=r.data,u=t.data,s=n.data;if(B(e)){let i=s;if(!B(r.dtype)||!B(t.dtype))for(let l=0;l<o;l++){let m=typeof a[l]=="bigint"?a[l]:BigInt(Math.round(Number(a[l]))),d=typeof u[l]=="bigint"?u[l]:BigInt(Math.round(Number(u[l])));i[l]=m&d}else{let l=a,m=u;for(let d=0;d<o;d++)i[d]=l[d]&m[d]}}else for(let i=0;i<o;i++)s[i]=a[i]&u[i];return n}function wu(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,u=x.zeros(n,e),s=u.data;if(B(e)){let i=o,c=s,l=BigInt(Math.round(t));for(let m=0;m<a;m++)c[m]=i[m]&l}else for(let i=0;i<a;i++)s[i]=o[i]&t;return u}function xa(r,t){return dr(r.dtype,"bitwise_or"),typeof t=="number"?zu(r,t):(dr(t.dtype,"bitwise_or"),rt(r,t)?Iu(r,t):J(r,t,(e,n)=>e|n,"bitwise_or"))}function Iu(r,t){let e=G(r.dtype,t.dtype),n=x.zeros(Array.from(r.shape),e),o=r.size,a=r.data,u=t.data,s=n.data;if(B(e)){let i=s;if(!B(r.dtype)||!B(t.dtype))for(let l=0;l<o;l++){let m=typeof a[l]=="bigint"?a[l]:BigInt(Math.round(Number(a[l]))),d=typeof u[l]=="bigint"?u[l]:BigInt(Math.round(Number(u[l])));i[l]=m|d}else{let l=a,m=u;for(let d=0;d<o;d++)i[d]=l[d]|m[d]}}else for(let i=0;i<o;i++)s[i]=a[i]|u[i];return n}function zu(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,u=x.zeros(n,e),s=u.data;if(B(e)){let i=o,c=s,l=BigInt(Math.round(t));for(let m=0;m<a;m++)c[m]=i[m]|l}else for(let i=0;i<a;i++)s[i]=o[i]|t;return u}function Na(r,t){return dr(r.dtype,"bitwise_xor"),typeof t=="number"?Fu(r,t):(dr(t.dtype,"bitwise_xor"),rt(r,t)?_u(r,t):J(r,t,(e,n)=>e^n,"bitwise_xor"))}function _u(r,t){let e=G(r.dtype,t.dtype),n=x.zeros(Array.from(r.shape),e),o=r.size,a=r.data,u=t.data,s=n.data;if(B(e)){let i=s;if(!B(r.dtype)||!B(t.dtype))for(let l=0;l<o;l++){let m=typeof a[l]=="bigint"?a[l]:BigInt(Math.round(Number(a[l]))),d=typeof u[l]=="bigint"?u[l]:BigInt(Math.round(Number(u[l])));i[l]=m^d}else{let l=a,m=u;for(let d=0;d<o;d++)i[d]=l[d]^m[d]}}else for(let i=0;i<o;i++)s[i]=a[i]^u[i];return n}function Fu(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,u=x.zeros(n,e),s=u.data;if(B(e)){let i=o,c=s,l=BigInt(Math.round(t));for(let m=0;m<a;m++)c[m]=i[m]^l}else for(let i=0;i<a;i++)s[i]=o[i]^t;return u}function ge(r){dr(r.dtype,"bitwise_not");let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size,a=x.zeros(e,t),u=a.data;if(B(t)){let s=n,i=u;for(let c=0;c<o;c++)i[c]=~s[c]}else for(let s=0;s<o;s++)u[s]=~n[s];return a}function wa(r){return ge(r)}function Ia(r,t){if(dr(r.dtype,"left_shift"),typeof t=="number")return ha(r,t);if(dr(t.dtype,"left_shift"),t.size===1||t.ndim===1&&t.shape[0]===1){let e=B(t.dtype)?Number(t.data[0]):t.data[0];return ha(r,e)}return rt(r,t)?Mu(r,t):J(r,t,(e,n)=>e<<n,"left_shift")}function Mu(r,t){let e=G(r.dtype,t.dtype),n=x.zeros(Array.from(r.shape),e),o=r.size,a=r.data,u=t.data,s=n.data;if(B(e)){let i=s;for(let c=0;c<o;c++){let l=typeof a[c]=="bigint"?a[c]:BigInt(Math.round(Number(a[c]))),m=typeof u[c]=="bigint"?u[c]:BigInt(Math.round(Number(u[c])));i[c]=l<<m}}else for(let i=0;i<o;i++)s[i]=a[i]<<u[i];return n}function ha(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,u=x.zeros(n,e),s=u.data;if(B(e)){let i=o,c=s,l=BigInt(Math.round(t));for(let m=0;m<a;m++)c[m]=i[m]<<l}else for(let i=0;i<a;i++)s[i]=o[i]<<t;return u}function za(r,t){if(dr(r.dtype,"right_shift"),typeof t=="number")return Sa(r,t);if(dr(t.dtype,"right_shift"),t.size===1||t.ndim===1&&t.shape[0]===1){let e=B(t.dtype)?Number(t.data[0]):t.data[0];return Sa(r,e)}return rt(r,t)?Bu(r,t):J(r,t,(e,n)=>e>>n,"right_shift")}function Bu(r,t){let e=G(r.dtype,t.dtype),n=x.zeros(Array.from(r.shape),e),o=r.size,a=r.data,u=t.data,s=n.data;if(B(e)){let i=s;for(let c=0;c<o;c++){let l=typeof a[c]=="bigint"?a[c]:BigInt(Math.round(Number(a[c]))),m=typeof u[c]=="bigint"?u[c]:BigInt(Math.round(Number(u[c])));i[c]=l>>m}}else for(let i=0;i<o;i++)s[i]=a[i]>>u[i];return n}function Sa(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,u=x.zeros(n,e),s=u.data;if(B(e)){let i=o,c=s,l=BigInt(Math.round(t));for(let m=0;m<a;m++)c[m]=i[m]>>l}else for(let i=0;i<a;i++)s[i]=o[i]>>t;return u}function _a(r,t=-1,e="big"){let n=Array.from(r.shape),o=n.length;if(t<0&&(t=o+t),t<0||t>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);let a=n[t],u=Math.ceil(a/8),s=[...n];s[t]=u;let i=x.zeros(s,"uint8"),c=i.data;if(o===1){for(let g=0;g<u;g++){let h=0;for(let b=0;b<8;b++){let A=g*8+b;if(A<a){let S=Number(r.data[A])!==0?1:0;e==="big"?h|=S<<7-b:h|=S<<b}}c[g]=h}return i}let l=n.slice(0,t),m=n.slice(t+1),d=l.reduce((g,h)=>g*h,1),p=m.reduce((g,h)=>g*h,1),f=Dt(n),y=Dt(s);for(let g=0;g<d;g++)for(let h=0;h<p;h++)for(let b=0;b<u;b++){let A=0;for(let N=0;N<8;N++){let I=b*8+N;if(I<a){let z=0,F=g;for(let T=0;T<t;T++){let C=T<t-1?l.slice(T+1).reduce((V,R)=>V*R,1):1,k=Math.floor(F/C);F%=C,z+=k*f[T]}z+=I*f[t];let _=h;for(let T=t+1;T<o;T++){let C=T<o-1?m.slice(T-t).reduce((V,R)=>V*R,1):1,k=Math.floor(_/C);_%=C,z+=k*f[T]}let E=Number(r.data[z])!==0?1:0;e==="big"?A|=E<<7-N:A|=E<<N}}let S=0,D=g;for(let N=0;N<t;N++){let I=N<t-1?l.slice(N+1).reduce((F,_)=>F*_,1):1,z=Math.floor(D/I);D%=I,S+=z*y[N]}S+=b*y[t];let w=h;for(let N=t+1;N<o;N++){let I=N<o-1?m.slice(N-t).reduce((F,_)=>F*_,1):1,z=Math.floor(w/I);w%=I,S+=z*y[N]}c[S]=A}return i}function Fa(r,t=-1,e=-1,n="big"){if(r.dtype!=="uint8")throw new TypeError("Expected an input array of unsigned byte data type");let o=Array.from(r.shape),a=o.length;if(t<0&&(t=a+t),t<0||t>=a)throw new Error(`axis ${t} is out of bounds for array of dimension ${a}`);let u=o[t],s=u*8;e>=0&&(s=e);let i=[...o];i[t]=s;let c=x.zeros(i,"uint8"),l=c.data;if(a===1){for(let h=0;h<u;h++){let b=Number(r.data[h]);for(let A=0;A<8;A++){let S=h*8+A;if(S>=s)break;n==="big"?l[S]=b>>7-A&1:l[S]=b>>A&1}}return c}let m=o.slice(0,t),d=o.slice(t+1),p=m.reduce((h,b)=>h*b,1),f=d.reduce((h,b)=>h*b,1),y=Dt(o),g=Dt(i);for(let h=0;h<p;h++)for(let b=0;b<f;b++)for(let A=0;A<u;A++){let S=0,D=h;for(let I=0;I<t;I++){let z=I<t-1?m.slice(I+1).reduce((_,E)=>_*E,1):1,F=Math.floor(D/z);D%=z,S+=F*y[I]}S+=A*y[t];let w=b;for(let I=t+1;I<a;I++){let z=I<a-1?d.slice(I-t).reduce((_,E)=>_*E,1):1,F=Math.floor(w/z);w%=z,S+=F*y[I]}let N=Number(r.data[S]);for(let I=0;I<8;I++){let z=A*8+I;if(z>=s)break;let F=0;D=h;for(let _=0;_<t;_++){let E=_<t-1?m.slice(_+1).reduce((C,k)=>C*k,1):1,T=Math.floor(D/E);D%=E,F+=T*g[_]}F+=z*g[t],w=b;for(let _=t+1;_<a;_++){let E=_<a-1?d.slice(_-t).reduce((C,k)=>C*k,1):1,T=Math.floor(w/E);w%=E,F+=T*g[_]}n==="big"?l[F]=N>>7-I&1:l[F]=N>>I&1}}return c}function Dt(r){let t=r.length,e=new Array(t),n=1;for(let o=t-1;o>=0;o--)e[o]=n,n*=r[o];return e}function Vr(r){return r!==0&&r!==0n}function br(r,t){let e=r[t*2],n=r[t*2+1];return e!==0||n!==0}function et(r,t){return r.isCContiguous&&t.isCContiguous&&r.shape.length===t.shape.length&&r.shape.every((e,n)=>e===t.shape[n])}function Ba(r,t){return typeof t=="number"?Tu(r,t):et(r,t)?Eu(r,t):fr(r,t,(e,n)=>Vr(e)&&Vr(n))}function Eu(r,t){let e=new Uint8Array(r.size),n=r.data,o=t.data,a=r.size,u=B(r.dtype),s=B(t.dtype),i=M(r.dtype),c=M(t.dtype);if(i||c)for(let l=0;l<a;l++){let m=i?br(n,l):n[l]!==0,d=c?br(o,l):o[l]!==0;e[l]=m&&d?1:0}else if(u||s)for(let l=0;l<a;l++){let m=u?n[l]!==0n:n[l]!==0,d=s?o[l]!==0n:o[l]!==0;e[l]=m&&d?1:0}else for(let l=0;l<a;l++)e[l]=n[l]!==0&&o[l]!==0?1:0;return x.fromData(e,Array.from(r.shape),"bool")}function Tu(r,t){let e=new Uint8Array(r.size),n=r.data,o=t!==0,a=r.size;if(M(r.dtype)){let u=n;for(let s=0;s<a;s++)e[s]=br(u,s)&&o?1:0}else if(B(r.dtype)){let u=n;for(let s=0;s<a;s++)e[s]=u[s]!==0n&&o?1:0}else for(let u=0;u<a;u++)e[u]=n[u]!==0&&o?1:0;return x.fromData(e,Array.from(r.shape),"bool")}function va(r,t){return typeof t=="number"?Cu(r,t):et(r,t)?Ou(r,t):fr(r,t,(e,n)=>Vr(e)||Vr(n))}function Ou(r,t){let e=new Uint8Array(r.size),n=r.data,o=t.data,a=r.size,u=B(r.dtype),s=B(t.dtype),i=M(r.dtype),c=M(t.dtype);if(i||c)for(let l=0;l<a;l++){let m=i?br(n,l):n[l]!==0,d=c?br(o,l):o[l]!==0;e[l]=m||d?1:0}else if(u||s)for(let l=0;l<a;l++){let m=u?n[l]!==0n:n[l]!==0,d=s?o[l]!==0n:o[l]!==0;e[l]=m||d?1:0}else for(let l=0;l<a;l++)e[l]=n[l]!==0||o[l]!==0?1:0;return x.fromData(e,Array.from(r.shape),"bool")}function Cu(r,t){let e=new Uint8Array(r.size),n=r.data,o=t!==0,a=r.size;if(M(r.dtype)){let u=n;for(let s=0;s<a;s++)e[s]=br(u,s)||o?1:0}else if(B(r.dtype)){let u=n;for(let s=0;s<a;s++)e[s]=u[s]!==0n||o?1:0}else for(let u=0;u<a;u++)e[u]=n[u]!==0||o?1:0;return x.fromData(e,Array.from(r.shape),"bool")}function Ea(r){let t=new Uint8Array(r.size),e=r.data,n=r.size;if(M(r.dtype)){let o=e;for(let a=0;a<n;a++)t[a]=br(o,a)?0:1}else if(B(r.dtype)){let o=e;for(let a=0;a<n;a++)t[a]=o[a]===0n?1:0}else for(let o=0;o<n;o++)t[o]=e[o]===0?1:0;return x.fromData(t,Array.from(r.shape),"bool")}function Ta(r,t){return typeof t=="number"?$u(r,t):et(r,t)?Uu(r,t):fr(r,t,(e,n)=>Vr(e)!==Vr(n))}function Uu(r,t){let e=new Uint8Array(r.size),n=r.data,o=t.data,a=r.size,u=B(r.dtype),s=B(t.dtype),i=M(r.dtype),c=M(t.dtype);if(i||c)for(let l=0;l<a;l++){let m=i?br(n,l):n[l]!==0,d=c?br(o,l):o[l]!==0;e[l]=m!==d?1:0}else if(u||s)for(let l=0;l<a;l++){let m=u?n[l]!==0n:n[l]!==0,d=s?o[l]!==0n:o[l]!==0;e[l]=m!==d?1:0}else for(let l=0;l<a;l++){let m=n[l]!==0,d=o[l]!==0;e[l]=m!==d?1:0}return x.fromData(e,Array.from(r.shape),"bool")}function $u(r,t){let e=new Uint8Array(r.size),n=r.data,o=t!==0,a=r.size;if(M(r.dtype)){let u=n;for(let s=0;s<a;s++){let i=br(u,s);e[s]=i!==o?1:0}}else if(B(r.dtype)){let u=n;for(let s=0;s<a;s++){let i=u[s]!==0n;e[s]=i!==o?1:0}}else for(let u=0;u<a;u++){let s=n[u]!==0;e[u]=s!==o?1:0}return x.fromData(e,Array.from(r.shape),"bool")}function Oa(r){let t=new Uint8Array(r.size),e=r.data,n=r.size;if(M(r.dtype)){let o=e;for(let a=0;a<n;a++){let u=o[a*2],s=o[a*2+1];t[a]=Number.isFinite(u)&&Number.isFinite(s)?1:0}}else if(B(r.dtype))for(let o=0;o<n;o++)t[o]=1;else for(let o=0;o<n;o++){let a=e[o];t[o]=Number.isFinite(a)?1:0}return x.fromData(t,Array.from(r.shape),"bool")}function Ca(r){let t=new Uint8Array(r.size),e=r.data,n=r.size;if(M(r.dtype)){let o=e;for(let a=0;a<n;a++){let u=o[a*2],s=o[a*2+1],i=!Number.isFinite(u)&&!Number.isNaN(u),c=!Number.isFinite(s)&&!Number.isNaN(s);t[a]=i||c?1:0}}else if(B(r.dtype))for(let o=0;o<n;o++)t[o]=0;else for(let o=0;o<n;o++){let a=e[o];t[o]=!Number.isFinite(a)&&!Number.isNaN(a)?1:0}return x.fromData(t,Array.from(r.shape),"bool")}function Ua(r){let t=new Uint8Array(r.size),e=r.data,n=r.size;if(M(r.dtype)){let o=e;for(let a=0;a<n;a++){let u=o[a*2],s=o[a*2+1];t[a]=Number.isNaN(u)||Number.isNaN(s)?1:0}}else if(B(r.dtype))for(let o=0;o<n;o++)t[o]=0;else for(let o=0;o<n;o++)t[o]=Number.isNaN(e[o])?1:0;return x.fromData(t,Array.from(r.shape),"bool")}function $a(r){let t=new Uint8Array(r.size);return x.fromData(t,Array.from(r.shape),"bool")}function Ra(r,t){if(q(r.dtype,"copysign","copysign is only defined for real numbers."),typeof t!="number"&&q(t.dtype,"copysign","copysign is only defined for real numbers."),typeof t=="number")return ku(r,t);if(et(r,t))return Ru(r,t);let e=Ir(r.shape,t.shape),n=e.reduce((i,c)=>i*c,1),o=x.zeros(e,"float64"),a=o.data,u=xt(r,e),s=xt(t,e);for(let i=0;i<n;i++){let c=Number(u.iget(i)),l=Number(s.iget(i));a[i]=Math.sign(l)*Math.abs(c)}return o}function Ru(r,t){let e=x.zeros(Array.from(r.shape),"float64"),n=e.data,o=r.size,a=r.data,u=t.data,s=B(r.dtype),i=B(t.dtype);for(let c=0;c<o;c++){let l=s?Number(a[c]):a[c],m=i?Number(u[c]):u[c];n[c]=Math.sign(m)*Math.abs(l)}return e}function ku(r,t){let e=x.zeros(Array.from(r.shape),"float64"),n=e.data,o=r.data,a=r.size,u=Math.sign(t);if(B(r.dtype)){let s=o;for(let i=0;i<a;i++)n[i]=u*Math.abs(Number(s[i]))}else for(let s=0;s<a;s++)n[s]=u*Math.abs(o[s]);return e}function ka(r){q(r.dtype,"signbit","signbit is only defined for real numbers.");let t=new Uint8Array(r.size),e=r.data,n=r.size;if(B(r.dtype)){let o=e;for(let a=0;a<n;a++)t[a]=o[a]<0n?1:0}else for(let o=0;o<n;o++){let a=e[o];t[o]=a<0||Object.is(a,-0)?1:0}return x.fromData(t,Array.from(r.shape),"bool")}function qa(r,t){if(q(r.dtype,"nextafter","nextafter is only defined for real numbers."),typeof t!="number"&&q(t.dtype,"nextafter","nextafter is only defined for real numbers."),typeof t=="number")return Vu(r,t);if(et(r,t))return qu(r,t);let e=Ir(r.shape,t.shape),n=e.reduce((i,c)=>i*c,1),o=x.zeros(e,"float64"),a=o.data,u=xt(r,e),s=xt(t,e);for(let i=0;i<n;i++){let c=Number(u.iget(i)),l=Number(s.iget(i));a[i]=tt(c,l)}return o}function qu(r,t){let e=x.zeros(Array.from(r.shape),"float64"),n=e.data,o=r.size,a=r.data,u=t.data,s=B(r.dtype),i=B(t.dtype);for(let c=0;c<o;c++){let l=s?Number(a[c]):a[c],m=i?Number(u[c]):u[c];n[c]=tt(l,m)}return e}function Vu(r,t){let e=x.zeros(Array.from(r.shape),"float64"),n=e.data,o=r.data,a=r.size;if(B(r.dtype)){let u=o;for(let s=0;s<a;s++)n[s]=tt(Number(u[s]),t)}else for(let u=0;u<a;u++)n[u]=tt(o[u],t);return e}function tt(r,t){if(Number.isNaN(r)||Number.isNaN(t))return NaN;if(r===t)return t;if(r===0)return t>0?Number.MIN_VALUE:-Number.MIN_VALUE;let e=new ArrayBuffer(8),n=new Float64Array(e),o=new BigInt64Array(e);n[0]=r;let a=o[0];return r>0&&t>r||r<0&&t>r?a=a+1n:a=a-1n,o[0]=a,n[0]}function Va(r){q(r.dtype,"spacing","spacing is only defined for real numbers.");let t=x.zeros(Array.from(r.shape),"float64"),e=t.data,n=r.data,o=r.size;if(B(r.dtype)){let a=n;for(let u=0;u<o;u++)e[u]=Ma(Number(a[u]))}else for(let a=0;a<o;a++)e[a]=Ma(n[a]);return t}function Ma(r){if(Number.isNaN(r))return NaN;if(!Number.isFinite(r))return NaN;if(Math.abs(r)===0)return Number.MIN_VALUE;let e=tt(r,1/0);return Math.abs(e-r)}function xt(r,t){let e=r.shape.length,n=t.length,o=new Array(n).fill(0);for(let a=0;a<e;a++){let u=n-e+a,s=r.shape[a],i=t[u];if(s===i)o[u]=r.strides[a];else if(s===1)o[u]=0;else throw new Error("Invalid broadcast")}return x.fromData(r.data,Array.from(t),r.dtype,o,r.offset)}function ja(r){let t=r.dtype,e=r.size,n=new Uint8Array(e);if(M(t)){let o=r.data;for(let a=0;a<e;a++)n[a]=o[a*2+1]!==0?1:0}return x.fromData(n,Array.from(r.shape),"bool")}function Pa(r){return M(r.dtype)}function La(r){let t=r.dtype,e=r.size,n=new Uint8Array(e);if(M(t)){let o=r.data;for(let a=0;a<e;a++)n[a]=o[a*2+1]===0?1:0}else n.fill(1);return x.fromData(n,Array.from(r.shape),"bool")}function Za(r){return!M(r.dtype)}function Ga(r){q(r.dtype,"isneginf","This operation is not supported for complex values because it would be ambiguous.");let t=new Uint8Array(r.size),e=r.data,n=r.size;if(!B(r.dtype))for(let o=0;o<n;o++){let a=e[o];t[o]=a===-1/0?1:0}return x.fromData(t,Array.from(r.shape),"bool")}function Wa(r){q(r.dtype,"isposinf","This operation is not supported for complex values because it would be ambiguous.");let t=new Uint8Array(r.size),e=r.data,n=r.size;if(!B(r.dtype))for(let o=0;o<n;o++){let a=e[o];t[o]=a===1/0?1:0}return x.fromData(t,Array.from(r.shape),"bool")}function Ya(r){return r.isFContiguous}function Ha(r,t=100){let e=r.dtype;if(M(e)){let n=r.data,o=r.size,u=t*(e==="complex64"?11920929e-14:2220446049250313e-31),s=!0;for(let i=0;i<o;i++){let c=n[i*2+1];if(Math.abs(c)>u){s=!1;break}}if(s){let i=e==="complex64"?"float32":"float64",c=x.zeros(Array.from(r.shape),i),l=c.data;for(let m=0;m<o;m++)l[m]=n[m*2];return c}return r.copy()}return r.copy()}function Ja(r){return typeof r=="number"||typeof r=="bigint"||typeof r=="boolean"||typeof r=="string"}function Xa(r){return r==null?!1:typeof r[Symbol.iterator]=="function"}function Qa(r,t){let n={b:["bool"],i:["int8","int16","int32","int64"],u:["uint8","uint16","uint32","uint64"],f:["float32","float64"]}[t];return n?n.includes(r):!1}function Ka(r,t){let e=["float64","float32","int64","int32","int16","int8","uint64","uint32","uint16","uint8","bool"],n=e.indexOf(r),o=e.indexOf(t);return n<=o?r:t}function rs(r){let t=r.dtype,e=Array.from(r.shape),n=r.size;if(M(t)){let o=Lr(t),a=x.zeros(e,o),u=a.data,s=r.data;for(let i=0;i<n;i++)u[i]=s[i*2];return a}return r.copy()}function ts(r){let t=r.dtype,e=Array.from(r.shape),n=r.size;if(M(t)){let a=Lr(t),u=x.zeros(e,a),s=u.data,i=r.data;for(let c=0;c<n;c++)s[c]=i[c*2+1];return u}let o=t==="float32"?"float32":"float64";return x.zeros(e,o)}function es(r){let t=r.dtype,e=Array.from(r.shape),n=r.size;if(M(t)){let o=P(t),a=n*2,u=new o(a),s=r.data;for(let i=0;i<n;i++)u[i*2]=s[i*2],u[i*2+1]=-s[i*2+1];return x.fromData(u,e,t)}return r.copy()}function ns(r,t=!1){let e=r.dtype,n=Array.from(r.shape),o=r.size,a=x.zeros(n,"float64"),u=a.data;if(M(e)){let s=r.data;for(let i=0;i<o;i++){let c=s[i*2],l=s[i*2+1],m=Math.atan2(l,c);t&&(m=m*180/Math.PI),u[i]=m}}else for(let s=0;s<o;s++){let i=r.iget(s),l=(i instanceof O?i.re:Number(i))>=0?0:Math.PI;t&&(l=l*180/Math.PI),u[s]=l}return a}function hr(r,t,e){if(e){let n=r[t*2],o=r[t*2+1];return n!==0||o!==0}return!!r[t]}function nt(r,t,e,n){let o=isNaN(r)||isNaN(t),a=isNaN(e)||isNaN(n);return o&&a?0:o?1:a||r<e?-1:r>e?1:t<n?-1:t>n?1:0}function Ae(r,t=-1){let e=r.shape,n=e.length,o=r.dtype,a=r.data;if(n===0)return r.copy();let u=t;if(u<0&&(u=n+u),u<0||u>=n)throw new Error(`axis ${t} is out of bounds for array of dimension ${n}`);let s=r.copy(),i=s.data,c=e[u],l=Array.from(e).filter((d,p)=>p!==u),m=l.length===0?1:l.reduce((d,p)=>d*p,1);if(M(o)){let d=a,p=i;for(let f=0;f<m;f++){let y=[];for(let g=0;g<c;g++){let h=$(f,u,g,e),b=U(h,e);y.push({re:d[b*2],im:d[b*2+1],idx:g})}y.sort((g,h)=>nt(g.re,g.im,h.re,h.im));for(let g=0;g<c;g++){let h=$(f,u,g,e),b=U(h,e);p[b*2]=y[g].re,p[b*2+1]=y[g].im}}}else if(B(o)){let d=a,p=i;for(let f=0;f<m;f++){let y=[];for(let g=0;g<c;g++){let h=$(f,u,g,e),b=U(h,e);y.push({value:d[b],idx:g})}y.sort((g,h)=>g.value<h.value?-1:g.value>h.value?1:0);for(let g=0;g<c;g++){let h=$(f,u,g,e),b=U(h,e);p[b]=y[g].value}}}else for(let d=0;d<m;d++){let p=[];for(let f=0;f<c;f++){let y=$(d,u,f,e),g=U(y,e);p.push(Number(a[g]))}p.sort((f,y)=>isNaN(f)&&isNaN(y)?0:isNaN(f)?1:isNaN(y)?-1:f-y);for(let f=0;f<c;f++){let y=$(d,u,f,e),g=U(y,e);i[g]=p[f]}}return s}function be(r,t=-1){let e=r.shape,n=e.length,o=r.dtype,a=r.data;if(n===0)return x.zeros([0],"int32");let u=t;if(u<0&&(u=n+u),u<0||u>=n)throw new Error(`axis ${t} is out of bounds for array of dimension ${n}`);let s=x.zeros(Array.from(e),"int32"),i=s.data,c=e[u],l=Array.from(e).filter((d,p)=>p!==u),m=l.length===0?1:l.reduce((d,p)=>d*p,1);if(M(o)){let d=a;for(let p=0;p<m;p++){let f=[];for(let y=0;y<c;y++){let g=$(p,u,y,e),h=U(g,e);f.push({re:d[h*2],im:d[h*2+1],idx:y})}f.sort((y,g)=>nt(y.re,y.im,g.re,g.im));for(let y=0;y<c;y++){let g=$(p,u,y,e),h=U(g,e);i[h]=f[y].idx}}}else if(B(o)){let d=a;for(let p=0;p<m;p++){let f=[];for(let y=0;y<c;y++){let g=$(p,u,y,e),h=U(g,e);f.push({value:d[h],idx:y})}f.sort((y,g)=>y.value<g.value?-1:y.value>g.value?1:0);for(let y=0;y<c;y++){let g=$(p,u,y,e),h=U(g,e);i[h]=f[y].idx}}}else for(let d=0;d<m;d++){let p=[];for(let f=0;f<c;f++){let y=$(d,u,f,e),g=U(y,e);p.push({value:Number(a[g]),idx:f})}p.sort((f,y)=>isNaN(f.value)&&isNaN(y.value)?0:isNaN(f.value)?1:isNaN(y.value)?-1:f.value-y.value);for(let f=0;f<c;f++){let y=$(d,u,f,e),g=U(y,e);i[g]=p[f].idx}}return s}function os(r){if(r.length===0)return x.zeros([0],"int32");let e=r[0].size;for(let u of r){if(u.ndim!==1)throw new Error("keys must be 1D arrays");if(u.size!==e)throw new Error("all keys must have the same length")}let n=[];for(let u=0;u<e;u++)n.push(u);n.sort((u,s)=>{for(let i=r.length-1;i>=0;i--){let l=r[i].data,m=Number(l[u]),d=Number(l[s]);if(!(isNaN(m)&&isNaN(d))){if(isNaN(m))return 1;if(isNaN(d)||m<d)return-1;if(m>d)return 1}}return 0});let o=x.zeros([e],"int32"),a=o.data;for(let u=0;u<e;u++)a[u]=n[u];return o}function Lu(r,t){let e=0,n=r.length-1;for(;e<n;){let o=Math.floor((e+n)/2),a=r[e],u=r[o],s=r[n],i;a<=u&&u<=s||s<=u&&u<=a?i=o:u<=a&&a<=s||s<=a&&a<=u?i=e:i=n;let c=r[i];[r[i],r[n]]=[r[n],r[i]];let l=e;for(let m=e;m<n;m++){let d=r[m],p=isNaN(d),f=isNaN(c);!p&&(f||d<=c)&&([r[l],r[m]]=[r[m],r[l]],l++)}if([r[l],r[n]]=[r[n],r[l]],l===t)return;l<t?e=l+1:n=l-1}}function Zu(r,t){let e=0,n=r.length-1;for(;e<n;){let o=Math.floor((e+n)/2),a=r[e],u=r[o],s=r[n],i;a<=u&&u<=s||s<=u&&u<=a?i=o:u<=a&&a<=s||s<=a&&a<=u?i=e:i=n;let c=r[i];[r[i],r[n]]=[r[n],r[i]];let l=e;for(let m=e;m<n;m++)r[m]<=c&&([r[l],r[m]]=[r[m],r[l]],l++);if([r[l],r[n]]=[r[n],r[l]],l===t)return;l<t?e=l+1:n=l-1}}function Gu(r,t){let e=0,n=r.length-1;for(;e<n;){let o=Math.floor((e+n)/2),a=r[e].value,u=r[o].value,s=r[n].value,i;a<=u&&u<=s||s<=u&&u<=a?i=o:u<=a&&a<=s||s<=a&&a<=u?i=e:i=n;let c=r[i].value;[r[i],r[n]]=[r[n],r[i]];let l=e;for(let m=e;m<n;m++){let d=r[m].value,p=isNaN(d),f=isNaN(c);!p&&(f||d<=c)&&([r[l],r[m]]=[r[m],r[l]],l++)}if([r[l],r[n]]=[r[n],r[l]],l===t)return;l<t?e=l+1:n=l-1}}function Wu(r,t){let e=0,n=r.length-1;for(;e<n;){let o=Math.floor((e+n)/2),a=r[e].value,u=r[o].value,s=r[n].value,i;a<=u&&u<=s||s<=u&&u<=a?i=o:u<=a&&a<=s||s<=a&&a<=u?i=e:i=n;let c=r[i].value;[r[i],r[n]]=[r[n],r[i]];let l=e;for(let m=e;m<n;m++)r[m].value<=c&&([r[l],r[m]]=[r[m],r[l]],l++);if([r[l],r[n]]=[r[n],r[l]],l===t)return;l<t?e=l+1:n=l-1}}function he(r,t,e=-1){let n=r.shape,o=n.length,a=r.dtype;if(o===0)return r.copy();let u=e;if(u<0&&(u=o+u),u<0||u>=o)throw new Error(`axis ${e} is out of bounds for array of dimension ${o}`);let s=n[u],i=t;if(i<0&&(i=s+i),i<0||i>=s)throw new Error(`kth(=${t}) out of bounds (${s})`);let c=r.copy(),l=c.data,m=Array.from(n).filter((p,f)=>f!==u),d=m.length===0?1:m.reduce((p,f)=>p*f,1);if(B(a)){let p=l;for(let f=0;f<d;f++){let y=[];for(let g=0;g<s;g++){let h=$(f,u,g,n),b=U(h,n);y.push(p[b])}Zu(y,i);for(let g=0;g<s;g++){let h=$(f,u,g,n),b=U(h,n);p[b]=y[g]}}}else for(let p=0;p<d;p++){let f=[];for(let y=0;y<s;y++){let g=$(p,u,y,n),h=U(g,n);f.push(Number(l[h]))}Lu(f,i);for(let y=0;y<s;y++){let g=$(p,u,y,n),h=U(g,n);l[h]=f[y]}}return c}function Se(r,t,e=-1){let n=r.shape,o=n.length,a=r.dtype,u=r.data;if(o===0)return x.zeros([0],"int32");let s=e;if(s<0&&(s=o+s),s<0||s>=o)throw new Error(`axis ${e} is out of bounds for array of dimension ${o}`);let i=n[s],c=t;if(c<0&&(c=i+c),c<0||c>=i)throw new Error(`kth(=${t}) out of bounds (${i})`);let l=x.zeros(Array.from(n),"int32"),m=l.data,d=Array.from(n).filter((f,y)=>y!==s),p=d.length===0?1:d.reduce((f,y)=>f*y,1);if(B(a)){let f=u;for(let y=0;y<p;y++){let g=[];for(let h=0;h<i;h++){let b=$(y,s,h,n),A=U(b,n);g.push({value:f[A],idx:h})}Wu(g,c);for(let h=0;h<i;h++){let b=$(y,s,h,n),A=U(b,n);m[A]=g[h].idx}}}else for(let f=0;f<p;f++){let y=[];for(let g=0;g<i;g++){let h=$(f,s,g,n),b=U(h,n);y.push({value:Number(u[b]),idx:g})}Gu(y,c);for(let g=0;g<i;g++){let h=$(f,s,g,n),b=U(h,n);m[b]=y[g].idx}}return l}function as(r){let t=r.dtype,e=r.size,n=r.data;if(M(t)){let o=n,a=[];for(let i=0;i<e;i++)a.push({re:o[i*2],im:o[i*2+1]});a.sort((i,c)=>nt(i.re,i.im,c.re,c.im));let u=x.zeros([e],"complex128"),s=u.data;for(let i=0;i<e;i++)s[i*2]=a[i].re,s[i*2+1]=a[i].im;return u}else{let o=[];for(let s=0;s<e;s++)o.push(Number(n[s]));o.sort((s,i)=>isNaN(s)&&isNaN(i)?0:isNaN(s)?1:isNaN(i)?-1:s-i);let a=x.zeros([e],"complex128"),u=a.data;for(let s=0;s<e;s++)u[s*2]=o[s],u[s*2+1]=0;return a}}function Nt(r){let t=r.shape,e=t.length,n=r.data,o=r.size,a=M(r.dtype),u=[];for(let m=0;m<e;m++)u.push([]);let s=[],i=1;for(let m=e-1;m>=0;m--)s.unshift(i),i*=t[m];for(let m=0;m<o;m++)if(hr(n,m,a)){let d=m;for(let p=0;p<e;p++){let f=Math.floor(d/s[p]);d=d%s[p],u[p].push(f)}}let c=u[0]?.length??0,l=[];for(let m=0;m<e;m++){let d=x.zeros([c],"int32"),p=d.data;for(let f=0;f<c;f++)p[f]=u[m][f];l.push(d)}return l}function De(r){let t=r.shape,e=t.length,n=r.data,o=r.size,a=M(r.dtype),u=[],s=[],i=1;for(let p=e-1;p>=0;p--)s.unshift(i),i*=t[p];for(let p=0;p<o;p++)if(hr(n,p,a)){let f=[],y=p;for(let g=0;g<e;g++){let h=Math.floor(y/s[g]);y=y%s[g],f.push(h)}u.push(f)}let c=u.length,l=e===0?[c,1]:[c,e],m=x.zeros(l,"int32"),d=m.data;for(let p=0;p<c;p++){let f=u[p];for(let y=0;y<(e===0?1:e);y++)d[p*(e===0?1:e)+y]=f[y]??0}return m}function ss(r){let t=r.data,e=r.size,n=M(r.dtype),o=[];for(let s=0;s<e;s++)hr(t,s,n)&&o.push(s);let a=x.zeros([o.length],"int32"),u=a.data;for(let s=0;s<o.length;s++)u[s]=o[s];return a}function is(r,t,e){if(t===void 0&&e===void 0)return Nt(r);if(t===void 0||e===void 0)throw new Error("either both or neither of x and y should be given");let n=r.shape,o=t.shape,a=e.shape,u=Math.max(n.length,o.length,a.length),s=_=>{let E=Array(u).fill(1);for(let T=0;T<_.length;T++)E[u-_.length+T]=_[T];return E},i=s(n),c=s(o),l=s(a),m=[];for(let _=0;_<u;_++){let E=[i[_],c[_],l[_]],T=Math.max(...E);for(let C of E)if(C!==1&&C!==T)throw new Error("operands could not be broadcast together");m.push(T)}let d=t.dtype,p=x.zeros(m,d),f=p.data,y=r.data,g=t.data,h=e.data,b=(_,E)=>{let T=[],C=1;for(let k=_.length-1;k>=0;k--)T.unshift(C),C*=_[k];for(;T.length<E.length;)T.unshift(0);for(let k=0;k<E.length;k++)E[k]===1&&m[k]!==1&&(T[k]=0);return T},A=b(n,i),S=b(o,c),D=b(a,l),w=[],N=1;for(let _=m.length-1;_>=0;_--)w.unshift(N),N*=m[_];let I=m.reduce((_,E)=>_*E,1),z=M(r.dtype),F=M(d);for(let _=0;_<I;_++){let E=_,T=0,C=0,k=0;for(let V=0;V<u;V++){let R=Math.floor(E/w[V]);E=E%w[V],T+=R*A[V],C+=R*S[V],k+=R*D[V]}hr(y,T,z)?F?(f[_*2]=g[C*2],f[_*2+1]=g[C*2+1]):f[_]=g[C]:F?(f[_*2]=h[k*2],f[_*2+1]=h[k*2+1]):f[_]=h[k]}return p}function xe(r,t,e="left"){if(r.ndim!==1)throw new Error("storage must be 1D");let n=r.data,o=r.size,a=t.data,u=t.size,s=M(r.dtype),i=x.zeros([u],"int32"),c=i.data;if(s){let l=n,m=a;for(let d=0;d<u;d++){let p=m[d*2],f=m[d*2+1],y=0,g=o;if(e==="left")for(;y<g;){let h=Math.floor((y+g)/2),b=l[h*2],A=l[h*2+1];nt(b,A,p,f)<0?y=h+1:g=h}else for(;y<g;){let h=Math.floor((y+g)/2),b=l[h*2],A=l[h*2+1];nt(b,A,p,f)<=0?y=h+1:g=h}c[d]=y}}else for(let l=0;l<u;l++){let m=Number(a[l]),d=0,p=o;if(e==="left")for(;d<p;){let f=Math.floor((d+p)/2);Number(n[f])<m?d=f+1:p=f}else for(;d<p;){let f=Math.floor((d+p)/2);Number(n[f])<=m?d=f+1:p=f}c[l]=d}return i}function us(r,t){let e=r.data,n=t.data,o=t.dtype,a=M(r.dtype),u=M(o),s=Math.min(r.size,t.size),i=0;for(let d=0;d<s;d++)hr(e,d,a)&&i++;let c=x.zeros([i],o),l=c.data,m=0;if(B(o)){let d=n,p=l;for(let f=0;f<s;f++)hr(e,f,a)&&(p[m++]=d[f])}else if(u){let d=n,p=l;for(let f=0;f<s;f++)hr(e,f,a)&&(p[m*2]=d[f*2],p[m*2+1]=d[f*2+1],m++)}else for(let d=0;d<s;d++)hr(e,d,a)&&(l[m++]=n[d]);return c}function Ne(r,t){let e=r.shape,n=e.length,o=r.data,a=r.size,u=M(r.dtype);if(t===void 0){let p=0;for(let f=0;f<a;f++)hr(o,f,u)&&p++;return p}let s=t;if(s<0&&(s=n+s),s<0||s>=n)throw new Error(`axis ${t} is out of bounds for array of dimension ${n}`);let i=Array.from(e).filter((p,f)=>f!==s);if(i.length===0)return Ne(r);let c=x.zeros(i,"int32"),l=c.data,m=e[s],d=i.reduce((p,f)=>p*f,1);for(let p=0;p<d;p++){let f=0;for(let y=0;y<m;y++){let g=$(p,s,y,e),h=U(g,e);hr(o,h,u)&&f++}l[p]=f}return c}function cs(r){if(!isFinite(r))return r;let t=Math.floor(r),e=r-t;return Math.abs(e-.5)<1e-10?t%2===0?t:t+1:Math.round(r)}function we(r,t=0){q(r.dtype,"around","Rounding is not defined for complex numbers.");let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,u=e==="float32"?"float32":"float64",s=x.zeros(n,u),i=s.data,c=Math.pow(10,t);for(let l=0;l<a;l++){let m=Number(o[l]);i[l]=cs(m*c)/c}return s}function Ie(r){q(r.dtype,"ceil","Rounding is not defined for complex numbers.");let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size,a=t==="float32"?"float32":"float64",u=x.zeros(e,a),s=u.data;for(let i=0;i<o;i++)s[i]=Math.ceil(Number(n[i]));return u}function ze(r){q(r.dtype,"fix","Rounding is not defined for complex numbers.");let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size,a=t==="float32"?"float32":"float64",u=x.zeros(e,a),s=u.data;for(let i=0;i<o;i++)s[i]=Math.trunc(Number(n[i]));return u}function _e(r){q(r.dtype,"floor","Rounding is not defined for complex numbers.");let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size,a=t==="float32"?"float32":"float64",u=x.zeros(e,a),s=u.data;for(let i=0;i<o;i++)s[i]=Math.floor(Number(n[i]));return u}function Fe(r){q(r.dtype,"rint","Rounding is not defined for complex numbers.");let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size,a=t==="float32"?"float32":"float64",u=x.zeros(e,a),s=u.data;for(let i=0;i<o;i++)s[i]=cs(Number(n[i]));return u}function Me(r){q(r.dtype,"trunc","Rounding is not defined for complex numbers.");let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size,a=t==="float32"?"float32":"float64",u=x.zeros(e,a),s=u.data;for(let i=0;i<o;i++)s[i]=Math.trunc(Number(n[i]));return u}function Be(r,t,e,n){let o=isNaN(r)||isNaN(t),a=isNaN(e)||isNaN(n);return o&&a?0:o?1:a||r<e?-1:r>e?1:t<n?-1:t>n?1:0}function Ju(r,t,e,n){let o=isNaN(r)||isNaN(t),a=isNaN(e)||isNaN(n);return o&&a?!0:o||a?!1:r===e&&t===n}function xr(r,t=!1,e=!1,n=!1){let o=r.dtype,a=r.size,u=r.data;if(M(o)){let A=u,S=[];for(let R=0;R<a;R++)S.push({re:A[R*2],im:A[R*2+1],index:R});S.sort((R,L)=>Be(R.re,R.im,L.re,L.im));let D=[],w=[],N=new Array(a),I=[],z,F,_=0;for(let R=0;R<S.length;R++){let{re:L,im:j,index:H}=S[R];z===void 0||!Ju(L,j,z,F)?(z!==void 0&&I.push(_),D.push({re:L,im:j}),w.push(H),_=1,z=L,F=j):_++}_>0&&I.push(_);let E=new Map,T=-1;for(let R=0;R<D.length;R++){let{re:L,im:j}=D[R];isNaN(L)||isNaN(j)?T=R:E.set(`${L},${j}`,R)}for(let R=0;R<a;R++){let L=A[R*2],j=A[R*2+1];isNaN(L)||isNaN(j)?N[R]=T:N[R]=E.get(`${L},${j}`)}let C=x.zeros([D.length],o),k=C.data;for(let R=0;R<D.length;R++)k[R*2]=D[R].re,k[R*2+1]=D[R].im;if(!t&&!e&&!n)return C;let V={values:C};if(t){let R=x.zeros([w.length],"int32"),L=R.data;for(let j=0;j<w.length;j++)L[j]=w[j];V.indices=R}if(e){let R=x.zeros([N.length],"int32"),L=R.data;for(let j=0;j<N.length;j++)L[j]=N[j];V.inverse=R}if(n){let R=x.zeros([I.length],"int32"),L=R.data;for(let j=0;j<I.length;j++)L[j]=I[j];V.counts=R}return V}let s=[];for(let A=0;A<a;A++)s.push({value:Number(u[A]),index:A});s.sort((A,S)=>isNaN(A.value)&&isNaN(S.value)?0:isNaN(A.value)?1:isNaN(S.value)?-1:A.value-S.value);let i=[],c=[],l=new Array(a),m=[],d,p=0;for(let A=0;A<s.length;A++){let{value:S,index:D}=s[A];d===void 0||isNaN(S)&&!isNaN(d)||!isNaN(S)&&isNaN(d)||!isNaN(S)&&!isNaN(d)&&S!==d?(d!==void 0&&m.push(p),i.push(S),c.push(D),p=1,d=S):p++}p>0&&m.push(p);let f=new Map,y=-1;for(let A=0;A<i.length;A++){let S=i[A];isNaN(S)?y=A:f.set(S,A)}for(let A=0;A<a;A++){let S=Number(u[A]);isNaN(S)?l[A]=y:l[A]=f.get(S)}let g=x.zeros([i.length],o),h=g.data;for(let A=0;A<i.length;A++)h[A]=i[A];if(!t&&!e&&!n)return g;let b={values:g};if(t){let A=x.zeros([c.length],"int32"),S=A.data;for(let D=0;D<c.length;D++)S[D]=c[D];b.indices=A}if(e){let A=x.zeros([l.length],"int32"),S=A.data;for(let D=0;D<l.length;D++)S[D]=l[D];b.inverse=A}if(n){let A=x.zeros([m.length],"int32"),S=A.data;for(let D=0;D<m.length;D++)S[D]=m[D];b.counts=A}return b}function Sr(r,t,e){if(e){let n=Number(r[t*2]),o=Number(r[t*2+1]);return`${n},${o}`}return String(Number(r[t]))}function ls(r,t){return ve(r,t)}function fs(r,t){let e=r.dtype,n=M(e),o=xr(r),a=xr(t),u=new Set;for(let l=0;l<a.size;l++)u.add(Sr(a.data,l,n));let s=[];for(let l=0;l<o.size;l++){let m=Sr(o.data,l,n);u.has(m)&&s.push(l)}if(n){let l=x.zeros([s.length],e),m=l.data,d=o.data;for(let p=0;p<s.length;p++){let f=s[p];m[p*2]=d[f*2],m[p*2+1]=d[f*2+1]}return l}let i=x.zeros([s.length],e),c=i.data;for(let l=0;l<s.length;l++)c[l]=o.data[s[l]];return i}function ve(r,t){let e=Array.from(r.shape),n=r.size,o=M(r.dtype),a=new Set;for(let i=0;i<t.size;i++)a.add(Sr(t.data,i,o));let u=x.zeros(e,"bool"),s=u.data;for(let i=0;i<n;i++){let c=Sr(r.data,i,o);s[i]=a.has(c)?1:0}return u}function ms(r,t){let e=r.dtype,n=M(e),o=xr(r),a=new Set;for(let c=0;c<t.size;c++)a.add(Sr(t.data,c,n));let u=[];for(let c=0;c<o.size;c++){let l=Sr(o.data,c,n);a.has(l)||u.push(c)}if(n){let c=x.zeros([u.length],e),l=c.data,m=o.data;for(let d=0;d<u.length;d++){let p=u[d];l[d*2]=m[p*2],l[d*2+1]=m[p*2+1]}return c}let s=x.zeros([u.length],e),i=s.data;for(let c=0;c<u.length;c++)i[c]=o.data[u[c]];return s}function ys(r,t){let e=r.dtype,n=M(e),o=xr(r),a=xr(t),u=new Set,s=new Set;for(let p=0;p<o.size;p++)u.add(Sr(o.data,p,n));for(let p=0;p<a.size;p++)s.add(Sr(a.data,p,n));let i=[],c=[];for(let p=0;p<o.size;p++){let f=Sr(o.data,p,n);s.has(f)||i.push(p)}for(let p=0;p<a.size;p++){let f=Sr(a.data,p,n);u.has(f)||c.push(p)}if(n){let p=[],f=o.data,y=a.data;for(let b of i)p.push({re:f[b*2],im:f[b*2+1]});for(let b of c)p.push({re:y[b*2],im:y[b*2+1]});p.sort((b,A)=>Be(b.re,b.im,A.re,A.im));let g=x.zeros([p.length],e),h=g.data;for(let b=0;b<p.length;b++)h[b*2]=p[b].re,h[b*2+1]=p[b].im;return g}let l=[];for(let p of i)l.push(Number(o.data[p]));for(let p of c)l.push(Number(a.data[p]));l.sort((p,f)=>isNaN(p)&&isNaN(f)?0:isNaN(p)?1:isNaN(f)?-1:p-f);let m=x.zeros([l.length],e),d=m.data;for(let p=0;p<l.length;p++)d[p]=l[p];return m}function ps(r,t){let e=r.dtype,n=M(e),o=xr(r),a=xr(t),u=new Set,s=[];if(n){let m=o.data,d=a.data;for(let y=0;y<o.size;y++){let g=m[y*2],h=m[y*2+1],b=`${g},${h}`;u.has(b)||(u.add(b),s.push({re:g,im:h}))}for(let y=0;y<a.size;y++){let g=d[y*2],h=d[y*2+1],b=`${g},${h}`;u.has(b)||(u.add(b),s.push({re:g,im:h}))}s.sort((y,g)=>Be(y.re,y.im,g.re,g.im));let p=x.zeros([s.length],e),f=p.data;for(let y=0;y<s.length;y++)f[y*2]=s[y].re,f[y*2+1]=s[y].im;return p}let i=[];for(let m=0;m<o.size;m++){let d=Number(o.data[m]),p=String(d);u.has(p)||(u.add(p),i.push(d))}for(let m=0;m<a.size;m++){let d=Number(a.data[m]),p=String(d);u.has(p)||(u.add(p),i.push(d))}i.sort((m,d)=>isNaN(m)&&isNaN(d)?0:isNaN(m)?1:isNaN(d)?-1:m-d);let c=x.zeros([i.length],e),l=c.data;for(let m=0;m<i.length;m++)l[m]=i[m];return c}function Ee(r,t=1,e=-1){if(t<0)throw new Error(`order must be non-negative but got ${t}`);if(t===0)return r.copy();let n=Array.from(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}`);if(n[a]<t+1)throw new Error(`diff requires at least ${t+1} elements along axis ${e}, but got ${n[a]}`);let u=r;for(let s=0;s<t;s++)u=Qu(u,a);return u}function Qu(r,t){let e=Array.from(r.shape),n=e.length,o=e[t],a=[...e];a[t]=o-1;let u=r.dtype,s=M(u),i=B(u)?"float64":u,c=x.zeros(a,i),l=c.data,m=r.strides,d=c.size;for(let p=0;p<d;p++){let f=p,y=new Array(n);for(let S=n-1;S>=0;S--)y[S]=f%a[S],f=Math.floor(f/a[S]);let g=[...y],h=[...y];h[t]=g[t]+1;let b=0,A=0;for(let S=0;S<n;S++)b+=g[S]*m[S],A+=h[S]*m[S];if(s){let S=r.data,D=S[b*2],w=S[b*2+1],N=S[A*2],I=S[A*2+1];l[p*2]=N-D,l[p*2+1]=I-w}else{let S=(B(u),Number(r.data[b])),D=(B(u),Number(r.data[A]));l[p]=D-S}}return c}function ds(r,t=null,e=null){let n=r.size,o=r.dtype,a=M(o),u=B(o)?"float64":o,s=Math.max(0,n-1),i=e?e.length:0,c=t?t.length:0,l=i+s+c,m=x.zeros([l],u),d=m.data,p=0;if(e)if(a)for(let f of e)d[p*2]=f,d[p*2+1]=0,p++;else for(let f of e)d[p++]=f;if(a){let f=r.data;for(let y=0;y<s;y++){let g=f[y*2],h=f[y*2+1],b=f[(y+1)*2],A=f[(y+1)*2+1];d[p*2]=b-g,d[p*2+1]=A-h,p++}}else for(let f=0;f<s;f++){let y=(B(o),Number(r.iget(f))),g=(B(o),Number(r.iget(f+1)));d[p++]=g-y}if(t)if(a)for(let f of t)d[p*2]=f,d[p*2+1]=0,p++;else for(let f of t)d[p++]=f;return m}function gs(r,t=1,e=null){let o=Array.from(r.shape).length,a;if(e===null)a=Array.from({length:o},(i,c)=>c);else if(typeof e=="number"){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}`);a=[i]}else a=e.map(i=>{let c=i<0?o+i:i;if(c<0||c>=o)throw new Error(`axis ${i} is out of bounds for array of dimension ${o}`);return c});let u;if(typeof t=="number")u=a.map(()=>t);else{if(t.length!==a.length)throw new Error("Number of spacings must match number of axes");u=t}let s=[];for(let i=0;i<a.length;i++)s.push(Ku(r,a[i],u[i]));return s.length===1?s[0]:s}function Ku(r,t,e){let n=Array.from(r.shape),o=n.length,a=n[t];if(a<2)throw new Error(`Shape of array along axis ${t} must be at least 2, but got ${a}`);let u=r.dtype,s=M(u),i=B(u)?"float64":u==="float32"?"float32":s?u:"float64",c=x.zeros(n,i),l=c.data,m=r.strides,d=e,p=2*d,f=r.size;for(let y=0;y<f;y++){let g=y,h=new Array(o);for(let A=o-1;A>=0;A--)h[A]=g%n[A],g=Math.floor(g/n[A]);let b=h[t];if(s){let A=r.data,S=l,D,w;if(b===0){let N=[...h];N[t]=1;let I=0;for(let T=0;T<o;T++)I+=N[T]*m[T];let z=A[y*2],F=A[y*2+1],_=A[I*2],E=A[I*2+1];D=(_-z)/d,w=(E-F)/d}else if(b===a-1){let N=[...h];N[t]=a-2;let I=0;for(let T=0;T<o;T++)I+=N[T]*m[T];let z=A[y*2],F=A[y*2+1],_=A[I*2],E=A[I*2+1];D=(z-_)/d,w=(F-E)/d}else{let N=[...h],I=[...h];N[t]=b+1,I[t]=b-1;let z=0,F=0;for(let k=0;k<o;k++)z+=N[k]*m[k],F+=I[k]*m[k];let _=A[z*2],E=A[z*2+1],T=A[F*2],C=A[F*2+1];D=(_-T)/p,w=(E-C)/p}S[y*2]=D,S[y*2+1]=w}else{let A;if(b===0){let S=[...h];S[t]=1;let D=0;for(let I=0;I<o;I++)D+=S[I]*m[I];let w=(B(u),Number(r.data[y]));A=((B(u),Number(r.data[D]))-w)/d}else if(b===a-1){let S=[...h];S[t]=a-2;let D=0;for(let I=0;I<o;I++)D+=S[I]*m[I];let w=(B(u),Number(r.data[y])),N=(B(u),Number(r.data[D]));A=(w-N)/d}else{let S=[...h],D=[...h];S[t]=b+1,D[t]=b-1;let w=0,N=0;for(let F=0;F<o;F++)w+=S[F]*m[F],N+=D[F]*m[F];let I=(B(u),Number(r.data[w])),z=(B(u),Number(r.data[N]));A=(I-z)/p}l[y]=A}}return c}function As(r,t,e=-1,n=-1,o=-1){let a=Array.from(r.shape),u=Array.from(t.shape),s=a.length,i=u.length,c=e<0?s+e:e,l=n<0?i+n:n;if(c<0||c>=s)throw new Error(`axisa ${e} is out of bounds for array of dimension ${s}`);if(l<0||l>=i)throw new Error(`axisb ${n} is out of bounds for array of dimension ${i}`);let m=a[c],d=u[l];if(m!==2&&m!==3)throw new Error(`incompatible dimensions for cross product (dimension must be 2 or 3, got ${m})`);if(d!==2&&d!==3)throw new Error(`incompatible dimensions for cross product (dimension must be 2 or 3, got ${d})`);let p=G(r.dtype,t.dtype),f=M(p),y=(b,A)=>{if(M(b.dtype)){let S=b.data;return[S[A*2],S[A*2+1]]}return[Number(b.iget(A)),0]},g=(b,A,S,D)=>[b*S-A*D,b*D+A*S],h=(b,A,S,D)=>[b-S,A-D];if(s===1&&i===1&&m===3&&d===3){let b=x.zeros([3],p);if(f){let A=b.data,[S,D]=y(r,0),[w,N]=y(r,1),[I,z]=y(r,2),[F,_]=y(t,0),[E,T]=y(t,1),[C,k]=y(t,2),[V,R]=g(w,N,C,k),[L,j]=g(I,z,E,T),[H,Q]=h(V,R,L,j),[Z,rr]=g(I,z,F,_),[tr,er]=g(S,D,C,k),[cr,vt]=h(Z,rr,tr,er),[Et,Tt]=g(S,D,E,T),[Ot,Ct]=g(w,N,F,_),[Ut,$t]=h(Et,Tt,Ot,Ct);A[0]=H,A[1]=Q,A[2]=cr,A[3]=vt,A[4]=Ut,A[5]=$t}else{let A=b.data,S=Number(r.iget(0)),D=Number(r.iget(1)),w=Number(r.iget(2)),N=Number(t.iget(0)),I=Number(t.iget(1)),z=Number(t.iget(2));A[0]=D*z-w*I,A[1]=w*N-S*z,A[2]=S*I-D*N}return b}if(s===1&&i===1&&m===2&&d===2){let b=x.zeros([],p);if(f){let A=b.data,[S,D]=y(r,0),[w,N]=y(r,1),[I,z]=y(t,0),[F,_]=y(t,1),[E,T]=g(S,D,F,_),[C,k]=g(w,N,I,z),[V,R]=h(E,T,C,k);A[0]=V,A[1]=R}else{let A=Number(r.iget(0)),S=Number(r.iget(1)),D=Number(t.iget(0)),w=Number(t.iget(1));b.data[0]=A*w-S*D}return b}if(s===1&&i===1){if(m===2&&d===3){let b=x.zeros([3],p);if(f){let A=b.data,[S,D]=y(r,0),[w,N]=y(r,1),[I,z]=y(t,0),[F,_]=y(t,1),[E,T]=y(t,2),[C,k]=g(w,N,E,T),[V,R]=g(S,D,E,T),L=-V,j=-R,[H,Q]=g(S,D,F,_),[Z,rr]=g(w,N,I,z),[tr,er]=h(H,Q,Z,rr);A[0]=C,A[1]=k,A[2]=L,A[3]=j,A[4]=tr,A[5]=er}else{let A=b.data,S=Number(r.iget(0)),D=Number(r.iget(1)),w=Number(t.iget(0)),N=Number(t.iget(1)),I=Number(t.iget(2));A[0]=D*I,A[1]=-S*I,A[2]=S*N-D*w}return b}else if(m===3&&d===2){let b=x.zeros([3],p);if(f){let A=b.data,[S,D]=y(r,0),[w,N]=y(r,1),[I,z]=y(r,2),[F,_]=y(t,0),[E,T]=y(t,1),[C,k]=g(I,z,E,T),V=-C,R=-k,[L,j]=g(I,z,F,_),[H,Q]=g(S,D,E,T),[Z,rr]=g(w,N,F,_),[tr,er]=h(H,Q,Z,rr);A[0]=V,A[1]=R,A[2]=L,A[3]=j,A[4]=tr,A[5]=er}else{let A=b.data,S=Number(r.iget(0)),D=Number(r.iget(1)),w=Number(r.iget(2)),N=Number(t.iget(0)),I=Number(t.iget(1));A[0]=-w*I,A[1]=w*N,A[2]=S*I-D*N}return b}}if(s===2&&i===2&&c===1&&l===1){let b=a[0];if(u[0]!==b)throw new Error(`Shape mismatch: a has ${b} vectors, b has ${u[0]} vectors`);if(m===3&&d===3){let A=x.zeros([b,3],p);if(f){let S=A.data;for(let D=0;D<b;D++){let[w,N]=y(r,D*3),[I,z]=y(r,D*3+1),[F,_]=y(r,D*3+2),[E,T]=y(t,D*3),[C,k]=y(t,D*3+1),[V,R]=y(t,D*3+2),[L,j]=g(I,z,V,R),[H,Q]=g(F,_,C,k),[Z,rr]=h(L,j,H,Q),[tr,er]=g(F,_,E,T),[cr,vt]=g(w,N,V,R),[Et,Tt]=h(tr,er,cr,vt),[Ot,Ct]=g(w,N,C,k),[Ut,$t]=g(I,z,E,T),[Oi,Ci]=h(Ot,Ct,Ut,$t);S[D*3*2]=Z,S[D*3*2+1]=rr,S[(D*3+1)*2]=Et,S[(D*3+1)*2+1]=Tt,S[(D*3+2)*2]=Oi,S[(D*3+2)*2+1]=Ci}}else{let S=A.data;for(let D=0;D<b;D++){let w=Number(r.iget(D*3)),N=Number(r.iget(D*3+1)),I=Number(r.iget(D*3+2)),z=Number(t.iget(D*3)),F=Number(t.iget(D*3+1)),_=Number(t.iget(D*3+2));S[D*3]=N*_-I*F,S[D*3+1]=I*z-w*_,S[D*3+2]=w*F-N*z}}return A}if(m===2&&d===2){let A=x.zeros([b],p);if(f){let S=A.data;for(let D=0;D<b;D++){let[w,N]=y(r,D*2),[I,z]=y(r,D*2+1),[F,_]=y(t,D*2),[E,T]=y(t,D*2+1),[C,k]=g(w,N,E,T),[V,R]=g(I,z,F,_),[L,j]=h(C,k,V,R);S[D*2]=L,S[D*2+1]=j}}else{let S=A.data;for(let D=0;D<b;D++){let w=Number(r.iget(D*2)),N=Number(r.iget(D*2+1)),I=Number(t.iget(D*2)),z=Number(t.iget(D*2+1));S[D]=w*z-N*I}}return A}}throw new Error(`cross product not implemented for arrays with shapes ${JSON.stringify(a)} and ${JSON.stringify(u)}`)}function bs(r,t,e=0){q(r.dtype,"bincount","bincount requires integer input.");let n=r.data,o=r.size,a=0;for(let s=0;s<o;s++){let i=Number(n[s]);if(i<0||!Number.isInteger(i))throw new Error("'x' argument must contain non-negative integers");i>a&&(a=i)}let u=Math.max(a+1,e);if(t!==void 0){if(t.size!==o)throw new Error("weights array must have same length as x");let s=t.data,i=new Float64Array(u);for(let c=0;c<o;c++){let l=Number(n[c]);i[l]+=Number(s[c])}return x.fromData(i,[u],"float64")}else{let s=new Float64Array(u);for(let i=0;i<o;i++){let c=Number(n[i]);s[c]++}return x.fromData(s,[u],"float64")}}function hs(r,t,e=!1){q(r.dtype,"digitize","digitize requires real numbers."),q(t.dtype,"digitize","digitize requires real numbers.");let n=r.data,o=t.data,a=r.size,u=t.size,s=new Float64Array(a),i=!0;u>1&&(i=Number(o[1])>=Number(o[0]));for(let c=0;c<a;c++){let l=Number(n[c]),m;if(i)e?m=tc(o,u,l):m=ot(o,u,l);else if(e)for(m=0;m<u&&Number(o[m])>=l;)m++;else for(m=0;m<u&&Number(o[m])>l;)m++;s[c]=m}return x.fromData(s,[...r.shape],"float64")}function tc(r,t,e){let n=0,o=t;for(;n<o;){let a=n+o>>>1;Number(r[a])<e?n=a+1:o=a}return n}function ot(r,t,e){let n=0,o=t;for(;n<o;){let a=n+o>>>1;Number(r[a])<=e?n=a+1:o=a}return n}function Ss(r,t=10,e,n=!1,o){q(r.dtype,"histogram","histogram requires real numbers."),typeof t!="number"&&q(t.dtype,"histogram","histogram requires real numbers.");let a=r.data,u=r.size,s;if(typeof t=="number"){let m,d;if(e)[m,d]=e;else{m=1/0,d=-1/0;for(let f=0;f<u;f++){let y=Number(a[f]);y<m&&(m=y),y>d&&(d=y)}m===d&&(m=m-.5,d=d+.5)}s=[];let p=(d-m)/t;for(let f=0;f<=t;f++)s.push(m+f*p)}else{let m=t.data;s=[];for(let d=0;d<t.size;d++)s.push(Number(m[d]))}let i=s.length-1,c=new Float64Array(i),l=o?.data;for(let m=0;m<u;m++){let d=Number(a[m]),p=l?Number(l[m]):1,f=ot(s,s.length,d)-1;if(!(f<0)){if(f>=i)if(d===s[i])f=i-1;else continue;c[f]+=p}}if(n){let m=0;for(let d=0;d<i;d++)m+=c[d];for(let d=0;d<i;d++){let p=s[d+1]-s[d];c[d]=c[d]/(m*p)}}return{hist:x.fromData(c,[i],"float64"),bin_edges:x.fromData(new Float64Array(s),[s.length],"float64")}}function Ds(r,t,e=10,n,o=!1,a){q(r.dtype,"histogram2d","histogram2d requires real numbers."),q(t.dtype,"histogram2d","histogram2d requires real numbers.");let u=r.data,s=t.data,i=r.size;if(t.size!==i)throw new Error("x and y must have the same length");let c,l,m,d;if(typeof e=="number"?(m=e,d=e):Array.isArray(e)&&e.length===2?(e[0],m=e[0],d=e[1]):(m=10,d=10),typeof m=="number"){let h,b;if(n)[h,b]=n[0];else{h=1/0,b=-1/0;for(let S=0;S<i;S++){let D=Number(u[S]);D<h&&(h=D),D>b&&(b=D)}h===b&&(h-=.5,b+=.5)}c=[];let A=(b-h)/m;for(let S=0;S<=m;S++)c.push(h+S*A)}else{let h=m.data;c=[];for(let b=0;b<m.size;b++)c.push(Number(h[b]))}if(typeof d=="number"){let h,b;if(n)[h,b]=n[1];else{h=1/0,b=-1/0;for(let S=0;S<i;S++){let D=Number(s[S]);D<h&&(h=D),D>b&&(b=D)}h===b&&(h-=.5,b+=.5)}l=[];let A=(b-h)/d;for(let S=0;S<=d;S++)l.push(h+S*A)}else{let h=d.data;l=[];for(let b=0;b<d.size;b++)l.push(Number(h[b]))}let p=c.length-1,f=l.length-1,y=new Float64Array(p*f),g=a?.data;for(let h=0;h<i;h++){let b=Number(u[h]),A=Number(s[h]),S=g?Number(g[h]):1,D=ot(c,c.length,b)-1,w=ot(l,l.length,A)-1;if(D<0||D>=p)if(b===c[p]&&D===p)D=p-1;else continue;if(w<0||w>=f)if(A===l[f]&&w===f)w=f-1;else continue;y[D*f+w]+=S}if(o){let h=0;for(let b=0;b<y.length;b++)h+=y[b];for(let b=0;b<p;b++)for(let A=0;A<f;A++){let S=c[b+1]-c[b],D=l[A+1]-l[A],w=S*D;y[b*f+A]=y[b*f+A]/(h*w)}}return{hist:x.fromData(y,[p,f],"float64"),x_edges:x.fromData(new Float64Array(c),[c.length],"float64"),y_edges:x.fromData(new Float64Array(l),[l.length],"float64")}}function xs(r,t=10,e,n=!1,o){q(r.dtype,"histogramdd","histogramdd requires real numbers.");let a=r.shape,u=r.data,s,i;if(a.length===1)s=a[0],i=1;else if(a.length===2)s=a[0],i=a[1];else throw new Error("sample must be 1D or 2D array");let c;if(typeof t=="number")c=new Array(i).fill(t);else if(c=t,c.length!==i)throw new Error("bins array length must match number of dimensions");let l=[];for(let h=0;h<i;h++){let b,A;if(e&&e[h])[b,A]=e[h];else{b=1/0,A=-1/0;for(let N=0;N<s;N++){let I=Number(i===1?u[N]:u[N*i+h]);I<b&&(b=I),I>A&&(A=I)}b===A&&(b-=.5,A+=.5)}let S=c[h],D=[],w=(A-b)/S;for(let N=0;N<=S;N++)D.push(b+N*w);l.push(D)}let m=c.slice(),d=m.reduce((h,b)=>h*b,1),p=new Float64Array(d),f=new Array(i);f[i-1]=1;for(let h=i-2;h>=0;h--)f[h]=f[h+1]*c[h+1];let y=o?.data;for(let h=0;h<s;h++){let b=y?Number(y[h]):1,A=0,S=!1;for(let D=0;D<i;D++){let w=Number(i===1?u[h]:u[h*i+D]),N=l[D],I=c[D],z=ot(N,N.length,w)-1;if(z<0||z>=I)if(w===N[I]&&z===I)z=I-1;else{S=!0;break}A+=z*f[D]}S||(p[A]+=b)}if(n){let h=0;for(let A=0;A<d;A++)h+=p[A];let b=new Float64Array(d);for(let A=0;A<d;A++){let S=1,D=A;for(let w=0;w<i;w++){let N=Math.floor(D/f[w])%c[w],I=l[w];S*=I[N+1]-I[N]}b[A]=S}for(let A=0;A<d;A++)p[A]=p[A]/(h*b[A])}let g=l.map(h=>x.fromData(new Float64Array(h),[h.length],"float64"));return{hist:x.fromData(p,m,"float64"),edges:g}}function Te(r,t,e="full"){let n=r.data,o=t.data,a=r.size,u=t.size,s=M(r.dtype)||M(t.dtype),i=a+u-1;if(s){let l=new Float64Array(i),m=new Float64Array(i),d=M(r.dtype),p=M(t.dtype);for(let y=0;y<i;y++){let g=0,h=0,b=y-u+1;for(let A=0;A<a;A++){let S=A-b;if(S>=0&&S<u){let D,w,N,I;d?(D=n[A*2],w=n[A*2+1]):(D=Number(n[A]),w=0),p?(N=o[S*2],I=o[S*2+1]):(N=Number(o[S]),I=0),g+=D*N+w*I,h+=w*N-D*I}}l[y]=g,m[y]=h}let f=(y,g,h,b=0)=>{let A=new Float64Array(h*2);for(let S=0;S<h;S++)A[S*2]=y[b+S],A[S*2+1]=g[b+S];return x.fromData(A,[h],"complex128")};if(e==="full")return f(l,m,i);if(e==="same"){let y=Math.floor((i-a)/2);return f(l,m,a,y)}else{let y=Math.max(a,u)-Math.min(a,u)+1,g=Math.min(a,u)-1;return f(l,m,y,g)}}let c=new Float64Array(i);for(let l=0;l<i;l++){let m=0,d=l-u+1;for(let p=0;p<a;p++){let f=p-d;f>=0&&f<u&&(m+=Number(n[p])*Number(o[f]))}c[l]=m}if(e==="full")return x.fromData(c,[i],"float64");if(e==="same"){let l=Math.floor((i-a)/2),m=new Float64Array(a);for(let d=0;d<a;d++)m[d]=c[l+d];return x.fromData(m,[a],"float64")}else{let l=Math.max(a,u)-Math.min(a,u)+1,m=Math.min(a,u)-1,d=new Float64Array(l);for(let p=0;p<l;p++)d[p]=c[m+p];return x.fromData(d,[l],"float64")}}function Ns(r,t,e="full"){let n=t.data,o=t.size,a=M(t.dtype),u;if(a){let s=new Float64Array(o*2);for(let i=0;i<o;i++){let c=o-1-i;s[i*2]=n[c*2],s[i*2+1]=n[c*2+1]}u=x.fromData(s,[o],t.dtype)}else{let s=new Float64Array(o);for(let i=0;i<o;i++)s[i]=Number(n[o-1-i]);u=x.fromData(s,[o],"float64")}if(a){let s=u.data;for(let i=0;i<o;i++)s[i*2+1]=-s[i*2+1]}return Te(r,u,e)}function Oe(r,t,e=!0,n=!1,o){let a=r.shape,u=r.data,s=M(r.dtype)||t!==void 0&&M(t.dtype),i;if(o!==void 0?i=o:i=n?0:1,a.length===1)if(t!==void 0){let f=t.data,y=r.size,g=M(r.dtype),h=M(t.dtype);if(t.size!==y)throw new Error("m and y must have same length");if(s){let I=0,z=0,F=0,_=0;for(let Z=0;Z<y;Z++)g?(I+=u[Z*2],z+=u[Z*2+1]):I+=Number(u[Z]),h?(F+=f[Z*2],_+=f[Z*2+1]):F+=Number(f[Z]);I/=y,z/=y,F/=y,_/=y;let E=0,T=0,C=0,k=0,V=0,R=0,L=0,j=0;for(let Z=0;Z<y;Z++){let rr,tr,er,cr;g?(rr=u[Z*2]-I,tr=u[Z*2+1]-z):(rr=Number(u[Z])-I,tr=0),h?(er=f[Z*2]-F,cr=f[Z*2+1]-_):(er=Number(f[Z])-F,cr=0),E+=rr*rr+tr*tr,C+=er*er+cr*cr,V+=rr*er+tr*cr,R+=tr*er-rr*cr,L+=er*rr+cr*tr,j+=cr*rr-er*tr}let H=y-i;if(H<=0){let Z=new Float64Array(8);return Z.fill(NaN),x.fromData(Z,[2,2],"complex128")}E/=H,C/=H,V/=H,R/=H,L/=H,j/=H;let Q=new Float64Array(8);return Q[0]=E,Q[1]=T,Q[2]=V,Q[3]=R,Q[4]=L,Q[5]=j,Q[6]=C,Q[7]=k,x.fromData(Q,[2,2],"complex128")}let b=0,A=0;for(let I=0;I<y;I++)b+=Number(u[I]),A+=Number(f[I]);b/=y,A/=y;let S=0,D=0,w=0;for(let I=0;I<y;I++){let z=Number(u[I])-b,F=Number(f[I])-A;S+=z*z,D+=F*F,w+=z*F}let N=y-i;return N<=0?x.fromData(new Float64Array([NaN,NaN,NaN,NaN]),[2,2],"float64"):(S/=N,D/=N,w/=N,x.fromData(new Float64Array([S,w,w,D]),[2,2],"float64"))}else{let f=r.size;if(s){let b=0,A=0;for(let w=0;w<f;w++)b+=u[w*2],A+=u[w*2+1];b/=f,A/=f;let S=0;for(let w=0;w<f;w++){let N=u[w*2]-b,I=u[w*2+1]-A;S+=N*N+I*I}let D=f-i;return D<=0?x.fromData(new Float64Array([NaN,0]),[],"complex128"):(S/=D,x.fromData(new Float64Array([S,0]),[],"complex128"))}let y=0;for(let b=0;b<f;b++)y+=Number(u[b]);y/=f;let g=0;for(let b=0;b<f;b++){let A=Number(u[b])-y;g+=A*A}let h=f-i;return h<=0?x.fromData(new Float64Array([NaN]),[],"float64"):(g/=h,x.fromData(new Float64Array([g]),[],"float64"))}let c,l;e?(c=a[0],l=a[1]):(c=a[1],l=a[0]);let m=l-i;if(s){let f=new Float64Array(c),y=new Float64Array(c);for(let h=0;h<c;h++){let b=0,A=0;for(let S=0;S<l;S++){let D=e?h*l+S:S*c+h;b+=u[D*2],A+=u[D*2+1]}f[h]=b/l,y[h]=A/l}let g=new Float64Array(c*c*2);if(m<=0)return g.fill(NaN),x.fromData(g,[c,c],"complex128");for(let h=0;h<c;h++)for(let b=0;b<c;b++){let A=0,S=0;for(let w=0;w<l;w++){let N=e?h*l+w:w*c+h,I=e?b*l+w:w*c+b,z=u[N*2]-f[h],F=u[N*2+1]-y[h],_=u[I*2]-f[b],E=u[I*2+1]-y[b];A+=z*_+F*E,S+=F*_-z*E}let D=(h*c+b)*2;g[D]=A/m,g[D+1]=S/m}return x.fromData(g,[c,c],"complex128")}let d=new Float64Array(c);for(let f=0;f<c;f++){let y=0;for(let g=0;g<l;g++){let h=e?f*l+g:g*c+f;y+=Number(u[h])}d[f]=y/l}let p=new Float64Array(c*c);if(m<=0)return p.fill(NaN),x.fromData(p,[c,c],"float64");for(let f=0;f<c;f++)for(let y=f;y<c;y++){let g=0;for(let b=0;b<l;b++){let A=e?f*l+b:b*c+f,S=e?y*l+b:b*c+y,D=Number(u[A])-d[f],w=Number(u[S])-d[y];g+=D*w}let h=g/m;p[f*c+y]=h,p[y*c+f]=h}return x.fromData(p,[c,c],"float64")}function ws(r,t,e=!0){let n=M(r.dtype)||t!==void 0&&M(t.dtype);if(r.shape.length===1&&t===void 0)return n?x.fromData(new Float64Array([1,0]),[],"complex128"):x.fromData(new Float64Array([1]),[],"float64");let o=Oe(r,t,e,!1),a=o.data,s=o.shape[0];if(n){let c=new Float64Array(s*s*2);for(let l=0;l<s;l++)for(let m=0;m<s;m++){let d=a[(l*s+m)*2],p=a[(l*s+m)*2+1],f=a[(l*s+l)*2],y=a[(m*s+m)*2],g=(l*s+m)*2;if(f<=0||y<=0)c[g]=NaN,c[g+1]=NaN;else{let h=Math.sqrt(f*y);c[g]=d/h,c[g+1]=p/h}}return x.fromData(c,[s,s],"complex128")}let i=new Float64Array(s*s);for(let c=0;c<s;c++)for(let l=0;l<s;l++){let m=Number(a[c*s+l]),d=Number(a[c*s+c]),p=Number(a[l*s+l]);d<=0||p<=0?i[c*s+l]=NaN:i[c*s+l]=m/Math.sqrt(d*p)}return x.fromData(i,[s,s],"float64")}var v=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(){return this.transpose()}get itemsize(){return lt(this._storage.dtype)}get nbytes(){return this.size*this.itemsize}fill(t){let e=this._storage.dtype,n=this.size;if(B(e)){let o=typeof t=="bigint"?t:BigInt(Math.round(Number(t)));for(let a=0;a<n;a++)this._storage.iset(a,o)}else if(e==="bool"){let o=t?1:0;for(let a=0;a<n;a++)this._storage.iset(a,o)}else{let o=Number(t);for(let a=0;a<n;a++)this._storage.iset(a,o)}}*[Symbol.iterator](){if(this.ndim===0)yield this._storage.iget(0);else if(this.ndim===1)for(let t=0;t<this.shape[0];t++)yield this._storage.iget(t);else for(let t=0;t<this.shape[0];t++)yield this.slice(String(t))}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((a,u)=>{let s=a;if(s<0&&(s=this.shape[u]+s),s<0||s>=this.shape[u])throw new Error(`Index ${a} is out of bounds for axis ${u} with size ${this.shape[u]}`);return s}),o=this.dtype;if(M(o))this._storage.set(n,e);else if(B(o)){let a=e instanceof O?e.re:Number(e),u=typeof e=="bigint"?e:BigInt(Math.round(a));this._storage.set(n,u)}else if(o==="bool"){let u=(e instanceof O?e.re:Number(e))?1:0;this._storage.set(n,u)}else{let a=e instanceof O?e.re: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,u=P(t);if(!u)throw new Error(`Cannot convert to dtype ${t}`);let s=new u(a),i=this.data;if(B(n)&&!B(t)){let l=i;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(!B(n)&&B(t)){let l=i;for(let m=0;m<a;m++)s[m]=BigInt(Math.round(Number(l[m])))}else if(t==="bool"){let l=i;for(let m=0;m<a;m++)s[m]=l[m]!==0?1:0}else if(n==="bool"&&!B(t)){let l=i;for(let m=0;m<a;m++)s[m]=l[m]}else if(!B(n)&&!B(t)){let l=i;for(let m=0;m<a;m++)s[m]=l[m]}else{let l=i;for(let m=0;m<a;m++)s[m]=l[m]}let c=x.fromData(s,o,t);return new r(c)}add(t){let e=typeof t=="number"?t:t._storage,n=on(this._storage,e);return r._fromStorage(n)}subtract(t){let e=typeof t=="number"?t:t._storage,n=an(this._storage,e);return r._fromStorage(n)}multiply(t){let e=typeof t=="number"?t:t._storage,n=sn(this._storage,e);return r._fromStorage(n)}divide(t){let e=typeof t=="number"?t:t._storage,n=un(this._storage,e);return r._fromStorage(n)}mod(t){let e=typeof t=="number"?t:t._storage,n=mt(this._storage,e);return r._fromStorage(n)}floor_divide(t){let e=typeof t=="number"?t:t._storage,n=qt(this._storage,e);return r._fromStorage(n)}positive(){let t=mn(this._storage);return r._fromStorage(t)}reciprocal(){let t=yn(this._storage);return r._fromStorage(t)}sqrt(){let t=_o(this._storage);return r._fromStorage(t)}power(t){let e=typeof t=="number"?t:t._storage,n=Fo(this._storage,e);return r._fromStorage(n)}exp(){let t=Mo(this._storage);return r._fromStorage(t)}exp2(){let t=Bo(this._storage);return r._fromStorage(t)}expm1(){let t=vo(this._storage);return r._fromStorage(t)}log(){let t=Eo(this._storage);return r._fromStorage(t)}log2(){let t=To(this._storage);return r._fromStorage(t)}log10(){let t=Oo(this._storage);return r._fromStorage(t)}log1p(){let t=Co(this._storage);return r._fromStorage(t)}logaddexp(t){let e=typeof t=="number"?t:t._storage,n=Uo(this._storage,e);return r._fromStorage(n)}logaddexp2(t){let e=typeof t=="number"?t:t._storage,n=$o(this._storage,e);return r._fromStorage(n)}absolute(){let t=cn(this._storage);return r._fromStorage(t)}negative(){let t=ln(this._storage);return r._fromStorage(t)}sign(){let t=fn(this._storage);return r._fromStorage(t)}around(t=0){let e=we(this._storage,t);return r._fromStorage(e)}round(t=0){return this.around(t)}ceil(){let t=Ie(this._storage);return r._fromStorage(t)}fix(){let t=ze(this._storage);return r._fromStorage(t)}floor(){let t=_e(this._storage);return r._fromStorage(t)}rint(){let t=Fe(this._storage);return r._fromStorage(t)}trunc(){let t=Me(this._storage);return r._fromStorage(t)}sin(){let t=Ro(this._storage);return r._fromStorage(t)}cos(){let t=ko(this._storage);return r._fromStorage(t)}tan(){let t=qo(this._storage);return r._fromStorage(t)}arcsin(){let t=Vo(this._storage);return r._fromStorage(t)}arccos(){let t=jo(this._storage);return r._fromStorage(t)}arctan(){let t=Po(this._storage);return r._fromStorage(t)}arctan2(t){let e=typeof t=="number"?t:t._storage,n=Lo(this._storage,e);return r._fromStorage(n)}hypot(t){let e=typeof t=="number"?t:t._storage,n=Zo(this._storage,e);return r._fromStorage(n)}degrees(){let t=Go(this._storage);return r._fromStorage(t)}radians(){let t=Wo(this._storage);return r._fromStorage(t)}sinh(){let t=Yo(this._storage);return r._fromStorage(t)}cosh(){let t=Ho(this._storage);return r._fromStorage(t)}tanh(){let t=Jo(this._storage);return r._fromStorage(t)}arcsinh(){let t=Xo(this._storage);return r._fromStorage(t)}arccosh(){let t=Qo(this._storage);return r._fromStorage(t)}arctanh(){let t=Ko(this._storage);return r._fromStorage(t)}greater(t){let e=typeof t=="number"?t:t._storage,n=Fn(this._storage,e);return r._fromStorage(n)}greater_equal(t){let e=typeof t=="number"?t:t._storage,n=Mn(this._storage,e);return r._fromStorage(n)}less(t){let e=typeof t=="number"?t:t._storage,n=Bn(this._storage,e);return r._fromStorage(n)}less_equal(t){let e=typeof t=="number"?t:t._storage,n=vn(this._storage,e);return r._fromStorage(n)}equal(t){let e=typeof t=="number"?t:t._storage,n=En(this._storage,e);return r._fromStorage(n)}not_equal(t){let e=typeof t=="number"?t:t._storage,n=Tn(this._storage,e);return r._fromStorage(n)}isclose(t,e=1e-5,n=1e-8){let o=typeof t=="number"?t:t._storage,a=Vt(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 On(this._storage,o,e,n)}bitwise_and(t){let e=typeof t=="number"?t:t._storage,n=Da(this._storage,e);return r._fromStorage(n)}bitwise_or(t){let e=typeof t=="number"?t:t._storage,n=xa(this._storage,e);return r._fromStorage(n)}bitwise_xor(t){let e=typeof t=="number"?t:t._storage,n=Na(this._storage,e);return r._fromStorage(n)}bitwise_not(){let t=ge(this._storage);return r._fromStorage(t)}invert(){let t=wa(this._storage);return r._fromStorage(t)}left_shift(t){let e=typeof t=="number"?t:t._storage,n=Ia(this._storage,e);return r._fromStorage(n)}right_shift(t){let e=typeof t=="number"?t:t._storage,n=za(this._storage,e);return r._fromStorage(n)}logical_and(t){let e=typeof t=="number"?t:t._storage,n=Ba(this._storage,e);return r._fromStorage(n)}logical_or(t){let e=typeof t=="number"?t:t._storage,n=va(this._storage,e);return r._fromStorage(n)}logical_not(){let t=Ea(this._storage);return r._fromStorage(t)}logical_xor(t){let e=typeof t=="number"?t:t._storage,n=Ta(this._storage,e);return r._fromStorage(n)}isfinite(){let t=Oa(this._storage);return r._fromStorage(t)}isinf(){let t=Ca(this._storage);return r._fromStorage(t)}isnan(){let t=Ua(this._storage);return r._fromStorage(t)}isnat(){let t=$a(this._storage);return r._fromStorage(t)}copysign(t){let e=typeof t=="number"?t:t._storage,n=Ra(this._storage,e);return r._fromStorage(n)}signbit(){let t=ka(this._storage);return r._fromStorage(t)}nextafter(t){let e=typeof t=="number"?t:t._storage,n=qa(this._storage,e);return r._fromStorage(n)}spacing(){let t=Va(this._storage);return r._fromStorage(t)}sum(t,e=!1){let n=Zr(this._storage,t,e);return typeof n=="number"||n instanceof O?n:r._fromStorage(n)}mean(t,e=!1){let n=yt(this._storage,t,e);return typeof n=="number"||n instanceof O?n:r._fromStorage(n)}max(t,e=!1){let n=Or(this._storage,t,e);return typeof n=="number"||n instanceof O?n:r._fromStorage(n)}min(t,e=!1){let n=Cr(this._storage,t,e);return typeof n=="number"||n instanceof O?n:r._fromStorage(n)}prod(t,e=!1){let n=jt(this._storage,t,e);return typeof n=="number"||n instanceof O?n:r._fromStorage(n)}argmin(t){let e=Pt(this._storage,t);return typeof e=="number"?e:r._fromStorage(e)}argmax(t){let e=Lt(this._storage,t);return typeof e=="number"?e:r._fromStorage(e)}var(t,e=0,n=!1){let o=Zt(this._storage,t,e,n);return typeof o=="number"?o:r._fromStorage(o)}std(t,e=0,n=!1){let o=Un(this._storage,t,e,n);return typeof o=="number"?o:r._fromStorage(o)}all(t,e=!1){let n=Gt(this._storage,t,e);return typeof n=="boolean"?n:r._fromStorage(n)}any(t,e=!1){let n=Wt(this._storage,t,e);return typeof n=="boolean"?n:r._fromStorage(n)}cumsum(t){return r._fromStorage(Yt(this._storage,t))}cumprod(t){return r._fromStorage(Ht(this._storage,t))}ptp(t,e=!1){let n=Jt(this._storage,t,e);return typeof n=="number"||n instanceof O?n:r._fromStorage(n)}median(t,e=!1){let n=Xt(this._storage,t,e);return typeof n=="number"?n:r._fromStorage(n)}percentile(t,e,n=!1){let o=Qt(this._storage,t,e,n);return typeof o=="number"?o:r._fromStorage(o)}quantile(t,e,n=!1){let o=$r(this._storage,t,e,n);return typeof o=="number"?o:r._fromStorage(o)}average(t,e){let n=Gr(this._storage,e,t?.storage);return typeof n=="number"||n instanceof O?n:r._fromStorage(n)}nansum(t,e=!1){let n=pt(this._storage,t,e);return typeof n=="number"||n instanceof O?n:r._fromStorage(n)}nanprod(t,e=!1){let n=dt(this._storage,t,e);return typeof n=="number"||n instanceof O?n:r._fromStorage(n)}nanmean(t,e=!1){let n=gt(this._storage,t,e);return typeof n=="number"||n instanceof O?n:r._fromStorage(n)}nanvar(t,e=0,n=!1){let o=Ur(this._storage,t,e,n);return typeof o=="number"?o:r._fromStorage(o)}nanstd(t,e=0,n=!1){let o=Kt(this._storage,t,e,n);return typeof o=="number"?o:r._fromStorage(o)}nanmin(t,e=!1){let n=Wr(this._storage,t,e);return typeof n=="number"||n instanceof O?n:r._fromStorage(n)}nanmax(t,e=!1){let n=Yr(this._storage,t,e);return typeof n=="number"||n instanceof O?n:r._fromStorage(n)}nanargmin(t){let e=Hr(this._storage,t);return typeof e=="number"?e:r._fromStorage(e)}nanargmax(t){let e=Jr(this._storage,t);return typeof e=="number"?e:r._fromStorage(e)}nancumsum(t){return r._fromStorage(re(this._storage,t))}nancumprod(t){return r._fromStorage(te(this._storage,t))}nanmedian(t,e=!1){let n=At(this._storage,t,e);return typeof n=="number"?n:r._fromStorage(n)}sort(t=-1){return r._fromStorage(Ae(this._storage,t))}argsort(t=-1){return r._fromStorage(be(this._storage,t))}partition(t,e=-1){return r._fromStorage(he(this._storage,t,e))}argpartition(t,e=-1){return r._fromStorage(Se(this._storage,t,e))}nonzero(){return Nt(this._storage).map(e=>r._fromStorage(e))}argwhere(){return r._fromStorage(De(this._storage))}searchsorted(t,e="left"){return r._fromStorage(xe(this._storage,t._storage,e))}diff(t=1,e=-1){return r._fromStorage(Ee(this._storage,t,e))}reshape(...t){let e=t.length===1&&Array.isArray(t[0])?t[0]:t,n=nr(this._storage,e),a=n.data===this.data?this._base??this:void 0;return r._fromStorage(n,a)}flatten(){let t=bt(this._storage);return r._fromStorage(t)}ravel(){let t=Rr(this._storage),n=t.data===this.data?this._base??this:void 0;return r._fromStorage(t,n)}transpose(t){let e=Qr(this._storage,t),n=this._base??this;return r._fromStorage(e,n)}squeeze(t){let e=$n(this._storage,t),n=this._base??this;return r._fromStorage(e,n)}expand_dims(t){let e=Xr(this._storage,t),n=this._base??this;return r._fromStorage(e,n)}swapaxes(t,e){let n=Rn(this._storage,t,e),o=this._base??this;return r._fromStorage(n,o)}moveaxis(t,e){let n=ee(this._storage,t,e),o=this._base??this;return r._fromStorage(n,o)}repeat(t,e){let n=Wn(this._storage,t,e);return r._fromStorage(n)}take(t,e){let n=ta(this._storage,t,e);return r._fromStorage(n)}put(t,e){let n=e instanceof r?e._storage:e;ea(this._storage,t,n)}iindex(t,e=0){let n;if(t instanceof r){n=[];for(let o=0;o<t.size;o++){let a=t.storage.iget(o),u=typeof a=="bigint"?Number(a):a instanceof O?a.re:a;n.push(u)}}else Array.isArray(t)&&t.length>0&&Array.isArray(t[0])?n=t.flat():n=t;return this.take(n,e)}bindex(t,e){return r._fromStorage(me(t._storage,this._storage,e))}matmul(t){let e=pr(this._storage,t._storage);return r._fromStorage(e)}dot(t){let e=ae(this._storage,t._storage);return typeof e=="number"||typeof e=="bigint"||e instanceof O?e:r._fromStorage(e)}trace(){return io(this._storage)}inner(t){let e=uo(this._storage,t._storage);return typeof e=="number"||typeof e=="bigint"||e instanceof O?e:r._fromStorage(e)}outer(t){let e=se(this._storage,t._storage);return r._fromStorage(e)}tensordot(t,e=2){let n=co(this._storage,t._storage,e);return typeof n=="number"||typeof n=="bigint"||n instanceof O?n:r._fromStorage(n)}cbrt(){let t=pn(this._storage);return r._fromStorage(t)}fabs(){let t=dn(this._storage);return r._fromStorage(t)}divmod(t){let e=typeof t=="number"?t:t._storage,[n,o]=gn(this._storage,e);return[r._fromStorage(n),r._fromStorage(o)]}square(){let t=An(this._storage);return r._fromStorage(t)}remainder(t){let e=typeof t=="number"?t:t._storage,n=bn(this._storage,e);return r._fromStorage(n)}heaviside(t){let e=typeof t=="number"?t:t._storage,n=hn(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((i,c)=>{let l=Ke(i);return rn(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 i=0;i<e.length;i++){let c=e[i],l=this._storage.strides[i];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 u=x.fromData(this._storage.data,n,this._storage.dtype,o,a),s=this._base??this;return new r(u,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 u=[];for(let s=0;s<t[a];s++)o[a]=s,u.push(n(o,a+1));return u};return n(new Array(e),0)}};function Nr(r,t=X){let e=x.zeros(r,t);return new v(e)}function Is(r,t=X){let e=x.ones(r,t);return new v(e)}function nc(r){let t=[],e=r;for(;Array.isArray(e);)t.push(e.length),e=e[0];return t}function zs(r){return typeof r=="bigint"?!0:Array.isArray(r)?r.some(t=>zs(t)):!1}function _s(r){return nn(r)?!0:Array.isArray(r)?r.some(t=>_s(t)):!1}function oc(r){let t=[];function e(n){Array.isArray(n)?n.forEach(o=>e(o)):t.push(n)}return e(r),t}function ar(r,t){if(r instanceof v)return!t||r.dtype===t?r.copy():r.astype(t);let e=zs(r),n=_s(r),o=nc(r),a=o.reduce((p,f)=>p*f,1),u=t;u||(n?u="complex128":e?u="int64":u=X);let s=M(u),i=P(u);if(!i)throw new Error(`Cannot create array with dtype ${u}`);let c=s?a*2:a,l=new i(c),m=oc(r);if(B(u)){let p=l;for(let f=0;f<a;f++){let y=m[f];p[f]=typeof y=="bigint"?y:BigInt(Math.round(Number(y)))}}else if(u==="bool"){let p=l;for(let f=0;f<a;f++)p[f]=m[f]?1:0}else if(s){let p=l;for(let f=0;f<a;f++){let y=m[f],g,h;y instanceof O?(g=y.re,h=y.im):typeof y=="object"&&y!==null&&"re"in y?(g=y.re,h=y.im??0):(g=Number(y),h=0),p[f*2]=g,p[f*2+1]=h}}else{let p=l;for(let f=0;f<a;f++){let y=m[f];p[f]=Number(y)}}let d=x.fromData(l,o,u);return new v(d)}function ac(r,t,e=1,n=X){let o=r,a=t;if(t===void 0&&(o=0,a=r),a===void 0)throw new Error("stop is required");let u=Math.max(0,Math.ceil((a-o)/e)),s=P(n);if(!s)throw new Error(`Cannot create arange array with dtype ${n}`);let i=new s(u);if(B(n))for(let l=0;l<u;l++)i[l]=BigInt(Math.round(o+l*e));else if(n==="bool")for(let l=0;l<u;l++)i[l]=o+l*e!==0?1:0;else for(let l=0;l<u;l++)i[l]=o+l*e;let c=x.fromData(i,[u],n);return new v(c)}function sc(r,t,e=50,n=X){if(e<0)throw new Error("num must be non-negative");if(e===0)return ar([],n);if(e===1)return ar([r],n);let o=P(n);if(!o)throw new Error(`Cannot create linspace array with dtype ${n}`);let a=new o(e),u=(t-r)/(e-1);if(B(n))for(let i=0;i<e;i++)a[i]=BigInt(Math.round(r+i*u));else if(n==="bool")for(let i=0;i<e;i++)a[i]=r+i*u!==0?1:0;else for(let i=0;i<e;i++)a[i]=r+i*u;let s=x.fromData(a,[e],n);return new v(s)}function ic(r,t,e=50,n=10,o=X){if(e<0)throw new Error("num must be non-negative");if(e===0)return ar([],o);if(e===1)return ar([Math.pow(n,r)],o);let a=P(o);if(!a)throw new Error(`Cannot create logspace array with dtype ${o}`);let u=new a(e),s=(t-r)/(e-1);if(B(o))for(let c=0;c<e;c++){let l=r+c*s;u[c]=BigInt(Math.round(Math.pow(n,l)))}else if(o==="bool")for(let c=0;c<e;c++){let l=r+c*s;u[c]=Math.pow(n,l)!==0?1:0}else for(let c=0;c<e;c++){let l=r+c*s;u[c]=Math.pow(n,l)}let i=x.fromData(u,[e],o);return new v(i)}function uc(r,t,e=50,n=X){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 ar([],n);if(e===1)return ar([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 u=P(n);if(!u)throw new Error(`Cannot create geomspace array with dtype ${n}`);let s=new u(e),i=Math.log(Math.abs(r)),l=(Math.log(Math.abs(t))-i)/(e-1);if(B(n))for(let d=0;d<e;d++){let p=o*Math.exp(i+d*l);s[d]=BigInt(Math.round(p))}else if(n==="bool")for(let d=0;d<e;d++){let p=o*Math.exp(i+d*l);s[d]=p!==0?1:0}else for(let d=0;d<e;d++){let p=o*Math.exp(i+d*l);s[d]=p}let m=x.fromData(s,[e],n);return new v(m)}function Fs(r,t,e=0,n=X){let o=t??r,a=Nr([r,o],n),u=a.data;if(B(n)){let s=u;for(let i=0;i<r;i++){let c=i+e;c>=0&&c<o&&(s[i*o+c]=BigInt(1))}}else{let s=u;for(let i=0;i<r;i++){let c=i+e;c>=0&&c<o&&(s[i*o+c]=1)}}return a}function Ms(r,t=X){return Nr(r,t)}function Bs(r,t,e){let n=e;n||(typeof t=="bigint"?n="int64":typeof t=="boolean"?n="bool":Number.isInteger(t)?n="int32":n=X);let o=P(n);if(!o)throw new Error(`Cannot create full array with dtype ${n}`);let a=r.reduce((i,c)=>i*c,1),u=new o(a);if(B(n)){let i=typeof t=="bigint"?t:BigInt(Math.round(Number(t)));u.fill(i)}else n==="bool"?u.fill(t?1:0):u.fill(Number(t));let s=x.fromData(u,r,n);return new v(s)}function cc(r,t=X){return Fs(r,r,0,t)}function wt(r,t){return r instanceof v?!t||r.dtype===t?r:r.astype(t):ar(r,t)}function lc(r){return r.copy()}function fc(r,t){return Nr(Array.from(r.shape),t??r.dtype)}function mc(r,t){return Is(Array.from(r.shape),t??r.dtype)}function yc(r,t){return Ms(Array.from(r.shape),t??r.dtype)}function pc(r,t,e){return Bs(Array.from(r.shape),t,e??r.dtype)}function dc(r,t){return wt(r,t)}function gc(r,t){let e=wt(r,t);return e.flags.C_CONTIGUOUS?e:e.copy()}function Ac(r,t){return wt(r,t).copy()}function vs(r,t=0){if(r.ndim===1){let e=r.size,n=e+Math.abs(t),o=Nr([n,n],r.dtype);for(let a=0;a<e;a++){let u=t>=0?a:a-t,s=t>=0?a+t:a;o.set([u,s],r.get([a]))}return o}else if(r.ndim===2){let[e,n]=r.shape,o,a,u;if(t>=0?(o=0,a=t,u=Math.min(e,n-t)):(o=-t,a=0,u=Math.min(e+t,n)),u<=0)return Nr([0],r.dtype);let s=P(r.dtype),i=new s(u);for(let l=0;l<u;l++){let m=r.get([o+l,a+l]);B(r.dtype)?i[l]=typeof m=="bigint"?m:BigInt(m):i[l]=m}let c=x.fromData(i,[u],r.dtype);return new v(c)}else throw new Error("Input must be 1-D or 2-D")}function bc(r,t=0){let e=r.flatten();return vs(e,t)}function hc(r,t,e=X){let n=t.reduce((c,l)=>c*l,1),o=P(e);if(!o)throw new Error(`Cannot create array with dtype ${e}`);let a=new o(n),u=t.length,s=new Array(u).fill(0);for(let c=0;c<n;c++){let l=r(...s);B(e)?a[c]=typeof l=="bigint"?l:BigInt(Number(l)):e==="bool"?a[c]=l?1:0:a[c]=Number(l);for(let m=u-1;m>=0&&(s[m]++,!(s[m]<t[m]));m--)s[m]=0}let i=x.fromData(a,t,e);return new v(i)}function Sc(...r){let t=[],e="xy";for(let s of r)s instanceof v?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,u=[];for(let s=0;s<t.length;s++){let i=t[s],c=i.size,l=new Array(a).fill(1);l[s]=c;let m=i.reshape(...l),d=St(m.storage,o),p=v._fromStorage(d.copy());u.push(p)}return e==="xy"&&u.length>=2&&([u[0],u[1]]=[u[1],u[0]]),u}function Dc(r,t,e=0,n=X){let o=t??r,a=Nr([r,o],n);for(let u=0;u<r;u++)for(let s=0;s<=u+e&&s<o;s++)s>=0&&a.set([u,s],1);return a}function xc(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],u=n.slice(0,-2).reduce((s,i)=>s*i,1);for(let s=0;s<u;s++)for(let i=0;i<o;i++)for(let c=0;c<a;c++)if(c>i+t){let l=[],m=s;for(let d=n.length-3;d>=0;d--)l.unshift(m%n[d]),m=Math.floor(m/n[d]);l.push(i,c),e.set(l,0)}return e}function Nc(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],u=n.slice(0,-2).reduce((s,i)=>s*i,1);for(let s=0;s<u;s++)for(let i=0;i<o;i++)for(let c=0;c<a;c++)if(c<i+t){let l=[],m=s;for(let d=n.length-3;d>=0;d--)l.unshift(m%n[d]),m=Math.floor(m/n[d]);l.push(i,c),e.set(l,0)}return e}function wc(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=Nr([n,o],r.dtype);for(let u=0;u<n;u++){let s=r.get([u]);for(let i=0;i<o;i++){let c=e?i:o-1-i;a.set([u,i],Math.pow(s,c))}}return a}function Ic(r,t=X,e=-1,n=0){let o,a=n;r instanceof ArrayBuffer?o=r:(o=r.buffer,a+=r.byteOffset);let u=Mc(t),s=o.byteLength-a,i=Math.floor(s/u),c=e<0?i:Math.min(e,i);if(c<=0)return ar([],t);let l=P(t);if(!l)throw new Error(`Unsupported dtype: ${t}`);let m=new l(o,a,c),d=x.fromData(m,[c],t);return new v(d)}function zc(r,t=X,e=-1){let n=[],o=0;for(let a of r){if(e>=0&&o>=e)break;n.push(a),o++}return ar(n,t)}function _c(r,t=X,e=-1){let n=[],o=0;for(let a of r){if(e>=0&&o>=e)break;n.push(a),o++}return ar(n,t)}function Fc(r,t=X,e=-1,n=""){let o;n===""?o=r.trim().split(/\s+/):o=r.split(n);let a=[],u=0;for(let s of o){if(e>=0&&u>=e)break;let i=s.trim();i!==""&&(B(t)?a.push(BigInt(i)):a.push(parseFloat(i)),u++)}return ar(a,t)}function Mc(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 Bc(r){return r.sqrt()}function Es(r,t){return r.power(t)}function vc(r){return r.exp()}function Ec(r){return r.exp2()}function Tc(r){return r.expm1()}function Oc(r){return r.log()}function Cc(r){return r.log2()}function Uc(r){return r.log10()}function $c(r){return r.log1p()}function Rc(r,t){return r.logaddexp(t)}function kc(r,t){return r.logaddexp2(t)}function Ts(r){return r.absolute()}function qc(r){return r.negative()}function Vc(r){return r.sign()}function jc(r,t){return r.mod(t)}function Os(r,t){return r.divide(t)}function Pc(r,t){return r.floor_divide(t)}function Lc(r){return r.positive()}function Zc(r){return r.reciprocal()}function Gc(r,t){return r.dot(t)}function Wc(r){return r.trace()}function Yc(r,t=0,e=0,n=1){let o=lo(r.storage,t,e,n);return v._fromStorage(o)}function Hc(r,t){let e=mo(r.storage,t.storage);return v._fromStorage(e)}function Jc(r,t){return r.transpose(t)}function Xc(r,t){return r.inner(t)}function Qc(r,t){return r.outer(t)}function Kc(r,t,e=2){return r.tensordot(t,e)}function rl(r){return r.sin()}function tl(r){return r.cos()}function el(r){return r.tan()}function Cs(r){return r.arcsin()}function Us(r){return r.arccos()}function $s(r){return r.arctan()}function Rs(r,t){return r.arctan2(t)}function nl(r,t){return r.hypot(t)}function ol(r){return r.degrees()}function al(r){return r.radians()}function sl(r){return r.radians()}function il(r){return r.degrees()}function ul(r){return r.sinh()}function cl(r){return r.cosh()}function ll(r){return r.tanh()}function ks(r){return r.arcsinh()}function qs(r){return r.arccosh()}function Vs(r){return r.arctanh()}function fl(r,t,e){return r.swapaxes(t,e)}function ml(r,t,e){return r.moveaxis(t,e)}function jr(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=Mr(e,t);return v._fromStorage(n)}function yl(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=kn(e,t);return v._fromStorage(n)}function js(r){if(r.length===0)throw new Error("need at least one array to stack");let t=r.map(n=>n.storage),e=qn(t);return v._fromStorage(e)}function pl(r){if(r.length===0)throw new Error("need at least one array to stack");let t=r.map(n=>n.storage),e=ne(t);return v._fromStorage(e)}function dl(r){if(r.length===0)throw new Error("need at least one array to stack");let t=r.map(n=>n.storage),e=Vn(t);return v._fromStorage(e)}function gl(r,t,e=0){return jn(r.storage,t,e).map(o=>v._fromStorage(o,r.base??r))}function Al(r,t,e=0){return Kr(r.storage,t,e).map(o=>v._fromStorage(o,r.base??r))}function bl(r,t){return Ln(r.storage,t).map(n=>v._fromStorage(n,r.base??r))}function hl(r,t){return Zn(r.storage,t).map(n=>v._fromStorage(n,r.base??r))}function Sl(r,t){let e=Gn(r.storage,t);return v._fromStorage(e)}function Dl(r,t,e){return r.repeat(t,e)}function xl(r){return r.ravel()}function Nl(r,t){return r.reshape(...t)}function wl(r,t){return r.squeeze(t)}function Il(r,t){return r.expand_dims(t)}function Ce(r,t){let e=Yn(r.storage,t);return v._fromStorage(e)}function zl(r){if(r.ndim<2)throw new Error("Input must be at least 2-D");return Ce(r,1)}function _l(r){if(r.ndim<2)throw new Error("Input must be at least 2-D");return Ce(r,0)}function Fl(r,t=1,e=[0,1]){let n=Hn(r.storage,t,e);return v._fromStorage(n)}function Ml(r,t,e){let n=Jn(r.storage,t,e);return v._fromStorage(n)}function Bl(r,t,e=0){let n=Xn(r.storage,t,e);return v._fromStorage(n,r.base??r)}function vl(...r){let t=r.map(o=>o.storage),n=to(t).map((o,a)=>o===t[a]?r[a]:v._fromStorage(o));return n.length===1?n[0]:n}function El(...r){let t=r.map(o=>o.storage),n=eo(t).map((o,a)=>o===t[a]?r[a]:v._fromStorage(o));return n.length===1?n[0]:n}function Tl(...r){let t=r.map(o=>o.storage),n=no(t).map((o,a)=>o===t[a]?r[a]:v._fromStorage(o));return n.length===1?n[0]:n}function Ol(r,t){return Qn(r.storage,t).map(n=>v._fromStorage(n,r.base??r))}function Cl(r){if(r.length===0)throw new Error("need at least one array to stack");let t=r.map(n=>n.storage),e=Kn(t);return v._fromStorage(e)}function Ul(r){return js(r)}function $l(r,t){let e=ro(r.storage,t);return v._fromStorage(e)}function Rl(r,t,e){let n=t instanceof v?t:ar(t,r.dtype);if(e===void 0){let o=r.flatten(),a=n.flatten();return jr([o,a])}return jr([r,n],e)}function kl(r,t,e){let n=r.dtype;if(e===void 0){let p=r.flatten(),y=(Array.isArray(t)?t:[t]).map(S=>S<0?p.size+S:S),g=[];for(let S=0;S<p.size;S++)y.includes(S)||g.push(S);let h=P(n),b=new h(g.length);for(let S=0;S<g.length;S++){let D=p.get([g[S]]);B(n)?b[S]=typeof D=="bigint"?D:BigInt(D):b[S]=D}let A=x.fromData(b,[g.length],n);return new v(A)}let o=r.shape,a=o.length,u=e<0?a+e:e;if(u<0||u>=a)throw new Error(`axis ${e} is out of bounds for array of dimension ${a}`);let s=o[u],i=Array.isArray(t)?t:[t],c=new Set(i.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[u]=0,Nr(p,n)}let d=[];for(let[p,f]of l){let y=o.map(()=>":");y[u]=`${p}:${f}`,d.push(r.slice(...y))}return jr(d,u)}function ql(r,t,e,n){let o=e instanceof v?e:ar(e,r.dtype);if(n===void 0){let m=r.flatten(),d=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 f=p>0?m.slice(`0:${p}`):null,y=p<m.size?m.slice(`${p}:`):null,g=[];return f&&g.push(f),g.push(d),y&&g.push(y),jr(g)}let a=r.shape,u=a.length,s=n<0?u+n:n;if(s<0||s>=u)throw new Error(`axis ${n} is out of bounds for array of dimension ${u}`);let i=a[s],c=t<0?i+t:t;if(c<0||c>i)throw new Error(`index ${t} is out of bounds for axis ${n} with size ${i}`);let l=[];if(c>0){let m=a.map(()=>":");m[s]=`0:${c}`,l.push(r.slice(...m))}if(l.push(o),c<i){let m=a.map(()=>":");m[s]=`${c}:`,l.push(r.slice(...m))}return jr(l,s)}function Vl(r,t,e="constant",n=0){let o=r.shape,a=o.length,u=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 i=o.map((y,g)=>y+s[g][0]+s[g][1]),c=i.reduce((y,g)=>y*g,1),l=P(u),m=new l(c),d=B(u);e==="constant"&&(d?m.fill(BigInt(n)):m.fill(n));let p=new Array(a).fill(0);for(let y=0;y<c;y++){let g=!0,h=[];for(let A=0;A<a;A++){let[S]=s[A],D=p[A]-S;if(D<0||D>=o[A]){g=!1;break}h.push(D)}let b;if(g)b=r.get(h);else if(e==="constant"){for(let A=a-1;A>=0&&(p[A]++,!(p[A]<i[A]));A--)p[A]=0;continue}else{let A=[];for(let S=0;S<a;S++){let[D]=s[S],w=p[S]-D,N=o[S];w<0?e==="edge"?w=0:e==="reflect"?(w=-w,w>=N&&(w=N-1)):e==="symmetric"?(w=-w-1,w>=N&&(w=N-1),w<0&&(w=0)):e==="wrap"&&(w=(w%N+N)%N):w>=N&&(e==="edge"?w=N-1:e==="reflect"?(w=2*N-w-2,w<0&&(w=0)):e==="symmetric"?(w=2*N-w-1,w<0&&(w=0)):e==="wrap"&&(w=w%N)),A.push(Math.max(0,Math.min(N-1,w)))}b=r.get(A)}d?m[y]=typeof b=="bigint"?b:BigInt(Number(b)):m[y]=Number(b);for(let A=a-1;A>=0&&(p[A]++,!(p[A]<i[A]));A--)p[A]=0}let f=x.fromData(m,i,u);return new v(f)}function jl(r,t){let e=St(r.storage,t);return v._fromStorage(e,r.base??r)}function Pl(...r){let t=r.map(n=>n.storage);return ra(t).map((n,o)=>v._fromStorage(n,r[o].base??r[o]))}function Ll(...r){return Rt(...r)}function Zl(r,t,e){return r.take(t,e)}function Gl(r,t,e){r.put(t,e)}function Wl(r,t,e=0){return r.iindex(t,e)}function Yl(r,t,e){return r.bindex(t,e)}function Hl(r,t,e){if(e!==void 0)throw new Error("copyto with where parameter is not yet implemented");let n=r.storage,o=r.shape,a=r.size,u=r.dtype;if(typeof t=="number"||typeof t=="bigint"){r.fill(t);return}let s=t.storage,i=t.shape,c=yr([i,o]);if(!c)throw new Error(`could not broadcast input array from shape (${i.join(",")}) into shape (${o.join(",")})`);if(c.length!==o.length||!c.every((m,d)=>m===o[d]))throw new Error(`could not broadcast input array from shape (${i.join(",")}) into shape (${o.join(",")})`);let l=St(s,o);if(B(u))for(let m=0;m<a;m++){let d=l.iget(m),p=typeof d=="bigint"?d:BigInt(Math.round(Number(d)));n.iset(m,p)}else if(u==="bool")for(let m=0;m<a;m++){let d=l.iget(m);n.iset(m,d?1:0)}else for(let m=0;m<a;m++){let d=l.iget(m);n.iset(m,Number(d))}}function Jl(r,t){let e=t.map(o=>o.storage),n=na(r.storage,e);return v._fromStorage(n)}function Xl(r,t,e=!1){return oa(r.storage,t.storage,e)}function Ql(r,t){return Cn(r.storage,t.storage)}function Ps(r,t){return v._fromStorage(Yt(r.storage,t))}function Ls(r,t){return v._fromStorage(Ht(r.storage,t))}function Zs(r,t,e=!1){return r.max(t,e)}function Gs(r,t,e=!1){return r.min(t,e)}function Kl(r,t,e=!1){let n=Jt(r.storage,t,e);return typeof n=="number"||n instanceof O?n:v._fromStorage(n)}function rf(r,t,e=!1){let n=Xt(r.storage,t,e);return typeof n=="number"?n:v._fromStorage(n)}function tf(r,t,e,n=!1){let o=Qt(r.storage,t,e,n);return typeof o=="number"?o:v._fromStorage(o)}function ef(r,t,e,n=!1){let o=$r(r.storage,t,e,n);return typeof o=="number"?o:v._fromStorage(o)}function nf(r,t,e,n=!1){let o=e?e.storage:void 0,a=Gr(r.storage,t,o,n);return typeof a=="number"||a instanceof O?a:v._fromStorage(a)}function of(r,t,e=!1){let n=pt(r.storage,t,e);return typeof n=="number"||n instanceof O?n:v._fromStorage(n)}function af(r,t,e=!1){let n=dt(r.storage,t,e);return typeof n=="number"||n instanceof O?n:v._fromStorage(n)}function sf(r,t,e=!1){let n=gt(r.storage,t,e);return typeof n=="number"||n instanceof O?n:v._fromStorage(n)}function uf(r,t,e=0,n=!1){let o=Ur(r.storage,t,e,n);return typeof o=="number"?o:v._fromStorage(o)}function cf(r,t,e=0,n=!1){let o=Kt(r.storage,t,e,n);return typeof o=="number"?o:v._fromStorage(o)}function lf(r,t,e=!1){let n=Wr(r.storage,t,e);return typeof n=="number"||n instanceof O?n:v._fromStorage(n)}function ff(r,t,e=!1){let n=Yr(r.storage,t,e);return typeof n=="number"||n instanceof O?n:v._fromStorage(n)}function mf(r,t){let e=Hr(r.storage,t);return typeof e=="number"?e:v._fromStorage(e)}function yf(r,t){let e=Jr(r.storage,t);return typeof e=="number"?e:v._fromStorage(e)}function pf(r,t){return v._fromStorage(re(r.storage,t))}function df(r,t){return v._fromStorage(te(r.storage,t))}function gf(r,t,e=!1){let n=At(r.storage,t,e);return typeof n=="number"?n:v._fromStorage(n)}function Af(r){return r.cbrt()}function bf(r){return r.fabs()}function hf(r,t){return r.divmod(t)}function Sf(r){return r.square()}function Df(r,t){return r.remainder(t)}function xf(r,t){return r.heaviside(t)}function Nf(r,t){let e=typeof t=="number"?t:t.storage;return v._fromStorage(Sn(r.storage,e))}function wf(r,t){let e=typeof t=="number"?t:t.storage;return v._fromStorage(Dn(r.storage,e))}function If(r){let[t,e]=xn(r.storage);return[v._fromStorage(t),v._fromStorage(e)]}function zf(r,t){let e=typeof t=="number"?t:t.storage;return v._fromStorage(Nn(r.storage,e))}function _f(r,t){let e=typeof t=="number"?t:t.storage;return v._fromStorage(wn(r.storage,e))}function Ff(r,t){let e=typeof t=="number"?t:t.storage;return v._fromStorage(In(r.storage,e))}function Mf(r){let[t,e]=zn(r.storage);return[v._fromStorage(t),v._fromStorage(e)]}function Bf(r,t){return r.bitwise_and(t)}function vf(r,t){return r.bitwise_or(t)}function Ef(r,t){return r.bitwise_xor(t)}function Tf(r){return r.bitwise_not()}function Of(r){return r.invert()}function Cf(r,t){return r.left_shift(t)}function Uf(r,t){return r.right_shift(t)}function $f(r,t=-1,e="big"){let n=_a(r.storage,t,e);return v._fromStorage(n)}function Rf(r,t=-1,e=-1,n="big"){let o=Fa(r.storage,t,e,n);return v._fromStorage(o)}function kf(r,t){return r.logical_and(t)}function qf(r,t){return r.logical_or(t)}function Vf(r){return r.logical_not()}function jf(r,t){return r.logical_xor(t)}function Pf(r){return r.isfinite()}function Lf(r){return r.isinf()}function Zf(r){return r.isnan()}function Gf(r){return r.isnat()}function Wf(r,t){return r.copysign(t)}function Yf(r){return r.signbit()}function Hf(r,t){return r.nextafter(t)}function Jf(r){return r.spacing()}function Xf(r){return v._fromStorage(ja(r.storage))}function Qf(r){return Pa(r.storage)}function Kf(r){return v._fromStorage(La(r.storage))}function rm(r){return Za(r.storage)}function tm(r){return v._fromStorage(rs(r.storage))}function em(r){return v._fromStorage(ts(r.storage))}function Ws(r){return v._fromStorage(es(r.storage))}var nm=Ws;function om(r,t=!1){return v._fromStorage(ns(r.storage,t))}function am(r){return v._fromStorage(Ga(r.storage))}function sm(r){return v._fromStorage(Wa(r.storage))}function im(r){return Ya(r.storage)}function um(r,t=100){return v._fromStorage(Ha(r.storage,t))}function cm(r){return Ja(r)}function lm(r){return Xa(r)}function fm(r,t){return Qa(r,t)}function mm(r,t){return Ka(r,t)}function ym(r,...t){let e=t.map(o=>o.storage),n=fo(r,...e);return typeof n=="number"||typeof n=="bigint"||n instanceof O?n:v._fromStorage(n)}var pm={cross:(r,t,e=-1,n=-1,o=-1,a)=>{let u=yo(r.storage,t.storage,e,n,o,a);return typeof u=="number"?u:v._fromStorage(u)},norm:(r,t=null,e=null,n=!1)=>{let o=po(r.storage,t,e,n);return typeof o=="number"?o:v._fromStorage(o)},vector_norm:(r,t=2,e,n=!1)=>{let o=qr(r.storage,t,e,n);return typeof o=="number"?o:v._fromStorage(o)},matrix_norm:(r,t="fro",e=!1)=>{let n=Br(r.storage,t,e);return typeof n=="number"?n:v._fromStorage(n)},qr:(r,t="reduced")=>{let e=ie(r.storage,t);return e instanceof x?v._fromStorage(e):"q"in e&&"r"in e?{q:v._fromStorage(e.q),r:v._fromStorage(e.r)}:{h:v._fromStorage(e.h),tau:v._fromStorage(e.tau)}},cholesky:(r,t=!1)=>v._fromStorage(go(r.storage,t)),svd:(r,t=!0,e=!0)=>{let n=Ao(r.storage,t,e);return"u"in n?{u:v._fromStorage(n.u),s:v._fromStorage(n.s),vt:v._fromStorage(n.vt)}:v._fromStorage(n)},det:r=>bo(r.storage),inv:r=>v._fromStorage(ht(r.storage)),solve:(r,t)=>v._fromStorage(ho(r.storage,t.storage)),lstsq:(r,t,e=null)=>{let n=So(r.storage,t.storage,e);return{x:v._fromStorage(n.x),residuals:v._fromStorage(n.residuals),rank:n.rank,s:v._fromStorage(n.s)}},cond:(r,t=2)=>Do(r.storage,t),matrix_rank:(r,t)=>xo(r.storage,t),matrix_power:(r,t)=>v._fromStorage(No(r.storage,t)),pinv:(r,t=1e-15)=>v._fromStorage(wo(r.storage,t)),eig:r=>{let t=le(r.storage);return{w:v._fromStorage(t.w),v:v._fromStorage(t.v)}},eigh:(r,t="L")=>{let e=fe(r.storage,t);return{w:v._fromStorage(e.w),v:v._fromStorage(e.v)}},eigvals:r=>v._fromStorage(Io(r.storage)),eigvalsh:(r,t="L")=>v._fromStorage(zo(r.storage,t))};function dm(r,t,e){return v._fromStorage(aa(r.storage,t.storage,e))}function gm(r,t,e,n){sa(r.storage,t.storage,e.storage,n)}function Am(r,t,e){let n=e instanceof v?e.storage:e;ia(r.storage,t.storage,n)}function bm(r,t,e){return v._fromStorage(me(r.storage,t.storage,e))}function hm(r,t,e=0){let n=r.map(a=>a.storage),o=t.map(a=>a.storage);return v._fromStorage(ua(n,o,e))}function Sm(r,t,e){ca(r.storage,t.storage,e.storage)}function Dm(r,t,e=!1){let n=typeof t=="number"?t:t.storage;ba(r.storage,n,e)}function xm(r,t=2){return ye(r,t).map(n=>v._fromStorage(n))}function Nm(r){return la(r.storage).map(e=>v._fromStorage(e))}function wm(r,t=0,e){return pe(r,t,e).map(o=>v._fromStorage(o))}function Im(r,t=0){return fa(r.storage,t).map(n=>v._fromStorage(n))}function zm(r,t=0,e){return de(r,t,e).map(o=>v._fromStorage(o))}function _m(r,t=0){return ma(r.storage,t).map(n=>v._fromStorage(n))}function Fm(r,t,e=0){return ya(r,(a,u)=>t(a,u).storage,e).map(a=>v._fromStorage(a))}function Mm(r,t="int32"){return v._fromStorage(pa(r,t))}function Bm(...r){return da(...r.map(e=>e.storage)).map(e=>v._fromStorage(e))}function vm(r,t,e="raise"){let n=r.map(o=>o.storage);return v._fromStorage(ga(n,t,e))}function Em(r,t,e="C"){let n=r instanceof v?r.storage:r;return Aa(n,t,e).map(a=>v._fromStorage(a))}function Tm(r,t=-1){return v._fromStorage(Ae(r.storage,t))}function Om(r,t=-1){return v._fromStorage(be(r.storage,t))}function Cm(r){let t=r.map(e=>e.storage);return v._fromStorage(os(t))}function Um(r,t,e=-1){return v._fromStorage(he(r.storage,t,e))}function $m(r,t,e=-1){return v._fromStorage(Se(r.storage,t,e))}function Rm(r){return v._fromStorage(as(r.storage))}function km(r){return Nt(r.storage).map(e=>v._fromStorage(e))}function qm(r){return v._fromStorage(De(r.storage))}function Vm(r){return v._fromStorage(ss(r.storage))}function jm(r,t,e){let n=is(r.storage,t?.storage,e?.storage);return Array.isArray(n)?n.map(o=>v._fromStorage(o)):v._fromStorage(n)}function Pm(r,t,e="left"){return v._fromStorage(xe(r.storage,t.storage,e))}function Lm(r,t){return v._fromStorage(us(r.storage,t.storage))}function Zm(r,t){let e=Ne(r.storage,t);return typeof e=="number"?e:v._fromStorage(e)}function Ue(r,t=0){return v._fromStorage(we(r.storage,t))}function Gm(r){return v._fromStorage(Ie(r.storage))}function Wm(r){return v._fromStorage(ze(r.storage))}function Ym(r){return v._fromStorage(_e(r.storage))}function Hm(r){return v._fromStorage(Fe(r.storage))}function Jm(r){return v._fromStorage(Me(r.storage))}function Xm(r,t=!1,e=!1,n=!1){let o=xr(r.storage,t,e,n);if(o instanceof x)return v._fromStorage(o);let a={values:v._fromStorage(o.values)};return o.indices&&(a.indices=v._fromStorage(o.indices)),o.inverse&&(a.inverse=v._fromStorage(o.inverse)),o.counts&&(a.counts=v._fromStorage(o.counts)),a}function Qm(r,t){return v._fromStorage(ls(r.storage,t.storage))}function Km(r,t){return v._fromStorage(fs(r.storage,t.storage))}function ry(r,t){return v._fromStorage(ve(r.storage,t.storage))}function ty(r,t){return v._fromStorage(ms(r.storage,t.storage))}function ey(r,t){return v._fromStorage(ys(r.storage,t.storage))}function ny(r,t){return v._fromStorage(ps(r.storage,t.storage))}function oy(r,t=1,e=-1){return v._fromStorage(Ee(r.storage,t,e))}function ay(r,t=null,e=null){return v._fromStorage(ds(r.storage,t,e))}function sy(r,t=1,e=null){let n=gs(r.storage,t,e);return Array.isArray(n)?n.map(o=>v._fromStorage(o)):v._fromStorage(n)}function iy(r,t,e=-1,n=-1,o=-1){return v._fromStorage(As(r.storage,t.storage,e,n,o))}function uy(r,t,e=0){return v._fromStorage(bs(r.storage,t?.storage,e))}function cy(r,t,e=!1){return v._fromStorage(hs(r.storage,t.storage,e))}function ly(r,t=10,e,n=!1,o){let a=Ss(r.storage,typeof t=="number"?t:t.storage,e,n,o?.storage);return[v._fromStorage(a.hist),v._fromStorage(a.bin_edges)]}function fy(r,t,e=10,n,o=!1,a){let u;typeof e=="number"?u=e:Array.isArray(e)&&e.length===2?typeof e[0]=="number"?u=e:u=[e[0].storage,e[1].storage]:u=10;let s=Ds(r.storage,t.storage,u,n,o,a?.storage);return[v._fromStorage(s.hist),v._fromStorage(s.x_edges),v._fromStorage(s.y_edges)]}function my(r,t=10,e,n=!1,o){let a=xs(r.storage,t,e,n,o?.storage);return[v._fromStorage(a.hist),a.edges.map(u=>v._fromStorage(u))]}function yy(r,t,e="full"){return v._fromStorage(Te(r.storage,t.storage,e))}function py(r,t,e="full"){return v._fromStorage(Ns(r.storage,t.storage,e))}function dy(r,t,e=!0,n=!1,o){return v._fromStorage(Oe(r.storage,t?.storage,e,n,o))}function gy(r,t,e=!0){return v._fromStorage(ws(r.storage,t?.storage,e))}var at=new Uint8Array([147,78,85,77,80,89]),$e=["float64","float32","complex128","complex64","int64","int32","int16","int8","uint64","uint32","uint16","uint8","bool"];function Re(){let r=new ArrayBuffer(2);return new DataView(r).setInt16(0,256,!0),new Int16Array(r)[0]===256}var Ay={f8:"float64",f4:"float32",c16:"complex128",c8:"complex64",i8:"int64",i4:"int32",i2:"int16",i1:"int8",u8:"uint64",u4:"uint32",u2:"uint16",u1:"uint8",b1:"bool"},It={float64:"<f8",float32:"<f4",complex128:"<c16",complex64:"<c8",int64:"<i8",int32:"<i4",int16:"<i2",int8:"|i1",uint64:"<u8",uint32:"<u4",uint16:"<u2",uint8:"|u1",bool:"|b1"},Ys={S:"byte strings",U:"Unicode strings",O:"Python objects",V:"structured arrays (void)",M:"datetime64",m:"timedelta64"};function Hs(r){if(r.startsWith("[")||r.startsWith("("))throw new wr(`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 Ys)throw new wr(`Unsupported dtype: ${Ys[n]} (${r}). Use the 'force' parameter to skip arrays with unsupported dtypes.`);let o=Ay[e];if(!o)throw new wr(`Unknown or unsupported dtype descriptor: ${r}. Supported types: ${$e.join(", ")}. Use the 'force' parameter to skip arrays with unsupported dtypes.`);let a=Re(),u=t==="<"||t==="|"||t==="="&&a,s=t===">"||t==="="&&!a,i=parseInt(e.slice(1),10),c=i>1&&(s&&a||u&&!a);return{dtype:o,needsByteSwap:c,itemsize:i}}var wr=class extends Error{constructor(t){super(t),this.name="UnsupportedDTypeError"}},ir=class extends Error{constructor(t){super(t),this.name="InvalidNpyError"}};function zt(r){let t=r instanceof ArrayBuffer?new Uint8Array(r):r,e=ke(t);return qe(t,e)}function ke(r){if(r.length<10)throw new ir("File too small to be a valid NPY file");for(let c=0;c<at.length;c++)if(r[c]!==at[c])throw new ir("Invalid NPY magic number");let t=r[6],e=r[7];if(t!==1&&t!==2&&t!==3)throw new ir(`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 ir("File truncated: header extends beyond file");let u=r.slice(o,a),s=new TextDecoder("utf-8").decode(u).trim(),i=by(s);return{version:{major:t,minor:e},header:i,dataOffset:a}}function qe(r,t){let{header:e,dataOffset:n}=t,{dtype:o,needsByteSwap:a,itemsize:u}=Hs(e.descr),s=e.shape.reduce((y,g)=>y*g,1),i=s*u,c=r.length-n;if(c<i)throw new ir(`File truncated: expected ${i} bytes of data, got ${c}`);let l=new ArrayBuffer(i);new Uint8Array(l).set(r.subarray(n,n+i));let d=hy(l,o,s,a,u),p=e.shape,f;if(e.fortran_order&&p.length>1){let y=[...p].reverse(),g=x.fromData(d,y,o);f=Sy(g,y),p=e.shape}else f=x.fromData(d,[...p],o);return new v(f)}function by(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 ir(`Failed to parse NPY header: ${r}`);let o=t[1],a=e[1]==="True",u=n[1].trim(),s;return u===""?s=[]:s=u.split(",").map(i=>i.trim()).filter(i=>i!=="").map(i=>{let c=parseInt(i,10);if(isNaN(c))throw new ir(`Invalid shape value: ${i}`);return c}),{descr:o,fortran_order:a,shape:s}}function hy(r,t,e,n,o){let a=P(t);if(!a)throw new ir(`Cannot create array for dtype: ${t}`);let u=M(t),s=u?e*2:e;if(!n)return new a(r,0,s);let i=new Uint8Array(r),c=new Uint8Array(r.byteLength);if(u){let l=o/2;for(let m=0;m<e*2;m++){let d=m*l;for(let p=0;p<l;p++)c[d+p]=i[d+l-1-p]}}else for(let l=0;l<e;l++){let m=l*o;for(let d=0;d<o;d++)c[m+d]=i[m+o-1-d]}return new a(c.buffer,0,s)}function Sy(r,t){let e=t.length,n=r.size,o=r.dtype,a=P(o);if(!a)throw new ir(`Cannot create array for dtype: ${o}`);let u=new a(n),s=[...t].reverse(),i=Js(t),c=Js(s),l=new Array(e).fill(0);for(let m=0;m<n;m++){let d=m;for(let f=0;f<e;f++){let y=i[f];l[f]=Math.floor(d/y),d=d%y}let p=0;for(let f=0;f<e;f++)p+=l[e-1-f]*c[f];B(o),u[p]=r.iget(m)}return x.fromData(u,s,o)}function Js(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 st(r){let t=r.shape,e=r.dtype,n=It[e],o=t.length===0?"()":t.length===1?`(${t[0]},)`:`(${t.join(", ")})`,a=`{'descr': '${n}', 'fortran_order': False, 'shape': ${o}, }`,u=12,i=(64-(u+a.length+1)%64)%64;a=a+" ".repeat(i)+`
2
- `;let c=new TextEncoder().encode(a),l=c.length,m=r.size,d=lt(e),p=m*d,f=u+l+p,y=new Uint8Array(f);y.set(at,0),y[6]=3,y[7]=0,y[8]=l&255,y[9]=l>>8&255,y[10]=l>>16&255,y[11]=l>>24&255,y.set(c,u);let g=u+l;return Dy(r,y.subarray(g),d),y}function Dy(r,t,e){let n=r.dtype,o=r.size,a=Re(),u=B(n),s=M(n),i=r._storage;if(i.isCContiguous&&i.offset===0&&a){let l=i.data,m=new Uint8Array(l.buffer,l.byteOffset,o*e);t.set(m)}else{let l=new DataView(t.buffer,t.byteOffset,t.byteLength);for(let m=0;m<o;m++){let d=i.iget(m),p=m*e;u?xy(l,p,d,n==="uint64"):s?Ny(l,p,d,n):wy(l,p,d,n)}}}function xy(r,t,e,n){n?r.setBigUint64(t,e,!0):r.setBigInt64(t,e,!0)}function Ny(r,t,e,n){n==="complex128"?(r.setFloat64(t,e.re,!0),r.setFloat64(t+8,e.im,!0)):(r.setFloat32(t,e.re,!0),r.setFloat32(t+4,e.im,!0))}function wy(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 Iy=(()=>{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 Ve(r){let t=4294967295;for(let e=0;e<r.length;e++)t=Iy[(t^r[e])&255]^t>>>8;return(t^4294967295)>>>0}async function Xs(r){let t=Ks(r),e=new Map;for(let n of t){let o=await zy(n);e.set(n.name,o)}return e}function Qs(r){let t=Ks(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 Ks(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),u=e.getUint16(o+10,!0),s=[],i=a;for(let c=0;c<u&&e.getUint32(i,!0)===33639248;c++){let m=e.getUint16(i+10,!0),d=e.getUint32(i+16,!0),p=e.getUint32(i+20,!0),f=e.getUint32(i+24,!0),y=e.getUint16(i+28,!0),g=e.getUint16(i+30,!0),h=e.getUint16(i+32,!0),b=e.getUint32(i+42,!0),A=t.slice(i+46,i+46+y),S=new TextDecoder("utf-8").decode(A);s.push({name:S,compressionMethod:m,crc32:d,compressedSize:p,uncompressedSize:f,localHeaderOffset:b}),i=i+46+y+g+h}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 d=e.getUint16(l+26,!0),p=e.getUint16(l+28,!0),f=l+30+d+p,y=t.slice(f,f+c.compressedSize);n.push({name:c.name,compressedData:y,compressionMethod:c.compressionMethod,crc32:c.crc32,compressedSize:c.compressedSize,uncompressedSize:c.uncompressedSize})}return n}async function zy(r){if(r.compressionMethod===0)return r.compressedData;if(r.compressionMethod===8)return await _y(r.compressedData);throw new Error(`Unsupported compression method: ${r.compressionMethod}`)}async function _y(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 u=a.reduce((c,l)=>c+l.length,0),s=new Uint8Array(u),i=0;for(let c of a)s.set(c,i),i+=c.length;return s}async function Le(r,t={}){let e=t.force??!1,n=await Xs(r);return ri(n,e)}function Ze(r,t={}){let e=t.force??!1,n=Qs(r);return ri(n,e)}function ri(r,t){let e=new Map,n=[],o=new Map;for(let[a,u]of r){if(!a.endsWith(".npy"))continue;let s=a.slice(0,-4);try{let i=zt(u);e.set(s,i)}catch(i){if(i instanceof wr&&t)n.push(s),o.set(s,i.message);else throw i}}return{arrays:e,skipped:n,errors:o}}async function ti(r,t={}){let e=await Le(r,t);return Object.fromEntries(e.arrays)}function ei(r,t={}){let e=Ze(r,t);return Object.fromEntries(e.arrays)}async function ni(r,t={}){let e=t.compress??!1,n=[];for(let[d,p]of r){let f=Ve(p),y,g;e?(y=await My(p),y.length<p.length?g=8:(y=p,g=0)):(y=p,g=0),n.push({name:d,data:p,compressedData:y,crc:f,compressionMethod:g,offset:0})}let o=0;for(let d of n){let p=new TextEncoder().encode(d.name);o+=30+p.length+d.compressedData.length}let a=0;for(let d of n){let p=new TextEncoder().encode(d.name);a+=46+p.length}let s=o+a+22,i=new Uint8Array(s),c=new DataView(i.buffer),l=0;for(let d of n)d.offset=l,l=ai(i,c,l,d);let m=l;for(let d of n)l=si(i,c,l,d);return ii(c,l,n.length,a,m),i}function oi(r){let t=[];for(let[l,m]of r){let d=Ve(m);t.push({name:l,data:m,compressedData:m,crc:d,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,u=new Uint8Array(a),s=new DataView(u.buffer),i=0;for(let l of t)l.offset=i,i=ai(u,s,i,l);let c=i;for(let l of t)i=si(u,s,i,l);return ii(s,i,t.length,n,c),u}function ai(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 si(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 ii(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 My(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 u=a.reduce((c,l)=>c+l.length,0),s=new Uint8Array(u),i=0;for(let c of a)s.set(c,i),i+=c.length;return s}async function ui(r,t={}){let e=li(r);return ni(e,{compress:t.compress??!1})}function ci(r){let t=li(r);return oi(t)}function li(r){let t=new Map;if(Array.isArray(r)){for(let n=0;n<r.length;n++){let o=r[n],a=st(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=st(o),u=n.endsWith(".npy")?n:`${n}.npy`;t.set(u,a)}return t}var gr=624,_t=397,Oy=2567483615,Ge=2147483648,We=2147483647,Ar={mt:new Uint32Array(gr),mti:gr+1};function yi(r){let t=Ar.mt;t[0]=r>>>0;for(let e=1;e<gr;e++){let n=t[e-1]^t[e-1]>>>30;t[e]=Math.imul(1812433253,n)+e>>>0}Ar.mti=gr}function fi(){let r=Ar.mt,t,e=[0,Oy];if(Ar.mti>=gr){let n;for(Ar.mti===gr+1&&yi(5489),n=0;n<gr-_t;n++)t=r[n]&Ge|r[n+1]&We,r[n]=r[n+_t]^t>>>1^e[t&1];for(;n<gr-1;n++)t=r[n]&Ge|r[n+1]&We,r[n]=r[n+(_t-gr)]^t>>>1^e[t&1];t=r[gr-1]&Ge|r[0]&We,r[gr-1]=r[_t-1]^t>>>1^e[t&1],Ar.mti=0}return t=r[Ar.mti++],t^=t>>>11,t^=t<<7&2636928640,t^=t<<15&4022730752,t^=t>>>18,t>>>0}function W(){let r=fi()>>>5,t=fi()>>>6;return(r*67108864+t)/9007199254740992}var Cy=2468251765,Uy=1492356589,$y=1135663077,Ry=2337405405,ky=3389127133,qy=1232336661,Qe=16,Ft=4;function sr(r){return r>>>0}function Ye(r,t){return r=sr(sr(r)^t.val),t.val=sr(Math.imul(t.val,Cy)),r=sr(Math.imul(r,t.val)),r=sr(r^r>>>Qe),r}function Vy(r,t){let e=sr(sr(Math.imul(ky,sr(r)))-sr(Math.imul(qy,sr(t))));return e=sr(e^e>>>Qe),e}function jy(r){let t=[0,0,0,0],e=[r>>>0],n={val:$y};for(let o=0;o<Ft;o++)o<e.length?t[o]=Ye(e[o],n):t[o]=Ye(0,n);for(let o=0;o<Ft;o++)for(let a=0;a<Ft;a++)if(o!==a){let u=Ye(t[o],n);t[a]=Vy(t[a],u)}return t}function Py(r,t){let e=[],n=Ry;for(let o=0;o<t;o++){let a=r[o%Ft],u=sr(a^n);n=sr(Math.imul(n,Uy)),u=sr(Math.imul(u,n)),u=sr(u^u>>>Qe),e.push(u)}return e}var Ly=BigInt("4865540595714422341"),Zy=BigInt("2549297995355413924"),Gy=Zy<<BigInt(64)|Ly,He=BigInt("0xffffffffffffffff"),Je=(BigInt(1)<<BigInt(128))-BigInt(1);function Wy(r){let t=r>>BigInt(64),e=r&He,n=(t^e)&He,o=Number(r>>BigInt(122));return(n>>BigInt(o)|n<<BigInt(64-o))&He}function Xe(r,t){return r*Gy+t&Je}function mi(r){let t=jy(r),e=Py(t,8),n=BigInt(e[0])|BigInt(e[1])<<BigInt(32),o=BigInt(e[2])|BigInt(e[3])<<BigInt(32),a=BigInt(e[4])|BigInt(e[5])<<BigInt(32),u=BigInt(e[6])|BigInt(e[7])<<BigInt(32),s=n<<BigInt(64)|o,i=(a<<BigInt(64)|u)<<BigInt(1);i=(i|BigInt(1))&Je;let c=BigInt(0);return c=Xe(c,i),c=c+s&Je,c=Xe(c,i),{state:c,inc:i}}function Yy(r){return r.state=Xe(r.state,r.inc),Wy(r.state)}function Hy(r){let e=Yy(r)>>BigInt(11);return Number(e)/9007199254740992}var ut=class{constructor(t){if(t!==void 0)this._pcgState=mi(t);else{let e=Math.floor(Math.random()*4294967296);this._pcgState=mi(e)}}_randomFloat(){return Hy(this._pcgState)}random(t){if(t===void 0)return this._randomFloat();let e=Array.isArray(t)?t:[t],n=e.reduce((u,s)=>u*s,1),o=x.zeros(e,"float64"),a=o.data;for(let u=0;u<n;u++)a[u]=this._randomFloat();return o}integers(t,e,n){if(e===void 0&&(e=t,t=0),n===void 0)return Math.floor(this._randomFloat()*(e-t))+t;let o=Array.isArray(n)?n:[n],a=o.reduce((c,l)=>c*l,1),u=x.zeros(o,"int64"),s=u.data,i=e-t;for(let c=0;c<a;c++)s[c]=BigInt(Math.floor(this._randomFloat()*i)+t);return u}standard_normal(t){if(t===void 0)return vr(this._randomFloat.bind(this));let e=Array.isArray(t)?t:[t],n=e.reduce((u,s)=>u*s,1),o=x.zeros(e,"float64"),a=o.data;for(let u=0;u<n;u+=2){let[s,i]=ct(this._randomFloat.bind(this));a[u]=s,u+1<n&&(a[u+1]=i)}return o}normal(t=0,e=1,n){if(n===void 0)return vr(this._randomFloat.bind(this))*e+t;let o=Array.isArray(n)?n:[n],a=o.reduce((i,c)=>i*c,1),u=x.zeros(o,"float64"),s=u.data;for(let i=0;i<a;i+=2){let[c,l]=ct(this._randomFloat.bind(this));s[i]=c*e+t,i+1<a&&(s[i+1]=l*e+t)}return u}uniform(t=0,e=1,n){if(n===void 0)return this._randomFloat()*(e-t)+t;let o=Array.isArray(n)?n:[n],a=o.reduce((c,l)=>c*l,1),u=x.zeros(o,"float64"),s=u.data,i=e-t;for(let c=0;c<a;c++)s[c]=this._randomFloat()*i+t;return u}choice(t,e,n=!0,o){return Fi(t,e,n,o,this._randomFloat.bind(this))}permutation(t){return Bi(t,this._randomFloat.bind(this))}shuffle(t){Ei(t,this._randomFloat.bind(this))}exponential(t=1,e){if(e===void 0)return-Math.log(1-this._randomFloat())*t;let n=Array.isArray(e)?e:[e],o=n.reduce((s,i)=>s*i,1),a=x.zeros(n,"float64"),u=a.data;for(let s=0;s<o;s++)u[s]=-Math.log(1-this._randomFloat())*t;return a}poisson(t=1,e){if(e===void 0)return Mt(t,this._randomFloat.bind(this));let n=Array.isArray(e)?e:[e],o=n.reduce((s,i)=>s*i,1),a=x.zeros(n,"int64"),u=a.data;for(let s=0;s<o;s++)u[s]=BigInt(Mt(t,this._randomFloat.bind(this)));return a}binomial(t,e,n){if(n===void 0)return Bt(t,e,this._randomFloat.bind(this));let o=Array.isArray(n)?n:[n],a=o.reduce((i,c)=>i*c,1),u=x.zeros(o,"int64"),s=u.data;for(let i=0;i<a;i++)s[i]=BigInt(Bt(t,e,this._randomFloat.bind(this)));return u}};function pi(r){return new ut(r)}function di(r){r==null&&(r=Math.floor(Date.now()^Math.random()*4294967296)),yi(r>>>0)}function gi(){return{mt:Array.from(Ar.mt),mti:Ar.mti}}function Ai(r){Ar.mt=new Uint32Array(r.mt),Ar.mti=r.mti}function vr(r){let t,e;do t=r(),e=r();while(t===0);return Math.sqrt(-2*Math.log(t))*Math.cos(2*Math.PI*e)}function ct(r){let t,e;do t=r(),e=r();while(t===0);let n=Math.sqrt(-2*Math.log(t)),o=2*Math.PI*e;return[n*Math.cos(o),n*Math.sin(o)]}function Mt(r,t){if(r<30){let e=Math.exp(-r),n=0,o=1;do n++,o*=t();while(o>e);return n-1}else{let e=vr(t);return Math.max(0,Math.round(r+Math.sqrt(r)*e))}}function Bt(r,t,e){if(r*t<10&&r*(1-t)<10){let n=0;for(let o=0;o<r;o++)e()<t&&n++;return n}else{let n=r*t,o=Math.sqrt(r*t*(1-t)),a=vr(e);return Math.max(0,Math.min(r,Math.round(n+o*a)))}}function bi(r){if(r===void 0)return W();let t=Array.isArray(r)?r:[r],e=t.reduce((a,u)=>a*u,1),n=x.zeros(t,"float64"),o=n.data;for(let a=0;a<e;a++)o[a]=W();return n}function hi(...r){if(r.length===0)return W();let t=r.reduce((o,a)=>o*a,1),e=x.zeros(r,"float64"),n=e.data;for(let o=0;o<t;o++)n[o]=W();return e}function Si(...r){if(r.length===0)return vr(W);let t=r.reduce((o,a)=>o*a,1),e=x.zeros(r,"float64"),n=e.data;for(let o=0;o<t;o+=2){let[a,u]=ct(W);n[o]=a,o+1<t&&(n[o+1]=u)}return e}function Di(r,t,e,n="int64"){t==null&&(t=r,r=0);let o=t-r;if(e===void 0)return Math.floor(W()*o)+r;let a=Array.isArray(e)?e:[e],u=a.reduce((c,l)=>c*l,1),s=x.zeros(a,n),i=s.data;if(B(n)){let c=i;for(let l=0;l<u;l++)c[l]=BigInt(Math.floor(W()*o)+r)}else{let c=i;for(let l=0;l<u;l++)c[l]=Math.floor(W()*o)+r}return s}function xi(r=0,t=1,e){if(e===void 0)return W()*(t-r)+r;let n=Array.isArray(e)?e:[e],o=n.reduce((i,c)=>i*c,1),a=x.zeros(n,"float64"),u=a.data,s=t-r;for(let i=0;i<o;i++)u[i]=W()*s+r;return a}function Ni(r=0,t=1,e){if(e===void 0)return vr(W)*t+r;let n=Array.isArray(e)?e:[e],o=n.reduce((s,i)=>s*i,1),a=x.zeros(n,"float64"),u=a.data;for(let s=0;s<o;s+=2){let[i,c]=ct(W);u[s]=i*t+r,s+1<o&&(u[s+1]=c*t+r)}return a}function wi(r){if(r===void 0)return vr(W);let t=Array.isArray(r)?r:[r],e=t.reduce((a,u)=>a*u,1),n=x.zeros(t,"float64"),o=n.data;for(let a=0;a<e;a+=2){let[u,s]=ct(W);o[a]=u,a+1<e&&(o[a+1]=s)}return n}function Ii(r=1,t){if(t===void 0)return-Math.log(1-W())*r;let e=Array.isArray(t)?t:[t],n=e.reduce((u,s)=>u*s,1),o=x.zeros(e,"float64"),a=o.data;for(let u=0;u<n;u++)a[u]=-Math.log(1-W())*r;return o}function zi(r=1,t){if(t===void 0)return Mt(r,W);let e=Array.isArray(t)?t:[t],n=e.reduce((u,s)=>u*s,1),o=x.zeros(e,"int64"),a=o.data;for(let u=0;u<n;u++)a[u]=BigInt(Mt(r,W));return o}function _i(r,t,e){if(e===void 0)return Bt(r,t,W);let n=Array.isArray(e)?e:[e],o=n.reduce((s,i)=>s*i,1),a=x.zeros(n,"int64"),u=a.data;for(let s=0;s<o;s++)u[s]=BigInt(Bt(r,t,W));return a}function Fi(r,t,e=!0,n,o=W){let a;if(typeof r=="number")a=Array.from({length:r},(d,p)=>p);else{let d=r.size;a=[];for(let p=0;p<d;p++)a.push(Number(r.iget(p)))}let u=a.length;if(u===0)throw new Error("cannot take a sample from an empty sequence");let s;if(n!==void 0){if(Array.isArray(n))s=n;else{let p=n.size;s=[];for(let f=0;f<p;f++)s.push(Number(n.iget(f)))}if(s.length!==u)throw new Error("p and a must have the same size");let d=s.reduce((p,f)=>p+f,0);Math.abs(d-1)>1e-10&&(s=s.map(p=>p/d))}if(t===void 0){if(s){let d=o(),p=0;for(let f=0;f<u;f++)if(p+=s[f],d<p)return a[f];return a[u-1]}return a[Math.floor(o()*u)]}let i=Array.isArray(t)?t:[t],c=i.reduce((d,p)=>d*p,1);if(!e&&c>u)throw new Error("cannot take a larger sample than population when replace=false");let l=x.zeros(i,"float64"),m=l.data;if(e)if(s){let d=new Array(u);d[0]=s[0];for(let p=1;p<u;p++)d[p]=d[p-1]+s[p];for(let p=0;p<c;p++){let f=o(),y=0;for(;y<u-1&&f>=d[y];)y++;m[p]=a[y]}}else for(let d=0;d<c;d++)m[d]=a[Math.floor(o()*u)];else{let d=[...a],p=s?[...s]:void 0;for(let f=0;f<c;f++){let y;if(p){let g=p.reduce((A,S)=>A+S,0),h=o()*g,b=0;y=0;for(let A=0;A<d.length;A++)if(b+=p[A],h<b){y=A;break}y===0&&h>=b&&(y=d.length-1)}else y=Math.floor(o()*d.length);m[f]=d[y],d.splice(y,1),p&&p.splice(y,1)}}return l}function Mi(r,t,e=!0,n){return Fi(r,t,e,n,W)}function Bi(r,t=W){let e;if(typeof r=="number"){let o=new Float64Array(r);for(let a=0;a<r;a++)o[a]=a;e=x.fromData(o,[r],"float64")}else e=r.copy();let n=e.size;for(let o=n-1;o>0;o--){let a=Math.floor(t()*(o+1)),u=e.iget(o);e.iset(o,e.iget(a)),e.iset(a,u)}return e}function vi(r){return Bi(r,W)}function Ei(r,t=W){let e=r.size;for(let n=e-1;n>0;n--){let o=Math.floor(t()*(n+1)),a=r.iget(n);r.iset(n,r.iget(o)),r.iset(o,a)}}function Ti(r){Ei(r,W)}function mr(r){return r&&typeof r=="object"&&"_data"in r&&"_shape"in r?v._fromStorage(r):r}var Kd={seed:di,random:r=>mr(bi(r)),rand:(...r)=>mr(hi(...r)),randn:(...r)=>mr(Si(...r)),randint:(r,t,e,n)=>mr(Di(r,t,e,n)),uniform:(r,t,e)=>mr(xi(r,t,e)),normal:(r,t,e)=>mr(Ni(r,t,e)),standard_normal:r=>mr(wi(r)),exponential:(r,t)=>mr(Ii(r,t)),poisson:(r,t)=>mr(zi(r,t)),binomial:(r,t,e)=>mr(_i(r,t,e)),choice:(r,t,e,n)=>mr(Mi(r,t,e,n)),permutation:r=>mr(vi(r)),shuffle:Ti,get_state:gi,set_state:Ai,default_rng:pi,Generator:ut},rg="0.11.0";export{O as Complex,It as DTYPE_TO_DESCR,ir as InvalidNpyError,v as NDArray,$e as SUPPORTED_DTYPES,wr as UnsupportedDTypeError,rg as __version__,Ts as abs,Ts as absolute,Us as acos,qs as acosh,Zs as amax,Gs as amin,om as angle,Rl as append,ac as arange,Us as arccos,qs as arccosh,Cs as arcsin,ks as arcsinh,$s as arctan,Rs as arctan2,Vs as arctanh,$m as argpartition,Om as argsort,qm as argwhere,Ue as around,ar as array,Xl as array_equal,Ql as array_equiv,Al as array_split,dc as asanyarray,wt as asarray,gc as ascontiguousarray,Ac as asfortranarray,Cs as asin,ks as asinh,$s as atan,Rs as atan2,Vs as atanh,vl as atleast_1d,El as atleast_2d,Tl as atleast_3d,nf as average,uy as bincount,Yl as bindex,Bf as bitwise_and,Tf as bitwise_not,vf as bitwise_or,Ef as bitwise_xor,Pl as broadcast_arrays,Ll as broadcast_shapes,jl as broadcast_to,Af as cbrt,Gm as ceil,Jl as choose,Cl as column_stack,bm as compress,jr as concatenate,Ws as conj,nm as conjugate,py as convolve,lc as copy,Wf as copysign,Hl as copyto,gy as corrcoef,yy as correlate,tl as cos,cl as cosh,Zm as count_nonzero,dy as cov,iy as cross,Ls as cumprod,Ps as cumsum,Ls as cumulative_prod,Ps as cumulative_sum,sl as deg2rad,ol as degrees,kl as delete,vs as diag,xm as diag_indices,Nm as diag_indices_from,bc as diagflat,Yc as diagonal,oy as diff,cy as digitize,Os as divide,hf as divmod,Gc as dot,Ol as dsplit,dl as dstack,ay as ediff1d,ym as einsum,Ms as empty,yc as empty_like,vc as exp,Ec as exp2,Il as expand_dims,Tc as expm1,Lm as extract,Fs as eye,bf as fabs,Dm as fill_diagonal,Wm as fix,Vm as flatnonzero,Ce as flip,zl as fliplr,_l as flipud,Nf as float_power,Ym as floor,Pc as floor_divide,wf as fmod,If as frexp,Ic as frombuffer,zc as fromfile,hc as fromfunction,_c as fromiter,Fc as fromstring,Bs as full,pc as full_like,zf as gcd,uc as geomspace,sy as gradient,xf as heaviside,ly as histogram,fy as histogram2d,my as histogramdd,hl as hsplit,pl as hstack,nl as hypot,cc as identity,Wl as iindex,em as imag,Qm as in1d,Mm as indices,Xc as inner,ql as insert,Km as intersect1d,Of as invert,Xf as iscomplex,Qf as iscomplexobj,fm as isdtype,Pf as isfinite,im as isfortran,ry as isin,Lf as isinf,Zf as isnan,Gf as isnat,am as isneginf,sm as isposinf,Kf as isreal,rm as isrealobj,cm as isscalar,lm as iterable,Bm as ix_,Hc as kron,_f as lcm,Ff as ldexp,Cf as left_shift,Cm as lexsort,pm as linalg,sc as linspace,ti as loadNpz,ei as loadNpzSync,Oc as log,Uc as log10,$c as log1p,Cc as log2,Rc as logaddexp,kc as logaddexp2,kf as logical_and,Vf as logical_not,qf as logical_or,jf as logical_xor,ic as logspace,Fm as mask_indices,Zs as max,rf as median,Sc as meshgrid,Gs as min,jc as mod,Mf as modf,ml as moveaxis,yf as nanargmax,mf as nanargmin,df as nancumprod,pf as nancumsum,ff as nanmax,sf as nanmean,gf as nanmedian,lf as nanmin,af as nanprod,cf as nanstd,of as nansum,uf as nanvar,qc as negative,Hf as nextafter,km as nonzero,Is as ones,mc as ones_like,Qc as outer,$f as packbits,Vl as pad,zt as parseNpy,qe as parseNpyData,ke as parseNpyHeader,Le as parseNpz,Ze as parseNpzSync,Um as partition,tf as percentile,Sm as place,Lc as positive,Es as pow,Es as power,mm as promote_types,Kl as ptp,Gl as put,gm as put_along_axis,Am as putmask,ef as quantile,il as rad2deg,al as radians,Kd as random,xl as ravel,vm as ravel_multi_index,tm as real,um as real_if_close,Zc as reciprocal,Df as remainder,Dl as repeat,Nl as reshape,$l as resize,Uf as right_shift,Hm as rint,Ml as roll,Bl as rollaxis,Fl as rot90,Ue as round,Ue as round_,Ul as row_stack,Pm as searchsorted,hm as select,st as serializeNpy,ui as serializeNpz,ci as serializeNpzSync,ty as setdiff1d,ey as setxor1d,Vc as sign,Yf as signbit,rl as sin,ul as sinh,Tm as sort,Rm as sort_complex,Jf as spacing,gl as split,Bc as sqrt,Sf as square,wl as squeeze,yl as stack,fl as swapaxes,Zl as take,dm as take_along_axis,el as tan,ll as tanh,Kc as tensordot,Sl as tile,Wc as trace,Jc as transpose,Dc as tri,xc as tril,wm as tril_indices,Im as tril_indices_from,Nc as triu,zm as triu_indices,_m as triu_indices_from,Os as true_divide,Jm as trunc,ny as union1d,Xm as unique,Rf as unpackbits,Em as unravel_index,wc as vander,bl as vsplit,js as vstack,jm as where,Nr as zeros,fc as zeros_like};
1
+ var E=class r{constructor(t,e=0){this.re=t,this.im=e}abs(){return Math.sqrt(this.re*this.re+this.im*this.im)}angle(){return Math.atan2(this.im,this.re)}conj(){return new r(this.re,-this.im)}add(t){return typeof t=="number"?new r(this.re+t,this.im):new r(this.re+t.re,this.im+t.im)}sub(t){return typeof t=="number"?new r(this.re-t,this.im):new r(this.re-t.re,this.im-t.im)}mul(t){return typeof t=="number"?new r(this.re*t,this.im*t):new r(this.re*t.re-this.im*t.im,this.re*t.im+this.im*t.re)}div(t){if(typeof t=="number")return new r(this.re/t,this.im/t);let e=t.re*t.re+t.im*t.im;return new r((this.re*t.re+this.im*t.im)/e,(this.im*t.re-this.re*t.im)/e)}neg(){return new r(-this.re,-this.im)}equals(t){return this.re===t.re&&this.im===t.im}toString(){return this.im===0?`(${this.re}+0j)`:this.im<0?`(${this.re}${this.im}j)`:`(${this.re}+${this.im}j)`}static from(t){if(t instanceof r)return t;if(typeof t=="number")return new r(t,0);if(Array.isArray(t))return new r(t[0]??0,t[1]??0);if(typeof t=="object"&&t!==null&&"re"in t)return new r(t.re??0,t.im??0);throw new Error(`Cannot convert ${t} to Complex`)}static isComplex(t){return t instanceof r||typeof t=="object"&&t!==null&&"re"in t&&"im"in t}};function hn(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 Sn(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 Q="float64";function P(r){switch(r){case"float64":return Float64Array;case"float32":return Float32Array;case"complex128":return Float64Array;case"complex64":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 Rr(r){switch(r){case"complex128":return 16;case"float64":case"int64":case"uint64":case"complex64":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 Nn(r){return r==="int64"||r==="int32"||r==="int16"||r==="int8"||r==="uint64"||r==="uint32"||r==="uint16"||r==="uint8"}function Dn(r){return r==="float64"||r==="float32"}function B(r){return r==="int64"||r==="uint64"}function v(r){return r==="complex64"||r==="complex128"}function U(r,t,e){if(v(r)){let n=e?` ${e}`:"";throw new TypeError(`ufunc '${t}' not supported for complex dtype '${r}'.${n}`)}}function Xr(r){if(r==="complex128")return"float64";if(r==="complex64")return"float32";throw new Error(`${r} is not a complex dtype`)}function xn(r){return typeof r=="object"&&r!==null&&"re"in r&&"im"in r}function W(r,t){if(r===t)return r;if(r==="bool")return t;if(t==="bool")return r;if(v(r)||v(t)){if(v(r)&&v(t))return r==="complex128"||t==="complex128"?"complex128":"complex64";let c=v(r)?r:t,l=v(r)?t:r;return c==="complex128"||l==="float64"||l==="int64"||l==="uint64"||l==="int32"||l==="uint32"?"complex128":"complex64"}if(Dn(r)||Dn(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 N=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,a=v(this._dtype),i;if(o===0)i=this._offset;else{let s=t;i=this._offset;for(let u=0;u<o;u++){let c=1;for(let m=u+1;m<o;m++)c*=e[m];let l=Math.floor(s/c);s=s%c,i+=l*n[u]}}if(a){let s=i*2,u=this._data[s],c=this._data[s+1];return new E(u,c)}return this._data[i]}iset(t,e){let n=this._shape,o=this._strides,a=n.length,i=v(this._dtype),s;if(a===0)s=this._offset;else{let u=t;s=this._offset;for(let c=0;c<a;c++){let l=1;for(let d=c+1;d<a;d++)l*=n[d];let m=Math.floor(u/l);u=u%l,s+=m*o[c]}}if(i){let u=s*2,c,l;e instanceof E?(c=e.re,l=e.im):typeof e=="object"&&e!==null&&"re"in e?(c=e.re,l=e.im??0):(c=Number(e),l=0),this._data[u]=c,this._data[u+1]=l}else 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];if(v(this._dtype)){let o=n*2,a=this._data[o],i=this._data[o+1];return new E(a,i)}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];if(v(this._dtype)){let a=o*2,i,s;e instanceof E?(i=e.re,s=e.im):typeof e=="object"&&e!==null&&"re"in e?(i=e.re,s=e.im??0):(i=Number(e),s=0),this._data[a]=i,this._data[a+1]=s}else this._data[o]=e}copy(){let t=Array.from(this._shape),e=this._dtype,n=this.size,o=v(e),a=P(e);if(!a)throw new Error(`Cannot copy array with dtype ${e}`);let i=o?n*2:n,s=new a(i);if(this.isCContiguous&&this._offset===0)if(B(e)){let u=this._data,c=s;for(let l=0;l<i;l++)c[l]=u[l]}else s.set(this._data.subarray(0,i));else if(B(e)){let u=s;for(let c=0;c<n;c++)u[c]=this.iget(c)}else if(o){let u=s;for(let c=0;c<n;c++){let l=this.iget(c);u[c*2]=l.re,u[c*2+1]=l.im}}else for(let u=0;u<n;u++)s[u]=this.iget(u);return new r(s,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=Q){let n=t.reduce((u,c)=>u*c,1),o=v(e),a=P(e);if(!a)throw new Error(`Cannot create array with dtype ${e}`);let i=o?n*2:n,s=new a(i);return new r(s,t,r._computeStrides(t),0,e)}static ones(t,e=Q){let n=t.reduce((u,c)=>u*c,1),o=v(e),a=P(e);if(!a)throw new Error(`Cannot create array with dtype ${e}`);let i=o?n*2:n,s=new a(i);if(B(e))s.fill(BigInt(1));else if(o){let u=s;for(let c=0;c<n;c++)u[c*2]=1,u[c*2+1]=0}else s.fill(1);return new r(s,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 ar(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){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 Bu(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 pr(r,t){let e=Bu(r.shape,r.strides,t);return N.fromData(r.data,Array.from(t),r.dtype,e,r.offset)}function Zt(...r){let t=Ar(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 Mr(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 Eu(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 St(r,t){let e=Eu(r.shape,r.strides,t);return N.fromData(r.data,Array.from(t),r.dtype,e,r.offset)}function H(r,t,e,n){let o=W(r.dtype,t.dtype),a=r.shape,i=t.shape;if(a.length===i.length&&a.every((f,p)=>f===i[p])&&r.isCContiguous&&t.isCContiguous&&!B(r.dtype)&&!B(t.dtype)&&!B(o)){let f=r.size,p=N.zeros(Array.from(a),o),g=p.data,h=r.data,b=t.data;for(let A=0;A<f;A++)g[A]=e(h[A],b[A]);return p}let u=Mr(r.shape,t.shape),c=St(r,u),l=St(t,u),m=N.zeros(u,o),d=m.data,y=m.size;if(B(o)){let f=d;for(let p=0;p<y;p++){let g=c.iget(p),h=l.iget(p),b=g instanceof E?g.re:g,A=h instanceof E?h.re:h,S=typeof b=="bigint"?b:BigInt(Math.round(b)),D=typeof A=="bigint"?A:BigInt(Math.round(A));n==="add"?f[p]=S+D:n==="subtract"?f[p]=S-D:n==="multiply"?f[p]=S*D:n==="divide"?f[p]=S/D:f[p]=BigInt(Math.round(e(Number(S),Number(D))))}}else{let f=B(r.dtype)||B(t.dtype);for(let p=0;p<y;p++){let g=c.iget(p),h=l.iget(p),b=Number(g),A=Number(h);d[p]=e(b,A)}}return m}function yr(r,t,e){let n=Mr(r.shape,t.shape),o=St(r,n),a=St(t,n),i=n.reduce((c,l)=>c*l,1),s=new Uint8Array(i),u=B(r.dtype)||B(t.dtype);for(let c=0;c<i;c++){let l=o.iget(c),m=a.iget(c),d=Number(l),y=Number(m);s[c]=e(d,y)?1:0}return N.fromData(s,n,"bool")}function X(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=N.zeros(o,s),c=u.data,l=r.data;if(B(n))if(B(s)){let m=c;for(let d=0;d<a;d++){let y=Number(l[d]);m[d]=BigInt(Math.round(t(y)))}}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 Yt(r,t){return r.isCContiguous&&t.isCContiguous&&r.shape.length===t.shape.length&&r.shape.every((e,n)=>e===t.shape[n])}function lr(r,t){return[r[t*2],r[t*2+1]]}function wr(r,t,e,n){r[t*2]=e,r[t*2+1]=n}function wn(r,t){return typeof t=="number"?Uu(r,t):Yt(r,t)?Tu(r,t):H(r,t,(e,n)=>e+n,"add")}function Tu(r,t){let e=W(r.dtype,t.dtype),n=N.zeros(Array.from(r.shape),e),o=r.size,a=r.data,i=t.data,s=n.data;if(v(e)){let u=s,c=v(r.dtype),l=v(t.dtype);for(let m=0;m<o;m++){let[d,y]=c?lr(a,m):[Number(a[m]),0],[f,p]=l?lr(i,m):[Number(i[m]),0];wr(u,m,d+f,y+p)}return n}if(B(e)){let u=s;if(!B(r.dtype)||!B(t.dtype))for(let l=0;l<o;l++){let m=typeof a[l]=="bigint"?a[l]:BigInt(Math.round(Number(a[l]))),d=typeof i[l]=="bigint"?i[l]:BigInt(Math.round(Number(i[l])));u[l]=m+d}else{let l=a,m=i;for(let d=0;d<o;d++)u[d]=l[d]+m[d]}}else if(B(r.dtype)||B(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 In(r,t){return typeof t=="number"?$u(r,t):Yt(r,t)?Ou(r,t):H(r,t,(e,n)=>e-n,"subtract")}function Ou(r,t){let e=W(r.dtype,t.dtype),n=N.zeros(Array.from(r.shape),e),o=r.size,a=r.data,i=t.data,s=n.data;if(v(e)){let u=s,c=v(r.dtype),l=v(t.dtype);for(let m=0;m<o;m++){let[d,y]=c?lr(a,m):[Number(a[m]),0],[f,p]=l?lr(i,m):[Number(i[m]),0];wr(u,m,d-f,y-p)}return n}if(B(e)){let u=s;if(!B(r.dtype)||!B(t.dtype))for(let l=0;l<o;l++){let m=typeof a[l]=="bigint"?a[l]:BigInt(Math.round(Number(a[l]))),d=typeof i[l]=="bigint"?i[l]:BigInt(Math.round(Number(i[l])));u[l]=m-d}else{let l=a,m=i;for(let d=0;d<o;d++)u[d]=l[d]-m[d]}}else if(B(r.dtype)||B(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 zn(r,t){return typeof t=="number"?Ru(r,t):Yt(r,t)?Cu(r,t):H(r,t,(e,n)=>e*n,"multiply")}function Cu(r,t){let e=W(r.dtype,t.dtype),n=N.zeros(Array.from(r.shape),e),o=r.size,a=r.data,i=t.data,s=n.data;if(v(e)){let u=s,c=v(r.dtype),l=v(t.dtype);for(let m=0;m<o;m++){let[d,y]=c?lr(a,m):[Number(a[m]),0],[f,p]=l?lr(i,m):[Number(i[m]),0],g=d*f-y*p,h=d*p+y*f;wr(u,m,g,h)}return n}if(B(e)){let u=s;if(!B(r.dtype)||!B(t.dtype))for(let l=0;l<o;l++){let m=typeof a[l]=="bigint"?a[l]:BigInt(Math.round(Number(a[l]))),d=typeof i[l]=="bigint"?i[l]:BigInt(Math.round(Number(i[l])));u[l]=m*d}else{let l=a,m=i;for(let d=0;d<o;d++)u[d]=l[d]*m[d]}}else if(B(r.dtype)||B(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 _n(r,t){if(typeof t=="number")return ku(r,t);let e=v(r.dtype),n=v(t.dtype);if(e||n){let l=W(r.dtype,t.dtype),m=N.zeros(Array.from(r.shape),l),d=m.data,y=r.size,f=r.data,p=t.data;for(let g=0;g<y;g++){let[h,b]=e?lr(f,g):[Number(f[g]),0],[A,S]=n?lr(p,g):[Number(p[g]),0],D=A*A+S*S,w=(h*A+b*S)/D,x=(b*A-h*S)/D;wr(d,g,w,x)}return m}let o=r.dtype==="float64",a=t.dtype==="float64",i=r.dtype==="float32",s=t.dtype==="float32";if(o||a){let l=o?r:kr(r,"float64"),m=a?t:kr(t,"float64");return H(l,m,(d,y)=>d/y,"divide")}if(i||s){let l=i?r:kr(r,"float32"),m=s?t:kr(t,"float32");return H(l,m,(d,y)=>d/y,"divide")}let u=kr(r,"float64"),c=kr(t,"float64");return H(u,c,(l,m)=>l/m,"divide")}function kr(r,t){let e=N.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 Uu(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,i=N.zeros(n,e),s=i.data;if(v(e)){let u=o,c=s;for(let l=0;l<a;l++){let[m,d]=lr(u,l);wr(c,l,m+t,d)}}else if(B(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 $u(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,i=N.zeros(n,e),s=i.data;if(v(e)){let u=o,c=s;for(let l=0;l<a;l++){let[m,d]=lr(u,l);wr(c,l,m-t,d)}}else if(B(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 Ru(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,i=N.zeros(n,e),s=i.data;if(v(e)){let u=o,c=s;for(let l=0;l<a;l++){let[m,d]=lr(u,l);wr(c,l,m*t,d*t)}}else if(B(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 ku(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size;if(v(e)){let l=N.zeros(n,e),m=o,d=l.data;for(let y=0;y<a;y++){let[f,p]=lr(m,y);wr(d,y,f/t,p/t)}return l}let s=e!=="float32"&&e!=="float64"?"float64":e,u=N.zeros(n,s),c=u.data;if(B(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 Mn(r){let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size;if(v(t)){let s=Xr(t),u=N.zeros(e,s),c=u.data,l=n;for(let m=0;m<o;m++){let d=l[m*2],y=l[m*2+1];c[m]=Math.sqrt(d*d+y*y)}return u}let a=N.zeros(e,t),i=a.data;if(B(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 Fn(r){let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size,a=N.zeros(e,t),i=a.data;if(v(t)){let s=n,u=i;for(let c=0;c<o;c++){let[l,m]=lr(s,c);wr(u,c,-l,-m)}}else if(B(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 vn(r){U(r.dtype,"sign","Sign is not defined for complex numbers.");let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size,a=N.zeros(e,t),i=a.data;if(B(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 Dt(r,t){return U(r.dtype,"mod","Modulo is not defined for complex numbers."),typeof t!="number"&&U(t.dtype,"mod","Modulo is not defined for complex numbers."),typeof t=="number"?qu(r,t):H(r,t,(e,n)=>(e%n+n)%n,"mod")}function qu(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,i=N.zeros(n,e),s=i.data;if(B(e)){let u=o,c=s,l=BigInt(Math.round(t));for(let m=0;m<a;m++){let d=u[m];c[m]=(d%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 Ht(r,t){return U(r.dtype,"floor_divide","Floor division is not defined for complex numbers."),typeof t!="number"&&U(t.dtype,"floor_divide","Floor division is not defined for complex numbers."),typeof t=="number"?Vu(r,t):H(r,t,(e,n)=>Math.floor(e/n),"floor_divide")}function Vu(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,i=N.zeros(n,e),s=i.data;if(B(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 Bn(r){let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size,a=N.zeros(e,t),i=a.data;if(v(t)){let s=n,u=i;for(let c=0;c<o;c++)u[c*2]=s[c*2],u[c*2+1]=s[c*2+1]}else for(let s=0;s<o;s++)i[s]=n[s];return a}function En(r){let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size;if(v(t)){let c=N.zeros(e,t),l=n,m=c.data;for(let d=0;d<o;d++){let y=l[d*2],f=l[d*2+1],p=y*y+f*f;m[d*2]=y/p,m[d*2+1]=-f/p}return c}let i=t!=="float32"&&t!=="float64"?"float64":t,s=N.zeros(e,i),u=s.data;if(B(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 Tn(r){let t=r.dtype;U(t,"cbrt","cbrt is not supported for complex numbers.");let e=Array.from(r.shape),n=r.data,o=r.size,i=t!=="float32"&&t!=="float64"?"float64":t,s=N.zeros(e,i),u=s.data;for(let c=0;c<o;c++)u[c]=Math.cbrt(Number(n[c]));return s}function On(r){let t=r.dtype;U(t,"fabs","fabs is only for real numbers. Use absolute() for complex.");let e=Array.from(r.shape),n=r.data,o=r.size,a=t==="float32"?"float32":"float64",i=N.zeros(e,a),s=i.data;for(let u=0;u<o;u++)s[u]=Math.abs(Number(n[u]));return i}function Cn(r,t){let e=Ht(r,t),n=Dt(r,t);return[e,n]}function Un(r){let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size,a=N.zeros(e,t),i=a.data;if(v(t)){let s=n,u=i;for(let c=0;c<o;c++){let l=s[c*2],m=s[c*2+1];u[c*2]=l*l-m*m,u[c*2+1]=2*l*m}}else if(B(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 $n(r,t){return Dt(r,t)}function Rn(r,t){U(r.dtype,"heaviside","Heaviside step function is not defined for complex numbers."),typeof t!="number"&&U(t.dtype,"heaviside","Heaviside step function is not defined for complex numbers.");let e=r.dtype,n=Array.from(r.shape),o=r.size,a=e==="float32"?"float32":"float64",i=N.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]),d=l%t.size;m<0?s[l]=0:m===0?s[l]=Number(u[d]):s[l]=1}}return i}function kn(r,t){let e=r.dtype;if(v(e)){let n=r.data,o=r.size,a=N.zeros(Array.from(r.shape),e),i=a.data;if(typeof t=="number")for(let s=0;s<o;s++){let u=n[s*2],c=n[s*2+1],l=Math.hypot(u,c),m=Math.atan2(c,u),d=Math.pow(l,t),y=m*t;i[s*2]=d*Math.cos(y),i[s*2+1]=d*Math.sin(y)}else{let s=t.data,u=v(t.dtype);for(let c=0;c<o;c++){let l=n[c*2],m=n[c*2+1],d,y;u?(d=s[c*2],y=s[c*2+1]):(d=Number(s[c]),y=0);let f=Math.hypot(l,m),p=Math.atan2(m,l),g=Math.log(f),h=p,b=d*g-y*h,A=d*h+y*g,S=Math.exp(b);i[c*2]=S*Math.cos(A),i[c*2+1]=S*Math.sin(A)}}return a}if(typeof t=="number"){let n=N.zeros(Array.from(r.shape),"float64"),o=n.data,a=r.data,i=r.size;for(let s=0;s<i;s++)o[s]=Math.pow(Number(a[s]),t);return n}return H(r,t,(n,o)=>Math.pow(n,o),"float_power")}function qn(r,t){if(U(r.dtype,"fmod","fmod is not defined for complex numbers."),typeof t!="number"&&U(t.dtype,"fmod","fmod is not defined for complex numbers."),typeof t=="number"){let e=r.copy(),n=e.data,o=r.size;for(let a=0;a<o;a++){let i=Number(n[a]);n[a]=i-Math.trunc(i/t)*t}return e}return H(r,t,(e,n)=>e-Math.trunc(e/n)*n,"fmod")}function Vn(r){U(r.dtype,"frexp","frexp is not defined for complex numbers.");let t=N.zeros(Array.from(r.shape),"float64"),e=N.zeros(Array.from(r.shape),"int32"),n=t.data,o=e.data,a=r.data,i=r.size;for(let s=0;s<i;s++){let u=Number(a[s]);if(u===0||!isFinite(u))n[s]=u,o[s]=0;else{let c=Math.floor(Math.log2(Math.abs(u)))+1,l=u/Math.pow(2,c);n[s]=l,o[s]=c}}return[t,e]}function jn(r,t){U(r.dtype,"gcd","GCD is only defined for integers."),typeof t!="number"&&U(t.dtype,"gcd","GCD is only defined for integers.");let e=(u,c)=>{for(u=Math.abs(Math.trunc(u)),c=Math.abs(Math.trunc(c));c!==0;){let l=c;c=u%c,u=l}return u};if(typeof t=="number"){let u=N.zeros(Array.from(r.shape),"int32"),c=u.data,l=r.data,m=r.size,d=Math.abs(Math.trunc(t));for(let y=0;y<m;y++)c[y]=e(Number(l[y]),d);return u}let n=H(r,t,e,"gcd"),o=N.zeros(Array.from(n.shape),"int32"),a=o.data,i=n.data,s=n.size;for(let u=0;u<s;u++)a[u]=Math.round(Number(i[u]));return o}function Pn(r,t){U(r.dtype,"lcm","LCM is only defined for integers."),typeof t!="number"&&U(t.dtype,"lcm","LCM is only defined for integers.");let e=(c,l)=>{for(c=Math.abs(Math.trunc(c)),l=Math.abs(Math.trunc(l));l!==0;){let m=l;l=c%l,c=m}return c},n=(c,l)=>(c=Math.abs(Math.trunc(c)),l=Math.abs(Math.trunc(l)),c===0||l===0?0:c*l/e(c,l));if(typeof t=="number"){let c=N.zeros(Array.from(r.shape),"int32"),l=c.data,m=r.data,d=r.size,y=Math.abs(Math.trunc(t));for(let f=0;f<d;f++)l[f]=n(Number(m[f]),y);return c}let o=H(r,t,n,"lcm"),a=N.zeros(Array.from(o.shape),"int32"),i=a.data,s=o.data,u=o.size;for(let c=0;c<u;c++)i[c]=Math.round(Number(s[c]));return a}function Ln(r,t){if(U(r.dtype,"ldexp","ldexp is not defined for complex numbers."),typeof t!="number"&&U(t.dtype,"ldexp","ldexp is not defined for complex numbers."),typeof t=="number"){let e=N.zeros(Array.from(r.shape),"float64"),n=e.data,o=r.data,a=r.size,i=Math.pow(2,t);for(let s=0;s<a;s++)n[s]=Number(o[s])*i;return e}return H(r,t,(e,n)=>e*Math.pow(2,n),"ldexp")}function Gn(r){U(r.dtype,"modf","modf is not defined for complex numbers.");let t=N.zeros(Array.from(r.shape),"float64"),e=N.zeros(Array.from(r.shape),"float64"),n=t.data,o=e.data,a=r.data,i=r.size;for(let s=0;s<i;s++){let u=Number(a[s]),c=Math.trunc(u);o[s]=c,n[s]=u-c}return[t,e]}function Wn(r,t,e){U(r.dtype,"clip","clip is not supported for complex numbers.");let n=r.dtype,o=Array.from(r.shape),a=r.size,i=N.zeros(o,n),s=i.data,u=r.data,c=t===null||typeof t=="number",l=e===null||typeof e=="number",m=t===null?-1/0:typeof t=="number"?t:null,d=e===null?1/0:typeof e=="number"?e:null;if(B(n)){let y=s,f=u;for(let p=0;p<a;p++){let g=f[p],h=c?m===-1/0?g:BigInt(Math.round(m)):t.data[p%t.size],b=l?d===1/0?g:BigInt(Math.round(d)):e.data[p%e.size];g<h&&(g=h),g>b&&(g=b),y[p]=g}}else for(let y=0;y<a;y++){let f=Number(u[y]),p=c?m:Number(t.data[y%t.size]),g=l?d:Number(e.data[y%e.size]);f<p&&(f=p),f>g&&(f=g),s[y]=f}return i}function Zn(r,t){if(U(r.dtype,"maximum","maximum is not supported for complex numbers."),typeof t!="number"&&U(t.dtype,"maximum","maximum is not supported for complex numbers."),typeof t=="number"){let e=r.dtype,n=Array.from(r.shape),o=r.size,a=N.zeros(n,e),i=a.data,s=r.data;if(B(e)){let u=i,c=s,l=BigInt(Math.round(t));for(let m=0;m<o;m++)u[m]=c[m]>l?c[m]:l}else for(let u=0;u<o;u++){let c=Number(s[u]);i[u]=isNaN(c)||isNaN(t)?NaN:Math.max(c,t)}return a}return H(r,t,(e,n)=>isNaN(e)||isNaN(n)?NaN:Math.max(e,n),"maximum")}function Yn(r,t){if(U(r.dtype,"minimum","minimum is not supported for complex numbers."),typeof t!="number"&&U(t.dtype,"minimum","minimum is not supported for complex numbers."),typeof t=="number"){let e=r.dtype,n=Array.from(r.shape),o=r.size,a=N.zeros(n,e),i=a.data,s=r.data;if(B(e)){let u=i,c=s,l=BigInt(Math.round(t));for(let m=0;m<o;m++)u[m]=c[m]<l?c[m]:l}else for(let u=0;u<o;u++){let c=Number(s[u]);i[u]=isNaN(c)||isNaN(t)?NaN:Math.min(c,t)}return a}return H(r,t,(e,n)=>isNaN(e)||isNaN(n)?NaN:Math.min(e,n),"minimum")}function Hn(r,t){if(U(r.dtype,"fmax","fmax is not supported for complex numbers."),typeof t!="number"&&U(t.dtype,"fmax","fmax is not supported for complex numbers."),typeof t=="number"){let e=r.dtype,n=Array.from(r.shape),o=r.size,a=N.zeros(n,e),i=a.data,s=r.data;if(B(e)){let u=i,c=s,l=BigInt(Math.round(t));for(let m=0;m<o;m++)u[m]=c[m]>l?c[m]:l}else for(let u=0;u<o;u++){let c=Number(s[u]);isNaN(c)?i[u]=t:isNaN(t)?i[u]=c:i[u]=Math.max(c,t)}return a}return H(r,t,(e,n)=>isNaN(e)?n:isNaN(n)?e:Math.max(e,n),"fmax")}function Xn(r,t){if(U(r.dtype,"fmin","fmin is not supported for complex numbers."),typeof t!="number"&&U(t.dtype,"fmin","fmin is not supported for complex numbers."),typeof t=="number"){let e=r.dtype,n=Array.from(r.shape),o=r.size,a=N.zeros(n,e),i=a.data,s=r.data;if(B(e)){let u=i,c=s,l=BigInt(Math.round(t));for(let m=0;m<o;m++)u[m]=c[m]<l?c[m]:l}else for(let u=0;u<o;u++){let c=Number(s[u]);isNaN(c)?i[u]=t:isNaN(t)?i[u]=c:i[u]=Math.min(c,t)}return a}return H(r,t,(e,n)=>isNaN(e)?n:isNaN(n)?e:Math.min(e,n),"fmin")}function Jn(r,t=0,e,n){U(r.dtype,"nan_to_num","nan_to_num is not supported for complex numbers.");let o=r.dtype,a=Array.from(r.shape),i=r.size,s=e!==void 0?e:Number.MAX_VALUE,u=n!==void 0?n:-Number.MAX_VALUE,c=N.zeros(a,o),l=c.data,m=r.data;if(B(o)){let d=l,y=m;for(let f=0;f<i;f++)d[f]=y[f]}else for(let d=0;d<i;d++){let y=Number(m[d]);isNaN(y)?l[d]=t:y===1/0?l[d]=s:y===-1/0?l[d]=u:l[d]=y}return c}function Qn(r,t,e,n,o){U(r.dtype,"interp","interp is not supported for complex numbers."),U(t.dtype,"interp","interp is not supported for complex numbers."),U(e.dtype,"interp","interp is not supported for complex numbers.");let a=Array.from(r.shape),i=r.size,s=N.zeros(a,"float64"),u=s.data,c=r.data,l=t.data,m=e.data,d=t.size,y=n!==void 0?n:Number(m[0]),f=o!==void 0?o:Number(m[d-1]);for(let p=0;p<i;p++){let g=Number(c[p]);if(g<=Number(l[0])){u[p]=y;continue}if(g>=Number(l[d-1])){u[p]=f;continue}let h=0,b=d-1;for(;b-h>1;){let I=Math.floor((h+b)/2);Number(l[I])<=g?h=I:b=I}let A=Number(l[h]),S=Number(l[b]),D=Number(m[h]),w=Number(m[b]),x=(g-A)/(S-A);u[p]=D+x*(w-D)}return s}function Kn(r,t=Math.PI,e=-1,n=2*Math.PI){U(r.dtype,"unwrap","unwrap is not supported for complex numbers.");let o=Array.from(r.shape),a=o.length;if(e<0&&(e+=a),e<0||e>=a)throw new Error(`axis ${e} is out of bounds for array of dimension ${a}`);if(a===1){let c=r.size,l=N.zeros(o,"float64"),m=l.data,d=r.data;if(c===0)return l;m[0]=Number(d[0]);let y=0;for(let f=1;f<c;f++){let p=Number(d[f-1]),g=Number(d[f]),h=g-p;h=(h+n/2)%n-n/2,h===-n/2&&g-p>0&&(h=n/2),Math.abs(h)>t&&(y-=Math.round((g-p-h)/n)*n),m[f]=g+y}return l}let i=N.zeros(o,"float64"),s=i.data,u=r.data;for(let c=0;c<r.size;c++)s[c]=Number(u[c]);if(a===2){let[c,l]=o;if(e===0)for(let m=0;m<l;m++){let d=0;for(let y=1;y<c;y++){let f=(y-1)*l+m,p=y*l+m,g=s[f],h=s[p],b=h-g;b=(b+n/2)%n-n/2,b===-n/2&&h-g>0&&(b=n/2),Math.abs(b)>t&&(d-=Math.round((h-g-b)/n)*n),s[p]=h+d}}else for(let m=0;m<c;m++){let d=0;for(let y=1;y<l;y++){let f=m*l+(y-1),p=m*l+y,g=s[f],h=s[p],b=h-g;b=(b+n/2)%n-n/2,b===-n/2&&h-g>0&&(b=n/2),Math.abs(b)>t&&(d-=Math.round((h-g-b)/n)*n),s[p]=h+d}}}return i}function ro(r){U(r.dtype,"sinc","sinc is not supported for complex numbers.");let t=Array.from(r.shape),e=r.size,n=N.zeros(t,"float64"),o=n.data,a=r.data;for(let i=0;i<e;i++){let s=Number(a[i]);if(s===0)o[i]=1;else{let u=Math.PI*s;o[i]=Math.sin(u)/u}}return n}function to(r){U(r.dtype,"i0","i0 is not supported for complex numbers.");let t=Array.from(r.shape),e=r.size,n=N.zeros(t,"float64"),o=n.data,a=r.data;for(let i=0;i<e;i++){let s=Math.abs(Number(a[i]));o[i]=ju(s)}return n}function ju(r){let t=Math.abs(r);if(t<3.75){let e=r/3.75,n=e*e;return 1+n*(3.5156229+n*(3.0899424+n*(1.2067492+n*(.2659732+n*(.0360768+n*.0045813)))))}else{let e=3.75/t;return Math.exp(t)/Math.sqrt(t)*(.39894228+e*(.01328592+e*(.00225319+e*(-.00157565+e*(.00916281+e*(-.02057706+e*(.02635537+e*(-.01647633+e*.00392377))))))))}}function Tr(r,t){return[r[t*2],r[t*2+1]]}function eo(r,t){if(v(r.dtype))return Tr(r.data,t);let e=r.iget(t);return e instanceof E?[e.re,e.im]:[Number(e),0]}function qr(r,t,e){let n=Ar([Array.from(r.shape),Array.from(t.shape)]);if(!n)throw new Error("Cannot broadcast arrays together");let o=pr(r,n),a=pr(t,n),i=n.reduce((u,c)=>u*c,1),s=new Uint8Array(i);for(let u=0;u<i;u++){let[c,l]=eo(o,u),[m,d]=eo(a,u);s[u]=e(c,l,m,d)?1:0}return N.fromData(s,n,"bool")}function no(r,t){return typeof t=="number"?Lu(r,t):v(r.dtype)||v(t.dtype)?qr(r,t,(e,n,o,a)=>e!==o?e>o:n>a):yr(r,t,(e,n)=>e>n)}function oo(r,t){return typeof t=="number"?Gu(r,t):v(r.dtype)||v(t.dtype)?qr(r,t,(e,n,o,a)=>e!==o?e>=o:n>=a):yr(r,t,(e,n)=>e>=n)}function ao(r,t){return typeof t=="number"?Wu(r,t):v(r.dtype)||v(t.dtype)?qr(r,t,(e,n,o,a)=>e!==o?e<o:n<a):yr(r,t,(e,n)=>e<n)}function so(r,t){return typeof t=="number"?Zu(r,t):v(r.dtype)||v(t.dtype)?qr(r,t,(e,n,o,a)=>e!==o?e<=o:n<=a):yr(r,t,(e,n)=>e<=n)}function io(r,t){return typeof t=="number"?Yu(r,t):v(r.dtype)||v(t.dtype)?qr(r,t,(e,n,o,a)=>e===o&&n===a):yr(r,t,(e,n)=>e===n)}function uo(r,t){return typeof t=="number"?Hu(r,t):v(r.dtype)||v(t.dtype)?qr(r,t,(e,n,o,a)=>e!==o||n!==a):yr(r,t,(e,n)=>e!==n)}function Xt(r,t,e=1e-5,n=1e-8){return typeof t=="number"?Xu(r,t,e,n):yr(r,t,(o,a)=>{let i=Math.abs(o-a),s=n+e*Math.abs(a);return i<=s})}function co(r,t,e=1e-5,n=1e-8){let o=Xt(r,t,e,n),a=o.data;for(let i=0;i<o.size;i++)if(a[i]===0)return!1;return!0}function lo(r,t){let e=[Array.from(r.shape),Array.from(t.shape)],n=Ar(e);if(n===null)return!1;let o=pr(r,n),a=pr(t,n),i=n.length,s=n.reduce((l,m)=>l*m,1),u=B(o.dtype),c=B(a.dtype);for(let l=0;l<s;l++){let m=l,d=new Array(i);for(let p=i-1;p>=0;p--)d[p]=m%n[p],m=Math.floor(m/n[p]);let y=o.get(...d),f=a.get(...d);if(u||c){let p=typeof y=="bigint"?y:BigInt(Number(y)),g=typeof f=="bigint"?f:BigInt(Number(f));if(p!==g)return!1}else if(y!==f)return!1}return!0}function Lu(r,t){let e=new Uint8Array(r.size),n=r.data;if(v(r.dtype)){let o=n;for(let a=0;a<r.size;a++){let[i,s]=Tr(o,a);e[a]=(i!==t?i>t:s>0)?1:0}}else for(let o=0;o<r.size;o++)e[o]=n[o]>t?1:0;return N.fromData(e,Array.from(r.shape),"bool")}function Gu(r,t){let e=new Uint8Array(r.size),n=r.data;if(v(r.dtype)){let o=n;for(let a=0;a<r.size;a++){let[i,s]=Tr(o,a);e[a]=(i!==t?i>=t:s>=0)?1:0}}else for(let o=0;o<r.size;o++)e[o]=n[o]>=t?1:0;return N.fromData(e,Array.from(r.shape),"bool")}function Wu(r,t){let e=new Uint8Array(r.size),n=r.data;if(v(r.dtype)){let o=n;for(let a=0;a<r.size;a++){let[i,s]=Tr(o,a);e[a]=(i!==t?i<t:s<0)?1:0}}else for(let o=0;o<r.size;o++)e[o]=n[o]<t?1:0;return N.fromData(e,Array.from(r.shape),"bool")}function Zu(r,t){let e=new Uint8Array(r.size),n=r.data;if(v(r.dtype)){let o=n;for(let a=0;a<r.size;a++){let[i,s]=Tr(o,a);e[a]=(i!==t?i<=t:s<=0)?1:0}}else for(let o=0;o<r.size;o++)e[o]=n[o]<=t?1:0;return N.fromData(e,Array.from(r.shape),"bool")}function Yu(r,t){let e=new Uint8Array(r.size),n=r.data,o=r.dtype;if(v(o)){let a=n;for(let i=0;i<r.size;i++){let[s,u]=Tr(a,i);e[i]=s===t&&u===0?1:0}}else if(B(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 N.fromData(e,Array.from(r.shape),"bool")}function Hu(r,t){let e=new Uint8Array(r.size),n=r.data,o=r.dtype;if(v(o)){let a=n;for(let i=0;i<r.size;i++){let[s,u]=Tr(a,i);e[i]=s!==t||u!==0?1:0}}else for(let a=0;a<r.size;a++)e[a]=n[a]!==t?1:0;return N.fromData(e,Array.from(r.shape),"bool")}function Xu(r,t,e,n){let o=new Uint8Array(r.size),a=r.data,i=r.dtype;if(B(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 N.fromData(o,Array.from(r.shape),"bool")}function $(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 R(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 Jr(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(v(n)){let f=s,p=0,g=0;for(let h=0;h<i;h++)p+=f[h*2],g+=f[h*2+1];return new E(p,g)}else if(B(n)){let f=s,p=BigInt(0);for(let g=0;g<i;g++)p+=f[g];return Number(p)}else{let f=0;for(let p=0;p<i;p++)f+=Number(s[p]);return f}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((f,p)=>p!==u);if(c.length===0)return Jr(r);let l=N.zeros(c,n),m=l.data,d=o[u],y=c.reduce((f,p)=>f*p,1);if(v(n)){let f=s,p=m;for(let g=0;g<y;g++){let h=0,b=0;for(let A=0;A<d;A++){let S=R(g,u,A,o),D=$(S,o);h+=f[D*2],b+=f[D*2+1]}p[g*2]=h,p[g*2+1]=b}}else if(B(n)){let f=s,p=m;for(let g=0;g<y;g++){let h=BigInt(0);for(let b=0;b<d;b++){let A=R(g,u,b,o),S=$(A,o);h+=f[S]}p[g]=h}}else for(let f=0;f<y;f++){let p=0;for(let g=0;g<d;g++){let h=R(f,u,g,o),b=$(h,o);p+=Number(s[b])}m[f]=p}if(e){let f=[...o];return f[u]=1,N.fromData(m,f,n)}return l}function Nt(r,t,e=!1){let n=r.dtype,o=r.shape;if(t===void 0){let d=Jr(r);return d instanceof E?new E(d.re/r.size,d.im/r.size):d/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=Jr(r,t,e);if(typeof i=="number")return i/o[a];if(i instanceof E)return new E(i.re/o[a],i.im/o[a]);let s=o[a],u=n;v(n)?u=n:(B(n)||n.startsWith("int")||n.startsWith("uint"))&&(u="float64");let c=N.zeros(Array.from(i.shape),u),l=c.data,m=i.data;if(v(n)){let d=m,y=l,f=i.size;for(let p=0;p<f;p++)y[p*2]=d[p*2]/s,y[p*2+1]=d[p*2+1]/s}else if(B(n)){let d=m;for(let y=0;y<l.length;y++)l[y]=Number(d[y])/s}else for(let d=0;d<l.length;d++)l[d]=Number(m[d])/s;return c}function Vr(r,t,e=!1){let n=r.dtype,o=r.shape,a=o.length,i=r.size,s=r.data;if(v(n)){let f=s;if(t===void 0){if(i===0)throw new Error("max of empty array");let D=f[0],w=f[1];for(let x=1;x<i;x++){let I=f[x*2],z=f[x*2+1];if(isNaN(I)||isNaN(z))return new E(NaN,NaN);(I>D||I===D&&z>w)&&(D=I,w=z)}return isNaN(D)||isNaN(w)?new E(NaN,NaN):new E(D,w)}let p=t;if(p<0&&(p=a+p),p<0||p>=a)throw new Error(`axis ${t} is out of bounds for array of dimension ${a}`);let g=Array.from(o).filter((D,w)=>w!==p);if(g.length===0)return Vr(r);let h=N.zeros(g,n),b=h.data,A=o[p],S=g.reduce((D,w)=>D*w,1);for(let D=0;D<S;D++){let w=R(D,p,0,o),x=$(w,o),I=f[x*2],z=f[x*2+1];for(let F=1;F<A;F++){let M=R(D,p,F,o),T=$(M,o),O=f[T*2],C=f[T*2+1];if(isNaN(O)||isNaN(C)){I=NaN,z=NaN;break}(O>I||O===I&&C>z)&&(I=O,z=C)}b[D*2]=I,b[D*2+1]=z}if(e){let D=[...o];return D[p]=1,N.fromData(b,D,n)}return h}if(t===void 0){if(i===0)throw new Error("max of empty array");let f=s[0];for(let p=1;p<i;p++)s[p]>f&&(f=s[p]);return Number(f)}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((f,p)=>p!==u);if(c.length===0)return Vr(r);let l=N.zeros(c,n),m=l.data,d=o[u],y=c.reduce((f,p)=>f*p,1);if(B(n)){let f=s,p=m;for(let g=0;g<y;g++){let h=R(g,u,0,o),b=$(h,o),A=f[b];for(let S=1;S<d;S++){let D=R(g,u,S,o),w=$(D,o),x=f[w];x>A&&(A=x)}p[g]=A}}else for(let f=0;f<y;f++){let p=-1/0;for(let g=0;g<d;g++){let h=R(f,u,g,o),b=$(h,o),A=Number(s[b]);A>p&&(p=A)}m[f]=p}if(e){let f=[...o];return f[u]=1,N.fromData(m,f,n)}return l}function Jt(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(v(n)){let f=s,p=1,g=0;for(let h=0;h<i;h++){let b=f[h*2],A=f[h*2+1],S=p*b-g*A,D=p*A+g*b;p=S,g=D}return new E(p,g)}else if(B(n)){let f=s,p=BigInt(1);for(let g=0;g<i;g++)p*=f[g];return Number(p)}else{let f=1;for(let p=0;p<i;p++)f*=Number(s[p]);return f}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((f,p)=>p!==u);if(c.length===0)return Jt(r);let l=N.zeros(c,n),m=l.data,d=o[u],y=c.reduce((f,p)=>f*p,1);if(v(n)){let f=s,p=m;for(let g=0;g<y;g++){let h=1,b=0;for(let A=0;A<d;A++){let S=R(g,u,A,o),D=$(S,o),w=f[D*2],x=f[D*2+1],I=h*w-b*x,z=h*x+b*w;h=I,b=z}p[g*2]=h,p[g*2+1]=b}}else if(B(n)){let f=s,p=m;for(let g=0;g<y;g++){let h=BigInt(1);for(let b=0;b<d;b++){let A=R(g,u,b,o),S=$(A,o);h*=f[S]}p[g]=h}}else for(let f=0;f<y;f++){let p=1;for(let g=0;g<d;g++){let h=R(f,u,g,o),b=$(h,o);p*=Number(s[b])}m[f]=p}if(e){let f=[...o];return f[u]=1,N.fromData(m,f,n)}return l}function jr(r,t,e=!1){let n=r.dtype,o=r.shape,a=o.length,i=r.size,s=r.data;if(v(n)){let f=s;if(t===void 0){if(i===0)throw new Error("min of empty array");let D=f[0],w=f[1];for(let x=1;x<i;x++){let I=f[x*2],z=f[x*2+1];if(isNaN(I)||isNaN(z))return new E(NaN,NaN);(I<D||I===D&&z<w)&&(D=I,w=z)}return isNaN(D)||isNaN(w)?new E(NaN,NaN):new E(D,w)}let p=t;if(p<0&&(p=a+p),p<0||p>=a)throw new Error(`axis ${t} is out of bounds for array of dimension ${a}`);let g=Array.from(o).filter((D,w)=>w!==p);if(g.length===0)return jr(r);let h=N.zeros(g,n),b=h.data,A=o[p],S=g.reduce((D,w)=>D*w,1);for(let D=0;D<S;D++){let w=R(D,p,0,o),x=$(w,o),I=f[x*2],z=f[x*2+1];for(let F=1;F<A;F++){let M=R(D,p,F,o),T=$(M,o),O=f[T*2],C=f[T*2+1];if(isNaN(O)||isNaN(C)){I=NaN,z=NaN;break}(O<I||O===I&&C<z)&&(I=O,z=C)}b[D*2]=I,b[D*2+1]=z}if(e){let D=[...o];return D[p]=1,N.fromData(b,D,n)}return h}if(t===void 0){if(i===0)throw new Error("min of empty array");let f=s[0];for(let p=1;p<i;p++)s[p]<f&&(f=s[p]);return Number(f)}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((f,p)=>p!==u);if(c.length===0)return jr(r);let l=N.zeros(c,n),m=l.data,d=o[u],y=c.reduce((f,p)=>f*p,1);if(B(n)){let f=s,p=m;for(let g=0;g<y;g++){let h=R(g,u,0,o),b=$(h,o),A=f[b];for(let S=1;S<d;S++){let D=R(g,u,S,o),w=$(D,o),x=f[w];x<A&&(A=x)}p[g]=A}}else for(let f=0;f<y;f++){let p=1/0;for(let g=0;g<d;g++){let h=R(f,u,g,o),b=$(h,o),A=Number(s[b]);A<p&&(p=A)}m[f]=p}if(e){let f=[...o];return f[u]=1,N.fromData(m,f,n)}return l}function Fr(r,t,e,n){return r<e?-1:r>e?1:t<n?-1:t>n?1:0}function Qt(r,t){let e=r.dtype,n=v(e),o=r.shape,a=o.length,i=r.size,s=r.data;if(t===void 0){if(i===0)throw new Error("argmin of empty array");if(n){let g=s,h=g[0],b=g[1],A=0;for(let S=1;S<i;S++){let D=g[S*2],w=g[S*2+1];Fr(D,w,h,b)<0&&(h=D,b=w,A=S)}return A}let f=s[0],p=0;for(let g=1;g<i;g++)s[g]<f&&(f=s[g],p=g);return p}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((f,p)=>p!==u);if(c.length===0)return Qt(r);let l=N.zeros(c,"int32"),m=l.data,d=o[u],y=c.reduce((f,p)=>f*p,1);if(n){let f=s;for(let p=0;p<y;p++){let g=R(p,u,0,o),h=$(g,o),b=f[h*2],A=f[h*2+1],S=0;for(let D=1;D<d;D++){let w=R(p,u,D,o),x=$(w,o),I=f[x*2],z=f[x*2+1];Fr(I,z,b,A)<0&&(b=I,A=z,S=D)}m[p]=S}}else if(B(e)){let f=s;for(let p=0;p<y;p++){let g=R(p,u,0,o),h=$(g,o),b=f[h],A=0;for(let S=1;S<d;S++){let D=R(p,u,S,o),w=$(D,o),x=f[w];x<b&&(b=x,A=S)}m[p]=A}}else for(let f=0;f<y;f++){let p=1/0,g=0;for(let h=0;h<d;h++){let b=R(f,u,h,o),A=$(b,o),S=Number(s[A]);S<p&&(p=S,g=h)}m[f]=g}return l}function Kt(r,t){let e=r.dtype,n=v(e),o=r.shape,a=o.length,i=r.size,s=r.data;if(t===void 0){if(i===0)throw new Error("argmax of empty array");if(n){let g=s,h=g[0],b=g[1],A=0;for(let S=1;S<i;S++){let D=g[S*2],w=g[S*2+1];Fr(D,w,h,b)>0&&(h=D,b=w,A=S)}return A}let f=s[0],p=0;for(let g=1;g<i;g++)s[g]>f&&(f=s[g],p=g);return p}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((f,p)=>p!==u);if(c.length===0)return Kt(r);let l=N.zeros(c,"int32"),m=l.data,d=o[u],y=c.reduce((f,p)=>f*p,1);if(n){let f=s;for(let p=0;p<y;p++){let g=R(p,u,0,o),h=$(g,o),b=f[h*2],A=f[h*2+1],S=0;for(let D=1;D<d;D++){let w=R(p,u,D,o),x=$(w,o),I=f[x*2],z=f[x*2+1];Fr(I,z,b,A)>0&&(b=I,A=z,S=D)}m[p]=S}}else if(B(e)){let f=s;for(let p=0;p<y;p++){let g=R(p,u,0,o),h=$(g,o),b=f[h],A=0;for(let S=1;S<d;S++){let D=R(p,u,S,o),w=$(D,o),x=f[w];x>b&&(b=x,A=S)}m[p]=A}}else for(let f=0;f<y;f++){let p=-1/0,g=0;for(let h=0;h<d;h++){let b=R(f,u,h,o),A=$(b,o),S=Number(s[A]);S>p&&(p=S,g=h)}m[f]=g}return l}function re(r,t,e=0,n=!1){let o=r.dtype,a=r.shape,i=a.length,s=r.size,u=r.data,c=Nt(r,t,n);if(t===void 0){if(v(o)){let S=u,D=c,w=0;for(let x=0;x<s;x++){let I=S[x*2],z=S[x*2+1],F=I-D.re,M=z-D.im;w+=F*F+M*M}return w/(s-e)}let b=c,A=0;for(let S=0;S<s;S++){let D=Number(u[S])-b;A+=D*D}return A/(s-e)}let l=t;if(l<0&&(l=i+l),l<0||l>=i)throw new Error(`axis ${t} is out of bounds for array of dimension ${i}`);let m=a[l],d=c,y=d.data,f=n?d.shape:Array.from(a).filter((b,A)=>A!==l),p=N.zeros(Array.from(f),"float64"),g=p.data,h=f.reduce((b,A)=>b*A,1);if(v(o)){let b=u,A=y;for(let S=0;S<h;S++){let D=0,w=A[S*2],x=A[S*2+1];for(let I=0;I<m;I++){let z=R(S,l,I,a),F=$(z,a),M=b[F*2],T=b[F*2+1],O=M-w,C=T-x;D+=O*O+C*C}g[S]=D/(m-e)}}else for(let b=0;b<h;b++){let A=0,S=Number(y[b]);for(let D=0;D<m;D++){let w=R(b,l,D,a),x=$(w,a),I=Number(u[x])-S;A+=I*I}g[b]=A/(m-e)}return p}function fo(r,t,e=0,n=!1){let o=re(r,t,e,n);if(typeof o=="number")return Math.sqrt(o);let a=N.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 te(r,t,e=!1){let n=r.shape,o=n.length,a=r.size,i=r.data;if(t===void 0){for(let y=0;y<a;y++)if(!i[y])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((y,f)=>f!==s);if(u.length===0)return te(r);let c=N.zeros(u,"bool"),l=c.data,m=n[s],d=u.reduce((y,f)=>y*f,1);for(let y=0;y<d;y++){let f=!0;for(let p=0;p<m;p++){let g=R(y,s,p,n),h=$(g,n);if(!i[h]){f=!1;break}}l[y]=f?1:0}if(e){let y=[...n];return y[s]=1,N.fromData(l,y,"bool")}return c}function ee(r,t,e=!1){let n=r.shape,o=n.length,a=r.size,i=r.data;if(t===void 0){for(let y=0;y<a;y++)if(i[y])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((y,f)=>f!==s);if(u.length===0)return ee(r);let c=N.zeros(u,"bool"),l=c.data,m=n[s],d=u.reduce((y,f)=>y*f,1);for(let y=0;y<d;y++){let f=!1;for(let p=0;p<m;p++){let g=R(y,s,p,n),h=$(g,n);if(i[h]){f=!0;break}}l[y]=f?1:0}if(e){let y=[...n];return y[s]=1,N.fromData(l,y,"bool")}return c}function ne(r,t){let e=r.dtype,n=r.shape,o=n.length,a=r.data;if(v(e)){let y=a,f=r.size;if(t===void 0){let x=N.zeros([f],e),I=x.data,z=0,F=0;for(let M=0;M<f;M++)z+=y[M*2],F+=y[M*2+1],I[M*2]=z,I[M*2+1]=F;return x}let p=t;if(p<0&&(p=o+p),p<0||p>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);let g=N.zeros([...n],e),h=g.data,b=n[p],A=[],S=1;for(let x=o-1;x>=0;x--)A.unshift(S),S*=n[x];let D=r.size,w=A[p];for(let x=0;x<D;x++)Math.floor(x/w)%b===0?(h[x*2]=y[x*2],h[x*2+1]=y[x*2+1]):(h[x*2]=h[(x-w)*2]+y[x*2],h[x*2+1]=h[(x-w)*2+1]+y[x*2+1]);return g}if(t===void 0){let y=r.size,f=new Float64Array(y),p=0;for(let g=0;g<y;g++)p+=Number(a[g]),f[g]=p;return N.fromData(f,[y],"float64")}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=new Float64Array(r.size),u=n[i],c=[],l=1;for(let y=o-1;y>=0;y--)c.unshift(l),l*=n[y];let m=r.size,d=c[i];for(let y=0;y<m;y++)Math.floor(y/d)%u===0?s[y]=Number(a[y]):s[y]=s[y-d]+Number(a[y]);return N.fromData(s,[...n],"float64")}function oe(r,t){let e=r.dtype,n=r.shape,o=n.length,a=r.data;if(v(e)){let y=a,f=r.size;if(t===void 0){let x=N.zeros([f],e),I=x.data,z=1,F=0;for(let M=0;M<f;M++){let T=y[M*2],O=y[M*2+1],C=z*T-F*O,q=z*O+F*T;z=C,F=q,I[M*2]=z,I[M*2+1]=F}return x}let p=t;if(p<0&&(p=o+p),p<0||p>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);let g=N.zeros([...n],e),h=g.data,b=n[p],A=[],S=1;for(let x=o-1;x>=0;x--)A.unshift(S),S*=n[x];let D=r.size,w=A[p];for(let x=0;x<D;x++)if(Math.floor(x/w)%b===0)h[x*2]=y[x*2],h[x*2+1]=y[x*2+1];else{let z=h[(x-w)*2],F=h[(x-w)*2+1],M=y[x*2],T=y[x*2+1];h[x*2]=z*M-F*T,h[x*2+1]=z*T+F*M}return g}if(t===void 0){let y=r.size,f=new Float64Array(y),p=1;for(let g=0;g<y;g++)p*=Number(a[g]),f[g]=p;return N.fromData(f,[y],"float64")}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=new Float64Array(r.size),u=n[i],c=[],l=1;for(let y=o-1;y>=0;y--)c.unshift(l),l*=n[y];let m=r.size,d=c[i];for(let y=0;y<m;y++)Math.floor(y/d)%u===0?s[y]=Number(a[y]):s[y]=s[y-d]*Number(a[y]);return N.fromData(s,[...n],"float64")}function ae(r,t,e=!1){let n=r.dtype;if(v(n)){let m=Vr(r,t,e),d=jr(r,t,e);if(m instanceof E&&d instanceof E)return new E(m.re-d.re,m.im-d.im);let y=m,f=d,p=y.data,g=f.data,h=new Float64Array(y.size*2);for(let b=0;b<y.size;b++)h[b*2]=p[b*2]-g[b*2],h[b*2+1]=p[b*2+1]-g[b*2+1];return N.fromData(h,[...y.shape],n)}let o=Vr(r,t,e),a=jr(r,t,e);if(typeof o=="number"&&typeof a=="number")return o-a;let i=o,s=a,u=i.data,c=s.data,l=new Float64Array(i.size);for(let m=0;m<i.size;m++)l[m]=Number(u[m])-Number(c[m]);return N.fromData(l,[...i.shape],"float64")}function se(r,t,e=!1){return Lr(r,.5,t,e)}function ie(r,t,e,n=!1){return Lr(r,t/100,e,n)}function Lr(r,t,e,n=!1){if(U(r.dtype,"quantile","Complex numbers are not orderable."),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 y=[];for(let A=0;A<r.size;A++)y.push(Number(i[A]));y.sort((A,S)=>A-S);let f=y.length,p=t*(f-1),g=Math.floor(p),h=Math.ceil(p);if(g===h)return y[g];let b=p-g;return y[g]*(1-b)+y[h]*b}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((y,f)=>f!==s);if(u.length===0)return Lr(r,t);let c=u.reduce((y,f)=>y*f,1),l=o[s],m=new Float64Array(c);for(let y=0;y<c;y++){let f=[];for(let A=0;A<l;A++){let S=R(y,s,A,o),D=$(S,o);f.push(Number(i[D]))}f.sort((A,S)=>A-S);let p=f.length,g=t*(p-1),h=Math.floor(g),b=Math.ceil(g);if(h===b)m[y]=f[h];else{let A=g-h;m[y]=f[h]*(1-A)+f[b]*A}}let d=N.fromData(m,u,"float64");if(n){let y=[...o];return y[s]=1,N.fromData(m,y,"float64")}return d}function Qr(r,t,e,n=!1){let o=r.dtype,a=r.shape,i=a.length,s=r.data;if(e===void 0)return Nt(r,t,n);if(v(o)){let p=s,g=e.data;if(t===void 0){let x=0,I=0,z=0;for(let F=0;F<r.size;F++){let M=Number(g[F%e.size]),T=p[F*2],O=p[F*2+1];x+=T*M,I+=O*M,z+=M}return z===0?new E(NaN,NaN):new E(x/z,I/z)}let h=t;if(h<0&&(h=i+h),h<0||h>=i)throw new Error(`axis ${t} is out of bounds for array of dimension ${i}`);let b=Array.from(a).filter((x,I)=>I!==h);if(b.length===0)return Qr(r,void 0,e);let A=b.reduce((x,I)=>x*I,1),S=a[h],D=N.zeros(b,o),w=D.data;for(let x=0;x<A;x++){let I=0,z=0,F=0;for(let M=0;M<S;M++){let T=R(x,h,M,a),O=$(T,a),C=Number(g[M%e.size]),q=p[O*2],V=p[O*2+1];I+=q*C,z+=V*C,F+=C}F===0?(w[x*2]=NaN,w[x*2+1]=NaN):(w[x*2]=I/F,w[x*2+1]=z/F)}if(n){let x=[...a];return x[h]=1,N.fromData(w,x,o)}return D}if(t===void 0){let p=0,g=0,h=e.data;for(let b=0;b<r.size;b++){let A=Number(h[b%e.size]);p+=Number(s[b])*A,g+=A}return g===0?NaN:p/g}let u=t;if(u<0&&(u=i+u),u<0||u>=i)throw new Error(`axis ${t} is out of bounds for array of dimension ${i}`);let c=Array.from(a).filter((p,g)=>g!==u);if(c.length===0)return Qr(r,void 0,e);let l=c.reduce((p,g)=>p*g,1),m=a[u],d=e.data,y=new Float64Array(l);for(let p=0;p<l;p++){let g=0,h=0;for(let b=0;b<m;b++){let A=R(p,u,b,a),S=$(A,a),D=Number(d[b%e.size]);g+=Number(s[S])*D,h+=D}y[p]=h===0?NaN:g/h}let f=N.fromData(y,c,"float64");if(n){let p=[...a];return p[u]=1,N.fromData(y,p,"float64")}return f}function tr(r,t){return isNaN(r)||isNaN(t)}function xt(r,t,e=!1){let n=r.dtype,o=v(n),a=r.shape,i=a.length,s=r.data;if(t===void 0){if(o){let p=s,g=0,h=0;for(let b=0;b<r.size;b++){let A=p[b*2],S=p[b*2+1];tr(A,S)||(g+=A,h+=S)}return new E(g,h)}let f=0;for(let p=0;p<r.size;p++){let g=Number(s[p]);isNaN(g)||(f+=g)}return f}let u=t;if(u<0&&(u=i+u),u<0||u>=i)throw new Error(`axis ${t} is out of bounds for array of dimension ${i}`);let c=Array.from(a).filter((f,p)=>p!==u);if(c.length===0)return xt(r);let l=c.reduce((f,p)=>f*p,1),m=a[u];if(o){let f=s,p=new Float64Array(l*2);for(let g=0;g<l;g++){let h=0,b=0;for(let A=0;A<m;A++){let S=R(g,u,A,a),D=$(S,a),w=f[D*2],x=f[D*2+1];tr(w,x)||(h+=w,b+=x)}p[g*2]=h,p[g*2+1]=b}if(e){let g=[...a];return g[u]=1,N.fromData(p,g,n)}return N.fromData(p,c,n)}let d=new Float64Array(l);for(let f=0;f<l;f++){let p=0;for(let g=0;g<m;g++){let h=R(f,u,g,a),b=$(h,a),A=Number(s[b]);isNaN(A)||(p+=A)}d[f]=p}let y=N.fromData(d,c,"float64");if(e){let f=[...a];return f[u]=1,N.fromData(d,f,"float64")}return y}function wt(r,t,e=!1){let n=r.dtype,o=v(n),a=r.shape,i=a.length,s=r.data;if(t===void 0){if(o){let p=s,g=1,h=0;for(let b=0;b<r.size;b++){let A=p[b*2],S=p[b*2+1];if(!tr(A,S)){let D=g*A-h*S,w=g*S+h*A;g=D,h=w}}return new E(g,h)}let f=1;for(let p=0;p<r.size;p++){let g=Number(s[p]);isNaN(g)||(f*=g)}return f}let u=t;if(u<0&&(u=i+u),u<0||u>=i)throw new Error(`axis ${t} is out of bounds for array of dimension ${i}`);let c=Array.from(a).filter((f,p)=>p!==u);if(c.length===0)return wt(r);let l=c.reduce((f,p)=>f*p,1),m=a[u];if(o){let f=s,p=new Float64Array(l*2);for(let g=0;g<l;g++){let h=1,b=0;for(let A=0;A<m;A++){let S=R(g,u,A,a),D=$(S,a),w=f[D*2],x=f[D*2+1];if(!tr(w,x)){let I=h*w-b*x,z=h*x+b*w;h=I,b=z}}p[g*2]=h,p[g*2+1]=b}if(e){let g=[...a];return g[u]=1,N.fromData(p,g,n)}return N.fromData(p,c,n)}let d=new Float64Array(l);for(let f=0;f<l;f++){let p=1;for(let g=0;g<m;g++){let h=R(f,u,g,a),b=$(h,a),A=Number(s[b]);isNaN(A)||(p*=A)}d[f]=p}let y=N.fromData(d,c,"float64");if(e){let f=[...a];return f[u]=1,N.fromData(d,f,"float64")}return y}function It(r,t,e=!1){let n=r.dtype,o=v(n),a=r.shape,i=a.length,s=r.data;if(t===void 0){if(o){let g=s,h=0,b=0,A=0;for(let S=0;S<r.size;S++){let D=g[S*2],w=g[S*2+1];tr(D,w)||(h+=D,b+=w,A++)}return A===0?new E(NaN,NaN):new E(h/A,b/A)}let f=0,p=0;for(let g=0;g<r.size;g++){let h=Number(s[g]);isNaN(h)||(f+=h,p++)}return p===0?NaN:f/p}let u=t;if(u<0&&(u=i+u),u<0||u>=i)throw new Error(`axis ${t} is out of bounds for array of dimension ${i}`);let c=Array.from(a).filter((f,p)=>p!==u);if(c.length===0)return It(r);let l=c.reduce((f,p)=>f*p,1),m=a[u];if(o){let f=s,p=new Float64Array(l*2);for(let g=0;g<l;g++){let h=0,b=0,A=0;for(let S=0;S<m;S++){let D=R(g,u,S,a),w=$(D,a),x=f[w*2],I=f[w*2+1];tr(x,I)||(h+=x,b+=I,A++)}A===0?(p[g*2]=NaN,p[g*2+1]=NaN):(p[g*2]=h/A,p[g*2+1]=b/A)}if(e){let g=[...a];return g[u]=1,N.fromData(p,g,n)}return N.fromData(p,c,n)}let d=new Float64Array(l);for(let f=0;f<l;f++){let p=0,g=0;for(let h=0;h<m;h++){let b=R(f,u,h,a),A=$(b,a),S=Number(s[A]);isNaN(S)||(p+=S,g++)}d[f]=g===0?NaN:p/g}let y=N.fromData(d,c,"float64");if(e){let f=[...a];return f[u]=1,N.fromData(d,f,"float64")}return y}function Pr(r,t,e=0,n=!1){let o=r.dtype,a=r.shape,i=a.length,s=r.data;if(v(o)){let f=s;if(t===void 0){let D=0,w=0,x=0;for(let M=0;M<r.size;M++){let T=f[M*2],O=f[M*2+1];tr(T,O)||(D+=T,w+=O,x++)}if(x-e<=0)return NaN;let I=D/x,z=w/x,F=0;for(let M=0;M<r.size;M++){let T=f[M*2],O=f[M*2+1];if(!tr(T,O)){let C=T-I,q=O-z;F+=C*C+q*q}}return F/(x-e)}let p=t;if(p<0&&(p=i+p),p<0||p>=i)throw new Error(`axis ${t} is out of bounds for array of dimension ${i}`);let g=Array.from(a).filter((D,w)=>w!==p);if(g.length===0)return Pr(r,void 0,e);let h=g.reduce((D,w)=>D*w,1),b=a[p],A=new Float64Array(h);for(let D=0;D<h;D++){let w=0,x=0,I=0;for(let T=0;T<b;T++){let O=R(D,p,T,a),C=$(O,a),q=f[C*2],V=f[C*2+1];tr(q,V)||(w+=q,x+=V,I++)}if(I-e<=0){A[D]=NaN;continue}let z=w/I,F=x/I,M=0;for(let T=0;T<b;T++){let O=R(D,p,T,a),C=$(O,a),q=f[C*2],V=f[C*2+1];if(!tr(q,V)){let k=q-z,L=V-F;M+=k*k+L*L}}A[D]=M/(I-e)}let S=N.fromData(A,g,"float64");if(n){let D=[...a];return D[p]=1,N.fromData(A,D,"float64")}return S}if(t===void 0){let f=0,p=0;for(let b=0;b<r.size;b++){let A=Number(s[b]);isNaN(A)||(f+=A,p++)}if(p-e<=0)return NaN;let g=f/p,h=0;for(let b=0;b<r.size;b++){let A=Number(s[b]);isNaN(A)||(h+=(A-g)**2)}return h/(p-e)}let u=t;if(u<0&&(u=i+u),u<0||u>=i)throw new Error(`axis ${t} is out of bounds for array of dimension ${i}`);let c=Array.from(a).filter((f,p)=>p!==u);if(c.length===0)return Pr(r,void 0,e);let l=c.reduce((f,p)=>f*p,1),m=a[u],d=new Float64Array(l);for(let f=0;f<l;f++){let p=0,g=0;for(let A=0;A<m;A++){let S=R(f,u,A,a),D=$(S,a),w=Number(s[D]);isNaN(w)||(p+=w,g++)}if(g-e<=0){d[f]=NaN;continue}let h=p/g,b=0;for(let A=0;A<m;A++){let S=R(f,u,A,a),D=$(S,a),w=Number(s[D]);isNaN(w)||(b+=(w-h)**2)}d[f]=b/(g-e)}let y=N.fromData(d,c,"float64");if(n){let f=[...a];return f[u]=1,N.fromData(d,f,"float64")}return y}function ue(r,t,e=0,n=!1){let o=Pr(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 N.fromData(i,[...a.shape],"float64")}function Kr(r,t,e=!1){let n=r.dtype,o=r.shape,a=o.length,i=r.data;if(v(n)){let y=i;if(t===void 0){let S=1/0,D=1/0,w=!1;for(let x=0;x<r.size;x++){let I=y[x*2],z=y[x*2+1];isNaN(I)||isNaN(z)||(w?(I<S||I===S&&z<D)&&(S=I,D=z):(S=I,D=z,w=!0))}return w?new E(S,D):new E(NaN,NaN)}let f=t;if(f<0&&(f=a+f),f<0||f>=a)throw new Error(`axis ${t} is out of bounds for array of dimension ${a}`);let p=Array.from(o).filter((S,D)=>D!==f);if(p.length===0)return Kr(r);let g=p.reduce((S,D)=>S*D,1),h=o[f],b=new Float64Array(g*2);for(let S=0;S<g;S++){let D=1/0,w=1/0,x=!1;for(let I=0;I<h;I++){let z=R(S,f,I,o),F=$(z,o),M=y[F*2],T=y[F*2+1];isNaN(M)||isNaN(T)||(x?(M<D||M===D&&T<w)&&(D=M,w=T):(D=M,w=T,x=!0))}b[S*2]=x?D:NaN,b[S*2+1]=x?w:NaN}let A=N.fromData(b,p,n);if(e){let S=[...o];return S[f]=1,N.fromData(b,S,n)}return A}if(t===void 0){let y=1/0;for(let f=0;f<r.size;f++){let p=Number(i[f]);!isNaN(p)&&p<y&&(y=p)}return y===1/0?NaN:y}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,f)=>f!==s);if(u.length===0)return Kr(r);let c=u.reduce((y,f)=>y*f,1),l=o[s],m=new Float64Array(c);for(let y=0;y<c;y++){let f=1/0;for(let p=0;p<l;p++){let g=R(y,s,p,o),h=$(g,o),b=Number(i[h]);!isNaN(b)&&b<f&&(f=b)}m[y]=f===1/0?NaN:f}let d=N.fromData(m,u,"float64");if(e){let y=[...o];return y[s]=1,N.fromData(m,y,"float64")}return d}function rt(r,t,e=!1){let n=r.dtype,o=r.shape,a=o.length,i=r.data;if(v(n)){let y=i;if(t===void 0){let S=-1/0,D=-1/0,w=!1;for(let x=0;x<r.size;x++){let I=y[x*2],z=y[x*2+1];isNaN(I)||isNaN(z)||(w?(I>S||I===S&&z>D)&&(S=I,D=z):(S=I,D=z,w=!0))}return w?new E(S,D):new E(NaN,NaN)}let f=t;if(f<0&&(f=a+f),f<0||f>=a)throw new Error(`axis ${t} is out of bounds for array of dimension ${a}`);let p=Array.from(o).filter((S,D)=>D!==f);if(p.length===0)return rt(r);let g=p.reduce((S,D)=>S*D,1),h=o[f],b=new Float64Array(g*2);for(let S=0;S<g;S++){let D=-1/0,w=-1/0,x=!1;for(let I=0;I<h;I++){let z=R(S,f,I,o),F=$(z,o),M=y[F*2],T=y[F*2+1];isNaN(M)||isNaN(T)||(x?(M>D||M===D&&T>w)&&(D=M,w=T):(D=M,w=T,x=!0))}b[S*2]=x?D:NaN,b[S*2+1]=x?w:NaN}let A=N.fromData(b,p,n);if(e){let S=[...o];return S[f]=1,N.fromData(b,S,n)}return A}if(t===void 0){let y=-1/0;for(let f=0;f<r.size;f++){let p=Number(i[f]);!isNaN(p)&&p>y&&(y=p)}return y===-1/0?NaN:y}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,f)=>f!==s);if(u.length===0)return rt(r);let c=u.reduce((y,f)=>y*f,1),l=o[s],m=new Float64Array(c);for(let y=0;y<c;y++){let f=-1/0;for(let p=0;p<l;p++){let g=R(y,s,p,o),h=$(g,o),b=Number(i[h]);!isNaN(b)&&b>f&&(f=b)}m[y]=f===-1/0?NaN:f}let d=N.fromData(m,u,"float64");if(e){let y=[...o];return y[s]=1,N.fromData(m,y,"float64")}return d}function tt(r,t){let e=r.dtype,n=r.shape,o=n.length,a=r.data;if(v(e)){let m=a;if(t===void 0){let h=1/0,b=1/0,A=-1;for(let S=0;S<r.size;S++){let D=m[S*2],w=m[S*2+1];!tr(D,w)&&Fr(D,w,h,b)<0&&(h=D,b=w,A=S)}return A}let d=t;if(d<0&&(d=o+d),d<0||d>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);let y=Array.from(n).filter((h,b)=>b!==d);if(y.length===0)return tt(r);let f=y.reduce((h,b)=>h*b,1),p=n[d],g=new Int32Array(f);for(let h=0;h<f;h++){let b=1/0,A=1/0,S=0;for(let D=0;D<p;D++){let w=R(h,d,D,n),x=$(w,n),I=m[x*2],z=m[x*2+1];!tr(I,z)&&Fr(I,z,b,A)<0&&(b=I,A=z,S=D)}g[h]=S}return N.fromData(g,y,"int32")}if(t===void 0){let m=1/0,d=-1;for(let y=0;y<r.size;y++){let f=Number(a[y]);!isNaN(f)&&f<m&&(m=f,d=y)}return d}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((m,d)=>d!==i);if(s.length===0)return tt(r);let u=s.reduce((m,d)=>m*d,1),c=n[i],l=new Int32Array(u);for(let m=0;m<u;m++){let d=1/0,y=0;for(let f=0;f<c;f++){let p=R(m,i,f,n),g=$(p,n),h=Number(a[g]);!isNaN(h)&&h<d&&(d=h,y=f)}l[m]=y}return N.fromData(l,s,"int32")}function et(r,t){let e=r.dtype,n=r.shape,o=n.length,a=r.data;if(v(e)){let m=a;if(t===void 0){let h=-1/0,b=-1/0,A=-1;for(let S=0;S<r.size;S++){let D=m[S*2],w=m[S*2+1];!tr(D,w)&&Fr(D,w,h,b)>0&&(h=D,b=w,A=S)}return A}let d=t;if(d<0&&(d=o+d),d<0||d>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);let y=Array.from(n).filter((h,b)=>b!==d);if(y.length===0)return et(r);let f=y.reduce((h,b)=>h*b,1),p=n[d],g=new Int32Array(f);for(let h=0;h<f;h++){let b=-1/0,A=-1/0,S=0;for(let D=0;D<p;D++){let w=R(h,d,D,n),x=$(w,n),I=m[x*2],z=m[x*2+1];!tr(I,z)&&Fr(I,z,b,A)>0&&(b=I,A=z,S=D)}g[h]=S}return N.fromData(g,y,"int32")}if(t===void 0){let m=-1/0,d=-1;for(let y=0;y<r.size;y++){let f=Number(a[y]);!isNaN(f)&&f>m&&(m=f,d=y)}return d}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((m,d)=>d!==i);if(s.length===0)return et(r);let u=s.reduce((m,d)=>m*d,1),c=n[i],l=new Int32Array(u);for(let m=0;m<u;m++){let d=-1/0,y=0;for(let f=0;f<c;f++){let p=R(m,i,f,n),g=$(p,n),h=Number(a[g]);!isNaN(h)&&h>d&&(d=h,y=f)}l[m]=y}return N.fromData(l,s,"int32")}function ce(r,t){let e=r.dtype,n=r.shape,o=n.length,a=r.data;if(v(e)){let y=a,f=r.size;if(t===void 0){let x=N.zeros([f],e),I=x.data,z=0,F=0;for(let M=0;M<f;M++){let T=y[M*2],O=y[M*2+1];tr(T,O)||(z+=T,F+=O),I[M*2]=z,I[M*2+1]=F}return x}let p=t;if(p<0&&(p=o+p),p<0||p>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);let g=N.zeros([...n],e),h=g.data,b=n[p],A=[],S=1;for(let x=o-1;x>=0;x--)A.unshift(S),S*=n[x];let D=r.size,w=A[p];for(let x=0;x<D;x++){let I=y[x*2],z=y[x*2+1],F=Math.floor(x/w)%b,M=tr(I,z);F===0?(h[x*2]=M?0:I,h[x*2+1]=M?0:z):(h[x*2]=h[(x-w)*2]+(M?0:I),h[x*2+1]=h[(x-w)*2+1]+(M?0:z))}return g}if(t===void 0){let y=r.size,f=new Float64Array(y),p=0;for(let g=0;g<y;g++){let h=Number(a[g]);isNaN(h)||(p+=h),f[g]=p}return N.fromData(f,[y],"float64")}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=new Float64Array(r.size),u=n[i],c=[],l=1;for(let y=o-1;y>=0;y--)c.unshift(l),l*=n[y];let m=r.size,d=c[i];for(let y=0;y<m;y++){let f=Number(a[y]);Math.floor(y/d)%u===0?s[y]=isNaN(f)?0:f:s[y]=s[y-d]+(isNaN(f)?0:f)}return N.fromData(s,[...n],"float64")}function le(r,t){let e=r.dtype,n=r.shape,o=n.length,a=r.data;if(v(e)){let y=a,f=r.size;if(t===void 0){let x=N.zeros([f],e),I=x.data,z=1,F=0;for(let M=0;M<f;M++){let T=y[M*2],O=y[M*2+1];if(!tr(T,O)){let C=z*T-F*O,q=z*O+F*T;z=C,F=q}I[M*2]=z,I[M*2+1]=F}return x}let p=t;if(p<0&&(p=o+p),p<0||p>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);let g=N.zeros([...n],e),h=g.data,b=n[p],A=[],S=1;for(let x=o-1;x>=0;x--)A.unshift(S),S*=n[x];let D=r.size,w=A[p];for(let x=0;x<D;x++){let I=y[x*2],z=y[x*2+1],F=Math.floor(x/w)%b,M=tr(I,z);if(F===0)h[x*2]=M?1:I,h[x*2+1]=M?0:z;else{let T=h[(x-w)*2],O=h[(x-w)*2+1];M?(h[x*2]=T,h[x*2+1]=O):(h[x*2]=T*I-O*z,h[x*2+1]=T*z+O*I)}}return g}if(t===void 0){let y=r.size,f=new Float64Array(y),p=1;for(let g=0;g<y;g++){let h=Number(a[g]);isNaN(h)||(p*=h),f[g]=p}return N.fromData(f,[y],"float64")}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=new Float64Array(r.size),u=n[i],c=[],l=1;for(let y=o-1;y>=0;y--)c.unshift(l),l*=n[y];let m=r.size,d=c[i];for(let y=0;y<m;y++){let f=Number(a[y]);Math.floor(y/d)%u===0?s[y]=isNaN(f)?1:f:s[y]=s[y-d]*(isNaN(f)?1:f)}return N.fromData(s,[...n],"float64")}function zt(r,t,e=!1){U(r.dtype,"nanmedian","Complex numbers are not orderable.");let n=r.shape,o=n.length,a=r.data;if(t===void 0){let d=[];for(let p=0;p<r.size;p++){let g=Number(a[p]);isNaN(g)||d.push(g)}if(d.length===0)return NaN;d.sort((p,g)=>p-g);let y=d.length,f=Math.floor(y/2);return y%2===0?(d[f-1]+d[f])/2:d[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((d,y)=>y!==i);if(s.length===0)return zt(r);let u=s.reduce((d,y)=>d*y,1),c=n[i],l=new Float64Array(u);for(let d=0;d<u;d++){let y=[];for(let g=0;g<c;g++){let h=R(d,i,g,n),b=$(h,n),A=Number(a[b]);isNaN(A)||y.push(A)}if(y.length===0){l[d]=NaN;continue}y.sort((g,h)=>g-h);let f=y.length,p=Math.floor(f/2);f%2===0?l[d]=(y[p-1]+y[p])/2:l[d]=y[p]}let m=N.fromData(l,s,"float64");if(e){let d=[...n];return d[i]=1,N.fromData(l,d,"float64")}return m}function nt(r,t,e,n=!1){if(U(r.dtype,"nanquantile","Complex numbers are not orderable."),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 y=[];for(let A=0;A<r.size;A++){let S=Number(i[A]);isNaN(S)||y.push(S)}if(y.length===0)return NaN;y.sort((A,S)=>A-S);let f=y.length,p=t*(f-1),g=Math.floor(p),h=Math.ceil(p);if(g===h)return y[g];let b=p-g;return y[g]*(1-b)+y[h]*b}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((y,f)=>f!==s);if(u.length===0)return nt(r,t);let c=u.reduce((y,f)=>y*f,1),l=o[s],m=new Float64Array(c);for(let y=0;y<c;y++){let f=[];for(let A=0;A<l;A++){let S=R(y,s,A,o),D=$(S,o),w=Number(i[D]);isNaN(w)||f.push(w)}if(f.length===0){m[y]=NaN;continue}f.sort((A,S)=>A-S);let p=f.length,g=t*(p-1),h=Math.floor(g),b=Math.ceil(g);if(h===b)m[y]=f[h];else{let A=g-h;m[y]=f[h]*(1-A)+f[b]*A}}let d=N.fromData(m,u,"float64");if(n){let y=[...o];return y[s]=1,N.fromData(m,y,"float64")}return d}function fe(r,t,e,n=!1){return nt(r,t/100,e,n)}function K(r,t){let e=r.size,n=r.dtype,o=t.indexOf(-1),a;if(o!==-1){let c=t.reduce((m,d,y)=>y===o?m:m*d,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,d)=>d===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 N.fromData(c,a,n,ar(a),0)}let u=r.copy().data;return N.fromData(u,a,n,ar(a),0)}function Or(r){let t=r.size,e=r.dtype,n=P(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 N.fromData(s,[t],e,[1],0)}let o=new n(t),a=B(e);for(let i=0;i<t;i++){let s=r.iget(i);o[i]=s}return N.fromData(o,[t],e,[1],0)}function Gr(r){let t=r.size,e=r.dtype;if(r.isCContiguous){let n=r.data;return N.fromData(n,[t],e,[1],0)}return Or(r)}function at(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,d)=>n-1-d);else{if(t.length!==n)throw new Error(`axes must have length ${n}, got ${t.length}`);let m=new Set;for(let d of t){let y=d<0?n+d:d;if(y<0||y>=n)throw new Error(`axis ${d} is out of bounds for array of dimension ${n}`);if(m.has(y))throw new Error("repeated axis in transpose");m.add(y)}s=t.map(d=>d<0?n+d:d)}let u=s.map(m=>e[m]),c=Array.from(o),l=s.map(m=>c[m]);return N.fromData(a,u,i,l,r.offset)}function me(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)),N.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 N.fromData(a,u,i,c,r.offset)}}function ot(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),N.fromData(a,u,i,c,r.offset)}function mo(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 N.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]],N.fromData(i,l,s,m,r.offset)}function pe(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 at(r,u)}function vr(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 y=1;y<r.length;y++){let f=r[y];if(f.ndim!==n)throw new Error("all the input arrays must have same number of dimensions");for(let p=0;p<n;p++)if(p!==a&&f.shape[p]!==e.shape[p])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 y=1;y<r.length;y++)s+=r[y].shape[a];i[a]=s;let u=i.reduce((y,f)=>y*f,1),c=P(o);if(!c)throw new Error(`Cannot concatenate arrays with dtype ${o}`);let l=new c(u),m=ar(i),d=0;for(let y of r){let f=y.shape[a];Ku(y,l,i,m,a,d,o),d+=f}return N.fromData(l,i,o)}function Ku(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 y=a*n[0],f=r.data,p=r.offset,g=p+c;t.set(f.subarray(p,g),y);return}if(o===1&&u===2&&r.isCContiguous){let y=s[0],f=s[1],p=e[1],g=r.data,h=r.offset;for(let b=0;b<y;b++){let A=h+b*f,S=b*p+a;t.set(g.subarray(A,A+f),S)}return}let m=new Array(u).fill(0),d=a*n[o];for(let y=0;y<c;y++){let f=r.iget(y),p=d;for(let g=0;g<u;g++)p+=m[g]*n[g];t[p]=f;for(let g=u-1;g>=0&&(m[g]++,!(m[g]<s[g]));g--)m[g]=0}}function po(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=>ot(s,a));return vr(i,a)}function yo(r){if(r.length===0)throw new Error("need at least one array to stack");let t=r.map(e=>e.ndim===1?K(e,[1,e.shape[0]]):e);return vr(t,0)}function ye(r){if(r.length===0)throw new Error("need at least one array to stack");return r.every(e=>e.ndim===1)?vr(r,0):vr(r,1)}function go(r){if(r.length===0)throw new Error("need at least one array to stack");let t=r.map(e=>e.ndim===1?K(ot(K(e,[1,e.shape[0]]),2),[1,e.shape[0],1]):e.ndim===2?ot(e,2):e);return vr(t,2)}function Ao(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 bo(r,s,a)}function st(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 d=0;d<u-1;d++)m+=c+(d<l?1:0),s.push(m)}else s=t;return bo(r,s,a)}function bo(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(N.fromData(r.data,l,r.dtype,Array.from(r.strides),m))}return i}function ho(r,t){if(r.ndim<2)throw new Error("vsplit only works on arrays of 2 or more dimensions");return st(r,t,0)}function So(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 st(r,t,e)}function Do(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 b=0;b<n;b++)s[i-n+b]=e[b];for(let b=0;b<a.length;b++)u[i-a.length+b]=a[b];let c=s.map((b,A)=>b*u[A]),l=c.reduce((b,A)=>b*A,1),m=P(o);if(!m)throw new Error(`Cannot tile array with dtype ${o}`);let d=new m(l),y=ar(c),f=r;n<i&&(f=K(r,s));let p=o==="int64"||o==="uint64",g=f.strides,h=new Array(i).fill(0);for(let b=0;b<l;b++){let A=f.offset;for(let w=0;w<i;w++){let x=h[w]%s[w];A+=x*g[w]}let S=f.data[A],D=0;for(let w=0;w<i;w++)D+=h[w]*y[w];d[D]=S;for(let w=i-1;w>=0&&(h[w]++,!(h[w]<c[w]));w--)h[w]=0}return N.fromData(d,c,o)}function No(r,t,e){let n=r.shape,o=n.length,a=r.dtype,i=r.size;if(e===void 0){let b=i,A=Array.isArray(t)?t:new Array(b).fill(t);if(A.length!==b)throw new Error(`operands could not be broadcast together with shape (${b},) (${A.length},)`);let S=A.reduce((I,z)=>I+z,0),D=P(a);if(!D)throw new Error(`Cannot repeat array with dtype ${a}`);let w=new D(S),x=0;for(let I=0;I<b;I++){let z=r.iget(I),F=A[I];for(let M=0;M<F;M++)w[x++]=z}return N.fromData(w,[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((b,A)=>b+A,0);let m=l.reduce((b,A)=>b*A,1),d=P(a);if(!d)throw new Error(`Cannot repeat array with dtype ${a}`);let y=new d(m),f=ar(l),p=new Array(o).fill(0),g=a==="int64"||a==="uint64",h=[0];for(let b=0;b<u;b++)h.push(h[b]+c[b]);for(let b=0;b<i;b++){let A=r.iget(b),S=p[s],D=c[S],w=0;for(let z=0;z<o;z++)z!==s&&(w+=p[z]*f[z]);let x=f[s],I=h[S];for(let z=0;z<D;z++){let F=w+(I+z)*x;y[F]=A}for(let z=o-1;z>=0&&(p[z]++,!(p[z]<n[z]));z--)p[z]=0}return N.fromData(y,l,a)}function xo(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},(d,y)=>y));else if(typeof t=="number"){let d=t<0?n+t:t;if(d<0||d>=n)throw new Error(`axis ${t} is out of bounds for array of dimension ${n}`);i=new Set([d])}else i=new Set(t.map(d=>{let y=d<0?n+d:d;if(y<0||y>=n)throw new Error(`axis ${d} is out of bounds for array of dimension ${n}`);return y}));let s=P(o);if(!s)throw new Error(`Cannot flip array with dtype ${o}`);let u=new s(a),c=B(o);if(n===1&&r.isCContiguous){let d=r.data,y=r.offset;for(let f=0;f<a;f++)u[f]=d[y+a-1-f];return N.fromData(u,[...e],o)}if(n===2&&r.isCContiguous){let d=e[0],y=e[1],f=r.data,p=r.offset;if(i.size===2){for(let g=0;g<a;g++)u[g]=f[p+a-1-g];return N.fromData(u,[...e],o)}if(i.size===1){if(i.has(0)){for(let g=0;g<d;g++){let h=p+(d-1-g)*y,b=g*y;for(let A=0;A<y;A++)u[b+A]=f[h+A]}return N.fromData(u,[...e],o)}else if(i.has(1)){for(let g=0;g<d;g++){let h=p+g*y,b=g*y;for(let A=0;A<y;A++)u[b+A]=f[h+y-1-A]}return N.fromData(u,[...e],o)}}}let l=new Array(n),m=new Array(n).fill(0);for(let d=0;d<a;d++){for(let p=0;p<n;p++)l[p]=i.has(p)?e[p]-1-m[p]:m[p];let y=r.offset;for(let p=0;p<n;p++)y+=l[p]*r.strides[p];let f=r.data[y];u[d]=f;for(let p=n-1;p>=0&&(m[p]++,!(m[p]<e[p]));p--)m[p]=0}return N.fromData(u,[...e],o)}function wo(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=P(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,h)=>g*h,1),m=new u(l),d=ar(c),y=B(a),f=new Array(o).fill(0),p=new Array(o);for(let g=0;g<r.size;g++){for(let D=0;D<o;D++)p[D]=f[D];let h,b;t===1?(h=n[s]-1-f[s],b=f[i]):t===2?(h=n[i]-1-f[i],b=n[s]-1-f[s],p[i]=h,p[s]=b):(h=f[s],b=n[i]-1-f[i]),t!==2&&(p[i]=h,p[s]=b);let A=0;for(let D=0;D<o;D++)A+=p[D]*d[D];let S=r.iget(g);m[A]=S;for(let D=o-1;D>=0&&(f[D]++,!(f[D]<n[D]));D--)f[D]=0}return N.fromData(m,c,a)}function Io(r,t,e){let n=r.shape,o=n.length,a=r.dtype,i=r.size;if(e===void 0){let f=Array.isArray(t)?t.reduce((A,S)=>A+S,0):t,p=Or(r),g=P(a);if(!g)throw new Error(`Cannot roll array with dtype ${a}`);let h=new g(i),b=B(a);for(let A=0;A<i;A++){let S=((A-f)%i+i)%i,D=p.iget(S);h[A]=D}return N.fromData(h,[...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(f=>{let p=f<0?o+f:f;if(p<0||p>=o)throw new Error(`axis ${f} is out of bounds for array of dimension ${o}`);return p}),l=P(a);if(!l)throw new Error(`Cannot roll array with dtype ${a}`);let m=new l(i),d=B(a),y=new Array(o).fill(0);for(let f=0;f<i;f++){let p=[...y];for(let b=0;b<c.length;b++){let A=c[b],S=n[A],D=s[b];p[A]=((p[A]-D)%S+S)%S}let g=r.offset;for(let b=0;b<o;b++)g+=p[b]*r.strides[b];let h=r.data[g];m[f]=h;for(let b=o-1;b>=0&&(y[b]++,!(y[b]<n[b]));b--)y[b]=0}return N.fromData(m,[...n],a)}function zo(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?N.fromData(r.data,Array.from(r.shape),r.dtype,Array.from(r.strides),r.offset):pe(r,o,a)}function _o(r,t){if(r.ndim<3)throw new Error("dsplit only works on arrays of 3 or more dimensions");return st(r,t,2)}function Mo(r){if(r.length===0)throw new Error("need at least one array to stack");let t=r.map(e=>e.ndim===1?K(e,[e.shape[0],1]):e);return ye(t)}function Fo(r,t){let e=r.dtype,n=t.reduce((u,c)=>u*c,1),o=r.size,a=P(e);if(!a)throw new Error(`Cannot resize array with dtype ${e}`);let i=new a(n),s=B(e);for(let u=0;u<n;u++){let c=u%o,l=r.iget(c);i[u]=l}return N.fromData(i,t,e)}function vo(r){return r.map(t=>t.ndim===0?K(t,[1]):t)}function Bo(r){return r.map(t=>t.ndim===0?K(t,[1,1]):t.ndim===1?K(t,[1,t.shape[0]]):t)}function Eo(r){return r.map(t=>t.ndim===0?K(t,[1,1,1]):t.ndim===1?K(t,[1,t.shape[0],1]):t.ndim===2?K(t,[t.shape[0],t.shape[1],1]):t)}function To(r,t=0){let e=r.shape,n=e.length,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[o],i=[];for(let s=0;s<a;s++){let u=[];for(let m=0;m<n;m++)m===o?u.push({start:s,stop:s+1,step:1}):u.push({start:0,stop:e[m],step:1});let c=rc(r,u),l=me(c,o);i.push(l)}return i}function Oo(r,t=1){if(r.length===0)throw new Error("need at least one array to block");return r.length===1?r[0].copy():vr(r,-1)}function rc(r,t){let e=r.shape,n=r.strides,o=r.offset,a=r.dtype,i=r.data,s=[],u=[];for(let c=0;c<e.length;c++){let l=t[c],{start:m,stop:d,step:y}=l,f=Math.ceil((d-m)/y);s.push(f),u.push(n[c]*y),o+=m*n[c]}return N.fromData(i,s,a,u,o)}function Sr(r,t){if(r instanceof E||t instanceof E){let e=r instanceof E?r:new E(Number(r),0),n=t instanceof E?t:new E(Number(t),0);return e.mul(n)}return typeof r=="bigint"&&typeof t=="bigint"?Number(r*t):Number(r)*Number(t)}function tc(r,t,e,n,o,a,i,s,u,c,l,m,d,y){if(m===0)for(let h=0;h<n*o;h++)d[h]=0;else if(m!==1)for(let h=0;h<n*o;h++)d[h]=(d[h]??0)*m;let f=r==="row-major",p=t==="transpose",g=e==="transpose";if(f&&!p&&!g)for(let h=0;h<n;h++)for(let b=0;b<o;b++){let A=0;for(let S=0;S<a;S++)A+=(s[h*u+S]??0)*(c[S*l+b]??0);d[h*y+b]=(d[h*y+b]??0)+i*A}else if(f&&p&&!g)for(let h=0;h<n;h++)for(let b=0;b<o;b++){let A=0;for(let S=0;S<a;S++)A+=(s[S*u+h]??0)*(c[S*l+b]??0);d[h*y+b]=(d[h*y+b]??0)+i*A}else if(f&&!p&&g)for(let h=0;h<n;h++)for(let b=0;b<o;b++){let A=0;for(let S=0;S<a;S++)A+=(s[h*u+S]??0)*(c[b*l+S]??0);d[h*y+b]=(d[h*y+b]??0)+i*A}else if(f&&p&&g)for(let h=0;h<n;h++)for(let b=0;b<o;b++){let A=0;for(let S=0;S<a;S++)A+=(s[S*u+h]??0)*(c[b*l+S]??0);d[h*y+b]=(d[h*y+b]??0)+i*A}else if(!f&&!p&&!g)for(let h=0;h<n;h++)for(let b=0;b<o;b++){let A=0;for(let S=0;S<a;S++)A+=(s[S*u+h]??0)*(c[b*l+S]??0);d[b*y+h]=(d[b*y+h]??0)+i*A}else if(!f&&p&&!g)for(let h=0;h<n;h++)for(let b=0;b<o;b++){let A=0;for(let S=0;S<a;S++)A+=(s[h*u+S]??0)*(c[b*l+S]??0);d[b*y+h]=(d[b*y+h]??0)+i*A}else if(!f&&!p&&g)for(let h=0;h<n;h++)for(let b=0;b<o;b++){let A=0;for(let S=0;S<a;S++)A+=(s[S*u+h]??0)*(c[S*l+b]??0);d[b*y+h]=(d[b*y+h]??0)+i*A}else for(let h=0;h<n;h++)for(let b=0;b<o;b++){let A=0;for(let S=0;S<a;S++)A+=(s[h*u+S]??0)*(c[S*l+b]??0);d[b*y+h]=(d[b*y+h]??0)+i*A}}function Zr(r,t){let e=r.ndim,n=t.ndim,o=v(r.dtype)||v(t.dtype);if(e===0||n===0){let a=e===0?r.get():null,i=n===0?t.get():null;if(e===0&&n===0)return Sr(a,i);if(e===0){let s=W(r.dtype,t.dtype),u=N.zeros([...t.shape],s),c=(l,m)=>{let d=new Array(m.length),y=l;for(let f=m.length-1;f>=0;f--)d[f]=y%m[f],y=Math.floor(y/m[f]);return d};for(let l=0;l<t.size;l++){let m=c(l,t.shape),d=t.get(...m);u.set(m,Sr(a,d))}return u}else{let s=W(r.dtype,t.dtype),u=N.zeros([...r.shape],s),c=(l,m)=>{let d=new Array(m.length),y=l;for(let f=m.length-1;f>=0;f--)d[f]=y%m[f],y=Math.floor(y/m[f]);return d};for(let l=0;l<r.size;l++){let m=c(l,r.shape),d=r.get(...m);u.set(m,Sr(d,i))}return u}}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 a=r.shape[0];if(o){let s=0,u=0;for(let c=0;c<a;c++){let l=r.get(c),m=t.get(c),d=Sr(l,m);d instanceof E?(s+=d.re,u+=d.im):s+=d}return new E(s,u)}let i=0;for(let s=0;s<a;s++){let u=r.get(s),c=t.get(s);typeof u=="bigint"&&typeof c=="bigint"?i=Number(i)+Number(u*c):i+=Number(u)*Number(c)}return i}if(e===2&&n===2)return ur(r,t);if(e===2&&n===1){let[a,i]=r.shape,s=t.shape[0];if(i!==s)throw new Error(`dot: incompatible shapes (${a},${i}) and (${s},)`);let u=W(r.dtype,t.dtype),c=N.zeros([a],u);if(o)for(let l=0;l<a;l++){let m=0,d=0;for(let y=0;y<i;y++){let f=r.get(l,y),p=t.get(y),g=f instanceof E?f:new E(Number(f),0),h=p instanceof E?p:new E(Number(p),0);m+=g.re*h.re-g.im*h.im,d+=g.re*h.im+g.im*h.re}c.set([l],new E(m,d))}else for(let l=0;l<a;l++){let m=0;for(let d=0;d<i;d++){let y=r.get(l,d),f=t.get(d);typeof y=="bigint"&&typeof f=="bigint"?m=Number(m)+Number(y*f):m+=Number(y)*Number(f)}c.set([l],m)}return c}if(e===1&&n===2){let a=r.shape[0],[i,s]=t.shape;if(a!==i)throw new Error(`dot: incompatible shapes (${a},) and (${i},${s})`);let u=W(r.dtype,t.dtype),c=N.zeros([s],u);if(o)for(let l=0;l<s;l++){let m=0,d=0;for(let y=0;y<a;y++){let f=r.get(y),p=t.get(y,l),g=f instanceof E?f:new E(Number(f),0),h=p instanceof E?p:new E(Number(p),0);m+=g.re*h.re-g.im*h.im,d+=g.re*h.im+g.im*h.re}c.set([l],new E(m,d))}else for(let l=0;l<s;l++){let m=0;for(let d=0;d<a;d++){let y=r.get(d),f=t.get(d,l);typeof y=="bigint"&&typeof f=="bigint"?m=Number(m)+Number(y*f):m+=Number(y)*Number(f)}c.set([l],m)}return c}if(e>2&&n===1){let a=r.shape[e-1],i=t.shape[0];if(a!==i)throw new Error(`dot: incompatible shapes ${JSON.stringify(r.shape)} and (${i},)`);let s=[...r.shape.slice(0,-1)],u=W(r.dtype,t.dtype),c=N.zeros(s,u),l=s.reduce((m,d)=>m*d,1);if(o)for(let m=0;m<l;m++){let d=0,y=0,f=m,p=[];for(let g=s.length-1;g>=0;g--)p[g]=f%s[g],f=Math.floor(f/s[g]);for(let g=0;g<a;g++){let h=[...p,g],b=r.get(...h),A=t.get(g),S=b instanceof E?b:new E(Number(b),0),D=A instanceof E?A:new E(Number(A),0);d+=S.re*D.re-S.im*D.im,y+=S.re*D.im+S.im*D.re}c.set(p,new E(d,y))}else for(let m=0;m<l;m++){let d=0,y=m,f=[];for(let p=s.length-1;p>=0;p--)f[p]=y%s[p],y=Math.floor(y/s[p]);for(let p=0;p<a;p++){let g=[...f,p],h=r.get(...g),b=t.get(p);typeof h=="bigint"&&typeof b=="bigint"?d=Number(d)+Number(h*b):d+=Number(h)*Number(b)}c.set(f,d)}return c}if(e===1&&n>2){let a=r.shape[0],i=1,s=t.shape[i];if(a!==s)throw new Error(`dot: incompatible shapes (${a},) and ${JSON.stringify(t.shape)}`);let u=[...t.shape.slice(0,i),...t.shape.slice(i+1)],c=W(r.dtype,t.dtype),l=N.zeros(u,c),m=u.reduce((d,y)=>d*y,1);if(o)for(let d=0;d<m;d++){let y=d,f=[];for(let A=u.length-1;A>=0;A--)f[A]=y%u[A],y=Math.floor(y/u[A]);let p=f.slice(0,i),g=f.slice(i),h=0,b=0;for(let A=0;A<a;A++){let S=r.get(A),D=[...p,A,...g],w=t.get(...D),x=S instanceof E?S:new E(Number(S),0),I=w instanceof E?w:new E(Number(w),0);h+=x.re*I.re-x.im*I.im,b+=x.re*I.im+x.im*I.re}l.set(f,new E(h,b))}else for(let d=0;d<m;d++){let y=d,f=[];for(let b=u.length-1;b>=0;b--)f[b]=y%u[b],y=Math.floor(y/u[b]);let p=f.slice(0,i),g=f.slice(i),h=0;for(let b=0;b<a;b++){let A=r.get(b),S=[...p,b,...g],D=t.get(...S);typeof A=="bigint"&&typeof D=="bigint"?h=Number(h)+Number(A*D):h+=Number(A)*Number(D)}l.set(f,h)}return l}if(e>=2&&n>=2&&!(e===2&&n===2)){let a=r.shape[e-1],i=t.shape[n-2];if(a!==i)throw new Error(`dot: incompatible shapes ${JSON.stringify(r.shape)} and ${JSON.stringify(t.shape)}`);let s=[...r.shape.slice(0,-1),...t.shape.slice(0,-2),t.shape[n-1]],u=W(r.dtype,t.dtype),c=N.zeros(s,u),l=r.shape.slice(0,-1).reduce((f,p)=>f*p,1),m=t.shape.slice(0,-2).reduce((f,p)=>f*p,1),d=t.shape[n-1],y=a;if(o)for(let f=0;f<l;f++)for(let p=0;p<m;p++)for(let g=0;g<d;g++){let h=0,b=0;for(let D=0;D<y;D++){let w=[],x=f;for(let C=r.shape.length-2;C>=0;C--)w.unshift(x%r.shape[C]),x=Math.floor(x/r.shape[C]);w.push(D);let I=r.get(...w),z=[],F=p;for(let C=t.shape.length-3;C>=0;C--)z.unshift(F%t.shape[C]),F=Math.floor(F/t.shape[C]);z.push(D,g);let M=t.get(...z),T=I instanceof E?I:new E(Number(I),0),O=M instanceof E?M:new E(Number(M),0);h+=T.re*O.re-T.im*O.im,b+=T.re*O.im+T.im*O.re}let A=f*m*d+p*d+g,S=c.data;S[A*2]=h,S[A*2+1]=b}else for(let f=0;f<l;f++)for(let p=0;p<m;p++)for(let g=0;g<d;g++){let h=0;for(let A=0;A<y;A++){let S=f*y+A,D=p*y*d+A*d+g,w=r.data[S+r.offset],x=t.data[D+t.offset];typeof w=="bigint"&&typeof x=="bigint"?h=Number(h)+Number(w*x):h+=Number(w)*Number(x)}let b=f*m*d+p*d+g;c.data[b]=h}return c}throw new Error(`dot: unexpected combination of dimensions ${e}D \xB7 ${n}D`)}function ur(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=W(r.dtype,t.dtype);if(v(i)){let D=N.zeros([e,a],i),w=D.data,x=r.data,I=t.data;for(let z=0;z<e;z++)for(let F=0;F<a;F++){let M=0,T=0;for(let C=0;C<n;C++){let q=(z*n+C)*2,V=(C*a+F)*2,k=x[q],L=x[q+1],j=I[V],J=I[V+1];M+=k*j-L*J,T+=k*J+L*j}let O=z*a+F;w[O*2]=M,w[O*2+1]=T}return D}let 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,[d=0,y=0]=t.strides,f=m>l,p=y>d,g=f?"transpose":"no-transpose",h=p?"transpose":"no-transpose",b,A;f?b=m:b=l,p?A=y:A=d;let S=N.zeros([e,a],"float64");return tc("row-major",g,h,e,a,n,1,u,b,c,A,0,S.data,a),S}function ge(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);if(v(r.dtype)){let a=0,i=0;for(let s=0;s<n;s++){let u=r.get(s,s);a+=u.re,i+=u.im}return new E(a,i)}let 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 it(r,t){return at(r,t)}function $o(r,t){let e=r.ndim,n=t.ndim,o=v(r.dtype)||v(t.dtype),a=r.shape[e-1],i=t.shape[n-1];if(a!==i)throw new Error(`inner: incompatible shapes - last dimensions ${a} and ${i} don't match`);if(e===1&&n===1)return Zr(r,t);let s=[...r.shape.slice(0,-1),...t.shape.slice(0,-1)],u=W(r.dtype,t.dtype),c=N.zeros(s,u),l=e===1?1:r.shape.slice(0,-1).reduce((y,f)=>y*f,1),m=n===1?1:t.shape.slice(0,-1).reduce((y,f)=>y*f,1),d=a;if(o)for(let y=0;y<l;y++)for(let f=0;f<m;f++){let p=0,g=0;for(let A=0;A<d;A++){let S,D;if(e===1)S=r.get(A);else{let I=[],z=y,F=r.shape.slice(0,-1);for(let M=F.length-1;M>=0;M--)I.unshift(z%F[M]),z=Math.floor(z/F[M]);I.push(A),S=r.get(...I)}if(n===1)D=t.get(A);else{let I=[],z=f,F=t.shape.slice(0,-1);for(let M=F.length-1;M>=0;M--)I.unshift(z%F[M]),z=Math.floor(z/F[M]);I.push(A),D=t.get(...I)}let w=S instanceof E?S:new E(Number(S),0),x=D instanceof E?D:new E(Number(D),0);p+=w.re*x.re-w.im*x.im,g+=w.re*x.im+w.im*x.re}if(s.length===0)return new E(p,g);let h=l===1?f:y*m+f,b=c.data;b[h*2]=p,b[h*2+1]=g}else for(let y=0;y<l;y++)for(let f=0;f<m;f++){let p=0;for(let h=0;h<d;h++){let b=e===1?h:y*d+h,A=n===1?h:f*d+h,S=r.data[b+r.offset],D=t.data[A+t.offset];typeof S=="bigint"&&typeof D=="bigint"?p=Number(p)+Number(S*D):p+=Number(S)*Number(D)}if(s.length===0)return p;let g=l===1?f:y*m+f;c.data[g]=p}return c}function _t(r,t){let e=r.ndim===1?r:Gr(r),n=t.ndim===1?t:Gr(t),o=e.size,a=n.size,i=W(r.dtype,t.dtype),s=N.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),d=Sr(l,m);s.set([u,c],d)}return s}function Ae(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,g)=>r.ndim-f+g),o=Array.from({length:f},(p,g)=>g)}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],g=o[f];if(p<0||p>=r.ndim||g<0||g>=t.ndim)throw new Error("tensordot: axis out of bounds");if(r.shape[p]!==t.shape[g])throw new Error(`tensordot: shape mismatch on axes ${p} and ${g}: ${r.shape[p]} != ${t.shape[g]}`)}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])],u=W(r.dtype,t.dtype),c=v(u),l=f=>f instanceof E?{re:f.re,im:f.im}:{re:Number(f),im:0};if(s.length===0){let f=0,p=0,g=n.map(h=>r.shape[h]).reduce((h,b)=>h*b,1);for(let h=0;h<g;h++){let b=h,A=new Array(n.length);for(let I=n.length-1;I>=0;I--){let z=n[I];A[I]=b%r.shape[z],b=Math.floor(b/r.shape[z])}let S=new Array(r.ndim),D=new Array(t.ndim);for(let I=0;I<n.length;I++)S[n[I]]=A[I];for(let I=0;I<o.length;I++)D[o[I]]=A[I];let w=r.get(...S),x=t.get(...D);if(c){let I=l(w),z=l(x);f+=I.re*z.re-I.im*z.im,p+=I.re*z.im+I.im*z.re}else typeof w=="bigint"&&typeof x=="bigint"?f+=Number(w*x):f+=Number(w)*Number(x)}return c?new E(f,p):f}let m=N.zeros(s,u),d=s.reduce((f,p)=>f*p,1),y=n.map(f=>r.shape[f]).reduce((f,p)=>f*p,1);for(let f=0;f<d;f++){let p=f,g=[];for(let D=s.length-1;D>=0;D--)g[D]=p%s[D],p=Math.floor(p/s[D]);let h=g.slice(0,a.length),b=g.slice(a.length),A=0,S=0;for(let D=0;D<y;D++){p=D;let w=[];for(let M=n.length-1;M>=0;M--){let T=n[M];w[M]=p%r.shape[T],p=Math.floor(p/r.shape[T])}let x=new Array(r.ndim),I=new Array(t.ndim);for(let M=0;M<a.length;M++)x[a[M]]=h[M];for(let M=0;M<i.length;M++)I[i[M]]=b[M];for(let M=0;M<n.length;M++)x[n[M]]=w[M],I[o[M]]=w[M];let z=r.get(...x),F=t.get(...I);if(c){let M=l(z),T=l(F);A+=M.re*T.re-M.im*T.im,S+=M.re*T.im+M.im*T.re}else typeof z=="bigint"&&typeof F=="bigint"?A+=Number(z*F):A+=Number(z)*Number(F)}c?m.set(g,new E(A,S)):m.set(g,A)}return m}function be(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 p=0;p<a;p++)p!==i&&p!==s&&m.push(o[p]);m.push(l);let d=N.zeros(m,r.dtype),y=o.filter((p,g)=>g!==i&&g!==s),f=y.reduce((p,g)=>p*g,1);for(let p=0;p<f;p++){let g=p,h=[];for(let b=y.length-1;b>=0;b--)h.unshift(g%y[b]),g=Math.floor(g/y[b]);for(let b=0;b<l;b++){let A=new Array(a),S=0;for(let x=0;x<a;x++)x===i?A[x]=t>=0?b:b-t:x===s?A[x]=t>=0?b+t:b:A[x]=h[S++];let D=[...h,b],w=r.get(...A);d.set(D,w)}}return d}function Ro(r,...t){let e=r.indexOf("->"),n,o;e===-1?(n=r,o=ec(n)):(n=r.slice(0,e),o=r.slice(e+2));let a=n.split(",").map(p=>p.trim());if(a.length!==t.length)throw new Error(`einsum: expected ${a.length} operands, got ${t.length}`);let i=new Map;for(let p=0;p<t.length;p++){let g=a[p],h=t[p];if(g.length!==h.ndim)throw new Error(`einsum: operand ${p} has ${h.ndim} dimensions but subscript '${g}' has ${g.length} indices`);for(let b=0;b<g.length;b++){let A=g[b],S=h.shape[b];if(i.has(A)){if(i.get(A)!==S)throw new Error(`einsum: size mismatch for index '${A}': ${i.get(A)} vs ${S}`)}else i.set(A,S)}}for(let p of o)if(!i.has(p))throw new Error(`einsum: output subscript contains unknown index '${p}'`);let s=new Set(o),u=new Set;for(let p of a)for(let g of p)u.add(g);let c=[];for(let p of u)s.has(p)||c.push(p);if(t.length===2&&a.length===2){let[p,g]=a,[h,b]=t;if(p.length===2&&g.length===2&&o.length===2&&h.ndim===2&&b.ndim===2){let[A,S]=[p[0],p[1]],[D,w]=[g[0],g[1]],[x,I]=[o[0],o[1]];if(A===x&&w===I&&S===D&&c.length===1&&c[0]===S||A===x&&w===I&&S===D&&c.length===1&&c[0]===S)return ur(h,b);if(S===x&&w===I&&A===D&&c.length===1&&c[0]===A){let z=it(h);return ur(z,b)}if(A===x&&D===I&&S===w&&c.length===1&&c[0]===S){let z=it(b);return ur(h,z)}}if(p.length===1&&g.length===1&&p===g&&o.length===0&&h.ndim===1&&b.ndim===1)return de(t,a,c,i);if(p&&g&&p.length===1&&g.length===1&&o.length===2&&o===p+g&&c.length===0&&h.ndim===1&&b.ndim===1)return _t(h,b)}if(t.length===1&&a[0].length===2&&o.length===0){let p=a[0];if(p[0]===p[1]&&t[0].ndim===2)return de(t,a,c,i)}let l=Array.from(o).map(p=>i.get(p));if(l.length===0)return de(t,a,c,i);let m=t[0].dtype;for(let p=1;p<t.length;p++)m=W(m,t[p].dtype);let d=N.zeros(l,m),y=l.reduce((p,g)=>p*g,1),f=1;for(let p of c)f*=i.get(p);for(let p=0;p<y;p++){let g=nc(p,l),h=new Map;for(let A=0;A<o.length;A++)h.set(o[A],g[A]);let b=0;for(let A=0;A<f;A++){let S=A;for(let w=c.length-1;w>=0;w--){let x=c[w],I=i.get(x);h.set(x,S%I),S=Math.floor(S/I)}let D=1;for(let w=0;w<t.length;w++){let x=t[w],I=a[w],z=[];for(let M of I)z.push(h.get(M));let F=x.get(...z);D*=Number(F)}b+=D}d.set(g,b)}return d}function ec(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 de(r,t,e,n){let o=!1;for(let c of r)if(v(c.dtype)){o=!0;break}let a=c=>c instanceof E?{re:c.re,im:c.im}:{re:Number(c),im:0},i=1;for(let c of e)i*=n.get(c);let s=0,u=0;for(let c=0;c<i;c++){let l=new Map,m=c;for(let f=e.length-1;f>=0;f--){let p=e[f],g=n.get(p);l.set(p,m%g),m=Math.floor(m/g)}let d=1,y=0;for(let f=0;f<r.length;f++){let p=r[f],g=t[f],h=[];for(let A of g)h.push(l.get(A));let b=p.get(...h);if(o){let A=a(b),S=d*A.re-y*A.im,D=d*A.im+y*A.re;d=S,y=D}else d*=Number(b)}s+=d,u+=y}return o?new E(s,u):s}function nc(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 ko(r,t){let e=r.shape,n=t.shape,o=e.length,a=n.length,i=W(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 f=0;f<o;f++)c[s-o+f]=e[f];for(let f=0;f<a;f++)l[s-a+f]=n[f];for(let f=0;f<s;f++)u[f]=c[f]*l[f];let m=N.zeros(u,i),d=e.reduce((f,p)=>f*p,1),y=n.reduce((f,p)=>f*p,1);for(let f=0;f<d;f++){let p=f,g=new Array(o);for(let A=o-1;A>=0;A--)g[A]=p%e[A],p=Math.floor(p/e[A]);let h=new Array(s).fill(0);for(let A=0;A<o;A++)h[s-o+A]=g[A];let b=r.get(...g);for(let A=0;A<y;A++){let S=A,D=new Array(a);for(let F=a-1;F>=0;F--)D[F]=S%n[F],S=Math.floor(S/n[F]);let w=new Array(s).fill(0);for(let F=0;F<a;F++)w[s-a+F]=D[F];let x=t.get(...D),I=new Array(s);for(let F=0;F<s;F++)I[F]=h[F]*l[F]+w[F];let z=Sr(b,x);m.set(I,z)}}return m}function qo(r,t,e=-1,n=-1,o=-1,a){a!==void 0&&(e=a,n=a,o=a);let i=(A,S)=>A<0?S+A:A,s=i(e,r.ndim),u=i(n,t.ndim);if(r.ndim===1&&t.ndim===1){let A=r.shape[0],S=t.shape[0];if(A===3&&S===3){let D=Number(r.get(0)),w=Number(r.get(1)),x=Number(r.get(2)),I=Number(t.get(0)),z=Number(t.get(1)),F=Number(t.get(2)),M=N.zeros([3],"float64");return M.set([0],w*F-x*z),M.set([1],x*I-D*F),M.set([2],D*z-w*I),M}else if(A===2&&S===2){let D=Number(r.get(0)),w=Number(r.get(1)),x=Number(t.get(0)),I=Number(t.get(1));return D*I-w*x}else if(A===2&&S===3||A===3&&S===2){let D=Number(r.get(0)),w=Number(r.get(1)),x=A===3?Number(r.get(2)):0,I=Number(t.get(0)),z=Number(t.get(1)),F=S===3?Number(t.get(2)):0,M=N.zeros([3],"float64");return M.set([0],w*F-x*z),M.set([1],x*I-D*F),M.set([2],D*z-w*I),M}else throw new Error(`cross: incompatible dimensions for cross product: ${A} and ${S}`)}let c=r.shape[s],l=t.shape[u];if(c!==2&&c!==3||l!==2&&l!==3)throw new Error(`cross: incompatible dimensions for cross product: ${c} and ${l}`);let m=c===2&&l===2?0:3,d=[...r.shape.slice(0,s),...r.shape.slice(s+1)],y=[...t.shape.slice(0,u),...t.shape.slice(u+1)];if(d.length!==y.length)throw new Error("cross: incompatible shapes for cross product");for(let A=0;A<d.length;A++)if(d[A]!==y[A])throw new Error("cross: incompatible shapes for cross product");let f=d,p=o<0?f.length+1+o:o,g;if(m===0?g=f:g=[...f.slice(0,p),m,...f.slice(p)],g.length===0)throw new Error("cross: unexpected scalar result from higher-dimensional input");let h=N.zeros(g,"float64"),b=f.reduce((A,S)=>A*S,1);for(let A=0;A<b;A++){let S=A,D=[];for(let V=f.length-1;V>=0;V--)D[V]=S%f[V],S=Math.floor(S/f[V]);let w=[...D.slice(0,s),0,...D.slice(s)],x=[...D.slice(0,u),0,...D.slice(u)],I=V=>(w[s]=V,Number(r.get(...w))),z=V=>(x[u]=V,Number(t.get(...x))),F=I(0),M=I(1),T=c===3?I(2):0,O=z(0),C=z(1),q=l===3?z(2):0;if(m===0)h.set(D,F*C-M*O);else{let V=M*q-T*C,k=T*O-F*q,L=F*C-M*O,j=(J,rr)=>{let Z=[...D.slice(0,p),J,...D.slice(p)];h.set(Z,rr)};j(0,V),j(1,k),j(2,L)}}return h}function Wr(r,t=2,e,n=!1){if(typeof t!="number")throw new Error("vector_norm: ord must be a number");if(e==null){let c=r.ndim===1?r:Gr(r),l=c.size,m;if(t===1/0){m=0;for(let d=0;d<l;d++)m=Math.max(m,Math.abs(Number(c.get(d))))}else if(t===-1/0){m=1/0;for(let d=0;d<l;d++)m=Math.min(m,Math.abs(Number(c.get(d))))}else if(t===0){m=0;for(let d=0;d<l;d++)Number(c.get(d))!==0&&m++}else if(t===1){m=0;for(let d=0;d<l;d++)m+=Math.abs(Number(c.get(d)))}else if(t===2){m=0;for(let d=0;d<l;d++){let y=Number(c.get(d));m+=y*y}m=Math.sqrt(m)}else{m=0;for(let d=0;d<l;d++)m+=Math.pow(Math.abs(Number(c.get(d))),t);m=Math.pow(m,1/t)}if(n){let d=new Array(r.ndim).fill(1),y=N.zeros(d,"float64");return y.set(new Array(r.ndim).fill(0),m),y}return m}let o=e<0?r.ndim+e:e;if(o<0||o>=r.ndim)throw new Error(`vector_norm: axis ${e} out of bounds for array with ${r.ndim} dimensions`);let a=n?[...r.shape.slice(0,o),1,...r.shape.slice(o+1)]:[...r.shape.slice(0,o),...r.shape.slice(o+1)];if(a.length===0)return Wr(r,t,null,!1);let i=N.zeros(a,"float64"),s=r.shape[o],u=a.reduce((c,l)=>c*l,1);for(let c=0;c<u;c++){let l=c,m=[];for(let f=a.length-1;f>=0;f--)m[f]=l%a[f],l=Math.floor(l/a[f]);let d=n?[...m.slice(0,o),0,...m.slice(o+1)]:[...m.slice(0,o),0,...m.slice(o)],y;if(t===1/0){y=0;for(let f=0;f<s;f++)d[o]=f,y=Math.max(y,Math.abs(Number(r.get(...d))))}else if(t===-1/0){y=1/0;for(let f=0;f<s;f++)d[o]=f,y=Math.min(y,Math.abs(Number(r.get(...d))))}else if(t===0){y=0;for(let f=0;f<s;f++)d[o]=f,Number(r.get(...d))!==0&&y++}else if(t===1){y=0;for(let f=0;f<s;f++)d[o]=f,y+=Math.abs(Number(r.get(...d)))}else if(t===2){y=0;for(let f=0;f<s;f++){d[o]=f;let p=Number(r.get(...d));y+=p*p}y=Math.sqrt(y)}else{y=0;for(let f=0;f<s;f++)d[o]=f,y+=Math.pow(Math.abs(Number(r.get(...d))),t);y=Math.pow(y,1/t)}i.set(m,y)}return i}function Cr(r,t="fro",e=!1){if(r.ndim!==2)throw new Error(`matrix_norm: input must be 2D, got ${r.ndim}D`);let[n,o]=r.shape,a;if(t==="fro"){a=0;for(let i=0;i<n;i++)for(let s=0;s<o;s++){let u=Number(r.get(i,s));a+=u*u}a=Math.sqrt(a)}else if(t==="nuc"){let{s:i}=Br(r);a=0;for(let s=0;s<i.size;s++)a+=Number(i.get(s))}else if(t===1){a=0;for(let i=0;i<o;i++){let s=0;for(let u=0;u<n;u++)s+=Math.abs(Number(r.get(u,i)));a=Math.max(a,s)}}else if(t===-1){a=1/0;for(let i=0;i<o;i++){let s=0;for(let u=0;u<n;u++)s+=Math.abs(Number(r.get(u,i)));a=Math.min(a,s)}}else if(t===1/0){a=0;for(let i=0;i<n;i++){let s=0;for(let u=0;u<o;u++)s+=Math.abs(Number(r.get(i,u)));a=Math.max(a,s)}}else if(t===-1/0){a=1/0;for(let i=0;i<n;i++){let s=0;for(let u=0;u<o;u++)s+=Math.abs(Number(r.get(i,u)));a=Math.min(a,s)}}else if(t===2){let{s:i}=Br(r);a=Number(i.get(0))}else if(t===-2){let{s:i}=Br(r);a=Number(i.get(i.size-1))}else throw new Error(`matrix_norm: invalid ord value: ${t}`);if(e){let i=N.zeros([1,1],"float64");return i.set([0,0],a),i}return a}function Vo(r,t=null,e=null,n=!1){if(t===null)return e===null?Wr(r,2,null,n):typeof e=="number"?Wr(r,2,e,n):Cr(r,"fro",n);if(Array.isArray(e)){if(e.length!==2)throw new Error("norm: axis must be a 2-tuple for matrix norms");let o=e[0]<0?r.ndim+e[0]:e[0],a=e[1]<0?r.ndim+e[1]:e[1];if(r.ndim!==2||o!==0&&o!==1||a!==0&&a!==1||o===a)throw new Error("norm: complex axis specification not yet supported");return Cr(r,t,n)}if(r.ndim===2&&e===null&&(t==="fro"||t==="nuc"))return Cr(r,t,n);if(typeof t!="number"&&t!==null)throw new Error(`norm: ord '${t}' not valid for vector norm`);return Wr(r,t??2,e,n)}function he(r,t="reduced"){if(r.ndim!==2)throw new Error(`qr: input must be 2D, got ${r.ndim}D`);let[e,n]=r.shape,o=Math.min(e,n),a=N.zeros([e,n],"float64");for(let y=0;y<e;y++)for(let f=0;f<n;f++)a.set([y,f],Number(r.get(y,f)));let i=[],s=[];for(let y=0;y<o;y++){let f=e-y,p=[];for(let D=y;D<e;D++)p.push(Number(a.get(D,y)));let g=0;for(let D=0;D<f;D++)g+=p[D]*p[D];if(g=Math.sqrt(g),g<1e-15){i.push(p),s.push(0);continue}let h=p[0]>=0?1:-1,b=p[0]+h*g,A=[1];for(let D=1;D<f;D++)A.push(p[D]/b);let S=h*b/g;s.push(S),i.push(A);for(let D=y;D<n;D++){let w=0;for(let x=0;x<f;x++)w+=A[x]*Number(a.get(y+x,D));for(let x=0;x<f;x++)a.set([y+x,D],Number(a.get(y+x,D))-S*A[x]*w)}}if(t==="raw"){let y=N.zeros([e,n],"float64");for(let p=0;p<e;p++)for(let g=0;g<n;g++)y.set([p,g],Number(a.get(p,g)));let f=N.zeros([o],"float64");for(let p=0;p<o;p++)f.set([p],s[p]);return{h:y,tau:f}}if(t==="r"){let y=N.zeros([o,n],"float64");for(let f=0;f<o;f++)for(let p=f;p<n;p++)y.set([f,p],Number(a.get(f,p)));return y}let u=t==="complete"?e:o,c=N.zeros([e,u],"float64");for(let y=0;y<Math.min(e,u);y++)c.set([y,y],1);for(let y=o-1;y>=0;y--){let f=i[y],p=s[y],g=e-y;for(let h=y;h<u;h++){let b=0;for(let A=0;A<g;A++)b+=f[A]*Number(c.get(y+A,h));for(let A=0;A<g;A++)c.set([y+A,h],Number(c.get(y+A,h))-p*f[A]*b)}}let l=N.zeros([e,u],"float64");for(let y=0;y<e;y++)for(let f=0;f<u;f++)l.set([y,f],Number(c.get(y,f)));let m=t==="complete"?e:o,d=N.zeros([m,n],"float64");for(let y=0;y<m;y++)for(let f=0;f<n;f++)f>=y&&d.set([y,f],Number(a.get(y,f)));return{q:l,r:d}}function jo(r,t=!1){if(r.ndim!==2)throw new Error(`cholesky: input must be 2D, got ${r.ndim}D`);let[e,n]=r.shape;if(e!==n)throw new Error(`cholesky: matrix must be square, got ${e}x${n}`);let o=e,a=N.zeros([o,o],"float64");for(let i=0;i<o;i++)for(let s=0;s<=i;s++){let u=0;if(i===s){for(let l=0;l<s;l++)u+=Number(a.get(s,l))**2;let c=Number(r.get(s,s))-u;if(c<0)throw new Error("cholesky: matrix is not positive definite");a.set([s,s],Math.sqrt(c))}else{for(let l=0;l<s;l++)u+=Number(a.get(i,l))*Number(a.get(s,l));let c=Number(a.get(s,s));if(Math.abs(c)<1e-15)throw new Error("cholesky: matrix is not positive definite");a.set([i,s],(Number(r.get(i,s))-u)/c)}}if(t){let i=N.zeros([o,o],"float64");for(let s=0;s<o;s++)for(let u=s;u<o;u++)i.set([s,u],Number(a.get(u,s)));return i}return a}function Br(r){if(r.ndim!==2)throw new Error(`svd: input must be 2D, got ${r.ndim}D`);let[t,e]=r.shape,n=Math.min(t,e),o=N.zeros([e,e],"float64");for(let m=0;m<e;m++)for(let d=0;d<e;d++){let y=0;for(let f=0;f<t;f++)y+=Number(r.get(f,m))*Number(r.get(f,d));o.set([m,d],y)}let{values:a,vectors:i}=Se(o),s=Array.from({length:e},(m,d)=>d);s.sort((m,d)=>a[d]-a[m]);let u=N.zeros([n],"float64");for(let m=0;m<n;m++){let d=a[s[m]];u.set([m],Math.sqrt(Math.max(0,d)))}let c=N.zeros([e,e],"float64");for(let m=0;m<e;m++)for(let d=0;d<e;d++)c.set([m,d],i[d][s[m]]);let l=N.zeros([t,t],"float64");for(let m=0;m<t;m++)for(let d=0;d<n;d++){let y=Number(u.get(d));if(y>1e-10){let f=0;for(let p=0;p<e;p++)f+=Number(r.get(m,p))*Number(c.get(d,p));l.set([m,d],f/y)}}if(t>n)for(let m=n;m<t;m++){let d=new Array(t).fill(0);d[m]=1;for(let f=0;f<m;f++){let p=0;for(let g=0;g<t;g++)p+=d[g]*Number(l.get(g,f));for(let g=0;g<t;g++)d[g]=d[g]-p*Number(l.get(g,f))}let y=0;for(let f=0;f<t;f++)y+=d[f]*d[f];if(y=Math.sqrt(y),y>1e-10)for(let f=0;f<t;f++)l.set([f,m],d[f]/y)}return{u:l,s:u,vt:c}}function Se(r){let t=r.shape[0],e=100*t*t,n=1e-10,o=[];for(let s=0;s<t;s++){o.push([]);for(let u=0;u<t;u++)o[s].push(Number(r.get(s,u)))}let a=[];for(let s=0;s<t;s++){a.push([]);for(let u=0;u<t;u++)a[s].push(s===u?1:0)}for(let s=0;s<e;s++){let u=0,c=0,l=1;for(let A=0;A<t;A++)for(let S=A+1;S<t;S++)Math.abs(o[A][S])>u&&(u=Math.abs(o[A][S]),c=A,l=S);if(u<n)break;let m=o[c][c],d=o[l][l],y=o[c][l],f;Math.abs(m-d)<1e-15?f=Math.PI/4:f=.5*Math.atan2(2*y,d-m);let p=Math.cos(f),g=Math.sin(f),h=p*p*m+g*g*d-2*g*p*y,b=g*g*m+p*p*d+2*g*p*y;o[c][c]=h,o[l][l]=b,o[c][l]=0,o[l][c]=0;for(let A=0;A<t;A++)if(A!==c&&A!==l){let S=o[A][c],D=o[A][l];o[A][c]=p*S-g*D,o[c][A]=o[A][c],o[A][l]=g*S+p*D,o[l][A]=o[A][l]}for(let A=0;A<t;A++){let S=a[A][c],D=a[A][l];a[A][c]=p*S-g*D,a[A][l]=g*S+p*D}}let i=[];for(let s=0;s<t;s++)i.push(o[s][s]);return{values:i,vectors:a}}function De(r,t=!0,e=!0){let n=Br(r);if(!e)return n.s;if(!t){let[o,a]=r.shape,i=Math.min(o,a),s=N.zeros([o,i],"float64");for(let c=0;c<o;c++)for(let l=0;l<i;l++)s.set([c,l],Number(n.u.get(c,l)));let u=N.zeros([i,a],"float64");for(let c=0;c<i;c++)for(let l=0;l<a;l++)u.set([c,l],Number(n.vt.get(c,l)));return{u:s,s:n.s,vt:u}}return n}function Po(r){if(r.ndim!==2)throw new Error(`det: input must be 2D, got ${r.ndim}D`);let[t,e]=r.shape;if(t!==e)throw new Error(`det: matrix must be square, got ${t}x${e}`);let n=t;if(n===0)return 1;let o=r.data;if(n===1)return Number(o[0]);if(n===2)return Number(o[0])*Number(o[3])-Number(o[1])*Number(o[2]);let{lu:a,sign:i}=Mt(r),s=a.data,u=i;for(let c=0;c<n;c++)u*=s[c*n+c];return u}function Mt(r){let[t,e]=r.shape,n=t,o=e,a=N.zeros([n,o],"float64"),i=a.data,s=r.data;for(let l=0;l<n*o;l++)i[l]=Number(s[l]);let u=Array.from({length:n},(l,m)=>m),c=1;for(let l=0;l<Math.min(n,o);l++){let m=Math.abs(i[l*o+l]),d=l;for(let f=l+1;f<n;f++){let p=Math.abs(i[f*o+l]);p>m&&(m=p,d=f)}if(d!==l){for(let p=0;p<o;p++){let g=i[l*o+p];i[l*o+p]=i[d*o+p],i[d*o+p]=g}let f=u[l];u[l]=u[d],u[d]=f,c=-c}let y=i[l*o+l];if(Math.abs(y)>1e-15)for(let f=l+1;f<n;f++){let p=i[f*o+l]/y;i[f*o+l]=p;for(let g=l+1;g<o;g++)i[f*o+g]=i[f*o+g]-p*i[l*o+g]}}return{lu:a,piv:u,sign:c}}function ut(r){if(r.ndim!==2)throw new Error(`inv: input must be 2D, got ${r.ndim}D`);let[t,e]=r.shape;if(t!==e)throw new Error(`inv: matrix must be square, got ${t}x${e}`);let n=t,{lu:o,piv:a}=Mt(r),i=o.data,s=N.zeros([n,n],"float64"),u=s.data;for(let c=0;c<n;c++){let l=new Float64Array(n);for(let m=0;m<n;m++){let d=a[m]===c?1:0;for(let y=0;y<m;y++)d-=i[m*n+y]*l[y];l[m]=d}for(let m=n-1;m>=0;m--){let d=l[m];for(let f=m+1;f<n;f++)d-=i[m*n+f]*u[f*n+c];let y=i[m*n+m];if(Math.abs(y)<1e-15)throw new Error("inv: singular matrix");u[m*n+c]=d/y}}return s}function Uo(r,t){let[e]=r.shape,n=e,{lu:o,piv:a}=Mt(r),i=o.data,s=t.data,u=new Float64Array(n);for(let d=0;d<n;d++)u[d]=Number(s[a[d]]);let c=new Float64Array(n);for(let d=0;d<n;d++){let y=u[d];for(let f=0;f<d;f++)y-=i[d*n+f]*c[f];c[d]=y}let l=N.zeros([n],"float64"),m=l.data;for(let d=n-1;d>=0;d--){let y=c[d];for(let p=d+1;p<n;p++)y-=i[d*n+p]*m[p];let f=i[d*n+d];if(Math.abs(f)<1e-15)throw new Error("solve: singular matrix");m[d]=y/f}return l}function Ne(r,t){if(r.ndim!==2)throw new Error(`solve: coefficient matrix must be 2D, got ${r.ndim}D`);let[e,n]=r.shape;if(e!==n)throw new Error(`solve: coefficient matrix must be square, got ${e}x${n}`);let o=e;if(t.ndim===1){if(t.shape[0]!==o)throw new Error(`solve: incompatible shapes (${e},${n}) and (${t.shape[0]},)`);return Uo(r,t)}if(t.ndim===2){if(t.shape[0]!==o)throw new Error(`solve: incompatible shapes (${e},${n}) and (${t.shape[0]},${t.shape[1]})`);let a=t.shape[1],i=N.zeros([o,a],"float64");for(let s=0;s<a;s++){let u=N.zeros([o],"float64");for(let l=0;l<o;l++)u.set([l],Number(t.get(l,s)));let c=Uo(r,u);for(let l=0;l<o;l++)i.set([l,s],Number(c.get(l)))}return i}throw new Error(`solve: b must be 1D or 2D, got ${t.ndim}D`)}function Lo(r,t,e=null){if(r.ndim!==2)throw new Error(`lstsq: coefficient matrix must be 2D, got ${r.ndim}D`);let[n,o]=r.shape,{u:a,s:i,vt:s}=Br(r),u=Math.min(n,o),c=e??Math.max(n,o)*Number.EPSILON,m=Number(i.get(0))*c,d=0;for(let b=0;b<u;b++)Number(i.get(b))>m&&d++;let y=t.ndim===1?K(t,[t.size,1]):t,f=y.shape[1];if(y.shape[0]!==n)throw new Error(`lstsq: incompatible shapes (${n},${o}) and (${t.shape.join(",")})`);let p=N.zeros([o,f],"float64");for(let b=0;b<f;b++){let A=new Array(n).fill(0);for(let S=0;S<n;S++)for(let D=0;D<n;D++)A[S]+=Number(a.get(D,S))*Number(y.get(D,b));for(let S=0;S<o;S++){let D=0;for(let w=0;w<u;w++){let x=Number(i.get(w));x>m&&(D+=Number(s.get(w,S))*A[w]/x)}p.set([S,b],D)}}let g;if(n>o){g=N.zeros([f],"float64");for(let b=0;b<f;b++){let A=0;for(let S=0;S<n;S++){let D=0;for(let x=0;x<o;x++)D+=Number(r.get(S,x))*Number(p.get(x,b));let w=D-Number(y.get(S,b));A+=w*w}g.set([b],A)}}else g=N.zeros([0],"float64");return{x:t.ndim===1?K(p,[o]):p,residuals:g,rank:d,s:i}}function Go(r,t=2){if(r.ndim!==2)throw new Error(`cond: input must be 2D, got ${r.ndim}D`);let[e,n]=r.shape;if(t===2||t===-2){let{s}=Br(r),u=Math.min(e,n),c=Number(s.get(0)),l=Number(s.get(u-1));return t===2?l>0?c/l:1/0:c>0?l/c:0}if(e!==n)throw new Error(`cond: matrix must be square for p=${t}`);let o=Cr(r,t),a=ut(r),i=Cr(a,t);return o*i}function Wo(r,t){if(r.ndim===0)return Number(r.get())!==0?1:0;if(r.ndim===1){for(let i=0;i<r.size;i++)if(Number(r.get(i))!==0)return 1;return 0}if(r.ndim!==2)throw new Error(`matrix_rank: input must be at most 2D, got ${r.ndim}D`);let{s:e}=Br(r),n=Number(e.get(0)),o=t??n*Math.max(r.shape[0],r.shape[1])*Number.EPSILON,a=0;for(let i=0;i<e.size;i++)Number(e.get(i))>o&&a++;return a}function Zo(r,t){if(r.ndim!==2)throw new Error(`matrix_power: input must be 2D, got ${r.ndim}D`);let[e,n]=r.shape;if(e!==n)throw new Error(`matrix_power: matrix must be square, got ${e}x${n}`);let o=e;if(!Number.isInteger(t))throw new Error("matrix_power: exponent must be an integer");if(t===0){let c=N.zeros([o,o],"float64");for(let l=0;l<o;l++)c.set([l,l],1);return c}let a=r,i=t;t<0&&(a=ut(r),i=-t);let s=N.zeros([o,o],"float64");for(let c=0;c<o;c++)s.set([c,c],1);let u=N.zeros([o,o],"float64");for(let c=0;c<o;c++)for(let l=0;l<o;l++)u.set([c,l],Number(a.get(c,l)));for(;i>0;)i&1&&(s=ur(s,u)),u=ur(u,u),i>>=1;return s}function Yo(r,t=1e-15){if(r.ndim!==2)throw new Error(`pinv: input must be 2D, got ${r.ndim}D`);let[e,n]=r.shape,{u:o,s:a,vt:i}=Br(r),s=Math.min(e,n),c=Number(a.get(0))*t,l=N.zeros([n,e],"float64");for(let m=0;m<n;m++)for(let d=0;d<e;d++){let y=0;for(let f=0;f<s;f++){let p=Number(a.get(f));p>c&&(y+=Number(i.get(f,m))*Number(o.get(d,f))/p)}l.set([m,d],y)}return l}function xe(r){if(r.ndim!==2)throw new Error(`eig: input must be 2D, got ${r.ndim}D`);let[t,e]=r.shape;if(t!==e)throw new Error(`eig: matrix must be square, got ${t}x${e}`);let n=t,o=!0;r:for(let c=0;c<n;c++)for(let l=c+1;l<n;l++)if(Math.abs(Number(r.get(c,l))-Number(r.get(l,c)))>1e-10){o=!1;break r}if(o){let{values:c,vectors:l}=Se(r),m=N.zeros([n],"float64"),d=N.zeros([n,n],"float64");for(let y=0;y<n;y++){m.set([y],c[y]);for(let f=0;f<n;f++)d.set([f,y],l[f][y])}return{w:m,v:d}}console.warn("numpy-ts: eig() called on non-symmetric matrix. Complex eigenvalues are not supported; results may be inaccurate. For symmetric matrices, use eigh() instead.");let{values:a,vectors:i}=oc(r),s=N.zeros([n],"float64"),u=N.zeros([n,n],"float64");for(let c=0;c<n;c++){s.set([c],a[c]);for(let l=0;l<n;l++)u.set([l,c],i[l][c])}return{w:s,v:u}}function oc(r){let t=r.shape[0],e=1e3,n=1e-10,o=N.zeros([t,t],"float64");for(let u=0;u<t;u++)for(let c=0;c<t;c++)o.set([u,c],Number(r.get(u,c)));let a=N.zeros([t,t],"float64");for(let u=0;u<t;u++)a.set([u,u],1);for(let u=0;u<e;u++){let c=0;for(let y=0;y<t;y++)for(let f=0;f<t;f++)y!==f&&(c+=Number(o.get(y,f))**2);if(Math.sqrt(c)<n*t)break;let l=he(o,"reduced"),m=l.q,d=l.r;o=ur(d,m),a=ur(a,m)}let i=[];for(let u=0;u<t;u++)i.push(Number(o.get(u,u)));let s=[];for(let u=0;u<t;u++){s.push([]);for(let c=0;c<t;c++)s[u].push(Number(a.get(u,c)))}return{values:i,vectors:s}}function we(r,t="L"){if(r.ndim!==2)throw new Error(`eigh: input must be 2D, got ${r.ndim}D`);let[e,n]=r.shape;if(e!==n)throw new Error(`eigh: matrix must be square, got ${e}x${n}`);let o=e,a=N.zeros([o,o],"float64");for(let m=0;m<o;m++)for(let d=0;d<o;d++)t==="L"?m>=d&&(a.set([m,d],Number(r.get(m,d))),a.set([d,m],Number(r.get(m,d)))):d>=m&&(a.set([m,d],Number(r.get(m,d))),a.set([d,m],Number(r.get(m,d))));let{values:i,vectors:s}=Se(a),u=Array.from({length:o},(m,d)=>d);u.sort((m,d)=>i[m]-i[d]);let c=N.zeros([o],"float64"),l=N.zeros([o,o],"float64");for(let m=0;m<o;m++){c.set([m],i[u[m]]);for(let d=0;d<o;d++)l.set([d,m],s[d][u[m]])}return{w:c,v:l}}function Ho(r){let{w:t}=xe(r);return t}function Xo(r,t="L"){let{w:e}=we(r,t);return e}function Jo(r,t){let e=Or(r),n=Or(t),o=e.shape[0],a=n.shape[0];if(o!==a)throw new Error(`vdot: arrays must have same number of elements, got ${o} and ${a}`);if(v(r.dtype)||v(t.dtype)){let u=0,c=0;for(let l=0;l<o;l++){let m=e.get(l),d=n.get(l),y=m instanceof E?m.re:Number(m),f=m instanceof E?-m.im:0,p=d instanceof E?d.re:Number(d),g=d instanceof E?d.im:0;u+=y*p+f*g,c+=y*g-f*p}return Math.abs(c)<1e-15?u:new E(u,c)}let s=0;for(let u=0;u<o;u++){let c=e.get(u),l=n.get(u);typeof c=="bigint"&&typeof l=="bigint"?s=(typeof s=="bigint"?s:BigInt(s))+c*l:s=(typeof s=="bigint"?Number(s):s)+Number(c)*Number(l)}return s}function Ie(r,t,e=-1){let n=r.ndim,o=t.ndim,a=e<0?n+e:e,i=e<0?o+e:e;if(a<0||a>=n)throw new Error(`vecdot: axis ${e} out of bounds for array with ${n} dimensions`);if(i<0||i>=o)throw new Error(`vecdot: axis ${e} out of bounds for array with ${o} dimensions`);let s=r.shape[a],u=t.shape[i];if(s!==u)throw new Error(`vecdot: axis dimensions must match, got ${s} and ${u}`);if(n===1&&o===1)return Zr(r,t);let c=[...r.shape.slice(0,a),...r.shape.slice(a+1)],l=[...t.shape.slice(0,i),...t.shape.slice(i+1)],m=s,d=v(r.dtype)||v(t.dtype),y=W(r.dtype,t.dtype),f=c.length>l.length?c:l;if(f.length===0){let h=d?new E(0,0):0;for(let b=0;b<m;b++){let A=r.get(b),S=t.get(b),D=Sr(A,S);if(h instanceof E||D instanceof E){let w=h instanceof E?h:new E(Number(h),0),x=D instanceof E?D:new E(Number(D),0);h=w.add(x)}else typeof h=="bigint"||typeof D=="bigint"?h=BigInt(h)+BigInt(D):h=h+D}return h}let p=N.zeros(f,y),g=f.reduce((h,b)=>h*b,1);for(let h=0;h<g;h++){let b=[],A=h;for(let x=f.length-1;x>=0;x--)b.unshift(A%f[x]),A=Math.floor(A/f[x]);let S=[...b.slice(0,a),0,...b.slice(a)],D=[...b.slice(0,i),0,...b.slice(i)],w=d?new E(0,0):0;for(let x=0;x<m;x++){S[a]=x,D[i]=x;let I=r.get(...S),z=t.get(...D),F=Sr(I,z);if(w instanceof E||F instanceof E){let M=w instanceof E?w:new E(Number(w),0),T=F instanceof E?F:new E(Number(F),0);w=M.add(T)}else typeof w=="bigint"||typeof F=="bigint"?w=BigInt(w)+BigInt(F):w=w+F}p.set(b,w)}return p}function ze(r){if(r.ndim<2)throw new Error(`matrix_transpose: input must have at least 2 dimensions, got ${r.ndim}D`);let t=Array.from({length:r.ndim},(n,o)=>o),e=t.length-1;return t[e]=e-1,t[e-1]=e,it(r,t)}function Qo(r,t){return it(r,t)}function Ko(r,t){if(r.ndim<2)throw new Error(`matvec: x1 must have at least 2 dimensions, got ${r.ndim}D`);if(t.ndim<1)throw new Error(`matvec: x2 must have at least 1 dimension, got ${t.ndim}D`);let e=r.shape[r.ndim-2],n=r.shape[r.ndim-1],o=t.shape[t.ndim-1];if(n!==o)throw new Error(`matvec: last axis of x1 (${n}) must match last axis of x2 (${o})`);if(r.ndim===2&&t.ndim===1)return Zr(r,t);let a=r.shape.slice(0,-2),i=t.shape.slice(0,-1),s=Math.max(a.length,i.length),u=[...Array(s-a.length).fill(1),...a],c=[...Array(s-i.length).fill(1),...i],l=[];for(let g=0;g<s;g++){let h=u[g],b=c[g];if(h!==1&&b!==1&&h!==b)throw new Error(`matvec: batch dimensions not broadcastable: ${a} vs ${i}`);l.push(Math.max(h,b))}let m=[...l,e],d=W(r.dtype,t.dtype),y=N.zeros(m,d),f=v(d),p=l.reduce((g,h)=>g*h,1);for(let g=0;g<p;g++){let h=[],b=g;for(let D=l.length-1;D>=0;D--)h.unshift(b%l[D]),b=Math.floor(b/l[D]);let A=h.slice(-(a.length||1)).map((D,w)=>(a[w]??1)===1?0:D),S=h.slice(-(i.length||1)).map((D,w)=>(i[w]??1)===1?0:D);for(let D=0;D<e;D++){let w=f?new E(0,0):0;for(let I=0;I<n;I++){let z=[...A,D,I],F=[...S,I],M=r.get(...z),T=t.get(...F),O=Sr(M,T);if(w instanceof E||O instanceof E){let C=w instanceof E?w:new E(Number(w),0),q=O instanceof E?O:new E(Number(O),0);w=C.add(q)}else typeof w=="bigint"||typeof O=="bigint"?w=BigInt(w)+BigInt(O):w=w+O}let x=[...h,D];y.set(x,w)}}return y}function ra(r,t){if(r.ndim<1)throw new Error(`vecmat: x1 must have at least 1 dimension, got ${r.ndim}D`);if(t.ndim<2)throw new Error(`vecmat: x2 must have at least 2 dimensions, got ${t.ndim}D`);let e=r.shape[r.ndim-1],n=t.shape[t.ndim-2],o=t.shape[t.ndim-1];if(e!==n)throw new Error(`vecmat: last axis of x1 (${e}) must match second-to-last axis of x2 (${n})`);if(r.ndim===1&&t.ndim===2)return Zr(r,t);let a=r.shape.slice(0,-1),i=t.shape.slice(0,-2),s=Math.max(a.length,i.length),u=[...Array(s-a.length).fill(1),...a],c=[...Array(s-i.length).fill(1),...i],l=[];for(let g=0;g<s;g++){let h=u[g],b=c[g];if(h!==1&&b!==1&&h!==b)throw new Error(`vecmat: batch dimensions not broadcastable: ${a} vs ${i}`);l.push(Math.max(h,b))}let m=[...l,o],d=W(r.dtype,t.dtype),y=N.zeros(m,d),f=v(d),p=l.reduce((g,h)=>g*h,1);for(let g=0;g<p;g++){let h=[],b=g;for(let D=l.length-1;D>=0;D--)h.unshift(b%l[D]),b=Math.floor(b/l[D]);let A=h.slice(-(a.length||1)).map((D,w)=>(a[w]??1)===1?0:D),S=h.slice(-(i.length||1)).map((D,w)=>(i[w]??1)===1?0:D);for(let D=0;D<o;D++){let w=f?new E(0,0):0;for(let I=0;I<e;I++){let z=[...A,I],F=[...S,I,D],M=r.get(...z),T=t.get(...F),O=Sr(M,T);if(w instanceof E||O instanceof E){let C=w instanceof E?w:new E(Number(w),0),q=O instanceof E?O:new E(Number(O),0);w=C.add(q)}else typeof w=="bigint"||typeof O=="bigint"?w=BigInt(w)+BigInt(O):w=w+O}let x=[...h,D];y.set(x,w)}}return y}function ta(r){if(r.ndim!==2)throw new Error(`slogdet: input must be 2D, got ${r.ndim}D`);let[t,e]=r.shape;if(t!==e)throw new Error(`slogdet: matrix must be square, got ${t}x${e}`);let n=t;if(n===0)return{sign:1,logabsdet:0};let{lu:o,sign:a}=Mt(r),i=o.data,s=0,u=a;for(let c=0;c<n;c++){let l=i[c*n+c];if(l===0)return{sign:0,logabsdet:-1/0};l<0&&(u=-u),s+=Math.log(Math.abs(l))}return{sign:u,logabsdet:s}}function ea(r){return De(r,!0,!1)}function na(r){if(r.length<2)throw new Error("multi_dot: need at least 2 arrays");if(r.length===2)return ur(r[0],r[1]);let t=r[0];for(let e=1;e<r.length;e++)t=ur(t,r[e]);return t}function oa(r,t=2){if(t<=0)throw new Error(`tensorinv: ind must be positive, got ${t}`);let e=r.shape,n=r.ndim;if(n<t)throw new Error(`tensorinv: array has ${n} dimensions, ind=${t} is too large`);let o=1;for(let c=0;c<t;c++)o*=e[c];let a=1;for(let c=t;c<n;c++)a*=e[c];if(o!==a)throw new Error(`tensorinv: product of first ${t} dimensions (${o}) must equal product of remaining dimensions (${a})`);let i=K(r,[o,a]),s=ut(i),u=[...e.slice(t),...e.slice(0,t)];return K(s,u)}function aa(r,t,e){let n=r.shape,o=t.shape,a=r.ndim,i=t.ndim,s;e==null?s=Array.from({length:i},(A,S)=>a-i+S):s=e.map(A=>A<0?a+A:A);let u=[];for(let A=0;A<a;A++)s.includes(A)||u.push(A);let c=[...u,...s],l=it(r,c),d=s.map(A=>n[A]).reduce((A,S)=>A*S,1),f=u.map(A=>n[A]).reduce((A,S)=>A*S,1),p=o.reduce((A,S)=>A*S,1);if(d!==p)throw new Error(`tensorsolve: dimensions don't match - sum dimensions product (${d}) != b total elements (${p})`);if(f!==d)throw new Error(`tensorsolve: non-square problem - other dimensions product (${f}) != sum dimensions product (${d})`);let g=K(l,[f,d]),h=K(t,[d]),b=Ne(g,h);return K(b,[...o])}function sa(r){let t=r.dtype;if(v(t)){let e=Array.from(r.shape),n=r.size,o=r.data,a=N.zeros(e,t),i=a.data;for(let s=0;s<n;s++){let u=o[s*2],c=o[s*2+1],l=Math.sqrt(u*u+c*c),m=Math.sqrt((l+u)/2),d=(c>=0?1:-1)*Math.sqrt((l-u)/2);i[s*2]=m,i[s*2+1]=d}return a}return X(r,Math.sqrt,!1)}function ia(r,t){if(typeof t=="number")return ic(r,t);let e=v(r.dtype),n=v(t.dtype);return e||n?sc(r,t):H(r,t,Math.pow,"power")}function sc(r,t){let e=v(r.dtype),n=v(t.dtype),o=r.dtype==="complex128"||t.dtype==="complex128"||t.dtype==="float64"?"complex128":"complex64",a=Array.from(r.shape),i=r.size,s=N.zeros(a,o),u=s.data;for(let c=0;c<i;c++){let l,m;if(e){let S=r.data;l=S[c*2],m=S[c*2+1]}else l=Number(r.iget(c)),m=0;let d,y;if(n){let S=t.data;d=S[c*2],y=S[c*2+1]}else d=Number(t.iget(c)),y=0;let f=Math.sqrt(l*l+m*m),p=Math.atan2(m,l),g=Math.log(f),h=d*g-y*p,b=d*p+y*g,A=Math.exp(h);u[c*2]=A*Math.cos(b),u[c*2+1]=A*Math.sin(b)}return s}function ic(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size;if(v(e)){let m=N.zeros(n,e),d=o,y=m.data;for(let f=0;f<a;f++){let p=d[f*2],g=d[f*2+1],h=Math.sqrt(p*p+g*g),b=Math.atan2(g,p),A=Math.pow(h,t),S=b*t;y[f*2]=A*Math.cos(S),y[f*2+1]=A*Math.sin(S)}return m}let u=e!=="float32"&&e!=="float64"&&(t<0||!Number.isInteger(t))?"float64":e,c=N.zeros(n,u),l=c.data;if(B(e))if(B(u)&&Number.isInteger(t)&&t>=0){let m=o,d=l;for(let y=0;y<a;y++)d[y]=m[y]**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 ua(r){let t=r.dtype;if(v(t)){let e=Array.from(r.shape),n=r.size,o=r.data,a=N.zeros(e,t),i=a.data;for(let s=0;s<n;s++){let u=o[s*2],c=o[s*2+1],l=Math.exp(u);i[s*2]=l*Math.cos(c),i[s*2+1]=l*Math.sin(c)}return a}return X(r,Math.exp,!1)}function ca(r){let t=r.dtype;if(v(t)){let e=Array.from(r.shape),n=r.size,o=r.data,a=Math.LN2,i=N.zeros(e,t),s=i.data;for(let u=0;u<n;u++){let c=o[u*2],l=o[u*2+1],m=Math.exp(c*a),d=l*a;s[u*2]=m*Math.cos(d),s[u*2+1]=m*Math.sin(d)}return i}return X(r,e=>Math.pow(2,e),!1)}function la(r){let t=r.dtype;if(v(t)){let e=Array.from(r.shape),n=r.size,o=r.data,a=N.zeros(e,t),i=a.data;for(let s=0;s<n;s++){let u=o[s*2],c=o[s*2+1],l=Math.exp(u);i[s*2]=l*Math.cos(c)-1,i[s*2+1]=l*Math.sin(c)}return a}return X(r,Math.expm1,!1)}function fa(r){let t=r.dtype;if(v(t)){let e=Array.from(r.shape),n=r.size,o=r.data,a=N.zeros(e,t),i=a.data;for(let s=0;s<n;s++){let u=o[s*2],c=o[s*2+1],l=Math.sqrt(u*u+c*c),m=Math.atan2(c,u);i[s*2]=Math.log(l),i[s*2+1]=m}return a}return X(r,Math.log,!1)}function ma(r){let t=r.dtype;if(v(t)){let e=Array.from(r.shape),n=r.size,o=r.data,a=1/Math.LN2,i=N.zeros(e,t),s=i.data;for(let u=0;u<n;u++){let c=o[u*2],l=o[u*2+1],m=Math.sqrt(c*c+l*l),d=Math.atan2(l,c);s[u*2]=Math.log(m)*a,s[u*2+1]=d*a}return i}return X(r,Math.log2,!1)}function pa(r){let t=r.dtype;if(v(t)){let e=Array.from(r.shape),n=r.size,o=r.data,a=1/Math.LN10,i=N.zeros(e,t),s=i.data;for(let u=0;u<n;u++){let c=o[u*2],l=o[u*2+1],m=Math.sqrt(c*c+l*l),d=Math.atan2(l,c);s[u*2]=Math.log(m)*a,s[u*2+1]=d*a}return i}return X(r,Math.log10,!1)}function ya(r){let t=r.dtype;if(v(t)){let e=Array.from(r.shape),n=r.size,o=r.data,a=N.zeros(e,t),i=a.data;for(let s=0;s<n;s++){let u=o[s*2],c=o[s*2+1],l=1+u,m=Math.sqrt(l*l+c*c),d=Math.atan2(c,l);i[s*2]=Math.log(m),i[s*2+1]=d}return a}return X(r,Math.log1p,!1)}function da(r,t){return U(r.dtype,"logaddexp","logaddexp is not supported for complex numbers."),typeof t!="number"&&U(t.dtype,"logaddexp","logaddexp is not supported for complex numbers."),typeof t=="number"?cc(r,t):uc(r,t)}function uc(r,t){let e=Mr(r.shape,t.shape),n=e.reduce((c,l)=>c*l,1),o=r.dtype,a=t.dtype,i=o==="float32"&&a==="float32"?"float32":"float64",s=N.zeros(e,i),u=s.data;for(let c=0;c<n;c++){let l=(B(o),Number(r.iget(c))),m=(B(a),Number(t.iget(c))),d=Math.max(l,m),y=Math.min(l,m);u[c]=d+Math.log1p(Math.exp(y-d))}return s}function cc(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.size,a=e==="float32"?"float32":"float64",i=N.zeros(n,a),s=i.data;for(let u=0;u<o;u++){let c=(B(e),Number(r.data[u])),l=Math.max(c,t),m=Math.min(c,t);s[u]=l+Math.log1p(Math.exp(m-l))}return i}function ga(r,t){return U(r.dtype,"logaddexp2","logaddexp2 is not supported for complex numbers."),typeof t!="number"&&U(t.dtype,"logaddexp2","logaddexp2 is not supported for complex numbers."),typeof t=="number"?fc(r,t):lc(r,t)}function lc(r,t){let e=Mr(r.shape,t.shape),n=e.reduce((l,m)=>l*m,1),o=r.dtype,a=t.dtype,i=o==="float32"&&a==="float32"?"float32":"float64",s=N.zeros(e,i),u=s.data,c=Math.LOG2E;for(let l=0;l<n;l++){let m=(B(o),Number(r.iget(l))),d=(B(a),Number(t.iget(l))),y=Math.max(m,d),f=Math.min(m,d);u[l]=y+Math.log1p(Math.pow(2,f-y))*c}return s}function fc(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.size,a=e==="float32"?"float32":"float64",i=N.zeros(n,a),s=i.data,u=Math.LOG2E;for(let c=0;c<o;c++){let l=(B(e),Number(r.data[c])),m=Math.max(l,t),d=Math.min(l,t);s[c]=m+Math.log1p(Math.pow(2,d-m))*u}return i}function Aa(r){let t=r.dtype;if(v(t)){let e=Array.from(r.shape),n=r.size,o=r.data,a=N.zeros(e,t),i=a.data;for(let s=0;s<n;s++){let u=o[s*2],c=o[s*2+1];i[s*2]=Math.sin(u)*Math.cosh(c),i[s*2+1]=Math.cos(u)*Math.sinh(c)}return a}return X(r,Math.sin,!1)}function ba(r){let t=r.dtype;if(v(t)){let e=Array.from(r.shape),n=r.size,o=r.data,a=N.zeros(e,t),i=a.data;for(let s=0;s<n;s++){let u=o[s*2],c=o[s*2+1];i[s*2]=Math.cos(u)*Math.cosh(c),i[s*2+1]=-Math.sin(u)*Math.sinh(c)}return a}return X(r,Math.cos,!1)}function ha(r){let t=r.dtype;if(v(t)){let e=Array.from(r.shape),n=r.size,o=r.data,a=N.zeros(e,t),i=a.data;for(let s=0;s<n;s++){let u=o[s*2],c=o[s*2+1],l=Math.cos(2*u)+Math.cosh(2*c);i[s*2]=Math.sin(2*u)/l,i[s*2+1]=Math.sinh(2*c)/l}return a}return X(r,Math.tan,!1)}function Sa(r){let t=r.dtype;if(v(t)){let e=Array.from(r.shape),n=r.size,o=r.data,a=N.zeros(e,t),i=a.data;for(let s=0;s<n;s++){let u=o[s*2],c=o[s*2+1],l=-c,m=u,d=u*u-c*c,y=2*u*c,f=1-d,p=-y,g=Math.sqrt(f*f+p*p),h=Math.sqrt((g+f)/2),b=(p>=0?1:-1)*Math.sqrt((g-f)/2),A=l+h,S=m+b,D=Math.sqrt(A*A+S*S),w=Math.log(D),I=Math.atan2(S,A),z=-w;Math.abs(c)<1e-15&&u>1&&(z=-z),i[s*2]=I,i[s*2+1]=z}return a}return X(r,Math.asin,!1)}function Da(r){let t=r.dtype;if(v(t)){let e=Array.from(r.shape),n=r.size,o=r.data,a=N.zeros(e,t),i=a.data;for(let s=0;s<n;s++){let u=o[s*2],c=o[s*2+1],l=u*u-c*c,m=2*u*c,d=1-l,y=-m,f=Math.sqrt(d*d+y*y),p=Math.sqrt((f+d)/2),h=-((y>=0?1:-1)*Math.sqrt((f-d)/2)),b=p,A=u+h,S=c+b,D=Math.sqrt(A*A+S*S),w=Math.log(D),I=Math.atan2(S,A),z=-w;Math.abs(c)<1e-15&&u>1&&(z=-z),i[s*2]=I,i[s*2+1]=z}return a}return X(r,Math.acos,!1)}function Na(r){let t=r.dtype;if(v(t)){let e=Array.from(r.shape),n=r.size,o=r.data,a=N.zeros(e,t),i=a.data;for(let s=0;s<n;s++){let u=o[s*2],l=-o[s*2+1],m=u,d=1-l,y=-m,f=1+l,p=m,g=f*f+p*p,h=(d*f+y*p)/g,b=(y*f-d*p)/g,A=Math.sqrt(h*h+b*b),S=Math.log(A),D=Math.atan2(b,h);i[s*2]=-D/2,i[s*2+1]=S/2}return a}return X(r,Math.atan,!1)}function xa(r,t){return U(r.dtype,"arctan2","arctan2 is only defined for real numbers."),typeof t!="number"&&U(t.dtype,"arctan2","arctan2 is only defined for real numbers."),typeof t=="number"?yc(r,t):pc(r,t)}function pc(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=N.zeros(e,i),u=s.data;for(let c=0;c<n;c++){let l=(B(o),Number(r.data[c])),m=(B(a),Number(t.data[c]));u[c]=Math.atan2(l,m)}return s}function yc(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,i=e==="float32"?"float32":"float64",s=N.zeros(n,i),u=s.data;if(B(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 wa(r,t){return U(r.dtype,"hypot","hypot is only defined for real numbers."),typeof t!="number"&&U(t.dtype,"hypot","hypot is only defined for real numbers."),typeof t=="number"?gc(r,t):dc(r,t)}function dc(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=N.zeros(e,i),u=s.data;for(let c=0;c<n;c++){let l=(B(o),Number(r.data[c])),m=(B(a),Number(t.data[c]));u[c]=Math.hypot(l,m)}return s}function gc(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,i=e==="float32"?"float32":"float64",s=N.zeros(n,i),u=s.data;if(B(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 Ia(r){U(r.dtype,"degrees","degrees is only defined for real numbers.");let t=180/Math.PI;return X(r,e=>e*t,!1)}function za(r){U(r.dtype,"radians","radians is only defined for real numbers.");let t=Math.PI/180;return X(r,e=>e*t,!1)}function _a(r){let t=r.dtype;if(v(t)){let e=Array.from(r.shape),n=r.size,o=r.data,a=N.zeros(e,t),i=a.data;for(let s=0;s<n;s++){let u=o[s*2],c=o[s*2+1];i[s*2]=Math.sinh(u)*Math.cos(c),i[s*2+1]=Math.cosh(u)*Math.sin(c)}return a}return X(r,Math.sinh,!1)}function Ma(r){let t=r.dtype;if(v(t)){let e=Array.from(r.shape),n=r.size,o=r.data,a=N.zeros(e,t),i=a.data;for(let s=0;s<n;s++){let u=o[s*2],c=o[s*2+1];i[s*2]=Math.cosh(u)*Math.cos(c),i[s*2+1]=Math.sinh(u)*Math.sin(c)}return a}return X(r,Math.cosh,!1)}function Fa(r){let t=r.dtype;if(v(t)){let e=Array.from(r.shape),n=r.size,o=r.data,a=N.zeros(e,t),i=a.data;for(let s=0;s<n;s++){let u=o[s*2],c=o[s*2+1],l=Math.cosh(2*u)+Math.cos(2*c);i[s*2]=Math.sinh(2*u)/l,i[s*2+1]=Math.sin(2*c)/l}return a}return X(r,Math.tanh,!1)}function va(r){let t=r.dtype;if(v(t)){let e=Array.from(r.shape),n=r.size,o=r.data,a=N.zeros(e,t),i=a.data;for(let s=0;s<n;s++){let u=o[s*2],c=o[s*2+1],l=u*u-c*c,m=2*u*c,d=l+1,y=m,f=Math.sqrt(d*d+y*y),p=Math.sqrt((f+d)/2),g=(y>=0?1:-1)*Math.sqrt((f-d)/2),h=u+p,b=c+g,A=Math.sqrt(h*h+b*b);i[s*2]=Math.log(A),i[s*2+1]=Math.atan2(b,h)}return a}return X(r,Math.asinh,!1)}function Ba(r){let t=r.dtype;if(v(t)){let e=Array.from(r.shape),n=r.size,o=r.data,a=N.zeros(e,t),i=a.data;for(let s=0;s<n;s++){let u=o[s*2],c=o[s*2+1],l=u*u-c*c,m=2*u*c,d=l-1,y=m,f=Math.sqrt(d*d+y*y),p=Math.sqrt((f+d)/2),g=(y>=0?1:-1)*Math.sqrt((f-d)/2),h=u+p,b=c+g,A=Math.sqrt(h*h+b*b),S=Math.log(A),D=Math.atan2(b,h);Math.abs(c)<1e-15&&u<1&&(D=-D),i[s*2]=S,i[s*2+1]=D}return a}return X(r,Math.acosh,!1)}function Ea(r){let t=r.dtype;if(v(t)){let e=Array.from(r.shape),n=r.size,o=r.data,a=N.zeros(e,t),i=a.data;for(let s=0;s<n;s++){let u=o[s*2],c=o[s*2+1],l=1+u,m=c,d=1-u,y=-c,f=d*d+y*y,p=(l*d+m*y)/f,g=(m*d-l*y)/f,h=Math.sqrt(p*p+g*g),b=Math.log(h),A=Math.atan2(g,p);i[s*2]=b/2,i[s*2+1]=A/2}return a}return X(r,Math.atanh,!1)}function Ft(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=Ar([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 pr(r,t)}function Ta(r){if(r.length===0)return[];if(r.length===1)return[r[0]];let t=r.map(n=>Array.from(n.shape)),e=Ar(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=>pr(n,e))}function Oa(r,t,e){let n=r.shape,o=n.length,a=r.dtype;if(e===void 0){let f=r.size;for(let b of t){let A=b<0?f+b:b;if(A<0||A>=f)throw new Error(`index ${b} is out of bounds for axis 0 with size ${f}`)}let p=t.length,g=P(a);if(!g)throw new Error(`Cannot take from array with dtype ${a}`);let h=new g(p);for(let b=0;b<p;b++){let A=t[b];A<0&&(A=f+A);let S=r.iget(A);B(a),h[b]=S}return N.fromData(h,[p],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 f of t){let p=f<0?s+f:f;if(p<0||p>=s)throw new Error(`index ${f} is out of bounds for axis ${i} with size ${s}`)}let u=Array.from(n);u[i]=t.length;let c=u.reduce((f,p)=>f*p,1),l=P(a);if(!l)throw new Error(`Cannot take from array with dtype ${a}`);let m=new l(c),d=ar(u),y=new Array(o).fill(0);for(let f=0;f<c;f++){let p=[...y],g=y[i],h=t[g];h<0&&(h=s+h),p[i]=h;let b=r.get(...p),A=0;for(let S=0;S<o;S++)A+=y[S]*d[S];B(a),m[A]=b;for(let S=o-1;S>=0&&(y[S]++,!(y[S]<u[S]));S--)y[S]=0}return N.fromData(m,u,a)}function Ca(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++){let s=e.iget(i);a.push(s instanceof E?s.re:s)}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];B(o)?typeof u!="bigint"&&(u=BigInt(Math.round(Number(u)))):typeof u=="bigint"&&(u=Number(u)),r.iset(s,u)}}function Ua(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(d=>Array.from(d.shape));a.unshift(Array.from(e));let i=Ar(a);if(i===null)throw new Error("operands could not be broadcast together");let s=pr(r,i),u=t.map(d=>pr(d,i)),c=i.reduce((d,y)=>d*y,1),l=P(o);if(!l)throw new Error(`Cannot choose with dtype ${o}`);let m=new l(c);for(let d=0;d<c;d++){let y=Number(s.iget(d));if(y<0||y>=n)throw new Error(`index ${y} is out of bounds for axis 0 with size ${n}`);let f=u[y].iget(d);B(o),m[d]=f}return N.fromData(m,i,o)}function $a(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}function Ra(r,t,e){let n=r.shape,o=n.length,a=r.dtype,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=t.shape;if(s.length!==o)throw new Error(`indices and arr must have the same number of dimensions, got ${s.length} vs ${o}`);for(let p=0;p<o;p++)if(p!==i&&s[p]!==n[p]&&s[p]!==1&&n[p]!==1)throw new Error(`index ${s[p]} is out of bounds for size ${n[p]} in dimension ${p}`);let u=Array.from(s),c=u.reduce((p,g)=>p*g,1),l=P(a);if(!l)throw new Error(`Cannot take_along_axis with dtype ${a}`);let m=new l(c),d=ar(n),y=ar(s),f=n[i];for(let p=0;p<c;p++){let g=new Array(o),h=p;for(let x=o-1;x>=0;x--)g[x]=h%u[x],h=Math.floor(h/u[x]);let b=0;for(let x=0;x<o;x++){let I=s[x]===1?0:g[x];b+=I*y[x]}let A=Number(t.iget(b));if(A<0&&(A=f+A),A<0||A>=f)throw new Error(`index ${A} is out of bounds for axis ${i} with size ${f}`);let S=[...g];S[i]=A;let D=0;for(let x=0;x<o;x++){let I=n[x]===1?0:S[x];D+=I*d[x]}let w=r.iget(D);B(a),m[p]=w}return N.fromData(m,u,a)}function ka(r,t,e,n){let o=r.shape,a=o.length,i=r.dtype,s=n<0?a+n:n;if(s<0||s>=a)throw new Error(`axis ${n} is out of bounds for array of dimension ${a}`);let u=t.shape,c=e.shape;if(u.length!==a||c.length!==a)throw new Error("indices, arr, and values must have same ndim");let l=o[s],m=ar(o),d=ar(u),y=ar(c),f=u.reduce((p,g)=>p*g,1);for(let p=0;p<f;p++){let g=new Array(a),h=p;for(let I=a-1;I>=0;I--)g[I]=h%u[I],h=Math.floor(h/u[I]);let b=0;for(let I=0;I<a;I++)b+=g[I]*d[I];let A=Number(t.iget(b));if(A<0&&(A=l+A),A<0||A>=l)throw new Error(`index ${A} is out of bounds for axis ${s} with size ${l}`);let S=0;for(let I=0;I<a;I++){let z=c[I]===1?0:g[I];S+=z*y[I]}let D=e.iget(S),w=[...g];w[s]=A;let x=0;for(let I=0;I<a;I++)x+=w[I]*m[I];B(i)?typeof D!="bigint"&&(D=BigInt(Math.round(Number(D)))):typeof D=="bigint"&&(D=Number(D)),r.iset(x,D)}}function qa(r,t,e){let n=r.size,o=r.dtype,a;if(typeof e=="number"||typeof e=="bigint")a=[e];else{a=[];for(let s=0;s<e.size;s++){let u=e.iget(s);a.push(u instanceof E?u.re:u)}}let i=0;for(let s=0;s<n;s++)if(t.iget(s)){let c=a[i%a.length];B(o)?typeof c!="bigint"&&(c=BigInt(Math.round(Number(c)))):typeof c=="bigint"&&(c=Number(c)),r.iset(s,c),i++}}function _e(r,t,e){let n=t.shape,o=n.length,a=t.dtype,i=t.data,s=B(a);if(e===void 0){let b=0,A=Math.min(r.size,t.size);for(let x=0;x<A;x++)r.iget(x)&&b++;let S=P(a);if(!S)throw new Error(`Cannot compress with dtype ${a}`);let D=new S(b),w=0;for(let x=0;x<A;x++)r.iget(x)&&(D[w]=i[x],w++);return N.fromData(D,[b],a)}let u=e<0?o+e:e;if(u<0||u>=o)throw new Error(`axis ${e} is out of bounds for array of dimension ${o}`);let c=n[u],l=Math.min(r.size,c),m=[];for(let b=0;b<l;b++)r.iget(b)&&m.push(b);let d=m.length,y=[...n];y[u]=d;let f=y.reduce((b,A)=>b*A,1),p=P(a);if(!p)throw new Error(`Cannot compress with dtype ${a}`);let g=new p(f),h=ar(n);if(u===0){let b=h[0],A=n.slice(1).reduce((D,w)=>D*w,1),S=0;for(let D=0;D<d;D++){let x=m[D]*b;if(s){let I=i,z=g;for(let F=0;F<A;F++)z[S++]=I[x+F]}else{let I=i,z=g;for(let F=0;F<A;F++)z[S++]=I[x+F]}}}else{let b=n.slice(0,u).reduce((D,w)=>D*w,1),A=n.slice(u+1).reduce((D,w)=>D*w,1),S=0;for(let D=0;D<b;D++)for(let w=0;w<d;w++){let x=m[w],I=0,z=D;for(let F=u-1;F>=0;F--){let M=z%n[F];z=Math.floor(z/n[F]),I+=M*h[F]}if(I+=x*h[u],s){let F=i,M=g;for(let T=0;T<A;T++)M[S++]=F[I+T]}else{let F=i,M=g;for(let T=0;T<A;T++)M[S++]=F[I+T]}}}return N.fromData(g,y,a)}function Va(r,t,e=0){if(r.length!==t.length)throw new Error("condlist and choicelist must have same length");if(r.length===0)throw new Error("condlist and choicelist cannot be empty");let n=[...r.map(d=>Array.from(d.shape)),...t.map(d=>Array.from(d.shape))],o=Ar(n);if(o===null)throw new Error("condlist and choicelist arrays could not be broadcast together");let a=t[0].dtype,i=o.reduce((d,y)=>d*y,1),s=P(a);if(!s)throw new Error(`Cannot select with dtype ${a}`);let u=e;B(a)?u=typeof e=="bigint"?e:BigInt(e):u=typeof e=="bigint"?Number(e):e;let c=new s(i);for(let d=0;d<i;d++)B(a),c[d]=u;let l=r.map(d=>pr(d,o)),m=t.map(d=>pr(d,o));for(let d=0;d<i;d++)for(let y=0;y<r.length;y++)if(l[y].iget(d)){let f=m[y].iget(d);B(a),c[d]=f;break}return N.fromData(c,o,a)}function ja(r,t,e){let n=r.size,o=r.dtype,a=[];for(let s=0;s<e.size;s++){let u=e.iget(s);a.push(u instanceof E?u.re:u)}if(a.length===0)return;let i=0;for(let s=0;s<n;s++)if(t.iget(s)){let c=a[i%a.length];B(o)?typeof c!="bigint"&&(c=BigInt(Math.round(Number(c)))):typeof c=="bigint"&&(c=Number(c)),r.iset(s,c),i++}}function Me(r,t=2){if(t<1)throw new Error("ndim must be at least 1");let e=new Int32Array(r);for(let o=0;o<r;o++)e[o]=o;let n=[];for(let o=0;o<t;o++)n.push(N.fromData(new Int32Array(e),[r],"int32"));return n}function Pa(r){let t=r.shape,e=t.length;if(e<2)throw new Error("array must be at least 2-D");let n=t[0];for(let o=1;o<e;o++)if(t[o]!==n)throw new Error("All dimensions of input must be equal");return Me(n,e)}function Fe(r,t=0,e){let n=e??r,o=[],a=[];for(let i=0;i<r;i++)for(let s=0;s<=Math.min(i+t,n-1);s++)s>=0&&(o.push(i),a.push(s));return[N.fromData(new Int32Array(o),[o.length],"int32"),N.fromData(new Int32Array(a),[a.length],"int32")]}function La(r,t=0){let e=r.shape;if(e.length!==2)throw new Error("array must be 2-D");return Fe(e[0],t,e[1])}function ve(r,t=0,e){let n=e??r,o=[],a=[];for(let i=0;i<r;i++)for(let s=Math.max(i+t,0);s<n;s++)o.push(i),a.push(s);return[N.fromData(new Int32Array(o),[o.length],"int32"),N.fromData(new Int32Array(a),[a.length],"int32")]}function Ga(r,t=0){let e=r.shape;if(e.length!==2)throw new Error("array must be 2-D");return ve(e[0],t,e[1])}function Wa(r,t,e=0){let n=t(r,e),o=n.shape;if(o.length!==2||o[0]!==r||o[1]!==r)throw new Error("mask_func must return n x n array");let a=[],i=[];for(let s=0;s<r;s++)for(let u=0;u<r;u++)n.get(s,u)&&(a.push(s),i.push(u));return[N.fromData(new Int32Array(a),[a.length],"int32"),N.fromData(new Int32Array(i),[i.length],"int32")]}function Za(r,t="int32"){let e=r.length,n=[e,...r],o=n.reduce((u,c)=>u*c,1),a=P(t);if(!a)throw new Error(`Cannot create indices with dtype ${t}`);let i=new a(o),s=r.reduce((u,c)=>u*c,1);for(let u=0;u<e;u++){let c=u*s;for(let l=0;l<s;l++){let m=new Array(e),d=l;for(let f=e-1;f>=0;f--)m[f]=d%r[f],d=Math.floor(d/r[f]);let y=m[u];t==="int64"?i[c+l]=BigInt(y):i[c+l]=y}}return N.fromData(i,n,t)}function Ya(...r){let t=r.length,e=[];for(let n=0;n<t;n++){let o=r[n],a=o.size,i=o.dtype,s=new Array(t).fill(1);s[n]=a;let u=P(i);if(!u)throw new Error(`Cannot create ix_ with dtype ${i}`);let c=new u(a);for(let l=0;l<a;l++){let m=o.iget(l);B(i),c[l]=m}e.push(N.fromData(c,s,i))}return e}function Ha(r,t,e="raise"){if(r.length!==t.length)throw new Error("multi_index length must equal dims length");if(r.length===0)throw new Error("multi_index cannot be empty");let n=r[0].size,o=t.length,a=new Int32Array(n),i=new Array(o),s=1;for(let u=o-1;u>=0;u--)i[u]=s,s*=t[u];for(let u=0;u<n;u++){let c=0;for(let l=0;l<o;l++){let m=Number(r[l].iget(u)),d=t[l];if(e==="wrap")m=(m%d+d)%d;else if(e==="clip")m=Math.max(0,Math.min(m,d-1));else if(m<0||m>=d)throw new Error(`index ${m} is out of bounds for axis ${l} with size ${d}`);c+=m*i[l]}a[u]=c}return N.fromData(a,[n],"int32")}function Xa(r,t,e="C"){let n=t.length,o,a;if(typeof r=="number")o=[r],a=[];else{o=[];for(let l=0;l<r.size;l++)o.push(Number(r.iget(l)));a=Array.from(r.shape)}let i=o.length,s=t.reduce((l,m)=>l*m,1),u=new Array(n);if(e==="C"){let l=1;for(let m=n-1;m>=0;m--)u[m]=l,l*=t[m]}else{let l=1;for(let m=0;m<n;m++)u[m]=l,l*=t[m]}let c=[];for(let l=0;l<n;l++){let m=new Int32Array(i);c.push(N.fromData(m,a.length?a:[1],"int32"))}for(let l=0;l<i;l++){let m=o[l];if(m<0||m>=s)throw new Error(`index ${m} is out of bounds for array with size ${s}`);if(e==="C")for(let d=0;d<n;d++){let y=Math.floor(m/u[d]);m=m%u[d],c[d].data[l]=y%t[d]}else for(let d=n-1;d>=0;d--){let y=Math.floor(m/u[d]);m=m%u[d],c[d].data[l]=y%t[d]}}return typeof r=="number"?c.map(l=>{let m=l.iget(0);return N.fromData(new Int32Array([Number(m)]),[],"int32")}):c}function Ja(r,t,e=!1){let n=r.shape,o=n.length;if(o<2)throw new Error("array must be at least 2-d");let a;if(o===2)a=n[1]+1;else{a=1;for(let c=1;c<o;c++){let l=1;for(let m=c;m<o;m++)l*=n[m];a+=l}}let i=r.data,s=r.size,u=Math.min(...n);if(e&&o===2&&(u=Math.max(n[0],n[1])),typeof t=="number")for(let c=0;c<u&&c*a<s;c++){let l=c*a;if(l<s)i[l]=t;else break}else{let c=t.data,l=t.size;for(let m=0;m<u&&m*a<s;m++){let d=m*a;if(d<s)i[d]=c[m%l];else break}}}function Qa(r,t,e){let n=Array.from(r.shape),o=n.length;if(t<0&&(t+=o),t<0||t>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);let a=[];for(let i=0;i<o;i++)i!==t&&a.push(n[i]);if(a.length===0){let i=e(r);if(typeof i=="number"){let s=N.zeros([1],r.dtype);return s.data[0]=i,s}return i}if(o===2){let[i,s]=n;if(t===0){let u=[];for(let l=0;l<s;l++){let m=new Float64Array(i);for(let y=0;y<i;y++)m[y]=Number(r.data[y*s+l]);let d=N.fromData(m,[i],"float64");u.push(e(d))}let c=u[0];if(c===void 0)return N.zeros([0],"float64");if(typeof c=="number"){let l=N.zeros([s],"float64");for(let m=0;m<s;m++)l.data[m]=u[m];return l}else{let l=[c.size,s],m=N.zeros(l,"float64");for(let d=0;d<s;d++){let y=u[d];for(let f=0;f<y.size;f++)m.data[f*s+d]=Number(y.data[f])}return m}}else{let u=[];for(let l=0;l<i;l++){let m=new Float64Array(s);for(let y=0;y<s;y++)m[y]=Number(r.data[l*s+y]);let d=N.fromData(m,[s],"float64");u.push(e(d))}let c=u[0];if(c===void 0)return N.zeros([0],"float64");if(typeof c=="number"){let l=N.zeros([i],"float64");for(let m=0;m<i;m++)l.data[m]=u[m];return l}else{let l=[i,c.size],m=N.zeros(l,"float64");for(let d=0;d<i;d++){let y=u[d];for(let f=0;f<y.size;f++)m.data[d*y.size+f]=Number(y.data[f])}return m}}}if(o===1){let i=e(r);if(typeof i=="number"){let s=N.zeros([1],"float64");return s.data[0]=i,s}return i}throw new Error(`apply_along_axis not fully implemented for ${o}D arrays. Only 1D and 2D arrays are supported.`)}function Ka(r,t,e){let n=r,o=r.shape.length;for(let a of e){let i=a<0?a+o:a;if(i<0||i>=o)throw new Error(`axis ${a} is out of bounds for array of dimension ${o}`);if(n=t(n,i),n.shape.length<o){let s=Array.from(n.shape);s.splice(i,0,1);let u=ar(s);n=new N(n.data,s,u,0,n.dtype)}}return n}function Be(r,t){return r.data.buffer===t.data.buffer}function rs(r,t){return Be(r,t)}var Ir={divide:"warn",over:"warn",under:"ignore",invalid:"warn"};function Ee(){return{...Ir}}function ts(r,t,e,n,o){let a=Ee();return r!==void 0&&(Ir.divide=r,Ir.over=r,Ir.under=r,Ir.invalid=r),t!==void 0&&(Ir.divide=t),e!==void 0&&(Ir.over=e),n!==void 0&&(Ir.under=n),o!==void 0&&(Ir.invalid=o),a}function dr(r,t){if(!Nn(r)&&r!=="bool")throw new TypeError(`ufunc '${t}' not supported for the input types, and the inputs could not be safely coerced to any supported types`)}function ct(r,t){return r.isCContiguous&&t.isCContiguous&&r.shape.length===t.shape.length&&r.shape.every((e,n)=>e===t.shape[n])}function os(r,t){return dr(r.dtype,"bitwise_and"),typeof t=="number"?Dc(r,t):(dr(t.dtype,"bitwise_and"),ct(r,t)?Sc(r,t):H(r,t,(e,n)=>e&n,"bitwise_and"))}function Sc(r,t){let e=W(r.dtype,t.dtype),n=N.zeros(Array.from(r.shape),e),o=r.size,a=r.data,i=t.data,s=n.data;if(B(e)){let u=s;if(!B(r.dtype)||!B(t.dtype))for(let l=0;l<o;l++){let m=typeof a[l]=="bigint"?a[l]:BigInt(Math.round(Number(a[l]))),d=typeof i[l]=="bigint"?i[l]:BigInt(Math.round(Number(i[l])));u[l]=m&d}else{let l=a,m=i;for(let d=0;d<o;d++)u[d]=l[d]&m[d]}}else for(let u=0;u<o;u++)s[u]=a[u]&i[u];return n}function Dc(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,i=N.zeros(n,e),s=i.data;if(B(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]=o[u]&t;return i}function as(r,t){return dr(r.dtype,"bitwise_or"),typeof t=="number"?xc(r,t):(dr(t.dtype,"bitwise_or"),ct(r,t)?Nc(r,t):H(r,t,(e,n)=>e|n,"bitwise_or"))}function Nc(r,t){let e=W(r.dtype,t.dtype),n=N.zeros(Array.from(r.shape),e),o=r.size,a=r.data,i=t.data,s=n.data;if(B(e)){let u=s;if(!B(r.dtype)||!B(t.dtype))for(let l=0;l<o;l++){let m=typeof a[l]=="bigint"?a[l]:BigInt(Math.round(Number(a[l]))),d=typeof i[l]=="bigint"?i[l]:BigInt(Math.round(Number(i[l])));u[l]=m|d}else{let l=a,m=i;for(let d=0;d<o;d++)u[d]=l[d]|m[d]}}else for(let u=0;u<o;u++)s[u]=a[u]|i[u];return n}function xc(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,i=N.zeros(n,e),s=i.data;if(B(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]=o[u]|t;return i}function ss(r,t){return dr(r.dtype,"bitwise_xor"),typeof t=="number"?Ic(r,t):(dr(t.dtype,"bitwise_xor"),ct(r,t)?wc(r,t):H(r,t,(e,n)=>e^n,"bitwise_xor"))}function wc(r,t){let e=W(r.dtype,t.dtype),n=N.zeros(Array.from(r.shape),e),o=r.size,a=r.data,i=t.data,s=n.data;if(B(e)){let u=s;if(!B(r.dtype)||!B(t.dtype))for(let l=0;l<o;l++){let m=typeof a[l]=="bigint"?a[l]:BigInt(Math.round(Number(a[l]))),d=typeof i[l]=="bigint"?i[l]:BigInt(Math.round(Number(i[l])));u[l]=m^d}else{let l=a,m=i;for(let d=0;d<o;d++)u[d]=l[d]^m[d]}}else for(let u=0;u<o;u++)s[u]=a[u]^i[u];return n}function Ic(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,i=N.zeros(n,e),s=i.data;if(B(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]=o[u]^t;return i}function Bt(r){dr(r.dtype,"bitwise_not");let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size,a=N.zeros(e,t),i=a.data;if(B(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]=~n[s];return a}function is(r){return Bt(r)}function Te(r,t){if(dr(r.dtype,"left_shift"),typeof t=="number")return es(r,t);if(dr(t.dtype,"left_shift"),t.size===1||t.ndim===1&&t.shape[0]===1){let e=B(t.dtype)?Number(t.data[0]):t.data[0];return es(r,e)}return ct(r,t)?zc(r,t):H(r,t,(e,n)=>e<<n,"left_shift")}function zc(r,t){let e=W(r.dtype,t.dtype),n=N.zeros(Array.from(r.shape),e),o=r.size,a=r.data,i=t.data,s=n.data;if(B(e)){let u=s;for(let c=0;c<o;c++){let l=typeof a[c]=="bigint"?a[c]:BigInt(Math.round(Number(a[c]))),m=typeof i[c]=="bigint"?i[c]:BigInt(Math.round(Number(i[c])));u[c]=l<<m}}else for(let u=0;u<o;u++)s[u]=a[u]<<i[u];return n}function es(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,i=N.zeros(n,e),s=i.data;if(B(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]=o[u]<<t;return i}function Oe(r,t){if(dr(r.dtype,"right_shift"),typeof t=="number")return ns(r,t);if(dr(t.dtype,"right_shift"),t.size===1||t.ndim===1&&t.shape[0]===1){let e=B(t.dtype)?Number(t.data[0]):t.data[0];return ns(r,e)}return ct(r,t)?_c(r,t):H(r,t,(e,n)=>e>>n,"right_shift")}function _c(r,t){let e=W(r.dtype,t.dtype),n=N.zeros(Array.from(r.shape),e),o=r.size,a=r.data,i=t.data,s=n.data;if(B(e)){let u=s;for(let c=0;c<o;c++){let l=typeof a[c]=="bigint"?a[c]:BigInt(Math.round(Number(a[c]))),m=typeof i[c]=="bigint"?i[c]:BigInt(Math.round(Number(i[c])));u[c]=l>>m}}else for(let u=0;u<o;u++)s[u]=a[u]>>i[u];return n}function ns(r,t){let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,i=N.zeros(n,e),s=i.data;if(B(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]=o[u]>>t;return i}function us(r,t=-1,e="big"){let n=Array.from(r.shape),o=n.length;if(t<0&&(t=o+t),t<0||t>=o)throw new Error(`axis ${t} is out of bounds for array of dimension ${o}`);let a=n[t],i=Math.ceil(a/8),s=[...n];s[t]=i;let u=N.zeros(s,"uint8"),c=u.data;if(o===1){for(let g=0;g<i;g++){let h=0;for(let b=0;b<8;b++){let A=g*8+b;if(A<a){let S=Number(r.data[A])!==0?1:0;e==="big"?h|=S<<7-b:h|=S<<b}}c[g]=h}return u}let l=n.slice(0,t),m=n.slice(t+1),d=l.reduce((g,h)=>g*h,1),y=m.reduce((g,h)=>g*h,1),f=vt(n),p=vt(s);for(let g=0;g<d;g++)for(let h=0;h<y;h++)for(let b=0;b<i;b++){let A=0;for(let x=0;x<8;x++){let I=b*8+x;if(I<a){let z=0,F=g;for(let O=0;O<t;O++){let C=O<t-1?l.slice(O+1).reduce((V,k)=>V*k,1):1,q=Math.floor(F/C);F%=C,z+=q*f[O]}z+=I*f[t];let M=h;for(let O=t+1;O<o;O++){let C=O<o-1?m.slice(O-t).reduce((V,k)=>V*k,1):1,q=Math.floor(M/C);M%=C,z+=q*f[O]}let T=Number(r.data[z])!==0?1:0;e==="big"?A|=T<<7-x:A|=T<<x}}let S=0,D=g;for(let x=0;x<t;x++){let I=x<t-1?l.slice(x+1).reduce((F,M)=>F*M,1):1,z=Math.floor(D/I);D%=I,S+=z*p[x]}S+=b*p[t];let w=h;for(let x=t+1;x<o;x++){let I=x<o-1?m.slice(x-t).reduce((F,M)=>F*M,1):1,z=Math.floor(w/I);w%=I,S+=z*p[x]}c[S]=A}return u}function cs(r,t=-1,e=-1,n="big"){if(r.dtype!=="uint8")throw new TypeError("Expected an input array of unsigned byte data type");let o=Array.from(r.shape),a=o.length;if(t<0&&(t=a+t),t<0||t>=a)throw new Error(`axis ${t} is out of bounds for array of dimension ${a}`);let i=o[t],s=i*8;e>=0&&(s=e);let u=[...o];u[t]=s;let c=N.zeros(u,"uint8"),l=c.data;if(a===1){for(let h=0;h<i;h++){let b=Number(r.data[h]);for(let A=0;A<8;A++){let S=h*8+A;if(S>=s)break;n==="big"?l[S]=b>>7-A&1:l[S]=b>>A&1}}return c}let m=o.slice(0,t),d=o.slice(t+1),y=m.reduce((h,b)=>h*b,1),f=d.reduce((h,b)=>h*b,1),p=vt(o),g=vt(u);for(let h=0;h<y;h++)for(let b=0;b<f;b++)for(let A=0;A<i;A++){let S=0,D=h;for(let I=0;I<t;I++){let z=I<t-1?m.slice(I+1).reduce((M,T)=>M*T,1):1,F=Math.floor(D/z);D%=z,S+=F*p[I]}S+=A*p[t];let w=b;for(let I=t+1;I<a;I++){let z=I<a-1?d.slice(I-t).reduce((M,T)=>M*T,1):1,F=Math.floor(w/z);w%=z,S+=F*p[I]}let x=Number(r.data[S]);for(let I=0;I<8;I++){let z=A*8+I;if(z>=s)break;let F=0;D=h;for(let M=0;M<t;M++){let T=M<t-1?m.slice(M+1).reduce((C,q)=>C*q,1):1,O=Math.floor(D/T);D%=T,F+=O*g[M]}F+=z*g[t],w=b;for(let M=t+1;M<a;M++){let T=M<a-1?d.slice(M-t).reduce((C,q)=>C*q,1):1,O=Math.floor(w/T);w%=T,F+=O*g[M]}n==="big"?l[F]=x>>7-I&1:l[F]=x>>I&1}}return c}function vt(r){let t=r.length,e=new Array(t),n=1;for(let o=t-1;o>=0;o--)e[o]=n,n*=r[o];return e}function ls(r){let t=r.dtype;dr(t,"bitwise_count");let e=Array.from(r.shape),n=r.data,o=r.size,a=N.zeros(e,"uint8"),i=a.data;if(B(t)){let s=n;for(let u=0;u<o;u++)i[u]=Fc(s[u])}else for(let s=0;s<o;s++){let u=n[s];i[s]=Mc(u)}return a}function Mc(r){r=r>>>0;let t=0;for(;r!==0;)r=r&r-1,t++;return t}function Fc(r){r<0n&&(r=BigInt.asUintN(64,r));let t=0;for(;r!==0n;)r=r&r-1n,t++;return t}function fs(r){return Bt(r)}function ms(r,t){return Te(r,t)}function ps(r,t){return Oe(r,t)}function Yr(r){return r!==0&&r!==0n}function Dr(r,t){let e=r[t*2],n=r[t*2+1];return e!==0||n!==0}function ft(r,t){return r.isCContiguous&&t.isCContiguous&&r.shape.length===t.shape.length&&r.shape.every((e,n)=>e===t.shape[n])}function ds(r,t){return typeof t=="number"?Ec(r,t):ft(r,t)?Bc(r,t):yr(r,t,(e,n)=>Yr(e)&&Yr(n))}function Bc(r,t){let e=new Uint8Array(r.size),n=r.data,o=t.data,a=r.size,i=B(r.dtype),s=B(t.dtype),u=v(r.dtype),c=v(t.dtype);if(u||c)for(let l=0;l<a;l++){let m=u?Dr(n,l):n[l]!==0,d=c?Dr(o,l):o[l]!==0;e[l]=m&&d?1:0}else if(i||s)for(let l=0;l<a;l++){let m=i?n[l]!==0n:n[l]!==0,d=s?o[l]!==0n:o[l]!==0;e[l]=m&&d?1:0}else for(let l=0;l<a;l++)e[l]=n[l]!==0&&o[l]!==0?1:0;return N.fromData(e,Array.from(r.shape),"bool")}function Ec(r,t){let e=new Uint8Array(r.size),n=r.data,o=t!==0,a=r.size;if(v(r.dtype)){let i=n;for(let s=0;s<a;s++)e[s]=Dr(i,s)&&o?1:0}else if(B(r.dtype)){let i=n;for(let s=0;s<a;s++)e[s]=i[s]!==0n&&o?1:0}else for(let i=0;i<a;i++)e[i]=n[i]!==0&&o?1:0;return N.fromData(e,Array.from(r.shape),"bool")}function gs(r,t){return typeof t=="number"?Oc(r,t):ft(r,t)?Tc(r,t):yr(r,t,(e,n)=>Yr(e)||Yr(n))}function Tc(r,t){let e=new Uint8Array(r.size),n=r.data,o=t.data,a=r.size,i=B(r.dtype),s=B(t.dtype),u=v(r.dtype),c=v(t.dtype);if(u||c)for(let l=0;l<a;l++){let m=u?Dr(n,l):n[l]!==0,d=c?Dr(o,l):o[l]!==0;e[l]=m||d?1:0}else if(i||s)for(let l=0;l<a;l++){let m=i?n[l]!==0n:n[l]!==0,d=s?o[l]!==0n:o[l]!==0;e[l]=m||d?1:0}else for(let l=0;l<a;l++)e[l]=n[l]!==0||o[l]!==0?1:0;return N.fromData(e,Array.from(r.shape),"bool")}function Oc(r,t){let e=new Uint8Array(r.size),n=r.data,o=t!==0,a=r.size;if(v(r.dtype)){let i=n;for(let s=0;s<a;s++)e[s]=Dr(i,s)||o?1:0}else if(B(r.dtype)){let i=n;for(let s=0;s<a;s++)e[s]=i[s]!==0n||o?1:0}else for(let i=0;i<a;i++)e[i]=n[i]!==0||o?1:0;return N.fromData(e,Array.from(r.shape),"bool")}function As(r){let t=new Uint8Array(r.size),e=r.data,n=r.size;if(v(r.dtype)){let o=e;for(let a=0;a<n;a++)t[a]=Dr(o,a)?0:1}else if(B(r.dtype)){let o=e;for(let a=0;a<n;a++)t[a]=o[a]===0n?1:0}else for(let o=0;o<n;o++)t[o]=e[o]===0?1:0;return N.fromData(t,Array.from(r.shape),"bool")}function bs(r,t){return typeof t=="number"?Uc(r,t):ft(r,t)?Cc(r,t):yr(r,t,(e,n)=>Yr(e)!==Yr(n))}function Cc(r,t){let e=new Uint8Array(r.size),n=r.data,o=t.data,a=r.size,i=B(r.dtype),s=B(t.dtype),u=v(r.dtype),c=v(t.dtype);if(u||c)for(let l=0;l<a;l++){let m=u?Dr(n,l):n[l]!==0,d=c?Dr(o,l):o[l]!==0;e[l]=m!==d?1:0}else if(i||s)for(let l=0;l<a;l++){let m=i?n[l]!==0n:n[l]!==0,d=s?o[l]!==0n:o[l]!==0;e[l]=m!==d?1:0}else for(let l=0;l<a;l++){let m=n[l]!==0,d=o[l]!==0;e[l]=m!==d?1:0}return N.fromData(e,Array.from(r.shape),"bool")}function Uc(r,t){let e=new Uint8Array(r.size),n=r.data,o=t!==0,a=r.size;if(v(r.dtype)){let i=n;for(let s=0;s<a;s++){let u=Dr(i,s);e[s]=u!==o?1:0}}else if(B(r.dtype)){let i=n;for(let s=0;s<a;s++){let u=i[s]!==0n;e[s]=u!==o?1:0}}else for(let i=0;i<a;i++){let s=n[i]!==0;e[i]=s!==o?1:0}return N.fromData(e,Array.from(r.shape),"bool")}function hs(r){let t=new Uint8Array(r.size),e=r.data,n=r.size;if(v(r.dtype)){let o=e;for(let a=0;a<n;a++){let i=o[a*2],s=o[a*2+1];t[a]=Number.isFinite(i)&&Number.isFinite(s)?1:0}}else if(B(r.dtype))for(let o=0;o<n;o++)t[o]=1;else for(let o=0;o<n;o++){let a=e[o];t[o]=Number.isFinite(a)?1:0}return N.fromData(t,Array.from(r.shape),"bool")}function Ss(r){let t=new Uint8Array(r.size),e=r.data,n=r.size;if(v(r.dtype)){let o=e;for(let a=0;a<n;a++){let i=o[a*2],s=o[a*2+1],u=!Number.isFinite(i)&&!Number.isNaN(i),c=!Number.isFinite(s)&&!Number.isNaN(s);t[a]=u||c?1:0}}else if(B(r.dtype))for(let o=0;o<n;o++)t[o]=0;else for(let o=0;o<n;o++){let a=e[o];t[o]=!Number.isFinite(a)&&!Number.isNaN(a)?1:0}return N.fromData(t,Array.from(r.shape),"bool")}function Ds(r){let t=new Uint8Array(r.size),e=r.data,n=r.size;if(v(r.dtype)){let o=e;for(let a=0;a<n;a++){let i=o[a*2],s=o[a*2+1];t[a]=Number.isNaN(i)||Number.isNaN(s)?1:0}}else if(B(r.dtype))for(let o=0;o<n;o++)t[o]=0;else for(let o=0;o<n;o++)t[o]=Number.isNaN(e[o])?1:0;return N.fromData(t,Array.from(r.shape),"bool")}function Ns(r){let t=new Uint8Array(r.size);return N.fromData(t,Array.from(r.shape),"bool")}function xs(r,t){if(U(r.dtype,"copysign","copysign is only defined for real numbers."),typeof t!="number"&&U(t.dtype,"copysign","copysign is only defined for real numbers."),typeof t=="number")return Rc(r,t);if(ft(r,t))return $c(r,t);let e=Mr(r.shape,t.shape),n=e.reduce((u,c)=>u*c,1),o=N.zeros(e,"float64"),a=o.data,i=Et(r,e),s=Et(t,e);for(let u=0;u<n;u++){let c=Number(i.iget(u)),l=Number(s.iget(u));a[u]=Math.sign(l)*Math.abs(c)}return o}function $c(r,t){let e=N.zeros(Array.from(r.shape),"float64"),n=e.data,o=r.size,a=r.data,i=t.data,s=B(r.dtype),u=B(t.dtype);for(let c=0;c<o;c++){let l=s?Number(a[c]):a[c],m=u?Number(i[c]):i[c];n[c]=Math.sign(m)*Math.abs(l)}return e}function Rc(r,t){let e=N.zeros(Array.from(r.shape),"float64"),n=e.data,o=r.data,a=r.size,i=Math.sign(t);if(B(r.dtype)){let s=o;for(let u=0;u<a;u++)n[u]=i*Math.abs(Number(s[u]))}else for(let s=0;s<a;s++)n[s]=i*Math.abs(o[s]);return e}function ws(r){U(r.dtype,"signbit","signbit is only defined for real numbers.");let t=new Uint8Array(r.size),e=r.data,n=r.size;if(B(r.dtype)){let o=e;for(let a=0;a<n;a++)t[a]=o[a]<0n?1:0}else for(let o=0;o<n;o++){let a=e[o];t[o]=a<0||Object.is(a,-0)?1:0}return N.fromData(t,Array.from(r.shape),"bool")}function Is(r,t){if(U(r.dtype,"nextafter","nextafter is only defined for real numbers."),typeof t!="number"&&U(t.dtype,"nextafter","nextafter is only defined for real numbers."),typeof t=="number")return qc(r,t);if(ft(r,t))return kc(r,t);let e=Mr(r.shape,t.shape),n=e.reduce((u,c)=>u*c,1),o=N.zeros(e,"float64"),a=o.data,i=Et(r,e),s=Et(t,e);for(let u=0;u<n;u++){let c=Number(i.iget(u)),l=Number(s.iget(u));a[u]=lt(c,l)}return o}function kc(r,t){let e=N.zeros(Array.from(r.shape),"float64"),n=e.data,o=r.size,a=r.data,i=t.data,s=B(r.dtype),u=B(t.dtype);for(let c=0;c<o;c++){let l=s?Number(a[c]):a[c],m=u?Number(i[c]):i[c];n[c]=lt(l,m)}return e}function qc(r,t){let e=N.zeros(Array.from(r.shape),"float64"),n=e.data,o=r.data,a=r.size;if(B(r.dtype)){let i=o;for(let s=0;s<a;s++)n[s]=lt(Number(i[s]),t)}else for(let i=0;i<a;i++)n[i]=lt(o[i],t);return e}function lt(r,t){if(Number.isNaN(r)||Number.isNaN(t))return NaN;if(r===t)return t;if(r===0)return t>0?Number.MIN_VALUE:-Number.MIN_VALUE;let e=new ArrayBuffer(8),n=new Float64Array(e),o=new BigInt64Array(e);n[0]=r;let a=o[0];return r>0&&t>r||r<0&&t>r?a=a+1n:a=a-1n,o[0]=a,n[0]}function zs(r){U(r.dtype,"spacing","spacing is only defined for real numbers.");let t=N.zeros(Array.from(r.shape),"float64"),e=t.data,n=r.data,o=r.size;if(B(r.dtype)){let a=n;for(let i=0;i<o;i++)e[i]=ys(Number(a[i]))}else for(let a=0;a<o;a++)e[a]=ys(n[a]);return t}function ys(r){if(Number.isNaN(r))return NaN;if(!Number.isFinite(r))return NaN;if(Math.abs(r)===0)return Number.MIN_VALUE;let e=lt(r,1/0);return Math.abs(e-r)}function Et(r,t){let e=r.shape.length,n=t.length,o=new Array(n).fill(0);for(let a=0;a<e;a++){let i=n-e+a,s=r.shape[a],u=t[i];if(s===u)o[i]=r.strides[a];else if(s===1)o[i]=0;else throw new Error("Invalid broadcast")}return N.fromData(r.data,Array.from(t),r.dtype,o,r.offset)}function _s(r){let t=r.dtype,e=r.size,n=new Uint8Array(e);if(v(t)){let o=r.data;for(let a=0;a<e;a++)n[a]=o[a*2+1]!==0?1:0}return N.fromData(n,Array.from(r.shape),"bool")}function Ms(r){return v(r.dtype)}function Fs(r){let t=r.dtype,e=r.size,n=new Uint8Array(e);if(v(t)){let o=r.data;for(let a=0;a<e;a++)n[a]=o[a*2+1]===0?1:0}else n.fill(1);return N.fromData(n,Array.from(r.shape),"bool")}function vs(r){return!v(r.dtype)}function Bs(r){U(r.dtype,"isneginf","This operation is not supported for complex values because it would be ambiguous.");let t=new Uint8Array(r.size),e=r.data,n=r.size;if(!B(r.dtype))for(let o=0;o<n;o++){let a=e[o];t[o]=a===-1/0?1:0}return N.fromData(t,Array.from(r.shape),"bool")}function Es(r){U(r.dtype,"isposinf","This operation is not supported for complex values because it would be ambiguous.");let t=new Uint8Array(r.size),e=r.data,n=r.size;if(!B(r.dtype))for(let o=0;o<n;o++){let a=e[o];t[o]=a===1/0?1:0}return N.fromData(t,Array.from(r.shape),"bool")}function Ts(r){return r.isFContiguous}function Os(r,t=100){let e=r.dtype;if(v(e)){let n=r.data,o=r.size,i=t*(e==="complex64"?11920929e-14:2220446049250313e-31),s=!0;for(let u=0;u<o;u++){let c=n[u*2+1];if(Math.abs(c)>i){s=!1;break}}if(s){let u=e==="complex64"?"float32":"float64",c=N.zeros(Array.from(r.shape),u),l=c.data;for(let m=0;m<o;m++)l[m]=n[m*2];return c}return r.copy()}return r.copy()}function Cs(r){return typeof r=="number"||typeof r=="bigint"||typeof r=="boolean"||typeof r=="string"}function Us(r){return r==null?!1:typeof r[Symbol.iterator]=="function"}function $s(r,t){let n={b:["bool"],i:["int8","int16","int32","int64"],u:["uint8","uint16","uint32","uint64"],f:["float32","float64"]}[t];return n?n.includes(r):!1}function Rs(r,t){let e=["float64","float32","int64","int32","int16","int8","uint64","uint32","uint16","uint8","bool"],n=e.indexOf(r),o=e.indexOf(t);return n<=o?r:t}function ks(r){let t=r.dtype,e=Array.from(r.shape),n=r.size;if(v(t)){let o=Xr(t),a=N.zeros(e,o),i=a.data,s=r.data;for(let u=0;u<n;u++)i[u]=s[u*2];return a}return r.copy()}function qs(r){let t=r.dtype,e=Array.from(r.shape),n=r.size;if(v(t)){let a=Xr(t),i=N.zeros(e,a),s=i.data,u=r.data;for(let c=0;c<n;c++)s[c]=u[c*2+1];return i}let o=t==="float32"?"float32":"float64";return N.zeros(e,o)}function Vs(r){let t=r.dtype,e=Array.from(r.shape),n=r.size;if(v(t)){let o=P(t),a=n*2,i=new o(a),s=r.data;for(let u=0;u<n;u++)i[u*2]=s[u*2],i[u*2+1]=-s[u*2+1];return N.fromData(i,e,t)}return r.copy()}function js(r,t=!1){let e=r.dtype,n=Array.from(r.shape),o=r.size,a=N.zeros(n,"float64"),i=a.data;if(v(e)){let s=r.data;for(let u=0;u<o;u++){let c=s[u*2],l=s[u*2+1],m=Math.atan2(l,c);t&&(m=m*180/Math.PI),i[u]=m}}else for(let s=0;s<o;s++){let u=r.iget(s),l=(u instanceof E?u.re:Number(u))>=0?0:Math.PI;t&&(l=l*180/Math.PI),i[s]=l}return a}function Nr(r,t,e){if(e){let n=r[t*2],o=r[t*2+1];return n!==0||o!==0}return!!r[t]}function mt(r,t,e,n){let o=isNaN(r)||isNaN(t),a=isNaN(e)||isNaN(n);return o&&a?0:o?1:a||r<e?-1:r>e?1:t<n?-1:t>n?1:0}function Ce(r,t=-1){let e=r.shape,n=e.length,o=r.dtype,a=r.data;if(n===0)return r.copy();let i=t;if(i<0&&(i=n+i),i<0||i>=n)throw new Error(`axis ${t} is out of bounds for array of dimension ${n}`);let s=r.copy(),u=s.data,c=e[i],l=Array.from(e).filter((d,y)=>y!==i),m=l.length===0?1:l.reduce((d,y)=>d*y,1);if(v(o)){let d=a,y=u;for(let f=0;f<m;f++){let p=[];for(let g=0;g<c;g++){let h=R(f,i,g,e),b=$(h,e);p.push({re:d[b*2],im:d[b*2+1],idx:g})}p.sort((g,h)=>mt(g.re,g.im,h.re,h.im));for(let g=0;g<c;g++){let h=R(f,i,g,e),b=$(h,e);y[b*2]=p[g].re,y[b*2+1]=p[g].im}}}else if(B(o)){let d=a,y=u;for(let f=0;f<m;f++){let p=[];for(let g=0;g<c;g++){let h=R(f,i,g,e),b=$(h,e);p.push({value:d[b],idx:g})}p.sort((g,h)=>g.value<h.value?-1:g.value>h.value?1:0);for(let g=0;g<c;g++){let h=R(f,i,g,e),b=$(h,e);y[b]=p[g].value}}}else for(let d=0;d<m;d++){let y=[];for(let f=0;f<c;f++){let p=R(d,i,f,e),g=$(p,e);y.push(Number(a[g]))}y.sort((f,p)=>isNaN(f)&&isNaN(p)?0:isNaN(f)?1:isNaN(p)?-1:f-p);for(let f=0;f<c;f++){let p=R(d,i,f,e),g=$(p,e);u[g]=y[f]}}return s}function Ue(r,t=-1){let e=r.shape,n=e.length,o=r.dtype,a=r.data;if(n===0)return N.zeros([0],"int32");let i=t;if(i<0&&(i=n+i),i<0||i>=n)throw new Error(`axis ${t} is out of bounds for array of dimension ${n}`);let s=N.zeros(Array.from(e),"int32"),u=s.data,c=e[i],l=Array.from(e).filter((d,y)=>y!==i),m=l.length===0?1:l.reduce((d,y)=>d*y,1);if(v(o)){let d=a;for(let y=0;y<m;y++){let f=[];for(let p=0;p<c;p++){let g=R(y,i,p,e),h=$(g,e);f.push({re:d[h*2],im:d[h*2+1],idx:p})}f.sort((p,g)=>mt(p.re,p.im,g.re,g.im));for(let p=0;p<c;p++){let g=R(y,i,p,e),h=$(g,e);u[h]=f[p].idx}}}else if(B(o)){let d=a;for(let y=0;y<m;y++){let f=[];for(let p=0;p<c;p++){let g=R(y,i,p,e),h=$(g,e);f.push({value:d[h],idx:p})}f.sort((p,g)=>p.value<g.value?-1:p.value>g.value?1:0);for(let p=0;p<c;p++){let g=R(y,i,p,e),h=$(g,e);u[h]=f[p].idx}}}else for(let d=0;d<m;d++){let y=[];for(let f=0;f<c;f++){let p=R(d,i,f,e),g=$(p,e);y.push({value:Number(a[g]),idx:f})}y.sort((f,p)=>isNaN(f.value)&&isNaN(p.value)?0:isNaN(f.value)?1:isNaN(p.value)?-1:f.value-p.value);for(let f=0;f<c;f++){let p=R(d,i,f,e),g=$(p,e);u[g]=y[f].idx}}return s}function Ps(r){if(r.length===0)return N.zeros([0],"int32");let e=r[0].size;for(let i of r){if(i.ndim!==1)throw new Error("keys must be 1D arrays");if(i.size!==e)throw new Error("all keys must have the same length")}let n=[];for(let i=0;i<e;i++)n.push(i);n.sort((i,s)=>{for(let u=r.length-1;u>=0;u--){let l=r[u].data,m=Number(l[i]),d=Number(l[s]);if(!(isNaN(m)&&isNaN(d))){if(isNaN(m))return 1;if(isNaN(d)||m<d)return-1;if(m>d)return 1}}return 0});let o=N.zeros([e],"int32"),a=o.data;for(let i=0;i<e;i++)a[i]=n[i];return o}function Pc(r,t){let e=0,n=r.length-1;for(;e<n;){let o=Math.floor((e+n)/2),a=r[e],i=r[o],s=r[n],u;a<=i&&i<=s||s<=i&&i<=a?u=o:i<=a&&a<=s||s<=a&&a<=i?u=e:u=n;let c=r[u];[r[u],r[n]]=[r[n],r[u]];let l=e;for(let m=e;m<n;m++){let d=r[m],y=isNaN(d),f=isNaN(c);!y&&(f||d<=c)&&([r[l],r[m]]=[r[m],r[l]],l++)}if([r[l],r[n]]=[r[n],r[l]],l===t)return;l<t?e=l+1:n=l-1}}function Lc(r,t){let e=0,n=r.length-1;for(;e<n;){let o=Math.floor((e+n)/2),a=r[e],i=r[o],s=r[n],u;a<=i&&i<=s||s<=i&&i<=a?u=o:i<=a&&a<=s||s<=a&&a<=i?u=e:u=n;let c=r[u];[r[u],r[n]]=[r[n],r[u]];let l=e;for(let m=e;m<n;m++)r[m]<=c&&([r[l],r[m]]=[r[m],r[l]],l++);if([r[l],r[n]]=[r[n],r[l]],l===t)return;l<t?e=l+1:n=l-1}}function Gc(r,t){let e=0,n=r.length-1;for(;e<n;){let o=Math.floor((e+n)/2),a=r[e].value,i=r[o].value,s=r[n].value,u;a<=i&&i<=s||s<=i&&i<=a?u=o:i<=a&&a<=s||s<=a&&a<=i?u=e:u=n;let c=r[u].value;[r[u],r[n]]=[r[n],r[u]];let l=e;for(let m=e;m<n;m++){let d=r[m].value,y=isNaN(d),f=isNaN(c);!y&&(f||d<=c)&&([r[l],r[m]]=[r[m],r[l]],l++)}if([r[l],r[n]]=[r[n],r[l]],l===t)return;l<t?e=l+1:n=l-1}}function Wc(r,t){let e=0,n=r.length-1;for(;e<n;){let o=Math.floor((e+n)/2),a=r[e].value,i=r[o].value,s=r[n].value,u;a<=i&&i<=s||s<=i&&i<=a?u=o:i<=a&&a<=s||s<=a&&a<=i?u=e:u=n;let c=r[u].value;[r[u],r[n]]=[r[n],r[u]];let l=e;for(let m=e;m<n;m++)r[m].value<=c&&([r[l],r[m]]=[r[m],r[l]],l++);if([r[l],r[n]]=[r[n],r[l]],l===t)return;l<t?e=l+1:n=l-1}}function $e(r,t,e=-1){let n=r.shape,o=n.length,a=r.dtype;if(o===0)return r.copy();let i=e;if(i<0&&(i=o+i),i<0||i>=o)throw new Error(`axis ${e} is out of bounds for array of dimension ${o}`);let s=n[i],u=t;if(u<0&&(u=s+u),u<0||u>=s)throw new Error(`kth(=${t}) out of bounds (${s})`);let c=r.copy(),l=c.data,m=Array.from(n).filter((y,f)=>f!==i),d=m.length===0?1:m.reduce((y,f)=>y*f,1);if(B(a)){let y=l;for(let f=0;f<d;f++){let p=[];for(let g=0;g<s;g++){let h=R(f,i,g,n),b=$(h,n);p.push(y[b])}Lc(p,u);for(let g=0;g<s;g++){let h=R(f,i,g,n),b=$(h,n);y[b]=p[g]}}}else for(let y=0;y<d;y++){let f=[];for(let p=0;p<s;p++){let g=R(y,i,p,n),h=$(g,n);f.push(Number(l[h]))}Pc(f,u);for(let p=0;p<s;p++){let g=R(y,i,p,n),h=$(g,n);l[h]=f[p]}}return c}function Re(r,t,e=-1){let n=r.shape,o=n.length,a=r.dtype,i=r.data;if(o===0)return N.zeros([0],"int32");let s=e;if(s<0&&(s=o+s),s<0||s>=o)throw new Error(`axis ${e} is out of bounds for array of dimension ${o}`);let u=n[s],c=t;if(c<0&&(c=u+c),c<0||c>=u)throw new Error(`kth(=${t}) out of bounds (${u})`);let l=N.zeros(Array.from(n),"int32"),m=l.data,d=Array.from(n).filter((f,p)=>p!==s),y=d.length===0?1:d.reduce((f,p)=>f*p,1);if(B(a)){let f=i;for(let p=0;p<y;p++){let g=[];for(let h=0;h<u;h++){let b=R(p,s,h,n),A=$(b,n);g.push({value:f[A],idx:h})}Wc(g,c);for(let h=0;h<u;h++){let b=R(p,s,h,n),A=$(b,n);m[A]=g[h].idx}}}else for(let f=0;f<y;f++){let p=[];for(let g=0;g<u;g++){let h=R(f,s,g,n),b=$(h,n);p.push({value:Number(i[b]),idx:g})}Gc(p,c);for(let g=0;g<u;g++){let h=R(f,s,g,n),b=$(h,n);m[b]=p[g].idx}}return l}function Ls(r){let t=r.dtype,e=r.size,n=r.data;if(v(t)){let o=n,a=[];for(let u=0;u<e;u++)a.push({re:o[u*2],im:o[u*2+1]});a.sort((u,c)=>mt(u.re,u.im,c.re,c.im));let i=N.zeros([e],"complex128"),s=i.data;for(let u=0;u<e;u++)s[u*2]=a[u].re,s[u*2+1]=a[u].im;return i}else{let o=[];for(let s=0;s<e;s++)o.push(Number(n[s]));o.sort((s,u)=>isNaN(s)&&isNaN(u)?0:isNaN(s)?1:isNaN(u)?-1:s-u);let a=N.zeros([e],"complex128"),i=a.data;for(let s=0;s<e;s++)i[s*2]=o[s],i[s*2+1]=0;return a}}function Tt(r){let t=r.shape,e=t.length,n=r.data,o=r.size,a=v(r.dtype),i=[];for(let m=0;m<e;m++)i.push([]);let s=[],u=1;for(let m=e-1;m>=0;m--)s.unshift(u),u*=t[m];for(let m=0;m<o;m++)if(Nr(n,m,a)){let d=m;for(let y=0;y<e;y++){let f=Math.floor(d/s[y]);d=d%s[y],i[y].push(f)}}let c=i[0]?.length??0,l=[];for(let m=0;m<e;m++){let d=N.zeros([c],"int32"),y=d.data;for(let f=0;f<c;f++)y[f]=i[m][f];l.push(d)}return l}function ke(r){let t=r.shape,e=t.length,n=r.data,o=r.size,a=v(r.dtype),i=[],s=[],u=1;for(let y=e-1;y>=0;y--)s.unshift(u),u*=t[y];for(let y=0;y<o;y++)if(Nr(n,y,a)){let f=[],p=y;for(let g=0;g<e;g++){let h=Math.floor(p/s[g]);p=p%s[g],f.push(h)}i.push(f)}let c=i.length,l=e===0?[c,1]:[c,e],m=N.zeros(l,"int32"),d=m.data;for(let y=0;y<c;y++){let f=i[y];for(let p=0;p<(e===0?1:e);p++)d[y*(e===0?1:e)+p]=f[p]??0}return m}function Gs(r){let t=r.data,e=r.size,n=v(r.dtype),o=[];for(let s=0;s<e;s++)Nr(t,s,n)&&o.push(s);let a=N.zeros([o.length],"int32"),i=a.data;for(let s=0;s<o.length;s++)i[s]=o[s];return a}function Ws(r,t,e){if(t===void 0&&e===void 0)return Tt(r);if(t===void 0||e===void 0)throw new Error("either both or neither of x and y should be given");let n=r.shape,o=t.shape,a=e.shape,i=Math.max(n.length,o.length,a.length),s=M=>{let T=Array(i).fill(1);for(let O=0;O<M.length;O++)T[i-M.length+O]=M[O];return T},u=s(n),c=s(o),l=s(a),m=[];for(let M=0;M<i;M++){let T=[u[M],c[M],l[M]],O=Math.max(...T);for(let C of T)if(C!==1&&C!==O)throw new Error("operands could not be broadcast together");m.push(O)}let d=t.dtype,y=N.zeros(m,d),f=y.data,p=r.data,g=t.data,h=e.data,b=(M,T)=>{let O=[],C=1;for(let q=M.length-1;q>=0;q--)O.unshift(C),C*=M[q];for(;O.length<T.length;)O.unshift(0);for(let q=0;q<T.length;q++)T[q]===1&&m[q]!==1&&(O[q]=0);return O},A=b(n,u),S=b(o,c),D=b(a,l),w=[],x=1;for(let M=m.length-1;M>=0;M--)w.unshift(x),x*=m[M];let I=m.reduce((M,T)=>M*T,1),z=v(r.dtype),F=v(d);for(let M=0;M<I;M++){let T=M,O=0,C=0,q=0;for(let V=0;V<i;V++){let k=Math.floor(T/w[V]);T=T%w[V],O+=k*A[V],C+=k*S[V],q+=k*D[V]}Nr(p,O,z)?F?(f[M*2]=g[C*2],f[M*2+1]=g[C*2+1]):f[M]=g[C]:F?(f[M*2]=h[q*2],f[M*2+1]=h[q*2+1]):f[M]=h[q]}return y}function qe(r,t,e="left"){if(r.ndim!==1)throw new Error("storage must be 1D");let n=r.data,o=r.size,a=t.data,i=t.size,s=v(r.dtype),u=N.zeros([i],"int32"),c=u.data;if(s){let l=n,m=a;for(let d=0;d<i;d++){let y=m[d*2],f=m[d*2+1],p=0,g=o;if(e==="left")for(;p<g;){let h=Math.floor((p+g)/2),b=l[h*2],A=l[h*2+1];mt(b,A,y,f)<0?p=h+1:g=h}else for(;p<g;){let h=Math.floor((p+g)/2),b=l[h*2],A=l[h*2+1];mt(b,A,y,f)<=0?p=h+1:g=h}c[d]=p}}else for(let l=0;l<i;l++){let m=Number(a[l]),d=0,y=o;if(e==="left")for(;d<y;){let f=Math.floor((d+y)/2);Number(n[f])<m?d=f+1:y=f}else for(;d<y;){let f=Math.floor((d+y)/2);Number(n[f])<=m?d=f+1:y=f}c[l]=d}return u}function Zs(r,t){let e=r.data,n=t.data,o=t.dtype,a=v(r.dtype),i=v(o),s=Math.min(r.size,t.size),u=0;for(let d=0;d<s;d++)Nr(e,d,a)&&u++;let c=N.zeros([u],o),l=c.data,m=0;if(B(o)){let d=n,y=l;for(let f=0;f<s;f++)Nr(e,f,a)&&(y[m++]=d[f])}else if(i){let d=n,y=l;for(let f=0;f<s;f++)Nr(e,f,a)&&(y[m*2]=d[f*2],y[m*2+1]=d[f*2+1],m++)}else for(let d=0;d<s;d++)Nr(e,d,a)&&(l[m++]=n[d]);return c}function Ve(r,t){let e=r.shape,n=e.length,o=r.data,a=r.size,i=v(r.dtype);if(t===void 0){let y=0;for(let f=0;f<a;f++)Nr(o,f,i)&&y++;return y}let s=t;if(s<0&&(s=n+s),s<0||s>=n)throw new Error(`axis ${t} is out of bounds for array of dimension ${n}`);let u=Array.from(e).filter((y,f)=>f!==s);if(u.length===0)return Ve(r);let c=N.zeros(u,"int32"),l=c.data,m=e[s],d=u.reduce((y,f)=>y*f,1);for(let y=0;y<d;y++){let f=0;for(let p=0;p<m;p++){let g=R(y,s,p,e),h=$(g,e);Nr(o,h,i)&&f++}l[y]=f}return c}function Ys(r){if(!isFinite(r))return r;let t=Math.floor(r),e=r-t;return Math.abs(e-.5)<1e-10?t%2===0?t:t+1:Math.round(r)}function je(r,t=0){U(r.dtype,"around","Rounding is not defined for complex numbers.");let e=r.dtype,n=Array.from(r.shape),o=r.data,a=r.size,i=e==="float32"?"float32":"float64",s=N.zeros(n,i),u=s.data,c=Math.pow(10,t);for(let l=0;l<a;l++){let m=Number(o[l]);u[l]=Ys(m*c)/c}return s}function Pe(r){U(r.dtype,"ceil","Rounding is not defined for complex numbers.");let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size,a=t==="float32"?"float32":"float64",i=N.zeros(e,a),s=i.data;for(let u=0;u<o;u++)s[u]=Math.ceil(Number(n[u]));return i}function Le(r){U(r.dtype,"fix","Rounding is not defined for complex numbers.");let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size,a=t==="float32"?"float32":"float64",i=N.zeros(e,a),s=i.data;for(let u=0;u<o;u++)s[u]=Math.trunc(Number(n[u]));return i}function Ge(r){U(r.dtype,"floor","Rounding is not defined for complex numbers.");let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size,a=t==="float32"?"float32":"float64",i=N.zeros(e,a),s=i.data;for(let u=0;u<o;u++)s[u]=Math.floor(Number(n[u]));return i}function We(r){U(r.dtype,"rint","Rounding is not defined for complex numbers.");let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size,a=t==="float32"?"float32":"float64",i=N.zeros(e,a),s=i.data;for(let u=0;u<o;u++)s[u]=Ys(Number(n[u]));return i}function Ze(r){U(r.dtype,"trunc","Rounding is not defined for complex numbers.");let t=r.dtype,e=Array.from(r.shape),n=r.data,o=r.size,a=t==="float32"?"float32":"float64",i=N.zeros(e,a),s=i.data;for(let u=0;u<o;u++)s[u]=Math.trunc(Number(n[u]));return i}function Ye(r,t,e,n){let o=isNaN(r)||isNaN(t),a=isNaN(e)||isNaN(n);return o&&a?0:o?1:a||r<e?-1:r>e?1:t<n?-1:t>n?1:0}function Hc(r,t,e,n){let o=isNaN(r)||isNaN(t),a=isNaN(e)||isNaN(n);return o&&a?!0:o||a?!1:r===e&&t===n}function fr(r,t=!1,e=!1,n=!1){let o=r.dtype,a=r.size,i=r.data;if(v(o)){let A=i,S=[];for(let k=0;k<a;k++)S.push({re:A[k*2],im:A[k*2+1],index:k});S.sort((k,L)=>Ye(k.re,k.im,L.re,L.im));let D=[],w=[],x=new Array(a),I=[],z,F,M=0;for(let k=0;k<S.length;k++){let{re:L,im:j,index:J}=S[k];z===void 0||!Hc(L,j,z,F)?(z!==void 0&&I.push(M),D.push({re:L,im:j}),w.push(J),M=1,z=L,F=j):M++}M>0&&I.push(M);let T=new Map,O=-1;for(let k=0;k<D.length;k++){let{re:L,im:j}=D[k];isNaN(L)||isNaN(j)?O=k:T.set(`${L},${j}`,k)}for(let k=0;k<a;k++){let L=A[k*2],j=A[k*2+1];isNaN(L)||isNaN(j)?x[k]=O:x[k]=T.get(`${L},${j}`)}let C=N.zeros([D.length],o),q=C.data;for(let k=0;k<D.length;k++)q[k*2]=D[k].re,q[k*2+1]=D[k].im;if(!t&&!e&&!n)return C;let V={values:C};if(t){let k=N.zeros([w.length],"int32"),L=k.data;for(let j=0;j<w.length;j++)L[j]=w[j];V.indices=k}if(e){let k=N.zeros([x.length],"int32"),L=k.data;for(let j=0;j<x.length;j++)L[j]=x[j];V.inverse=k}if(n){let k=N.zeros([I.length],"int32"),L=k.data;for(let j=0;j<I.length;j++)L[j]=I[j];V.counts=k}return V}let s=[];for(let A=0;A<a;A++)s.push({value:Number(i[A]),index:A});s.sort((A,S)=>isNaN(A.value)&&isNaN(S.value)?0:isNaN(A.value)?1:isNaN(S.value)?-1:A.value-S.value);let u=[],c=[],l=new Array(a),m=[],d,y=0;for(let A=0;A<s.length;A++){let{value:S,index:D}=s[A];d===void 0||isNaN(S)&&!isNaN(d)||!isNaN(S)&&isNaN(d)||!isNaN(S)&&!isNaN(d)&&S!==d?(d!==void 0&&m.push(y),u.push(S),c.push(D),y=1,d=S):y++}y>0&&m.push(y);let f=new Map,p=-1;for(let A=0;A<u.length;A++){let S=u[A];isNaN(S)?p=A:f.set(S,A)}for(let A=0;A<a;A++){let S=Number(i[A]);isNaN(S)?l[A]=p:l[A]=f.get(S)}let g=N.zeros([u.length],o),h=g.data;for(let A=0;A<u.length;A++)h[A]=u[A];if(!t&&!e&&!n)return g;let b={values:g};if(t){let A=N.zeros([c.length],"int32"),S=A.data;for(let D=0;D<c.length;D++)S[D]=c[D];b.indices=A}if(e){let A=N.zeros([l.length],"int32"),S=A.data;for(let D=0;D<l.length;D++)S[D]=l[D];b.inverse=A}if(n){let A=N.zeros([m.length],"int32"),S=A.data;for(let D=0;D<m.length;D++)S[D]=m[D];b.counts=A}return b}function xr(r,t,e){if(e){let n=Number(r[t*2]),o=Number(r[t*2+1]);return`${n},${o}`}return String(Number(r[t]))}function Hs(r,t){return He(r,t)}function Xs(r,t){let e=r.dtype,n=v(e),o=fr(r),a=fr(t),i=new Set;for(let l=0;l<a.size;l++)i.add(xr(a.data,l,n));let s=[];for(let l=0;l<o.size;l++){let m=xr(o.data,l,n);i.has(m)&&s.push(l)}if(n){let l=N.zeros([s.length],e),m=l.data,d=o.data;for(let y=0;y<s.length;y++){let f=s[y];m[y*2]=d[f*2],m[y*2+1]=d[f*2+1]}return l}let u=N.zeros([s.length],e),c=u.data;for(let l=0;l<s.length;l++)c[l]=o.data[s[l]];return u}function He(r,t){let e=Array.from(r.shape),n=r.size,o=v(r.dtype),a=new Set;for(let u=0;u<t.size;u++)a.add(xr(t.data,u,o));let i=N.zeros(e,"bool"),s=i.data;for(let u=0;u<n;u++){let c=xr(r.data,u,o);s[u]=a.has(c)?1:0}return i}function Js(r,t){let e=r.dtype,n=v(e),o=fr(r),a=new Set;for(let c=0;c<t.size;c++)a.add(xr(t.data,c,n));let i=[];for(let c=0;c<o.size;c++){let l=xr(o.data,c,n);a.has(l)||i.push(c)}if(n){let c=N.zeros([i.length],e),l=c.data,m=o.data;for(let d=0;d<i.length;d++){let y=i[d];l[d*2]=m[y*2],l[d*2+1]=m[y*2+1]}return c}let s=N.zeros([i.length],e),u=s.data;for(let c=0;c<i.length;c++)u[c]=o.data[i[c]];return s}function Qs(r,t){let e=r.dtype,n=v(e),o=fr(r),a=fr(t),i=new Set,s=new Set;for(let y=0;y<o.size;y++)i.add(xr(o.data,y,n));for(let y=0;y<a.size;y++)s.add(xr(a.data,y,n));let u=[],c=[];for(let y=0;y<o.size;y++){let f=xr(o.data,y,n);s.has(f)||u.push(y)}for(let y=0;y<a.size;y++){let f=xr(a.data,y,n);i.has(f)||c.push(y)}if(n){let y=[],f=o.data,p=a.data;for(let b of u)y.push({re:f[b*2],im:f[b*2+1]});for(let b of c)y.push({re:p[b*2],im:p[b*2+1]});y.sort((b,A)=>Ye(b.re,b.im,A.re,A.im));let g=N.zeros([y.length],e),h=g.data;for(let b=0;b<y.length;b++)h[b*2]=y[b].re,h[b*2+1]=y[b].im;return g}let l=[];for(let y of u)l.push(Number(o.data[y]));for(let y of c)l.push(Number(a.data[y]));l.sort((y,f)=>isNaN(y)&&isNaN(f)?0:isNaN(y)?1:isNaN(f)?-1:y-f);let m=N.zeros([l.length],e),d=m.data;for(let y=0;y<l.length;y++)d[y]=l[y];return m}function Ks(r,t){let e=r.dtype,n=v(e),o=fr(r),a=fr(t),i=new Set,s=[];if(n){let m=o.data,d=a.data;for(let p=0;p<o.size;p++){let g=m[p*2],h=m[p*2+1],b=`${g},${h}`;i.has(b)||(i.add(b),s.push({re:g,im:h}))}for(let p=0;p<a.size;p++){let g=d[p*2],h=d[p*2+1],b=`${g},${h}`;i.has(b)||(i.add(b),s.push({re:g,im:h}))}s.sort((p,g)=>Ye(p.re,p.im,g.re,g.im));let y=N.zeros([s.length],e),f=y.data;for(let p=0;p<s.length;p++)f[p*2]=s[p].re,f[p*2+1]=s[p].im;return y}let u=[];for(let m=0;m<o.size;m++){let d=Number(o.data[m]),y=String(d);i.has(y)||(i.add(y),u.push(d))}for(let m=0;m<a.size;m++){let d=Number(a.data[m]),y=String(d);i.has(y)||(i.add(y),u.push(d))}u.sort((m,d)=>isNaN(m)&&isNaN(d)?0:isNaN(m)?1:isNaN(d)?-1:m-d);let c=N.zeros([u.length],e),l=c.data;for(let m=0;m<u.length;m++)l[m]=u[m];return c}function ri(r,t="fb"){let e=r.dtype,n=r.data,o=r.size,a=v(e);if(o===0)return N.zeros([0],e);let i=d=>{if(a){let y=n[d*2],f=n[d*2+1];return y===0&&f===0}return Number(n[d])===0},s=0;if(t==="f"||t==="fb")for(;s<o&&i(s);)s++;let u=o-1;if(t==="b"||t==="fb")for(;u>=s&&i(u);)u--;if(s>u)return N.zeros([0],e);let c=u-s+1;if(a){let d=N.zeros([c],e),y=d.data;for(let f=0;f<c;f++)y[f*2]=n[(s+f)*2],y[f*2+1]=n[(s+f)*2+1];return d}let l=N.zeros([c],e),m=l.data;for(let d=0;d<c;d++)m[d]=n[s+d];return l}function ti(r){let e=fr(r,!0,!0,!0);return{values:e.values,indices:e.indices,inverse_indices:e.inverse,counts:e.counts}}function ei(r){let e=fr(r,!1,!1,!0);return{values:e.values,counts:e.counts}}function ni(r){let e=fr(r,!1,!0,!1);return{values:e.values,inverse_indices:e.inverse}}function oi(r){return fr(r)}function Xe(r,t=1,e=-1){if(t<0)throw new Error(`order must be non-negative but got ${t}`);if(t===0)return r.copy();let n=Array.from(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}`);if(n[a]<t+1)throw new Error(`diff requires at least ${t+1} elements along axis ${e}, but got ${n[a]}`);let i=r;for(let s=0;s<t;s++)i=Jc(i,a);return i}function Jc(r,t){let e=Array.from(r.shape),n=e.length,o=e[t],a=[...e];a[t]=o-1;let i=r.dtype,s=v(i),u=B(i)?"float64":i,c=N.zeros(a,u),l=c.data,m=r.strides,d=c.size;for(let y=0;y<d;y++){let f=y,p=new Array(n);for(let S=n-1;S>=0;S--)p[S]=f%a[S],f=Math.floor(f/a[S]);let g=[...p],h=[...p];h[t]=g[t]+1;let b=0,A=0;for(let S=0;S<n;S++)b+=g[S]*m[S],A+=h[S]*m[S];if(s){let S=r.data,D=S[b*2],w=S[b*2+1],x=S[A*2],I=S[A*2+1];l[y*2]=x-D,l[y*2+1]=I-w}else{let S=(B(i),Number(r.data[b])),D=(B(i),Number(r.data[A]));l[y]=D-S}}return c}function ai(r,t=null,e=null){let n=r.size,o=r.dtype,a=v(o),i=B(o)?"float64":o,s=Math.max(0,n-1),u=e?e.length:0,c=t?t.length:0,l=u+s+c,m=N.zeros([l],i),d=m.data,y=0;if(e)if(a)for(let f of e)d[y*2]=f,d[y*2+1]=0,y++;else for(let f of e)d[y++]=f;if(a){let f=r.data;for(let p=0;p<s;p++){let g=f[p*2],h=f[p*2+1],b=f[(p+1)*2],A=f[(p+1)*2+1];d[y*2]=b-g,d[y*2+1]=A-h,y++}}else for(let f=0;f<s;f++){let p=(B(o),Number(r.iget(f))),g=(B(o),Number(r.iget(f+1)));d[y++]=g-p}if(t)if(a)for(let f of t)d[y*2]=f,d[y*2+1]=0,y++;else for(let f of t)d[y++]=f;return m}function si(r,t=1,e=null){let o=Array.from(r.shape).length,a;if(e===null)a=Array.from({length:o},(u,c)=>c);else if(typeof e=="number"){let u=e<0?o+e:e;if(u<0||u>=o)throw new Error(`axis ${e} is out of bounds for array of dimension ${o}`);a=[u]}else a=e.map(u=>{let c=u<0?o+u:u;if(c<0||c>=o)throw new Error(`axis ${u} is out of bounds for array of dimension ${o}`);return c});let i;if(typeof t=="number")i=a.map(()=>t);else{if(t.length!==a.length)throw new Error("Number of spacings must match number of axes");i=t}let s=[];for(let u=0;u<a.length;u++)s.push(Qc(r,a[u],i[u]));return s.length===1?s[0]:s}function Qc(r,t,e){let n=Array.from(r.shape),o=n.length,a=n[t];if(a<2)throw new Error(`Shape of array along axis ${t} must be at least 2, but got ${a}`);let i=r.dtype,s=v(i),u=B(i)?"float64":i==="float32"?"float32":s?i:"float64",c=N.zeros(n,u),l=c.data,m=r.strides,d=e,y=2*d,f=r.size;for(let p=0;p<f;p++){let g=p,h=new Array(o);for(let A=o-1;A>=0;A--)h[A]=g%n[A],g=Math.floor(g/n[A]);let b=h[t];if(s){let A=r.data,S=l,D,w;if(b===0){let x=[...h];x[t]=1;let I=0;for(let O=0;O<o;O++)I+=x[O]*m[O];let z=A[p*2],F=A[p*2+1],M=A[I*2],T=A[I*2+1];D=(M-z)/d,w=(T-F)/d}else if(b===a-1){let x=[...h];x[t]=a-2;let I=0;for(let O=0;O<o;O++)I+=x[O]*m[O];let z=A[p*2],F=A[p*2+1],M=A[I*2],T=A[I*2+1];D=(z-M)/d,w=(F-T)/d}else{let x=[...h],I=[...h];x[t]=b+1,I[t]=b-1;let z=0,F=0;for(let q=0;q<o;q++)z+=x[q]*m[q],F+=I[q]*m[q];let M=A[z*2],T=A[z*2+1],O=A[F*2],C=A[F*2+1];D=(M-O)/y,w=(T-C)/y}S[p*2]=D,S[p*2+1]=w}else{let A;if(b===0){let S=[...h];S[t]=1;let D=0;for(let I=0;I<o;I++)D+=S[I]*m[I];let w=(B(i),Number(r.data[p]));A=((B(i),Number(r.data[D]))-w)/d}else if(b===a-1){let S=[...h];S[t]=a-2;let D=0;for(let I=0;I<o;I++)D+=S[I]*m[I];let w=(B(i),Number(r.data[p])),x=(B(i),Number(r.data[D]));A=(w-x)/d}else{let S=[...h],D=[...h];S[t]=b+1,D[t]=b-1;let w=0,x=0;for(let F=0;F<o;F++)w+=S[F]*m[F],x+=D[F]*m[F];let I=(B(i),Number(r.data[w])),z=(B(i),Number(r.data[x]));A=(I-z)/y}l[p]=A}}return c}function ii(r,t,e=-1,n=-1,o=-1){let a=Array.from(r.shape),i=Array.from(t.shape),s=a.length,u=i.length,c=e<0?s+e:e,l=n<0?u+n:n;if(c<0||c>=s)throw new Error(`axisa ${e} is out of bounds for array of dimension ${s}`);if(l<0||l>=u)throw new Error(`axisb ${n} is out of bounds for array of dimension ${u}`);let m=a[c],d=i[l];if(m!==2&&m!==3)throw new Error(`incompatible dimensions for cross product (dimension must be 2 or 3, got ${m})`);if(d!==2&&d!==3)throw new Error(`incompatible dimensions for cross product (dimension must be 2 or 3, got ${d})`);let y=W(r.dtype,t.dtype),f=v(y),p=(b,A)=>{if(v(b.dtype)){let S=b.data;return[S[A*2],S[A*2+1]]}return[Number(b.iget(A)),0]},g=(b,A,S,D)=>[b*S-A*D,b*D+A*S],h=(b,A,S,D)=>[b-S,A-D];if(s===1&&u===1&&m===3&&d===3){let b=N.zeros([3],y);if(f){let A=b.data,[S,D]=p(r,0),[w,x]=p(r,1),[I,z]=p(r,2),[F,M]=p(t,0),[T,O]=p(t,1),[C,q]=p(t,2),[V,k]=g(w,x,C,q),[L,j]=g(I,z,T,O),[J,rr]=h(V,k,L,j),[Z,er]=g(I,z,F,M),[nr,or]=g(S,D,C,q),[mr,qt]=h(Z,er,nr,or),[Vt,jt]=g(S,D,T,O),[Pt,Lt]=g(w,x,F,M),[Gt,Wt]=h(Vt,jt,Pt,Lt);A[0]=J,A[1]=rr,A[2]=mr,A[3]=qt,A[4]=Gt,A[5]=Wt}else{let A=b.data,S=Number(r.iget(0)),D=Number(r.iget(1)),w=Number(r.iget(2)),x=Number(t.iget(0)),I=Number(t.iget(1)),z=Number(t.iget(2));A[0]=D*z-w*I,A[1]=w*x-S*z,A[2]=S*I-D*x}return b}if(s===1&&u===1&&m===2&&d===2){let b=N.zeros([],y);if(f){let A=b.data,[S,D]=p(r,0),[w,x]=p(r,1),[I,z]=p(t,0),[F,M]=p(t,1),[T,O]=g(S,D,F,M),[C,q]=g(w,x,I,z),[V,k]=h(T,O,C,q);A[0]=V,A[1]=k}else{let A=Number(r.iget(0)),S=Number(r.iget(1)),D=Number(t.iget(0)),w=Number(t.iget(1));b.data[0]=A*w-S*D}return b}if(s===1&&u===1){if(m===2&&d===3){let b=N.zeros([3],y);if(f){let A=b.data,[S,D]=p(r,0),[w,x]=p(r,1),[I,z]=p(t,0),[F,M]=p(t,1),[T,O]=p(t,2),[C,q]=g(w,x,T,O),[V,k]=g(S,D,T,O),L=-V,j=-k,[J,rr]=g(S,D,F,M),[Z,er]=g(w,x,I,z),[nr,or]=h(J,rr,Z,er);A[0]=C,A[1]=q,A[2]=L,A[3]=j,A[4]=nr,A[5]=or}else{let A=b.data,S=Number(r.iget(0)),D=Number(r.iget(1)),w=Number(t.iget(0)),x=Number(t.iget(1)),I=Number(t.iget(2));A[0]=D*I,A[1]=-S*I,A[2]=S*x-D*w}return b}else if(m===3&&d===2){let b=N.zeros([3],y);if(f){let A=b.data,[S,D]=p(r,0),[w,x]=p(r,1),[I,z]=p(r,2),[F,M]=p(t,0),[T,O]=p(t,1),[C,q]=g(I,z,T,O),V=-C,k=-q,[L,j]=g(I,z,F,M),[J,rr]=g(S,D,T,O),[Z,er]=g(w,x,F,M),[nr,or]=h(J,rr,Z,er);A[0]=V,A[1]=k,A[2]=L,A[3]=j,A[4]=nr,A[5]=or}else{let A=b.data,S=Number(r.iget(0)),D=Number(r.iget(1)),w=Number(r.iget(2)),x=Number(t.iget(0)),I=Number(t.iget(1));A[0]=-w*I,A[1]=w*x,A[2]=S*I-D*x}return b}}if(s===2&&u===2&&c===1&&l===1){let b=a[0];if(i[0]!==b)throw new Error(`Shape mismatch: a has ${b} vectors, b has ${i[0]} vectors`);if(m===3&&d===3){let A=N.zeros([b,3],y);if(f){let S=A.data;for(let D=0;D<b;D++){let[w,x]=p(r,D*3),[I,z]=p(r,D*3+1),[F,M]=p(r,D*3+2),[T,O]=p(t,D*3),[C,q]=p(t,D*3+1),[V,k]=p(t,D*3+2),[L,j]=g(I,z,V,k),[J,rr]=g(F,M,C,q),[Z,er]=h(L,j,J,rr),[nr,or]=g(F,M,T,O),[mr,qt]=g(w,x,V,k),[Vt,jt]=h(nr,or,mr,qt),[Pt,Lt]=g(w,x,C,q),[Gt,Wt]=g(I,z,T,O),[Fu,vu]=h(Pt,Lt,Gt,Wt);S[D*3*2]=Z,S[D*3*2+1]=er,S[(D*3+1)*2]=Vt,S[(D*3+1)*2+1]=jt,S[(D*3+2)*2]=Fu,S[(D*3+2)*2+1]=vu}}else{let S=A.data;for(let D=0;D<b;D++){let w=Number(r.iget(D*3)),x=Number(r.iget(D*3+1)),I=Number(r.iget(D*3+2)),z=Number(t.iget(D*3)),F=Number(t.iget(D*3+1)),M=Number(t.iget(D*3+2));S[D*3]=x*M-I*F,S[D*3+1]=I*z-w*M,S[D*3+2]=w*F-x*z}}return A}if(m===2&&d===2){let A=N.zeros([b],y);if(f){let S=A.data;for(let D=0;D<b;D++){let[w,x]=p(r,D*2),[I,z]=p(r,D*2+1),[F,M]=p(t,D*2),[T,O]=p(t,D*2+1),[C,q]=g(w,x,T,O),[V,k]=g(I,z,F,M),[L,j]=h(C,q,V,k);S[D*2]=L,S[D*2+1]=j}}else{let S=A.data;for(let D=0;D<b;D++){let w=Number(r.iget(D*2)),x=Number(r.iget(D*2+1)),I=Number(t.iget(D*2)),z=Number(t.iget(D*2+1));S[D]=w*z-x*I}}return A}}throw new Error(`cross product not implemented for arrays with shapes ${JSON.stringify(a)} and ${JSON.stringify(i)}`)}function ui(r,t,e=0){U(r.dtype,"bincount","bincount requires integer input.");let n=r.data,o=r.size,a=0;for(let s=0;s<o;s++){let u=Number(n[s]);if(u<0||!Number.isInteger(u))throw new Error("'x' argument must contain non-negative integers");u>a&&(a=u)}let i=Math.max(a+1,e);if(t!==void 0){if(t.size!==o)throw new Error("weights array must have same length as x");let s=t.data,u=new Float64Array(i);for(let c=0;c<o;c++){let l=Number(n[c]);u[l]+=Number(s[c])}return N.fromData(u,[i],"float64")}else{let s=new Float64Array(i);for(let u=0;u<o;u++){let c=Number(n[u]);s[c]++}return N.fromData(s,[i],"float64")}}function ci(r,t,e=!1){U(r.dtype,"digitize","digitize requires real numbers."),U(t.dtype,"digitize","digitize requires real numbers.");let n=r.data,o=t.data,a=r.size,i=t.size,s=new Float64Array(a),u=!0;i>1&&(u=Number(o[1])>=Number(o[0]));for(let c=0;c<a;c++){let l=Number(n[c]),m;if(u)e?m=rl(o,i,l):m=pt(o,i,l);else if(e)for(m=0;m<i&&Number(o[m])>=l;)m++;else for(m=0;m<i&&Number(o[m])>l;)m++;s[c]=m}return N.fromData(s,[...r.shape],"float64")}function rl(r,t,e){let n=0,o=t;for(;n<o;){let a=n+o>>>1;Number(r[a])<e?n=a+1:o=a}return n}function pt(r,t,e){let n=0,o=t;for(;n<o;){let a=n+o>>>1;Number(r[a])<=e?n=a+1:o=a}return n}function li(r,t=10,e,n=!1,o){U(r.dtype,"histogram","histogram requires real numbers."),typeof t!="number"&&U(t.dtype,"histogram","histogram requires real numbers.");let a=r.data,i=r.size,s;if(typeof t=="number"){let m,d;if(e)[m,d]=e;else{m=1/0,d=-1/0;for(let f=0;f<i;f++){let p=Number(a[f]);p<m&&(m=p),p>d&&(d=p)}m===d&&(m=m-.5,d=d+.5)}s=[];let y=(d-m)/t;for(let f=0;f<=t;f++)s.push(m+f*y)}else{let m=t.data;s=[];for(let d=0;d<t.size;d++)s.push(Number(m[d]))}let u=s.length-1,c=new Float64Array(u),l=o?.data;for(let m=0;m<i;m++){let d=Number(a[m]),y=l?Number(l[m]):1,f=pt(s,s.length,d)-1;if(!(f<0)){if(f>=u)if(d===s[u])f=u-1;else continue;c[f]+=y}}if(n){let m=0;for(let d=0;d<u;d++)m+=c[d];for(let d=0;d<u;d++){let y=s[d+1]-s[d];c[d]=c[d]/(m*y)}}return{hist:N.fromData(c,[u],"float64"),bin_edges:N.fromData(new Float64Array(s),[s.length],"float64")}}function fi(r,t,e=10,n,o=!1,a){U(r.dtype,"histogram2d","histogram2d requires real numbers."),U(t.dtype,"histogram2d","histogram2d requires real numbers.");let i=r.data,s=t.data,u=r.size;if(t.size!==u)throw new Error("x and y must have the same length");let c,l,m,d;if(typeof e=="number"?(m=e,d=e):Array.isArray(e)&&e.length===2?(e[0],m=e[0],d=e[1]):(m=10,d=10),typeof m=="number"){let h,b;if(n)[h,b]=n[0];else{h=1/0,b=-1/0;for(let S=0;S<u;S++){let D=Number(i[S]);D<h&&(h=D),D>b&&(b=D)}h===b&&(h-=.5,b+=.5)}c=[];let A=(b-h)/m;for(let S=0;S<=m;S++)c.push(h+S*A)}else{let h=m.data;c=[];for(let b=0;b<m.size;b++)c.push(Number(h[b]))}if(typeof d=="number"){let h,b;if(n)[h,b]=n[1];else{h=1/0,b=-1/0;for(let S=0;S<u;S++){let D=Number(s[S]);D<h&&(h=D),D>b&&(b=D)}h===b&&(h-=.5,b+=.5)}l=[];let A=(b-h)/d;for(let S=0;S<=d;S++)l.push(h+S*A)}else{let h=d.data;l=[];for(let b=0;b<d.size;b++)l.push(Number(h[b]))}let y=c.length-1,f=l.length-1,p=new Float64Array(y*f),g=a?.data;for(let h=0;h<u;h++){let b=Number(i[h]),A=Number(s[h]),S=g?Number(g[h]):1,D=pt(c,c.length,b)-1,w=pt(l,l.length,A)-1;if(D<0||D>=y)if(b===c[y]&&D===y)D=y-1;else continue;if(w<0||w>=f)if(A===l[f]&&w===f)w=f-1;else continue;p[D*f+w]+=S}if(o){let h=0;for(let b=0;b<p.length;b++)h+=p[b];for(let b=0;b<y;b++)for(let A=0;A<f;A++){let S=c[b+1]-c[b],D=l[A+1]-l[A],w=S*D;p[b*f+A]=p[b*f+A]/(h*w)}}return{hist:N.fromData(p,[y,f],"float64"),x_edges:N.fromData(new Float64Array(c),[c.length],"float64"),y_edges:N.fromData(new Float64Array(l),[l.length],"float64")}}function mi(r,t=10,e,n=!1,o){U(r.dtype,"histogramdd","histogramdd requires real numbers.");let a=r.shape,i=r.data,s,u;if(a.length===1)s=a[0],u=1;else if(a.length===2)s=a[0],u=a[1];else throw new Error("sample must be 1D or 2D array");let c;if(typeof t=="number")c=new Array(u).fill(t);else if(c=t,c.length!==u)throw new Error("bins array length must match number of dimensions");let l=[];for(let h=0;h<u;h++){let b,A;if(e&&e[h])[b,A]=e[h];else{b=1/0,A=-1/0;for(let x=0;x<s;x++){let I=Number(u===1?i[x]:i[x*u+h]);I<b&&(b=I),I>A&&(A=I)}b===A&&(b-=.5,A+=.5)}let S=c[h],D=[],w=(A-b)/S;for(let x=0;x<=S;x++)D.push(b+x*w);l.push(D)}let m=c.slice(),d=m.reduce((h,b)=>h*b,1),y=new Float64Array(d),f=new Array(u);f[u-1]=1;for(let h=u-2;h>=0;h--)f[h]=f[h+1]*c[h+1];let p=o?.data;for(let h=0;h<s;h++){let b=p?Number(p[h]):1,A=0,S=!1;for(let D=0;D<u;D++){let w=Number(u===1?i[h]:i[h*u+D]),x=l[D],I=c[D],z=pt(x,x.length,w)-1;if(z<0||z>=I)if(w===x[I]&&z===I)z=I-1;else{S=!0;break}A+=z*f[D]}S||(y[A]+=b)}if(n){let h=0;for(let A=0;A<d;A++)h+=y[A];let b=new Float64Array(d);for(let A=0;A<d;A++){let S=1,D=A;for(let w=0;w<u;w++){let x=Math.floor(D/f[w])%c[w],I=l[w];S*=I[x+1]-I[x]}b[A]=S}for(let A=0;A<d;A++)y[A]=y[A]/(h*b[A])}let g=l.map(h=>N.fromData(new Float64Array(h),[h.length],"float64"));return{hist:N.fromData(y,m,"float64"),edges:g}}function Qe(r,t,e="full"){let n=r.data,o=t.data,a=r.size,i=t.size,s=v(r.dtype)||v(t.dtype),u=a+i-1;if(s){let l=new Float64Array(u),m=new Float64Array(u),d=v(r.dtype),y=v(t.dtype);for(let p=0;p<u;p++){let g=0,h=0,b=p-i+1;for(let A=0;A<a;A++){let S=A-b;if(S>=0&&S<i){let D,w,x,I;d?(D=n[A*2],w=n[A*2+1]):(D=Number(n[A]),w=0),y?(x=o[S*2],I=o[S*2+1]):(x=Number(o[S]),I=0),g+=D*x+w*I,h+=w*x-D*I}}l[p]=g,m[p]=h}let f=(p,g,h,b=0)=>{let A=new Float64Array(h*2);for(let S=0;S<h;S++)A[S*2]=p[b+S],A[S*2+1]=g[b+S];return N.fromData(A,[h],"complex128")};if(e==="full")return f(l,m,u);if(e==="same"){let p=Math.floor((u-a)/2);return f(l,m,a,p)}else{let p=Math.max(a,i)-Math.min(a,i)+1,g=Math.min(a,i)-1;return f(l,m,p,g)}}let c=new Float64Array(u);for(let l=0;l<u;l++){let m=0,d=l-i+1;for(let y=0;y<a;y++){let f=y-d;f>=0&&f<i&&(m+=Number(n[y])*Number(o[f]))}c[l]=m}if(e==="full")return N.fromData(c,[u],"float64");if(e==="same"){let l=Math.floor((u-a)/2),m=new Float64Array(a);for(let d=0;d<a;d++)m[d]=c[l+d];return N.fromData(m,[a],"float64")}else{let l=Math.max(a,i)-Math.min(a,i)+1,m=Math.min(a,i)-1,d=new Float64Array(l);for(let y=0;y<l;y++)d[y]=c[m+y];return N.fromData(d,[l],"float64")}}function pi(r,t,e="full"){let n=t.data,o=t.size,a=v(t.dtype),i;if(a){let s=new Float64Array(o*2);for(let u=0;u<o;u++){let c=o-1-u;s[u*2]=n[c*2],s[u*2+1]=n[c*2+1]}i=N.fromData(s,[o],t.dtype)}else{let s=new Float64Array(o);for(let u=0;u<o;u++)s[u]=Number(n[o-1-u]);i=N.fromData(s,[o],"float64")}if(a){let s=i.data;for(let u=0;u<o;u++)s[u*2+1]=-s[u*2+1]}return Qe(r,i,e)}function Ke(r,t,e=!0,n=!1,o){let a=r.shape,i=r.data,s=v(r.dtype)||t!==void 0&&v(t.dtype),u;if(o!==void 0?u=o:u=n?0:1,a.length===1)if(t!==void 0){let f=t.data,p=r.size,g=v(r.dtype),h=v(t.dtype);if(t.size!==p)throw new Error("m and y must have same length");if(s){let I=0,z=0,F=0,M=0;for(let Z=0;Z<p;Z++)g?(I+=i[Z*2],z+=i[Z*2+1]):I+=Number(i[Z]),h?(F+=f[Z*2],M+=f[Z*2+1]):F+=Number(f[Z]);I/=p,z/=p,F/=p,M/=p;let T=0,O=0,C=0,q=0,V=0,k=0,L=0,j=0;for(let Z=0;Z<p;Z++){let er,nr,or,mr;g?(er=i[Z*2]-I,nr=i[Z*2+1]-z):(er=Number(i[Z])-I,nr=0),h?(or=f[Z*2]-F,mr=f[Z*2+1]-M):(or=Number(f[Z])-F,mr=0),T+=er*er+nr*nr,C+=or*or+mr*mr,V+=er*or+nr*mr,k+=nr*or-er*mr,L+=or*er+mr*nr,j+=mr*er-or*nr}let J=p-u;if(J<=0){let Z=new Float64Array(8);return Z.fill(NaN),N.fromData(Z,[2,2],"complex128")}T/=J,C/=J,V/=J,k/=J,L/=J,j/=J;let rr=new Float64Array(8);return rr[0]=T,rr[1]=O,rr[2]=V,rr[3]=k,rr[4]=L,rr[5]=j,rr[6]=C,rr[7]=q,N.fromData(rr,[2,2],"complex128")}let b=0,A=0;for(let I=0;I<p;I++)b+=Number(i[I]),A+=Number(f[I]);b/=p,A/=p;let S=0,D=0,w=0;for(let I=0;I<p;I++){let z=Number(i[I])-b,F=Number(f[I])-A;S+=z*z,D+=F*F,w+=z*F}let x=p-u;return x<=0?N.fromData(new Float64Array([NaN,NaN,NaN,NaN]),[2,2],"float64"):(S/=x,D/=x,w/=x,N.fromData(new Float64Array([S,w,w,D]),[2,2],"float64"))}else{let f=r.size;if(s){let b=0,A=0;for(let w=0;w<f;w++)b+=i[w*2],A+=i[w*2+1];b/=f,A/=f;let S=0;for(let w=0;w<f;w++){let x=i[w*2]-b,I=i[w*2+1]-A;S+=x*x+I*I}let D=f-u;return D<=0?N.fromData(new Float64Array([NaN,0]),[],"complex128"):(S/=D,N.fromData(new Float64Array([S,0]),[],"complex128"))}let p=0;for(let b=0;b<f;b++)p+=Number(i[b]);p/=f;let g=0;for(let b=0;b<f;b++){let A=Number(i[b])-p;g+=A*A}let h=f-u;return h<=0?N.fromData(new Float64Array([NaN]),[],"float64"):(g/=h,N.fromData(new Float64Array([g]),[],"float64"))}let c,l;e?(c=a[0],l=a[1]):(c=a[1],l=a[0]);let m=l-u;if(s){let f=new Float64Array(c),p=new Float64Array(c);for(let h=0;h<c;h++){let b=0,A=0;for(let S=0;S<l;S++){let D=e?h*l+S:S*c+h;b+=i[D*2],A+=i[D*2+1]}f[h]=b/l,p[h]=A/l}let g=new Float64Array(c*c*2);if(m<=0)return g.fill(NaN),N.fromData(g,[c,c],"complex128");for(let h=0;h<c;h++)for(let b=0;b<c;b++){let A=0,S=0;for(let w=0;w<l;w++){let x=e?h*l+w:w*c+h,I=e?b*l+w:w*c+b,z=i[x*2]-f[h],F=i[x*2+1]-p[h],M=i[I*2]-f[b],T=i[I*2+1]-p[b];A+=z*M+F*T,S+=F*M-z*T}let D=(h*c+b)*2;g[D]=A/m,g[D+1]=S/m}return N.fromData(g,[c,c],"complex128")}let d=new Float64Array(c);for(let f=0;f<c;f++){let p=0;for(let g=0;g<l;g++){let h=e?f*l+g:g*c+f;p+=Number(i[h])}d[f]=p/l}let y=new Float64Array(c*c);if(m<=0)return y.fill(NaN),N.fromData(y,[c,c],"float64");for(let f=0;f<c;f++)for(let p=f;p<c;p++){let g=0;for(let b=0;b<l;b++){let A=e?f*l+b:b*c+f,S=e?p*l+b:b*c+p,D=Number(i[A])-d[f],w=Number(i[S])-d[p];g+=D*w}let h=g/m;y[f*c+p]=h,y[p*c+f]=h}return N.fromData(y,[c,c],"float64")}function yi(r,t,e=!0){let n=v(r.dtype)||t!==void 0&&v(t.dtype);if(r.shape.length===1&&t===void 0)return n?N.fromData(new Float64Array([1,0]),[],"complex128"):N.fromData(new Float64Array([1]),[],"float64");let o=Ke(r,t,e,!1),a=o.data,s=o.shape[0];if(n){let c=new Float64Array(s*s*2);for(let l=0;l<s;l++)for(let m=0;m<s;m++){let d=a[(l*s+m)*2],y=a[(l*s+m)*2+1],f=a[(l*s+l)*2],p=a[(m*s+m)*2],g=(l*s+m)*2;if(f<=0||p<=0)c[g]=NaN,c[g+1]=NaN;else{let h=Math.sqrt(f*p);c[g]=d/h,c[g+1]=y/h}}return N.fromData(c,[s,s],"complex128")}let u=new Float64Array(s*s);for(let c=0;c<s;c++)for(let l=0;l<s;l++){let m=Number(a[c*s+l]),d=Number(a[c*s+c]),y=Number(a[l*s+l]);d<=0||y<=0?u[c*s+l]=NaN:u[c*s+l]=m/Math.sqrt(d*y)}return N.fromData(u,[s,s],"float64")}function di(r,t=10,e,n){U(r.dtype,"histogram_bin_edges","histogram_bin_edges requires real numbers.");let o=r.data,a=r.size,i,s;if(e)[i,s]=e;else{i=1/0,s=-1/0;for(let m=0;m<a;m++){let d=Number(o[m]);isNaN(d)||(d<i&&(i=d),d>s&&(s=d))}!isFinite(i)||!isFinite(s)?(i=0,s=1):i===s&&(i=i-.5,s=s+.5)}let u;typeof t=="number"?u=t:u=Je(o,a,i,s,t),u=Math.max(1,Math.round(u));let c=new Float64Array(u+1),l=(s-i)/u;for(let m=0;m<=u;m++)c[m]=i+m*l;return N.fromData(c,[u+1],"float64")}function Je(r,t,e,n,o){if(t===0)return 1;let a=n-e;if(a===0)return 1;let i=[],s=0;for(let p=0;p<t;p++){let g=Number(r[p]);isNaN(g)||(i.push(g),s+=g)}let u=i.length;if(u===0)return 1;let c=s/u,l=0;for(let p=0;p<u;p++){let g=i[p]-c;l+=g*g}let m=Math.sqrt(l/u);i.sort((p,g)=>p-g);let d=i[Math.floor(u*.25)]??0,f=(i[Math.floor(u*.75)]??0)-d;switch(o){case"sqrt":return Math.ceil(Math.sqrt(u));case"sturges":return Math.ceil(Math.log2(u)+1);case"rice":return Math.ceil(2*Math.pow(u,1/3));case"scott":{if(m===0)return 1;let p=3.5*m/Math.pow(u,1/3);return Math.ceil(a/p)}case"fd":{if(f===0)return Je(r,t,e,n,"sturges");let p=2*f/Math.pow(u,1/3);return Math.ceil(a/p)}case"doane":{let p=tl(i,c,m),g=Math.sqrt(6*(u-2)/((u+1)*(u+3)));return Math.ceil(1+Math.log2(u)+Math.log2(1+Math.abs(p)/g))}case"stone":return Je(r,t,e,n,"sturges");default:{let p=Math.ceil(Math.log2(u)+1),g=f===0?p:Math.ceil(a/(2*f/Math.pow(u,1/3)));return Math.max(p,g)}}}function tl(r,t,e){if(e===0)return 0;let n=r.length,o=0;for(let a=0;a<n;a++)o+=Math.pow((r[a]-t)/e,3);return o/n}function gi(r,t,e=1,n=-1){U(r.dtype,"trapezoid","trapezoid requires real numbers."),t!==void 0&&U(t.dtype,"trapezoid","trapezoid requires real numbers.");let o=Array.from(r.shape),a=o.length;if(n<0&&(n=a+n),n<0||n>=a)throw new Error(`axis ${n} is out of bounds for array of dimension ${a}`);let i=o[n];if(i<2)throw new Error("trapezoid requires at least 2 samples along axis");let s;if(t!==void 0){if(t.size!==i)throw new Error(`x array size (${t.size}) must match y axis size (${i})`);let p=t.data;s=new Float64Array(i);for(let g=0;g<i;g++)s[g]=Number(p[g])}else{s=new Float64Array(i);for(let p=0;p<i;p++)s[p]=p*e}let u=[...o];if(u.splice(n,1),a===1){let p=r.data,g=0;for(let h=0;h<i-1;h++){let b=Number(p[h]),A=Number(p[h+1]),S=s[h+1]-s[h];g+=.5*(b+A)*S}return g}let c=u.reduce((p,g)=>p*g,1),l=new Float64Array(c),m=new Array(a),d=1;for(let p=a-1;p>=0;p--)m[p]=d,d*=o[p];let y=new Array(u.length);d=1;for(let p=u.length-1;p>=0;p--)y[p]=d,d*=u[p];let f=r.data;for(let p=0;p<c;p++){let g=[],h=p;for(let D=0;D<u.length;D++){let w=Math.floor(h/y[D]);h%=y[D],g.push(w)}let b=[],A=0;for(let D=0;D<a;D++)D===n?b.push(0):(b.push(g[A]),A++);let S=0;for(let D=0;D<i-1;D++){b[n]=D;let w=0;for(let M=0;M<a;M++)w+=b[M]*m[M];b[n]=D+1;let x=0;for(let M=0;M<a;M++)x+=b[M]*m[M];let I=Number(f[w]),z=Number(f[x]),F=s[D+1]-s[D];S+=.5*(I+z)*F}l[p]=S}return u.length===0?l[0]:N.fromData(l,u,"float64")}var _=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(){return this.transpose()}get itemsize(){return Rr(this._storage.dtype)}get nbytes(){return this.size*this.itemsize}fill(t){let e=this._storage.dtype,n=this.size;if(B(e)){let o=typeof t=="bigint"?t:BigInt(Math.round(Number(t)));for(let a=0;a<n;a++)this._storage.iset(a,o)}else if(e==="bool"){let o=t?1:0;for(let a=0;a<n;a++)this._storage.iset(a,o)}else{let o=Number(t);for(let a=0;a<n;a++)this._storage.iset(a,o)}}*[Symbol.iterator](){if(this.ndim===0)yield this._storage.iget(0);else if(this.ndim===1)for(let t=0;t<this.shape[0];t++)yield this._storage.iget(t);else for(let t=0;t<this.shape[0];t++)yield this.slice(String(t))}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((a,i)=>{let s=a;if(s<0&&(s=this.shape[i]+s),s<0||s>=this.shape[i])throw new Error(`Index ${a} is out of bounds for axis ${i} with size ${this.shape[i]}`);return s}),o=this.dtype;if(v(o))this._storage.set(n,e);else if(B(o)){let a=e instanceof E?e.re:Number(e),i=typeof e=="bigint"?e:BigInt(Math.round(a));this._storage.set(n,i)}else if(o==="bool"){let i=(e instanceof E?e.re:Number(e))?1:0;this._storage.set(n,i)}else{let a=e instanceof E?e.re: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=P(t);if(!i)throw new Error(`Cannot convert to dtype ${t}`);let s=new i(a),u=this.data;if(B(n)&&!B(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(!B(n)&&B(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"&&!B(t)){let l=u;for(let m=0;m<a;m++)s[m]=l[m]}else if(!B(n)&&!B(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=N.fromData(s,o,t);return new r(c)}add(t){let e=typeof t=="number"?t:t._storage,n=wn(this._storage,e);return r._fromStorage(n)}subtract(t){let e=typeof t=="number"?t:t._storage,n=In(this._storage,e);return r._fromStorage(n)}multiply(t){let e=typeof t=="number"?t:t._storage,n=zn(this._storage,e);return r._fromStorage(n)}divide(t){let e=typeof t=="number"?t:t._storage,n=_n(this._storage,e);return r._fromStorage(n)}mod(t){let e=typeof t=="number"?t:t._storage,n=Dt(this._storage,e);return r._fromStorage(n)}floor_divide(t){let e=typeof t=="number"?t:t._storage,n=Ht(this._storage,e);return r._fromStorage(n)}positive(){let t=Bn(this._storage);return r._fromStorage(t)}reciprocal(){let t=En(this._storage);return r._fromStorage(t)}sqrt(){let t=sa(this._storage);return r._fromStorage(t)}power(t){let e=typeof t=="number"?t:t._storage,n=ia(this._storage,e);return r._fromStorage(n)}exp(){let t=ua(this._storage);return r._fromStorage(t)}exp2(){let t=ca(this._storage);return r._fromStorage(t)}expm1(){let t=la(this._storage);return r._fromStorage(t)}log(){let t=fa(this._storage);return r._fromStorage(t)}log2(){let t=ma(this._storage);return r._fromStorage(t)}log10(){let t=pa(this._storage);return r._fromStorage(t)}log1p(){let t=ya(this._storage);return r._fromStorage(t)}logaddexp(t){let e=typeof t=="number"?t:t._storage,n=da(this._storage,e);return r._fromStorage(n)}logaddexp2(t){let e=typeof t=="number"?t:t._storage,n=ga(this._storage,e);return r._fromStorage(n)}absolute(){let t=Mn(this._storage);return r._fromStorage(t)}negative(){let t=Fn(this._storage);return r._fromStorage(t)}sign(){let t=vn(this._storage);return r._fromStorage(t)}around(t=0){let e=je(this._storage,t);return r._fromStorage(e)}round(t=0){return this.around(t)}ceil(){let t=Pe(this._storage);return r._fromStorage(t)}fix(){let t=Le(this._storage);return r._fromStorage(t)}floor(){let t=Ge(this._storage);return r._fromStorage(t)}rint(){let t=We(this._storage);return r._fromStorage(t)}trunc(){let t=Ze(this._storage);return r._fromStorage(t)}sin(){let t=Aa(this._storage);return r._fromStorage(t)}cos(){let t=ba(this._storage);return r._fromStorage(t)}tan(){let t=ha(this._storage);return r._fromStorage(t)}arcsin(){let t=Sa(this._storage);return r._fromStorage(t)}arccos(){let t=Da(this._storage);return r._fromStorage(t)}arctan(){let t=Na(this._storage);return r._fromStorage(t)}arctan2(t){let e=typeof t=="number"?t:t._storage,n=xa(this._storage,e);return r._fromStorage(n)}hypot(t){let e=typeof t=="number"?t:t._storage,n=wa(this._storage,e);return r._fromStorage(n)}degrees(){let t=Ia(this._storage);return r._fromStorage(t)}radians(){let t=za(this._storage);return r._fromStorage(t)}sinh(){let t=_a(this._storage);return r._fromStorage(t)}cosh(){let t=Ma(this._storage);return r._fromStorage(t)}tanh(){let t=Fa(this._storage);return r._fromStorage(t)}arcsinh(){let t=va(this._storage);return r._fromStorage(t)}arccosh(){let t=Ba(this._storage);return r._fromStorage(t)}arctanh(){let t=Ea(this._storage);return r._fromStorage(t)}greater(t){let e=typeof t=="number"?t:t._storage,n=no(this._storage,e);return r._fromStorage(n)}greater_equal(t){let e=typeof t=="number"?t:t._storage,n=oo(this._storage,e);return r._fromStorage(n)}less(t){let e=typeof t=="number"?t:t._storage,n=ao(this._storage,e);return r._fromStorage(n)}less_equal(t){let e=typeof t=="number"?t:t._storage,n=so(this._storage,e);return r._fromStorage(n)}equal(t){let e=typeof t=="number"?t:t._storage,n=io(this._storage,e);return r._fromStorage(n)}not_equal(t){let e=typeof t=="number"?t:t._storage,n=uo(this._storage,e);return r._fromStorage(n)}isclose(t,e=1e-5,n=1e-8){let o=typeof t=="number"?t:t._storage,a=Xt(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 co(this._storage,o,e,n)}bitwise_and(t){let e=typeof t=="number"?t:t._storage,n=os(this._storage,e);return r._fromStorage(n)}bitwise_or(t){let e=typeof t=="number"?t:t._storage,n=as(this._storage,e);return r._fromStorage(n)}bitwise_xor(t){let e=typeof t=="number"?t:t._storage,n=ss(this._storage,e);return r._fromStorage(n)}bitwise_not(){let t=Bt(this._storage);return r._fromStorage(t)}invert(){let t=is(this._storage);return r._fromStorage(t)}left_shift(t){let e=typeof t=="number"?t:t._storage,n=Te(this._storage,e);return r._fromStorage(n)}right_shift(t){let e=typeof t=="number"?t:t._storage,n=Oe(this._storage,e);return r._fromStorage(n)}logical_and(t){let e=typeof t=="number"?t:t._storage,n=ds(this._storage,e);return r._fromStorage(n)}logical_or(t){let e=typeof t=="number"?t:t._storage,n=gs(this._storage,e);return r._fromStorage(n)}logical_not(){let t=As(this._storage);return r._fromStorage(t)}logical_xor(t){let e=typeof t=="number"?t:t._storage,n=bs(this._storage,e);return r._fromStorage(n)}isfinite(){let t=hs(this._storage);return r._fromStorage(t)}isinf(){let t=Ss(this._storage);return r._fromStorage(t)}isnan(){let t=Ds(this._storage);return r._fromStorage(t)}isnat(){let t=Ns(this._storage);return r._fromStorage(t)}copysign(t){let e=typeof t=="number"?t:t._storage,n=xs(this._storage,e);return r._fromStorage(n)}signbit(){let t=ws(this._storage);return r._fromStorage(t)}nextafter(t){let e=typeof t=="number"?t:t._storage,n=Is(this._storage,e);return r._fromStorage(n)}spacing(){let t=zs(this._storage);return r._fromStorage(t)}sum(t,e=!1){let n=Jr(this._storage,t,e);return typeof n=="number"||n instanceof E?n:r._fromStorage(n)}mean(t,e=!1){let n=Nt(this._storage,t,e);return typeof n=="number"||n instanceof E?n:r._fromStorage(n)}max(t,e=!1){let n=Vr(this._storage,t,e);return typeof n=="number"||n instanceof E?n:r._fromStorage(n)}min(t,e=!1){let n=jr(this._storage,t,e);return typeof n=="number"||n instanceof E?n:r._fromStorage(n)}prod(t,e=!1){let n=Jt(this._storage,t,e);return typeof n=="number"||n instanceof E?n:r._fromStorage(n)}argmin(t){let e=Qt(this._storage,t);return typeof e=="number"?e:r._fromStorage(e)}argmax(t){let e=Kt(this._storage,t);return typeof e=="number"?e:r._fromStorage(e)}var(t,e=0,n=!1){let o=re(this._storage,t,e,n);return typeof o=="number"?o:r._fromStorage(o)}std(t,e=0,n=!1){let o=fo(this._storage,t,e,n);return typeof o=="number"?o:r._fromStorage(o)}all(t,e=!1){let n=te(this._storage,t,e);return typeof n=="boolean"?n:r._fromStorage(n)}any(t,e=!1){let n=ee(this._storage,t,e);return typeof n=="boolean"?n:r._fromStorage(n)}cumsum(t){return r._fromStorage(ne(this._storage,t))}cumprod(t){return r._fromStorage(oe(this._storage,t))}ptp(t,e=!1){let n=ae(this._storage,t,e);return typeof n=="number"||n instanceof E?n:r._fromStorage(n)}median(t,e=!1){let n=se(this._storage,t,e);return typeof n=="number"?n:r._fromStorage(n)}percentile(t,e,n=!1){let o=ie(this._storage,t,e,n);return typeof o=="number"?o:r._fromStorage(o)}quantile(t,e,n=!1){let o=Lr(this._storage,t,e,n);return typeof o=="number"?o:r._fromStorage(o)}average(t,e){let n=Qr(this._storage,e,t?.storage);return typeof n=="number"||n instanceof E?n:r._fromStorage(n)}nansum(t,e=!1){let n=xt(this._storage,t,e);return typeof n=="number"||n instanceof E?n:r._fromStorage(n)}nanprod(t,e=!1){let n=wt(this._storage,t,e);return typeof n=="number"||n instanceof E?n:r._fromStorage(n)}nanmean(t,e=!1){let n=It(this._storage,t,e);return typeof n=="number"||n instanceof E?n:r._fromStorage(n)}nanvar(t,e=0,n=!1){let o=Pr(this._storage,t,e,n);return typeof o=="number"?o:r._fromStorage(o)}nanstd(t,e=0,n=!1){let o=ue(this._storage,t,e,n);return typeof o=="number"?o:r._fromStorage(o)}nanmin(t,e=!1){let n=Kr(this._storage,t,e);return typeof n=="number"||n instanceof E?n:r._fromStorage(n)}nanmax(t,e=!1){let n=rt(this._storage,t,e);return typeof n=="number"||n instanceof E?n:r._fromStorage(n)}nanquantile(t,e,n=!1){let o=nt(this._storage,t,e,n);return typeof o=="number"?o:r._fromStorage(o)}nanpercentile(t,e,n=!1){let o=fe(this._storage,t,e,n);return typeof o=="number"?o:r._fromStorage(o)}nanargmin(t){let e=tt(this._storage,t);return typeof e=="number"?e:r._fromStorage(e)}nanargmax(t){let e=et(this._storage,t);return typeof e=="number"?e:r._fromStorage(e)}nancumsum(t){return r._fromStorage(ce(this._storage,t))}nancumprod(t){return r._fromStorage(le(this._storage,t))}nanmedian(t,e=!1){let n=zt(this._storage,t,e);return typeof n=="number"?n:r._fromStorage(n)}sort(t=-1){return r._fromStorage(Ce(this._storage,t))}argsort(t=-1){return r._fromStorage(Ue(this._storage,t))}partition(t,e=-1){return r._fromStorage($e(this._storage,t,e))}argpartition(t,e=-1){return r._fromStorage(Re(this._storage,t,e))}nonzero(){return Tt(this._storage).map(e=>r._fromStorage(e))}argwhere(){return r._fromStorage(ke(this._storage))}searchsorted(t,e="left"){return r._fromStorage(qe(this._storage,t._storage,e))}diff(t=1,e=-1){return r._fromStorage(Xe(this._storage,t,e))}reshape(...t){let e=t.length===1&&Array.isArray(t[0])?t[0]:t,n=K(this._storage,e),a=n.data===this.data?this._base??this:void 0;return r._fromStorage(n,a)}flatten(){let t=Or(this._storage);return r._fromStorage(t)}ravel(){let t=Gr(this._storage),n=t.data===this.data?this._base??this:void 0;return r._fromStorage(t,n)}transpose(t){let e=at(this._storage,t),n=this._base??this;return r._fromStorage(e,n)}squeeze(t){let e=me(this._storage,t),n=this._base??this;return r._fromStorage(e,n)}expand_dims(t){let e=ot(this._storage,t),n=this._base??this;return r._fromStorage(e,n)}swapaxes(t,e){let n=mo(this._storage,t,e),o=this._base??this;return r._fromStorage(n,o)}moveaxis(t,e){let n=pe(this._storage,t,e),o=this._base??this;return r._fromStorage(n,o)}repeat(t,e){let n=No(this._storage,t,e);return r._fromStorage(n)}take(t,e){let n=Oa(this._storage,t,e);return r._fromStorage(n)}put(t,e){let n=e instanceof r?e._storage:e;Ca(this._storage,t,n)}iindex(t,e=0){let n;if(t instanceof r){n=[];for(let o=0;o<t.size;o++){let a=t.storage.iget(o),i=typeof a=="bigint"?Number(a):a instanceof E?a.re:a;n.push(i)}}else Array.isArray(t)&&t.length>0&&Array.isArray(t[0])?n=t.flat():n=t;return this.take(n,e)}bindex(t,e){return r._fromStorage(_e(t._storage,this._storage,e))}matmul(t){let e=ur(this._storage,t._storage);return r._fromStorage(e)}dot(t){let e=Zr(this._storage,t._storage);return typeof e=="number"||typeof e=="bigint"||e instanceof E?e:r._fromStorage(e)}trace(){return ge(this._storage)}inner(t){let e=$o(this._storage,t._storage);return typeof e=="number"||typeof e=="bigint"||e instanceof E?e:r._fromStorage(e)}outer(t){let e=_t(this._storage,t._storage);return r._fromStorage(e)}tensordot(t,e=2){let n=Ae(this._storage,t._storage,e);return typeof n=="number"||typeof n=="bigint"||n instanceof E?n:r._fromStorage(n)}cbrt(){let t=Tn(this._storage);return r._fromStorage(t)}fabs(){let t=On(this._storage);return r._fromStorage(t)}divmod(t){let e=typeof t=="number"?t:t._storage,[n,o]=Cn(this._storage,e);return[r._fromStorage(n),r._fromStorage(o)]}square(){let t=Un(this._storage);return r._fromStorage(t)}remainder(t){let e=typeof t=="number"?t:t._storage,n=$n(this._storage,e);return r._fromStorage(n)}heaviside(t){let e=typeof t=="number"?t:t._storage,n=Rn(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=hn(u);return Sn(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=N.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)}tolist(){return this.toArray()}tobytes(){if(this._storage.isCContiguous){let n=this._storage.data,o=n.BYTES_PER_ELEMENT,a=this._storage.offset*o,i=this.size*o;return n.buffer.slice(a,a+i)}let e=this.copy()._storage.data;return e.buffer.slice(0,this.size*e.BYTES_PER_ELEMENT)}item(...t){if(t.length===0){if(this.size!==1)throw new Error("can only convert an array of size 1 to a Python scalar");return this._storage.iget(0)}if(t.length===1){let e=t[0];if(e<0||e>=this.size)throw new Error(`index ${e} is out of bounds for size ${this.size}`);return this._storage.iget(e)}return this.get(t)}byteswap(t=!1){let e=t?this:this.copy(),n=e._storage.data,o=n.BYTES_PER_ELEMENT;if(o===1)return e;let a=n.buffer,i=new DataView(a);for(let s=0;s<n.length;s++){let u=s*o;if(o===2){let c=i.getUint8(u),l=i.getUint8(u+1);i.setUint8(u,l),i.setUint8(u+1,c)}else if(o===4){let c=i.getUint8(u),l=i.getUint8(u+1),m=i.getUint8(u+2),d=i.getUint8(u+3);i.setUint8(u,d),i.setUint8(u+1,m),i.setUint8(u+2,l),i.setUint8(u+3,c)}else if(o===8){let c=i.getUint8(u),l=i.getUint8(u+1),m=i.getUint8(u+2),d=i.getUint8(u+3),y=i.getUint8(u+4),f=i.getUint8(u+5),p=i.getUint8(u+6),g=i.getUint8(u+7);i.setUint8(u,g),i.setUint8(u+1,p),i.setUint8(u+2,f),i.setUint8(u+3,y),i.setUint8(u+4,d),i.setUint8(u+5,m),i.setUint8(u+6,l),i.setUint8(u+7,c)}}return e}view(t){if(!t||t===this.dtype)return r._fromStorage(this._storage,this._base??this);let e=Rr(this.dtype),n=Rr(t);if(e!==n)throw new Error("When changing to a larger dtype, its size must be a divisor of the total size in bytes of the last axis of the array.");let o=P(t);if(!o)throw new Error(`Unsupported dtype: ${t}`);let a=this._storage.data,i=a.byteOffset+this._storage.offset*e,s=new o(a.buffer,i,this.size),u=N.fromData(s,[...this.shape],t,[...this._storage.strides],0);return r._fromStorage(u,this._base??this)}tofile(t,e="",n=""){throw new Error('tofile() requires file system access. Use the node module: import { save } from "numpy-ts/node"')}};function zr(r,t=Q){let e=N.zeros(r,t);return new _(e)}function Ai(r,t=Q){let e=N.ones(r,t);return new _(e)}function nl(r){let t=[],e=r;for(;Array.isArray(e);)t.push(e.length),e=e[0];return t}function bi(r){return typeof r=="bigint"?!0:Array.isArray(r)?r.some(t=>bi(t)):!1}function hi(r){return xn(r)?!0:Array.isArray(r)?r.some(t=>hi(t)):!1}function ol(r){let t=[];function e(n){Array.isArray(n)?n.forEach(o=>e(o)):t.push(n)}return e(r),t}function G(r,t){if(r instanceof _)return!t||r.dtype===t?r.copy():r.astype(t);let e=bi(r),n=hi(r),o=nl(r),a=o.reduce((y,f)=>y*f,1),i=t;i||(n?i="complex128":e?i="int64":i=Q);let s=v(i),u=P(i);if(!u)throw new Error(`Cannot create array with dtype ${i}`);let c=s?a*2:a,l=new u(c),m=ol(r);if(B(i)){let y=l;for(let f=0;f<a;f++){let p=m[f];y[f]=typeof p=="bigint"?p:BigInt(Math.round(Number(p)))}}else if(i==="bool"){let y=l;for(let f=0;f<a;f++)y[f]=m[f]?1:0}else if(s){let y=l;for(let f=0;f<a;f++){let p=m[f],g,h;p instanceof E?(g=p.re,h=p.im):typeof p=="object"&&p!==null&&"re"in p?(g=p.re,h=p.im??0):(g=Number(p),h=0),y[f*2]=g,y[f*2+1]=h}}else{let y=l;for(let f=0;f<a;f++){let p=m[f];y[f]=Number(p)}}let d=N.fromData(l,o,i);return new _(d)}function al(r,t,e=1,n=Q){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=P(n);if(!s)throw new Error(`Cannot create arange array with dtype ${n}`);let u=new s(i);if(B(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=N.fromData(u,[i],n);return new _(c)}function sl(r,t,e=50,n=Q){if(e<0)throw new Error("num must be non-negative");if(e===0)return G([],n);if(e===1)return G([r],n);let o=P(n);if(!o)throw new Error(`Cannot create linspace array with dtype ${n}`);let a=new o(e),i=(t-r)/(e-1);if(B(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=N.fromData(a,[e],n);return new _(s)}function il(r,t,e=50,n=10,o=Q){if(e<0)throw new Error("num must be non-negative");if(e===0)return G([],o);if(e===1)return G([Math.pow(n,r)],o);let a=P(o);if(!a)throw new Error(`Cannot create logspace array with dtype ${o}`);let i=new a(e),s=(t-r)/(e-1);if(B(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=N.fromData(i,[e],o);return new _(u)}function ul(r,t,e=50,n=Q){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 G([],n);if(e===1)return G([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=P(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(B(n))for(let d=0;d<e;d++){let y=o*Math.exp(u+d*l);s[d]=BigInt(Math.round(y))}else if(n==="bool")for(let d=0;d<e;d++){let y=o*Math.exp(u+d*l);s[d]=y!==0?1:0}else for(let d=0;d<e;d++){let y=o*Math.exp(u+d*l);s[d]=y}let m=N.fromData(s,[e],n);return new _(m)}function Si(r,t,e=0,n=Q){let o=t??r,a=zr([r,o],n),i=a.data;if(B(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 Di(r,t=Q){return zr(r,t)}function Ni(r,t,e){let n=e;n||(typeof t=="bigint"?n="int64":typeof t=="boolean"?n="bool":Number.isInteger(t)?n="int32":n=Q);let o=P(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(B(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=N.fromData(i,r,n);return new _(s)}function cl(r,t=Q){return Si(r,r,0,t)}function yt(r,t){return r instanceof _?!t||r.dtype===t?r:r.astype(t):G(r,t)}function ll(r,t){let e=yt(r,t);for(let n=0;n<e.size;n++)if(!isFinite(Number(e.data[n])))throw new Error("array must not contain infs or NaNs");return e}function fl(r,t,e){let n=Array.isArray(e)?e:e?[e]:[],o=new Set(n.map(i=>{let s=i.toUpperCase();return s==="C_CONTIGUOUS"||s==="CONTIGUOUS"?"C":s==="F_CONTIGUOUS"||s==="FORTRAN"?"F":s==="WRITEABLE"?"W":s==="ENSUREARRAY"?"E":s==="OWNDATA"?"O":s})),a=r;return t&&r.dtype!==t&&(a=r.astype(t)),(o.has("C")||o.has("W")||o.has("O"))&&a===r&&(a=r.copy()),a}function ml(r){return r.copy()}function pl(r,t){return zr(Array.from(r.shape),t??r.dtype)}function yl(r,t){return Ai(Array.from(r.shape),t??r.dtype)}function dl(r,t){return Di(Array.from(r.shape),t??r.dtype)}function gl(r,t,e){return Ni(Array.from(r.shape),t,e??r.dtype)}function Al(r,t){return yt(r,t)}function bl(r,t){let e=yt(r,t);return e.flags.C_CONTIGUOUS?e:e.copy()}function hl(r,t){return yt(r,t).copy()}function xi(r,t=0){if(r.ndim===1){let e=r.size,n=e+Math.abs(t),o=zr([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 zr([0],r.dtype);let s=P(r.dtype),u=new s(i);for(let l=0;l<i;l++){let m=r.get([o+l,a+l]);B(r.dtype)?u[l]=typeof m=="bigint"?m:BigInt(m):u[l]=m}let c=N.fromData(u,[i],r.dtype);return new _(c)}else throw new Error("Input must be 1-D or 2-D")}function Sl(r,t=0){let e=r.flatten();return xi(e,t)}function Dl(r,t,e=Q){let n=t.reduce((c,l)=>c*l,1),o=P(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);B(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=N.fromData(a,t,e);return new _(u)}function Nl(...r){let t=[],e="xy";for(let s of r)s instanceof _?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),d=Ft(m.storage,o),y=_._fromStorage(d.copy());i.push(y)}return e==="xy"&&i.length>=2&&([i[0],i[1]]=[i[1],i[0]]),i}function xl(r,t,e=0,n=Q){let o=t??r,a=zr([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 wl(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 d=n.length-3;d>=0;d--)l.unshift(m%n[d]),m=Math.floor(m/n[d]);l.push(u,c),e.set(l,0)}return e}function Il(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 d=n.length-3;d>=0;d--)l.unshift(m%n[d]),m=Math.floor(m/n[d]);l.push(u,c),e.set(l,0)}return e}function zl(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=zr([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 _l(r,t=Q,e=-1,n=0){let o,a=n;r instanceof ArrayBuffer?o=r:(o=r.buffer,a+=r.byteOffset);let i=Bl(t),s=o.byteLength-a,u=Math.floor(s/i),c=e<0?u:Math.min(e,u);if(c<=0)return G([],t);let l=P(t);if(!l)throw new Error(`Unsupported dtype: ${t}`);let m=new l(o,a,c),d=N.fromData(m,[c],t);return new _(d)}function Ml(r,t=Q,e=-1){let n=[],o=0;for(let a of r){if(e>=0&&o>=e)break;n.push(a),o++}return G(n,t)}function Fl(r,t=Q,e=-1){let n=[],o=0;for(let a of r){if(e>=0&&o>=e)break;n.push(a),o++}return G(n,t)}function vl(r,t=Q,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!==""&&(B(t)?a.push(BigInt(u)):a.push(parseFloat(u)),i++)}return G(a,t)}function Bl(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 El(r){return r.sqrt()}function wi(r,t){return r.power(t)}function Tl(r){return r.exp()}function Ol(r){return r.exp2()}function Cl(r){return r.expm1()}function Ul(r){return r.log()}function $l(r){return r.log2()}function Rl(r){return r.log10()}function kl(r){return r.log1p()}function ql(r,t){return r.logaddexp(t)}function Vl(r,t){return r.logaddexp2(t)}function Ii(r){return r.absolute()}function jl(r){return r.negative()}function Pl(r){return r.sign()}function Ll(r,t){return r.mod(t)}function zi(r,t){return r.divide(t)}function Gl(r,t){return r.floor_divide(t)}function Wl(r){return r.positive()}function Zl(r){return r.reciprocal()}function Yl(r,t){return r.dot(t)}function Hl(r){return r.trace()}function Xl(r,t=0,e=0,n=1){let o=be(r.storage,t,e,n);return _._fromStorage(o)}function Jl(r,t){let e=ko(r.storage,t.storage);return _._fromStorage(e)}function Ql(r,t){return r.transpose(t)}function Kl(r,t){return r.inner(t)}function rf(r,t){return r.outer(t)}function tf(r,t,e=2){return r.tensordot(t,e)}function ef(r){return r.sin()}function nf(r){return r.cos()}function of(r){return r.tan()}function _i(r){return r.arcsin()}function Mi(r){return r.arccos()}function Fi(r){return r.arctan()}function vi(r,t){return r.arctan2(t)}function af(r,t){return r.hypot(t)}function sf(r){return r.degrees()}function uf(r){return r.radians()}function cf(r){return r.radians()}function lf(r){return r.degrees()}function ff(r){return r.sinh()}function mf(r){return r.cosh()}function pf(r){return r.tanh()}function Bi(r){return r.arcsinh()}function Ei(r){return r.arccosh()}function Ti(r){return r.arctanh()}function yf(r,t,e){return r.swapaxes(t,e)}function df(r,t,e){return r.moveaxis(t,e)}function Ur(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=vr(e,t);return _._fromStorage(n)}function gf(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=po(e,t);return _._fromStorage(n)}function Oi(r){if(r.length===0)throw new Error("need at least one array to stack");let t=r.map(n=>n.storage),e=yo(t);return _._fromStorage(e)}function Af(r){if(r.length===0)throw new Error("need at least one array to stack");let t=r.map(n=>n.storage),e=ye(t);return _._fromStorage(e)}function bf(r){if(r.length===0)throw new Error("need at least one array to stack");let t=r.map(n=>n.storage),e=go(t);return _._fromStorage(e)}function hf(r,t=0){return Ur(r,t)}function Sf(r,t=0){return To(r.storage,t).map(n=>_._fromStorage(n))}function Df(r){let t=r.map(n=>n.storage),e=Oo(t);return _._fromStorage(e)}function Nf(r,t,e=0){return Ao(r.storage,t,e).map(o=>_._fromStorage(o,r.base??r))}function xf(r,t,e=0){return st(r.storage,t,e).map(o=>_._fromStorage(o,r.base??r))}function wf(r,t){return ho(r.storage,t).map(n=>_._fromStorage(n,r.base??r))}function If(r,t){return So(r.storage,t).map(n=>_._fromStorage(n,r.base??r))}function zf(r,t){let e=Do(r.storage,t);return _._fromStorage(e)}function _f(r,t,e){return r.repeat(t,e)}function Mf(r){return r.ravel()}function Ff(r){return r.flatten()}function vf(r,t){r.fill(t)}function Bf(r,...t){return r.item(...t)}function Ef(r){return r.tolist()}function Tf(r){return r.tobytes()}function Of(r,t=!1){return r.byteswap(t)}function Cf(r,t){return r.view(t)}function Uf(r,t,e="",n=""){r.tofile(t,e,n)}function $f(r,t){return r.reshape(...t)}function Rf(r,t){return r.squeeze(t)}function kf(r,t){return r.expand_dims(t)}function rn(r,t){let e=xo(r.storage,t);return _._fromStorage(e)}function qf(r){if(r.ndim<2)throw new Error("Input must be at least 2-D");return rn(r,1)}function Vf(r){if(r.ndim<2)throw new Error("Input must be at least 2-D");return rn(r,0)}function jf(r,t=1,e=[0,1]){let n=wo(r.storage,t,e);return _._fromStorage(n)}function Pf(r,t,e){let n=Io(r.storage,t,e);return _._fromStorage(n)}function Lf(r,t,e=0){let n=zo(r.storage,t,e);return _._fromStorage(n,r.base??r)}function Gf(...r){let t=r.map(o=>o.storage),n=vo(t).map((o,a)=>o===t[a]?r[a]:_._fromStorage(o));return n.length===1?n[0]:n}function Wf(...r){let t=r.map(o=>o.storage),n=Bo(t).map((o,a)=>o===t[a]?r[a]:_._fromStorage(o));return n.length===1?n[0]:n}function Zf(...r){let t=r.map(o=>o.storage),n=Eo(t).map((o,a)=>o===t[a]?r[a]:_._fromStorage(o));return n.length===1?n[0]:n}function Yf(r,t){return _o(r.storage,t).map(n=>_._fromStorage(n,r.base??r))}function Hf(r){if(r.length===0)throw new Error("need at least one array to stack");let t=r.map(n=>n.storage),e=Mo(t);return _._fromStorage(e)}function Xf(r){return Oi(r)}function Jf(r,t){let e=Fo(r.storage,t);return _._fromStorage(e)}function Qf(r,t,e){let n=t instanceof _?t:G(t,r.dtype);if(e===void 0){let o=r.flatten(),a=n.flatten();return Ur([o,a])}return Ur([r,n],e)}function Kf(r,t,e){let n=r.dtype;if(e===void 0){let y=r.flatten(),p=(Array.isArray(t)?t:[t]).map(S=>S<0?y.size+S:S),g=[];for(let S=0;S<y.size;S++)p.includes(S)||g.push(S);let h=P(n),b=new h(g.length);for(let S=0;S<g.length;S++){let D=y.get([g[S]]);B(n)?b[S]=typeof D=="bigint"?D:BigInt(D):b[S]=D}let A=N.fromData(b,[g.length],n);return new _(A)}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(y=>y<0?s+y:y)),l=[],m=0;for(let y=0;y<=s;y++)(c.has(y)||y===s)&&(y>m&&l.push([m,y]),m=y+1);if(l.length===0){let y=[...o];return y[i]=0,zr(y,n)}let d=[];for(let[y,f]of l){let p=o.map(()=>":");p[i]=`${y}:${f}`,d.push(r.slice(...p))}return Ur(d,i)}function rm(r,t,e,n){let o=e instanceof _?e:G(e,r.dtype);if(n===void 0){let m=r.flatten(),d=o.flatten(),y=t<0?m.size+t:t;if(y<0||y>m.size)throw new Error(`index ${t} is out of bounds for array of size ${m.size}`);let f=y>0?m.slice(`0:${y}`):null,p=y<m.size?m.slice(`${y}:`):null,g=[];return f&&g.push(f),g.push(d),p&&g.push(p),Ur(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 Ur(l,s)}function tm(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((p,g)=>p+s[g][0]+s[g][1]),c=u.reduce((p,g)=>p*g,1),l=P(i),m=new l(c),d=B(i);e==="constant"&&(d?m.fill(BigInt(n)):m.fill(n));let y=new Array(a).fill(0);for(let p=0;p<c;p++){let g=!0,h=[];for(let A=0;A<a;A++){let[S]=s[A],D=y[A]-S;if(D<0||D>=o[A]){g=!1;break}h.push(D)}let b;if(g)b=r.get(h);else if(e==="constant"){for(let A=a-1;A>=0&&(y[A]++,!(y[A]<u[A]));A--)y[A]=0;continue}else{let A=[];for(let S=0;S<a;S++){let[D]=s[S],w=y[S]-D,x=o[S];w<0?e==="edge"?w=0:e==="reflect"?(w=-w,w>=x&&(w=x-1)):e==="symmetric"?(w=-w-1,w>=x&&(w=x-1),w<0&&(w=0)):e==="wrap"&&(w=(w%x+x)%x):w>=x&&(e==="edge"?w=x-1:e==="reflect"?(w=2*x-w-2,w<0&&(w=0)):e==="symmetric"?(w=2*x-w-1,w<0&&(w=0)):e==="wrap"&&(w=w%x)),A.push(Math.max(0,Math.min(x-1,w)))}b=r.get(A)}d?m[p]=typeof b=="bigint"?b:BigInt(Number(b)):m[p]=Number(b);for(let A=a-1;A>=0&&(y[A]++,!(y[A]<u[A]));A--)y[A]=0}let f=N.fromData(m,u,i);return new _(f)}function em(r,t){let e=Ft(r.storage,t);return _._fromStorage(e,r.base??r)}function nm(...r){let t=r.map(n=>n.storage);return Ta(t).map((n,o)=>_._fromStorage(n,r[o].base??r[o]))}function om(...r){return Zt(...r)}function am(r,t,e){return r.take(t,e)}function sm(r,t,e){r.put(t,e)}function im(r,t,e=0){return r.iindex(t,e)}function um(r,t,e){return r.bindex(t,e)}function cm(r,t,e){if(e!==void 0)throw new Error("copyto with where parameter is not yet implemented");let n=r.storage,o=r.shape,a=r.size,i=r.dtype;if(typeof t=="number"||typeof t=="bigint"){r.fill(t);return}let s=t.storage,u=t.shape,c=Ar([u,o]);if(!c)throw new Error(`could not broadcast input array from shape (${u.join(",")}) into shape (${o.join(",")})`);if(c.length!==o.length||!c.every((m,d)=>m===o[d]))throw new Error(`could not broadcast input array from shape (${u.join(",")}) into shape (${o.join(",")})`);let l=Ft(s,o);if(B(i))for(let m=0;m<a;m++){let d=l.iget(m),y=typeof d=="bigint"?d:BigInt(Math.round(Number(d)));n.iset(m,y)}else if(i==="bool")for(let m=0;m<a;m++){let d=l.iget(m);n.iset(m,d?1:0)}else for(let m=0;m<a;m++){let d=l.iget(m);n.iset(m,Number(d))}}function lm(r,t){let e=t.map(o=>o.storage),n=Ua(r.storage,e);return _._fromStorage(n)}function fm(r,t,e=!1){return $a(r.storage,t.storage,e)}function mm(r,t){return lo(r.storage,t.storage)}function Ci(r,t){return _._fromStorage(ne(r.storage,t))}function Ui(r,t){return _._fromStorage(oe(r.storage,t))}function $i(r,t,e=!1){return r.max(t,e)}function Ri(r,t,e=!1){return r.min(t,e)}function pm(r,t,e=!1){let n=ae(r.storage,t,e);return typeof n=="number"||n instanceof E?n:_._fromStorage(n)}function ym(r,t,e=!1){let n=se(r.storage,t,e);return typeof n=="number"?n:_._fromStorage(n)}function dm(r,t,e,n=!1){let o=ie(r.storage,t,e,n);return typeof o=="number"?o:_._fromStorage(o)}function gm(r,t,e,n=!1){let o=Lr(r.storage,t,e,n);return typeof o=="number"?o:_._fromStorage(o)}function Am(r,t,e,n=!1){let o=e?e.storage:void 0,a=Qr(r.storage,t,o,n);return typeof a=="number"||a instanceof E?a:_._fromStorage(a)}function bm(r,t,e=!1){let n=xt(r.storage,t,e);return typeof n=="number"||n instanceof E?n:_._fromStorage(n)}function hm(r,t,e=!1){let n=wt(r.storage,t,e);return typeof n=="number"||n instanceof E?n:_._fromStorage(n)}function Sm(r,t,e=!1){let n=It(r.storage,t,e);return typeof n=="number"||n instanceof E?n:_._fromStorage(n)}function Dm(r,t,e=0,n=!1){let o=Pr(r.storage,t,e,n);return typeof o=="number"?o:_._fromStorage(o)}function Nm(r,t,e=0,n=!1){let o=ue(r.storage,t,e,n);return typeof o=="number"?o:_._fromStorage(o)}function xm(r,t,e=!1){let n=Kr(r.storage,t,e);return typeof n=="number"||n instanceof E?n:_._fromStorage(n)}function wm(r,t,e=!1){let n=rt(r.storage,t,e);return typeof n=="number"||n instanceof E?n:_._fromStorage(n)}function Im(r,t){let e=tt(r.storage,t);return typeof e=="number"?e:_._fromStorage(e)}function zm(r,t){let e=et(r.storage,t);return typeof e=="number"?e:_._fromStorage(e)}function _m(r,t){return _._fromStorage(ce(r.storage,t))}function Mm(r,t){return _._fromStorage(le(r.storage,t))}function Fm(r,t,e=!1){let n=zt(r.storage,t,e);return typeof n=="number"?n:_._fromStorage(n)}function vm(r,t,e,n=!1){let o=nt(r.storage,t,e,n);return typeof o=="number"?o:_._fromStorage(o)}function Bm(r,t,e,n=!1){let o=fe(r.storage,t,e,n);return typeof o=="number"?o:_._fromStorage(o)}function Em(r){return r.cbrt()}function Tm(r){return r.fabs()}function Om(r,t){return r.divmod(t)}function Cm(r){return r.square()}function Um(r,t){return r.remainder(t)}function $m(r,t){return r.heaviside(t)}function Rm(r,t){let e=typeof t=="number"?t:t.storage;return _._fromStorage(kn(r.storage,e))}function km(r,t){let e=typeof t=="number"?t:t.storage;return _._fromStorage(qn(r.storage,e))}function qm(r){let[t,e]=Vn(r.storage);return[_._fromStorage(t),_._fromStorage(e)]}function Vm(r,t){let e=typeof t=="number"?t:t.storage;return _._fromStorage(jn(r.storage,e))}function jm(r,t){let e=typeof t=="number"?t:t.storage;return _._fromStorage(Pn(r.storage,e))}function Pm(r,t){let e=typeof t=="number"?t:t.storage;return _._fromStorage(Ln(r.storage,e))}function Lm(r){let[t,e]=Gn(r.storage);return[_._fromStorage(t),_._fromStorage(e)]}function Gm(r,t,e){let n=t instanceof _?t.storage:t,o=e instanceof _?e.storage:e;return _._fromStorage(Wn(r.storage,n,o))}function Wm(r,t){let e=t instanceof _?t.storage:t;return _._fromStorage(Zn(r.storage,e))}function Zm(r,t){let e=t instanceof _?t.storage:t;return _._fromStorage(Yn(r.storage,e))}function Ym(r,t){let e=t instanceof _?t.storage:t;return _._fromStorage(Hn(r.storage,e))}function Hm(r,t){let e=t instanceof _?t.storage:t;return _._fromStorage(Xn(r.storage,e))}function Xm(r,t=0,e,n){return _._fromStorage(Jn(r.storage,t,e,n))}function Jm(r,t,e,n,o){return _._fromStorage(Qn(r.storage,t.storage,e.storage,n,o))}function Qm(r,t=Math.PI,e=-1,n=2*Math.PI){return _._fromStorage(Kn(r.storage,t,e,n))}function Km(r){return _._fromStorage(ro(r.storage))}function rp(r){return _._fromStorage(to(r.storage))}function tp(r,t){return r.bitwise_and(t)}function ep(r,t){return r.bitwise_or(t)}function np(r,t){return r.bitwise_xor(t)}function op(r){return r.bitwise_not()}function ap(r){return r.invert()}function sp(r,t){return r.left_shift(t)}function ip(r,t){return r.right_shift(t)}function up(r,t=-1,e="big"){let n=us(r.storage,t,e);return _._fromStorage(n)}function cp(r,t=-1,e=-1,n="big"){let o=cs(r.storage,t,e,n);return _._fromStorage(o)}function lp(r){return _._fromStorage(ls(r.storage))}function fp(r){return _._fromStorage(fs(r.storage))}function mp(r,t){let e=typeof t=="number"?t:t.storage;return _._fromStorage(ms(r.storage,e))}function pp(r,t){let e=typeof t=="number"?t:t.storage;return _._fromStorage(ps(r.storage,e))}function yp(r,t){return r.logical_and(t)}function dp(r,t){return r.logical_or(t)}function gp(r){return r.logical_not()}function Ap(r,t){return r.logical_xor(t)}function bp(r){return r.isfinite()}function hp(r){return r.isinf()}function Sp(r){return r.isnan()}function Dp(r){return r.isnat()}function Np(r,t){return r.copysign(t)}function xp(r){return r.signbit()}function wp(r,t){return r.nextafter(t)}function Ip(r){return r.spacing()}function zp(r){return _._fromStorage(_s(r.storage))}function _p(r){return Ms(r.storage)}function Mp(r){return _._fromStorage(Fs(r.storage))}function Fp(r){return vs(r.storage)}function vp(r){return _._fromStorage(ks(r.storage))}function Bp(r){return _._fromStorage(qs(r.storage))}function ki(r){return _._fromStorage(Vs(r.storage))}var Ep=ki;function Tp(r,t=!1){return _._fromStorage(js(r.storage,t))}function Op(r){return _._fromStorage(Bs(r.storage))}function Cp(r){return _._fromStorage(Es(r.storage))}function Up(r){return Ts(r.storage)}function $p(r,t=100){return _._fromStorage(Os(r.storage,t))}function Rp(r){return Cs(r)}function kp(r){return Us(r)}function qp(r,t){return $s(r,t)}function Vp(r,t){return Rs(r,t)}function jp(r,...t){let e=t.map(o=>o.storage),n=Ro(r,...e);return typeof n=="number"||typeof n=="bigint"||n instanceof E?n:_._fromStorage(n)}function Pp(r,t){return Jo(r.storage,t.storage)}function Lp(r,t,e=-1){let n=Ie(r.storage,t.storage,e);return typeof n=="number"||typeof n=="bigint"||n instanceof E?n:_._fromStorage(n)}function Gp(r){return _._fromStorage(ze(r.storage))}function Wp(r,t){return _._fromStorage(Qo(r.storage,t))}function Zp(r,t){return _._fromStorage(Ko(r.storage,t.storage))}function Yp(r,t){return _._fromStorage(ra(r.storage,t.storage))}var Hp={cross:(r,t,e=-1,n=-1,o=-1,a)=>{let i=qo(r.storage,t.storage,e,n,o,a);return typeof i=="number"?i:_._fromStorage(i)},norm:(r,t=null,e=null,n=!1)=>{let o=Vo(r.storage,t,e,n);return typeof o=="number"?o:_._fromStorage(o)},vector_norm:(r,t=2,e,n=!1)=>{let o=Wr(r.storage,t,e,n);return typeof o=="number"?o:_._fromStorage(o)},matrix_norm:(r,t="fro",e=!1)=>{let n=Cr(r.storage,t,e);return typeof n=="number"?n:_._fromStorage(n)},qr:(r,t="reduced")=>{let e=he(r.storage,t);return e instanceof N?_._fromStorage(e):"q"in e&&"r"in e?{q:_._fromStorage(e.q),r:_._fromStorage(e.r)}:{h:_._fromStorage(e.h),tau:_._fromStorage(e.tau)}},cholesky:(r,t=!1)=>_._fromStorage(jo(r.storage,t)),svd:(r,t=!0,e=!0)=>{let n=De(r.storage,t,e);return"u"in n?{u:_._fromStorage(n.u),s:_._fromStorage(n.s),vt:_._fromStorage(n.vt)}:_._fromStorage(n)},det:r=>Po(r.storage),inv:r=>_._fromStorage(ut(r.storage)),solve:(r,t)=>_._fromStorage(Ne(r.storage,t.storage)),lstsq:(r,t,e=null)=>{let n=Lo(r.storage,t.storage,e);return{x:_._fromStorage(n.x),residuals:_._fromStorage(n.residuals),rank:n.rank,s:_._fromStorage(n.s)}},cond:(r,t=2)=>Go(r.storage,t),matrix_rank:(r,t)=>Wo(r.storage,t),matrix_power:(r,t)=>_._fromStorage(Zo(r.storage,t)),pinv:(r,t=1e-15)=>_._fromStorage(Yo(r.storage,t)),eig:r=>{let t=xe(r.storage);return{w:_._fromStorage(t.w),v:_._fromStorage(t.v)}},eigh:(r,t="L")=>{let e=we(r.storage,t);return{w:_._fromStorage(e.w),v:_._fromStorage(e.v)}},eigvals:r=>_._fromStorage(Ho(r.storage)),eigvalsh:(r,t="L")=>_._fromStorage(Xo(r.storage,t)),diagonal:(r,t=0,e=0,n=1)=>_._fromStorage(be(r.storage,t,e,n)),matmul:(r,t)=>_._fromStorage(ur(r.storage,t.storage)),matrix_transpose:r=>_._fromStorage(ze(r.storage)),multi_dot:r=>{let t=r.map(e=>e.storage);return _._fromStorage(na(t))},outer:(r,t)=>_._fromStorage(_t(r.storage,t.storage)),slogdet:r=>ta(r.storage),svdvals:r=>_._fromStorage(ea(r.storage)),tensordot:(r,t,e=2)=>{let n=Ae(r.storage,t.storage,e);return typeof n=="number"||typeof n=="bigint"||n instanceof E?n:_._fromStorage(n)},tensorinv:(r,t=2)=>_._fromStorage(oa(r.storage,t)),tensorsolve:(r,t,e)=>_._fromStorage(aa(r.storage,t.storage,e)),trace:r=>ge(r.storage),vecdot:(r,t,e=-1)=>{let n=Ie(r.storage,t.storage,e);return typeof n=="number"||typeof n=="bigint"||n instanceof E?n:_._fromStorage(n)}};function Xp(r,t,e){return _._fromStorage(Ra(r.storage,t.storage,e))}function Jp(r,t,e,n){ka(r.storage,t.storage,e.storage,n)}function Qp(r,t,e){let n=e instanceof _?e.storage:e;qa(r.storage,t.storage,n)}function Kp(r,t,e){return _._fromStorage(_e(r.storage,t.storage,e))}function ry(r,t,e=0){let n=r.map(a=>a.storage),o=t.map(a=>a.storage);return _._fromStorage(Va(n,o,e))}function ty(r,t,e){ja(r.storage,t.storage,e.storage)}function ey(r,t,e=!1){let n=typeof t=="number"?t:t.storage;Ja(r.storage,n,e)}function ny(r,t=2){return Me(r,t).map(n=>_._fromStorage(n))}function oy(r){return Pa(r.storage).map(e=>_._fromStorage(e))}function ay(r,t=0,e){return Fe(r,t,e).map(o=>_._fromStorage(o))}function sy(r,t=0){return La(r.storage,t).map(n=>_._fromStorage(n))}function iy(r,t=0,e){return ve(r,t,e).map(o=>_._fromStorage(o))}function uy(r,t=0){return Ga(r.storage,t).map(n=>_._fromStorage(n))}function cy(r,t,e=0){return Wa(r,(a,i)=>t(a,i).storage,e).map(a=>_._fromStorage(a))}function ly(r,t="int32"){return _._fromStorage(Za(r,t))}function fy(...r){return Ya(...r.map(e=>e.storage)).map(e=>_._fromStorage(e))}function my(r,t,e="raise"){let n=r.map(o=>o.storage);return _._fromStorage(Ha(n,t,e))}function py(r,t,e="C"){let n=r instanceof _?r.storage:r;return Xa(n,t,e).map(a=>_._fromStorage(a))}function yy(r,t=-1){return _._fromStorage(Ce(r.storage,t))}function dy(r,t=-1){return _._fromStorage(Ue(r.storage,t))}function gy(r){let t=r.map(e=>e.storage);return _._fromStorage(Ps(t))}function Ay(r,t,e=-1){return _._fromStorage($e(r.storage,t,e))}function by(r,t,e=-1){return _._fromStorage(Re(r.storage,t,e))}function hy(r){return _._fromStorage(Ls(r.storage))}function Sy(r){return Tt(r.storage).map(e=>_._fromStorage(e))}function Dy(r){return _._fromStorage(ke(r.storage))}function Ny(r){return _._fromStorage(Gs(r.storage))}function xy(r,t,e){let n=Ws(r.storage,t?.storage,e?.storage);return Array.isArray(n)?n.map(o=>_._fromStorage(o)):_._fromStorage(n)}function wy(r,t,e="left"){return _._fromStorage(qe(r.storage,t.storage,e))}function Iy(r,t){return _._fromStorage(Zs(r.storage,t.storage))}function zy(r,t){let e=Ve(r.storage,t);return typeof e=="number"?e:_._fromStorage(e)}function tn(r,t=0){return _._fromStorage(je(r.storage,t))}function _y(r){return _._fromStorage(Pe(r.storage))}function My(r){return _._fromStorage(Le(r.storage))}function Fy(r){return _._fromStorage(Ge(r.storage))}function vy(r){return _._fromStorage(We(r.storage))}function By(r){return _._fromStorage(Ze(r.storage))}function Ey(r,t=!1,e=!1,n=!1){let o=fr(r.storage,t,e,n);if(o instanceof N)return _._fromStorage(o);let a={values:_._fromStorage(o.values)};return o.indices&&(a.indices=_._fromStorage(o.indices)),o.inverse&&(a.inverse=_._fromStorage(o.inverse)),o.counts&&(a.counts=_._fromStorage(o.counts)),a}function Ty(r,t){return _._fromStorage(Hs(r.storage,t.storage))}function Oy(r,t){return _._fromStorage(Xs(r.storage,t.storage))}function Cy(r,t){return _._fromStorage(He(r.storage,t.storage))}function Uy(r,t){return _._fromStorage(Js(r.storage,t.storage))}function $y(r,t){return _._fromStorage(Qs(r.storage,t.storage))}function Ry(r,t){return _._fromStorage(Ks(r.storage,t.storage))}function ky(r,t="fb"){return _._fromStorage(ri(r.storage,t))}function qy(r){let t=ti(r.storage);return{values:_._fromStorage(t.values),indices:_._fromStorage(t.indices),inverse_indices:_._fromStorage(t.inverse_indices),counts:_._fromStorage(t.counts)}}function Vy(r){let t=ei(r.storage);return{values:_._fromStorage(t.values),counts:_._fromStorage(t.counts)}}function jy(r){let t=ni(r.storage);return{values:_._fromStorage(t.values),inverse_indices:_._fromStorage(t.inverse_indices)}}function Py(r){return _._fromStorage(oi(r.storage))}function Ly(r,t=1,e=-1){return _._fromStorage(Xe(r.storage,t,e))}function Gy(r,t=null,e=null){return _._fromStorage(ai(r.storage,t,e))}function Wy(r,t=1,e=null){let n=si(r.storage,t,e);return Array.isArray(n)?n.map(o=>_._fromStorage(o)):_._fromStorage(n)}function Zy(r,t,e=-1,n=-1,o=-1){return _._fromStorage(ii(r.storage,t.storage,e,n,o))}function Yy(r,t,e=0){return _._fromStorage(ui(r.storage,t?.storage,e))}function Hy(r,t,e=!1){return _._fromStorage(ci(r.storage,t.storage,e))}function Xy(r,t=10,e,n=!1,o){let a=li(r.storage,typeof t=="number"?t:t.storage,e,n,o?.storage);return[_._fromStorage(a.hist),_._fromStorage(a.bin_edges)]}function Jy(r,t,e=10,n,o=!1,a){let i;typeof e=="number"?i=e:Array.isArray(e)&&e.length===2?typeof e[0]=="number"?i=e:i=[e[0].storage,e[1].storage]:i=10;let s=fi(r.storage,t.storage,i,n,o,a?.storage);return[_._fromStorage(s.hist),_._fromStorage(s.x_edges),_._fromStorage(s.y_edges)]}function Qy(r,t=10,e,n=!1,o){let a=mi(r.storage,t,e,n,o?.storage);return[_._fromStorage(a.hist),a.edges.map(i=>_._fromStorage(i))]}function Ky(r,t,e="full"){return _._fromStorage(Qe(r.storage,t.storage,e))}function rd(r,t,e="full"){return _._fromStorage(pi(r.storage,t.storage,e))}function td(r,t,e=!0,n=!1,o){return _._fromStorage(Ke(r.storage,t?.storage,e,n,o))}function ed(r,t,e=!0){return _._fromStorage(yi(r.storage,t?.storage,e))}function nd(r,t=10,e,n){return _._fromStorage(di(r.storage,t,e,n?.storage))}function od(r,t,e=1,n=-1){let o=gi(r.storage,t?.storage,e,n);return typeof o=="number"?o:_._fromStorage(o)}function ad(r,t,e){let n=o=>{let a=r(_._fromStorage(o));return a instanceof _?a.storage:a};return _._fromStorage(Qa(e.storage,t,n))}function sd(r,t,e){let n=(o,a)=>r(_._fromStorage(o),a).storage;return _._fromStorage(Ka(t.storage,n,e))}function id(r,t){return Be(r.storage,t.storage)}function ud(r,t){return rs(r.storage,t.storage)}function cd(r){if(typeof r=="number")return 0;if(r instanceof _)return r.ndim;let t=0,e=r;for(;Array.isArray(e);)t++,e=e[0];return t}function qi(r){if(typeof r=="number")return[];if(r instanceof _)return Array.from(r.shape);let t=[],e=r;for(;Array.isArray(e);)t.push(e.length),e=e[0];return t}function ld(r){return typeof r=="number"?1:r instanceof _?r.size:qi(r).reduce((e,n)=>e*n,1)}var Er={bool:0,uint8:1,int8:2,uint16:3,int16:4,uint32:5,int32:6,uint64:7,int64:8,float32:9,float64:10,complex64:11,complex128:12},sr={bool:"b",uint8:"u",uint16:"u",uint32:"u",uint64:"u",int8:"i",int16:"i",int32:"i",int64:"i",float32:"f",float64:"f",complex64:"c",complex128:"c"};function fd(r,t,e="safe"){let n=r instanceof _?r.dtype:r;if(n===t)return!0;switch(e){case"no":return!1;case"equiv":return n===t;case"safe":return n==="bool"?!0:v(n)?v(t)?Er[n]<=Er[t]:!1:v(t)?!0:(sr[n]==="i"||sr[n]==="u")&&sr[t]==="f"?t==="float32"?["int8","int16","uint8","uint16"].includes(n):t==="float64":sr[n]==="f"&&sr[t]==="f"||(sr[n]==="i"||sr[n]==="u")&&(sr[t]==="i"||sr[t]==="u")?Er[n]<=Er[t]:!1;case"same_kind":{let o=sr[n],a=sr[t];return n==="bool"&&(a==="i"||a==="u"||a==="b")||o===a||(o==="i"||o==="u")&&(a==="i"||a==="u")||o==="f"&&a==="c"}case"unsafe":return!0;default:return!1}}function md(...r){if(r.length===0)return"float64";let t=!1,e=32;for(let n of r){let o=n.dtype;v(o)?(t=!0,o==="complex128"&&(e=64)):(o==="float64"||o==="int64"||o==="uint64")&&(e=64)}return t?e===64?"complex128":"complex64":e===64?"float64":"float32"}function pd(...r){if(r.length===0)return"float64";let t=r.map(n=>n instanceof _?n.dtype:n),e=t[0];for(let n=1;n<t.length;n++)e=Vi(e,t[n]);return e}function Vi(r,t){if(r===t)return r;if(r==="bool")return t;if(t==="bool")return r;if(v(r)||v(t)){if(v(r)&&v(t))return r==="complex128"||t==="complex128"?"complex128":"complex64";let i=v(r)?r:t,s=v(r)?t:r;return i==="complex128"||s==="float64"||s==="int64"||s==="uint64"?"complex128":"complex64"}let e=sr[r]==="f",n=sr[t]==="f";if(e||n){if(r==="float64"||t==="float64")return"float64";if(r==="float32"||t==="float32"){let i=e?t:r;return["int32","int64","uint32","uint64"].includes(i)?"float64":"float32"}}let o=sr[r],a=sr[t];if(o==="i"&&a==="u"||o==="u"&&a==="i"){let i=o==="u"?r:t;if(i==="uint64")return"float64";if(i==="uint32")return"int64";if(i==="uint16")return"int32";if(i==="uint8")return"int16"}return Er[r]>=Er[t]?r:t}function yd(r){return typeof r=="boolean"?"bool":typeof r=="bigint"?r>=0n?r<=255n?"uint8":r<=65535n?"uint16":r<=4294967295n?"uint32":"uint64":r>=-128n&&r<=127n?"int8":r>=-32768n&&r<=32767n?"int16":r>=-2147483648n&&r<=2147483647n?"int32":"int64":!Number.isFinite(r)||!Number.isInteger(r)?"float64":r>=0?r<=255?"uint8":r<=65535?"uint16":r<=4294967295?"uint32":"float64":r>=-128&&r<=127?"int8":r>=-32768&&r<=32767?"int16":r>=-2147483648&&r<=2147483647?"int32":"float64"}function dd(r,t){let e=r instanceof _?r.dtype:r;return t==="integer"?["int8","int16","int32","int64","uint8","uint16","uint32","uint64"].includes(e):t==="signedinteger"?["int8","int16","int32","int64"].includes(e):t==="unsignedinteger"?["uint8","uint16","uint32","uint64"].includes(e):t==="floating"?["float32","float64"].includes(e):t==="complexfloating"?["complex64","complex128"].includes(e):t==="number"||t==="numeric"?!["bool"].includes(e):t==="inexact"?["float32","float64","complex64","complex128"].includes(e):e===t}function gd(r){return{bool:"bool",uint8:"uint8",uint16:"uint16",uint32:"uint32",uint64:"uint64",int8:"int8",int16:"int16",int32:"int32",int64:"int64",float32:"float32",float64:"float64",complex64:"complex64",complex128:"complex128"}[r]||r}function Ad(r,t="GDFgdf",e="d"){let n={b:"int8",B:"uint8",h:"int16",H:"uint16",i:"int32",I:"uint32",l:"int64",L:"uint64",f:"float32",d:"float64",F:"complex64",D:"complex128",g:"float64",G:"complex128","?":"bool"},o={int8:"b",uint8:"B",int16:"h",uint16:"H",int32:"i",uint32:"I",int64:"l",uint64:"L",float32:"f",float64:"d",complex64:"F",complex128:"D",bool:"?"},a=[];for(let l of r)n[l]&&a.push(n[l]);if(a.length===0)return e;let i=a[0];for(let l=1;l<a.length;l++)i=Vi(i,a[l]);let s=new Set(t),u=o[i]||e;if(s.has(u)||s.size===0)return u;let c="gfdGFD";for(let l of c)if(s.has(l))return l;return e}function bd(r){let t=r instanceof _?r.toArray().flat():r;if(t.length===0)return G([1]);let e=[1];for(let n of t){let o=new Array(e.length+1).fill(0);for(let a=0;a<e.length;a++)o[a]+=e[a],o[a+1]-=e[a]*n;e=o}return G(e)}function hd(r,t){let e=r instanceof _?r.toArray().flat():r,n=t instanceof _?t.toArray().flat():t,o=Math.max(e.length,n.length),a=new Array(o).fill(0);for(let i=0;i<e.length;i++)a[o-e.length+i]+=e[i];for(let i=0;i<n.length;i++)a[o-n.length+i]+=n[i];return G(a)}function Sd(r,t=1){let e=r instanceof _?r.toArray().flat():[...r];for(let n=0;n<t;n++){if(e.length<=1)return G([0]);let o=new Array(e.length-1),a=e.length-1;for(let i=0;i<a;i++)o[i]=e[i]*(a-i);e=o}return G(e)}function Dd(r,t){let e=r instanceof _?r.toArray().flat():[...r],n=t instanceof _?t.toArray().flat():[...t];if(n.length===0||n.length===1&&n[0]===0)throw new Error("Division by zero polynomial");for(;e.length>1&&e[0]===0;)e.shift();for(;n.length>1&&n[0]===0;)n.shift();if(e.length<n.length)return[G([0]),G(e)];let o=[],a=[...e];for(;a.length>=n.length;){let i=a[0]/n[0];o.push(i);for(let s=0;s<n.length;s++)a[s]=a[s]-i*n[s];a.shift()}return a.length===0||a.every(i=>Math.abs(i)<1e-14)?[G(o.length>0?o:[0]),G([0])]:[G(o.length>0?o:[0]),G(a)]}function Nd(r,t,e){let n=r.toArray().flat(),o=t.toArray().flat(),a=n.length;if(a!==o.length)throw new Error("x and y must have the same length");if(e<0)throw new Error("Degree must be non-negative");if(a<=e)throw new Error("Need more data points than degree");let i=[];for(let m=0;m<a;m++){let d=[];for(let y=e;y>=0;y--)d.push(Math.pow(n[m],y));i.push(d)}let s=xd(i),u=ji(s,i),c=wd(s,o),l=Id(u,c);return G(l)}function xd(r){let t=r.length,e=r[0].length,n=[];for(let o=0;o<e;o++){let a=[];for(let i=0;i<t;i++)a.push(r[i][o]);n.push(a)}return n}function ji(r,t){let e=r.length,n=r[0].length,o=t[0].length,a=[];for(let i=0;i<e;i++){let s=[];for(let u=0;u<o;u++){let c=0;for(let l=0;l<n;l++)c+=r[i][l]*t[l][u];s.push(c)}a.push(s)}return a}function wd(r,t){let e=[];for(let n=0;n<r.length;n++){let o=0;for(let a=0;a<r[n].length;a++)o+=r[n][a]*t[a];e.push(o)}return e}function Id(r,t){let e=r.length,n=r.map((a,i)=>[...a,t[i]]);for(let a=0;a<e;a++){let i=a;for(let s=a+1;s<e;s++)Math.abs(n[s][a])>Math.abs(n[i][a])&&(i=s);[n[a],n[i]]=[n[i],n[a]];for(let s=a+1;s<e;s++){let u=n[s][a]/n[a][a];for(let c=a;c<=e;c++)n[s][c]=n[s][c]-u*n[a][c]}}let o=new Array(e).fill(0);for(let a=e-1;a>=0;a--){o[a]=n[a][e];for(let i=a+1;i<e;i++)o[a]-=n[a][i]*o[i];o[a]/=n[a][a]}return o}function zd(r,t=1,e=0){let n=r instanceof _?r.toArray().flat():[...r],o=Array.isArray(e)?e:[e];for(let a=0;a<t;a++){let i=n.length,s=new Array(i+1);for(let u=0;u<i;u++)s[u]=n[u]/(i-u);s[i]=o[a]!==void 0?o[a]:0,n=s}return G(n)}function _d(r,t){let e=r instanceof _?r.toArray().flat():r,n=t instanceof _?t.toArray().flat():t,o=e.length+n.length-1,a=new Array(o).fill(0);for(let i=0;i<e.length;i++)for(let s=0;s<n.length;s++)a[i+s]+=e[i]*n[s];return G(a)}function Md(r,t){let e=r instanceof _?r.toArray().flat():r,n=t instanceof _?t.toArray().flat():t,o=Math.max(e.length,n.length),a=new Array(o).fill(0);for(let i=0;i<e.length;i++)a[o-e.length+i]+=e[i];for(let i=0;i<n.length;i++)a[o-n.length+i]-=n[i];return G(a)}function Fd(r,t){let e=r instanceof _?r.toArray().flat():r,n=i=>{let s=0;for(let u of e)s=s*i+u;return s};if(typeof t=="number")return n(t);let a=(t instanceof _?t.toArray().flat():t).map(n);return G(a)}function vd(r){let t=r instanceof _?r.toArray().flat():[...r];for(;t.length>1&&t[0]===0;)t.shift();let e=t.length-1;if(e<=0)return G([]);let n=t[0],o=t.map(u=>u/n);if(e===1)return G([-o[1]]);if(e===2){let c=o[1],l=o[2],m=c*c-4*l;if(m>=0){let d=Math.sqrt(m);return G([(-c+d)/2,(-c-d)/2])}else{let d=-c/2;return G([d,d])}}let a=e,i=[];for(let u=0;u<a;u++){let c=new Array(a).fill(0);u<a-1&&(c[u+1]=1),i.push(c)}for(let u=0;u<a;u++)i[a-1][u]=-o[a-u];let s=Bd(i);return G(s)}function Bd(r){let t=r.length,e=[...r.map(i=>[...i])],n=100,o=1e-10;for(let i=0;i<n;i++){let{Q:s,R:u}=Ed(e);e=ji(u,s);let c=0;for(let l=1;l<t;l++)c=Math.max(c,Math.abs(e[l][l-1]));if(c<o)break}let a=[];for(let i=0;i<t;i++)a.push(e[i][i]);return a}function Ed(r){let t=r.length,e=r.map(o=>[...o]),n=Array.from({length:t},()=>new Array(t).fill(0));for(let o=0;o<t;o++){for(let i=0;i<o;i++){let s=0;for(let u=0;u<t;u++)s+=e[u][i]*r[u][o];n[i][o]=s;for(let u=0;u<t;u++)e[u][o]=e[u][o]-s*e[u][i]}let a=0;for(let i=0;i<t;i++)a+=e[i][o]*e[i][o];if(a=Math.sqrt(a),n[o][o]=a,a>1e-14)for(let i=0;i<t;i++)e[i][o]=e[i][o]/a}return{Q:e,R:n}}var dt=new Uint8Array([147,78,85,77,80,89]),en=["float64","float32","complex128","complex64","int64","int32","int16","int8","uint64","uint32","uint16","uint8","bool"];function nn(){let r=new ArrayBuffer(2);return new DataView(r).setInt16(0,256,!0),new Int16Array(r)[0]===256}var Td={f8:"float64",f4:"float32",c16:"complex128",c8:"complex64",i8:"int64",i4:"int32",i2:"int16",i1:"int8",u8:"uint64",u4:"uint32",u2:"uint16",u1:"uint8",b1:"bool"},Ot={float64:"<f8",float32:"<f4",complex128:"<c16",complex64:"<c8",int64:"<i8",int32:"<i4",int16:"<i2",int8:"|i1",uint64:"<u8",uint32:"<u4",uint16:"<u2",uint8:"|u1",bool:"|b1"},Pi={S:"byte strings",U:"Unicode strings",O:"Python objects",V:"structured arrays (void)",M:"datetime64",m:"timedelta64"};function Li(r){if(r.startsWith("[")||r.startsWith("("))throw new _r(`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 Pi)throw new _r(`Unsupported dtype: ${Pi[n]} (${r}). Use the 'force' parameter to skip arrays with unsupported dtypes.`);let o=Td[e];if(!o)throw new _r(`Unknown or unsupported dtype descriptor: ${r}. Supported types: ${en.join(", ")}. Use the 'force' parameter to skip arrays with unsupported dtypes.`);let a=nn(),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 _r=class extends Error{constructor(t){super(t),this.name="UnsupportedDTypeError"}},cr=class extends Error{constructor(t){super(t),this.name="InvalidNpyError"}};function Ct(r){let t=r instanceof ArrayBuffer?new Uint8Array(r):r,e=on(t);return an(t,e)}function on(r){if(r.length<10)throw new cr("File too small to be a valid NPY file");for(let c=0;c<dt.length;c++)if(r[c]!==dt[c])throw new cr("Invalid NPY magic number");let t=r[6],e=r[7];if(t!==1&&t!==2&&t!==3)throw new cr(`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 cr("File truncated: header extends beyond file");let i=r.slice(o,a),s=new TextDecoder("utf-8").decode(i).trim(),u=Od(s);return{version:{major:t,minor:e},header:u,dataOffset:a}}function an(r,t){let{header:e,dataOffset:n}=t,{dtype:o,needsByteSwap:a,itemsize:i}=Li(e.descr),s=e.shape.reduce((p,g)=>p*g,1),u=s*i,c=r.length-n;if(c<u)throw new cr(`File truncated: expected ${u} bytes of data, got ${c}`);let l=new ArrayBuffer(u);new Uint8Array(l).set(r.subarray(n,n+u));let d=Cd(l,o,s,a,i),y=e.shape,f;if(e.fortran_order&&y.length>1){let p=[...y].reverse(),g=N.fromData(d,p,o);f=Ud(g,p),y=e.shape}else f=N.fromData(d,[...y],o);return new _(f)}function Od(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 cr(`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 cr(`Invalid shape value: ${u}`);return c}),{descr:o,fortran_order:a,shape:s}}function Cd(r,t,e,n,o){let a=P(t);if(!a)throw new cr(`Cannot create array for dtype: ${t}`);let i=v(t),s=i?e*2:e;if(!n)return new a(r,0,s);let u=new Uint8Array(r),c=new Uint8Array(r.byteLength);if(i){let l=o/2;for(let m=0;m<e*2;m++){let d=m*l;for(let y=0;y<l;y++)c[d+y]=u[d+l-1-y]}}else for(let l=0;l<e;l++){let m=l*o;for(let d=0;d<o;d++)c[m+d]=u[m+o-1-d]}return new a(c.buffer,0,s)}function Ud(r,t){let e=t.length,n=r.size,o=r.dtype,a=P(o);if(!a)throw new cr(`Cannot create array for dtype: ${o}`);let i=new a(n),s=[...t].reverse(),u=Gi(t),c=Gi(s),l=new Array(e).fill(0);for(let m=0;m<n;m++){let d=m;for(let f=0;f<e;f++){let p=u[f];l[f]=Math.floor(d/p),d=d%p}let y=0;for(let f=0;f<e;f++)y+=l[e-1-f]*c[f];B(o),i[y]=r.iget(m)}return N.fromData(i,s,o)}function Gi(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 gt(r){let t=r.shape,e=r.dtype,n=Ot[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,d=Rr(e),y=m*d,f=i+l+y,p=new Uint8Array(f);p.set(dt,0),p[6]=3,p[7]=0,p[8]=l&255,p[9]=l>>8&255,p[10]=l>>16&255,p[11]=l>>24&255,p.set(c,i);let g=i+l;return $d(r,p.subarray(g),d),p}function $d(r,t,e){let n=r.dtype,o=r.size,a=nn(),i=B(n),s=v(n),u=r._storage;if(u.isCContiguous&&u.offset===0&&a){let l=u.data,m=new Uint8Array(l.buffer,l.byteOffset,o*e);t.set(m)}else{let l=new DataView(t.buffer,t.byteOffset,t.byteLength);for(let m=0;m<o;m++){let d=u.iget(m),y=m*e;i?Rd(l,y,d,n==="uint64"):s?kd(l,y,d,n):qd(l,y,d,n)}}}function Rd(r,t,e,n){n?r.setBigUint64(t,e,!0):r.setBigInt64(t,e,!0)}function kd(r,t,e,n){n==="complex128"?(r.setFloat64(t,e.re,!0),r.setFloat64(t+8,e.im,!0)):(r.setFloat32(t,e.re,!0),r.setFloat32(t+4,e.im,!0))}function qd(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 Vd=(()=>{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 sn(r){let t=4294967295;for(let e=0;e<r.length;e++)t=Vd[(t^r[e])&255]^t>>>8;return(t^4294967295)>>>0}async function Wi(r){let t=Yi(r),e=new Map;for(let n of t){let o=await jd(n);e.set(n.name,o)}return e}function Zi(r){let t=Yi(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 Yi(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),d=e.getUint32(u+16,!0),y=e.getUint32(u+20,!0),f=e.getUint32(u+24,!0),p=e.getUint16(u+28,!0),g=e.getUint16(u+30,!0),h=e.getUint16(u+32,!0),b=e.getUint32(u+42,!0),A=t.slice(u+46,u+46+p),S=new TextDecoder("utf-8").decode(A);s.push({name:S,compressionMethod:m,crc32:d,compressedSize:y,uncompressedSize:f,localHeaderOffset:b}),u=u+46+p+g+h}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 d=e.getUint16(l+26,!0),y=e.getUint16(l+28,!0),f=l+30+d+y,p=t.slice(f,f+c.compressedSize);n.push({name:c.name,compressedData:p,compressionMethod:c.compressionMethod,crc32:c.crc32,compressedSize:c.compressedSize,uncompressedSize:c.uncompressedSize})}return n}async function jd(r){if(r.compressionMethod===0)return r.compressedData;if(r.compressionMethod===8)return await Pd(r.compressedData);throw new Error(`Unsupported compression method: ${r.compressionMethod}`)}async function Pd(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 ln(r,t={}){let e=t.force??!1,n=await Wi(r);return Hi(n,e)}function fn(r,t={}){let e=t.force??!1,n=Zi(r);return Hi(n,e)}function Hi(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=Ct(i);e.set(s,u)}catch(u){if(u instanceof _r&&t)n.push(s),o.set(s,u.message);else throw u}}return{arrays:e,skipped:n,errors:o}}async function Xi(r,t={}){let e=await ln(r,t);return Object.fromEntries(e.arrays)}function Ji(r,t={}){let e=fn(r,t);return Object.fromEntries(e.arrays)}async function Qi(r,t={}){let e=t.compress??!1,n=[];for(let[d,y]of r){let f=sn(y),p,g;e?(p=await Gd(y),p.length<y.length?g=8:(p=y,g=0)):(p=y,g=0),n.push({name:d,data:y,compressedData:p,crc:f,compressionMethod:g,offset:0})}let o=0;for(let d of n){let y=new TextEncoder().encode(d.name);o+=30+y.length+d.compressedData.length}let a=0;for(let d of n){let y=new TextEncoder().encode(d.name);a+=46+y.length}let s=o+a+22,u=new Uint8Array(s),c=new DataView(u.buffer),l=0;for(let d of n)d.offset=l,l=ru(u,c,l,d);let m=l;for(let d of n)l=tu(u,c,l,d);return eu(c,l,n.length,a,m),u}function Ki(r){let t=[];for(let[l,m]of r){let d=sn(m);t.push({name:l,data:m,compressedData:m,crc:d,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=ru(i,s,u,l);let c=u;for(let l of t)u=tu(i,s,u,l);return eu(s,u,t.length,n,c),i}function ru(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 tu(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 eu(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 Gd(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 nu(r,t={}){let e=au(r);return Qi(e,{compress:t.compress??!1})}function ou(r){let t=au(r);return Ki(t)}function au(r){let t=new Map;if(Array.isArray(r)){for(let n=0;n<r.length;n++){let o=r[n],a=gt(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=gt(o),i=n.endsWith(".npy")?n:`${n}.npy`;t.set(i,a)}return t}var br=624,Ut=397,Xd=2567483615,mn=2147483648,pn=2147483647,hr={mt:new Uint32Array(br),mti:br+1};function uu(r){let t=hr.mt;t[0]=r>>>0;for(let e=1;e<br;e++){let n=t[e-1]^t[e-1]>>>30;t[e]=Math.imul(1812433253,n)+e>>>0}hr.mti=br}function su(){let r=hr.mt,t,e=[0,Xd];if(hr.mti>=br){let n;for(hr.mti===br+1&&uu(5489),n=0;n<br-Ut;n++)t=r[n]&mn|r[n+1]&pn,r[n]=r[n+Ut]^t>>>1^e[t&1];for(;n<br-1;n++)t=r[n]&mn|r[n+1]&pn,r[n]=r[n+(Ut-br)]^t>>>1^e[t&1];t=r[br-1]&mn|r[0]&pn,r[br-1]=r[Ut-1]^t>>>1^e[t&1],hr.mti=0}return t=r[hr.mti++],t^=t>>>11,t^=t<<7&2636928640,t^=t<<15&4022730752,t^=t>>>18,t>>>0}function Y(){let r=su()>>>5,t=su()>>>6;return(r*67108864+t)/9007199254740992}var Jd=2468251765,Qd=1492356589,Kd=1135663077,rg=2337405405,tg=3389127133,eg=1232336661,bn=16,$t=4;function ir(r){return r>>>0}function yn(r,t){return r=ir(ir(r)^t.val),t.val=ir(Math.imul(t.val,Jd)),r=ir(Math.imul(r,t.val)),r=ir(r^r>>>bn),r}function ng(r,t){let e=ir(ir(Math.imul(tg,ir(r)))-ir(Math.imul(eg,ir(t))));return e=ir(e^e>>>bn),e}function og(r){let t=[0,0,0,0],e=[r>>>0],n={val:Kd};for(let o=0;o<$t;o++)o<e.length?t[o]=yn(e[o],n):t[o]=yn(0,n);for(let o=0;o<$t;o++)for(let a=0;a<$t;a++)if(o!==a){let i=yn(t[o],n);t[a]=ng(t[a],i)}return t}function ag(r,t){let e=[],n=rg;for(let o=0;o<t;o++){let a=r[o%$t],i=ir(a^n);n=ir(Math.imul(n,Qd)),i=ir(Math.imul(i,n)),i=ir(i^i>>>bn),e.push(i)}return e}var sg=BigInt("4865540595714422341"),ig=BigInt("2549297995355413924"),ug=ig<<BigInt(64)|sg,dn=BigInt("0xffffffffffffffff"),gn=(BigInt(1)<<BigInt(128))-BigInt(1);function cg(r){let t=r>>BigInt(64),e=r&dn,n=(t^e)&dn,o=Number(r>>BigInt(122));return(n>>BigInt(o)|n<<BigInt(64-o))&dn}function An(r,t){return r*ug+t&gn}function iu(r){let t=og(r),e=ag(t,8),n=BigInt(e[0])|BigInt(e[1])<<BigInt(32),o=BigInt(e[2])|BigInt(e[3])<<BigInt(32),a=BigInt(e[4])|BigInt(e[5])<<BigInt(32),i=BigInt(e[6])|BigInt(e[7])<<BigInt(32),s=n<<BigInt(64)|o,u=(a<<BigInt(64)|i)<<BigInt(1);u=(u|BigInt(1))&gn;let c=BigInt(0);return c=An(c,u),c=c+s&gn,c=An(c,u),{state:c,inc:u}}function lg(r){return r.state=An(r.state,r.inc),cg(r.state)}function fg(r){let e=lg(r)>>BigInt(11);return Number(e)/9007199254740992}var bt=class{constructor(t){if(t!==void 0)this._pcgState=iu(t);else{let e=Math.floor(Math.random()*4294967296);this._pcgState=iu(e)}}_randomFloat(){return fg(this._pcgState)}random(t){if(t===void 0)return this._randomFloat();let e=Array.isArray(t)?t:[t],n=e.reduce((i,s)=>i*s,1),o=N.zeros(e,"float64"),a=o.data;for(let i=0;i<n;i++)a[i]=this._randomFloat();return o}integers(t,e,n){if(e===void 0&&(e=t,t=0),n===void 0)return Math.floor(this._randomFloat()*(e-t))+t;let o=Array.isArray(n)?n:[n],a=o.reduce((c,l)=>c*l,1),i=N.zeros(o,"int64"),s=i.data,u=e-t;for(let c=0;c<a;c++)s[c]=BigInt(Math.floor(this._randomFloat()*u)+t);return i}standard_normal(t){if(t===void 0)return $r(this._randomFloat.bind(this));let e=Array.isArray(t)?t:[t],n=e.reduce((i,s)=>i*s,1),o=N.zeros(e,"float64"),a=o.data;for(let i=0;i<n;i+=2){let[s,u]=ht(this._randomFloat.bind(this));a[i]=s,i+1<n&&(a[i+1]=u)}return o}normal(t=0,e=1,n){if(n===void 0)return $r(this._randomFloat.bind(this))*e+t;let o=Array.isArray(n)?n:[n],a=o.reduce((u,c)=>u*c,1),i=N.zeros(o,"float64"),s=i.data;for(let u=0;u<a;u+=2){let[c,l]=ht(this._randomFloat.bind(this));s[u]=c*e+t,u+1<a&&(s[u+1]=l*e+t)}return i}uniform(t=0,e=1,n){if(n===void 0)return this._randomFloat()*(e-t)+t;let o=Array.isArray(n)?n:[n],a=o.reduce((c,l)=>c*l,1),i=N.zeros(o,"float64"),s=i.data,u=e-t;for(let c=0;c<a;c++)s[c]=this._randomFloat()*u+t;return i}choice(t,e,n=!0,o){return xu(t,e,n,o,this._randomFloat.bind(this))}permutation(t){return Iu(t,this._randomFloat.bind(this))}shuffle(t){_u(t,this._randomFloat.bind(this))}exponential(t=1,e){if(e===void 0)return-Math.log(1-this._randomFloat())*t;let n=Array.isArray(e)?e:[e],o=n.reduce((s,u)=>s*u,1),a=N.zeros(n,"float64"),i=a.data;for(let s=0;s<o;s++)i[s]=-Math.log(1-this._randomFloat())*t;return a}poisson(t=1,e){if(e===void 0)return Rt(t,this._randomFloat.bind(this));let n=Array.isArray(e)?e:[e],o=n.reduce((s,u)=>s*u,1),a=N.zeros(n,"int64"),i=a.data;for(let s=0;s<o;s++)i[s]=BigInt(Rt(t,this._randomFloat.bind(this)));return a}binomial(t,e,n){if(n===void 0)return kt(t,e,this._randomFloat.bind(this));let o=Array.isArray(n)?n:[n],a=o.reduce((u,c)=>u*c,1),i=N.zeros(o,"int64"),s=i.data;for(let u=0;u<a;u++)s[u]=BigInt(kt(t,e,this._randomFloat.bind(this)));return i}};function cu(r){return new bt(r)}function lu(r){r==null&&(r=Math.floor(Date.now()^Math.random()*4294967296)),uu(r>>>0)}function fu(){return{mt:Array.from(hr.mt),mti:hr.mti}}function mu(r){hr.mt=new Uint32Array(r.mt),hr.mti=r.mti}function $r(r){let t,e;do t=r(),e=r();while(t===0);return Math.sqrt(-2*Math.log(t))*Math.cos(2*Math.PI*e)}function ht(r){let t,e;do t=r(),e=r();while(t===0);let n=Math.sqrt(-2*Math.log(t)),o=2*Math.PI*e;return[n*Math.cos(o),n*Math.sin(o)]}function Rt(r,t){if(r<30){let e=Math.exp(-r),n=0,o=1;do n++,o*=t();while(o>e);return n-1}else{let e=$r(t);return Math.max(0,Math.round(r+Math.sqrt(r)*e))}}function kt(r,t,e){if(r*t<10&&r*(1-t)<10){let n=0;for(let o=0;o<r;o++)e()<t&&n++;return n}else{let n=r*t,o=Math.sqrt(r*t*(1-t)),a=$r(e);return Math.max(0,Math.min(r,Math.round(n+o*a)))}}function pu(r){if(r===void 0)return Y();let t=Array.isArray(r)?r:[r],e=t.reduce((a,i)=>a*i,1),n=N.zeros(t,"float64"),o=n.data;for(let a=0;a<e;a++)o[a]=Y();return n}function yu(...r){if(r.length===0)return Y();let t=r.reduce((o,a)=>o*a,1),e=N.zeros(r,"float64"),n=e.data;for(let o=0;o<t;o++)n[o]=Y();return e}function du(...r){if(r.length===0)return $r(Y);let t=r.reduce((o,a)=>o*a,1),e=N.zeros(r,"float64"),n=e.data;for(let o=0;o<t;o+=2){let[a,i]=ht(Y);n[o]=a,o+1<t&&(n[o+1]=i)}return e}function gu(r,t,e,n="int64"){t==null&&(t=r,r=0);let o=t-r;if(e===void 0)return Math.floor(Y()*o)+r;let a=Array.isArray(e)?e:[e],i=a.reduce((c,l)=>c*l,1),s=N.zeros(a,n),u=s.data;if(B(n)){let c=u;for(let l=0;l<i;l++)c[l]=BigInt(Math.floor(Y()*o)+r)}else{let c=u;for(let l=0;l<i;l++)c[l]=Math.floor(Y()*o)+r}return s}function Au(r=0,t=1,e){if(e===void 0)return Y()*(t-r)+r;let n=Array.isArray(e)?e:[e],o=n.reduce((u,c)=>u*c,1),a=N.zeros(n,"float64"),i=a.data,s=t-r;for(let u=0;u<o;u++)i[u]=Y()*s+r;return a}function bu(r=0,t=1,e){if(e===void 0)return $r(Y)*t+r;let n=Array.isArray(e)?e:[e],o=n.reduce((s,u)=>s*u,1),a=N.zeros(n,"float64"),i=a.data;for(let s=0;s<o;s+=2){let[u,c]=ht(Y);i[s]=u*t+r,s+1<o&&(i[s+1]=c*t+r)}return a}function hu(r){if(r===void 0)return $r(Y);let t=Array.isArray(r)?r:[r],e=t.reduce((a,i)=>a*i,1),n=N.zeros(t,"float64"),o=n.data;for(let a=0;a<e;a+=2){let[i,s]=ht(Y);o[a]=i,a+1<e&&(o[a+1]=s)}return n}function Su(r=1,t){if(t===void 0)return-Math.log(1-Y())*r;let e=Array.isArray(t)?t:[t],n=e.reduce((i,s)=>i*s,1),o=N.zeros(e,"float64"),a=o.data;for(let i=0;i<n;i++)a[i]=-Math.log(1-Y())*r;return o}function Du(r=1,t){if(t===void 0)return Rt(r,Y);let e=Array.isArray(t)?t:[t],n=e.reduce((i,s)=>i*s,1),o=N.zeros(e,"int64"),a=o.data;for(let i=0;i<n;i++)a[i]=BigInt(Rt(r,Y));return o}function Nu(r,t,e){if(e===void 0)return kt(r,t,Y);let n=Array.isArray(e)?e:[e],o=n.reduce((s,u)=>s*u,1),a=N.zeros(n,"int64"),i=a.data;for(let s=0;s<o;s++)i[s]=BigInt(kt(r,t,Y));return a}function xu(r,t,e=!0,n,o=Y){let a;if(typeof r=="number")a=Array.from({length:r},(d,y)=>y);else{let d=r.size;a=[];for(let y=0;y<d;y++)a.push(Number(r.iget(y)))}let i=a.length;if(i===0)throw new Error("cannot take a sample from an empty sequence");let s;if(n!==void 0){if(Array.isArray(n))s=n;else{let y=n.size;s=[];for(let f=0;f<y;f++)s.push(Number(n.iget(f)))}if(s.length!==i)throw new Error("p and a must have the same size");let d=s.reduce((y,f)=>y+f,0);Math.abs(d-1)>1e-10&&(s=s.map(y=>y/d))}if(t===void 0){if(s){let d=o(),y=0;for(let f=0;f<i;f++)if(y+=s[f],d<y)return a[f];return a[i-1]}return a[Math.floor(o()*i)]}let u=Array.isArray(t)?t:[t],c=u.reduce((d,y)=>d*y,1);if(!e&&c>i)throw new Error("cannot take a larger sample than population when replace=false");let l=N.zeros(u,"float64"),m=l.data;if(e)if(s){let d=new Array(i);d[0]=s[0];for(let y=1;y<i;y++)d[y]=d[y-1]+s[y];for(let y=0;y<c;y++){let f=o(),p=0;for(;p<i-1&&f>=d[p];)p++;m[y]=a[p]}}else for(let d=0;d<c;d++)m[d]=a[Math.floor(o()*i)];else{let d=[...a],y=s?[...s]:void 0;for(let f=0;f<c;f++){let p;if(y){let g=y.reduce((A,S)=>A+S,0),h=o()*g,b=0;p=0;for(let A=0;A<d.length;A++)if(b+=y[A],h<b){p=A;break}p===0&&h>=b&&(p=d.length-1)}else p=Math.floor(o()*d.length);m[f]=d[p],d.splice(p,1),y&&y.splice(p,1)}}return l}function wu(r,t,e=!0,n){return xu(r,t,e,n,Y)}function Iu(r,t=Y){let e;if(typeof r=="number"){let o=new Float64Array(r);for(let a=0;a<r;a++)o[a]=a;e=N.fromData(o,[r],"float64")}else e=r.copy();let n=e.size;for(let o=n-1;o>0;o--){let a=Math.floor(t()*(o+1)),i=e.iget(o);e.iset(o,e.iget(a)),e.iset(a,i)}return e}function zu(r){return Iu(r,Y)}function _u(r,t=Y){let e=r.size;for(let n=e-1;n>0;n--){let o=Math.floor(t()*(n+1)),a=r.iget(n);r.iset(n,r.iget(o)),r.iset(o,a)}}function Mu(r){_u(r,Y)}function gr(r){return r&&typeof r=="object"&&"_data"in r&&"_shape"in r?_._fromStorage(r):r}var gb={seed:lu,random:r=>gr(pu(r)),rand:(...r)=>gr(yu(...r)),randn:(...r)=>gr(du(...r)),randint:(r,t,e,n)=>gr(gu(r,t,e,n)),uniform:(r,t,e)=>gr(Au(r,t,e)),normal:(r,t,e)=>gr(bu(r,t,e)),standard_normal:r=>gr(hu(r)),exponential:(r,t)=>gr(Su(r,t)),poisson:(r,t)=>gr(Du(r,t)),binomial:(r,t,e)=>gr(Nu(r,t,e)),choice:(r,t,e,n)=>gr(wu(r,t,e,n)),permutation:r=>gr(zu(r)),shuffle:Mu,get_state:fu,set_state:mu,default_rng:cu,Generator:bt},Ab="0.12.0";export{E as Complex,Ot as DTYPE_TO_DESCR,cr as InvalidNpyError,_ as NDArray,en as SUPPORTED_DTYPES,_r as UnsupportedDTypeError,Ab as __version__,Ii as abs,Ii as absolute,Mi as acos,Ei as acosh,$i as amax,Ri as amin,Tp as angle,Qf as append,ad as apply_along_axis,sd as apply_over_axes,al as arange,Mi as arccos,Ei as arccosh,_i as arcsin,Bi as arcsinh,Fi as arctan,vi as arctan2,Ti as arctanh,by as argpartition,dy as argsort,Dy as argwhere,tn as around,G as array,fm as array_equal,mm as array_equiv,xf as array_split,Al as asanyarray,yt as asarray,ll as asarray_chkfinite,bl as ascontiguousarray,hl as asfortranarray,_i as asin,Bi as asinh,Fi as atan,vi as atan2,Ti as atanh,Gf as atleast_1d,Wf as atleast_2d,Zf as atleast_3d,Am as average,Yy as bincount,um as bindex,tp as bitwise_and,lp as bitwise_count,fp as bitwise_invert,mp as bitwise_left_shift,op as bitwise_not,ep as bitwise_or,pp as bitwise_right_shift,np as bitwise_xor,Df as block,nm as broadcast_arrays,om as broadcast_shapes,em as broadcast_to,Of as byteswap,fd as can_cast,Em as cbrt,_y as ceil,lm as choose,Gm as clip,Hf as column_stack,md as common_type,Kp as compress,hf as concat,Ur as concatenate,ki as conj,Ep as conjugate,rd as convolve,ml as copy,Np as copysign,cm as copyto,ed as corrcoef,Ky as correlate,nf as cos,mf as cosh,zy as count_nonzero,td as cov,Zy as cross,Ui as cumprod,Ci as cumsum,Ui as cumulative_prod,Ci as cumulative_sum,cf as deg2rad,sf as degrees,Kf as delete,xi as diag,ny as diag_indices,oy as diag_indices_from,Sl as diagflat,Xl as diagonal,Ly as diff,Hy as digitize,zi as divide,Om as divmod,Yl as dot,Yf as dsplit,bf as dstack,Gy as ediff1d,jp as einsum,Di as empty,dl as empty_like,Tl as exp,Ol as exp2,kf as expand_dims,Cl as expm1,Iy as extract,Si as eye,Tm as fabs,vf as fill,ey as fill_diagonal,My as fix,Ny as flatnonzero,Ff as flatten,rn as flip,qf as fliplr,Vf as flipud,Rm as float_power,Fy as floor,Gl as floor_divide,Ym as fmax,Hm as fmin,km as fmod,qm as frexp,_l as frombuffer,Ml as fromfile,Dl as fromfunction,Fl as fromiter,vl as fromstring,Ni as full,gl as full_like,Vm as gcd,ul as geomspace,Ee as geterr,Wy as gradient,$m as heaviside,Xy as histogram,Jy as histogram2d,nd as histogram_bin_edges,Qy as histogramdd,If as hsplit,Af as hstack,af as hypot,rp as i0,cl as identity,im as iindex,Bp as imag,Ty as in1d,ly as indices,Kl as inner,rm as insert,Jm as interp,Oy as intersect1d,ap as invert,zp as iscomplex,_p as iscomplexobj,qp as isdtype,bp as isfinite,Up as isfortran,Cy as isin,hp as isinf,Sp as isnan,Dp as isnat,Op as isneginf,Cp as isposinf,Mp as isreal,Fp as isrealobj,Rp as isscalar,dd as issubdtype,Bf as item,kp as iterable,fy as ix_,Jl as kron,jm as lcm,Pm as ldexp,sp as left_shift,gy as lexsort,Hp as linalg,sl as linspace,Xi as loadNpz,Ji as loadNpzSync,Ul as log,Rl as log10,kl as log1p,$l as log2,ql as logaddexp,Vl as logaddexp2,yp as logical_and,gp as logical_not,dp as logical_or,Ap as logical_xor,il as logspace,cy as mask_indices,Gp as matrix_transpose,Zp as matvec,$i as max,Wm as maximum,id as may_share_memory,ym as median,Nl as meshgrid,Ri as min,yd as min_scalar_type,Zm as minimum,Ad as mintypecode,Ll as mod,Lm as modf,df as moveaxis,Xm as nan_to_num,zm as nanargmax,Im as nanargmin,Mm as nancumprod,_m as nancumsum,wm as nanmax,Sm as nanmean,Fm as nanmedian,xm as nanmin,Bm as nanpercentile,hm as nanprod,vm as nanquantile,Nm as nanstd,bm as nansum,Dm as nanvar,cd as ndim,jl as negative,wp as nextafter,Sy as nonzero,Ai as ones,yl as ones_like,rf as outer,up as packbits,tm as pad,Ct as parseNpy,an as parseNpyData,on as parseNpyHeader,ln as parseNpz,fn as parseNpzSync,Ay as partition,dm as percentile,Wp as permute_dims,ty as place,bd as poly,hd as polyadd,Sd as polyder,Dd as polydiv,Nd as polyfit,zd as polyint,_d as polymul,Md as polysub,Fd as polyval,Wl as positive,wi as pow,wi as power,Vp as promote_types,pm as ptp,sm as put,Jp as put_along_axis,Qp as putmask,gm as quantile,lf as rad2deg,uf as radians,gb as random,Mf as ravel,my as ravel_multi_index,vp as real,$p as real_if_close,Zl as reciprocal,Um as remainder,_f as repeat,fl as require,$f as reshape,Jf as resize,pd as result_type,ip as right_shift,vy as rint,Pf as roll,Lf as rollaxis,vd as roots,jf as rot90,tn as round,tn as round_,Xf as row_stack,wy as searchsorted,ry as select,gt as serializeNpy,nu as serializeNpz,ou as serializeNpzSync,Uy as setdiff1d,ts as seterr,$y as setxor1d,qi as shape,ud as shares_memory,Pl as sign,xp as signbit,ef as sin,Km as sinc,ff as sinh,ld as size,yy as sort,hy as sort_complex,Ip as spacing,Nf as split,El as sqrt,Cm as square,Rf as squeeze,gf as stack,yf as swapaxes,am as take,Xp as take_along_axis,of as tan,pf as tanh,tf as tensordot,zf as tile,Tf as tobytes,Uf as tofile,Ef as tolist,Hl as trace,Ql as transpose,od as trapezoid,xl as tri,wl as tril,ay as tril_indices,sy as tril_indices_from,ky as trim_zeros,Il as triu,iy as triu_indices,uy as triu_indices_from,zi as true_divide,By as trunc,gd as typename,Ry as union1d,Ey as unique,qy as unique_all,Vy as unique_counts,jy as unique_inverse,Py as unique_values,cp as unpackbits,py as unravel_index,Sf as unstack,Qm as unwrap,zl as vander,Pp as vdot,Lp as vecdot,Yp as vecmat,Cf as view,wf as vsplit,Oi as vstack,xy as where,zr as zeros,pl as zeros_like};