@cortex-js/compute-engine 0.29.1 → 0.30.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/compute-engine.esm.js +28319 -24614
- package/dist/compute-engine.min.esm.js +70 -68
- package/dist/compute-engine.min.umd.js +131 -0
- package/dist/{compute-engine.cjs → compute-engine.umd.js} +29615 -25910
- package/dist/math-json.esm.js +22 -294
- package/dist/math-json.min.esm.js +22 -294
- package/dist/math-json.min.umd.js +4 -0
- package/dist/math-json.umd.js +141 -0
- package/dist/types/common/ansi-codes.d.ts +1 -1
- package/dist/types/common/configuration-change.d.ts +28 -0
- package/dist/types/common/fuzzy-string-match.d.ts +1 -1
- package/dist/types/common/grapheme-splitter.d.ts +1 -1
- package/dist/types/common/interruptible.d.ts +1 -1
- package/dist/types/common/one-of.d.ts +1 -1
- package/dist/types/common/signals.d.ts +1 -1
- package/dist/types/common/type/boxed-type.d.ts +20 -4
- package/dist/types/common/type/parse.d.ts +4 -4
- package/dist/types/common/type/primitive.d.ts +3 -2
- package/dist/types/common/type/serialize.d.ts +1 -1
- package/dist/types/common/type/subtype.d.ts +1 -1
- package/dist/types/common/type/types.d.ts +91 -25
- package/dist/types/common/type/utils.d.ts +2 -1
- package/dist/types/common/utils.d.ts +1 -1
- package/dist/types/compute-engine/assume.d.ts +2 -2
- package/dist/types/compute-engine/boxed-expression/abstract-boxed-expression.d.ts +72 -73
- package/dist/types/compute-engine/boxed-expression/apply.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/arithmetic-add.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/arithmetic-mul-div.d.ts +2 -2
- package/dist/types/compute-engine/boxed-expression/arithmetic-power.d.ts +19 -1
- package/dist/types/compute-engine/boxed-expression/ascii-math.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/box.d.ts +6 -6
- package/dist/types/compute-engine/boxed-expression/boxed-dictionary.d.ts +42 -0
- package/dist/types/compute-engine/boxed-expression/boxed-function.d.ts +48 -27
- package/dist/types/compute-engine/boxed-expression/boxed-number.d.ts +17 -5
- package/dist/types/compute-engine/boxed-expression/{boxed-function-definition.d.ts → boxed-operator-definition.d.ts} +12 -12
- package/dist/types/compute-engine/boxed-expression/boxed-patterns.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-string.d.ts +7 -8
- package/dist/types/compute-engine/boxed-expression/boxed-symbol.d.ts +91 -52
- package/dist/types/compute-engine/boxed-expression/boxed-tensor.d.ts +22 -25
- package/dist/types/compute-engine/boxed-expression/boxed-value-definition.d.ts +46 -0
- package/dist/types/compute-engine/boxed-expression/cache.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/canonical-utils.d.ts +5 -0
- package/dist/types/compute-engine/boxed-expression/canonical.d.ts +2 -2
- package/dist/types/compute-engine/boxed-expression/compare.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/expand.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/expression-map.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/factor.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/flatten.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/hold.d.ts +2 -2
- package/dist/types/compute-engine/boxed-expression/match.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/negate.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/numerics.d.ts +30 -3
- package/dist/types/compute-engine/boxed-expression/order.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/polynomials.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/product.d.ts +2 -2
- package/dist/types/compute-engine/boxed-expression/rules.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/serialize.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/sgn.d.ts +41 -1
- package/dist/types/compute-engine/boxed-expression/simplify.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/solve.d.ts +3 -1
- package/dist/types/compute-engine/boxed-expression/terms.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/trigonometry.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/utils.d.ts +23 -23
- package/dist/types/compute-engine/boxed-expression/validate.d.ts +2 -1
- package/dist/types/compute-engine/collection-utils.d.ts +22 -57
- package/dist/types/compute-engine/compile.d.ts +61 -10
- package/dist/types/compute-engine/cost-function.d.ts +1 -1
- package/dist/types/compute-engine/function-utils.d.ts +46 -29
- package/dist/types/compute-engine/global-types.d.ts +1432 -893
- package/dist/types/compute-engine/index.d.ts +154 -124
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-algebra.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-arithmetic.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-calculus.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-complex.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-core.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-linear-algebra.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-logic.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-other.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-relational-operators.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-sets.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-statistics.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-symbols.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-trigonometry.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions.d.ts +3 -3
- package/dist/types/compute-engine/latex-syntax/parse-symbol.d.ts +21 -0
- package/dist/types/compute-engine/latex-syntax/parse.d.ts +14 -12
- package/dist/types/compute-engine/latex-syntax/serialize-number.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/serializer-style.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/serializer.d.ts +2 -2
- package/dist/types/compute-engine/latex-syntax/tokenizer.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/types.d.ts +51 -39
- package/dist/types/compute-engine/latex-syntax/utils.d.ts +5 -0
- package/dist/types/compute-engine/library/arithmetic.d.ts +2 -2
- package/dist/types/compute-engine/library/calculus.d.ts +2 -2
- package/dist/types/compute-engine/library/collections.d.ts +3 -3
- package/dist/types/compute-engine/library/combinatorics.d.ts +2 -0
- package/dist/types/compute-engine/library/complex.d.ts +2 -2
- package/dist/types/compute-engine/library/control-structures.d.ts +2 -2
- package/dist/types/compute-engine/library/core.d.ts +2 -2
- package/dist/types/compute-engine/library/invisible-operator.d.ts +1 -1
- package/dist/types/compute-engine/library/library.d.ts +5 -5
- package/dist/types/compute-engine/library/linear-algebra.d.ts +2 -2
- package/dist/types/compute-engine/library/logic.d.ts +2 -2
- package/dist/types/compute-engine/library/number-theory.d.ts +2 -0
- package/dist/types/compute-engine/library/polynomials.d.ts +2 -2
- package/dist/types/compute-engine/library/random-expression.d.ts +1 -1
- package/dist/types/compute-engine/library/relational-operator.d.ts +2 -2
- package/dist/types/compute-engine/library/sets.d.ts +2 -2
- package/dist/types/compute-engine/library/statistics.d.ts +2 -2
- package/dist/types/compute-engine/library/trigonometry.d.ts +2 -2
- package/dist/types/compute-engine/library/utils.d.ts +24 -2
- package/dist/types/compute-engine/numeric-value/big-numeric-value.d.ts +3 -4
- package/dist/types/compute-engine/numeric-value/exact-numeric-value.d.ts +3 -3
- package/dist/types/compute-engine/numeric-value/machine-numeric-value.d.ts +3 -4
- package/dist/types/compute-engine/numeric-value/types.d.ts +7 -5
- package/dist/types/compute-engine/numerics/bigint.d.ts +1 -1
- package/dist/types/compute-engine/numerics/expression.d.ts +1 -1
- package/dist/types/compute-engine/numerics/interval.d.ts +1 -1
- package/dist/types/compute-engine/numerics/monte-carlo.d.ts +4 -19
- package/dist/types/compute-engine/numerics/numeric-bigint.d.ts +1 -1
- package/dist/types/compute-engine/numerics/numeric-bignum.d.ts +1 -1
- package/dist/types/compute-engine/numerics/numeric-complex.d.ts +1 -1
- package/dist/types/compute-engine/numerics/numeric.d.ts +9 -1
- package/dist/types/compute-engine/numerics/primes.d.ts +1 -1
- package/dist/types/compute-engine/numerics/rationals.d.ts +1 -1
- package/dist/types/compute-engine/numerics/richardson.d.ts +1 -1
- package/dist/types/compute-engine/numerics/special-functions.d.ts +1 -1
- package/dist/types/compute-engine/numerics/statistics.d.ts +1 -1
- package/dist/types/compute-engine/numerics/strings.d.ts +1 -1
- package/dist/types/compute-engine/numerics/types.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/antiderivative.d.ts +3 -0
- package/dist/types/compute-engine/symbolic/derivative.d.ts +2 -4
- package/dist/types/compute-engine/symbolic/distribute.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-rules.d.ts +1 -1
- package/dist/types/compute-engine/tensor/tensor-fields.d.ts +5 -46
- package/dist/types/compute-engine/tensor/tensors.d.ts +4 -14
- package/dist/types/compute-engine/types.d.ts +1 -4
- package/dist/types/compute-engine.d.ts +1 -1
- package/dist/types/math-json/symbols.d.ts +11 -0
- package/dist/types/math-json/types.d.ts +19 -11
- package/dist/types/math-json/utils.d.ts +18 -9
- package/dist/types/math-json.d.ts +2 -2
- package/package.json +9 -11
- package/dist/compute-engine.min.cjs +0 -129
- package/dist/math-json.cjs +0 -413
- package/dist/math-json.min.cjs +0 -6
- package/dist/types/common/json5.d.ts +0 -3
- package/dist/types/compute-engine/boxed-expression/boxed-symbol-definition.d.ts +0 -64
- package/dist/types/compute-engine/latex-syntax/parse-identifier.d.ts +0 -21
- package/dist/types/math-json/identifiers.d.ts +0 -11
|
@@ -1,17 +1,41 @@
|
|
|
1
|
-
/** Compute Engine 0.
|
|
2
|
-
var
|
|
3
|
-
`||(a==="+"?r++:a==="-"?s++:a==="i"||a==="I"?(r+s===0&&Ti(),t[o+1]!==" "&&!isNaN(Number(t[o+1]))?(i.im+=parseFloat((s%2?"-":"")+t[o+1]),o++):i.im+=parseFloat((s%2?"-":"")+"1"),r=s=0):((r+s===0||isNaN(Number(a)))&&Ti(),t[o+1]==="i"||t[o+1]==="I"?(i.im+=parseFloat((s%2?"-":"")+a),o++):i.re+=parseFloat((s%2?"-":"")+a),r=s=0))}r+s>0&&Ti();break;case"number":i.im=0,i.re=e;break;default:Ti()}return isNaN(i.re)||isNaN(i.im),i},$=class e{constructor(n,i){this.re=0,this.im=0;var t=fc(n,i);this.re=t.re,this.im=t.im}sign(){var n=this.abs();return new e(this.re/n,this.im/n)}add(n,i){var t=new e(n,i);return this.isInfinite()&&t.isInfinite()?e.NAN:this.isInfinite()||t.isInfinite()?e.INFINITY:new e(this.re+t.re,this.im+t.im)}sub(n,i){var t=new e(n,i);return this.isInfinite()&&t.isInfinite()?e.NAN:this.isInfinite()||t.isInfinite()?e.INFINITY:new e(this.re-t.re,this.im-t.im)}mul(n,i){var t=new e(n,i);return this.isInfinite()&&t.isZero()||this.isZero()&&t.isInfinite()?e.NAN:this.isInfinite()||t.isInfinite()?e.INFINITY:t.im===0&&this.im===0?new e(this.re*t.re,0):new e(this.re*t.re-this.im*t.im,this.re*t.im+this.im*t.re)}div(n,i){var t=new e(n,i);if(this.isZero()&&t.isZero()||this.isInfinite()&&t.isInfinite())return e.NAN;if(this.isInfinite()||t.isZero())return e.INFINITY;if(this.isZero()||t.isInfinite())return e.ZERO;n=this.re,i=this.im;var r=t.re,s=t.im,o,a;return s===0?new e(n/r,i/r):Math.abs(r)<Math.abs(s)?(a=r/s,o=r*a+s,new e((n*a+i)/o,(i*a-n)/o)):(a=s/r,o=s*a+r,new e((n+i*a)/o,(i-n*a)/o))}pow(n,i){var t=new e(n,i);if(n=this.re,i=this.im,t.isZero())return e.ONE;if(t.im===0){if(i===0&&n>0)return new e(Math.pow(n,t.re),0);if(n===0)switch((t.re%4+4)%4){case 0:return new e(Math.pow(i,t.re),0);case 1:return new e(0,Math.pow(i,t.re));case 2:return new e(-Math.pow(i,t.re),0);case 3:return new e(0,-Math.pow(i,t.re))}}if(n===0&&i===0&&t.re>0&&t.im>=0)return e.ZERO;var r=Math.atan2(i,n),s=ms(n,i);return n=Math.exp(t.re*s-t.im*r),i=t.im*s+t.re*r,new e(n*Math.cos(i),n*Math.sin(i))}sqrt(){var n=this.re,i=this.im,t=this.abs(),r,s;if(n>=0){if(i===0)return new e(Math.sqrt(n),0);r=.5*Math.sqrt(2*(t+n))}else r=Math.abs(i)/Math.sqrt(2*(t-n));return n<=0?s=.5*Math.sqrt(2*(t-n)):s=Math.abs(i)/Math.sqrt(2*(t+n)),new e(r,i<0?-s:s)}exp(){var n=Math.exp(this.re);return this.im,new e(n*Math.cos(this.im),n*Math.sin(this.im))}expm1(){var n=this.re,i=this.im;return new e(Math.expm1(n)*Math.cos(i)+uc(i),Math.exp(n)*Math.sin(i))}log(){var n=this.re,i=this.im;return i===0&&n>0,new e(ms(n,i),Math.atan2(i,n))}abs(){return lc(this.re,this.im)}arg(){return Math.atan2(this.im,this.re)}sin(){var n=this.re,i=this.im;return new e(Math.sin(n)*Se(i),Math.cos(n)*Ue(i))}cos(){var n=this.re,i=this.im;return new e(Math.cos(n)*Se(i),-Math.sin(n)*Ue(i))}tan(){var n=2*this.re,i=2*this.im,t=Math.cos(n)+Se(i);return new e(Math.sin(n)/t,Ue(i)/t)}cot(){var n=2*this.re,i=2*this.im,t=Math.cos(n)-Se(i);return new e(-Math.sin(n)/t,Ue(i)/t)}sec(){var n=this.re,i=this.im,t=.5*Se(2*i)+.5*Math.cos(2*n);return new e(Math.cos(n)*Se(i)/t,Math.sin(n)*Ue(i)/t)}csc(){var n=this.re,i=this.im,t=.5*Se(2*i)-.5*Math.cos(2*n);return new e(Math.sin(n)*Se(i)/t,-Math.cos(n)*Ue(i)/t)}asin(){var n=this.re,i=this.im,t=new e(i*i-n*n+1,-2*n*i).sqrt(),r=new e(t.re-i,t.im+n).log();return new e(r.im,-r.re)}acos(){var n=this.re,i=this.im,t=new e(i*i-n*n+1,-2*n*i).sqrt(),r=new e(t.re-i,t.im+n).log();return new e(Math.PI/2-r.im,r.re)}atan(){var n=this.re,i=this.im;if(n===0){if(i===1)return new e(0,1/0);if(i===-1)return new e(0,-1/0)}var t=n*n+(1-i)*(1-i),r=new e((1-i*i-n*n)/t,-2*n/t).log();return new e(-.5*r.im,.5*r.re)}acot(){var n=this.re,i=this.im;if(i===0)return new e(Math.atan2(1,n),0);var t=n*n+i*i;return t!==0?new e(n/t,-i/t).atan():new e(n!==0?n/0:0,i!==0?-i/0:0).atan()}asec(){var n=this.re,i=this.im;if(n===0&&i===0)return new e(0,1/0);var t=n*n+i*i;return t!==0?new e(n/t,-i/t).acos():new e(n!==0?n/0:0,i!==0?-i/0:0).acos()}acsc(){var n=this.re,i=this.im;if(n===0&&i===0)return new e(Math.PI/2,1/0);var t=n*n+i*i;return t!==0?new e(n/t,-i/t).asin():new e(n!==0?n/0:0,i!==0?-i/0:0).asin()}sinh(){var n=this.re,i=this.im;return new e(Ue(n)*Math.cos(i),Se(n)*Math.sin(i))}cosh(){var n=this.re,i=this.im;return new e(Se(n)*Math.cos(i),Ue(n)*Math.sin(i))}tanh(){var n=2*this.re,i=2*this.im,t=Se(n)+Math.cos(i);return new e(Ue(n)/t,Math.sin(i)/t)}coth(){var n=2*this.re,i=2*this.im,t=Se(n)-Math.cos(i);return new e(Ue(n)/t,-Math.sin(i)/t)}csch(){var n=this.re,i=this.im,t=Math.cos(2*i)-Se(2*n);return new e(-2*Ue(n)*Math.cos(i)/t,2*Se(n)*Math.sin(i)/t)}sech(){var n=this.re,i=this.im,t=Math.cos(2*i)+Se(2*n);return new e(2*Se(n)*Math.cos(i)/t,-2*Ue(n)*Math.sin(i)/t)}asinh(){var n=this.im;this.im=-this.re,this.re=n;var i=this.asin();return this.re=-this.im,this.im=n,n=i.re,i.re=-i.im,i.im=n,i}acosh(){var n=this.acos();if(n.im<=0){var i=n.re;n.re=-n.im,n.im=i}else{var i=n.im;n.im=-n.re,n.re=i}return n}atanh(){var n=this.re,i=this.im,t=n>1&&i===0,r=1-n,s=1+n,o=r*r+i*i,a=o!==0?new e((s*r-i*i)/o,(i*r+s*i)/o):new e(n!==-1?n/0:0,i!==0?i/0:0),u=a.re;return a.re=ms(a.re,a.im)/2,a.im=Math.atan2(a.im,u)/2,t&&(a.im=-a.im),a}acoth(){var n=this.re,i=this.im;if(n===0&&i===0)return new e(0,Math.PI/2);var t=n*n+i*i;return t!==0?new e(n/t,-i/t).atanh():new e(n!==0?n/0:0,i!==0?-i/0:0).atanh()}acsch(){var n=this.re,i=this.im;if(i===0)return new e(n!==0?Math.log(n+Math.sqrt(n*n+1)):1/0,0);var t=n*n+i*i;return t!==0?new e(n/t,-i/t).asinh():new e(n!==0?n/0:0,i!==0?-i/0:0).asinh()}asech(){var n=this.re,i=this.im;if(this.isZero())return e.INFINITY;var t=n*n+i*i;return t!==0?new e(n/t,-i/t).acosh():new e(n!==0?n/0:0,i!==0?-i/0:0).acosh()}inverse(){if(this.isZero())return e.INFINITY;if(this.isInfinite())return e.ZERO;var n=this.re,i=this.im,t=n*n+i*i;return new e(n/t,-i/t)}conjugate(){return new e(this.re,-this.im)}neg(){return new e(-this.re,-this.im)}ceil(n){return n=Math.pow(10,n||0),new e(Math.ceil(this.re*n)/n,Math.ceil(this.im*n)/n)}floor(n){return n=Math.pow(10,n||0),new e(Math.floor(this.re*n)/n,Math.floor(this.im*n)/n)}round(n){return n=Math.pow(10,n||0),new e(Math.round(this.re*n)/n,Math.round(this.im*n)/n)}equals(n,i){var t=new e(n,i);return Math.abs(t.re-this.re)<=e.EPSILON&&Math.abs(t.im-this.im)<=e.EPSILON}clone(){return new e(this.re,this.im)}toString(){var n=this.re,i=this.im,t="";return this.isNaN()?"NaN":this.isInfinite()?"Infinity":(Math.abs(n)<e.EPSILON&&(n=0),Math.abs(i)<e.EPSILON&&(i=0),i===0?t+n:(n!==0?(t+=n,t+=" ",i<0?(i=-i,t+="-"):t+="+",t+=" "):i<0&&(i=-i,t+="-"),i!==1&&(t+=i),t+"i"))}toVector(){return[this.re,this.im]}valueOf(){return this.im===0?this.re:null}isNaN(){return isNaN(this.re)||isNaN(this.im)}isZero(){return this.im===0&&this.re===0}isFinite(){return isFinite(this.re)&&isFinite(this.im)}isInfinite(){return!(this.isNaN()||this.isFinite())}};$.ZERO=new $(0,0);$.ONE=new $(1,0);$.I=new $(0,1);$.PI=new $(Math.PI,0);$.E=new $(Math.E,0);$.INFINITY=new $(1/0,1/0);$.NAN=new $(NaN,NaN);$.EPSILON=1e-15;var Si=9e15,qn=1e9,hs="0123456789abcdef",ur="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",lr="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",gs={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-Si,maxE:Si,crypto:!1},ha,Tn,w=!0,cr="[DecimalError] ",Fn=cr+"Invalid argument: ",ga=cr+"Precision limit exceeded",xa=cr+"crypto unavailable",ya="[object Decimal]",_e=Math.floor,he=Math.pow,cc=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,pc=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,dc=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,ba=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,nn=1e7,B=7,mc=9007199254740991,hc=ur.length-1,xs=lr.length-1,g={toStringTag:ya};g.absoluteValue=g.abs=function(){var e=new this.constructor(this);return e.s<0&&(e.s=1),S(e)};g.ceil=function(){return S(new this.constructor(this),this.e+1,2)};g.clampedTo=g.clamp=function(e,n){var i,t=this,r=t.constructor;if(e=new r(e),n=new r(n),!e.s||!n.s)return new r(NaN);if(e.gt(n))throw Error(Fn+n);return i=t.cmp(e),i<0?e:t.cmp(n)>0?n:new r(t)};g.comparedTo=g.cmp=function(e){var n,i,t,r,s=this,o=s.d,a=(e=new s.constructor(e)).d,u=s.s,l=e.s;if(!o||!a)return!u||!l?NaN:u!==l?u:o===a?0:!o^u<0?1:-1;if(!o[0]||!a[0])return o[0]?u:a[0]?-l:0;if(u!==l)return u;if(s.e!==e.e)return s.e>e.e^u<0?1:-1;for(t=o.length,r=a.length,n=0,i=t<r?t:r;n<i;++n)if(o[n]!==a[n])return o[n]>a[n]^u<0?1:-1;return t===r?0:t>r^u<0?1:-1};g.cosine=g.cos=function(){var e,n,i=this,t=i.constructor;return i.d?i.d[0]?(e=t.precision,n=t.rounding,t.precision=e+Math.max(i.e,i.sd())+B,t.rounding=1,i=gc(t,Sa(t,i)),t.precision=e,t.rounding=n,S(Tn==2||Tn==3?i.neg():i,e,n,!0)):new t(1):new t(NaN)};g.cubeRoot=g.cbrt=function(){var e,n,i,t,r,s,o,a,u,l,f=this,c=f.constructor;if(!f.isFinite()||f.isZero())return new c(f);for(w=!1,s=f.s*he(f.s*f,1/3),!s||Math.abs(s)==1/0?(i=Ne(f.d),e=f.e,(s=(e-i.length+1)%3)&&(i+=s==1||s==-2?"0":"00"),s=he(i,1/3),e=_e((e+1)/3)-(e%3==(e<0?-1:2)),s==1/0?i="5e"+e:(i=s.toExponential(),i=i.slice(0,i.indexOf("e")+1)+e),t=new c(i),t.s=f.s):t=new c(s.toString()),o=(e=c.precision)+3;;)if(a=t,u=a.times(a).times(a),l=u.plus(f),t=j(l.plus(f).times(a),l.plus(u),o+2,1),Ne(a.d).slice(0,o)===(i=Ne(t.d)).slice(0,o))if(i=i.slice(o-3,o+1),i=="9999"||!r&&i=="4999"){if(!r&&(S(a,e+1,0),a.times(a).times(a).eq(f))){t=a;break}o+=4,r=1}else{(!+i||!+i.slice(1)&&i.charAt(0)=="5")&&(S(t,e+1,1),n=!t.times(t).times(t).eq(f));break}return w=!0,S(t,e,c.rounding,n)};g.decimalPlaces=g.dp=function(){var e,n=this.d,i=NaN;if(n){if(e=n.length-1,i=(e-_e(this.e/B))*B,e=n[e],e)for(;e%10==0;e/=10)i--;i<0&&(i=0)}return i};g.dividedBy=g.div=function(e){return j(this,new this.constructor(e))};g.dividedToIntegerBy=g.divToInt=function(e){var n=this,i=n.constructor;return S(j(n,new i(e),0,1,1),i.precision,i.rounding)};g.equals=g.eq=function(e){return this.cmp(e)===0};g.floor=function(){return S(new this.constructor(this),this.e+1,3)};g.greaterThan=g.gt=function(e){return this.cmp(e)>0};g.greaterThanOrEqualTo=g.gte=function(e){var n=this.cmp(e);return n==1||n===0};g.hyperbolicCosine=g.cosh=function(){var e,n,i,t,r,s=this,o=s.constructor,a=new o(1);if(!s.isFinite())return new o(s.s?1/0:NaN);if(s.isZero())return a;i=o.precision,t=o.rounding,o.precision=i+Math.max(s.e,s.sd())+4,o.rounding=1,r=s.d.length,r<32?(e=Math.ceil(r/3),n=(1/dr(4,e)).toString()):(e=16,n="2.3283064365386962890625e-10"),s=_i(o,1,s.times(n),new o(1),!0);for(var u,l=e,f=new o(8);l--;)u=s.times(s),s=a.minus(u.times(f.minus(u.times(f))));return S(s,o.precision=i,o.rounding=t,!0)};g.hyperbolicSine=g.sinh=function(){var e,n,i,t,r=this,s=r.constructor;if(!r.isFinite()||r.isZero())return new s(r);if(n=s.precision,i=s.rounding,s.precision=n+Math.max(r.e,r.sd())+4,s.rounding=1,t=r.d.length,t<3)r=_i(s,2,r,r,!0);else{e=1.4*Math.sqrt(t),e=e>16?16:e|0,r=r.times(1/dr(5,e)),r=_i(s,2,r,r,!0);for(var o,a=new s(5),u=new s(16),l=new s(20);e--;)o=r.times(r),r=r.times(a.plus(o.times(u.times(o).plus(l))))}return s.precision=n,s.rounding=i,S(r,n,i,!0)};g.hyperbolicTangent=g.tanh=function(){var e,n,i=this,t=i.constructor;return i.isFinite()?i.isZero()?new t(i):(e=t.precision,n=t.rounding,t.precision=e+7,t.rounding=1,j(i.sinh(),i.cosh(),t.precision=e,t.rounding=n)):new t(i.s)};g.inverseCosine=g.acos=function(){var e=this,n=e.constructor,i=e.abs().cmp(1),t=n.precision,r=n.rounding;return i!==-1?i===0?e.isNeg()?ln(n,t,r):new n(0):new n(NaN):e.isZero()?ln(n,t+4,r).times(.5):(n.precision=t+6,n.rounding=1,e=new n(1).minus(e).div(e.plus(1)).sqrt().atan(),n.precision=t,n.rounding=r,e.times(2))};g.inverseHyperbolicCosine=g.acosh=function(){var e,n,i=this,t=i.constructor;return i.lte(1)?new t(i.eq(1)?0:NaN):i.isFinite()?(e=t.precision,n=t.rounding,t.precision=e+Math.max(Math.abs(i.e),i.sd())+4,t.rounding=1,w=!1,i=i.times(i).minus(1).sqrt().plus(i),w=!0,t.precision=e,t.rounding=n,i.ln()):new t(i)};g.inverseHyperbolicSine=g.asinh=function(){var e,n,i=this,t=i.constructor;return!i.isFinite()||i.isZero()?new t(i):(e=t.precision,n=t.rounding,t.precision=e+2*Math.max(Math.abs(i.e),i.sd())+6,t.rounding=1,w=!1,i=i.times(i).plus(1).sqrt().plus(i),w=!0,t.precision=e,t.rounding=n,i.ln())};g.inverseHyperbolicTangent=g.atanh=function(){var e,n,i,t,r=this,s=r.constructor;return r.isFinite()?r.e>=0?new s(r.abs().eq(1)?r.s/0:r.isZero()?r:NaN):(e=s.precision,n=s.rounding,t=r.sd(),Math.max(t,e)<2*-r.e-1?S(new s(r),e,n,!0):(s.precision=i=t-r.e,r=j(r.plus(1),new s(1).minus(r),i+e,1),s.precision=e+4,s.rounding=1,r=r.ln(),s.precision=e,s.rounding=n,r.times(.5))):new s(NaN)};g.inverseSine=g.asin=function(){var e,n,i,t,r=this,s=r.constructor;return r.isZero()?new s(r):(n=r.abs().cmp(1),i=s.precision,t=s.rounding,n!==-1?n===0?(e=ln(s,i+4,t).times(.5),e.s=r.s,e):new s(NaN):(s.precision=i+6,s.rounding=1,r=r.div(new s(1).minus(r.times(r)).sqrt().plus(1)).atan(),s.precision=i,s.rounding=t,r.times(2)))};g.inverseTangent=g.atan=function(){var e,n,i,t,r,s,o,a,u,l=this,f=l.constructor,c=f.precision,p=f.rounding;if(l.isFinite()){if(l.isZero())return new f(l);if(l.abs().eq(1)&&c+4<=xs)return o=ln(f,c+4,p).times(.25),o.s=l.s,o}else{if(!l.s)return new f(NaN);if(c+4<=xs)return o=ln(f,c+4,p).times(.5),o.s=l.s,o}for(f.precision=a=c+10,f.rounding=1,i=Math.min(28,a/B+2|0),e=i;e;--e)l=l.div(l.times(l).plus(1).sqrt().plus(1));for(w=!1,n=Math.ceil(a/B),t=1,u=l.times(l),o=new f(l),r=l;e!==-1;)if(r=r.times(u),s=o.minus(r.div(t+=2)),r=r.times(u),o=s.plus(r.div(t+=2)),o.d[n]!==void 0)for(e=n;o.d[e]===s.d[e]&&e--;);return i&&(o=o.times(2<<i-1)),w=!0,S(o,f.precision=c,f.rounding=p,!0)};g.isFinite=function(){return!!this.d};g.isInteger=g.isInt=function(){return!!this.d&&_e(this.e/B)>this.d.length-2};g.isNaN=function(){return!this.s};g.isNegative=g.isNeg=function(){return this.s<0};g.isPositive=g.isPos=function(){return this.s>0};g.isZero=function(){return!!this.d&&this.d[0]===0};g.lessThan=g.lt=function(e){return this.cmp(e)<0};g.lessThanOrEqualTo=g.lte=function(e){return this.cmp(e)<1};g.logarithm=g.log=function(e){var n,i,t,r,s,o,a,u,l=this,f=l.constructor,c=f.precision,p=f.rounding,m=5;if(e==null)e=new f(10),n=!0;else{if(e=new f(e),i=e.d,e.s<0||!i||!i[0]||e.eq(1))return new f(NaN);n=e.eq(10)}if(i=l.d,l.s<0||!i||!i[0]||l.eq(1))return new f(i&&!i[0]?-1/0:l.s!=1?NaN:i?0:1/0);if(n)if(i.length>1)s=!0;else{for(r=i[0];r%10===0;)r/=10;s=r!==1}if(w=!1,a=c+m,o=Ln(l,a),t=n?fr(f,a+10):Ln(e,a),u=j(o,t,a,1),ht(u.d,r=c,p))do if(a+=10,o=Ln(l,a),t=n?fr(f,a+10):Ln(e,a),u=j(o,t,a,1),!s){+Ne(u.d).slice(r+1,r+15)+1==1e14&&(u=S(u,c+1,0));break}while(ht(u.d,r+=10,p));return w=!0,S(u,c,p)};g.minus=g.sub=function(e){var n,i,t,r,s,o,a,u,l,f,c,p,m=this,y=m.constructor;if(e=new y(e),!m.d||!e.d)return!m.s||!e.s?e=new y(NaN):m.d?e.s=-e.s:e=new y(e.d||m.s!==e.s?m:NaN),e;if(m.s!=e.s)return e.s=-e.s,m.plus(e);if(l=m.d,p=e.d,a=y.precision,u=y.rounding,!l[0]||!p[0]){if(p[0])e.s=-e.s;else if(l[0])e=new y(m);else return new y(u===3?-0:0);return w?S(e,a,u):e}if(i=_e(e.e/B),f=_e(m.e/B),l=l.slice(),s=f-i,s){for(c=s<0,c?(n=l,s=-s,o=p.length):(n=p,i=f,o=l.length),t=Math.max(Math.ceil(a/B),o)+2,s>t&&(s=t,n.length=1),n.reverse(),t=s;t--;)n.push(0);n.reverse()}else{for(t=l.length,o=p.length,c=t<o,c&&(o=t),t=0;t<o;t++)if(l[t]!=p[t]){c=l[t]<p[t];break}s=0}for(c&&(n=l,l=p,p=n,e.s=-e.s),o=l.length,t=p.length-o;t>0;--t)l[o++]=0;for(t=p.length;t>s;){if(l[--t]<p[t]){for(r=t;r&&l[--r]===0;)l[r]=nn-1;--l[r],l[t]+=nn}l[t]-=p[t]}for(;l[--o]===0;)l.pop();for(;l[0]===0;l.shift())--i;return l[0]?(e.d=l,e.e=pr(l,i),w?S(e,a,u):e):new y(u===3?-0:0)};g.modulo=g.mod=function(e){var n,i=this,t=i.constructor;return e=new t(e),!i.d||!e.s||e.d&&!e.d[0]?new t(NaN):!e.d||i.d&&!i.d[0]?S(new t(i),t.precision,t.rounding):(w=!1,t.modulo==9?(n=j(i,e.abs(),0,3,1),n.s*=e.s):n=j(i,e,0,t.modulo,1),n=n.times(e),w=!0,i.minus(n))};g.naturalExponential=g.exp=function(){return ys(this)};g.naturalLogarithm=g.ln=function(){return Ln(this)};g.negated=g.neg=function(){var e=new this.constructor(this);return e.s=-e.s,S(e)};g.plus=g.add=function(e){var n,i,t,r,s,o,a,u,l,f,c=this,p=c.constructor;if(e=new p(e),!c.d||!e.d)return!c.s||!e.s?e=new p(NaN):c.d||(e=new p(e.d||c.s===e.s?c:NaN)),e;if(c.s!=e.s)return e.s=-e.s,c.minus(e);if(l=c.d,f=e.d,a=p.precision,u=p.rounding,!l[0]||!f[0])return f[0]||(e=new p(c)),w?S(e,a,u):e;if(s=_e(c.e/B),t=_e(e.e/B),l=l.slice(),r=s-t,r){for(r<0?(i=l,r=-r,o=f.length):(i=f,t=s,o=l.length),s=Math.ceil(a/B),o=s>o?s+1:o+1,r>o&&(r=o,i.length=1),i.reverse();r--;)i.push(0);i.reverse()}for(o=l.length,r=f.length,o-r<0&&(r=o,i=f,f=l,l=i),n=0;r;)n=(l[--r]=l[r]+f[r]+n)/nn|0,l[r]%=nn;for(n&&(l.unshift(n),++t),o=l.length;l[--o]==0;)l.pop();return e.d=l,e.e=pr(l,t),w?S(e,a,u):e};g.precision=g.sd=function(e){var n,i=this;if(e!==void 0&&e!==!!e&&e!==1&&e!==0)throw Error(Fn+e);return i.d?(n=Ea(i.d),e&&i.e+1>n&&(n=i.e+1)):n=NaN,n};g.round=function(){var e=this,n=e.constructor;return S(new n(e),e.e+1,n.rounding)};g.sine=g.sin=function(){var e,n,i=this,t=i.constructor;return i.isFinite()?i.isZero()?new t(i):(e=t.precision,n=t.rounding,t.precision=e+Math.max(i.e,i.sd())+B,t.rounding=1,i=yc(t,Sa(t,i)),t.precision=e,t.rounding=n,S(Tn>2?i.neg():i,e,n,!0)):new t(NaN)};g.squareRoot=g.sqrt=function(){var e,n,i,t,r,s,o=this,a=o.d,u=o.e,l=o.s,f=o.constructor;if(l!==1||!a||!a[0])return new f(!l||l<0&&(!a||a[0])?NaN:a?o:1/0);for(w=!1,l=Math.sqrt(+o),l==0||l==1/0?(n=Ne(a),(n.length+u)%2==0&&(n+="0"),l=Math.sqrt(n),u=_e((u+1)/2)-(u<0||u%2),l==1/0?n="5e"+u:(n=l.toExponential(),n=n.slice(0,n.indexOf("e")+1)+u),t=new f(n)):t=new f(l.toString()),i=(u=f.precision)+3;;)if(s=t,t=s.plus(j(o,s,i+2,1)).times(.5),Ne(s.d).slice(0,i)===(n=Ne(t.d)).slice(0,i))if(n=n.slice(i-3,i+1),n=="9999"||!r&&n=="4999"){if(!r&&(S(s,u+1,0),s.times(s).eq(o))){t=s;break}i+=4,r=1}else{(!+n||!+n.slice(1)&&n.charAt(0)=="5")&&(S(t,u+1,1),e=!t.times(t).eq(o));break}return w=!0,S(t,u,f.rounding,e)};g.tangent=g.tan=function(){var e,n,i=this,t=i.constructor;return i.isFinite()?i.isZero()?new t(i):(e=t.precision,n=t.rounding,t.precision=e+10,t.rounding=1,i=i.sin(),i.s=1,i=j(i,new t(1).minus(i.times(i)).sqrt(),e+10,0),t.precision=e,t.rounding=n,S(Tn==2||Tn==4?i.neg():i,e,n,!0)):new t(NaN)};g.times=g.mul=function(e){var n,i,t,r,s,o,a,u,l,f=this,c=f.constructor,p=f.d,m=(e=new c(e)).d;if(e.s*=f.s,!p||!p[0]||!m||!m[0])return new c(!e.s||p&&!p[0]&&!m||m&&!m[0]&&!p?NaN:!p||!m?e.s/0:e.s*0);for(i=_e(f.e/B)+_e(e.e/B),u=p.length,l=m.length,u<l&&(s=p,p=m,m=s,o=u,u=l,l=o),s=[],o=u+l,t=o;t--;)s.push(0);for(t=l;--t>=0;){for(n=0,r=u+t;r>t;)a=s[r]+m[t]*p[r-t-1]+n,s[r--]=a%nn|0,n=a/nn|0;s[r]=(s[r]+n)%nn|0}for(;!s[--o];)s.pop();return n?++i:s.shift(),e.d=s,e.e=pr(s,i),w?S(e,c.precision,c.rounding):e};g.toBinary=function(e,n){return bs(this,2,e,n)};g.toDecimalPlaces=g.toDP=function(e,n){var i=this,t=i.constructor;return i=new t(i),e===void 0?i:(Re(e,0,qn),n===void 0?n=t.rounding:Re(n,0,8),S(i,e+i.e+1,n))};g.toExponential=function(e,n){var i,t=this,r=t.constructor;return e===void 0?i=fn(t,!0):(Re(e,0,qn),n===void 0?n=r.rounding:Re(n,0,8),t=S(new r(t),e+1,n),i=fn(t,!0,e+1)),t.isNeg()&&!t.isZero()?"-"+i:i};g.toFixed=function(e,n){var i,t,r=this,s=r.constructor;return e===void 0?i=fn(r):(Re(e,0,qn),n===void 0?n=s.rounding:Re(n,0,8),t=S(new s(r),e+r.e+1,n),i=fn(t,!1,e+t.e+1)),r.isNeg()&&!r.isZero()?"-"+i:i};g.toFraction=function(e){var n,i,t,r,s,o,a,u,l,f,c,p,m=this,y=m.d,x=m.constructor;if(!y)return new x(m);if(l=i=new x(1),t=u=new x(0),n=new x(t),s=n.e=Ea(y)-m.e-1,o=s%B,n.d[0]=he(10,o<0?B+o:o),e==null)e=s>0?n:l;else{if(a=new x(e),!a.isInt()||a.lt(l))throw Error(Fn+a);e=a.gt(n)?s>0?n:l:a}for(w=!1,a=new x(Ne(y)),f=x.precision,x.precision=s=y.length*B*2;c=j(a,n,0,1,1),r=i.plus(c.times(t)),r.cmp(e)!=1;)i=t,t=r,r=l,l=u.plus(c.times(r)),u=r,r=n,n=a.minus(c.times(r)),a=r;return r=j(e.minus(i),t,0,1,1),u=u.plus(r.times(l)),i=i.plus(r.times(t)),u.s=l.s=m.s,p=j(l,t,s,1).minus(m).abs().cmp(j(u,i,s,1).minus(m).abs())<1?[l,t]:[u,i],x.precision=f,w=!0,p};g.toHexadecimal=g.toHex=function(e,n){return bs(this,16,e,n)};g.toNearest=function(e,n){var i=this,t=i.constructor;if(i=new t(i),e==null){if(!i.d)return i;e=new t(1),n=t.rounding}else{if(e=new t(e),n===void 0?n=t.rounding:Re(n,0,8),!i.d)return e.s?i:e;if(!e.d)return e.s&&(e.s=i.s),e}return e.d[0]?(w=!1,i=j(i,e,0,n,1).times(e),w=!0,S(i)):(e.s=i.s,i=e),i};g.toNumber=function(){return+this};g.toOctal=function(e,n){return bs(this,8,e,n)};g.toPower=g.pow=function(e){var n,i,t,r,s,o,a=this,u=a.constructor,l=+(e=new u(e));if(!a.d||!e.d||!a.d[0]||!e.d[0])return new u(he(+a,l));if(a=new u(a),a.eq(1))return a;if(t=u.precision,s=u.rounding,e.eq(1))return S(a,t,s);if(n=_e(e.e/B),n>=e.d.length-1&&(i=l<0?-l:l)<=mc)return r=Na(u,a,i,t),e.s<0?new u(1).div(r):S(r,t,s);if(o=a.s,o<0){if(n<e.d.length-1)return new u(NaN);if(e.d[n]&1||(o=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=o,a}return i=he(+a,l),n=i==0||!isFinite(i)?_e(l*(Math.log("0."+Ne(a.d))/Math.LN10+a.e+1)):new u(i+"").e,n>u.maxE+1||n<u.minE-1?new u(n>0?o/0:0):(w=!1,u.rounding=a.s=1,i=Math.min(12,(n+"").length),r=ys(e.times(Ln(a,t+i)),t),r.d&&(r=S(r,t+5,1),ht(r.d,t,s)&&(n=t+10,r=S(ys(e.times(Ln(a,n+i)),n),n+5,1),+Ne(r.d).slice(t+1,t+15)+1==1e14&&(r=S(r,t+1,0)))),r.s=o,w=!0,u.rounding=s,S(r,t,s))};g.toPrecision=function(e,n){var i,t=this,r=t.constructor;return e===void 0?i=fn(t,t.e<=r.toExpNeg||t.e>=r.toExpPos):(Re(e,1,qn),n===void 0?n=r.rounding:Re(n,0,8),t=S(new r(t),e,n),i=fn(t,e<=t.e||t.e<=r.toExpNeg,e)),t.isNeg()&&!t.isZero()?"-"+i:i};g.toSignificantDigits=g.toSD=function(e,n){var i=this,t=i.constructor;return e===void 0?(e=t.precision,n=t.rounding):(Re(e,1,qn),n===void 0?n=t.rounding:Re(n,0,8)),S(new t(i),e,n)};g.toString=function(){var e=this,n=e.constructor,i=fn(e,e.e<=n.toExpNeg||e.e>=n.toExpPos);return e.isNeg()&&!e.isZero()?"-"+i:i};g.truncated=g.trunc=function(){return S(new this.constructor(this),this.e+1,1)};g.valueOf=g.toJSON=function(){var e=this,n=e.constructor,i=fn(e,e.e<=n.toExpNeg||e.e>=n.toExpPos);return e.isNeg()?"-"+i:i};function Ne(e){var n,i,t,r=e.length-1,s="",o=e[0];if(r>0){for(s+=o,n=1;n<r;n++)t=e[n]+"",i=B-t.length,i&&(s+=On(i)),s+=t;o=e[n],t=o+"",i=B-t.length,i&&(s+=On(i))}else if(o===0)return"0";for(;o%10===0;)o/=10;return s+o}function Re(e,n,i){if(e!==~~e||e<n||e>i)throw Error(Fn+e)}function ht(e,n,i,t){var r,s,o,a;for(s=e[0];s>=10;s/=10)--n;return--n<0?(n+=B,r=0):(r=Math.ceil((n+1)/B),n%=B),s=he(10,B-n),a=e[r]%s|0,t==null?n<3?(n==0?a=a/100|0:n==1&&(a=a/10|0),o=i<4&&a==99999||i>3&&a==49999||a==5e4||a==0):o=(i<4&&a+1==s||i>3&&a+1==s/2)&&(e[r+1]/s/100|0)==he(10,n-2)-1||(a==s/2||a==0)&&(e[r+1]/s/100|0)==0:n<4?(n==0?a=a/1e3|0:n==1?a=a/100|0:n==2&&(a=a/10|0),o=(t||i<4)&&a==9999||!t&&i>3&&a==4999):o=((t||i<4)&&a+1==s||!t&&i>3&&a+1==s/2)&&(e[r+1]/s/1e3|0)==he(10,n-3)-1,o}function or(e,n,i){for(var t,r=[0],s,o=0,a=e.length;o<a;){for(s=r.length;s--;)r[s]*=n;for(r[0]+=hs.indexOf(e.charAt(o++)),t=0;t<r.length;t++)r[t]>i-1&&(r[t+1]===void 0&&(r[t+1]=0),r[t+1]+=r[t]/i|0,r[t]%=i)}return r.reverse()}function gc(e,n){var i,t,r;if(n.isZero())return n;t=n.d.length,t<32?(i=Math.ceil(t/3),r=(1/dr(4,i)).toString()):(i=16,r="2.3283064365386962890625e-10"),e.precision+=i,n=_i(e,1,n.times(r),new e(1));for(var s=i;s--;){var o=n.times(n);n=o.times(o).minus(o).times(8).plus(1)}return e.precision-=i,n}var j=function(){function e(t,r,s){var o,a=0,u=t.length;for(t=t.slice();u--;)o=t[u]*r+a,t[u]=o%s|0,a=o/s|0;return a&&t.unshift(a),t}function n(t,r,s,o){var a,u;if(s!=o)u=s>o?1:-1;else for(a=u=0;a<s;a++)if(t[a]!=r[a]){u=t[a]>r[a]?1:-1;break}return u}function i(t,r,s,o){for(var a=0;s--;)t[s]-=a,a=t[s]<r[s]?1:0,t[s]=a*o+t[s]-r[s];for(;!t[0]&&t.length>1;)t.shift()}return function(t,r,s,o,a,u){var l,f,c,p,m,y,x,E,_,R,I,q,be,Ee,vi,tr,mt,ps,en,rr,sr=t.constructor,ds=t.s==r.s?1:-1,Te=t.d,W=r.d;if(!Te||!Te[0]||!W||!W[0])return new sr(!t.s||!r.s||(Te?W&&Te[0]==W[0]:!W)?NaN:Te&&Te[0]==0||!W?ds*0:ds/0);for(u?(m=1,f=t.e-r.e):(u=nn,m=B,f=_e(t.e/m)-_e(r.e/m)),en=W.length,mt=Te.length,_=new sr(ds),R=_.d=[],c=0;W[c]==(Te[c]||0);c++);if(W[c]>(Te[c]||0)&&f--,s==null?(Ee=s=sr.precision,o=sr.rounding):a?Ee=s+(t.e-r.e)+1:Ee=s,Ee<0)R.push(1),y=!0;else{if(Ee=Ee/m+2|0,c=0,en==1){for(p=0,W=W[0],Ee++;(c<mt||p)&&Ee--;c++)vi=p*u+(Te[c]||0),R[c]=vi/W|0,p=vi%W|0;y=p||c<mt}else{for(p=u/(W[0]+1)|0,p>1&&(W=e(W,p,u),Te=e(Te,p,u),en=W.length,mt=Te.length),tr=en,I=Te.slice(0,en),q=I.length;q<en;)I[q++]=0;rr=W.slice(),rr.unshift(0),ps=W[0],W[1]>=u/2&&++ps;do p=0,l=n(W,I,en,q),l<0?(be=I[0],en!=q&&(be=be*u+(I[1]||0)),p=be/ps|0,p>1?(p>=u&&(p=u-1),x=e(W,p,u),E=x.length,q=I.length,l=n(x,I,E,q),l==1&&(p--,i(x,en<E?rr:W,E,u))):(p==0&&(l=p=1),x=W.slice()),E=x.length,E<q&&x.unshift(0),i(I,x,q,u),l==-1&&(q=I.length,l=n(W,I,en,q),l<1&&(p++,i(I,en<q?rr:W,q,u))),q=I.length):l===0&&(p++,I=[0]),R[c++]=p,l&&I[0]?I[q++]=Te[tr]||0:(I=[Te[tr]],q=1);while((tr++<mt||I[0]!==void 0)&&Ee--);y=I[0]!==void 0}R[0]||R.shift()}if(m==1)_.e=f,ha=y;else{for(c=1,p=R[0];p>=10;p/=10)c++;_.e=c+f*m-1,S(_,a?s+_.e+1:s,o,y)}return _}}();function S(e,n,i,t){var r,s,o,a,u,l,f,c,p,m=e.constructor;e:if(n!=null){if(c=e.d,!c)return e;for(r=1,a=c[0];a>=10;a/=10)r++;if(s=n-r,s<0)s+=B,o=n,f=c[p=0],u=f/he(10,r-o-1)%10|0;else if(p=Math.ceil((s+1)/B),a=c.length,p>=a)if(t){for(;a++<=p;)c.push(0);f=u=0,r=1,s%=B,o=s-B+1}else break e;else{for(f=a=c[p],r=1;a>=10;a/=10)r++;s%=B,o=s-B+r,u=o<0?0:f/he(10,r-o-1)%10|0}if(t=t||n<0||c[p+1]!==void 0||(o<0?f:f%he(10,r-o-1)),l=i<4?(u||t)&&(i==0||i==(e.s<0?3:2)):u>5||u==5&&(i==4||t||i==6&&(s>0?o>0?f/he(10,r-o):0:c[p-1])%10&1||i==(e.s<0?8:7)),n<1||!c[0])return c.length=0,l?(n-=e.e+1,c[0]=he(10,(B-n%B)%B),e.e=-n||0):c[0]=e.e=0,e;if(s==0?(c.length=p,a=1,p--):(c.length=p+1,a=he(10,B-s),c[p]=o>0?(f/he(10,r-o)%he(10,o)|0)*a:0),l)for(;;)if(p==0){for(s=1,o=c[0];o>=10;o/=10)s++;for(o=c[0]+=a,a=1;o>=10;o/=10)a++;s!=a&&(e.e++,c[0]==nn&&(c[0]=1));break}else{if(c[p]+=a,c[p]!=nn)break;c[p--]=0,a=1}for(s=c.length;c[--s]===0;)c.pop()}return w&&(e.e>m.maxE?(e.d=null,e.e=NaN):e.e<m.minE&&(e.e=0,e.d=[0])),e}function fn(e,n,i){if(!e.isFinite())return Ta(e);var t,r=e.e,s=Ne(e.d),o=s.length;return n?(i&&(t=i-o)>0?s=s.charAt(0)+"."+s.slice(1)+On(t):o>1&&(s=s.charAt(0)+"."+s.slice(1)),s=s+(e.e<0?"e":"e+")+e.e):r<0?(s="0."+On(-r-1)+s,i&&(t=i-o)>0&&(s+=On(t))):r>=o?(s+=On(r+1-o),i&&(t=i-r-1)>0&&(s=s+"."+On(t))):((t=r+1)<o&&(s=s.slice(0,t)+"."+s.slice(t)),i&&(t=i-o)>0&&(r+1===o&&(s+="."),s+=On(t))),s}function pr(e,n){var i=e[0];for(n*=B;i>=10;i/=10)n++;return n}function fr(e,n,i){if(n>hc)throw w=!0,i&&(e.precision=i),Error(ga);return S(new e(ur),n,1,!0)}function ln(e,n,i){if(n>xs)throw Error(ga);return S(new e(lr),n,i,!0)}function Ea(e){var n=e.length-1,i=n*B+1;if(n=e[n],n){for(;n%10==0;n/=10)i--;for(n=e[0];n>=10;n/=10)i++}return i}function On(e){for(var n="";e--;)n+="0";return n}function Na(e,n,i,t){var r,s=new e(1),o=Math.ceil(t/B+4);for(w=!1;;){if(i%2&&(s=s.times(n),da(s.d,o)&&(r=!0)),i=_e(i/2),i===0){i=s.d.length-1,r&&s.d[i]===0&&++s.d[i];break}n=n.times(n),da(n.d,o)}return w=!0,s}function pa(e){return e.d[e.d.length-1]&1}function va(e,n,i){for(var t,r,s=new e(n[0]),o=0;++o<n.length;){if(r=new e(n[o]),!r.s){s=r;break}t=s.cmp(r),(t===i||t===0&&s.s===i)&&(s=r)}return s}function ys(e,n){var i,t,r,s,o,a,u,l=0,f=0,c=0,p=e.constructor,m=p.rounding,y=p.precision;if(!e.d||!e.d[0]||e.e>17)return new p(e.d?e.d[0]?e.s<0?0:1/0:1:e.s?e.s<0?0:e:NaN);for(n==null?(w=!1,u=y):u=n,a=new p(.03125);e.e>-2;)e=e.times(a),c+=5;for(t=Math.log(he(2,c))/Math.LN10*2+5|0,u+=t,i=s=o=new p(1),p.precision=u;;){if(s=S(s.times(e),u,1),i=i.times(++f),a=o.plus(j(s,i,u,1)),Ne(a.d).slice(0,u)===Ne(o.d).slice(0,u)){for(r=c;r--;)o=S(o.times(o),u,1);if(n==null)if(l<3&&ht(o.d,u-t,m,l))p.precision=u+=10,i=s=a=new p(1),f=0,l++;else return S(o,p.precision=y,m,w=!0);else return p.precision=y,o}o=a}}function Ln(e,n){var i,t,r,s,o,a,u,l,f,c,p,m=1,y=10,x=e,E=x.d,_=x.constructor,R=_.rounding,I=_.precision;if(x.s<0||!E||!E[0]||!x.e&&E[0]==1&&E.length==1)return new _(E&&!E[0]?-1/0:x.s!=1?NaN:E?0:x);if(n==null?(w=!1,f=I):f=n,_.precision=f+=y,i=Ne(E),t=i.charAt(0),Math.abs(s=x.e)<15e14){for(;t<7&&t!=1||t==1&&i.charAt(1)>3;)x=x.times(e),i=Ne(x.d),t=i.charAt(0),m++;s=x.e,t>1?(x=new _("0."+i),s++):x=new _(t+"."+i.slice(1))}else return l=fr(_,f+2,I).times(s+""),x=Ln(new _(t+"."+i.slice(1)),f-y).plus(l),_.precision=I,n==null?S(x,I,R,w=!0):x;for(c=x,u=o=x=j(x.minus(1),x.plus(1),f,1),p=S(x.times(x),f,1),r=3;;){if(o=S(o.times(p),f,1),l=u.plus(j(o,new _(r),f,1)),Ne(l.d).slice(0,f)===Ne(u.d).slice(0,f))if(u=u.times(2),s!==0&&(u=u.plus(fr(_,f+2,I).times(s+""))),u=j(u,new _(m),f,1),n==null)if(ht(u.d,f-y,R,a))_.precision=f+=y,l=o=x=j(c.minus(1),c.plus(1),f,1),p=S(x.times(x),f,1),r=a=1;else return S(u,_.precision=I,R,w=!0);else return _.precision=I,u;u=l,r+=2}}function Ta(e){return String(e.s*e.s/0)}function ar(e,n){var i,t,r;for((i=n.indexOf("."))>-1&&(n=n.replace(".","")),(t=n.search(/e/i))>0?(i<0&&(i=t),i+=+n.slice(t+1),n=n.substring(0,t)):i<0&&(i=n.length),t=0;n.charCodeAt(t)===48;t++);for(r=n.length;n.charCodeAt(r-1)===48;--r);if(n=n.slice(t,r),n){if(r-=t,e.e=i=i-t-1,e.d=[],t=(i+1)%B,i<0&&(t+=B),t<r){for(t&&e.d.push(+n.slice(0,t)),r-=B;t<r;)e.d.push(+n.slice(t,t+=B));n=n.slice(t),t=B-n.length}else t-=r;for(;t--;)n+="0";e.d.push(+n),w&&(e.e>e.constructor.maxE?(e.d=null,e.e=NaN):e.e<e.constructor.minE&&(e.e=0,e.d=[0]))}else e.e=0,e.d=[0];return e}function xc(e,n){var i,t,r,s,o,a,u,l,f;if(n.indexOf("_")>-1){if(n=n.replace(/(\d)_(?=\d)/g,"$1"),ba.test(n))return ar(e,n)}else if(n==="Infinity"||n==="NaN")return+n||(e.s=NaN),e.e=NaN,e.d=null,e;if(pc.test(n))i=16,n=n.toLowerCase();else if(cc.test(n))i=2;else if(dc.test(n))i=8;else throw Error(Fn+n);for(s=n.search(/p/i),s>0?(u=+n.slice(s+1),n=n.substring(2,s)):n=n.slice(2),s=n.indexOf("."),o=s>=0,t=e.constructor,o&&(n=n.replace(".",""),a=n.length,s=a-s,r=Na(t,new t(i),s,s*2)),l=or(n,i,nn),f=l.length-1,s=f;l[s]===0;--s)l.pop();return s<0?new t(e.s*0):(e.e=pr(l,f),e.d=l,w=!1,o&&(e=j(e,r,a*4)),u&&(e=e.times(Math.abs(u)<54?he(2,u):M.pow(2,u))),w=!0,e)}function yc(e,n){var i,t=n.d.length;if(t<3)return n.isZero()?n:_i(e,2,n,n);i=1.4*Math.sqrt(t),i=i>16?16:i|0,n=n.times(1/dr(5,i)),n=_i(e,2,n,n);for(var r,s=new e(5),o=new e(16),a=new e(20);i--;)r=n.times(n),n=n.times(s.plus(r.times(o.times(r).minus(a))));return n}function _i(e,n,i,t,r){var s,o,a,u,l=1,f=e.precision,c=Math.ceil(f/B);for(w=!1,u=i.times(i),a=new e(t);;){if(o=j(a.times(u),new e(n++*n++),f,1),a=r?t.plus(o):t.minus(o),t=j(o.times(u),new e(n++*n++),f,1),o=a.plus(t),o.d[c]!==void 0){for(s=c;o.d[s]===a.d[s]&&s--;);if(s==-1)break}s=a,a=t,t=o,o=s,l++}return w=!0,o.d.length=c+1,o}function dr(e,n){for(var i=e;--n;)i*=e;return i}function Sa(e,n){var i,t=n.s<0,r=ln(e,e.precision,1),s=r.times(.5);if(n=n.abs(),n.lte(s))return Tn=t?4:1,n;if(i=n.divToInt(r),i.isZero())Tn=t?3:2;else{if(n=n.minus(i.times(r)),n.lte(s))return Tn=pa(i)?t?2:3:t?4:1,n;Tn=pa(i)?t?1:4:t?3:2}return n.minus(r).abs()}function bs(e,n,i,t){var r,s,o,a,u,l,f,c,p,m=e.constructor,y=i!==void 0;if(y?(Re(i,1,qn),t===void 0?t=m.rounding:Re(t,0,8)):(i=m.precision,t=m.rounding),!e.isFinite())f=Ta(e);else{for(f=fn(e),o=f.indexOf("."),y?(r=2,n==16?i=i*4-3:n==8&&(i=i*3-2)):r=n,o>=0&&(f=f.replace(".",""),p=new m(1),p.e=f.length-o,p.d=or(fn(p),10,r),p.e=p.d.length),c=or(f,10,r),s=u=c.length;c[--u]==0;)c.pop();if(!c[0])f=y?"0p+0":"0";else{if(o<0?s--:(e=new m(e),e.d=c,e.e=s,e=j(e,p,i,t,0,r),c=e.d,s=e.e,l=ha),o=c[i],a=r/2,l=l||c[i+1]!==void 0,l=t<4?(o!==void 0||l)&&(t===0||t===(e.s<0?3:2)):o>a||o===a&&(t===4||l||t===6&&c[i-1]&1||t===(e.s<0?8:7)),c.length=i,l)for(;++c[--i]>r-1;)c[i]=0,i||(++s,c.unshift(1));for(u=c.length;!c[u-1];--u);for(o=0,f="";o<u;o++)f+=hs.charAt(c[o]);if(y){if(u>1)if(n==16||n==8){for(o=n==16?4:3,--u;u%o;u++)f+="0";for(c=or(f,r,n),u=c.length;!c[u-1];--u);for(o=1,f="1.";o<u;o++)f+=hs.charAt(c[o])}else f=f.charAt(0)+"."+f.slice(1);f=f+(s<0?"p":"p+")+s}else if(s<0){for(;++s;)f="0"+f;f="0."+f}else if(++s>u)for(s-=u;s--;)f+="0";else s<u&&(f=f.slice(0,s)+"."+f.slice(s))}f=(n==16?"0x":n==2?"0b":n==8?"0o":"")+f}return e.s<0?"-"+f:f}function da(e,n){if(e.length>n)return e.length=n,!0}function bc(e){return new this(e).abs()}function Ec(e){return new this(e).acos()}function Nc(e){return new this(e).acosh()}function vc(e,n){return new this(e).plus(n)}function Tc(e){return new this(e).asin()}function Sc(e){return new this(e).asinh()}function _c(e){return new this(e).atan()}function Ic(e){return new this(e).atanh()}function Bc(e,n){e=new this(e),n=new this(n);var i,t=this.precision,r=this.rounding,s=t+4;return!e.s||!n.s?i=new this(NaN):!e.d&&!n.d?(i=ln(this,s,1).times(n.s>0?.25:.75),i.s=e.s):!n.d||e.isZero()?(i=n.s<0?ln(this,t,r):new this(0),i.s=e.s):!e.d||n.isZero()?(i=ln(this,s,1).times(.5),i.s=e.s):n.s<0?(this.precision=s,this.rounding=1,i=this.atan(j(e,n,s,1)),n=ln(this,s,1),this.precision=t,this.rounding=r,i=e.s<0?i.minus(n):i.plus(n)):i=this.atan(j(e,n,s,1)),i}function kc(e){return new this(e).cbrt()}function wc(e){return S(e=new this(e),e.e+1,2)}function Dc(e,n,i){return new this(e).clamp(n,i)}function Ac(e){if(!e||typeof e!="object")throw Error(cr+"Object expected");var n,i,t,r=e.defaults===!0,s=["precision",1,qn,"rounding",0,8,"toExpNeg",-Si,0,"toExpPos",0,Si,"maxE",0,Si,"minE",-Si,0,"modulo",0,9];for(n=0;n<s.length;n+=3)if(i=s[n],r&&(this[i]=gs[i]),(t=e[i])!==void 0)if(_e(t)===t&&t>=s[n+1]&&t<=s[n+2])this[i]=t;else throw Error(Fn+i+": "+t);if(i="crypto",r&&(this[i]=gs[i]),(t=e[i])!==void 0)if(t===!0||t===!1||t===0||t===1)if(t)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[i]=!0;else throw Error(xa);else this[i]=!1;else throw Error(Fn+i+": "+t);return this}function Rc(e){return new this(e).cos()}function Mc(e){return new this(e).cosh()}function _a(e){var n,i,t;function r(s){var o,a,u,l=this;if(!(l instanceof r))return new r(s);if(l.constructor=r,ma(s)){l.s=s.s,w?!s.d||s.e>r.maxE?(l.e=NaN,l.d=null):s.e<r.minE?(l.e=0,l.d=[0]):(l.e=s.e,l.d=s.d.slice()):(l.e=s.e,l.d=s.d?s.d.slice():s.d);return}if(u=typeof s,u==="number"){if(s===0){l.s=1/s<0?-1:1,l.e=0,l.d=[0];return}if(s<0?(s=-s,l.s=-1):l.s=1,s===~~s&&s<1e7){for(o=0,a=s;a>=10;a/=10)o++;w?o>r.maxE?(l.e=NaN,l.d=null):o<r.minE?(l.e=0,l.d=[0]):(l.e=o,l.d=[s]):(l.e=o,l.d=[s]);return}if(s*0!==0){s||(l.s=NaN),l.e=NaN,l.d=null;return}return ar(l,s.toString())}if(u==="string")return(a=s.charCodeAt(0))===45?(s=s.slice(1),l.s=-1):(a===43&&(s=s.slice(1)),l.s=1),ba.test(s)?ar(l,s):xc(l,s);if(u==="bigint")return s<0?(s=-s,l.s=-1):l.s=1,ar(l,s.toString());throw Error(Fn+s)}if(r.prototype=g,r.ROUND_UP=0,r.ROUND_DOWN=1,r.ROUND_CEIL=2,r.ROUND_FLOOR=3,r.ROUND_HALF_UP=4,r.ROUND_HALF_DOWN=5,r.ROUND_HALF_EVEN=6,r.ROUND_HALF_CEIL=7,r.ROUND_HALF_FLOOR=8,r.EUCLID=9,r.config=r.set=Ac,r.clone=_a,r.isDecimal=ma,r.abs=bc,r.acos=Ec,r.acosh=Nc,r.add=vc,r.asin=Tc,r.asinh=Sc,r.atan=_c,r.atanh=Ic,r.atan2=Bc,r.cbrt=kc,r.ceil=wc,r.clamp=Dc,r.cos=Rc,r.cosh=Mc,r.div=Cc,r.exp=Pc,r.floor=Oc,r.hypot=Lc,r.ln=Fc,r.log=qc,r.log10=Vc,r.log2=$c,r.max=zc,r.min=Gc,r.mod=Uc,r.mul=jc,r.pow=Zc,r.random=Hc,r.round=Wc,r.sign=Jc,r.sin=Yc,r.sinh=Qc,r.sqrt=Xc,r.sub=Kc,r.sum=ep,r.tan=np,r.tanh=ip,r.trunc=tp,e===void 0&&(e={}),e&&e.defaults!==!0)for(t=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],n=0;n<t.length;)e.hasOwnProperty(i=t[n++])||(e[i]=this[i]);return r.config(e),r}function Cc(e,n){return new this(e).div(n)}function Pc(e){return new this(e).exp()}function Oc(e){return S(e=new this(e),e.e+1,3)}function Lc(){var e,n,i=new this(0);for(w=!1,e=0;e<arguments.length;)if(n=new this(arguments[e++]),n.d)i.d&&(i=i.plus(n.times(n)));else{if(n.s)return w=!0,new this(1/0);i=n}return w=!0,i.sqrt()}function ma(e){return e instanceof M||e&&e.toStringTag===ya||!1}function Fc(e){return new this(e).ln()}function qc(e,n){return new this(e).log(n)}function $c(e){return new this(e).log(2)}function Vc(e){return new this(e).log(10)}function zc(){return va(this,arguments,-1)}function Gc(){return va(this,arguments,1)}function Uc(e,n){return new this(e).mod(n)}function jc(e,n){return new this(e).mul(n)}function Zc(e,n){return new this(e).pow(n)}function Hc(e){var n,i,t,r,s=0,o=new this(1),a=[];if(e===void 0?e=this.precision:Re(e,1,qn),t=Math.ceil(e/B),this.crypto)if(crypto.getRandomValues)for(n=crypto.getRandomValues(new Uint32Array(t));s<t;)r=n[s],r>=429e7?n[s]=crypto.getRandomValues(new Uint32Array(1))[0]:a[s++]=r%1e7;else if(crypto.randomBytes){for(n=crypto.randomBytes(t*=4);s<t;)r=n[s]+(n[s+1]<<8)+(n[s+2]<<16)+((n[s+3]&127)<<24),r>=214e7?crypto.randomBytes(4).copy(n,s):(a.push(r%1e7),s+=4);s=t/4}else throw Error(xa);else for(;s<t;)a[s++]=Math.random()*1e7|0;for(t=a[--s],e%=B,t&&e&&(r=he(10,B-e),a[s]=(t/r|0)*r);a[s]===0;s--)a.pop();if(s<0)i=0,a=[0];else{for(i=-1;a[0]===0;i-=B)a.shift();for(t=1,r=a[0];r>=10;r/=10)t++;t<B&&(i-=B-t)}return o.e=i,o.d=a,o}function Wc(e){return S(e=new this(e),e.e+1,this.rounding)}function Jc(e){return e=new this(e),e.d?e.d[0]?e.s:0*e.s:e.s||NaN}function Yc(e){return new this(e).sin()}function Qc(e){return new this(e).sinh()}function Xc(e){return new this(e).sqrt()}function Kc(e,n){return new this(e).sub(n)}function ep(){var e=0,n=arguments,i=new this(n[e]);for(w=!1;i.s&&++e<n.length;)i=i.plus(n[e]);return w=!0,S(i,this.precision,this.rounding)}function np(e){return new this(e).tan()}function ip(e){return new this(e).tanh()}function tp(e){return S(e=new this(e),e.e+1,1)}g[Symbol.for("nodejs.util.inspect.custom")]=g.toString;g[Symbol.toStringTag]="Decimal";var M=g.constructor=_a(gs);ur=new M(ur);lr=new M(lr);var mr=["number","finite_number","complex","finite_complex","imaginary","real","finite_real","rational","finite_rational","integer","finite_integer","non_finite_number"],hr=["collection","list","set","tuple","map"],gr=["scalar",...mr,"boolean","string"],Es=["value",...hr,...gr],Ns=["expression","symbol","function",...Es],$n=["any","unknown","nothing","never","error",...Ns];var Ia=3,Ba=1,ka=2,rp=4,sp=5,op=6,ap=7,up=8,lp=9,fp=10;function ne(e,n=0){if(typeof e=="string")return e;let i="";switch(e.kind){case"value":typeof e.value=="string"?i=`"${e.value}"`:typeof e.value=="boolean"?i=e.value?"true":"false":i=e.value.toString();break;case"reference":i=e.ref;break;case"negation":i=`!${ne(e.type,Ia)}`;break;case"union":i=e.types.map(u=>ne(u,Ba)).join(" | ");break;case"intersection":i=e.types.map(u=>ne(u,ka)).join(" & ");break;case"list":if(e.dimensions&&v(e.elements,"number")){if(e.dimensions===void 0)e.elements==="number"&&(i="tensor");else if(e.dimensions.length===1)e.elements==="number"?e.dimensions[0]<0?i="vector":i=`vector<${e.dimensions[0]}>`:e.dimensions[0]<0?i=`vector<${ne(e.elements)}>`:i=`vector<${ne(e.elements)}^${e.dimensions[0]}>`;else if(e.dimensions.length===2){let u=e.dimensions;e.elements==="number"?u[0]<0&&u[1]<0?i="matrix":i=`matrix<${u[0]}x${u[1]}>`:u[0]<0&&u[1]<0?i=`matrix<${ne(e.elements)}>`:i=`matrix<${ne(e.elements)}^(${u[0]}x${u[1]})>`}}if(!i){let u=e.dimensions?e.dimensions.length===1?`^${e.dimensions[0].toString()}`:`^(${e.dimensions.join("x")})`:"";i=`list<${ne(e.elements)}${u}>`}break;case"map":i=`map<${Object.entries(e.elements).map(([u,l])=>`${u}: ${ne(l)}`).join(", ")}>`;break;case"set":i=`set<${ne(e.elements)}>`;break;case"collection":i=`collection<${ne(e.elements)}>`;break;case"tuple":if(e.elements.length===0)i="tuple";else if(e.elements.length===1){let[u]=e.elements;i=`tuple<${gt(u)}>`}else i="tuple<"+e.elements.map(u=>gt(u)).join(", ")+">";break;case"signature":let r=e.args?e.args.map(u=>gt(u)).join(", "):"",s=e.optArgs?e.optArgs.map(u=>gt(u)+"?").join(", "):"",o=e.restArg?`...${gt(e.restArg)}`:"";i=`(${[r,s,o].filter(u=>u).join(", ")}) -> ${ne(e.result)}`;break;default:i="error"}return n>0&&n>cp(e.kind)?`(${i})`:i}function gt(e){return e.name?`${e.name}: ${ne(e.type)}`:ne(e.type)}function cp(e){switch(e){case"negation":return Ia;case"union":return Ba;case"intersection":return ka;case"list":return rp;case"map":return sp;case"set":return op;case"collection":return ap;case"tuple":return up;case"signature":return lp;case"value":return fp;default:return 0}}function pp(e,n){return e===n?e:e==="nothing"||n==="nothing"?"nothing":e==="any"?n:n==="any"?e:e==="never"?n:n==="never"?e:e==="unknown"?n:n==="unknown"||v(e,n)?e:v(n,e)?n:Da(e,n)}function dp(e,n){return e===n?e:e==="any"||n==="any"?"any":e==="never"?n:n==="never"?e:e==="unknown"?n:n==="unknown"?e:e==="nothing"?n:n==="nothing"?e:v(e,n)?n:v(n,e)?e:Da(e,n)}function wa(...e){return e.length===0?"nothing":e.length===1?e[0]:e.reduce(pp)}function ke(...e){return e.length===0?"nothing":e.length===1?e[0]:e.reduce(dp)}function Xn(e){return e=typeof e=="string"?k(e):e,typeof e!="string"&&e.kind==="signature"}function Kn(e){if(e){if(e==="function")return"any";if(typeof e!="string"&&e.kind==="signature")return e.result}}function ei(e){if(e==="collection")return"any";if(typeof e!="string"){if(e.kind==="collection"||e.kind==="list")return e.elements;if(e.kind==="map")return k(`tuple<string, ${ke(...Object.values(e.elements))}>`);if(e.kind==="set")return e.elements;if(e.kind==="tuple")return ke(...e.elements.map(n=>n.type))}}function Sn(e){return typeof e=="string"?$n.includes(e):typeof e!="object"||!("kind"in e)?!1:e.kind==="signature"||e.kind==="union"||e.kind==="intersection"||e.kind==="negation"||e.kind==="tuple"||e.kind==="list"||e.kind==="map"||e.kind==="set"||e.kind==="function"||e.kind==="collection"||e.kind==="reference"}function Da(e,n){return e===n?e:e==="any"||n==="any"?"any":e==="never"?n:n==="never"?e:e==="unknown"?n:n==="unknown"?e:e==="nothing"?n:n==="nothing"?e:le(e,n,"non_finite_number")?"non_finite_number":le(e,n,"finite_integer")?"finite_integer":le(e,n,"integer")?"integer":le(e,n,"finite_rational")?"finite_rational":le(e,n,"rational")?"rational":le(e,n,"finite_real")?"finite_real":le(e,n,"real")?"real":le(e,n,"imaginary")?"imaginary":le(e,n,"finite_complex")?"finite_complex":le(e,n,"complex")?"complex":le(e,n,"finite_number")?"finite_number":le(e,n,"number")?"number":le(e,n,"list")?"list":le(e,n,"map")?"map":le(e,n,"set")?"set":le(e,n,"tuple")?"tuple":le(e,n,"collection")?"collection":le(e,n,"scalar")?"scalar":le(e,n,"value")?"value":le(e,n,"function")?"function":le(e,n,"expression")?"expression":"any"}function le(e,n,i){return!!(v(e,i)&&v(n,i))}function mp(e,n){if(e===n)return 0;if(e.length===0)return n.length;if(n.length===0)return e.length;let i=Array.from({length:e.length+1},(r,s)=>s),t=new Array(e.length+1);for(let r=1;r<=n.length;r++){t[0]=r;for(let s=1;s<=e.length;s++){let o=e[s-1]===n[r-1]?0:1;t[s]=Math.min(i[s]+1,t[s-1]+1,i[s-1]+o)}[i,t]=[t,i]}return i[e.length]}function Aa(e,n){let t=null,r=1/0,s=e.length;for(let o of n){if(Math.abs(s-o.length)>3)continue;let a=mp(e,o);if(a===0)return o;a<=3&&a<r&&(r=a,t=o)}return t}var vs=class{constructor(n,i){this.buffer=n,this.pos=0,this._valueParser=i?.value??(()=>null),this._typeParser=i?.type??(()=>null)}error(...n){throw new Error(`
|
|
1
|
+
/** Compute Engine 0.30.0 */
|
|
2
|
+
var Me=Math.cosh||function(n){return Math.abs(n)<1e-9?1-n:(Math.exp(n)+Math.exp(-n))*.5},en=Math.sinh||function(n){return Math.abs(n)<1e-9?n:(Math.exp(n)-Math.exp(-n))*.5},wf=function(n){var e=Math.PI/4;if(-e>n||n>e)return Math.cos(n)-1;var t=n*n;return t*(t*(t*(t*(t*(t*(t*(t/20922789888e3-1/87178291200)+1/479001600)-1/3628800)+1/40320)-1/720)+1/24)-1/2)},kf=function(n,e){var t=Math.abs(n),i=Math.abs(e);return t<3e3&&i<3e3?Math.sqrt(t*t+i*i):(t<i?(t=i,i=n/e):i=e/n,t*Math.sqrt(1+i*i))},Ut=function(){throw SyntaxError("Invalid Param")};function Lo(n,e){var t=Math.abs(n),i=Math.abs(e);return n===0?Math.log(i):e===0?Math.log(t):t<3e3&&i<3e3?Math.log(n*n+e*e)*.5:(n=n/2,e=e/2,.5*Math.log(n*n+e*e)+Math.LN2)}var Cf=function(n,e){var t={re:0,im:0};if(n==null)t.re=t.im=0;else if(e!==void 0)t.re=n,t.im=e;else switch(typeof n){case"object":if("im"in n&&"re"in n)t.re=n.re,t.im=n.im;else if("abs"in n&&"arg"in n){if(!Number.isFinite(n.abs)&&Number.isFinite(n.arg))return q.INFINITY;t.re=n.abs*Math.cos(n.arg),t.im=n.abs*Math.sin(n.arg)}else if("r"in n&&"phi"in n){if(!Number.isFinite(n.r)&&Number.isFinite(n.phi))return q.INFINITY;t.re=n.r*Math.cos(n.phi),t.im=n.r*Math.sin(n.phi)}else n.length===2?(t.re=n[0],t.im=n[1]):Ut();break;case"string":t.im=t.re=0;var i=n.match(/\d+\.?\d*e[+-]?\d+|\d+\.?\d*|\.\d+|./g),r=1,o=0;i===null&&Ut();for(var s=0;s<i.length;s++){var a=i[s];a===" "||a===" "||a===`
|
|
3
|
+
`||(a==="+"?r++:a==="-"?o++:a==="i"||a==="I"?(r+o===0&&Ut(),i[s+1]!==" "&&!isNaN(Number(i[s+1]))?(t.im+=parseFloat((o%2?"-":"")+i[s+1]),s++):t.im+=parseFloat((o%2?"-":"")+"1"),r=o=0):((r+o===0||isNaN(Number(a)))&&Ut(),i[s+1]==="i"||i[s+1]==="I"?(t.im+=parseFloat((o%2?"-":"")+a),s++):t.re+=parseFloat((o%2?"-":"")+a),r=o=0))}r+o>0&&Ut();break;case"number":t.im=0,t.re=n;break;default:Ut()}return isNaN(t.re)||isNaN(t.im),t},q=class n{constructor(e,t){this.re=0,this.im=0;var i=Cf(e,t);this.re=i.re,this.im=i.im}sign(){var e=this.abs();return new n(this.re/e,this.im/e)}add(e,t){var i=new n(e,t);return this.isInfinite()&&i.isInfinite()?n.NAN:this.isInfinite()||i.isInfinite()?n.INFINITY:new n(this.re+i.re,this.im+i.im)}sub(e,t){var i=new n(e,t);return this.isInfinite()&&i.isInfinite()?n.NAN:this.isInfinite()||i.isInfinite()?n.INFINITY:new n(this.re-i.re,this.im-i.im)}mul(e,t){var i=new n(e,t);return this.isInfinite()&&i.isZero()||this.isZero()&&i.isInfinite()?n.NAN:this.isInfinite()||i.isInfinite()?n.INFINITY:i.im===0&&this.im===0?new n(this.re*i.re,0):new n(this.re*i.re-this.im*i.im,this.re*i.im+this.im*i.re)}div(e,t){var i=new n(e,t);if(this.isZero()&&i.isZero()||this.isInfinite()&&i.isInfinite())return n.NAN;if(this.isInfinite()||i.isZero())return n.INFINITY;if(this.isZero()||i.isInfinite())return n.ZERO;e=this.re,t=this.im;var r=i.re,o=i.im,s,a;return o===0?new n(e/r,t/r):Math.abs(r)<Math.abs(o)?(a=r/o,s=r*a+o,new n((e*a+t)/s,(t*a-e)/s)):(a=o/r,s=o*a+r,new n((e+t*a)/s,(t-e*a)/s))}pow(e,t){var i=new n(e,t);if(e=this.re,t=this.im,i.isZero())return n.ONE;if(i.im===0){if(t===0&&e>0)return new n(Math.pow(e,i.re),0);if(e===0)switch((i.re%4+4)%4){case 0:return new n(Math.pow(t,i.re),0);case 1:return new n(0,Math.pow(t,i.re));case 2:return new n(-Math.pow(t,i.re),0);case 3:return new n(0,-Math.pow(t,i.re))}}if(e===0&&t===0&&i.re>0&&i.im>=0)return n.ZERO;var r=Math.atan2(t,e),o=Lo(e,t);return e=Math.exp(i.re*o-i.im*r),t=i.im*o+i.re*r,new n(e*Math.cos(t),e*Math.sin(t))}sqrt(){var e=this.re,t=this.im,i=this.abs(),r,o;if(e>=0){if(t===0)return new n(Math.sqrt(e),0);r=.5*Math.sqrt(2*(i+e))}else r=Math.abs(t)/Math.sqrt(2*(i-e));return e<=0?o=.5*Math.sqrt(2*(i-e)):o=Math.abs(t)/Math.sqrt(2*(i+e)),new n(r,t<0?-o:o)}exp(){var e=Math.exp(this.re);return this.im,new n(e*Math.cos(this.im),e*Math.sin(this.im))}expm1(){var e=this.re,t=this.im;return new n(Math.expm1(e)*Math.cos(t)+wf(t),Math.exp(e)*Math.sin(t))}log(){var e=this.re,t=this.im;return t===0&&e>0,new n(Lo(e,t),Math.atan2(t,e))}abs(){return kf(this.re,this.im)}arg(){return Math.atan2(this.im,this.re)}sin(){var e=this.re,t=this.im;return new n(Math.sin(e)*Me(t),Math.cos(e)*en(t))}cos(){var e=this.re,t=this.im;return new n(Math.cos(e)*Me(t),-Math.sin(e)*en(t))}tan(){var e=2*this.re,t=2*this.im,i=Math.cos(e)+Me(t);return new n(Math.sin(e)/i,en(t)/i)}cot(){var e=2*this.re,t=2*this.im,i=Math.cos(e)-Me(t);return new n(-Math.sin(e)/i,en(t)/i)}sec(){var e=this.re,t=this.im,i=.5*Me(2*t)+.5*Math.cos(2*e);return new n(Math.cos(e)*Me(t)/i,Math.sin(e)*en(t)/i)}csc(){var e=this.re,t=this.im,i=.5*Me(2*t)-.5*Math.cos(2*e);return new n(Math.sin(e)*Me(t)/i,-Math.cos(e)*en(t)/i)}asin(){var e=this.re,t=this.im,i=new n(t*t-e*e+1,-2*e*t).sqrt(),r=new n(i.re-t,i.im+e).log();return new n(r.im,-r.re)}acos(){var e=this.re,t=this.im,i=new n(t*t-e*e+1,-2*e*t).sqrt(),r=new n(i.re-t,i.im+e).log();return new n(Math.PI/2-r.im,r.re)}atan(){var e=this.re,t=this.im;if(e===0){if(t===1)return new n(0,1/0);if(t===-1)return new n(0,-1/0)}var i=e*e+(1-t)*(1-t),r=new n((1-t*t-e*e)/i,-2*e/i).log();return new n(-.5*r.im,.5*r.re)}acot(){var e=this.re,t=this.im;if(t===0)return new n(Math.atan2(1,e),0);var i=e*e+t*t;return i!==0?new n(e/i,-t/i).atan():new n(e!==0?e/0:0,t!==0?-t/0:0).atan()}asec(){var e=this.re,t=this.im;if(e===0&&t===0)return new n(0,1/0);var i=e*e+t*t;return i!==0?new n(e/i,-t/i).acos():new n(e!==0?e/0:0,t!==0?-t/0:0).acos()}acsc(){var e=this.re,t=this.im;if(e===0&&t===0)return new n(Math.PI/2,1/0);var i=e*e+t*t;return i!==0?new n(e/i,-t/i).asin():new n(e!==0?e/0:0,t!==0?-t/0:0).asin()}sinh(){var e=this.re,t=this.im;return new n(en(e)*Math.cos(t),Me(e)*Math.sin(t))}cosh(){var e=this.re,t=this.im;return new n(Me(e)*Math.cos(t),en(e)*Math.sin(t))}tanh(){var e=2*this.re,t=2*this.im,i=Me(e)+Math.cos(t);return new n(en(e)/i,Math.sin(t)/i)}coth(){var e=2*this.re,t=2*this.im,i=Me(e)-Math.cos(t);return new n(en(e)/i,-Math.sin(t)/i)}csch(){var e=this.re,t=this.im,i=Math.cos(2*t)-Me(2*e);return new n(-2*en(e)*Math.cos(t)/i,2*Me(e)*Math.sin(t)/i)}sech(){var e=this.re,t=this.im,i=Math.cos(2*t)+Me(2*e);return new n(2*Me(e)*Math.cos(t)/i,-2*en(e)*Math.sin(t)/i)}asinh(){var e=this.im;this.im=-this.re,this.re=e;var t=this.asin();return this.re=-this.im,this.im=e,e=t.re,t.re=-t.im,t.im=e,t}acosh(){var e=this.acos();if(e.im<=0){var t=e.re;e.re=-e.im,e.im=t}else{var t=e.im;e.im=-e.re,e.re=t}return e}atanh(){var e=this.re,t=this.im,i=e>1&&t===0,r=1-e,o=1+e,s=r*r+t*t,a=s!==0?new n((o*r-t*t)/s,(t*r+o*t)/s):new n(e!==-1?e/0:0,t!==0?t/0:0),u=a.re;return a.re=Lo(a.re,a.im)/2,a.im=Math.atan2(a.im,u)/2,i&&(a.im=-a.im),a}acoth(){var e=this.re,t=this.im;if(e===0&&t===0)return new n(0,Math.PI/2);var i=e*e+t*t;return i!==0?new n(e/i,-t/i).atanh():new n(e!==0?e/0:0,t!==0?-t/0:0).atanh()}acsch(){var e=this.re,t=this.im;if(t===0)return new n(e!==0?Math.log(e+Math.sqrt(e*e+1)):1/0,0);var i=e*e+t*t;return i!==0?new n(e/i,-t/i).asinh():new n(e!==0?e/0:0,t!==0?-t/0:0).asinh()}asech(){var e=this.re,t=this.im;if(this.isZero())return n.INFINITY;var i=e*e+t*t;return i!==0?new n(e/i,-t/i).acosh():new n(e!==0?e/0:0,t!==0?-t/0:0).acosh()}inverse(){if(this.isZero())return n.INFINITY;if(this.isInfinite())return n.ZERO;var e=this.re,t=this.im,i=e*e+t*t;return new n(e/i,-t/i)}conjugate(){return new n(this.re,-this.im)}neg(){return new n(-this.re,-this.im)}ceil(e){return e=Math.pow(10,e||0),new n(Math.ceil(this.re*e)/e,Math.ceil(this.im*e)/e)}floor(e){return e=Math.pow(10,e||0),new n(Math.floor(this.re*e)/e,Math.floor(this.im*e)/e)}round(e){return e=Math.pow(10,e||0),new n(Math.round(this.re*e)/e,Math.round(this.im*e)/e)}equals(e,t){var i=new n(e,t);return Math.abs(i.re-this.re)<=n.EPSILON&&Math.abs(i.im-this.im)<=n.EPSILON}clone(){return new n(this.re,this.im)}toString(){var e=this.re,t=this.im,i="";return this.isNaN()?"NaN":this.isInfinite()?"Infinity":(Math.abs(e)<n.EPSILON&&(e=0),Math.abs(t)<n.EPSILON&&(t=0),t===0?i+e:(e!==0?(i+=e,i+=" ",t<0?(t=-t,i+="-"):i+="+",i+=" "):t<0&&(t=-t,i+="-"),t!==1&&(i+=t),i+"i"))}toVector(){return[this.re,this.im]}valueOf(){return this.im===0?this.re:null}isNaN(){return isNaN(this.re)||isNaN(this.im)}isZero(){return this.im===0&&this.re===0}isFinite(){return isFinite(this.re)&&isFinite(this.im)}isInfinite(){return!(this.isNaN()||this.isFinite())}};q.ZERO=new q(0,0);q.ONE=new q(1,0);q.I=new q(0,1);q.PI=new q(Math.PI,0);q.E=new q(Math.E,0);q.INFINITY=new q(1/0,1/0);q.NAN=new q(NaN,NaN);q.EPSILON=1e-15;var jt=9e15,ot=1e9,Oo="0123456789abcdef",Ar="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Dr="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",$o={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-jt,maxE:jt,crypto:!1},La,Vn,D=!0,Rr="[DecimalError] ",rt=Rr+"Invalid argument: ",Oa=Rr+"Precision limit exceeded",$a=Rr+"crypto unavailable",Fa="[object Decimal]",Re=Math.floor,Se=Math.pow,Af=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,Df=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Mf=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Va=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,xn=1e7,C=7,Rf=9007199254740991,Pf=Ar.length-1,Fo=Dr.length-1,y={toStringTag:Fa};y.absoluteValue=y.abs=function(){var n=new this.constructor(this);return n.s<0&&(n.s=1),I(n)};y.ceil=function(){return I(new this.constructor(this),this.e+1,2)};y.clampedTo=y.clamp=function(n,e){var t,i=this,r=i.constructor;if(n=new r(n),e=new r(e),!n.s||!e.s)return new r(NaN);if(n.gt(e))throw Error(rt+e);return t=i.cmp(n),t<0?n:i.cmp(e)>0?e:new r(i)};y.comparedTo=y.cmp=function(n){var e,t,i,r,o=this,s=o.d,a=(n=new o.constructor(n)).d,u=o.s,l=n.s;if(!s||!a)return!u||!l?NaN:u!==l?u:s===a?0:!s^u<0?1:-1;if(!s[0]||!a[0])return s[0]?u:a[0]?-l:0;if(u!==l)return u;if(o.e!==n.e)return o.e>n.e^u<0?1:-1;for(i=s.length,r=a.length,e=0,t=i<r?i:r;e<t;++e)if(s[e]!==a[e])return s[e]>a[e]^u<0?1:-1;return i===r?0:i>r^u<0?1:-1};y.cosine=y.cos=function(){var n,e,t=this,i=t.constructor;return t.d?t.d[0]?(n=i.precision,e=i.rounding,i.precision=n+Math.max(t.e,t.sd())+C,i.rounding=1,t=Lf(i,ja(i,t)),i.precision=n,i.rounding=e,I(Vn==2||Vn==3?t.neg():t,n,e,!0)):new i(1):new i(NaN)};y.cubeRoot=y.cbrt=function(){var n,e,t,i,r,o,s,a,u,l,c=this,f=c.constructor;if(!c.isFinite()||c.isZero())return new f(c);for(D=!1,o=c.s*Se(c.s*c,1/3),!o||Math.abs(o)==1/0?(t=Ce(c.d),n=c.e,(o=(n-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=Se(t,1/3),n=Re((n+1)/3)-(n%3==(n<0?-1:2)),o==1/0?t="5e"+n:(t=o.toExponential(),t=t.slice(0,t.indexOf("e")+1)+n),i=new f(t),i.s=c.s):i=new f(o.toString()),s=(n=f.precision)+3;;)if(a=i,u=a.times(a).times(a),l=u.plus(c),i=X(l.plus(c).times(a),l.plus(u),s+2,1),Ce(a.d).slice(0,s)===(t=Ce(i.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!r&&t=="4999"){if(!r&&(I(a,n+1,0),a.times(a).times(a).eq(c))){i=a;break}s+=4,r=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(I(i,n+1,1),e=!i.times(i).times(i).eq(c));break}return D=!0,I(i,n,f.rounding,e)};y.decimalPlaces=y.dp=function(){var n,e=this.d,t=NaN;if(e){if(n=e.length-1,t=(n-Re(this.e/C))*C,n=e[n],n)for(;n%10==0;n/=10)t--;t<0&&(t=0)}return t};y.dividedBy=y.div=function(n){return X(this,new this.constructor(n))};y.dividedToIntegerBy=y.divToInt=function(n){var e=this,t=e.constructor;return I(X(e,new t(n),0,1,1),t.precision,t.rounding)};y.equals=y.eq=function(n){return this.cmp(n)===0};y.floor=function(){return I(new this.constructor(this),this.e+1,3)};y.greaterThan=y.gt=function(n){return this.cmp(n)>0};y.greaterThanOrEqualTo=y.gte=function(n){var e=this.cmp(n);return e==1||e===0};y.hyperbolicCosine=y.cosh=function(){var n,e,t,i,r,o=this,s=o.constructor,a=new s(1);if(!o.isFinite())return new s(o.s?1/0:NaN);if(o.isZero())return a;t=s.precision,i=s.rounding,s.precision=t+Math.max(o.e,o.sd())+4,s.rounding=1,r=o.d.length,r<32?(n=Math.ceil(r/3),e=(1/Lr(4,n)).toString()):(n=16,e="2.3283064365386962890625e-10"),o=Zt(s,1,o.times(e),new s(1),!0);for(var u,l=n,c=new s(8);l--;)u=o.times(o),o=a.minus(u.times(c.minus(u.times(c))));return I(o,s.precision=t,s.rounding=i,!0)};y.hyperbolicSine=y.sinh=function(){var n,e,t,i,r=this,o=r.constructor;if(!r.isFinite()||r.isZero())return new o(r);if(e=o.precision,t=o.rounding,o.precision=e+Math.max(r.e,r.sd())+4,o.rounding=1,i=r.d.length,i<3)r=Zt(o,2,r,r,!0);else{n=1.4*Math.sqrt(i),n=n>16?16:n|0,r=r.times(1/Lr(5,n)),r=Zt(o,2,r,r,!0);for(var s,a=new o(5),u=new o(16),l=new o(20);n--;)s=r.times(r),r=r.times(a.plus(s.times(u.times(s).plus(l))))}return o.precision=e,o.rounding=t,I(r,e,t,!0)};y.hyperbolicTangent=y.tanh=function(){var n,e,t=this,i=t.constructor;return t.isFinite()?t.isZero()?new i(t):(n=i.precision,e=i.rounding,i.precision=n+7,i.rounding=1,X(t.sinh(),t.cosh(),i.precision=n,i.rounding=e)):new i(t.s)};y.inverseCosine=y.acos=function(){var n=this,e=n.constructor,t=n.abs().cmp(1),i=e.precision,r=e.rounding;return t!==-1?t===0?n.isNeg()?In(e,i,r):new e(0):new e(NaN):n.isZero()?In(e,i+4,r).times(.5):(e.precision=i+6,e.rounding=1,n=new e(1).minus(n).div(n.plus(1)).sqrt().atan(),e.precision=i,e.rounding=r,n.times(2))};y.inverseHyperbolicCosine=y.acosh=function(){var n,e,t=this,i=t.constructor;return t.lte(1)?new i(t.eq(1)?0:NaN):t.isFinite()?(n=i.precision,e=i.rounding,i.precision=n+Math.max(Math.abs(t.e),t.sd())+4,i.rounding=1,D=!1,t=t.times(t).minus(1).sqrt().plus(t),D=!0,i.precision=n,i.rounding=e,t.ln()):new i(t)};y.inverseHyperbolicSine=y.asinh=function(){var n,e,t=this,i=t.constructor;return!t.isFinite()||t.isZero()?new i(t):(n=i.precision,e=i.rounding,i.precision=n+2*Math.max(Math.abs(t.e),t.sd())+6,i.rounding=1,D=!1,t=t.times(t).plus(1).sqrt().plus(t),D=!0,i.precision=n,i.rounding=e,t.ln())};y.inverseHyperbolicTangent=y.atanh=function(){var n,e,t,i,r=this,o=r.constructor;return r.isFinite()?r.e>=0?new o(r.abs().eq(1)?r.s/0:r.isZero()?r:NaN):(n=o.precision,e=o.rounding,i=r.sd(),Math.max(i,n)<2*-r.e-1?I(new o(r),n,e,!0):(o.precision=t=i-r.e,r=X(r.plus(1),new o(1).minus(r),t+n,1),o.precision=n+4,o.rounding=1,r=r.ln(),o.precision=n,o.rounding=e,r.times(.5))):new o(NaN)};y.inverseSine=y.asin=function(){var n,e,t,i,r=this,o=r.constructor;return r.isZero()?new o(r):(e=r.abs().cmp(1),t=o.precision,i=o.rounding,e!==-1?e===0?(n=In(o,t+4,i).times(.5),n.s=r.s,n):new o(NaN):(o.precision=t+6,o.rounding=1,r=r.div(new o(1).minus(r.times(r)).sqrt().plus(1)).atan(),o.precision=t,o.rounding=i,r.times(2)))};y.inverseTangent=y.atan=function(){var n,e,t,i,r,o,s,a,u,l=this,c=l.constructor,f=c.precision,d=c.rounding;if(l.isFinite()){if(l.isZero())return new c(l);if(l.abs().eq(1)&&f+4<=Fo)return s=In(c,f+4,d).times(.25),s.s=l.s,s}else{if(!l.s)return new c(NaN);if(f+4<=Fo)return s=In(c,f+4,d).times(.5),s.s=l.s,s}for(c.precision=a=f+10,c.rounding=1,t=Math.min(28,a/C+2|0),n=t;n;--n)l=l.div(l.times(l).plus(1).sqrt().plus(1));for(D=!1,e=Math.ceil(a/C),i=1,u=l.times(l),s=new c(l),r=l;n!==-1;)if(r=r.times(u),o=s.minus(r.div(i+=2)),r=r.times(u),s=o.plus(r.div(i+=2)),s.d[e]!==void 0)for(n=e;s.d[n]===o.d[n]&&n--;);return t&&(s=s.times(2<<t-1)),D=!0,I(s,c.precision=f,c.rounding=d,!0)};y.isFinite=function(){return!!this.d};y.isInteger=y.isInt=function(){return!!this.d&&Re(this.e/C)>this.d.length-2};y.isNaN=function(){return!this.s};y.isNegative=y.isNeg=function(){return this.s<0};y.isPositive=y.isPos=function(){return this.s>0};y.isZero=function(){return!!this.d&&this.d[0]===0};y.lessThan=y.lt=function(n){return this.cmp(n)<0};y.lessThanOrEqualTo=y.lte=function(n){return this.cmp(n)<1};y.logarithm=y.log=function(n){var e,t,i,r,o,s,a,u,l=this,c=l.constructor,f=c.precision,d=c.rounding,p=5;if(n==null)n=new c(10),e=!0;else{if(n=new c(n),t=n.d,n.s<0||!t||!t[0]||n.eq(1))return new c(NaN);e=n.eq(10)}if(t=l.d,l.s<0||!t||!t[0]||l.eq(1))return new c(t&&!t[0]?-1/0:l.s!=1?NaN:t?0:1/0);if(e)if(t.length>1)o=!0;else{for(r=t[0];r%10===0;)r/=10;o=r!==1}if(D=!1,a=f+p,s=it(l,a),i=e?Mr(c,a+10):it(n,a),u=X(s,i,a,1),wi(u.d,r=f,d))do if(a+=10,s=it(l,a),i=e?Mr(c,a+10):it(n,a),u=X(s,i,a,1),!o){+Ce(u.d).slice(r+1,r+15)+1==1e14&&(u=I(u,f+1,0));break}while(wi(u.d,r+=10,d));return D=!0,I(u,f,d)};y.minus=y.sub=function(n){var e,t,i,r,o,s,a,u,l,c,f,d,p=this,x=p.constructor;if(n=new x(n),!p.d||!n.d)return!p.s||!n.s?n=new x(NaN):p.d?n.s=-n.s:n=new x(n.d||p.s!==n.s?p:NaN),n;if(p.s!=n.s)return n.s=-n.s,p.plus(n);if(l=p.d,d=n.d,a=x.precision,u=x.rounding,!l[0]||!d[0]){if(d[0])n.s=-n.s;else if(l[0])n=new x(p);else return new x(u===3?-0:0);return D?I(n,a,u):n}if(t=Re(n.e/C),c=Re(p.e/C),l=l.slice(),o=c-t,o){for(f=o<0,f?(e=l,o=-o,s=d.length):(e=d,t=c,s=l.length),i=Math.max(Math.ceil(a/C),s)+2,o>i&&(o=i,e.length=1),e.reverse(),i=o;i--;)e.push(0);e.reverse()}else{for(i=l.length,s=d.length,f=i<s,f&&(s=i),i=0;i<s;i++)if(l[i]!=d[i]){f=l[i]<d[i];break}o=0}for(f&&(e=l,l=d,d=e,n.s=-n.s),s=l.length,i=d.length-s;i>0;--i)l[s++]=0;for(i=d.length;i>o;){if(l[--i]<d[i]){for(r=i;r&&l[--r]===0;)l[r]=xn-1;--l[r],l[i]+=xn}l[i]-=d[i]}for(;l[--s]===0;)l.pop();for(;l[0]===0;l.shift())--t;return l[0]?(n.d=l,n.e=Pr(l,t),D?I(n,a,u):n):new x(u===3?-0:0)};y.modulo=y.mod=function(n){var e,t=this,i=t.constructor;return n=new i(n),!t.d||!n.s||n.d&&!n.d[0]?new i(NaN):!n.d||t.d&&!t.d[0]?I(new i(t),i.precision,i.rounding):(D=!1,i.modulo==9?(e=X(t,n.abs(),0,3,1),e.s*=n.s):e=X(t,n,0,i.modulo,1),e=e.times(n),D=!0,t.minus(e))};y.naturalExponential=y.exp=function(){return Vo(this)};y.naturalLogarithm=y.ln=function(){return it(this)};y.negated=y.neg=function(){var n=new this.constructor(this);return n.s=-n.s,I(n)};y.plus=y.add=function(n){var e,t,i,r,o,s,a,u,l,c,f=this,d=f.constructor;if(n=new d(n),!f.d||!n.d)return!f.s||!n.s?n=new d(NaN):f.d||(n=new d(n.d||f.s===n.s?f:NaN)),n;if(f.s!=n.s)return n.s=-n.s,f.minus(n);if(l=f.d,c=n.d,a=d.precision,u=d.rounding,!l[0]||!c[0])return c[0]||(n=new d(f)),D?I(n,a,u):n;if(o=Re(f.e/C),i=Re(n.e/C),l=l.slice(),r=o-i,r){for(r<0?(t=l,r=-r,s=c.length):(t=c,i=o,s=l.length),o=Math.ceil(a/C),s=o>s?o+1:s+1,r>s&&(r=s,t.length=1),t.reverse();r--;)t.push(0);t.reverse()}for(s=l.length,r=c.length,s-r<0&&(r=s,t=c,c=l,l=t),e=0;r;)e=(l[--r]=l[r]+c[r]+e)/xn|0,l[r]%=xn;for(e&&(l.unshift(e),++i),s=l.length;l[--s]==0;)l.pop();return n.d=l,n.e=Pr(l,i),D?I(n,a,u):n};y.precision=y.sd=function(n){var e,t=this;if(n!==void 0&&n!==!!n&&n!==1&&n!==0)throw Error(rt+n);return t.d?(e=qa(t.d),n&&t.e+1>e&&(e=t.e+1)):e=NaN,e};y.round=function(){var n=this,e=n.constructor;return I(new e(n),n.e+1,e.rounding)};y.sine=y.sin=function(){var n,e,t=this,i=t.constructor;return t.isFinite()?t.isZero()?new i(t):(n=i.precision,e=i.rounding,i.precision=n+Math.max(t.e,t.sd())+C,i.rounding=1,t=$f(i,ja(i,t)),i.precision=n,i.rounding=e,I(Vn>2?t.neg():t,n,e,!0)):new i(NaN)};y.squareRoot=y.sqrt=function(){var n,e,t,i,r,o,s=this,a=s.d,u=s.e,l=s.s,c=s.constructor;if(l!==1||!a||!a[0])return new c(!l||l<0&&(!a||a[0])?NaN:a?s:1/0);for(D=!1,l=Math.sqrt(+s),l==0||l==1/0?(e=Ce(a),(e.length+u)%2==0&&(e+="0"),l=Math.sqrt(e),u=Re((u+1)/2)-(u<0||u%2),l==1/0?e="5e"+u:(e=l.toExponential(),e=e.slice(0,e.indexOf("e")+1)+u),i=new c(e)):i=new c(l.toString()),t=(u=c.precision)+3;;)if(o=i,i=o.plus(X(s,o,t+2,1)).times(.5),Ce(o.d).slice(0,t)===(e=Ce(i.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!r&&e=="4999"){if(!r&&(I(o,u+1,0),o.times(o).eq(s))){i=o;break}t+=4,r=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(I(i,u+1,1),n=!i.times(i).eq(s));break}return D=!0,I(i,u,c.rounding,n)};y.tangent=y.tan=function(){var n,e,t=this,i=t.constructor;return t.isFinite()?t.isZero()?new i(t):(n=i.precision,e=i.rounding,i.precision=n+10,i.rounding=1,t=t.sin(),t.s=1,t=X(t,new i(1).minus(t.times(t)).sqrt(),n+10,0),i.precision=n,i.rounding=e,I(Vn==2||Vn==4?t.neg():t,n,e,!0)):new i(NaN)};y.times=y.mul=function(n){var e,t,i,r,o,s,a,u,l,c=this,f=c.constructor,d=c.d,p=(n=new f(n)).d;if(n.s*=c.s,!d||!d[0]||!p||!p[0])return new f(!n.s||d&&!d[0]&&!p||p&&!p[0]&&!d?NaN:!d||!p?n.s/0:n.s*0);for(t=Re(c.e/C)+Re(n.e/C),u=d.length,l=p.length,u<l&&(o=d,d=p,p=o,s=u,u=l,l=s),o=[],s=u+l,i=s;i--;)o.push(0);for(i=l;--i>=0;){for(e=0,r=u+i;r>i;)a=o[r]+p[i]*d[r-i-1]+e,o[r--]=a%xn|0,e=a/xn|0;o[r]=(o[r]+e)%xn|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),n.d=o,n.e=Pr(o,t),D?I(n,f.precision,f.rounding):n};y.toBinary=function(n,e){return qo(this,2,n,e)};y.toDecimalPlaces=y.toDP=function(n,e){var t=this,i=t.constructor;return t=new i(t),n===void 0?t:(ze(n,0,ot),e===void 0?e=i.rounding:ze(e,0,8),I(t,n+t.e+1,e))};y.toExponential=function(n,e){var t,i=this,r=i.constructor;return n===void 0?t=wn(i,!0):(ze(n,0,ot),e===void 0?e=r.rounding:ze(e,0,8),i=I(new r(i),n+1,e),t=wn(i,!0,n+1)),i.isNeg()&&!i.isZero()?"-"+t:t};y.toFixed=function(n,e){var t,i,r=this,o=r.constructor;return n===void 0?t=wn(r):(ze(n,0,ot),e===void 0?e=o.rounding:ze(e,0,8),i=I(new o(r),n+r.e+1,e),t=wn(i,!1,n+i.e+1)),r.isNeg()&&!r.isZero()?"-"+t:t};y.toFraction=function(n){var e,t,i,r,o,s,a,u,l,c,f,d,p=this,x=p.d,g=p.constructor;if(!x)return new g(p);if(l=t=new g(1),i=u=new g(0),e=new g(i),o=e.e=qa(x)-p.e-1,s=o%C,e.d[0]=Se(10,s<0?C+s:s),n==null)n=o>0?e:l;else{if(a=new g(n),!a.isInt()||a.lt(l))throw Error(rt+a);n=a.gt(e)?o>0?e:l:a}for(D=!1,a=new g(Ce(x)),c=g.precision,g.precision=o=x.length*C*2;f=X(a,e,0,1,1),r=t.plus(f.times(i)),r.cmp(n)!=1;)t=i,i=r,r=l,l=u.plus(f.times(r)),u=r,r=e,e=a.minus(f.times(r)),a=r;return r=X(n.minus(t),i,0,1,1),u=u.plus(r.times(l)),t=t.plus(r.times(i)),u.s=l.s=p.s,d=X(l,i,o,1).minus(p).abs().cmp(X(u,t,o,1).minus(p).abs())<1?[l,i]:[u,t],g.precision=c,D=!0,d};y.toHexadecimal=y.toHex=function(n,e){return qo(this,16,n,e)};y.toNearest=function(n,e){var t=this,i=t.constructor;if(t=new i(t),n==null){if(!t.d)return t;n=new i(1),e=i.rounding}else{if(n=new i(n),e===void 0?e=i.rounding:ze(e,0,8),!t.d)return n.s?t:n;if(!n.d)return n.s&&(n.s=t.s),n}return n.d[0]?(D=!1,t=X(t,n,0,e,1).times(n),D=!0,I(t)):(n.s=t.s,t=n),t};y.toNumber=function(){return+this};y.toOctal=function(n,e){return qo(this,8,n,e)};y.toPower=y.pow=function(n){var e,t,i,r,o,s,a=this,u=a.constructor,l=+(n=new u(n));if(!a.d||!n.d||!a.d[0]||!n.d[0])return new u(Se(+a,l));if(a=new u(a),a.eq(1))return a;if(i=u.precision,o=u.rounding,n.eq(1))return I(a,i,o);if(e=Re(n.e/C),e>=n.d.length-1&&(t=l<0?-l:l)<=Rf)return r=za(u,a,t,i),n.s<0?new u(1).div(r):I(r,i,o);if(s=a.s,s<0){if(e<n.d.length-1)return new u(NaN);if((n.d[e]&1)==0&&(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return t=Se(+a,l),e=t==0||!isFinite(t)?Re(l*(Math.log("0."+Ce(a.d))/Math.LN10+a.e+1)):new u(t+"").e,e>u.maxE+1||e<u.minE-1?new u(e>0?s/0:0):(D=!1,u.rounding=a.s=1,t=Math.min(12,(e+"").length),r=Vo(n.times(it(a,i+t)),i),r.d&&(r=I(r,i+5,1),wi(r.d,i,o)&&(e=i+10,r=I(Vo(n.times(it(a,e+t)),e),e+5,1),+Ce(r.d).slice(i+1,i+15)+1==1e14&&(r=I(r,i+1,0)))),r.s=s,D=!0,u.rounding=o,I(r,i,o))};y.toPrecision=function(n,e){var t,i=this,r=i.constructor;return n===void 0?t=wn(i,i.e<=r.toExpNeg||i.e>=r.toExpPos):(ze(n,1,ot),e===void 0?e=r.rounding:ze(e,0,8),i=I(new r(i),n,e),t=wn(i,n<=i.e||i.e<=r.toExpNeg,n)),i.isNeg()&&!i.isZero()?"-"+t:t};y.toSignificantDigits=y.toSD=function(n,e){var t=this,i=t.constructor;return n===void 0?(n=i.precision,e=i.rounding):(ze(n,1,ot),e===void 0?e=i.rounding:ze(e,0,8)),I(new i(t),n,e)};y.toString=function(){var n=this,e=n.constructor,t=wn(n,n.e<=e.toExpNeg||n.e>=e.toExpPos);return n.isNeg()&&!n.isZero()?"-"+t:t};y.truncated=y.trunc=function(){return I(new this.constructor(this),this.e+1,1)};y.valueOf=y.toJSON=function(){var n=this,e=n.constructor,t=wn(n,n.e<=e.toExpNeg||n.e>=e.toExpPos);return n.isNeg()?"-"+t:t};function Ce(n){var e,t,i,r=n.length-1,o="",s=n[0];if(r>0){for(o+=s,e=1;e<r;e++)i=n[e]+"",t=C-i.length,t&&(o+=tt(t)),o+=i;s=n[e],i=s+"",t=C-i.length,t&&(o+=tt(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function ze(n,e,t){if(n!==~~n||n<e||n>t)throw Error(rt+n)}function wi(n,e,t,i){var r,o,s,a;for(o=n[0];o>=10;o/=10)--e;return--e<0?(e+=C,r=0):(r=Math.ceil((e+1)/C),e%=C),o=Se(10,C-e),a=n[r]%o|0,i==null?e<3?(e==0?a=a/100|0:e==1&&(a=a/10|0),s=t<4&&a==99999||t>3&&a==49999||a==5e4||a==0):s=(t<4&&a+1==o||t>3&&a+1==o/2)&&(n[r+1]/o/100|0)==Se(10,e-2)-1||(a==o/2||a==0)&&(n[r+1]/o/100|0)==0:e<4?(e==0?a=a/1e3|0:e==1?a=a/100|0:e==2&&(a=a/10|0),s=(i||t<4)&&a==9999||!i&&t>3&&a==4999):s=((i||t<4)&&a+1==o||!i&&t>3&&a+1==o/2)&&(n[r+1]/o/1e3|0)==Se(10,e-3)-1,s}function kr(n,e,t){for(var i,r=[0],o,s=0,a=n.length;s<a;){for(o=r.length;o--;)r[o]*=e;for(r[0]+=Oo.indexOf(n.charAt(s++)),i=0;i<r.length;i++)r[i]>t-1&&(r[i+1]===void 0&&(r[i+1]=0),r[i+1]+=r[i]/t|0,r[i]%=t)}return r.reverse()}function Lf(n,e){var t,i,r;if(e.isZero())return e;i=e.d.length,i<32?(t=Math.ceil(i/3),r=(1/Lr(4,t)).toString()):(t=16,r="2.3283064365386962890625e-10"),n.precision+=t,e=Zt(n,1,e.times(r),new n(1));for(var o=t;o--;){var s=e.times(e);e=s.times(s).minus(s).times(8).plus(1)}return n.precision-=t,e}var X=function(){function n(i,r,o){var s,a=0,u=i.length;for(i=i.slice();u--;)s=i[u]*r+a,i[u]=s%o|0,a=s/o|0;return a&&i.unshift(a),i}function e(i,r,o,s){var a,u;if(o!=s)u=o>s?1:-1;else for(a=u=0;a<o;a++)if(i[a]!=r[a]){u=i[a]>r[a]?1:-1;break}return u}function t(i,r,o,s){for(var a=0;o--;)i[o]-=a,a=i[o]<r[o]?1:0,i[o]=a*s+i[o]-r[o];for(;!i[0]&&i.length>1;)i.shift()}return function(i,r,o,s,a,u){var l,c,f,d,p,x,g,b,_,k,w,z,be,ke,hn,Br,Ii,Ro,yn,Ir,wr=i.constructor,Po=i.s==r.s?1:-1,De=i.d,te=r.d;if(!De||!De[0]||!te||!te[0])return new wr(!i.s||!r.s||(De?te&&De[0]==te[0]:!te)?NaN:De&&De[0]==0||!te?Po*0:Po/0);for(u?(p=1,c=i.e-r.e):(u=xn,p=C,c=Re(i.e/p)-Re(r.e/p)),yn=te.length,Ii=De.length,_=new wr(Po),k=_.d=[],f=0;te[f]==(De[f]||0);f++);if(te[f]>(De[f]||0)&&c--,o==null?(ke=o=wr.precision,s=wr.rounding):a?ke=o+(i.e-r.e)+1:ke=o,ke<0)k.push(1),x=!0;else{if(ke=ke/p+2|0,f=0,yn==1){for(d=0,te=te[0],ke++;(f<Ii||d)&&ke--;f++)hn=d*u+(De[f]||0),k[f]=hn/te|0,d=hn%te|0;x=d||f<Ii}else{for(d=u/(te[0]+1)|0,d>1&&(te=n(te,d,u),De=n(De,d,u),yn=te.length,Ii=De.length),Br=yn,w=De.slice(0,yn),z=w.length;z<yn;)w[z++]=0;Ir=te.slice(),Ir.unshift(0),Ro=te[0],te[1]>=u/2&&++Ro;do d=0,l=e(te,w,yn,z),l<0?(be=w[0],yn!=z&&(be=be*u+(w[1]||0)),d=be/Ro|0,d>1?(d>=u&&(d=u-1),g=n(te,d,u),b=g.length,z=w.length,l=e(g,w,b,z),l==1&&(d--,t(g,yn<b?Ir:te,b,u))):(d==0&&(l=d=1),g=te.slice()),b=g.length,b<z&&g.unshift(0),t(w,g,z,u),l==-1&&(z=w.length,l=e(te,w,yn,z),l<1&&(d++,t(w,yn<z?Ir:te,z,u))),z=w.length):l===0&&(d++,w=[0]),k[f++]=d,l&&w[0]?w[z++]=De[Br]||0:(w=[De[Br]],z=1);while((Br++<Ii||w[0]!==void 0)&&ke--);x=w[0]!==void 0}k[0]||k.shift()}if(p==1)_.e=c,La=x;else{for(f=1,d=k[0];d>=10;d/=10)f++;_.e=f+c*p-1,I(_,a?o+_.e+1:o,s,x)}return _}}();function I(n,e,t,i){var r,o,s,a,u,l,c,f,d,p=n.constructor;e:if(e!=null){if(f=n.d,!f)return n;for(r=1,a=f[0];a>=10;a/=10)r++;if(o=e-r,o<0)o+=C,s=e,c=f[d=0],u=c/Se(10,r-s-1)%10|0;else if(d=Math.ceil((o+1)/C),a=f.length,d>=a)if(i){for(;a++<=d;)f.push(0);c=u=0,r=1,o%=C,s=o-C+1}else break e;else{for(c=a=f[d],r=1;a>=10;a/=10)r++;o%=C,s=o-C+r,u=s<0?0:c/Se(10,r-s-1)%10|0}if(i=i||e<0||f[d+1]!==void 0||(s<0?c:c%Se(10,r-s-1)),l=t<4?(u||i)&&(t==0||t==(n.s<0?3:2)):u>5||u==5&&(t==4||i||t==6&&(o>0?s>0?c/Se(10,r-s):0:f[d-1])%10&1||t==(n.s<0?8:7)),e<1||!f[0])return f.length=0,l?(e-=n.e+1,f[0]=Se(10,(C-e%C)%C),n.e=-e||0):f[0]=n.e=0,n;if(o==0?(f.length=d,a=1,d--):(f.length=d+1,a=Se(10,C-o),f[d]=s>0?(c/Se(10,r-s)%Se(10,s)|0)*a:0),l)for(;;)if(d==0){for(o=1,s=f[0];s>=10;s/=10)o++;for(s=f[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(n.e++,f[0]==xn&&(f[0]=1));break}else{if(f[d]+=a,f[d]!=xn)break;f[d--]=0,a=1}for(o=f.length;f[--o]===0;)f.pop()}return D&&(n.e>p.maxE?(n.d=null,n.e=NaN):n.e<p.minE&&(n.e=0,n.d=[0])),n}function wn(n,e,t){if(!n.isFinite())return Ua(n);var i,r=n.e,o=Ce(n.d),s=o.length;return e?(t&&(i=t-s)>0?o=o.charAt(0)+"."+o.slice(1)+tt(i):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(n.e<0?"e":"e+")+n.e):r<0?(o="0."+tt(-r-1)+o,t&&(i=t-s)>0&&(o+=tt(i))):r>=s?(o+=tt(r+1-s),t&&(i=t-r-1)>0&&(o=o+"."+tt(i))):((i=r+1)<s&&(o=o.slice(0,i)+"."+o.slice(i)),t&&(i=t-s)>0&&(r+1===s&&(o+="."),o+=tt(i))),o}function Pr(n,e){var t=n[0];for(e*=C;t>=10;t/=10)e++;return e}function Mr(n,e,t){if(e>Pf)throw D=!0,t&&(n.precision=t),Error(Oa);return I(new n(Ar),e,1,!0)}function In(n,e,t){if(e>Fo)throw Error(Oa);return I(new n(Dr),e,t,!0)}function qa(n){var e=n.length-1,t=e*C+1;if(e=n[e],e){for(;e%10==0;e/=10)t--;for(e=n[0];e>=10;e/=10)t++}return t}function tt(n){for(var e="";n--;)e+="0";return e}function za(n,e,t,i){var r,o=new n(1),s=Math.ceil(i/C+4);for(D=!1;;){if(t%2&&(o=o.times(e),Ra(o.d,s)&&(r=!0)),t=Re(t/2),t===0){t=o.d.length-1,r&&o.d[t]===0&&++o.d[t];break}e=e.times(e),Ra(e.d,s)}return D=!0,o}function Ma(n){return n.d[n.d.length-1]&1}function Ga(n,e,t){for(var i,r,o=new n(e[0]),s=0;++s<e.length;){if(r=new n(e[s]),!r.s){o=r;break}i=o.cmp(r),(i===t||i===0&&o.s===t)&&(o=r)}return o}function Vo(n,e){var t,i,r,o,s,a,u,l=0,c=0,f=0,d=n.constructor,p=d.rounding,x=d.precision;if(!n.d||!n.d[0]||n.e>17)return new d(n.d?n.d[0]?n.s<0?0:1/0:1:n.s?n.s<0?0:n:NaN);for(e==null?(D=!1,u=x):u=e,a=new d(.03125);n.e>-2;)n=n.times(a),f+=5;for(i=Math.log(Se(2,f))/Math.LN10*2+5|0,u+=i,t=o=s=new d(1),d.precision=u;;){if(o=I(o.times(n),u,1),t=t.times(++c),a=s.plus(X(o,t,u,1)),Ce(a.d).slice(0,u)===Ce(s.d).slice(0,u)){for(r=f;r--;)s=I(s.times(s),u,1);if(e==null)if(l<3&&wi(s.d,u-i,p,l))d.precision=u+=10,t=o=a=new d(1),c=0,l++;else return I(s,d.precision=x,p,D=!0);else return d.precision=x,s}s=a}}function it(n,e){var t,i,r,o,s,a,u,l,c,f,d,p=1,x=10,g=n,b=g.d,_=g.constructor,k=_.rounding,w=_.precision;if(g.s<0||!b||!b[0]||!g.e&&b[0]==1&&b.length==1)return new _(b&&!b[0]?-1/0:g.s!=1?NaN:b?0:g);if(e==null?(D=!1,c=w):c=e,_.precision=c+=x,t=Ce(b),i=t.charAt(0),Math.abs(o=g.e)<15e14){for(;i<7&&i!=1||i==1&&t.charAt(1)>3;)g=g.times(n),t=Ce(g.d),i=t.charAt(0),p++;o=g.e,i>1?(g=new _("0."+t),o++):g=new _(i+"."+t.slice(1))}else return l=Mr(_,c+2,w).times(o+""),g=it(new _(i+"."+t.slice(1)),c-x).plus(l),_.precision=w,e==null?I(g,w,k,D=!0):g;for(f=g,u=s=g=X(g.minus(1),g.plus(1),c,1),d=I(g.times(g),c,1),r=3;;){if(s=I(s.times(d),c,1),l=u.plus(X(s,new _(r),c,1)),Ce(l.d).slice(0,c)===Ce(u.d).slice(0,c))if(u=u.times(2),o!==0&&(u=u.plus(Mr(_,c+2,w).times(o+""))),u=X(u,new _(p),c,1),e==null)if(wi(u.d,c-x,k,a))_.precision=c+=x,l=s=g=X(f.minus(1),f.plus(1),c,1),d=I(g.times(g),c,1),r=a=1;else return I(u,_.precision=w,k,D=!0);else return _.precision=w,u;u=l,r+=2}}function Ua(n){return String(n.s*n.s/0)}function Cr(n,e){var t,i,r;for((t=e.indexOf("."))>-1&&(e=e.replace(".","")),(i=e.search(/e/i))>0?(t<0&&(t=i),t+=+e.slice(i+1),e=e.substring(0,i)):t<0&&(t=e.length),i=0;e.charCodeAt(i)===48;i++);for(r=e.length;e.charCodeAt(r-1)===48;--r);if(e=e.slice(i,r),e){if(r-=i,n.e=t=t-i-1,n.d=[],i=(t+1)%C,t<0&&(i+=C),i<r){for(i&&n.d.push(+e.slice(0,i)),r-=C;i<r;)n.d.push(+e.slice(i,i+=C));e=e.slice(i),i=C-e.length}else i-=r;for(;i--;)e+="0";n.d.push(+e),D&&(n.e>n.constructor.maxE?(n.d=null,n.e=NaN):n.e<n.constructor.minE&&(n.e=0,n.d=[0]))}else n.e=0,n.d=[0];return n}function Of(n,e){var t,i,r,o,s,a,u,l,c;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),Va.test(e))return Cr(n,e)}else if(e==="Infinity"||e==="NaN")return+e||(n.s=NaN),n.e=NaN,n.d=null,n;if(Df.test(e))t=16,e=e.toLowerCase();else if(Af.test(e))t=2;else if(Mf.test(e))t=8;else throw Error(rt+e);for(o=e.search(/p/i),o>0?(u=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),s=o>=0,i=n.constructor,s&&(e=e.replace(".",""),a=e.length,o=a-o,r=za(i,new i(t),o,o*2)),l=kr(e,t,xn),c=l.length-1,o=c;l[o]===0;--o)l.pop();return o<0?new i(n.s*0):(n.e=Pr(l,c),n.d=l,D=!1,s&&(n=X(n,r,a*4)),u&&(n=n.times(Math.abs(u)<54?Se(2,u):M.pow(2,u))),D=!0,n)}function $f(n,e){var t,i=e.d.length;if(i<3)return e.isZero()?e:Zt(n,2,e,e);t=1.4*Math.sqrt(i),t=t>16?16:t|0,e=e.times(1/Lr(5,t)),e=Zt(n,2,e,e);for(var r,o=new n(5),s=new n(16),a=new n(20);t--;)r=e.times(e),e=e.times(o.plus(r.times(s.times(r).minus(a))));return e}function Zt(n,e,t,i,r){var o,s,a,u,l=1,c=n.precision,f=Math.ceil(c/C);for(D=!1,u=t.times(t),a=new n(i);;){if(s=X(a.times(u),new n(e++*e++),c,1),a=r?i.plus(s):i.minus(s),i=X(s.times(u),new n(e++*e++),c,1),s=a.plus(i),s.d[f]!==void 0){for(o=f;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=i,i=s,s=o,l++}return D=!0,s.d.length=f+1,s}function Lr(n,e){for(var t=n;--e;)t*=n;return t}function ja(n,e){var t,i=e.s<0,r=In(n,n.precision,1),o=r.times(.5);if(e=e.abs(),e.lte(o))return Vn=i?4:1,e;if(t=e.divToInt(r),t.isZero())Vn=i?3:2;else{if(e=e.minus(t.times(r)),e.lte(o))return Vn=Ma(t)?i?2:3:i?4:1,e;Vn=Ma(t)?i?1:4:i?3:2}return e.minus(r).abs()}function qo(n,e,t,i){var r,o,s,a,u,l,c,f,d,p=n.constructor,x=t!==void 0;if(x?(ze(t,1,ot),i===void 0?i=p.rounding:ze(i,0,8)):(t=p.precision,i=p.rounding),!n.isFinite())c=Ua(n);else{for(c=wn(n),s=c.indexOf("."),x?(r=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):r=e,s>=0&&(c=c.replace(".",""),d=new p(1),d.e=c.length-s,d.d=kr(wn(d),10,r),d.e=d.d.length),f=kr(c,10,r),o=u=f.length;f[--u]==0;)f.pop();if(!f[0])c=x?"0p+0":"0";else{if(s<0?o--:(n=new p(n),n.d=f,n.e=o,n=X(n,d,t,i,0,r),f=n.d,o=n.e,l=La),s=f[t],a=r/2,l=l||f[t+1]!==void 0,l=i<4?(s!==void 0||l)&&(i===0||i===(n.s<0?3:2)):s>a||s===a&&(i===4||l||i===6&&f[t-1]&1||i===(n.s<0?8:7)),f.length=t,l)for(;++f[--t]>r-1;)f[t]=0,t||(++o,f.unshift(1));for(u=f.length;!f[u-1];--u);for(s=0,c="";s<u;s++)c+=Oo.charAt(f[s]);if(x){if(u>1)if(e==16||e==8){for(s=e==16?4:3,--u;u%s;u++)c+="0";for(f=kr(c,r,e),u=f.length;!f[u-1];--u);for(s=1,c="1.";s<u;s++)c+=Oo.charAt(f[s])}else c=c.charAt(0)+"."+c.slice(1);c=c+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)c="0"+c;c="0."+c}else if(++o>u)for(o-=u;o--;)c+="0";else o<u&&(c=c.slice(0,o)+"."+c.slice(o))}c=(e==16?"0x":e==2?"0b":e==8?"0o":"")+c}return n.s<0?"-"+c:c}function Ra(n,e){if(n.length>e)return n.length=e,!0}function Ff(n){return new this(n).abs()}function Vf(n){return new this(n).acos()}function qf(n){return new this(n).acosh()}function zf(n,e){return new this(n).plus(e)}function Gf(n){return new this(n).asin()}function Uf(n){return new this(n).asinh()}function jf(n){return new this(n).atan()}function Zf(n){return new this(n).atanh()}function Hf(n,e){n=new this(n),e=new this(e);var t,i=this.precision,r=this.rounding,o=i+4;return!n.s||!e.s?t=new this(NaN):!n.d&&!e.d?(t=In(this,o,1).times(e.s>0?.25:.75),t.s=n.s):!e.d||n.isZero()?(t=e.s<0?In(this,i,r):new this(0),t.s=n.s):!n.d||e.isZero()?(t=In(this,o,1).times(.5),t.s=n.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(X(n,e,o,1)),e=In(this,o,1),this.precision=i,this.rounding=r,t=n.s<0?t.minus(e):t.plus(e)):t=this.atan(X(n,e,o,1)),t}function Wf(n){return new this(n).cbrt()}function Jf(n){return I(n=new this(n),n.e+1,2)}function Yf(n,e,t){return new this(n).clamp(e,t)}function Qf(n){if(!n||typeof n!="object")throw Error(Rr+"Object expected");var e,t,i,r=n.defaults===!0,o=["precision",1,ot,"rounding",0,8,"toExpNeg",-jt,0,"toExpPos",0,jt,"maxE",0,jt,"minE",-jt,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],r&&(this[t]=$o[t]),(i=n[t])!==void 0)if(Re(i)===i&&i>=o[e+1]&&i<=o[e+2])this[t]=i;else throw Error(rt+t+": "+i);if(t="crypto",r&&(this[t]=$o[t]),(i=n[t])!==void 0)if(i===!0||i===!1||i===0||i===1)if(i)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[t]=!0;else throw Error($a);else this[t]=!1;else throw Error(rt+t+": "+i);return this}function Xf(n){return new this(n).cos()}function Kf(n){return new this(n).cosh()}function Za(n){var e,t,i;function r(o){var s,a,u,l=this;if(!(l instanceof r))return new r(o);if(l.constructor=r,Pa(o)){l.s=o.s,D?!o.d||o.e>r.maxE?(l.e=NaN,l.d=null):o.e<r.minE?(l.e=0,l.d=[0]):(l.e=o.e,l.d=o.d.slice()):(l.e=o.e,l.d=o.d?o.d.slice():o.d);return}if(u=typeof o,u==="number"){if(o===0){l.s=1/o<0?-1:1,l.e=0,l.d=[0];return}if(o<0?(o=-o,l.s=-1):l.s=1,o===~~o&&o<1e7){for(s=0,a=o;a>=10;a/=10)s++;D?s>r.maxE?(l.e=NaN,l.d=null):s<r.minE?(l.e=0,l.d=[0]):(l.e=s,l.d=[o]):(l.e=s,l.d=[o]);return}if(o*0!==0){o||(l.s=NaN),l.e=NaN,l.d=null;return}return Cr(l,o.toString())}if(u==="string")return(a=o.charCodeAt(0))===45?(o=o.slice(1),l.s=-1):(a===43&&(o=o.slice(1)),l.s=1),Va.test(o)?Cr(l,o):Of(l,o);if(u==="bigint")return o<0?(o=-o,l.s=-1):l.s=1,Cr(l,o.toString());throw Error(rt+o)}if(r.prototype=y,r.ROUND_UP=0,r.ROUND_DOWN=1,r.ROUND_CEIL=2,r.ROUND_FLOOR=3,r.ROUND_HALF_UP=4,r.ROUND_HALF_DOWN=5,r.ROUND_HALF_EVEN=6,r.ROUND_HALF_CEIL=7,r.ROUND_HALF_FLOOR=8,r.EUCLID=9,r.config=r.set=Qf,r.clone=Za,r.isDecimal=Pa,r.abs=Ff,r.acos=Vf,r.acosh=qf,r.add=zf,r.asin=Gf,r.asinh=Uf,r.atan=jf,r.atanh=Zf,r.atan2=Hf,r.cbrt=Wf,r.ceil=Jf,r.clamp=Yf,r.cos=Xf,r.cosh=Kf,r.div=ed,r.exp=nd,r.floor=td,r.hypot=id,r.ln=rd,r.log=od,r.log10=ad,r.log2=sd,r.max=ud,r.min=ld,r.mod=cd,r.mul=fd,r.pow=dd,r.random=pd,r.round=md,r.sign=gd,r.sin=hd,r.sinh=yd,r.sqrt=xd,r.sub=bd,r.sum=Ed,r.tan=vd,r.tanh=Nd,r.trunc=_d,n===void 0&&(n={}),n&&n.defaults!==!0)for(i=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],e=0;e<i.length;)n.hasOwnProperty(t=i[e++])||(n[t]=this[t]);return r.config(n),r}function ed(n,e){return new this(n).div(e)}function nd(n){return new this(n).exp()}function td(n){return I(n=new this(n),n.e+1,3)}function id(){var n,e,t=new this(0);for(D=!1,n=0;n<arguments.length;)if(e=new this(arguments[n++]),e.d)t.d&&(t=t.plus(e.times(e)));else{if(e.s)return D=!0,new this(1/0);t=e}return D=!0,t.sqrt()}function Pa(n){return n instanceof M||n&&n.toStringTag===Fa||!1}function rd(n){return new this(n).ln()}function od(n,e){return new this(n).log(e)}function sd(n){return new this(n).log(2)}function ad(n){return new this(n).log(10)}function ud(){return Ga(this,arguments,-1)}function ld(){return Ga(this,arguments,1)}function cd(n,e){return new this(n).mod(e)}function fd(n,e){return new this(n).mul(e)}function dd(n,e){return new this(n).pow(e)}function pd(n){var e,t,i,r,o=0,s=new this(1),a=[];if(n===void 0?n=this.precision:ze(n,1,ot),i=Math.ceil(n/C),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(i));o<i;)r=e[o],r>=429e7?e[o]=crypto.getRandomValues(new Uint32Array(1))[0]:a[o++]=r%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(i*=4);o<i;)r=e[o]+(e[o+1]<<8)+(e[o+2]<<16)+((e[o+3]&127)<<24),r>=214e7?crypto.randomBytes(4).copy(e,o):(a.push(r%1e7),o+=4);o=i/4}else throw Error($a);else for(;o<i;)a[o++]=Math.random()*1e7|0;for(i=a[--o],n%=C,i&&n&&(r=Se(10,C-n),a[o]=(i/r|0)*r);a[o]===0;o--)a.pop();if(o<0)t=0,a=[0];else{for(t=-1;a[0]===0;t-=C)a.shift();for(i=1,r=a[0];r>=10;r/=10)i++;i<C&&(t-=C-i)}return s.e=t,s.d=a,s}function md(n){return I(n=new this(n),n.e+1,this.rounding)}function gd(n){return n=new this(n),n.d?n.d[0]?n.s:0*n.s:n.s||NaN}function hd(n){return new this(n).sin()}function yd(n){return new this(n).sinh()}function xd(n){return new this(n).sqrt()}function bd(n,e){return new this(n).sub(e)}function Ed(){var n=0,e=arguments,t=new this(e[n]);for(D=!1;t.s&&++n<e.length;)t=t.plus(e[n]);return D=!0,I(t,this.precision,this.rounding)}function vd(n){return new this(n).tan()}function Nd(n){return new this(n).tanh()}function _d(n){return I(n=new this(n),n.e+1,1)}y[Symbol.for("nodejs.util.inspect.custom")]=y.toString;y[Symbol.toStringTag]="Decimal";var M=y.constructor=Za($o);Ar=new M(Ar);Dr=new M(Dr);var ki=M;var $e="\x1B[0m";var Ht="\x1B[30;1m";var Ha="\x1B[33m",zo="\x1B[34;1m";var Ci="\x1B[36;1m",Wa="\x1B[101;97m";var Or="\x1B[1m";var Go;function Qa(n){if(!Go){let t=`^[${["Zyyy","Zinh","Arab","Armn","Beng","Bopo","Cyrl","Deva","Ethi","Geor","Grek","Gujr","Guru","Hang","Hani","Hebr","Hira","Kana","Knda","Khmr","Laoo","Latn","Mlym","Mymr","Orya","Sinh","Taml","Telu","Thaa","Thai","Tibt"].map(i=>`\\p{Script=${i}}`).join("")}]*$`;Go=new RegExp(t,"u")}return Go.test(n)}function Te(n){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(n)||Wt.test(n)?!0:Qa(n)?/^[\p{XIDS}_]\p{XIDC}*$/u.test(n):!1}var Sd="\\u{FE0F}",Td="\\u{20E3}",Bd="\\u{200D}",Id="\\p{RI}\\p{RI}",wd="(?:[\\u{E0020}-\\u{E007E}]+\\u{E007F})",Ja=`(?:\\p{EMod}|${Sd}${Td}?|${wd})`,kd="(?:(?=\\P{XIDC})\\p{Emoji})",Ya=`(?:${kd}${Ja}*|\\p{Emoji}${Ja}+|${Id})`,Xa=`(?:${Ya})(${Bd}${Ya})*`,Cd=new RegExp(`(?:${Xa})+`,"u"),Wt=new RegExp(`^(?:${Xa})+$`,"u");function nn(n){return typeof n!="string"?"not-a-string":n===""?"empty-string":n.normalize()!==n?"expected-nfc":/[\u200E\u200F\u2066-\u2069\u202A-\u202E]/.test(n)?"unexpected-bidi-marker":Wt.test(n)?"valid":/\p{XIDC}/u.test(n)&&Cd.test(n)?"unexpected-mixed-emoji":Qa(n)?Te(n)?"valid":Te(n[0])?"invalid-char":"invalid-first-char":"unexpected-script"}var $r=["number","finite_number","complex","finite_complex","imaginary","real","finite_real","rational","finite_rational","integer","finite_integer","non_finite_number"],Uo=["indexed_collection","list","tuple"],Fr=[...Uo,"collection","set","record","dictionary"],Vr=["scalar",...$r,"boolean","string"],jo=["value",...Fr,...Vr],Zo=["expression","symbol","function",...jo],Et=["any","unknown","nothing","never","error",...Zo];var Ad={number:$r,non_finite_number:[],finite_number:["finite_complex","finite_real","finite_integer","finite_rational"],complex:["finite_complex","imaginary","finite_real","finite_rational","finite_integer","non_finite_number"],finite_complex:["imaginary","finite_real","finite_rational","finite_integer"],imaginary:[],real:["rational","integer","finite_real","finite_rational","finite_integer","non_finite_number"],finite_real:["finite_rational","finite_integer"],rational:["finite_rational","finite_integer","integer","non_finite_number"],finite_rational:["finite_integer"],integer:["finite_integer","non_finite_number"],finite_integer:[],any:Et,unknown:[],nothing:[],never:[],error:[],value:jo,scalar:Vr,collection:Fr,indexed_collection:Uo,list:[],set:[],tuple:[],record:[],dictionary:[],function:[],symbol:[],boolean:[],string:[],expression:Zo};function Ai(n,e){return e==="any"||n==="never"?!0:n==="unknown"||e==="unknown"?!1:n===e?!0:Ad[e].includes(n)}function E(n,e){if(typeof n=="string"&&(n=A(n)),typeof e=="string"&&(e=A(e)),e==="any")return!0;if(e==="never")return!1;if(e==="error")return n==="error";if(e==="nothing")return n==="nothing";if(n==="nothing")return!1;if(e==="unknown")return!0;if(n==="unknown")return!1;if(typeof e=="string")return typeof n=="string"?Ai(n,e):n.kind==="value"?typeof n.value=="boolean"?e==="boolean":typeof n.value=="number"?Number.isInteger(n.value)?Ai("integer",e):Ai("number",e):typeof n.value=="boolean"?Ai("boolean",e):typeof n.value=="string"?Ai("string",e):!1:n.kind==="union"?n.types.every(t=>E(t,e)):n.kind==="intersection"?n.types.some(t=>E(t,e)):n.kind==="negation"?!E(n.type,e):n.kind==="numeric"?!!E(n.type,e):e==="number"?Ka(n):e==="symbol"?Ho(n):e==="expression"?Dd(n):e==="function"?ru(n):e==="scalar"?eu(n):e==="value"?iu(n):e==="indexed_collection"?tu(n):e==="collection"?nu(n):e==="tuple"?n.kind==="tuple":e==="list"?n.kind==="list":e==="set"?n.kind==="set":e==="record"?n.kind==="record":e==="dictionary"?n.kind==="dictionary":!1;if(e.kind==="union")return typeof n!="string"&&n.kind==="union"?n.types.every(t=>e.types.some(i=>E(t,i))):e.types.some(t=>E(n,t));if(e.kind==="expression"){if(n==="symbol")return!0;if(typeof n=="string")return!1;if(n.kind==="expression")return e.operator==="Symbol"?Ho(n):n.operator===e.operator;if(n.kind==="symbol")return!0}if(typeof n=="string")return!1;if(e.kind==="reference"){if(n.kind==="reference")return n.name===e.name;if(e.alias===!0&&e.def)return E(n,e.def)}if(n.kind==="union")return n.types.some(t=>E(t,e));if(n.kind==="intersection"&&e.kind==="intersection")return e.types.every(t=>n.types.some(i=>E(i,t)));if(n.kind==="intersection")return n.types.every(t=>E(t,e));if(e.kind==="intersection")return e.types.every(t=>E(n,t));if(n.kind==="signature"&&e.kind==="signature"){if(!E(n.result,e.result))return!1;if(n.optArgs||n.variadicArg){if(e.args){if(!n.args||n.args.length!==e.args.length)return!1;for(let t=0;t<e.args.length;t++)if(!E(e.args[t].type,n.args[t].type))return!1}else if(n.args)return!1;if(e.optArgs){if(!n.optArgs||n.optArgs.length!==e.optArgs.length)return!1;for(let t=0;t<n.optArgs.length;t++)if(!E(e.optArgs[t].type,n.optArgs[t].type))return!1}else if(n.optArgs)return!1;if(e.variadicArg){if(!n.variadicArg||n.variadicMin!=e.variadicMin||!E(e.variadicArg.type,n.variadicArg.type))return!1}else if(n.variadicArg)return!1}else{if(e.args&&!n.args)return!1;let t=0;if(e.args){if(n.args.length<e.args.length)return!1;for(;t<e.args.length;){if(!E(e.args[t].type,n.args[t].type))return!1;t+=1}}if(e.optArgs){if(t>=n.args.length)return!0;for(let i=0;i<e.optArgs.length;i++){if(!E(e.optArgs[i].type,n.args[t].type))return!1;if(t+=1,t>=n.args.length)return!0}}if(e.variadicArg){if(t>=n.args.length&&e.variadicMin===0)return!0;if(e.variadicMin>0&&t+e.variadicMin>n.args.length)return!1;for(;t<n.args.length;){if(!E(e.variadicArg.type,n.args[t].type))return!1;t+=1}}}return!0}if(n.kind==="record"&&e.kind==="record"){for(let t of Object.keys(e.elements))if(!(t in n.elements)||!E(n.elements[t],e.elements[t]))return!1;return!0}if(n.kind==="dictionary"&&e.kind==="dictionary")return E(n.values,e.values);if(e.kind==="indexed_collection")return n.kind==="indexed_collection"||n.kind==="list"?E(n.elements,e.elements):n.kind==="tuple"?n.elements.every(t=>E(t.type,e.elements)):!1;if(e.kind==="collection"){if(n.kind==="collection"||n.kind==="indexed_collection"||n.kind==="list")return E(n.elements,e.elements);if(n.kind==="tuple")return n.elements.every(t=>E(t.type,e.elements));if(n.kind==="set")return E(n.elements,e.elements);if(n.kind==="dictionary")return E(A(`tuple<string, ${U(n.values)}>`),e.elements);if(n.kind==="record")return E(A(`tuple<$string, ${U(oe(...Object.values(n.elements)))}>`),e.elements)}if(n.kind==="tuple"&&e.kind==="tuple"){if(n.elements.length!==e.elements.length)return!1;for(let t=0;t<n.elements.length;t++){let i=n.elements[t],r=e.elements[t];if(!E(i.type,r.type)||i.name!==r.name)return!1}return!0}if(e.kind==="list"&&n.kind==="list"){if(!E(n.elements,e.elements))return!1;if(e.dimensions){if(!n.dimensions||n.dimensions.length!==e.dimensions.length)return!1;for(let t=0;t<n.dimensions.length;t++)if(e.dimensions[t]!==-1&&n.dimensions[t]!==e.dimensions[t])return!1}return!0}if(n.kind==="symbol"&&e.kind==="symbol")return n.name===e.name;if(n.kind==="numeric"&&e.kind==="numeric")return!(!E(n.type,e.type)||(n.lower??-1/0)<(e.lower??-1/0)||(n.upper??1/0)>(e.upper??1/0));if(e.kind==="set"&&n.kind==="set")return!!E(n.elements,e.elements);if(n.kind==="negation"&&e.kind==="negation")return E(n.type,e.type);if(e.kind==="negation")return!E(n,e.type);if(e.kind==="value"&&n.kind==="value")return e.value===n.value;if(n.kind==="value"){if(typeof n.value=="boolean")return E("boolean",e);if(typeof n.value=="number")return Number.isInteger(n.value)?E("integer",e):E("real",e);if(typeof n.value=="string")return E("string",e)}return!1}function Ka(n){return typeof n=="string"?$r.includes(n):n.kind==="value"?typeof n.value=="number":n.kind==="numeric"}function eu(n){return Ka(n)?!0:typeof n=="string"?Vr.includes(n):n.kind==="value"?["string","boolean","number"].includes(typeof n.value):!1}function nu(n){return tu(n)?!0:typeof n=="string"?Fr.includes(n):["collection","set","record","dictionary"].includes(n.kind)}function tu(n){return typeof n=="string"?!1:["indexed_collection","list","tuple"].includes(n.kind)}function iu(n){return eu(n)||nu(n)}function ru(n){return n==="function"||typeof n!="string"&&n.kind==="signature"}function Dd(n){return typeof n=="string"&&["expression","symbol","function"].includes(n)||iu(n)||ru(n)||Ho(n)?!0:typeof n=="string"?!1:n.kind==="expression"}function Ho(n){return n==="symbol"?!0:typeof n=="string"?!1:n.kind==="symbol"?!0:n.kind==="expression"?n.operator==="Symbol":!1}var su=3,au=1,uu=2,Md=4,Rd=5,Pd=6,Ld=7,Od=8,$d=9,Fd=10,Vd=11;function U(n,e=0){if(typeof n=="string")return n;let t="";switch(n.kind){case"value":typeof n.value=="string"?t=`"${n.value}"`:typeof n.value=="boolean"?t=n.value?"true":"false":t=n.value.toString();break;case"reference":t=n.name;break;case"negation":t=`!${U(n.type,su)}`;break;case"union":t=n.types.map(u=>U(u,au)).join(" | ");break;case"intersection":t=n.types.map(u=>U(u,uu)).join(" & ");break;case"expression":t=`expression<${ou(n.operator)}>`;break;case"symbol":t=`symbol<${ou(n.name)}>`;break;case"numeric":Number.isFinite(n.lower)&&Number.isFinite(n.upper)?t=`${n.type}<${n.lower}..${n.upper}>`:Number.isFinite(n.lower)?t=`${n.type}<${n.lower}..>`:Number.isFinite(n.upper)?t=`${n.type}<..${n.upper}>`:t=`${n.type}`;break;case"list":if(n.dimensions&&E(n.elements,"number")){if(n.dimensions===void 0)n.elements==="number"&&(t="tensor");else if(n.dimensions.length===1)n.elements==="number"?n.dimensions[0]<0?t="vector":t=`vector<${n.dimensions[0]}>`:n.dimensions[0]<0?t=`vector<${U(n.elements)}>`:t=`vector<${U(n.elements)}^${n.dimensions[0]}>`;else if(n.dimensions.length===2){let u=n.dimensions;n.elements==="number"?u[0]<0&&u[1]<0?t="matrix":t=`matrix<${u[0]}x${u[1]}>`:u[0]<0&&u[1]<0?t=`matrix<${U(n.elements)}>`:t=`matrix<${U(n.elements)}^(${u[0]}x${u[1]})>`}}if(!t){let u=n.dimensions?n.dimensions.length===1?`^${n.dimensions[0].toString()}`:`^(${n.dimensions.join("x")})`:"";t=`list<${U(n.elements)}${u}>`}break;case"record":t=`record<${Object.entries(n.elements).map(([u,l])=>`${u}: ${U(l)}`).join(", ")}>`;break;case"dictionary":t=`dictionary<${U(n.values)}>`;break;case"set":t=`set<${U(n.elements)}>`;break;case"collection":t=`collection<${U(n.elements)}>`;break;case"indexed_collection":t=`indexed_collection<${U(n.elements)}>`;break;case"tuple":if(n.elements.length===0)t="tuple";else if(n.elements.length===1){let[u]=n.elements;t=`tuple<${Jt(u)}>`}else t="tuple<"+n.elements.map(u=>Jt(u)).join(", ")+">";break;case"signature":let r=n.args?n.args.map(u=>Jt(u)).join(", "):"",o=n.optArgs?n.optArgs.map(u=>Jt(u)+"?").join(", "):"",s=n.variadicArg?n.variadicMin===0?`${Jt(n.variadicArg)}*`:`${Jt(n.variadicArg)}+`:"";t=`(${[r,o,s].filter(u=>u).join(", ")}) -> ${U(n.result)}`;break;default:t="error"}return e>0&&e>qd(n.kind)?`(${t})`:t}function Jt(n){return n.name?`${n.name}: ${U(n.type)}`:U(n.type)}function ou(n){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(n)?n:`\`${n}\``}function qd(n){switch(n){case"negation":return su;case"union":return au;case"intersection":return uu;case"list":return Md;case"record":return Rd;case"dictionary":return Pd;case"set":return Ld;case"collection":case"indexed_collection":return Od;case"tuple":return $d;case"signature":return Fd;case"value":return Vd;default:return 0}}function zd(n,e){if(n===e)return 0;if(n.length===0)return e.length;if(e.length===0)return n.length;let t=Array.from({length:n.length+1},(r,o)=>o),i=new Array(n.length+1);for(let r=1;r<=e.length;r++){i[0]=r;for(let o=1;o<=n.length;o++){let s=n[o-1]===e[r-1]?0:1;i[o]=Math.min(t[o]+1,i[o-1]+1,t[o-1]+s)}[t,i]=[i,t]}return t[n.length]}function Di(n,e){let i=null,r=1/0,o=n.length;for(let s of e){if(Math.abs(o-s.length)>7)continue;let a=zd(n,s);if(a===0)return s;a<=7&&a<r&&(r=a,i=s)}return i}var Wo=class{buffer;pos;_valueParser;_typeResolver;constructor(e,t){this.buffer=e,this.pos=0,this._valueParser=t?.valueParser??(()=>null),this._typeResolver=t?.typeResolver??{forward:()=>{},resolve:()=>{},get names(){return[]}}}error(...e){throw new Error(`
|
|
4
4
|
Invalid type
|
|
5
5
|
| ${this.buffer}
|
|
6
6
|
| ${" ".repeat(this.pos)}^
|
|
7
7
|
|
|
|
8
|
-
| ${
|
|
8
|
+
| ${e.filter(t=>t!==void 0).join(`
|
|
9
9
|
| `)}
|
|
10
|
-
`)}peek(){return this.buffer[this.pos]}consume(){return this.buffer[this.pos++]}match(n){if(n.length===1&&this.buffer[this.pos]===n)return this.pos++,!0;let i=this.pos;return this.buffer.slice(i,i+n.length)===n?(this.pos+=n.length,!0):!1}skipWhitespace(){for(;this.pos<this.buffer.length&&/\s/.test(this.buffer[this.pos]);)this.pos++}isEOF(){return this.pos>=this.buffer.length}parseValue(){this.skipWhitespace();let n=this._valueParser(this);return n===null?null:{kind:"value",value:n}}parseTypeReference(){this.skipWhitespace();let n=this._typeParser(this);return n===null?null:{kind:"reference",ref:n}}parsePrimitiveType(){this.skipWhitespace(),this.isEOF()&&this.error("Unexpected end of input");for(let n of $n)if(this.match(n))return n;return null}parseArguments(){let n=[],i=[];for(;;){let o=this.parseNamedElement();if(o===null||(this.match("?")?i.push(o):(i.length>0&&this.error("Optional arguments must come after required arguments"),n.push(o)),this.skipWhitespace(),!this.match(",")))break}let t=this.pos,r=this.parseRestArgument()??void 0;r&&i.length>0&&(this.pos=t,this.error("Optional arguments cannot be followed by a rest argument"));let s=Ra([...n,...i,...r?[r]:[]]);return s&&this.error(`Duplicate argument name "${s}"`),[n,i,r]}parseRestArgument(){let n=this.pos,i=this.parseName();if(this.skipWhitespace(),!this.match("..."))return this.pos=n,null;let t=this.parsePrimitiveType()??this.parseGroup();if(!t&&!i&&(this.pos=n,this.match("...")&&this.parseName())){let r=this.parsePrimitiveType()??this.parseGroup();this.pos=n,this.error("The rest argument indicator is placed before the type, not the name",`Use "${i}: ...${r?ne(r):"number"}"`)}return this.skipWhitespace(),this.match(":")&&this.error('Unexpected ":" after rest argument. Use "x: ...number"'),t??(t="any"),i?{name:i,type:t}:{type:t}}parseFunctionSignature(){let n=[],i=[],t;this.skipWhitespace();let r=this.pos;if(!this.match("()")){if(this.match("(")){if([n,i,t]=this.parseArguments(),this.skipWhitespace(),!this.match(")"))return t&&(this.parseNamedElement()&&(this.pos=r,this.error("The rest argument must be the last argument")),this.error("The rest argument must have a valid type")),i.length>0&&(this.parseNamedElement()&&this.error("Optional arguments cannot be followed by required arguments"),this.skipWhitespace(),r=this.pos,this.match("->")&&(this.pos=r,this.error('Expected ")" to close the argument list')),this.error("Expected an argument")),this.pos=r,null}else if(t=this.parseRestArgument()??void 0,t?.name&&(this.pos=r,this.error("Named arguments must be enclosed in parentheses")),!t)return this.pos=r,null}if(this.skipWhitespace(),!this.match("->"))return this.pos=r,null;let s=this.parseType();return s===null&&this.error("Expected a return type.","Use `any` for any type, `nothing` for no return value, or `never` for a function that never returns"),n.length===0&&(n=void 0),i.length===0&&(i=void 0),{kind:"signature",args:n,optArgs:i,restArg:t,result:s}}parsePositiveIntegerLiteral(){let n=0;for(this.skipWhitespace();/[0-9]/.test(this.peek());)n=n*10+parseInt(this.consume());return n===0?null:n}parseOptionalDimension(){let n=this.parsePositiveIntegerLiteral();return n===null&&this.match("?")&&(n=-1),n}parseDimensions(){let n=this.pos,i=this.match("("),t=[],r=this.parseOptionalDimension();if(r===null){this.pos=n;return}do{if(t.push(r),this.skipWhitespace(),!this.match("x"))break;this.skipWhitespace(),r=this.parseOptionalDimension(),r===null&&this.error("Expected a positive integer literal or `?`.","For example : `matrix<integer^2x3>` or `matrix<integer^?x?>`")}while(!0);return this.skipWhitespace(),i&&!this.match(")")&&this.error('Expected ")".',"For example `matrix<integer^(2x3)>`"),t}parseList(){if(this.skipWhitespace(),this.match("list<")){let t=this.parseDimensions();if(t!==void 0)return this.skipWhitespace(),this.match(">")||this.error('Expected ">".',"For example `list<2x3>`"),{kind:"list",elements:"any",dimensions:t};let r=this.parseType();return r&&this.match("^")&&(t=this.parseDimensions(),t===void 0&&this.error("Expected dimensions after `^`.","For example `list<number^2x3>`")),this.skipWhitespace(),this.match(">")||this.error('Expected ">".',"For example `list<number>`"),{kind:"list",elements:r??"any",dimensions:t}}if(this.match("list(")&&this.error("Use `list<type>` instead of `list(type)`.","For example `list<number>`"),this.match("vector<")){let t=this.parseType(),r;if(t&&this.match("^")){let s=this.parsePositiveIntegerLiteral();s===null&&this.error("Expected a positive integer literal.","For example `vector<3>`","Use `vector` for a vector of unknown size"),r=[s]}else t||(t="number",r=this.parseDimensions());return this.skipWhitespace(),this.match(">")||this.error('Expected ">"',"For example `vector<integer>`"),{kind:"list",elements:t,dimensions:r}}if(this.match("vector(")&&this.error("Use `vector<...>` instead of `vector(...)`.","For example `vector<3>` or `vector<integer^3>`"),this.match("vector"))return{kind:"list",elements:"number"};if(this.match("matrix<")){let t=this.parseType(),r;return t&&this.match("^")?(r=this.parseDimensions(),r===void 0&&this.error("Expected dimensions","For example `matrix<number^2x3>`","Use `matrix` for a matrix of unknown size")):t||(t="number",r=this.parseDimensions()),this.match(">")||this.error('Expected ">".',"For example `matrix<integer>`"),{kind:"list",elements:t,dimensions:r}}if(this.match("matrix(")&&this.error("Use `matrix<...>` instead of `matrix(...)`.","For example `matrix<3x2>` or `matrix<integer^3x2>`"),this.match("matrix"))return{kind:"list",elements:"number",dimensions:[-1,-1]};if(this.match("tensor<")){let t=this.parseType()??"number";return this.match(">")||this.error('Expected ">".',"For example `tensor<number>`"),{kind:"list",elements:t,dimensions:void 0}}if(this.match("tensor"))return{kind:"list",elements:"number",dimensions:void 0};if(!this.match("list<"))return null;let n=this.parseType();n===null&&this.error('Expected a type. Use "[any]" for a collection of any type');let i=this.match("^")?this.parseDimensions():void 0;return this.skipWhitespace(),this.match(">")||this.error('Expected ">".',"For example `list<number^2x3>`"),{kind:"list",elements:n,dimensions:i}}parseName(){let n=this.pos;if(this.skipWhitespace(),this.isEOF()||!/[a-zA-Z_]/.test(this.peek()))return null;let i="";for(;!this.isEOF()&&/[a-zA-Z0-9_]/.test(this.peek());)i+=this.consume();if(this.skipWhitespace(),!this.match(":")){if(this.match("?:")){let t=this.parseType();t&&this.error("Optional qualifier must come after the type",`Use "${i}: ${ne(t)}?"`),this.error("Optional qualifier must come after the type",`Use "${i}: number?"`)}return this.pos=n,null}return i}parseKey(){if(this.skipWhitespace(),this.isEOF())return null;let n="";if(this.match("`")){for(;this.peek()!=="`";)this.isEOF()&&this.error("Expected closing backtick"),this.match("\\`")?n+="`":n+=this.consume();return n}for(;!this.isEOF()&&!/[:\s]/.test(this.peek());)n+=this.consume();return n}parseNamedElement(){let n=this.pos,i=this.parseName();if(i!==null){let r=this.parseType();if(r===null){if(this.skipWhitespace(),this.match("..."))return this.pos=n,null;this.pos=n,this.error(`Expected a valid type after "${i}:"`)}return this.skipWhitespace(),this.match("->")&&(this.pos=n,this.error("Single named argument must be enclosed in parentheses")),{name:i,type:r}}let t=this.parseType();return t===null?(this.pos=n,null):{type:t}}parseTupleElements(){let n=[],i=this.pos,t=this.parseNamedElement();if(t===null)return[];for(;n.push(t),this.skipWhitespace(),!!this.match(",");)i=this.pos,t=this.parseNamedElement(),t===null&&(this.pos=i,this.error("Expected a type or unexpected comma"));let r=Ra(n);return r&&this.error(`Duplicate tuple named element "${r}"`),n}parseTuple(){if(this.skipWhitespace(),!this.match("tuple<"))return this.match("tuple(")&&this.error("Use `tuple<type>` instead of `tuple(type)`.","For example `tuple<number, boolean>` or `tuple<x: integer, y: integer>`"),null;let n=this.parseTupleElements();return this.skipWhitespace(),this.match(">")||this.error('Expected ">".',"For example `tuple<number, boolean>` or `tuple<x: integer, y: integer>`"),{kind:"tuple",elements:n}}parseGroup(){let n=this.pos;if(this.skipWhitespace(),!this.match("("))return null;let i=this.parseType();return i===null?(this.pos=n,null):(this.skipWhitespace(),this.match(")")&&(this.skipWhitespace(),!this.match("->"))?i:(this.pos=n,null))}parseSet(){if(this.skipWhitespace(),!this.match("set<"))return this.match("set(")&&this.error("Use `set<type>` instead of `set(type)`.","For example `set<number>`"),this.match("set")?"set":null;let n=this.parseType();return n===null&&this.error("Expected a type.","Use `set<number>` for a set of numbers"),this.skipWhitespace(),this.match(">")||this.error("Expected `>`.","For example `set<number>`"),{kind:"set",elements:n}}parseMapElements(){let n=[];for(;;){let t=this.parseKey();t===null&&this.error("Expected a name for the key.","For example `map<key: string>`.","Use backticks for special characters.","For example `map<`key with space`: string>`"),this.skipWhitespace(),this.match(":")||this.error("Expected a type separated by a `:` after the key.",`For example \`map<${t}: string>\``,"Use backticks for special characters.","For example `map<`key with space`: string>`");let r=this.parseType();if(r===null&&this.error("Expected a type for the value. Use `any` for any type.",`For example \`map<${t}: any>.\``),n.push([t,r]),this.skipWhitespace(),!this.match(","))break}if(new Set(n.map(([t])=>t)).size!==n.length){let t=n.find(([r],s)=>n.slice(s+1).some(([o])=>o===r))?.[0];this.error(`Duplicate map key "${t}"`,"Keys in a map must be unique.")}return n}parseMap(){if(this.skipWhitespace(),this.match("map(")&&this.error('Use `map<key: type>` instead of `map(key: type)".',"For example `map<key: string>`"),this.match("map<")){let n=this.parseMapElements();return this.skipWhitespace(),this.match(">")||this.error("Expected a closing `>`.","For example `map<key: string>`"),{kind:"map",elements:Object.fromEntries(n)}}return this.match("map")?"map":null}parseCollection(){if(this.skipWhitespace(),!this.match("collection<"))return this.match("collection(")&&this.error("Use `collection<type>` instead of `collection(type)`.","For example `collection<number>`"),this.match("collection")?"collection":null;let n=this.parseType();return n===null&&this.error("Expected a type.","Use `collection<number>` for a collection of numbers"),this.skipWhitespace(),this.match(">")||this.error('Expected ">".',"For example `collection<number>`"),{kind:"collection",elements:n}}parsePrimary(){let n=this.parseGroup()??this.parseNegationType()??this.parseList()??this.parseSet()??this.parseMap()??this.parseCollection()??this.parseTuple()??this.parsePrimitiveType()??this.parseValue()??this.parseTypeReference();if(n===null){let i="";for(;!this.isEOF()&&/[a-zA-Z_]/.test(this.peek());)i+=this.consume();if(!i)return null;let t=Aa(i,[...$n,"vector","matrix"]);return t&&this.error(`Unknown keyword "${i}"`,`Did you mean "${t}"?`),null}if(this.skipWhitespace(),this.match("->")){let i=this.parseType();i===null&&this.error("Expected return type","Use `any` for any type, `nothing` for no return value or `never` for a function that never returns"),n={kind:"signature",args:[{type:n}],result:i}}return n}parseNegationType(){if(!this.match("!"))return null;let n=this.parsePrimary();return n===null&&this.error("Expected type"),{kind:"negation",type:n}}parseIntersectionType(){let n=this.parseFunctionSignature()??this.parsePrimary();if(n===null)return null;let i=[n];for(this.skipWhitespace();this.match("&");)this.skipWhitespace(),n=this.parsePrimary(),n===null&&this.error("Expected type"),i.push(n);return i.length===1?i[0]:{kind:"intersection",types:i}}parseUnionType(){let n=this.parseIntersectionType();if(n===null)return null;let i=[n];for(this.skipWhitespace();this.match("|");)n=this.parseIntersectionType(),n===null&&this.error("Expected type"),i.push(n);return i.length===1?i[0]:{kind:"union",types:i}}parseType(){if(this.skipWhitespace(),this.isEOF())return null;if(this.peek()==="("){let n=this.parseFunctionSignature();if(n)return n}return this.parseUnionType()}parse(){let n=this.pos;this.parseName()!==null&&(this.pos=n,this.error("Named elements must be enclosed in parentheses"));let i=this.parseType();return i===null&&this.error("Syntax error. The type was not recognized."),this.skipWhitespace(),this.isEOF()||this.error("Unexpected character. Could be some mismatched parentheses."),i}};function hp(e){let n=e.pos;if(e.skipWhitespace(),/["]/.test(e.peek())){let i=e.consume(),t="";for(;e.peek()!==i;)e.isEOF()&&e.error("Expected closing quote"),e.match("\\"+i)?t+=i:t+=e.consume();return e.consume(),t}if(e.match("0x")){let i=0;for(;/[0-9a-fA-F]/.test(e.peek());)i=i*16+parseInt(e.consume(),16);return i}if(e.match("0b")){let i=0;for(;/[01]/.test(e.peek());)i=i*2+parseInt(e.consume());return i}if(/[-0-9\.]/.test(e.peek())){let i=0,t=1;if(e.match("-")&&(t=-1),!/[0-9]/.test(e.peek()))return e.pos=n,null;for(;/[0-9]/.test(e.peek());)i=i*10+parseInt(e.consume());if(e.match(".")){let r=0,s=1;for(;/[0-9]/.test(e.peek());)r=r*10+parseInt(e.consume()),s*=10;i+=r/s}if(e.match("e")||e.match("E")){let r=0,s=1;for(e.match("+")&&(s=1),e.match("-")&&(s=-1);/[0-9]/.test(e.peek());)r=r*10+parseInt(e.consume());i*=Math.pow(10,s*r)}return t*i}return e.match("true")?!0:e.match("false")?!1:e.match("nan")?NaN:e.match("infinity")?1/0:e.match("-infinity")?-1/0:(e.pos=n,null)}function k(e){return e===void 0?void 0:Sn(e)?e:typeof e!="string"?void 0:$n.includes(e)?e:new vs(e,{value:hp}).parse()}function Ra(e){let n=new Set;for(let{name:i}of e)if(i){if(n.has(i))return i;n.add(i)}return""}var gp={number:mr,non_finite_number:[],finite_number:["finite_complex","finite_real","finite_integer","finite_rational"],complex:["finite_complex","imaginary","finite_real","finite_rational","finite_integer","non_finite_number"],finite_complex:["imaginary","finite_real","finite_rational","finite_integer"],imaginary:[],real:["rational","integer","finite_real","finite_rational","finite_integer","non_finite_number"],finite_real:["finite_rational","finite_integer"],rational:["finite_rational","finite_integer","integer","non_finite_number"],finite_rational:["finite_integer"],integer:["finite_integer","non_finite_number"],finite_integer:[],any:$n,unknown:[],nothing:[],never:[],error:[],value:Es,scalar:gr,collection:hr,list:[],set:[],tuple:[],map:[],function:[],symbol:[],boolean:[],string:[],expression:Ns};function xt(e,n){return n==="any"||e==="never"?!0:e==="unknown"||n==="unknown"?!1:e===n?!0:gp[n].includes(e)}function v(e,n){if(typeof e=="string"&&typeof n=="string"&&e===n||(typeof e=="string"&&(e=k(e)),typeof n=="string"&&(n=k(n)),n==="any"))return!0;if(n==="never"||n==="error")return!1;if(n==="nothing")return e==="nothing";if(e==="nothing")return!1;if(n==="unknown")return!0;if(e==="unknown")return!1;if(typeof n=="string")return typeof e=="string"?xt(e,n):e.kind==="value"?typeof e.value=="boolean"?n==="boolean":typeof e.value=="number"?Number.isInteger(e.value)?xt("integer",n):xt("number",n):typeof e.value=="boolean"?xt("boolean",n):typeof e.value=="string"?xt("string",n):!1:n==="numeric"?Ma(e):n==="function"?La(e):n==="expression"?xp(e):n==="scalar"?Ca(e):n==="value"?Oa(e):n==="collection"?Pa(e):n==="tuple"?e.kind==="tuple":n==="list"?e.kind==="list":n==="set"?e.kind==="set":n==="map"?e.kind==="map":e.kind==="union"?e.types.every(i=>v(i,n)):!1;if(n.kind==="union")return typeof e!="string"&&e.kind==="union"?e.types.every(i=>n.types.some(t=>v(i,t))):n.types.some(i=>v(e,i));if(typeof e=="string")return!1;if(e.kind==="reference"&&n.kind==="reference")return e.ref===n.ref;if(e.kind==="union")return e.types.some(i=>v(i,n));if(e.kind==="intersection"&&n.kind==="intersection")return n.types.every(i=>e.types.some(t=>v(t,i)));if(e.kind==="intersection")return e.types.every(i=>v(i,n));if(n.kind==="intersection")return n.types.every(i=>v(e,i));if(e.kind==="signature"&&n.kind==="signature"){if(!v(e.result,n.result))return!1;if(n.args){if(!e.args||e.args.length!==n.args.length)return!1;for(let i=0;i<e.args.length;i++)if(!v(n.args[i].type,e.args[i].type))return!1}else if(e.args)return!1;if(n.optArgs){if(!e.optArgs||e.optArgs.length!==n.optArgs.length)return!1;for(let i=0;i<e.optArgs.length;i++)if(!v(n.optArgs[i].type,e.optArgs[i].type))return!1}else if(e.optArgs)return!1;if(n.restArg){if(!e.restArg||!v(n.restArg.type,e.restArg.type))return!1}else if(e.restArg)return!1;return!0}if(e.kind==="map"&&n.kind==="map"){let i=Object.entries(e.elements),t=Object.entries(n.elements);for(let r=0;r<t.length;r++){let[s,o]=t[r],a=i.findIndex(f=>f[0]===s);if(a===-1)return!1;let u=o,l=i[a][1];if(!v(l,u))return!1}return!0}if(n.kind==="collection")return e.kind==="collection"||e.kind==="list"||e.kind==="set"?!!v(e.elements,n.elements):e.kind==="tuple"?e.elements.every(i=>v(i.type,n.elements)):!1;if(e.kind==="tuple"&&n.kind==="tuple"){if(e.elements.length!==n.elements.length)return!1;for(let i=0;i<e.elements.length;i++){let t=e.elements[i],r=n.elements[i];if(!v(t.type,r.type)||t.name!==r.name)return!1}return!0}if(n.kind==="list"&&e.kind==="list"){if(!v(e.elements,n.elements))return!1;if(n.dimensions){if(!e.dimensions||e.dimensions.length!==n.dimensions.length)return!1;for(let i=0;i<e.dimensions.length;i++)if(n.dimensions[i]!==-1&&e.dimensions[i]!==n.dimensions[i])return!1}return!0}if(n.kind==="set"&&e.kind==="set")return!!v(e.elements,n.elements);if(e.kind==="negation"&&n.kind==="negation")return v(e.type,n.type);if(n.kind==="negation")return!v(e,n.type);if(n.kind==="value"&&e.kind==="value")return n.value===e.value;if(e.kind==="value"){if(typeof e.value=="boolean")return v("boolean",n);if(typeof e.value=="number")return Number.isInteger(e.value)?v("integer",n):v("real",n);if(typeof e.value=="string")return v("string",n)}return!1}function Ma(e){return typeof e=="string"?mr.includes(e):e.kind==="value"?typeof e.value=="number":!1}function Ca(e){return Ma(e)?!0:typeof e=="string"?gr.includes(e):e.kind==="value"?["string","boolean","number"].includes(typeof e.value):!1}function Pa(e){return typeof e=="string"?hr.includes(e):["collection","list","set","tuple","map"].includes(e.kind)}function Oa(e){return Ca(e)||Pa(e)}function La(e){return e==="function"||typeof e!="string"&&e.kind==="signature"}function xp(e){return!!(typeof e=="string"&&["expression","symbol","function"].includes(e)||Oa(e)||La(e))}var yt=class yt{constructor(n){typeof n=="string"?this.type=k(n):this.type=n}matches(n){return n instanceof yt?v(this.type,n.type):v(this.type,n)}is(n){return v(this.type,n)&&v(n,this.type)}get isUnknown(){return this.type==="unknown"}toString(){return ne(this.type)}toJSON(){return ne(this.type)}[Symbol.toPrimitive](n){return n==="string"?this.toString():null}valueOf(){return ne(this.type)}};yt.unknown=new yt("unknown");var C=yt;function yp(e){let n=[];for(let i=0;i<e.length;i++){let t=e.charCodeAt(i);if(t>=55296&&t<=56319){let r=e.charCodeAt(i+1);if(r>=56320&&r<=57343){let s=t-55296,o=r-56320;t=2**16+s*2**10+o,i++}}n.push(t)}return n}var xr=8205,Fa=[127462,127487];function qa(e){return e===xr||e===65038||e===65039||e>=127995&&e<=128e3||e>=129456&&e<=129460||e>=917536&&e<=917632}function bp(e){return e>=Fa[0]&&e<=Fa[1]}function $a(e){if(/^[\u0020-\u00FF]*$/.test(e))return e;let n=[],i=yp(e),t=0;for(;t<i.length;){let r=i[t++],s=i[t];if(s===xr){let o=t-1;for(t+=2;i[t]===xr;)t+=2;n.push(String.fromCodePoint(...i.slice(o,2*t-o+1)))}else if(qa(s)){let o=t-1;for(;qa(i[t]);)t+=i[t]===xr?2:1;n.push(String.fromCodePoint(...i.slice(o,2*t-o-1)))}else bp(r)?(t+=1,n.push(String.fromCodePoint(...i.slice(t-2,2)))):n.push(String.fromCodePoint(r))}return n}var Ts=class{constructor(n){this.obeyspaces=!1;n=n.replace(/[\u200E\u200F\u2066-\u2069\u202A-\u202E]/g,""),n=n.replace(/\u2212/g,"-"),this.s=$a(n),this.pos=0}end(){return this.pos>=this.s.length}get(){return this.pos<this.s.length?this.s[this.pos++]:""}peek(){return this.s[this.pos]}match(n){let i;return typeof this.s=="string"?i=n.exec(this.s.slice(this.pos)):i=n.exec(this.s.slice(this.pos).join("")),i?.[0]?(this.pos+=i[0].length,i[0]):null}next(){if(this.end())return null;if(!this.obeyspaces&&this.match(/^[ \f\n\r\t\v\xA0\u2028\u2029]+/))return"<space>";if(this.obeyspaces&&this.match(/^[ \f\n\r\t\v\xA0\u2028\u2029]/))return"<space>";let n=this.get();if(n==="\\"){if(!this.end()){let i=this.match(/^[a-zA-Z]+/);if(i)this.match(/^[ \f\n\r\t\v\xA0\u2028\u2029]*/);else if(i=this.get(),i===" ")return"<space>";return"\\"+i}}else{if(n==="{")return"<{>";if(n==="}")return"<}>";if(n==="^"){if(this.peek()==="^"){this.get();let i=this.match(/^(\^(\^(\^(\^[0-9a-f])?[0-9a-f])?[0-9a-f])?[0-9a-f])?[0-9a-f][0-9a-f]/);if(i)return String.fromCodePoint(parseInt(i.slice(i.lastIndexOf("^")+1),16))}return n}else if(n==="#"){if(!this.end()){let i=!1;if(/[0-9?]/.test(this.peek())&&(i=!0,this.pos+1<this.s.length)){let t=this.s[this.pos+1];i=/[^0-9A-Za-z]/.test(t)}return i?"#"+this.get():"#"}}else if(n==="$")return this.peek()==="$"?(this.get(),"<$$>"):"<$>"}return n}};function Ep(e,n){let i=e.next();if(!i)return[];let t=[];if(i!=="\\relax"){if(i==="\\noexpand")i=e.next(),i&&t.push(i);else if(i==="\\obeyspaces")e.obeyspaces=!0;else if(i==="\\space"||i==="~")t.push("<space>");else if(i==="\\bgroup")t.push("<{>");else if(i==="\\egroup")t.push("<}>");else if(i==="\\string")i=e.next(),i&&(i[0]==="\\"?Array.from(i).forEach(r=>t.push(r==="\\"?"\\backslash":r)):i==="<{>"?t.push("\\{"):i==="<space>"?t.push("~"):i==="<}>"&&t.push("\\}"));else if(i==="\\csname"){for(;e.peek()==="<space>";)e.next();let r="",s=!1,o=[];do{if(o.length===0)if(/^#[0-9?]$/.test(e.peek())){let a=e.get().slice(1);o=de(n?.[a]??n?.["?"]??"\\placeholder{}",n),i=o[0]}else i=e.next(),o=i?[i]:[];s=o.length===0,!s&&i==="\\endcsname"&&(s=!0,o.shift()),s||(s=i==="<$>"||i==="<$$>"||i==="<{>"||i==="<}>"||!!i&&i.length>1&&i[0]==="\\"),s||(r+=o.shift())}while(!s);r&&t.push("\\"+r),t=t.concat(o)}else if(i!=="\\endcsname")if(i.length>1&&i[0]==="#"){let r=i.slice(1);t=t.concat(de(n?.[r]??n?.["?"]??"\\placeholder{}",n))}else t.push(i)}return t}function de(e,n=[]){let i=e.toString().split(/\r?\n/),t="",r="";for(let a of i){t+=r,r=" ";let u=a.match(/((?:\\%)|[^%])*/);u!==null&&(t+=u[0])}let s=new Ts(t),o=[];do o.push(...Ep(s,n));while(!s.end());return o}function yr(e){return de(e).length}function b(e){let n="",i="";for(let t of e)t!=null&&(typeof t=="string"&&(/[a-zA-Z]/.test(t[0])&&(i+=n),/\\[a-zA-Z]+\*?$/.test(t)?n=" ":n=""),i+=t.toString());return i}function Ii(e,n,i){return n.includes(e)&&(n=`{${n}}`),/^[0-9]$/.test(i)?`${n}${e}${i}`:`${n}${e}{${i}}`}function tn(e){let n=[];if(Array.isArray(e))for(let t of e)Array.isArray(t)?n=[...n,...t]:n.push(t);else n=[e];return b(n.map(t=>({"<space>":" ","<$$>":"$$","<$>":"$","<{>":"{","<}>":"}"})[t]??t))}function Va(e){return!("kind"in e)||e.kind==="expression"}function za(e){return"kind"in e&&e.kind==="symbol"}function bt(e){return"kind"in e&&e.kind==="matchfix"}function Ss(e){return"kind"in e&&e.kind==="infix"}function br(e){return"kind"in e&&e.kind==="prefix"}function _s(e){return"kind"in e&&e.kind==="postfix"}function Ga(e){return"kind"in e&&e.kind==="environment"}var ni=[{latexTrigger:["\\not","<"],kind:"infix",associativity:"any",precedence:246,parse:"NotLess"},{name:"NotLess",latexTrigger:["\\nless"],kind:"infix",associativity:"any",precedence:246},{latexTrigger:["<"],kind:"infix",associativity:"any",precedence:245,parse:"Less"},{name:"Less",latexTrigger:["\\lt"],kind:"infix",associativity:"any",precedence:245},{latexTrigger:["<","="],kind:"infix",associativity:"any",precedence:241,parse:"LessEqual"},{name:"LessEqual",latexTrigger:["\\le"],kind:"infix",associativity:"any",precedence:241},{latexTrigger:["\\leq"],kind:"infix",associativity:"any",precedence:241,parse:"LessEqual"},{latexTrigger:["\\leqslant"],kind:"infix",associativity:"any",precedence:250,parse:"LessEqual"},{name:"LessNotEqual",latexTrigger:["\\lneqq"],kind:"infix",associativity:"any",precedence:245},{name:"NotLessNotEqual",latexTrigger:["\\nleqq"],kind:"infix",associativity:"any",precedence:245},{name:"LessOverEqual",latexTrigger:["\\leqq"],kind:"infix",associativity:"any",precedence:250},{name:"GreaterOverEqual",latexTrigger:["\\geqq"],kind:"infix",associativity:"any",precedence:250,parse:"GreaterEqual"},{name:"Equal",latexTrigger:["="],kind:"infix",associativity:"right",precedence:245},{latexTrigger:["*","="],kind:"infix",associativity:"right",precedence:245,parse:"StarEqual"},{name:"StarEqual",latexTrigger:["\\star","="],kind:"infix",associativity:"right",precedence:245},{name:"PlusEqual",latexTrigger:["+","="],kind:"infix",associativity:"right",precedence:245},{name:"MinusEqual",latexTrigger:["-","="],kind:"infix",associativity:"right",precedence:245},{name:"SlashEqual",latexTrigger:["/","="],kind:"infix",associativity:"right",precedence:245},{name:"EqualEqual",latexTrigger:["=","="],kind:"infix",associativity:"right",precedence:245},{name:"EqualEqualEqual",latexTrigger:["=","=","="],kind:"infix",associativity:"right",precedence:250},{name:"TildeFullEqual",latexTrigger:["\\cong"],kind:"infix",associativity:"right",precedence:245},{name:"NotTildeFullEqual",latexTrigger:["\\ncong"],kind:"infix",associativity:"right",precedence:245},{name:"Approx",latexTrigger:["\\approx"],kind:"infix",associativity:"right",precedence:247},{name:"NotApprox",latexTrigger:["\\not","\\approx"],kind:"infix",associativity:"right",precedence:247},{name:"ApproxEqual",latexTrigger:["\\approxeq"],kind:"infix",associativity:"right",precedence:245},{name:"NotApproxEqual",latexTrigger:["\\not","\\approxeq"],kind:"infix",associativity:"right",precedence:250},{name:"NotEqual",latexTrigger:["\\ne"],kind:"infix",associativity:"right",precedence:255},{name:"Unequal",latexTrigger:["!","="],kind:"infix",associativity:"right",precedence:245},{name:"GreaterEqual",latexTrigger:["\\ge"],kind:"infix",associativity:"right",precedence:242},{latexTrigger:["\\geq"],kind:"infix",associativity:"right",precedence:242,parse:"GreaterEqual"},{latexTrigger:[">","="],kind:"infix",associativity:"right",precedence:243,parse:"GreaterEqual"},{latexTrigger:["\\geqslant"],kind:"infix",associativity:"right",precedence:250,parse:"GreaterEqual"},{name:"GreaterNotEqual",latexTrigger:["\\gneqq"],kind:"infix",associativity:"right",precedence:245},{name:"NotGreaterNotEqual",latexTrigger:["\\ngeqq"],kind:"infix",associativity:"right",precedence:245},{latexTrigger:[">"],kind:"infix",associativity:"right",precedence:245,parse:"Greater"},{name:"Greater",latexTrigger:["\\gt"],kind:"infix",associativity:"right",precedence:245},{name:"NotGreater",latexTrigger:["\\ngtr"],kind:"infix",associativity:"right",precedence:244},{latexTrigger:["\\not",">"],kind:"infix",associativity:"right",precedence:244,parse:"NotGreater"},{name:"RingEqual",latexTrigger:["\\circeq"],kind:"infix",associativity:"right",precedence:245},{name:"TriangleEqual",latexTrigger:["\\triangleq"],kind:"infix",associativity:"right",precedence:245},{name:"DotEqual",latexTrigger:["\\doteq"],kind:"infix",associativity:"right",precedence:250},{name:"DotEqualDot",latexTrigger:["\\doteqdot"],kind:"infix",associativity:"right",precedence:250},{name:"FallingDotEqual",latexTrigger:["\\fallingdotseq"],kind:"infix",associativity:"right",precedence:250},{name:"RisingDotEqual",latexTrigger:["\\fallingdotseq"],kind:"infix",associativity:"right",precedence:250},{name:"QuestionEqual",latexTrigger:["\\questeq"],kind:"infix",associativity:"right",precedence:245},{name:"MuchLess",latexTrigger:["\\ll"],kind:"infix",associativity:"right",precedence:245},{name:"MuchGreater",latexTrigger:["\\gg"],kind:"infix",associativity:"right",precedence:245},{name:"Precedes",latexTrigger:["\\prec"],kind:"infix",associativity:"right",precedence:245},{name:"Succeeds",latexTrigger:["\\succ"],kind:"infix",associativity:"right",precedence:245},{name:"PrecedesEqual",latexTrigger:["\\preccurlyeq"],kind:"infix",associativity:"right",precedence:245},{name:"SucceedsEqual",latexTrigger:["\\curlyeqprec"],kind:"infix",associativity:"right",precedence:245},{name:"NotPrecedes",latexTrigger:["\\nprec"],kind:"infix",associativity:"right",precedence:245},{name:"NotSucceeds",latexTrigger:["\\nsucc"],kind:"infix",associativity:"right",precedence:245},{name:"Between",latexTrigger:["\\between"],kind:"infix",associativity:"right",precedence:250}];function Is(e,n,i={}){let{contract:t=.125,step:r=1,power:s=2,atol:o=1e-16,rtol:a=o>0?0:Math.sqrt(Number.EPSILON),maxeval:u=1e6,breaktol:l=2}=i;if(!isFinite(n))return Is(E=>e(1/E),1/n,{rtol:a,atol:o,maxeval:u,contract:Math.abs(t)>1?1/t:t,step:1/r,power:s});let f=r,c=Math.pow(1/t,s),p=e(n+f),m=[p],y=1/0,x=1;for(;x<u;){x+=1,f*=t,m.push(e(n+f));let E=c,_=1/0;for(let R=m.length-2;R>=0;R--){let I=m[R];m[R]=m[R+1]+(m[R+1]-m[R])/(E-1);let q=Math.abs(m[R]-I);_=Math.min(_,q),q<y&&(p=m[R],y=q),E*=c}if(_>l*y||!isFinite(_)||y<=Math.max(a*Math.abs(p),o))break}return[p,y]}function K(e){if(typeof e=="bigint")return e;if(typeof e=="number")return Number.isInteger(e)?e>=Number.MAX_SAFE_INTEGER&&e<=Number.MAX_SAFE_INTEGER?BigInt(e):K(e.toString()):null;if(e instanceof M)return e.isInteger()?K(e.toString()):null;let n=e.toLowerCase(),i=n.match(/([+-]?[0-9]*)(?:\.([0-9]+))?e([+-]?[0-9]+)$/);if(i){let s=parseInt(i[3])-(i[2]?i[2].length:0);if(s<0)return null;n=(i[1]??"")+(i[2]??"")+"0".repeat(s)}if(n.indexOf(".")>=0||!/^[+-]?[0-9]+$/.test(n))return null;try{return BigInt(n)}catch(r){return console.error(r.message),null}}var Ua=0x3ffffffffffe5,Bs=new Set([2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997,1009,1013,1019,1021,1031,1033,1039,1049,1051,1061,1063,1069,1087,1091,1093,1097,1103,1109,1117,1123,1129,1151,1153,1163,1171,1181,1187,1193,1201,1213,1217,1223,1229,1231,1237,1249,1259,1277,1279,1283,1289,1291,1297,1301,1303,1307,1319,1321,1327,1361,1367,1373,1381,1399,1409,1423,1427,1429,1433,1439,1447,1451,1453,1459,1471,1481,1483,1487,1489,1493,1499,1511,1523,1531,1543,1549,1553,1559,1567,1571,1579,1583,1597,1601,1607,1609,1613,1619,1621,1627,1637,1657,1663,1667,1669,1693,1697,1699,1709,1721,1723,1733,1741,1747,1753,1759,1777,1783,1787,1789,1801,1811,1823,1831,1847,1861,1867,1871,1873,1877,1879,1889,1901,1907,1913,1931,1933,1949,1951,1973,1979,1987,1993,1997,1999,2003,2011,2017,2027,2029,2039,2053,2063,2069,2081,2083,2087,2089,2099,2111,2113,2129,2131,2137,2141,2143,2153,2161,2179,2203,2207,2213,2221,2237,2239,2243,2251,2267,2269,2273,2281,2287,2293,2297,2309,2311,2333,2339,2341,2347,2351,2357,2371,2377,2381,2383,2389,2393,2399,2411,2417,2423,2437,2441,2447,2459,2467,2473,2477,2503,2521,2531,2539,2543,2549,2551,2557,2579,2591,2593,2609,2617,2621,2633,2647,2657,2659,2663,2671,2677,2683,2687,2689,2693,2699,2707,2711,2713,2719,2729,2731,2741,2749,2753,2767,2777,2789,2791,2797,2801,2803,2819,2833,2837,2843,2851,2857,2861,2879,2887,2897,2903,2909,2917,2927,2939,2953,2957,2963,2969,2971,2999,3001,3011,3019,3023,3037,3041,3049,3061,3067,3079,3083,3089,3109,3119,3121,3137,3163,3167,3169,3181,3187,3191,3203,3209,3217,3221,3229,3251,3253,3257,3259,3271,3299,3301,3307,3313,3319,3323,3329,3331,3343,3347,3359,3361,3371,3373,3389,3391,3407,3413,3433,3449,3457,3461,3463,3467,3469,3491,3499,3511,3517,3527,3529,3533,3539,3541,3547,3557,3559,3571,3581,3583,3593,3607,3613,3617,3623,3631,3637,3643,3659,3671,3673,3677,3691,3697,3701,3709,3719,3727,3733,3739,3761,3767,3769,3779,3793,3797,3803,3821,3823,3833,3847,3851,3853,3863,3877,3881,3889,3907,3911,3917,3919,3923,3929,3931,3943,3947,3967,3989,4001,4003,4007,4013,4019,4021,4027,4049,4051,4057,4073,4079,4091,4093,4099,4111,4127,4129,4133,4139,4153,4157,4159,4177,4201,4211,4217,4219,4229,4231,4241,4243,4253,4259,4261,4271,4273,4283,4289,4297,4327,4337,4339,4349,4357,4363,4373,4391,4397,4409,4421,4423,4441,4447,4451,4457,4463,4481,4483,4493,4507,4513,4517,4519,4523,4547,4549,4561,4567,4583,4591,4597,4603,4621,4637,4639,4643,4649,4651,4657,4663,4673,4679,4691,4703,4721,4723,4729,4733,4751,4759,4783,4787,4789,4793,4799,4801,4813,4817,4831,4861,4871,4877,4889,4903,4909,4919,4931,4933,4937,4943,4951,4957,4967,4969,4973,4987,4993,4999,5003,5009,5011,5021,5023,5039,5051,5059,5077,5081,5087,5099,5101,5107,5113,5119,5147,5153,5167,5171,5179,5189,5197,5209,5227,5231,5233,5237,5261,5273,5279,5281,5297,5303,5309,5323,5333,5347,5351,5381,5387,5393,5399,5407,5413,5417,5419,5431,5437,5441,5443,5449,5471,5477,5479,5483,5501,5503,5507,5519,5521,5527,5531,5557,5563,5569,5573,5581,5591,5623,5639,5641,5647,5651,5653,5657,5659,5669,5683,5689,5693,5701,5711,5717,5737,5741,5743,5749,5779,5783,5791,5801,5807,5813,5821,5827,5839,5843,5849,5851,5857,5861,5867,5869,5879,5881,5897,5903,5923,5927,5939,5953,5981,5987,6007,6011,6029,6037,6043,6047,6053,6067,6073,6079,6089,6091,6101,6113,6121,6131,6133,6143,6151,6163,6173,6197,6199,6203,6211,6217,6221,6229,6247,6257,6263,6269,6271,6277,6287,6299,6301,6311,6317,6323,6329,6337,6343,6353,6359,6361,6367,6373,6379,6389,6397,6421,6427,6449,6451,6469,6473,6481,6491,6521,6529,6547,6551,6553,6563,6569,6571,6577,6581,6599,6607,6619,6637,6653,6659,6661,6673,6679,6689,6691,6701,6703,6709,6719,6733,6737,6761,6763,6779,6781,6791,6793,6803,6823,6827,6829,6833,6841,6857,6863,6869,6871,6883,6899,6907,6911,6917,6947,6949,6959,6961,6967,6971,6977,6983,6991,6997,7001,7013,7019,7027,7039,7043,7057,7069,7079,7103,7109,7121,7127,7129,7151,7159,7177,7187,7193,7207,7211,7213,7219,7229,7237,7243,7247,7253,7283,7297,7307,7309,7321,7331,7333,7349,7351,7369,7393,7411,7417,7433,7451,7457,7459,7477,7481,7487,7489,7499,7507,7517,7523,7529,7537,7541,7547,7549,7559,7561,7573,7577,7583,7589,7591,7603,7607,7621,7639,7643,7649,7669,7673,7681,7687,7691,7699,7703,7717,7723,7727,7741,7753,7757,7759,7789,7793,7817,7823,7829,7841,7853,7867,7873,7877,7879,7883,7901,7907,7919]),ja=7919;function Za(e){if(Number.isInteger(e)&&e>=0&&e<Number.MAX_SAFE_INTEGER,e<=3)return{[e]:1};let n={},i=0;for(;e%2===0;)i+=1,e/=2;for(i>0&&(n[2]=i),i=0;e%3===0;)i+=1,e/=3;i>0&&(n[3]=i);let t=!1;for(;!t;){if(e===1)return n;let r=Math.sqrt(e);t=!0;for(let s=6;s<=r+6;s+=6){if(e%(s-1)===0){n[s-1]=(n[s-1]??0)+1,e/=s-1,t=!1;break}if(e%(s+1)===0){n[s+1]=(n[s+1]??0)+1,e/=s+1,t=!1;break}}}return n[e]!==void 0?n[e]+=1:n[e]=1,n}function ks(e){if(!Number.isInteger(e)||!Number.isFinite(e)||Number.isNaN(e)||e<=1)return!1;if(e<=ja)return Bs.has(e);for(let n of Bs)if(e%n===0)return!1;return e<Ua&&Np(e),Tp(e,30)?void 0:!1}function Np(e){if(e===1)return 1;if(e%2===0)return 2;if(e%3===0)return 3;if(e%5===0)return 5;let n=Math.floor(Math.sqrt(e)),i=7;for(;i<=n;){if(e%i===0)return i;if(e%(i+4)===0)return i+4;if(e%(i+6)===0)return i+6;if(e%(i+10)===0)return i+10;if(e%(i+12)===0)return i+12;if(e%(i+16)===0)return i+16;if(e%(i+22)===0)return i+22;if(e%(i+24)===0)return i+24;i+=30}return e}function Ha(e){if(e<=1)return!1;if(e<=ja)return ks(Number(e));for(let n of Bs)if(e%BigInt(n)===BigInt(0))return!1;return e<Ua&&(e=vp(e)),Sp(e,30)?void 0:!1}function vp(e){if(e===BigInt(1))return BigInt(1);if(e%BigInt(2)===BigInt(0))return BigInt(2);if(e%BigInt(3)===BigInt(0))return BigInt(3);if(e%BigInt(5)===BigInt(0))return BigInt(5);let n=BigInt(Math.floor(Math.sqrt(Number(e)))),i=BigInt(7);for(;i<=n;){if(e%i===BigInt(0))return i;if(e%(i+BigInt(4))===BigInt(0))return i+BigInt(4);if(e%(i+BigInt(6))===BigInt(0))return i+BigInt(6);if(e%(i+BigInt(10))===BigInt(0))return i+BigInt(10);if(e%(i+BigInt(12))===BigInt(0))return i+BigInt(12);if(e%(i+BigInt(16))===BigInt(0))return i+BigInt(16);if(e%(i+BigInt(22))===BigInt(0))return i+BigInt(22);if(e%(i+BigInt(24))===BigInt(0))return i+BigInt(24);i+=BigInt(30)}return e}function Tp(e,n){let i=0,t=e-1;for(;t%2===0;)t/=2,++i;e:do{let r=Math.pow(2+Math.floor(Math.random()*(e-3)),t)%e;if(!(r===1||r===e-1)){for(let s=i-1;s--;){if(r=r*r%e,r===1)return!1;if(r===e-1)continue e}return!1}}while(--n);return!0}function Sp(e,n){let i=0,t=e-BigInt(1);for(;t%BigInt(2)===BigInt(0);)t=t/BigInt(2),++i;e:do{let r=BigInt(2+Math.floor(Math.random()*(Number(e)-3)))**t%e;if(!(r===BigInt(1)||r===e-BigInt(1))){for(let s=i-1;s--;){if(r=r*r%e,r===BigInt(1))return!1;if(r===e-BigInt(1))continue e}return!1}}while(--n);return!0}var oh=[BigInt(4),BigInt(2),BigInt(4),BigInt(2),BigInt(4),BigInt(6),BigInt(2),BigInt(6)];var ws=21,_p=53,cn=Math.floor(Math.log10(Math.pow(2,_p))),Ds=1e-10,O=1e6,Wa=1024,Et=1e6;function Bi(e,n){if(e>=Number.MAX_SAFE_INTEGER)return[1,e];if(e===0)return[0,0];if(e===1)return[1,1];if(Number.isInteger(e)&&e>0&&e<Number.MAX_SAFE_INTEGER,n===2){let s=[[0,0],[1,1],[1,2],[1,3],[2,1],[1,5],[1,6],[1,7],[1,8],[3,1],[1,10],[1,11],[2,3],[1,13],[1,14],[1,15],[4,1],[1,17],[3,2],[1,19],[1,20]][e];if(s)return s}let i=Za(e),t=1,r=1;for(let s of Object.keys(i)){let o=parseInt(s);t=t*Math.pow(o,Math.floor(i[s]/n)),r=r*Math.pow(o,i[s]%n)}return[t,r]}function rn(e,n){if(e===0)return n;if(n===0||e===n)return e;if(!Number.isInteger(e)||!Number.isInteger(n))return NaN;for(;n!==0;)[e,n]=[n,e%n];return e<0?-e:e}function ki(e,n){return e*n/rn(e,n)}function Ja(e){if(!Number.isInteger(e)||e<0)return NaN;if(e>=170)return 1/0;let n=1;for(let i=2;i<=e;i++)n=n*i;return n}function Ya(e){if(!Number.isInteger(e)||e<0)return NaN;if(e<0)return NaN;if(e<=1)return 1;let n=e;for(;e>2;)e-=2,n*=e;return n}function Qa(e,n=Ds){return typeof e=="number"&&Math.abs(e)<=n?0:e}function Xa(e,n,i=.1){return(e(n-4*i)/280-4*e(n-3*i)/105+e(n-2*i)/5-4*e(n-i)/5+4*e(n+i)/5-e(n+2*i)/5+4*e(n+3*i)/105-e(n+4*i)/280)/i}function ii(e,n,i=1){if(i===0){let s=ii(e,n,-1),o=ii(e,n,1);return s===void 0||o===void 0?NaN:Math.abs(s-o)>1e-5?NaN:(s+o)/2}let[t,r]=Is(e,n,{step:i>0?1:-1});return t}function _n(e){return typeof e=="object"&&e!==null&&"engine"in e}function oe(e){return e.precision>cn}function Nt(e){return typeof e=="string"?e.startsWith("$")&&e.endsWith("$"):!1}function Vn(e){if(typeof e=="number")return e.toString();if(typeof e=="string"){let n=e.trim();if(n.startsWith("$$")&&n.endsWith("$$"))return n.slice(2,-2);if(n.startsWith("$")&&n.endsWith("$"))return n.slice(1,-1)}return Array.isArray(e)?Vn(b(e)):null}function pn(e){let n=0;for(let i=0;i<e.length;i++)n=Math.imul(31,n)+e.charCodeAt(i)|0;return Math.abs(n)}function vt(e){return e==null?[]:typeof e=="string"?[e]:_n(e)?vt(e.symbol):typeof e[Symbol.iterator]=="function"?Array.from(e).map(n=>typeof n=="string"?n:n.symbol):[]}function we(e){return typeof e!="string"?!1:ni.some(n=>n.name===e)}function Er(e){return["Less","LessEqual","Greater","GreaterEqual"].includes(e)}function Nr(e){return["Equal","NotEqual"].includes(e)}function zn(e){let n=e.operator;return typeof n!="string"?!1:Er(n)}function As(e){let n=e.operator;return typeof n!="string"?!1:Nr(n)}function wi(e){if(typeof e=="number")return;let n=e.engine;if(e.symbol==="ImaginaryUnit")return n.One;if(e.re===0)return n.number(e.im);if(e.operator==="Negate")return wi(e.op1)?.neg();if(e.operator==="Complex")return e.op1.is(0)&&!isNaN(e.op2.re)?n.number(e.op2.re):void 0;if(e.operator==="Multiply"&&e.nops===2){let[i,t]=e.ops;if(i.symbol==="ImaginaryUnit")return t;if(t.symbol==="ImaginaryUnit")return i;if(t.isNumberLiteral&&t.re===0&&t.im!==0)return i.mul(t.im);if(i.isNumberLiteral&&i.re===0&&i.im!==0)return t.mul(i.im)}if(e.operator==="Divide"){let i=e.op2;return i.is(0)?void 0:wi(e.op1)?.div(i)}}function Rs(e){if(!e)return;let n={...e};return n.odd&&(n.even=!1),n.even&&(n.odd=!1),n}function Tt(e){if(e==null||typeof e!="object"||_n(e))return!1;if("value"in e||"constant"in e||"inferred"in e||"type"in e){if("type"in e&&typeof e.type!="string")throw new Error("The `type` field of a symbol definition should be of type `string`");if("signature"in e)throw new Error("Symbol definition cannot have a `signature` field. Use a `type` field instead.");if("sgn"in e)throw new Error("Symbol definition cannot have a `sgn` field. Use a `flags.sgn` field instead.");return!0}return!1}function St(e){if(e==null||typeof e!="object"||_n(e))return!1;if(("signature"in e||"complexity"in e)&&"constant"in e)throw new Error("Function definition cannot have a `constant` field and symbol definition cannot have a `signature` field.");if(!("evaluate"in e)&&!("signature"in e)&&!("sgn"in e)&&!("complexity"in e)&&!("canonical"in e))return!1;if("type"in e&&typeof e.type!="function")throw new Error("The `type` field of a function definition should be a function");if("sgn"in e&&typeof e.sgn!="function")throw new Error("The `sgn` field of a function definition should be a function");return!0}function Di(e,n){return n.every(i=>_n(i))?n.every(i=>i.isCanonical)?n:n.map(i=>i.canonical):n.map(i=>e.box(i))}function Fe(e,n){return n.every(i=>_n(i)&&i.isCanonical)?n:n.map(i=>e.box(i))}function vr(e){return e.symbol==="Numbers"?"number":e.symbol==="ComplexNumbers"?"complex":e.symbol==="ImaginaryNumbers"?"imaginary":e.symbol==="RealNumbers"?"real":e.symbol==="RationalNumbers"?"rational":e.symbol==="Integers"?"integer":"unknown"}function Ip(e){if(!e)return e;let n=e.engine,i=n.angularUnit;return i==="rad"||(i==="deg"&&(e=e.mul(n.Pi).div(180)),i==="grad"&&(e=e.mul(n.Pi).div(200)),i==="turn"&&(e=e.mul(n.Pi).mul(2))),e}function Tr(e){if(!e)return e;let n=Ip(e);if(!n)return;if(n.N().im!==0)return n;let i=n.engine,[t,r]=ti(n);if(t.isZero)return i.number(r);let s=i._numericValue(t.bignumRe?t.bignumRe.mod(2):t.re%2);return i.number(r.add(i.Pi.mul(s).N().numericValue))}function ti(e){let n=e.engine;if(e.symbol==="Pi")return[n._numericValue(1),n._numericValue(0)];if(e.operator==="Negate"){let[i,t]=ti(e.ops[0]);return[i.neg(),t.neg()]}if(e.operator==="Add"&&e.nops===2){let[i,t]=ti(e.op1),[r,s]=ti(e.op2);return[i.add(r),t.add(s)]}if(e.operator==="Multiply"&&e.nops===2){if(e.op1.isNumberLiteral){let[i,t]=ti(e.op2),r=e.op1.numericValue;return[i.mul(r),t.mul(r)]}if(e.op2.isNumberLiteral){let[i,t]=ti(e.op1),r=e.op2.numericValue;return[i.mul(r),t.mul(r)]}}if(e.operator==="Divide"&&e.op2.isNumberLiteral){let[i,t]=ti(e.op1),r=e.op2.numericValue;return[i.div(r),t.div(r)]}return[n._numericValue(0),n._numericValue(e.N().numericValue??0)]}var dn=class extends Error{constructor({message:n,value:i,cause:t}={}){super(n??"Operation canceled"),i&&(this.value=i),this.cause=t,this.name="CancellationError"}};async function Ai(e,n,i){let t=performance.now();for(;;){let r=performance.now(),s=16;for(;performance.now()-r<s;){let{done:o,value:a}=e.next();if(o)return a;if(i?.aborted)throw new dn({value:a,cause:i.reason});if(performance.now()-t>=n)throw new dn({value:a,cause:"timeout",message:`Timeout exceeded (${n}ms)`})}await new Promise(o=>setTimeout(o,0))}}function Ri(e,n){let i=Date.now();for(;;){let{done:t,value:r}=e.next();if(t)return r;if(Date.now()-i>=n)throw new dn({value:r,cause:"timeout",message:`Timeout exceeded (${n}ms)`})}}var Ka=100;function ri(e){let n=Bp(e);return n===void 0?!1:Number.isFinite(n)}function si(e){return e=_t(e),e.string!==null?!0:e.functionDefinition?.collection?.at!==void 0}function ie(e){if(e=_t(e),e.string!==null)return!0;let n=e.functionDefinition;return n?n.collection?.at!==void 0&&Number.isFinite(n.collection?.size?.(e)??1/0):!1}function*ee(e){let n=Mi(e);if(!n){yield e;return}let i=e.engine.iterationLimit,t=0;for(;;){let{done:r,value:s}=n.next();if(r)return;if(t++>i)throw new dn({cause:"iteration-limit-exceeded"});yield s}}function Bp(e){e=_t(e);let n=e.string;return n!==null?n.length:e.functionDefinition?.collection?.size?.(e)}function Mi(e){e=_t(e);let n=e.functionDefinition;if(n?.collection?.iterator)return n.collection.iterator(e);let i=e.string;if(i!==null){if(i.length===0)return{next:()=>({done:!0,value:void 0})};let t=0;return{next:()=>({value:e.engine.string(i.charAt(t++)),done:t>i.length})}}}function kp(e,n){return typeof n=="number"?(n<0&&(n=0),{next(){return n===0?{done:!0,value:void 0}:(n--,{done:!1,value:e})}}):{next(){return{done:!1,value:e}}}}function eu(e){if(!e)return;let n={};if(!e.contains||!e.size)throw new Error('A collection must have at least a "contains" and "size" handler');e.contains&&(n.contains=e.contains),e.size&&(n.size=e.size),e.at&&(n.at=e.at),e.iterator&&(n.iterator=e.iterator),e.keys&&(n.keys=e.keys),e.indexOf&&(n.indexOf=e.indexOf),e.subsetOf&&(n.subsetOf=e.subsetOf);let i=n.iterator;return n.at&&!i&&(i=(t,r=1,s=-1)=>{let o=e.at,a=r;return{next(){if(s>=0&&a>=r+s)return{done:!0,value:void 0};let u=o(t,a);return u===void 0?{done:!0,value:void 0}:(a++,{done:!1,value:u})}}},n.iterator=i),n.indexOf||(n.indexOf=(t,r)=>{let s=1,o=i(t),a=o.next();for(;!a.done;){if(r.isSame(a.value))return s;s++,a=o.next()}}),{contains:e.contains,size:e.size,at:e.at,iterator:i,keys:e.keys,indexOf:e.indexOf,subsetOf:e.subsetOf}}function _t(e){return e.symbolDefinition&&e.symbolDefinition.holdUntil==="never"?e.symbolDefinition.value??e:e}function Ms(e){e=e.map(i=>_t(i));let n=e.map(i=>Mi(i)??kp(i));return{next(){let i=n.map(t=>t.next());return i.some(t=>t.done)?{done:!0,value:void 0}:{done:!1,value:i.map(t=>t.value)}}}}function J(e,n){let i=e.every(r=>r.isCanonical)?e:e.map(r=>r.canonical);if(n){let r=o=>o.symbol==="Nothing"||o.operator===n||o.operator==="Sequence";if(i.every(o=>!r(o)))return i;let s=[];for(let o of i)o.symbol!=="Nothing"&&(o.ops&&(o.operator===n||o.operator==="Sequence")?s.push(...J(o.ops,n)):s.push(o));return s}if(i.every(r=>!(r.symbol==="Nothing"||r.operator==="Sequence")))return i;let t=[];for(let r of i)r.symbol!=="Nothing"&&(r.ops&&r.operator==="Sequence"?t.push(...J(r.ops,n)):t.push(r));return t}function Gn(e,n){if(!n||e.every(t=>!t.ops||t.operator!==n))return e;let i=[];for(let t of e)!t.ops||t.operator!==n?i.push(t):i.push(...Gn(t.ops,n));return i.length,e.length,i.length===e.length?e:i}function Cs(e){if(e.every(i=>i.operator!=="Sequence"&&i.operator!=="Delimiter"))return e;let n=[];for(let i of e)if(!i.isValid)n.push(i);else if(i.operator==="Delimiter")if(i.op1.operator==="Sequence"){let t=i.op1.ops??[];t.length===0?n.push(i.engine.box(["Tuple"])):n.push(...Cs(t))}else n.push(i.op1);else i.operator==="Sequence"?i.ops&&n.push(...i.ops):n.push(i);return n}function qe(e,n,i){if(n=J(n),!e.strict||n.length===i)return n;let t=[...n.slice(0,i)],r=Math.min(i,n.length);for(;r<i;)t.push(e.error("missing")),r+=1;for(;r<n.length;)t.push(e.error("unexpected-argument",n[r].toString())),r+=1;return t}function Me(e,n,i){let t=typeof i=="number"?i:i?.count,r=typeof i=="number"?void 0:i?.flatten;if(n=J(n,r),!e.strict){let a="real";for(let u of n)if(v("complex",u.type.type)){a="number";break}for(let u of n)ie(u)||u.infer(a);return n}let s=!0;t??(t=n.length);let o=[];for(let a=0;a<=Math.max(t-1,n.length-1);a++){let u=n[a];if(a>t-1)s=!1,o.push(e.error("unexpected-argument",u.toString()));else if(u===void 0)s=!1,o.push(e.error("missing"));else if(!u.isValid)s=!1,o.push(u);else if(u.isNumber)o.push(u);else if(u.symbol&&!e.lookupSymbol(u.symbol)&&!e.lookupFunction(u.symbol))o.push(u);else if(u.type.isUnknown)o.push(u);else if(ie(u)){for(let l of ee(u))if(!l.isNumber){s=!1;break}s?o.push(u):o.push(e.typeError("number",u.type,u))}else u.symbolDefinition?.inferredType&&v("number",u.type.type)||u.functionDefinition?.inferredSignature&&v("number",u.type.type)||u.operator==="Hold"||u.symbolDefinition?.value?.operator==="Hold"?o.push(u):(s=!1,o.push(e.typeError("number",u.type,u)))}if(s){let a="real";for(let u of o)if(v("complex",u.type.type)){a="number";break}for(let u of o)if(ie(u))for(let l of ee(u))l.infer(a);else u.infer(a)}return o}function In(e,n,i){return n==null?e.error("missing"):i===void 0?e.error("unexpected-argument",n.toString()):(n=n.canonical,!n.isValid||n.type.matches(i)?n:e.typeError(i,n.type,n))}function Sr(e,n,i){if(n.length===i.length&&n.every((r,s)=>r.type.matches(i[s])))return n;let t=[];for(let r=0;r<=i.length-1;r++)t.push(In(e,n[r],i[r]));for(let r=i.length;r<=n.length-1;r++)t.push(e.error("unexpected-argument",n[r].toString()));return t}function Ci(e,n,i,t,r){if(!e.strict||typeof i=="string"||i.kind!=="signature")return null;let s=[],o=!0,a=i.args?.map(c=>c.type)??[],u=i.optArgs?.map(c=>c.type)??[],l=i.restArg?.type,f=0;for(let c of a){let p=n[f++];if(!p){s.push(e.error("missing")),o=!1;continue}if(t){s.push(p);continue}if(!p.isValid){s.push(p),o=!1;continue}if(p.type.isUnknown){s.push(p);continue}if(r&&ie(p)){s.push(p);continue}if(p.symbolDefinition?.inferredType&&p.type.matches(c)){s.push(p);continue}if(p.functionDefinition?.inferredSignature&&p.type.matches(c)){s.push(p);continue}if(!p.type.matches(c)){s.push(e.typeError(c,p.type,p)),o=!1;continue}s.push(p)}for(let c of u){let p=n[f];if(!p)break;if(t){s.push(p),f+=1;continue}if(!p.isValid){s.push(p),o=!1,f+=1;continue}if(p.type.isUnknown){s.push(p),f+=1;continue}if(r&&ie(p)){s.push(p),f+=1;continue}if(p.symbolDefinition?.inferredType&&p.type.matches(c)){s.push(p),f+=1;continue}if(!p.type.matches(c)){s.push(e.typeError(c,p.type,p)),o=!1,f+=1;continue}s.push(p),f+=1}if(l)for(let c of n.slice(f)){if(f+=1,t){s.push(c);continue}if(!c.isValid){s.push(c),o=!1;continue}if(c.type.isUnknown){s.push(c);continue}if(r&&ie(c)){s.push(c);continue}if(c.symbolDefinition?.inferredType&&c.type.matches(l)){s.push(c);continue}if(!c.type.matches(l)){s.push(e.typeError(l,c.type,c)),o=!1;continue}s.push(c)}if(f<n.length)for(let c of n.slice(f))s.push(e.error("unexpected-argument",c.toString())),o=!1;if(!o)return s;f=0;for(let c of a)t||(!r||!ie(n[f]))&&n[f].infer(c),f+=1;for(let c of u){if(!n[f])break;(!r||!ie(n[f]))&&n[f]?.infer(c),f+=1}if(l)for(let c of n.slice(f))t||(!r||!ie(c))&&c.infer(l),f+=1;return null}function It(e,n){for(;n!==BigInt(0);)[e,n]=[n,e%n];return e<0?-e:e}function nu(e,n){return e*n/It(e,n)}function*_r(e){if(e<0)return BigInt(0);if(e<10)return BigInt([1,1,2,6,24,120,720,5040,40320,362880][Number(e)]);if(e%BigInt(2)===BigInt(1))return e*(yield*_r(e-BigInt(1)));let n=e,i=e,t=e,r=0;for(;n>2;)n-=BigInt(2),i+=n,t*=i,r+=1,(r%5e4===0||r>1e4&&r%500===0)&&(yield t);return t}function Bn(e){return e!==null&&Array.isArray(e)}function te(e){return e!==null&&Array.isArray(e)&&typeof e[0]=="number"}function iu(e){return e!==null&&Array.isArray(e)&&typeof e[0]=="bigint"}function mn(e){return e[0]==0}function Ps(e){return e[0]>0}function ve(e){return e[0]==e[1]}function Bt(e){return e[0]===-e[1]}function oi(e){return e[1]==1}function Os(e){return Number(e[0])}function Ls(e){return Number(e[1])}function tu(e){return Number(e[0])/Number(e[1])}function ai(e,n){if(typeof e[0]=="number"&&!Number.isFinite(e[0]))return e;let i=n;if(i===null)return e;if(iu(i))return e=[BigInt(e[0]),BigInt(e[1])],[i[1]*e[0]+i[0]*e[1],i[1]*e[1]];if(!Number.isFinite(i[0]))return i;if(iu(e)){let t=[BigInt(i[0]),BigInt(i[1])];return[t[1]*e[0]+t[0]*e[1],t[1]*e[1]]}return[i[1]*e[0]+i[0]*e[1],i[1]*e[1]]}function hn(e,n){return te(e)&&te(n)?[e[0]*n[0],e[1]*n[1]]:te(e)?[BigInt(e[0])*n[0],BigInt(e[1])*n[1]]:te(n)?[BigInt(n[0])*e[0],BigInt(n[1])*e[1]]:[e[0]*n[0],e[1]*n[1]]}function ui(e){return[-e[0],e[1]]}function ru(e){return e[0]<0?[-e[1],-e[0]]:[e[1],e[0]]}function su(e){return[Number(e[0]),Number(e[1])]}function Ir(e,n){return te(e)&&te(n)?e[1]===1&&n[1]===1?[rn(e[0],n[0]),1]:[rn(e[0],n[0]),ki(e[1],n[1])]:e[1]===1&&n[1]===1?[It(BigInt(e[0]),BigInt(n[0])),BigInt(1)]:[It(BigInt(e[0]),BigInt(n[0])),nu(BigInt(e[1]),BigInt(n[1]))]}function Pi(e){if(te(e)){if(e[0]===1||e[1]===1)return e;if(e[1]<0&&(e=[-e[0],-e[1]]),!Number.isFinite(e[1]))return[0,1];let r=rn(e[0],e[1]);return r<=1?e:[e[0]/r,e[1]/r]}e[1]<0&&(e=[-e[0],-e[1]]);let n=It(e[0],e[1]),[i,t]=n<=1?e:[e[0]/n,e[1]/n];return i<=Number.MAX_SAFE_INTEGER&&i>=Number.MIN_SAFE_INTEGER&&t<=Number.MAX_SAFE_INTEGER?[Number(i),Number(t)]:[i,t]}function ou(e){if(!Number.isFinite(e)||e%1===0)return e;let i=1e-15,t=Math.floor(e),r=1,s=0,o=t,a=1;for(;e-t>i*a*a;){e=1/(e-t),t=Math.floor(e);let u=r;r=o;let l=s;s=a,o=u+t*r,a=l+t*s}return[o,a]}var z=class{get bignumRe(){}get bignumIm(){}isZeroWithTolerance(n){return this.isZero}valueOf(){return this.im===0?this.bignumRe?this.bignumRe.toFixed():this.re:this.N().toString()}[Symbol.toPrimitive](n){return n==="string"?this.toString():this.valueOf()}toJSON(){if(this.im===0){let n=this.re;if(Number.isFinite(n))return n}return this.N().toString()}print(){let n=console.log;n?.(this.toString())}};var Oi=class{static parse(n){let i=new Fs(n),t=i.parseValue();if(i.skipWhitespace(),!i.isAtEnd())throw i.error(`Unexpected token '${i.currentChar()}' after parsing complete value`);return t}},Fs=class{constructor(n){this.index=0;this.text=n}parseValue(){if(this.skipWhitespace(),this.isAtEnd())throw this.error("Unexpected end of input");let n=this.currentChar();return n==="{"?this.parseObject():n==="["?this.parseArray():n==='"'||n==="'"?this.parseString():n==="-"||n==="+"||n>="0"&&n<="9"||n==="."?this.parseNumber():this.parseIdentifier()}parseObject(){let n={};if(this.expectChar("{"),this.skipWhitespace(),this.currentChar()==="}")return this.index++,n;for(;;){this.skipWhitespace();let i,t=this.currentChar();t==='"'||t==="'"?i=this.parseString():i=this.parseIdentifier(),this.skipWhitespace(),this.expectChar(":"),this.skipWhitespace();let r=this.parseValue();if(n[i]=r,this.skipWhitespace(),this.currentChar()===","){if(this.index++,this.skipWhitespace(),this.currentChar()==="}"){this.index++;break}}else if(this.currentChar()==="}"){this.index++;break}else throw this.error(`Expected ',' or '}' in object but found '${this.currentChar()}'`)}return n}parseArray(){let n=[];if(this.expectChar("["),this.skipWhitespace(),this.currentChar()==="]")return this.index++,n;for(;;)if(this.skipWhitespace(),n.push(this.parseValue()),this.skipWhitespace(),this.currentChar()===","){if(this.index++,this.skipWhitespace(),this.currentChar()==="]"){this.index++;break}}else if(this.currentChar()==="]"){this.index++;break}else throw this.error(`Expected ',' or ']' in array but found '${this.currentChar()}'`);return n}parseString(){let n=this.currentChar();if(n!=='"'&&n!=="'")throw this.error(`String should start with a quote, got '${n}'`);this.index++;let i="";for(;!this.isAtEnd();){let t=this.currentChar();if(t===n)return this.index++,i;if(t==="\\"){if(this.index++,this.isAtEnd())throw this.error("Unterminated escape sequence in string");let r=this.currentChar();switch(r){case"b":i+="\b";break;case"f":i+="\f";break;case"n":i+=`
|
|
11
|
-
`;break;case"r":i+="\r";break;case"t":i+=" ";break;case"v":i+="\v";break;case"\\":i+="\\";break;case"'":i+="'";break;case'"':i+='"';break;case"0":i+="\0";break;case"u":{this.index++;let s=this.text.substr(this.index,4);if(!/^[0-9a-fA-F]{4}$/.test(s))throw this.error(`Invalid Unicode escape sequence: \\u${s}`);i+=String.fromCharCode(parseInt(s,16)),this.index+=3;break}default:i+=r}this.index++}else i+=t,this.index++}throw this.error("Unterminated string literal")}parseNumber(){let n=this.index;if(this.text.startsWith("-Infinity",this.index))return this.index+=9,-1/0;if(this.text.startsWith("+Infinity",this.index))return this.index+=9,1/0;if(this.text.startsWith("Infinity",this.index))return this.index+=8,1/0;for(;!this.isAtEnd()&&/[0-9+\-_.eE]/.test(this.currentChar());)this.index++;let i=this.text.slice(n,this.index),t=i.replace(/_/g,""),r=Number(t);if(isNaN(r))throw this.error(`Invalid number: ${i}`);return r}parseIdentifier(){let n=this.index,i=this.currentChar();if(!/[a-zA-Z$_]/.test(i))throw this.error(`Unexpected token '${i}'`);for(this.index++;!this.isAtEnd();){let r=this.currentChar();if(!/[a-zA-Z0-9$_]/.test(r))break;this.index++}let t=this.text.slice(n,this.index);return t==="true"?!0:t==="false"?!1:t==="null"?null:t==="Infinity"?1/0:t==="NaN"?NaN:t}skipWhitespace(){for(;!this.isAtEnd();){let n=this.currentChar();if(/\s/.test(n)){this.index++;continue}if(n==="/"){let i=this.peekChar(1);if(i==="/"){for(this.index+=2;!this.isAtEnd()&&this.currentChar()!==`
|
|
12
|
-
`;)this.index++;continue}else if(i==="*"){for(this.index+=2;!this.isAtEnd()&&!(this.currentChar()==="*"&&this.peekChar(1)==="/");)this.index++;if(this.isAtEnd())throw this.error("Unterminated multi-line comment");this.index+=2;continue}}break}}expectChar(n){if(this.currentChar()!==n)throw this.error(`Expected '${n}' but found '${this.currentChar()}'`);this.index++}currentChar(){return this.text[this.index]}peekChar(n){return this.text[this.index+n]}isAtEnd(){return this.index>=this.text.length}error(n){return new Error(`${n} at position ${this.index}`)}};var Li=["Error","'missing'"];function kn(e){return!!(typeof e=="number"||Fi(e)||typeof e=="string"&&/^[+-]?[0-9\.]/.test(e))}function Fi(e){return e!==null&&typeof e=="object"&&"num"in e}function kr(e){return e!==null&&typeof e=="object"&&"sym"in e}function wp(e){return e!==null&&typeof e=="object"&&"str"in e}function kt(e){return e!==null&&typeof e=="object"&&"fn"in e}function V(e){return e==null?null:typeof e=="object"&&"str"in e?e.str:typeof e!="string"||e.length<2||e.at(0)!=="'"||e.at(-1)!=="'"?null:e.substring(1,e.length-1)}function $s(e){if(e==null||V(e)!==null)return null;let n=h(e);return n?[n,...N(e).map(i=>$s(i)).filter(i=>i!==null)]:e}function h(e){return Array.isArray(e)?e[0]:e==null?"":kt(e)?e.fn[0]:""}function N(e){return Array.isArray(e)?e.slice(1):e!==void 0&&kt(e)?e.fn.slice(1):[]}function d(e,n){return Array.isArray(e)?e[n]??null:e===null||!kt(e)?null:e.fn[n]??null}function Y(e){return e==null?0:Array.isArray(e)?Math.max(0,e.length-1):kt(e)?Math.max(0,e.fn.length-1):0}function Vs(e){return e==null?null:h(e)==="Hold"?d(e,1):e}function A(e){if(typeof e=="string")return/^[+-]?[0-9\.]/.test(e)||e.length>=2&&e[0]==="'"&&e[e.length-1]==="'"?null:e;if(e==null)return null;let n=kr(e)?e.sym:e;return typeof n!="string"?null:n}function au(e){let n=h(e);if(n==="KeyValuePair"||n==="Tuple"||n==="Pair"){let[i,t]=N(e),r=V(i);return r?[r,t??"Nothing"]:null}return null}function zs(e){if(e===null)return null;if(typeof e=="object"&&!("sym"in e)&&!("num"in e)&&!("str"in e)&&!("fn"in e))return e;if(typeof e=="string"&&e[0]==="{"&&e[e.length-1]==="}")try{return Oi.parse(e)}catch{return null}let n=au(e);if(n)return{[n[0]]:n[1]};if(h(e)==="Dictionary"){let i={},t=N(e);for(let r=1;r<Y(e);r++){let s=au(t[r]);s&&(i[s[0]]=s[1])}return i}return null}function wr(e){let n=Object.keys(e);if(n.length===0)return["Dictionary"];if(n.length===1)return["Pair",{str:n[0]},e[n[0]]];let i=[];for(let t of n)i.push(["Pair",{str:t},e[t]]);return["Dictionary",...i]}function Dp(e){if(e=e.toLowerCase().replace(/[nd]$/,"").replace(/[\u0009-\u000d\u0020\u00a0]/g,""),e==="nan")return NaN;if(e==="infinity"||e==="+infinity")return 1/0;if(e==="-infinity")return-1/0;if(/\([0-9]+\)/.test(e)){let[n,i,t,r]=e.match(/(.+)\(([0-9]+)\)(.*)$/)??[];e=i+t.repeat(Math.ceil(16/t.length))+(r??"")}return parseFloat(e)}function D(e){return typeof e=="number"?e:typeof e=="string"?Dp(e):e!==void 0&&Fi(e)?D(e.num):null}function qi(e){if(e==null)return null;if(A(e)==="Half")return[1,2];let n=h(e);if(!n)return null;let i=null,t=null;if(n==="Negate"){let r=qi(N(e)[0]);if(r)return[-r[0],r[1]]}if(n==="Rational"||n==="Divide"){let[r,s]=N(e);i=D(r)??NaN,t=D(s)??NaN}if(n==="Power"){let[r,s]=N(e),o=D(s);o===1?(i=D(r),t=1):o===-1&&(i=1,t=D(r))}if(n==="Multiply"){let[r,s]=N(e);if(h(s)==="Power"){let[o,a]=N(s);D(a)===-1&&(i=D(r),t=D(o))}}return i===null||t===null?null:Number.isInteger(i)&&Number.isInteger(t)?[i,t]:null}function Br(e,n){let i=A(e);if(i&&n[i])return n[i];let t=h(e);return t?[Br(t,n),...N(e).map(r=>Br(r,n))]:e}function Dr(e,n){let i=null;if(Array.isArray(e)&&(i=e),kt(e)&&(i=e.fn),i===null)return[];let t=1,r=[];for(;t<i.length;)r.push(n(i[t])),t+=1;return r}function $i(e,n,i){let t=h(n),r=h(i);return t===e&&r===e?[e,...N(n),...N(i)]:t===e?[e,...N(n),i]:r===e?[e,n,...N(i)]:[e,n,i]}function wn(e){if(e==null)return null;let n=h(e);if(n==="Delimiter"){if(e=d(e,1),e===null)return[];if(n=h(e),n!=="Sequence")return[e]}return n!=="Sequence"?null:N(e)}function U(e){return e==null||e==="Nothing"?!0:h(e)==="Sequence"&&Y(e)===0}function F(e){return U(e)?Li:e}function qs(e){return e[0]==="Square"?qs(e.slice(1))+2:e.reduce((n,i)=>n+wt(i),0)}function wt(e){if(e===null)return 0;if(typeof e=="number"||typeof e=="string"||kn(e)||kr(e)||wp(e))return 1;if(Array.isArray(e))return qs(e);if("fn"in e)return qs(e.fn);let n=zs(e);if(n){let i=Object.keys(n);return 1+i.length+i.reduce((t,r)=>t+wt(n[r]),0)}return 0}function Ap(e){if(e==="N")return[0,""];let n={I:1,V:5,X:10,L:50,C:100,D:500,M:1e3},i=0,t=0;e=e.toUpperCase();for(let r=e.length-1;r>=0;r--){let s=n[e[r]];if(s===void 0)return[i,e.slice(r)];s<t?i-=s:i+=s,t=s}return[i,""]}function Vi(e,n){if(e=e.trim(),e.length===0)return[NaN,""];if(e.startsWith("+"))return Vi(e.slice(1),n);if(e.startsWith("-")){let[r,s]=Vi(e.slice(1),n);return[-r,s]}let i=10;if(typeof n=="string"&&(n=n.toLowerCase()),e.startsWith("0x"))i=16,e=e.slice(2);else if(e.startsWith("0b"))i=2,e=e.slice(2);else{if(n==="roman")return Ap(e);if(n==="base64"||n==="base-64")try{return[parseInt(btoa(e)),""]}catch{return[NaN,""]}else typeof n=="number"?i=n:typeof n=="string"&&(i=parseInt(n))}let t=0;for(let r=0;r<e.length;r++){let s={" ":-1,"\xA0":-1,"\u2000":-1,"\u2001":-1,"\u2002":-1,"\u2003":-1,"\u2004":-1,"\u2005":-1,"\u2006":-1,"\u2007":-1,"\u2008":-1,"\u2009":-1,"\u200A":-1,"\u200B":-1,"\u202F":-1,"\u205F":-1,_:-1,",":-1,0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,b:11,c:12,d:13,e:14,f:15,g:16,h:17,i:18,j:19,k:20,l:21,m:22,n:23,o:24,p:25,q:26,r:27,s:28,t:29,u:30,v:31,w:32,x:33,y:34,z:35}[e[r]];if(s!==-1){if(s===void 0)return[t,e.substring(r)];if(s>=i)return[t,e.substring(r)];t=t*i+s}}return[t,""]}function ge(e,n){if(typeof n=="number"&&typeof e=="number")return e.toFixed(n);let i=e.toString();if(typeof e=="number"&&Number.isInteger(e)&&i.includes("e")){let t=BigInt(e).toString(),r=t.match(/0+$/);if((r?r[0].length:0)<=5)return t}else if(typeof e=="bigint"){let t=i.match(/0+$/),r=t?t[0].length:0;if(r>5)return`${i.slice(0,-r)}e+${r}`}return i}function uu(e){if(typeof e=="number")return Number.isInteger(e)?BigInt(e):null;if(e==null||!kn(e))return null;let n=Fi(e)?e.num:e;if(typeof n=="number")return Number.isInteger(n)?BigInt(n):null;if(typeof n!="string")return null;let i=n.toLowerCase().replace(/[nd]$/,"").replace(/[\u0009-\u000d\u0020\u00a0]/g,"");return i==="nan"||i==="infinity"||i==="+infinity"||i==="-infinity"?null:K(i)}function Ie(e,n){if(typeof e=="number")return isNaN(e)?"NaN":Number.isFinite(e)?typeof n=="number"?{num:e.toFixed(n)}:e:e<0?"NegativeInfinity":"PositiveInfinity";if(e>=Number.MIN_SAFE_INTEGER&&e<=Number.MAX_SAFE_INTEGER)return Number(e);let i=ge(e);return Number(e).toString()===i?Number(e):{num:i}}var Z=class e extends z{constructor(i,t,r){super();this.im=0;if(this.factory=t,this.bignum=r,typeof i=="number"){!Number.isFinite(i)||Number.isInteger(i),this.rational=[i,1],this.radical=1;return}if(typeof i=="bigint"){this.rational=[i,BigInt(1)],this.radical=1;return}typeof i!="object"||"im"in i;let s=1;if(typeof s!="number"||Number.isInteger(s),s==0){this.rational=[0,1],this.radical=1;return}let o=i.rational?[...i.rational]:[1,1];s!=1&&(typeof s=="bigint"?o=hn(o,[s,BigInt(1)]):o=hn(o,[s,1])),this.rational=o,this.radical=i.radical??1,this.radical<=O&&this.radical>=1,this.normalize()}get type(){return this.isNaN?"number":this.isPositiveInfinity||this.isNegativeInfinity?"non_finite_number":this.radical!==1?(mn(this.rational),"finite_real"):oi(this.rational)?"finite_integer":"finite_rational"}get isExact(){return!0}get asExact(){return this}toJSON(){if(this.isNaN)return"NaN";if(this.isPositiveInfinity)return"PositiveInfinity";if(this.isNegativeInfinity)return"NegativeInfinity";if(this.isZero)return 0;if(this.isOne)return 1;if(this.isNegativeOne)return-1;let i=t=>oi(t)?Ie(t[0]):["Rational",Ie(t[0]),Ie(t[1])];return this.radical===1?i(this.rational):ve(this.rational)?["Sqrt",this.radical]:Bt(this.rational)?["Negate",["Sqrt",this.radical]]:this.rational[0]==1?["Divide",["Sqrt",this.radical],Ie(this.rational[1])]:this.rational[0]==-1?["Negate",["Divide",["Sqrt",this.radical],Ie(this.rational[1])]]:["Multiply",i(this.rational),["Sqrt",this.radical]]}clone(i){return new e(i,this.factory,this.bignum)}toString(){if(this.isZero)return"0";if(this.isOne)return"1";if(this.isNegativeOne)return"-1";let i=r=>oi(r)?ge(r[0]):`${ge(r[0])}/${ge(r[1])}`;if(this.radical===1)return i(this.rational);let t=r=>`sqrt(${ge(r)})`;return ve(this.rational)?t(this.radical):Bt(this.rational)?`-${t(this.radical)}`:this.rational[0]==1?`${t(this.radical)}/${ge(this.rational[1])}`:this.rational[0]==-1?`-${t(this.radical)}/${ge(this.rational[1])}`:`${i(this.rational)}${t(this.radical)}`}get sign(){return mn(this.rational)?0:Ps(this.rational)?1:-1}get re(){return tu(this.rational)*Math.sqrt(this.radical)}get bignumRe(){let i,t=this.rational;return te(t)?i=this.bignum(t[0]).div(t[1]):i=this.bignum(t[0].toString()).div(this.bignum(t[1].toString())),this.radical===1?i:i.mul(this.bignum(this.radical).sqrt())}get numerator(){return this.rational[1]==1?this:this.clone({rational:te(this.rational)?[this.rational[0],1]:[this.rational[0],BigInt(1)],radical:this.radical})}get denominator(){return te(this.rational)?this.clone(this.rational[1]):this.clone({rational:[this.rational[1],BigInt(1)]})}normalize(){if(Number.isInteger(this.radical)&&this.radical>0&&Number.isFinite(this.radical),isNaN(this.radical)){this.rational=[NaN,1],this.radical=1;return}let[i,t]=this.rational;if(t==0){this.rational=[NaN,1],this.radical=1;return}if(this.radical===0||i===0){this.rational=[0,1],this.radical=1;return}if(this.radical>=4){let[r,s]=Bi(this.radical,2);typeof this.rational[0]=="number"?this.rational[0]*=r:this.rational=hn(this.rational,[r,1]),this.radical=s}this.rational=Pi(this.rational)}get isNaN(){return Number.isNaN(this.rational[0])}get isPositiveInfinity(){return this.rational[0]==1/0}get isNegativeInfinity(){return this.rational[0]==-1/0}get isComplexInfinity(){return!1}get isZero(){return mn(this.rational)}get isOne(){return!(this.rational[0]!==this.rational[1]||this.radical!==1)}get isNegativeOne(){return!(this.rational[0]!==-this.rational[1]||this.radical!==1)}sgn(){if(!Number.isNaN(this.rational[0]))return mn(this.rational)?0:Ps(this.rational)?1:-1}N(){return this.isZero||this.isOne||this.isNegativeOne?this:this.rational[1]==1&&this.radical===1?this:this.factory(this.bignumRe)}neg(){return this.isZero?this:this.clone({rational:ui(this.rational),radical:this.radical})}inv(){return this.isOne?this:this.isNegativeOne?this:this.clone({rational:te(this.rational)?[this.rational[1],this.rational[0]*this.radical]:[this.rational[1],this.rational[0]*BigInt(this.radical)],radical:this.radical})}add(i){return typeof i=="number"?i===0?this:Number.isInteger(i)&&this.radical===1?this.clone({rational:te(this.rational)?[this.rational[0]+i*this.rational[1],this.rational[1]]:[this.rational[0]+BigInt(i)*this.rational[1],this.rational[1]]}):this.factory(this.bignumRe).add(i):i.isZero?this:this.isZero?i:i instanceof e?this.radical===i.radical?this.clone({rational:ai(this.rational,i.rational),radical:this.radical}):this.factory(this.bignumRe).add(i):i.add(this)}sub(i){return this.add(i.neg())}mul(i){return i===0?this.clone(0):i===1?this:i===-1?this.neg():typeof i=="number"?Number.isInteger(i)?this.clone({rational:te(this.rational)?[this.rational[0]*i,this.rational[1]]:[this.rational[0]*BigInt(i),this.rational[1]],radical:this.radical}):this.factory(this.bignumRe).mul(i):i instanceof M?this.factory(i).mul(this):i.im!==0?i.mul(this):i.isZero?i:i.isOne?this:i.isNegativeOne?this.neg():i.isNaN?i:this.isZero?this:this.isOne?i:this.isNegativeOne?i.neg():i instanceof e?this.clone({rational:hn(this.rational,i.rational),radical:this.radical*i.radical}):i.mul(this)}div(i){if(typeof i=="number")return i===1?this:i===-1?this.neg():i===0?this.clone(NaN):this.clone({rational:te(this.rational)?[this.rational[0],this.rational[1]*i]:[this.rational[0],this.rational[1]*BigInt(i)],radical:this.radical});if(i.isOne)return this;if(i.isNegativeOne)return this.neg();if(this.isZero)return i.isZero?this.clone(NaN):i.isNaN?i:this;if(i.isNaN)return i;if(i.isZero)return this.clone(this.sign*(1/0));if(!(i instanceof e))return this.factory(this.bignumRe).div(i);if(i.im!==0)return this.factory(this.bignumRe).div(i);let t;if(te(this.rational)&&te(i.rational)){let[r,s]=this.rational,[o,a]=i.rational;t=[r*a,s*o*i.radical]}else t=hn(this.rational,[BigInt(i.rational[1]),BigInt(i.rational[0])*BigInt(i.radical)]);return this.clone({rational:t,radical:this.radical*i.radical})}pow(i){if(Array.isArray(i),this.isNaN)return this;if(typeof i=="number"&&isNaN(i))return this.clone(NaN);if(i instanceof z){if(i.isNaN)return this.clone(NaN);if(i.isZero)return this.clone(1);if(i.isOne)return this;if(i.im)i={re:i.re,im:i.im};else{if(i instanceof e&&i.radical===1&&i.rational[0]==1)return this.root(i.rational[0]);i=i.re}}if(i===.5)return this.sqrt();if(typeof i=="object"&&("re"in i||"im"in i))return this.factory(this.bignumRe).pow(i);if(this.isPositiveInfinity){if(i===-1)return this.clone(0);if(i===1/0)return this.clone(1/0);if(i===-1/0)return this.clone(0)}else if(this.isNegativeInfinity&&i===1/0)return this.clone(NaN);if((i===1/0||i===-1/0)&&(this.isOne||this.isNegativeOne))return this.clone(NaN);if(i===1)return this;if(i===-1)return this.inv();if(i===0)return this.clone(1);if(this.isZero){if(i>0)return this;if(i<0)return this.factory({im:1/0})}if(i<0)return this.pow(-i).inv();if(i%1===.5)return this.pow(Math.floor(i)).mul(this.sqrt());if(this.radical>O||this.rational[0]>O||this.rational[0]<-O||this.rational[1]>O)return this.factory(this.bignumRe).pow(i);if(this.sign<0){if(Number.isInteger(i)){let t=i%2===0?1:-1;return this.clone({rational:te(this.rational)?[t*(-this.rational[0])**i,this.rational[1]**i]:[BigInt(t)*(-this.rational[0])**BigInt(i),this.rational[1]**BigInt(i)],radical:this.radical**i})}return this.factory({im:(-this.re)**i})}else if(Number.isInteger(i))return this.clone({rational:te(this.rational)?[this.rational[0]**i,this.rational[1]**i]:[BigInt(this.rational[0])**BigInt(i),this.rational[1]**BigInt(i)],radical:this.radical**i});return this.factory(this.bignumRe).pow(i)}root(i){if(i===0)return this.clone(NaN);if(this.isNaN)return this;if(this.isZero)return this;if(i===1)return this;if(i===-1)return this.inv();if(i<0)return this.root(-i).inv();if(i%1===.5)return this.root(Math.floor(i)).sqrt();if(this.radical===1){if(this.sign>0){let t=this.re;if(Number.isInteger(t)){if(t>0){let r=Math.pow(t,1/i);if(Number.isInteger(r))return this.clone(r)}return this.factory(this.bignumRe).root(i)}}return this.factory(this.bignumRe).root(i)}if(this.sign<0)return this.factory({im:Math.pow(-this.re,1/i)});if(this.radical>O||this.rational[0]>O||this.rational[0]<-O||this.rational[1]>O)return this.factory(this.bignumRe).root(i);if(this.rational[1]==1){let t=Math.pow(this.rational[0],1/i);if(Number.isInteger(t))return this.clone(t)}return this.factory(this.bignumRe).root(i)}sqrt(){if(this.isZero||this.isOne)return this;if(this.radical===1)if(te(this.rational)){let[i,t]=this.rational;return i*t>O?this.factory(this.bignumRe).sqrt():i>0?this.clone({radical:i*t,rational:[1,t]}):this.factory({im:Math.sqrt(-i*t)/t})}else return this.factory(this.bignumRe).sqrt();if(this.sign>0){let i=Math.sqrt(this.re);if(Number.isInteger(i))return this.clone(i)}return this.factory(this.bignumRe).sqrt()}gcd(i){if(!(i instanceof e))return i.gcd(this);if(this.isOne||i.im!==0||i.isOne)return this.clone(1);let t=Ir(this.rational,i.rational),r=rn(this.radical,i.radical);return this.clone({rational:t,radical:r})}abs(){return this.sign===-1?this.neg():this}ln(i){return this.isZero?this.clone(NaN):this.isPositiveInfinity?this.clone(1/0):this.sign<0?this.clone(NaN):this.isOne?this.clone(0):this.isNegativeOne?this.factory({im:Math.PI}):this.factory(this.bignumRe).ln(i)}exp(){return this.isNaN?this.clone(NaN):this.isZero?this.clone(1):this.isNegativeInfinity?this.clone(0):this.isPositiveInfinity?this.clone(1/0):this.factory(this.bignumRe).exp()}floor(){return this.isNaN?this.clone(NaN):this.type==="integer"?this:this.clone(Math.floor(this.re))}ceil(){return this.isNaN?this.clone(NaN):this.type==="integer"?this:this.clone(Math.ceil(this.re))}round(){return this.isNaN?this.clone(NaN):this.type==="integer"?this:this.clone(Math.round(this.re))}eq(i){return typeof i=="number"?this.radical===1&&oi(this.rational)&&this.rational[0]==i:i instanceof e?this.radical===i.radical&&this.rational[0]==i.rational[0]&&this.rational[1]==i.rational[1]:i.im===0&&i.re===this.re}lt(i){return this.im,typeof i=="number"?this.re<i:this.re<i.re}lte(i){return this.im,typeof i=="number"?this.re<=i:this.re<=i.re}gt(i){return this.im,typeof i=="number"?this.re>i:this.re>i.re}gte(i){return this.im,typeof i=="number"?this.re>=i:this.re>=i.re}static sum(i,t,r){if(i.length===1)return i;if(i.some(l=>!l.isExact)){if(i.length===2)return[i[0].add(i[1])];let l=t(0);for(let f of i)l=l.add(f);return[l]}let s=0,o=[0,1],a=[];for(let l of i){if(l.isNaN)return[new e(NaN,t,r)];if(!l.isZero)if(s+=l.im,l instanceof e){let f=l.rational;if(l.radical===1)o=ai(o,f);else{let c=a.findIndex(p=>p.radical===l.radical);c===-1?a.push({multiple:f,radical:l.radical}):a[c].multiple=ai(a[c].multiple,f)}}else v(l.type,"integer"),o=ai(o,[l.re,1])}if(mn(o)&&a.length===0)return s===0?[new e(0,t,r)]:[t({im:s})];let u=[];return s!==0&&u.push(t({im:s})),a.length===0?u.push(new e({rational:o},t,r)):(a.push({multiple:o,radical:1}),u.push(...a.map(l=>new e({rational:l.multiple,radical:l.radical},t,r)))),u}};function je(e){let n=e.numericValue;if(n===null||typeof n=="number"&&!Number.isFinite(n)||n instanceof z&&(n.isNaN||n.isPositiveInfinity||n.isNegativeInfinity))return;if(typeof n=="number")return Number.isInteger(n)?[n,1]:void 0;let i=n.type;if(i!=="finite_integer"&&i!=="finite_rational"||n.im!==0)return;if(n instanceof Z)return n.radical!==1?void 0:n.rational;let t=n.bignumRe;if(t!==void 0&&Number.isInteger(t))return[K(t),BigInt(1)];let r=n.re;if(Number.isInteger(r))return[r,1]}function Dt(e){if(e==null)return null;let n=e.numericValue;if(n===null)return null;if(typeof n=="number")return Number.isInteger(n)?BigInt(n):null;if(n.im!==0)return null;let i=n.bignumRe;return i?.isInteger()?K(i):Number.isInteger(n.re)?BigInt(n.re):null}function Gs(e){if(e==null)return null;let n=typeof e=="number"?e:e.numericValue;if(n===null)return null;if(typeof n=="number")return e.engine.bignum(n);if(n.im!==0)return null;let i=n.bignumRe??n.re;return typeof i=="number"&&isNaN(i)?null:e.engine.bignum(i)}function G(e){if(e==null)return null;if(typeof e=="number")return Number.isInteger(e)&&e>=-O&&e<=O?e:null;let n=e.numericValue;if(n===null)return null;if(typeof n=="number")return Number.isInteger(n)&&n>=-O&&n<=O?n:null;if(n.im!==0)return null;let i=n.re;return Number.isInteger(i)&&i>=-O&&i<=O?Number(i):null}function De(e){if(e.symbol&&!e.isConstant)return 1;if(e.operator==="Power"&&e.op2.isNumberLiteral){if(De(e.op1)===0)return 0;let n=G(e.op2);return n!==null&&n>0?n:0}if(e.operator==="Multiply"){let n=0;for(let i of e.ops){let t=De(i);n=n+t}return n}if(e.operator==="Add"||e.operator==="Subtract"){let n=0;for(let i of e.ops)n=Math.max(n,De(i));return n}return e.operator==="Negate"||e.operator==="Divide"?De(e.op1):0}function Ze(e){if(e.symbol&&!e.isConstant)return 1;if(e.operator==="Power"&&e.op2.isNumberLiteral){if(Ze(e.op1)===0)return 0;let n=G(e.op2);return n!==null&&n>0?n:0}if(e.operator==="Multiply"||e.operator==="Add"||e.operator==="Subtract"){let n=0;for(let i of e.ops)n=Math.max(n,De(i));return n}return e.operator==="Negate"||e.operator==="Divide"?Ze(e.op1):0}function lu(e){return e.symbol&&!e.isConstant?e.symbol:e.ops?e.ops.map(n=>lu(n)).join(" ").trim():""}function Us(e){return lu(e).split(" ").reverse().join(" ").trim()}function Q(e,n,i,t){if((e?.numericValue??null)===null)return;let r=e.engine,s;if(e.im!==0)s=t?.(r.complex(e.re,e.im));else{let o=e.bignumRe;if(o!==void 0&&oe(r)&&i)s=i(o);else{let a=e.re;oe(r)&&i?s=i(r.bignum(a)):s=n(a)}}if(s!==void 0)return s instanceof $?r.number(r._numericValue({re:s.re,im:s.im})):r.number(s)}function gn(e,n,i,t,r){if(e.numericValue===null||n.numericValue===null)return;let s=e.engine,o;if((e.im!==0||n.im!==0)&&(o=r?.(s.complex(e.re,e.im),s.complex(n.re,n.im))),o===void 0&&t){let a=e.bignumRe,u=n.bignumRe;(a!==void 0||u!==void 0)&&(a??(a=s.bignum(e.re)),u??(u=s.bignum(n.re)),o=t(a,u))}if(o===void 0){let a=e.re,u=n.re;!isNaN(a)&&!isNaN(u)&&(oe(s)&&t?o=t(s.bignum(e.bignumRe??a),s.bignum(n.bignumRe??u)):o=i(a,u))}if(o!==void 0)return o instanceof $?s.number(s._numericValue({re:s.chop(o.re),im:s.chop(o.im)})):s.number(s.chop(o))}function fu(e){return e.operator==="Sqrt"||e.operator==="Power"&&e.op2.im===0&&e.op2.re===.5||e.operator==="Root"&&e.op2.im===0&&e.op2.re===2}function Ar(e){if(fu(e))return je(e.op1)??null;if(e.operator==="Divide"&&e.op1.is(1)&&fu(e.op2)){let n=e.op2.re;return Number.isInteger(n)?[1,n]:null}return null}function zi(e,n){let i=e.engine;if(e=e.canonical,n=n.canonical,e.is(0)){if(n.is(0))return i.NaN;if(n.isPositive)return i.Zero;if(n.isNegative)return i.ComplexInfinity}if(e.is(1)||n.is(0))return i.One;if(n.is(1))return e;if(n.is(.5))return li(e,2);let t=je(n);return t!==void 0&&t[0]===1?li(e,i.number(t[1])):i._fn("Power",[e,n])}function li(e,n){e=e.canonical;let i=e.engine,t;if(typeof n=="number"?t=n:(n=n.canonical,n.isNumberLiteral&&n.im===0&&(t=n.re)),t===1)return e;if(t===2){if(e.isNumberLiteral&&e.type.matches("rational")&&e.re<O){let r=e.sqrt();if(typeof r.numericValue=="number"||r.numericValue.isExact)return r}return i._fn("Sqrt",[e])}return i._fn("Root",[e,typeof n=="number"?i.number(n):n])}function me(e,n,{numericApproximation:i}){if(!e.isCanonical)return e.canonical.pow(n);if(i&&e.isNumberLiteral){if(typeof n=="number")return Q(e,s=>Math.pow(s,n),s=>s.pow(n),s=>s.pow(n))??me(e,n,{numericApproximation:!1});if(n.isNumberLiteral)return gn(e,n,(s,o)=>Math.pow(s,o),(s,o)=>s.pow(o),(s,o)=>s.pow(o))??me(e,n,{numericApproximation:!1})}let t=e.engine;typeof n!="number"&&(n=n.canonical);let r=typeof n=="number"?n:n.im===0?n.re:void 0;if(r===0)return t.One;if(r===1)return e;if(r===-1)return e.isInfinity&&e.isNegative?t.Zero:e.is(-1)?t.NegativeOne:e.is(0)?t.ComplexInfinity:e.is(1)?t.One:e.isInfinity&&e.isPositive?t.Zero:e.inv();if(r===Number.POSITIVE_INFINITY){if(e.is(0))return t.Zero;if(e.is(1)||e.is(-1))return t.NaN;if(e.isInfinity){if(e.isPositive)return t.PositiveInfinity;if(e.isNegative)return t.NaN}}if(r===Number.NEGATIVE_INFINITY){if(e.is(-1))return t.NaN;if(e.isInfinity){if(e.isPositive)return t.Zero;if(e.isNegative)return t.NegativeInfinity}}if(typeof n!="number"){if(n.isInfinity&&!n.isPositive&&!n.isNegative)return t.NaN;if(e.isInfinity){if(n.type.matches("imaginary"))return t.NaN;if(n.type.matches("complex")&&!isNaN(n.re)){if(n.re>0)return t.ComplexInfinity;if(n.re<0)return t.Zero}}}if(r===Number.POSITIVE_INFINITY){if(e.isGreater(1))return t.PositiveInfinity;if(e.isPositive&&e.isLess(1))return t.Zero}if(r===Number.NEGATIVE_INFINITY){if(e.isGreater(1))return t.Zero;if(e.isPositive&&e.isLess(1))return t.PositiveInfinity}if(typeof n!="number"&&n.operator==="Negate")return me(e,n.op1,{numericApproximation:i}).inv();if(e.symbol==="ComplexInfinity")return t.NaN;if(e.symbol==="ExponentialE"){let s=wi(n);if(s!==void 0){if(s=Tr(s),s!==void 0)return t.function("Cos",[s]).add(t.function("Sin",[s]).mul(t.I)).simplify()}else if(i){if(typeof n=="number")return t.number(t._numericValue(t.E.N().numericValue).pow(n));if(n.isNumberLiteral)return t.number(t._numericValue(t.E.N().numericValue).pow(n.numericValue))}}if(e.operator==="Power"){let[s,o]=e.ops;return me(s,o.mul(n),{numericApproximation:i})}if(e.operator==="Divide"){let[s,o]=e.ops;return me(s,n,{numericApproximation:i}).div(me(o,n,{numericApproximation:i}))}if(e.operator==="Negate"&&r!==void 0)return r%2===0?me(e.op1,n,{numericApproximation:i}):me(e.op1,n,{numericApproximation:i}).neg();if(e.operator==="Sqrt")return r===2?e.op1:r!==void 0&&r%2===0?e.op1.pow(r/2):me(e.op1,n,{numericApproximation:i}).sqrt();if(e.operator==="Exp")return me(t.E,e.op1.mul(n),{numericApproximation:i});if(e.operator==="Multiply"){let s=e.ops.map(o=>me(o,n,{numericApproximation:i}));return t._fn("Multiply",s)}if(typeof n!="number"&&n.isNumberLiteral){let s=je(n);if(s!==void 0&&s[0]===1)return Rr(e,t.number(s[1]),{numericApproximation:i})}if(e.operator==="Root"){let[s,o]=e.ops;return me(s,t.box(n).div(o),{numericApproximation:i})}if(e.isNumberLiteral&&Number.isInteger(r)){let s=e.numericValue;return typeof s=="number"?Q(e,o=>Math.pow(o,r),o=>o.pow(r),o=>o.pow(r))??t._fn("Power",[e,t.box(n)]):t.number(s.pow(r))}return t._fn("Power",[e,t.box(n)])}function Rr(e,n,{numericApproximation:i}){if(i&&e.isNumberLiteral&&n.isNumberLiteral){let t=e.isNegative,r=n.isEven;return t&&(e=e.neg()),gn(e,n,(s,o)=>{let a=Math.pow(s,1/o);return t&&!r?-a:a},(s,o)=>{let a=s.pow(o.pow(-1));return t&&!r?a.neg():a},(s,o)=>{let a=s.pow(typeof o=="number"?1/o:o.inverse());return t&&!r?a.neg():a})??Rr(e,n,{numericApproximation:!1})}if(e.isNumberLiteral&&n.isNumberLiteral&&n.isInteger){let t=typeof n=="number"?n:n.im===0?n.re:void 0;if(t!==void 0)if(typeof e.numericValue=="number"){let r=e.engine._numericValue(e.numericValue)?.root(t);if(r?.isExact)return e.engine.number(r)}else{let r=e.numericValue.asExact?.root(t);if(r?.isExact)return e.engine.number(r)}}return e.engine._fn("Root",[e,n])}var Un=1e5,Rp={Sin:!0,Cos:!0,Tan:!0,Cot:!0,Sec:!0,Csc:!0,Sinh:!0,Cosh:!0,Tanh:!0,Coth:!0,Sech:!0,Csch:!0,Arcsin:!0,Arccos:!0,Arctan:!0,Arccot:!0,Arcsec:!0,Arccsc:!0,Arcsinh:!0,Arccosh:!0,Arctanh:!0,Arccoth:!0,Arccsch:!0,Arcsech:!0};function Mp(e){return!e||typeof e!="string"?!1:e in Rp}function At(e,n){let i=De(e),t=De(n);if(i!==t)return t-i;let r=Ze(e),s=Ze(n);if(r!==s)return s-r;let o=Us(e),a=Us(n);if(o||a){if(!o)return 1;if(!a||o<a)return-1;if(o>a)return 1}return fe(e,n)}var cu=["integer","rational","radical","real","complex","constant","symbol","multiply","divide","add","trig","fn","power","string","other"];function pu(e){if(typeof e.numericValue=="number")return Number.isInteger(e.numericValue)?"integer":"real";if(e.numericValue){let n=e.numericValue.type;return n==="integer"||n==="finite_integer"?"integer":n==="rational"||n==="finite_rational"?"rational":n==="real"||n==="finite_real"?"real":n==="complex"||n==="finite_complex"||n==="imaginary"||n==="finite_number"?"complex":n==="non_finite_number"?"constant":n==="number"?"real":"other"}return e.symbol==="ImaginaryUnit"?"complex":Ar(e)?"radical":e.symbol&&e.isConstant?"constant":e.symbol?"symbol":Mp(e.operator)?"trig":e.operator==="Add"?"add":e.operator==="Power"||e.operator==="Root"?"power":e.operator==="Multiply"||e.operator==="Negate"?"multiply":e.operator==="Divide"?"divide":e.operator==="Rational"?"rational":e.operator==="Complex"?e.im!==0?"complex":"real":e.operator==="Sqrt"?e.op1.isNumberLiteral&&(e.op1.isInteger||e.op1.isRational)?"radical":"power":e.ops?"fn":e.string?"string":"other"}function fe(e,n){if(e===n)return 0;let i=pu(e),t=pu(n);if(i!==t)return cu.indexOf(i)-cu.indexOf(t);if(i==="complex"){let[r,s]=du(e),[o,a]=du(n);return s!==a?s-a:r-o}if(i==="integer"||i==="rational"||i==="real"){let r=e.numericValue,s=n.numericValue;r===null&&e.operator==="Rational"&&(r=e.op1.re/e.op2.re),s===null&&n.operator==="Rational"&&(s=n.op1.re/n.op2.re);let o=typeof r=="number"?r:r.re,a=typeof s=="number"?s:s.re;return o-a}if(i==="radical")return fe(e.op1,n.op1);if(i==="constant"||i==="symbol")return e.symbol===n.symbol?0:e.symbol>n.symbol?1:-1;if(i==="add"){let r=e.ops,s=n.ops;if(r.length!==s.length)return s.length-r.length;for(let o=0;o<r.length;o++){let a=fe(r[o],s[o]);if(a!==0)return a}return 0}if(i==="power"){let r=De(e),s=De(n);if(r!==s)return s-r;let o=Ze(e),a=Ze(n);return o!==a?o-a:fe(e.op1,n.op1)}if(i==="multiply"){let r=De(e),s=De(n);if(r!==s)return s-r;let o=Ze(e),a=Ze(n);if(o!==a)return o-a;let u=e.ops,l=n.ops;if(u.length!==l.length)return l.length-u.length;for(let f=0;f<u.length;f++){let c=fe(u[f],l[f]);if(c!==0)return c}return 0}if(i==="divide"){let r=De(e.op1),s=De(n.op1);if(r!==s)return s-r;let o=Ze(e.op1),a=Ze(n.op1);if(o!==a)return o-a;let u=fe(e.op1,n.op1);return u!==0?u:fe(e.op2,n.op2)}if(i==="fn"||i==="trig"){if(e.operator==n.operator&&e.nops===1&&n.nops===1)return fe(e.op1,n.op1);let r=e.functionDefinition?.complexity??Un,s=n.functionDefinition?.complexity??Un;return r===s?e.operator===n.operator?js(e)-js(n):e.operator<n.operator?1:-1:r-s}return i==="string"?e.string===n.string?0:n.string<e.string?-1:1:(e.complexity??Un)-(n.complexity??Un)}function Zs(e,{recursive:n=!1}){if(e.isCanonical||!e.ops)return e;let i=e.ops;return n&&(i=i.map(t=>Zs(t,{recursive:n}))),i=Rt(e.operator,i),e.engine._fn(e.operator,i,{canonical:!1})}function Rt(e,n){if(n.length===0)return n;let i=n[0].engine;if(e==="Add")return[...n].sort(At);if(e==="Multiply")return[...n].sort(fe);let t=i.lookupFunction(e);return!t||!t.commutative?n:t.commutativeOrder?[...n].sort(t.commutativeOrder):[...n].sort(fe)}function js(e){return e.ops?1+[...e.ops].reduce((n,i)=>n+js(i),0):1}function du(e){if(e.symbol==="ImaginaryUnit")return[0,1];if(e.numericValue){if(typeof e.numericValue=="number")return[e.numericValue,0];let n=e.numericValue;return[n.re,n.im]}if(e.operator==="Complex"){let n=e.op1.numericValue;if(n===null)return[0,0];let i=typeof n=="number"?n:n.re,t=e.op2.numericValue;if(t===null)return[0,0];let r=typeof t=="number"?t:t.re;return[i,r]}return[0,0]}function Hs(e,n){for(e.isInteger()&&n.isInteger();!n.isZero();)[e,n]=[n,e.modulo(n)];return e.abs()}function mu(e,n){return e.mul(n).div(Hs(e,n))}function hu(e,n){if(!n.isInteger()||n.isNegative())return e._BIGNUM_NAN;if(n.lessThan(1))return e._BIGNUM_ONE;let i=n;for(;n.greaterThan(2);)n=n.minus(2),i=i.mul(n);return i}function fi(e){return e.isFinite()?e.d.length>3||e.d.length===3&&e.d[0]>=90?!1:(e.precision()<=16,e.e<308&&e.e>-306):!0}var gu=[.9999999999998099,676.5203681218851,-1259.1392167224028,771.3234287776531,-176.6150291621406,12.507343278686905,-.13857109526572012,9984369578019572e-21,15056327351493116e-23];function Mt(e){if(e<0)return NaN;let n=Math.PI,i=e*e*e;return e*Math.log(e)-e-.5*Math.log(e)+.5*Math.log(2*n)+1/(12*e)-1/(360*i)+1/(1260*i*e*e)}function ci(e){if(e<.5)return Math.PI/(Math.sin(Math.PI*e)*ci(1-e));if(e>100)return Math.exp(Mt(e));e-=1;let n=gu[0];for(let t=1;t<9;t++)n+=gu[t]/(e+t);let i=e+7+.5;return Math.sqrt(2*Math.PI)*Math.pow(i,e+.5)*Math.exp(-i)*n}function xu(e){let n=Math.PI,i=n*n,t=i*n,r=e*e,s=e*r,o=s*r,a=o*r;return Math.sqrt(n)/2*(e+n/12*s+7*i/480*o+127*t/40320*a+4369*i*i/5806080*a*r+34807*t*i/182476800*a*r*r)}function Ws(e){let n=.254829592,i=-.284496736,t=1.421413741,r=-1.453152027,s=1.061405429,o=.3275911,a=e<0?-1:1;e=Math.abs(e);let u=1/(1+o*e),l=((((s*u+r)*u+t)*u+i)*u+n)*u;return a*(1-l*Math.exp(-e*e))}function Js(e,n){if(n.isNegative())return e._BIGNUM_NAN;let i=e.cache("gamma-p-ln",()=>["0.99999999999999709182","57.156235665862923517","-59.597960355475491248","14.136097974741747174","-0.49191381609762019978","0.33994649984811888699e-4","0.46523628927048575665e-4","-0.98374475304879564677e-4","0.15808870322491248884e-3","-0.21026444172410488319e-3","0.2174396181152126432e-3","-0.16431810653676389022e-3","0.84418223983852743293e-4","-0.2619083840158140867e-4","0.36899182659531622704e-5"].map(o=>e.bignum(o))),t=i[0];for(let o=i.length-1;o>0;--o)t=t.add(i[o].div(n.add(o)));let r=e.cache("gamma-g-ln",()=>e.bignum(607).div(128)),s=n.add(r).add(e._BIGNUM_HALF);return e._BIGNUM_NEGATIVE_ONE.acos().mul(e._BIGNUM_TWO).log().mul(e._BIGNUM_HALF).add(s.log().mul(n.add(e._BIGNUM_HALF)).minus(s).add(t.log()).minus(n.log()))}function Ys(e,n){if(n.lessThan(e._BIGNUM_HALF)){let s=e._BIGNUM_NEGATIVE_ONE.acos();return s.div(s.mul(n).sin().mul(Ys(e,e._BIGNUM_ONE.sub(n))))}if(n.greaterThan(100))return Js(e,n).exp();n=n.sub(1);let i=e.cache("lanczos-7-c",()=>["0.99999999999980993227684700473478","676.520368121885098567009190444019","-1259.13921672240287047156078755283","771.3234287776530788486528258894","-176.61502916214059906584551354","12.507343278686904814458936853","-0.13857109526572011689554707","9.984369578019570859563e-6","1.50563273514931155834e-7"].map(s=>e.bignum(s))),t=i[0];for(let s=1;s<9;s++)t=t.add(i[s].div(n.add(s)));let r=n.add(7).add(e._BIGNUM_HALF);return e._BIGNUM_NEGATIVE_ONE.acos().times(e._BIGNUM_TWO).sqrt().mul(t.mul(r.neg().exp()).mul(r.pow(n.add(e._BIGNUM_HALF))))}var Be=class e{constructor(n,i,t){this.options=t;this.terms=[];this._isCanonical=!0;if(t=t?{...t}:{},"canonical"in t||(t.canonical=!0),this._isCanonical=t.canonical,this.engine=n,this.coefficient=n._numericValue(1),i)for(let r of i)this.mul(r)}static from(n){return new e(n.engine,[n])}mul(n,i){if(n.isCanonical||n.isStructural,this.coefficient.isNaN)return;if(n.isNaN){this.coefficient=this.engine._numericValue(NaN);return}if(n.operator==="Multiply"){for(let s of n.ops)this.mul(s,i);return}if(n.operator==="Negate"){this.mul(n.op1,i),this.coefficient=this.coefficient.neg();return}if(this._isCanonical){if(n.symbol==="Nothing")return;i??(i=[1,1]);let s=n.numericValue;if(s!==null){if(n.is(1))return;if(n.is(0)){this.coefficient=this.engine._numericValue(mn(i)?NaN:0);return}if(n.is(-1)){ve(i)?this.coefficient=this.coefficient.neg():this.coefficient=this.coefficient.mul(this.engine._numericValue(-1).pow(this.engine._numericValue(i)));return}if(n.isInfinity){ve(i)?this.coefficient=this.engine._numericValue(n.isNegative?-1/0:1/0):this.terms.push({term:n,exponent:i});return}ve(i)?this.coefficient=this.coefficient.mul(s):this.coefficient=this.coefficient.mul(this.engine._numericValue(s).pow(this.engine._numericValue(i)));return}let o=Ar(n);if(o!==null){this.coefficient=this.coefficient.mul(this.engine._numericValue({radical:o[0]*o[1],rational:[1,Number(o[1])]}).pow(this.engine._numericValue(i)));return}if(!n.symbol){let a;[a,n]=n.toNumericValue(),i&&!ve(i)&&(a=a.pow(this.engine._numericValue(i))),this.coefficient=this.coefficient.mul(a)}}if(n.is(1)&&(!i||ve(i))||n.is(0)===!1&&i&&mn(i))return;if(n.is(0)){i&&mn(i)?this.coefficient=this.engine._numericValue(NaN):this.coefficient=this.engine._numericValue(0);return}let t=i??[1,1];if(n.operator==="Power"){let s=je(n.op2);if(s){this.mul(n.op1,hn(t,s));return}}if(n.operator==="Sqrt"){this.mul(n.op1,hn(t,[1,2]));return}if(n.operator==="Root"){let s=je(n.op2);if(s){this.mul(n.op1,hn(t,ru(s)));return}}if(n.operator==="Divide"){this.mul(n.op1,t),this.mul(n.op2,ui(t));return}let r=!1;for(let s of this.terms)if(s.term.isSame(n)){s.exponent=ai(s.exponent,t),r=!0;break}r||this.terms.push({term:n,exponent:t})}div(n){n instanceof z?this.coefficient=this.coefficient.div(n):this.mul(n,[-1,1])}groupedByDegrees(n){n??(n={}),"mode"in n||(n.mode="expression");let i=n.mode;if(i==="numeric"&&(this.coefficient.isNegativeInfinity||this.coefficient.isPositiveInfinity))return[];if(this.coefficient.isZero)return[];let t=this.engine;if(this.terms.length===0)if(i==="numeric"){let s=this.coefficient.N();return[{exponent:[1,1],terms:[t.number(s)]}]}else return[{exponent:[1,1],terms:[t.number(this.coefficient)]}];let r=[];if(!this.coefficient.isOne)if(i==="rational"&&this.coefficient.type==="finite_rational"){let s=this.coefficient.numerator;s.isOne||r.push({exponent:[1,1],terms:[t.number(s)]});let o=this.coefficient.denominator;o.isOne||r.push({exponent:[-1,1],terms:[t.number(o)]})}else if(i==="numeric"){let s=this.coefficient.N();r.push({exponent:[1,1],terms:[t.number(s)]})}else r.push({exponent:[1,1],terms:[t.number(this.coefficient)]});for(let s of this.terms){let o=Pi(s.exponent);if(o[0]===0)continue;let a=!1;for(let u of r)if(o[0]===u.exponent[0]&&o[1]===u.exponent[1]){u.terms.push(s.term),a=!0;break}a||r.push({exponent:o,terms:[s.term]})}return r}asExpression(n={numericApproximation:!1}){let i=this.engine,t=this.coefficient;if(t.isNaN)return i.NaN;if(t.isPositiveInfinity)return i.PositiveInfinity;if(t.isNegativeInfinity)return i.NegativeInfinity;if(t.isZero)return i.Zero;let r=t.isNegativeOne;r&&(this.coefficient=i._numericValue(1));let s=this.groupedByDegrees({mode:n.numericApproximation?"numeric":"expression"});if(s===null)return i.NaN;if(r){let o=Mr(i,s).neg();return this.coefficient=i._numericValue(-1),o}return Mr(i,s)}asNumeratorDenominator(){let n=this.engine,i=this.coefficient;if(i.isZero)return[n.Zero,n.One];if(i.isPositiveInfinity||i.isNegativeInfinity)return this.terms.length===0?[i.isPositiveInfinity?n.PositiveInfinity:n.NegativeInfinity,n.One]:[n.NaN,n.NaN];let t=i.isNegativeOne;t&&(this.coefficient=n._numericValue(1));let r=this.groupedByDegrees({mode:"rational"});if(this.coefficient=i,r===null)return[n.NaN,n.NaN];let s=r.filter(u=>u.exponent[0]>=0),o=r.filter(u=>u.exponent[0]<0).map(u=>({exponent:ui(u.exponent),terms:u.terms})),a=Mr(n,s);return[t?a.neg():a,Mr(n,o)]}asRationalExpression(){let[n,i]=this.asNumeratorDenominator();return He(n,i)}};function yu(e,n){let i=e.engine,t=e.coefficient.gcd(n.coefficient);if(t.isOne)return[i._numericValue(1),i.One];let r=[];for(let s of e.terms){let o=n.terms.find(u=>s.term.isSame(u.term));if(!o)continue;let a=Ir(s.exponent,o.exponent);if(ve(a))r.push(s.term);else{let[u,l]=su(a);l===1?r.push(s.term.pow(u)):u===1?r.push(s.term.root(l)):r.push(s.term.pow(u).root(l))}}return[t,r.length===0?i.One:ae(...r)]}function Mr(e,n){let i=n.map(({terms:t,exponent:r})=>{let s=J(t,"Multiply"),o=s.length<=1?s[0]:e._fn("Multiply",[...s].sort(fe));return ve(r)?o:o.pow(e.number(r))});return i=J(i,"Multiply"),i.length===0?e.One:i.length===1?i[0]:e._fn("Multiply",i.sort(fe))}var Qs;function Nu(e){if(!Qs){let i=`^[${["Zyyy","Zinh","Arab","Armn","Beng","Bopo","Cyrl","Deva","Ethi","Geor","Grek","Gujr","Guru","Hang","Hani","Hebr","Hira","Kana","Knda","Khmr","Laoo","Latn","Mlym","Mymr","Orya","Sinh","Taml","Telu","Thaa","Thai","Tibt"].map(t=>`\\p{Script=${t}}`).join("")}]*$`;Qs=new RegExp(i,"u")}return Qs.test(e)}function xe(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)||Gi.test(e)?!0:Nu(e)?/^[\p{XIDS}_]\p{XIDC}*$/u.test(e):!1}var Cp="\\u{FE0F}",Pp="\\u{20E3}",Op="\\u{200D}",Lp="\\p{RI}\\p{RI}",Fp="(?:[\\u{E0020}-\\u{E007E}]+\\u{E007F})",bu=`(?:\\p{EMod}|${Cp}${Pp}?|${Fp})`,qp="(?:(?=\\P{XIDC})\\p{Emoji})",Eu=`(?:${qp}${bu}*|\\p{Emoji}${bu}+|${Lp})`,vu=`(?:${Eu})(${Op}${Eu})*`,$p=new RegExp(`(?:${vu})+`,"u"),Gi=new RegExp(`^(?:${vu})+$`,"u");function We(e){return typeof e!="string"?"not-a-string":e===""?"empty-string":e.normalize()!==e?"expected-nfc":/[\u200E\u200F\u2066-\u2069\u202A-\u202E]/.test(e)?"unexpected-bidi-marker":Gi.test(e)?"valid":/\p{XIDC}/u.test(e)&&$p.test(e)?"unexpected-mixed-emoji":Nu(e)?xe(e)?"valid":xe(e[0])?"invalid-char":"invalid-first-char":"unexpected-script"}var Tu=[{name:"To",latexTrigger:["\\to"],kind:"infix",precedence:270},{latexTrigger:["\\rightarrow"],kind:"infix",precedence:270,parse:"To"}];function Su(e,n){return"normal"}function _u(e,n){return"normal"}function Iu(e,n){return n>2?"solidus":"radical"}function Bu(e,n){if(n>3)return"inline-solidus";if(h(e)==="Divide"){let[i,t]=N(e),[r,s]=[wt(i),wt(t)];if(s<=2&&r>5)return"factor";if(r<=2&&s>5)return"reciprocal"}return"quotient"}function ku(e,n){return"boolean"}function wu(e,n){return"solidus"}function Du(e,n){return"compact"}function Ui(e,n,i){e.indexOf("#1")<0&&e.indexOf("#2")<0&&(e=`#1 ${e} #2`);let t=e.split(/(#\d+)/).filter(r=>r.trim()!=="").map(r=>r.trim());return b(t.map(r=>{switch(r){case"#1":return n;case"#2":return i;default:return r}}))}function Vp(e){if(h(e)!=="Multiply")return[[],[]];let n=[],i=[];for(let t of N(e))if(h(t)==="Power"){let r=d(t,1),s=d(t,2);if(h(s)==="Negate"){let o=d(s,1);r&&o&&i.push(["Power",r,o])}else{let o=D(s)??NaN;o===-1?r&&i.push(r):o<0?r&&i.push(["Power",r,-o]):n.push(t)}}else if(h(t)==="Rational"&&Y(t)===2||h(t)==="Divide"){let r=d(t,1),s=d(t,2);D(r)!==1&&n.push(r),D(s)!==1&&i.push(s)}else{let r=qi(t);r!==null?(r[0]!==1&&n.push(r[0]),i.push(r[1])):n.push(t)}return[n,i]}function zp(e){let n=e.parseOptionalGroup(),i=e.parseGroup()??e.parseToken();return U(i)?n!==null?["Root",Li,F(n)]:["Sqrt",Li]:n!==null?["Root",i,n]:["Sqrt",i]}function Ct(e,n,i,t){return i==null?"\\sqrt{}":(t=t??2,n==="solidus"?e.wrapShort(i)+"^{1/"+e.serialize(t)+"}":n==="quotient"?e.wrapShort(i)+"^{\\frac{1}{"+e.serialize(t)+"}}":D(t)===2?"\\sqrt{"+e.serialize(i)+"}":"\\sqrt["+e.serialize(t)+"]{"+e.serialize(i)+"}")}function Gp(e,n){e.level-=1;let i=h(n),t="",r=d(n,1);if(i==="Negate")t="-"+e.wrap(r,276);else if(i==="Subtract"){t=e.wrap(r,275);let s=d(n,2);if(s!==null){let o=e.wrap(s,275);o[0]==="-"?t+="+"+o.slice(1):o[0]==="+"?t+="-"+o.slice(1):t=t+"-"+o}}else if(i==="Add"){if(e.options.prettify&&Y(n)===2&&e.options.invisiblePlus!=="+"){let[a,u]=[d(n,1),d(n,2)],[l,f]=[a,u],c=D(l),p=qi(f);if((c===null||p===null)&&([l,f]=[u,a],c=D(l),p=qi(f)),c!==null&&p!==null&&isFinite(c)&&Number.isInteger(c)&&c>=0&&c<=1e3&&isFinite(p[0])&&isFinite(p[1])&&p[0]>0&&p[0]<=100&&p[1]<=100)return t=Ui(e.options.invisiblePlus,e.serialize(l),e.serialize(f)),e.level+=1,t}if(e.options.prettify&&Y(n)===2){let[a,u]=Pt(r),[l,f]=Pt(d(n,2));if(u<0&&f>0)return t=e.wrap(l,275)+"-"+e.wrap(a,275),e.level+=1,t}t=e.serialize(r);let s=Y(n)+1,o=N(n);for(let a=2;a<s;a++)if(r=o[a-1],e.options.prettify){let[u,l]=Pt(r),f=e.wrap(u,275);l>0?f.startsWith("+")||f.startsWith("-")?t+=f:t+="+"+f:f.startsWith("+")?t+="-"+f.slice(1):f.startsWith("-")?t+="+"+f.slice(1):t+="-"+f}else{let u=e.wrap(r,275);u[0]==="-"||u[0]==="+"?t+=u:t+="+"+u}}return e.level+=1,t}function Lu(e,n){if(n===null)return"";e.level-=1;let i="";if(e.options.prettify===!0){let[u,l]=Vp(n);l.length>0&&(l.length===1&&l[0]===1?u.length===0?i="1":u.length===1?i=e.serialize(u[0]):i=Lu(e,["Multiply",...u]):i=e.serialize(["Divide",u.length===1?u[0]:["Multiply",...u],l.length===1?l[0]:["Multiply",...l]]))}if(i)return e.level+=1,i;let t=!1,r=null,s=Y(n)+1,o=N(n);e.options.prettify===!0&&o.length===2&&kn(o[1])&&!kn(o[0])&&(o=[o[1],o[0]]);let a=!1;for(let u=1;u<s;u++){if(r=o[u-1],r===null)continue;let l;if(kn(r)){l=e.serialize(r),l==="-1"&&!i?(i="",t=!t):(l[0]==="-"&&(l=l.slice(1),t=!t),i?i=Ui(e.options.multiply,i,l):i=l),a=!0;continue}if(h(r)==="Power"){let f=qi(d(r,2));if(f!=null){let[c,p]=f;if(c===1&&p!==null){i+=Ct(e,e.rootStyle(r,e.level),d(r,1),p),a=!1;continue}}}if(h(r)==="Power"&&!isNaN(D(d(r,1))??NaN)){l=e.serialize(r),i?i=Ui(e.options.multiply,i,l):i=l,a=!0;continue}if(h(r)==="Negate"&&(r=d(r,1),t=!t),l=e.wrap(r,390),!i)i=l;else{let f=h(r);a&&(f==="Divide"||f==="Rational")?i=Ui(e.options.multiply,i,l):e.options.invisibleMultiply?i=Ui(e.options.invisibleMultiply,i,l):i=b([i,l])}a=!1}return e.level+=1,t?"-"+i:i}function Up(e){let n=e.parseGroup(),i=null;if(n===null?(n=e.parseToken(),i=e.parseToken()):i=e.parseGroup(),n=F(n),i=F(i),h(n)==="PartialDerivative"&&(h(i)==="PartialDerivative"||h(i)==="Multiply"&&h(d(i,1))==="PartialDerivative")){let t=d(n,3)??null,r=d(n,1);r==null&&(r=F(e.parseExpression()));let s=[];if(h(i)==="Multiply"){for(let o of N(i))if(h(o)==="PartialDerivative"){let a=d(o,2);a&&s.push(a)}}else{let o=d(i,2);o&&s.push(o)}return s.length>1&&(s=["List",...s]),["PartialDerivative",r,...s,t===null?1:t]}return["Divide",n,i]}function Mu(e,n){if(n===null)return"";let i=F(d(n,1)),t=F(d(n,2)),r=e.options.prettify?e.fractionStyle(n,e.level):"quotient";if(r==="inline-solidus"||r==="nice-solidus"){let u=e.wrapShort(i),l=e.wrapShort(t);return r==="inline-solidus"?`${u}/${l}`:`{}^{${u}}\\!\\!/\\!{}_{${l}}`}else{if(r==="reciprocal")return D(i)===1?e.wrap(t)+"^{-1}":e.wrap(i)+e.wrap(t)+"^{-1}";if(r==="factor")return D(t)===1?e.wrap(i):"\\frac{1}{"+e.serialize(t)+"}"+e.wrapString(e.serialize(i),e.groupStyle(n,1))}let s="\\frac";r==="block-quotient"?s="\\dfrac":r==="inline-quotient"&&(s="\\tfrac");let o=e.serialize(i),a=e.serialize(t);return`${s}{${o}}{${a}}`}function Xs(e,n){if(!n)return"";let i=h(n),t=F(d(n,1));if(i==="Sqrt")return Ct(e,e.rootStyle(n,e.level-1),t,2);let r=F(d(n,2));if(i==="Root")return Ct(e,e.rootStyle(n,e.level-1),t,r);if(e.options.prettify){let s=D(r)??1;if(s===-1)return e.serialize(["Divide","1",t]);if(s<0)return e.serialize(["Divide","1",["Power",t,-s]]);if(h(r)==="Divide"||h(r)==="Rational"){if(D(d(r,1))===1){let o=e.rootStyle(n,e.level);return Ct(e,o,t,d(r,2))}if(D(d(r,2))===2)return`${e.serialize(["Sqrt",t])}^{${e.serialize(d(r,1))}}`}else if(h(r)==="Power"&&D(d(r,2))===-1){let o=e.rootStyle(n,e.level);return Ct(e,o,t,d(r,1))}}if(h(t)==="Power"){let s=d(t,1),o=d(t,2);return`
|
|
13
|
-
${e.wrapShort(s)}^{${Ii("^",e.wrapShort(o),e.serialize(r))}}`}return Ii("^",e.wrapShort(t),e.serialize(r))}var Fu=[{name:"CatalanConstant",identifierTrigger:"G"},{name:"GoldenRatio",latexTrigger:"\\varphi"},{name:"EulerGamma",latexTrigger:"\\gamma"},{name:"Degrees",latexTrigger:["\\degree"],kind:"postfix",precedence:880,parse:(e,n)=>["Degrees",n],serialize:(e,n)=>b([e.serialize(d(n,1)),"\\degree"])},{latexTrigger:["\\degree"],kind:"postfix",precedence:880,parse:(e,n)=>["Degrees",n]},{latexTrigger:["^","<{>","\\circ","<}>"],kind:"postfix",parse:(e,n)=>["Degrees",n]},{latexTrigger:["^","\\circ"],kind:"postfix",parse:(e,n)=>["Degrees",n]},{latexTrigger:["\xB0"],kind:"postfix",precedence:880,parse:(e,n)=>["Degrees",n]},{latexTrigger:["\\ang"],parse:e=>{let n=e.parseGroup();return n===null?["Degrees"]:["Degrees",n]}},{latexTrigger:["\\infty"],parse:"PositiveInfinity"},{name:"PositiveInfinity",serialize:e=>e.options.positiveInfinity},{name:"NegativeInfinity",serialize:e=>e.options.negativeInfinity},{name:"ComplexInfinity",latexTrigger:["\\tilde","\\infty"],serialize:"\\tilde\\infty"},{latexTrigger:["\\tilde","<{>","\\infty","<}>"],parse:"ComplexInfinity"},{name:"Pi",kind:"symbol",latexTrigger:["\\pi"]},{latexTrigger:["\u03C0"],parse:"Pi"},{name:"ExponentialE",latexTrigger:["\\exponentialE"],parse:"ExponentialE",serialize:"\\exponentialE"},{latexTrigger:"\\operatorname{e}",parse:"ExponentialE"},{latexTrigger:"\\mathrm{e}",parse:"ExponentialE"},{kind:"function",identifierTrigger:"exp",parse:"Exp"},{latexTrigger:"\\exp",parse:"Exp"},{name:"ImaginaryUnit",latexTrigger:["\\imaginaryI"]},{latexTrigger:"\\operatorname{i}",parse:"ImaginaryUnit"},{latexTrigger:"\\mathrm{i}",parse:"ImaginaryUnit"},{name:"Abs",kind:"matchfix",openTrigger:"|",closeTrigger:"|",parse:(e,n)=>U(n)?null:["Abs",n]},{kind:"matchfix",openTrigger:["\\vert"],closeTrigger:["\\vert"],parse:(e,n)=>U(n)?null:["Abs",n]},{identifierTrigger:"abs",kind:"function",parse:"Abs"},{name:"Add",latexTrigger:["+"],kind:"infix",associativity:"any",precedence:275,parse:(e,n,i)=>{let t=e.parseExpression({...i,minPrec:275});return t===null?null:$i("Add",n,t)},serialize:Gp},{kind:"prefix",latexTrigger:["+"],precedence:275,parse:(e,n)=>e.parseExpression({...n,minPrec:400})},{name:"Ceil",kind:"matchfix",openTrigger:"\\lceil",closeTrigger:"\\rceil",parse:(e,n)=>U(n)?null:["Ceil",n]},{kind:"matchfix",openTrigger:["\u2308"],closeTrigger:["\u2309"],parse:(e,n)=>U(n)?null:["Ceil",n]},{identifierTrigger:"ceil",kind:"function",parse:"Ceil"},{name:"Chop",identifierTrigger:"chop",kind:"function",parse:"Chop"},{name:"Complex",precedence:274,serialize:(e,n)=>{let i=e.serialize(d(n,1)),t=D(d(n,2));if(t===0)return i;let r=t===1?"\\imaginaryI":t===-1?"-\\imaginaryI":b([e.serialize(d(n,2)),"\\imaginaryI"]);return D(d(n,1))===0?r:t!==null&&t<0?b([i,r]):b([i,"+",r])}},{name:"Divide",latexTrigger:"\\frac",precedence:600,parse:Up,serialize:Mu},{kind:"infix",latexTrigger:"\\over",associativity:"none",precedence:600,parse:"Divide"},{latexTrigger:["\\/"],kind:"infix",associativity:"left",precedence:600,parse:"Divide"},{latexTrigger:["/"],kind:"infix",associativity:"left",precedence:600,parse:"Divide"},{latexTrigger:["\\div"],kind:"infix",associativity:"left",precedence:600,parse:"Divide"},{name:"Exp",serialize:(e,n)=>{let i=d(n,1);return A(i)||D(i)!==null?b(["\\exponentialE^{",e.serialize(i),"}"]):b(["\\exp",e.wrap(F(i))])}},{name:"Factorial",latexTrigger:["!"],kind:"postfix",precedence:810},{name:"Factorial2",latexTrigger:["!","!"],kind:"postfix",precedence:810},{name:"Floor",kind:"matchfix",openTrigger:"\\lfloor",closeTrigger:"\\rfloor",parse:(e,n)=>U(n)?null:["Floor",n]},{kind:"matchfix",openTrigger:["\u230A"],closeTrigger:["\u230B"],parse:(e,n)=>U(n)?null:["Floor",n]},{identifierTrigger:"floor",kind:"function",parse:"Floor"},{latexTrigger:["\\Gamma"],parse:"Gamma"},{name:"GCD",latexTrigger:["\\gcd"]},{identifierTrigger:"gcd",kind:"function",parse:"GCD"},{identifierTrigger:"GCD",kind:"function",parse:"GCD"},{name:"Half",serialize:"\\frac12"},{name:"Lg",latexTrigger:["\\lg"],serialize:(e,n)=>"\\log_{10}"+e.wrapArguments(n),parse:e=>{let n=e.parseArguments("implicit");return n===null?"Lg":["Log",...n,10]}},{name:"Lb",latexTrigger:"\\lb",parse:e=>{let n=e.parseArguments("implicit");return n===null?"Log":["Log",n[0],2]}},{name:"Ln",latexTrigger:["\\ln"],parse:e=>Ou("Ln",e),serialize:(e,n)=>"\\ln"+e.wrapArguments(n)},{name:"Log",latexTrigger:["\\log"],parse:e=>Ou("Log",e),serialize:(e,n)=>{let[i,t]=N(n);return t?b(["\\log_{",e.serialize(t),"}",e.wrap(i)]):"\\log"+e.wrapArguments(n)}},{name:"LCM",identifierTrigger:"lcm",kind:"function"},{identifierTrigger:"LCM",kind:"function",parse:"LCM"},{identifierTrigger:"max",kind:"function",parse:"Max"},{identifierTrigger:"min",kind:"function",parse:"Min"},{name:"Max",latexTrigger:"\\max",kind:"function"},{name:"Min",latexTrigger:"\\min",kind:"function"},{name:"Supremum",latexTrigger:"\\sup",kind:"function"},{name:"Infimum",latexTrigger:"\\inf",kind:"function"},{name:"Limit",latexTrigger:"\\lim",kind:"expression",parse:e=>{if(!e.match("_"))return null;let n=e.parseGroup();if(h(n)!=="To")return null;let i=e.parseArguments("implicit");return i?["Limit",["Function",i[0],d(n,1)],d(n,2)]:null},serialize:(e,n)=>{let i=d(n,1),t=d(i,2),r=d(n,2);return b(["\\lim_{",e.serialize(t),"\\to",e.serialize(r),"}",e.serialize(d(i,1))])}},{name:"MinusPlus",latexTrigger:["\\mp"],kind:"infix",associativity:"any",precedence:270},{name:"Multiply",latexTrigger:["\\times"],kind:"infix",associativity:"any",precedence:390,serialize:Lu},{latexTrigger:["\\cdot"],kind:"infix",associativity:"any",precedence:390,parse:(e,n,i)=>{let t=e.parseExpression({...i,minPrec:392});return t===null?["Multiply",n,Li]:$i("Multiply",n,t)}},{latexTrigger:["*"],kind:"infix",associativity:"any",precedence:390,parse:(e,n,i)=>{let t=e.parseExpression({...i,minPrec:392});return t===null?["Multiply",n,Li]:$i("Multiply",n,t)}},{name:"Mod",latexTrigger:"\\bmod",kind:"infix",precedence:600,serialize:(e,n)=>{if(Y(n)!==2)return"";let i=e.serialize(d(n,1)),t=e.serialize(d(n,2));return b([i,"\\bmod",t])}},{latexTrigger:"\\mod",kind:"infix",precedence:600,parse:"Mod"},{latexTrigger:"\\pmod",kind:"prefix",precedence:245,parse:e=>{let n=e.parseGroup()??e.parseToken();return["Mod",F(n)]}},{name:"Congruent",serialize:(e,n)=>{let i=e.serialize(d(n,1)),t=e.serialize(d(n,2));if(d(n,3)===null)return b([i,"\\equiv",t]);let r=e.serialize(d(n,3));return b([i,"\\equiv",t,"\\pmod{",r,"}"])}},{name:"Negate",latexTrigger:["-"],kind:"prefix",precedence:701,parse:(e,n)=>{e.skipSpace();let i=e.parseExpression({...n,minPrec:703});return i===null?null:["Negate",i]}},{kind:"matchfix",openTrigger:"||",closeTrigger:"||",parse:(e,n)=>U(n)?null:["Norm",n]},{name:"Norm",kind:"matchfix",openTrigger:["\\left","\\Vert"],closeTrigger:["\\right","\\Vert"],parse:(e,n)=>U(n)?null:["Norm",n]},{name:"PlusMinus",latexTrigger:["\\pm"],kind:"infix",associativity:"any",precedence:270,serialize:(e,n)=>{let i=d(n,1);if(i===null)return"\\pm";if(Y(n)===1)return b(["\\pm",e.serialize(i)]);let t=d(n,2);return b([e.serialize(i),"\\pm",e.serialize(t)])}},{latexTrigger:["\\pm"],kind:"prefix",precedence:270,parse:(e,n)=>{let i=e.parseExpression({...n,minPrec:400});return["PlusMinus",0,F(i)]}},{latexTrigger:["\\plusmn"],kind:"infix",associativity:"any",precedence:270,parse:(e,n,i)=>{let t=e.parseExpression({...i,minPrec:400});return["PlusMinus",n,F(t)]}},{latexTrigger:["\\plusmn"],kind:"prefix",precedence:270,parse:(e,n)=>{let i=e.parseExpression({...n,minPrec:400});return["PlusMinus",F(i)]}},{name:"Power",latexTrigger:["^"],kind:"infix",serialize:Xs},{latexTrigger:"\\prod",precedence:390,name:"Product",parse:Cu("Product",390),serialize:Pu("\\prod")},{name:"Rational",precedence:600,serialize:(e,n)=>n&&Y(n)===1?"\\operatorname{Rational}"+e.wrapArguments(n):Mu(e,n)},{name:"Root",serialize:Xs},{name:"Round",identifierTrigger:"round",kind:"function"},{name:"Square",precedence:720,serialize:(e,n)=>e.wrapShort(d(n,1))+"^2"},{latexTrigger:["\\sum"],precedence:275,name:"Sum",parse:Cu("Sum",390),serialize:Pu("\\sum")},{name:"Sign",identifierTrigger:"sgn",kind:"function"},{name:"Sqrt",latexTrigger:["\\sqrt"],parse:zp,serialize:Xs},{name:"Subtract",latexTrigger:["-"],kind:"infix",associativity:"left",precedence:277,parse:(e,n,i)=>{e.index-=1;let t=e.parseExpression({...i,minPrec:278});return t===null?null:["Add",n,t]},serialize:(e,n)=>{let i=e.wrap(d(n,1),277),t=e.wrap(d(n,2),278);return b([i,"-",t])}}];function jp(e,n){if(e!==null){if(A(e))return{index:A(e)??"Nothing",upper:n};if(h(e)==="GreaterEqual"){let i=A(d(e,1))??"Nothing",t=d(e,2)??1;return{index:i,lower:t,upper:n}}if(h(e)==="Equal"){let i=A(d(e,1))??"Nothing",t=d(e,2);if(h(t)==="Range"){let s=d(t,1)??1,o=d(t,2)??void 0;return{index:i,lower:s,upper:o}}return{index:i,lower:t??1,upper:n}}}}function Zp(e,n){U(e)&&(e=null),U(n)&&(n=null);let i=e===null?[]:wn(e)??[e],t=n===null?[]:wn(n)??[n];return i.map((r,s)=>jp(r,t[s])).filter(r=>r!==void 0)}function Cu(e,n){return i=>{i.skipSpace();let t=null,r=null;for(;!(r&&t)&&(i.peek==="_"||i.peek==="^");)i.match("_")?r=i.parseGroup()??i.parseToken():i.match("^")&&(t=i.parseGroup()??i.parseToken()),i.skipSpace();let s=Zp(r,t);i.pushSymbolTable();for(let u of s)i.addSymbol(u.index,"symbol");let o=i.parseExpression({minPrec:n});if(i.popSymbolTable(),o===null)return[e];let a=[];for(let u of s){let l=u.lower,f=u.upper,c=u.index??"Nothing";f!=null?a.push(["Tuple",c,l??1,f]):l!=null?a.push(["Tuple",c,l]):a.push(["Tuple",c])}return[e,o,...a]}}function Pu(e){return(n,i)=>{if(!d(i,1))return e;let t=d(i,2),r=h(t);r!=="Tuple"&&r!=="Triple"&&r!=="Pair"&&r!=="Single"&&(t=null);let s=d(t,1);s!==null&&h(s)==="Hold"&&(s=d(s,1));let o=d(i,1);if(t!=null)return d(i,2)!==null?b([e,n.serialize(o)]):b([e,"_{",n.serialize(d(i,2)),"}",n.serialize(o)]);let a=d(t,2),u=[];s&&A(s)!=="Nothing"&&a?u=[n.serialize(s),"=",n.serialize(a)]:s&&A(s)!=="Nothing"?u=[n.serialize(s)]:a!==null&&(u=[n.serialize(a)]),u.length>0&&(u=["_{",...u,"}"]);let l=[];return d(t,3)!==null&&(l=["^{",n.serialize(d(t,3)),"}"]),b([e,...l,...u,n.serialize(o)])}}function Ou(e,n){let i=null;n.match("_")&&(i=n.parseGroup()??n.parseToken());let t=n.parseArguments("implicit");return t===null&&i===null?[e]:t===null?[e,i]:i===null?[e,...t]:i===10?["Log",t[0]]:i===2?["Lb",...t]:["Log",t[0],i]}function Pt(e){let n=1,i=e;do{e=i;let t=h(e);if(t==="Negate")n*=-1,i=d(e,1);else if(t==="Multiply"){let[r,s]=Pt(d(e,1));s<0&&(n*=-1,r===1?i=["Multiply",...N(e).slice(1)]:i=["Multiply",r,...N(e).slice(1)])}else if(t==="Divide"||t==="Rational"){let[r,s]=Pt(d(e,1));s<0&&(n*=-1,i=[t,r,d(e,2)])}else{let r=D(e);r!==null&&r<0&&(n*=-1,i=-r)}}while(i!==e);return[e,n]}function Ks(e,n,i,t,r){if(n&&n.minPrec>=t)return null;let s=i?[i]:["Nothing"],o=!1;for(;!o;){for(o=!0,e.skipSpace();e.match(r);)s.push("Nothing"),e.skipSpace();if(e.atTerminator(n))s.push("Nothing");else{let a=e.parseExpression({...n,minPrec:t});s.push(a??"Nothing"),o=a===null}o||(e.skipSpace(),o=!e.match(r))}return s}function xn(e=""){return(n,i)=>{if(!i)return"";let t=N(i);if(t.length===0)return"";if(t.length===1)return n.serialize(t[0]);e={"&":"\\&",":":"\\colon","|":"\\mvert","-":"-","\xB7":"\\cdot","\u2012":"-","\u2013":"--","\u2014":"---","\u2015":"-","\u2022":"\\bullet","\u2026":"\\ldots"}[e]??e;let r=t.reduce((s,o)=>(s.push(n.serialize(o),e),s),[]);return r.pop(),b(r)}}var qu=[{latexTrigger:["\\placeholder"],kind:"symbol",parse:e=>{for(;e.match("<space>"););if(e.match("["))for(;!e.match("]")&&!e.atBoundary;)e.nextToken();for(;e.match("<space>"););if(e.match("<{>"))for(;!e.match("<}>")&&!e.atBoundary;)e.nextToken();return"Nothing"}},{name:"Function",latexTrigger:["\\mapsto"],kind:"infix",precedence:270,parse:(e,n)=>{let i=[];if(h(n)==="Delimiter"&&(n=d(n,1)??"Nothing"),h(n)==="Sequence")for(let r of N(n)){if(!A(r))return null;i.push(A(r))}else{if(!A(n))return null;i=[A(n)]}let t=e.parseExpression({minPrec:270})??"Nothing";return h(t)==="Delimiter"&&(t=d(t,1)??"Nothing"),h(t)==="Sequence"&&(t=["Block",...N(t)]),["Function",t,...i]},serialize:(e,n)=>{let i=N(n);return i.length<1?"()\\mapsto()":i.length===1?b(["()","\\mapsto",e.serialize(d(n,1))]):i.length===2?b([e.serialize(d(n,2)),"\\mapsto",e.serialize(d(n,1))]):b([e.wrapString(N(n)?.slice(1).map(t=>e.serialize(t)).join(", "),"normal"),"\\mapsto",e.serialize(d(n,1))])}},{name:"Apply",kind:"function",identifierTrigger:"apply",serialize:(e,n)=>{let i=d(n,1),t=h(i);if(t==="InverseFunction"||t==="Derivative"){let o=e.options.applyFunctionStyle(n,e.level),a=N(n).slice(1);return e.serializeFunction(i,e.dictionary.ids.get(t))+e.wrapString(a.map(u=>e.serialize(u)).join(", "),o)}let r=d(n,2);if(typeof i=="string"||!r){let o=N(n).slice(1);return e.serialize(o)}if(Y(n)===2)return b([e.wrap(i,20),"\\lhd",e.wrap(r,20)]);let s=e.options.applyFunctionStyle(n,e.level);return b(["\\operatorname{apply}",e.wrapString(e.serialize(t)+", "+e.serialize(["List",...N(n)]),s)])}},{latexTrigger:"\\lhd",kind:"infix",precedence:20,parse:"Apply"},{latexTrigger:"\\rhd",kind:"infix",precedence:20,parse:(e,n)=>["Apply",e.parseExpression({minPrec:21})??"Nothing",n]},{name:"Assign",latexTrigger:"\\coloneq",kind:"infix",associativity:"right",precedence:260,serialize:(e,n)=>{let i=Vs(d(n,1));if(h(d(n,2))==="Function"){let t=d(n,2),r=Vs(d(t,1)),s=N(t).slice(1);return b([e.serialize(i),e.wrapString(s.map(o=>e.serialize(o)).join(", "),e.options.applyFunctionStyle(n,e.level)),"\\coloneq",e.serialize(r)])}return b([e.serialize(i),"\\coloneq",e.serialize(d(n,2))])},parse:Pr},{latexTrigger:"\\coloneqq",kind:"infix",associativity:"right",precedence:260,parse:Pr},{latexTrigger:"\\colonequals",kind:"infix",associativity:"right",precedence:260,parse:Pr},{latexTrigger:[":","="],kind:"infix",associativity:"right",precedence:260,parse:Pr},{name:"BaseForm",serialize:(e,n)=>{let i=D(d(n,2))??NaN;if(isFinite(i)&&i>=2&&i<=36){let t=D(d(n,1))??NaN;if(isFinite(t)&&Number.isInteger(t)){let r=Number(t).toString(i),s=0;if(i===2||i===10?s=4:i===16?s=2:i>16&&(s=4),s>0){let o=r;r="";for(let a=0;a<o.length;a++)a>0&&a%s===0&&(r="\\, "+r),r=o[o.length-a-1]+r}return`(\\text{${r}}_{${i}}`}}return"\\operatorname{BaseForm}("+e.serialize(d(n,1))+", "+e.serialize(d(n,2))+")"}},{name:"Sequence",serialize:xn(" ")},{name:"InvisibleOperator",serialize:xn("")},{name:"Delimiter",serialize:(e,n)=>{let i=e.options.groupStyle(n,e.level+1),t=d(n,1),r={Set:"{,}",List:"[,]",Tuple:"(,)",Single:"(,)",Pair:"(,)",Triple:"(,)",Sequence:"(,)",String:'""'}[h(t)],s=r?t:["Sequence",t];if(r??(r="(,)"),Y(n)>1){let f=V(d(n,2));typeof f=="string"&&f.length<=3&&(r=f)}let[o,a,u]=["","",""];r.length===3?[o,a,u]=r:r.length===2?[o,u]=r:r.length===1&&(a=r);let l=t?s?xn(a)(e,s):e.serialize(t):"";return e.wrapString(l,i,o+u)}},{name:"Tuple",serialize:(e,n)=>b(["(",xn(",")(e,n),")"])},{name:"Pair",serialize:(e,n)=>b(["(",xn(",")(e,n),")"])},{name:"Triple",serialize:(e,n)=>b(["(",xn(",")(e,n),")"])},{name:"Single",serialize:(e,n)=>b(["(",xn(",")(e,n),")"])},{name:"Domain",serialize:(e,n)=>h(n)==="Error"?e.serialize(n):`\\mathbf{${e.serialize(d(n,1))}}`},{latexTrigger:["\\mathtip"],parse:e=>{let n=e.parseGroup();return e.parseGroup(),n}},{latexTrigger:["\\texttip"],parse:e=>{let n=e.parseGroup();return e.parseGroup(),n}},{latexTrigger:["\\error"],parse:e=>["Error",e.parseGroup()]},{name:"Error",serialize:(e,n)=>{let i=d(n,1);if(V(i)==="missing")return`\\error{${e.options.missingSymbol??"\\placeholder{}"}}`;let t=Jp(e,n)||"\\blacksquare",r=h(i)==="ErrorCode"?V(d(i,1)):V(i);return r==="incompatible-type"?A(d(i,3))==="Undefined"?`\\mathtip{\\error{${t}}}{\\notin ${e.serialize(d(i,2))}}`:`\\mathtip{\\error{${t}}}{\\in ${e.serialize(d(i,3))}\\notin ${e.serialize(d(i,2))}}`:typeof r=="string"?`\\error{${t}}`:`\\error{${t}}`}},{name:"ErrorCode",serialize:(e,n)=>{let i=V(d(n,1));return i==="missing"?e.options.missingSymbol??"\\placeholder{}":i==="unexpected-command"||i==="unexpected-operator"||i==="unexpected-token"||i==="invalid-identifier"||i==="unknown-environment"||i==="unexpected-base"||i==="incompatible-type"?"":`\\texttip{\\error{\\blacksquare}}{\\mathtt{${i}}}`}},{name:"FromLatex",serialize:(e,n)=>`\\texttt{${Wp(V(d(n,1)))}}`},{name:"Latex",serialize:(e,n)=>n===null?"":b(Dr(n,i=>V(i)??e.serialize(i)))},{name:"LatexString",serialize:(e,n)=>n===null?"":b(Dr(n,i=>e.serialize(i)))},{name:"LatexTokens",serialize:Hp},{name:"At",kind:"postfix",precedence:810,latexTrigger:["["],parse:no("]"),serialize:(e,n)=>b(["\\lbrack",xn(", ")(e,n),"\\rbrack"])},{kind:"postfix",precedence:810,latexTrigger:["\\lbrack"],parse:no("\\rbrack")},{kind:"postfix",precedence:810,latexTrigger:["\\left","\\lbrack"],parse:no("\\right","\\rbrack")},{kind:"postfix",latexTrigger:["_"],parse:(e,n,i)=>{let t=e.parseGroup()??e.parseToken();return["Subscript",n,t]}},{name:"List",kind:"matchfix",openTrigger:"[",closeTrigger:"]",parse:$u,serialize:Qp},{kind:"matchfix",openTrigger:"(",closeTrigger:")",parse:Yp},{latexTrigger:[","],kind:"infix",precedence:20,parse:(e,n,i)=>{let t=Ks(e,i,n,20,",");return t===null?null:["Delimiter",["Sequence",...t],{str:","}]}},{latexTrigger:[","],kind:"prefix",precedence:20,parse:(e,n)=>{let i=Ks(e,n,null,20,",");return i===null?null:["Delimiter",["Sequence",...i],{str:","}]}},{name:"Range",latexTrigger:[".","."],kind:"infix",precedence:800,parse:Xp,serialize:(e,n)=>{let i=N(n);if(i.length===0)return"";if(i.length===1)return"1.."+e.serialize(d(n,1));if(i.length===2)return e.wrap(d(n,1),10)+".."+e.wrap(d(n,2),10);if(i.length===3){let t=D(d(n,3)),r=D(d(n,1));return t!==null&&r!==null?e.wrap(d(n,1),10)+".."+e.wrap(r+t,10)+".."+e.wrap(d(n,2),10):e.wrap(d(n,1),10)+"..("+(e.wrap(d(n,1),275)+"+"+e.wrap(d(n,3),275))+").."+e.wrap(d(n,2),10)}return""}},{latexTrigger:[";"],kind:"infix",precedence:19,parse:(e,n,i)=>{let t=Ks(e,i,n,19,";");return t===null?null:["Delimiter",["Sequence",...t],"';'"]}},{name:"String",latexTrigger:["\\text"],parse:e=>io(e),serialize:(e,n)=>{let i=N(n);return i.length===0?"\\text{}":b(["\\text{",i.map(t=>e.serialize(t)).join(""),"}"])}},{name:"Subscript",latexTrigger:["_"],kind:"infix",serialize:(e,n)=>Y(n)===2?e.serialize(d(n,1))+"_{"+e.serialize(d(n,2))+"}":"_{"+e.serialize(d(n,1))+"}"},{name:"Superplus",latexTrigger:["^","+"],kind:"postfix"},{name:"Subplus",latexTrigger:["_","+"],kind:"postfix"},{name:"Superminus",latexTrigger:["^","-"],kind:"postfix"},{name:"Subminus",latexTrigger:["_","-"],kind:"postfix"},{latexTrigger:["^","*"],kind:"postfix",parse:(e,n)=>["Superstar",n]},{latexTrigger:["_","*"],kind:"postfix",parse:(e,n)=>["Substar",n]},{name:"Substar",latexTrigger:["_","\\star"],kind:"postfix"},{name:"Superdagger",latexTrigger:["^","\\dagger"],kind:"postfix"},{latexTrigger:["^","\\dag"],kind:"postfix",parse:(e,n)=>["Superdagger",n]},{name:"Prime",latexTrigger:["^","\\prime"],kind:"postfix",parse:(e,n)=>Dn(e,n,1),serialize:(e,n)=>{let i=D(d(n,2))??1,t=e.serialize(d(n,1));return i===1?t+"^\\prime":i===2?t+"^\\doubleprime":i===3?t+"^\\tripleprime":t+"^{("+e.serialize(d(n,2))+")}"}},{latexTrigger:"^{\\prime\\prime}",kind:"postfix",parse:(e,n)=>Dn(e,n,2)},{latexTrigger:"^{\\prime\\prime\\prime}",kind:"postfix",parse:(e,n)=>Dn(e,n,3)},{latexTrigger:["^","\\doubleprime"],kind:"postfix",parse:(e,n)=>Dn(e,n,2)},{latexTrigger:["^","\\tripleprime"],kind:"postfix",parse:(e,n)=>Dn(e,n,3)},{latexTrigger:"'",kind:"postfix",precedence:810,parse:(e,n)=>Dn(e,n,1)},{latexTrigger:"\\prime",kind:"postfix",precedence:810,parse:(e,n)=>Dn(e,n,1)},{latexTrigger:"\\doubleprime",kind:"postfix",precedence:810,parse:(e,n)=>Dn(e,n,2)},{latexTrigger:"\\tripleprime",kind:"postfix",precedence:810,parse:(e,n)=>Dn(e,n,3)},{latexTrigger:["^","<{>","("],kind:"postfix",parse:(e,n,i)=>{let t=A(n);if(!t||e.getIdentifierType(t)!=="function")return null;e.addBoundary([")"]);let r=e.parseExpression(i);return!e.matchBoundary()||!e.match("<}>")?null:["Derivative",n,r]}},{name:"InverseFunction",latexTrigger:"^{-1",kind:"postfix",parse:(e,n)=>{let i=A(n);if(!i||e.getIdentifierType(i)!=="function")return null;let t=0;for(;!e.atEnd&&!e.match("<}>");)if(e.match("'"))t++;else if(e.match("\\prime"))t++;else if(e.match("\\doubleprime"))t+=2;else if(e.match("\\tripleprime"))t+=3;else return null;return t===1?["Derivative",["InverseFunction",n]]:t>0?["Derivative",["InverseFunction",n],t]:["InverseFunction",n]},serialize:(e,n)=>e.serialize(d(n,1))+"^{-1}"},{name:"Derivative",serialize:(e,n)=>{let i=D(d(n,2))??1,t=e.serialize(d(n,1));return i===1?t+"^{\\prime}":i===2?t+"^{\\doubleprime}":i===3?t+"^{\\tripleprime}":t+"^{("+e.serialize(d(n,2))+")}"}},{kind:"environment",name:"Which",identifierTrigger:"cases",parse:eo,serialize:(e,n)=>{let i=[],t=N(n);if(t.length>0)for(let r=0;r<=t.length-2;r+=2){let s=[];s.push(e.serialize(t[r+1])),s.push(e.serialize(t[r])),i.push(s.join("&"))}return b(["\\begin{cases}",i.join("\\\\"),"\\end{cases}"])}},{kind:"environment",identifierTrigger:"dcases",parse:eo},{kind:"environment",identifierTrigger:"rcases",parse:eo}];function io(e,n){if(!e.match("<{>"))return"''";let i=[],t="",r=null;for(;!e.atEnd&&!e.match("<}>");)if(e.peek==="<{>")i.push(io(e));else if(e.match("\\textbf")&&e.match("<{>"))i.push(io(e,{"font-weight":"bold"}));else if(e.match("\\color")){let o=e.parseStringGroup();o!==null&&(r!==null&&t?i.push(["Style",t,wr(r)]):t&&i.push(["String",t]),t="",r={color:o})}else if(e.match("<space>"))t+=" ";else if(e.match("<$>")){let o=e.index,a=e.parseExpression()??"Nothing";e.skipSpace(),e.match("<$>")?i.push(a):(t+="$",e.index=o)}else if(e.match("<$$>")){let o=e.index,a=e.parseExpression()??"Nothing";e.skipSpace(),e.match("<$$>")?i.push(a):(t+="$$",e.index=o)}else{let o=e.matchChar()??e.nextToken();t+={"\\enskip":"\u2002","\\enspace":"\u2002","\\quad":"\u2003","\\qquad":"\u2003\u2003","\\space":"\u2003","\\ ":"\u2003","\\;":"\u2004","\\,":"\u2009","\\:":"\u205F","\\!":"","\\{":"{","\\}":"}","\\$":"$","\\&":"&","\\#":"#","\\%":"%","\\_":"_","\\textbackslash":"\\","\\textasciitilde":"~","\\textasciicircum":"^","\\textless":"<","\\textgreater":">","\\textbar":"|","\\textunderscore":"_","\\textbraceleft":"{","\\textbraceright":"}","\\textasciigrave":"`","\\textquotesingle":"'","\\textquotedblleft":"\u201C","\\textquotedblright":"\u201D","\\textquotedbl":'"',"\\textquoteleft":"\u2018","\\textquoteright":"\u2019","\\textbullet":"\u2022","\\textdagger":"\u2020","\\textdaggerdbl":"\u2021","\\textsection":"\xA7","\\textparagraph":"\xB6","\\textperiodcentered":"\xB7","\\textellipsis":"\u2026","\\textemdash":"\u2014","\\textendash":"\u2013","\\textregistered":"\xAE","\\texttrademark":"\u2122","\\textdegree":"\xB0"}[o]??o}r!==null&&t?i.push(["Style",`'${t}'`,wr(r)]):t&&i.push(`'${t}'`);let s;return i.length===1?s=i[0]:i.every(o=>V(o)!==null)?s="'"+i.map(o=>V(o)).join()+"'":s=["String",...i],n?["Style",s,wr(n)]:s}function Hp(e,n){return n===null?"":b(Dr(n,i=>{let t=V(i);return t===null?e.serialize(i):t==="<{>"?"{":t==="<}>"?"}":t==="<$>"?"$":t==="<$$>"?"$$":t==="<space>"?" ":t}))}function Wp(e){return e===null?"":e.replace(/[{}\[\]\\:\-\$%]/g,n=>({"{":"\\lbrace ","}":"\\rbrace ","[":"\\lbrack ","]":"\\rbrack ",":":"\\colon ","\\":"\\backslash "})[n]??"\\"+n)}function Jp(e,n){let i=d(n,2);return i?h(i)==="LatexString"?V(d(i,1))??"":h(i)==="Hold"?e.serialize(d(i,1)):e.serialize(i):""}function Dn(e,n,i){let t=h(n);if(t==="Derivative"||t==="Prime"){let s=D(d(n,2))??1;return[t,F(d(n,1)),s+i]}let r=A(n);return r&&e.getIdentifierType(r)==="function"||h(n)?i===1?["Derivative",n]:["Derivative",n,i]:i===1?["Prime",F(n)]:["Prime",F(n),i]}function Yp(e,n){if(U(n))return["Delimiter"];let i=h(n);if(i==="Delimiter"&&d(n,2)!==null){let t=V(d(n,2));if(t?.length===1)return["Delimiter",d(n,1)??"Nothing",{str:`(${t})`}]}return i==="Matrix"&&(V(d(n,2))??"..")===".."?["Matrix",d(n,1)]:["Delimiter",n]}function $u(e,n){if(U(n))return["List"];let i=h(n);if(i==="Range"||i==="Linspace")return n;if(i==="Sequence")return["List",...N(n)];if(i==="Delimiter"){let t=V(d(n,2))??"...";if(t===";"||t===".;.")return["List",...(N(d(n,1))??[]).map(r=>$u(e,r))];if(t===","||t===".,.")return n=d(n,1),h(n)==="Sequence"?["List",...N(n)]:["List",n??"Nothing"]}return["List",n]}function Qp(e,n){return Y(n)>1&&N(n).every(i=>{let t=h(i);return Nr(t)||Er(t)})?b(["\\begin{cases}",xn("\\\\")(e,n),"\\end{cases}"]):b(["\\bigl\\lbrack",xn(", ")(e,n),"\\bigr\\rbrack"])}function Xp(e,n){if(n===null)return null;let i=e.parseExpression({minPrec:270});if(i===null)return null;if(e.matchAll([".","."])){let t=e.parseExpression({minPrec:270});if(t===null)return null;let r=D(n),s=D(i);return r!==null&&s!==null?s<=r?null:s-r===1?["Range",n,t]:["Range",n,t,s-r]:["Range",n,t,["Subtract",i,n]]}return["Range",n,i]}var ji={"(":"(",")":")","[":"\\lbrack","]":"\\rbrack","\u27E6":"\\llbrack","\u27E7":"\\rrbrack","{":"\\lbrace","}":"\\rbrace","<":"\\langle",">":"\\rangle","\u2016":"\\Vert","\\":"\\backslash","\u2308":"\\lceil","\u2309":"\\rceil","\u230A":"\\lfloor","\u230B":"\\rfloor","\u231C":"\\ulcorner","\u231D":"\\urcorner","\u231E":"\\llcorner","\u231F":"\\lrcorner","\u23B0":"\\lmoustache","\u23B1":"\\rmoustache"};function Pr(e,n){if(h(n)==="InvisibleOperator"&&Y(n)===2&&h(d(n,2))==="Delimiter"){let r=A(d(n,1));if(!r)return null;let s=e.parseExpression({minPrec:0});if(s===null)return null;let o=d(d(n,2),1),a=[];return h(o)==="Sequence"?a=[...N(o)]:o&&(a=[o]),["Assign",r,["Function",s,...a??[]]]}let i=h(n);if(i){let r=N(n),s=e.parseExpression({minPrec:0});return s===null?null:["Assign",i,["Function",s,...r]]}if(!A(n))return null;let t=e.parseExpression({minPrec:0});return t===null?null:["Assign",n,t]}function eo(e){let n=e.parseTabular();if(!n)return["List"];if(n.every(t=>{if(t.length!==1)return!1;let r=h(t[0]);return Er(r)||Nr(r)}))return["List",...n.map(t=>t[0])];let i=[];for(let t of n)if(t.length===1)i.push("True"),i.push(t[0]);else if(t.length===2){let r=V(t[1]);i.push(r?"True":$s(t[1])??"True"),i.push(t[0])}return["Which",...i]}function no(...e){return(n,i)=>{if(!A(i)&&h(i)!=="List")return null;let t=null;return e.length===0&&(t=n.parseGroup()),t??(t=n.parseExpression({minPrec:0})),t===null||e.length>0&&!n.matchAll(e)||V(t)!==null?null:(h(t)==="Delimiter"&&(t=d(t,1)??"Nothing"),h(t)==="Sequence"?["At",i,...N(t)]:["At",i,t])}}var zu=[{name:"Matrix",serialize:(e,n)=>{let i=N(d(n,1));return Vu(e,i,V(d(n,2)),V(d(n,3)))}},{name:"Vector",serialize:(e,n)=>{let i=N(n);return Vu(e,i.map(t=>["List",t]),V(d(n,2)),V(d(n,3)))}},{kind:"environment",identifierTrigger:"pmatrix",parse:e=>{let n=Rn(e),[i,t]=An(e);return n?[i,t,{str:"()"},{str:n}]:[i,t]}},{kind:"environment",identifierTrigger:"bmatrix",parse:e=>{let n=Rn(e),[i,t]=An(e);return n?[i,t,{str:"[]"},{str:n}]:[i,t,{str:"[]"}]}},{kind:"environment",identifierTrigger:"Bmatrix",parse:e=>{let n=Rn(e),[i,t]=An(e);return n?[i,t,{str:"{}"},{str:n}]:[i,t,{str:"{}"}]}},{kind:"environment",identifierTrigger:"vmatrix",parse:e=>{let n=Rn(e),[i,t]=An(e);return n?[i,t,{str:"||"},{str:n}]:[i,t,{str:"||"}]}},{kind:"environment",identifierTrigger:"Vmatrix",parse:e=>{let n=Rn(e),[i,t]=An(e);return n?[i,t,{str:"\u2016\u2016"},{str:n}]:[i,t,{str:"\u2016\u2016"}]}},{kind:"environment",identifierTrigger:"smallmatrix",parse:e=>{let n=Rn(e),[i,t]=An(e);return n?[i,t,{str:"()"},{str:n}]:[i,t]}},{kind:"environment",identifierTrigger:"array",parse:e=>{let n=Rn(e,!1),[i,t]=An(e);return n?[i,t,{str:".."},{str:n}]:[i,t,{str:".."}]}},{kind:"environment",identifierTrigger:"matrix",parse:e=>{let n=Rn(e),[i,t]=An(e);return n?[i,t,{str:".."},{str:n}]:[i,t,{str:".."}]}},{kind:"environment",identifierTrigger:"matrix*",parse:e=>{let n=Rn(e),[i,t]=An(e);return n?[i,t,{str:".."},{str:n}]:[i,t,{str:".."}]}},{name:"ConjugateTranspose",kind:"postfix",latexTrigger:["^","\\star"]},{kind:"postfix",latexTrigger:["^","\\H"],parse:"ConjugateTranspose"},{kind:"postfix",latexTrigger:["^","\\dagger"],parse:(e,n)=>["ConjugateTranspose",n]},{kind:"postfix",latexTrigger:["^","\\ast"],parse:(e,n)=>["ConjugateTranspose",n]},{kind:"postfix",latexTrigger:["^","\\top"],parse:(e,n)=>["Transpose",n]},{kind:"postfix",latexTrigger:["^","\\intercal"],parse:(e,n)=>["Transpose",n]},{name:"Transpose",kind:"postfix",latexTrigger:["^","T"]},{name:"PseudoInverse",kind:"postfix",latexTrigger:["^","+"]},{name:"Trace",kind:"function",identifierTrigger:"tr"},{name:"Determinant",kind:"function",identifierTrigger:"det"}];function An(e){let n=e.parseTabular();return n?["Matrix",["List",...n.map(i=>["List",...i])]]:["",null]}function Rn(e,n=!0){let i=e.parseStringGroup(n)?.trim();if(!i)return"";let t="";for(let r of i)r==="c"&&(t+="="),r==="l"&&(t+="<"),r==="r"&&(t+=">"),r==="|"&&(t+="|"),r===":"&&(t+=":");return t}function Vu(e,n,i,t){i??(i="()");let[r,s]=["",""];typeof i=="string"&&i.length===2&&([r,s]=i);let o="";if(t)for(let f of t)f==="<"?o+="l":f===">"?o+="r":f==="="?o+="c":f==="|"?o+="|":f===":"&&(o+=":");let a=[];for(let f of n??[]){let c=[];for(let p of N(f))c.push(e.serialize(p));a.push(c.join(" & "))}let u=a.join(`\\\\
|
|
14
|
-
`),l=o.length>0?`[${o}]`:"";return r==="("&&s===")"?b(["\\begin{pmatrix}",l,u,"\\end{pmatrix}"]):r==="["&&s==="]"?b(["\\begin{bmatrix}",l,u,"\\end{bmatrix}"]):r==="{"&&s==="}"?b(["\\begin{Bmatrix}",l,u,"\\end{Bmatrix}"]):r==="|"&&s==="|"?b(["\\begin{vmatrix}",l,u,"\\end{vmatrix}"]):r==="\u2016"&&s==="\u2016"?b(["\\begin{Vmatrix}",l,u,"\\end{Vmatrix}"]):r==="{"&&s==="."?b(["\\begin{dcases}",l,u,"\\end{dcases}"]):r==="."&&s==="}"?b(["\\begin{rcases}",l,u,"\\end{rcases}"]):o||r!=="."||s!=="."?b(["\\left",ji[r]??r,"\\begin{array}",`{${o}}`,u,"\\end{array}","\\right",ji[s]??s]):b(["\\begin{matrix}",u,"\\end{matrix}"])}var Gu=[{name:"True",kind:"symbol",latexTrigger:["\\top"]},{kind:"symbol",latexTrigger:"\\mathrm{True}",parse:"True"},{kind:"symbol",latexTrigger:"\\operatorname{True}",parse:"True"},{kind:"symbol",latexTrigger:"\\mathsf{T}",parse:"True"},{name:"False",kind:"symbol",latexTrigger:["\\bot"]},{kind:"symbol",latexTrigger:"\\operatorname{False}",parse:"False"},{kind:"symbol",latexTrigger:"\\mathsf{F}",parse:"False"},{name:"And",kind:"infix",latexTrigger:["\\land"],precedence:317},{kind:"infix",latexTrigger:["\\wedge"],parse:"And",precedence:317},{kind:"infix",latexTrigger:"\\&",parse:"And",precedence:317},{kind:"infix",latexTrigger:"\\operatorname{and}",parse:"And",precedence:317},{name:"Or",kind:"infix",latexTrigger:["\\lor"],precedence:310},{kind:"infix",latexTrigger:["\\vee"],parse:"Or",precedence:310},{kind:"infix",latexTrigger:"\\parallel",parse:"Or",precedence:310},{kind:"infix",latexTrigger:"\\operatorname{or}",parse:"Or",precedence:310},{name:"Xor",kind:"infix",latexTrigger:["\\veebar"],precedence:315},{name:"Not",kind:"prefix",latexTrigger:["\\lnot"],precedence:880},{kind:"prefix",latexTrigger:["\\neg"],parse:"Not",precedence:880},{name:"Nand",kind:"infix",latexTrigger:["\\barwedge"],precedence:315},{name:"Nor",kind:"infix",latexTrigger:["\u22BD"],precedence:315},{kind:"function",identifierTrigger:"and",parse:"And"},{kind:"function",identifierTrigger:"or",parse:"Or"},{kind:"function",identifierTrigger:"not",parse:"Not"},{name:"Implies",kind:"infix",precedence:220,associativity:"right",latexTrigger:["\\implies"],serialize:"\\implies"},{latexTrigger:["\\Rightarrow"],kind:"infix",precedence:220,associativity:"right",parse:"Implies"},{name:"Equivalent",latexTrigger:["\\iff"],kind:"infix",associativity:"right",precedence:219},{latexTrigger:["\\Leftrightarrow"],kind:"infix",associativity:"right",precedence:219,parse:"Equivalent"},{latexTrigger:["\\equiv"],kind:"infix",associativity:"right",precedence:219,parse:(e,n,i)=>{let t=e.parseExpression({...i,minPrec:219}),r=e.index,s=e.parseExpression({...i,minPrec:219});return s!==null&&h(s)==="Mod"?["Congruent",n,t,F(d(s,1))]:(e.index=r,["Equivalent",n,F(t)])}},{name:"Proves",kind:"infix",latexTrigger:["\\vdash"],precedence:220,associativity:"right",serialize:"\\vdash"},{name:"Entails",kind:"infix",latexTrigger:["\\vDash"],precedence:220,associativity:"right",serialize:"\\vDash"},{name:"Satisfies",kind:"infix",latexTrigger:["\\models"],precedence:220,associativity:"right",serialize:"\\models"},{name:"ForAll",kind:"prefix",latexTrigger:["\\forall"],precedence:200,serialize:"\\forall",parse:Ot("ForAll")},{name:"Exists",kind:"prefix",latexTrigger:["\\exists"],precedence:200,serialize:"\\exists",parse:Ot("Exists")},{name:"ExistsUnique",kind:"prefix",latexTrigger:["\\exists","!"],precedence:200,serialize:"\\exists!",parse:Ot("ExistsUnique")},{name:"NotForAll",kind:"prefix",latexTrigger:["\\lnot","\\forall"],precedence:200,serialize:"\\lnot\\forall",parse:Ot("NotForAll")},{name:"NotExists",kind:"prefix",latexTrigger:["\\lnot","\\exists"],precedence:200,serialize:"\\lnot\\exists",parse:Ot("NotExists")},{name:"KroneckerDelta",kind:"prefix",latexTrigger:["\\delta","_"],precedence:200,serialize:(e,n)=>{let i=N(n);return i.length===0?"\\delta":i.every(t=>A(t))?`\\delta_{${i.map(t=>e.serialize(t)).join("")}}`:`\\delta_{${i.map(t=>e.serialize(t)).join(", ")}}`},parse:e=>{let n=e.parseGroup();if(n===null){let t=e.parseToken();return t?["KroneckerDelta",t]:null}let i=wn(n);return i&&i.length<=2?["KroneckerDelta",...i]:h(n)==="InvisibleOperator"?["KroneckerDelta",...N(n)]:n!==null?["KroneckerDelta",n]:null}},{name:"Boole",kind:"matchfix",openTrigger:"[",closeTrigger:"]",parse:(e,n)=>{let i=h(n);return!i||!ni.some(t=>t.name===i)?null:["Boole",n]}},{kind:"matchfix",openTrigger:"\\llbracket",closeTrigger:"\\rrbracket",parse:(e,n)=>{let i=h(n);return!i||!ni.some(t=>t.name===i)?null:["Boole",n]}}];function Ot(e){return(n,i)=>{let t=n.index,r=n.parseSymbol(i);if(r){if(n.skipSpace(),n.match(",")||n.match("\\mid")||n.match(".")||n.match(":")||n.match("\\colon")){let a=n.parseExpression(i);return[e,r,F(a)]}let o=n.parseEnclosure();if(o)return[e,r,F(o)]}n.index=t;let s=n.parseExpression(i);if(s===null)return null;if(n.skipSpace(),n.matchAny([",","\\mid",":","\\colon"])){let o=n.parseExpression(i);return[e,s,F(o)]}if(n.match("(")){let o=n.parseExpression(i);return n.match(")")?[e,s,F(o)]:null}return null}}function Ce(e){return n=>{let i=n.parseGroup();return i===null?[e]:[e,i]}}var Uu=[{name:"Overscript",latexTrigger:["\\overset"],kind:"infix",precedence:700},{name:"Underscript",latexTrigger:["\\underset"],kind:"infix",precedence:700},{name:"Increment",latexTrigger:["+","+"],kind:"postfix",precedence:880,parse:(e,n)=>A(n)===null?null:["Decrement",n]},{name:"Decrement",latexTrigger:["-","-"],kind:"postfix",precedence:880,parse:(e,n)=>A(n)===null?null:["Decrement",n]},{name:"PreIncrement",latexTrigger:["+","+"],kind:"prefix",precedence:880,parse:(e,n)=>{let i=e.parseExpression(n);return A(i)===null?null:["PreIncrement",i]}},{name:"PreDecrement",latexTrigger:["-","-"],kind:"prefix",precedence:880,parse:(e,n)=>{let i=e.parseExpression(n);return A(i)===null?null:["PreDecrement",i]}},{name:"Ring",latexTrigger:["\\circ"],kind:"infix",precedence:265},{name:"StringJoin",latexTrigger:["\\lt","\\gt"],kind:"infix",precedence:780},{name:"Starstar",latexTrigger:["\\star","\\star"],kind:"infix",precedence:780},{name:"PartialDerivative",latexTrigger:["\\partial"],kind:"prefix",parse:e=>{let n=!1,i="Nothing",t="Nothing";for(;!n;)e.skipSpace(),e.match("_")?t=e.parseGroup()??e.parseToken():e.match("^")?i=e.parseGroup()??e.parseToken():n=!0;let r=wn(t);if(r&&(t=["List",...r]),t===null||i===null)return null;let s=e.parseGroup()??"Nothing";if(!U(s)){let o=e.parseArguments()??["Nothing"];s=[s,...o]}return["PartialDerivative",s,t,i]},serialize:(e,n)=>{let i="\\partial",t=d(n,1),r=d(n,2),s=d(n,3);return r!==null&&r!=="Nothing"&&(h(r)==="List"?i+="_{"+e.serialize(["Sequence",...N(r)])+"}":i+="_{"+e.serialize(r)+"}"),s!==null&&s!=="Nothing"&&(i+="^{"+e.serialize(s)+"}"),t!==null&&t!=="Nothing"&&(i+=e.serialize(t)),i},precedence:740},{name:"OverBar",latexTrigger:["\\overline"],parse:Ce("OverBar")},{name:"UnderBar",latexTrigger:["\\underline"],parse:Ce("UnderBar")},{name:"OverVector",latexTrigger:["\\vec"],parse:Ce("OverVector")},{name:"OverTilde",latexTrigger:["\\tilde"],parse:Ce("OverTilde")},{name:"OverHat",latexTrigger:["\\hat"],parse:Ce("OverHat")},{name:"OverRightArrow",latexTrigger:["\\overrightarrow"],parse:Ce("OverRightArrow")},{name:"OverLeftArrow",latexTrigger:["\\overleftarrow"],parse:Ce("OverLeftArrow")},{name:"OverRightDoubleArrow",latexTrigger:["\\Overrightarrow"],parse:Ce("OverRightDoubleArrow")},{name:"OverLeftHarpoon",latexTrigger:["\\overleftharpoon"],parse:Ce("OverLeftHarpoon")},{name:"OverRightHarpoon",latexTrigger:["\\overrightharpoon"],parse:Ce("OverRightHarpoon")},{name:"OverLeftRightArrow",latexTrigger:["\\overleftrightarrow"],parse:Ce("OverLeftRightArrow")},{name:"OverBrace",latexTrigger:["\\overbrace"],parse:Ce("OverBrace")},{name:"OverLineSegment",latexTrigger:["\\overlinesegment"],parse:Ce("OverLineSegment")},{name:"OverGroup",latexTrigger:["\\overgroup"],parse:Ce("OverGroup")},{latexTrigger:["\\displaystyle"],parse:()=>"Nothing"},{latexTrigger:["\\textstyle"],parse:()=>"Nothing"},{latexTrigger:["\\scriptstyle"],parse:()=>"Nothing"},{latexTrigger:["\\scriptscriptstyle"],parse:()=>"Nothing"},{latexTrigger:["\\tiny"],parse:()=>"Nothing"},{latexTrigger:["\\scriptsize"],parse:()=>"Nothing"},{latexTrigger:["\\footnotesize"],parse:()=>"Nothing"},{latexTrigger:["\\small"],parse:()=>"Nothing"},{latexTrigger:["\\normalsize"],parse:()=>"Nothing"},{latexTrigger:["\\large"],parse:()=>"Nothing"},{latexTrigger:["\\Large"],parse:()=>"Nothing"},{latexTrigger:["\\LARGE"],parse:()=>"Nothing"},{latexTrigger:["\\huge"],parse:()=>"Nothing"},{latexTrigger:["\\Huge"],parse:()=>"Nothing"},{name:"Style",serialize:(e,n)=>{let i=e.serialize(d(n,1)),t=zs(d(n,2));if(t===null)return i;V(t.display)==="block"?i=b(["{\\displaystyle",i,"}"]):V(t.display)==="inline"?i=b(["{\\textstyle",i,"}"]):V(t.display)==="script"?i=b(["{\\scriptstyle",i,"}"]):V(t.display)==="scriptscript"&&(i=b(["{\\scriptscriptstyle",i,"}"]));let r=D(t.size);return r!==null&&r>=1&&r<=10&&(i=b(["{",{1:"\\tiny",2:"\\scriptsize",3:"\\footnotesize",4:"\\small",5:"\\normalsize",6:"\\large",7:"\\Large",8:"\\LARGE",9:"\\huge",10:"\\Huge"}[r],i,"}"])),i}},{latexTrigger:["\\!"],parse:()=>["HorizontalSpacing",-3]},{latexTrigger:["\\ "],parse:()=>["HorizontalSpacing",6]},{latexTrigger:["\\:"],parse:()=>["HorizontalSpacing",4]},{latexTrigger:["\\enskip"],parse:()=>["HorizontalSpacing",9]},{latexTrigger:["\\quad"],parse:()=>["HorizontalSpacing",18]},{latexTrigger:["\\qquad"],parse:()=>["HorizontalSpacing",36]},{latexTrigger:["\\,"],parse:()=>["HorizontalSpacing",3]},{latexTrigger:["\\;"],parse:()=>["HorizontalSpacing",5]},{latexTrigger:["\\enspace"],parse:()=>["HorizontalSpacing",9]},{name:"HorizontalSpacing",serialize:(e,n)=>{if(d(n,2)!==null)return e.serialize(d(n,1));let i=D(d(n,1));return i===null?"":{"-3":"\\!",6:"\\ ",3:"\\,",4:"\\:",5:"\\;",9:"\\enspace",18:"\\quad",36:"\\qquad"}[i]??""}}];function T(e){return(n,i)=>{let t={"\\arcsin":"Arcsin","\\arccos":"Arccos","\\arctan":"Arctan","\\arctg":"Arctan","\\arcctg":"Arccot","\\arcsec":"Arcsec","\\arccsc":"Arccsc","\\arsinh":"Arsinh","\\arcosh":"Arccosh","\\arccosh":"Arccosh","\\artanh":"Arctanh","\\arctanh":"Arctanh","\\arsech":"Arcsech","\\arcsech":"Arcsech","\\arcsch":"Arccsch","\\arccsch":"Arccsch","\\ch":"Cosh","\\cos":"Cos","\\cosh":"Csch","\\cosec":"Csc","\\cot":"Cot","\\cotg":"Cot","\\ctg":"Cot","\\csc":"Csc","\\csch":"Csch","\\coth":"Coth","\\cth":"Coth","\\sec":"Sec","\\sech":"Sech","\\sin":"Sin","\\sinh":"Sinh","\\sh":"Sinh","\\tan":"Tan","\\tg":"Tan","\\tanh":"Tanh","\\th":"Tanh"},r=t[e??""]??e??"";if(n.atTerminator(i))return r;let s=r;do{let l=n.parsePostfixOperator(s,i);if(l===null)break;s=l}while(!0);n.skipSpace();let o=null;n.match("^")&&(o=n.parseGroup()??n.parseToken()),n.skipSpace();let a=n.parseArguments("implicit",{minPrec:390,condition:l=>t[l.peek]||(i?.condition?.(l)??!1)}),u=a===null?s:typeof s=="string"?[s,...a]:["Apply",s,...a];return o===null?u:["Power",u,o]}}var ju=[{name:"Arcsin",latexTrigger:["\\arcsin"],parse:T("Arcsin")},{name:"Arccos",latexTrigger:["\\arccos"],parse:T("Arccos")},{name:"Arctan",latexTrigger:["\\arctan"],parse:T("Arctan")},{latexTrigger:["\\arctg"],parse:T("Arctan")},{identifierTrigger:"arctg",parse:T("Arctan")},{name:"Arccot",identifierTrigger:"arcctg",parse:T("Arccot")},{latexTrigger:["\\arcctg"],parse:T("Arccot")},{name:"Arccoth",identifierTrigger:"arccoth",parse:T("Arccoth")},{identifierTrigger:"arcoth",parse:T("Arccoth")},{identifierTrigger:"arccoth",parse:T("Arccoth")},{latexTrigger:["\\arccoth"],parse:T("Arccoth")},{name:"Arcsec",identifierTrigger:"arcsec",parse:T("Arcsec")},{latexTrigger:["\\arcsec"],parse:T("Arcsec")},{name:"Arccsc",identifierTrigger:"arccsc",parse:T("Arccsc")},{latexTrigger:["\\arccsc"],parse:T("Arccsc")},{name:"Arcsinh",identifierTrigger:"arcsinh",parse:T("Arcsinh")},{latexTrigger:["\\arsinh"],parse:T("Arcsinh")},{latexTrigger:["\\arcsinh"],parse:T("Arcsinh")},{name:"Arccosh",identifierTrigger:"arccosh",parse:T("Arccosh")},{latexTrigger:"\\arccosh",parse:T("Arccosh")},{latexTrigger:"\\arcosh",parse:T("Arccosh")},{identifierTrigger:"arcosh",parse:T("Arccosh")},{name:"Arctanh",identifierTrigger:"arctanh",parse:T("Arctanh")},{identifierTrigger:"artanh",parse:T("Arctanh")},{latexTrigger:"\\artanh",parse:T("Arctanh")},{latexTrigger:["\\arctanh"],parse:T("Arctanh")},{identifierTrigger:"artanh",parse:T("Arctanh")},{name:"Arcsech",identifierTrigger:"arcsech",parse:T("Arcsech")},{latexTrigger:["\\arcsech"],parse:T("Arcsech")},{latexTrigger:["\\arsech"],parse:T("Arcsech")},{name:"Arccsch",identifierTrigger:"arccsch",parse:T("Arccsch")},{latexTrigger:["\\arccsch"],parse:T("Arccsch")},{latexTrigger:["\\arcsch"],parse:T("Arccsch")},{name:"Cosec",identifierTrigger:"cosec",parse:T("Cosec")},{latexTrigger:["\\cosec"],parse:T("Cosec")},{name:"Cosh",latexTrigger:["\\cosh"],parse:T("Cosh")},{latexTrigger:["\\ch"],parse:T("Cosh")},{name:"Cot",latexTrigger:["\\cot"],parse:T("Cot")},{latexTrigger:["\\cotg"],parse:T("Cot")},{latexTrigger:["\\ctg"],parse:T("Cot")},{name:"Csc",latexTrigger:["\\csc"],parse:T("Csc")},{name:"Csch",latexTrigger:["\\csch"],parse:T("Csch")},{name:"Coth",latexTrigger:["\\coth"],parse:T("Coth")},{latexTrigger:["\\cth"],parse:T("Coth")},{identifierTrigger:"cth",parse:T("Coth")},{latexTrigger:["\\coth"],parse:T("Coth")},{name:"Sec",latexTrigger:["\\sec"],parse:T("Sec")},{name:"Sech",identifierTrigger:"sech",parse:T("Sech")},{latexTrigger:["\\sech"],parse:T("Sech")},{name:"Sinh",latexTrigger:["\\sinh"],parse:T("Sinh")},{latexTrigger:["\\sh"],parse:T("Sinh")},{name:"Tan",latexTrigger:["\\tan"],parse:T("Tan")},{latexTrigger:["\\tg"],parse:T("Tan")},{name:"Tanh",latexTrigger:["\\tanh"],parse:T("Tanh")},{latexTrigger:["\\th"],parse:T("Tanh")},{name:"Cos",latexTrigger:["\\cos"],parse:T("Cos")},{name:"Sin",latexTrigger:["\\sin"],parse:T("Sin")}];var Hu=[{name:"AlgebraicNumbers",latexTrigger:"\\overline\\Q"},{latexTrigger:"\\bar\\Q",parse:"AlgebraicNumbers"},{name:"ComplexNumbers",latexTrigger:["\\C"]},{latexTrigger:"\\mathbb{C}",parse:"ComplexNumbers"},{name:"ImaginaryNumbers",latexTrigger:["\\imaginaryI","\\R"]},{name:"EmptySet",latexTrigger:["\\emptyset"]},{latexTrigger:["\\varnothing"],parse:"EmptySet"},{name:"Integers",latexTrigger:["\\Z"]},{latexTrigger:"\\mathbb{Z}",parse:"Integers"},{name:"RationalNumbers",latexTrigger:["\\Q"]},{latexTrigger:"\\mathbb{Q}",parse:"RationalNumbers"},{name:"RealNumbers",latexTrigger:["\\R"]},{latexTrigger:"\\mathbb{R}",parse:"RealNumbers"},{name:"TranscendentalNumbers",latexTrigger:"\\R-\\bar\\Q"},{latexTrigger:"\\R\\backslash\\bar\\Q",parse:"TranscendentalNumbers"},{name:"NegativeNumbers",latexTrigger:"\\R_{<0}"},{latexTrigger:"\\R^-",parse:"NegativeNumbers"},{latexTrigger:"\\R^{-}",parse:"NegativeNumbers"},{latexTrigger:"\\R^-",parse:"NegativeNumbers"},{latexTrigger:"\\R_-",parse:"NegativeNumbers"},{latexTrigger:"\\R_{-}",parse:"NegativeNumbers"},{latexTrigger:"\\R^{\\lt}",parse:"NegativeNumbers"},{latexTrigger:"\\R^{<}",parse:"NegativeNumbers"},{latexTrigger:"\\R^{\\lt0}",parse:"NegativeNumbers"},{latexTrigger:"\\R^{<0}",parse:"NegativeNumbers"},{name:"NonPositiveNumbers",latexTrigger:"\\R_{\\le0}"},{latexTrigger:"\\R^{\\leq0}",parse:"NonPositiveNumbers"},{latexTrigger:"\\R^{-0}",parse:"NonPositiveNumbers"},{latexTrigger:"\\R^{\\leq}",parse:"NonPositiveNumbers"},{latexTrigger:"\\R^{0-}",parse:"NonPositiveNumbers"},{name:"PositiveNumbers",latexTrigger:"\\R_{>0}"},{latexTrigger:"\\R^+",parse:"PositiveNumbers"},{latexTrigger:"\\R^{+}",parse:"PositiveNumbers"},{latexTrigger:"\\R_+",parse:"PositiveNumbers"},{latexTrigger:"\\R_{+}",parse:"PositiveNumbers"},{latexTrigger:"\\R^{\\gt}",parse:"PositiveNumbers"},{latexTrigger:"\\R^{\\gt 0}",parse:"PositiveNumbers"},{latexTrigger:"\\R^{>}",parse:"PositiveNumbers"},{latexTrigger:"\\R^{>0}",parse:"PositiveNumbers"},{name:"NonNegativeNumbers",latexTrigger:"\\R_{\\geq0}"},{latexTrigger:"\\R^{0+}",parse:"NonNegativeNumbers"},{latexTrigger:"\\R^{\\geq}",parse:"NonNegativeNumbers"},{name:"ExtendedRealNumbers",latexTrigger:"\\overline\\R"},{latexTrigger:"\\bar\\R",parse:"ExtendedRealNumbers"},{name:"NegativeIntegers",latexTrigger:"\\Z_{<0}"},{latexTrigger:"\\Z_{\\lt0}",parse:"NegativeIntegers"},{latexTrigger:"\\Z^-",parse:"NegativeIntegers"},{latexTrigger:"\\Z^{-}",parse:"NegativeIntegers"},{latexTrigger:"\\Z_-",parse:"NegativeIntegers"},{latexTrigger:"\\Z_{-}",parse:"NegativeIntegers"},{latexTrigger:"\\Z^{\\lt}",parse:"NegativeIntegers"},{name:"NonPositiveIntegers",latexTrigger:"\\Z_{\\le0}"},{latexTrigger:"\\Z_{\\leq0}",parse:"NonPositiveIntegers"},{latexTrigger:"\\Z_{<0}",parse:"NonPositiveIntegers"},{name:"PositiveIntegers",latexTrigger:"\\N^*"},{latexTrigger:"\\Z_{>0}",parse:"PositiveIntegers"},{latexTrigger:"\\Z_{\\gt0}",parse:"PositiveIntegers"},{latexTrigger:"\\Z^{+}",parse:"PositiveIntegers"},{latexTrigger:"\\Z_+",parse:"PositiveIntegers"},{latexTrigger:"\\Z_{+}",parse:"PositiveIntegers"},{latexTrigger:"\\Z^{\\gt}",parse:"PositiveIntegers"},{latexTrigger:"\\Z^{\\gt0}",parse:"PositiveIntegers"},{latexTrigger:"\\N^+",parse:"PositiveIntegers"},{latexTrigger:"\\N^{+}",parse:"PositiveIntegers"},{latexTrigger:"\\N^*",parse:"PositiveIntegers"},{latexTrigger:"\\N^{*}",parse:"PositiveIntegers"},{latexTrigger:"\\N^\\star",parse:"PositiveIntegers"},{latexTrigger:"\\N^{\\star}",parse:"PositiveIntegers"},{latexTrigger:"\\N_1",parse:"PositiveIntegers"},{latexTrigger:"\\N_{1}",parse:"PositiveIntegers"},{name:"NonNegativeIntegers",latexTrigger:["\\N"]},{latexTrigger:"\\Z^{+0}",parse:"NonNegativeIntegers"},{latexTrigger:"\\Z^{\\geq}",parse:"NonNegativeIntegers"},{latexTrigger:"\\Z^{\\geq0}",parse:"NonNegativeIntegers"},{latexTrigger:"\\Z^{0+}",parse:"NonNegativeIntegers"},{latexTrigger:"\\mathbb{N}",parse:"NonNegativeIntegers"},{latexTrigger:"\\N_0",parse:"NonNegativeIntegers"},{latexTrigger:"\\N_{0}",parse:"NonNegativeIntegers"},{name:"ExtendedIntegers",latexTrigger:"\\overline\\Z"},{latexTrigger:"\\bar\\Z",parse:"ExtendedIntegers"},{name:"ExtendedRationalNumbers",latexTrigger:"\\overline\\Q"},{latexTrigger:"\\bar\\Q",parse:"ExtendedRationalNumbers"},{name:"ExtendedComplexNumbers",latexTrigger:"\\overline\\C"},{latexTrigger:"\\bar\\C",parse:"ExtendedComplexNumbers"},{latexTrigger:["^","\\complement"],kind:"postfix",parse:(e,n)=>["Complement",n]},{name:"Complement",latexTrigger:["^","<{>","\\complement","<}>"],kind:"postfix"},{name:"Intersection",latexTrigger:["\\cap"],kind:"infix",precedence:350},{name:"Interval",serialize:Zu},{name:"Multiple",serialize:Zu},{name:"Union",latexTrigger:["\\cup"],kind:"infix",precedence:350},{name:"Set",kind:"matchfix",openTrigger:"{",closeTrigger:"}",parse:(e,n)=>U(n)?"EmptySet":(h(n)=="Delimiter"&&V(d(n,2))===","&&(n=d(n,1)),h(n)!=="Sequence"?["Set",n]:["Set",...N(n)]),serialize:(e,n)=>b(["\\lbrace",N(n).map(i=>e.serialize(i)).join(", "),"\\rbrace"])},{name:"SetMinus",latexTrigger:["\\setminus"],kind:"infix",precedence:650},{name:"SymmetricDifference",latexTrigger:["\\triangle"],kind:"infix",precedence:245},{latexTrigger:["\\ni"],kind:"infix",associativity:"none",precedence:160,parse:(e,n,i)=>{let t=e.parseExpression(i);return t===null?null:["Element",t,n]}},{name:"Element",latexTrigger:["\\in"],kind:"infix",precedence:240},{name:"NotElement",latexTrigger:["\\notin"],kind:"infix",precedence:240},{name:"NotSubset",latexTrigger:["\\nsubset"],kind:"infix",associativity:"none",precedence:240},{name:"NotSuperset",latexTrigger:["\\nsupset"],kind:"infix",associativity:"none",precedence:240},{name:"NotSubsetNotEqual",latexTrigger:["\\nsubseteq"],kind:"infix",associativity:"none",precedence:240},{name:"NotSupersetNotEqual",latexTrigger:["\\nsupseteq"],kind:"infix",associativity:"none",precedence:240},{name:"SquareSubset",latexTrigger:["\\sqsubset"],kind:"infix",associativity:"none",precedence:265},{name:"SquareSubsetEqual",latexTrigger:["\\sqsubseteq"],kind:"infix",associativity:"none",precedence:265},{name:"SquareSuperset",latexTrigger:["\\sqsupset"],kind:"infix",associativity:"none",precedence:265},{name:"SquareSupersetEqual",latexTrigger:["\\sqsupseteq"],kind:"infix",associativity:"none",precedence:265},{name:"Subset",latexTrigger:["\\subset"],kind:"infix",associativity:"none",precedence:240},{latexTrigger:["\\subsetneq"],kind:"infix",associativity:"none",precedence:240,parse:"Subset"},{latexTrigger:["\\varsubsetneqq"],kind:"infix",associativity:"none",precedence:240,parse:"Subset"},{name:"SubsetEqual",latexTrigger:["\\subseteq"],kind:"infix",associativity:"none",precedence:240},{name:"Superset",latexTrigger:["\\supset"],kind:"infix",associativity:"none",precedence:240},{latexTrigger:["\\supsetneq"],kind:"infix",associativity:"none",precedence:240,parse:"Superset"},{latexTrigger:["\\varsupsetneq"],kind:"infix",associativity:"none",precedence:240,parse:"Superset"},{name:"SupersetEqual",latexTrigger:["\\supseteq"],kind:"infix",associativity:"none",precedence:240}];function Zu(e,n){if(n===null)return"";let i=h(n);if(!i)return"";if(i==="Set")return Y(n)===0?"\\emptyset":Y(n)===2&&h(d(n,2))==="Condition"?b(["\\left\\lbrace",e.serialize(d(n,1)),"\\middle\\mid",e.serialize(d(n,2)),"\\right\\rbrace"]):b(["\\left\\lbrace",...N(n).map(r=>e.serialize(r)+" ,"),"\\right\\rbrace"]);if(i==="Range")return b(["\\mathopen\\lbrack",e.serialize(d(n,1)),", ",e.serialize(d(n,2)),"\\mathclose\\rbrack"]);if(i==="Interval"){let r=d(n,1),s=d(n,2),o=!1,a=!1;return h(r)==="Open"&&(r=d(r,1),o=!0),h(s)==="Open"&&(s=d(s,1),a=!0),b([`\\mathopen${o?"\\rbrack":"\\lbrack"}`,e.serialize(r),", ",e.serialize(s),`\\mathclose${a?"\\lbrack":"\\rbrack"}`])}let t=e.numericSetStyle(n,e.level);return""}function Zi(e,n=1){return i=>{i.skipSpace(),i.match("\\limits"),i.skipSpace();let t=null,r=null;for(;!(r!==null&&t!==null)&&(i.peek==="_"||i.peek==="^");)i.match("_")?r=i.parseGroup()??i.parseToken():i.match("^")&&(t=i.parseGroup()??i.parseToken()),i.skipSpace();U(r)&&(r=null),U(t)&&(t=null);let[s,o]=ed(i,n);if(s&&!o){if(h(s)==="Add"||h(s)==="Subtract"){let a=[],u=[];for(let l of N(s))if(o)u.push(l);else{let f;[f,o]=yn(l),a.push(f??l)}if(o!==null&&u.length>0)return["Add",Wu(i,e,["Add",...a],[{index:o,sub:r,sup:t}]),...u]}else if(h(s)==="Divide"){let a;[a,o]=yn(d(s,1)),a!==null&&o!==null&&(s=["Divide",a,d(s,2)])}}return Wu(i,e,s,[{index:o,sub:r,sup:t}])}}function Wu(e,n,i,t){if(i&&t.length===0)return[n,i];i??(i="Nothing"),e.pushSymbolTable();for(let r of t)r.index&&e.addSymbol(r.index,"symbol");return e.popSymbolTable(),[n,i,...t.map(r=>Kp(r))]}function Kp(e){let n=e.index?["Hold",e.index]:"Nothing";return e.sup!==null?["Tuple",n,e.sub??"Nothing",e.sup]:e.sub!==null?["Tuple",n,e.sub]:n}function ed(e,n=1){let i=e.index,t=!1,r=e.parseExpression({minPrec:266,condition:()=>{let o=e.index;for(;e.match("\\cdot")||e.match("\\,"););return(e.matchAll(["\\mathrm","<{>","d","<}>"])||e.matchAll(["\\operatorname","<{>","d","<}>"]))&&(t=!0),t||(e.index=o),t}});if(t||(e.index=i,r=e.parseExpression({minPrec:266,condition:()=>{for(;e.match("\\cdot")||e.match("\\,"););return(e.match("d")||e.match("\\differentialD"))&&(t=!0),t}})),r!==null&&!t)return yn(r);let s=nd(e,n);return[r,s[0]??null]}function nd(e,n=1){e.skipSpace();let i=[],t=A(e.parseSymbol());return t===null?[]:(i.push(t),i)}function yn(e){let n=h(e),i=d(e,1);if(!i)return[e,null];if(n==="Sequence"&&Y(e)===1)return yn(i);if(n==="Multiply"||n==="InvisibleOperator"){let t=N(e);if(t&&t.length>1){let r=A(t[t.length-2]);if(r==="d"||r==="d_upright")return t.length===2?[null,A(t[1])]:t.length===3?[t[0],A(t[2])]:[["Multiply",...t.slice(0,-2)],A(t[t.length-1])];let[s,o]=yn(t[t.length-1]);if(s)return[["Multiply",...t.slice(0,-1),s],o]}}else if(n==="Delimiter"){let[t,r]=yn(i);if(r)return t?[["Delimiter",["Sequence",t],...N(e).slice(1)],r]:[null,r]}else if(n==="Add"){let t=N(e);if(t.length>0){let[r,s]=yn(t[t.length-1]);if(s){if(r)return[["Add",...t.slice(0,-1),r],s];if(t.length>2)return[["Add",...t.slice(0,-1)],s];if(t.length>2)return[t[0],s]}}}else if(n==="Negate"){let[t,r]=yn(i);if(r)return[t?["Negate",t]:null,r]}else if(n==="Divide"){let[t,r]=yn(i);if(r)return[["Divide",t??1,d(e,2)],r]}else{let t=N(e);if(t.length===1){let[r,s]=yn(t[0]);if(s)return[[h(e),r],s]}}return[e,null]}function Ju(e){return(n,i)=>{if(!d(i,1))return e;let t=d(i,2),r=h(t),s=null;r==="Tuple"||r==="Triple"||r==="Pair"||r==="Single"?s=d(t,1):r==="Hold"?s=d(t,1):(s=d(t,1)??"x",t=null),h(s)==="Hold"&&(s=d(s,1));let o=s!==null?A(s):null,a=d(i,1);if(h(a)==="Lambda"&&d(a,1)!==null&&(a=Br(d(a,1),{_:o??"x",_1:o??"x"})),!t)return!o||o==="Nothing"?b([e,"\\!",n.serialize(a)]):b([e,"\\!",n.serialize(a),"\\,\\operatorname{d}",n.serialize(o)]);let u=d(t,2)?A(d(t,2)):null,l=t&&u!=="Nothing"?n.serialize(d(t,2)):"";l.length>0&&(l=`_{${l}}`);let f="",c=d(t,3)?A(d(t,3)):null;return d(t,3)!==null&&c!=="Nothing"&&(f=`^{${n.serialize(d(t,3))}}`),b([e,f,l,"\\!",n.serialize(a),...o&&A(o)!=="Nothing"?["\\,\\operatorname{d}",n.serialize(o)]:[]])}}var Yu=[{kind:"expression",name:"Integrate",latexTrigger:["\\int"],parse:Zi("Integrate"),serialize:Ju("\\int")},{kind:"expression",latexTrigger:["\\iint"],parse:Zi("Integrate",2)},{kind:"expression",latexTrigger:["\\iiint"],parse:Zi("Integrate",3)},{kind:"expression",name:"CircularIntegrate",latexTrigger:["\\oint"],parse:Zi("CircularIntegrate"),serialize:Ju("\\oint")},{kind:"expression",latexTrigger:["\\oiint"],parse:Zi("CircularIntegrate",2)},{kind:"expression",latexTrigger:["\\oiiint"],parse:Zi("CircularIntegrate",3)}];var sn=[["alpha","\\alpha",945],["beta","\\beta",946],["gamma","\\gamma",947],["delta","\\delta",948],["epsilon","\\epsilon",949],["epsilonSymbol","\\varepsilon",1013],["zeta","\\zeta",950],["eta","\\eta",951],["theta","\\theta",952],["thetaSymbol","\\vartheta",977],["iota","\\iota",953],["kappa","\\kappa",954],["kappaSymbol","\\varkappa",1008],["lambda","\\lambda",955],["mu","\\mu",956],["nu","\\nu",957],["xi","\\xi",958],["omicron","\\omicron",959],["pi","\\pi",960],["piSymbol","\\varpi",982],["rho","\\rho",961],["rhoSymbol","\\varrho",1009],["sigma","\\sigma",963],["finalSigma","\\varsigma",962],["tau","\\tau",964],["phi","\\phi",981],["phiLetter","\\varphi",966],["upsilon","\\upsilon",965],["chi","\\chi",967],["psi","\\psi",968],["omega","\\omega",969],["Alpha","\\Alpha",913],["Beta","\\Beta",914],["Gamma","\\Gamma",915],["Delta","\\Delta",916],["Epsilon","\\Epsilon",917],["Zeta","\\Zeta",918],["Eta","\\Eta",919],["Theta","\\Theta",920],["Iota","\\Iota",921],["Kappa","\\Kappa",922],["Lambda","\\Lambda",923],["Mu","\\Mu",924],["Nu","\\Nu",925],["Xi","\\Xi",926],["Omicron","\\Omicron",927],["Rho","\\Rho",929],["Sigma","\\Sigma",931],["Tau","\\Tau",932],["Phi","\\Phi",934],["Upsilon","\\Upsilon",933],["Chi","\\Chi",935],["Psi","\\Psi",936],["Omega","\\Omega",937],["digamma","\\digamma",989],["aleph","\\aleph",8501],["bet","\\beth",8502],["gimel","\\gimel",8503],["dalet","\\daleth",8504],["ell","\\ell",8499],["turnedCapitalF","\\Finv",8498],["turnedCapitalG","\\Game",8513],["weierstrass","\\wp",8472],["eth","\\eth",240],["invertedOhm","\\mho",8487],["hBar","\\hbar",295],["hSlash","\\hslash",8463],["blackClubSuit","\\clubsuit",9827],["whiteHeartSuit","\\heartsuit",9825],["blackSpadeSuit","\\spadesuit",9824],["whiteDiamondSuit","\\diamondsuit",9826],["sharp","\\sharp",9839],["flat","\\flat",9837],["natural","\\natural",9838]],Qu=[...sn.map(([e,n,i])=>({kind:"symbol",name:e,latexTrigger:[n],parse:e})),...sn.map(([e,n,i])=>({kind:"symbol",latexTrigger:[String.fromCodePoint(i)],parse:e}))];var Xu=[{name:"Real",kind:"function",latexTrigger:["\\Re"]},{name:"Imaginary",kind:"function",latexTrigger:["\\Im"]},{name:"Argument",kind:"function",latexTrigger:["\\arg"]},{name:"Conjugate",latexTrigger:["^","\\star"],kind:"postfix"}];var Ku=[{name:"Mean",kind:"function",identifierTrigger:"mean"},{name:"Median",kind:"function",identifierTrigger:"median"},{name:"StandarDeviation",kind:"function",identifierTrigger:"stddev"},{latexTrigger:["\\bar"],kind:"expression",parse:(e,n)=>{let i=e.parseGroup()??e.parseToken();return!i||!A(i)?null:["Mean",i]}}];function ry(e){return"kind"in e&&e.kind==="symbol"}function sy(e){return"kind"in e&&e.kind==="expression"}function oy(e){return"kind"in e&&e.kind==="function"}function ay(e){return"kind"in e&&e.kind==="matchfix"}function uy(e){return"kind"in e&&e.kind==="infix"}function ly(e){return"kind"in e&&e.kind==="prefix"}function fy(e){return"kind"in e&&e.kind==="postfix"}function cy(e){return"kind"in e&&e.kind==="environment"}var el={"(":"(",")":")","[":"\\lbrack","]":"\\rbrack","{":"\\lbrace","}":"\\rbrace","<":"\\langle",">":"\\rangle","|":"\\vert","||":"\\Vert","\\lceil":"\\lceil","\\lfloor":"\\lfloor","\\rceil":"\\rceil","\\rfloor":"\\rfloor"};function nl(e,n,i){let t=id(n,i);if(t===null)return;let r="kind"in n?n.kind:"expression",s=t.latexTrigger;typeof s=="string"&&(e.lookahead=Math.max(e.lookahead,yr(s)));let o=de(s??"");if(o.length===2&&/[_^]/.test(o[0])&&o[1]!=="<{>"&&r!=="function"&&r!=="environment"&&r!=="matchfix"){let a=n.parse;!a&&n.name&&(r==="postfix"||r==="prefix"?a=(u,l)=>[n.name,l]:a=n.name),nl(e,{...n,kind:r,name:void 0,serialize:void 0,parse:a,latexTrigger:[o[0],"<{>",o[1],"<}>"]},i)}e.defs.push(t),t.name!==void 0&&(e.ids.has(t.name)&&i({severity:"warning",message:["invalid-dictionary-entry",t.name,"Duplicate definition. The name (MathJSON identifier) must be unique, but triggers can be shared by multiple definitions."]}),e.ids.set(t.name,t))}function to(e,n){let i={lookahead:1,ids:new Map,defs:[]};for(let t of e)nl(i,t,n);return i}function id(e,n){if(!sd(e,n))return null;let i={kind:"kind"in e?e.kind:"expression"},t=null;"latexTrigger"in e&&(typeof e.latexTrigger=="string"?t=de(e.latexTrigger):t=e.latexTrigger);let r=null;"identifierTrigger"in e&&(r=e.identifierTrigger),t!==null&&(i.latexTrigger=tn(t)),r!==null&&(i.identifierTrigger=r),e.name&&(i.name=e.name,i.serialize=td(e,t,r)),i.kind==="matchfix"&&bt(e)&&(i.openTrigger=e.openTrigger,i.closeTrigger=e.closeTrigger),i.kind==="symbol"&&za(e)&&(i.precedence=e.precedence??1e4),i.kind==="expression"&&Va(e)&&(i.precedence=e.precedence??1e4),(i.kind==="prefix"||i.kind==="postfix")&&(br(e)||_s(e))&&(t&&(t[0]==="^"||t[0]==="_")?(i.precedence=720,e.precedence):i.precedence=e.precedence??1e4),i.kind==="infix"&&Ss(e)&&(!t||t[0]!=="^"&&t[0]!=="_"||!e.associativity||e.associativity,i.associativity=e.associativity??"none",i.precedence=e.precedence??1e4);let s=rd(e,t,r);return s&&(i.parse=s),i}function td(e,n,i){if(typeof e.serialize=="function")return e.serialize;let t=e.kind??"expression";if(t==="environment"){let o=e.identifierTrigger??e.name??"unknown";return(a,u)=>b([`\\begin{${o}}`,a.serialize(d(u,1)),`\\end{${o}}`])}if(bt(e)){let o=typeof e.openTrigger=="string"?el[e.openTrigger]:tn(e.openTrigger),a=typeof e.closeTrigger=="string"?el[e.closeTrigger]:tn(e.closeTrigger);return(u,l)=>b([o,u.serialize(d(l,1)),a])}let r=e.serialize;if(r===void 0&&n&&(r=tn(n)),r)return t==="postfix"?(o,a)=>b([o.serialize(d(a,1)),r]):t==="prefix"?(o,a)=>b([r,o.serialize(d(a,1))]):t==="infix"?(o,a)=>{let u=Y(a);if(u===0)return"";let l=e.precedence??1e4;return b(N(a).flatMap((f,c)=>{let p=o.wrap(f,l+1);return c<u-1?[p,r]:[p]}))}:(o,a)=>h(a)?b([r,o.wrapArguments(a)]):r;let s=i??e.name??"unknown";return t==="postfix"?(o,a)=>b([o.serialize(d(a,1)),o.serializeSymbol(s)]):t==="prefix"?(o,a)=>b([o.serializeSymbol(s),o.serialize(d(a,1))]):t==="infix"?(o,a)=>b([o.serialize(d(a,1)),o.serializeSymbol(s),o.serialize(d(a,2))]):(o,a)=>h(a)?b([o.serializeSymbol(s),o.wrapArguments(a)]):o.serializeSymbol(s)}function rd(e,n,i){if("parse"in e&&typeof e.parse=="function")return e.parse;let t=("kind"in e?e.kind:"expression")??"expression";if(t==="environment"){let r=e.parse??e.name??i;if(r)return(s,o)=>{let a=s.parseTabular();return a===null?null:[r,["List",a.map(u=>["List",...u])]]}}if(t==="function"){let r=e.parse??e.name??i;if(r)return(s,o)=>{let a=s.parseArguments("enclosure",o);return a===null?r:[r,...a]}}if(t==="symbol"){let r=e.parse??e.name??i;if(r)return(s,o)=>r}if(t==="prefix"){let r=e.parse??e.name??i;if(r){let s=e.precedence??1e4;return(o,a)=>{let u=o.parseExpression({...a??[],minPrec:s});return u===null?null:[r,u]}}}if(t==="postfix"){let r=e.parse??e.name;if(r)return(s,o)=>o===null?null:[r,o]}if(t==="infix"){if(/[_^]/.test(n?.[0]??"")){let s=e.name??e.parse;return(o,a)=>[s,F(d(a,1)),F(d(a,2))]}let r=e.parse??e.name??i;if(r){let s=e.precedence??1e4,o=e.associativity??"none";return o==="none"?(a,u,l)=>{if(u===null)return null;let f=F(a.parseExpression({...l,minPrec:s}));return[r,u,f]}:o==="left"?(a,u,l)=>{if(u===null)return null;let f=F(a.parseExpression({...l,minPrec:s+1}));return typeof r!="string"?[r,u,f]:[r,u,f]}:o==="right"?(a,u,l)=>{if(u===null)return null;let f=F(a.parseExpression({...l,minPrec:s}));return typeof r!="string"?[r,u,f]:[r,u,f]}:(a,u,l)=>{if(u===null)return null;let f=F(a.parseExpression({...l,minPrec:s}));return typeof r!="string"?[r,u,f]:$i(r,u,f)}}}if(t==="matchfix"){let r=e.parse??e.name;if(r)return(s,o)=>U(o)?null:[r,o]}if(t==="expression"){let r=e.parse??e.name??i;if(r)return()=>r}if("parse"in e){let r=e.parse;return()=>r}}function sd(e,n){let i=e.name??e.latexTrigger??e.identifierTrigger??e.openTrigger;if(!i)try{i=JSON.stringify(e)}catch{i="???"}if(Array.isArray(i)&&(i=tn(i)),"trigger"in e&&n({severity:"warning",message:["invalid-dictionary-entry",i,"The 'trigger' property is deprecated. Use 'latexTrigger' or 'identifierTrigger' instead"]}),"kind"in e&&!["expression","symbol","function","infix","postfix","prefix","matchfix","environment"].includes(e.kind)&&n({severity:"warning",message:["invalid-dictionary-entry",i,"The 'kind' property must be one of 'expression', 'symbol', 'function', 'infix', 'postfix', 'prefix', 'matchfix', 'environment'"]}),e.serialize!==void 0&&!e.name)return n({severity:"warning",message:["invalid-dictionary-entry",i,"A 'name' property must be provided if a 'serialize' handler is provided"]}),!1;if("identifierTrigger"in e&&(!("kind"in e)||e.kind!=="environment")&&(typeof e.identifierTrigger!="string"||!xe(e.identifierTrigger))&&n({severity:"warning",message:["invalid-dictionary-entry",i,"The 'identifierTrigger' property must be a valid identifier"]}),"name"in e&&(typeof e.name!="string"?e.name!==void 0&&n({severity:"warning",message:["invalid-dictionary-entry",i,"The 'name' property must be a string"]}):xe(e.name)||n({severity:"warning",message:["invalid-dictionary-entry",e.name,"The 'name' property must be a valid identifier"]})),bt(e)){if("latexTrigger"in e||"identifierTrigger"in br)return n({severity:"warning",message:["invalid-dictionary-entry",i,"'matchfix' operators use a 'openTrigger' and 'closeTrigger' instead of a 'latexTrigger' or 'identifierTrigger'. "]}),!1;if(!e.openTrigger||!e.closeTrigger)return n({severity:"warning",message:["invalid-dictionary-entry",i,"Expected `openTrigger` and a `closeTrigger` for matchfix operator"]}),!1;if(typeof e.openTrigger!=typeof e.closeTrigger)return n({severity:"warning",message:["invalid-dictionary-entry",i,"Expected `openTrigger` and `closeTrigger` to both be strings or array of LatexToken"]}),!1}if(Ss(e)||_s(e)||br(e)){if(Array.isArray(e.latexTrigger)&&(e.latexTrigger[0]==="_"||e.latexTrigger[0]==="^")||typeof e.latexTrigger=="string"&&(e.latexTrigger.startsWith("^")||e.latexTrigger.startsWith("_"))){if(e.precedence!==void 0||e.associativity!==void 0)return n({severity:"warning",message:["invalid-dictionary-entry",i,'Unexpected "precedence" or "associativity" for superscript/subscript operator']}),!1}else if(e.precedence===void 0)return n({severity:"warning",message:["invalid-dictionary-entry",i,`Expected a "precedence" for ${e.kind} operator`]}),!1}else if(e.associativity!==void 0)return n({severity:"warning",message:["invalid-dictionary-entry",i,'Unexpected "associativity" operator']}),!1;return!bt(e)&&!Ga(e)&&!e.latexTrigger&&!e.identifierTrigger&&!e.name?(n({severity:"warning",message:["invalid-dictionary-entry",i,"Expected a 'name', a 'latexTrigger' or a 'identifierTrigger'"]}),!1):e.parse===void 0&&e.name===void 0?(n({severity:"warning",message:["invalid-dictionary-entry",i,"Expected a 'parse' or 'name'"]}),!1):!0}var Lt={symbols:Qu,algebra:Tu,arithmetic:Fu,calculus:Yu,complex:Xu,core:qu,"linear-algebra":zu,logic:Gu,relop:ni,other:Uu,physics:[{name:"mu0",kind:"symbol",latexTrigger:"\\mu_0"}],sets:Hu,statistics:Ku,trigonometry:ju};function il(e="all"){if(e==="all"){let n=[];for(let i of Object.keys(Lt))Lt[i]&&n.push(...Lt[i]);return n}return Lt[e]?Object.freeze([...Lt[e]]):[]}function Or(e,n){switch(n){case"float64":case"float32":case"int32":case"uint8":return new ro(e);case"complex128":case"complex64":return new oo(e);case"bool":case"string":case"expression":return new so(e)}throw new Error(`Unknown dtype ${n}`)}var ro=class{constructor(n){this.ce=n;this.one=1;this.zero=0;this.nan=NaN}cast(n,i){let t=this.ce;switch(i){case"float64":case"float32":case"int32":case"uint8":return n;case"complex128":case"complex64":return Array.isArray(n)?n.map(r=>t.complex(r)):this.ce.complex(n);case"bool":return Array.isArray(n)?n.map(r=>r!==0):n!==0;case"string":return Array.isArray(n)?n.map(r=>Number(r).toString()):Number(n).toString();case"expression":return Array.isArray(n)?n.map(r=>t.number(r)):t.number(n)}throw new Error(`Cannot cast ${n} to ${i}`)}expression(n){return this.ce.number(n)}isZero(n){return n===0}isOne(n){return n===1}equals(n,i){return n===i}add(n,i){return n+i}addn(...n){return n.reduce((i,t)=>i+t,0)}neg(n){return-n}sub(n,i){return n-i}mul(n,i){return n*i}muln(...n){return n.reduce((i,t)=>i*t,1)}div(n,i){return n/i}pow(n,i){return n**i}conjugate(n){return n}},so=class{constructor(n){this.one=n.One,this.zero=n.Zero,this.nan=n.NaN,this.ce=n}cast(n,i){if(Array.isArray(n))return n.map(r=>this.cast(r,i));let t=n.value;switch(i){case"float64":case"float32":return typeof t=="number"?t:void 0;case"int32":return typeof t=="number"?Math.round(t):void 0;case"uint8":if(typeof t!="number")return;let r=Math.round(t);return r>=0&&r<=255?r:void 0;case"complex128":case"complex64":return typeof t=="number"?this.ce.complex(t):isNaN(n.im)?void 0:this.ce.complex(n.re,n.im);case"bool":return typeof t=="boolean"?t:void 0;case"string":return typeof t=="string"?t:void 0;case"expression":return n}throw new Error(`Cannot cast ${n} to ${i}`)}expression(n){return n}isZero(n){return n.is(0)}isOne(n){return n.is(1)}equals(n,i){return n.isSame(i)===!0}add(n,i){return n.add(i)}addn(...n){return H(...n)}neg(n){return n.neg()}sub(n,i){return n.sub(i)}mul(n,i){return n.mul(i)}muln(...n){return ae(...n)}div(n,i){return n.div(i)}pow(n,i){return n.pow(i)}conjugate(n){return this.ce.function("Conjugate",[n]).evaluate()}},oo=class{constructor(n){this.ce=n,this.one=n.complex(1),this.zero=n.complex(0),this.nan=n.complex(NaN)}cast(n,i){if(Array.isArray(n))return n.map(t=>this.cast(t,i));switch(i){case"float64":return n.im===0?n.re:void 0;case"float32":return n.im===0?n.re:void 0;case"int32":return n.im===0?Math.round(n.re):void 0;case"uint8":if(n.im!==0)return;let t=Math.round(n.re);return t>=0&&t<=255?t:void 0;case"complex128":return n;case"complex64":return n;case"bool":return!(n.im===0&&n.re===0);case"string":return n.toString();case"expression":return this.ce.number(n)}throw new Error(`Cannot cast ${n} to ${i}`)}expression(n){return this.ce.number(n)}isZero(n){return n.isZero()}isOne(n){return n.re===1&&n.im===0}equals(n,i){return n.equals(i)}add(n,i){return n.add(i)}addn(...n){return n.reduce((i,t)=>i.add(t),this.zero)}neg(n){return n.neg()}sub(n,i){return n.sub(i)}mul(n,i){return n.mul(i)}muln(...n){return n.reduce((i,t)=>i.mul(t),this.one)}div(n,i){return n.div(i)}pow(n,i){return n.pow(i)}conjugate(n){return n.conjugate()}};function Lr(e,n){return e===void 0?n:e===n?e:e==="expression"||n==="expression"||e==="string"||n==="string"?"expression":e==="complex128"||n==="complex128"?"complex128":e==="complex64"||n==="complex64"?"complex64":e==="float64"||n==="float64"?"float64":e==="float32"||n==="float32"?"float32":e==="int32"||n==="int32"?"int32":e==="uint8"||n==="uint8"?"uint8":e==="bool"||n==="bool"?"bool":"expression"}function tl(e){if(we(e))return"bool";if(!e.isNumberLiteral)return"expression";switch(e.type.type){case"real":case"rational":case"finite_real":case"finite_rational":case"integer":return"float64";case"complex":case"finite_complex":case"imaginary":return"complex128";case"finite_integer":{let n=e.re;return n>=0&&n<=255?"uint8":"int32"}case"boolean":return"bool";case"string":return"string";default:return"expression"}}var Hn=class e{constructor(n,i){this.ce=n;this.shape=i.shape,this.rank=this.shape.length,this._strides=od(this.shape),this.field=Or(n,i.dtype)}static align(n,i){if(n.dtype===i.dtype)return[n,i];let t=Lr(n.dtype,i.dtype);return n.dtype===t?[n,i.upcast(t)]:[n.upcast(t),i]}static broadcast(n,i,t){if(!(t instanceof e))return i.map1(n,t);let[r,s]=e.align(i,t),o=r.data.map((a,u)=>n(a,s.data[u]));return bn(r.ce,{dtype:r.dtype,shape:r.shape,rank:r.rank,data:o})}get expression(){let n=this.shape,i=this.rank,t=this.data,r=this._index.bind(this),s=this.field.expression.bind(this.field),o=a=>{if(a.length===i-1){let u=r(a),l=this.ce._fn("List",t.slice(u,u+n[i-1]).map(f=>s(f)));return l.isCanonical=l.ops.every(f=>f.isCanonical),l}else{let u=[];for(let f=0;f<=n[a.length]-1;f++)u.push(o([...a,f+1]));let l=this.ce._fn("List",u);return l.isCanonical=l.ops.every(f=>f.isCanonical),l}};return o([])}get array(){let n=this.shape,i=this.rank,t=this.data;if(i===1)return t;if(i===2){let[o,a]=n,u=new Array(o);for(let l=0;l<o;l++)u[l]=t.slice(l*a,(l+1)*a);return u}let r=this._index.bind(this),s=o=>{if(o.length===i-1){let a=r(o);return t.slice(a,a+n[i-1])}else{let a=[];for(let u=0;u<n[o.length];u++)a.push(s([...o,u+1]));return a}};return s([])}_index(n){let i=this._strides;return n.reduce((t,r,s)=>t+(r-1)*i[s],0)}get isSquare(){let n=this.shape;return n.length===2&&n[0]===n[1]}get isSymmetric(){if(!this.isSquare)return!1;let n=this.shape[0],i=this.data,t=this.field.equals.bind(this.field);for(let r=0;r<n;r++)for(let s=r+1;s<n;s++)if(!t(i[r*n+s],i[s*n+r]))return!1;return!0}get isSkewSymmetric(){if(!this.isSquare)return!1;let n=this.shape[0],i=this.data,t=this.field.equals.bind(this.field),r=this.field.neg.bind(this.field);for(let s=0;s<n;s++)for(let o=s+1;o<n;o++)if(!t(i[s*n+o],r(i[o*n+s])))return!1;return!0}get isUpperTriangular(){if(!this.isSquare)return!1;let n=this.shape[0],i=this.data,t=this.field.isZero.bind(this.field);for(let r=1;r<n;r++)for(let s=0;s<r;s++)if(t(i[r*n+s]))return!1;return!0}get isLowerTriangular(){if(!this.isSquare)return!1;let n=this.shape[0],i=this.data,t=this.field.isZero.bind(this.field);for(let r=0;r<n-1;r++)for(let s=r+1;s<n;s++)if(!t(i[r*n+s]))return!1;return!0}get isTriangular(){if(!this.isSquare)return!1;let n=this.shape[0],i=this.data,t=this.field.isZero.bind(this.field);for(let r=0;r<n;r++)for(let s=0;s<n;s++)if(r<s&&!t(i[r*n+s])||r>s&&!t(i[r*n+s]))return!1;return!0}get isDiagonal(){if(!this.isSquare)return!1;let n=this.shape[0],i=this.data,t=this.field.isZero.bind(this.field);for(let r=0;r<n;r++)for(let s=0;s<n;s++)if(r===s&&!t(i[r*n+s])||r!==s&&!t(i[r*n+s]))return!1;return!0}get isIdentity(){if(!this.isSquare)return!1;let[n,i]=this.shape,t=this.data,r=this.field.isOne.bind(this.field),s=this.field.isZero.bind(this.field);for(let o=0;o<i;o++)for(let a=0;a<i;a++)if(o===a&&!r(t[o*i+a])||o!==a&&!s(t[o*i+a]))return!1;return!0}get isZero(){let n=this.field.isZero.bind(this.field);return this.data.every(i=>n(i))}at(...n){let i=this.data.length;return this.data[this._index(n)%i]}diagonal(n,i){if(n??(n=1),i??(i=2),n===i||n<=0||n>this.shape.length||this.shape[n-1]!==this.shape[i-1])return;let t=new Array(this.shape[n-1]),r=this.data,s=this.shape[n-1];for(let o=0;o<s;o++)t[o]=r[o*s+o];return t}trace(n,i){if(this.rank!==2)return;let[t,r]=this.shape;if(t!==r)return;let s=this.data,o=new Array(t);for(let a=0;a<t;a++)o[a]=s[a*t+a];return this.field.addn(...o)}reshape(...n){return bn(this.ce,{dtype:this.dtype,shape:n,rank:n.length,data:this.data})}flatten(){return this.data}upcast(n){let i=this.field.cast(this.data,n);if(i===void 0)throw Error(`Cannot cast tensor to ${n}`);return bn(this.ce,{dtype:n,shape:this.shape,rank:this.rank,data:i})}transpose(n,i,t){if(this.rank!==2)return;if(n??(n=1),i??(i=2),n===i)return this;if(n<=0||n>2||i<=0||i>2)return;let[r,s]=this.shape,o=this.data;t&&(o=o.map(f=>t(f)));let a=0,u=new Array(r*s),l=s;for(let f=0;f<s;f++)for(let c=0;c<r;c++)u[a++]=o[c*l+f];return bn(this.ce,{dtype:this.dtype,shape:[s,r],rank:2,data:u})}conjugateTranspose(n,i){let t=this.field.conjugate.bind(this.field);return this.transpose(n,i,t)}determinant(){if(this.rank!==2)return;let[n,i]=this.shape;if(n!==i)return;if(n===1)return this.data[0];let t=this.field.add.bind(this.field),r=this.field.mul.bind(this.field),s=this.field.neg.bind(this.field);if(n===2){let[x,E,_,R]=this.data;return t(r(x,R),s(r(E,_)))}let o=this.field.addn.bind(this.field),a=this.field.muln.bind(this.field);if(n===3){let[x,E,_,R,I,q,be,Ee,vi]=this.data;return o([a(x,I,vi),a(E,q,be),a(_,R,Ee),s(a(_,I,be)),s(a(E,R,vi)),s(a(x,q,Ee))])}let u=this.shape[0],l=!1,f=this.field.div.bind(this.field),c=this.field.sub.bind(this.field),p=new Array(u).fill(0).map((x,E)=>E),m=[...this.data];for(let x=0;x<u;x++){let E=p[x-1];if(this.at(E,x)===0){let I;for(I=x+1;I<u;I++)if(this.at(p[I],x)!==0){E=p[I],p[I-1]=p[x-1],p[x-1]=E,l=!l;break}if(I===u)return this.at(E,x)}let _=this.at(E,x),R=x===0?1:this.at(p[x-2],x-2);for(let I=x+1;I<u;I++){let q=p[I-1];for(let be=x+1;be<u;be++)m[q][be]=f(c(r(m[q][be],_),r(m[q][x],m[E][be])),R)}}let y=m[p[u-1]][u-1];return l?this.field.neg(y):y}inverse(){if(this.rank!==2)return;let[n,i]=this.shape;if(n!==i)return;if(n===2){let[p,m,y,x]=this.data,E=this.determinant();if(E===void 0||this.field.isZero(E))return;let _=this.field.div.bind(this.field),R=this.field.neg.bind(this.field),I=[_(x,E),R(_(m,E)),R(_(y,E)),_(p,E)];return bn(this.ce,{dtype:this.dtype,shape:[i,i],rank:2,data:I})}let t=this.shape[0],r=this.field.div.bind(this.field),s=this.field.sub.bind(this.field),o=this.field.mul.bind(this.field),a=this.array,u=new Array(t).fill(0).map((p,m)=>{let y=new Array(t).fill(0);return y[m]=1,y}),l=a.map((p,m)=>[...p,...u[m]]),f=new Array(t).fill(0).map((p,m)=>m);for(let p=0;p<t;p++){let m=f[p-1];if(this.at(m,p)===0){let E;for(E=p+1;E<t;E++)if(this.at(f[E],p)!==0){m=f[E],f[E-1]=f[p-1],f[p-1]=m;break}if(E===t)return}let y=this.at(m,p),x=p===0?1:this.at(f[p-2],p-2);for(let E=p+1;E<t;E++){let _=f[E-1];for(let R=p+1;R<t*2;R++)l[_][R]=s(l[_][R],o(r(o(l[_][p],l[m][R]),y),x))}}for(let p=t-1;p>=0;p--){let m=l[f[p],p];for(let y=0;y<p;y++){let x=f[y];for(let E=t;E<t*2;E++)l[x][E]=s(l[x][E],o(r(o(l[x][p],l[p][E]),m),m))}for(let y=t;y<t*2;y++)l[p][y]=r(l[p][y],m)}let c=l.map(p=>p.slice(t));return bn(this.ce,{dtype:this.dtype,shape:[i,i],rank:2,data:c})}pseudoInverse(){}adjugateMatrix(){}minor(n,i){}map1(n,i){return bn(this.ce,{dtype:this.dtype,shape:this.shape,rank:this.rank,data:this.data.map(t=>n(t,i))})}map2(n,i){let t=i.data;return bn(this.ce,{dtype:this.dtype,shape:this.shape,rank:this.rank,data:this.data.map((r,s)=>n(r,t[s]))})}add(n){return e.broadcast(this.field.add.bind(this.field),this,n)}subtract(n){return e.broadcast(this.field.sub.bind(this.field),this,n)}multiply(n){return e.broadcast(this.field.mul.bind(this.field),this,n)}divide(n){return e.broadcast(this.field.div.bind(this.field),this,n)}power(n){return e.broadcast(this.field.pow.bind(this.field),this,n)}equals(n){if(this.rank!==n.rank||!this.shape.every((s,o)=>s===n.shape[o]))return!1;let i=this.field.equals.bind(this.field),t=this.field.cast.bind(this.field),r=this.dtype;return this.dtype!==n.dtype?!!this.data.every((s,o)=>i(s,t(n.data[o],r))):this.data.every((s,o)=>i(s,n.data[o]))}};function od(e){let n=new Array(e.length);for(let i=e.length-1,t=1;i>=0;i--)n[i]=t,t*=e[i];return n}var ao=class extends Hn{constructor(i,t){super(i,t);this.dtype="float64";this.data=t.data}get isZero(){return this.data.every(i=>i===0)}},uo=class extends Hn{constructor(i,t){super(i,t);this.dtype="complex128";this.data=t.data}},lo=class extends Hn{constructor(i,t){super(i,t);this.dtype="bool";this.data=t.data}},fo=class extends Hn{constructor(i,t){super(i,t);this.dtype="expression";this.data=t.data}};function bn(e,n){let i=n.dtype;return i==="float64"||i==="float32"||i==="uint8"||i==="int32"?new ao(e,n):i==="bool"?new lo(e,n):i==="complex64"||i==="complex128"?new uo(e,n):new fo(e,n)}function En(e,n){if(e.operator==="Negate"&&n.operator==="Negate")return En(e.op1,n.op1);let i=e.engine;if(e.operator==="Negate")return En(e.op1,n).neg();if(n.operator==="Negate")return En(e,n.op1).neg();if(e.operator==="Divide"&&n.operator==="Divide"){let t=e.op2.mul(n.op2);return En(e.op1,n.op1).div(t)}return e.operator==="Divide"?En(e.op1,n).div(e.op2):n.operator==="Divide"?En(e,n.op1).div(n.op2):e.operator==="Add"?H(...e.ops.map(t=>En(t,n))):n.operator==="Add"?H(...n.ops.map(t=>En(e,t))):new Be(i,[e,n]).asExpression()}function qt(e,n){if(n.length===0)return null;if(n.length===1)return n[0];if(n.length===2)return En(n[0],n[1]);let i=qt(e,n.slice(1));return i===null?null:En(n[0],i)}var Ft=[[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1],[1,5,10,10,5,1],[1,6,15,20,15,6,1],[1,7,21,35,35,21,7,1],[1,8,28,56,70,56,28,8,1]];function po(e,n){for(;e>=Ft.length;){let i=Ft.length,t=[1],r=Ft[i-1];for(let s=1;s<i;s++)t[s]=r[s-1]+r[s];t[i]=1,Ft.push(t)}return Ft[e][n]}function ad(e){let n=e.reduce((t,r)=>t+r,0),i=1;for(let t=0;t<e.length;t+=1)i*=po(n,e[t]),n-=e[t];return i}function*rl(e,n){if(e===1){yield[n];return}for(let i=0;i<=n;i+=1)for(let t of rl(e-1,n-i))yield[i,...t]}function co(e,n){let i=e.engine;if(n<0){let o=co(e,-n);return o?o.inv():null}if(n===0)return i.One;if(n===1)return Pe(e);if(e.operator==="Negate"&&Number.isInteger(n)){let o=n%2===0?1:-1,a=co(e.op1,n);return a===null?null:o>0?a:a.neg()}if(e.operator,e.operator!=="Add")return null;let t=e.ops,r=rl(t.length,n),s=[];for(let o of r){let a=[i.number(ad(o))];for(let u=0;u<o.length;u+=1)o[u]!==0&&(o[u]===1?a.push(t[u]):a.push(t[u].pow(o[u])));s.push(ae(...a))}return H(...s)}function sl(e,n,i){let t=null;if(n==="Divide"){let r=Pe(i[0]);return r===null?null:r.operator==="Add"?H(...r.ops.map(s=>s.div(i[1]))):e._fn("Divide",[r,i[1]])}if(n==="Multiply")return qt(e,i);if(n==="Negate")return Pe(i[0])?.neg()??null;if(n==="Add")return H(...i.map(r=>Pe(r)??r));if(n==="Power"){let r=G(i[1]);t=r!==null?co(i[0],r):null}return t}function Pe(e){return e=e?.canonical,!e||typeof e.operator!="string"?null:we(e.operator)?e.engine._fn(e.operator,e.ops.map(n=>Pe(n)??n)):sl(e.engine,e.operator,e.ops??[])}function ol(e){if(!e.operator||!e.ops)return null;let n=e.engine,i=e.ops.map(r=>r.ops?sl(n,r.operator,r.ops)??r:r),t=e.engine.function(e.operator,i);return Pe(t)??t}function al(e){let n=-1;for(;e.operator==="Negate";)e=e.op1,n=-n;return n===1?e:e.isNumberLiteral?e.neg():e.engine._fn("Negate",[e])}function pi(e){let n=-1;for(;e.operator==="Negate";)e=e.op1,n=-n;if(n===1)return e;if(e.numericValue!==null)return e.neg();let i=e.engine;return e.operator==="Subtract"?e.op2.sub(e.op1):e.operator==="Add"?H(...e.ops.map(t=>pi(t))):e.operator==="Multiply"?mo(i,e.ops):e.operator==="Divide"?pi(e.op1).div(e.op2):i._fn("Negate",[e])}function mo(e,n){if(n.length===0)return e.NegativeOne;if(n.length===1)return pi(n[0]);let i=[],t=!1;for(let r of n)!t&&r.operator==="Negate"?(t=!0,r.op1.is(1)||i.push(r.op1)):i.push(r);if(!t){i=[];for(let r of n)t||r.numericValue===null&&!r.isInteger?i.push(r):(t=!0,r.is(-1)||i.push(r.neg()))}if(t)return e._fn("Multiply",i.sort(fe));if(!t){i=[];for(let r of n)t||r.numericValue===null||!r.isNumber?i.push(r):(t=!0,r.is(-1)||i.push(r.neg()))}return t?e._fn("Multiply",i.sort(fe)):e._fn("Negate",[e._fn("Multiply",[...n].sort(fe))])}function He(e,n){let i=e.engine;if(!e.isValid||!n.isValid)return i._fn("Divide",[e,n]);if(e.isNaN||n.isNaN)return i.NaN;if(n.is(0))return e.is(0)?i.NaN:i.ComplexInfinity;if(e.is(0))return i.Zero;if(n.is(0)===!1&&(e.symbol!==null&&e.symbol===n.symbol&&e.isConstant||e.isSame(n)))return i.One;if(e.operator==="Negate"&&n.operator==="Negate"&&(e=e.op1,n=n.op1),e.operator==="Divide"&&n.operator==="Divide")return He(pe(i,[e.op1,n.op2]),pe(i,[e.op2,n.op1]));if(e.operator==="Divide")return He(e.op1,pe(i,[e.op2,n]));if(n.operator==="Divide")return He(pe(i,[e,n.op2]),n.op1);if(n.is(1))return e;if(n.is(-1))return e.neg();if(e.is(1))return n.inv();if(n.isInfinity)return e.isInfinity?i.NaN:i.Zero;if(e.operator==="Sqrt"&&n.operator==="Sqrt"){let f=G(e.op1),c=G(n.op1);if(f!==null&&c!==null)return i.number(i._numericValue({radical:f*c,rational:[1,c]}))}else if(e.operator==="Sqrt"){let f=G(e.op1),c=G(n);if(f!==null&&c!==null)return i.number(i._numericValue({radical:f,rational:[1,c]}))}else if(n.operator==="Sqrt"){let f=G(e),c=G(n.op1);if(f!==null&&c!==null)return i.number(i._numericValue({radical:c,rational:[f,c]}))}let t=e.numericValue,r=n.numericValue;if(t!==null&&r!==null){if(typeof t!="number"&&t.im!==0||typeof r!="number"&&r.im!==0)return i._fn("Divide",[e,n]);if(typeof t=="number"&&Number.isInteger(t)&&typeof r=="number"&&Number.isInteger(r))return i.number([t,r]);if(typeof t=="number"&&Number.isInteger(t)){if(t===0)return i.Zero;if(typeof r!="number"&&v(r.type,"integer")){let f=r.bignumRe;if(f!==void 0){if(f.isInteger())return i.number([K(t),K(f)])}else{let c=r.re;if(Number.isInteger(c))return i.number([t,c])}}}return i._fn("Divide",[e,n])}let[s,o]=e.toNumericValue();if(s.isZero)return i.Zero;let[a,u]=n.toNumericValue();if(a.isZero)return i.NaN;let l=s.div(a);return l.isOne?u.is(1)?o:i._fn("Divide",[o,u]):l.isNegativeOne?u.is(1)?o.neg():i._fn("Divide",[o.neg(),u]):l.isExact?o.is(1)&&u.is(1)?i.number(l):u.is(1)?pe(i,[i.number(l),o]):i._fn("Divide",[pe(i,[i.number(l.numerator),o]),pe(i,[i.number(l.denominator),u])]):i._fn("Divide",[e,n])}function Hi(e,n){let i=e.engine;if(e=e.canonical,typeof n!="number"&&(n=n.canonical),e.isNaN)return i.NaN;if(typeof n=="number"){if(isNaN(n))return i.NaN;if(e.is(0))return n===0||!isFinite(n)?i.NaN:e;if(n===1)return e;if(n===-1)return e.neg();if(n===0)return i.NaN;if(e.isNumberLiteral){let r=e.numericValue;if(typeof r=="number"){if(Number.isInteger(r)&&Number.isInteger(n))return i.number(i._numericValue({rational:[r,n]}))}else if(r.isExact&&Number.isInteger(n))return i.number(r.asExact.div(n))}}else{if(n.isNaN)return i.NaN;if(e.is(0))return n.is(0)||n.isFinite===!1?i.NaN:i.Zero;if(n.is(1))return e;if(n.is(-1))return e.neg();if(n.is(0))return i.NaN;if(e.isNumberLiteral&&n.isNumberLiteral){let r=e.numericValue,s=n.numericValue;if(typeof r=="number"&&typeof s=="number"&&Number.isInteger(r)&&Number.isInteger(s))return i.number(i._numericValue({rational:[r,s]}));if(typeof r=="number"&&Number.isInteger(r)&&typeof s!="number"){if(s.isExact)return i.number(i._numericValue(r).div(s.asExact))}else if(typeof s=="number"&&Number.isInteger(s)&&typeof r!="number"){if(r.isExact)return i.number(r.asExact.div(s))}else if(typeof r!="number"&&typeof s!="number"&&r.isExact&&s.isExact)return i.number(r.asExact.div(s.asExact))}}let t=new Be(i,[e]);return t.div(typeof n=="number"?i._numericValue(n):n),t.asRationalExpression()}function pe(e,n){let i=1,t=[];for(let s of n){let[o,a]=ud(s);i*=a,t.push(o)}t=t.filter(s=>!s.is(1));let r=[];for(let s=0;s<t.length;s++){let o=t[s];if(s+1>=t.length){r.push(o);continue}let a=t[s+1];if(o.isNumberLiteral){if(a.operator==="Sqrt"&&a.op1.isNumberLiteral&&a.op1.type.matches("finite_integer")){let u=a.op1.numericValue;if(typeof u!="number"&&(u=u.re),u>=O){r.push(o);continue}if(o.type.matches("finite_rational")){let l=o.numericValue,[f,c]=typeof l=="number"?[l,1]:[l.numerator.re,l.denominator.re];r.push(e.number(e._numericValue({rational:[f,c],radical:u}))),s++;continue}}else if(a.isNumberLiteral&&a.numericValue instanceof z){let u=a.numericValue;if(u instanceof Z&&ve(u.rational)&&u.radical!==1){let l=je(o);if(l){r.push(e.number(e._numericValue({rational:l,radical:u.radical}))),s++;continue}}else if(u.im===1){let l=o.numericValue;if(typeof l=="number"){r.push(e.number(e.complex(0,l))),s++;continue}else if(l.im===0){if(Number.isInteger(l.re)){r.push(e.number(e.complex(0,l.re))),s++;continue}else if(!l.isExact){r.push(e.number(e.complex(0,l.re))),s++;continue}}}}}r.push(o)}return i<0?r.length===0?e.number(-1):r.length===1?r[0].neg():mo(e,r):r.length===0?e.number(1):r.length===1?r[0]:e._fn("Multiply",[...r].sort(fe))}function ud(e){let n=1;for(;e.operator==="Negate";)n=-n,e=e.op1;return e.isNumberLiteral&&e.isNegative&&(n=-n,e=e.neg()),[e,n]}function ae(...e){if(e.length>0,e.length===1)return e[0];let n=e[0].engine,i=qt(n,e);if(i){if(i.operator!=="Multiply")return i;e=i.ops}return new Be(n,e).asRationalExpression()}function ul(...e){e.length>0;let n=e[0].engine;e=e.map(t=>t.N());let i=qt(n,e);if(i){if(i.operator!=="Multiply")return i;e=i.ops}return new Be(n,e).asExpression({numericApproximation:!0})}var di=class e extends z{constructor(n,i){if(super(),this.bignum=i,typeof n=="number")this.decimal=i(n),this.im=0;else if(n instanceof M)this.decimal=n,this.im=0;else{let t=i(n.re??0);this.decimal=t,this.im=n.im??0}this.decimal.isNaN()&&(this.im=NaN),this.decimal.isNaN(),isNaN(this.im)}get type(){return this.isNaN?"number":this.isComplexInfinity?"complex":this.im!==0?this.decimal.isZero()?"imaginary":"finite_complex":this.decimal.isFinite()?this.decimal.isInteger()?"finite_integer":"finite_real":"non_finite_number"}get isExact(){return this.im===0&&this.decimal.isInteger()}get asExact(){if(this.isExact)return this._makeExact(K(this.decimal))}toJSON(){return this.isNaN?"NaN":this.isPositiveInfinity?"PositiveInfinity":this.isNegativeInfinity?"NegativeInfinity":this.isComplexInfinity?"ComplexInfinity":this.im===0?fi(this.decimal)?this.decimal.toNumber():{num:Fr(this.decimal)}:fi(this.decimal)?["Complex",Ie(this.decimal.toNumber()),Ie(this.im)]:["Complex",{num:Fr(this.decimal)},Ie(this.im)]}toString(){if(this.isZero)return"0";if(this.isOne)return"1";if(this.isNegativeOne)return"-1";if(this.im===0)return Fr(this.decimal);if(this.decimal.isZero())return this.im===1?"i":this.im===-1?"-i":`${ge(this.im)}i`;if(this.isComplexInfinity)return"~oo";let n="";return this.im===1?n="+ i":this.im===-1?n="- i":this.im>0?n=`+ ${this.im}i`:n=`- ${-this.im}i`,`(${Fr(this.decimal)} ${n})`}clone(n){return new e(n,this.bignum)}_makeExact(n){return new Z(n,i=>this.clone(i),this.bignum)}get re(){return this.decimal.toNumber()}get bignumRe(){return this.decimal}get numerator(){return this}get denominator(){return this._makeExact(1)}get isNaN(){return this.decimal.isNaN()}get isPositiveInfinity(){return this.im===0&&!this.decimal.isFinite()&&!this.decimal.isNaN()&&this.decimal.isPositive()}get isNegativeInfinity(){return this.im===0&&!this.decimal.isFinite()&&!this.decimal.isNaN()&&this.decimal.isNegative()}get isComplexInfinity(){return!Number.isFinite(this.im)&&!Number.isNaN(this.im)}get isZero(){return this.im===0&&this.decimal.isZero()}isZeroWithTolerance(n){if(this.im!==0)return!1;let i=typeof n=="number"?this.bignum(n):n;return this.decimal.abs().lte(i)}get isOne(){return this.im===0&&this.decimal.eq(1)}get isNegativeOne(){return this.im===0&&this.decimal.eq(-1)}sgn(){if(this.im===0){if(this.decimal.isZero())return 0;if(this.decimal.isPositive())return 1;if(this.decimal.isNegative())return-1}}N(){return this}neg(){return this.isZero?this:this.clone({re:this.decimal.neg(),im:-this.im})}inv(){if(this.isOne)return this;if(this.isNegativeOne)return this;if(this.im===0)return this.clone(this.decimal.pow(-1));let n=Math.hypot(this.re,this.im),i=this.decimal.mul(this.decimal).add(this.im*this.im).sqrt();return this.clone({re:this.decimal.div(i),im:-this.im/n})}add(n){return typeof n=="number"?n===0?this:this.clone({re:this.decimal.add(n),im:this.im}):n.isZero?this:this.isZero?this.clone(n):this.clone({re:this.decimal.add(n.bignumRe??n.re),im:this.im+n.im})}sub(n){return this.add(n.neg())}mul(n){if(this.isZero)return this;if(n===1)return this;if(n===-1)return this.neg();if(n===0)return this.clone(0);if(this.isOne)return typeof n=="number"||n instanceof M?this.clone(n):this.clone({re:n.bignumRe??n.re,im:n.im});if(typeof n=="number")return this.im===0?this.clone(this.decimal.mul(n)):this.clone({re:this.decimal.mul(n),im:this.im*n});if(n instanceof M)return this.im===0?this.clone(this.decimal.mul(n)):this.clone({re:this.decimal.mul(n),im:this.im*n.toNumber()});if(this.isNegativeOne){let i=n.neg();return this.clone({re:i.bignumRe??i.re,im:i.im})}return n.isOne?this:n.isNegativeOne?this.neg():n.isZero?this.clone(0):this.im===0&&n.im===0?this.clone(this.decimal.mul(n.bignumRe??n.re)):this.clone({re:this.decimal.mul(n.bignumRe??n.re).sub(this.im*n.im),im:this.re*n.im+this.im*n.re})}div(n){if(typeof n=="number")return n===1?this:n===-1?this.neg():n===0?this.clone(NaN):this.clone({re:this.decimal.div(n),im:this.im/n});if(n.isOne)return this;if(n.isNegativeOne)return this.neg();if(n.isZero)return this.clone(this.isZero?NaN:1/0);if(this.im===0&&n.im===0)return this.clone(this.decimal.div(n.bignumRe??n.re));let[i,t]=[this.re,this.im],[r,s]=[n.re,n.im],o=r*r+s*s,a=n.bignumRe??this.bignum(n.re),u=a.mul(a).add(s*s);return this.clone({re:this.decimal.mul(a).add(t*s).div(u),im:(t*r-i*s)/o})}pow(n){if(Array.isArray(n),this.isNaN)return this;if(typeof n=="number"&&isNaN(n))return this.clone(NaN);if(n instanceof z){if(n.isNaN)return this.clone(NaN);if(n.isZero)return this.clone(1);if(n.isOne)return this;n.im?n={re:n.re,im:n.im}:n=n.re}if(typeof n=="object"&&("re"in n||"im"in n)){let[u,l]=[n?.re??0,n?.im??0];if(Number.isNaN(l)||Number.isNaN(u))return this.clone(NaN);if(l===0)n=u;else{if(this.im===1/0)return this.clone(NaN);if(this.isNegativeInfinity)return this.clone(0);if(this.isPositiveInfinity)return this.clone({im:1/0});let f=this.pow(u),c=this.decimal.ln().mul(l),p=this.clone({re:c.cos(),im:Wi(c.sin().toNumber())});return f.mul(p)}}if(this.isPositiveInfinity){if(n===-1)return this.clone(0);if(n===1/0)return this.clone(1/0);if(n===-1/0)return this.clone(0)}else if(this.isNegativeInfinity&&n===1/0)return this.clone(NaN);if((n===1/0||n===-1/0)&&(this.isOne||this.isNegativeOne))return this.clone(NaN);if(n===1)return this;if(n===-1)return this.inv();if(n===0)return this.clone(1);if(this.isZero){if(n>0)return this;if(n<0)return this.clone({im:1/0})}if(n<0)return this.pow(-n).inv();if(this.im===0)return this.clone(this.decimal.pow(n));let i=this.decimal,t=this.im,r=i.mul(i).add(t*t).sqrt(),s=M.atan2(t,i),o=r.pow(n),a=s.mul(n);return this.clone({re:o.mul(a.cos()),im:Wi(o.mul(a.sin()).toNumber())})}root(n){if(!Number.isInteger(n))return this._makeExact(NaN);if(n===0)return this._makeExact(NaN);if(n===1)return this;if(this.isZero)return this;if(this.isOne)return this;if(this.isNegativeOne)return this;if(this.im===0)return this.decimal.isNegative()?this._makeExact(NaN):n===2?this.clone(this.decimal.sqrt()):n===3?this.clone(this.decimal.cbrt()):this.clone(this.decimal.pow(1/n));let i=this.decimal,t=this.im,r=i.mul(i).add(t*t).sqrt(),s=M.atan2(t,i),o=r.pow(1/n),a=s.div(n);return this.clone({re:o.mul(a.cos()),im:Wi(o.mul(a.sin()).toNumber())})}sqrt(){if(this.isZero||this.isOne)return this;if(this.im!==0){let n=this.decimal,i=this.im,t=n.mul(n).add(i*i).sqrt(),r=n.add(t).div(2).sqrt(),s=Wi(Math.sign(i)*t.sub(n).div(2).sqrt().toNumber());return this.clone({re:r,im:s})}return this.decimal.isPositive()?this.clone(this.decimal.sqrt()):this.clone({im:Math.sqrt(-this.re)})}gcd(n){if(this.isZero)return n;if(n.isZero)return this;if(this.im!==0||n.im!==0)return this._makeExact(NaN);if(!this.decimal.isInteger())return this._makeExact(1);let i=this.bignum(n.bignumRe??n.re);if(!i.isInteger())return this._makeExact(1);let t=this.decimal;for(;!i.isZero();){let r=i;i=t.mod(i),t=r}return this.clone(t.abs())}abs(){return this.im===0?this.decimal.isPositive()?this:this.clone(this.decimal.neg()):this.clone(this.decimal.pow(2).add(this.im**2).sqrt())}ln(n){if(this.isZero)return this._makeExact(NaN);if(this.isNegativeInfinity)return this._makeExact(NaN);if(this.isPositiveInfinity)return this._makeExact(1/0);if(this.im===0)return this.decimal.isNegative()?this._makeExact(NaN):this.isOne?this._makeExact(0):this.isNegativeOne?this.clone({im:Math.PI}):n===void 0?this.clone(this.decimal.ln()):this.clone(this.decimal.log(n));let i=this.decimal,t=this.im,r=i.mul(i).add(t*t).sqrt(),s=M.atan2(t,i).toNumber();return n===void 0?this.clone({re:r.ln(),im:s}):this.clone({re:r.log(n),im:s})}exp(){if(this.isNaN)return this._makeExact(NaN);if(this.isZero)return this._makeExact(1);if(this.isNegativeInfinity)return this._makeExact(0);if(this.isPositiveInfinity)return this._makeExact(1/0);if(this.im!==0){let n=this.decimal.exp();return this.clone({re:n.mul(Wi(Math.cos(this.im))),im:Wi(n.mul(Math.sin(this.im)).toNumber())})}return this.clone(this.decimal.exp())}floor(){return this.isNaN||this.im!==0?this._makeExact(NaN):this.decimal.isInteger()?this:this._makeExact(K(this.decimal.floor()))}ceil(){return this.isNaN||this.im!==0?this._makeExact(NaN):this.decimal.isInteger()?this:this._makeExact(K(this.decimal.ceil()))}round(){return this.isNaN||this.im!==0?this._makeExact(NaN):this.decimal.isInteger()?this:this._makeExact(K(this.decimal.round()))}eq(n){return this.isNaN?!1:typeof n=="number"?this.im===0&&this.decimal.eq(n):n.isNaN?!1:Number.isFinite(this.im)?this.decimal.eq(n.bignumRe??n.re)&&this.im-n.im===0:!Number.isFinite(n.im)}lt(n){return this.im,typeof n=="number"?this.decimal.lt(n):this.decimal.lt(n.bignumRe??n.re)}lte(n){return this.im,typeof n=="number"?this.decimal.lte(n):this.decimal.lte(n.bignumRe??n.re)}gt(n){return this.im,typeof n=="number"?this.decimal.gt(n):this.decimal.gt(n.bignumRe??n.re)}gte(n){return this.im,typeof n=="number"?this.decimal.gte(n):this.decimal.gte(n.bignumRe??n.re)}};function Fr(e){let n=e.toString();if(e.isInteger()&&n.includes("e")){let i=e.toFixed(),t=i.match(/0+$/);if((t?t[0].length:0)<=5)return i}return n}function Wi(e){return Math.abs(e)<=1e-14?0:e}var mi=class e extends z{constructor(n,i){if(super(),this.bignum=i,typeof n=="number")this.decimal=n,this.im=0;else if(n instanceof M)this.decimal=n.toNumber(),this.im=0;else{let t=n.re===void 0?0:n.re instanceof M?n.re.toNumber():n.re;this.decimal=t,this.im=n.im??0,isFinite(this.im)||(this.decimal=this.im)}isNaN(this.im)}_makeExact(n){return new Z(n,i=>this.clone(i),this.bignum)}get type(){return this.isNaN?"number":this.isComplexInfinity?"complex":this.im!==0?this.decimal===0?"imaginary":"finite_complex":Number.isFinite(this.decimal)?Number.isInteger(this.decimal)?"finite_integer":"finite_real":"non_finite_number"}get isExact(){return this.im===0&&Number.isInteger(this.decimal)}get asExact(){if(this.isExact)return this._makeExact(this.decimal)}toJSON(){return this.isNaN?"NaN":this.isPositiveInfinity?"PositiveInfinity":this.isNegativeInfinity?"NegativeInfinity":this.im===0?Ie(this.decimal):["Complex",Ie(this.decimal),Ie(this.im)]}toString(){if(this.isZero)return"0";if(this.isOne)return"1";if(this.isNegativeOne)return"-1";if(this.im===0)return ge(this.decimal);if(this.decimal===0)return this.im===1?"i":this.im===-1?"-i":`${ge(this.im)}i`;if(this.isComplexInfinity)return"~oo";let n="";return this.im===1?n="+ i":this.im===-1?n="- i":this.im>0?n=`+ ${ge(this.im)}i`:n=`- ${ge(-this.im)}i`,`(${ge(this.decimal)} ${n})`}clone(n){return new e(n,this.bignum)}get re(){return this.decimal}get bignumRe(){}get numerator(){return this}get denominator(){return this._makeExact(1)}get isNaN(){return Number.isNaN(this.decimal)}get isPositiveInfinity(){return!Number.isFinite(this.decimal)&&this.decimal>0&&this.im===0}get isNegativeInfinity(){return!Number.isFinite(this.decimal)&&this.decimal<0&&this.im===0}get isComplexInfinity(){return!Number.isFinite(this.im)&&!Number.isNaN(this.im)}get isZero(){return this.im===0&&this.decimal===0}isZeroWithTolerance(n){if(this.im!==0)return!1;let i=n instanceof M?n.toNumber():n;return Math.abs(this.decimal)<i}get isOne(){return this.im===0&&this.decimal===1}get isNegativeOne(){return this.im===0&&this.decimal===-1}sgn(){if(!(this.im!==0||!Number.isFinite(this.decimal)))return Math.sign(this.decimal)}N(){return this}neg(){return this.isNaN?this._makeExact(NaN):this.isZero?this:this.clone({re:-this.decimal,im:-this.im})}inv(){if(this.isNaN)return this._makeExact(NaN);if(this.isOne)return this;if(this.isNegativeOne)return this;if(this.im===0)return this.clone(1/this.decimal);let n=Math.hypot(this.re,this.im);return this.clone({re:this.decimal/n,im:-this.im/n})}add(n){return this.isNaN?this._makeExact(NaN):typeof n=="number"?n===0?this:this.clone({re:this.decimal+n,im:this.im}):n.isZero?this:this.isZero?this.clone({re:n.bignumRe??n.re,im:n.im}):this.clone({re:this.decimal+n.re,im:this.im+n.im})}sub(n){return this.add(n.neg())}mul(n){if(this.isNaN)return this._makeExact(NaN);if(this.isZero)return this;if(n instanceof M&&(n=n.toNumber()),n===1)return this;if(n===-1)return this.neg();if(n===0)return this.clone(0);if(this.isOne)return typeof n=="number"||n instanceof M?this.clone(n):this.clone({re:n.bignumRe??n.re,im:n.im});if(typeof n=="number")return this.im===0?this.clone(this.decimal*n):this.clone({re:this.decimal*n,im:this.im*n});if(this.isNegativeOne){let i=n.neg();return this.clone({re:i.bignumRe??i.re,im:i.im})}return n.isOne?this:n.isNegativeOne?this.neg():n.isZero?this.clone(0):this.im===0&&n.im===0?this.clone(this.decimal*n.re):this.clone({re:this.decimal*n.re-this.im*n.im,im:this.re*n.im+this.im*n.re})}div(n){if(this.isNaN)return this._makeExact(NaN);if(typeof n=="number")return n===1?this:n===-1?this.neg():n===0?this.clone(NaN):this.clone({re:this.decimal/n,im:this.im/n});if(n.isOne)return this;if(n.isNegativeOne)return this.neg();if(n.isZero)return this.clone(this.isZero?NaN:1/0);if(this.im===0&&n.im===0)return this.clone(this.decimal/n.re);let[i,t]=[this.decimal,this.im],[r,s]=[n.re,n.im],o=r*r+s*s;return this.clone({re:(i*r+t*s)/o,im:(t*r-i*s)/o})}pow(n){if(Array.isArray(n),this.isNaN)return this._makeExact(NaN);if(typeof n=="number"&&isNaN(n))return this.clone(NaN);if(n instanceof z){if(n.isNaN)return this.clone(NaN);if(n.isZero)return this.clone(1);if(n.isOne)return this;n.im?n={re:n.re,im:n.im}:n=n.re}if(typeof n=="object"&&("re"in n||"im"in n)){let[u,l]=[n?.re??0,n?.im??0];if(Number.isNaN(l)||Number.isNaN(u))return this.clone(NaN);if(l===0)n=u;else{if(this.im===1/0)return this.clone(NaN);if(this.isNegativeInfinity)return this.clone(0);if(this.isPositiveInfinity)return this.clone({im:1/0});let f=this.pow(u).re,c=Math.log(this.decimal)*l;return this.clone({re:ll(f*Math.cos(c)),im:ll(f*Math.sin(c))})}}if(this.isPositiveInfinity){if(n===-1)return this.clone(0);if(n===1/0)return this.clone(1/0);if(n===-1/0)return this.clone(0)}else if(this.isNegativeInfinity&&n===1/0)return this.clone(NaN);if((n===1/0||n===-1/0)&&(this.isOne||this.isNegativeOne))return this.clone(NaN);if(n===1)return this;if(n===-1)return this.inv();if(n===0)return this.clone(1);if(this.isZero){if(n>0)return this;if(n<0)return this.clone({im:1/0})}if(n<0)return this.clone(1/this.decimal**-n);if(this.im===0)return this.clone(this.decimal**n);let i=this.decimal,t=this.im,r=Math.sqrt(i*i+t*t),s=Math.atan2(t,i),o=r**n,a=s**n;return this.clone({re:o*Math.cos(a),im:o*Math.sin(a)})}root(n){if(this.isNaN)return this._makeExact(NaN);if(n===0)return this.clone(NaN);if(this.isNaN)return this;if(this.isZero)return this;if(this.isOne)return this;if(this.isNegativeOne)return this;if(n===1)return this;if(n===2)return this.sqrt();if(n===3)return this.clone(Math.cbrt(this.decimal));if(this.im===0)return this.decimal<0?n%2===0?this.clone(NaN):this.clone(-Math.pow(-this.decimal,1/n)):this.clone(Math.pow(this.decimal,1/n));let i=this.decimal,t=this.im,r=Math.hypot(i,t),s=Math.atan2(t,i),o=Math.pow(r,1/n),a=s/n;return this.clone({re:o*Math.cos(a),im:o*Math.sin(a)})}sqrt(){if(this.isNaN)return this._makeExact(NaN);if(this.isZero||this.isOne)return this;if(this.im!==0){let n=this.decimal,i=this.im,t=Math.sqrt(n*n+i*i),r=Math.sqrt((n+t)/2),s=Math.sign(i)*Math.sqrt((t-n)/2);return this.clone({re:r,im:s})}return this.decimal>0?this.clone(Math.sqrt(this.decimal)):this.clone({im:Math.sqrt(-this.decimal)})}gcd(n){if(this.isNaN)return this._makeExact(NaN);if(this.isZero)return n;if(n.isZero)return this;if(this.im!==0||n.im!==0)return this._makeExact(NaN);if(!Number.isInteger(this.decimal))return this._makeExact(1);let i=n.re;if(!Number.isInteger(i))return this._makeExact(1);let t=this.decimal;for(;i!==0;){let r=i;i=t%i,t=r}return this.clone(Math.abs(t))}abs(){return this.isNaN?this._makeExact(NaN):this.im===0?this.decimal>0?this:this.clone(-this.decimal):this.clone(Math.sqrt(this.decimal**2+this.im**2))}ln(n){if(this.isNaN)return this._makeExact(NaN);if(this.isZero)return this._makeExact(NaN);if(this.isNegativeInfinity)return this._makeExact(NaN);if(this.isPositiveInfinity)return this._makeExact(1/0);if(this.im===0)return this.decimal<0?this._makeExact(NaN):this.isOne?this._makeExact(0):this.isNegativeOne?this.clone({im:Math.PI}):n===void 0?this.clone(Math.log(this.decimal)):this.clone(Math.log(this.decimal)/Math.log(n));let i=this.decimal,t=this.im,r=Math.hypot(i,t),s=Math.atan2(t,i),o=n===void 0?Math.log(r):Math.log(r)/Math.log(n);return this.clone({re:o,im:s})}exp(){if(this.isNaN)return this._makeExact(NaN);if(this.isZero)return this._makeExact(1);if(this.isNegativeInfinity)return this._makeExact(0);if(this.isPositiveInfinity)return this._makeExact(1/0);if(this.im!==0){let n=Math.exp(this.decimal);return this.clone({re:n*Math.cos(this.im),im:n*Math.sin(this.im)})}return this.clone(Math.exp(this.decimal))}floor(){return this.isNaN||this.im!==0?this._makeExact(NaN):Number.isInteger(this.decimal)?this:this._makeExact(Math.floor(this.decimal))}ceil(){return this.isNaN||this.im!==0?this._makeExact(NaN):Number.isInteger(this.decimal)?this:this._makeExact(Math.ceil(this.decimal))}round(){return this.isNaN||this.im!==0?this._makeExact(NaN):Number.isInteger(this.decimal)?this:this._makeExact(Math.round(this.decimal))}eq(n){return this.isNaN?!1:typeof n=="number"?this.im===0&&this.decimal-n===0:n.isNaN?!1:Number.isFinite(this.im)?this.decimal-n.re===0&&this.im-n.im===0:!Number.isFinite(n.im)}lt(n){return this.im,typeof n=="number"?this.decimal<n:this.decimal<n.re}lte(n){return this.im,typeof n=="number"?this.decimal<=n:this.decimal<=n.re}gt(n){return this.im,typeof n=="number"?this.decimal>n:this.decimal>n.re}gte(n){return this.im,typeof n=="number"?this.decimal>=n:this.decimal>=n.re}};function ll(e){return Math.abs(e)<=1e-14?0:e}var $t=class{constructor(n,i){this.terms=[];this.engine=n;let t=0,r=0,s=[];for(let o of i){if(o.type.is("complex")&&o.isInfinity){this.terms=[{term:n.ComplexInfinity,coef:[]}];return}if(o.isNaN||o.symbol==="Undefined"){this.terms=[{term:n.NaN,coef:[]}];return}let[a,u]=o.toNumericValue();a.isPositiveInfinity?t+=1:a.isNegativeInfinity&&(r+=1),u.is(1)?a.isZero||s.push(a):this.add(a,u)}if(t>0&&r>0){this.terms=[{term:n.NaN,coef:[]}];return}if(t>0){this.terms=[{term:n.PositiveInfinity,coef:[]}];return}if(r>0){this.terms=[{term:n.NegativeInfinity,coef:[]}];return}s.length===1?this.add(s[0],n.One):s.length>0&&fl(n,s).forEach(o=>this.add(o,n.One))}add(n,i){if(i.is(0)||n.isZero)return;if(i.is(1)){let r=this.engine;this.terms.push({coef:[],term:r.number(n)});return}if(i.operator==="Add"){for(let r of i.ops){let[s,o]=r.toNumericValue();this.add(n.mul(s),o)}return}if(i.operator==="Negate"){this.add(n.neg(),i.op1);return}let t=this.find(i);if(t>=0){this.terms[t].coef.push(n);return}i.numericValue===null||i.is(1),this.terms.push({coef:[n],term:i})}find(n){return this.terms.findIndex(i=>i.term.isSame(n))}N(){let n=this.engine,i=this.terms;if(i.length===0)return n.Zero;let t=[],r=[];for(let{coef:o,term:a}of i)if(o.length===0)a.isNumberLiteral?typeof a.numericValue=="number"?r.push(n._numericValue(a.numericValue)):r.push(a.numericValue):t.push(a);else{let u=o.reduce((l,f)=>l.add(f)).N();if(u.isZero)continue;u.eq(1)?t.push(a.N()):u.eq(-1)?t.push(a.N().neg()):t.push(a.N().mul(n.box(u)))}let s=ld(n,r);if(!s.isZero){if(t.length===0)return n.box(s);t.push(n.box(s))}return Ve(n,t)}asExpression(){let n=this.engine,i=this.terms;return i.length===0?n.Zero:Ve(n,i.map(({coef:t,term:r})=>{if(t.length===0)return r;let s=fl(n,t);if(s.length===0)return r;if(s.length>1)return pe(n,[Ve(n,s.map(a=>n.box(a))),r]);let o=s[0];return o.isNaN?n.NaN:o.isZero?n.Zero:o.eq(1)?r:o.eq(-1)?r.neg():r.is(1)?n.box(o):r.mul(n.box(o))}))}};function fl(e,n){let i=s=>e.bignum(s),t=s=>new Z(s,r,i),r=e.precision>cn?s=>new di(s,i):s=>new mi(s,t);return Z.sum(n,r,i)}function ld(e,n){let i=o=>e.bignum(o),t=o=>new Z(o,r,i),r=e.precision>cn?o=>new di(o,i):o=>new mi(o,t),s=Z.sum(n,r,i);return s.length===0?t(0):s.length===1?s[0].N():s.reduce((o,a)=>o.add(a).N())}function Ve(e,n){if(n=J(n,"Add"),n=n.filter(t=>t.numericValue===null||!t.is(0)),n.length===0)return e.Zero;if(n.length===1&&!si(n[0]))return n[0];let i=[];for(let t=0;t<n.length;t++){let r=n[t];if(r.isNumberLiteral){let s=r.numericValue;if(typeof s=="number"||v(s.type,"real")&&!s.isExact||v(s.type,"integer")){let o=n[t+1];if(o){let a=wi(o)?.numericValue;if(a!==void 0){let u=typeof a=="number"?a:a?.re;if(u!==0){let l=typeof s=="number"?s:s.re;i.push(e.number(e._numericValue({re:l,im:u??0}))),t++;continue}}}}}i.push(r)}return i.length===1?i[0]:e._fn("Add",[...i].sort(At))}function cl(e){return e.length===0?"finite_integer":e.length===1?e[0].type:ke(...e.map(n=>n.type.type))}function H(...e){return e.length>0,e.every(n=>n.isValid)?new $t(e[0].engine,e).asExpression():e[0].engine._fn("Add",e)}function pl(...e){return e.length>0,e.every(n=>n.isValid)?(e=e.map(n=>n.isNumberLiteral?n.evaluate():n.N()),new $t(e[0].engine,e).N()):e[0].engine._fn("Add",e)}function Ji(e,n){if(e===n)return!0;if(e.ops)return e.operator!==n.operator||e.nops!==n.nops?!1:e.ops.every((i,t)=>Ji(i,n.ops[t]));if(e.isNumberLiteral){if(!n.isNumberLiteral)return!1;let i=e.numericValue,t=n.numericValue;return i===t?!0:typeof i=="number"?typeof t=="number"?i===t:t.eq(i):i.eq(t)}if(e.string||n.string)return e.string===n.string;if(e.symbol||n.symbol)return e.symbol===n.symbol;if(e.rank!==0){if(e.rank!==n.rank)return!1;for(let i=0;i<e.rank;i++)if(e.shape[i]!==n.shape[i])return!1;return e.tensor.equals(n.tensor)}return!1}function qr(e,n){if(e.functionDefinition?.eq){let r=e.functionDefinition.eq(e,e.engine.box(n));if(r!==void 0)return r}if(typeof n!="number"&&n.functionDefinition?.eq){let r=n.functionDefinition.eq(n,e);if(r!==void 0)return r}e=e.N();let i=typeof n!="number"?n.N():e.engine.box(n);if(e.ops||i.ops){let r=e.functionDefinition?.eq?.(e,i);return r!==void 0||(r=i.functionDefinition?.eq?.(i,e),r!==void 0)?r:e.isSame(i)?!0:e.unknowns.length===0&&i.unknowns.length===0?e.isFinite&&i.isFinite?dl(e.sub(i).simplify().N()):e.isNaN||i.isNaN?!1:!!(e.isInfinity&&i.isInfinity&&e.sgn===i.sgn):(e=e.expand().simplify(),i=i.expand().simplify(),fd(e,i)?Ji(e,i):void 0)}if(e.symbol){let r=e.symbolDefinition?.eq?.(i);if(r!==void 0)return r}if(i.symbol){let r=i.symbolDefinition?.eq?.(e);if(r!==void 0)return r}if(e.symbol&&i.symbol)return e.symbol===i.symbol;let t=e.engine;if(e.isNumberLiteral&&i.isNumberLiteral)return e.isFinite&&i.isFinite?dl(e.sub(i)):e.isNaN||i.isNaN?!1:!!(e.isInfinity&&i.isInfinity&&e.sgn===i.sgn);if(t.ask(t.box(["Equal",e,i])).length>0)return!0;if(t.ask(t.box(["NotEqual",e,i])).length>0)return!1;if(!(e.unknowns.length>0||i.unknowns.length>0))return Ji(e,i)}function Yi(e,n){if(e.isNumberLiteral){if(typeof n!="number"&&typeof n.numericValue=="number"&&(n=n.numericValue),typeof n=="number"){if(n===0){let r=e.sgn;return r===void 0?void 0:r==="zero"?"=":r==="positive"||r==="positive-infinity"?">":r==="negative"||r==="negative-infinity"?"<":r==="non-negative"?">=":r==="non-positive"?"<=":void 0}if(e.isNumberLiteral){let r=e.numericValue;return typeof r=="number"?Math.abs(r-n)<=e.engine.tolerance?"=":r<n?"<":">":r.eq(n)?"=":r.lt(n)?"<":">"}return}if(!n.isNumberLiteral)return;let i=e.numericValue,t=n.numericValue;return typeof i=="number"?t.eq(i)?"=":t.lt(i)?">":"<":i.eq(t)?"=":i.lt(t)?"<":">"}if(typeof n!="number"){if(e.ops||n.ops){if(e.functionDefinition?.eq?.(e,n)!==void 0)return"=";let t=e.sub(n).N();if(!t.isNumberLiteral)return;if(typeof t.numericValue=="number")return t.numericValue===0?"=":t.numericValue<0?"<":">";let r=e.engine.tolerance;return t.numericValue.isZeroWithTolerance(r)?"=":t.numericValue.lt(0)?"<":">"}if(e.symbol){if(e.symbol===n.symbol)return"=";let i=e.symbolDefinition?.cmp?.(n);return i||(e.symbolDefinition?.eq?.(n)===!0?"=":void 0)}if(e.string)return n.string?e.string===n.string?"=":e.string<n.string?"<":">":void 0;if(e.tensor)return n.tensor&&e.tensor.equals(n.tensor)?"=":void 0}}function dl(e){if(!e.isNumberLiteral)return!1;let n=e.numericValue,i=e.engine;return typeof n=="number"?i.chop(n)===0:n.isZeroWithTolerance(i.tolerance)}function fd(e,n){let i=e.unknowns,t=n.unknowns;if(i.length!==t.length)return!1;for(let r of i)if(!t.includes(r))return!1;return!0}function $r(e,n=[]){let i=n.map((o,a)=>!o.symbol||o.symbol==="Nothing"?`_${a+1}`:o.symbol),t=e.unknowns;t.includes("_")&&(e=e.subs({_:"_1"}),t=e.unknowns);let r=i.length;for(let o of t)if(o.startsWith("_")){let a=Number(o.slice(1));a<=i.length&&(e=e.subs({[o]:i[a-1]})),a>r&&(r=a)}for(let o=i.length;o<r;o++)i.push(`_${o+1}`);let s=r;for(;s>0&&i[s-1]===`_${s}`;){t.includes(`_${s}`)||i.pop();s--}return[e,...i]}function ho(e){let n=e.engine;if(e.symbol){let a=n.lookupFunction(e.symbol);if(a){let u=a.evaluate;return u?l=>u(l,{engine:n})??n._fn(e.symbol,l):l=>n._fn(e.symbol,l)}}let i;e.operator==="Function"?i=$r(e.op1,e.ops.slice(1)):i=$r(e);let[t,...r]=i;n.pushScope();for(let a of r)n.declare(a,{inferred:!0,type:"unknown"});let s=t.canonical;s.bind(),n.popScope();let o=s.scope;return o?r.length===0?()=>{let a=n.swapScope(o);n.resetContext();let u=s.N()??s.evaluate();return n.swapScope(a),u}:a=>{if(a.length>r.length||n.strict&&!a.every(c=>c.isValid))return;if(a.length<r.length){let c=r.slice(a.length).map((m,y)=>n.symbol(`_${y+1}`)),p=Qi(n.function("Function",[t,...r]),[...a,...c]).evaluate();return n.function("Function",[p])}a=a.map(c=>c.evaluate());let u=n.swapScope(o);n.resetContext();let l=0;for(let c of r)n.assign(c,a[l++]);let f=s.evaluate();return n.swapScope(u),f.isValid?f:void 0}:()=>s.N()??s.evaluate()}function Qi(e,n){let i=ho(e)?.(n);return i||e.engine.function("Apply",[e,...n])}function ze(e){return ho(e)??(n=>e.engine.function("Apply",[e.N(),...n]).N())}function go(e){let n=e.engine,i=ho(e);return i?t=>i([n.number(t)])?.value??NaN:t=>n.function("Apply",[e.evaluate(),n.number(t)]).value}function xo(e){let n=e.match(/(.+)\((.*)\)/);if(!n)return[e,void 0];let i=n[1],t=n[2].split(",").map(r=>r.trim());return[i,t]}function Xi(e){if(e.operator==="Interval"){let n=e.op1,i=e.op2,t=!1,r=!1;n.operator==="Open"?(t=!0,n=n.op1):n.operator==="Closed"&&(n=n.op1),i.operator==="Open"?(r=!0,i=i.op1):i.operator==="Closed"&&(i=i.op1);let s=n.N(),o=i.N();return!s.isNumberLiteral||!o.isNumberLiteral?void 0:{start:s.re,openStart:t,end:o.re,openEnd:r}}if(e.symbol==="EmptySet")return{start:0,openStart:!0,end:0,openEnd:!0};if(e.symbol==="RealNumbers")return{start:-1/0,openStart:!1,end:1/0,openEnd:!1};if(e.symbol==="NegativeNumbers")return{start:-1/0,openStart:!1,end:0,openEnd:!0};if(e.symbol==="NonPositiveNumbers")return{start:-1/0,openStart:!1,end:0,openEnd:!1};if(e.symbol==="PositiveNumbers")return{start:0,openStart:!0,end:1/0,openEnd:!1};if(e.symbol==="NonNegativeNumbers")return{start:0,openStart:!1,end:1/0,openEnd:!1}}var Vt=50,bl={List:{complexity:8200,signature:"(...any) -> list",type:e=>k(`list<${ke(...e.map(n=>n.type.type))}>`),canonical:cd,eq:yl,collection:yo()},Set:{complexity:8200,signature:"(...any) -> set",type:e=>k(`set<${ke(...e.map(n=>n.type.type))}>`),canonical:pd,eq:(e,n)=>{if(e.operator!==n.operator||e.nops!==n.nops)return!1;let i=t=>n.ops.some(r=>t.isSame(r));return e.ops.every(i)},collection:{...yo(),at:void 0,indexOf:void 0}},Dictionary:{complexity:8200,signature:"(...(string | tuple<string|symbol, expression>)) -> map",type:e=>k(`tuple<${Object.entries(bo(e)).map(([n,i])=>n?`${n}: ${i.type}`:i.type).join(", ")}>`),canonical:(e,{engine:n})=>{let i={};for(let t of e){let r=vo(n,t);if(r.operator==="Dictionary")for(let s of r.ops){s.operator;let[o,a]=s.ops;i[o.string??o.symbol]=a}}return n._fn("Dictionary",Object.entries(i).map(([t,r])=>n._fn("Tuple",[n.string(t),r])))},eq:(e,n)=>{if(e.operator!==n.operator||e.nops!==n.nops)return!1;let i=bo(e.ops),t=bo(n.ops);return Object.entries(i).every(([r,s])=>{let o=t[r];return o&&s.isSame(o)})},collection:{...yo(),at:(e,n)=>{},indexOf:(e,n)=>{},elttype:e=>k("tuple<string, any>")}},Range:{complexity:8200,signature:"(number, number?, step: number?) -> collection<integer>",eq:(e,n)=>{if(e.operator!==n.operator)return!1;let[i,t,r]=Je(e),[s,o,a]=Je(n);return i===s&&t===o&&r===a},collection:{size:e=>{let[n,i,t]=Je(e);return t===0?0:!isFinite(n)||!isFinite(i)?1/0:1+Math.max(0,Math.floor((i-n)/t))},contains:(e,n)=>{if(!n.type.matches("integer"))return!1;let i=n.re,[t,r,s]=Je(e);return s===0?!1:s>0?i>=t&&i<=r:i<=t&&i>=r},iterator:(e,n,i)=>{let[t,r,s]=Je(e),o=n??1,a=s===0?0:Math.floor((r-t)/s)+1;return i=Math.min(i??a,a),i<=0?{next:()=>({value:void 0,done:!0})}:{next:()=>i>0?(i--,{value:e.engine.number(t+s*(o++-1)),done:!1}):{value:void 0,done:!0}}},at:(e,n)=>{if(typeof n!="number")return;let[i,t,r]=Je(e);if(!(n<1||n>1+(t-i)/r))return e.engine.number(i+r*(n-1))},indexOf:void 0,subsetOf:(e,n)=>{if(n.operator==="Range"){let[r,s,o]=Je(e),[a,u,l]=Je(n);return r>=a&&s<=u&&o%l===0}if(!ri(n))return!1;let i=n.baseDefinition;if(!i?.collection?.iterator||!i?.collection?.at)return!1;let t=1;for(let r of ee(n)){if(!e.contains(r)||!e.at(t)?.isSame(r))return!1;t++}return!0},eltsgn:e=>{let[n,i,t]=Je(e);return t===0?"zero":t>0?n<=i?"positive":"negative":n>=i?"positive":"negative"},elttype:e=>"finite_integer"}},Interval:{description:"A set of real numbers between two endpoints. The endpoints may or may not be included.",complexity:8200,lazy:!0,signature:"(expression, expression) -> set<real>",eq:(e,n)=>{let i=Xi(e),t=Xi(n);return!i||!t?!1:i.start===t.start&&i.end===t.end&&i.openStart===t.openStart&&i.openEnd===t.openEnd},collection:{size:e=>1/0,contains:(e,n)=>{let i=Xi(e);return!i||i.openStart&&n.isLessEqual(i.start)||i.openEnd&&n.isGreaterEqual(i.end)?!1:n.isGreaterEqual(i.start)&&n.isLessEqual(i.end)},eltsgn:e=>{let n=Xi(e);if(!n)return"unsgined";if(n.start===n.end)return"unsigned";if(n.start>=0&&!n.openStart)return"non-negative";if(n.end<=0&&!n.openEnd)return"non-positive";if(n.start>0&&n.end>0)return"positive";if(n.start<0&&n.end<0)return"negative"},elttype:e=>{let n=Xi(e);return n?isFinite(n.start)&&isFinite(n.end)?"finite_real":"real":"never"}}},Linspace:{complexity:8200,signature:"(start: number, end: number?, count: number?) -> collection",collection:{size:e=>{let n=e.op3.re;return isFinite(n)||(n=Vt),Math.max(0,Math.floor(n))},at:(e,n)=>{if(typeof n!="number")return;let i=e.op1.re,t=e.op2.re,r=e.op3.re;if(isFinite(r)||(r=Vt),!(!isFinite(i)||!isFinite(t))&&!(n<1||n>r))return e.engine.number(i+(t-i)*(n-1)/r)},iterator:(e,n,i)=>{let t=e.op1.re,r=e.op2.re,s;isFinite(r)?s=Math.max(0,isFinite(e.op3.re)?e.op3.re:Vt):(r=t,t=1,s=Vt);let o=n??1;return i=Math.min(i??s,s),i<=0?{next:()=>({value:void 0,done:!0})}:{next:()=>i>0?(i--,{value:e.engine.number(t+(r-t)*(o++-1)/s),done:!1}):{value:void 0,done:!0}}},contains:(e,n)=>{if(!n.type.matches("finite_real"))return!1;let i=n.re,t=e.op1.re,r=e.op2.re;if(i<t||i>r)return!1;let s=e.op3.re;if(isFinite(s)||(s=Vt),s===0)return!1;let o=(r-t)/s;return(i-t)%o===0}}},Tuple:{description:"A fixed number of heterogeneous elements",complexity:8200,signature:"(...any) -> tuple",type:e=>k(`tuple<${e.map(n=>n.type).join(", ")}>`),canonical:(e,{engine:n})=>n.tuple(...e),eq:yl,collection:{size:e=>e.nops,contains:(e,n)=>e.ops.some(i=>i.isSame(n)),keys:e=>["first","second","last"],at:(e,n)=>{if(typeof n=="number")return e.ops[n-1]}}},KeyValuePair:{description:"A key/value pair",complexity:8200,signature:"(key: string, value: any) -> tuple<string, unknown>",type:([e,n])=>k(`tuple<string, ${n.type}>`),canonical:(e,{engine:n})=>{let[i,t]=Sr(n,e,["string","any"]);return!i.isValid||!t.isValid?n._fn("KeyValuePair",[i,t]):n.tuple(i,t)}},Single:{description:"A tuple with a single element",complexity:8200,signature:"(value: any) -> tuple<any>",type:([e])=>k(`tuple<${e.type}>`),canonical:(e,{engine:n})=>n.tuple(...qe(n,e,1))},Pair:{description:"A tuple of two elements",complexity:8200,signature:"(first: any, second: any) -> tuple<any, any>",type:([e,n])=>k(`tuple<${e.type}, ${n.type}>`),canonical:(e,{engine:n})=>n.tuple(...qe(n,e,2))},Triple:{description:"A tuple of three elements",complexity:8200,signature:"(first: any, second: any, third: any) -> tuple<any, any, any>",type:([e,n,i])=>k(`tuple<${e.type}, ${n.type}, ${i.type}>`),canonical:(e,{engine:n})=>n.tuple(...qe(n,e,3))},String:{threadable:!0,signature:"(...any) -> string",evaluate:(e,{engine:n})=>e.length===0?n.string(""):n.string(e.map(i=>i.string??i.toString()).join(""))},Length:{complexity:8200,signature:"any -> integer",evaluate:([e],{engine:n})=>n.number(et(e)),sgn:([e])=>et(e)===0?"zero":"positive"},IsEmpty:{complexity:8200,signature:"any -> boolean",evaluate:([e],{engine:n})=>et(e)===0?n.True:n.False},At:{description:["Access an element of a collection or a character of a string.","If the index is negative, it is counted from the end.","If the collection has a rank greater than 1, the index is a tuple of indexes.","If the index is a list, each element of the list is used as an index and the result if a list of the elements."],complexity:8200,signature:"(value: list|tuple|string, index: number | string) -> unknown",evaluate:(e,{engine:n})=>{let i=e[0],t=1;for(;e[t];){let s=i.baseDefinition?.collection?.at;if(!s)return;let o=e[t].string;if(o!==null)i=s(i,o)??n.Nothing;else{let a=e[t].re;if(!Number.isInteger(a))return;i=s(i,a)??n.Nothing}t+=1}return i}},Take:{description:["Take a range of elements from a collection or a string.","If the index is negative, it is counted from the end."],complexity:8200,signature:"(value: collection|string, count: number) -> list|string",type:e=>e[0].type.matches("string")?"string":k(`list<${ei(e[0].type.type)}>`),evaluate:(e,{engine:n})=>{if(e.length<2)return;let i=e[0].string;if(i!==null){let r=e.slice(1).map(s=>Ki(s,i.length));return n.string(ml(i,r))}let t=et(e[0]);return zt(e[0],e.slice(1).map(r=>Ki(r,t)))}},Drop:{complexity:8200,signature:"(value: collection|string, indexes: ...(number | string)) -> list",evaluate:(e,{engine:n})=>{if(e.length<2)return;let i=e[0].string;if(i!==null){let u=hl(e.slice(1).map(l=>Ki(l,i.length)));return n.string(i.split("").filter((l,f)=>!u.includes(f+1)).join(""))}let t=e[0].baseDefinition,r=et(e[0]);if(r===0)return n.Nothing;let s=t?.collection?.at;if(!s)return;let o=hl(e.slice(1).map(u=>Ki(u,r))),a=[];for(let u=1;u<=r;u++)if(!o.includes(u)){let l=s(e[0],u);l&&a.push(l)}return n.function("List",a)}},First:{complexity:8200,signature:"(value: collection|string) -> any",evaluate:([e],{engine:n})=>Eo(e,1)??n.Nothing},Second:{complexity:8200,signature:"(value: collection|string) -> any",evaluate:([e],{engine:n})=>Eo(e,2)??n.Nothing},Last:{complexity:8200,signature:"(value: collection|string) -> any",evaluate:([e],{engine:n})=>Eo(e,-1)??n.Nothing},Rest:{complexity:8200,signature:"(value: collection|string) -> list",evaluate:e=>zt(e[0],[[2,-1,1]])},Slice:{description:["Return a range of elements from a collection or a string.","If the index is negative, it is counted from the end."],complexity:8200,signature:"(value: collection|string, start: number, end: number) -> list|string",type:e=>e[0].type.matches("string")?"string":k(`list<${ei(e[0].type.type)}>`),evaluate:(e,{engine:n})=>{if(e.length<3)return;let i=e[0].string;if(i!==null){let[o,a]=e.slice(1).map(u=>Ki(u,i.length));return n.string(ml(i,[o,a]))}let t=et(e[0]),[r,s]=e.slice(1).map(o=>Ki(o,t));return zt(e[0],[r,s])}},Most:{complexity:8200,signature:"(value: collection|string) -> list",evaluate:e=>zt(e[0],[[1,-2,1]])},Reverse:{complexity:8200,signature:"(value: collection|string) -> collection",type:e=>e[0].type,evaluate:([e])=>zt(e,[[-1,2,1]])},Ordering:{complexity:8200,lazy:!0,signature:"(value: collection, f: function?) -> list<integer>",evaluate:e=>{}},Sort:{complexity:8200,lazy:!0,signature:"(value: collection, f: function?) -> collection",type:e=>e[0].type,evaluate:e=>{}},Shuffle:{complexity:8200,signature:"(value: collection) -> collection",type:e=>e[0].type,evaluate:e=>{}},Map:{complexity:8200,lazy:!0,signature:"(collection, function) -> collection",evaluate:(e,{engine:n})=>{let[i,t]=dd(e);if(!t)return;let r=[];for(let a of i)r.push(t([a])??n.Nothing);let s=e[0].operator,o={List:"List",Set:"Set",Range:"List",Linspace:"List",Single:"List",Pair:"List",Triple:"List",Tuple:"List",String:"String"}[s]??"List";return n.function(o,r)}},Filter:{complexity:8200,lazy:!0,signature:"(collection, function) -> collection",type:e=>e[0].type,evaluate:(e,{engine:n})=>{let i=ze(e[1]);if(!i)return;let t=e[0];if(t.string)return n.string(t.string.split("").map(a=>i([n.string(a)])?.symbol==="True"?a:"").join(""));if(!ie(e[0])||!e[1])return;let r=[];for(let a of ee(t))i([a])?.symbol==="True"&&r.push(a);let s=t.operator,o={List:"List",Set:"Set",Range:"List",Linspace:"List",Single:"List",Pair:"List",Triple:"List",Tuple:"List"}[s]??"List";return n.function(o,r)}},Reduce:{complexity:8200,lazy:!0,signature:"(collection, function, initial:value) -> collection",evaluate:e=>{}},Tabulate:{complexity:8200,lazy:!0,signature:"(function, integer, integer?) -> collection",evaluate:(e,{engine:n})=>{let i=ze(e[0]);if(!i)return;if(e.length===1)return n._fn("List",[]);let t=e.slice(1).map(s=>G(s));if(t.some(s=>s===null||s<=0))return;if(t.length===1)return n._fn("List",Array.from({length:t[0]??0},(s,o)=>i([n.number(o+1)])??n.Nothing));let r=(s,o,a=0)=>{if(a===s.length){let l=o.map(f=>n.number(f));return i(l)}let u=["List"];for(let l=1;l<=s[a];l++)o[a]=l,u.push(r(s,o,a+1));return u};return n.box(r(t,Array(t.length).fill(0)))}},Tally:{complexity:8200,signature:"(collection) -> tuple<list, list<integer>>",type:e=>k(`tuple<list<${ei(e[0].type.type)}>, list<integer>>`),evaluate:(e,{engine:n})=>{if(!ri(e[0]))return;let[i,t]=gl(e[0]);return n.tuple(n.function("List",i),n.function("List",t))}},Unique:{complexity:8200,signature:"(collection) -> list",type:e=>k(`list<${ei(e[0].type.type)}>`),evaluate:(e,{engine:n})=>{if(!ri(e[0]))return;let[i,t]=gl(e[0]);return n.function("List",i)}},Zip:{complexity:8200,signature:"(collection, ...collection) -> list",evaluate:e=>{}},RotateLeft:{complexity:8200,signature:"(collection, integer?) -> collection",evaluate:e=>{}},RotateRight:{complexity:8200,signature:"(collection, integer?) -> collection",evaluate:e=>{}},Join:{description:["Join the elements of a sequence of collections or scalar values.","If all collections are `Set`, return a `Set`.","If all collections are `Map`, return a `Map`."],complexity:8200,signature:"(...any) -> collection",type:xl,evaluate:(e,{engine:n})=>{let i=xl(e);if(v(i,"map")){let t={};for(let r of e)if(t=vl(t,r),!t)return;return n._fn("Dictionary",Object.entries(t).map(([r,s])=>n._fn("Tuple",[n.string(r),s])))}if(v(i,"set")){let t=[];for(let r of e)if(t=Tl(t,r),!t)return;return n.function("Set",t)}if(v(i,"list")){let t=[];for(let r of e)if(t=Sl(t,r),!t)return;return n.function("List",t)}}},Iterate:{complexity:8200,signature:"(function, initial: any?) -> list",evaluate:e=>{}},Repeat:{complexity:8200,signature:"(value: any) -> list",type:e=>k(`collection<${e[0].type}>`),evaluate:e=>{}},Cycle:{complexity:8200,signature:"(list) -> list",type:e=>k(`list<${e[0].type}>`),evaluate:e=>{}},Fill:{complexity:8200,signature:"(function, tuple) -> list",evaluate:e=>{}}};function Je(e){if(e.nops===0)return[1,0,0];let n=Math.round(e.op1.re);if(isFinite(n)||(n=1),e.nops===1)return[1,n,1];let i=Math.round(e.op2.re);if(isFinite(i)||(i=1),e.nops===2)return[n,i,i>n?1:-1];let t=Math.abs(Math.round(e.op3.re));return isFinite(t)||(t=1),[n,i,n<i?t:-t]}function El(e){let[n,i,t]=e;return Number.isFinite(i)?t>0?i-(i-n)%t:i+(n-i)%t:t>0?1/0:-1/0}function Ki(e,n){if(!e)return[0,0,0];let i=e.re;if(isFinite(i)){if(i=Math.round(i),i<0){if(n===void 0)return[0,0,0];i=n+i+1}return[i,i,1]}let t=e.operator;if(!t||typeof t!="string"||!/^(Single|Pair|Triple|Tuple|)$/.test(t))return[0,0,0];let[r,s,o]=Je(e);return(r<0||s<0)&&n===void 0?[0,0,0]:(r<0&&(r=n+r+1),s<0&&(s=n+s+1),o=Math.abs(Math.round(o)),o===0?[0,0,0]:(r>s&&(o=-o),[r,s,o]))}function zt(e,n){let i=e.engine,r=e.baseDefinition?.collection?.at;if(!r)return i.Nothing;let s=[];for(let o of n){let[a,u,l]=o;if(l!==0)if(l<0)for(let f=a;f>=u;f+=l){let c=r(e,f);c&&s.push(c)}else for(let f=a;f<=u;f+=l){let c=r(e,f);c&&s.push(c)}}return i.function("List",s)}function ml(e,n){let i="";for(let t of n){let[r,s,o]=t;if(o===1)i+=e.slice(r-1,s);else if(o<0)for(let a=r;a>=s;a+=o)i+=e[a-1];else for(let a=r;a<=s;a+=o)i+=e[a-1]}return i}function hl(e){let n=[];for(let i of e){let[t,r,s]=i;if(s!==0)if(s<0)for(let o=t;o>=r;o+=s)n.push(o);else for(let o=t;o<=r;o+=s)n.push(o)}return n}function cd(e,{engine:n}){let i=e[0];if(e.length===1&&i.operator==="Matrix"){let[t,r,s]=i.ops;if(!r||r.string==="..")return s?n._fn("Matrix",[t,n.string("[]"),s]):n._fn("Matrix",[t,r])}return e=e.map(t=>t.operator==="Delimiter"?t.op1.operator==="Sequence"?n._fn("List",Fe(n,t.op1.ops)):n._fn("List",[t.op1?.canonical??n.Nothing]):t.canonical),n._fn("List",e)}function pd(e,{engine:n}){let i=[],t=r=>i.some(s=>s.isSame(r));for(let r of e)t(r)||i.push(r);return n._fn("Set",i)}function dd(e){if(e.length!==2)return[[],void 0];let n=ze(e[1]);return n?e[0].string?[[e[0]],i=>{let t=i[0].string;if(t===null)return;let r=i[0].engine;return r.string(t.split("").map(s=>n([r.string(s)])?.string??"").join(""))}]:!ie(e[0])||!e[1]?[[],void 0]:[ee(e[0]),n]:[[],void 0]}function gl(e){let n=[],i=[],t=r=>{for(let s=0;s<n.length;s++)if(n[s].isSame(r))return s;return-1};for(let r of ee(e)){let s=t(r);s>=0?i[s]++:(n.push(r),i.push(1))}return[n,i]}function*Nl(e,n,i){let t=i,r=0;for(let s of ee(e)){let o=n(t,s);if(o===null)return;r+=1,r%1e3===0&&(yield t),t=o}return t}function xl(e){return e.some(n=>n.type.matches("map"))?"map":e.some(n=>n.type.matches("set"))?"set":"list"}function vl(e,n){if(n.operator==="KeyValuePair"){let i=n.op1.string;return i?(e[i]=n.op2,e):void 0}if(n.operator==="Tuple"){let[i,t]=n.ops;return i.string?(e[i.string]=t,e):void 0}if(n.operator==="List"||n.operator==="Set"||n.operator==="Dictionary"){for(let i of n.ops){let t=vl(e,i);if(!t)return;e=t}return e}}function Tl(e,n){if(n.operator==="Set"||n.operator==="List"){for(let t of n.ops)if(e=Tl(e,t),!e)return}return(t=>e.some(r=>r.isSame(t)))(n)||e.push(n),e}function Sl(e,n){if(n.operator==="List"||n.operator==="Set"){for(let i of n.ops)if(e=Sl(e,i),!e)return}return e.push(n),e}function md(e,n,i){if(e.string&&n.string)return i&&e.string===n.string?!1:e.string?.includes(n.string??"")??!1;if(!e.isCollection||!n.isCollection)return!1;for(let t of ee(e))if(!n.contains(t))return!1;if(i){let t=e.size,r=n.size;if(t===r||t===void 0||r===void 0)return!1}return!0}function yo(){return{size:e=>e.nops,contains:(e,n)=>e.ops.some(i=>i.isSame(n)),iterator:(e,n,i)=>{let t=(n??1)-1;return i=Math.min(i??e.nops,e.nops),{next:()=>i<=0?{value:void 0,done:!0}:(i--,{value:e.ops[t++],done:!1})}},at:(e,n)=>{if(typeof n=="number"&&!(n<1||n>e.nops))return e.ops[n-1]},keys:e=>[],indexOf:(e,n,i)=>{if(i??(i=1),i<0){if(i<-e.nops)return;i=e.nops+i+1;for(let t=i;t>=1;t--)if(e.ops[t-1].isSame(n))return t;return}for(let t=i;t<=e.nops;t++)if(e.ops[t-1].isSame(n))return t},subsetOf:md,eltsgn:e=>{},elttype:e=>e.nops===0?"unknown":e.nops===1?e.ops[0].type.type:ke(...e.ops.map(n=>n.type.type))}}function bo(e){let n={},i=1;for(let t of e){if(t.operator==="KeyValuePair"||t.operator==="Tuple"||t.operator==="Pair"){let[r,s]=t.ops;if(r.symbol==="Nothing")continue;n[r?.string??r?.toString()??i.toString()]=s??t.engine.Nothing}else n[i.toString()]=t;i+=1}return n}function et(e){if(e.operator==="List"||e.operator==="Set")return e.nops;let n=e.baseDefinition;if(n?.collection?.size)return n.collection.size(e);let i=e.string;return i!==null?i.length:0}function Eo(e,n){let i=e.baseDefinition;if(i?.collection?.at)return i.collection.at(e,n)}function yl(e,n){return e.operator!==n.operator||e.nops!==n.nops?!1:e.ops.every((i,t)=>i.isSame(n.ops[t]))}function No(e,n){return Array.from({length:n-e+1},(i,t)=>e+t)}function vo(e,n){if(n.string&&n.string[0]==="{"&&n.string[n.string.length-1]==="}"){let i;try{i=Oi.parse(n.string)}catch{return e._fn("Dictionary",[])}return typeof i!="object"?e._fn("Dictionary",[]):e._fn("Dictionary",Object.entries(i).map(([t,r])=>e._fn("Tuple",[e.string(t),e.box(r)])))}if(n.operator==="Tuple"||n.operator==="Pair"||n.operator==="KeyValuePair"){let[i,t]=n.ops,r;if(i.string)r=i.string;else if(i.symbol)r=i.symbol;else return e._fn("Dictionary",[]);return e._fn("Dictionary",[e._fn("Tuple",[e.string(r),t.canonical])])}if(n.operator==="Dictionary"){let i={};for(let t of n.ops)if(t.operator==="KeyValuePair"||t.operator==="Pair"||t.operator==="Tuple"){let[r,s]=t.ops,o;if(r.string)o=r.string;else if(r.symbol)o=r.symbol;else return e._fn("Dictionary",[]);i[o]=s.canonical}return e._fn("Dictionary",Object.entries(i).map(([t,r])=>e._fn("Tuple",[e.string(t),r])))}return e._fn("Dictionary",[])}function nt(e){e?.operator;let n=1,i=n+Et,t,r=!0;return t=e.op1.symbol,n=Math.floor(e.op2.re),isNaN(n)&&(n=1),Number.isFinite(n)||(r=!1),e.op3.symbol==="Nothing"||e.op3.isInfinity?r=!1:(isNaN(e.op3.re)||(i=Math.floor(e.op3.re??i)),Number.isFinite(i)||(r=!1)),!r&&Number.isFinite(n)&&(i=n+Et),{index:t,lower:n,upper:i,isFinite:r}}function hd(e){return e.map(n=>nt(n))}function gd(e){e.length>0;let{index:n,lower:i,upper:t,isFinite:r}=e[0];r||(t=i+Et);let s=No(i,t).map(o=>[o]);if(e.length===1)return s;for(let o=1;o<e.length;o++){let{index:a,lower:u,upper:l,isFinite:f}=e[o];f||(l=u+Et),s=xd(s.map(c=>c[0]),No(u,l))}return s}function xd(e,n){return e.flatMap(i=>n.map(t=>[i,t]))}function yd(e){let n=e.engine,i,t=null,r=null;if(e.operator==="Tuple"||e.operator==="Triple"||e.operator==="Pair"||e.operator==="Single"?(i=e.op1,r=e.ops[1]?.canonical??null,t=e.ops[2]?.canonical??null):i=e,i.operator==="Hold"&&(i=i.op1),!!i.symbol)return i.symbol&&i.symbol!=="Nothing"&&n.declare(i.symbol,"integer"),t&&r?n.tuple(i,r,t):t?n.tuple(i,n.One,t):r?n.tuple(i,r):n.tuple(i)}function To(e,n,i){let t=n.engine;t.pushScope(),n??(n=t.error("missing"));let r=i.map(o=>yd(o)).filter(o=>o!==void 0),s=t._fn(e,[n.canonical,...r]);return t.popScope(),s}function*Gt(e,n,i,t){if(e.isCollection)return yield*Nl(e.evaluate(),i,t);if(n.length===0)return i(t,e)??void 0;let r=e.engine,s=r.swapScope(e.scope),o=hd(n),a=gd(o),u=t,l=0;for(let f of a)if(o.forEach((c,p)=>r.assign(c.index,f[p])),u=i(u,e)??void 0,l+=1,l%1e3===0&&(yield u),u===void 0)break;for(let f of o)r.assign(f.index,void 0);return r.swapScope(s),u??void 0}function So(e){if(e!==void 0)return isNaN(e)?"unsigned":e>0?"positive":e<0?"negative":"zero"}function _o(e){return e==="positive"?"negative":e==="non-negative"?"non-positive":e==="negative"?"positive":e==="non-positive"?"non-negative":e}function it(e){if(e.isGreater(1))return"positive";if(e.isGreaterEqual(1))return"non-negative";if(e.isLessEqual(1)&&e.isGreaterEqual(0))return"non-positive";if(e.isLess(1)&&e.isGreaterEqual(0))return"negative";if(e.is(1))return"zero";if(e.isNegative||e.isReal===!1)return"unsigned"}var Il=[{Abs:{wikidata:"Q3317982",threadable:!0,idempotent:!0,complexity:1200,signature:"number -> number",type:([e])=>e.type,sgn:([e])=>e.is(0)?"zero":e.isNumberLiteral?"positive":"non-negative",evaluate:([e])=>bd(e)},Add:{wikidata:"Q32043",associative:!0,commutative:!0,commutativeOrder:At,threadable:!0,idempotent:!0,complexity:1300,lazy:!0,signature:"(number, ...number) -> number",type:cl,sgn:e=>{if(e.some(n=>n.isNaN))return"nan";if(e.some(n=>n.isReal===!1))return"unsigned";if(e.every(n=>n.is(0)))return"zero";if(e.every(n=>n.isNonNegative))return e.some(n=>n.isPositive)?"positive":"non-negative";if(e.every(n=>n.isNonPositive))return e.some(n=>n.isNegative)?"negative":"non-positive";if(e.every(n=>n.isReal))return"real"},evaluate:(e,{numericApproximation:n})=>n?pl(...e):H(...e.map(i=>i.evaluate()))},Ceil:{description:"Rounds a number up to the next largest integer",complexity:1250,threadable:!0,signature:"real -> integer",sgn:([e])=>{if(e.isLessEqual(-1))return"negative";if(e.isPositive)return"positive";if(e.isNonNegative)return"non-negative";if(e.isNonPositive&&e.isGreater(-1))return"zero";if(e.isNonPositive)return"non-positive";if(e.isReal==!1&&e.isNumberLiteral)return e.im>0||e.im<=-1?"unsigned":So(e.re)},evaluate:([e])=>Q(e,Math.ceil,n=>n.ceil(),n=>n.ceil(0))},Chop:{associative:!0,threadable:!0,idempotent:!0,complexity:1200,signature:"number -> number",type:([e])=>e.type,evaluate:e=>{let n=e[0],i=n.engine;return Q(n,t=>i.chop(t),t=>i.chop(t),t=>i.complex(i.chop(t.re),i.chop(t.im)))}},Divide:{wikidata:"Q1226939",complexity:2500,threadable:!0,signature:"(number, ...number) -> number",type:([e,n])=>n.is(1)?e.type:n.isNaN||e.isNaN?"number":n.isFinite===!1||e.isFinite===!1?"non_finite_number":n.isInteger&&e.isInteger?"finite_rational":n.isReal&&e.isReal?"finite_real":"finite_number",sgn:e=>{let[n,i]=[e[0],e[1]];if(i.is(0))return"unsigned";if(i.is(0)===!1&&n.is(0))return"zero";if(i.isPositive)return n.sgn;if(i.isNegative)return _o(n.sgn);if(n.is(0)||n.isFinite&&i.isInfinity)return"zero";if(!n.is(0)&&!i.is(0))return"not-zero"},canonical:(e,{engine:n})=>{let i=n;e=Me(i,e);let t=e[0];if(t===void 0)return i.error("missing");if(e.length<2)return t;let r=e.slice(1);for(let s of r)t=He(t,s);return t},evaluate:([e,n])=>e.div(n)},Exp:{wikidata:"Q168698",threadable:!0,complexity:3500,signature:"number -> number",canonical:(e,{engine:n})=>(e=Me(n,e,1),n.function("Power",[n.E,...e]))},Factorial:{description:"Factorial function: the product of all positive integers less than or equal to n",wikidata:"Q120976",threadable:!0,complexity:9e3,signature:"integer -> integer",sgn:([e])=>e.isNonNegative?"positive":e.isNegative||e.isReal===!1?"unsigned":void 0,canonical:(e,{engine:n})=>{let i=e[0];return i.isNumberLiteral&&i.isNegative?n._fn("Factorial",[i.neg()]).neg():n._fn("Factorial",[i])},evaluate:([e])=>{let n=e.engine;if(e.im!==0&&e.im!==void 0)return n.number(n.complex(e.re,e.im).add(1));if(e.isFinite){if(e.isNegative)return n.number(ci(1+e.re));try{return n.number(Ri(_r(BigInt((e.bignumRe??e.re).toFixed())),n._timeRemaining))}catch{return}}},evaluateAsync:async([e],{signal:n})=>{let i=e.engine;if(e.im!==0&&e.im!==void 0)return i.number(i.complex(e.re,e.im).add(1));if(e.isFinite){if(e.isNegative)return i.number(ci(1+e.re));try{return i.number(await Ai(_r(BigInt((e.bignumRe??e.re).toFixed())),(i._deadline??1/0)-Date.now(),n))}catch{return}}}},Factorial2:{description:"Double Factorial Function",complexity:9e3,threadable:!0,signature:"integer -> integer",sgn:([e])=>e.isNonNegative?"positive":e.isNegative||e.isReal===!1?"unsigned":void 0,evaluate:e=>{let n=e[0],i=G(n);if(i===null)return;let t=n.engine;return oe(t)?t.number(hu(t,t.bignum(i))):t.number(Ya(i))}},Floor:{wikidata:"Q56860783",complexity:1250,threadable:!0,signature:"number -> integer",sgn:([e])=>{if(e.isNegative)return"negative";if(e.isGreaterEqual(1))return"positive";if(e.isNonNegative&&e.isLess(1))return"zero";if(e.isNonNegative)return"non-negative";if(e.isReal==!1&&e.isNumberLiteral)return e.im<0||e.im>=1?"unsigned":So(e.re)},evaluate:([e])=>Q(e,Math.floor,n=>n.floor(),n=>n.floor(0))},Gamma:{wikidata:"Q190573",complexity:8e3,threadable:!0,signature:"number -> number",sgn:([e])=>e.isPositive?"positive":e.is(0)?"zero":void 0,evaluate:([e],{numericApproximation:n,engine:i})=>n?Q(e,t=>ci(t),t=>Ys(i,t),t=>t):void 0},GammaLn:{complexity:8e3,threadable:!0,signature:"number -> number",evaluate:(e,{numericApproximation:n,engine:i})=>n?Q(e[0],t=>Mt(t),t=>Js(i,t),t=>t):void 0},Ln:{description:"Natural Logarithm",wikidata:"Q204037",complexity:4e3,threadable:!0,signature:"(number, base: number?) -> number",sgn:([e])=>it(e),evaluate:([e],{numericApproximation:n,engine:i})=>n?Q(e,t=>t===0?-1/0:t>=0?Math.log(t):i.complex(t).log(),t=>t.isZero()?-1/0:t.isNeg()?i.complex(t.toNumber()).log():t.ln(),t=>t.isZero()?NaN:t.log()):e.ln()},Log:{description:"Log(z, b = 10) = Logarithm of base b",wikidata:"Q11197",complexity:4100,threadable:!0,signature:"(number, base: number?) -> number",sgn:([e,n])=>{if(!n)return it(e);if(n.is(1)||n.isReal==!1)return"unsigned";if(n.isGreater(1))return it(e);if(n.isLess(1))return _o(it(e))},evaluate:(e,{numericApproximation:n,engine:i})=>{if(!n)return e[0]?.ln(e[1]??10)??void 0;let t=i;return e[1]===void 0?Q(e[0],r=>r===0?-1/0:r>=0?Math.log10(r):t.complex(r).log().div(Math.LN10),r=>r.isZero()?-1/0:r.isNeg()?t.complex(r.toNumber()).log().div(Math.LN10):M.log10(r),r=>r.isZero()?NaN:r.log().div(Math.LN10)):gn(e[0],e[1],(r,s)=>Math.log(r)/Math.log(s),(r,s)=>r.log(s),(r,s)=>r.log().div(typeof s=="number"?Math.log(s):s.log()))}},Lb:{description:"Base-2 Logarithm",wikidata:"Q581168",complexity:4100,threadable:!0,signature:"(number, base: number?) -> number",sgn:([e])=>it(e),canonical:([e],{engine:n})=>n._fn("Log",[e,n.number(2)])},Lg:{description:"Base-10 Logarithm",wikidata:"Q966582",complexity:4100,threadable:!0,signature:"number -> number",sgn:([e])=>it(e),canonical:([e],{engine:n})=>n._fn("Log",[e])},Mod:{description:"Modulo",wikidata:"Q1799665",complexity:2500,threadable:!0,signature:"(number, number) -> number",sgn:e=>{let n=e[1];if(!(n===void 0||n.isReal==!1)){if(n.is(0))return"unsigned";if(e[0].isNumberLiteral&&n.isNumberLiteral)return gn(e[0],n,(t,r)=>(t%r+r)%r,(t,r)=>t.modulo(r))?.sgn??void 0}},evaluate:([e,n])=>gn(e,n,(i,t)=>(i%t+t)%t,(i,t)=>i.modulo(t))},Multiply:{wikidata:"Q40276",associative:!0,commutative:!0,idempotent:!0,complexity:2100,threadable:!0,lazy:!0,signature:"(number, ...number) -> number",type:e=>e.length===0?"finite_integer":e.length===1?e[0].type:e.some(n=>n.isNaN)?"number":e.some(n=>n.isFinite===!1)?"non_finite_number":e.every(n=>n.isInteger)?"finite_integer":e.every(n=>n.isReal)?"finite_real":e.every(n=>n.isRational)?"finite_rational":"finite_number",sgn:e=>{if(!e.some(n=>n.sgn===void 0||n.isReal===!1)){if(e.some(n=>n.is(0)))return e.every(n=>n.isFinite)?"zero":e.some(n=>n.isFinite===!1)?"unsigned":void 0;if(!(e.some(n=>n.isFinite===!1||n.isFinite===void 0)&&e.some(n=>n.is(0)===void 0))){if(e.every(n=>n.isPositive||n.isNegative)){let n=0;return e.forEach(i=>{i.isNegative&&n++}),n%2===0?"positive":"negative"}if(e.every(n=>n.isNonPositive||n.isNonNegative)){let n=0;return e.forEach(i=>{i.isNonPositive&&n++}),n%2===0?"non-positive":"non-negative"}if(e.every(n=>!n.is(0)))return"not-zero";if(e.every(n=>n.isReal))return"real"}}},evaluate:(e,{numericApproximation:n})=>n?ul(...e):ae(...e.map(i=>i.evaluate()))},Negate:{description:"Additive Inverse",wikidata:"Q715358",complexity:2e3,threadable:!0,signature:"number -> number",type:([e])=>e.type,sgn:([e])=>_o(e.sgn),canonical:(e,{engine:n})=>(e=Me(n,e),e.length===0?n.error("missing"):e[0].neg()),evaluate:([e])=>e.neg()},PlusMinus:{description:"Plus or Minus",wikidata:"Q120812",complexity:1200,signature:"(value, value) -> tuple",canonical:(e,{engine:n})=>(e=Me(n,e,2),e.length===0?n.error("missing"):n._fn("PlusMinus",[e[0],e[1].abs()])),type:([e,n])=>k(`tuple<${e.type}, ${n.type}>`),evaluate:([e,n],{engine:i})=>i.tuple(e.add(n.neg()),e.add(n))},Power:{wikidata:"Q33456",threadable:!0,complexity:3500,signature:"(number, number) -> number",type:([e,n])=>e.isNaN||n.isNaN?"number":n.isFinite?e.isInteger&&n.isInteger?"finite_integer":e.isRational&&n.isInteger?"finite_rational":e.isReal&&n.isReal?"finite_real":"finite_number":"non_finite_number",canonical:(e,{engine:n})=>{if(e=Me(n,e,2),e.length!==2)return n._fn("Power",e);let[i,t]=e;return zi(i,t)},sgn:([e,n])=>{let i=e.sgn,t=n.sgn;if(!(e.isReal===!1||n.isReal===!1||e.isNaN||n.isNaN||i===void 0||t===void 0)){if(e.is(0))return n.isNonPositive?"unsigned":n.isPositive?"zero":void 0;if(e.is(0)&&n.is(0))return"unsigned";if(e.isNonNegative||n.numerator.isOdd&&n.denominator.isOdd)return e.sgn;if(n.numerator.isEven&&n.denominator.isOdd)return e.isReal?e.is(0)?"non-negative":"positive":e.type.is("imaginary")?"negative":e.is(0)?void 0:"not-zero";if(n.isRational===!1||n.numerator.isOdd&&n.denominator.isEven&&e.isNonPositive)return"unsigned"}},evaluate:([e,n],{numericApproximation:i})=>me(e,n,{numericApproximation:i??!1})},Rational:{complexity:2400,signature:"(number, integer?) -> rational",sgn:([e])=>e.sgn,canonical:(e,{engine:n})=>{let i=n;return e=J(e),e.length===0?i._fn("Rational",[i.error("missing")]):e.length===1?i._fn("Rational",[In(i,e[0],"real")]):(e=Sr(i,e,["integer","integer"]),e.length!==2||!e[0].isValid||!e[1].isValid?i._fn("Rational",e):e[0].div(e[1]))},evaluate:(e,{numericApproximation:n,engine:i})=>{let t=i;if(e.length===1){let o=e[0].N();return o.numericValue===null||o.im!==0?void 0:t.number(ou(o.re))}if(n)return gn(e[0],e[1],(o,a)=>o/a,(o,a)=>o.div(a),(o,a)=>o.div(a));let[r,s]=[G(e[0]),G(e[1])];if(r!==null&&s!==null)return t.number([r,s])}},Root:{complexity:3200,threadable:!0,signature:"(number, number) -> number",type:([e,n])=>e.isNaN||n.isNaN?"number":e.isFinite===!1||n.isFinite===!1?"non_finite_number":n.is(0)?"finite_integer":n.is(1)?e.type:e.isReal&&n.isReal&&e.isPositive===!0?"finite_real":"finite_number",sgn:([e,n])=>{if(e.isReal===!1||n.isReal===!1)return"unsigned";if(e.is(0))return n.is(0)?"unsigned":"zero";if(e.isPositive===!0)return"positive";if(n.isOdd===!0)return"negative";if(n.isEven===!0)return"unsigned"},canonical:(e,{engine:n})=>{e=Me(n,e,2);let[i,t]=e;return li(i,t)},evaluate:([e,n],{numericApproximation:i})=>Rr(e,n,{numericApproximation:i})},Round:{complexity:1250,threadable:!0,signature:"number -> integer",type:([e])=>e.isNaN?"number":e.isFinite===!1||e.isReal===!1?"non_finite_number":"finite_integer",sgn:([e])=>{if(e.isNaN)return"unsigned";if(e.isNumberLiteral)return e.im>=.5||e.im<=-.5?"unsigned":So(Math.round(e.re));if(e.isGreaterEqual(.5))return"positive";if(e.isLessEqual(-.5))return"negative";if(e.isLess(.5)&&e.isGreater(-.5))return"zero";if(e.isNonNegative)return"non-negative";if(e.isNonPositive)return"non-positive";if(e.isReal)return"real"},evaluate:([e])=>Q(e,Math.round,n=>n.round(),n=>n.round(0))},Sign:{complexity:1200,threadable:!0,signature:"number -> integer",sgn:([e])=>e.sgn,evaluate:([e],{engine:n})=>{if(e.is(0))return n.Zero;if(e.isPositive)return n.One;if(e.isNegative)return n.NegativeOne}},Sqrt:{description:"Square Root",wikidata:"Q134237",complexity:3e3,threadable:!0,signature:"number -> number",type:([e])=>e.isNaN?"number":e.isFinite===!1?"non_finite_number":e.isReal?"finite_real":"finite_number",sgn:([e])=>{if(e.isPositive)return"positive";if(e.isNegative)return"unsigned";if(e.isNonNegative)return"non-negative";if(!e.is(0))return"not-zero"},evaluate:([e],{numericApproximation:n,engine:i})=>{if(!n)return e.sqrt();let[t,r]=e.toNumericValue();return r.is(1)?i.number(t.sqrt().N()):i.number(t.sqrt().N()).mul(r)}},Square:{wikidata:"Q3075175",complexity:3100,threadable:!0,signature:"number -> number",sgn:([e])=>{if(e.is(0))return"zero";if(e.isReal)return e.is(0)?"non-negative":"positive";if(e.type.matches("complex"))return"negative";if(e.isReal===!1||e.isNaN)return"unsigned"},canonical:(e,{engine:n})=>{let i=n;return e=J(e),e.length!==1?i._fn("Square",e):i._fn("Power",[e[0],i.number(2)]).canonical}},Subtract:{wikidata:"Q40754",complexity:1350,threadable:!0,signature:"(number, ...number) -> number",canonical:(e,{engine:n})=>{if(e=Me(n,e),e.length===0)return n.error("missing");let i=e[0],t=e.slice(1);return Ve(n,[i,...t.map(r=>r.neg())])}}},{ImaginaryUnit:{type:"imaginary",constant:!0,holdUntil:"never",wikidata:"Q193796",value:e=>e.I},i:{type:"imaginary",constant:!0,holdUntil:"never",value:e=>e.I},ExponentialE:{type:"finite_real",wikidata:"Q82435",constant:!0,holdUntil:"N",value:e=>e.number(oe(e)?e._BIGNUM_ONE.exp():Math.exp(1))},e:{type:"finite_real",constant:!0,holdUntil:"never",value:"ExponentialE"},ComplexInfinity:{type:"complex",constant:!0,holdUntil:"never",value:e=>e.ComplexInfinity},PositiveInfinity:{type:"non_finite_number",constant:!0,holdUntil:"never",value:1/0},NegativeInfinity:{type:"non_finite_number",constant:!0,holdUntil:"never",value:-1/0},NaN:{type:"number",constant:!0,holdUntil:"never",value:e=>e.NaN},MachineEpsilon:{type:"finite_real",holdUntil:"N",constant:!0,value:{num:Number.EPSILON.toString()}},Half:{type:"finite_rational",constant:!0,holdUntil:"never",value:["Rational",1,2]},GoldenRatio:{type:"finite_real",wikidata:"Q41690",constant:!0,holdUntil:"N",value:["Divide",["Add",1,["Sqrt",5]],2]},CatalanConstant:{type:"finite_real",wikidata:"Q855282",constant:!0,holdUntil:"N",value:{num:`0.91596559417721901505460351493238411077414937428167
|
|
10
|
+
`)}peek(){return this.buffer[this.pos]}consume(){return this.buffer[this.pos++]}match(e){if(e.length===1&&this.buffer[this.pos]===e)return this.pos++,!0;let t=this.pos;return this.buffer.slice(t,t+e.length)===e?(this.pos+=e.length,!0):!1}expectClosingBracket(){this.skipWhitespace(),this.match(">")||this.error('Expected ">".')}skipWhitespace(){for(;this.pos<this.buffer.length&&/\s/.test(this.buffer[this.pos]);)this.pos++}isEOF(){return this.pos>=this.buffer.length}parseValue(){let e=this.pos;this.skipWhitespace();let t=this._valueParser(this);return t!==null?{kind:"value",value:t}:(this.pos=e,null)}parseTypeReference(){let e=this.pos;this.skipWhitespace();let t=this.match("type");this.skipWhitespace();let i=this.parseIdentifier();if(i!==null){let r=this._typeResolver.resolve(i);if(r)return r;if(t){let o=this._typeResolver.forward(i);if(o)return o}}return this.pos=e,null}parsePrimitiveType(){this.skipWhitespace(),this.isEOF()&&this.error("Unexpected end of input");for(let e of Et)if(this.match(e))return e;return null}parseArguments(){let e=[],t=[],i,r,o=this.pos;for(;;){let a=this.parseNamedElement();if(a===null){if(this.skipWhitespace(),this.peek()===")")break;this.pos=o,this.skipWhitespace(),this.match(",")&&this.error('Expected a valid argument after ","');break}if(this.match("?")?(i!==void 0&&this.error("Optional arguments cannot be used with variadic arguments"),t.push(a)):this.match("*")?(t.length>0&&this.error("Variadic arguments cannot be used with optional arguments"),i!==void 0&&this.error("There can be only one variadic argument"),i=0,r=a):this.match("+")?(t.length>0&&this.error("Variadic arguments cannot be used with optional arguments"),i!==void 0&&this.error("There can be only one variadic argument"),i=1,r=a):(t.length>0&&this.error("Optional arguments must come after required arguments"),i!==void 0&&this.error("Variadic arguments must come last"),e.push(a)),this.skipWhitespace(),o=this.pos,!this.match(","))break}let s=Gd([...e,...t,...r?[r]:[]]);return s&&this.error(`Duplicate argument name "${s}"`),[e,t,r,i]}parseFunctionSignature(){let e=[],t=[],i,r;this.skipWhitespace();let o=this.pos;if(this.match("()")||this.match("(")&&([e,t,i,r]=this.parseArguments(),this.skipWhitespace(),this.match(")")||this.error("Expected a closing parenthesis `)` after arguments.")),this.skipWhitespace(),!this.match("->"))return this.pos=o,null;this.skipWhitespace(),this.isEOF()&&this.error("Expected a return type after `->`.","Use `any` for any type or `nothing` for no return value, or `never` for a function that never returns");let s=this.parseType();return s===null&&this.error("Expected a return type after `->`.","Use `any` for any type or `nothing` for no return value, or `never` for a function that never returns",this.parseUnexpectedToken()),e.length===0&&(e=void 0),t.length===0&&(t=void 0),!t&&!i?{kind:"signature",args:e,result:s}:!t&&i?{kind:"signature",args:e,variadicArg:i,variadicMin:r,result:s}:{kind:"signature",args:e,optArgs:t,variadicArg:i,variadicMin:r,result:s}}parsePositiveIntegerLiteral(){let e=0;for(this.skipWhitespace();/[0-9]/.test(this.peek());)e=e*10+parseInt(this.consume());return e===0?null:e}parseOptionalDimension(){let e=this.parsePositiveIntegerLiteral();return e===null&&this.match("?")&&(e=-1),e}parseDimensions(){let e=this.pos,t=this.match("("),i=[],r=this.parseOptionalDimension();if(r===null){this.pos=e;return}do{if(i.push(r),this.skipWhitespace(),!this.match("x"))break;this.skipWhitespace(),r=this.parseOptionalDimension(),r===null&&this.error("Expected a positive integer literal or `?`.","For example : `matrix<integer^2x3>` or `matrix<integer^?x?>`")}while(!0);return this.skipWhitespace(),t&&!this.match(")")&&this.error('Expected ")".',"For example `matrix<integer^(2x3)>`"),i}parseList(){if(this.skipWhitespace(),this.match("list<")){let i=this.parseDimensions();if(i!==void 0)return this.expectClosingBracket(),{kind:"list",elements:"any",dimensions:i};let r=this.parseTypeMaybe();return r&&this.match("^")&&(i=this.parseDimensions(),i===void 0&&this.error("Expected dimensions after `^`.","For example `list<number^2x3>`")),r||this.error("Expected a type after `list<`.","Use `list<any>` for a list of any type","For example `list<number>` or `list<string>`"),this.expectClosingBracket(),{kind:"list",elements:r??"any",dimensions:i}}if(this.match("list(")&&this.error("Use `list<type>` instead of `list(type)`.","For example `list<number>`"),this.match("vector<")){let i=this.parseType(),r;if(i&&this.match("^")){let o=this.parsePositiveIntegerLiteral();o===null&&this.error("Expected a positive integer literal.","For example `vector<3>`","Use `vector` for a vector of unknown size"),r=[o]}else i||(i="number",r=this.parseDimensions());return this.expectClosingBracket(),{kind:"list",elements:i,dimensions:r}}if(this.match("vector(")&&this.error("Use `vector<...>` instead of `vector(...)`.","For example `vector<3>` or `vector<integer^3>`"),this.match("vector"))return{kind:"list",elements:"number"};if(this.match("matrix<")){let i=this.parseType(),r;return i&&this.match("^")?(r=this.parseDimensions(),r===void 0&&this.error("Expected dimensions","For example `matrix<number^2x3>`","Use `matrix` for a matrix of unknown size")):i||(i="number",r=this.parseDimensions()),this.expectClosingBracket(),{kind:"list",elements:i,dimensions:r}}if(this.match("matrix(")&&this.error("Use `matrix<...>` instead of `matrix(...)`.","For example `matrix<3x2>` or `matrix<integer^3x2>`"),this.match("matrix"))return{kind:"list",elements:"number",dimensions:[-1,-1]};if(this.match("tensor<")){let i=this.parseType()??"number";return this.expectClosingBracket(),{kind:"list",elements:i,dimensions:void 0}}if(this.match("tensor"))return{kind:"list",elements:"number",dimensions:void 0};if(!this.match("list<"))return null;let e=this.parseTypeMaybe();e===null&&this.error('Expected a type. Use "[any]" for a collection of any type');let t=this.match("^")?this.parseDimensions():void 0;return this.expectClosingBracket(),{kind:"list",elements:e,dimensions:t}}parseName(){let e=this.pos;if(this.skipWhitespace(),this.isEOF())return null;let t=this.parseVerbatimString();if(t===null){if(!/[a-zA-Z_]/.test(this.peek()))return null;for(t="";!this.isEOF()&&/[a-zA-Z0-9_]/.test(this.peek());)t+=this.consume()}if(this.skipWhitespace(),!this.match(":")){if(this.match("?:")){let i=this.parseTypeMaybe();this.error("Optional qualifier must come after the type",`Use "${t}: ${i?U(i):"number"}?"`)}return this.pos=e,null}return t}parseVerbatimString(){if(this.skipWhitespace(),this.isEOF())return null;let e="";if(this.match("`")){for(;!this.match("`");)this.isEOF()&&this.error("Expected closing backtick"),this.match("\\`")?e+="`":this.match("\\\\")?e+="\\":e+=this.consume();return e}return null}parseIdentifier(){let e=this.parseVerbatimString();if(e!==null)return e;if(/[0-9_]/.test(this.peek()))return null;for(e="";!this.isEOF()&&/[a-zA-Z0-9_]/.test(this.peek());)e+=this.consume();return e.length===0?null:e}parseNamedElement(){let e=this.pos,t=this.parseName();if(t!==null){let r=this.parseType();return r===null&&this.error(`Expected a valid type after "${t}:"`,this.parseUnexpectedToken()),this.skipWhitespace(),{name:t,type:r}}let i=this.parseType();return i===null?(this.pos=e,null):{type:i}}parseTupleElements(){let e=[],t=this.pos,i=this.parseNamedElement();if(i===null)return[];let r=i.name!==void 0;for(;e.push(i),this.skipWhitespace(),!!this.match(",");)t=this.pos,i=this.parseNamedElement(),i===null&&(this.pos=t,this.error("Expected a type or unexpected comma")),r&&!i.name&&(this.pos=t,this.error("All tuple elements should be named, or none.","Previous elements were named, but this one isn't.")),!r&&i.name&&(this.pos=t,this.error("All tuple elements should be named, or none.","Previous elements were not named, but this one is."));return e}parseTuple(){if(this.skipWhitespace(),!this.match("tuple<"))return this.match("tuple(")&&this.error("Use `tuple<type>` instead of `tuple(type)`.","For example `tuple<number, boolean>` or `tuple<x: integer, y: integer>`"),null;let e=this.parseTupleElements();return this.expectClosingBracket(),{kind:"tuple",elements:e}}parseGroup(){let e=this.pos;if(this.skipWhitespace(),!this.match("("))return null;let t=this.parseType();return t===null?(this.pos=e,null):(this.skipWhitespace(),this.match(")")&&(this.skipWhitespace(),!this.match("->"))?t:(this.pos=e,null))}parseSet(){if(this.skipWhitespace(),!this.match("set<")){if(this.match("set(")){let t=this.parseTypeMaybe()??"number";this.error(`Use \`set<${t}>\` instead of \`set(${t})\`.`)}return this.match("set")?"set":null}let e=this.parseTypeMaybe();return e===null&&this.error("Expected a type.","Use `set<number>` for a set of numbers"),this.expectClosingBracket(),{kind:"set",elements:e}}parseRecordKeyValue(){let e=[];for(;;){let i=this.parseIdentifier();i===null&&this.error("Expected a name for the key.","For example `record<key: string>`.","Use backticks for special characters.","For example `record<`duraci\xF3n`: number>`"),this.skipWhitespace(),this.match(":")||this.error("Expected a type separated by a `:` after the key.",`For example \`record<${qr(i)}: string>\``,"Use backticks for special characters.","For example `record<`duraci\xF3n`: string>`");let r=this.parseTypeMaybe();if(r===null&&this.error("Expected a type for the value. Use `any` for any type.",`For example \`record<${qr(i)}: any>.\``),e.push([i,r]),this.skipWhitespace(),!this.match(","))break}if(new Set(e.map(([i])=>i)).size!==e.length){let i=e.find(([r],o)=>e.slice(o+1).some(([s])=>s===r))?.[0];this.error(`Duplicate record key "${i}"`,"Keys in a record must be unique.")}return e}parseRecord(){if(this.skipWhitespace(),this.match("record<")){let e=this.parseRecordKeyValue();if(this.skipWhitespace(),!this.match(">")){let t=e[e.length-1]??["key","number"];this.match("?")&&this.error('Unexpected token "?".',`To indicate an optional key, use a specific type, for example \`record<${qr(t[0])}: ${t[1]} | nothing>\``),this.error("Expected a closing `>`.",`For example \`record<${qr(t[0])}: ${t[1]}>\``)}return{kind:"record",elements:Object.fromEntries(e)}}return this.match("record")?"record":null}parseDictionary(){if(this.match("dictionary<")){this.skipWhitespace();let e=this.parseType();return e===null&&this.error("Expected a type."),this.skipWhitespace(),this.match(",")&&this.error("Dictionary types cannot have keys, only values.","For example `dictionary<string>`"),this.expectClosingBracket(),{kind:"dictionary",values:e}}return this.match("dictionary")?"dictionary":null}parseCollection(){if(this.skipWhitespace(),this.match("indexed_collection<")){let t=this.parseType();return t===null&&this.error("Expected a type.","Use `indexed_collection<number>` for an indexed collection of numbers"),this.expectClosingBracket(),{kind:"indexed_collection",elements:t}}if(this.match("indexed_collection"))return"indexed_collection";if(!this.match("collection<"))return this.match("collection(")&&this.error("Use `collection<type>` instead of `collection(type)`.","For example `collection<number>`"),this.match("collection")?"collection":null;let e=this.parseType();return e===null&&this.error("Expected a type.","Use `collection<number>` for a collection of numbers"),this.expectClosingBracket(),{kind:"collection",elements:e}}parseExpression(){if(!this.match("expression<"))return null;let e=this.parseIdentifier();return e===null&&this.error("Expected the name of the operator for the expression.","For example `expression<Multiply>`.","Use backticks for special characters.","For example `expression<`\u534A\u5F84`>`"),this.expectClosingBracket(),{kind:"expression",operator:e}}parseSymbol(){if(!this.match("symbol<"))return null;let e=this.parseIdentifier();return e===null&&this.error("Expected a name for the symbol.","For example `symbol<True>`.","Use backticks for special characters.","For example `symbol<`\u534A\u5F84`>`"),this.expectClosingBracket(),{kind:"symbol",name:e}}parseNumericType(){let e=i=>{if(i.skipWhitespace(),i.match(".."))return-1/0;let r=zr(i);if(typeof r!="number"&&i.error("Expected a number"),i.skipWhitespace(),i.match(".."))return r;i.error('Expected ".." after lower bound',"For example `integer<-oo..10>` or `integer<0..10>`")},t=i=>{if(i.skipWhitespace(),i.match(">"))return;let r=zr(i);return typeof r!="number"&&i.error("Expected a number"),i.expectClosingBracket(),r};for(let i of["real","finite_real","rational","finite_rational","integer","finite_integer"]){if(!this.match(i+"<"))continue;let r=e(this)??-1/0,o=t(this)??1/0;return(Number.isNaN(r)||Number.isNaN(o))&&this.error("Invalid numeric type","Lower and upper bounds must be valid numbers"),r===-1/0&&o===1/0?i:(r>o&&this.error(`Invalid range: ${r}..${o}`,"The lower bound must be less than the upper bound"),{kind:"numeric",type:i,lower:r,upper:o})}return null}parseStringType(){return this.match("string")?"string":null}parsePrimary(){let e=this.parseMaybePrimary();if(e===null){let t=this.pos;this.parseNamedElement()!==null&&(this.match("?"),this.match("*"),this.match("+"),this.skipWhitespace(),(this.match("->")||this.match(","))&&this.error("Function arguments must be enclosed in parentheses","For example `(x: number) -> number`"),this.match(")")&&this.error("An opening parenthesis seems to be missing")),this.pos=t,zr(this)!==null&&this.error("Unexpected value"),this.pos=t,this.error('Unexpected token"',this.parseUnexpectedToken())}return e}parseUnexpectedToken(){let e=this.pos,t,i="";for(;!this.isEOF()&&/[a-zA-Z0-9_]/.test(this.peek());)i+=this.consume();if(!i)return;let r=null;return i==="map"&&(r="dictionary"),r??=Di(i,[...this._typeResolver.names,...Et,"vector","matrix"]),r&&(t=`Did you mean "${r}"?`),this.pos=e,t}parseMaybePrimary(){return this.parseGroup()??this.parseNegationType()??this.parseCollection()??this.parseList()??this.parseSet()??this.parseDictionary()??this.parseRecord()??this.parseTuple()??this.parseExpression()??this.parseSymbol()??this.parseNumericType()??this.parseStringType()??this.parsePrimitiveType()??this.parseValue()??this.parseTypeReference()}parseNegationType(){return this.match("!")?{kind:"negation",type:this.parsePrimary()}:null}parseIntersectionType(){let e=this.parseFunctionSignature()??this.parseMaybePrimary();if(e===null)return null;let t=[e];for(this.skipWhitespace();this.match("&");)this.skipWhitespace(),t.push(this.parsePrimary());return t.length===1?t[0]:{kind:"intersection",types:t}}parseUnionType(){let e=this.parseIntersectionType();if(e===null)return null;let t=[e];for(this.skipWhitespace();this.match("|");)e=this.parseIntersectionType(),e===null&&this.error("Expected type"),t.push(e);return t.length===1?t[0]:{kind:"union",types:t}}parseType(){if(this.skipWhitespace(),this.isEOF())return null;if(this.peek()==="("){let e=this.parseFunctionSignature();if(e)return e}return this.parseUnionType()}parseTypeMaybe(){try{return this.parseType()}catch(e){}return null}parse(){let e=this.parseType();return e===null&&(this.parseIdentifier()!==null&&(this.skipWhitespace(),this.match(":")&&this.error("Function signatures must be enclosed in parentheses","For example `(x: number) -> number`")),this.error("Syntax error. The type was not recognized.")),this.skipWhitespace(),(this.match("->")||this.match("?")||this.match("*")||this.match("+"))&&this.error("Function signatures must be enclosed in parentheses","For example `(x: number) -> number`"),this.isEOF()||this.error("Unexpected character. Could be some mismatched parentheses."),e}};function zr(n){let e=n.pos;if(n.skipWhitespace(),/["]/.test(n.peek())){let t=n.consume(),i="";for(;n.peek()!==t;)n.isEOF()&&n.error("Expected closing quote"),n.match("\\"+t)?i+=t:i+=n.consume();return n.consume(),i}if(n.match("0x")){let t=0;for(;/[0-9a-fA-F]/.test(n.peek());)t=t*16+parseInt(n.consume(),16);return t}if(n.match("0b")){let t=0;for(;/[01]/.test(n.peek());)t=t*2+parseInt(n.consume());return t}if(/[-0-9\.]/.test(n.peek())){let t=0,i=1;if(n.match("-")&&(i=-1),n.match("+")&&(i=1),!/[0-9]/.test(n.peek()))return n.pos=e,null;for(;/[0-9]/.test(n.peek());)t=t*10+parseInt(n.consume());if(n.peek()==="."){let r=n.pos;if(n.consume(),!/[0-9]/.test(n.peek()))return n.pos=r,i*t;let o=0,s=1;for(;/[0-9]/.test(n.peek());)o=o*10+parseInt(n.consume()),s*=10;t+=o/s}if(n.match("e")||n.match("E")){let r=0,o=1;for(n.match("+")&&(o=1),n.match("-")&&(o=-1);/[0-9]/.test(n.peek());)r=r*10+parseInt(n.consume());t*=Math.pow(10,o*r)}return i*t}return n.match("true")?!0:n.match("false")?!1:n.match("nan")?NaN:n.match("infinity")||n.match("+infinity")||n.match("oo")||n.match("\u221E")||n.match("+oo")||n.match("+\u221E")?1/0:n.match("-infinity")||n.match("-oo")||n.match("-\u221E")?-1/0:n.match("nan")?NaN:(n.pos=e,null)}function A(n,e){return n===void 0?void 0:st(n)?n:typeof n!="string"?void 0:new Wo(n,{valueParser:zr,typeResolver:e}).parse()}function Gd(n){let e=new Set;for(let{name:t}of n)if(t){if(e.has(t))return t;e.add(t)}return""}function qr(n){return/[^a-zA-Z0-9_]/.test(n)?"`"+n.replace(/`/g,"\\`")+"`":n}function Ud(n,e){return n===e?n:n==="nothing"||e==="nothing"?"nothing":n==="any"?e:e==="any"?n:n==="never"?e:e==="never"?n:n==="unknown"?e:e==="unknown"||E(n,e)?n:E(e,n)?e:cu(n,e)}function jd(n,e){return n===e?n:n==="any"||e==="any"?"any":n==="never"?e:e==="never"?n:n==="unknown"?e:e==="unknown"?n:n==="nothing"?e:e==="nothing"?n:E(n,e)?e:E(e,n)?n:cu(n,e)}function vt(...n){return n.length===0?"nothing":n.length===1?n[0]:n.reduce((e,t)=>Ud(e,t))}function oe(...n){return n.length===0?"nothing":n.length===1?n[0]:n.reduce((e,t)=>jd(e,t))}function Gr(n){return n=typeof n=="string"?A(n):n,typeof n!="string"&&n.kind==="signature"}function We(n){if(n){if(n==="function")return"any";if(typeof n!="string"&&n.kind==="signature")return n.result}}function bn(n){if(n==="collection"||n==="indexed_collection"||n==="list"||n==="set"||n==="tuple"||n==="dictionary"||n==="record")return"any";if(typeof n!="string"){if(n.kind==="collection"||n.kind==="indexed_collection"||n.kind==="list"||n.kind==="set")return n.elements;if(n.kind==="tuple")return oe(...n.elements.map(e=>e.type));if(n.kind==="dictionary")return A(`tuple<string, ${n.values}>`);if(n.kind==="record")return A(`tuple<string, ${U(oe(...Object.values(n.elements)))}>`)}}function lu(n){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(n)}function st(n){return typeof n=="string"?Et.includes(n):typeof n!="object"||!("kind"in n)?!1:n.kind==="signature"||n.kind==="union"||n.kind==="intersection"||n.kind==="negation"||n.kind==="tuple"||n.kind==="list"||n.kind==="record"||n.kind==="dictionary"||n.kind==="set"||n.kind==="function"||n.kind==="collection"||n.kind==="indexed_collection"||n.kind==="reference"}function cu(n,e){return n===e?n:n==="any"||e==="any"?"any":n==="never"?e:e==="never"?n:n==="unknown"?e:e==="unknown"?n:n==="nothing"?e:e==="nothing"?n:ue(n,e,"non_finite_number")?"non_finite_number":ue(n,e,"finite_integer")?"finite_integer":ue(n,e,"integer")?"integer":ue(n,e,"finite_rational")?"finite_rational":ue(n,e,"rational")?"rational":ue(n,e,"finite_real")?"finite_real":ue(n,e,"real")?"real":ue(n,e,"imaginary")?"imaginary":ue(n,e,"finite_complex")?"finite_complex":ue(n,e,"complex")?"complex":ue(n,e,"finite_number")?"finite_number":ue(n,e,"number")?"number":ue(n,e,"list")?"list":ue(n,e,"record")?"record":ue(n,e,"dictionary")?"dictionary":ue(n,e,"set")?"set":ue(n,e,"tuple")?"tuple":ue(n,e,"indexed_collection")?"indexed_collection":ue(n,e,"collection")?"collection":ue(n,e,"scalar")?"scalar":ue(n,e,"value")?"value":ue(n,e,"function")?"function":ue(n,e,"expression")?"expression":"any"}function ue(n,e,t){return!!(E(n,t)&&E(e,t))}var S=class n{static unknown=new n("unknown");static number=new n("number");static non_finite_number=new n("non_finite_number");static finite_number=new n("finite_number");static finite_integer=new n("finite_integer");static finite_real=new n("finite_real");static string=new n("string");static dictionary=new n("dictionary");static setNumber=new n("set<number>");static setComplex=new n("set<complex>");static setImaginary=new n("set<imaginary>");static setReal=new n("set<real>");static setRational=new n("set<rational>");static setFiniteInteger=new n("set<finite_integer>");static setInteger=new n("set<integer>");type;static widen(...e){return new n(oe(...e.map(t=>t instanceof n?t.type:t)))}static narrow(...e){return new n(vt(...e.map(t=>t instanceof n?t.type:t)))}constructor(e,t){typeof e=="string"?this.type=A(e,t):this.type=e}matches(e){return e instanceof n?E(this.type,e.type):E(this.type,e)}is(e){return E(this.type,e)&&E(e,this.type)}get isUnknown(){return this.type==="unknown"}toString(){return U(this.type)}toJSON(){return U(this.type)}[Symbol.toPrimitive](e){return e==="string"?this.toString():null}valueOf(){return U(this.type)}};function Jo(n){let e=[],t=(i,r=[])=>{if(i.length===0)e.push(r);else for(let o=0;o<i.length;o++){let s=i.slice(),a=s.splice(o,1);t(s.slice(),r.concat(a))}};return t(n),e}function fu(n){for(let e in n)e.startsWith("_")&&n.hasOwnProperty(e)&&Object.defineProperty(n,e,{enumerable:!1,configurable:!0,writable:!0,value:n[e]})}var Ur=class{_listeners=new Array(300);_pending=!1;_version=0;listen(e){for(let i of this._listeners)if(i.deref()===e)return()=>this._unsubscribe(e);let t=new WeakRef(e);return this._listeners.push(t),()=>this._unsubscribe(e)}_unsubscribe(e){this._listeners=this._listeners.filter(t=>{let i=t.deref();return i!==void 0&&i!==e})}notify(){if(this._pending)return;this._pending=!0;let e=this._version+1;queueMicrotask(()=>{if(e!==this._version+1){this._pending=!1;return}this.notifyNow()})}notifyNow(){this._version++,this._listeners=this._listeners.filter(e=>{let t=e.deref();try{t?.onConfigurationChange?.()}catch(i){console.error("Listener error:",i)}return t!==void 0}),this._pending=!1}};function Yo(n,e,t={}){let{contract:i=.125,step:r=1,power:o=2,atol:s=1e-16,rtol:a=s>0?0:Math.sqrt(Number.EPSILON),maxeval:u=1e6,breaktol:l=2}=t;if(!isFinite(e))return Yo(b=>n(1/b),1/e,{rtol:a,atol:s,maxeval:u,contract:Math.abs(i)>1?1/i:i,step:1/r,power:o});let c=r,f=Math.pow(1/i,o),d=n(e+c),p=[d],x=1/0,g=1;for(;g<u;){g+=1,c*=i,p.push(n(e+c));let b=f,_=1/0;for(let k=p.length-2;k>=0;k--){let w=p[k];p[k]=p[k+1]+(p[k+1]-p[k])/(b-1);let z=Math.abs(p[k]-w);_=Math.min(_,z),z<x&&(d=p[k],x=z),b*=f}if(_>l*x||!isFinite(_)||x<=Math.max(a*Math.abs(d),s))break}return[d,x]}function ie(n){if(typeof n=="bigint")return n;if(typeof n=="number")return Number.isInteger(n)?n>=Number.MAX_SAFE_INTEGER&&n<=Number.MAX_SAFE_INTEGER?BigInt(n):ie(n.toString()):null;if(n instanceof M)return n.isInteger()?ie(n.toString()):null;let e=n.toLowerCase(),t=e.match(/([+-]?[0-9]*)(?:\.([0-9]+))?e([+-]?[0-9]+)$/);if(t){let o=parseInt(t[3])-(t[2]?t[2].length:0);if(o<0)return null;e=(t[1]??"")+(t[2]??"")+"0".repeat(o)}if(e.indexOf(".")>=0||!/^[+-]?[0-9]+$/.test(e))return null;try{return BigInt(e)}catch(r){return console.error(r.message),null}}var du=0x3ffffffffffe5,Qo=new Set([2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997,1009,1013,1019,1021,1031,1033,1039,1049,1051,1061,1063,1069,1087,1091,1093,1097,1103,1109,1117,1123,1129,1151,1153,1163,1171,1181,1187,1193,1201,1213,1217,1223,1229,1231,1237,1249,1259,1277,1279,1283,1289,1291,1297,1301,1303,1307,1319,1321,1327,1361,1367,1373,1381,1399,1409,1423,1427,1429,1433,1439,1447,1451,1453,1459,1471,1481,1483,1487,1489,1493,1499,1511,1523,1531,1543,1549,1553,1559,1567,1571,1579,1583,1597,1601,1607,1609,1613,1619,1621,1627,1637,1657,1663,1667,1669,1693,1697,1699,1709,1721,1723,1733,1741,1747,1753,1759,1777,1783,1787,1789,1801,1811,1823,1831,1847,1861,1867,1871,1873,1877,1879,1889,1901,1907,1913,1931,1933,1949,1951,1973,1979,1987,1993,1997,1999,2003,2011,2017,2027,2029,2039,2053,2063,2069,2081,2083,2087,2089,2099,2111,2113,2129,2131,2137,2141,2143,2153,2161,2179,2203,2207,2213,2221,2237,2239,2243,2251,2267,2269,2273,2281,2287,2293,2297,2309,2311,2333,2339,2341,2347,2351,2357,2371,2377,2381,2383,2389,2393,2399,2411,2417,2423,2437,2441,2447,2459,2467,2473,2477,2503,2521,2531,2539,2543,2549,2551,2557,2579,2591,2593,2609,2617,2621,2633,2647,2657,2659,2663,2671,2677,2683,2687,2689,2693,2699,2707,2711,2713,2719,2729,2731,2741,2749,2753,2767,2777,2789,2791,2797,2801,2803,2819,2833,2837,2843,2851,2857,2861,2879,2887,2897,2903,2909,2917,2927,2939,2953,2957,2963,2969,2971,2999,3001,3011,3019,3023,3037,3041,3049,3061,3067,3079,3083,3089,3109,3119,3121,3137,3163,3167,3169,3181,3187,3191,3203,3209,3217,3221,3229,3251,3253,3257,3259,3271,3299,3301,3307,3313,3319,3323,3329,3331,3343,3347,3359,3361,3371,3373,3389,3391,3407,3413,3433,3449,3457,3461,3463,3467,3469,3491,3499,3511,3517,3527,3529,3533,3539,3541,3547,3557,3559,3571,3581,3583,3593,3607,3613,3617,3623,3631,3637,3643,3659,3671,3673,3677,3691,3697,3701,3709,3719,3727,3733,3739,3761,3767,3769,3779,3793,3797,3803,3821,3823,3833,3847,3851,3853,3863,3877,3881,3889,3907,3911,3917,3919,3923,3929,3931,3943,3947,3967,3989,4001,4003,4007,4013,4019,4021,4027,4049,4051,4057,4073,4079,4091,4093,4099,4111,4127,4129,4133,4139,4153,4157,4159,4177,4201,4211,4217,4219,4229,4231,4241,4243,4253,4259,4261,4271,4273,4283,4289,4297,4327,4337,4339,4349,4357,4363,4373,4391,4397,4409,4421,4423,4441,4447,4451,4457,4463,4481,4483,4493,4507,4513,4517,4519,4523,4547,4549,4561,4567,4583,4591,4597,4603,4621,4637,4639,4643,4649,4651,4657,4663,4673,4679,4691,4703,4721,4723,4729,4733,4751,4759,4783,4787,4789,4793,4799,4801,4813,4817,4831,4861,4871,4877,4889,4903,4909,4919,4931,4933,4937,4943,4951,4957,4967,4969,4973,4987,4993,4999,5003,5009,5011,5021,5023,5039,5051,5059,5077,5081,5087,5099,5101,5107,5113,5119,5147,5153,5167,5171,5179,5189,5197,5209,5227,5231,5233,5237,5261,5273,5279,5281,5297,5303,5309,5323,5333,5347,5351,5381,5387,5393,5399,5407,5413,5417,5419,5431,5437,5441,5443,5449,5471,5477,5479,5483,5501,5503,5507,5519,5521,5527,5531,5557,5563,5569,5573,5581,5591,5623,5639,5641,5647,5651,5653,5657,5659,5669,5683,5689,5693,5701,5711,5717,5737,5741,5743,5749,5779,5783,5791,5801,5807,5813,5821,5827,5839,5843,5849,5851,5857,5861,5867,5869,5879,5881,5897,5903,5923,5927,5939,5953,5981,5987,6007,6011,6029,6037,6043,6047,6053,6067,6073,6079,6089,6091,6101,6113,6121,6131,6133,6143,6151,6163,6173,6197,6199,6203,6211,6217,6221,6229,6247,6257,6263,6269,6271,6277,6287,6299,6301,6311,6317,6323,6329,6337,6343,6353,6359,6361,6367,6373,6379,6389,6397,6421,6427,6449,6451,6469,6473,6481,6491,6521,6529,6547,6551,6553,6563,6569,6571,6577,6581,6599,6607,6619,6637,6653,6659,6661,6673,6679,6689,6691,6701,6703,6709,6719,6733,6737,6761,6763,6779,6781,6791,6793,6803,6823,6827,6829,6833,6841,6857,6863,6869,6871,6883,6899,6907,6911,6917,6947,6949,6959,6961,6967,6971,6977,6983,6991,6997,7001,7013,7019,7027,7039,7043,7057,7069,7079,7103,7109,7121,7127,7129,7151,7159,7177,7187,7193,7207,7211,7213,7219,7229,7237,7243,7247,7253,7283,7297,7307,7309,7321,7331,7333,7349,7351,7369,7393,7411,7417,7433,7451,7457,7459,7477,7481,7487,7489,7499,7507,7517,7523,7529,7537,7541,7547,7549,7559,7561,7573,7577,7583,7589,7591,7603,7607,7621,7639,7643,7649,7669,7673,7681,7687,7691,7699,7703,7717,7723,7727,7741,7753,7757,7759,7789,7793,7817,7823,7829,7841,7853,7867,7873,7877,7879,7883,7901,7907,7919]),pu=7919;function mu(n){if(Number.isInteger(n)&&n>=0&&n<Number.MAX_SAFE_INTEGER,n<=3)return{[n]:1};let e={},t=0;for(;n%2===0;)t+=1,n/=2;for(t>0&&(e[2]=t),t=0;n%3===0;)t+=1,n/=3;t>0&&(e[3]=t);let i=!1;for(;!i;){if(n===1)return e;let r=Math.sqrt(n);i=!0;for(let o=6;o<=r+6;o+=6){if(n%(o-1)===0){e[o-1]=(e[o-1]??0)+1,n/=o-1,i=!1;break}if(n%(o+1)===0){e[o+1]=(e[o+1]??0)+1,n/=o+1,i=!1;break}}}return e[n]!==void 0?e[n]+=1:e[n]=1,e}function Xo(n){if(!Number.isInteger(n)||!Number.isFinite(n)||Number.isNaN(n)||n<=1)return!1;if(n<=pu)return Qo.has(n);for(let e of Qo)if(n%e===0)return!1;return n<du&&Zd(n),Wd(n,30)?void 0:!1}function Zd(n){if(n===1)return 1;if(n%2===0)return 2;if(n%3===0)return 3;if(n%5===0)return 5;let e=Math.floor(Math.sqrt(n)),t=7;for(;t<=e;){if(n%t===0)return t;if(n%(t+4)===0)return t+4;if(n%(t+6)===0)return t+6;if(n%(t+10)===0)return t+10;if(n%(t+12)===0)return t+12;if(n%(t+16)===0)return t+16;if(n%(t+22)===0)return t+22;if(n%(t+24)===0)return t+24;t+=30}return n}function gu(n){if(n<=1)return!1;if(n<=pu)return Xo(Number(n));for(let e of Qo)if(n%BigInt(e)===BigInt(0))return!1;return n<du&&(n=Hd(n)),Jd(n,30)?void 0:!1}function Hd(n){if(n===BigInt(1))return BigInt(1);if(n%BigInt(2)===BigInt(0))return BigInt(2);if(n%BigInt(3)===BigInt(0))return BigInt(3);if(n%BigInt(5)===BigInt(0))return BigInt(5);let e=BigInt(Math.floor(Math.sqrt(Number(n)))),t=BigInt(7);for(;t<=e;){if(n%t===BigInt(0))return t;if(n%(t+BigInt(4))===BigInt(0))return t+BigInt(4);if(n%(t+BigInt(6))===BigInt(0))return t+BigInt(6);if(n%(t+BigInt(10))===BigInt(0))return t+BigInt(10);if(n%(t+BigInt(12))===BigInt(0))return t+BigInt(12);if(n%(t+BigInt(16))===BigInt(0))return t+BigInt(16);if(n%(t+BigInt(22))===BigInt(0))return t+BigInt(22);if(n%(t+BigInt(24))===BigInt(0))return t+BigInt(24);t+=BigInt(30)}return n}function Wd(n,e){let t=0,i=n-1;for(;i%2===0;)i/=2,++t;e:do{let r=Math.pow(2+Math.floor(Math.random()*(n-3)),i)%n;if(!(r===1||r===n-1)){for(let o=t-1;o--;){if(r=r*r%n,r===1)return!1;if(r===n-1)continue e}return!1}}while(--e);return!0}function Jd(n,e){let t=0,i=n-BigInt(1);for(;i%BigInt(2)===BigInt(0);)i=i/BigInt(2),++t;e:do{let r=BigInt(2+Math.floor(Math.random()*(Number(n)-3)))**i%n;if(!(r===BigInt(1)||r===n-BigInt(1))){for(let o=t-1;o--;){if(r=r*r%n,r===BigInt(1))return!1;if(r===n-BigInt(1))continue e}return!1}}while(--e);return!0}var eh=[BigInt(4),BigInt(2),BigInt(4),BigInt(2),BigInt(4),BigInt(6),BigInt(2),BigInt(6)];var Ko=21,Yd=53,kn=Math.floor(Math.log10(Math.pow(2,Yd))),es=1e-10,$=1e6,hu=1024,Mi=1e6;function Yt(n,e){if(n>=Number.MAX_SAFE_INTEGER)return[1,n];if(n===0)return[0,0];if(n===1)return[1,1];if(Number.isInteger(n)&&n>0&&n<Number.MAX_SAFE_INTEGER,e===2){let o=[[0,0],[1,1],[1,2],[1,3],[2,1],[1,5],[1,6],[1,7],[1,8],[3,1],[1,10],[1,11],[2,3],[1,13],[1,14],[1,15],[4,1],[1,17],[3,2],[1,19],[1,20]][n];if(o)return o}let t=mu(n),i=1,r=1;for(let o of Object.keys(t)){let s=parseInt(o);i=i*Math.pow(s,Math.floor(t[o]/e)),r=r*Math.pow(s,t[o]%e)}return[i,r]}function Pe(n,e){if(n===0)return e;if(e===0||n===e)return n;if(!Number.isInteger(n)||!Number.isInteger(e))return NaN;for(;e!==0;)[n,e]=[e,n%e];return n<0?-n:n}function Nt(n,e){return n*e/Pe(n,e)}function ns(n){if(!Number.isInteger(n)||n<0)return NaN;if(n>=170)return 1/0;let e=1;for(let t=2;t<=n;t++)e=e*t;return e}function yu(n){if(!Number.isInteger(n)||n<0)return NaN;if(n<0)return NaN;if(n<=1)return 1;let e=n;for(;n>2;)n-=2,e*=n;return e}function ts(n,e=es){return typeof n=="number"&&Math.abs(n)<=e?0:n}function xu(n,e,t=.1){return(n(e-4*t)/280-4*n(e-3*t)/105+n(e-2*t)/5-4*n(e-t)/5+4*n(e+t)/5-n(e+2*t)/5+4*n(e+3*t)/105-n(e+4*t)/280)/t}function at(n,e,t=1){if(t===0){let o=at(n,e,-1),s=at(n,e,1);return o===void 0||s===void 0?NaN:Math.abs(o-s)>1e-5?NaN:(o+s)/2}let[i,r]=Yo(n,e,{step:t>0?1:-1});return i}function*is(){yield[0,1];for(let n=1;;n++)for(let e=0;e<=n;e++){let t=n-e;t!==0&&Pe(e,t)===1&&(yield[e,t],yield[-e,t])}}function*bu(){yield[0,1];for(let n=1;;n++)for(let e=0;e<=n;e++){let t=n-e;t!==0&&Pe(e,t)===1&&(yield[e,t])}}function*Eu(){yield[0,0];for(let n=1;;n++)for(let e=0;e<=n;e++){let t=n-e;if(t===0||Pe(e,t)!==1)continue;let i=e/t;for(let r=0;r<=n;r++){let o=n-r;if(o===0||Pe(r,o)!==1)continue;let s=r/o;yield[i,s],yield[-i,s],yield[i,-s],yield[-i,-s]}}}function*vu(){yield 0;for(let n=1;;n++)yield n,yield-n}var Ri=["Error","'missing'"];function qn(n){return!!(typeof n=="number"||Qt(n)||typeof n=="string"&&tn(n))}function Qt(n){return n!==null&&typeof n=="object"&&"num"in n}function jr(n){return n!==null&&typeof n=="object"&&"sym"in n}function Qd(n){return n!==null&&typeof n=="object"&&"str"in n}function Xd(n){return n!==null&&typeof n=="object"&&"dict"in n&&typeof n.dict=="object"&&!Array.isArray(n.dict)&&n.dict!==null}function Pi(n){return n!==null&&typeof n=="object"&&"fn"in n&&Array.isArray(n.fn)&&n.fn.length>0&&typeof n.fn[0]=="string"}function F(n){return n==null?null:typeof n=="object"&&"str"in n?n.str:typeof n!="string"?null:n.length>=2&&n.at(0)==="'"&&n.at(-1)==="'"?n.substring(1,n.length-1):tn(n)||Ge(n)?null:n}function os(n){if(n==null||F(n)!==null)return null;let e=h(n);return e?[e,...N(n).map(t=>os(t)).filter(t=>t!==null)]:n}function h(n){return Array.isArray(n)?n[0]:n==null?"":Pi(n)?n.fn[0]:""}function N(n){return Array.isArray(n)?n.slice(1):n!==void 0&&Pi(n)?n.fn.slice(1):[]}function m(n,e){return Array.isArray(n)?n[e]??null:n===null||!Pi(n)?null:n.fn[e]??null}function J(n){return n==null?0:Array.isArray(n)?Math.max(0,n.length-1):Pi(n)?Math.max(0,n.fn.length-1):0}function ss(n){return n==null?null:h(n)==="Hold"?m(n,1):n}function T(n){return typeof n=="string"&&Ge(n)?n.length>=2&&n.at(0)==="`"&&n.at(-1)==="`"?n.slice(1,-1):n:n==null?null:jr(n)?n.sym:null}function Nu(n){let e=h(n);if(e==="KeyValuePair"||e==="Tuple"||e==="Pair"){let[t,i]=N(n),r=F(t);return r?[r,i??"Nothing"]:null}return null}function as(n){if(n===null)return null;if(Xd(n))return n;let e=Nu(n);if(e)return{[e[0]]:e[1]};if(h(n)==="Dictionary"){let t={},i=N(n);for(let r=1;r<J(n);r++){let o=Nu(i[r]);o&&(t[o[0]]=o[1])}return t}return null}function us(n){return{dict:n}}function Kd(n){if(n=n.toLowerCase().replace(/[nd]$/,"").replace(/[\u0009-\u000d\u0020\u00a0]/g,""),n==="nan")return NaN;if(/^(infinity|\+infinity|oo|\+oo)$/i.test(n))return 1/0;if(/^(-infinity|-oo)$/.test(n))return-1/0;if(/\([0-9]+\)/.test(n)){let[e,t,i,r]=n.match(/(.+)\(([0-9]+)\)(.*)$/)??[];n=t+i.repeat(Math.ceil(16/i.length))+(r??"")}return parseFloat(n)}function R(n){return typeof n=="number"?n:typeof n=="string"&&tn(n)?Kd(n):n!==void 0&&Qt(n)?R(n.num):null}function Xt(n){if(n==null)return null;if(T(n)==="Half")return[1,2];let e=h(n);if(!e)return null;let t=null,i=null;if(e==="Negate"){let r=Xt(N(n)[0]);if(r)return[-r[0],r[1]]}if(e==="Rational"||e==="Divide"){let[r,o]=N(n);t=R(r)??NaN,i=R(o)??NaN}if(e==="Power"){let[r,o]=N(n),s=R(o);s===1?(t=R(r),i=1):s===-1&&(t=1,i=R(r))}if(e==="Multiply"){let[r,o]=N(n);if(h(o)==="Power"){let[s,a]=N(o);R(a)===-1&&(t=R(r),i=R(s))}}return t===null||i===null?null:Number.isInteger(t)&&Number.isInteger(i)?[t,i]:null}function Zr(n,e){let t=null;if(Array.isArray(n)&&(t=n),Pi(n)&&(t=n.fn),t===null)return[];let i=1,r=[];for(;i<t.length;)r.push(e(t[i])),i+=1;return r}function Kt(n,e,t){let i=h(e),r=h(t);return i===n&&r===n?[n,...N(e),...N(t)]:i===n?[n,...N(e),t]:r===n?[n,e,...N(t)]:[n,e,t]}function zn(n){if(n==null)return null;let e=h(n);if(e==="Delimiter"){if(n=m(n,1),n===null)return[];if(e=h(n),e!=="Sequence")return[n]}return e!=="Sequence"?null:N(n)}function Y(n){return n==null||n==="Nothing"?!0:h(n)==="Sequence"&&J(n)===0}function V(n){return Y(n)?Ri:n}function rs(n){return n[0]==="Square"?rs(n.slice(1))+2:n.reduce((e,t)=>e+Li(t),0)}function Li(n){if(n===null)return 0;if(typeof n=="number"||typeof n=="string"||qn(n)||jr(n)||Qd(n))return 1;if(Array.isArray(n))return rs(n);if("fn"in n)return rs(n.fn);let e=as(n);if(e){let t=Object.keys(e);return 1+t.length+t.reduce((i,r)=>i+Li(e[r]),0)}return 0}function tn(n){return/^(nan|oo|\+oo|-oo|infinity|\+infinity|-infinity)$/i.test(n)||/^[+-]?(0|[1-9][0-9]*)(\.[0-9]+)?(\([0-9]+\))?([eE][+-]?[0-9]+)?$/.test(n)}function Ge(n){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(n)||n.length>=2&&n[0]==="`"&&n[n.length-1]==="`"}function Hr(n){return n.length>=2&&n[0]==="'"&&n[n.length-1]==="'"?!0:!tn(n)&&!Ge(n)}function ep(n){let e=[];for(let t=0;t<n.length;t++){let i=n.charCodeAt(t);if(i>=55296&&i<=56319){let r=n.charCodeAt(t+1);if(r>=56320&&r<=57343){let o=i-55296,s=r-56320;i=2**16+o*2**10+s,t++}}e.push(i)}return e}var Wr=8205,_u=[127462,127487];function Su(n){return n===Wr||n===65038||n===65039||n>=127995&&n<=128e3||n>=129456&&n<=129460||n>=917536&&n<=917632}function np(n){return n>=_u[0]&&n<=_u[1]}function Tu(n){if(/^[\u0020-\u00FF]*$/.test(n))return n;let e=[],t=ep(n),i=0;for(;i<t.length;){let r=t[i++],o=t[i];if(o===Wr){let s=i-1;for(i+=2;t[i]===Wr;)i+=2;e.push(String.fromCodePoint(...t.slice(s,2*i-s+1)))}else if(Su(o)){let s=i-1;for(;Su(t[i]);)i+=t[i]===Wr?2:1;e.push(String.fromCodePoint(...t.slice(s,2*i-s-1)))}else np(r)?(i+=1,e.push(String.fromCodePoint(...t.slice(i-2,2)))):e.push(String.fromCodePoint(r))}return e}var ls=class{s;pos;obeyspaces=!1;constructor(e){e=e.replace(/[\u200E\u200F\u2066-\u2069\u202A-\u202E]/g,""),e=e.replace(/\u2212/g,"-"),this.s=Tu(e),this.pos=0}end(){return this.pos>=this.s.length}get(){return this.pos<this.s.length?this.s[this.pos++]:""}peek(){return this.s[this.pos]}match(e){let t;return typeof this.s=="string"?t=e.exec(this.s.slice(this.pos)):t=e.exec(this.s.slice(this.pos).join("")),t?.[0]?(this.pos+=t[0].length,t[0]):null}next(){if(this.end())return null;if(!this.obeyspaces&&this.match(/^[ \f\n\r\t\v\xA0\u2028\u2029]+/))return"<space>";if(this.obeyspaces&&this.match(/^[ \f\n\r\t\v\xA0\u2028\u2029]/))return"<space>";let e=this.get();if(e==="\\"){if(!this.end()){let t=this.match(/^[a-zA-Z]+/);if(t)this.match(/^[ \f\n\r\t\v\xA0\u2028\u2029]*/);else if(t=this.get(),t===" ")return"<space>";return"\\"+t}}else{if(e==="{")return"<{>";if(e==="}")return"<}>";if(e==="^"){if(this.peek()==="^"){this.get();let t=this.match(/^(\^(\^(\^(\^[0-9a-f])?[0-9a-f])?[0-9a-f])?[0-9a-f])?[0-9a-f][0-9a-f]/);if(t)return String.fromCodePoint(parseInt(t.slice(t.lastIndexOf("^")+1),16))}return e}else if(e==="#"){if(!this.end()){let t=!1;if(/[0-9?]/.test(this.peek())&&(t=!0,this.pos+1<this.s.length)){let i=this.s[this.pos+1];t=/[^0-9A-Za-z]/.test(i)}return t?"#"+this.get():"#"}}else if(e==="$")return this.peek()==="$"?(this.get(),"<$$>"):"<$>"}return e}};function tp(n,e){let t=n.next();if(!t)return[];let i=[];if(t!=="\\relax"){if(t==="\\noexpand")t=n.next(),t&&i.push(t);else if(t==="\\obeyspaces")n.obeyspaces=!0;else if(t==="\\space"||t==="~")i.push("<space>");else if(t==="\\bgroup")i.push("<{>");else if(t==="\\egroup")i.push("<}>");else if(t==="\\string")t=n.next(),t&&(t[0]==="\\"?Array.from(t).forEach(r=>i.push(r==="\\"?"\\backslash":r)):t==="<{>"?i.push("\\{"):t==="<space>"?i.push("~"):t==="<}>"&&i.push("\\}"));else if(t==="\\csname"){for(;n.peek()==="<space>";)n.next();let r="",o=!1,s=[];do{if(s.length===0)if(/^#[0-9?]$/.test(n.peek())){let a=n.get().slice(1);s=Ee(e?.[a]??e?.["?"]??"\\placeholder{}",e),t=s[0]}else t=n.next(),s=t?[t]:[];o=s.length===0,!o&&t==="\\endcsname"&&(o=!0,s.shift()),o||(o=t==="<$>"||t==="<$$>"||t==="<{>"||t==="<}>"||!!t&&t.length>1&&t[0]==="\\"),o||(r+=s.shift())}while(!o);r&&i.push("\\"+r),i=i.concat(s)}else if(t!=="\\endcsname")if(t.length>1&&t[0]==="#"){let r=t.slice(1);i=i.concat(Ee(e?.[r]??e?.["?"]??"\\placeholder{}",e))}else i.push(t)}return i}function Ee(n,e=[]){let t=n.toString().split(/\r?\n/),i="",r="";for(let a of t){i+=r,r=" ";let u=a.match(/((?:\\%)|[^%])*/);u!==null&&(i+=u[0])}let o=new ls(i),s=[];do s.push(...tp(o,e));while(!o.end());return s}function Jr(n){return Ee(n).length}function v(n){let e="",t="";for(let i of n)i!=null&&(typeof i=="string"&&(/[a-zA-Z]/.test(i[0])&&(t+=e),/\\[a-zA-Z]+\*?$/.test(i)?e=" ":e=""),t+=i.toString());return t}function ei(n,e,t){return e.includes(n)&&(e=`{${e}}`),/^[0-9]$/.test(t)?`${e}${n}${t}`:`${e}${n}{${t}}`}function En(n){let e=[];if(Array.isArray(n))for(let i of n)Array.isArray(i)?e=[...e,...i]:e.push(i);else e=[n];return v(e.map(i=>({"<space>":" ","<$$>":"$$","<$>":"$","<{>":"{","<}>":"}"})[i]??i))}var L=245,Oi=260,Gn=270,de=275,Ue=390,Un=600,cs=650,fs=700,ds=810;function Bu(n){return!("kind"in n)||n.kind==="expression"}function Iu(n){return"kind"in n&&n.kind==="symbol"}function $i(n){return"kind"in n&&n.kind==="matchfix"}function ps(n){return"kind"in n&&n.kind==="infix"}function Yr(n){return"kind"in n&&n.kind==="prefix"}function ms(n){return"kind"in n&&n.kind==="postfix"}function wu(n){return"kind"in n&&n.kind==="environment"}var ku=[{name:"To",latexTrigger:["\\to"],kind:"infix",precedence:270},{latexTrigger:["\\rightarrow"],kind:"infix",precedence:270,parse:"To"}];function Cu(n,e){return"normal"}function Au(n,e){return"normal"}function Du(n,e){return e>2?"solidus":"radical"}function Mu(n,e){if(e>3)return"inline-solidus";if(h(n)==="Divide"){let[t,i]=N(n),[r,o]=[Li(t),Li(i)];if(o<=2&&r>5)return"factor";if(r<=2&&o>5)return"reciprocal"}return"quotient"}function Ru(n,e){return"boolean"}function Pu(n,e){return"solidus"}function Lu(n,e){return"compact"}function ni(n,e,t){n.indexOf("#1")<0&&n.indexOf("#2")<0&&(n=`#1 ${n} #2`);let i=n.split(/(#\d+)/).filter(r=>r.trim()!=="").map(r=>r.trim());return v(i.map(r=>{switch(r){case"#1":return e;case"#2":return t;default:return r}}))}function ip(n){if(h(n)!=="Multiply")return[[],[]];let e=[],t=[];for(let i of N(n))if(h(i)==="Power"){let r=m(i,1),o=m(i,2);if(h(o)==="Negate"){let s=m(o,1);r&&s&&t.push(["Power",r,s])}else{let s=R(o)??NaN;s===-1?r&&t.push(r):s<0?r&&t.push(["Power",r,-s]):e.push(i)}}else if(h(i)==="Rational"&&J(i)===2||h(i)==="Divide"){let r=m(i,1),o=m(i,2);R(r)!==1&&e.push(r),R(o)!==1&&t.push(o)}else{let r=Xt(i);r!==null?(r[0]!==1&&e.push(r[0]),t.push(r[1])):e.push(i)}return[e,t]}function rp(n){let e=n.parseOptionalGroup(),t=n.parseGroup()??n.parseToken();return Y(t)?e!==null?["Root",Ri,V(e)]:["Sqrt",Ri]:e!==null?["Root",t,e]:["Sqrt",t]}function Fi(n,e,t,i){return t==null?"\\sqrt{}":(i=i??2,e==="solidus"?n.wrapShort(t)+"^{1/"+n.serialize(i)+"}":e==="quotient"?n.wrapShort(t)+"^{\\frac{1}{"+n.serialize(i)+"}}":R(i)===2?"\\sqrt{"+n.serialize(t)+"}":"\\sqrt["+n.serialize(i)+"]{"+n.serialize(t)+"}")}function op(n,e){n.level-=1;let t=h(e),i="",r=m(e,1);if(t==="Negate")i="-"+n.wrap(r,de+1);else if(t==="Subtract"){i=n.wrap(r,de);let o=m(e,2);if(o!==null){let s=n.wrap(o,de);s[0]==="-"?i+="+"+s.slice(1):s[0]==="+"?i+="-"+s.slice(1):i=i+"-"+s}}else if(t==="Add"){if(n.options.prettify&&J(e)===2&&n.options.invisiblePlus!=="+"){let[a,u]=[m(e,1),m(e,2)],[l,c]=[a,u],f=R(l),d=Xt(c);if((f===null||d===null)&&([l,c]=[u,a],f=R(l),d=Xt(c)),f!==null&&d!==null&&isFinite(f)&&Number.isInteger(f)&&f>=0&&f<=1e3&&isFinite(d[0])&&isFinite(d[1])&&d[0]>0&&d[0]<=100&&d[1]<=100)return i=ni(n.options.invisiblePlus,n.serialize(l),n.serialize(c)),n.level+=1,i}if(n.options.prettify&&J(e)===2){let[a,u]=Vi(r),[l,c]=Vi(m(e,2));if(u<0&&c>0)return i=n.wrap(l,de)+"-"+n.wrap(a,de),n.level+=1,i}i=n.serialize(r);let o=J(e)+1,s=N(e);for(let a=2;a<o;a++)if(r=s[a-1],n.options.prettify){let[u,l]=Vi(r),c=n.wrap(u,de);l>0?c.startsWith("+")||c.startsWith("-")?i+=c:i+="+"+c:c.startsWith("+")?i+="-"+c.slice(1):c.startsWith("-")?i+="+"+c.slice(1):i+="-"+c}else{let u=n.wrap(r,de);u[0]==="-"||u[0]==="+"?i+=u:i+="+"+u}}return n.level+=1,i}function qu(n,e){if(e===null)return"";n.level-=1;let t="";if(n.options.prettify===!0){let[u,l]=ip(e);l.length>0&&(l.length===1&&l[0]===1?u.length===0?t="1":u.length===1?t=n.serialize(u[0]):t=qu(n,["Multiply",...u]):t=n.serialize(["Divide",u.length===1?u[0]:["Multiply",...u],l.length===1?l[0]:["Multiply",...l]]))}if(t)return n.level+=1,t;let i=!1,r=null,o=J(e)+1,s=N(e);n.options.prettify===!0&&s.length===2&&qn(s[1])&&!qn(s[0])&&(s=[s[1],s[0]]);let a=!1;for(let u=1;u<o;u++){if(r=s[u-1],r===null)continue;let l;if(qn(r)){l=n.serialize(r),l==="-1"&&!t?(t="",i=!i):(l[0]==="-"&&(l=l.slice(1),i=!i),t?t=ni(n.options.multiply,t,l):t=l),a=!0;continue}if(h(r)==="Power"){let c=Xt(m(r,2));if(c!=null){let[f,d]=c;if(f===1&&d!==null){t+=Fi(n,n.rootStyle(r,n.level),m(r,1),d),a=!1;continue}}}if(h(r)==="Power"&&!isNaN(R(m(r,1))??NaN)){l=n.serialize(r),t?t=ni(n.options.multiply,t,l):t=l,a=!0;continue}if(h(r)==="Negate"&&(r=m(r,1),i=!i),l=n.wrap(r,Ue),!t)t=l;else{let c=h(r);a&&(c==="Divide"||c==="Rational")?t=ni(n.options.multiply,t,l):n.options.invisibleMultiply?t=ni(n.options.invisibleMultiply,t,l):t=v([t,l])}a=!1}return n.level+=1,i?"-"+t:t}function sp(n){let e=n.parseGroup(),t=null;if(e===null?(e=n.parseToken(),t=n.parseToken()):t=n.parseGroup(),e=V(e),t=V(t),h(e)==="PartialDerivative"&&(h(t)==="PartialDerivative"||h(t)==="Multiply"&&h(m(t,1))==="PartialDerivative")){let i=m(e,3)??null,r=m(e,1);r==null&&(r=V(n.parseExpression()));let o=[];if(h(t)==="Multiply"){for(let s of N(t))if(h(s)==="PartialDerivative"){let a=m(s,2);a&&o.push(a)}}else{let s=m(t,2);s&&o.push(s)}return o.length>1&&(o=["List",...o]),["PartialDerivative",r,...o,i===null?1:i]}return["Divide",e,t]}function Ou(n,e){if(e===null)return"";let t=V(m(e,1)),i=V(m(e,2)),r=n.options.prettify?n.fractionStyle(e,n.level):"quotient";if(r==="inline-solidus"||r==="nice-solidus"){let u=n.wrapShort(t),l=n.wrapShort(i);return r==="inline-solidus"?`${u}/${l}`:`{}^{${u}}\\!\\!/\\!{}_{${l}}`}else{if(r==="reciprocal")return R(t)===1?n.wrap(i)+"^{-1}":n.wrap(t)+n.wrap(i)+"^{-1}";if(r==="factor")return R(i)===1?n.wrap(t):"\\frac{1}{"+n.serialize(i)+"}"+n.wrapString(n.serialize(t),n.groupStyle(e,1))}let o="\\frac";r==="block-quotient"?o="\\dfrac":r==="inline-quotient"&&(o="\\tfrac");let s=n.serialize(t),a=n.serialize(i);return`${o}{${s}}{${a}}`}function gs(n,e){if(!e)return"";let t=h(e),i=V(m(e,1));if(t==="Sqrt")return Fi(n,n.rootStyle(e,n.level-1),i,2);let r=V(m(e,2));if(t==="Root")return Fi(n,n.rootStyle(e,n.level-1),i,r);if(n.options.prettify){let o=R(r)??1;if(o===-1)return n.serialize(["Divide","1",i]);if(o<0)return n.serialize(["Divide","1",["Power",i,-o]]);if(h(r)==="Divide"||h(r)==="Rational"){if(R(m(r,1))===1){let s=n.rootStyle(e,n.level);return Fi(n,s,i,m(r,2))}if(R(m(r,2))===2)return`${n.serialize(["Sqrt",i])}^{${n.serialize(m(r,1))}}`}else if(h(r)==="Power"&&R(m(r,2))===-1){let s=n.rootStyle(e,n.level);return Fi(n,s,i,m(r,1))}}if(h(i)==="Power"){let o=m(i,1),s=m(i,2);return`
|
|
11
|
+
${n.wrapShort(o)}^{${ei("^",n.wrapShort(s),n.serialize(r))}}`}return ei("^",n.wrapShort(i),n.serialize(r))}var zu=[{name:"CatalanConstant",symbolTrigger:"G"},{name:"GoldenRatio",latexTrigger:"\\varphi"},{name:"EulerGamma",latexTrigger:"\\gamma"},{name:"Degrees",latexTrigger:["\\degree"],kind:"postfix",precedence:880,parse:(n,e)=>["Degrees",e],serialize:(n,e)=>v([n.serialize(m(e,1)),"\\degree"])},{latexTrigger:["\\degree"],kind:"postfix",precedence:880,parse:(n,e)=>["Degrees",e]},{latexTrigger:["^","<{>","\\circ","<}>"],kind:"postfix",parse:(n,e)=>["Degrees",e]},{latexTrigger:["^","\\circ"],kind:"postfix",parse:(n,e)=>["Degrees",e]},{latexTrigger:["\xB0"],kind:"postfix",precedence:880,parse:(n,e)=>["Degrees",e]},{latexTrigger:["\\ang"],parse:n=>{let e=n.parseGroup();return e===null?["Degrees"]:["Degrees",e]}},{latexTrigger:["\\infty"],parse:"PositiveInfinity"},{name:"PositiveInfinity",serialize:n=>n.options.positiveInfinity},{name:"NegativeInfinity",serialize:n=>n.options.negativeInfinity},{name:"ComplexInfinity",latexTrigger:["\\tilde","\\infty"],serialize:"\\tilde\\infty"},{latexTrigger:["\\tilde","<{>","\\infty","<}>"],parse:"ComplexInfinity"},{name:"Pi",kind:"symbol",latexTrigger:["\\pi"]},{latexTrigger:["\u03C0"],parse:"Pi"},{name:"ExponentialE",latexTrigger:["\\exponentialE"],parse:"ExponentialE",serialize:"\\exponentialE"},{latexTrigger:"\\operatorname{e}",parse:"ExponentialE"},{latexTrigger:"\\mathrm{e}",parse:"ExponentialE"},{kind:"function",symbolTrigger:"exp",parse:"Exp"},{latexTrigger:"\\exp",parse:"Exp"},{name:"ImaginaryUnit",latexTrigger:["\\imaginaryI"]},{latexTrigger:"\\operatorname{i}",parse:"ImaginaryUnit"},{latexTrigger:"\\mathrm{i}",parse:"ImaginaryUnit"},{name:"Abs",kind:"matchfix",openTrigger:"|",closeTrigger:"|",parse:(n,e)=>Y(e)?null:["Abs",e]},{kind:"matchfix",openTrigger:["\\vert"],closeTrigger:["\\vert"],parse:(n,e)=>Y(e)?null:["Abs",e]},{symbolTrigger:"abs",kind:"function",parse:"Abs"},{name:"Add",latexTrigger:["+"],kind:"infix",associativity:"any",precedence:de,parse:(n,e,t)=>{let i=n.parseExpression({...t,minPrec:de});return i===null?null:Kt("Add",e,i)},serialize:op},{kind:"prefix",latexTrigger:["+"],precedence:de,parse:(n,e)=>n.parseExpression({...e,minPrec:400})},{name:"Ceil",kind:"matchfix",openTrigger:"\\lceil",closeTrigger:"\\rceil",parse:(n,e)=>Y(e)?null:["Ceil",e]},{kind:"matchfix",openTrigger:["\u2308"],closeTrigger:["\u2309"],parse:(n,e)=>Y(e)?null:["Ceil",e]},{symbolTrigger:"ceil",kind:"function",parse:"Ceil"},{name:"Chop",symbolTrigger:"chop",kind:"function",parse:"Chop"},{name:"Complex",precedence:de-1,serialize:(n,e)=>{let t=n.serialize(m(e,1)),i=R(m(e,2));if(i===0)return t;let r=i===1?"\\imaginaryI":i===-1?"-\\imaginaryI":v([n.serialize(m(e,2)),"\\imaginaryI"]);return R(m(e,1))===0?r:i!==null&&i<0?v([t,r]):v([t,"+",r])}},{name:"Divide",latexTrigger:"\\frac",precedence:Un,parse:sp,serialize:Ou},{kind:"infix",latexTrigger:"\\over",associativity:"none",precedence:Un,parse:"Divide"},{latexTrigger:["\\/"],kind:"infix",associativity:"left",precedence:Un,parse:"Divide"},{latexTrigger:["/"],kind:"infix",associativity:"left",precedence:Un,parse:"Divide"},{latexTrigger:["\\div"],kind:"infix",associativity:"left",precedence:Un,parse:"Divide"},{name:"Exp",serialize:(n,e)=>{let t=m(e,1);return T(t)||R(t)!==null?v(["\\exponentialE^{",n.serialize(t),"}"]):v(["\\exp",n.wrap(V(t))])}},{name:"Factorial",latexTrigger:["!"],kind:"postfix",precedence:ds},{name:"Factorial2",latexTrigger:["!","!"],kind:"postfix",precedence:ds},{name:"Floor",kind:"matchfix",openTrigger:"\\lfloor",closeTrigger:"\\rfloor",parse:(n,e)=>Y(e)?null:["Floor",e]},{kind:"matchfix",openTrigger:["\u230A"],closeTrigger:["\u230B"],parse:(n,e)=>Y(e)?null:["Floor",e]},{symbolTrigger:"floor",kind:"function",parse:"Floor"},{latexTrigger:["\\Gamma"],parse:"Gamma"},{name:"GCD",latexTrigger:["\\gcd"]},{symbolTrigger:"gcd",kind:"function",parse:"GCD"},{symbolTrigger:"GCD",kind:"function",parse:"GCD"},{name:"Half",serialize:"\\frac12"},{name:"Lg",latexTrigger:["\\lg"],serialize:(n,e)=>"\\log_{10}"+n.wrapArguments(e),parse:n=>{let e=n.parseArguments("implicit");return e===null?"Lg":["Log",...e,10]}},{name:"Lb",latexTrigger:"\\lb",parse:n=>{let e=n.parseArguments("implicit");return e===null?"Log":["Log",e[0],2]}},{name:"Ln",latexTrigger:["\\ln"],parse:n=>Vu("Ln",n),serialize:(n,e)=>"\\ln"+n.wrapArguments(e)},{name:"Log",latexTrigger:["\\log"],parse:n=>Vu("Log",n),serialize:(n,e)=>{let[t,i]=N(e);return i?v(["\\log_{",n.serialize(i),"}",n.wrap(t)]):"\\log"+n.wrapArguments(e)}},{name:"LCM",symbolTrigger:"lcm",kind:"function"},{symbolTrigger:"LCM",kind:"function",parse:"LCM"},{symbolTrigger:"max",kind:"function",parse:"Max"},{symbolTrigger:"min",kind:"function",parse:"Min"},{name:"Max",latexTrigger:"\\max",kind:"function"},{name:"Min",latexTrigger:"\\min",kind:"function"},{name:"Supremum",latexTrigger:"\\sup",kind:"function"},{name:"Infimum",latexTrigger:"\\inf",kind:"function"},{name:"Limit",latexTrigger:"\\lim",kind:"expression",parse:n=>{if(!n.match("_"))return null;let e=n.parseGroup();if(h(e)!=="To")return null;let t=n.parseArguments("implicit");return t?["Limit",["Function",t[0],m(e,1)],m(e,2)]:null},serialize:(n,e)=>{let t=m(e,1),i=m(t,2),r=m(e,2);return v(["\\lim_{",n.serialize(i),"\\to",n.serialize(r),"}",n.serialize(m(t,1))])}},{name:"MinusPlus",latexTrigger:["\\mp"],kind:"infix",associativity:"any",precedence:Gn},{name:"Multiply",latexTrigger:["\\times"],kind:"infix",associativity:"any",precedence:Ue,serialize:qu},{latexTrigger:["\\cdot"],kind:"infix",associativity:"any",precedence:Ue,parse:(n,e,t)=>{let i=n.parseExpression({...t,minPrec:Ue+2});return i===null?null:Kt("Multiply",e,i)}},{latexTrigger:["*"],kind:"infix",associativity:"any",precedence:Ue,parse:(n,e,t)=>{let i=n.parseExpression({...t,minPrec:Ue+2});return i===null?["Multiply",e,Ri]:Kt("Multiply",e,i)}},{name:"Mod",latexTrigger:"\\bmod",kind:"infix",precedence:Un,serialize:(n,e)=>{if(J(e)!==2)return"";let t=n.serialize(m(e,1)),i=n.serialize(m(e,2));return v([t,"\\bmod",i])}},{latexTrigger:"\\mod",kind:"infix",precedence:Un,parse:"Mod"},{latexTrigger:"\\pmod",kind:"prefix",precedence:L,parse:n=>{let e=n.parseGroup()??n.parseToken();return["Mod",V(e)]}},{name:"Congruent",serialize:(n,e)=>{let t=n.serialize(m(e,1)),i=n.serialize(m(e,2));if(m(e,3)===null)return v([t,"\\equiv",i]);let r=n.serialize(m(e,3));return v([t,"\\equiv",i,"\\pmod{",r,"}"])}},{name:"Negate",latexTrigger:["-"],kind:"prefix",precedence:fs+1,parse:(n,e)=>{n.skipSpace();let t=n.parseExpression({...e,minPrec:fs+3});return t===null?null:["Negate",t]}},{kind:"matchfix",openTrigger:"||",closeTrigger:"||",parse:(n,e)=>Y(e)?null:["Norm",e]},{name:"Norm",kind:"matchfix",openTrigger:["\\left","\\Vert"],closeTrigger:["\\right","\\Vert"],parse:(n,e)=>Y(e)?null:["Norm",e]},{name:"PlusMinus",latexTrigger:["\\pm"],kind:"infix",associativity:"any",precedence:Gn,serialize:(n,e)=>{let t=m(e,1);if(t===null)return"\\pm";if(J(e)===1)return v(["\\pm",n.serialize(t)]);let i=m(e,2);return v([n.serialize(t),"\\pm",n.serialize(i)])}},{latexTrigger:["\\pm"],kind:"prefix",precedence:Gn,parse:(n,e)=>{let t=n.parseExpression({...e,minPrec:400});return["PlusMinus",0,V(t)]}},{latexTrigger:["\\plusmn"],kind:"infix",associativity:"any",precedence:Gn,parse:(n,e,t)=>{let i=n.parseExpression({...t,minPrec:400});return["PlusMinus",e,V(i)]}},{latexTrigger:["\\plusmn"],kind:"prefix",precedence:Gn,parse:(n,e)=>{let t=n.parseExpression({...e,minPrec:400});return["PlusMinus",V(t)]}},{name:"Power",latexTrigger:["^"],kind:"infix",serialize:gs},{latexTrigger:"\\prod",precedence:Ue,name:"Product",parse:$u("Product","Multiply",Ue),serialize:Fu("\\prod")},{name:"Rational",precedence:Un,serialize:(n,e)=>e&&J(e)===1?"\\operatorname{Rational}"+n.wrapArguments(e):Ou(n,e)},{name:"Reduce",serialize:(n,e)=>{let t=m(e,1);if(!t)return"";let i=m(e,2);return T(i)==="Add"?`\\sum ${n.serialize(t)}`:T(i)==="Multiply"?`\\prod ${n.serialize(t)}`:`\\operatorname{Reduce}\\left(${n.serialize(t)}, ${n.serialize(m(e,2))}\\right)`}},{name:"Root",serialize:gs},{name:"Round",symbolTrigger:"round",kind:"function"},{name:"Square",precedence:720,serialize:(n,e)=>n.wrapShort(m(e,1))+"^2"},{latexTrigger:["\\sum"],precedence:de,name:"Sum",parse:$u("Sum","Add",Ue),serialize:Fu("\\sum")},{name:"Sign",symbolTrigger:"sgn",kind:"function"},{name:"Sqrt",latexTrigger:["\\sqrt"],parse:rp,serialize:gs},{name:"Subtract",latexTrigger:["-"],kind:"infix",associativity:"left",precedence:de+2,parse:(n,e,t)=>{n.index-=1;let i=n.parseExpression({...t,minPrec:de+3});return i===null?null:["Add",e,i]},serialize:(n,e)=>{let t=n.wrap(m(e,1),de+2),i=n.wrap(m(e,2),de+3);return v([t,"-",i])}}];function ap(n,e){if(n!==null){if(T(n))return{index:T(n)??"Nothing",upper:e};if(h(n)==="GreaterEqual"){let t=T(m(n,1))??"Nothing",i=m(n,2)??1;return{index:t,lower:i,upper:e}}if(h(n)==="Equal"){let t=T(m(n,1))??"Nothing",i=m(n,2);if(h(i)==="Range"){let o=m(i,1)??1,s=m(i,2)??void 0;return{index:t,lower:o,upper:s}}return{index:t,lower:i??1,upper:e}}}}function up(n,e){Y(n)&&(n=null),Y(e)&&(e=null);let t=n===null?[]:zn(n)??[n],i=e===null?[]:zn(e)??[e];return t.map((r,o)=>ap(r,i[o])).filter(r=>r!==void 0)}function $u(n,e,t){return i=>{i.skipSpace();let r=null,o=null;for(;!(o&&r)&&(i.peek==="_"||i.peek==="^");)i.match("_")?o=i.parseGroup()??i.parseToken():i.match("^")&&(r=i.parseGroup()??i.parseToken()),i.skipSpace();if(!r&&!o){let l=i.parseExpression({minPrec:t});if(l)return["Reduce",l,e]}let s=up(o,r);i.pushSymbolTable();for(let l of s)i.addSymbol(l.index,"symbol");let a=i.parseExpression({minPrec:t});if(i.popSymbolTable(),a===null)return[n];let u=[];for(let l of s){let c=l.lower,f=l.upper,d=l.index??"Nothing";f!=null?u.push(["Tuple",d,c??1,f]):c!=null?u.push(["Tuple",d,c]):u.push(["Tuple",d])}return[n,a,...u]}}function Fu(n){return(e,t)=>{if(!m(t,1))return n;let i=m(t,2),r=h(i);r!=="Tuple"&&r!=="Triple"&&r!=="Pair"&&r!=="Single"&&(i=null);let o=m(i,1);o!==null&&h(o)==="Hold"&&(o=m(o,1));let s=m(t,1);if(i!=null)return m(t,2)!==null?v([n,e.serialize(s)]):v([n,"_{",e.serialize(m(t,2)),"}",e.serialize(s)]);let a=m(i,2),u=[];o&&T(o)!=="Nothing"&&a?u=[e.serialize(o),"=",e.serialize(a)]:o&&T(o)!=="Nothing"?u=[e.serialize(o)]:a!==null&&(u=[e.serialize(a)]),u.length>0&&(u=["_{",...u,"}"]);let l=[];return m(i,3)!==null&&(l=["^{",e.serialize(m(i,3)),"}"]),v([n,...l,...u,e.serialize(s)])}}function Vu(n,e){let t=null;e.match("_")&&(t=e.parseGroup()??e.parseToken());let i=e.parseArguments("implicit");return i===null&&t===null?[n]:i===null?[n,t]:t===null?[n,...i]:t===10?["Log",i[0]]:t===2?["Lb",...i]:["Log",i[0],t]}function Vi(n){let e=1,t=n;do{n=t;let i=h(n);if(i==="Negate")e*=-1,t=m(n,1);else if(i==="Multiply"){let[r,o]=Vi(m(n,1));o<0&&(e*=-1,r===1?t=["Multiply",...N(n).slice(1)]:t=["Multiply",r,...N(n).slice(1)])}else if(i==="Divide"||i==="Rational"){let[r,o]=Vi(m(n,1));o<0&&(e*=-1,t=[i,r,m(n,2)])}else{let r=R(n);r!==null&&r<0&&(e*=-1,t=-r)}}while(t!==n);return[n,e]}var _t=[{latexTrigger:["\\not","<"],kind:"infix",associativity:"any",precedence:246,parse:"NotLess"},{name:"NotLess",latexTrigger:["\\nless"],kind:"infix",associativity:"any",precedence:246},{latexTrigger:["<"],kind:"infix",associativity:"any",precedence:245,parse:"Less"},{name:"Less",latexTrigger:["\\lt"],kind:"infix",associativity:"any",precedence:245},{latexTrigger:["<","="],kind:"infix",associativity:"any",precedence:241,parse:"LessEqual"},{name:"LessEqual",latexTrigger:["\\le"],kind:"infix",associativity:"any",precedence:241},{latexTrigger:["\\leq"],kind:"infix",associativity:"any",precedence:241,parse:"LessEqual"},{latexTrigger:["\\leqslant"],kind:"infix",associativity:"any",precedence:L+5,parse:"LessEqual"},{name:"LessNotEqual",latexTrigger:["\\lneqq"],kind:"infix",associativity:"any",precedence:L},{name:"NotLessNotEqual",latexTrigger:["\\nleqq"],kind:"infix",associativity:"any",precedence:L},{name:"LessOverEqual",latexTrigger:["\\leqq"],kind:"infix",associativity:"any",precedence:L+5},{name:"GreaterOverEqual",latexTrigger:["\\geqq"],kind:"infix",associativity:"any",precedence:L+5,parse:"GreaterEqual"},{name:"Equal",latexTrigger:["="],kind:"infix",associativity:"right",precedence:L},{latexTrigger:["*","="],kind:"infix",associativity:"right",precedence:L,parse:"StarEqual"},{name:"StarEqual",latexTrigger:["\\star","="],kind:"infix",associativity:"right",precedence:L},{name:"PlusEqual",latexTrigger:["+","="],kind:"infix",associativity:"right",precedence:L},{name:"MinusEqual",latexTrigger:["-","="],kind:"infix",associativity:"right",precedence:L},{name:"SlashEqual",latexTrigger:["/","="],kind:"infix",associativity:"right",precedence:L},{name:"EqualEqual",latexTrigger:["=","="],kind:"infix",associativity:"right",precedence:L},{name:"EqualEqualEqual",latexTrigger:["=","=","="],kind:"infix",associativity:"right",precedence:L+5},{name:"TildeFullEqual",latexTrigger:["\\cong"],kind:"infix",associativity:"right",precedence:L},{name:"NotTildeFullEqual",latexTrigger:["\\ncong"],kind:"infix",associativity:"right",precedence:L},{name:"Approx",latexTrigger:["\\approx"],kind:"infix",associativity:"right",precedence:247},{name:"NotApprox",latexTrigger:["\\not","\\approx"],kind:"infix",associativity:"right",precedence:247},{name:"ApproxEqual",latexTrigger:["\\approxeq"],kind:"infix",associativity:"right",precedence:L},{name:"NotApproxEqual",latexTrigger:["\\not","\\approxeq"],kind:"infix",associativity:"right",precedence:250},{name:"NotEqual",latexTrigger:["\\ne"],kind:"infix",associativity:"right",precedence:255},{name:"Unequal",latexTrigger:["!","="],kind:"infix",associativity:"right",precedence:L},{name:"GreaterEqual",latexTrigger:["\\ge"],kind:"infix",associativity:"right",precedence:242},{latexTrigger:["\\geq"],kind:"infix",associativity:"right",precedence:242,parse:"GreaterEqual"},{latexTrigger:[">","="],kind:"infix",associativity:"right",precedence:243,parse:"GreaterEqual"},{latexTrigger:["\\geqslant"],kind:"infix",associativity:"right",precedence:L+5,parse:"GreaterEqual"},{name:"GreaterNotEqual",latexTrigger:["\\gneqq"],kind:"infix",associativity:"right",precedence:L},{name:"NotGreaterNotEqual",latexTrigger:["\\ngeqq"],kind:"infix",associativity:"right",precedence:L},{latexTrigger:[">"],kind:"infix",associativity:"right",precedence:245,parse:"Greater"},{name:"Greater",latexTrigger:["\\gt"],kind:"infix",associativity:"right",precedence:245},{name:"NotGreater",latexTrigger:["\\ngtr"],kind:"infix",associativity:"right",precedence:244},{latexTrigger:["\\not",">"],kind:"infix",associativity:"right",precedence:244,parse:"NotGreater"},{name:"RingEqual",latexTrigger:["\\circeq"],kind:"infix",associativity:"right",precedence:L},{name:"TriangleEqual",latexTrigger:["\\triangleq"],kind:"infix",associativity:"right",precedence:L},{name:"DotEqual",latexTrigger:["\\doteq"],kind:"infix",associativity:"right",precedence:L+5},{name:"DotEqualDot",latexTrigger:["\\doteqdot"],kind:"infix",associativity:"right",precedence:L+5},{name:"FallingDotEqual",latexTrigger:["\\fallingdotseq"],kind:"infix",associativity:"right",precedence:L+5},{name:"RisingDotEqual",latexTrigger:["\\fallingdotseq"],kind:"infix",associativity:"right",precedence:L+5},{name:"QuestionEqual",latexTrigger:["\\questeq"],kind:"infix",associativity:"right",precedence:L},{name:"MuchLess",latexTrigger:["\\ll"],kind:"infix",associativity:"right",precedence:L},{name:"MuchGreater",latexTrigger:["\\gg"],kind:"infix",associativity:"right",precedence:L},{name:"Precedes",latexTrigger:["\\prec"],kind:"infix",associativity:"right",precedence:L},{name:"Succeeds",latexTrigger:["\\succ"],kind:"infix",associativity:"right",precedence:L},{name:"PrecedesEqual",latexTrigger:["\\preccurlyeq"],kind:"infix",associativity:"right",precedence:L},{name:"SucceedsEqual",latexTrigger:["\\curlyeqprec"],kind:"infix",associativity:"right",precedence:L},{name:"NotPrecedes",latexTrigger:["\\nprec"],kind:"infix",associativity:"right",precedence:L},{name:"NotSucceeds",latexTrigger:["\\nsucc"],kind:"infix",associativity:"right",precedence:L},{name:"Between",latexTrigger:["\\between"],kind:"infix",associativity:"right",precedence:L+5}];function qi(n){return typeof n=="string"?n.startsWith("$")&&n.endsWith("$"):!1}function ut(n){if(typeof n=="number")return n.toString();if(typeof n=="string"){let e=n.trim();if(e.startsWith("$$")&&e.endsWith("$$"))return e.slice(2,-2);if(e.startsWith("$")&&e.endsWith("$"))return e.slice(1,-1)}return Array.isArray(n)?ut(v(n)):null}function Je(n){return typeof n!="string"?!1:_t.some(e=>e.name===n)}function vn(n){return typeof n!="string"?!1:["Less","LessEqual","Greater","GreaterEqual"].includes(n)}function ti(n){return typeof n!="string"?!1:["Equal","NotEqual"].includes(n)}function hs(n,e,t,i,r){if(e&&e.minPrec>=i)return null;let o=t?[t]:["Nothing"],s=!1;for(;!s;){for(s=!0,n.skipSpace();n.match(r);)o.push("Nothing"),n.skipSpace();if(n.atTerminator(e))o.push("Nothing");else{let a=n.parseExpression({...e,minPrec:i});o.push(a??"Nothing"),s=a===null}s||(n.skipSpace(),s=!n.match(r))}return o}function Cn(n=""){return(e,t)=>{if(!t)return"";let i=N(t);if(i.length===0)return"";if(i.length===1)return e.serialize(i[0]);n={"&":"\\&",":":"\\colon","|":"\\mvert","-":"-","\xB7":"\\cdot","\u2012":"-","\u2013":"--","\u2014":"---","\u2015":"-","\u2022":"\\bullet","\u2026":"\\ldots"}[n]??n;let r=i.reduce((o,s)=>(o.push(e.serialize(s),n),o),[]);return r.pop(),v(r)}}var Gu=[{latexTrigger:["\\placeholder"],kind:"symbol",parse:n=>{for(;n.match("<space>"););if(n.match("["))for(;!n.match("]")&&!n.atBoundary;)n.nextToken();for(;n.match("<space>"););if(n.match("<{>"))for(;!n.match("<}>")&&!n.atBoundary;)n.nextToken();return"Nothing"}},{name:"ContinuationPlaceholder",latexTrigger:["\\dots"]},{latexTrigger:["\\ldots"],parse:"ContinuationPlaceholder"},{latexTrigger:[".",".","."],parse:"ContinuationPlaceholder"},{name:"Function",latexTrigger:["\\mapsto"],kind:"infix",precedence:Gn,parse:(n,e)=>{let t=[];if(h(e)==="Delimiter"&&(e=m(e,1)??"Nothing"),h(e)==="Sequence")for(let r of N(e)){if(!T(r))return null;t.push(T(r))}else{if(!T(e))return null;t=[T(e)]}let i=n.parseExpression({minPrec:Gn})??"Nothing";return h(i)==="Delimiter"&&(i=m(i,1)??"Nothing"),h(i)==="Sequence"&&(i=["Block",...N(i)]),["Function",i,...t]},serialize:(n,e)=>{let t=N(e);return t.length<1?"()\\mapsto()":t.length===1?v(["()","\\mapsto",n.serialize(m(e,1))]):t.length===2?v([n.serialize(m(e,2)),"\\mapsto",n.serialize(m(e,1))]):v([n.wrapString(N(e)?.slice(1).map(i=>n.serialize(i)).join(", "),"normal"),"\\mapsto",n.serialize(m(e,1))])}},{name:"Apply",kind:"function",symbolTrigger:"apply",serialize:(n,e)=>{let t=m(e,1),i=h(t);if(i==="InverseFunction"||i==="Derivative"){let s=n.options.applyFunctionStyle(e,n.level),a=N(e).slice(1);return n.serializeFunction(t,n.dictionary.ids.get(i))+n.wrapString(a.map(u=>n.serialize(u)).join(", "),s)}let r=m(e,2);if(typeof t=="string"||!r){let s=N(e).slice(1);return n.serialize(s)}if(J(e)===2)return v([n.wrap(t,20),"\\lhd",n.wrap(r,20)]);let o=n.options.applyFunctionStyle(e,n.level);return v(["\\operatorname{apply}",n.wrapString(n.serialize(i)+", "+n.serialize(["List",...N(e)]),o)])}},{latexTrigger:"\\lhd",kind:"infix",precedence:20,parse:"Apply"},{latexTrigger:"\\rhd",kind:"infix",precedence:20,parse:(n,e)=>["Apply",n.parseExpression({minPrec:21})??"Nothing",e]},{name:"EvaluateAt",openTrigger:".",closeTrigger:"|",kind:"matchfix",serialize:(n,e)=>{let t=m(e,1);if(!t)return"";let i=N(e).slice(1);if(h(t)==="Function"){let r=N(t).slice(1),o=m(t,1);if(h(o)==="Block"&&J(o)===1&&(o=m(o,1)),r.length>0)return`\\left.\\left(${n.serialize(o)}\\right)\\right|_{${r.map((s,a)=>`${n.serialize(s)}=${n.serialize(i[a])}`).join(", ")}}`}return`\\left.\\left(${n.serialize(t)}\\right)\\right|_{${i.map(r=>n.serialize(r)).join(", ")}}`}},{name:"Assign",latexTrigger:"\\coloneq",kind:"infix",associativity:"right",precedence:Oi,serialize:(n,e)=>{let t=ss(m(e,1));if(h(m(e,2))==="Function"){let i=m(e,2),r=ss(m(i,1)),o=N(i).slice(1);return v([n.serialize(t),n.wrapString(o.map(s=>n.serialize(s)).join(", "),n.options.applyFunctionStyle(e,n.level)),"\\coloneq",n.serialize(r)])}return v([n.serialize(t),"\\coloneq",n.serialize(m(e,2))])},parse:Qr},{latexTrigger:"\\coloneqq",kind:"infix",associativity:"right",precedence:Oi,parse:Qr},{latexTrigger:"\\colonequals",kind:"infix",associativity:"right",precedence:Oi,parse:Qr},{latexTrigger:[":","="],kind:"infix",associativity:"right",precedence:Oi,parse:Qr},{name:"BaseForm",serialize:(n,e)=>{let t=R(m(e,2))??NaN;if(isFinite(t)&&t>=2&&t<=36){let i=R(m(e,1))??NaN;if(isFinite(i)&&Number.isInteger(i)){let r=Number(i).toString(t),o=0;if(t===2||t===10?o=4:t===16?o=2:t>16&&(o=4),o>0){let s=r;r="";for(let a=0;a<s.length;a++)a>0&&a%o===0&&(r="\\, "+r),r=s[s.length-a-1]+r}return`(\\text{${r}}_{${t}}`}}return"\\operatorname{BaseForm}("+n.serialize(m(e,1))+", "+n.serialize(m(e,2))+")"}},{name:"Sequence",serialize:Cn(" ")},{name:"InvisibleOperator",serialize:Cn("")},{name:"Delimiter",serialize:(n,e)=>{let t=n.options.groupStyle(e,n.level+1),i=m(e,1),r={Set:"{,}",List:"[,]",Tuple:"(,)",Single:"(,)",Pair:"(,)",Triple:"(,)",Sequence:"(,)",String:'""'}[h(i)],o=r?i:["Sequence",i];if(r??="(,)",J(e)>1){let c=F(m(e,2));typeof c=="string"&&c.length<=3&&(r=c)}let[s,a,u]=["","",""];r.length===3?[s,a,u]=r:r.length===2?[s,u]=r:r.length===1&&(a=r);let l=i?o?Cn(a)(n,o):n.serialize(i):"";return n.wrapString(l,t,s+u)}},{name:"Tuple",serialize:(n,e)=>v(["(",Cn(",")(n,e),")"])},{name:"Pair",serialize:(n,e)=>v(["(",Cn(",")(n,e),")"])},{name:"Triple",serialize:(n,e)=>v(["(",Cn(",")(n,e),")"])},{name:"Single",serialize:(n,e)=>v(["(",Cn(",")(n,e),")"])},{name:"Domain",serialize:(n,e)=>h(e)==="Error"?n.serialize(e):`\\mathbf{${n.serialize(m(e,1))}}`},{latexTrigger:["\\mathtip"],parse:n=>{let e=n.parseGroup();return n.parseGroup(),e}},{latexTrigger:["\\texttip"],parse:n=>{let e=n.parseGroup();return n.parseGroup(),e}},{latexTrigger:["\\error"],parse:n=>["Error",n.parseGroup()]},{name:"Error",serialize:(n,e)=>{let t=m(e,1);if(F(t)==="missing")return`\\error{${n.options.missingSymbol??"\\placeholder{}"}}`;let i=fp(n,e)||"\\blacksquare",r=h(t)==="ErrorCode"?F(m(t,1)):F(t);return r==="incompatible-type"?T(m(t,3))==="Undefined"?`\\mathtip{\\error{${i}}}{\\notin ${n.serialize(m(t,2))}}`:`\\mathtip{\\error{${i}}}{\\in ${n.serialize(m(t,3))}\\notin ${n.serialize(m(t,2))}}`:typeof r=="string"?`\\error{${i}}`:`\\error{${i}}`}},{name:"ErrorCode",serialize:(n,e)=>{let t=F(m(e,1));return t==="missing"?n.options.missingSymbol??"\\placeholder{}":t==="unexpected-command"||t==="unexpected-operator"||t==="unexpected-token"||t==="invalid-symbol"||t==="unknown-environment"||t==="unexpected-base"||t==="incompatible-type"?"":`\\texttip{\\error{\\blacksquare}}{\\mathtt{${t}}}`}},{name:"FromLatex",serialize:(n,e)=>`\\texttt{${cp(F(m(e,1)))}}`},{name:"Latex",serialize:(n,e)=>e===null?"":v(Zr(e,t=>F(t)??n.serialize(t)))},{name:"LatexString",serialize:(n,e)=>e===null?"":v(Zr(e,t=>n.serialize(t)))},{name:"LatexTokens",serialize:lp},{name:"At",kind:"postfix",precedence:810,latexTrigger:["["],parse:xs("]"),serialize:(n,e)=>v(["\\lbrack",Cn(", ")(n,e),"\\rbrack"])},{kind:"postfix",precedence:810,latexTrigger:["\\lbrack"],parse:xs("\\rbrack")},{kind:"postfix",precedence:810,latexTrigger:["\\left","\\lbrack"],parse:xs("\\right","\\rbrack")},{kind:"postfix",latexTrigger:["_"],parse:(n,e,t)=>{let i=n.parseGroup()??n.parseToken();return["Subscript",e,i]}},{name:"List",kind:"matchfix",openTrigger:"[",closeTrigger:"]",parse:Uu,serialize:pp},{kind:"matchfix",openTrigger:"(",closeTrigger:")",parse:dp},{latexTrigger:[","],kind:"infix",precedence:20,parse:(n,e,t)=>{let i=hs(n,t,e,20,",");return i===null?null:["Delimiter",["Sequence",...i],{str:","}]}},{latexTrigger:[","],kind:"prefix",precedence:20,parse:(n,e)=>{let t=hs(n,e,null,20,",");return t===null?null:["Delimiter",["Sequence",...t],{str:","}]}},{name:"Range",latexTrigger:[".","."],kind:"infix",precedence:800,parse:mp,serialize:(n,e)=>{let t=N(e);if(t.length===0)return"";if(t.length===1)return"1.."+n.serialize(m(e,1));if(t.length===2)return n.wrap(m(e,1),10)+".."+n.wrap(m(e,2),10);if(t.length===3){let i=R(m(e,3)),r=R(m(e,1));return i!==null&&r!==null?n.wrap(m(e,1),10)+".."+n.wrap(r+i,10)+".."+n.wrap(m(e,2),10):n.wrap(m(e,1),10)+"..("+(n.wrap(m(e,1),de)+"+"+n.wrap(m(e,3),de))+").."+n.wrap(m(e,2),10)}return""}},{latexTrigger:[";"],kind:"infix",precedence:19,parse:(n,e,t)=>{let i=hs(n,t,e,19,";");return i===null?null:["Delimiter",["Sequence",...i],"';'"]}},{name:"String",latexTrigger:["\\text"],parse:n=>Zn(n),serialize:(n,e)=>{let t=N(e);return t.length===0?"\\text{}":v(["\\text{",t.map(i=>n.serialize(i)).join(""),"}"])}},{name:"Subscript",latexTrigger:["_"],kind:"infix",serialize:(n,e)=>J(e)===2?n.serialize(m(e,1))+"_{"+n.serialize(m(e,2))+"}":"_{"+n.serialize(m(e,1))+"}"},{name:"Superplus",latexTrigger:["^","+"],kind:"postfix"},{name:"Subplus",latexTrigger:["_","+"],kind:"postfix"},{name:"Superminus",latexTrigger:["^","-"],kind:"postfix"},{name:"Subminus",latexTrigger:["_","-"],kind:"postfix"},{latexTrigger:["^","*"],kind:"postfix",parse:(n,e)=>["Superstar",e]},{latexTrigger:["_","*"],kind:"postfix",parse:(n,e)=>["Substar",e]},{name:"Substar",latexTrigger:["_","\\star"],kind:"postfix"},{name:"Superdagger",latexTrigger:["^","\\dagger"],kind:"postfix"},{latexTrigger:["^","\\dag"],kind:"postfix",parse:(n,e)=>["Superdagger",e]},{name:"Prime",latexTrigger:["^","\\prime"],kind:"postfix",parse:(n,e)=>jn(n,e,1),serialize:(n,e)=>{let t=R(m(e,2))??1,i=n.serialize(m(e,1));return t===1?i+"^\\prime":t===2?i+"^\\doubleprime":t===3?i+"^\\tripleprime":i+"^{("+n.serialize(m(e,2))+")}"}},{latexTrigger:"^{\\prime\\prime}",kind:"postfix",parse:(n,e)=>jn(n,e,2)},{latexTrigger:"^{\\prime\\prime\\prime}",kind:"postfix",parse:(n,e)=>jn(n,e,3)},{latexTrigger:["^","\\doubleprime"],kind:"postfix",parse:(n,e)=>jn(n,e,2)},{latexTrigger:["^","\\tripleprime"],kind:"postfix",parse:(n,e)=>jn(n,e,3)},{latexTrigger:"'",kind:"postfix",precedence:810,parse:(n,e)=>jn(n,e,1)},{latexTrigger:"\\prime",kind:"postfix",precedence:810,parse:(n,e)=>jn(n,e,1)},{latexTrigger:"\\doubleprime",kind:"postfix",precedence:810,parse:(n,e)=>jn(n,e,2)},{latexTrigger:"\\tripleprime",kind:"postfix",precedence:810,parse:(n,e)=>jn(n,e,3)},{latexTrigger:["^","<{>","("],kind:"postfix",parse:(n,e,t)=>{let i=T(e);if(!i||!n.getSymbolType(i).matches("function"))return null;n.addBoundary([")"]);let r=n.parseExpression(t);return!n.matchBoundary()||!n.match("<}>")?null:["Derivative",e,r]}},{name:"InverseFunction",latexTrigger:"^{-1",kind:"postfix",parse:(n,e)=>{let t=T(e);if(!t||!n.getSymbolType(t).matches("function"))return null;let i=0;for(;!n.atEnd&&!n.match("<}>");)if(n.match("'"))i++;else if(n.match("\\prime"))i++;else if(n.match("\\doubleprime"))i+=2;else if(n.match("\\tripleprime"))i+=3;else return null;return i===1?["Derivative",["InverseFunction",e]]:i>0?["Derivative",["InverseFunction",e],i]:["InverseFunction",e]},serialize:(n,e)=>n.serialize(m(e,1))+"^{-1}"},{name:"Derivative",serialize:(n,e)=>{let t=R(m(e,2))??1,i=n.serialize(m(e,1));return t===1?i+"^{\\prime}":t===2?i+"^{\\doubleprime}":t===3?i+"^{\\tripleprime}":i+"^{("+n.serialize(m(e,2))+")}"}},{kind:"environment",name:"Which",symbolTrigger:"cases",parse:ys,serialize:(n,e)=>{let t=[],i=N(e);if(i.length>0)for(let r=0;r<=i.length-2;r+=2){let o=[];o.push(n.serialize(i[r+1])),o.push(n.serialize(i[r])),t.push(o.join("&"))}return v(["\\begin{cases}",t.join("\\\\"),"\\end{cases}"])}},{kind:"environment",symbolTrigger:"dcases",parse:ys},{kind:"environment",symbolTrigger:"rcases",parse:ys}];function Zn(n,e){if(!n.match("<{>"))return"''";let t=[],i="",r=null,o=()=>{r!==null&&i?t.push(["Annotated",`'${i}'`,us(r)]):i&&t.push(`'${i}'`),i="",r=null};for(;!n.atEnd&&!n.match("<}>");)if(n.peek==="<{>")o(),t.push(Zn(n));else if(n.match("\\textbf"))o(),t.push(Zn(n,{fontWeight:"bold"}));else if(n.match("\\textmd"))o(),t.push(Zn(n,{fontStyle:"normal"}));else if(n.match("\\textup"))o(),t.push(Zn(n,{fontStyle:"normal"}));else if(n.match("\\textsl"))o(),t.push(Zn(n,{fontStyle:"italic"}));else if(n.match("\\textit"))o(),t.push(Zn(n,{fontStyle:"italic"}));else if(n.match("\\texttt"))o(),t.push(Zn(n,{fontFamily:"monospace"}));else if(n.match("\\textsf"))o(),t.push(Zn(n,{fontFamily:"sans-serif"}));else if(n.match("\\textcolor")){let a=n.index,u=n.parseStringGroup(),l=n.parseExpression();u!==null&&l!==null?t.push(["Annotated",l,{dict:{color:u}}]):(n.index=a,i+="\\textcolor")}else if(n.match("\\color")){let a=n.parseStringGroup();a!==null&&(o(),r={color:a})}else if(n.match("<space>"))i+=" ";else if(n.match("<$>")){let a=n.index,u=n.parseExpression()??"Nothing";n.skipSpace(),n.match("<$>")?t.push(u):(i+="$",n.index=a)}else if(n.match("<$$>")){let a=n.index,u=n.parseExpression()??"Nothing";n.skipSpace(),n.match("<$$>")?t.push(u):(i+="$$",n.index=a)}else{let a=n.parseChar()??n.nextToken();i+={"\\enskip":"\u2002","\\enspace":"\u2002","\\quad":"\u2003","\\qquad":"\u2003\u2003","\\space":"\u2003","\\ ":"\u2003","\\;":"\u2004","\\,":"\u2009","\\:":"\u205F","\\!":"","\\{":"{","\\}":"}","\\$":"$","\\&":"&","\\#":"#","\\%":"%","\\_":"_","\\textbackslash":"\\","\\textasciitilde":"~","\\textasciicircum":"^","\\textless":"<","\\textgreater":">","\\textbar":"|","\\textunderscore":"_","\\textbraceleft":"{","\\textbraceright":"}","\\textasciigrave":"`","\\textquotesingle":"'","\\textquotedblleft":"\u201C","\\textquotedblright":"\u201D","\\textquotedbl":'"',"\\textquoteleft":"\u2018","\\textquoteright":"\u2019","\\textbullet":"\u2022","\\textdagger":"\u2020","\\textdaggerdbl":"\u2021","\\textsection":"\xA7","\\textparagraph":"\xB6","\\textperiodcentered":"\xB7","\\textellipsis":"\u2026","\\textemdash":"\u2014","\\textendash":"\u2013","\\textregistered":"\xAE","\\texttrademark":"\u2122","\\textdegree":"\xB0"}[a]??a}o();let s;return t.length===1?s=t[0]:t.every(a=>F(a)!==null)?s="'"+t.map(a=>F(a)).join()+"'":s=["Text",...t],e?["Annotated",s,us(e)]:s}function lp(n,e){return e===null?"":v(Zr(e,t=>{let i=F(t);return i===null?n.serialize(t):i==="<{>"?"{":i==="<}>"?"}":i==="<$>"?"$":i==="<$$>"?"$$":i==="<space>"?" ":i}))}function cp(n){return n===null?"":n.replace(/[{}\[\]\\:\-\$%]/g,e=>({"{":"\\lbrace ","}":"\\rbrace ","[":"\\lbrack ","]":"\\rbrack ",":":"\\colon ","\\":"\\backslash "})[e]??"\\"+e)}function fp(n,e){let t=m(e,2);return t?h(t)==="LatexString"?F(m(t,1))??"":h(t)==="Hold"?n.serialize(m(t,1)):n.serialize(t):""}function jn(n,e,t){let i=h(e);if(i==="Derivative"||i==="Prime"){let o=R(m(e,2))??1;return[i,V(m(e,1)),o+t]}let r=T(e);return r&&n.getSymbolType(r).matches("function")||h(e)?t===1?["Derivative",e]:["Derivative",e,t]:t===1?["Prime",V(e)]:["Prime",V(e),t]}function dp(n,e){if(Y(e))return["Delimiter"];let t=h(e);if(t==="Delimiter"&&m(e,2)!==null){let i=F(m(e,2));if(i?.length===1)return["Delimiter",m(e,1)??"Nothing",{str:`(${i})`}]}return t==="Matrix"&&(F(m(e,2))??"..")===".."?["Matrix",m(e,1)]:["Delimiter",e]}function Uu(n,e){if(Y(e))return["List"];let t=h(e);if(t==="Range"||t==="Linspace")return e;if(t==="Sequence")return["List",...N(e)];if(t==="Delimiter"){let i=F(m(e,2))??"...";if(i===";"||i===".;.")return["List",...(N(m(e,1))??[]).map(r=>Uu(n,r))];if(i===","||i===".,.")return e=m(e,1),h(e)==="Sequence"?["List",...N(e)]:["List",e??"Nothing"]}return["List",e]}function pp(n,e){return J(e)>1&&N(e).every(t=>{let i=h(t);return ti(i)||vn(i)})?v(["\\begin{cases}",Cn("\\\\")(n,e),"\\end{cases}"]):v(["\\bigl\\lbrack",Cn(", ")(n,e),"\\bigr\\rbrack"])}function mp(n,e){if(e===null)return null;let t=n.parseExpression({minPrec:270});if(t===null)return null;if(h(t)==="Range"){let i=m(t,1),r=m(t,2);return i&&r?["Range",e,r,["Subtract",i,e]]:null}return["Range",e,t]}var ii={"(":"(",")":")","[":"\\lbrack","]":"\\rbrack","\u27E6":"\\llbrack","\u27E7":"\\rrbrack","{":"\\lbrace","}":"\\rbrace","<":"\\langle",">":"\\rangle","\u2016":"\\Vert","\\":"\\backslash","\u2308":"\\lceil","\u2309":"\\rceil","\u230A":"\\lfloor","\u230B":"\\rfloor","\u231C":"\\ulcorner","\u231D":"\\urcorner","\u231E":"\\llcorner","\u231F":"\\lrcorner","\u23B0":"\\lmoustache","\u23B1":"\\rmoustache"};function Qr(n,e){if(h(e)==="InvisibleOperator"&&J(e)===2&&h(m(e,2))==="Delimiter"){let r=T(m(e,1));if(!r)return null;let o=n.parseExpression({minPrec:0});if(o===null)return null;let s=m(m(e,2),1),a=[];return h(s)==="Sequence"?a=[...N(s)]:s&&(a=[s]),["Assign",r,["Function",o,...a??[]]]}if(h(e)==="Subscript"&&T(m(e,1))){let r=T(m(e,1));if(!r)return null;let o=n.parseExpression({minPrec:0});if(o===null)return null;let s=m(e,2);return F(s)!==null?["Assign",e,o]:T(s)?["Assign",r,["Function",o,s]]:["Assign",e,o]}let t=h(e);if(t){let r=N(e),o=n.parseExpression({minPrec:0});return o===null?null:["Assign",t,["Function",o,...r]]}if(!T(e))return null;let i=n.parseExpression({minPrec:0});return i===null?null:["Assign",e,i]}function ys(n){let e=n.parseTabular();if(!e)return["List"];if(e.every(i=>{if(i.length!==1)return!1;let r=h(i[0]);return vn(r)||ti(r)}))return["List",...e.map(i=>i[0])];let t=[];for(let i of e)if(i.length===1)t.push("True"),t.push(i[0]);else if(i.length===2){let r=F(i[1]);t.push(r?"True":os(i[1])??"True"),t.push(i[0])}return["Which",...t]}function xs(...n){return(e,t)=>{if(!T(t)&&h(t)!=="List")return null;let i=null;return n.length===0&&(i=e.parseGroup()),i??=e.parseExpression({minPrec:0}),i===null||n.length>0&&!e.matchAll(n)||F(i)!==null?null:(h(i)==="Delimiter"&&(i=m(i,1)??"Nothing"),h(i)==="Sequence"?["At",t,...N(i)]:["At",t,i])}}var Zu=[{name:"Matrix",serialize:(n,e)=>{let t=N(m(e,1));return ju(n,t,F(m(e,2)),F(m(e,3)))}},{name:"Vector",serialize:(n,e)=>{let t=N(e);return ju(n,t.map(i=>["List",i]),F(m(e,2)),F(m(e,3)))}},{kind:"environment",symbolTrigger:"pmatrix",parse:n=>{let e=Wn(n),[t,i]=Hn(n);return e?[t,i,{str:"()"},{str:e}]:[t,i]}},{kind:"environment",symbolTrigger:"bmatrix",parse:n=>{let e=Wn(n),[t,i]=Hn(n);return e?[t,i,{str:"[]"},{str:e}]:[t,i,{str:"[]"}]}},{kind:"environment",symbolTrigger:"Bmatrix",parse:n=>{let e=Wn(n),[t,i]=Hn(n);return e?[t,i,{str:"{}"},{str:e}]:[t,i,{str:"{}"}]}},{kind:"environment",symbolTrigger:"vmatrix",parse:n=>{let e=Wn(n),[t,i]=Hn(n);return e?[t,i,{str:"||"},{str:e}]:[t,i,{str:"||"}]}},{kind:"environment",symbolTrigger:"Vmatrix",parse:n=>{let e=Wn(n),[t,i]=Hn(n);return e?[t,i,{str:"\u2016\u2016"},{str:e}]:[t,i,{str:"\u2016\u2016"}]}},{kind:"environment",symbolTrigger:"smallmatrix",parse:n=>{let e=Wn(n),[t,i]=Hn(n);return e?[t,i,{str:"()"},{str:e}]:[t,i]}},{kind:"environment",symbolTrigger:"array",parse:n=>{let e=Wn(n,!1),[t,i]=Hn(n);return e?[t,i,{str:".."},{str:e}]:[t,i,{str:".."}]}},{kind:"environment",symbolTrigger:"matrix",parse:n=>{let e=Wn(n),[t,i]=Hn(n);return e?[t,i,{str:".."},{str:e}]:[t,i,{str:".."}]}},{kind:"environment",symbolTrigger:"matrix*",parse:n=>{let e=Wn(n),[t,i]=Hn(n);return e?[t,i,{str:".."},{str:e}]:[t,i,{str:".."}]}},{name:"ConjugateTranspose",kind:"postfix",latexTrigger:["^","\\star"]},{kind:"postfix",latexTrigger:["^","\\H"],parse:"ConjugateTranspose"},{kind:"postfix",latexTrigger:["^","\\dagger"],parse:(n,e)=>["ConjugateTranspose",e]},{kind:"postfix",latexTrigger:["^","\\ast"],parse:(n,e)=>["ConjugateTranspose",e]},{kind:"postfix",latexTrigger:["^","\\top"],parse:(n,e)=>["Transpose",e]},{kind:"postfix",latexTrigger:["^","\\intercal"],parse:(n,e)=>["Transpose",e]},{name:"Transpose",kind:"postfix",latexTrigger:["^","T"]},{name:"PseudoInverse",kind:"postfix",latexTrigger:["^","+"]},{name:"Trace",kind:"function",symbolTrigger:"tr"},{name:"Determinant",kind:"function",symbolTrigger:"det"}];function Hn(n){let e=n.parseTabular();return e?["Matrix",["List",...e.map(t=>["List",...t])]]:["",null]}function Wn(n,e=!0){let t=n.parseStringGroup(e)?.trim();if(!t)return"";let i="";for(let r of t)r==="c"&&(i+="="),r==="l"&&(i+="<"),r==="r"&&(i+=">"),r==="|"&&(i+="|"),r===":"&&(i+=":");return i}function ju(n,e,t,i){t??="()";let[r,o]=["",""];typeof t=="string"&&t.length===2&&([r,o]=t);let s="";if(i)for(let c of i)c==="<"?s+="l":c===">"?s+="r":c==="="?s+="c":c==="|"?s+="|":c===":"&&(s+=":");let a=[];for(let c of e??[]){let f=[];for(let d of N(c))f.push(n.serialize(d));a.push(f.join(" & "))}let u=a.join(`\\\\
|
|
12
|
+
`),l=s.length>0?`[${s}]`:"";return r==="("&&o===")"?v(["\\begin{pmatrix}",l,u,"\\end{pmatrix}"]):r==="["&&o==="]"?v(["\\begin{bmatrix}",l,u,"\\end{bmatrix}"]):r==="{"&&o==="}"?v(["\\begin{Bmatrix}",l,u,"\\end{Bmatrix}"]):r==="|"&&o==="|"?v(["\\begin{vmatrix}",l,u,"\\end{vmatrix}"]):r==="\u2016"&&o==="\u2016"?v(["\\begin{Vmatrix}",l,u,"\\end{Vmatrix}"]):r==="{"&&o==="."?v(["\\begin{dcases}",l,u,"\\end{dcases}"]):r==="."&&o==="}"?v(["\\begin{rcases}",l,u,"\\end{rcases}"]):s||r!=="."||o!=="."?v(["\\left",ii[r]??r,"\\begin{array}",`{${s}}`,u,"\\end{array}","\\right",ii[o]??o]):v(["\\begin{matrix}",u,"\\end{matrix}"])}var Hu=[{name:"True",kind:"symbol",latexTrigger:["\\top"]},{kind:"symbol",latexTrigger:"\\mathrm{True}",parse:"True"},{kind:"symbol",latexTrigger:"\\operatorname{True}",parse:"True"},{kind:"symbol",latexTrigger:"\\mathsf{T}",parse:"True"},{name:"False",kind:"symbol",latexTrigger:["\\bot"]},{kind:"symbol",latexTrigger:"\\operatorname{False}",parse:"False"},{kind:"symbol",latexTrigger:"\\mathsf{F}",parse:"False"},{name:"And",kind:"infix",latexTrigger:["\\land"],precedence:317},{kind:"infix",latexTrigger:["\\wedge"],parse:"And",precedence:317},{kind:"infix",latexTrigger:"\\&",parse:"And",precedence:317},{kind:"infix",latexTrigger:"\\operatorname{and}",parse:"And",precedence:317},{name:"Or",kind:"infix",latexTrigger:["\\lor"],precedence:310},{kind:"infix",latexTrigger:["\\vee"],parse:"Or",precedence:310},{kind:"infix",latexTrigger:"\\parallel",parse:"Or",precedence:310},{kind:"infix",latexTrigger:"\\operatorname{or}",parse:"Or",precedence:310},{name:"Xor",kind:"infix",latexTrigger:["\\veebar"],precedence:315},{name:"Not",kind:"prefix",latexTrigger:["\\lnot"],precedence:880},{kind:"prefix",latexTrigger:["\\neg"],parse:"Not",precedence:880},{name:"Nand",kind:"infix",latexTrigger:["\\barwedge"],precedence:315},{name:"Nor",kind:"infix",latexTrigger:["\u22BD"],precedence:315},{kind:"function",symbolTrigger:"and",parse:"And"},{kind:"function",symbolTrigger:"or",parse:"Or"},{kind:"function",symbolTrigger:"not",parse:"Not"},{name:"Implies",kind:"infix",precedence:220,associativity:"right",latexTrigger:["\\implies"],serialize:"\\implies"},{latexTrigger:["\\Rightarrow"],kind:"infix",precedence:220,associativity:"right",parse:"Implies"},{name:"Equivalent",latexTrigger:["\\iff"],kind:"infix",associativity:"right",precedence:219},{latexTrigger:["\\Leftrightarrow"],kind:"infix",associativity:"right",precedence:219,parse:"Equivalent"},{latexTrigger:["\\equiv"],kind:"infix",associativity:"right",precedence:219,parse:(n,e,t)=>{let i=n.parseExpression({...t,minPrec:219}),r=n.index,o=n.parseExpression({...t,minPrec:219});return o!==null&&h(o)==="Mod"?["Congruent",e,i,V(m(o,1))]:(n.index=r,["Equivalent",e,V(i)])}},{name:"Proves",kind:"infix",latexTrigger:["\\vdash"],precedence:220,associativity:"right",serialize:"\\vdash"},{name:"Entails",kind:"infix",latexTrigger:["\\vDash"],precedence:220,associativity:"right",serialize:"\\vDash"},{name:"Satisfies",kind:"infix",latexTrigger:["\\models"],precedence:220,associativity:"right",serialize:"\\models"},{name:"ForAll",kind:"prefix",latexTrigger:["\\forall"],precedence:200,serialize:"\\forall",parse:zi("ForAll")},{name:"Exists",kind:"prefix",latexTrigger:["\\exists"],precedence:200,serialize:"\\exists",parse:zi("Exists")},{name:"ExistsUnique",kind:"prefix",latexTrigger:["\\exists","!"],precedence:200,serialize:"\\exists!",parse:zi("ExistsUnique")},{name:"NotForAll",kind:"prefix",latexTrigger:["\\lnot","\\forall"],precedence:200,serialize:"\\lnot\\forall",parse:zi("NotForAll")},{name:"NotExists",kind:"prefix",latexTrigger:["\\lnot","\\exists"],precedence:200,serialize:"\\lnot\\exists",parse:zi("NotExists")},{name:"KroneckerDelta",kind:"prefix",latexTrigger:["\\delta","_"],precedence:200,serialize:(n,e)=>{let t=N(e);return t.length===0?"\\delta":t.every(i=>T(i))?`\\delta_{${t.map(i=>n.serialize(i)).join("")}}`:`\\delta_{${t.map(i=>n.serialize(i)).join(", ")}}`},parse:n=>{let e=n.parseGroup();if(e===null){let i=n.parseToken();return i?["KroneckerDelta",i]:null}let t=zn(e);return t&&t.length<=2?["KroneckerDelta",...t]:h(e)==="InvisibleOperator"?["KroneckerDelta",...N(e)]:e!==null?["KroneckerDelta",e]:null}},{name:"Boole",kind:"matchfix",openTrigger:"[",closeTrigger:"]",parse:(n,e)=>{let t=h(e);return!t||!_t.some(i=>i.name===t)?null:["Boole",e]}},{kind:"matchfix",openTrigger:"\\llbracket",closeTrigger:"\\rrbracket",parse:(n,e)=>{let t=h(e);return!t||!_t.some(i=>i.name===t)?null:["Boole",e]}}];function zi(n){return(e,t)=>{let i=e.index,r=e.parseSymbol(t);if(r){if(e.skipSpace(),e.match(",")||e.match("\\mid")||e.match(".")||e.match(":")||e.match("\\colon")){let a=e.parseExpression(t);return[n,r,V(a)]}let s=e.parseEnclosure();if(s)return[n,r,V(s)]}e.index=i;let o=e.parseExpression(t);if(o===null)return null;if(e.skipSpace(),e.matchAny([",","\\mid",":","\\colon"])){let s=e.parseExpression(t);return[n,o,V(s)]}if(e.match("(")){let s=e.parseExpression(t);return e.match(")")?[n,o,V(s)]:null}return null}}function je(n){return e=>{let t=e.parseGroup();return t===null?[n]:[n,t]}}var Wu=[{name:"Overscript",latexTrigger:["\\overset"],kind:"infix",precedence:700},{name:"Underscript",latexTrigger:["\\underset"],kind:"infix",precedence:700},{name:"Increment",latexTrigger:["+","+"],kind:"postfix",precedence:880,parse:(n,e)=>T(e)===null?null:["Decrement",e]},{name:"Decrement",latexTrigger:["-","-"],kind:"postfix",precedence:880,parse:(n,e)=>T(e)===null?null:["Decrement",e]},{name:"PreIncrement",latexTrigger:["+","+"],kind:"prefix",precedence:880,parse:(n,e)=>{let t=n.parseExpression(e);return T(t)===null?null:["PreIncrement",t]}},{name:"PreDecrement",latexTrigger:["-","-"],kind:"prefix",precedence:880,parse:(n,e)=>{let t=n.parseExpression(e);return T(t)===null?null:["PreDecrement",t]}},{name:"Ring",latexTrigger:["\\circ"],kind:"infix",precedence:265},{name:"StringJoin",latexTrigger:["\\lt","\\gt"],kind:"infix",precedence:780},{name:"Starstar",latexTrigger:["\\star","\\star"],kind:"infix",precedence:780},{name:"PartialDerivative",latexTrigger:["\\partial"],kind:"prefix",parse:n=>{let e=!1,t="Nothing",i="Nothing";for(;!e;)n.skipSpace(),n.match("_")?i=n.parseGroup()??n.parseToken():n.match("^")?t=n.parseGroup()??n.parseToken():e=!0;let r=zn(i);if(r&&(i=["List",...r]),i===null||t===null)return null;let o=n.parseGroup()??"Nothing";if(!Y(o)){let s=n.parseArguments()??["Nothing"];o=[o,...s]}return["PartialDerivative",o,i,t]},serialize:(n,e)=>{let t="\\partial",i=m(e,1),r=m(e,2),o=m(e,3);return r!==null&&r!=="Nothing"&&(h(r)==="List"?t+="_{"+n.serialize(["Sequence",...N(r)])+"}":t+="_{"+n.serialize(r)+"}"),o!==null&&o!=="Nothing"&&(t+="^{"+n.serialize(o)+"}"),i!==null&&i!=="Nothing"&&(t+=n.serialize(i)),t},precedence:740},{name:"OverBar",latexTrigger:["\\overline"],parse:je("OverBar")},{name:"UnderBar",latexTrigger:["\\underline"],parse:je("UnderBar")},{name:"OverVector",latexTrigger:["\\vec"],parse:je("OverVector")},{name:"OverTilde",latexTrigger:["\\tilde"],parse:je("OverTilde")},{name:"OverHat",latexTrigger:["\\hat"],parse:je("OverHat")},{name:"OverRightArrow",latexTrigger:["\\overrightarrow"],parse:je("OverRightArrow")},{name:"OverLeftArrow",latexTrigger:["\\overleftarrow"],parse:je("OverLeftArrow")},{name:"OverRightDoubleArrow",latexTrigger:["\\Overrightarrow"],parse:je("OverRightDoubleArrow")},{name:"OverLeftHarpoon",latexTrigger:["\\overleftharpoon"],parse:je("OverLeftHarpoon")},{name:"OverRightHarpoon",latexTrigger:["\\overrightharpoon"],parse:je("OverRightHarpoon")},{name:"OverLeftRightArrow",latexTrigger:["\\overleftrightarrow"],parse:je("OverLeftRightArrow")},{name:"OverBrace",latexTrigger:["\\overbrace"],parse:je("OverBrace")},{name:"OverLineSegment",latexTrigger:["\\overlinesegment"],parse:je("OverLineSegment")},{name:"OverGroup",latexTrigger:["\\overgroup"],parse:je("OverGroup")},{latexTrigger:["\\textcolor"],parse:n=>{let e=n.index,t=n.parseStringGroup(),i=n.parseGroup();return t!==null?i!==null?["Annotated",i,{dict:{color:t}}]:"Nothing":(n.index=e,"Nothing")}},{latexTrigger:["\\displaystyle"],parse:()=>"Nothing"},{latexTrigger:["\\textstyle"],parse:()=>"Nothing"},{latexTrigger:["\\scriptstyle"],parse:()=>"Nothing"},{latexTrigger:["\\scriptscriptstyle"],parse:()=>"Nothing"},{latexTrigger:["\\tiny"],parse:()=>"Nothing"},{latexTrigger:["\\scriptsize"],parse:()=>"Nothing"},{latexTrigger:["\\footnotesize"],parse:()=>"Nothing"},{latexTrigger:["\\small"],parse:()=>"Nothing"},{latexTrigger:["\\normalsize"],parse:()=>"Nothing"},{latexTrigger:["\\large"],parse:()=>"Nothing"},{latexTrigger:["\\Large"],parse:()=>"Nothing"},{latexTrigger:["\\LARGE"],parse:()=>"Nothing"},{latexTrigger:["\\huge"],parse:()=>"Nothing"},{latexTrigger:["\\Huge"],parse:()=>"Nothing"},{name:"Annotated",serialize:(n,e)=>{let t=n.serialize(m(e,1)),i=as(m(e,2));if(i===null)return t;F(i.dict.mathStyle)==="normal"?t=v(["{\\displaystyle",t,"}"]):F(i.dict.mathStyle)==="compact"&&(t=v(["{\\textstyle",t,"}"]));let r=R(i.dict.size);return r!==null&&r>=1&&r<=10&&(t=v(["{",{1:"\\tiny",2:"\\scriptsize",3:"\\footnotesize",4:"\\small",5:"\\normalsize",6:"\\large",7:"\\Large",8:"\\LARGE",9:"\\huge",10:"\\Huge"}[r],t,"}"])),t}},{latexTrigger:["\\!"],parse:()=>["HorizontalSpacing",-3]},{latexTrigger:["\\ "],parse:()=>["HorizontalSpacing",6]},{latexTrigger:["\\:"],parse:()=>["HorizontalSpacing",4]},{latexTrigger:["\\enskip"],parse:()=>["HorizontalSpacing",9]},{latexTrigger:["\\quad"],parse:()=>["HorizontalSpacing",18]},{latexTrigger:["\\qquad"],parse:()=>["HorizontalSpacing",36]},{latexTrigger:["\\,"],parse:()=>["HorizontalSpacing",3]},{latexTrigger:["\\;"],parse:()=>["HorizontalSpacing",5]},{latexTrigger:["\\enspace"],parse:()=>["HorizontalSpacing",9]},{latexTrigger:["\\phantom"],parse:n=>(n.parseGroup(),"Nothing")},{latexTrigger:["\\vphantom"],parse:n=>(n.parseGroup(),"Nothing")},{latexTrigger:["\\hphantom"],parse:n=>(n.parseGroup(),"Nothing")},{latexTrigger:["\\placeholder"],parse:n=>(n.parseOptionalGroup(),n.parseGroup()??"Nothing")},{latexTrigger:["\\smash"],parse:n=>(n.parseGroup(),"Nothing")},{latexTrigger:["\\strut"],parse:n=>"Nothing"},{latexTrigger:["\\mathstrut"],parse:n=>"Nothing"},{name:"HorizontalSpacing",serialize:(n,e)=>{if(m(e,2)!==null)return n.serialize(m(e,1));let t=R(m(e,1));return t===null?"":{"-3":"\\!",6:"\\ ",3:"\\,",4:"\\:",5:"\\;",9:"\\enspace",18:"\\quad",36:"\\qquad"}[t]??""}}];function B(n){return(e,t)=>{let i={"\\arcsin":"Arcsin","\\arccos":"Arccos","\\arctan":"Arctan","\\arctg":"Arctan","\\arcctg":"Arccot","\\arcsec":"Arcsec","\\arccsc":"Arccsc","\\arsinh":"Arsinh","\\arcosh":"Arccosh","\\arccosh":"Arccosh","\\artanh":"Arctanh","\\arctanh":"Arctanh","\\arsech":"Arcsech","\\arcsech":"Arcsech","\\arcsch":"Arccsch","\\arccsch":"Arccsch","\\ch":"Cosh","\\cos":"Cos","\\cosh":"Csch","\\cosec":"Csc","\\cot":"Cot","\\cotg":"Cot","\\ctg":"Cot","\\csc":"Csc","\\csch":"Csch","\\coth":"Coth","\\cth":"Coth","\\sec":"Sec","\\sech":"Sech","\\sin":"Sin","\\sinh":"Sinh","\\sh":"Sinh","\\tan":"Tan","\\tg":"Tan","\\tanh":"Tanh","\\th":"Tanh"},r=i[n??""]??n??"";if(e.atTerminator(t))return r;let o=r;do{let l=e.parsePostfixOperator(o,t);if(l===null)break;o=l}while(!0);e.skipSpace();let s=null;e.match("^")&&(s=e.parseGroup()??e.parseToken()),e.skipSpace();let a=e.parseArguments("implicit",{minPrec:Ue,condition:l=>i[l.peek]||(t?.condition?.(l)??!1)}),u=a===null?o:typeof o=="string"?[o,...a]:["Apply",o,...a];return s===null?u:["Power",u,s]}}var Ju=[{name:"Arcsin",latexTrigger:["\\arcsin"],parse:B("Arcsin")},{name:"Arccos",latexTrigger:["\\arccos"],parse:B("Arccos")},{name:"Arctan",latexTrigger:["\\arctan"],parse:B("Arctan")},{latexTrigger:["\\arctg"],parse:B("Arctan")},{symbolTrigger:"arctg",parse:B("Arctan")},{name:"Arccot",symbolTrigger:"arcctg",parse:B("Arccot")},{latexTrigger:["\\arcctg"],parse:B("Arccot")},{name:"Arccoth",symbolTrigger:"arccoth",parse:B("Arccoth")},{symbolTrigger:"arcoth",parse:B("Arccoth")},{symbolTrigger:"arccoth",parse:B("Arccoth")},{latexTrigger:["\\arccoth"],parse:B("Arccoth")},{name:"Arcsec",symbolTrigger:"arcsec",parse:B("Arcsec")},{latexTrigger:["\\arcsec"],parse:B("Arcsec")},{name:"Arccsc",symbolTrigger:"arccsc",parse:B("Arccsc")},{latexTrigger:["\\arccsc"],parse:B("Arccsc")},{name:"Arcsinh",symbolTrigger:"arcsinh",parse:B("Arcsinh")},{latexTrigger:["\\arsinh"],parse:B("Arcsinh")},{latexTrigger:["\\arcsinh"],parse:B("Arcsinh")},{name:"Arccosh",symbolTrigger:"arccosh",parse:B("Arccosh")},{latexTrigger:"\\arccosh",parse:B("Arccosh")},{latexTrigger:"\\arcosh",parse:B("Arccosh")},{symbolTrigger:"arcosh",parse:B("Arccosh")},{name:"Arctanh",symbolTrigger:"arctanh",parse:B("Arctanh")},{symbolTrigger:"artanh",parse:B("Arctanh")},{latexTrigger:"\\artanh",parse:B("Arctanh")},{latexTrigger:["\\arctanh"],parse:B("Arctanh")},{symbolTrigger:"artanh",parse:B("Arctanh")},{name:"Arcsech",symbolTrigger:"arcsech",parse:B("Arcsech")},{latexTrigger:["\\arcsech"],parse:B("Arcsech")},{latexTrigger:["\\arsech"],parse:B("Arcsech")},{name:"Arccsch",symbolTrigger:"arccsch",parse:B("Arccsch")},{latexTrigger:["\\arccsch"],parse:B("Arccsch")},{latexTrigger:["\\arcsch"],parse:B("Arccsch")},{name:"Cosec",symbolTrigger:"cosec",parse:B("Cosec")},{latexTrigger:["\\cosec"],parse:B("Cosec")},{name:"Cosh",latexTrigger:["\\cosh"],parse:B("Cosh")},{latexTrigger:["\\ch"],parse:B("Cosh")},{name:"Cot",latexTrigger:["\\cot"],parse:B("Cot")},{latexTrigger:["\\cotg"],parse:B("Cot")},{latexTrigger:["\\ctg"],parse:B("Cot")},{name:"Csc",latexTrigger:["\\csc"],parse:B("Csc")},{name:"Csch",latexTrigger:["\\csch"],parse:B("Csch")},{name:"Coth",latexTrigger:["\\coth"],parse:B("Coth")},{latexTrigger:["\\cth"],parse:B("Coth")},{symbolTrigger:"cth",parse:B("Coth")},{latexTrigger:["\\coth"],parse:B("Coth")},{name:"Sec",latexTrigger:["\\sec"],parse:B("Sec")},{name:"Sech",symbolTrigger:"sech",parse:B("Sech")},{latexTrigger:["\\sech"],parse:B("Sech")},{name:"Sinh",latexTrigger:["\\sinh"],parse:B("Sinh")},{latexTrigger:["\\sh"],parse:B("Sinh")},{name:"Tan",latexTrigger:["\\tan"],parse:B("Tan")},{latexTrigger:["\\tg"],parse:B("Tan")},{name:"Tanh",latexTrigger:["\\tanh"],parse:B("Tanh")},{latexTrigger:["\\th"],parse:B("Tanh")},{name:"Cos",latexTrigger:["\\cos"],parse:B("Cos")},{name:"Sin",latexTrigger:["\\sin"],parse:B("Sin")}];var Qu=[{name:"AlgebraicNumbers",latexTrigger:"\\overline\\Q"},{latexTrigger:"\\bar\\Q",parse:"AlgebraicNumbers"},{name:"ComplexNumbers",latexTrigger:["\\C"]},{latexTrigger:"\\mathbb{C}",parse:"ComplexNumbers"},{name:"ImaginaryNumbers",latexTrigger:["\\imaginaryI","\\R"]},{name:"EmptySet",latexTrigger:["\\emptyset"]},{latexTrigger:["\\varnothing"],parse:"EmptySet"},{name:"Integers",latexTrigger:["\\Z"]},{latexTrigger:"\\mathbb{Z}",parse:"Integers"},{name:"RationalNumbers",latexTrigger:["\\Q"]},{latexTrigger:"\\mathbb{Q}",parse:"RationalNumbers"},{name:"RealNumbers",latexTrigger:["\\R"]},{latexTrigger:"\\mathbb{R}",parse:"RealNumbers"},{name:"TranscendentalNumbers",latexTrigger:"\\R-\\bar\\Q"},{latexTrigger:"\\R\\backslash\\bar\\Q",parse:"TranscendentalNumbers"},{name:"NegativeNumbers",latexTrigger:"\\R_{<0}"},{latexTrigger:"\\R^-",parse:"NegativeNumbers"},{latexTrigger:"\\R^{-}",parse:"NegativeNumbers"},{latexTrigger:"\\R^-",parse:"NegativeNumbers"},{latexTrigger:"\\R_-",parse:"NegativeNumbers"},{latexTrigger:"\\R_{-}",parse:"NegativeNumbers"},{latexTrigger:"\\R^{\\lt}",parse:"NegativeNumbers"},{latexTrigger:"\\R^{<}",parse:"NegativeNumbers"},{latexTrigger:"\\R^{\\lt0}",parse:"NegativeNumbers"},{latexTrigger:"\\R^{<0}",parse:"NegativeNumbers"},{name:"NonPositiveNumbers",latexTrigger:"\\R_{\\le0}"},{latexTrigger:"\\R^{\\leq0}",parse:"NonPositiveNumbers"},{latexTrigger:"\\R^{-0}",parse:"NonPositiveNumbers"},{latexTrigger:"\\R^{\\leq}",parse:"NonPositiveNumbers"},{latexTrigger:"\\R^{0-}",parse:"NonPositiveNumbers"},{name:"PositiveNumbers",latexTrigger:"\\R_{>0}"},{latexTrigger:"\\R^+",parse:"PositiveNumbers"},{latexTrigger:"\\R^{+}",parse:"PositiveNumbers"},{latexTrigger:"\\R_+",parse:"PositiveNumbers"},{latexTrigger:"\\R_{+}",parse:"PositiveNumbers"},{latexTrigger:"\\R^{\\gt}",parse:"PositiveNumbers"},{latexTrigger:"\\R^{\\gt 0}",parse:"PositiveNumbers"},{latexTrigger:"\\R^{>}",parse:"PositiveNumbers"},{latexTrigger:"\\R^{>0}",parse:"PositiveNumbers"},{name:"NonNegativeNumbers",latexTrigger:"\\R_{\\geq0}"},{latexTrigger:"\\R^{0+}",parse:"NonNegativeNumbers"},{latexTrigger:"\\R^{\\geq}",parse:"NonNegativeNumbers"},{name:"ExtendedRealNumbers",latexTrigger:"\\overline\\R"},{latexTrigger:"\\bar\\R",parse:"ExtendedRealNumbers"},{name:"NegativeIntegers",latexTrigger:"\\Z_{<0}"},{latexTrigger:"\\Z_{\\lt0}",parse:"NegativeIntegers"},{latexTrigger:"\\Z^-",parse:"NegativeIntegers"},{latexTrigger:"\\Z^{-}",parse:"NegativeIntegers"},{latexTrigger:"\\Z_-",parse:"NegativeIntegers"},{latexTrigger:"\\Z_{-}",parse:"NegativeIntegers"},{latexTrigger:"\\Z^{\\lt}",parse:"NegativeIntegers"},{name:"NonPositiveIntegers",latexTrigger:"\\Z_{\\le0}"},{latexTrigger:"\\Z_{\\leq0}",parse:"NonPositiveIntegers"},{latexTrigger:"\\Z_{<0}",parse:"NonPositiveIntegers"},{name:"PositiveIntegers",latexTrigger:"\\N^*"},{latexTrigger:"\\Z_{>0}",parse:"PositiveIntegers"},{latexTrigger:"\\Z_{\\gt0}",parse:"PositiveIntegers"},{latexTrigger:"\\Z^{+}",parse:"PositiveIntegers"},{latexTrigger:"\\Z_+",parse:"PositiveIntegers"},{latexTrigger:"\\Z_{+}",parse:"PositiveIntegers"},{latexTrigger:"\\Z^{\\gt}",parse:"PositiveIntegers"},{latexTrigger:"\\Z^{\\gt0}",parse:"PositiveIntegers"},{latexTrigger:"\\N^+",parse:"PositiveIntegers"},{latexTrigger:"\\N^{+}",parse:"PositiveIntegers"},{latexTrigger:"\\N^*",parse:"PositiveIntegers"},{latexTrigger:"\\N^{*}",parse:"PositiveIntegers"},{latexTrigger:"\\N^\\star",parse:"PositiveIntegers"},{latexTrigger:"\\N^{\\star}",parse:"PositiveIntegers"},{latexTrigger:"\\N_1",parse:"PositiveIntegers"},{latexTrigger:"\\N_{1}",parse:"PositiveIntegers"},{name:"NonNegativeIntegers",latexTrigger:["\\N"]},{latexTrigger:"\\Z^{+0}",parse:"NonNegativeIntegers"},{latexTrigger:"\\Z^{\\geq}",parse:"NonNegativeIntegers"},{latexTrigger:"\\Z^{\\geq0}",parse:"NonNegativeIntegers"},{latexTrigger:"\\Z^{0+}",parse:"NonNegativeIntegers"},{latexTrigger:"\\mathbb{N}",parse:"NonNegativeIntegers"},{latexTrigger:"\\N_0",parse:"NonNegativeIntegers"},{latexTrigger:"\\N_{0}",parse:"NonNegativeIntegers"},{name:"ExtendedIntegers",latexTrigger:"\\overline\\Z"},{latexTrigger:"\\bar\\Z",parse:"ExtendedIntegers"},{name:"ExtendedRationalNumbers",latexTrigger:"\\overline\\Q"},{latexTrigger:"\\bar\\Q",parse:"ExtendedRationalNumbers"},{name:"ExtendedComplexNumbers",latexTrigger:"\\overline\\C"},{latexTrigger:"\\bar\\C",parse:"ExtendedComplexNumbers"},{latexTrigger:["^","\\complement"],kind:"postfix",parse:(n,e)=>["Complement",e]},{name:"Complement",latexTrigger:["^","<{>","\\complement","<}>"],kind:"postfix"},{name:"Intersection",latexTrigger:["\\cap"],kind:"infix",precedence:350},{name:"Interval",serialize:Yu},{name:"Multiple",serialize:Yu},{name:"Union",latexTrigger:["\\cup"],kind:"infix",precedence:350},{name:"Set",kind:"matchfix",openTrigger:"{",closeTrigger:"}",parse:(n,e)=>Y(e)?"EmptySet":(h(e)=="Delimiter"&&F(m(e,2))===","&&(e=m(e,1)),h(e)!=="Sequence"?["Set",e]:["Set",...N(e)]),serialize:(n,e)=>v(["\\lbrace",N(e).map(t=>n.serialize(t)).join(", "),"\\rbrace"])},{name:"SetMinus",latexTrigger:["\\setminus"],kind:"infix",precedence:650},{name:"SymmetricDifference",latexTrigger:["\\triangle"],kind:"infix",precedence:L},{latexTrigger:["\\ni"],kind:"infix",associativity:"none",precedence:160,parse:(n,e,t)=>{let i=n.parseExpression(t);return i===null?null:["Element",i,e]}},{name:"Element",latexTrigger:["\\in"],kind:"infix",precedence:240},{name:"NotElement",latexTrigger:["\\notin"],kind:"infix",precedence:240},{name:"NotSubset",latexTrigger:["\\nsubset"],kind:"infix",associativity:"none",precedence:240},{name:"NotSuperset",latexTrigger:["\\nsupset"],kind:"infix",associativity:"none",precedence:240},{name:"NotSubsetNotEqual",latexTrigger:["\\nsubseteq"],kind:"infix",associativity:"none",precedence:240},{name:"NotSupersetNotEqual",latexTrigger:["\\nsupseteq"],kind:"infix",associativity:"none",precedence:240},{name:"SquareSubset",latexTrigger:["\\sqsubset"],kind:"infix",associativity:"none",precedence:265},{name:"SquareSubsetEqual",latexTrigger:["\\sqsubseteq"],kind:"infix",associativity:"none",precedence:265},{name:"SquareSuperset",latexTrigger:["\\sqsupset"],kind:"infix",associativity:"none",precedence:265},{name:"SquareSupersetEqual",latexTrigger:["\\sqsupseteq"],kind:"infix",associativity:"none",precedence:265},{name:"Subset",latexTrigger:["\\subset"],kind:"infix",associativity:"none",precedence:240},{latexTrigger:["\\subsetneq"],kind:"infix",associativity:"none",precedence:240,parse:"Subset"},{latexTrigger:["\\varsubsetneqq"],kind:"infix",associativity:"none",precedence:240,parse:"Subset"},{name:"SubsetEqual",latexTrigger:["\\subseteq"],kind:"infix",associativity:"none",precedence:240},{name:"Superset",latexTrigger:["\\supset"],kind:"infix",associativity:"none",precedence:240},{latexTrigger:["\\supsetneq"],kind:"infix",associativity:"none",precedence:240,parse:"Superset"},{latexTrigger:["\\varsupsetneq"],kind:"infix",associativity:"none",precedence:240,parse:"Superset"},{name:"SupersetEqual",latexTrigger:["\\supseteq"],kind:"infix",associativity:"none",precedence:240}];function Yu(n,e){if(e===null)return"";let t=h(e);if(!t)return"";if(t==="Set")return J(e)===0?"\\emptyset":J(e)===2&&h(m(e,2))==="Condition"?v(["\\left\\lbrace",n.serialize(m(e,1)),"\\middle\\mid",n.serialize(m(e,2)),"\\right\\rbrace"]):v(["\\left\\lbrace",...N(e).map(r=>n.serialize(r)+" ,"),"\\right\\rbrace"]);if(t==="Range")return v(["\\mathopen\\lbrack",n.serialize(m(e,1)),", ",n.serialize(m(e,2)),"\\mathclose\\rbrack"]);if(t==="Interval"){let r=m(e,1),o=m(e,2),s=!1,a=!1;return h(r)==="Open"&&(r=m(r,1),s=!0),h(o)==="Open"&&(o=m(o,1),a=!0),v([`\\mathopen${s?"\\rbrack":"\\lbrack"}`,n.serialize(r),", ",n.serialize(o),`\\mathclose${a?"\\lbrack":"\\rbrack"}`])}let i=n.numericSetStyle(e,n.level);return""}function ri(n){return e=>{let t=!1,i=[],r=[];for(;!t;){e.skipVisualSpace(),e.match("\\limits"),e.skipSpace();let a=null,u=null;for(;!(u!==null&&a!==null)&&(e.peek==="_"||e.peek==="^");)e.match("_")?u=e.parseGroup()??e.parseToken():e.match("^")&&(a=e.parseGroup()??e.parseToken()),e.skipSpace();Y(u)&&(u=null),Y(a)&&(a=null),i.push(u??"Nothing"),r.push(a??"Nothing"),e.skipVisualSpace(),t=!e.match(n)}let[o,s]=gp(e);if(o&&s.length===0){if(h(o)==="Add"||h(o)==="Subtract"){let a=[],u=[];for(let l of N(o))if(s)u.push(l);else{let c;[c,s]=Jn(l),a.push(c??l)}if(s!==null&&u.length>0)return["Add",Xu(n,["Add",...a],{indexes:s,subs:i,sups:r})??"Nothing",...u]}else if(h(o)==="Divide"){let a;[a,s]=Jn(m(o,1)),a!==null&&s!==null&&(o=["Divide",a,m(o,2)])}}return Xu(n,o,{indexes:s,subs:i,sups:r})}}function Xu(n,e,t){if(!e)return null;if(t.sups.length===0&&t.subs.length===0)return[n,e,...t.indexes];let i=t.indexes.length===0?h(e)==="Function"?N(e).slice(1):[]:t.indexes,r=Math.max(t.sups.length,t.subs.length,i.length);if(i.length===0)for(let s=0;s<r;s++)i.push("Nothing");else if(i.length!==r)for(let s=i.length;s<r;s++)i.push(["Error","'missing'"]);if(t.subs.length!==r)for(let s=t.subs.length;s<r;s++)t.subs.push("Nothing");if(t.sups.length!==r)for(let s=t.sups.length;s<r;s++)t.sups.push("Nothing");let o=i.map((s,a)=>{let u=t.sups[a],l=t.subs[a];return l==="Nothing"&&u==="Nothing"?s:["Tuple",s,l,u]});return[n,e,...o]}function gp(n){let e=!1,t=n.parseExpression({minPrec:266,condition:()=>{let i=n.index;return e=nl(n),n.index=i,e}});return t!==null&&!e?Jn(t):[t,hp(n)]}function hp(n){let e=[];for(;nl(n);){n.skipVisualSpace();let t=T(n.parseSymbol());if(t===null)return e;e.push(t)}return e}function Jn(n){let e=h(n),t=m(n,1);if(!t)return[n,[]];if(e==="Sequence"&&J(n)===1)return Jn(t);if(e==="Multiply"||e==="InvisibleOperator"){let i=N(n);if(i){let[r,o]=yp(i);return r.length>0?[[e,...r],o]:[null,o]}}else if(e==="Delimiter"){let[i,r]=Jn(t);if(r)return i?[["Delimiter",["Sequence",i],...N(n).slice(1)],r]:[null,r]}else if(e==="Add"){let i=N(n);if(i.length>0){let[r,o]=Jn(i[i.length-1]);if(o.length>0){if(r)return[["Add",...i.slice(0,-1),r],o];if(i.length>2)return[["Add",...i.slice(0,-1)],o];if(i.length>2)return[i[0],o]}}}else if(e==="Negate"){let[i,r]=Jn(t);if(r.length>0)return[i?["Negate",i]:null,r]}else if(e==="Divide"){let[i,r]=Jn(t);if(r.length>0)return[["Divide",i??1,m(n,2)],r]}else{let i=N(n);if(i.length===1){let[r,o]=Jn(i[0]);if(o.length>0)return[[h(n),r],o]}}return[n,[]]}function Ku(n){return(e,t)=>{if(!m(t,1))return n;let i=m(t,1),r=[];h(i)==="BuiltInFunction"?(r=["x"],i=[m(i,1),"x"]):h(i)==="Function"?(r=N(i).slice(1),i=m(i,1)):T(i)?r=[]:r=[];let o=N(t).slice(1),s=[],a=o.map((l,c)=>{if(T(l)==="Nothing")return s.push(T(r[c])??"Nothing"),"";if(T(l))return s.push(T(l)??"Nothing"),"";let f=h(l);if(f==="Tuple"||f==="Pair"||f==="Limits"||f==="Range"){if(J(l)===3){let d=m(l,1);s.push(T(d)??"Nothing");let p=m(l,2),x=m(l,3);return T(p)==="Nothing"&&(p=null),T(x)==="Nothing"&&(x=null),p!==null&&x!==null?`_{${e.serialize(p)}}^{${e.serialize(x)}}`:p!==null?`_{${e.serialize(p)}}`:x!==null?`^{${e.serialize(x)}}`:""}return`_{${e.serialize(l)}}`}if(J(l)===2){if(T(m(l,1))){s.push(T(m(l,1))??"Nothing");let x=m(l,2);return T(x)==="Nothing"?"":`_{${e.serialize(x)}}`}s.push(T(r[c])??"Nothing");let d=m(l,1),p=m(l,2);if(T(d)==="Nothing"&&(d=null),T(p)==="Nothing"&&(p=null),d!==null&&p!==null)return`_{${e.serialize(d)}}^{${e.serialize(p)}}`;if(d!==null)return`_{${e.serialize(d)}}`;if(p!==null)return`^{${e.serialize(p)}}`}else s.push(T(r[c])??"Nothing")}),u=s.filter(l=>T(l)!=="Nothing").map(l=>`\\mathrm{d}${e.serialize(T(l)??"x")}`);return u.length>0&&(u=["\\,",...u]),a.length===0?`${n}\\,${e.serialize(i)}\\!${u.join(" ")}`:a.reverse().map(l=>`${n}${l}`).join("")+"\\!"+e.serialize(i)+u.join(" ")}}var el=[{kind:"expression",name:"Integrate",latexTrigger:["\\int"],parse:ri("Integrate"),serialize:Ku("\\int")},{kind:"expression",latexTrigger:["\\iint"],parse:ri("Integrate")},{kind:"expression",latexTrigger:["\\iiint"],parse:ri("Integrate")},{kind:"expression",name:"CircularIntegrate",latexTrigger:["\\oint"],parse:ri("CircularIntegrate"),serialize:Ku("\\oint")},{kind:"expression",latexTrigger:["\\oiint"],parse:ri("CircularIntegrate")},{kind:"expression",latexTrigger:["\\oiiint"],parse:ri("CircularIntegrate")}];function nl(n){let e=n.index;for(;n.match("\\cdot")||n.skipVisualSpace(););return n.matchAll(["\\mathrm","<{>","d","<}>"])||n.matchAll(["\\operatorname","<{>","d","<}>"])||n.match("d")||n.match("\\differentialD")?!0:(n.index=e,!1)}function yp(n){let e=[...n],t=[];for(;e.length>0;){let i;if([e,i]=xp(e),!i)break;t.push(i)}return[e,t]}function xp(n){if(n.length<2)return[n,""];let e=n[n.length-2];if(e==="d"||e==="d_upright"){let t=T(n[n.length-1]);if(t)return[n.slice(0,-2),t]}return[n,""]}var Nn=[["alpha","\\alpha",945],["beta","\\beta",946],["gamma","\\gamma",947],["delta","\\delta",948],["epsilon","\\epsilon",949],["epsilonSymbol","\\varepsilon",1013],["zeta","\\zeta",950],["eta","\\eta",951],["theta","\\theta",952],["thetaSymbol","\\vartheta",977],["iota","\\iota",953],["kappa","\\kappa",954],["kappaSymbol","\\varkappa",1008],["lambda","\\lambda",955],["mu","\\mu",956],["nu","\\nu",957],["xi","\\xi",958],["omicron","\\omicron",959],["pi","\\pi",960],["piSymbol","\\varpi",982],["rho","\\rho",961],["rhoSymbol","\\varrho",1009],["sigma","\\sigma",963],["finalSigma","\\varsigma",962],["tau","\\tau",964],["phi","\\phi",981],["phiLetter","\\varphi",966],["upsilon","\\upsilon",965],["chi","\\chi",967],["psi","\\psi",968],["omega","\\omega",969],["Alpha","\\Alpha",913],["Beta","\\Beta",914],["Gamma","\\Gamma",915],["Delta","\\Delta",916],["Epsilon","\\Epsilon",917],["Zeta","\\Zeta",918],["Eta","\\Eta",919],["Theta","\\Theta",920],["Iota","\\Iota",921],["Kappa","\\Kappa",922],["Lambda","\\Lambda",923],["Mu","\\Mu",924],["Nu","\\Nu",925],["Xi","\\Xi",926],["Omicron","\\Omicron",927],["Rho","\\Rho",929],["Sigma","\\Sigma",931],["Tau","\\Tau",932],["Phi","\\Phi",934],["Upsilon","\\Upsilon",933],["Chi","\\Chi",935],["Psi","\\Psi",936],["Omega","\\Omega",937],["digamma","\\digamma",989],["aleph","\\aleph",8501],["bet","\\beth",8502],["gimel","\\gimel",8503],["dalet","\\daleth",8504],["ell","\\ell",8499],["turnedCapitalF","\\Finv",8498],["turnedCapitalG","\\Game",8513],["weierstrass","\\wp",8472],["eth","\\eth",240],["invertedOhm","\\mho",8487],["hBar","\\hbar",295],["hSlash","\\hslash",8463],["blackClubSuit","\\clubsuit",9827],["whiteHeartSuit","\\heartsuit",9825],["blackSpadeSuit","\\spadesuit",9824],["whiteDiamondSuit","\\diamondsuit",9826],["sharp","\\sharp",9839],["flat","\\flat",9837],["natural","\\natural",9838]],tl=[...Nn.map(([n,e,t])=>({kind:"symbol",name:n,latexTrigger:[e],parse:n})),...Nn.map(([n,e,t])=>({kind:"symbol",latexTrigger:[String.fromCodePoint(t)],parse:n}))];var il=[{name:"Real",kind:"function",latexTrigger:["\\Re"]},{name:"Imaginary",kind:"function",latexTrigger:["\\Im"]},{name:"Argument",kind:"function",latexTrigger:["\\arg"]},{name:"Conjugate",latexTrigger:["^","\\star"],kind:"postfix"}];var rl=[{name:"Mean",kind:"function",symbolTrigger:"mean"},{name:"Median",kind:"function",symbolTrigger:"median"},{name:"StandarDeviation",kind:"function",symbolTrigger:"stddev"},{latexTrigger:["\\bar"],kind:"expression",parse:(n,e)=>{let t=n.parseGroup()??n.parseToken();return!t||!T(t)?null:["Mean",t]}}];var ol={"(":"(",")":")","[":"\\lbrack","]":"\\rbrack","{":"\\lbrace","}":"\\rbrace","<":"\\langle",">":"\\rangle","|":"\\vert","||":"\\Vert","\\lceil":"\\lceil","\\lfloor":"\\lfloor","\\rceil":"\\rceil","\\rfloor":"\\rfloor"};function sl(n,e,t){let i=bp(e,t);if(i===null)return;let r="kind"in e?e.kind:"expression",o=i.latexTrigger;typeof o=="string"&&(n.lookahead=Math.max(n.lookahead,Jr(o)));let s=Ee(o??"");if(s.length===2&&/[_^]/.test(s[0])&&s[1]!=="<{>"&&r!=="function"&&r!=="environment"&&r!=="matchfix"){let a=e.parse;!a&&e.name&&(r==="postfix"||r==="prefix"?a=(u,l)=>[e.name,l]:a=e.name),sl(n,{...e,kind:r,name:void 0,serialize:void 0,parse:a,latexTrigger:[s[0],"<{>",s[1],"<}>"]},t)}n.defs.push(i),i.name!==void 0&&(n.ids.has(i.name)&&t({severity:"warning",message:["invalid-dictionary-entry",i.name,"Duplicate definition. The name (MathJSON symbol) must be unique, but triggers can be shared by multiple definitions."]}),n.ids.set(i.name,i))}function bs(n,e){let t={lookahead:1,ids:new Map,defs:[]};for(let i of n)sl(t,i,e);return t}function bp(n,e){if(!Np(n,e))return null;let t={kind:"kind"in n?n.kind:"expression"},i=null;"latexTrigger"in n&&(typeof n.latexTrigger=="string"?i=Ee(n.latexTrigger):i=n.latexTrigger);let r=null;"symbolTrigger"in n&&(r=n.symbolTrigger),i!==null&&(t.latexTrigger=En(i)),r!==null&&(t.symbolTrigger=r),n.name&&(t.name=n.name,t.serialize=Ep(n,i,r)),t.kind==="matchfix"&&$i(n)&&(t.openTrigger=n.openTrigger,t.closeTrigger=n.closeTrigger),t.kind==="symbol"&&Iu(n)&&(t.precedence=n.precedence??1e4),t.kind==="expression"&&Bu(n)&&(t.precedence=n.precedence??1e4),(t.kind==="prefix"||t.kind==="postfix")&&(Yr(n)||ms(n))&&(i&&(i[0]==="^"||i[0]==="_")?(t.precedence=720,n.precedence):t.precedence=n.precedence??1e4),t.kind==="infix"&&ps(n)&&(!i||i[0]!=="^"&&i[0]!=="_"||!n.associativity||n.associativity,t.associativity=n.associativity??"none",t.precedence=n.precedence??1e4);let o=vp(n,i,r);return o&&(t.parse=o),t}function Ep(n,e,t){if(typeof n.serialize=="function")return n.serialize;let i=n.kind??"expression";if(i==="environment"){let s=n.symbolTrigger??n.name??"unknown";return(a,u)=>v([`\\begin{${s}}`,a.serialize(m(u,1)),`\\end{${s}}`])}if($i(n)){let s=typeof n.openTrigger=="string"?ol[n.openTrigger]:En(n.openTrigger),a=typeof n.closeTrigger=="string"?ol[n.closeTrigger]:En(n.closeTrigger);return(u,l)=>v([s,u.serialize(m(l,1)),a])}let r=n.serialize;if(r===void 0&&e&&(r=En(e)),r)return i==="postfix"?(s,a)=>v([s.serialize(m(a,1)),r]):i==="prefix"?(s,a)=>v([r,s.serialize(m(a,1))]):i==="infix"?(s,a)=>{let u=J(a);if(u===0)return"";let l=n.precedence??1e4;return v(N(a).flatMap((c,f)=>{let d=s.wrap(c,l+1);return f<u-1?[d,r]:[d]}))}:(s,a)=>h(a)?v([r,s.wrapArguments(a)]):r;let o=t??n.name??"unknown";return i==="postfix"?(s,a)=>v([s.serialize(m(a,1)),s.serializeSymbol(o)]):i==="prefix"?(s,a)=>v([s.serializeSymbol(o),s.serialize(m(a,1))]):i==="infix"?(s,a)=>v([s.serialize(m(a,1)),s.serializeSymbol(o),s.serialize(m(a,2))]):(s,a)=>h(a)?v([s.serializeSymbol(o),s.wrapArguments(a)]):s.serializeSymbol(o)}function vp(n,e,t){if("parse"in n&&typeof n.parse=="function")return n.parse;let i=("kind"in n?n.kind:"expression")??"expression";if(i==="environment"){let r=n.parse??n.name??t;if(r)return(o,s)=>{let a=o.parseTabular();return a===null?null:[r,["List",a.map(u=>["List",...u])]]}}if(i==="function"){let r=n.parse??n.name??t;if(r)return(o,s)=>{let a=o.parseArguments("enclosure",s);return a===null?r:[r,...a]}}if(i==="symbol"){let r=n.parse??n.name??t;if(r)return(o,s)=>r}if(i==="prefix"){let r=n.parse??n.name??t;if(r){let o=n.precedence??1e4;return(s,a)=>{let u=s.parseExpression({...a??[],minPrec:o});return u===null?null:[r,u]}}}if(i==="postfix"){let r=n.parse??n.name;if(r)return(o,s)=>s===null?null:[r,s]}if(i==="infix"){if(/[_^]/.test(e?.[0]??"")){let o=n.name??n.parse;return(s,a)=>[o,V(m(a,1)),V(m(a,2))]}let r=n.parse??n.name??t;if(r){let o=n.precedence??1e4,s=n.associativity??"none";return s==="none"?(a,u,l)=>{if(u===null)return null;let c=V(a.parseExpression({...l,minPrec:o}));return[r,u,c]}:s==="left"?(a,u,l)=>{if(u===null)return null;let c=V(a.parseExpression({...l,minPrec:o+1}));return typeof r!="string"?[r,u,c]:[r,u,c]}:s==="right"?(a,u,l)=>{if(u===null)return null;let c=V(a.parseExpression({...l,minPrec:o}));return typeof r!="string"?[r,u,c]:[r,u,c]}:(a,u,l)=>{if(u===null)return null;let c=V(a.parseExpression({...l,minPrec:o}));return typeof r!="string"?[r,u,c]:Kt(r,u,c)}}}if(i==="matchfix"){let r=n.parse??n.name;if(r)return(o,s)=>Y(s)?null:[r,s]}if(i==="expression"){let r=n.parse??n.name??t;if(r)return()=>r}if("parse"in n){let r=n.parse;return()=>r}}function Np(n,e){let t=n.name??n.latexTrigger??n.symbolTrigger??n.openTrigger;if(!t)try{t=JSON.stringify(n)}catch{t="???"}if(Array.isArray(t)&&(t=En(t)),"trigger"in n&&e({severity:"warning",message:["invalid-dictionary-entry",t,"The 'trigger' property is deprecated. Use 'latexTrigger' or 'symbolTrigger' instead"]}),"kind"in n&&!["expression","symbol","function","infix","postfix","prefix","matchfix","environment"].includes(n.kind)&&e({severity:"warning",message:["invalid-dictionary-entry",t,"The 'kind' property must be one of 'expression', 'symbol', 'function', 'infix', 'postfix', 'prefix', 'matchfix', 'environment'"]}),n.serialize!==void 0&&!n.name)return e({severity:"warning",message:["invalid-dictionary-entry",t,"A 'name' property must be provided if a 'serialize' handler is provided"]}),!1;if("symbolTrigger"in n&&(!("kind"in n)||n.kind!=="environment")&&(typeof n.symbolTrigger!="string"||!Te(n.symbolTrigger))&&e({severity:"warning",message:["invalid-dictionary-entry",t,"The 'symbolTrigger' property must be a valid symbol"]}),"name"in n&&(typeof n.name!="string"?n.name!==void 0&&e({severity:"warning",message:["invalid-dictionary-entry",t,"The 'name' property must be a string"]}):Te(n.name)||e({severity:"warning",message:["invalid-dictionary-entry",n.name,"The 'name' property must be a valid symbol"]})),$i(n)){if("latexTrigger"in n||"symbolTrigger"in Yr)return e({severity:"warning",message:["invalid-dictionary-entry",t,"'matchfix' operators use a 'openTrigger' and 'closeTrigger' instead of a 'latexTrigger' or 'symbolTrigger'. "]}),!1;if(!n.openTrigger||!n.closeTrigger)return e({severity:"warning",message:["invalid-dictionary-entry",t,"Expected `openTrigger` and a `closeTrigger` for matchfix operator"]}),!1;if(typeof n.openTrigger!=typeof n.closeTrigger)return e({severity:"warning",message:["invalid-dictionary-entry",t,"Expected `openTrigger` and `closeTrigger` to both be strings or array of LatexToken"]}),!1}if(ps(n)||ms(n)||Yr(n)){if(Array.isArray(n.latexTrigger)&&(n.latexTrigger[0]==="_"||n.latexTrigger[0]==="^")||typeof n.latexTrigger=="string"&&(n.latexTrigger.startsWith("^")||n.latexTrigger.startsWith("_"))){if(n.precedence!==void 0||n.associativity!==void 0)return e({severity:"warning",message:["invalid-dictionary-entry",t,'Unexpected "precedence" or "associativity" for superscript/subscript operator']}),!1}else if(n.precedence===void 0)return e({severity:"warning",message:["invalid-dictionary-entry",t,`Expected a "precedence" for ${n.kind} operator`]}),!1}else if(n.associativity!==void 0)return e({severity:"warning",message:["invalid-dictionary-entry",t,'Unexpected "associativity" operator']}),!1;return!$i(n)&&!wu(n)&&!n.latexTrigger&&!n.symbolTrigger&&!n.name?(e({severity:"warning",message:["invalid-dictionary-entry",t,"Expected a 'name', a 'latexTrigger' or a 'symbolTrigger'"]}),!1):n.parse===void 0&&n.name===void 0?(e({severity:"warning",message:["invalid-dictionary-entry",t,"Expected a 'parse' or 'name'"]}),!1):!0}var Gi={symbols:tl,algebra:ku,arithmetic:zu,calculus:el,complex:il,core:Gu,"linear-algebra":Zu,logic:Hu,relop:_t,other:Wu,physics:[{name:"mu0",kind:"symbol",latexTrigger:"\\mu_0"}],sets:Qu,statistics:rl,trigonometry:Ju};function al(n="all"){if(n==="all"){let e=[];for(let t of Object.keys(Gi))Gi[t]&&e.push(...Gi[t]);return e}return Gi[n]?Object.freeze([...Gi[n]]):[]}var _p={"\\mathord":"","\\mathop":"","\\mathbin":"","\\mathrel":"","\\mathopen":"","\\mathclose":"","\\mathpunct":"","\\mathinner":"","\\operatorname":"","\\mathrm":"_upright","\\mathit":"_italic","\\mathbf":"_bold","\\mathscr":"_script","\\mathcal":"_calligraphic","\\mathfrak":"_fraktur","\\mathsf":"_sansserif","\\mathtt":"_monospace","\\mathbb":"_doublestruck"},Sp={"\\mathring":"_ring","\\hat":"_hat","\\tilde":"_tilde","\\vec":"_vec","\\overline":"_bar","\\underline":"_underbar","\\dot":"_dot","\\ddot":"_ddot","\\dddot":"_dddot","\\ddddot":"_ddddot","\\acute":"_acute","\\grave":"_grave","\\breve":"_breve","\\check":"_check"};function ul(n,e){if(n.atEnd)return null;let t=n.peek,i={"\\_":"_","\\#":"hash"}[t];if(!i&&!e.toplevel&&(i={"+":"plus","-":"minus","\\plusmn":"pm","\\pm":"pm","\\ast":"ast","\\dag":"dag","\\ddag":"ddag","\\bot":"bottom","\\top":"top","\\bullet":"bullet","\\cir":"circle","\\diamond":"diamond","\\times":"times","\\square":"square","\\star":"star"}[t]),i)return n.nextToken(),i;let r=Nn.findIndex(o=>o[1]===t);return r>=0?(n.nextToken(),Nn[r][0]):n.parseChar()??n.nextToken()}function Xr(n){let e=Es(n),t=Sp[n.peek]??null;if(t){if(n.nextToken(),!n.match("<{>"))return null;let o=Xr(n);if(o===null||!n.match("<}>"))return null;e=`${o}${t}`}if(e===null){for(e="";!n.atEnd;){let o=n.peek;if(o==="<}>"||o==="_"||o==="^")break;let s=ul(n,{toplevel:!1});if(s===null)return null;e+=s}for(;!n.atEnd&&/\d/.test(n.peek);)e+=n.nextToken()}for(;!n.atEnd;)if(n.match("\\degree"))e+="_deg";else if(n.matchAll(["^","\\circ"]))e+="_deg";else if(n.matchAll(["^","\\prime"]))e+="_prime";else if(n.matchAll(["^","<{>","\\prime","<}>"]))e+="_prime";else if(n.matchAll(["^","<{>","\\doubleprime","<}>"]))e+="_dprime";else if(n.matchAll(["^","<{>","\\prime","\\prime","<}>"]))e+="_dprime";else break;let i=[],r=[];for(;!n.atEnd;)if(n.match("_")){let o=n.match("<{>"),s=Xr(n);if(o&&!n.match("<}>")||s===null)return null;r.push(s)}else if(n.match("^")){let o=n.match("<{>"),s=Xr(n);if(o&&!n.match("<}>")||s===null)return null;i.push(s)}else break;return i.length>0&&(e+="__"+i.join("")),r.length>0&&(e+="_"+r.join("")),e}function Es(n){let e=_p[n.peek]??null;if(e===null)return null;if(n.nextToken(),n.match("<{>")){let t="",i={0:"zero",1:"one",2:"two",3:"three",4:"four",5:"five",6:"six",7:"seven",8:"eight",9:"nine"}[n.peek]??"";return i&&(t=i,n.nextToken()),t+=Xr(n),t===null||!n.match("<}>")?null:e==="_upright"&&t.length>1?t:t+e}return null}function vs(n){let e=n.index,t=Es(n);return t===null||Te(t)?null:n.error(["invalid-symbol",{str:nn(t)}],e)}function Ui(n){if(/^[a-zA-Z]$/.test(n.peek)||/^\p{XIDS}$/u.test(n.peek))return n.nextToken();let e=Es(n);if(!e){for(e="";!n.atEnd&&Wt.test(e+n.peek);)e+=n.nextToken();e||(e=null)}let t=n.index;return e??=ul(n,{toplevel:!0}),e&&(e=e.normalize(),Te(e))?e:(n.index=t,null)}var Tp={"(":["\\lparen","("],")":["\\rparen",")"],"[":["\\lbrack","\\[","["],"]":["\\rbrack","\\]","]"],"<":["<","\\langle"],">":[">","\\rangle"],"{":["\\{","\\lbrace"],"}":["\\}","\\rbrace"],":":[":","\\colon"],"|":["|","\\|","\\lvert","\\rvert"],"||":["||","\\Vert","\\lVert","\\rVert"]},_s={"\\left":"\\right","\\bigl":"\\bigr","\\Bigl":"\\Bigr","\\biggl":"\\biggr","\\Biggl":"\\Biggr","\\big":"\\big","\\Big":"\\Big","\\bigg":"\\bigg","\\Bigg":"\\Bigg"},Ss={"(":")","[":"]","|":"|","\\{":"\\}","\\[":"\\]","\\lbrace":"\\rbrace","\\lparen":"\\rparen","\\langle":"\\rangle","\\lfloor":"\\rfloor","\\lceil":"\\rceil","\\vert":"\\vert","\\lvert":"\\rvert","\\Vert":"\\Vert","\\lVert":"\\rVert","\\lbrack":"\\rbrack","\\ulcorner":"\\urcorner","\\llcorner":"\\lrcorner","\\lgroup":"\\rgroup","\\lmoustache":"\\rmoustache","\\llbracket":"\\rrbracket"},Ts=class{options;_index=0;symbolTable={parent:null,ids:{}};pushSymbolTable(){this.symbolTable={parent:this.symbolTable,ids:{}}}popSymbolTable(){this.symbolTable=this.symbolTable.parent??this.symbolTable}addSymbol(e,t){if(typeof t=="string"&&(t=new S(t)),e in this.symbolTable.ids&&this.symbolTable.ids[e].is(t.type))throw new Error(`Symbol ${e} already declared as a different type`);this.symbolTable.ids[e]=t}get index(){return this._index}set index(e){this._index=e,this._lastPeek="",this._peekCounter=0}_tokens;_positiveInfinityTokens;_negativeInfinityTokens;_notANumberTokens;_decimalSeparatorTokens;_wholeDigitGroupSeparatorTokens;_fractionalDigitGroupSeparatorTokens;_exponentProductTokens;_beginExponentMarkerTokens;_endExponentMarkerTokens;_truncationMarkerTokens;_imaginaryUnitTokens;_dictionary;_boundaries=[];_lastPeek="";_peekCounter=0;constructor(e,t,i){this._tokens=e,this.options=i,this._dictionary=t,this._positiveInfinityTokens=Ee(this.options.positiveInfinity),this._negativeInfinityTokens=Ee(this.options.negativeInfinity),this._notANumberTokens=Ee(this.options.notANumber),this._decimalSeparatorTokens=Ee(this.options.decimalSeparator),this._wholeDigitGroupSeparatorTokens=[],this._fractionalDigitGroupSeparatorTokens=[],this.options.digitGroupSeparator&&(typeof this.options.digitGroupSeparator=="string"?(this._wholeDigitGroupSeparatorTokens=Ee(this.options.digitGroupSeparator),this._fractionalDigitGroupSeparatorTokens=this._wholeDigitGroupSeparatorTokens):Array.isArray(this.options.digitGroupSeparator)&&(this._wholeDigitGroupSeparatorTokens=Ee(this.options.digitGroupSeparator[0]),this._fractionalDigitGroupSeparatorTokens=Ee(this.options.digitGroupSeparator[1]))),this._exponentProductTokens=Ee(this.options.exponentProduct),this._beginExponentMarkerTokens=Ee(this.options.beginExponentMarker),this._endExponentMarkerTokens=Ee(this.options.endExponentMarker),this._truncationMarkerTokens=Ee(this.options.truncationMarker),this._imaginaryUnitTokens=Ee(this.options.imaginaryUnit)}getSymbolType(e){let t=this.symbolTable;for(;t;){if(e in t.ids)return t.ids[e];t=t.parent}return this.options.getSymbolType?this.options.getSymbolType(e):S.unknown}get peek(){let e=this._tokens[this.index];if(e===this._lastPeek?this._peekCounter+=1:this._peekCounter=0,this._peekCounter>=1024){let t=`Infinite loop detected while parsing "${this.latex(0)}" at "${this._lastPeek}" (index ${this.index})`;throw console.error(t),new Error(t)}return this._lastPeek=e,e}nextToken(){return this._tokens[this.index++]}get atEnd(){return this.index>=this._tokens.length}atTerminator(e){return this.atBoundary||((e?.condition&&e.condition(this))??!1)}get atBoundary(){if(this.atEnd)return!0;let e=this.index;for(let t of this._boundaries)if(this.matchAll(t.tokens))return this.index=e,!0;return!1}addBoundary(e){this._boundaries.push({index:this.index,tokens:e})}removeBoundary(){this._boundaries.pop()}matchBoundary(){let e=this._boundaries[this._boundaries.length-1],t=e&&this.matchAll(e.tokens);return t&&this._boundaries.pop(),t}boundaryError(e){let t=this._boundaries[this._boundaries.length-1];return this._boundaries.pop(),this.error(e,t.index)}latex(e,t){return En(this._tokens.slice(e,t))}latexAhead(e){return this.latex(this.index,this.index+e)}lookAhead(){let e=Math.min(this._dictionary.lookahead,this._tokens.length-this.index);if(e<=0)return[];let t=[];for(;e>0;)t.push([e,this.latexAhead(e--)]);return t}peekDefinitions(e){if(this.atEnd)return[];let t=[],i=[...this.getDefs(e)];for(let r of i)r.latexTrigger===""&&t.push([r,0]);for(let[r,o]of this.lookAhead())for(let s of i)s.latexTrigger===o&&t.push([s,r]);for(let r of i)if(r.symbolTrigger){let o=Bp(this,r.symbolTrigger);o>0&&t.push([r,o])}return t}skipSpaceTokens(){for(;this.match("<space>"););}skipSpace(){if(!this.atEnd&&this.peek==="<{>"){let t=this.index;for(this.nextToken();this.match("<space>"););if(this.nextToken()==="<}>")return this.skipSpace(),!0;this.index=t}if(!this.options.skipSpace)return!1;let e=!1;for(;this.match("<space>");)e=!0;return e&&this.skipSpace(),e}skipVisualSpace(){this.options.skipSpace&&(this.skipSpace(),["\\!","\\,","\\:","\\;","\\enskip","\\enspace","\\space","\\quad","\\qquad"].includes(this.peek)&&(this.nextToken(),this.skipVisualSpace()),this.skipSpace())}match(e){return this._tokens[this.index]!==e?!1:(this.index++,!0)}matchAll(e){if(e.length===0)return!1;let t,i=0;do t=this._tokens[this.index+i]===e[i++];while(t&&i<e.length);return t&&(this.index+=i),t}matchAny(e){return e.includes(this._tokens[this.index])?this._tokens[this.index++]:""}parseLatexNumber(e=!0){let t=!1,i=this.peek;for(;i==="<space>"||i==="+"||i==="-";)i==="-"&&(t=!t),this.nextToken(),i=this.peek;let r=10,o=["0","1","2","3","4","5","6","7","8","9"];if(this.match("'"))r=8,o=["0","1","2","3","4","5","6","7"],e=!0;else if(this.match('"')||this.match("x"))r=16,o=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"],e=!0;else if(this.match("`"))return i=this.nextToken(),i?i.startsWith("\\")&&i.length===2?(t?-1:1)*(i.codePointAt(1)??0):(t?-1:1)*(i.codePointAt(0)??0):null;let s="";for(;o.includes(this.peek);)s+=this.nextToken();if(!e&&this.match("."))for(s+=".";o.includes(this.peek);)s+=this.nextToken();let a=e?Number.parseInt(s,r):Number.parseFloat(s);return Number.isNaN(a)?null:t?-a:a}parseChar(){let e=this.index,t=0;for(;this.match("^");)t+=1;if(t<2&&(this.index=e),t>=2){let i="",r=0;for(;r!=t;){let o=this.matchAny(["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"]);if(!o)break;i+=o,r+=1}if(i.length===t)return String.fromCodePoint(Number.parseInt(i,16))}else if(this.match("\\char")){let i=Math.floor(this.parseLatexNumber()??Number.NaN);return(!Number.isFinite(i)||i<0||i>1114111)&&(i=10067),String.fromCodePoint(i)}else if(this.match("\\unicode"))if(this.skipSpaceTokens(),this.match("<{>")){let i=this.parseLatexNumber();if(this.match("<}>")&&i!==null&&i>=0&&i<=1114111)return String.fromCodePoint(i)}else{let i=this.parseLatexNumber();if(i!==null&&i>=0&&i<=1114111)return String.fromCodePoint(i)}return this.index=e,null}matchDelimiter(e,t){if(Array.isArray(e))return Array.isArray(t),this.matchAll(e)?(this.addBoundary(t),!0):!1;Array.isArray(t);let i=this.index,r=_s[this.peek];return r&&this.nextToken(),e==="||"&&this.matchAll(["|","|"])?(this.addBoundary(["|","|"]),!0):(Tp[e]??[e]).includes(this.peek)?(e=this.nextToken(),t=Ss[e]??t,this.addBoundary(r?[r,t]:[t]),!0):(this.index=i,!1)}parseGroup(){let e=this.index;if(this.skipSpaceTokens(),this.match("<{>")){this.addBoundary(["<}>"]);let t=this.parseExpression();if(this.skipSpace(),this.matchBoundary())return t??"Nothing";for(;!this.matchBoundary()&&!this.atEnd;)this.nextToken();if(h(t)==="Error")return t;let i=this.error("expected-closing-delimiter",e);return t!==null?["InvisibleOperator",t,i]:i}return this.index=e,null}parseOptionalGroup(){let e=this.index;if(this.skipSpaceTokens(),this.match("[")){this.addBoundary(["]"]);let t=this.parseExpression();return this.skipSpace(),this.matchBoundary()?t:this.boundaryError("expected-closing-delimiter")}return this.index=e,null}parseToken(){return this.skipSpace(),[...'!"#$%&(),/;:?@[]\\`|~'.split(""),"\\left","\\bigl"].includes(this.peek)?null:/^[0-9]$/.test(this.peek)?parseInt(this.nextToken(),10):this.parseGenericExpression()??this.parseSymbol()}parseTabular(){let e=[],t=[],i=null;for(;!this.atBoundary;)if(this.skipSpace(),this.match("&"))t.push(i??"Nothing"),i=null;else if(this.match("\\\\")||this.match("\\cr"))this.skipSpace(),this.parseOptionalGroup(),i!==null&&t.push(i),e.push(t),t=[],i=null;else{let r=[],o=this.peek;for(;o!=="&"&&o!=="\\\\"&&o!=="\\cr"&&!this.atBoundary;)i=this.parseExpression({minPrec:0,condition:s=>{let a=s.peek;return a==="&"||a==="\\\\"||a==="\\cr"}}),i!==null?r.push(i):(r.push(["Error","'unexpected-token'",{str:En(o)}]),this.nextToken()),this.skipSpace(),o=this.peek;r.length>1?i=["Sequence",...r]:i=r[0]??"Nothing"}return i!==null&&t.push(i),t.length>0&&e.push(t),e}parseStringGroupContent(){let e=this.index,t="",i=0;for(;!this.atBoundary||i>0;){let r=this.nextToken();if(r==="<$>"||r==="<$$>")return this.index=e,"";r==="<{>"?(i+=1,t+="\\{"):r==="<}>"?(i-=1,t+="\\}"):r==="<space>"?t+=" ":(r[0],t+=r)}return t}parseStringGroup(e){e===void 0&&(e=!1);let t=this.index;for(;this.match("<space>"););if(this.match(e?"[":"<{>")){this.addBoundary([e?"]":"<}>"]);let i=this.parseStringGroupContent();if(this.matchBoundary())return i;this.removeBoundary()}return this.index=t,null}parseEnvironment(e){let t=this.index;if(!this.match("\\begin"))return null;let i=this.parseStringGroup()?.trim();if(!i)return this.error("expected-environment-name",t);this.addBoundary(["\\end","<{>",...i.split(""),"<}>"]);for(let r of this.getDefs("environment"))if(r.symbolTrigger===i){let o=r.parse(this,e);return this.skipSpace(),this.matchBoundary()?o!==null?this.decorate(o,t):(this.index=t,null):this.boundaryError("unbalanced-environment")}return this.parseTabular(),this.skipSpace(),this.matchBoundary()?this.error(["unknown-environment",{str:i}],t):this.boundaryError("unbalanced-environment")}parseOptionalSign(){let e=!!this.matchAny(["-","\u2212"]);for(;this.matchAny(["+","\uFE62"])||this.skipSpace();)this.matchAny(["-","\u2212"])&&(e=!e);return e?"-":"+"}parseDecimalDigits(e="whole"){let t=[],i=!1;for(;!i;){for(;/^[0-9]$/.test(this.peek);)t.push(this.nextToken()),this.skipVisualSpace();i=!0;let r=e==="whole"?this._wholeDigitGroupSeparatorTokens:this._fractionalDigitGroupSeparatorTokens;if(e!=="none"&&r.length>0){let o=this.index;this.skipVisualSpace(),this.matchAll(r)&&(this.skipVisualSpace(),/^[0-9]$/.test(this.peek)?i=!1:this.index=o)}}return t.join("")}parseSignedInteger(e){let t=this.index,i=this.parseOptionalSign(),r=this.parseDecimalDigits(e);return r?i==="-"?"-"+r:r:(this.index=t,"")}parseExponent(){let e=this.index;if(this.skipVisualSpace(),this.matchAny(["e","E"])){let t=this.parseSignedInteger("none");if(t)return t}if(this.index=e,this.match("\\times")&&(this.skipVisualSpace(),this.matchAll(["1","0"])&&(this.skipVisualSpace(),this.match("^")))){if(this.skipVisualSpace(),/^[0-9]$/.test(this.peek))return this.nextToken();if(this.match("<{>")){this.skipVisualSpace();let t=this.parseSignedInteger("whole");if(this.skipVisualSpace(),t&&this.match("<}>"))return t}}if(this.index=e,this.skipVisualSpace(),this.match("\\%"))return"-2";if(this.index=e,this.matchAll(this._exponentProductTokens)&&(this.skipVisualSpace(),this.matchAll(this._beginExponentMarkerTokens))){this.skipVisualSpace();let t=this.parseSignedInteger("none");if(this.skipVisualSpace(),t&&this.matchAll(this._endExponentMarkerTokens))return t}return this.index=e,""}parseRepeatingDecimal(){let e=this.index,t=this.options.repeatingDecimal,i="";if((t==="auto"||t==="parentheses")&&this.match("("))return i=this.parseDecimalDigits("fraction"),i&&this.match(")")?`(${i})`:(this.index=e,"");if(this.index=e,(t==="auto"||t==="parentheses")&&this.matchAll(["\\left","("]))return i=this.parseDecimalDigits("fraction"),i&&this.matchAll(["\\right",")"])?`(${i})`:(this.index=e,"");if(this.index=e,(t==="auto"||t==="vinculum")&&this.matchAll(["\\overline","<{>"]))return i=this.parseDecimalDigits("fraction"),i&&this.match("<}>")?`(${i})`:(this.index=e,"");if(this.index=e,(t==="auto"||t==="arc")&&(this.matchAll(["\\wideparen","<{>"])||this.matchAll(["\\overarc","<{>"])))return i=this.parseDecimalDigits("fraction"),i&&this.match("<}>")?`(${i})`:(this.index=e,"");if(this.index=e,t==="auto"||t==="dots"){let r=ll(this);if(r!==null){if(i=this.parseDecimalDigits("fraction"),!i)return`(${r})`;let o=ll(this);if(o!==null)return`(${r}${i}${o})`}}return this.index=e,""}parseNumber(){if(this.options.parseNumbers===!1||this.options.parseNumbers==="never")return null;let e=this.index;this.skipVisualSpace();let t=1;for(;this.peek==="-"||this.peek==="+";)this.match("-")?t=-t:this.match("+"),this.skipVisualSpace();let i="",r="",o=!1;if(this.match(".")||this.matchAll(this._decimalSeparatorTokens)){let c=this.peek;(/^[\d]$/.test(c)||wp(this))&&(o=!0,i="0")}else i=this.parseDecimalDigits("whole");if(!i)return this.index=e,null;let s=this.index,a=!1;(o||this.match(".")||this.matchAll(this._decimalSeparatorTokens))&&(r=this.parseDecimalDigits("fraction"),a=!0);let u=!1;if(a){let c=this.parseRepeatingDecimal();c&&(r+=c,u=!0),this.match("\\ldots")||this.matchAll(this._truncationMarkerTokens)}if(a&&!r)return this.index=s,i.length<10?Ns(t*parseInt(i,10)):{num:t<0?"-"+i:i};let l=this.parseExponent();if(!a&&!l&&i.length<10)return Ns(t*parseInt(i,10));if(!u&&this.options.parseNumbers==="rational"){let c=parseInt(i,10);if(!r)return l?["Multiply",t*c,["Power",10,l]]:Ns(t*c);let f=parseInt(r,10),d=r.length,p=c*10**d+f,x=10**d;return l?["Multiply",["Rational",t*p,x],["Power",10,l]]:["Rational",t*p,x]}return{num:(t<0?"-":"")+i+(a?"."+r:"")+(l?"e"+l:"")}}parsePrefixOperator(e){e||(e={minPrec:0}),e.minPrec||(e={...e,minPrec:0});let t=this.index;for(let[i,r]of this.peekDefinitions("prefix")){this.index=t+r;let o=i.parse(this,{...e,minPrec:i.precedence+1});if(o!==null)return o}return this.index=t,null}parseInfixOperator(e,t){t??={minPrec:0},t.minPrec,t.minPrec===void 0&&(t={...t,minPrec:0});let i=this.index;for(let[r,o]of this.peekDefinitions("infix"))if(r.precedence>=t.minPrec){this.index=i+o;let s=r.parse(this,e,t);if(s!==null)return s}return this.index=i,null}parseArguments(e="enclosure",t){if(this.atTerminator(t))return null;let i=this.index,r=this.parseEnclosure();if(e==="enclosure")return r===null?null:zn(r)??[];if(e==="implicit"){if(h(r)==="Delimiter"){let s=m(r,1);return h(s)==="Sequence"?N(s):s===null?[]:[s]}if(r!==null)return[r];let o=this.parseExpression({...t,minPrec:Ue});return o===null?null:[o]}return this.index=i,null}parseEnclosure(){let e=this.getDefs("matchfix"),t=this.index;for(let i of e){if(this.index=t,!this.matchDelimiter(i.openTrigger,i.closeTrigger))continue;let r=this.index;this.skipSpace();let o=this.parseExpression();if(this.skipSpace(),!this.matchBoundary()){let a=this._boundaries[this._boundaries.length-1].tokens;if(this.removeBoundary(),this.index=r,this.skipSpace(),o=this.parseExpression(),this.skipSpace(),!this.matchAll(a)){if(this.index=t,!this.atEnd)continue;return null}}let s=i.parse(this,o??"Nothing");if(s!==null)return s}return this.index=t,null}parseGenericExpression(e){if(this.atTerminator(e))return null;let t=this.index,i=null,r=this.peekDefinitions("expression")??[];for(let[o,s]of r)if(this.index=t+s,typeof o.parse=="function"){if(i=o.parse(this,e),i!==null)return i}else return o.name;return this.index=t,null}parseFunction(e){if(this.atTerminator(e))return null;let t=this.index,i=null;for(let[o,s]of this.peekDefinitions("function"))if(this.index=t+s,typeof o.parse=="function"){if(i=o.parse(this,e),i!==null)return i}else{i=o.name;break}if(i===null&&(this.index=t,i=Ui(this),!this.isFunctionOperator(i)))return this.index=t,null;do{let o=this.parsePostfixOperator(i,e);if(o===null)break;i=o}while(!0);let r=this.parseArguments("enclosure",e);return r===null?i:typeof i=="string"?[i,...r]:["Apply",i,...r]}parseSymbol(e){if(this.atTerminator(e))return null;let t=this.index;for(let[r,o]of this.peekDefinitions("symbol"))if(this.index=t+o,typeof r.parse=="function"){let s=r.parse(this,e);if(s!==null)return s}else return r.name;this.index=t;let i=Ui(this);return i!==null&&!this.getSymbolType(i).matches("error")?i:(this.index=t,null)}parseSupsub(e){if(this.atEnd)return e;let t=this.index;this.skipSpace();let i=[],r=[],o=t;for(;this.peek==="_"||this.peek==="^";){if(this.match("_"))if(o=this.index,this.match("_")||this.match("^"))r.push(this.error("syntax-error",o));else{let a=this.parseGroup()??this.parseToken()??this.parseStringGroup();if(a===null)return this.error("missing",t);r.push(a)}else if(this.match("^"))if(o=this.index,this.match("_")||this.match("^"))i.push(this.error("syntax-error",o));else{let a=this.parseGroup()??this.parseToken();if(a===null)return this.error("missing",t);i.push(a)}o=this.index,this.skipSpace()}if(i.length===0&&r.length===0)return this.index=t,e;let s=e;if(r.length>0){let a=[...this.getDefs("infix")].filter(u=>u.latexTrigger==="_");if(a){let u=["Subscript",s,r.length===1?r[0]:["List",...r]];for(let l of a)if(typeof l.parse=="function"?s=l.parse(this,u,{minPrec:0}):s=u,s!==null)break}}if(i.length>0){let a=[...this.getDefs("infix")].filter(u=>u.latexTrigger==="^");if(a){let u=i.filter(l=>!Y(l));if(u.length!==0){let l=u.length===1?u[0]:["List",...u],c=["Superscript",s,l];for(let f of a)if(typeof f.parse=="function"?s=f.parse(this,c,{minPrec:0}):s=c,s!==null)break}}}return s===null&&(this.index=t),s}parsePostfixOperator(e,t){if(e===null||this.atEnd)return null;let i=this.index;for(let[r,o]of this.peekDefinitions("postfix")){this.index=i+o;let s=r.parse(this,e,t);if(s!==null)return s}return this.index=i,null}parseSyntaxError(){let e=this.index;if(this.peek==="^")return this.index+=1,["Superscript",this.error("missing",e),V(this.parseGroup())];let t=this.peekDefinitions("operator");if(t.length>0){if(t=this.peekDefinitions("postfix"),t.length>0){let[a,u]=t[0];if(this.index+=u,typeof a.parse=="function"){let l=a.parse(this,this.error("missing",e));if(l!==null)return l}return this.error("unexpected-operator",e)}if(t=this.peekDefinitions("prefix"),t.length>0){let[a,u]=t[0];if(this.index+=u,typeof a.parse=="function"){let l=a.parse(this,{minPrec:0});if(l!==null)return l}return a.name?[a.name,this.parseExpression()??this.error("missing",e)]:this.error("unexpected-operator",e)}if(t=this.peekDefinitions("infix"),t.length>0){let[a,u]=t[0];this.index+=u;let l=a.parse(this,this.error("missing",e),{minPrec:0});return l!==null?l:this.error("unexpected-operator",e)}}let i=this.index,r=vs(this);if(r!==null)return r;if(r=Ui(this),r!==null)return this.error(["unexpected-symbol",{str:r}],i);let o=this.peek;if(!o)return this.error("syntax-error",e);if(Ip(this))return this.error("unexpected-delimiter",e);if(o[0]!=="\\")return this.error(["unexpected-token",{str:En(o)}],e);let s=this.nextToken();if(this.skipSpaceTokens(),s==="\\end"){let a=this.parseStringGroup();return a===null?this.error("expected-environment-name",e):this.error(["unbalanced-environment",{str:a}],e)}for(;this.match("[");){let a=0;for(;!this.atEnd&&a===0&&this.peek!=="]";)this.peek==="["&&(a+=1),this.peek==="]"&&(a-=1),this.nextToken();this.match("]")}for(;this.match("<{>");){let a=0;for(;!this.atEnd&&a===0&&this.peek!=="<}>";)this.peek==="<{>"&&(a+=1),this.peek==="<}>"&&(a-=1),this.nextToken();this.match("<}>")}return this.error(["unexpected-command",{str:En(s)}],e)}parsePrimary(e){if(this.atBoundary||this.atTerminator(e))return null;let t=null,i=this.index;if(this.match("<}>"))return this.error("unexpected-closing-delimiter",i);if(t??=this.parseGroup(),t??=this.parseNumber(),t??=this.parseEnclosure(),t??=this.parseEnvironment(e),t===null&&this.matchAll(this._positiveInfinityTokens)&&(t="PositiveInfinity"),t===null&&this.matchAll(this._negativeInfinityTokens)&&(t="NegativeInfinity"),t===null&&this.matchAll(this._notANumberTokens)&&(t="NaN"),t===null&&this.matchAll(this._imaginaryUnitTokens)&&(t="ImaginaryUnit"),t??=this.parseGenericExpression(e)??this.parseFunction(e)??this.parseSymbol(e)??vs(this),t!==null&&Y(t))return this.parsePrimary(e);if(t!==null){t=this.decorate(t,i);let r=null,o=this.index;do{if(r=this.parsePostfixOperator(t,e),t=r??t,this.index===o&&r!==null){this.index;break}o=this.index}while(r!==null)}return t!==null&&(t=this.parseSupsub(t)),t===null&&(t=this.options.parseUnexpectedToken?.(null,this)??null,t===null&&this.peek.startsWith("\\")&&(this.nextToken(),t=this.error("unexpected-command",i))),this.decorate(t,i)}parseExpression(e){this.skipSpace();let t=this.index;if(this.atBoundary)return this.index=t,null;e??={minPrec:0},e.minPrec,e.minPrec===void 0&&(e={...e,minPrec:0});let i=this.parsePrefixOperator({...e,minPrec:0});if(i??=this.parsePrimary(e),i!==null){let r=!1;for(;!r&&!this.atTerminator(e);){this.skipSpace();let o=this.parseInfixOperator(i,e);if(o===null&&e.minPrec<=cs&&this.peekDefinitions("operator").length===0){let s=this.parseExpression({...e,minPrec:cs+1});s!==null?h(i)==="InvisibleOperator"?h(s)==="InvisibleOperator"?o=["InvisibleOperator",...N(i),...N(s)]:o=["InvisibleOperator",...N(i),s]:h(s)==="InvisibleOperator"?o=["InvisibleOperator",i,...N(s)]:o=["InvisibleOperator",i,s]:o===null&&(o=this.options.parseUnexpectedToken?.(i,this)??null)}o!==null?i=o:r=!0}}return this.decorate(i,t)}decorate(e,t){if(e===null)return null;if(!this.options.preserveLatex)return e;let i=this.latex(t,this.index);return Array.isArray(e)?e={latex:i,fn:e}:typeof e=="number"?e={latex:i,num:Number(e).toString()}:typeof e=="string"?e={latex:i,sym:e}:typeof e=="object"&&e!==null&&(e.latex=i),e}error(e,t){let i;typeof e=="string"?(e.startsWith("'"),i={str:e}):(e[0].startsWith("'"),i=["ErrorCode",{str:e[0]},...e.slice(1)]);let r=this.latex(t,this.index);return r?["Error",i,["LatexString",{str:r}]]:["Error",i]}isFunctionOperator(e){return e===null?!1:!!this.getSymbolType(e).matches("function")}*getDefs(e){if(e==="operator")for(let t=this._dictionary.defs.length-1;t>=0;t--){let i=this._dictionary.defs[t];/^prefix|infix|postfix/.test(i.kind)&&(yield i)}else for(let t=this._dictionary.defs.length-1;t>=0;t--){let i=this._dictionary.defs[t];i.kind===e&&(yield i)}}};function Bp(n,e){let t=n.index,i=Ui(n)?.trim();if(i===null)return 0;let r=i!==e?0:n.index-t;return n.index=t,r}function Ip(n){let e=n.peek;return Object.values(Ss).includes(e)||Ss[e]?(n.nextToken(),!0):_s[e]||Object.values(_s).includes(e)?(n.nextToken(),n.nextToken(),!0):!1}function ll(n){let e=n.index;if(n.matchAll(["\\overset","<{>"])&&(n.match(".")||n.match("\\cdots"))&&n.matchAll(["<}>","<{>"])){let t=n.nextToken();if(t&&/^\d$/.test(t)&&n.match("<}>"))return t}return n.index=e,null}function wp(n){let e=n.peek;return e==="\\overline"||e==="\\overset"||e==="\\wideparent"||e==="\\overarc"||e==="("||e==="\\left"}function cl(n,e,t){let i=new Ts(Ee(n),e,t),r=i.parseExpression();if(!i.atEnd){let o=i.parseSyntaxError();r=r!==null?["Sequence",r,o]:o}if(r??="Nothing",t.preserveLatex){if(Array.isArray(r))return{latex:n,fn:r};if(typeof r=="number")return{latex:n,num:Number(r).toString()};if(typeof r=="string"){if(Hr(r))return{latex:n,str:F(r)};if(Ge(r))return{latex:n,sym:r};if(tn(r))return{latex:n,num:r}}typeof r=="object"&&r!==null&&(r.latex=n)}return r}function Ns(n){return n===0?{num:"0"}:Number.isInteger(n)&&Math.abs(n)<$?n:{num:n.toString()}}var fl=100;function pe(n){return(n.isFiniteCollection??!1)&&n.isIndexedCollection}function kp(n,e){return typeof e=="number"?(e<0&&(e=0),{next(){return e===0?{done:!0,value:void 0}:(e--,{done:!1,value:n})}}):{next(){return{done:!1,value:n}}}}function Bs(n){if(n.length===0)return{next(){return{done:!0,value:void 0}}};if(n.length===1){let r=n[0],o=r.each();if(!o){let s=!1;return{next(){return s?{done:s,value:void 0}:(s=!0,{done:!1,value:[r]})}}}return{next(){let s=o.next();return s.done?{done:!0,value:void 0}:{done:!1,value:[s.value]}}}}let e=Math.min(...n.map(r=>r.isCollection?r.xsize??1:1/0));if(e===0)return{next(){return{done:!0,value:void 0}}};let t=n.map(r=>r.isCollection?r.each():kp(r)),i=0;return{next(){if(i>=e)return{done:!0,value:void 0};let r=t.map(o=>o.next());return i+=1,{done:!1,value:r.map(o=>o.value)}}}}function dl(n,e,t){if(!(n.isFiniteCollection!==!0||e.isFiniteCollection!==!0)){for(let i of n.each())if(e.xcontains(i)!==!0)return!1;if(t){let i=n.xsize;if(i===void 0)return!1;let r=e.xsize;if(r===void 0||i===r)return!1}return!0}}function Cp(n,e){for(let t=0;t!==n.nops;t+=1)if(e(n.ops[t]))return t+1}function Ap(n,e){if(n.isIndexedCollection!==!0)return;let t=1,i=n.at(t);for(;i!==void 0;){if(e(i))return t;t+=1,i=n.at(t)}}function Dp(n,e){if(n.isFiniteCollection===!0){if(n.isIndexedCollection)return n.indexWhere(t=>t.isSame(e))!==void 0;for(let t of n.each())if(t.isSame(e))return!0;return!1}}function Kr(){return{isLazy:n=>!1,count:n=>n.nops,isEmpty:n=>n.nops===0,isFinite:n=>!0,contains:(n,e)=>n.ops.some(t=>t.isSame(e)),iterator:n=>{let e=1,t=n.nops;return{next:()=>e===t+1?{value:void 0,done:!0}:(e+=1,{value:n.ops[e-1-1],done:!1})}},subsetOf:dl,at:(n,e)=>{if(typeof e=="number"&&(e<0&&(e=n.nops+e+1),!(e<1||e>n.nops)))return n.ops[e-1]},indexWhere:Cp,eltsgn:n=>{},elttype:n=>n.nops===0?"unknown":n.nops===1?n.ops[0].type.type:oe(...n.ops.map(e=>e.type.type))}}function eo(n){if(!n)return;if(!n.count||!n.iterator)throw new Error('A collection must have at least an "iterator" and a "count" handler');if(n.indexWhere&&n.at===void 0)throw new Error('A collection with an "indexWhere" handler must also have an "at" handler');let e={iterator:n.iterator,count:n.count,contains:n.contains??Dp,isEmpty:n.isEmpty??(t=>{if(n.count(t)!==void 0)return n.count(t)===0}),isFinite:n.isFinite??(t=>{let i=n.count(t);if(i!==void 0)return Number.isFinite(i)}),subsetOf:n.subsetOf??dl};return n.isLazy&&(e.isLazy=n.isLazy),n.eltsgn&&(e.eltsgn=n.eltsgn),n.elttype&&(e.elttype=n.elttype),n.at&&(e.at=n.at,e.indexWhere=n.indexWhere??Ap),e}function Q(n,e){let t=n.every(r=>r.isCanonical)?n:n.map(r=>r.canonical);if(e){let r=s=>s.symbol==="Nothing"||s.operator===e||s.operator==="Sequence";if(t.every(s=>!r(s)))return t;let o=[];for(let s of t)s.symbol!=="Nothing"&&(s.ops&&(s.operator===e||s.operator==="Sequence")?o.push(...Q(s.ops,e)):o.push(s));return o}if(t.every(r=>!(r.symbol==="Nothing"||r.operator==="Sequence")))return t;let i=[];for(let r of t)r.symbol!=="Nothing"&&(r.ops&&r.operator==="Sequence"?i.push(...Q(r.ops,e)):i.push(r));return i}function lt(n,e){if(!e||n.every(i=>!i.ops||i.operator!==e))return n;let t=[];for(let i of n)!i.ops||i.operator!==e?t.push(i):t.push(...lt(i.ops,e));return t.length,n.length,t.length===n.length?n:t}function Is(n){if(n.every(t=>t.operator!=="Sequence"&&t.operator!=="Delimiter"))return n;let e=[];for(let t of n)if(!t.isValid)e.push(t);else if(t.operator==="Delimiter")if(t.op1.operator==="Sequence"){let i=t.op1.ops??[];i.length===0?e.push(t.engine.box(["Tuple"])):e.push(...Is(i))}else e.push(t.op1);else t.operator==="Sequence"?t.ops&&e.push(...t.ops):e.push(t);return e}function oi(n,e){if(n===e)return!0;if(n.ops)return n.operator!==e.operator||n.nops!==e.nops?!1:n.ops.every((t,i)=>oi(t,e.ops[i]));if(n.isNumberLiteral){if(!e.isNumberLiteral)return!1;let t=n.numericValue,i=e.numericValue;return t===i?!0:typeof t=="number"?typeof i=="number"?t===i:i.eq(t):t.eq(i)}if(n.string||e.string)return n.string===e.string;if(n.symbol||e.symbol)return n.symbol===e.symbol;if(n.rank!==0){if(n.rank!==e.rank)return!1;for(let t=0;t<n.rank;t++)if(n.shape[t]!==e.shape[t])return!1;return n.tensor.equals(e.tensor)}return!1}function no(n,e){if(n.operatorDefinition?.eq){let r=n.operatorDefinition.eq(n,n.engine.box(e));if(r!==void 0)return r}if(typeof e!="number"&&e.operatorDefinition?.eq){let r=e.operatorDefinition.eq(e,n);if(r!==void 0)return r}n=n.N();let t=typeof e!="number"?e.N():n.engine.box(e);if(n.ops||t.ops){let r=n.operatorDefinition?.eq?.(n,t);return r!==void 0||(r=t.operatorDefinition?.eq?.(t,n),r!==void 0)?r:n.isSame(t)?!0:n.unknowns.length===0&&t.unknowns.length===0?n.isFinite&&t.isFinite?pl(n.sub(t).simplify().N()):n.isNaN||t.isNaN?!1:!!(n.isInfinity&&t.isInfinity&&n.sgn===t.sgn):(n=n.expand().simplify(),t=t.expand().simplify(),Mp(n,t)?oi(n,t):void 0)}if(n.symbol){let r=n.valueDefinition?.eq?.(t);if(r!==void 0)return r}if(t.symbol){let r=t.valueDefinition?.eq?.(n);if(r!==void 0)return r}if(n.symbol&&t.symbol)return n.symbol===t.symbol;let i=n.engine;if(n.isNumberLiteral&&t.isNumberLiteral)return n.isFinite&&t.isFinite?pl(n.sub(t)):n.isNaN||t.isNaN?!1:!!(n.isInfinity&&t.isInfinity&&n.sgn===t.sgn);if(i.ask(i.box(["Equal",n,t])).length>0)return!0;if(i.ask(i.box(["NotEqual",n,t])).length>0)return!1;if(!(n.unknowns.length>0||t.unknowns.length>0))return oi(n,t)}function si(n,e){if(n.isNumberLiteral){if(typeof e!="number"&&typeof e.numericValue=="number"&&(e=e.numericValue),typeof e=="number"){if(e===0){let r=n.sgn;return r===void 0?void 0:r==="zero"?"=":r==="positive"?">":r==="negative"?"<":r==="non-negative"?">=":r==="non-positive"?"<=":void 0}if(n.isNumberLiteral){let r=n.numericValue;return typeof r=="number"?Math.abs(r-e)<=n.engine.tolerance?"=":r<e?"<":">":r.eq(e)?"=":r.lt(e)?"<":">"}return}if(!e.isNumberLiteral)return;let t=n.numericValue,i=e.numericValue;return typeof t=="number"?i.eq(t)?"=":i.lt(t)?">":"<":t.eq(i)?"=":t.lt(i)?"<":">"}if(typeof e!="number"){if(n.ops||e.ops){if(n.operatorDefinition?.eq?.(n,e)!==void 0)return"=";let i=n.sub(e).N();if(!i.isNumberLiteral)return;if(typeof i.numericValue=="number")return i.numericValue===0?"=":i.numericValue<0?"<":">";let r=n.engine.tolerance;return i.numericValue.isZeroWithTolerance(r)?"=":i.numericValue.lt(0)?"<":">"}if(n.symbol){if(n.symbol===e.symbol)return"=";let t=n.valueDefinition?.cmp?.(e);return t||(n.valueDefinition?.eq?.(e)===!0?"=":void 0)}if(n.string)return e.string?n.string===e.string?"=":n.string<e.string?"<":">":void 0;if(n.tensor)return e.tensor&&n.tensor.equals(e.tensor)?"=":void 0}}function pl(n){if(!n.isNumberLiteral)return!1;let e=n.numericValue,t=n.engine;return typeof e=="number"?t.chop(e)===0:e.isZeroWithTolerance(t.tolerance)}function Mp(n,e){let t=n.unknowns,i=e.unknowns;if(t.length!==i.length)return!1;for(let r of t)if(!i.includes(r))return!1;return!0}function ve(n){if(n){if(n.operator==="Function"&&n.isCanonical||n.symbol)return n;if(n.operator==="BuiltinFunction")return n.op1;if(n.operator==="Delimiter"){if(n.op1.operator==="Sequence")if(n.op1.nops===1)n=n.op1;else return ve(n.engine._fn("Block",n.op1.ops,{canonical:!1}));return ve(n.op1)}if(n.operator==="Function")return ai(n.engine,n.ops);if(n.operator){n.operator;let e=n.engine,t=n.subs({_:"_1"}),i=1,r=[];for(;i<10;)t.has(`_${i}`)&&r.push(t.engine.symbol(`_${i}`,{canonical:!1})),i++;if(r.length===0){t.operator!=="Block"?t=e.function("Block",[t]):t=t.canonical;let o=t.unknowns;o.length>0&&(r=o.map(s=>e.symbol(s,{canonical:!1})))}return ai(e,[t,...r])}}}function ai(n,e){if(e.length===0)return;let t=e[0].operator==="Block"?e[0].canonical:n.function("Block",[e[0]]),i=e.slice(1).map(r=>r.symbol?r:n.error("expected-a-symbol",r.toString()));t.isScoped;for(let r of i)r.symbol&&!t.localScope.bindings.has(r.symbol)&&n.declare(r.symbol,{inferred:!0,type:"unknown"},t.localScope);return n._fn("Function",[t,...i])}function An(n,e){let t=ws(n)?.(e);return t||n.engine.function("Apply",[n,...e])}function ws(n){let e=n.engine;if(n.symbol)return o=>e.function(n.symbol,o).evaluate();let t=ve(n);if(!t)throw new Error("Invalid function literal");if(n=t,n.operator,n.isCanonical,n.ops,n.ops.length===1)return n.ops[0],()=>n.ops[0].evaluate();let[i,...r]=n.ops;return i.isScoped,o=>{if(o.length>r.length)throw new Error(`Too many arguments for function "${n.toString()}": expected ${r.length}, got ${o.length}`);if(e.strict&&!o.every(a=>a.isValid))return;if(o.length<r.length){let a=new Set([...i.symbols,...r.map(f=>f.symbol)]),u=r.slice(o.length).map((f,d)=>{let p=`_${d+1}`,x=0;for(;a.has(p);)p=`_${d+1}_${x++}`;return a.add(p),e.symbol(p,{canonical:!1})}),l=Object.fromEntries(r.slice(o.length).map((f,d)=>[f.symbol,u[d]])),c=i.evaluate({withArguments:Object.fromEntries(r.slice(0,o.length).map((f,d)=>[f.symbol,o[d]]))}).subs(l);return e.function("Function",[c,...u])}let s=i.evaluate({withArguments:Object.fromEntries(r.map((a,u)=>[a.symbol,o[u].evaluate()]))});return s.isValid?s:void 0}}function le(n){return ws(n)??(e=>n.engine.function("Apply",[n,...e]).evaluate())}function ml(n){let e=ws(n),t=n.engine;return e?i=>e([t.number(i)])?.re??NaN:i=>t.function("Apply",[n,t.number(i)]).evaluate().re}function to(n,e){typeof n=="string"&&n.length>0;let t=e;for(;t;){let i=t.bindings.get(n);if(i)return i;t=t.parent}}function St(n,e){for(;e!==BigInt(0);)[n,e]=[e,n%e];return n<0?-n:n}function gl(n,e){return n*e/St(n,e)}function*io(n){if(n<0)return BigInt(0);if(n<10)return BigInt([1,1,2,6,24,120,720,5040,40320,362880][Number(n)]);if(n%BigInt(2)===BigInt(1))return n*(yield*io(n-BigInt(1)));let e=n,t=n,i=n,r=0;for(;e>2;)e-=BigInt(2),t+=e,i*=t,r+=1,(r%5e4===0||r>1e4&&r%500===0)&&(yield i);return i}function Yn(n){return n!==null&&Array.isArray(n)}function se(n){return n!==null&&Array.isArray(n)&&typeof n[0]=="number"}function hl(n){return n!==null&&Array.isArray(n)&&typeof n[0]=="bigint"}function Dn(n){return n[0]==0}function ks(n){return n[0]>0}function Ae(n){return n[0]==n[1]}function ji(n){return n[0]===-n[1]}function Tt(n){return n[1]==1}function Cs(n){return Number(n[0])}function As(n){return Number(n[1])}function yl(n){return Number(n[0])/Number(n[1])}function Bt(n,e){if(typeof n[0]=="number"&&!Number.isFinite(n[0]))return n;let t=e;if(t===null)return n;if(hl(t))return n=[BigInt(n[0]),BigInt(n[1])],[t[1]*n[0]+t[0]*n[1],t[1]*n[1]];if(!Number.isFinite(t[0]))return t;if(hl(n)){let i=[BigInt(t[0]),BigInt(t[1])];return[i[1]*n[0]+i[0]*n[1],i[1]*n[1]]}return[t[1]*n[0]+t[0]*n[1],t[1]*n[1]]}function Mn(n,e){return se(n)&&se(e)?[n[0]*e[0],n[1]*e[1]]:se(n)?[BigInt(n[0])*e[0],BigInt(n[1])*e[1]]:se(e)?[BigInt(e[0])*n[0],BigInt(e[1])*n[1]]:[n[0]*e[0],n[1]*e[1]]}function It(n){return[-n[0],n[1]]}function xl(n){return n[0]<0?[-n[1],-n[0]]:[n[1],n[0]]}function bl(n){return[Number(n[0]),Number(n[1])]}function ro(n,e){return se(n)&&se(e)?n[1]===1&&e[1]===1?[Pe(n[0],e[0]),1]:[Pe(n[0],e[0]),Nt(n[1],e[1])]:n[1]===1&&e[1]===1?[St(BigInt(n[0]),BigInt(e[0])),BigInt(1)]:[St(BigInt(n[0]),BigInt(e[0])),gl(BigInt(n[1]),BigInt(e[1]))]}function ui(n){if(se(n)){if(n[0]===1||n[1]===1)return n;if(n[1]<0&&(n=[-n[0],-n[1]]),!Number.isFinite(n[1]))return[0,1];let r=Pe(n[0],n[1]);return r<=1?n:[n[0]/r,n[1]/r]}n[1]<0&&(n=[-n[0],-n[1]]);let e=St(n[0],n[1]),[t,i]=e<=1?n:[n[0]/e,n[1]/e];return t<=Number.MAX_SAFE_INTEGER&&t>=Number.MIN_SAFE_INTEGER&&i<=Number.MAX_SAFE_INTEGER?[Number(t),Number(i)]:[t,i]}function El(n){if(!Number.isFinite(n)||n%1===0)return n;let t=1e-15,i=Math.floor(n),r=1,o=0,s=i,a=1;for(;n-i>t*a*a;){n=1/(n-i),i=Math.floor(n);let u=r;r=s;let l=o;o=a,s=u+i*r,a=l+i*o}return[s,a]}var j=class{get bignumRe(){}im;get bignumIm(){}isZeroWithTolerance(e){return this.isZero}valueOf(){return this.im===0?this.bignumRe?this.bignumRe.toNumber():this.re:this.toString()}[Symbol.toPrimitive](e){return e==="string"?this.toString():this.valueOf()}toJSON(){if(this.im===0){let e=this.re;if(Number.isFinite(e))return e}return this.N().toString()}print(){let e=console.log;e?.(this.toString())}};function Rp(n){if(n==="N")return[0,""];let e={I:1,V:5,X:10,L:50,C:100,D:500,M:1e3},t=0,i=0;n=n.toUpperCase();for(let r=n.length-1;r>=0;r--){let o=e[n[r]];if(o===void 0)return[t,n.slice(r)];o<i?t-=o:t+=o,i=o}return[t,""]}function Zi(n,e){if(n=n.trim(),n.length===0)return[NaN,""];if(n.startsWith("+"))return Zi(n.slice(1),e);if(n.startsWith("-")){let[r,o]=Zi(n.slice(1),e);return[-r,o]}let t=10;if(typeof e=="string"&&(e=e.toLowerCase()),n.startsWith("0x"))t=16,n=n.slice(2);else if(n.startsWith("0b"))t=2,n=n.slice(2);else{if(e==="roman")return Rp(n);if(e==="base64"||e==="base-64")try{return[parseInt(btoa(n)),""]}catch{return[NaN,""]}else typeof e=="number"?t=e:typeof e=="string"&&(t=parseInt(e))}let i=0;for(let r=0;r<n.length;r++){let o={" ":-1,"\xA0":-1,"\u2000":-1,"\u2001":-1,"\u2002":-1,"\u2003":-1,"\u2004":-1,"\u2005":-1,"\u2006":-1,"\u2007":-1,"\u2008":-1,"\u2009":-1,"\u200A":-1,"\u200B":-1,"\u202F":-1,"\u205F":-1,_:-1,",":-1,0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,b:11,c:12,d:13,e:14,f:15,g:16,h:17,i:18,j:19,k:20,l:21,m:22,n:23,o:24,p:25,q:26,r:27,s:28,t:29,u:30,v:31,w:32,x:33,y:34,z:35}[n[r]];if(o!==-1){if(o===void 0)return[i,n.substring(r)];if(o>=t)return[i,n.substring(r)];i=i*t+o}}return[i,""]}function Be(n,e){if(typeof e=="number"&&typeof n=="number")return n.toFixed(e);let t=n.toString();if(typeof n=="number"&&Number.isInteger(n)&&t.includes("e")){let i=BigInt(n).toString(),r=i.match(/0+$/);if((r?r[0].length:0)<=5)return i}else if(typeof n=="bigint"){let i=t.match(/0+$/),r=i?i[0].length:0;if(r>5)return`${t.slice(0,-r)}e+${r}`}return t}function vl(n){if(typeof n=="number")return Number.isInteger(n)?BigInt(n):null;if(n==null||!qn(n))return null;let e=Qt(n)?n.num:n;if(typeof e=="number")return Number.isInteger(e)?BigInt(e):null;if(typeof e!="string")return null;let t=e.toLowerCase().replace(/[nd]$/,"").replace(/[\u0009-\u000d\u0020\u00a0]/g,"");return t==="nan"||/^(infinity|\+infinity|oo|\+oo|-infinity|-oo)$/.test(t)?null:ie(t)}function Le(n,e){if(typeof n=="number")return isNaN(n)?"NaN":Number.isFinite(n)?typeof e=="number"?{num:n.toFixed(e)}:n:n<0?"NegativeInfinity":"PositiveInfinity";if(n>=Number.MIN_SAFE_INTEGER&&n<=Number.MAX_SAFE_INTEGER)return Number(n);let t=Be(n);return Number(n).toString()===t?Number(n):{num:t}}var K=class n extends j{__brand;rational;radical;im=0;factory;bignum;constructor(e,t,i){if(super(),this.factory=t,this.bignum=i,typeof e=="number"){!Number.isFinite(e)||Number.isInteger(e),this.rational=[e,1],this.radical=1;return}if(typeof e=="bigint"){this.rational=[e,BigInt(1)],this.radical=1;return}typeof e!="object"||"im"in e;let r=1;if(typeof r!="number"||Number.isInteger(r),r==0){this.rational=[0,1],this.radical=1;return}let o=e.rational?[...e.rational]:[1,1];r!=1&&(typeof r=="bigint"?o=Mn(o,[r,BigInt(1)]):o=Mn(o,[r,1])),this.rational=o,this.radical=e.radical??1,this.radical<=$&&this.radical>=1,this.normalize()}get type(){return this.isNaN?"number":this.isPositiveInfinity||this.isNegativeInfinity?"non_finite_number":this.radical!==1?(Dn(this.rational),"finite_real"):Tt(this.rational)?"finite_integer":"finite_rational"}get isExact(){return!0}get asExact(){return this}toJSON(){if(this.isNaN)return"NaN";if(this.isPositiveInfinity)return"PositiveInfinity";if(this.isNegativeInfinity)return"NegativeInfinity";if(this.isZero)return 0;if(this.isOne)return 1;if(this.isNegativeOne)return-1;let e=t=>Tt(t)?Le(t[0]):["Rational",Le(t[0]),Le(t[1])];return this.radical===1?e(this.rational):Ae(this.rational)?["Sqrt",this.radical]:ji(this.rational)?["Negate",["Sqrt",this.radical]]:this.rational[0]==1?["Divide",["Sqrt",this.radical],Le(this.rational[1])]:this.rational[0]==-1?["Negate",["Divide",["Sqrt",this.radical],Le(this.rational[1])]]:["Multiply",e(this.rational),["Sqrt",this.radical]]}clone(e){return new n(e,this.factory,this.bignum)}toString(){if(this.isZero)return"0";if(this.isOne)return"1";if(this.isNegativeOne)return"-1";let e=i=>Tt(i)?Be(i[0]):`${Be(i[0])}/${Be(i[1])}`;if(this.radical===1)return e(this.rational);let t=i=>`sqrt(${Be(i)})`;return Ae(this.rational)?t(this.radical):ji(this.rational)?`-${t(this.radical)}`:this.rational[0]==1?`${t(this.radical)}/${Be(this.rational[1])}`:this.rational[0]==-1?`-${t(this.radical)}/${Be(this.rational[1])}`:`${e(this.rational)}${t(this.radical)}`}get sign(){return Dn(this.rational)?0:ks(this.rational)?1:-1}get re(){return yl(this.rational)*Math.sqrt(this.radical)}get bignumRe(){let e,t=this.rational;return se(t)?e=this.bignum(t[0]).div(t[1]):e=this.bignum(t[0].toString()).div(this.bignum(t[1].toString())),this.radical===1?e:e.mul(this.bignum(this.radical).sqrt())}get numerator(){return this.rational[1]==1?this:this.clone({rational:se(this.rational)?[this.rational[0],1]:[this.rational[0],BigInt(1)],radical:this.radical})}get denominator(){return se(this.rational)?this.clone(this.rational[1]):this.clone({rational:[this.rational[1],BigInt(1)]})}normalize(){if(Number.isInteger(this.radical)&&this.radical>0&&Number.isFinite(this.radical),isNaN(this.radical)){this.rational=[NaN,1],this.radical=1;return}let[e,t]=this.rational;if(t==0){this.rational=[NaN,1],this.radical=1;return}if(this.radical===0||e===0){this.rational=[0,1],this.radical=1;return}if(this.radical>=4){let[i,r]=Yt(this.radical,2);typeof this.rational[0]=="number"?this.rational[0]*=i:this.rational=Mn(this.rational,[i,1]),this.radical=r}this.rational=ui(this.rational)}get isNaN(){return Number.isNaN(this.rational[0])}get isPositiveInfinity(){return this.rational[0]==1/0}get isNegativeInfinity(){return this.rational[0]==-1/0}get isComplexInfinity(){return!1}get isZero(){return Dn(this.rational)}get isOne(){return!(this.rational[0]!==this.rational[1]||this.radical!==1)}get isNegativeOne(){return!(this.rational[0]!==-this.rational[1]||this.radical!==1)}sgn(){if(!Number.isNaN(this.rational[0]))return Dn(this.rational)?0:ks(this.rational)?1:-1}N(){return this.isZero||this.isOne||this.isNegativeOne?this:this.rational[1]==1&&this.radical===1?this:this.factory(this.bignumRe)}neg(){return this.isZero?this:this.clone({rational:It(this.rational),radical:this.radical})}inv(){return this.isOne?this:this.isNegativeOne?this:this.clone({rational:se(this.rational)?[this.rational[1],this.rational[0]*this.radical]:[this.rational[1],this.rational[0]*BigInt(this.radical)],radical:this.radical})}add(e){return typeof e=="number"?e===0?this:Number.isInteger(e)&&this.radical===1?this.clone({rational:se(this.rational)?[this.rational[0]+e*this.rational[1],this.rational[1]]:[this.rational[0]+BigInt(e)*this.rational[1],this.rational[1]]}):this.factory(this.bignumRe).add(e):e.isZero?this:this.isZero?e:e instanceof n?this.radical===e.radical?this.clone({rational:Bt(this.rational,e.rational),radical:this.radical}):this.factory(this.bignumRe).add(e):e.add(this)}sub(e){return this.add(e.neg())}mul(e){return e===0?this.clone(0):e===1?this:e===-1?this.neg():typeof e=="number"?Number.isInteger(e)?this.clone({rational:se(this.rational)?[this.rational[0]*e,this.rational[1]]:[this.rational[0]*BigInt(e),this.rational[1]],radical:this.radical}):this.factory(this.bignumRe).mul(e):e instanceof M?this.factory(e).mul(this):e.im!==0?e.mul(this):e.isZero?e:e.isOne?this:e.isNegativeOne?this.neg():e.isNaN?e:this.isZero?this:this.isOne?e:this.isNegativeOne?e.neg():e instanceof n?this.clone({rational:Mn(this.rational,e.rational),radical:this.radical*e.radical}):e.mul(this)}div(e){if(typeof e=="number")return e===1?this:e===-1?this.neg():e===0?this.clone(NaN):this.clone({rational:se(this.rational)?[this.rational[0],this.rational[1]*e]:[this.rational[0],this.rational[1]*BigInt(e)],radical:this.radical});if(e.isOne)return this;if(e.isNegativeOne)return this.neg();if(this.isZero)return e.isZero?this.clone(NaN):e.isNaN?e:this;if(e.isNaN)return e;if(e.isZero)return this.clone(this.sign*(1/0));if(!(e instanceof n))return this.factory(this.bignumRe).div(e);if(e.im!==0)return this.factory(this.bignumRe).div(e);let t;if(se(this.rational)&&se(e.rational)){let[i,r]=this.rational,[o,s]=e.rational;t=[i*s,r*o*e.radical]}else t=Mn(this.rational,[BigInt(e.rational[1]),BigInt(e.rational[0])*BigInt(e.radical)]);return this.clone({rational:t,radical:this.radical*e.radical})}pow(e){if(Array.isArray(e),this.isNaN)return this;if(typeof e=="number"&&isNaN(e))return this.clone(NaN);if(e instanceof j){if(e.isNaN)return this.clone(NaN);if(e.isZero)return this.clone(1);if(e.isOne)return this;if(e.im)e={re:e.re,im:e.im};else{if(e instanceof n&&e.radical===1&&e.rational[0]==1)return this.root(e.rational[0]);e=e.re}}if(e===.5)return this.sqrt();if(typeof e=="object"&&("re"in e||"im"in e))return this.factory(this.bignumRe).pow(e);if(this.isPositiveInfinity){if(e===-1)return this.clone(0);if(e===1/0)return this.clone(1/0);if(e===-1/0)return this.clone(0)}else if(this.isNegativeInfinity&&e===1/0)return this.clone(NaN);if((e===1/0||e===-1/0)&&(this.isOne||this.isNegativeOne))return this.clone(NaN);if(e===1)return this;if(e===-1)return this.inv();if(e===0)return this.clone(1);if(this.isZero){if(e>0)return this;if(e<0)return this.factory({im:1/0})}if(e<0)return this.pow(-e).inv();if(e%1===.5)return this.pow(Math.floor(e)).mul(this.sqrt());if(this.radical>$||this.rational[0]>$||this.rational[0]<-$||this.rational[1]>$)return this.factory(this.bignumRe).pow(e);if(this.sign<0){if(Number.isInteger(e)){let t=e%2===0?1:-1;return this.clone({rational:se(this.rational)?[t*(-this.rational[0])**e,this.rational[1]**e]:[BigInt(t)*(-this.rational[0])**BigInt(e),this.rational[1]**BigInt(e)],radical:this.radical**e})}return this.factory({im:(-this.re)**e})}else if(Number.isInteger(e))return this.clone({rational:se(this.rational)?[this.rational[0]**e,this.rational[1]**e]:[BigInt(this.rational[0])**BigInt(e),this.rational[1]**BigInt(e)],radical:this.radical**e});return this.factory(this.bignumRe).pow(e)}root(e){if(e===0)return this.clone(NaN);if(this.isNaN)return this;if(this.isZero)return this;if(e===1)return this;if(e===-1)return this.inv();if(e<0)return this.root(-e).inv();if(e%1===.5)return this.root(Math.floor(e)).sqrt();if(this.radical===1){if(this.sign>0){let t=this.re;if(Number.isInteger(t)){if(t>0){let i=Math.pow(t,1/e);if(Number.isInteger(i))return this.clone(i)}return this.factory(this.bignumRe).root(e)}}return this.factory(this.bignumRe).root(e)}if(this.sign<0)return this.factory({im:Math.pow(-this.re,1/e)});if(this.radical>$||this.rational[0]>$||this.rational[0]<-$||this.rational[1]>$)return this.factory(this.bignumRe).root(e);if(this.rational[1]==1){let t=Math.pow(this.rational[0],1/e);if(Number.isInteger(t))return this.clone(t)}return this.factory(this.bignumRe).root(e)}sqrt(){if(this.isZero||this.isOne)return this;if(this.radical===1)if(se(this.rational)){let[e,t]=this.rational;return e*t>$?this.factory(this.bignumRe).sqrt():e>0?this.clone({radical:e*t,rational:[1,t]}):this.factory({im:Math.sqrt(-e*t)/t})}else return this.factory(this.bignumRe).sqrt();if(this.sign>0){let e=Math.sqrt(this.re);if(Number.isInteger(e))return this.clone(e)}return this.factory(this.bignumRe).sqrt()}gcd(e){if(!(e instanceof n))return e.gcd(this);if(this.isOne||e.im!==0||e.isOne)return this.clone(1);let t=ro(this.rational,e.rational),i=Pe(this.radical,e.radical);return this.clone({rational:t,radical:i})}abs(){return this.sign===-1?this.neg():this}ln(e){return this.isZero?this.clone(NaN):this.isPositiveInfinity?this.clone(1/0):this.sign<0?this.clone(NaN):this.isOne?this.clone(0):this.isNegativeOne?this.factory({im:Math.PI}):this.factory(this.bignumRe).ln(e)}exp(){return this.isNaN?this.clone(NaN):this.isZero?this.clone(1):this.isNegativeInfinity?this.clone(0):this.isPositiveInfinity?this.clone(1/0):this.factory(this.bignumRe).exp()}floor(){return this.isNaN?this.clone(NaN):this.type==="integer"?this:this.clone(Math.floor(this.re))}ceil(){return this.isNaN?this.clone(NaN):this.type==="integer"?this:this.clone(Math.ceil(this.re))}round(){return this.isNaN?this.clone(NaN):this.type==="integer"?this:this.clone(Math.round(this.re))}eq(e){return typeof e=="number"?this.radical===1&&Tt(this.rational)&&this.rational[0]==e:e instanceof n?this.radical===e.radical&&this.rational[0]==e.rational[0]&&this.rational[1]==e.rational[1]:e.im===0&&e.re===this.re}lt(e){return this.im,typeof e=="number"?this.re<e:this.re<e.re}lte(e){return this.im,typeof e=="number"?this.re<=e:this.re<=e.re}gt(e){return this.im,typeof e=="number"?this.re>e:this.re>e.re}gte(e){return this.im,typeof e=="number"?this.re>=e:this.re>=e.re}static sum(e,t,i){if(e.length===1)return e;if(e.some(u=>!u.isExact)){if(e.length===2)return[e[0].add(e[1])];let u=t(0);for(let l of e)u=u.add(l);return[u]}let r=0,o=[0,1],s=[];for(let u of e){if(u.isNaN)return[new n(NaN,t,i)];if(!u.isZero)if(r+=u.im,u instanceof n){let l=u.rational;if(u.radical===1)o=Bt(o,l);else{let c=s.findIndex(f=>f.radical===u.radical);c===-1?s.push({multiple:l,radical:u.radical}):s[c].multiple=Bt(s[c].multiple,l)}}else E(u.type,"integer"),o=Bt(o,[u.re,1])}if(Dn(o)&&s.length===0)return r===0?[new n(0,t,i)]:[t({im:r})];let a=[];return r!==0&&a.push(t({im:r})),s.length===0?a.push(new n({rational:o},t,i)):(s.push({multiple:o,radical:1}),a.push(...s.map(u=>new n({rational:u.multiple,radical:u.radical},t,i)))),a}};function rn(n){let e=n.numericValue;if(e===null||typeof e=="number"&&!Number.isFinite(e)||e instanceof j&&(e.isNaN||e.isPositiveInfinity||e.isNegativeInfinity))return;if(typeof e=="number")return Number.isInteger(e)?[e,1]:void 0;let t=e.type;if(t!=="finite_integer"&&t!=="finite_rational"||e.im!==0)return;if(e instanceof K)return e.radical!==1?void 0:e.rational;let i=e.bignumRe;if(i!==void 0&&Number.isInteger(i))return[ie(i),BigInt(1)];let r=e.re;if(Number.isInteger(r))return[r,1]}function Qn(n){if(n==null)return null;if(typeof n=="bigint")return n;if(typeof n=="number"&&Number.isInteger(n))return BigInt(n);if(Xn(n)){let e=n.numericValue;if(e===null)return null;if(typeof e=="number")return Number.isInteger(e)?BigInt(e):null;if(e.im!==0)return null;let t=e.bignumRe;return t?.isInteger()?ie(t):Number.isInteger(e.re)?BigInt(e.re):null}return n instanceof M||typeof n=="string"?ie(n):n instanceof q?n.im===0?ie(n.re):null:vl(n)}function Ds(n){if(n==null)return null;let e=typeof n=="number"?n:n.numericValue;if(e===null)return null;if(typeof e=="number")return n.engine.bignum(e);if(e.im!==0)return null;let t=e.bignumRe??e.re;return typeof t=="number"&&isNaN(t)?null:n.engine.bignum(t)}function ee(n){if(n==null)return null;if(typeof n=="number")return Number.isInteger(n)&&n>=-$&&n<=$?n:null;let e=n.numericValue;if(e===null)return null;if(typeof e=="number")return Number.isInteger(e)&&e>=-$&&e<=$?e:null;if(e.im!==0)return null;let t=e.re;return Number.isInteger(t)&&t>=-$&&t<=$?Number(t):null}function P(n){let e=n?.numericValue??void 0;return e===void 0?null:Math.round(typeof e=="number"?e:e.re)}function ye(n){if(n==null)return null;let e=n.numericValue;if(e===null)return null;if(typeof e=="number")return BigInt(Math.round(e));let t=e.bignumRe??e.re;return typeof t=="number"?BigInt(Math.round(t)):ie(t.round())}function Fe(n){if(n.symbol&&!n.isConstant)return 1;if(n.operator==="Power"&&n.op2.isNumberLiteral){if(Fe(n.op1)===0)return 0;let e=ee(n.op2);return e!==null&&e>0?e:0}if(n.operator==="Multiply"){let e=0;for(let t of n.ops){let i=Fe(t);e=e+i}return e}if(n.operator==="Add"||n.operator==="Subtract"){let e=0;for(let t of n.ops)e=Math.max(e,Fe(t));return e}return n.operator==="Negate"||n.operator==="Divide"?Fe(n.op1):0}function on(n){if(n.symbol&&!n.isConstant)return 1;if(n.operator==="Power"&&n.op2.isNumberLiteral){if(on(n.op1)===0)return 0;let e=ee(n.op2);return e!==null&&e>0?e:0}if(n.operator==="Multiply"||n.operator==="Add"||n.operator==="Subtract"){let e=0;for(let t of n.ops)e=Math.max(e,Fe(t));return e}return n.operator==="Negate"||n.operator==="Divide"?on(n.op1):0}function Nl(n){return n.symbol&&!n.isConstant?n.symbol:n.ops?n.ops.map(e=>Nl(e)).join(" ").trim():""}function Ms(n){return Nl(n).split(" ").reverse().join(" ").trim()}function re(n,e,t,i){if((n?.numericValue??null)===null)return;let r=n.engine,o;if(n.im!==0)o=i?.(r.complex(n.re,n.im));else{let s=n.bignumRe;if(s!==void 0&&me(r)&&t)o=t(s);else{let a=n.re;me(r)&&t?o=t(r.bignum(a)):o=e(a)}}if(o!==void 0)return o instanceof q?r.number(r._numericValue({re:o.re,im:o.im})):r.number(o)}function Rn(n,e,t,i,r){if(n.numericValue===null||e.numericValue===null)return;let o=n.engine,s;if((n.im!==0||e.im!==0)&&(s=r?.(o.complex(n.re,n.im),o.complex(e.re,e.im))),s===void 0&&i){let a=n.bignumRe,u=e.bignumRe;(a!==void 0||u!==void 0)&&(a??=o.bignum(n.re),u??=o.bignum(e.re),s=i(a,u))}if(s===void 0){let a=n.re,u=e.re;!isNaN(a)&&!isNaN(u)&&(me(o)&&i?s=i(o.bignum(n.bignumRe??a),o.bignum(e.bignumRe??u)):s=t(a,u))}if(s!==void 0)return s instanceof q?o.number(o._numericValue({re:o.chop(s.re),im:o.chop(s.im)})):o.number(o.chop(s))}function _l(n){return n.operator==="Sqrt"||n.operator==="Power"&&n.op2.im===0&&n.op2.re===.5||n.operator==="Root"&&n.op2.im===0&&n.op2.re===2}function oo(n){if(_l(n))return rn(n.op1)??null;if(n.operator==="Divide"&&n.op1.is(1)&&_l(n.op2)){let e=n.op2.re;return Number.isInteger(e)?[1,e]:null}return null}function Kn(n,e){let t=n.engine,i=n.isCanonical&&e.isCanonical,r=()=>t._fn("Power",[n,e],{canonical:i});if(n.operator==="Power"){let[a,u]=n.ops;return t._fn("Power",[a,t.box(["Multiply",u,e],{canonical:i||"Power"})])}if(e.isFunctionExpression||e.symbol!==null||!e.type.matches("number"))return r();if(n.isNumberLiteral&&n.is(0))return e.type.matches("imaginary")||e.isNaN||e.is(0)?t.NaN:e.isInfinity?e.isPositive?t.Zero:e.isNegative?t.ComplexInfinity:t.NaN:e.isGreater(0)?t.Zero:e.isLess(0)?t.ComplexInfinity:r();let o=n.type.matches("number")&&(n.isFunctionExpression===!1||n.operator==="Negate");if(e.is(0))return o&&n.isFinite!==void 0?n.isFinite?t.One:t.NaN:r();if(o&&n.is(1))return e.isFinite?t.One:t.NaN;if(e.is(1)&&n.type.matches("number"))return n;if(e.is(-1)){if(o){if(n.isInfinity&&(n.isNegative||n.isPositive))return t.Zero;if(n.is(-1))return t.NegativeOne;if(n.is(1))return t.One}return n.isCanonical?n.inv():t._fn("Power",[n,t.number(-1)],{canonical:!1})}if(e.isInfinity&&o)return e.isPositive?n.is(-1)?t.NaN:n.isInfinity?t.ComplexInfinity:n.isNaN?t.NaN:n.isReal?n.isGreater(1)?t.PositiveInfinity:n.isLess(-1)?t.ComplexInfinity:t.Zero:r():e.isNegative?n.is(-1)?t.NaN:n.isInfinity?t.Zero:n.isNaN?t.NaN:n.isReal?n.isGreater(0)?n.isLess(1)?t.PositiveInfinity:t.Zero:n.isGreater(-1)?t.ComplexInfinity:t.Zero:r():t.NaN;if(n.isNumberLiteral&&n.isInfinity){if(e.type.matches("imaginary"))return t.NaN;if(e.type.matches("complex")&&!isNaN(e.re)){if(e.re>0)return t.ComplexInfinity;if(e.re<0)return t.Zero}}if(e.is(.5))return n.isCanonical?wt(n,2):t._fn("Sqrt",[n],{canonical:!1});let s=rn(e);return s!==void 0&&s[0]===1&&s[1]!==1?n.isCanonical?wt(n,t.number(s[1])):t._fn("Root",[n,t.number(s[1])],{canonical:!1}):r()}function wt(n,e){let t=n.engine,i;if(typeof e=="number"?i=e:e.isNumberLiteral&&e.im===0&&(i=e.re),i===1)return n;if(i===2){if(n.isNumberLiteral&&n.type.matches("rational")&&n.re<$){let r=n.sqrt();if(typeof r.numericValue=="number"||r.numericValue.isExact)return r}return t._fn("Sqrt",[n],{canonical:n.isCanonical})}return t._fn("Root",[n,typeof e=="number"?t.number(e):e],{canonical:n.isCanonical&&(typeof e=="number"||e.isCanonical)})}function Ie(n,e,{numericApproximation:t}){if(!n.isCanonical||typeof e!="number"&&!e.isCanonical)return n.engine._fn("Power",[n,n.engine.box(e)],{canonical:!1});if(t&&n.isNumberLiteral){if(typeof e=="number")return re(n,s=>Math.pow(s,e),s=>s.pow(e),s=>s.pow(e))??Ie(n,e,{numericApproximation:!1});if(e.isNumberLiteral)return Rn(n,e,(s,a)=>Math.pow(s,a),(s,a)=>s.pow(a),(s,a)=>s.pow(a))??Ie(n,e,{numericApproximation:!1})}let i=n.engine;typeof e!="number"&&(e=e.canonical);let r=Kn(n,i.box(e));if(r.operator!=="Power")return r;let o=typeof e=="number"?e:e.im===0?e.re:void 0;if(n.symbol==="ComplexInfinity")return i.NaN;if(n.symbol==="ExponentialE"){let s=li(e);if(s!==void 0){if(s=ao(s),s!==void 0)return i.function("Cos",[s]).add(i.function("Sin",[s]).mul(i.I)).simplify()}else{if(typeof e=="number")return i.number(i._numericValue(i.E.N().numericValue).pow(e));if(e.isNumberLiteral)return i.number(i._numericValue(i.E.N().numericValue).pow(e.numericValue))}}if(n.operator==="Power"){let[s,a]=n.ops;return Ie(s,a.mul(e),{numericApproximation:t})}if(n.operator==="Divide"){let[s,a]=n.ops;return Ie(s,e,{numericApproximation:t}).div(Ie(a,e,{numericApproximation:t}))}if(n.operator==="Negate"&&o!==void 0)return o%2===0?Ie(n.op1,e,{numericApproximation:t}):Ie(n.op1,e,{numericApproximation:t}).neg();if(n.operator==="Sqrt")return o===2?n.op1:o!==void 0&&o%2===0?n.op1.pow(o/2):Ie(n.op1,e,{numericApproximation:t}).sqrt();if(n.operator==="Exp")return Ie(i.E,n.op1.mul(e),{numericApproximation:t});if(n.operator==="Multiply"){let s=n.ops.map(a=>Ie(a,e,{numericApproximation:t}));return i._fn("Multiply",s)}if(typeof e!="number"&&e.isNumberLiteral){let s=rn(e);if(s!==void 0&&s[0]===1)return so(n,i.number(s[1]),{numericApproximation:t})}if(n.operator==="Root"){let[s,a]=n.ops;return Ie(s,i.box(e).div(a),{numericApproximation:t})}if(n.isNumberLiteral&&Number.isInteger(o)){let s=n.numericValue;return typeof s=="number"?re(n,a=>Math.pow(a,o),a=>a.pow(o),a=>a.pow(o))??i._fn("Power",[n,i.box(e)]):i.number(s.pow(o))}return i._fn("Power",[n,i.box(e)])}function so(n,e,{numericApproximation:t}){if(!n.isCanonical||!e.isCanonical)return n.engine._fn("Root",[n,e],{canonical:!1});if(t&&n.isNumberLiteral&&e.isNumberLiteral){let i=n.isNegative,r=e.isEven;return i&&(n=n.neg()),Rn(n,e,(o,s)=>{let a=Math.pow(o,1/s);return i&&!r?-a:a},(o,s)=>{let a=o.pow(s.pow(-1));return i&&!r?a.neg():a},(o,s)=>{let a=o.pow(typeof s=="number"?1/s:s.inverse());return i&&!r?a.neg():a})??so(n,e,{numericApproximation:!1})}if(n.isNumberLiteral&&e.isNumberLiteral&&e.isInteger){let i=typeof e=="number"?e:e.im===0?e.re:void 0;if(i!==void 0)if(typeof n.numericValue=="number"){let r=n.engine._numericValue(n.numericValue)?.root(i);if(r?.isExact)return n.engine.number(r)}else{let r=n.numericValue.asExact?.root(i);if(r?.isExact)return n.engine.number(r)}}return n.engine._fn("Root",[n,e])}var ct=1e5,Pp={Sin:!0,Cos:!0,Tan:!0,Cot:!0,Sec:!0,Csc:!0,Sinh:!0,Cosh:!0,Tanh:!0,Coth:!0,Sech:!0,Csch:!0,Arcsin:!0,Arccos:!0,Arctan:!0,Arccot:!0,Arcsec:!0,Arccsc:!0,Arcsinh:!0,Arccosh:!0,Arctanh:!0,Arccoth:!0,Arccsch:!0,Arcsech:!0};function Lp(n){return!n||typeof n!="string"?!1:n in Pp}function Hi(n,e){let t=Fe(n),i=Fe(e);if(t!==i)return i-t;let r=on(n),o=on(e);if(r!==o)return o-r;let s=Ms(n),a=Ms(e);if(s||a){if(!s)return 1;if(!a||s<a)return-1;if(s>a)return 1}return xe(n,e)}var Sl=["integer","rational","radical","real","complex","constant","symbol","multiply","divide","add","trig","fn","power","string","other"];function Tl(n){if(typeof n.numericValue=="number")return Number.isInteger(n.numericValue)?"integer":"real";if(n.numericValue){let e=n.numericValue.type;return e==="integer"||e==="finite_integer"?"integer":e==="rational"||e==="finite_rational"?"rational":e==="real"||e==="finite_real"?"real":e==="complex"||e==="finite_complex"||e==="imaginary"||e==="finite_number"?"complex":e==="non_finite_number"?"constant":e==="number"?"real":"other"}return n.symbol==="ImaginaryUnit"?"complex":oo(n)?"radical":n.symbol&&n.isConstant?"constant":n.symbol?"symbol":Lp(n.operator)?"trig":n.operator==="Add"?"add":n.operator==="Power"||n.operator==="Root"?"power":n.operator==="Multiply"||n.operator==="Negate"?"multiply":n.operator==="Divide"?"divide":n.operator==="Rational"?"rational":n.operator==="Complex"?n.im!==0?"complex":"real":n.operator==="Sqrt"?n.op1.isNumberLiteral&&(n.op1.isInteger||n.op1.isRational)?"radical":"power":n.ops?"fn":n.string?"string":"other"}function xe(n,e){if(n===e)return 0;let t=Tl(n),i=Tl(e);if(t!==i)return Sl.indexOf(t)-Sl.indexOf(i);if(t==="complex"){let[r,o]=Bl(n),[s,a]=Bl(e);return o!==a?o-a:r-s}if(t==="integer"||t==="rational"||t==="real"){let r=n.numericValue,o=e.numericValue;r===null&&n.operator==="Rational"&&(r=n.op1.re/n.op2.re),o===null&&e.operator==="Rational"&&(o=e.op1.re/e.op2.re);let s=typeof r=="number"?r:r.re,a=typeof o=="number"?o:o.re;return s-a}if(t==="radical")return xe(n.op1,e.op1);if(t==="constant"||t==="symbol")return n.symbol===e.symbol?0:n.symbol>e.symbol?1:-1;if(t==="add"){let r=n.ops,o=e.ops;if(r.length!==o.length)return o.length-r.length;for(let s=0;s<r.length;s++){let a=xe(r[s],o[s]);if(a!==0)return a}return 0}if(t==="power"){let r=Fe(n),o=Fe(e);if(r!==o)return o-r;let s=on(n),a=on(e);return s!==a?s-a:xe(n.op1,e.op1)}if(t==="multiply"){let r=Fe(n),o=Fe(e);if(r!==o)return o-r;let s=on(n),a=on(e);if(s!==a)return s-a;let u=n.ops,l=e.ops;if(u.length!==l.length)return l.length-u.length;for(let c=0;c<u.length;c++){let f=xe(u[c],l[c]);if(f!==0)return f}return 0}if(t==="divide"){let r=Fe(n.op1),o=Fe(e.op1);if(r!==o)return o-r;let s=on(n.op1),a=on(e.op1);if(s!==a)return s-a;let u=xe(n.op1,e.op1);return u!==0?u:xe(n.op2,e.op2)}if(t==="fn"||t==="trig"){if(n.operator==e.operator&&n.nops===1&&e.nops===1)return xe(n.op1,e.op1);let r=n.operatorDefinition?.complexity??ct,o=e.operatorDefinition?.complexity??ct;return r===o?n.operator===e.operator?Rs(n)-Rs(e):n.operator<e.operator?1:-1:r-o}return t==="string"?n.string===e.string?0:e.string<n.string?-1:1:(n.complexity??ct)-(e.complexity??ct)}function Ps(n,{recursive:e=!1}){if(n.isCanonical||!n.ops)return n;let t=n.ops;return e&&(t=t.map(i=>Ps(i,{recursive:e}))),t=Wi(n.operator,t),n.engine._fn(n.operator,t,{canonical:!1})}function Wi(n,e){if(e.length===0)return e;let t=e[0].engine;if(n==="Add")return[...e].sort(Hi);if(n==="Multiply")return[...e].sort(xe);let i=t.lookupDefinition(n);return!i||!Z(i)||!i.operator.commutative?e:i.operator.commutativeOrder?[...e].sort(i.operator.commutativeOrder):[...e].sort(xe)}function Rs(n){return n.ops?1+[...n.ops].reduce((e,t)=>e+Rs(t),0):1}function Bl(n){if(n.symbol==="ImaginaryUnit")return[0,1];if(n.numericValue){if(typeof n.numericValue=="number")return[n.numericValue,0];let e=n.numericValue;return[e.re,e.im]}if(n.operator==="Complex"){let e=n.op1.numericValue;if(e===null)return[0,0];let t=typeof e=="number"?e:e.re,i=n.op2.numericValue;if(i===null)return[0,0];let r=typeof i=="number"?i:i.re;return[t,r]}return[0,0]}var Op=new Set(["engine","name","description","examples","wikidata","url","lazy","scoped","broadcastable","associative","commutative","commutativeOrder","idempotent","involution","pure","inferredSignature","signature","type","sgn","even","complexity","canonical","evaluate","evaluateAsync","evalDimension","compile","eq","neq","cmp","collection"]),kt=class{engine;name;description;url;wikidata;broadcastable=!1;associative=!1;commutative=!1;commutativeOrder;idempotent=!1;involution=!1;pure=!0;complexity=ct;lazy=!1;scoped=!1;signature;inferredSignature=!0;type;sgn;eq;neq;even;canonical;evaluate;evaluateAsync;evalDimension;compile;collection;constructor(e,t,i){this.name=t,this.engine=e,i.signature?(this.inferredSignature=!1,this.signature=i.signature instanceof S?i.signature:new S(i.signature,e._typeResolver)):this.signature=new S("(any*) -> unknown"),this.update(i),e.listenToConfigurationChange(this)}toJSON(){let e={name:this.name};return this.wikidata&&(e.wikidata=this.wikidata),this.description&&(e.description=this.description),this.url&&(e.url=this.url),e.broadcastable=this.broadcastable,e.associative=this.associative,e.commutative=this.commutative,e.idempotent=this.idempotent,e.involution=this.involution,e.pure=this.pure,e.lazy=this.lazy,e.complexity=this.complexity,e.scoped=this.scoped,e.signature=this.signature.toString(),e.inferredSignature=this.inferredSignature,this.collection&&(e.collection=this.collection),e}infer(e){let t=new S(e,this.engine._typeResolver);if(!t.matches(this.signature))throw new Error(`Operator Definition "${this.name}": inferred signature "${t}" does not match current signature "${this.signature}"`);this.inferredSignature&&(this.signature=t)}update(e){if(this.engine.strict){for(let o in e)if(!Op.has(o))throw new Error(`Operator Definition "${this.name}": unexpected key "${o}"`)}if("name"in e&&e.name!==this.name)throw new Error(`Operator Definition "${this.name}": cannot change name to "${e.name}"`);if("engine"in e&&e.engine!==this.engine)throw new Error(`Operator Definition "${this.name}": cannot change engine`);this.lazy=e.lazy??this.lazy,this.scoped=e.scoped??this.scoped;let t=e.idempotent??this.idempotent,i=e.involution??this.involution;if(t&&i)throw new Error(`Operator Definition "${this.name}": the 'idempotent' and 'involution' flags are mutually exclusive`);if(this.idempotent=t,this.involution=i,this.description=e.description??this.description,this.collection=e.collection??this.collection,this.url=e.url??this.url,this.wikidata=e.wikidata??this.wikidata,this.broadcastable=e.broadcastable??this.broadcastable,this.associative=e.associative??this.associative,this.commutative=e.commutative??this.commutative,this.commutativeOrder=e.commutativeOrder??this.commutativeOrder,this.commutativeOrder&&!this.commutative)throw new Error(`Operator Definition "${this.name}": the 'commutativeOrder' handler requires the 'commutative' flag`);if(e.canonical&&(e.associative||e.commutative||e.idempotent||e.involution))throw new Error(`Operator Definition "${this.name}": the 'canonical' handler is incompatible with the 'associative', 'commutative', 'idempotent', and 'involution' flags`);if(this.pure=e.pure??this.pure,this.complexity=e.complexity??this.complexity,e.signature){let o=e.signature,s=e.signature instanceof S?e.signature:this.engine.type(e.signature);if(o&&!s.matches(this.engine.type(o)))throw s.matches(this.engine.type(o)),new Error(`Operator Definition "${this.name}": signature "${s}" does not match "${o}"`);this.signature=s,"inferredSignature"in e&&(this.inferredSignature=e.inferredSignature)}if(this.type=e.type??this.type,this.evaluateAsync=e.evaluateAsync??this.evaluateAsync,this.canonical=e.canonical??this.canonical,this.evalDimension=e.evalDimension??this.evalDimension,this.sgn=e.sgn??this.sgn,this.even=e.even??this.even,this.compile=e.xcompile??this.compile,this.eq=e.eq??this.eq,this.neq=e.neq??this.neq,this.scoped=e.scoped??this.scoped,this.lazy=e.lazy??this.lazy,e.collection&&(this.collection=eo(e.collection)),this.collection){let o=We(this.signature.type);if(!o)throw new Error(`Operator Definition "${this.name}": a collection handler is defined, but the signature "${this.signature}" does not have a result type`);if(!E(o,"collection"))throw new Error(`Operator Definition "${this.name}": a collection handler is defined, but the signature "${this.signature}" is not a collection type`);if(E(o,"indexed_collection")&&!this.collection.at)throw new Error(`Operator Definition "${this.name}" returns an indexed collection, but the 'at' handler is missing`)}let r;if(e.evaluate&&typeof e.evaluate!="function"){let o=this.scoped?{parent:this.engine.context.lexicalScope,bindings:new Map}:void 0,s=this.engine.box(e.evaluate,{canonical:!1,scope:o});if(!s.isValid)throw Error(`Invalid function ${s.toString()}`);let a=le(s);r=u=>a(u),Object.defineProperty(r,"toString",{value:()=>s.toString()})}else r=e.evaluate??this.evaluate;this.evaluate=r}onConfigurationChange(){}};function ft(n){if(n.operator==="Interval"){let e=n.op1,t=n.op2,i=!1,r=!1;e.operator==="Open"?(i=!0,e=e.op1):e.operator==="Closed"&&(e=e.op1),t.operator==="Open"?(r=!0,t=t.op1):t.operator==="Closed"&&(t=t.op1);let o=e.N(),s=t.N();return!o.isNumberLiteral||!s.isNumberLiteral?void 0:{start:o.re,openStart:i,end:s.re,openEnd:r}}if(n.symbol==="EmptySet")return{start:0,openStart:!0,end:0,openEnd:!0};if(n.symbol==="RealNumbers")return{start:-1/0,openStart:!1,end:1/0,openEnd:!1};if(n.symbol==="NegativeNumbers")return{start:-1/0,openStart:!1,end:0,openEnd:!0};if(n.symbol==="NonPositiveNumbers")return{start:-1/0,openStart:!1,end:0,openEnd:!1};if(n.symbol==="PositiveNumbers")return{start:0,openStart:!0,end:1/0,openEnd:!1};if(n.symbol==="NonNegativeNumbers")return{start:0,openStart:!1,end:1/0,openEnd:!1}}var Ye=class extends Error{cause;value;constructor({message:e,value:t,cause:i}={}){super(e??"Operation canceled"),t&&(this.value=t),this.cause=i,this.name="CancellationError"}};async function ci(n,e,t){let i=performance.now();for(;;){let r=performance.now(),o=16;for(;performance.now()-r<o;){let{done:s,value:a}=n.next();if(s)return a;if(t?.aborted)throw new Ye({value:a,cause:t.reason});if(performance.now()-i>=e)throw new Ye({value:a,cause:"timeout",message:`Timeout exceeded (${e}ms)`})}await new Promise(s=>setTimeout(s,0))}}function fi(n,e){let t=Date.now();for(;;){let{done:i,value:r}=n.next();if(i)return r;if(Date.now()-t>=e)throw new Ye({value:r,cause:"timeout",message:`Timeout exceeded (${e}ms)`})}}function Qe(n,e,t){return e.every(i=>i.isCanonical)?e:e.map(i=>n.box(i,{scope:t}))}var Ji=50,Al={List:{complexity:8200,signature:"(any*) -> list",type:(n,{engine:e})=>A(`list<${S.widen(...n.map(t=>t.type))}>`),canonical:$p,lazy:!0,evaluate:(n,{engine:e,materialization:t})=>{if(t)return e._fn("List",Os(n).map(i=>i.evaluate({materialization:t})))},eq:wl,collection:Kr()},Set:{complexity:8200,signature:"(any*) -> set",type:(n,{engine:e})=>A(`set<${S.widen(...n.map(t=>t.type))}>`),canonical:Fp,eq:(n,e)=>{if(n.operator!==e.operator||n.nops!==e.nops)return!1;let t=i=>e.ops.some(r=>i.isSame(r));return n.ops.every(t)},collection:{...Kr(),at:void 0,indexWhere:void 0}},Tuple:{description:"A fixed number of heterogeneous elements",complexity:8200,signature:"(any*) -> tuple",type:n=>A(`tuple<${n.map(e=>e.type).join(", ")}>`),canonical:(n,{engine:e})=>e.tuple(...n),eq:wl,collection:{...Kr(),keys:n=>["first","second","last"]}},KeyValuePair:{description:"A key/value pair",complexity:8200,signature:"(key: string, value: any) -> tuple<string, unknown>",type:([n,e])=>A(`tuple<string, ${e.type}>`),canonical:(n,{engine:e})=>{let[t,i]=Yi(e,n,["string","any"]);return!t.isValid||!i.isValid?e._fn("KeyValuePair",[t,i]):e.tuple(t,i)}},Single:{description:"A tuple with a single element",complexity:8200,signature:"(value: any) -> tuple<any>",type:([n])=>A(`tuple<${n.type}>`),canonical:(n,{engine:e})=>e.tuple(...Xe(e,n,1))},Pair:{description:"A tuple of two elements",complexity:8200,signature:"(first: any, second: any) -> tuple<any, any>",type:([n,e])=>A(`tuple<${n.type}, ${e.type}>`),canonical:(n,{engine:e})=>e.tuple(...Xe(e,n,2))},Triple:{description:"A tuple of three elements",complexity:8200,signature:"(first: any, second: any, third: any) -> tuple<any, any, any>",type:([n,e,t])=>A(`tuple<${n.type}, ${e.type}, ${t.type}>`),canonical:(n,{engine:e})=>e.tuple(...Xe(e,n,3))},Range:{complexity:8200,signature:"(number, number?, step: number?) -> indexed_collection<integer>",canonical:(n,{engine:e})=>n.length===0?null:n.length===1?e._fn("Range",[e.One,n[0].canonical]):n.length===2?e._fn("Range",[n[0].canonical,n[1].canonical]):e._fn("Range",[n[0].canonical,n[1].canonical,n[2].canonical.evaluate()]),eq:(n,e)=>{if(n.operator!==e.operator)return!1;let[t,i,r]=sn(n),[o,s,a]=sn(e);return t===o&&i===s&&r===a},collection:{isLazy:n=>!0,count:n=>{let[e,t,i]=sn(n);return i===0?0:!isFinite(e)||!isFinite(t)?1/0:1+Math.max(0,Math.floor((t-e)/i))},contains:(n,e)=>{if(!e.type.matches("integer"))return!1;let t=e.re,[i,r,o]=sn(n);return o===0?!1:o>0?t>=i&&t<=r:t<=i&&t>=r},iterator:n=>{let[e,t,i]=sn(n),r=i===0?0:Math.floor((t-e)/i)+1,o=1;return{next:()=>o===r+1?{value:void 0,done:!0}:(o+=1,{value:n.engine.number(e+i*(o-1-1)),done:!1})}},at:(n,e)=>{if(typeof e!="number")return;let[t,i,r]=sn(n);if(!(e<1||e>1+(i-t)/r))return n.engine.number(t+r*(e-1))},indexWhere:void 0,subsetOf:(n,e)=>{if(e.operator==="Range"){let[i,r,o]=sn(n),[s,a,u]=sn(e);return i>=s&&r<=a&&o%u===0}if(!e.isCollection)return!1;let t=1;for(let i of e.each()){if(!n.xcontains(i)||!n.at(t)?.isSame(i))return!1;t++}return!0},eltsgn:n=>{let[e,t,i]=sn(n);return i===0?"zero":i>0?e<=t?"positive":"negative":e>=t?"positive":"negative"},elttype:n=>"finite_integer"}},Interval:{description:"A set of real numbers between two endpoints. The endpoints may or may not be included.",complexity:8200,lazy:!0,signature:"(number, number) -> set<real>",canonical:([n,e],{engine:t})=>{if(!n||!e)return null;let[i,r]=Yi(t,[n.canonical,e.canonical],["number","number"]);return!i.isValid||!r.isValid?null:t._fn("Interval",[i,r])},eq:(n,e)=>{let t=ft(n),i=ft(e);return!t||!i?!1:t.start===i.start&&t.end===i.end&&t.openStart===i.openStart&&t.openEnd===i.openEnd},collection:{count:n=>1/0,iterator:n=>{let e=ft(n);if(!e)return{next:()=>({value:void 0,done:!0})};if(e.start>=e.end)return{next:()=>({value:void 0,done:!0})};let t=n.engine,i=0,r=0;return{next:()=>{let o=Math.pow(2,i);r>=o&&(i++,r=0);let s=(2*r+1)/Math.pow(2,i+1),a=e.start+s*(e.end-e.start);return r++,{value:t.number(a),done:!1}}}},isEmpty:n=>{let e=ft(n);return e?e.openStart&&e.start===e.end||e.openEnd&&e.start===e.end?!0:e.openStart&&e.openEnd?!1:e.start>=e.end:!1},isFinite:n=>!1,contains:(n,e)=>{let t=ft(n);return!t||t.openStart&&e.isLessEqual(t.start)||t.openEnd&&e.isGreaterEqual(t.end)?!1:e.isGreaterEqual(t.start)&&e.isLessEqual(t.end)},eltsgn:n=>{let e=ft(n);if(!e||e.start===e.end)return"unsigned";if(e.start>=0&&!e.openStart)return"non-negative";if(e.end<=0&&!e.openEnd)return"non-positive";if(e.start>0&&e.end>0)return"positive";if(e.start<0&&e.end<0)return"negative"},elttype:n=>{let e=ft(n);return e?isFinite(e.start)&&isFinite(e.end)?"finite_real":"real":"never"}}},Linspace:{complexity:8200,signature:"(start: number, end: number?, count: number?) -> indexed_collection",collection:{isLazy:n=>!0,count:n=>{let e=n.op3.re;return isFinite(e)||(e=Ji),Math.max(0,Math.floor(e))},at:(n,e)=>{if(typeof e!="number")return;let t=n.op1.re,i=n.op2.re,r=n.op3.re;if(isFinite(r)||(r=Ji),!(!isFinite(t)||!isFinite(i))&&!(e<1||e>r))return n.engine.number(t+(i-t)*(e-1)/r)},iterator:n=>{let e=n.op1.re,t=n.op2.re,i;isFinite(t)?i=Math.max(0,isFinite(n.op3.re)?n.op3.re:Ji):(t=e,e=1,i=Ji);let r=1;return{next:()=>r===i+1?{value:void 0,done:!0}:(r+=1,{value:n.engine.number(e+(t-e)*(r-1-1)/i),done:!1})}},contains:(n,e)=>{if(!e.type.matches("finite_real"))return!1;let t=e.re,i=n.op1.re,r=n.op2.re;if(t<i||t>r)return!1;let o=n.op3.re;if(isFinite(o)||(o=Ji),o===0)return!1;let s=(r-i)/o;return(t-i)%s===0}}},Contains:{description:"Return True if the collection contains the given value, False otherwise.",complexity:8200,signature:"(collection, any) -> boolean",evaluate:([n,e],{engine:t})=>n.xcontains(e)?t.True:t.False},Length:{complexity:8200,signature:"(collection) -> integer",evaluate:([n],{engine:e})=>n.isEmptyCollection?e.Zero:e.number(n.xsize),sgn:([n])=>n.isEmptyCollection?"zero":"positive"},IsEmpty:{complexity:8200,signature:"(collection) -> boolean",evaluate:([n],{engine:e})=>n.isEmptyCollection?e.True:e.False},Map:{description:["Return the collection where each element has been transformed by the mapping function.","Equivalent to `[f(x) for x in xs]`."],complexity:8200,lazy:!0,signature:"(collection, function) -> collection",type:n=>n[0].type,canonical:(n,{engine:e})=>{let t=ge(e,n[0]?.canonical,"collection"),i=ve(n[1]);return!t.isValid||!i?null:e._fn("Map",[t,i])},collection:{isLazy:n=>!0,count:n=>n.op1.xsize,isEmpty:n=>n.op1.isEmptyCollection,isFinite:n=>n.op1.isFiniteCollection,iterator:n=>{let e=le(n.op2);if(!e)return{next:()=>({value:void 0,done:!0})};let t=n.op1.each();return{next:()=>{for(;;){let{value:i,done:r}=t.next();return r?{value:void 0,done:!0}:{value:e([i])??n.engine.Nothing,done:!1}}}}},at:(n,e)=>{if(!n.isIndexedCollection||typeof e!="number"||!Number.isFinite(e)||e===0)return;let t=n.op1.at(e);if(t)return le(n.op2)?.([t])}}},Filter:{description:["Return the elements of the collection for which the predicate function returns True.","Equivalent to `[x for x in xs if p(x)]`."],complexity:8200,lazy:!0,signature:"(collection, predicate: function) -> collection",type:n=>n[0].type,canonical:(n,{engine:e})=>{let t=ge(e,n[0]?.canonical,"collection"),i=ve(n[1]);return!t.isValid||!i?null:e._fn("Filter",[t,i])},collection:{isLazy:n=>!0,count:n=>1/0,contains:(n,e)=>n.xcontains(e)?le(n.op2)([e])?.symbol==="True":!1,iterator:n=>{let e=le(n.op2);if(!e)return{next:()=>({value:void 0,done:!0})};let t=n.op1.each(),i=0,r=n.engine.iterationLimit;return{next:()=>{for(;;){let{value:o,done:s}=t.next();if(i+=1,i>r)throw new Ye({cause:"iteration-limit-exceeded",message:`Iteration limit of ${r} exceeded while evaluating Filter()`});if(s)return{value:void 0,done:!0};let a=e([o]);if(!a)throw new Error(`Invalid filter predicate. ${an(n.op2)}`);if(a.symbol==="True")return{value:o,done:!1};if(a.symbol!=="False")throw new Error(`Filter predicate must return "True" or "False". ${an(n.op2)}`)}}}},at:(n,e)=>{if(typeof e!="number"||!Number.isFinite(e)||e===0)return;let t=le(n.op2);if(!t)return;if(e<0){if(!n.op1.isFiniteCollection)return;let r=Array.from(n.each()),o=r.length+e+1;return o<1||o>r.length?void 0:r[o-1]}let i=0;for(let r of n.op1.each()){let o=t([r])?.symbol;if(o==="True"){if(i+=1,i===e)return r}else if(o!=="False")throw new Error(`Filter predicate must return "True" or "False". ${an(n.op2)}`)}}}},Reduce:{complexity:8200,lazy:!0,signature:"(collection, function, initial:value?) -> value",canonical:(n,{engine:e})=>{let t=ge(e,n[0],"collection"),i=ve(n[1]);if(!t.isValid||!i)return null;let r=n[2]?.canonical;return r?.isValid?e._fn("Reduce",[t,i,r]):e._fn("Reduce",[t,i])},type:n=>A(We(n[1].type.type)??"unknown"),evaluate:([n,e,t],{engine:i})=>{if(!n.isFiniteCollection)return;if(t??=i.Nothing,t.type.matches("real")&&n.type.matches(i.type("collection<real>"))){let a=e.compile();if(!a)return;let u=t.re,l=!0;for(let c of n.each())l?u=c.re:u=a(u,c.re),l=!1;return i.box(u)}let r=le(e),o=t,s=!0;for(let a of n.each())s?o=a:o=r([o,a])??i.Nothing,s=!1;return o}},Join:{description:["Join the elements of some collections into a flat collection."],complexity:8200,signature:"(collection*) -> collection",type:Vp,collection:{isLazy:n=>!0,count:n=>{let e=0;for(let t of n.ops){let i=t.xsize;if(i===void 0)return;if(!Number.isFinite(i))return 1/0;e+=i}return e},contains:(n,e)=>n.ops.some(t=>t.xcontains(e)),iterator:n=>{let e=n.ops.map(i=>i.each()),t=0;return{next:()=>{for(;;){let{value:i,done:r}=e[t].next();if(!r)return{value:i,done:!1};if(t+=1,t>=e.length)return{value:void 0,done:!0}}}}}}},At:{description:["Access an element of an indexed collection.","If the index is negative, it is counted from the end."],complexity:8200,signature:"(value: list|tuple|string, index: number | string) -> unknown",type:([n])=>n.operatorDefinition?.collection?.elttype?.(n)??"any",evaluate:(n,{engine:e})=>{let t=n[0],i=1;for(;n[i];){let o=t.baseDefinition?.collection?.at;if(!o)return;let s=n[i].string;if(s!==null)t=o(t,s)??e.Nothing;else{let a=n[i].re;if(!Number.isInteger(a))return;t=o(t,a)??e.Nothing}i+=1}return t}},Take:{description:["Return `n` elements from a collection."],complexity:8200,signature:"(xs: indexed_collection, count: number) -> indexed_collection",type:([n])=>`list<${bn(n.type.type)}>`,evaluate:(n,{engine:e,materialization:t})=>{if(!t)return;let i=e._fn("Take",n),r=Array.from(i.each());return e._fn("List",r)},collection:{isLazy:n=>!0,count:Cl,isEmpty:n=>{let[e,t]=n.ops;if(e.isEmptyCollection)return!0;if(e.isFiniteCollection===!1)return!1;let i=Math.max(0,P(t)??0),r=e.xsize;if(r!==void 0)return Number.isFinite(i)?Math.min(r,i)===0:!1},isFinite:n=>n.op1.isFiniteCollection,iterator:qp,at:(n,e)=>{if(typeof e!="number"||e===0)return;let t=Math.max(0,P(n.op2)??0);if(t===0)return;if(e>0)return e>t?void 0:n.op1.at(e);let i=Cl(n);if(!(i===void 0||i===0)&&!(e<-i))return n.op1.at(i+e)}}},Drop:{description:["Return the collection without the first n elements."],complexity:8200,signature:"(xs: indexed_collection, count: number) -> indexed_collection",type:([n])=>`list<${bn(n.type.type)}>`,collection:{isLazy:n=>!0,count:n=>{let[e,t]=n.ops,i=e.xsize;if(i===void 0)return;if(!Number.isFinite(i))return 1/0;if(e.isEmptyCollection)return 0;let r=P(t)??0;return r>=i?0:Math.max(0,i-r)},isFinite:n=>n.op1.isFiniteCollection,iterator:n=>{let[e,t]=n.ops,i=P(t)??0;if(i<=0)return e.each();let r=i+1;return{next:()=>{let o=n.op1.at(r++);return o===void 0?{value:void 0,done:!0}:{value:o,done:!1}}}},at:(n,e)=>{if(typeof e!="number")return;let[t,i]=n.ops,r=P(i)??0;if(!(r<=0))return t.at(e+r)}}},First:{complexity:8200,signature:"(collection) -> any",type:([n])=>n.operatorDefinition?.collection?.elttype?.(n)??"any",evaluate:([n],{engine:e})=>n.at(1)??e.Nothing},Second:{complexity:8200,signature:"(collection) -> any",type:([n])=>n.operatorDefinition?.collection?.elttype?.(n)??"any",evaluate:([n],{engine:e})=>n.at(2)??e.Nothing},Last:{complexity:8200,signature:"(collection) -> any",type:([n])=>n.operatorDefinition?.collection?.elttype?.(n)??"any",evaluate:([n],{engine:e})=>n.at(-1)??e.Nothing},Rest:{description:["Return the collection without the first element.","If the collection has only one element, return an empty collection."],complexity:8200,signature:"(indexed_collection) -> indexed_collection",collection:{isLazy:n=>!0,count:n=>{let e=n.op1.xsize;if(e!==void 0)return Math.max(0,e-1)},isEmpty:n=>{if(n.op1.isEmptyCollection)return!0;let e=n.op1.xsize;if(e!==void 0)return e<=1},isFinite:n=>n.op1.isFiniteCollection,iterator:n=>({next:()=>{let e=1,t=n.op1.at(e>0?e+1:e);return t?(e+=1,{value:t,done:!1}):{value:void 0,done:!0}}}),at:(n,e)=>{if(typeof e=="number")return n.op1.at(e>0?e+1:e)}}},Most:{complexity:8200,description:["Return the collection without the last element.","If the collection has only one element, return an empty collection."],signature:"(indexed_collection) -> indexed_collection",collection:{isLazy:n=>!0,count:n=>{let e=n.op1.xsize;if(e!==void 0)return Math.max(0,e-1)},isFinite:n=>n.op1.isFiniteCollection,isEmpty:n=>{let e=n.op1.xsize;if(e!==void 0)return e<=1},iterator:n=>{let e=n.op1.xsize;if(e===void 0||e<=1)return{next:()=>({value:void 0,done:!0})};let t=1,i=e-1;return{next:()=>t>i?{value:void 0,done:!0}:{value:n.op1.at(t++),done:!1}}},at:(n,e)=>{if(typeof e!="number")return;let t=n.op1.xsize;if(t!==void 0&&(e<1&&(e=t+1+e),!(e<1||e>t-1)))return n.op1.at(e)}}},Slice:{description:["Return a range of elements from an indexed collection.","If the index is negative, it is counted from the end."],complexity:8200,signature:"(value: indexed_collection, start: number, end: number) -> list",type:([n])=>A(`list<${bn(n.type.type)}>`),collection:{isLazy:n=>!0,count:n=>{let e=P(n.op2)??1,t=n.op1.xsize;if(t===void 0)return;let i=P(n.op3)??t;return e<1?Math.max(0,i+e-1):Math.max(0,Math.min(i,t)-e+1)},isFinite:n=>!0,at:(n,e)=>{if(typeof e!="number")return;let t=n.op1.xsize;if(t===void 0)return;let i=P(n.op2)??1;if(i<1&&(i=t+1+i),i<1&&(i=1),i>t)return;let r=P(n.op3)??t;r<1&&(r=t+1+r),r<1&&(r=1),r>t&&(r=t)},iterator:n=>{let e=P(n.op2)??1,t=n.op1.xsize;if(t===void 0)return{next:()=>({value:void 0,done:!0})};if(e<1&&(e=t+1+e),e<1&&(e=1),e>t)return{next:()=>({value:void 0,done:!0})};let i=P(n.op3)??t;i<1&&(i=t+1+i),i<1&&(i=1),i>t&&(i=t);let r=e,o=i;return{next:()=>{if(r>o)return{value:void 0,done:!0};let s=n.op1.at(r);return r+=1,{value:s,done:!1}}}}}},Reverse:{complexity:8200,signature:"(indexed_collection) -> indexed_collection",type:([n])=>n.type,collection:{isLazy:n=>!0,count:n=>n.op1.xsize,isEmpty:n=>n.op1.isEmptyCollection,isFinite:n=>n.op1.isFiniteCollection,contains:(n,e)=>n.op1.xcontains(e)??!1,iterator:n=>{let e=-1;return{next:()=>{if(e===0)return{value:void 0,done:!0};let t=n.op1.at(e);return e-=1,{value:t,done:!1}}}},at:(n,e)=>{if(typeof e=="number")return n.op1.at(-e)}}},RotateLeft:{description:"Rotate the elements of the collection to the left by n positions.",complexity:8200,signature:"(indexed_collection, integer?) -> indexed_collection",collection:{isLazy:n=>!0,count:n=>n.op1.xsize,isEmpty:n=>n.op1.isEmptyCollection,isFinite:n=>n.op1.isFiniteCollection,contains:(n,e)=>n.op1.xcontains(e)??!1,iterator:n=>{let e=n.op1.xsize;if(e===void 0||e<=0)return{next:()=>({value:void 0,done:!0})};let t=P(n.op2)??1;t=(t%e+e)%e;let i=1,r=e;return{next:()=>{if(i===r+1)return{value:void 0,done:!0};i+=1;let o=n.op1.at((i-1-1+t)%e+1);return o===void 0?{value:void 0,done:!0}:{value:o,done:!1}}}},at:(n,e)=>{if(typeof e!="number")return;let t=n.op1.xsize;if(t===void 0||t<=0||(e<1&&(e=t+1+e),e<1||e>t))return;let i=P(n.op2)??1;return i=(i%t+t)%t,n.op1.at((e-1+i)%t+1)}}},RotateRight:{description:"Rotate the elements of the collection to the right by n positions.",complexity:8200,signature:"(indexed_collection, integer?) -> indexed_collection",collection:{isLazy:n=>!0,count:n=>n.op1.xsize,contains:(n,e)=>n.op1.xcontains(e)??!1,iterator:n=>{let e=n.op1.xsize;if(e===void 0||e<=0)return{next:()=>({value:void 0,done:!0})};let t=P(n.op2)??1;t=(t%e+e)%e;let i=1;return{next:()=>{if(i===e+1)return{value:void 0,done:!0};i+=1;let r=(i-1-1+(e-t))%e+1,o=n.op1.at(r);return o===void 0?{value:void 0,done:!0}:{value:o,done:!1}}}},at:(n,e)=>{if(typeof e!="number")return;let t=n.op1.xsize;if(t===void 0||t<=0||(e<1&&(e=t+1+e),e<1||e>t))return;let i=P(n.op2)??1;i=(i%t+t)%t;let r=(e-1+(t-i))%t+1;return n.op1.at(r)}}},IndexOf:{description:"Return the 1-based index of the first occurrence of value in collection, or 0 if not found.",complexity:8200,signature:"(collection, any) -> integer",evaluate:([n,e],{engine:t})=>{let i=n.indexWhere(r=>r.isSame(e))??void 0;return t.number(i??0)}},IndexWhere:{description:"Return the 1-based index of the first element satisfying the predicate, or 0 if not found.",complexity:8200,signature:"(collection, function) -> integer",evaluate:([n,e],{engine:t})=>{let i=le(e);if(!i)return t.Zero;let r=n.indexWhere(o=>{let s=i([o])?.symbol;if(s==="True")return!0;if(s==="False")return!1;throw new Error(`Filter predicate must return "True" or "False". ${an(e)}`)})??void 0;return t.number(r??0)}},Find:{description:"Return the first element of the collection satisfying the predicate, or Nothing if none found.",complexity:8200,signature:"(collection, function) -> any",type:n=>n[0].type,evaluate:([n,e],{engine:t})=>{let i=le(e);if(!i)return t.Nothing;for(let r of n.each()){let o=i([r])?.symbol;if(o!=="False"){if(o==="True")return r;throw new Error(`Filter predicate must return "True" or "False". ${an(e)}`)}}return t.Nothing}},CountIf:{description:"Return the number of elements in the collection satisfying the predicate.",complexity:8200,signature:"(collection, function) -> integer",evaluate:([n,e],{engine:t})=>{let i=le(e);if(!i)return t.Zero;let r=0;for(let o of n.each()){let s=i([o])?.symbol;if(s!=="False")if(s==="True")r++;else throw new Error(`Filter predicate must return "True" or "False". ${an(e)}`)}return t.number(r)}},Position:{description:"Return a list of indexes of elements in the collection satisfying the predicate.",complexity:8200,signature:"(collection, function) -> list<integer>",type:()=>"list<integer>",evaluate:([n,e],{engine:t})=>{let i=le(e);if(!i)return t.function("List",[]);let r=[],o=1;for(let s of n.each()){let a=i([s])?.symbol;if(a==="True"&&r.push(t.number(o)),a!=="False")throw new Error(`Filter predicate must return "True" or "False". ${an(e)}`);o++}return t.function("List",r)}},Ordering:{description:"Return the indexes that would sort the collection.",complexity:8200,signature:"(indexed_collection, function?) -> list<integer>",evaluate:([n,e],{engine:t})=>{if(!n.isFiniteCollection)return t.function("List",[]);let i=kl(n,e);return i?t.function("List",i):t.function("List",[])}},Sort:{description:"Return the elements of the collection sorted according to the given comparison function.",complexity:8200,signature:"(indexed_collection, function?) -> indexed_collection",type:n=>n[0].type,evaluate:([n,e],{engine:t})=>{if(!n.isFiniteCollection)return t.function(n.operator,[]);let i=kl(n,e);if(i)return t.function(n.operator,i.map(r=>n.at(r)))}},Shuffle:{description:"Randomize the order of the elements in the collection.",complexity:8200,signature:"(indexed_collection) -> indexed_collection",type:n=>n[0].type,evaluate:([n],{engine:e})=>{if(!n.isFiniteCollection)return;let t=Array.from(n.each());for(let i=t.length-1;i>0;i--){let r=Math.floor(Math.random()*(i+1));[t[i],t[r]]=[t[r],t[i]]}return e.function(n.operator,t)}},Tabulate:{description:"Create a collection by applying a function to each index in the specified dimensions.",complexity:8200,lazy:!0,signature:"(function, integer, integer?) -> collection",canonical:(n,{engine:e})=>{let t=ve(n[0]);return t?n[2]?e._fn("Tabulate",[t,ge(e,n[1]?.canonical,"integer"),ge(e,n[2]?.canonical,"integer")]):e._fn("Tabulate",[t,ge(e,n[1]?.canonical,"integer")]):null},evaluate:(n,{engine:e})=>{let t=le(n[0]);if(!t)return;if(n.length===1)return e._fn("List",[]);let i=n.slice(1).map(o=>P(o));if(i.some(o=>o===null||o<=0))return;if(i.length===1)return e._fn("List",Array.from({length:i[0]??0},(o,s)=>t([e.number(s+1)])??e.Nothing));let r=(o,s,a=0)=>{if(a===o.length){let l=s.map(c=>e.number(c));return t(l)}let u=["List"];for(let l=1;l<=o[a];l++)s[a]=l,u.push(r(o,s,a+1));return u};return e.box(r(i,Array(i.length).fill(0)))}},Tally:{description:"Return a tuple with the unique elements of the collection and their respective counts.",complexity:8200,signature:"(collection) -> tuple<list, list<integer>>",type:([n],{engine:e})=>{let t=n.type.type;return t==="string"?A("tuple<list<string>, list<integer>>"):A(`tuple<list<${bn(t)}>, list<integer>>`)},evaluate:(n,{engine:e})=>{if(!n[0].isFiniteCollection)return;let[t,i]=Il(n[0]);return e.tuple(e.function("List",t),e.function("List",i))}},Unique:{description:"Return a list of the unique elements of the collection.",complexity:8200,signature:"(collection) -> list",type:([n])=>`list<${bn(n.type.type)}>`,evaluate:(n,{engine:e})=>{if(!n[0].isFiniteCollection)return;let[t,i]=Il(n[0]);return e.function("List",t)}},Partition:{wikidata:"Q381060",complexity:8200,signature:"(collection, integer | function) -> list",type:([n])=>`list<${bn(n.type.type)}>`,evaluate:([n,e],{engine:t})=>{if(!n.isFiniteCollection)return;let i=P(e);if(i!==null&&i>0){let a=Array.from(n.each()),u=[],l=Math.ceil(a.length/i);for(let c=0;c<i;c++){let f=a.slice(c*l,(c+1)*l);u.push(t.function("List",f))}return t.function("List",u)}let r=le(e);if(!r)return;let o=[],s=[];for(let a of n.each()){let u=r([a])?.symbol;if(u==="True")o.push(a);else if(u==="False")s.push(a);else throw new Error(`Partition predicate must return "True" or "False". ${an(e)}`)}return t.function("List",[t.function("List",o),t.function("List",s)])}},Chunk:{description:"Split the collection into `k` nearly equal-sized chunks.",complexity:8200,signature:"(collection, integer) -> list<list>",evaluate:([n,e],{engine:t})=>{let i=P(e);if(!n.isFiniteCollection||i===null||i<=0)return;let r=Array.from(n.each()),o=[],s=Math.ceil(r.length/i);for(let a=0;a<i;a++){let u=r.slice(a*s,(a+1)*s);o.push(t.function("List",u))}return t.function("List",o)}},GroupBy:{description:["Partition the collection into a dictionary of lists based on the key returned by the function."],complexity:8200,signature:"(collection, function) -> dictionary<list>",evaluate:([n,e],{engine:t})=>{if(!n.isFiniteCollection)return;let i=le(e);if(!i)return;let r={};for(let o of n.each()){let s=i([o])??t.Nothing,a=s.symbol??s.string??s.toString();a in r||(r[a]=[]),r[a].push(o)}return t.function("Dictionary",Object.entries(r).map(([o,s])=>t._fn("Tuple",[t.string(o),t.function("List",s)])))}},Zip:{description:"Combine multiple collections element-wise into a list of tuples. The result has the length of the shortest input.",complexity:8200,signature:"(indexed_collection+) -> list",collection:{isLazy:n=>!0,count:Ls,isFinite:n=>n.ops.every(e=>e.isFiniteCollection),isEmpty:n=>n.nops===0||n.ops.every(e=>e.isEmptyCollection),iterator:n=>{let e=Ls(n);if(e===void 0||e<=0)return{next:()=>({value:void 0,done:!0})};let t=1;return{next:()=>{if(t===e+1)return{value:void 0,done:!0};t+=1;let i=n.ops.map(r=>r.at(t-1));return i.some(r=>r===void 0)?{value:void 0,done:!0}:{value:n.engine.tuple(...i),done:!1}}}},at:(n,e)=>{if(typeof e!="number"||e<1)return;let t=Ls(n);if(t===void 0||e<1||e>t)return;let i=n.ops.map(r=>r.at(e));if(!i.some(r=>r===void 0))return n.engine.tuple(...i)}}},Iterate:{description:"Produce an infinite sequence by repeatedly applying a function to the previous value, starting with an initial value.",complexity:8200,signature:"((index: integer, acc:any) -> any, initial: any?) -> list",canonical:([n,e],{engine:t})=>{let i=ve(n);if(!i)return null;let r=e?.canonical;return r?t._fn("Iterate",[i,r]):t._fn("Iterate",[i])},collection:{isLazy:n=>!0,count:()=>1/0,iterator:n=>{let e=le(n.op1);if(!e)return{next:()=>({value:void 0,done:!0})};let t=n.op2??n.engine.Nothing,i=0;return{next:()=>(i+=1,t=e([n.engine.number(i),t])??n.engine.Nothing,{value:t,done:!1})}},at:(n,e)=>{if(typeof e!="number"||e<1)return;let t=le(n.op1);if(!t)return;let i=n.op2??n.engine.Nothing;for(let r=1;r<e;r++)i=t([n.engine.number(r),i])??n.engine.Nothing;return i}}},Repeat:{description:"Produce an infinite sequence by repeating a single value.",complexity:8200,signature:"(value: any) -> list",collection:{isLazy:n=>!0,count:()=>1/0,isEmpty:n=>!1,isFinite:()=>!1,contains:(n,e)=>n.op1.isSame(e),iterator:n=>({next:()=>({value:n.op1,done:!1})}),at:(n,e)=>n.op1}},Cycle:{description:"Produce an infinite sequence by cycling through the elements of a finite collection.",complexity:8200,signature:"(list) -> list",collection:{isLazy:n=>!0,count:()=>1/0,isEmpty:n=>n.isEmptyCollection,isFinite:n=>!n.isEmptyCollection,contains:(n,e)=>n.op1.xcontains(e)??!1,iterator:n=>{let e=1,t=n.op1.xsize;return t===void 0||t===0?{next:()=>({value:void 0,done:!0})}:{next:()=>{let i=(e-1-1)%t+1,r=n.op1.at(i);return r===void 0?{value:void 0,done:!0}:(e+=1,{value:r,done:!1})}}},at:(n,e)=>{if(typeof e!="number"||e<1)return;let t=n.op1.xsize;if(t===void 0||t===0)return;let i=(e-1)%t+1;return n.op1.at(i)}}},Fill:{description:"Produce a 2D list (matrix) by applying a function to each pair of row and column indexes.",complexity:8200,signature:"(function, tuple) -> list",collection:{isLazy:n=>!0,count:n=>n.op2.ops.map(t=>P(t)??0)[0]??0,iterator:n=>{let e=le(n.op1);if(!e)return{next:()=>({value:void 0,done:!0})};let t=n.op2.ops.map(a=>P(a)??0),i=t[0]??0,r=t[1]??0,o=i,s=1;return{next:()=>{if(s===o+1)return{value:void 0,done:!0};s+=1;let a=[];for(let u=1;u<=r;u++)a.push(e([n.engine.number(s-1),n.engine.number(u)])??n.engine.Nothing);return{value:n.engine.function("List",a),done:!1}}}},at:(n,e)=>{if(typeof e!="number"||e<1)return;let t=le(n.op1);if(!t)return;let i=n.op2.ops.map(u=>P(u)??0),r=i[0]??0,o=i[1]??0;if(e>r*o)return;let s=Math.ceil(e/o),a=(e-1)%o+1;return t([n.engine.number(s),n.engine.number(a)])??n.engine.Nothing}}},ListFrom:{description:"Create a list from the elements of a collection.",complexity:8200,signature:"(value*) -> list",type:n=>{if(n.length===0)return"list";let e="unknown";for(let t of n){if(t.isCollection&&!t.isFiniteCollection)return"list";e=oe(e,bn(t.type.type)??e)}return A(`list<${U(e)}>`)},evaluate:(n,{engine:e})=>{let t=[];for(let i of n)if(!i.isCollection)t.push(i);else{if(!i.isFiniteCollection)return;t.push(...Array.from(i.each()))}return e.function("List",t)}},SetFrom:{description:"Create a set from the elements of a collection.",complexity:8200,signature:"(value*) -> set",type:n=>{if(n.length===0)return"set";let e="unknown";for(let t of n){if(t.isCollection&&!t.isFiniteCollection)return"set";e=oe(e,bn(t.type.type)??e)}return A(`set<${U(e)}>`)},evaluate:(n,{engine:e})=>{let t=[];for(let i of n)if(i.isCollection)t.push(i);else{if(!i.isFiniteCollection)return;t.push(...Array.from(i.each()))}return e.function("Set",t)}},TupleFrom:{description:"Create a tuple from the elements of a collection.",complexity:8200,signature:"(value*) -> tuple",evaluate:(n,{engine:e})=>{let t=[];for(let i of n)if(i.isCollection)t.push(i);else{if(!i.isFiniteCollection)return;t.push(...Array.from(i.each()))}return e.tuple(...t)}},DictionaryFrom:{description:"Create a dictionary from the elements of a collection of (key, value) pairs.",complexity:8200,signature:"(collection) -> dictionary",evaluate:([n],{engine:e})=>{if(!n.isCollection)return;if(n.operator==="Record")return e.function("Dictionary",n.ops);let t=[];for(let i of n.each()){if(i.nops!==2)throw new Error(`Expected a collection of pairs, got ${i.type}`);let r=i.op1,o=i.op2;if(!r.string)throw new Error(`Expected a string key, got ${r.type}`);t.push(e.tuple(r,o))}return e.function("Dictionary",t)}},RecordFrom:{description:"Create a record from the elements of a collection of (key, value) pairs.",complexity:8200,signature:"(collection) -> record",evaluate:([n],{engine:e})=>{if(!n.isCollection)return;if(n.operator==="Dictionary")return e.function("Record",n.ops);let t=[];for(let i of n.each()){if(i.nops!==2)throw new Error(`Expected a collection of pairs, got ${i.type}`);let r=i.op1,o=i.op2;if(!r.string)throw new Error(`Expected a string key, got ${r.type}`);t.push(e.tuple(r,o))}return e.function("Record",t)}}};function sn(n){if(n.nops===0)return[1,0,0];let e=n.op1.re;if(isFinite(e)?e=Math.round(e):e=1,n.nops===1)return[1,e,1];let t=n.op2.re;if(!isFinite(t)&&!t?t=1:isFinite(t)&&(t=Math.round(t)),n.nops===2)return[e,t,t>e?1:-1];let i=n.op3.re;return isFinite(i)?i=Math.abs(Math.round(i)):i=1,[e,t,e<t?i:-i]}function Dl(n){let[e,t,i]=n;return Number.isFinite(t)?i>0?t-(t-e)%i:t+(e-t)%i:i>0?1/0:-1/0}function $p(n,{engine:e}){let t=n[0];if(n.length===1&&t.operator==="Matrix"){let[i,r,o]=t.ops;if(!r||r.string==="..")return o?e._fn("Matrix",[i,e.string("[]"),o]):e._fn("Matrix",[i,r])}return n=n.map(i=>i.operator==="Delimiter"?i.op1.operator==="Sequence"?e._fn("List",Qe(e,i.op1.ops)):e._fn("List",[i.op1?.canonical??e.Nothing]):i.canonical),e._fn("List",n)}function Fp(n,{engine:e}){let t=[],i=r=>t.some(o=>o.isSame(r));for(let r of n)i(r)||t.push(r);return e._fn("Set",t)}function Il(n){let e=[],t=[],i=r=>{for(let o=0;o<e.length;o++)if(e[o].isSame(r))return o;return-1};for(let r of n.each()){let o=i(r);o>=0?t[o]++:(e.push(r),t.push(1))}return[e,t]}function*Ml(n,e,t){let i=t,r=0;for(let o of n.each()){let s=e(i,o);if(s===null)return;r+=1,r%1e3===0&&(yield i),i=s}return i}function Vp(n){return n.some(e=>e.type.matches("record"))?"record":n.some(e=>e.type.matches("dictionary"))?"dictionary":n.some(e=>e.type.matches("set"))?"set":"list"}function wl(n,e){return n.operator!==e.operator||n.nops!==e.nops?!1:n.ops.every((t,i)=>t.isSame(e.ops[i]))}function $s(n,e){return Array.from({length:e-n+1},(t,i)=>n+i)}function kl(n,e=void 0){let t=e?le(e):void 0,i=t?(s,a)=>{let u=t([s,a]);return u?.isNegative?-1:u?.is(0)?0:1}:(s,a)=>s.isLess(a)?-1:s.isEqual(a)?0:1,r=n.xsize;if(r===void 0||!Number.isFinite(r)||r<1)return;let o=Array.from({length:r},(s,a)=>a+1);return o.sort((s,a)=>{let u=n.at(s),l=n.at(a);return i(u,l)}),o}function Os(n){if(n.length===0)return[];let e=[];for(let t of n)t.symbol!=="Nothing"&&(t.operator==="Sequence"?e.push(...Os(t.ops)):t.string?e.push(t):t.isCollection?e.push(...Os([...t.each()])):e.push(t));return e}function qp(n){let e=Math.max(0,P(n.op2)??0);if(e===0)return{next:()=>({value:void 0,done:!0})};let t=1,i=0;return{next:()=>{if(i>=Math.abs(e))return{value:void 0,done:!0};let r=n.op1.at(t);return r?(t+=1,i+=1,{value:r,done:!1}):{value:void 0,done:!0}}}}function Cl(n){let[e,t]=n.ops,i=e.xsize;if(i===void 0)return;let r=Math.max(0,P(t)??0);return Number.isFinite(r)?Math.min(i,r):1/0}function Ls(n){let e=n.ops.map(t=>t.xsize);if(!e.some(t=>t===void 0))return e.some(t=>!Number.isFinite(t))?1/0:e.length===0?0:Math.min(...e)}function uo(n){n?.operator;let e=1,t=e+Mi,i,r=!0;return i=n.op1.symbol,e=Math.floor(n.op2.re),isNaN(e)&&(e=1),Number.isFinite(e)||(r=!1),n.op3.symbol==="Nothing"||n.op3.isInfinity?r=!1:(isNaN(n.op3.re)||(t=Math.floor(n.op3.re??t)),Number.isFinite(t)||(r=!1)),!r&&Number.isFinite(e)&&(t=e+Mi),{index:i,lower:e,upper:t,isFinite:r}}function zp(n){return n.map(e=>uo(e))}function Gp(n){n.length>0;let{index:e,lower:t,upper:i,isFinite:r}=n[0];r||(i=t+Mi);let o=$s(t,i).map(s=>[s]);if(n.length===1)return o;for(let s=1;s<n.length;s++){let{index:a,lower:u,upper:l,isFinite:c}=n[s];c||(l=u+Mi),o=Up(o.map(f=>f[0]),$s(u,l))}return o}function Up(n,e){return n.flatMap(t=>e.map(i=>[t,i]))}function Rl(n,e){let t=e.engine,i=[];for(let r=0;r<n.length;r++){let o=n[r];o.operator==="Range"?i.push(dt([t.Nothing,o.op1,o.op2],e)??t.error("missing")):o.operator&&["Limits","Tuple","Triple","Pair","Single","Hold"].includes(o.operator)?i.push(dt(o.ops,e)??t.error("missing")):o.symbol&&(n[r+1]?.isNumberLiteral?n[r+2]?.isNumberLiteral?(i.push(dt([o,n[r+1],n[r+2]],e)??t.error("missing")),r+=2):(i.push(dt([o,n[r+1]],e)??t.error("missing")),r+=1):i.push(dt([o],e)??t.error("missing")))}return i}function dt(n,{engine:e}){if(n.length===1){let t=n[0];return t.symbol?e._fn("Limits",[t,e.Nothing,e.Nothing]):t.operator==="Hold"?dt(t.ops,{engine:e}):e._fn("Limits",[e.typeError("symbol",void 0,t)])}else if(n.length>1){let t=e.Nothing,i=e.Nothing,r=n[1].canonical;return n.length===2?n[0].operator==="Hold"?(t=n[0].op1,r=n[1].canonical):n[0].symbol?(t=n[0],r=n[1].canonical):(t=e.Nothing,i=n[0].canonical,r=n[1].canonical):n.length===3&&(t=n[0]??e.Nothing,i=n[1]?.canonical??e.Nothing,r=n[2]?.canonical??e.Nothing),t.operator==="Hold"&&(t=t.op1),t.symbol||(t=e.typeError("symbol",t.type,t)),i.symbol!=="Nothing"&&(i=ge(e,i,"number")),r.symbol!=="Nothing"&&(r=ge(e,r,"number")),e._fn("Limits",[t,i,r])}return null}function jp(n){let e=n.engine,t,i=null,r=null;if(n.operator==="Tuple"||n.operator==="Triple"||n.operator==="Pair"||n.operator==="Single"?(t=n.op1,r=n.ops[1]?.canonical??null,i=n.ops[2]?.canonical??null):t=n,t.operator==="Hold"&&(t=t.op1),!!t.symbol)return t.symbol&&t.symbol!=="Nothing"&&e.declare(t.symbol,"integer"),i&&r?e.function("Limits",[t,r,i]):i?e.function("Limits",[t,e.One,i]):r?e.function("Limits",[t,r]):e.function("Limits",[t])}function Fs(n,e,t,i){let r=e.engine;r.pushScope(i);let o=t.map(s=>jp(s)).filter(s=>s??r.error("missing"));return e=e?.canonical??r.error("missing"),r.popScope(),e.isCollection?n==="Sum"?r.box(["Reduce",e,"Add",0]):r.box(["Reduce",e,"Multiply",1]):r._fn(n,[e,...o],{scope:i})}function*Qi(n,e,t,i){if(n.isCollection)return yield*Ml(n.evaluate(),t,i);if(e.length===0)return t(i,n)??void 0;let r=n.engine,o=zp(e),s=Gp(o),a=i,u=0;for(let l of s)if(o.forEach((c,f)=>r.assign(c.index,l[f])),a=t(a,n)??void 0,u+=1,u%1e3===0&&(yield a),a===void 0)break;return a??void 0}function Zp(n,e){if(e===0)return{estimate:n,error:e};let t=Math.abs(e),i=Math.floor(Math.log10(t)),r=2,o=Math.pow(10,i-(r-1)),s=Math.round(e/o)*o,a=Math.max(0,-(i-(r-1)));return{estimate:Number(n.toFixed(a)),error:s}}function di(n,e,t,i=1e5){let r=0,o=0;if(e===-1/0&&t===1/0)for(let p=0;p<i;p++){let x=Math.random(),g=Math.tan(Math.PI*(x-.5)),b=Math.PI*(1+g*g),_=n(g)/b;r+=_,o+=_*_}else if(e===-1/0)for(let p=0;p<i;p++){let x=Math.random(),g=t-Math.log(1-x),b=1/(1-x),_=n(g)/b;r+=_,o+=_*_}else if(t===1/0)for(let p=0;p<i;p++){let x=Math.random(),g=e+Math.log(x),b=1/x,_=n(g)/b;r+=_,o+=_*_}else for(let p=0;p<i;p++){let x=n(e+Math.random()*(t-e));r+=x,o+=x*x}let s=r/i,a=(o-i*s*s)/(i-1),u=Math.sqrt(a/i),l=t-e,c=s*l,f=u*l;return Zp(c,f)}var Pl=[.9999999999998099,676.5203681218851,-1259.1392167224028,771.3234287776531,-176.6150291621406,12.507343278686905,-.13857109526572012,9984369578019572e-21,15056327351493116e-23];function pi(n){if(n<0)return NaN;let e=Math.PI,t=n*n*n;return n*Math.log(n)-n-.5*Math.log(n)+.5*Math.log(2*e)+1/(12*n)-1/(360*t)+1/(1260*t*n*n)}function pt(n){if(n<.5)return Math.PI/(Math.sin(Math.PI*n)*pt(1-n));if(n>100)return Math.exp(pi(n));n-=1;let e=Pl[0];for(let i=1;i<9;i++)e+=Pl[i]/(n+i);let t=n+7+.5;return Math.sqrt(2*Math.PI)*Math.pow(t,n+.5)*Math.exp(-t)*e}function Ll(n){let e=Math.PI,t=e*e,i=t*e,r=n*n,o=n*r,s=o*r,a=s*r;return Math.sqrt(e)/2*(n+e/12*o+7*t/480*s+127*i/40320*a+4369*t*t/5806080*a*r+34807*i*t/182476800*a*r*r)}function Vs(n){let e=.254829592,t=-.284496736,i=1.421413741,r=-1.453152027,o=1.061405429,s=.3275911,a=n<0?-1:1;n=Math.abs(n);let u=1/(1+s*n),l=((((o*u+r)*u+i)*u+t)*u+e)*u;return a*(1-l*Math.exp(-n*n))}function qs(n,e){if(e.isNegative())return n._BIGNUM_NAN;let t=n._cache("gamma-p-ln",()=>["0.99999999999999709182","57.156235665862923517","-59.597960355475491248","14.136097974741747174","-0.49191381609762019978","0.33994649984811888699e-4","0.46523628927048575665e-4","-0.98374475304879564677e-4","0.15808870322491248884e-3","-0.21026444172410488319e-3","0.2174396181152126432e-3","-0.16431810653676389022e-3","0.84418223983852743293e-4","-0.2619083840158140867e-4","0.36899182659531622704e-5"].map(s=>n.bignum(s))),i=t[0];for(let s=t.length-1;s>0;--s)i=i.add(t[s].div(e.add(s)));let r=n._cache("gamma-g-ln",()=>n.bignum(607).div(128)),o=e.add(r).add(n._BIGNUM_HALF);return n._BIGNUM_NEGATIVE_ONE.acos().mul(n._BIGNUM_TWO).log().mul(n._BIGNUM_HALF).add(o.log().mul(e.add(n._BIGNUM_HALF)).minus(o).add(i.log()).minus(e.log()))}function zs(n,e){if(e.lessThan(n._BIGNUM_HALF)){let o=n._BIGNUM_NEGATIVE_ONE.acos();return o.div(o.mul(e).sin().mul(zs(n,n._BIGNUM_ONE.sub(e))))}if(e.greaterThan(100))return qs(n,e).exp();e=e.sub(1);let t=n._cache("lanczos-7-c",()=>["0.99999999999980993227684700473478","676.520368121885098567009190444019","-1259.13921672240287047156078755283","771.3234287776530788486528258894","-176.61502916214059906584551354","12.507343278686904814458936853","-0.13857109526572011689554707","9.984369578019570859563e-6","1.50563273514931155834e-7"].map(o=>n.bignum(o))),i=t[0];for(let o=1;o<9;o++)i=i.add(t[o].div(e.add(o)));let r=e.add(7).add(n._BIGNUM_HALF);return n._BIGNUM_NEGATIVE_ONE.acos().times(n._BIGNUM_TWO).sqrt().mul(i.mul(r.neg().exp()).mul(r.pow(e.add(n._BIGNUM_HALF))))}function Xi(n){let e=0,t=0;for(let i of n)e+=i,t++;return t===0?NaN:e/t}function Ol(n,e){let t=n(0),i=0;for(let r of e)t=t.add(r),i++;return i===0?n(NaN):t.div(i)}function Pn(n){let e=[...n].sort((i,r)=>i-r),t=Math.floor(e.length/2);return e.length%2===0?(e[t-1]+e[t])/2:e[t]}function Ct(n){let e=[...n].sort((i,r)=>i.cmp(r)),t=Math.floor(e.length/2);return e.length%2===0?e[t-1].add(e[t]).div(2):e[t]}function At(n){let e=0,t=0,i=0;for(let r of n)e+=r,t+=r*r,i++;return i===0?NaN:(t-e*e/i)/(i-1)}function Gs(n,e){let t=n(0),i=n(0),r=0;for(let o of e)t=t.add(o),i=i.add(o.mul(o)),r++;return r===0?n(NaN):i.sub(t.mul(t).div(r)).div(r-1)}function Dt(n){let e=0,t=0,i=0;for(let r of n)e+=r,t+=r*r,i++;return i===0?NaN:(t-e*e/i)/i}function Us(n,e){let t=n(0),i=n(0),r=0;for(let o of e)t=t.add(o),i=i.add(o.mul(o)),r++;return r===0?n(NaN):i.sub(t.mul(t).div(r)).div(r)}function js(n){return Math.sqrt(At(n))}function Zs(n){return Math.sqrt(Dt(n))}function Ki(n){let e=0,t=0,i=0,r=0;for(let s of n){let a=s;if(!Number.isFinite(a))return NaN;e+=a,t+=a*a,i+=a*a*a*a,r++}if(r===0)return NaN;let o=(t-e*e/r)/(r-1);return(i-4*e*t/r+6*e*e*e/r/r-3*e*e*e*e/r/r/r)/(o*o)}function $l(n,e){let t=n(0),i=n(0),r=n(0),o=0;for(let a of e){let u=a;if(!u.isFinite())return n(NaN);t=t.add(u),i=i.add(u.mul(u)),r=r.add(u.mul(u).mul(u).mul(u)),o++}if(o===0)return n(NaN);let s=i.sub(t.mul(t).div(o)).div(o-1);return r.sub(t.mul(i).mul(4).div(o)).add(t.mul(t).mul(t).mul(6).div(o).div(o)).sub(t.mul(t).mul(t).mul(t).div(o).div(o).div(o)).div(s.mul(s))}function er(n){let e=0,t=0,i=0,r=0;for(let a of n){let u=a;if(!Number.isFinite(u))return NaN;e+=u,t+=u*u,i+=u*u*u,r++}if(r===0)return NaN;let o=(t-e*e/r)/(r-1);return(i-t*e/r)/(r-1)/Math.pow(o,3/2)*Math.sqrt(r*1)}function Fl(n,e){let t=n(0),i=n(0),r=n(0),o=0;for(let u of e){let l=u;if(!l.isFinite())return n(NaN);t=t.add(l),i=i.add(l.mul(l)),r=r.add(l.mul(l).mul(l)),o++}if(o===0)return n(NaN);let s=i.sub(t.mul(t).div(o)).div(o-1);return r.sub(i.mul(t).div(o)).div(o-1).div(s.pow(3/2)).mul(o).sqrt()}function nr(n){let e={};for(let r of n)e[r]=(e[r]??0)+1;let t=0,i=NaN;for(let r in e){let o=e[r];o>t&&(t=o,i=+r)}return i}function Vl(n,e){let t={};for(let o of e)t[o.toString()]=(t[o.toString()]??0)+1;let i=0,r=n(NaN);for(let o in t){let s=t[o];s>i&&(i=s,r=n(o))}return r}function tr(n){let e=[...n].sort((s,a)=>s-a),t=Math.floor(e.length/2),i=Pn(e.slice(0,t)),r=Pn(e),o=Pn(e.slice(t));return[i,r,o]}function ql(n){let e=[...n].sort((s,a)=>s.cmp(a)),t=Math.floor(e.length/2),i=Ct(e.slice(0,t)),r=Ct(e),o=Ct(e.slice(t));return[i,r,o]}function ir(n){let e=[...n].sort((o,s)=>o-s),t=Math.floor(e.length/2),i=e.slice(0,t),r=e.slice(t+1);return Pn(r)-Pn(i)}function zl(n){let e=[...n].sort((o,s)=>o.cmp(s)),t=Math.floor(e.length/2),i=e.slice(0,t),r=e.slice(t+1);return Ct(r).sub(Ct(i))}var Hp={Add:["+",11],Negate:["-",14],Subtract:["-",11],Multiply:["*",12],Divide:["/",13],Equal:["===",8],NotEqual:["!==",8],LessEqual:["<=",9],GreaterEqual:[">=",9],Less:["<",9],Greater:[">",9],And:["&&",4],Or:["||",3],Not:["!",14]},Wp={Abs:"Math.abs",Add:(n,e)=>n.length===1?e(n[0]):`(${n.map(t=>e(t)).join(" + ")})`,Arccos:"Math.acos",Arccosh:"Math.acosh",Arccot:([n],e)=>{if(n===null)throw new Error("Arccot: no argument");return`Math.atan(1 / (${e(n)}))`},Arccoth:([n],e)=>{if(n===null)throw new Error("Arccoth: no argument");return`Math.atanh(1 / (${e(n)}))`},Arccsc:([n],e)=>{if(n===null)throw new Error("Arccsc: no argument");return`Math.asin(1 / (${e(n)}))`},Arccsch:([n],e)=>{if(n===null)throw new Error("Arccsch: no argument");return`Math.asinh(1 / (${e(n)}))`},Arcsec:([n],e)=>{if(n===null)throw new Error("Arcsec: no argument");return`Math.acos(1 / (${e(n)}))`},Arcsech:([n],e)=>{if(n===null)throw new Error("Arcsech: no argument");return`Math.acosh(1 / (${e(n)}))`},Arcsin:"Math.asin",Arcsinh:"Math.asinh",Arctan:"Math.atan",Arctanh:"Math.atanh",Ceiling:"Math.ceil",Chop:"_SYS.chop",Cos:"Math.cos",Cosh:"Math.cosh",Cot:([n],e)=>{if(n===null)throw new Error("Cot: no argument");return Gl("Math.cos(${x}) / Math.sin(${x})",e(n))},Coth:([n],e)=>{if(n===null)throw new Error("Coth: no argument");return Gl("(Math.cosh(${x}) / Math.sinh(${x}))",e(n))},Csc:([n],e)=>{if(n===null)throw new Error("Csc: no argument");return`1 / Math.sin(${e(n)})`},Csch:([n],e)=>{if(n===null)throw new Error("Csch: no argument");return`1 / Math.sinh(${e(n)})`},Exp:"Math.exp",Floor:"Math.floor",Gamma:"_SYS.gamma",GCD:"_SYS.gcd",Integrate:(n,e,t)=>Qp(n,e,t),LCM:"_SYS.lcm",Limit:(n,e)=>`_SYS.limit(${e(n[0])}, ${e(n[1])})`,Ln:"Math.log",List:(n,e)=>`[${n.map(t=>e(t)).join(", ")}]`,Log:(n,e)=>n.length===1?`Math.log10(${e(n[0])})`:`(Math.log(${e(n[0])}) / Math.log(${e(n[1])}))`,LogGamma:"_SYS.lngamma",Lb:"Math.log2",Max:"Math.max",Mean:(n,e)=>n.length===0?"NaN":n.length===1?`_SYS.mean(${e(n[0])})`:`_SYS.mean([${n.map(t=>e(t)).join(", ")}])`,Median:(n,e)=>n.length===0?"NaN":n.length===1?`_SYS.median(${e(n[0])})`:`_SYS.median([${n.map(t=>e(t)).join(", ")}])`,Variance:(n,e)=>n.length===0?"NaN":n.length===1?`_SYS.variance(${e(n[0])})`:`_SYS.variance([${n.map(t=>e(t)).join(", ")}])`,PopulationVariance:(n,e)=>n.length===0?"NaN":n.length===1?`_SYS.populationVariance(${e(n[0])})`:`_SYS.populationVariance([${n.map(t=>e(t)).join(", ")}])`,StandardDeviation:(n,e)=>n.length===0?"NaN":n.length===1?`_SYS.standardDeviation(${e(n[0])})`:`_SYS.standardDeviation([${n.map(t=>e(t)).join(", ")}])`,PopulationStandardDeviation:(n,e)=>n.length===0?"NaN":n.length===1?`_SYS.populationStandardDeviation(${e(n[0])})`:`_SYS.populationStandardDeviation([${n.map(t=>e(t)).join(", ")}])`,Kurtosis:(n,e)=>n.length===0?"NaN":n.length===1?`_SYS.kurtosis(${e(n[0])})`:`_SYS.kurtosis([${n.map(t=>e(t)).join(", ")}])`,Skewness:(n,e)=>n.length===0?"NaN":n.length===1?`_SYS.skewness(${e(n[0])})`:`_SYS.skewness([${n.map(t=>e(t)).join(", ")}])`,Mode:(n,e)=>n.length===0?"NaN":n.length===1?`_SYS.mode(${e(n[0])})`:`_SYS.mode([${n.map(t=>e(t)).join(", ")}])`,Quartiles:(n,e)=>n.length===0?"NaN":n.length===1?`_SYS.quartiles(${e(n[0])})`:`_SYS.quartiles([${n.map(t=>e(t)).join(", ")}])`,InterquartileRange:(n,e)=>n.length===0?"NaN":n.length===1?`_SYS.interquartileRange(${e(n[0])})`:`_SYS.interquartileRange([${n.map(t=>e(t)).join(", ")}])`,Min:"Math.min",Power:(n,e)=>{let t=n[0];if(t===null)throw new Error("Power: no argument");let i=n[1].re;return i===.5?`Math.sqrt(${e(t)})`:i===1/3?`Math.cbrt(${e(t)})`:i===1?e(t):i===-1?`(1 / (${e(t)}))`:i===-.5?`(1 / Math.sqrt(${e(t)}))`:`Math.pow(${e(t)}, ${e(n[1])})`},Range:(n,e)=>{if(n.length===0)return"[]";if(n.length===1)return`Array.from({length: ${e(n[0])}}, (_, i) => i)`;let t=e(n[0]),i=e(n[1]),r=n[2]?e(n[2]):"1";if(t===null)throw new Error("Range: no start");if(i===null&&(i=t,t="1"),r==="0")throw new Error("Range: step cannot be zero");if(parseFloat(r)===1){let o=parseFloat(i),s=parseFloat(t);return o!==null&&s!==null?o-s<50?`[${Array.from({length:o-s+1},(a,u)=>s+u).join(", ")}]`:`Array.from({length: ${o-s+1}
|
|
13
|
+
}, (_, i) => ${t} + i)`:`Array.from({length: ${i} - ${t} + 1
|
|
14
|
+
}, (_, i) => ${t} + i)`}return`Array.from({length: Math.floor((${i} - ${t}) / ${r}) + 1}, (_, i) => ${t} + i * ${r})`},Root:([n,e],t)=>{if(n===null)throw new Error("Root: no argument");return e===null?`Math.sqrt(${t(n)})`:e?.re===2?`Math.sqrt(${t(n)})`:e?.re===3?`Math.cbrt(${t(n)})`:isNaN(e?.re)?`Math.pow(${t(n)}, 1 / (${t(e)}))`:`Math.pow(${t(n)}, ${1/e.re})`},Random:"Math.random",Round:"Math.round",Square:(n,e)=>{let t=n[0];if(t===null)throw new Error("Square: no argument");return`Math.pow(${e(t)}, 2)`},Sec:(n,e)=>{let t=n[0];if(t===null)throw new Error("Sec: no argument");return`1 / Math.cos(${e(t)})`},Sech:(n,e)=>{let t=n[0];if(t===null)throw new Error("Sech: no argument");return`1 / Math.cosh(${e(t)})`},Sgn:"Math.sign",Sin:"Math.sin",Sinh:"Math.sinh",Sqrt:"Math.sqrt",Tan:"Math.tan",Tanh:"Math.tanh"},Hs=class extends Function{SYS={chop:ts,factorial:ns,gamma:pt,gcd:Pe,integrate:(e,t,i)=>di(e,t,i,1e7).estimate,lcm:Nt,lngamma:pi,limit:at,mean:Xi,median:Pn,variance:At,populationVariance:Dt,standardDeviation:js,populationStandardDeviation:Zs,kurtosis:Ki,skewness:er,mode:nr,quartiles:tr,interquartileRange:ir};constructor(e,t=""){return super("_SYS","_",t?`${t};return ${e}`:`return ${e}`),new Proxy(this,{apply:(i,r,o)=>super.apply(r,[this.SYS,...o]),get:(i,r)=>r==="toString"?()=>e:r==="isCompiled"?!0:i[r]})}},lo=class extends Function{SYS={chop:ts,factorial:ns,gamma:pt,gcd:Pe,integrate:(e,t,i)=>di(e,t,i,1e7).estimate,lcm:Nt,lngamma:pi,limit:at,mean:Xi,median:Pn,variance:At,populationVariance:Dt,standardDeviation:js,populationStandardDeviation:Zs,kurtosis:Ki,skewness:er,mode:nr,quartiles:tr,interquartileRange:ir};constructor(e,t){return super("_SYS",...t,`return ${e}`),new Proxy(this,{apply:(i,r,o)=>super.apply(r,[this.SYS,...o]),get:(i,r)=>r==="toString"?()=>`(${t.join(", ")}) => ${e}`:r==="isCompiled"?!0:i[r]})}};function Jp(n,e){if(n.operator==="Function"){let i=n.ops,r=i.slice(1).map(s=>s.symbol??"_"),o=Ne(i[0].canonical,{...e,var:s=>r.includes(s)?s:e.var(s)});return new lo(o,r)}if(n.symbol){let i=e.operators?.(n.symbol);if(i)return new lo(`a ${i[0]} b`,["a","b"])}let t=Ne(n,e);return new Hs(t,e.preamble)}function Ul(n,e,t,i=[],r){let o=n.unknowns,s=i.map(u=>{if(typeof u=="function")return u.toString();throw new Error(`Unsupported import \`${u}\``)}).join(`
|
|
15
|
+
`),a=e?Object.fromEntries(Object.entries(e).filter((u,l)=>typeof l!="string")):{};if(e)for(let[u,l]of Object.entries(e))typeof l=="function"&&(Xp(l)?(s+=`${l.toString()};
|
|
16
|
+
`,a[u]=l.name):(s+=`const ${u} = ${l.toString()};
|
|
17
|
+
`,a[u]=u));return Jp(n,{operators:u=>Hp[u],functions:u=>a?.[u]?a[u]:Wp[u],var:u=>{if(t&&u in t)return JSON.stringify(t[u]);let l={Pi:"Math.PI",ExponentialE:"Math.E",NaN:"Number.NaN",ImaginaryUnit:"Number.NaN",Half:"0.5",MachineEpsilon:"Number.EPSILON",GoldenRatio:"((1 + Math.sqrt(5)) / 2)",CatalanConstant:"0.91596559417721901",EulerGamma:"0.57721566490153286"}[u];if(l!==void 0)return l;if(o.includes(u))return`_.${u}`},string:u=>JSON.stringify(u),number:u=>u.toString(),indent:0,ws:u=>u??"",preamble:(r??"")+s})}function jl(n,e,t,i,r){if(e==="Error")throw new Error("Error");if(e==="Sequence")return t.length===0?"":`(${t.map(s=>Ne(s,r,i)).join(", ")})`;if(e==="Sum"||e==="Product")return Yp(e,t,r);if(t.every(s=>!s.isCollection)){let s=r.operators?.(e);if(Je(e)&&t.length>2&&s){let a=[];for(let u=0;u<t.length-1;u++)a.push(jl(n,e,[t[u],t[u+1]],s[1],r));return`(${a.join(") && (")})`}if(s!==void 0){if(t===null)return"";let a;return t.length===1?a=`${s[0]}${Ne(t[0],r,s[1])}`:a=t.map(u=>Ne(u,r,s[1])).join(` ${s[0]} `),s[1]<i?`(${a})`:a}}if(e==="Function"){let s=t.slice(1).map(a=>a.symbol);return`((${s.join(", ")}) => ${Ne(t[0].canonical,{...r,var:a=>s.includes(a)?a:r.var(a)})})`}if(e==="Declare")return`let ${t[0].symbol}`;if(e==="Assign")return`${t[0].symbol} = ${Ne(t[1],r)}`;if(e==="Return")return`return ${Ne(t[0],r)}`;if(e==="If"){if(t.length!==3)throw new Error("If: wrong number of arguments");return`((${Ne(t[0],r)}) ? (${Ne(t[1],r)}) : (${Ne(t[2],r)}))`}if(e==="Block"){let s=[];for(let u of t)u.operator==="Declare"&&s.push(u.ops[0].symbol);if(t.length===1&&s.length===0)return Ne(t[0],r);let a=t.map(u=>Ne(u,{...r,var:l=>s.includes(l)?l:r.var(l)}));return a[a.length-1]=`return ${a[a.length-1]}`,`(() => {${r.ws(`
|
|
18
|
+
`)}${a.join(`;${r.ws(`
|
|
19
|
+
`)}`)}${r.ws(`
|
|
20
|
+
`)}})()`}let o=r.functions?.(e);if(!o)throw new Error(`Unknown operator \`${e}\``);if(typeof o=="function"){let s=n.lookupDefinition(e);if(Z(s)&&s.operator.broadcastable&&t.length===1&&pe(t[0])){let a=rr();return`(${Ne(t[0],r)}).map((${a}) => ${o([t[0].engine.box(a)],u=>Ne(u,r),r)})`}return o(t,a=>Ne(a,r),r)}return t===null?`${o}()`:`${o}(${t.map(s=>Ne(s,r)).join(", ")})`}function Ne(n,e,t=0){if(n===void 0)return"";if(!n.isValid)throw new Error(`Cannot compile invalid expression: "${n.toString()}"`);let i=n.symbol;if(i!==null){let o=e.operators?.(i);return o!==void 0?`(a,b) => a ${o[0]} b`:e.var?.(i)??i}if(n.isNumberLiteral){if(n.im!==0)throw new Error("Complex numbers are not supported");return e.number(n.re)}return n.string!==null?e.string(i):jl(n.engine,n.operator,n.ops,t,e)}function Yp(n,e,t){if(e===null)throw new Error("Sum/Product: no arguments");if(!e[0])throw new Error("Sum/Product: no body");let{index:i,lower:r,upper:o,isFinite:s}=uo(e[1]),a=n==="Sum"?"+":"*";if(!i){let c=rr(),f=rr();return`${Ne(e[0],t)}.reduce((${f}, ${c}) => ${f} ${a} ${c}, ${a==="+"?"0":"1"})`}let u=Ne(e[0],{...t,var:c=>c===i?i:t.var(c)}),l=rr();return`(() => {
|
|
21
|
+
let ${l} = ${a==="+"?"0":"1"};
|
|
22
|
+
let ${i} = ${r};
|
|
23
|
+
while (${i} <= ${o}) {
|
|
24
|
+
${l} ${a}= ${u};
|
|
25
|
+
${i}++;
|
|
26
|
+
}
|
|
27
|
+
return ${l};
|
|
28
|
+
})()`}function Gl(n,e){if(/^[\p{L}_][\p{L}\p{N}_]*$/u.test(e)||/^[0-9]+$/.test(e))return new Function("x",`return \`${n}\`;`)(e);{let i=rr();return new Function("x",`return \`(() => { const ${i} = \${x}; return ${n.replace(/\\\${x}/g,i)}; })()\`;`)(e)}}function rr(){return`_${Math.random().toString(36).substring(4)}`}function Qp(n,e,t){let{index:i,lower:r,upper:o}=uo(n[1]),s=Ne(n[0],{...t,var:a=>a===i?a:t.var(a)});return`_SYS.integrate((${i}) => (${s}), ${r}, ${o})`}function Xp(n){let e=n.toString();return e.includes("=>")?!1:e.startsWith("function ")&&e.includes(n.name)}function Hl(n,e,t){if(t.repeatingDecimal&&t.repeatingDecimal!=="none"){let o=n.slice(0,-1);for(let s=0;s<n.length-16;s++){let a=o.substring(0,s);for(let u=0;u<17;u++){let l=o.substring(s,s+u+1),c=Math.floor((o.length-a.length)/l.length);if(c<=3)break;if((a+l.repeat(c+1)).startsWith(o)){if(l==="0")return Ws(a,t);let f={vinculum:"\\overline{#}",parentheses:"(#)",dots:"\\overset{\\cdots}{#1}#2\\overset{\\cdots}{#3}",arc:"\\wideparen{#}"}[t.repeatingDecimal]??"\\overline{#}";return f=f.replace(/#1/g,l[0]).replace(/#2/g,l.slice(1)).replace(/#3/g,l.slice(-1)).replace(/#/,l),Ws(a,t)+f}}}}let i=typeof t.fractionalDigits=="number"?t.fractionalDigits:1/0;i<0&&(i=i-e),i<0&&(i=0);let r=n.length>i;return r&&(n=n.substring(0,i)),n=Ws(n,t),r&&(n+=t.truncationMarker),n}function Wl(n,e){return!n||n==="0"?"":e.beginExponentMarker?e.beginExponentMarker+n+(e.endExponentMarker??""):`10^{${n}}`}function Jl(n,e){if(n===null)return"";let t;if(typeof n=="number"||typeof n=="string")t=n;else if(typeof n=="object"&&"num"in n)t=n.num;else return"";if(typeof t=="number"){if(t===1/0)return e.positiveInfinity;if(t===-1/0)return e.negativeInfinity;if(Number.isNaN(t))return e.notANumber;let o;return e.notation==="engineering"?o=co(t.toExponential(),e,3):e.notation==="scientific"&&(o=co(t.toExponential(),e)),o??Js(t.toString(),e)}if(t=t.toLowerCase().replace(/[\u0009-\u000d\u0020\u00a0]/g,""),t==="infinity"||t==="+infinity"||t==="oo"||t==="+oo")return e.positiveInfinity;if(t==="-infinity"||t==="-oo")return e.negativeInfinity;if(t==="nan")return e.notANumber;if(!/^[-+\.]?[0-9]/.test(t))return"";if(t=t.replace(/[nd]$/,""),/\([0-9]+\)/.test(t)){let[o,s,a,u]=t.match(/(.+)\(([0-9]+)\)(.*)$/)??[];t=s+a.repeat(6)+u}let i="";for(t[0]==="-"?(i="-",t=t.substring(1)):t[0]==="+"&&(t=t.substring(1));t[0]==="0";)t=t.substring(1);t.length===0?t="0":t[0]==="."&&(t="0"+t);let r;return e.notation==="engineering"?r=co(t,e,3):e.notation==="scientific"&&(r=co(t,e)),i+(r??Js(t,e))}function co(n,e,t=1){let i=n.match(/^(.*)[e|E]([-+]?[0-9]+)$/);if(!i){let c="";if(n[0]==="-"?(c="-",n=n.substring(1)):n[0]==="+"&&(n=n.substring(1)),n.indexOf(".")<0)n.length===1?n=c+n+"e+0":n=c+n[0]+"."+n.slice(1)+"e+"+(n.length-1).toString();else{let[f,d,p]=n.match(/^(.*)\.(.*)$/);for(p||(p="");d.startsWith("0");)d=d.substring(1);d?n=c+d[0]+"."+d.slice(1)+p+"e+"+(d.length-1).toString():n=c+"0."+p+"e+0"}i=n.match(/^(.*)[e|E]([-+]?[0-9]+)$/)}if(!i)return Js(n,e);let r=parseInt(i[2]),o=i[1];if(Math.abs(r)%t!==0){let c=r>0?r%t:-((t+r)%t);r=r>=0?r-c:r+c;let[f,d,p]=o.match(/^(.*)\.(.*)$/)??["",o,""];o=d+(p+"00000000000000000").slice(0,Math.abs(c))+"."+p.slice(Math.abs(c))}let s=e.avoidExponentsInRange;if(s&&r>=s[0]&&r<=s[1])return;let a="",u=o;i=u.match(/^(.*)\.(.*)$/),i&&(u=i[1],a=i[2]);let l=Wl(Number(r).toString(),e);if(a=Hl(a,u.length,e),a&&(a=e.decimalSeparator+a),u=Ql(u,e),!l)return u+a;if(!a){if(u==="1")return l;if(u==="-1")return"-"+l}return u+a+e.exponentProduct+l}function Js(n,e){let t=n.match(/^(.*)[e|E]([-+]?[0-9]+)$/i),i=0;t?.[1]&&t[2]&&(i=parseInt(t[2]),n=t[1]);let r=t?.[1]??n,o="";t=n.match(/^(.*)\.(.*)$/),t?.[1]&&t[2]&&(r=t[1],o=t[2]),i!==0&&o&&(r+=o,i-=o.length,o="");let s=e.avoidExponentsInRange;i!==0&&s&&i>=s[0]&&i<=s[1]&&([r,o]=nm(r,o,i),i=0);let a=Wl(i.toString(),e);if(o&&(o=e.decimalSeparator+Hl(o,r.length,e)),r=Ql(r,e),!a)return r+o;if(!o){if(r==="1")return a;if(r==="-1")return"-"+a}return r+o+e.exponentProduct+a}function Zl(n,e,t){let i=new RegExp(`(\\d{${e}})(?=\\d)`,"g");return n.replace(i,`$1${t}`)}function Kp(n,e,t){let i=new RegExp(`(\\d{${e}})(?=\\d)`,"g"),r=t.split("").reverse().join("");return n.split("").reverse().join("").replace(i,`$1${r}`).split("").reverse().join("")}function em(n,e){let t=n.split("").reverse().join(""),i=e.split("").reverse().join(""),r=t.replace(/(\d{3})(?=\d)/,`$1${i}`);return r=r.replace(/(\d{2})(?=(\d{2})+,)/g,`$1${i}`),r.split("").reverse().join("")}function Yl(n,e,t){let i=e.digitGroup;typeof i!="string"&&Array.isArray(i)&&(i=i[t]);let r=typeof e.digitGroupSeparator=="string"?e.digitGroupSeparator:e.digitGroupSeparator[t];return r?i==="lakh"?t===0?em(n,r):Zl(n,3,r):i===!1||i<=0?n:t===1?Zl(n,i,r):Kp(n,i,r):n}function Ws(n,e){return Yl(n,e,1)}function Ql(n,e){return Yl(n,e,0)}function nm(n,e,t){let i=n+e,o=n.length+t,s,a;return o>0?o>=i.length?(i=i+"0".repeat(o-i.length),s=i,a=""):(s=i.slice(0,o),a=i.slice(o)):(s="0",a="0".repeat(-o)+i),[s,a]}var Qs={deg:n=>`${n}\\degree`,prime:n=>`${n}^{\\prime}`,dprime:n=>`${n}^{\\doubleprime}`,ring:n=>`\\mathring{${n}}`,hat:n=>`\\hat{${n}}`,tilde:n=>`\\tilde{${n}}`,vec:n=>`\\vec{${n}}`,bar:n=>`\\overline{${n}}`,underbar:n=>`\\underline{${n}}`,dot:n=>`\\dot{${n}}`,ddot:n=>`\\ddot{${n}}`,tdot:n=>`\\dddot{${n}}`,qdot:n=>`\\ddddot{${n}}`,acute:n=>`\\acute{${n}}`,grave:n=>`\\grave{${n}}`,breve:n=>`\\breve{${n}}`,check:n=>`\\check{${n}}`},Xs={upright:n=>`\\mathrm{${n}}`,italic:n=>`\\mathit{${n}}`,bold:n=>`\\mathbf{${n}}`,script:n=>`\\mathscr{${n}}`,fraktur:n=>`\\mathfrak{${n}}`,doublestruck:n=>`\\mathbb{${n}}`,blackboard:n=>`\\mathbb{${n}}`,calligraphic:n=>`\\mathcal{${n}}`,gothic:n=>`\\mathfrak{${n}}`,sansserif:n=>`\\mathsf{${n}}`,monospace:n=>`\\mathtt{${n}}`},Ks=class{options;dictionary;level=-1;constructor(e,t){this.dictionary=e,this.options=t}wrap(e,t){if(e==null)return"";if(t===void 0)return this.wrapString(this.serialize(e),this.options.groupStyle(e,this.level+1));if(typeof e=="number"||Qt(e)){let r=R(e);return r!==null&&r<0&&t>de?this.wrap(e):this.serialize(e)}let i=h(e);if(i&&i!=="Delimiter"&&i!=="Subscript"){let r=this.dictionary.ids.get(i);if(r&&(r.kind==="symbol"||r.kind==="expression"||r.kind==="prefix"||r.kind==="infix"||r.kind==="postfix")&&r.precedence<t)return this.wrapString(this.serialize(e),this.options.applyFunctionStyle(e,this.level))}return this.serialize(e)}wrapShort(e){if(e==null)return"";let t=this.serialize(e);if(T(e)!==null||qn(e)&&!/^(-|\.)/.test(t))return t;let r=h(e);return r==="Delimiter"&&J(e)===1||r!=="Add"&&r!=="Negate"&&r!=="Subtract"&&r!=="PlusMinus"&&r!=="Multiply"?t:this.wrapString(t,this.options.groupStyle(e,this.level+1))}wrapString(e,t,i){if(t==="none")return e;i??="()";let r=i?.[0]??".",o=i?.[1]??".";return r==='"'?r="``":r==="|"?r="\\lvert":r=ii[r]??r,o==='"'?o="''":o==="|"?o="\\rvert":o=ii[o]??o,r==="."&&o==="."?e:((r==="."||o===".")&&t==="normal"&&(t="scaled"),t==="scaled"?`\\left${r}${e}\\right${o}}`:t==="big"?`${`\\Bigl${r}`}${e}${`\\Bigr${o}`})`:r+e+o)}wrapArguments(e){return this.wrapString(N(e).map(t=>this.serialize(t)).join(", "),this.options.applyFunctionStyle(e,this.level))}serializeSymbol(e,t){return typeof e=="string"||jr(e),t?.kind==="function"?Ys(T(e)??"")??"":t?.serialize?.(this,e)??Ys(T(e))??""}serializeFunction(e,t){if(t?.serialize)return t.serialize(this,e);let i=h(e);return Ys(i,"auto")+this.wrapArguments(e)}serialize(e){if(e==null)return"";this.level+=1;try{let t=(()=>{let i=Jl(e,this.options);if(i)return i;let r=F(e);if(r!==null)return`\\text{${r}}`;let o=T(e);if(o!==null)return this.serializeSymbol(e,this.dictionary.ids.get(o));let s=h(e);if(s){let a=this.dictionary.ids.get(s);return this.serializeFunction(e,a)}throw Error(`Syntax error ${e?JSON.stringify(e,void 0,4):""}`)})();return this.level-=1,t??""}catch{}return this.level-=1,""}applyFunctionStyle(e,t){return this.options.applyFunctionStyle(e,t)}groupStyle(e,t){return this.options.groupStyle(e,t)}rootStyle(e,t){return this.options.rootStyle(e,t)}fractionStyle(e,t){return this.options.fractionStyle(e,t)}logicStyle(e,t){return this.options.logicStyle(e,t)}powerStyle(e,t){return this.options.powerStyle(e,t)}numericSetStyle(e,t){return this.options.numericSetStyle(e,t)}};function tm(n){let e=n.match(/^([^_]+)/)?.[1]??"",t=Nn.findIndex(s=>e===s[0]);if(t>=0)return[Nn[t][1],n.substring(Nn[t][0].length)];let i={zero:"0",one:"1",two:"2",three:"3",four:"4",five:"5",six:"6",seven:"7",eight:"8",nine:"9",ten:"10"};if(t=Object.keys(i).findIndex(s=>n.startsWith(s)),t>=0){let s=Object.keys(i)[t];return[i[s],n.substring(s.length)]}let r=n.codePointAt(0);if(t=Nn.findIndex(s=>s[2]===r),t>=0)return[Nn[t][1],n.substring(1)];let o={plus:"+",minus:"-",pm:"\\pm",ast:"\\ast",dag:"\\dag",ddag:"\\ddag",hash:"\\#",bottom:"\\bot",top:"\\top",bullet:"\\bullet",circle:"\\circ",diamond:"\\diamond",times:"\\times",square:"\\square",star:"\\star"};if(t=Object.keys(o).findIndex(s=>e===s),t>=0){let s=Object.keys(o)[t];return[o[s],n.substring(s.length)]}return[e,n.substring(e.length)]}function im(n){let[e,t]=tm(n),i=[];for(;t.length>0;){let o=t.match(/^_([a-zA-Z]+)(.*)/);if(!o||!Qs[o[1]])break;i.push(o[1]),t=o[2]}let r=[];for(;t.length>0;){let o=t.match(/^_([a-zA-Z]+)(.*)/);if(!o||!Xs[o[1]])break;r.push(o[1]),t=o[2]}return[e,i,r,t]}function fo(n,e=!0,t="auto"){let[i,r,o,s]=im(n);for(let a of r)Qs[a]&&(i=Qs[a](i));if(e){let a=[],u=[],l=i.match(/^([^\d].*?)(\d+)$/);for(l&&(u.push(l[2]),i=l[1]);s.length>0;)if(s.startsWith("__")){let[c,f]=fo(s.substring(2),!1,"none");a.push(c),s=f}else if(s.startsWith("_")){let[c,f]=fo(s.substring(1),!1,"none");u.push(c),s=f}else break;a.length>0&&(i=ei("^",i,a.join(","))),u.length>0&&(i=ei("_",i,u.join(",")))}for(let a of o)Xs[a]&&(i=Xs[a](i));if(o.length===0&&t!=="none")switch(t){case"auto":Jr(i)>1&&(i=`\\mathrm{${i}}`);break;case"operator":i=`\\operatorname{${i}}`;break;case"italic":i=`\\mathit{${i}}`;break;case"upright":i=`\\mathrm{${i}}`;break}return[i,s]}function Ys(n,e="auto"){if(n===null)return null;if(Wt.test(n))return n;let t=n.match(/^(_+)(.*)/);if(t){let[o,s]=fo(t[2],!0,"none");return`\\operatorname{${"\\_".repeat(t[1].length)+o+s}}`}let[i,r]=fo(n,!0,e);return r.length>0?`\\operatorname{${n}}`:i}function Xl(n,e,t){return new Ks(e,t).serialize(n)}var Kl={PositiveInfinity:"+oo",NegativeInfinity:"-oo",ComplexInfinity:"~oo",NaN:"NaN",Pi:"pi",ExponentialE:"e",ImaginaryUnit:"i",ContinuationPlaceholder:"...",alpha:"alpha",beta:"beta",gamma:"gamma",delta:"delta",epsilon:"epsilon",epsilonSymbol:"varepsilon",zeta:"zeta",eta:"eta",theta:"theta",thetaSymbol:"vartheta",iota:"iota",kappa:"kappa",lambda:"lambda",mu:"mu",nu:"nu",xi:"xi",omicron:"omicron",pi:"pi",rho:"rho",sigma:"sigma",tau:"tau",upsilon:"upsilon",phi:"phi",phiSymbol:"varphi",chi:"chi",psi:"psi",omega:"omega",Gamma:"Gamma",Delta:"Delta",Theta:"Theta",Lambda:"Lambda",Xi:"Xi",Sigma:"Sigma",Upsilon:"Upsilon",Phi:"Phi",Psi:"Psi",Omega:"Omega"},ec={Add:[(n,e)=>n.ops?.reduce((t,i)=>{if(i.operator==="Negate"){let r=e(i.op1,10);return t===""?`-${r}`:r.startsWith("+")?`${t} - ${r.substring(1)}`:r.startsWith("-")?`${t} + ${r.substring(1)}`:`${t} - ${r}`}return nc(t,e(i,10))},"")??"",11],Negate:[(n,e)=>{let t=e(n.op1,14);return t==="Power"?`-(${t})`:`-${t}`},14],Subtract:[(n,e)=>n.ops?.reduce((t,i)=>{let r=e(i,10);return t===""?r:r.startsWith("-")?`${t} - (${r})`:`${t} - ${r}`},"")??"",11],Multiply:[(n,e)=>{if(!n.ops)return"";if(n.nops===2){let t=n.op1.numericValue;if(t!==null){typeof t!="number"&&t.im!==0&&na(e(n.op2,12),nc(t.re.toString(),`${t.im}i`));let i=n.op2;if((i.symbol||i.operator==="Power"||i.operator==="Square"||typeof mi[i.operator]=="string")&&Yn(t)&&t[0]===1){let r=t[1];return`${e(i,12)}/${r}`}return na(e(n.op1,12),e(n.op2,12))}}return n.ops.reduce((t,i)=>na(t,e(i,12)),"")},12],Divide:["/",13],Power:[(n,e)=>{let t=e(n.op2,14);if(t==="1")return e(n.op1);if(t==="(1/2)"||t==="1/2"||t==="0.5")return`sqrt(${e(n.op1)})`;if(t==="-0.5")return`(1/sqrt(${e(n.op1)}))`;let i=e(n.op1,14);return i.startsWith("-")&&(i=`(${i})`),t.length===1?`${i}^${t}`:`${i}^${Ve(t)}`},15],Equal:["===",8],NotEqual:["!==",8],LessEqual:["<=",9],GreaterEqual:[">=",9],Less:["<",9],Greater:[">",9],And:["&&",4],Or:["||",3],Not:["!",14]},mi={Abs:(n,e)=>`|${e(n.op1)}|`,Sin:"sin",Cos:"cos",Tan:"tan",Sec:"sec",Csc:"csc",Arcsin:"arcsin",Arccos:"arccos",Arctan:"arctan",Sinh:"sinh",Cosh:"cosh",Tanh:"tanh",Sech:"sech",Csch:"csch",Coth:"coth",Ceil:"ceil",Exp:"exp",Factorial:(n,e)=>`${e(n.op1,12)}!`,Floor:"floor",Log:"log",Ln:"ln",Log10:"log10",Sqrt:"sqrt",Root:(n,e)=>{let t=n.op1,i=n.op2;return i.is(2)?`sqrt${Ve(e(t))}`:`root${Ve(e(i))}${Ve(e(t))}`},Square:(n,e)=>`${e(n.op1,12)}^2`,Det:"det",Dim:"dim",Mod:"mod",GCD:"gcd",LCM:"lcm",Lub:"lub",Glb:"glb",Max:"max",Min:"min",PlusMinus:(n,e)=>{let[t,i]=n.ops??[];if(!i)return e(t);if(t&&i){let r=e(t),o=e(i);return`${r} \xB1 ${o}`}return t?`\xB1 ${e(t)}`:i?`\xB1 ${e(i)}`:"0"},Sum:(n,e)=>ea(n,"sum",e),Product:(n,e)=>ea(n,"prod",e),Integrate:(n,e)=>ea(n,"int",e),Limit:(n,e)=>{let[t,i]=n.ops??[];if(t?.operator==="Function"){let r=t.ops?.slice(2)??[],o=t.op1??t,s=null;return r.length===1&&(s=r[0]),s?`lim_(${e(s)} -> ${e(i)}) ${e(o)}`:`lim_(${e(i)}) ${e(o)}`}else if(t?.symbol)return`lim_(x -> ${e(i)}) ${e(t)}(x)`;return"lim"},Delimiter:(n,e)=>rm(n.ops[0],n.ops[1]?.string,e),Sequence:(n,e)=>n.nops===0?"":n.ops.map(t=>e(t)).join(" "),List:(n,e)=>`[${n.ops?.map(t=>e(t))??""}]`,Single:(n,e)=>`(${n.ops.map(t=>e(t)).join(", ")})`,Pair:(n,e)=>`(${n.ops.map(t=>e(t)).join(", ")})`,Triple:(n,e)=>`(${n.ops.map(t=>e(t)).join(", ")})`,Tuple:(n,e)=>`(${n.ops.map(t=>e(t)).join(", ")})`,Block:(n,e)=>n.nops===0?"{}":n.nops===1?`{${e(n.op1)}}`:`{ ${n.ops.map(t=>e(t)).join(`;
|
|
29
|
+
`)}
|
|
30
|
+
}`,EvaluateAt:(n,e)=>{let t=n.op1,i=n.ops.slice(1);return i.length===0?e(t):i.length===1?`(${e(t)})|_(${e(i[0])})`:i.length===2?`(${e(t)})|_(${e(i[0])})^(${e(i[1])})`:`(${e(t)})|_(${i.map(r=>e(r)).join(", ")})`},Function:(n,e)=>{let t=n.ops.slice(1),i=()=>t.map(r=>e(r)).join(", ");return n.op1.operator==="Block"?n.op1.nops===0?`(${i()}) |-> {}`:n.op1.nops===1?t.length===1&&t[0].symbol==="_1"?`(_) |-> ${e(n.op1.op1.subs({_1:"_"}))}`:`(${i()}) |-> ${e(n.op1.op1)}`:`(${i()}) |-> {
|
|
31
|
+
${n.op1.ops.map(r=>e(r)).join(`;
|
|
32
|
+
`)}
|
|
33
|
+
}`:`(${i()}) |-> ${e(n.op1)}`},Domain:n=>JSON.stringify(n.json),Error:(n,e)=>n.nops===1?`Error(${e(n.op1)})`:n.nops===2?n.op1.string?`Error("${n.op1.string}", ${e(n.op2)})`:`Error(${e(n.op1)}, ${e(n.op2)})`:`Error(${n.ops.map(t=>e(t)).join(", ")})`,LatexString:n=>`"${n.op1.string??""}"`};function ea(n,e,t){let[i,...r]=n.ops??[],o=[],s,a=[];if(i?.operator==="Function"){a=i.ops.slice(1)??[];let l=i.op1??i;l.operator==="Block"?s=t(l.op1??l):s=t(l)}else if(i?.symbol)a=[],s=t(i);else return"int()";let u=e;for(let l of r)if(["Range","Tuple","Pair","Single","Limits"].includes(l.operator)&&l.nops!==0){if(l.nops===2)l.op1.symbol?(l.op1.symbol!=="Nothing"&&o.push(l.op1),l.op2.symbol!=="Nothing"&&(e==="int"?u+=`_${Ve(t(l.op2))}`:u+="_"+Ve(`${l.op1.symbol}=${t(l.op2)}`))):(l.op1.symbol!=="Nothing"&&(u+=`_${Ve(t(l.op1))}`),l.op2.symbol!=="Nothing"&&(u+=`^${Ve(t(l.op2))}`));else if(l.nops===3){let c="";l.op1.symbol!=="Nothing"&&(o.push(l.op1),c=l.op1.symbol??"");let f=l.op2.symbol!=="Nothing"?l.op2:null,d=l.op3.symbol!=="Nothing"?l.op3:null;f?e==="int"||!c?u+=`_${Ve(t(f))}`:u+="_"+Ve(`${c}=${t(f)}`):e!=="int"&&(u+=`_${Ve(t(l.op1))}`),d&&(u+=`^${Ve(t(d))}`)}}return e==="int"?u+=Ve(s+a.map(l=>` d${t(l)}`).join(" ")):u+=Ve(s),u}function rm(n,e,t){e||(e="(,)");let i="",r="",o="";if(e.length===1&&(i=e),e.length===2&&(r=e[0],o=e[1]),e.length===3&&(r=e[0],i=e[1],o=e[2]),!n)return`${r}${o}`;let s=[n];return n.operator==="Sequence"&&(s=n.ops),`${r}${s.map(a=>t(a)).join(i)}${o}`}function Ve(n,e=0,t=-1){return e>t&&!/^\(.+\)$/.test(n)?`(${n})`:n}function po(n,e={}){return e.symbols?.[n]?e.symbols[n]:Kl[n]?Kl[n]:n.startsWith("_")?n:mi[n]&&typeof mi[n]=="string"?mi[n]:n.length===1?n:`"${n}"`}function or(n,e={},t=0){if(n===void 0)return"[undefined]";if(n===null)return"[null]";if(n.symbol)return po(n.symbol,e);let i=(o,s=0)=>or(o,e,s);if(n.string)return`"${n.string.replace(/"/g,'\\"')}"`;let r=n.numericValue;if(r!==null)return n.isNaN?po("NaN",e):n.isFinite===!1?n.isNegative!==!0&&n.isPositive!==!0?po("ComplexInfinity",e):po(n.isNegative?"NegativeInfinity":"PositiveInfinity",e):r.toString();if(n.operator){let o=e.operators?{...ec,...e.operators}:ec,[s,a]=o[n.operator]??[];if(s){let c="";if(typeof s=="function")c=s(n,i);else{if(n.nops===1)return`${s}${i(n.op1,a+1)}`;c=n.ops?.map(f=>i(f,a+1)).join(` ${s} `)??""}return Ve(c,t,a)}let l=(e.functions?{...mi,...e.functions}:mi)[n.operator];return typeof l=="function"?l(n,i):typeof l=="string"?`${l}(${n.ops?.map(c=>i(c)).join(", ")??""})`:`${n.operator}(${n.ops?.map(c=>i(c)).join(", ")??""})`}return JSON.stringify(n.json)}function na(n,e){return n?e?((e.startsWith("-")||e.startsWith("+"))&&(e=`(${e})`),n.match(/^[-+]?\d+$/)&&e.match(/^[a-zA-Z\(]/)?n+e:`${n} * ${e}`):n:e}function nc(n,e){return n?e?e.startsWith("-")?`${n} - ${e.substring(1)}`:e.startsWith("+")?`${n} + ${e.substring(1)}`:`${n} + ${e}`:n:e}function ta(n,e){for(n.isInteger()&&e.isInteger();!e.isZero();)[n,e]=[e,n.modulo(e)];return n.abs()}function tc(n,e){return n.mul(e).div(ta(n,e))}function ic(n,e){if(!e.isInteger()||e.isNegative())return n._BIGNUM_NAN;if(e.lessThan(1))return n._BIGNUM_ONE;let t=e;for(;e.greaterThan(2);)e=e.minus(2),t=t.mul(e);return t}function Mt(n){return n.isFinite()?n.d.length>3||n.d.length===3&&n.d[0]>=90?!1:(n.precision()<=16,n.e<308&&n.e>-306):!0}var Rt=class n extends j{__brand;decimal;bignum;constructor(e,t){if(super(),this.bignum=t,typeof e=="number")this.decimal=t(e),this.im=0;else if(e instanceof M)this.decimal=e,this.im=0;else{let i=t(e.re??0);this.decimal=i,this.im=e.im??0}this.decimal.isNaN()&&(this.im=NaN),this.decimal.isNaN(),isNaN(this.im)}get type(){return this.isNaN?"number":this.isComplexInfinity?"complex":this.im!==0?this.decimal.isZero()?"imaginary":"finite_complex":this.decimal.isFinite()?this.decimal.isInteger()?"finite_integer":"finite_real":"non_finite_number"}get isExact(){return this.im===0&&this.decimal.isInteger()}get asExact(){if(this.isExact)return this._makeExact(ie(this.decimal))}toJSON(){return this.isNaN?"NaN":this.isPositiveInfinity?"PositiveInfinity":this.isNegativeInfinity?"NegativeInfinity":this.isComplexInfinity?"ComplexInfinity":this.im===0?Mt(this.decimal)?this.decimal.toNumber():{num:mo(this.decimal)}:Mt(this.decimal)?["Complex",Le(this.decimal.toNumber()),Le(this.im)]:["Complex",{num:mo(this.decimal)},Le(this.im)]}toString(){if(this.isZero)return"0";if(this.isOne)return"1";if(this.isNegativeOne)return"-1";if(this.im===0)return mo(this.decimal);if(this.decimal.isZero())return this.im===1?"i":this.im===-1?"-i":`${Be(this.im)}i`;if(this.isComplexInfinity)return"~oo";let e="";return this.im===1?e="+ i":this.im===-1?e="- i":this.im>0?e=`+ ${this.im}i`:e=`- ${-this.im}i`,`(${mo(this.decimal)} ${e})`}clone(e){return new n(e,this.bignum)}_makeExact(e){return new K(e,t=>this.clone(t),this.bignum)}get re(){return this.decimal.toNumber()}get bignumRe(){return this.decimal}get numerator(){return this}get denominator(){return this._makeExact(1)}get isNaN(){return this.decimal.isNaN()}get isPositiveInfinity(){return this.im===0&&!this.decimal.isFinite()&&!this.decimal.isNaN()&&this.decimal.isPositive()}get isNegativeInfinity(){return this.im===0&&!this.decimal.isFinite()&&!this.decimal.isNaN()&&this.decimal.isNegative()}get isComplexInfinity(){return!Number.isFinite(this.im)&&!Number.isNaN(this.im)}get isZero(){return this.im===0&&this.decimal.isZero()}isZeroWithTolerance(e){if(this.im!==0)return!1;let t=typeof e=="number"?this.bignum(e):e;return this.decimal.abs().lte(t)}get isOne(){return this.im===0&&this.decimal.eq(1)}get isNegativeOne(){return this.im===0&&this.decimal.eq(-1)}sgn(){if(this.im===0){if(this.decimal.isZero())return 0;if(this.decimal.isPositive())return 1;if(this.decimal.isNegative())return-1}}N(){return this}neg(){return this.isZero?this:this.clone({re:this.decimal.neg(),im:-this.im})}inv(){if(this.isOne)return this;if(this.isNegativeOne)return this;if(this.im===0)return this.clone(this.decimal.pow(-1));let e=Math.hypot(this.re,this.im),t=this.decimal.mul(this.decimal).add(this.im*this.im).sqrt();return this.clone({re:this.decimal.div(t),im:-this.im/e})}add(e){return typeof e=="number"?e===0?this:this.clone({re:this.decimal.add(e),im:this.im}):e.isZero?this:this.isZero?this.clone(e):this.clone({re:this.decimal.add(e.bignumRe??e.re),im:this.im+e.im})}sub(e){return this.add(e.neg())}mul(e){if(this.isZero)return this;if(e===1)return this;if(e===-1)return this.neg();if(e===0)return this.clone(0);if(this.isOne)return typeof e=="number"||e instanceof M?this.clone(e):this.clone({re:e.bignumRe??e.re,im:e.im});if(typeof e=="number")return this.im===0?this.clone(this.decimal.mul(e)):this.clone({re:this.decimal.mul(e),im:this.im*e});if(e instanceof M)return this.im===0?this.clone(this.decimal.mul(e)):this.clone({re:this.decimal.mul(e),im:this.im*e.toNumber()});if(this.isNegativeOne){let t=e.neg();return this.clone({re:t.bignumRe??t.re,im:t.im})}return e.isOne?this:e.isNegativeOne?this.neg():e.isZero?this.clone(0):this.im===0&&e.im===0?this.clone(this.decimal.mul(e.bignumRe??e.re)):this.clone({re:this.decimal.mul(e.bignumRe??e.re).sub(this.im*e.im),im:this.re*e.im+this.im*e.re})}div(e){if(typeof e=="number")return e===1?this:e===-1?this.neg():e===0?this.clone(NaN):this.clone({re:this.decimal.div(e),im:this.im/e});if(e.isOne)return this;if(e.isNegativeOne)return this.neg();if(e.isZero)return this.clone(this.isZero?NaN:1/0);if(this.im===0&&e.im===0)return this.clone(this.decimal.div(e.bignumRe??e.re));let[t,i]=[this.re,this.im],[r,o]=[e.re,e.im],s=r*r+o*o,a=e.bignumRe??this.bignum(e.re),u=a.mul(a).add(o*o);return this.clone({re:this.decimal.mul(a).add(i*o).div(u),im:(i*r-t*o)/s})}pow(e){if(Array.isArray(e),this.isNaN)return this;if(typeof e=="number"&&isNaN(e))return this.clone(NaN);if(e instanceof j){if(e.isNaN)return this.clone(NaN);if(e.isZero)return this.clone(1);if(e.isOne)return this;e.im?e={re:e.re,im:e.im}:e=e.re}if(typeof e=="object"&&("re"in e||"im"in e)){let[u,l]=[e?.re??0,e?.im??0];if(Number.isNaN(l)||Number.isNaN(u))return this.clone(NaN);if(l===0)e=u;else{if(this.im===1/0)return this.clone(NaN);if(this.isNegativeInfinity)return this.clone(0);if(this.isPositiveInfinity)return this.clone({im:1/0});let c=this.pow(u),f=this.decimal.ln().mul(l),d=this.clone({re:f.cos(),im:gi(f.sin().toNumber())});return c.mul(d)}}if(this.isPositiveInfinity){if(e===-1)return this.clone(0);if(e===1/0)return this.clone(1/0);if(e===-1/0)return this.clone(0)}else if(this.isNegativeInfinity&&e===1/0)return this.clone(NaN);if((e===1/0||e===-1/0)&&(this.isOne||this.isNegativeOne))return this.clone(NaN);if(e===1)return this;if(e===-1)return this.inv();if(e===0)return this.clone(1);if(this.isZero){if(e>0)return this;if(e<0)return this.clone({im:1/0})}if(e<0)return this.pow(-e).inv();if(this.im===0)return this.clone(this.decimal.pow(e));let t=this.decimal,i=this.im,r=t.mul(t).add(i*i).sqrt(),o=M.atan2(i,t),s=r.pow(e),a=o.mul(e);return this.clone({re:s.mul(a.cos()),im:gi(s.mul(a.sin()).toNumber())})}root(e){if(!Number.isInteger(e))return this._makeExact(NaN);if(e===0)return this._makeExact(NaN);if(e===1)return this;if(this.isZero)return this;if(this.isOne)return this;if(this.isNegativeOne)return this;if(this.im===0)return this.decimal.isNegative()?this._makeExact(NaN):e===2?this.clone(this.decimal.sqrt()):e===3?this.clone(this.decimal.cbrt()):this.clone(this.decimal.pow(1/e));let t=this.decimal,i=this.im,r=t.mul(t).add(i*i).sqrt(),o=M.atan2(i,t),s=r.pow(1/e),a=o.div(e);return this.clone({re:s.mul(a.cos()),im:gi(s.mul(a.sin()).toNumber())})}sqrt(){if(this.isZero||this.isOne)return this;if(this.im!==0){let e=this.decimal,t=this.im,i=e.mul(e).add(t*t).sqrt(),r=e.add(i).div(2).sqrt(),o=gi(Math.sign(t)*i.sub(e).div(2).sqrt().toNumber());return this.clone({re:r,im:o})}return this.decimal.isPositive()?this.clone(this.decimal.sqrt()):this.clone({im:Math.sqrt(-this.re)})}gcd(e){if(this.isZero)return e;if(e.isZero)return this;if(this.im!==0||e.im!==0)return this._makeExact(NaN);if(!this.decimal.isInteger())return this._makeExact(1);let t=this.bignum(e.bignumRe??e.re);if(!t.isInteger())return this._makeExact(1);let i=this.decimal;for(;!t.isZero();){let r=t;t=i.mod(t),i=r}return this.clone(i.abs())}abs(){return this.im===0?this.decimal.isPositive()?this:this.clone(this.decimal.neg()):this.clone(this.decimal.pow(2).add(this.im**2).sqrt())}ln(e){if(this.isZero)return this._makeExact(NaN);if(this.isNegativeInfinity)return this._makeExact(NaN);if(this.isPositiveInfinity)return this._makeExact(1/0);if(this.im===0)return this.decimal.isNegative()?this._makeExact(NaN):this.isOne?this._makeExact(0):this.isNegativeOne?this.clone({im:Math.PI}):e===void 0?this.clone(this.decimal.ln()):this.clone(this.decimal.log(e));let t=this.decimal,i=this.im,r=t.mul(t).add(i*i).sqrt(),o=M.atan2(i,t).toNumber();return e===void 0?this.clone({re:r.ln(),im:o}):this.clone({re:r.log(e),im:o})}exp(){if(this.isNaN)return this._makeExact(NaN);if(this.isZero)return this._makeExact(1);if(this.isNegativeInfinity)return this._makeExact(0);if(this.isPositiveInfinity)return this._makeExact(1/0);if(this.im!==0){let e=this.decimal.exp();return this.clone({re:e.mul(gi(Math.cos(this.im))),im:gi(e.mul(Math.sin(this.im)).toNumber())})}return this.clone(this.decimal.exp())}floor(){return this.isNaN||this.im!==0?this._makeExact(NaN):this.decimal.isInteger()?this:this._makeExact(ie(this.decimal.floor()))}ceil(){return this.isNaN||this.im!==0?this._makeExact(NaN):this.decimal.isInteger()?this:this._makeExact(ie(this.decimal.ceil()))}round(){return this.isNaN||this.im!==0?this._makeExact(NaN):this.decimal.isInteger()?this:this._makeExact(ie(this.decimal.round()))}eq(e){return this.isNaN?!1:typeof e=="number"?this.im===0&&this.decimal.eq(e):e.isNaN?!1:Number.isFinite(this.im)?this.decimal.eq(e.bignumRe??e.re)&&this.im-e.im===0:!Number.isFinite(e.im)}lt(e){return this.im,typeof e=="number"?this.decimal.lt(e):this.decimal.lt(e.bignumRe??e.re)}lte(e){return this.im,typeof e=="number"?this.decimal.lte(e):this.decimal.lte(e.bignumRe??e.re)}gt(e){return this.im,typeof e=="number"?this.decimal.gt(e):this.decimal.gt(e.bignumRe??e.re)}gte(e){return this.im,typeof e=="number"?this.decimal.gte(e):this.decimal.gte(e.bignumRe??e.re)}};function mo(n){let e=n.toString();if(n.isInteger()&&e.includes("e")){let t=n.toFixed(),i=t.match(/0+$/);if((i?i[0].length:0)<=5)return t}return e}function gi(n){return Math.abs(n)<=1e-14?0:n}var Pt=class n extends j{__brand;decimal;bignum;constructor(e,t){if(super(),this.bignum=t,typeof e=="number")this.decimal=e,this.im=0;else if(e instanceof M)this.decimal=e.toNumber(),this.im=0;else{let i=e.re===void 0?0:e.re instanceof M?e.re.toNumber():e.re;this.decimal=i,this.im=e.im??0,isFinite(this.im)||(this.decimal=this.im)}isNaN(this.im)}_makeExact(e){return new K(e,t=>this.clone(t),this.bignum)}get type(){return this.isNaN?"number":this.isComplexInfinity?"complex":this.im!==0?this.decimal===0?"imaginary":"finite_complex":Number.isFinite(this.decimal)?Number.isInteger(this.decimal)?"finite_integer":"finite_real":"non_finite_number"}get isExact(){return this.im===0&&Number.isInteger(this.decimal)}get asExact(){if(this.isExact)return this._makeExact(this.decimal)}toJSON(){return this.isNaN?"NaN":this.isPositiveInfinity?"PositiveInfinity":this.isNegativeInfinity?"NegativeInfinity":this.im===0?Le(this.decimal):["Complex",Le(this.decimal),Le(this.im)]}toString(){if(this.isZero)return"0";if(this.isOne)return"1";if(this.isNegativeOne)return"-1";if(this.im===0)return Be(this.decimal);if(this.decimal===0)return this.im===1?"i":this.im===-1?"-i":`${Be(this.im)}i`;if(this.isComplexInfinity)return"~oo";let e="";return this.im===1?e="+ i":this.im===-1?e="- i":this.im>0?e=`+ ${Be(this.im)}i`:e=`- ${Be(-this.im)}i`,`(${Be(this.decimal)} ${e})`}clone(e){return new n(e,this.bignum)}get re(){return this.decimal}get bignumRe(){}get numerator(){return this}get denominator(){return this._makeExact(1)}get isNaN(){return Number.isNaN(this.decimal)}get isPositiveInfinity(){return!Number.isFinite(this.decimal)&&this.decimal>0&&this.im===0}get isNegativeInfinity(){return!Number.isFinite(this.decimal)&&this.decimal<0&&this.im===0}get isComplexInfinity(){return!Number.isFinite(this.im)&&!Number.isNaN(this.im)}get isZero(){return this.im===0&&this.decimal===0}isZeroWithTolerance(e){if(this.im!==0)return!1;let t=e instanceof M?e.toNumber():e;return Math.abs(this.decimal)<t}get isOne(){return this.im===0&&this.decimal===1}get isNegativeOne(){return this.im===0&&this.decimal===-1}sgn(){if(!(this.im!==0||!Number.isFinite(this.decimal)))return Math.sign(this.decimal)}N(){return this}neg(){return this.isNaN?this._makeExact(NaN):this.isZero?this:this.clone({re:-this.decimal,im:-this.im})}inv(){if(this.isNaN)return this._makeExact(NaN);if(this.isOne)return this;if(this.isNegativeOne)return this;if(this.im===0)return this.clone(1/this.decimal);let e=Math.hypot(this.re,this.im);return this.clone({re:this.decimal/e,im:-this.im/e})}add(e){return this.isNaN?this._makeExact(NaN):typeof e=="number"?e===0?this:this.clone({re:this.decimal+e,im:this.im}):e.isZero?this:this.isZero?this.clone({re:e.bignumRe??e.re,im:e.im}):this.clone({re:this.decimal+e.re,im:this.im+e.im})}sub(e){return this.add(e.neg())}mul(e){if(this.isNaN)return this._makeExact(NaN);if(this.isZero)return this;if(e instanceof M&&(e=e.toNumber()),e===1)return this;if(e===-1)return this.neg();if(e===0)return this.clone(0);if(this.isOne)return typeof e=="number"||e instanceof M?this.clone(e):this.clone({re:e.bignumRe??e.re,im:e.im});if(typeof e=="number")return this.im===0?this.clone(this.decimal*e):this.clone({re:this.decimal*e,im:this.im*e});if(this.isNegativeOne){let t=e.neg();return this.clone({re:t.bignumRe??t.re,im:t.im})}return e.isOne?this:e.isNegativeOne?this.neg():e.isZero?this.clone(0):this.im===0&&e.im===0?this.clone(this.decimal*e.re):this.clone({re:this.decimal*e.re-this.im*e.im,im:this.re*e.im+this.im*e.re})}div(e){if(this.isNaN)return this._makeExact(NaN);if(typeof e=="number")return e===1?this:e===-1?this.neg():e===0?this.clone(NaN):this.clone({re:this.decimal/e,im:this.im/e});if(e.isOne)return this;if(e.isNegativeOne)return this.neg();if(e.isZero)return this.clone(this.isZero?NaN:1/0);if(this.im===0&&e.im===0)return this.clone(this.decimal/e.re);let[t,i]=[this.decimal,this.im],[r,o]=[e.re,e.im],s=r*r+o*o;return this.clone({re:(t*r+i*o)/s,im:(i*r-t*o)/s})}pow(e){if(Array.isArray(e),this.isNaN)return this._makeExact(NaN);if(typeof e=="number"&&isNaN(e))return this.clone(NaN);if(e instanceof j){if(e.isNaN)return this.clone(NaN);if(e.isZero)return this.clone(1);if(e.isOne)return this;e.im?e={re:e.re,im:e.im}:e=e.re}if(typeof e=="object"&&("re"in e||"im"in e)){let[u,l]=[e?.re??0,e?.im??0];if(Number.isNaN(l)||Number.isNaN(u))return this.clone(NaN);if(l===0)e=u;else{if(this.im===1/0)return this.clone(NaN);if(this.isNegativeInfinity)return this.clone(0);if(this.isPositiveInfinity)return this.clone({im:1/0});let c=this.pow(u).re,f=Math.log(this.decimal)*l;return this.clone({re:rc(c*Math.cos(f)),im:rc(c*Math.sin(f))})}}if(this.isPositiveInfinity){if(e===-1)return this.clone(0);if(e===1/0)return this.clone(1/0);if(e===-1/0)return this.clone(0)}else if(this.isNegativeInfinity&&e===1/0)return this.clone(NaN);if((e===1/0||e===-1/0)&&(this.isOne||this.isNegativeOne))return this.clone(NaN);if(e===1)return this;if(e===-1)return this.inv();if(e===0)return this.clone(1);if(this.isZero){if(e>0)return this;if(e<0)return this.clone({im:1/0})}if(e<0)return this.clone(1/this.decimal**-e);if(this.im===0)return this.clone(this.decimal**e);let t=this.decimal,i=this.im,r=Math.sqrt(t*t+i*i),o=Math.atan2(i,t),s=r**e,a=o**e;return this.clone({re:s*Math.cos(a),im:s*Math.sin(a)})}root(e){if(this.isNaN)return this._makeExact(NaN);if(e===0)return this.clone(NaN);if(this.isNaN)return this;if(this.isZero)return this;if(this.isOne)return this;if(this.isNegativeOne)return this;if(e===1)return this;if(e===2)return this.sqrt();if(e===3)return this.clone(Math.cbrt(this.decimal));if(this.im===0)return this.decimal<0?e%2===0?this.clone(NaN):this.clone(-Math.pow(-this.decimal,1/e)):this.clone(Math.pow(this.decimal,1/e));let t=this.decimal,i=this.im,r=Math.hypot(t,i),o=Math.atan2(i,t),s=Math.pow(r,1/e),a=o/e;return this.clone({re:s*Math.cos(a),im:s*Math.sin(a)})}sqrt(){if(this.isNaN)return this._makeExact(NaN);if(this.isZero||this.isOne)return this;if(this.im!==0){let e=this.decimal,t=this.im,i=Math.sqrt(e*e+t*t),r=Math.sqrt((e+i)/2),o=Math.sign(t)*Math.sqrt((i-e)/2);return this.clone({re:r,im:o})}return this.decimal>0?this.clone(Math.sqrt(this.decimal)):this.clone({im:Math.sqrt(-this.decimal)})}gcd(e){if(this.isNaN)return this._makeExact(NaN);if(this.isZero)return e;if(e.isZero)return this;if(this.im!==0||e.im!==0)return this._makeExact(NaN);if(!Number.isInteger(this.decimal))return this._makeExact(1);let t=e.re;if(!Number.isInteger(t))return this._makeExact(1);let i=this.decimal;for(;t!==0;){let r=t;t=i%t,i=r}return this.clone(Math.abs(i))}abs(){return this.isNaN?this._makeExact(NaN):this.im===0?this.decimal>0?this:this.clone(-this.decimal):this.clone(Math.sqrt(this.decimal**2+this.im**2))}ln(e){if(this.isNaN)return this._makeExact(NaN);if(this.isZero)return this._makeExact(NaN);if(this.isNegativeInfinity)return this._makeExact(NaN);if(this.isPositiveInfinity)return this._makeExact(1/0);if(this.im===0)return this.decimal<0?this._makeExact(NaN):this.isOne?this._makeExact(0):this.isNegativeOne?this.clone({im:Math.PI}):e===void 0?this.clone(Math.log(this.decimal)):this.clone(Math.log(this.decimal)/Math.log(e));let t=this.decimal,i=this.im,r=Math.hypot(t,i),o=Math.atan2(i,t),s=e===void 0?Math.log(r):Math.log(r)/Math.log(e);return this.clone({re:s,im:o})}exp(){if(this.isNaN)return this._makeExact(NaN);if(this.isZero)return this._makeExact(1);if(this.isNegativeInfinity)return this._makeExact(0);if(this.isPositiveInfinity)return this._makeExact(1/0);if(this.im!==0){let e=Math.exp(this.decimal);return this.clone({re:e*Math.cos(this.im),im:e*Math.sin(this.im)})}return this.clone(Math.exp(this.decimal))}floor(){return this.isNaN||this.im!==0?this._makeExact(NaN):Number.isInteger(this.decimal)?this:this._makeExact(Math.floor(this.decimal))}ceil(){return this.isNaN||this.im!==0?this._makeExact(NaN):Number.isInteger(this.decimal)?this:this._makeExact(Math.ceil(this.decimal))}round(){return this.isNaN||this.im!==0?this._makeExact(NaN):Number.isInteger(this.decimal)?this:this._makeExact(Math.round(this.decimal))}eq(e){return this.isNaN?!1:typeof e=="number"?this.im===0&&this.decimal-e===0:e.isNaN?!1:Number.isFinite(this.im)?this.decimal-e.re===0&&this.im-e.im===0:!Number.isFinite(e.im)}lt(e){return this.im,typeof e=="number"?this.decimal<e:this.decimal<e.re}lte(e){return this.im,typeof e=="number"?this.decimal<=e:this.decimal<=e.re}gt(e){return this.im,typeof e=="number"?this.decimal>e:this.decimal>e.re}gte(e){return this.im,typeof e=="number"?this.decimal>=e:this.decimal>=e.re}};function rc(n){return Math.abs(n)<=1e-14?0:n}var sr=class{engine;terms=[];constructor(e,t){this.engine=e;let i=0,r=0,o=[];for(let s of t){if(s.type.is("complex")&&s.isInfinity){this.terms=[{term:e.ComplexInfinity,coef:[]}];return}if(s.isNaN||s.symbol==="Undefined"){this.terms=[{term:e.NaN,coef:[]}];return}let[a,u]=s.toNumericValue();a.isPositiveInfinity?i+=1:a.isNegativeInfinity&&(r+=1),u.is(1)?a.isZero||o.push(a):this.add(a,u)}if(i>0&&r>0){this.terms=[{term:e.NaN,coef:[]}];return}if(i>0){this.terms=[{term:e.PositiveInfinity,coef:[]}];return}if(r>0){this.terms=[{term:e.NegativeInfinity,coef:[]}];return}o.length===1?this.add(o[0],e.One):o.length>0&&oc(e,o).forEach(s=>this.add(s,e.One))}add(e,t){if(t.is(0)||e.isZero)return;if(t.is(1)){let r=this.engine;this.terms.push({coef:[],term:r.number(e)});return}if(t.operator==="Add"){for(let r of t.ops){let[o,s]=r.toNumericValue();this.add(e.mul(o),s)}return}if(t.operator==="Negate"){this.add(e.neg(),t.op1);return}let i=this.find(t);if(i>=0){this.terms[i].coef.push(e);return}t.numericValue===null||t.is(1),this.terms.push({coef:[e],term:t})}find(e){return this.terms.findIndex(t=>t.term.isSame(e))}N(){let e=this.engine,t=this.terms;if(t.length===0)return e.Zero;let i=[],r=[];for(let{coef:s,term:a}of t)if(s.length===0)a.isNumberLiteral?typeof a.numericValue=="number"?r.push(e._numericValue(a.numericValue)):r.push(a.numericValue):i.push(a);else{let u=s.reduce((l,c)=>l.add(c)).N();if(u.isZero)continue;u.eq(1)?i.push(a.N()):u.eq(-1)?i.push(a.N().neg()):i.push(a.N().mul(e.box(u)))}let o=om(e,r);if(!o.isZero){if(i.length===0)return e.box(o);i.push(e.box(o))}return Ke(e,i)}asExpression(){let e=this.engine,t=this.terms;return t.length===0?e.Zero:Ke(e,t.map(({coef:i,term:r})=>{if(i.length===0)return r;let o=oc(e,i);if(o.length===0)return r;if(o.length>1)return _e(e,[Ke(e,o.map(a=>e.box(a))),r]);let s=o[0];return s.isNaN?e.NaN:s.isZero?e.Zero:s.eq(1)?r:s.eq(-1)?r.neg():r.is(1)?e.box(s):r.mul(e.box(s))}))}};function oc(n,e){let t=o=>n.bignum(o),i=o=>new K(o,r,t),r=n.precision>kn?o=>new Rt(o,t):o=>new Pt(o,i);return K.sum(e,r,t)}function om(n,e){let t=s=>n.bignum(s),i=s=>new K(s,r,t),r=n.precision>kn?s=>new Rt(s,t):s=>new Pt(s,i),o=K.sum(e,r,t);return o.length===0?i(0):o.length===1?o[0].N():o.reduce((s,a)=>s.add(a).N())}function Ke(n,e){if(e=Q(e,"Add"),e=e.filter(i=>i.numericValue===null||!i.is(0)),e.length===0)return n.Zero;if(e.length===1&&!e[0].isIndexedCollection)return e[0];let t=[];for(let i=0;i<e.length;i++){let r=e[i];if(r.isNumberLiteral){let o=r.numericValue;if(typeof o=="number"||E(o.type,"real")&&!o.isExact||E(o.type,"integer")){let s=e[i+1];if(s){let a=li(s)?.numericValue;if(a!==void 0){let u=typeof a=="number"?a:a?.re;if(u!==0){let l=typeof o=="number"?o:o.re;t.push(n.number(n._numericValue({re:l,im:u??0}))),i++;continue}}}}}t.push(r)}return t.length===1?t[0]:n._fn("Add",[...t].sort(Hi))}function sc(n){return n.length===0?"finite_integer":n.length===1?n[0].type:oe(...n.map(e=>e.type.type))}function H(...n){return n.length>0,n.every(e=>e.isValid)?new sr(n[0].engine,n).asExpression():n[0].engine._fn("Add",n)}function ac(...n){return n.length>0,n.every(e=>e.isValid)?(n=n.map(e=>e.isNumberLiteral?e.evaluate():e.N()),new sr(n[0].engine,n).N()):n[0].engine._fn("Add",n)}function Ln(n,e){if(n.operator==="Negate"&&e.operator==="Negate")return Ln(n.op1,e.op1);let t=n.engine;if(n.operator==="Negate")return Ln(n.op1,e).neg();if(e.operator==="Negate")return Ln(n,e.op1).neg();if(n.operator==="Divide"&&e.operator==="Divide"){let i=n.op2.mul(e.op2);return Ln(n.op1,e.op1).div(i)}return n.operator==="Divide"?Ln(n.op1,e).div(n.op2):e.operator==="Divide"?Ln(n,e.op1).div(e.op2):n.operator==="Add"?H(...n.ops.map(i=>Ln(i,e))):e.operator==="Add"?H(...e.ops.map(i=>Ln(n,i))):new Oe(t,[n,e]).asExpression()}function ur(n,e){if(e.length===0)return null;if(e.length===1)return e[0];if(e.length===2)return Ln(e[0],e[1]);let t=ur(n,e.slice(1));return t===null?null:Ln(e[0],t)}var ar=[[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1],[1,5,10,10,5,1],[1,6,15,20,15,6,1],[1,7,21,35,35,21,7,1],[1,8,28,56,70,56,28,8,1]];function ra(n,e){for(;n>=ar.length;){let t=ar.length,i=[1],r=ar[t-1];for(let o=1;o<t;o++)i[o]=r[o-1]+r[o];i[t]=1,ar.push(i)}return ar[n][e]}function sm(n){let e=n.reduce((i,r)=>i+r,0),t=1;for(let i=0;i<n.length;i+=1)t*=ra(e,n[i]),e-=n[i];return t}function*uc(n,e){if(n===1){yield[e];return}for(let t=0;t<=e;t+=1)for(let i of uc(n-1,e-t))yield[t,...i]}function ia(n,e){let t=n.engine;if(e<0){let s=ia(n,-e);return s?s.inv():null}if(e===0)return t.One;if(e===1)return Ze(n);if(n.operator==="Negate"&&Number.isInteger(e)){let s=e%2===0?1:-1,a=ia(n.op1,e);return a===null?null:s>0?a:a.neg()}if(n.operator,n.operator!=="Add")return null;let i=n.ops,r=uc(i.length,e),o=[];for(let s of r){let a=[t.number(sm(s))];for(let u=0;u<s.length;u+=1)s[u]!==0&&(s[u]===1?a.push(i[u]):a.push(i[u].pow(s[u])));o.push(ae(...a))}return H(...o)}function am(n,e,t){let i=null;if(e==="Divide"){let r=Ze(t[0]);return r===null?null:r.operator==="Add"?H(...r.ops.map(o=>o.div(t[1]))):n._fn("Divide",[r,t[1]])}if(e==="Multiply")return ur(n,t);if(e==="Negate")return Ze(t[0])?.neg()??null;if(e==="Add")return H(...t.map(r=>Ze(r)??r));if(e==="Power"){let r=ee(t[1]);i=r!==null?ia(t[0],r):null}return i}function Ze(n){return n=n?.canonical,!n||typeof n.operator!="string"?null:Je(n.operator)?n.engine._fn(n.operator,n.ops.map(e=>Ze(e)??e)):am(n.engine,n.operator,n.ops??[])}function lr(n){if(!n.operator||!n.ops)return null;let e=n.ops.map(i=>lr(i)??i),t=n.engine.function(n.operator,e);return Ze(t)??t}function lc(n){let e=-1;for(;n.operator==="Negate";)n=n.op1,e=-e;return e===1?n:n.isNumberLiteral?n.neg():n.engine._fn("Negate",[n])}function Lt(n){let e=-1;for(;n.operator==="Negate";)n=n.op1,e=-e;if(e===1)return n;if(n.numericValue!==null)return n.neg();let t=n.engine;return n.operator==="Subtract"?n.op2.sub(n.op1):n.operator==="Add"?H(...n.ops.map(i=>Lt(i))):n.operator==="Multiply"?oa(t,n.ops):n.operator==="Divide"?Lt(n.op1).div(n.op2):t._fn("Negate",[n])}function oa(n,e){if(e.length===0)return n.NegativeOne;if(e.length===1)return Lt(e[0]);let t=[],i=!1;for(let r of e)!i&&r.operator==="Negate"?(i=!0,r.op1.is(1)||t.push(r.op1)):t.push(r);if(!i){t=[];for(let r of e)i||r.numericValue===null&&!r.isInteger?t.push(r):(i=!0,r.is(-1)||t.push(r.neg()))}if(i)return n._fn("Multiply",t.sort(xe));if(!i){t=[];for(let r of e)i||r.numericValue===null||!r.isNumber?t.push(r):(i=!0,r.is(-1)||t.push(r.neg()))}return i?n._fn("Multiply",t.sort(xe)):n._fn("Negate",[n._fn("Multiply",[...e].sort(xe))])}function un(n,e){let t=n.engine;if(!n.isValid||!e.isValid)return t._fn("Divide",[n,e]);if(n.isNaN||e.isNaN)return t.NaN;if(e.is(0))return n.is(0)?t.NaN:t.ComplexInfinity;if(n.is(0))return t.Zero;if(e.is(0)===!1&&(n.symbol!==null&&n.symbol===e.symbol&&n.isConstant||n.isSame(e)))return t.One;if(n.operator==="Negate"&&e.operator==="Negate"&&(n=n.op1,e=e.op1),n.operator==="Divide"&&e.operator==="Divide")return un(_e(t,[n.op1,e.op2]),_e(t,[n.op2,e.op1]));if(n.operator==="Divide")return un(n.op1,_e(t,[n.op2,e]));if(e.operator==="Divide")return un(_e(t,[n,e.op2]),e.op1);if(e.is(1))return n;if(e.is(-1))return n.neg();if(n.is(1))return e.inv();if(e.isInfinity)return n.isInfinity?t.NaN:t.Zero;if(n.operator==="Sqrt"&&e.operator==="Sqrt"){let c=ee(n.op1),f=ee(e.op1);if(c!==null&&f!==null)return t.number(t._numericValue({radical:c*f,rational:[1,f]}))}else if(n.operator==="Sqrt"){let c=ee(n.op1),f=ee(e);if(c!==null&&f!==null)return t.number(t._numericValue({radical:c,rational:[1,f]}))}else if(e.operator==="Sqrt"){let c=ee(n),f=ee(e.op1);if(c!==null&&f!==null)return t.number(t._numericValue({radical:f,rational:[c,f]}))}let i=n.numericValue,r=e.numericValue;if(i!==null&&r!==null){if(typeof i!="number"&&i.im!==0||typeof r!="number"&&r.im!==0)return t._fn("Divide",[n,e]);if(typeof i=="number"&&Number.isInteger(i)&&typeof r=="number"&&Number.isInteger(r))return t.number([i,r]);if(typeof i=="number"&&Number.isInteger(i)){if(i===0)return t.Zero;if(typeof r!="number"&&E(r.type,"integer")){let c=r.bignumRe;if(c!==void 0){if(c.isInteger())return t.number([ie(i),ie(c)])}else{let f=r.re;if(Number.isInteger(f))return t.number([i,f])}}}return t._fn("Divide",[n,e])}let[o,s]=n.toNumericValue();if(o.isZero)return t.Zero;let[a,u]=e.toNumericValue();if(a.isZero)return t.NaN;let l=o.div(a);return l.isOne?u.is(1)?s:t._fn("Divide",[s,u]):l.isNegativeOne?u.is(1)?s.neg():t._fn("Divide",[s.neg(),u]):l.isExact?s.is(1)&&u.is(1)?t.number(l):u.is(1)?_e(t,[t.number(l),s]):t._fn("Divide",[_e(t,[t.number(l.numerator),s]),_e(t,[t.number(l.denominator),u])]):t._fn("Divide",[n,e])}function hi(n,e){let t=n.engine;if(n=n.canonical,typeof e!="number"&&(e=e.canonical),n.isNaN)return t.NaN;if(typeof e=="number"){if(isNaN(e))return t.NaN;if(n.is(0))return e===0||!isFinite(e)?t.NaN:n;if(e===1)return n;if(e===-1)return n.neg();if(e===0)return t.NaN;if(n.isNumberLiteral){let r=n.numericValue;if(typeof r=="number"){if(Number.isInteger(r)&&Number.isInteger(e))return t.number(t._numericValue({rational:[r,e]}))}else if(r.isExact&&Number.isInteger(e))return t.number(r.asExact.div(e))}}else{if(e.isNaN)return t.NaN;if(n.is(0))return e.is(0)||e.isFinite===!1?t.NaN:t.Zero;if(e.is(1))return n;if(e.is(-1))return n.neg();if(e.is(0))return t.NaN;if(n.isNumberLiteral&&e.isNumberLiteral){let r=n.numericValue,o=e.numericValue;if(typeof r=="number"&&typeof o=="number"&&Number.isInteger(r)&&Number.isInteger(o))return t.number(t._numericValue({rational:[r,o]}));if(typeof r=="number"&&Number.isInteger(r)&&typeof o!="number"){if(o.isExact)return t.number(t._numericValue(r).div(o.asExact))}else if(typeof o=="number"&&Number.isInteger(o)&&typeof r!="number"){if(r.isExact)return t.number(r.asExact.div(o))}else if(typeof r!="number"&&typeof o!="number"&&r.isExact&&o.isExact)return t.number(r.asExact.div(o.asExact))}}let i=new Oe(t,[n]);return i.div(typeof e=="number"?t._numericValue(e):e),i.asRationalExpression()}function _e(n,e){let t=1,i=[];for(let o of e){let[s,a]=um(o);t*=a,i.push(s)}i=i.filter(o=>!o.is(1));let r=[];for(let o=0;o<i.length;o++){let s=i[o];if(o+1>=i.length){r.push(s);continue}let a=i[o+1];if(s.isNumberLiteral){if(a.operator==="Sqrt"&&a.op1.isNumberLiteral&&a.op1.type.matches("finite_integer")){let u=a.op1.numericValue;if(typeof u!="number"&&(u=u.re),u>=$){r.push(s);continue}if(s.type.matches("finite_rational")){let l=s.numericValue,[c,f]=typeof l=="number"?[l,1]:[l.numerator.re,l.denominator.re];r.push(n.number(n._numericValue({rational:[c,f],radical:u}))),o++;continue}}else if(a.isNumberLiteral&&a.numericValue instanceof j){let u=a.numericValue;if(u instanceof K&&Ae(u.rational)&&u.radical!==1){let l=rn(s);if(l){r.push(n.number(n._numericValue({rational:l,radical:u.radical}))),o++;continue}}else if(u.im===1){let l=s.numericValue;if(typeof l=="number"){r.push(n.number(n.complex(0,l))),o++;continue}else if(l.im===0){if(Number.isInteger(l.re)){r.push(n.number(n.complex(0,l.re))),o++;continue}else if(!l.isExact){r.push(n.number(n.complex(0,l.re))),o++;continue}}}}}r.push(s)}return t<0?r.length===0?n.number(-1):r.length===1?r[0].neg():oa(n,r):r.length===0?n.number(1):r.length===1?r[0]:n._fn("Multiply",[...r].sort(xe))}function um(n){let e=1;for(;n.operator==="Negate";)e=-e,n=n.op1;return n.isNumberLiteral&&n.isNegative&&(e=-e,n=n.neg()),[n,e]}function ae(...n){if(n.length>0,n.length===1)return n[0];let e=n[0].engine,t=ur(e,n);if(t){if(t.operator!=="Multiply")return t;n=t.ops}return new Oe(e,n).asRationalExpression()}function cc(...n){n.length>0;let e=n[0].engine;n=n.map(i=>i.N());let t=ur(e,n);if(t){if(t.operator!=="Multiply")return t;n=t.ops}return new Oe(e,n).asExpression({numericApproximation:!0})}var Oe=class n{constructor(e,t,i){this.options=i;if(i=i?{...i}:{},"canonical"in i||(i.canonical=!0),this._isCanonical=i.canonical,this.engine=e,this.coefficient=e._numericValue(1),t)for(let r of t)this.mul(r)}engine;coefficient;terms=[];_isCanonical=!0;static from(e){return new n(e.engine,[e])}mul(e,t){if(e.isCanonical||e.isStructural,this.coefficient.isNaN)return;if(e.isNaN){this.coefficient=this.engine._numericValue(NaN);return}if(e.operator==="Multiply"){for(let o of e.ops)this.mul(o,t);return}if(e.operator==="Negate"){this.mul(e.op1,t),this.coefficient=this.coefficient.neg();return}if(this._isCanonical){if(e.symbol==="Nothing")return;t??=[1,1];let o=e.numericValue;if(o!==null){if(e.is(1))return;if(e.is(0)){this.coefficient=this.engine._numericValue(Dn(t)?NaN:0);return}if(e.is(-1)){Ae(t)?this.coefficient=this.coefficient.neg():this.coefficient=this.coefficient.mul(this.engine._numericValue(-1).pow(this.engine._numericValue(t)));return}if(e.isInfinity){Ae(t)?this.coefficient=this.engine._numericValue(e.isNegative?-1/0:1/0):this.terms.push({term:e,exponent:t});return}Ae(t)?this.coefficient=this.coefficient.mul(o):this.coefficient=this.coefficient.mul(this.engine._numericValue(o).pow(this.engine._numericValue(t)));return}let s=oo(e);if(s!==null){this.coefficient=this.coefficient.mul(this.engine._numericValue({radical:s[0]*s[1],rational:[1,Number(s[1])]}).pow(this.engine._numericValue(t)));return}if(!e.symbol){let a;[a,e]=e.toNumericValue(),t&&!Ae(t)&&(a=a.pow(this.engine._numericValue(t))),this.coefficient=this.coefficient.mul(a)}}if(e.is(1)&&(!t||Ae(t))||e.is(0)===!1&&t&&Dn(t))return;if(e.is(0)){t&&Dn(t)?this.coefficient=this.engine._numericValue(NaN):this.coefficient=this.engine._numericValue(0);return}let i=t??[1,1];if(e.operator==="Power"){let o=rn(e.op2);if(o){this.mul(e.op1,Mn(i,o));return}}if(e.operator==="Sqrt"){this.mul(e.op1,Mn(i,[1,2]));return}if(e.operator==="Root"){let o=rn(e.op2);if(o){this.mul(e.op1,Mn(i,xl(o)));return}}if(e.operator==="Divide"){this.mul(e.op1,i),this.mul(e.op2,It(i));return}let r=!1;for(let o of this.terms)if(o.term.isSame(e)){o.exponent=Bt(o.exponent,i),r=!0;break}r||this.terms.push({term:e,exponent:i})}div(e){e instanceof j?this.coefficient=this.coefficient.div(e):this.mul(e,[-1,1])}groupedByDegrees(e){e??={},"mode"in e||(e.mode="expression");let t=e.mode;if(t==="numeric"&&(this.coefficient.isNegativeInfinity||this.coefficient.isPositiveInfinity))return[];if(this.coefficient.isZero)return[];let i=this.engine;if(this.terms.length===0)if(t==="numeric"){let o=this.coefficient.N();return[{exponent:[1,1],terms:[i.number(o)]}]}else return[{exponent:[1,1],terms:[i.number(this.coefficient)]}];let r=[];if(!this.coefficient.isOne)if(t==="rational"&&this.coefficient.type==="finite_rational"){let o=this.coefficient.numerator;o.isOne||r.push({exponent:[1,1],terms:[i.number(o)]});let s=this.coefficient.denominator;s.isOne||r.push({exponent:[-1,1],terms:[i.number(s)]})}else if(t==="numeric"){let o=this.coefficient.N();r.push({exponent:[1,1],terms:[i.number(o)]})}else r.push({exponent:[1,1],terms:[i.number(this.coefficient)]});for(let o of this.terms){let s=ui(o.exponent);if(s[0]===0)continue;let a=!1;for(let u of r)if(s[0]===u.exponent[0]&&s[1]===u.exponent[1]){u.terms.push(o.term),a=!0;break}a||r.push({exponent:s,terms:[o.term]})}return r}asExpression(e={numericApproximation:!1}){let t=this.engine,i=this.coefficient;if(i.isNaN)return t.NaN;if(i.isPositiveInfinity)return t.PositiveInfinity;if(i.isNegativeInfinity)return t.NegativeInfinity;if(i.isZero)return t.Zero;let r=i.isNegativeOne;r&&(this.coefficient=t._numericValue(1));let o=this.groupedByDegrees({mode:e.numericApproximation?"numeric":"expression"});if(o===null)return t.NaN;if(r){let s=go(t,o).neg();return this.coefficient=t._numericValue(-1),s}return go(t,o)}asNumeratorDenominator(){let e=this.engine,t=this.coefficient;if(t.isZero)return[e.Zero,e.One];if(t.isPositiveInfinity||t.isNegativeInfinity)return this.terms.length===0?[t.isPositiveInfinity?e.PositiveInfinity:e.NegativeInfinity,e.One]:[e.NaN,e.NaN];let i=t.isNegativeOne;i&&(this.coefficient=e._numericValue(1));let r=this.groupedByDegrees({mode:"rational"});if(this.coefficient=t,r===null)return[e.NaN,e.NaN];let o=r.filter(u=>u.exponent[0]>=0),s=r.filter(u=>u.exponent[0]<0).map(u=>({exponent:It(u.exponent),terms:u.terms})),a=go(e,o);return[i?a.neg():a,go(e,s)]}asRationalExpression(){let[e,t]=this.asNumeratorDenominator();return un(e,t)}};function fc(n,e){let t=n.engine,i=n.coefficient.gcd(e.coefficient);if(i.isOne)return[t._numericValue(1),t.One];let r=[];for(let o of n.terms){let s=e.terms.find(u=>o.term.isSame(u.term));if(!s)continue;let a=ro(o.exponent,s.exponent);if(Ae(a))r.push(o.term);else{let[u,l]=bl(a);l===1?r.push(o.term.pow(u)):u===1?r.push(o.term.root(l)):r.push(o.term.pow(u).root(l))}}return[i,r.length===0?t.One:ae(...r)]}function go(n,e){let t=e.map(({terms:i,exponent:r})=>{let o=Q(i,"Multiply"),s=o.length<=1?o[0]:n._fn("Multiply",[...o].sort(xe));return Ae(r)?s:s.pow(n.number(r))});return t=Q(t,"Multiply"),t.length===0?n.One:t.length===1?t[0]:n._fn("Multiply",t.sort(xe))}function dc(n,e,t,i,r){if(e.numericValue!==null&&e.isNegative){let o=e.numericValue;if(typeof o=="number")return O(n,"Subtract",[t,n.number(-o)],i,r);if(e.type.matches("rational"))return O(n,"Subtract",[t,n.number(o.neg())],i,r)}return e.operator==="Negate"&&t.operator!=="Negate"?O(n,"Subtract",[t,e.op1],i,r):null}function lm(n,e,t,i,r){let o=i.exclude;if(e==="Add"&&t.length===2&&!o.includes("Subtract")){let s=dc(n,t[0],t[1],i,r)??dc(n,t[1],t[0],i,r);if(s)return s}if(e==="Divide"&&t.length===2&&o.includes("Divide"))return O(n,"Multiply",[t[0],n._fn("Power",[t[1],n.NegativeOne])],i,r);if(e==="Multiply"&&!o.includes("Negate")&&t[0].im===0&&t[0].re===-1)return t.length===2?O(n,"Negate",[t[1]],i):O(n,"Negate",[n._fn("Multiply",[...t.slice(1)].sort(xe))],i,r);if(e==="Multiply"&&!o.includes("Divide")){let s=new Oe(n,t,{canonical:!1}).asRationalExpression();if(s.operator==="Divide")return O(n,s.operator,s.ops,i,r)}if(e==="Power"){if(!o.includes("Exp")&&t[0]?.symbol==="ExponentialE")return O(n,"Exp",[t[1]],i,r);if(t[1]?.numericValue!==null){let s=ee(t[1]);if(s===2&&!o.includes("Square"))return O(n,"Square",[t[0]],i,r);if(s!==null&&s<0&&!o.includes("Divide"))return O(n,"Divide",[n.One,s===-1?t[0]:t[0].pow(-s)],i,r);let a=t[1].re;if(!o.includes("Sqrt")&&a===.5)return O(n,"Sqrt",[t[0]],i,r);if(!o.includes("Sqrt")&&a===-.5)return O(n,"Divide",[n.One,n._fn("Sqrt",[t[0]])],i,r);if(Yn(a)){let u=Cs(a),l=As(a);if(u===1){if(!o.includes("Sqrt")&&l===2)return O(n,"Sqrt",[t[0]],i,r);if(!o.includes("Root"))return O(n,"Root",[t[0],n.number(a[1])],i,r)}if(u===-1){if(!o.includes("Sqrt")&&l===2)return O(n,"Divide",[n.One,n._fn("Sqrt",[t[0]])],i,r);if(!o.includes("Root"))return O(n,"Divide",[n.One,n._fn("Root",[t[0],n.number(a[1])])],i,r)}}}}if(e==="Add"&&t.length===2&&!o.includes("Subtract")){if(t[1]?.numericValue!==null){let s=ee(t[1]);if(s!==null&&s<0)return O(n,"Subtract",[t[0],n.number(-s)],i,r)}if(t[1]?.operator==="Negate")return O(n,"Subtract",[t[0],t[1].op1],i,r)}if(e==="Tuple"){if(t.length===1&&!o.includes("Single"))return O(n,"Single",t,i,r);if(t.length===2&&!o.includes("Pair"))return O(n,"Pair",t,i,r);if(t.length===3&&!o.includes("Triple"))return O(n,"Triple",t,i,r)}if(e==="Function"&&t.length>0&&t[0].operator==="Block"){let s=t[0];if(s.nops===1){let a=t.slice(1);return a.every(u=>/_\d?/.test(u.symbol))?s.op1.ops?.every((u,l)=>u.symbol===a[l]?.symbol)?O(n,"Function",[n.symbol(s.op1.operator,{canonical:!1})],i,r):O(n,"Function",[s.op1],i,r):O(n,"Function",[s.op1,...t.slice(1)],i,r)}}return O(n,e,t,i,r)}function O(n,e,t,i,r){let o=i.exclude;if(e==="Negate"&&t.length===1){let l=t[0]?.numericValue;if(l!==null){if(typeof l=="number")return ln(n,-l,i);if(l instanceof M||l instanceof q)return ln(n,l.neg(),i);if(Yn(l))return ln(n,It(l),i)}}if(typeof e=="string"&&o.includes(e)){if(e==="Rational"&&t.length===2)return O(n,"Divide",t,i,r);if(e==="Complex"&&t.length===2)return O(n,"Add",[t[0],n._fn("Multiply",[t[1]??n.symbol("Undefined"),n.I])],i,r);if(e==="Sqrt"&&t.length===1)return O(n,"Power",[t[0],o.includes("Half")?n.number([1,2]):n.Half],i,r);if(e==="Root"&&t.length===2&&t[1]?.numericValue!==null){let l=ee(t[1]);if(l===2)return O(n,"Sqrt",[t[0]],i);if(l!==null)return l<0?O(n,"Divide",[n.One,n._fn("Power",[t[0]??n.symbol("Undefined"),n.number([1,-l])])],i,r):O(n,"Power",[t[0],n.number([1,-l])],i,r)}if(e==="Square"&&t.length===1)return O(n,"Power",[t[0],n.number(2)],i,r);if(e==="Exp"&&t.length===1)return O(n,"Power",[n.E,t[0]],i,r);if(e==="Pair"||e=="Single"||e==="Triple")return O(n,"Tuple",t,i,r);if(e==="Subtract"&&t.length===2)return O(n,"Add",[t[0],n._fn("Negate",[t[1]??n.symbol("Undefined")])],i,r);if(e==="Subtract"&&t.length===1)return O(n,"Negate",t,i,r)}let a=[e,...t.map(l=>l?sa(n,l,i):"Undefined")],u={...r??{}};return i.metadata.includes("latex")?u.latex=u.latex??n.box({fn:a}).latex:u.latex="",i.metadata.includes("wikidata")||(u.wikidata=""),!u.latex&&!u.wikidata&&i.shorthands.includes("function")?a:u.latex&&u.wikidata?{fn:a,latex:u.latex,wikidata:u.wikidata}:u.latex?{fn:a,latex:u.latex}:u.wikidata?{fn:a,wikidata:u.wikidata}:{fn:a}}function cm(n,e){return n=n,e.shorthands.includes("string")?tn(n)||Ge(n)?`'${n}'`:n:{str:n}}function mt(n,e,t,i){if(e==="Half"&&t.exclude.includes("Half"))return ln(n,[1,2],t,i);if(i={...i},t.metadata.includes("latex")?(i.latex=i.latex??n.box({sym:e}).latex,i.latex!==void 0&&(i.latex=i.latex)):i.latex=void 0,t.metadata.includes("wikidata")){if(i.wikidata===void 0){let r=n.lookupDefinition(e);if(r){let o=Z(r)?r.operator.wikidata:r.value.wikidata;o!==void 0&&(i.wikidata=o)}}}else i.wikidata=void 0;return e=e,i.latex===void 0&&i.wikidata===void 0&&t.shorthands.includes("symbol")?Ge(e)?e:`\`${e}\``:i.latex!==void 0&&i.wikidata!==void 0?{sym:e,latex:i.latex,wikidata:i.wikidata}:i.latex!==void 0?{sym:e,latex:i.latex}:i.wikidata!==void 0?{sym:e,wikidata:i.wikidata}:{sym:e}}function pc(n,e){if(!e.repeatingDecimal)return n;let[t,i,r,o]=n.match(/^(.*)\.([0-9]+)([e|E][-+]?[0-9]+)?$/)??[];if(!r)return n.toLowerCase();let s=r[r.length-1];r=r.slice(0,-1);let a=16,u="";for(let l=0;l<r.length-a;l++){u=r.substring(0,l);for(let c=0;c<=a;c++){let f=r.substring(l,l+c+1),d=Math.floor((r.length-u.length)/f.length);if(d<3)break;if((u+f.repeat(d+1)).startsWith(r))return f==="0"?s==="0"?i+"."+u+(o??""):n:i+"."+u+"("+f+")"+(o??"")}}for(r+=s;r.endsWith("0");)r=r.slice(0,-1);return typeof e.fractionalDigits=="number"&&(r=r.slice(0,e.fractionalDigits)),o?`${i}.${r}${o.toLowerCase()}`:`${i}.${r}`}function ln(n,e,t,i){i={...i},t.metadata.includes("latex")||(i.latex=void 0);let r=i.latex===void 0&&i.wikidata===void 0&&!t.metadata.includes("latex")&&t.shorthands.includes("number"),o=t.exclude;if(e instanceof j){if(e.isNaN)return mt(n,"NaN",t,i);if(e.isPositiveInfinity)return mt(n,"PositiveInfinity",t,i);if(e.isNegativeInfinity)return mt(n,"NegativeInfinity",t,i);if(e.isComplexInfinity)return mt(n,"ComplexInfinity",t,i);if(r){if(e.isZero)return 0;if(e.isOne)return 1;if(e.isNegativeOne)return-1}if(e instanceof K){e.im;let u=l=>Tt(l)?ln(n,e.rational[0],t):["Rational",ln(n,e.rational[0],t),ln(n,e.rational[1],t)];return e.radical===1?u(e.rational):Ae(e.rational)?["Sqrt",e.radical]:ji(e.rational)?["Negate",["Sqrt",e.radical]]:e.rational[0]==1?["Divide",["Sqrt",e.radical],ln(n,e.rational[1],t)]:e.rational[0]==-1?["Negate",["Divide",["Sqrt",e.radical],ln(n,e.rational[1],t)]]:["Multiply",u(e.rational),["Sqrt",e.radical]]}if(e.im===0){let u=e.bignumRe??e.re;return ln(n,u,t,i)}return Number.isFinite(e.im)?O(n,"Complex",[n.number(e.bignumRe??e.re),n.number(e.im)],t,{...i,wikidata:"Q11567"}):mt(n,"ComplexInfinity",t,i)}let s="";if(e instanceof M){let u;if(e.isNaN())u="NaN";else if(!e.isFinite())u=e.isPositive()?"PositiveInfinity":"NegativeInfinity";else{if(r&&Mt(e))return e.toNumber();if(e.isInteger()&&e.e<e.precision()+4)s=e.toFixed(0);else{let l=t.fractionalDigits,c;if(l==="max"?c=e.toString():l==="auto"?c=e.toPrecision(n.precision):c=e.toDecimalPlaces(l).toString(),s=pc(c,t),r){let f=e.toNumber();if(f.toString()===s)return f}}}return t.metadata.includes("latex")&&(i.latex=i.latex??n.box(u??{num:s}).latex),u?i.latex!==void 0?{sym:u,latex:i.latex}:r?u:{sym:u}:i.latex!==void 0?{num:s,latex:i.latex}:r?s:{num:s}}if(e instanceof q)return e.isInfinite()?mt(n,"ComplexInfinity",t,i):e.isNaN()?(s="NaN",t.metadata.includes("latex")&&(i.latex=i.latex??n.box({num:s}).latex),i.latex!==void 0?{num:s,latex:i.latex}:{num:s}):O(n,"Complex",[n.number(e.re),n.number(e.im)],t,{...i,wikidata:"Q11567"});if(Yn(e)){let u=!o.includes("Rational");return r&&t.shorthands.includes("function")&&se(e)?e[0]===1&&e[1]===2&&!o.includes("Half")?mt(n,"Half",t,i):[u?"Rational":"Divide",e[0],e[1]]:O(n,u?"Rational":"Divide",[n.number(e[0]),n.number(e[1])],t,{...i})}if(typeof e=="bigint")if(e>=Number.MIN_SAFE_INTEGER&&e<=Number.MAX_SAFE_INTEGER)e=Number(e);else return t.metadata.includes("latex")&&(i.latex=i.latex??n.box({num:e.toString()}).latex),i.latex!==void 0?{num:e.toString(),latex:i.latex}:r?Le(e,t.fractionalDigits):{num:Be(e,t.fractionalDigits)};let a;return Number.isNaN(e)?a="NaN":Number.isFinite(e)?s=pc(e.toString(),t):a=e>0?"PositiveInfinity":"NegativeInfinity",t.metadata.includes("latex")&&(i.latex=i.latex??n.box({num:s}).latex),a?i.latex!==void 0?{sym:a,latex:i.latex}:r?a:{sym:a}:i.latex!==void 0?{num:s,latex:i.latex}:r&&s===e.toString()?e:{num:s}}function sa(n,e,t){let i=e.wikidata;return e.numericValue!==null?ln(n,e.numericValue,t,{latex:e.verbatimLatex}):e.rank>0?e.json:e.string!==null?cm(e.string,t):e.symbol!==null?mt(n,e.symbol,t,{latex:e.verbatimLatex,wikidata:i}):e.ops?e.isValid&&(e.isCanonical||e.isStructural)&&t.prettify?lm(n,e.operator,e.structural.ops,t,{latex:e.verbatimLatex,wikidata:i}):O(n,e.operator,e.structural.ops,t,{latex:e.verbatimLatex,wikidata:i}):e.json}var W=class{engine;verbatimLatex;constructor(e,t){this.engine=e,t?.latex!==void 0&&(this.verbatimLatex=t.latex)}valueOf(){try{return this.symbol==="True"?!0:this.symbol==="False"?!1:this.symbol==="NaN"?NaN:this.symbol==="PositiveInfinity"?1/0:this.symbol==="NegativeInfinity"?-1/0:this.symbol==="ComplexInfinity"?"~oo":this.isInfinity?this.isPositive?1/0:this.isNegative?-1/0:"~oo":typeof this.string=="string"?this.string:typeof this.symbol=="string"?this.value?.valueOf()??this.symbol:or(this)}catch(e){if(e instanceof Ye){let t=e.message??"<canceled>";return e.cause?`${t}: ${e.cause}`:`${t}`}return e.message?e.message:"<error>"}}[Symbol.toPrimitive](e){if(e==="number"){let t=this.valueOf();return typeof t=="number"?t:null}return this.toString()}toString(){try{if(this.isLazyCollection){let e=this.evaluate({materialization:!0});if(!e.isLazyCollection)return or(e)}return or(this)}catch(e){if(e instanceof Ye){let t=e.message??"<canceled>";return e.cause?`${t}: ${e.cause}`:`${t}`}return e.message?e.message:"<error>"}}toLatex(e){if(this.isLazyCollection){let r=this.evaluate({materialization:e?.materialization??!0});if(!r.isLazyCollection)return r.toLatex(e)}let t=this.toMathJson({prettify:e?.prettify??!0}),i={imaginaryUnit:"\\imaginaryI",positiveInfinity:"\\infty",negativeInfinity:"-\\infty",notANumber:"\\operatorname{NaN}",decimalSeparator:this.engine.decimalSeparator,digitGroupSeparator:"\\,",exponentProduct:"\\cdot",beginExponentMarker:"10^{",endExponentMarker:"}",digitGroup:3,truncationMarker:"\\ldots",repeatingDecimal:"vinculum",fractionalDigits:"max",notation:"auto",avoidExponentsInRange:[-7,20],prettify:!0,materialization:!1,invisibleMultiply:"",invisiblePlus:"",multiply:"\\times",missingSymbol:"\\blacksquare",applyFunctionStyle:Cu,groupStyle:Au,rootStyle:Du,fractionStyle:Mu,logicStyle:Ru,powerStyle:Pu,numericSetStyle:Lu};return e?.fractionalDigits==="auto"?i.fractionalDigits=-this.engine.precision:i.fractionalDigits=e?.fractionalDigits??"max",typeof i.fractionalDigits=="number"&&i.fractionalDigits>this.engine.precision&&(i.fractionalDigits=this.engine.precision),i={...i,...e??{},fractionalDigits:i.fractionalDigits},!i.prettify&&this.verbatimLatex?this.verbatimLatex:Xl(t,this.engine._indexedLatexDictionary,i)}get latex(){return this.toLatex()}toJSON(){return this.json}toMathJson(e){let t={exclude:[],shorthands:["function","symbol","string","number"],metadata:[],fractionalDigits:"max",repeatingDecimal:!0,prettify:!0};e&&((typeof e.shorthands=="string"&&e.shorthands==="all"||e.shorthands?.includes("all"))&&(t.shorthands=["function","symbol","string","number"]),Array.isArray(e.shorthands)&&(t.shorthands=e.shorthands),(typeof e.metadata=="string"&&e.metadata==="all"||e.metadata?.includes("all"))&&(t.metadata=["latex","wikidata"]),e.fractionalDigits==="auto"&&(t.fractionalDigits=-this.engine.precision),typeof e.fractionalDigits=="number"&&(t.fractionalDigits=e.fractionalDigits));let i={...t,...e,fractionalDigits:t.fractionalDigits,shorthands:t.shorthands,metadata:t.metadata};return sa(this.engine,this,i)}print(){let e=console.info;e?.(this.toString())}get isStructural(){return!0}get canonical(){return this}get structural(){return this}get isValid(){return!0}get isPure(){return!1}get isConstant(){return!0}get isNumberLiteral(){return!1}get numericValue(){return null}toNumericValue(){return[this.engine._numericValue(1),this]}get isEven(){}get isOdd(){}get re(){return NaN}get im(){return NaN}get bignumRe(){}get bignumIm(){}get sgn(){}get isPositive(){}get isNonNegative(){}get isNegative(){}get isNonPositive(){}neg(){return this.engine.NaN}inv(){return this.engine.NaN}abs(){return this.engine.NaN}add(e){return this.engine.NaN}sub(e){return this.add(e.neg())}mul(e){return this.engine.NaN}div(e){return this.engine.NaN}pow(e){return this.engine.NaN}root(e){return this.engine.NaN}sqrt(){return this.engine.NaN}ln(e){return this.engine.NaN}get numerator(){return this}get denominator(){return this.engine.One}get numeratorDenominator(){return[this,this.engine.One]}is(e){return typeof e=="number"||typeof e=="bigint"||e==null?!1:typeof e=="boolean"?e===!0?this.value?.symbol==="True":e===!1?this.value?.symbol==="False":!1:typeof e=="string"?this.value?.string===e:oi(this,this.engine.box(e))}isSame(e){return oi(this,e)}isEqual(e){return no(this,e)}isLess(e){let t=si(this,e);if(t!==void 0)return t==="<"}isLessEqual(e){let t=si(this,e);if(t!==void 0)return t==="<="||t==="<"||t==="="}isGreater(e){let t=si(this,e);if(t!==void 0)return t===">"}isGreaterEqual(e){let t=si(this,e);if(t!==void 0)return t===">="||t===">"||t==="="}get symbol(){return null}get tensor(){return null}get string(){return null}getSubexpressions(e){return mc(this,e)}get subexpressions(){return this.getSubexpressions("")}get symbols(){let e=new Set;return gc(this,e),Array.from(e).sort()}get unknowns(){let e=new Set;return hc(this,e),Array.from(e).sort()}get errors(){return this.getSubexpressions("Error")}get isFunctionExpression(){return!1}get ops(){return null}get isScoped(){return!1}get localScope(){}get nops(){return 0}get op1(){return this.engine.Nothing}get op2(){return this.engine.Nothing}get op3(){return this.engine.Nothing}get isNaN(){}get isInfinity(){}get isFinite(){}get shape(){return[]}get rank(){return 0}subs(e,t){return t?.canonical===!0?this.canonical:this}map(e,t){if(!this.ops)return e(this);let i=t?.canonical??this.isCanonical,r=t?.recursive??!0,o=this.ops.map(s=>r?s.map(e,t):e(s));return e(this.engine.function(this.operator,o,{canonical:i}))}solve(e){return null}replace(e){return null}has(e){return!1}get description(){if(this.baseDefinition&&this.baseDefinition.description)return typeof this.baseDefinition.description=="string"?[this.baseDefinition.description]:this.baseDefinition.description}get url(){return this.baseDefinition?.url??void 0}get wikidata(){return this.baseDefinition?.wikidata??void 0}get complexity(){}get baseDefinition(){}get valueDefinition(){}get operatorDefinition(){}infer(e,t){return!1}bind(){}reset(){}get value(){}set value(e){throw new Error(`Can't change the value of \\(${this.toString()}\\)`)}get type(){return S.unknown}set type(e){throw new Error(`Can't change the type of \\(${this.toString()}\\)`)}get isNumber(){}get isInteger(){}get isRational(){}get isReal(){}simplify(e){return this}expand(){return Ze(this)??this}evaluate(e){return this.simplify()}evaluateAsync(e){return Promise.resolve(this.evaluate())}N(){return this.evaluate({numericApproximation:!0})}compile(e){try{if(e?.to&&e.to!=="javascript")throw new Error(`Unexpected compilation target "${e.to}"`);return e??={},Ul(this,e.functions,e.vars,e.imports,e.preamble)}catch(t){if(e?.fallback??!0)return ml(this);throw t}}get isCollection(){return!1}get isIndexedCollection(){return!1}get isLazyCollection(){return!1}xcontains(e){}subsetOf(e,t){}get xsize(){}get isEmptyCollection(){if(!this.isCollection)return;let e=this.xsize;if(e!==void 0)return e===0}get isFiniteCollection(){if(!this.isCollection)return;let e=this.xsize;if(e!==void 0)return Number.isFinite(e)}each(){return function*(){}()}at(e){}get(e){}indexWhere(e){}};function mc(n,e){let t=!e||n.operator===e?[n]:[];if(n.ops)for(let i of n.ops)t.push(...mc(i,e));return t}function gc(n,e){if(n.symbol){e.add(n.symbol);return}if(n.ops)for(let t of n.ops)gc(t,e)}function hc(n,e){if(n.symbol){let t=n.symbol;if(t==="Unknown"||t==="Undefined"||t==="Nothing"||n.valueDefinition?.isConstant||n.operatorDefinition)return;n.engine._getSymbolValue(t)===void 0&&e.add(t);return}if(n.ops)for(let t of n.ops)hc(t,e)}var _n=class{name;wikidata;description;url;_engine;_defValue;_value;_type;inferredType;_isConstant=!1;holdUntil="evaluate";eq;neq;cmp;collection;constructor(e,t,i){if(this._engine=e,this.name=t,i.wikidata&&(this.wikidata=i.wikidata),i.description&&(this.description=i.description),i.url&&(this.url=i.url),i.holdUntil&&(this.holdUntil=i.holdUntil),i.isConstant&&(this._isConstant=i.isConstant,this._defValue=i.value),i.type){let r=i.type instanceof S?i.type:A(i.type);if(!st(r))throw new Error([`Symbol "${this.name}"`,`The type "${i.type}" is invalid `].join(`
|
|
34
|
+
| `));this._type=new S(r,e._typeResolver),this.inferredType=i.inferred??!1,e.listenToConfigurationChange(this)}if(this._value=yc(this._engine,i.value),this._value){if(!this._type||this._type.isUnknown)this.isConstant?(this._type=this._value.type,this.inferredType=!1):(this._type=fm(e,this._value),this.inferredType=!0);else if(!this._value.type.matches(this._type))throw new Error([`Symbol "${this.name}"`,`The value "${this._value.toString()}" of type "${this._value.type}" is not compatible with the type "${this._type}"`].join(`
|
|
35
|
+
| `))}if(i.eq&&(this.eq=i.eq),i.neq&&(this.neq=i.neq),i.cmp&&(this.cmp=i.cmp),i.collection&&(this.collection=eo(i.collection)),this.holdUntil==="never"&&!this.isConstant)throw new Error([`Symbol "${this.name}"`,'The "holdUntil" property cannot be "never" for a non-constant symbol'].join(`
|
|
36
|
+
| `))}toJSON(){let e={name:this.name,isConstant:this._isConstant};return this.wikidata&&(e.wikidata=this.wikidata),this.description&&(e.description=this.description),this.url&&(e.url=this.url),this._type&&(e.type=this._type.toString()),e.inferredType=this.inferredType,e.holdUntil=this.holdUntil,this.collection&&(e.collection=this.collection),e}get isConstant(){return this._isConstant}get value(){return this._value===null&&(this._value=yc(this._engine,this._defValue)),this._value}get type(){return this._type??this._value?.type??S.unknown}set type(e){if(this._isConstant)throw new Error(`The type of the constant "${this.name}" cannot be changed`);this._type=e instanceof S?e:new S(e,this._engine._typeResolver),this._type.isUnknown&&(this._defValue=void 0,this._value=void 0)}onConfigurationChange(){this.isConstant&&(this._value=null)}};function yc(n,e){if(e!==void 0)return qi(e)?n.parse(e)??n.symbol("Undefined"):typeof e=="function"?n.box(e(n)??"Undefined"):e instanceof W?e:n.box(e)}function fm(n,e){return e?e.type.matches("integer")?n.type("integer"):e.type.matches("rational")||e.type.matches("real")?n.type("real"):e.type.matches("complex")?n.type("number"):e.type:n.type("unknown")}function xc(n){return n!=null&&n instanceof W&&n.type.matches("dictionary")}function Xn(n){return n instanceof W}function me(n){return n.precision>kn}function cn(n){let e=0;for(let t=0;t<n.length;t++)e=Math.imul(31,e)+n.charCodeAt(t)|0;return Math.abs(e)}function cr(n){return n==null?[]:typeof n=="string"?[n]:Xn(n)?cr(n.symbol):typeof n[Symbol.iterator]=="function"?Array.from(n).map(e=>typeof e=="string"?e:e.symbol):[]}function ho(n){return n.symbol==="Numbers"?"number":n.symbol==="ComplexNumbers"?"complex":n.symbol==="ImaginaryNumbers"?"imaginary":n.symbol==="RealNumbers"?"real":n.symbol==="RationalNumbers"?"rational":n.symbol==="Integers"?"integer":"unknown"}function dm(n){if(!n)return n;let e=n.engine,t=e.angularUnit;return t==="rad"||(t==="deg"&&(n=n.mul(e.Pi).div(180)),t==="grad"&&(n=n.mul(e.Pi).div(200)),t==="turn"&&(n=n.mul(e.Pi).mul(2))),n}function ao(n){if(!n)return n;let e=dm(n);if(!e)return;if(e.N().im!==0)return e;let t=e.engine,[i,r]=Ot(e);if(i.isZero)return t.number(r);let o=t._numericValue(i.bignumRe?i.bignumRe.mod(2):i.re%2);return t.number(r.add(t.Pi.mul(o).N().numericValue))}function li(n){if(typeof n=="number")return;let e=n.engine;if(n.symbol==="ImaginaryUnit")return e.One;if(n.re===0)return e.number(n.im);if(n.operator==="Negate")return li(n.op1)?.neg();if(n.operator==="Complex")return n.op1.is(0)&&!isNaN(n.op2.re)?e.number(n.op2.re):void 0;if(n.operator==="Multiply"&&n.nops===2){let[t,i]=n.ops;if(t.symbol==="ImaginaryUnit")return i;if(i.symbol==="ImaginaryUnit")return t;if(i.isNumberLiteral&&i.re===0&&i.im!==0)return t.mul(i.im);if(t.isNumberLiteral&&t.re===0&&t.im!==0)return i.mul(t.im)}if(n.operator==="Divide"){let t=n.op2;return t.is(0)?void 0:li(n.op1)?.div(t)}}function fr(n){let{engine:e}=n;return n===e.I?!0:n.isNumberLiteral?n.re===0&&n.im===1:n.symbol!==null?n.canonical.isSame(e.I):!1}function Ot(n){let e=n.engine;if(n.symbol==="Pi")return[e._numericValue(1),e._numericValue(0)];if(n.operator==="Negate"){let[t,i]=Ot(n.ops[0]);return[t.neg(),i.neg()]}if(n.operator==="Add"&&n.nops===2){let[t,i]=Ot(n.op1),[r,o]=Ot(n.op2);return[t.add(r),i.add(o)]}if(n.operator==="Multiply"&&n.nops===2){if(n.op1.isNumberLiteral){let[t,i]=Ot(n.op2),r=n.op1.numericValue;return[t.mul(r),i.mul(r)]}if(n.op2.isNumberLiteral){let[t,i]=Ot(n.op1),r=n.op2.numericValue;return[t.mul(r),i.mul(r)]}}if(n.operator==="Divide"&&n.op2.isNumberLiteral){let[t,i]=Ot(n.op1),r=n.op2.numericValue;return[t.div(r),i.div(r)]}return[e._numericValue(0),e._numericValue(n.N().numericValue??0)]}function dr(n){if(n==null||typeof n!="object"||Xn(n))return!1;if(("signature"in n||"complexity"in n)&&"constant"in n)throw new Error("Operator definition cannot have a `constant` field and value definition cannot have a `signature` field.");if(!("evaluate"in n)&&!("signature"in n)&&!("sgn"in n)&&!("complexity"in n)&&!("canonical"in n))return!1;if("type"in n&&n.type!==void 0&&typeof n.type!="function")throw new Error("The `type` field of an operator definition should be a function");if("sgn"in n&&n.sgn!==void 0&&typeof n.sgn!="function")throw new Error("The `sgn` field of an operator definition should be a function");return!0}function pr(n){if(n==null||typeof n!="object"||Xn(n))return!1;if("value"in n||"constant"in n||"inferred"in n){if("type"in n&&typeof n.type=="function")return!1;if("signature"in n)throw new Error("Value definition cannot have a `signature` field. Use a `type` field instead.");if("sgn"in n)throw new Error("Value definition cannot have a `sgn` field. Use a `flags.sgn` field instead.");return!0}if("type"in n&&n.type!==void 0&&typeof n.type!="function")return!0;if("description"in n)throw new Error("Definitions should have a `type` or `value` field.");return!1}function ne(n){return n!==void 0&&"value"in n}function Z(n){return n!==void 0&&"operator"in n}function mr(n,e,t,i){i instanceof _n?(delete t.operator,t.value=i.value):pr(i)?(delete t.operator,t.value=new _n(n,e,i)):i instanceof kt?(delete t.value,t.operator=i):dr(i)&&(delete t.value,t.operator=new kt(n,e,i))}function Xe(n,e,t){if(e=Q(e),!n.strict||e.length===t)return e;let i=[...e.slice(0,t)],r=Math.min(t,e.length);for(;r<t;)i.push(n.error("missing")),r+=1;for(;r<e.length;)i.push(n.error("unexpected-argument",e[r].toString())),r+=1;return i}function He(n,e,t){let i=typeof t=="number"?t:t?.count,r=typeof t=="number"?void 0:t?.flatten;if(e=Q(e,r),!n.strict){let a="real";for(let u of e)if(E("complex",u.type.type)){a="number";break}for(let u of e)pe(u)||u.infer(a);return e}let o=!0;i??=e.length;let s=[];for(let a=0;a<=Math.max(i-1,e.length-1);a++){let u=e[a];if(a>i-1)o=!1,s.push(n.error("unexpected-argument",u.toString()));else if(u===void 0)o=!1,s.push(n.error("missing"));else if(!u.isValid)o=!1,s.push(u);else if(u.isNumber)s.push(u);else if(u.symbol&&!n.lookupDefinition(u.symbol))s.push(u);else if(u.type.isUnknown)s.push(u);else if(pe(u)){for(let l of u.each())if(!l.isNumber){o=!1;break}o?s.push(u):s.push(n.typeError("number",u.type,u))}else u.valueDefinition?.inferredType&&E("number",u.type.type)||u.operatorDefinition?.inferredSignature&&E("number",u.type.type)||u.operator==="Hold"||u.valueDefinition?.value?.operator==="Hold"?s.push(u):(o=!1,s.push(n.typeError("number",u.type,u)))}if(o){let a="real";for(let u of s)if(E("complex",u.type.type)){a="number";break}for(let u of s)if(pe(u))for(let l of u.each())l.infer(a);else u.infer(a)}return s}function ge(n,e,t){return e==null?n.error("missing"):t===void 0?n.error("unexpected-argument",e.toString()):(e=e.canonical,!e.isValid||e.type.matches(t)?e:n.typeError(t,e.type,e))}function Yi(n,e,t){if(e.length===t.length&&e.every((r,o)=>r.type.matches(t[o])))return e;let i=[];for(let r=0;r<=t.length-1;r++)i.push(ge(n,e[r],t[r]));for(let r=t.length;r<=e.length-1;r++)i.push(n.error("unexpected-argument",e[r].toString()));return i}function yi(n,e,t,i,r){if(!n.strict||typeof t=="string"||t.kind!=="signature")return null;let o=[],s=!0,a=t.args?.map(d=>d.type)??[],u=t.optArgs?.map(d=>d.type)??[],l=t.variadicArg?.type,c=t.variadicMin??0,f=0;for(let d of a){let p=e[f++];if(!p){o.push(n.error("missing")),s=!1;continue}if(i){o.push(p);continue}if(!p.isValid){o.push(p),s=!1;continue}if(p.type.isUnknown){o.push(p);continue}if(r&&pe(p)){o.push(p);continue}if(p.valueDefinition?.inferredType&&p.type.matches(d)){o.push(p);continue}if(p.operatorDefinition?.inferredSignature&&p.type.matches(d)){o.push(p);continue}if(!p.type.matches(d)){o.push(n.typeError(d,p.type,p)),s=!1;continue}o.push(p)}for(let d of u){let p=e[f];if(!p)break;if(i){o.push(p),f+=1;continue}if(!p.isValid){o.push(p),s=!1,f+=1;continue}if(p.type.isUnknown){o.push(p),f+=1;continue}if(r&&pe(p)){o.push(p),f+=1;continue}if(p.valueDefinition?.inferredType&&p.type.matches(d)){o.push(p),f+=1;continue}if(!p.type.matches(d)){o.push(n.typeError(d,p.type,p)),s=!1,f+=1;continue}o.push(p),f+=1}if(l){let d=0;for(let p of e.slice(f)){if(f+=1,d+=1,i){o.push(p);continue}if(!p.isValid){o.push(p),s=!1;continue}if(p.type.isUnknown){o.push(p);continue}if(r&&pe(p)){o.push(p);continue}if(p.valueDefinition?.inferredType&&p.type.matches(l)){o.push(p);continue}if(!p.type.matches(l)){o.push(n.typeError(l,p.type,p)),s=!1;continue}o.push(p)}d<c&&(o.push(n.error("missing")),s=!1)}if(f<e.length)for(let d of e.slice(f))o.push(n.error("unexpected-argument",d.toString())),s=!1;if(!s)return o;f=0;for(let d of a)i||(!r||!pe(e[f]))&&e[f].infer(d),f+=1;for(let d of u){if(!e[f])break;(!r||!pe(e[f]))&&e[f]?.infer(d),f+=1}if(l)for(let d of e.slice(f))i||(!r||!pe(d))&&d.infer(l),f+=1;return null}function bc(n){let e={},t=mm(n.engine),i=pm(n.engine);if(n.symbol&&!e[n.symbol]&&!n.symbol.startsWith("_")){if(!t.includes(n.symbol)){let r=Di(n.symbol,t);r&&(e[n.symbol]=r)}}else if(n.ops&&!e[n.operator]&&!n.operator.startsWith("_")){let r=n.operator;if(!i.includes(r)){let o=Di(r,i);o&&(e[r]=o)}for(let o of n.ops)e={...e,...bc(o)}}return e}function pm(n){let e=[],t=n.context.lexicalScope;for(;t;){for(let i of t.bindings.keys()){let r=t.bindings.get(i);Z(r)&&e.push(i)}t=t.parent}return e}function mm(n){let e=[],t=n.context.lexicalScope;for(;t;){for(let i of t.bindings.keys()){let r=t.bindings.get(i);ne(r)&&e.push(i)}t=t.parent}return e}function an(n){let e=bc(n);if(Object.keys(e).length===0)return"";if(Object.keys(e).length===1){let[i,r]=Object.entries(e)[0];return`Unknown symbol "${i}". Did you mean "${r}"?`}let t=[];for(let[i,r]of Object.entries(e))t.push(`- "${i}" -> "${r}"?`);return`Unknown symbols found:
|
|
37
|
+
${t.join(`
|
|
38
|
+
`)}`}function aa(n){if(n!==void 0)return isNaN(n)?"unsigned":n>0?"positive":n<0?"negative":"zero"}function ua(n){return n==="positive"?"negative":n==="non-negative"?"non-positive":n==="negative"?"positive":n==="non-positive"?"non-negative":n}function xi(n){if(n.isGreater(1))return"positive";if(n.isGreaterEqual(1))return"non-negative";if(n.isLessEqual(1)&&n.isGreaterEqual(0))return"non-positive";if(n.isLess(1)&&n.isGreaterEqual(0))return"negative";if(n.is(1))return"zero";if(n.isNegative||n.isReal===!1)return"unsigned"}var vc=[{Abs:{wikidata:"Q3317982",broadcastable:!0,idempotent:!0,complexity:1200,signature:"(number) -> number",type:([n])=>n.type,sgn:([n])=>n.is(0)?"zero":n.isNumberLiteral?"positive":"non-negative",evaluate:([n])=>gm(n)},Add:{wikidata:"Q32043",associative:!0,commutative:!0,commutativeOrder:Hi,broadcastable:!0,idempotent:!0,complexity:1300,lazy:!0,signature:"(number+) -> number",type:sc,sgn:n=>{if(n.some(e=>e.isNaN))return"unsigned";if(n.every(e=>e.is(0)))return"zero";if(n.every(e=>e.isNonNegative))return n.some(e=>e.isPositive)?"positive":"non-negative";if(n.every(e=>e.isNonPositive))return n.some(e=>e.isNegative)?"negative":"non-positive"},evaluate:(n,{numericApproximation:e})=>e?ac(...n):H(...n.map(t=>t.evaluate()))},Ceil:{description:"Rounds a number up to the next largest integer",complexity:1250,broadcastable:!0,signature:"(real) -> integer",sgn:([n])=>{if(n.isLessEqual(-1))return"negative";if(n.isPositive)return"positive";if(n.isNonNegative)return"non-negative";if(n.isNonPositive&&n.isGreater(-1))return"zero";if(n.isNonPositive)return"non-positive";if(n.isReal==!1&&n.isNumberLiteral)return n.im>0||n.im<=-1?"unsigned":aa(n.re)},evaluate:([n])=>re(n,Math.ceil,e=>e.ceil(),e=>e.ceil(0))},Chop:{associative:!0,broadcastable:!0,idempotent:!0,complexity:1200,signature:"(number) -> number",type:([n])=>n.type,evaluate:n=>{let e=n[0],t=e.engine;return re(e,i=>t.chop(i),i=>t.chop(i),i=>t.complex(t.chop(i.re),t.chop(i.im)))}},Divide:{wikidata:"Q1226939",complexity:2500,broadcastable:!0,signature:"(number, number+) -> number",type:([n,e])=>e.is(1)?n.type:e.isNaN||n.isNaN?"number":e.isFinite===!1||n.isFinite===!1?"non_finite_number":e.isInteger&&n.isInteger?"finite_rational":e.isReal&&n.isReal?"finite_real":"finite_number",sgn:n=>{let[e,t]=[n[0],n[1]];if(t.is(0))return"unsigned";if(t.isPositive)return e.sgn;if(t.isNegative)return ua(e.sgn);let i=t.sgn;if(e.is(0)&&i==="not-zero"||e.isFinite&&t.isInfinity)return"zero";if(e.sgn==="not-zero"&&i==="not-zero")return"not-zero"},canonical:(n,{engine:e})=>{let t=e;n=He(t,n);let i=n[0];if(i===void 0)return t.error("missing");if(n.length<2)return i;let r=n.slice(1);for(let o of r)i=un(i,o);return i},evaluate:([n,e])=>n.div(e)},Exp:{wikidata:"Q168698",broadcastable:!0,complexity:3500,signature:"(number) -> number",canonical:(n,{engine:e})=>(n=He(e,n,1),e.function("Power",[e.E,...n]))},Factorial:{description:"Factorial function: the product of all positive integers less than or equal to n",wikidata:"Q120976",broadcastable:!0,complexity:9e3,signature:"(integer) -> integer",sgn:([n])=>n.isNonNegative?"positive":n.isNegative||n.isReal===!1?"unsigned":void 0,canonical:(n,{engine:e})=>{let t=n[0];return t.isNumberLiteral&&t.isNegative?e._fn("Factorial",[t.neg()]).neg():e._fn("Factorial",[t])},evaluate:([n])=>{let e=n.engine;if(n.im!==0&&n.im!==void 0)return e.number(e.complex(n.re,n.im).add(1));if(n.isFinite){if(n.isNegative)return e.number(pt(1+n.re));try{return e.number(fi(io(BigInt((n.bignumRe??n.re).toFixed())),e._timeRemaining))}catch{return}}},evaluateAsync:async([n],{signal:e})=>{let t=n.engine;if(n.im!==0&&n.im!==void 0)return t.number(t.complex(n.re,n.im).add(1));if(n.isFinite){if(n.isNegative)return t.number(pt(1+n.re));try{return t.number(await ci(io(BigInt((n.bignumRe??n.re).toFixed())),(t._deadline??1/0)-Date.now(),e))}catch{return}}}},Factorial2:{description:"Double Factorial Function",complexity:9e3,broadcastable:!0,signature:"(integer) -> integer",sgn:([n])=>n.isNonNegative?"positive":n.isNegative||n.isReal===!1?"unsigned":void 0,evaluate:n=>{let e=n[0],t=P(e);if(t===null)return;let i=e.engine;return me(i)?i.number(ic(i,i.bignum(t))):i.number(yu(t))}},Floor:{wikidata:"Q56860783",complexity:1250,broadcastable:!0,signature:"(number) -> integer",sgn:([n])=>{if(n.isNegative)return"negative";if(n.isGreaterEqual(1))return"positive";if(n.isNonNegative&&n.isLess(1))return"zero";if(n.isNonNegative)return"non-negative";if(n.isReal==!1&&n.isNumberLiteral)return n.im<0||n.im>=1?"unsigned":aa(n.re)},evaluate:([n])=>re(n,Math.floor,e=>e.floor(),e=>e.floor(0))},Gamma:{wikidata:"Q190573",complexity:8e3,broadcastable:!0,signature:"(number) -> number",sgn:([n])=>n.isPositive?"positive":n.is(0)?"zero":void 0,evaluate:([n],{numericApproximation:e,engine:t})=>e?re(n,i=>pt(i),i=>zs(t,i),i=>i):void 0},GammaLn:{complexity:8e3,broadcastable:!0,signature:"(number) -> number",evaluate:(n,{numericApproximation:e,engine:t})=>e?re(n[0],i=>pi(i),i=>qs(t,i),i=>i):void 0},Ln:{description:"Natural Logarithm",wikidata:"Q204037",complexity:4e3,broadcastable:!0,signature:"(number, base: number?) -> number",sgn:([n])=>xi(n),evaluate:([n],{numericApproximation:e,engine:t})=>e?re(n,i=>i===0?-1/0:i>=0?Math.log(i):t.complex(i).log(),i=>i.isZero()?-1/0:i.isNeg()?t.complex(i.toNumber()).log():i.ln(),i=>i.isZero()?NaN:i.log()):n.ln()},Log:{description:"Log(z, b = 10) = Logarithm of base b",wikidata:"Q11197",complexity:4100,broadcastable:!0,signature:"(number, base: number?) -> number",sgn:([n,e])=>{if(!e)return xi(n);if(e.is(1)||e.isReal==!1)return"unsigned";if(e.isGreater(1))return xi(n);if(e.isLess(1))return ua(xi(n))},evaluate:(n,{numericApproximation:e,engine:t})=>{if(!e)return n[0]?.ln(n[1]??10)??void 0;let i=t;return n[1]===void 0?re(n[0],r=>r===0?-1/0:r>=0?Math.log10(r):i.complex(r).log().div(Math.LN10),r=>r.isZero()?-1/0:r.isNeg()?i.complex(r.toNumber()).log().div(Math.LN10):M.log10(r),r=>r.isZero()?NaN:r.log().div(Math.LN10)):Rn(n[0],n[1],(r,o)=>Math.log(r)/Math.log(o),(r,o)=>r.log(o),(r,o)=>r.log().div(typeof o=="number"?Math.log(o):o.log()))}},Lb:{description:"Base-2 Logarithm",wikidata:"Q581168",complexity:4100,broadcastable:!0,signature:"(number) -> number",sgn:([n])=>xi(n),canonical:([n],{engine:e})=>e._fn("Log",[n,e.number(2)])},Lg:{description:"Base-10 Logarithm",wikidata:"Q966582",complexity:4100,broadcastable:!0,signature:"(number) -> number",sgn:([n])=>xi(n),canonical:([n],{engine:e})=>e._fn("Log",[n])},Mod:{description:"Modulo",wikidata:"Q1799665",complexity:2500,broadcastable:!0,signature:"(number, number) -> number",sgn:n=>{let e=n[1];if(!(e===void 0||e.isReal==!1)){if(e.is(0))return"unsigned";if(n[0].isNumberLiteral&&e.isNumberLiteral)return Rn(n[0],e,(i,r)=>(i%r+r)%r,(i,r)=>i.modulo(r))?.sgn??void 0}},evaluate:([n,e])=>Rn(n,e,(t,i)=>(t%i+i)%i,(t,i)=>t.modulo(i))},Multiply:{wikidata:"Q40276",associative:!0,commutative:!0,idempotent:!0,complexity:2100,broadcastable:!0,lazy:!0,signature:"(number*) -> number",type:n=>n.length===0?"finite_integer":n.length===1?n[0].type:n.some(e=>e.isNaN)?"number":n.some(e=>e.isFinite===!1)?"non_finite_number":n.every(e=>e.isInteger)?"finite_integer":n.every(e=>e.isReal)?"finite_real":n.every(e=>e.isRational)?"finite_rational":"finite_number",sgn:n=>{if(!n.some(e=>e.sgn===void 0||e.isReal===!1)){if(n.some(e=>e.is(0)))return n.every(e=>e.isFinite)?"zero":n.some(e=>e.isFinite===!1)?"unsigned":void 0;if(!(n.some(e=>e.isFinite===!1||e.isFinite===void 0)&&n.some(e=>{let t=e.sgn}))){if(n.every(e=>e.isPositive||e.isNegative)){let e=0;return n.forEach(t=>{t.isNegative&&e++}),e%2===0?"positive":"negative"}if(n.every(e=>e.isNonPositive||e.isNonNegative)){let e=0;return n.forEach(t=>{t.isNonPositive&&e++}),e%2===0?"non-positive":"non-negative"}if(n.every(e=>e.sgn==="not-zero"||e.sgn==="positive"||e.sgn==="negative"))return"not-zero"}}},evaluate:(n,{numericApproximation:e})=>e?cc(...n):ae(...n.map(t=>t.evaluate()))},Negate:{description:"Additive Inverse",wikidata:"Q715358",complexity:2e3,broadcastable:!0,signature:"(number) -> number",type:([n])=>n.type,sgn:([n])=>ua(n.sgn),canonical:(n,{engine:e})=>(n=He(e,n),n.length===0?e.error("missing"):n[0].neg()),evaluate:([n])=>n.neg()},PlusMinus:{description:"Plus or Minus",wikidata:"Q120812",complexity:1200,signature:"(value, value) -> tuple",canonical:(n,{engine:e})=>(n=He(e,n,2),n.length===0?e.error("missing"):e._fn("PlusMinus",[n[0],n[1].abs()])),type:([n,e])=>A(`tuple<${n.type}, ${e.type}>`),evaluate:([n,e],{engine:t})=>t.tuple(n.add(e.neg()),n.add(e))},Power:{wikidata:"Q33456",broadcastable:!0,complexity:3500,signature:"(number, number) -> number",type:([n,e])=>n.isNaN||e.isNaN?"number":e.isFinite?n.isInteger&&e.isInteger?"finite_integer":n.isRational&&e.isInteger?"finite_rational":n.isReal&&e.isReal?"finite_real":"finite_number":"non_finite_number",canonical:(n,{engine:e})=>{if(n=He(e,n,2),n.length!==2)return e._fn("Power",n);let[t,i]=n;return Kn(t,i)},sgn:([n,e])=>{let t=n.sgn,i=e.sgn;if(!(n.isReal===!1||e.isReal===!1||n.isNaN||e.isNaN||t===void 0||i===void 0)){if(n.is(0))return e.isNonPositive?"unsigned":e.isPositive?"zero":void 0;if(n.is(0)&&e.is(0))return"unsigned";if(n.isNonNegative||e.numerator.isOdd&&e.denominator.isOdd)return n.sgn;if(e.numerator.isEven&&e.denominator.isOdd){if(n.isReal){let r=n.sgn;return r==="positive"||r==="not-zero"||r==="negative"?"positive":"non-negative"}return n.type.matches("complex")?"negative":n.is(0)?void 0:"not-zero"}if(e.isRational===!1||e.numerator.isOdd&&e.denominator.isEven&&n.isNonPositive)return"unsigned"}},evaluate:([n,e],{numericApproximation:t})=>Ie(n,e,{numericApproximation:t??!1})},Rational:{complexity:2400,signature:"(number, integer?) -> rational",sgn:([n])=>n.sgn,canonical:(n,{engine:e})=>{let t=e;return n=Q(n),n.length===0?t._fn("Rational",[t.error("missing")]):n.length===1?t._fn("Rational",[ge(t,n[0],"real")]):(n=Yi(t,n,["integer","integer"]),n.length!==2||!n[0].isValid||!n[1].isValid?t._fn("Rational",n):n[0].div(n[1]))},evaluate:(n,{numericApproximation:e,engine:t})=>{let i=t;if(n.length===1){let s=n[0].N();return s.numericValue===null||s.im!==0?void 0:i.number(El(s.re))}if(e)return Rn(n[0],n[1],(s,a)=>s/a,(s,a)=>s.div(a),(s,a)=>s.div(a));let[r,o]=[ee(n[0]),ee(n[1])];if(r!==null&&o!==null)return i.number([r,o])}},Root:{complexity:3200,broadcastable:!0,signature:"(number, number) -> number",type:([n,e])=>n.isNaN||e.isNaN?"number":n.isFinite===!1||e.isFinite===!1?"non_finite_number":e.is(0)?"finite_integer":e.is(1)?n.type:n.isReal&&e.isReal&&n.isPositive===!0?"finite_real":"finite_number",sgn:([n,e])=>{if(n.isReal===!1||e.isReal===!1)return"unsigned";if(n.is(0)){if(e.isNonPositive)return"unsigned";if(e.isPositive)return"zero"}if(n.isPositive===!0)return"positive";if(n.isNonNegative===!0)return"non-negative";if(e.isOdd===!0||e.numerator.isOdd&&e.denominator.isOdd)return n.sgn;if(n.isNegative&&e.isOdd===!1)return"unsigned"},canonical:(n,{engine:e})=>{n=He(e,n,2);let[t,i]=n;return wt(t,i)},evaluate:([n,e],{numericApproximation:t})=>so(n,e,{numericApproximation:t})},Round:{complexity:1250,broadcastable:!0,signature:"(number) -> integer",type:([n])=>n.isNaN?"number":n.isFinite===!1||n.isReal===!1?"non_finite_number":"finite_integer",sgn:([n])=>{if(n.isNaN)return"unsigned";if(n.isNumberLiteral)return n.im>=.5||n.im<=-.5?"unsigned":aa(Math.round(n.re));if(n.isGreaterEqual(.5))return"positive";if(n.isLessEqual(-.5))return"negative";if(n.isLess(.5)&&n.isGreater(-.5))return"zero";if(n.isNonNegative)return"non-negative";if(n.isNonPositive)return"non-positive"},evaluate:([n])=>re(n,Math.round,e=>e.round(),e=>e.round(0))},Sign:{complexity:1200,broadcastable:!0,signature:"(number) -> integer",sgn:([n])=>n.sgn,evaluate:([n],{engine:e})=>{if(n.is(0))return e.Zero;if(n.isPositive)return e.One;if(n.isNegative)return e.NegativeOne}},Sqrt:{description:"Square Root",wikidata:"Q134237",complexity:3e3,broadcastable:!0,signature:"(number) -> number",type:([n])=>n.isNaN?"number":n.isFinite===!1?"non_finite_number":n.isReal?n.isNegative?"complex":"finite_real":"finite_number",sgn:([n])=>{if(n.isPositive)return"positive";if(n.isNegative)return"unsigned";if(n.isNonNegative)return"non-negative";if(n.sgn==="not-zero")return"not-zero"},evaluate:([n],{numericApproximation:e,engine:t})=>{if(!e)return n.sqrt();let[i,r]=n.toNumericValue();return r.is(1)?t.number(i.sqrt().N()):t.number(i.sqrt().N()).mul(r)}},Square:{wikidata:"Q3075175",complexity:3100,broadcastable:!0,signature:"(number) -> number",sgn:([n])=>{if(n.is(0))return"zero";if(n.isReal){let e=n.sgn;return e==="not-zero"||e==="positive"||e==="negative"?"positive":"non-negative"}if(n.type.matches("complex"))return"negative";if(n.isReal==!1||n.isNaN)return"unsigned"},canonical:(n,{engine:e})=>{let t=e;return n=Q(n),n.length!==1?t._fn("Square",n):t._fn("Power",[n[0],t.number(2)]).canonical}},Subtract:{wikidata:"Q40754",complexity:1350,broadcastable:!0,signature:"(number+) -> number",canonical:(n,{engine:e})=>{if(n=He(e,n),n.length===0)return e.error("missing");let t=n[0],i=n.slice(1);return Ke(e,[t,...i.map(r=>r.neg())])}}},{ImaginaryUnit:{type:"imaginary",isConstant:!0,holdUntil:"never",wikidata:"Q193796",value:n=>n.I},i:{type:"imaginary",isConstant:!0,holdUntil:"never",value:n=>n.I},ExponentialE:{type:"finite_real",wikidata:"Q82435",isConstant:!0,holdUntil:"N",value:n=>n.number(me(n)?n._BIGNUM_ONE.exp():Math.exp(1))},e:{type:"finite_real",isConstant:!0,holdUntil:"never",value:"ExponentialE"},ComplexInfinity:{type:"complex",isConstant:!0,holdUntil:"never",value:n=>n.ComplexInfinity},PositiveInfinity:{type:"non_finite_number",isConstant:!0,holdUntil:"never",value:1/0},NegativeInfinity:{type:"non_finite_number",isConstant:!0,holdUntil:"never",value:-1/0},NaN:{type:"number",isConstant:!0,holdUntil:"never",value:n=>n.NaN},ContinuationPlaceholder:{description:"This symbol indicates that some elements in a collection have been omitted, for example in a long list of numbers, or in an infinite set",type:"unknown",isConstant:!0},MachineEpsilon:{type:"finite_real",holdUntil:"N",isConstant:!0,value:{num:Number.EPSILON.toString()}},Half:{type:"finite_rational",isConstant:!0,holdUntil:"never",value:["Rational",1,2]},GoldenRatio:{type:"finite_real",wikidata:"Q41690",isConstant:!0,holdUntil:"N",value:["Divide",["Add",1,["Sqrt",5]],2]},CatalanConstant:{type:"finite_real",wikidata:"Q855282",isConstant:!0,holdUntil:"N",value:{num:`0.91596559417721901505460351493238411077414937428167
|
|
15
39
|
21342664981196217630197762547694793565129261151062
|
|
16
40
|
48574422619196199579035898803325859059431594737481
|
|
17
41
|
15840699533202877331946051903872747816408786590902
|
|
@@ -31,7 +55,7 @@ Invalid type
|
|
|
31
55
|
64387206238513712392736304998503539223928787979063
|
|
32
56
|
36440323547845358519277777872709060830319943013323
|
|
33
57
|
16712476158709792455479119092126201854803963934243
|
|
34
|
-
`}},EulerGamma:{type:"finite_real",wikidata:"Q273023",holdUntil:"N",
|
|
58
|
+
`}},EulerGamma:{type:"finite_real",wikidata:"Q273023",holdUntil:"N",isConstant:!0,value:{num:`0.57721566490153286060651209008240243104215933593992359880576723488486772677766
|
|
35
59
|
467093694706329174674951463144724980708248096050401448654283622417399764492353
|
|
36
60
|
625350033374293733773767394279259525824709491600873520394816567085323315177661
|
|
37
61
|
152862119950150798479374508570574002992135478614669402960432542151905877553526
|
|
@@ -41,71 +65,49 @@ Invalid type
|
|
|
41
65
|
792726801324310104765059637039473949576389065729679296010090151251959509222435
|
|
42
66
|
014093498712282479497471956469763185066761290638110518241974448678363808617494
|
|
43
67
|
551698927923018773910729457815543160050021828440960537724342032854783670151773
|
|
44
|
-
943987003023703395183286900015581939880427074115422278197165230110735658339673`}}},{PreIncrement:{signature:"number -> number"},PreDecrement:{signature:"number -> number"}},{IsPrime:{description:"`IsPrime(n)` returns `True` if `n` is a prime number",wikidata:"Q49008",complexity:1200,threadable:!0,signature:"(number) -> boolean",evaluate:([e],{engine:n})=>{let i=zr(e);if(i!==void 0)return n.symbol(i?"True":"False")}},IsComposite:{description:"`IsComposite(n)` returns `True` if `n` is not a prime number",complexity:1200,threadable:!0,signature:"(number) -> boolean",canonical:(e,{engine:n})=>n.box(["Not",["IsPrime",...e]])},IsOdd:{description:"`IsOdd(n)` returns `True` if `n` is an odd number",complexity:1200,threadable:!0,signature:"(number) -> boolean",evaluate:(e,{engine:n})=>{let i=!1,t=e.every(r=>{if(r.im!==0)return!1;let s=Dt(r);if(s!==null)return s%BigInt(2)!==BigInt(0);let o=r.re;return Number.isInteger(o)?o%2!==0:(i=!0,!1)});if(!i)return n.symbol(t?"False":"True")}},isEven:{description:"Odd Number",complexity:1200,threadable:!0,signature:"(number) -> boolean",canonical:(e,{engine:n})=>n.box(["Not",["IsOdd",...e]])}},{GCD:{description:"Greatest Common Divisor",complexity:1200,threadable:!1,signature:"(...any) -> integer",sgn:()=>"positive",evaluate:e=>_l(e,"GCD")},LCM:{description:"Least Common Multiple",complexity:1200,threadable:!1,signature:"(...any) -> integer",sgn:()=>"positive",evaluate:e=>_l(e,"LCM")},Numerator:{description:"Numerator of an expression",complexity:1200,threadable:!0,lazy:!0,signature:"(number) -> number | nothing",canonical:(e,{engine:n})=>{if(e.length===0)return n.Nothing;let i=e[0];return i.operator==="Rational"||i.operator==="Divide"?i.op1:n._fn("Numerator",Fe(n,e))},sgn:([e])=>e.sgn,evaluate:(e,{engine:n})=>{let i=n;if(e.length===0)return i.Nothing;let t=e[0];return t.operator==="Rational"||t.operator==="Divide"?t.op1.evaluate():t.numerator}},Denominator:{description:"Denominator of an expression",complexity:1200,threadable:!0,lazy:!0,signature:"(number) -> number | nothing",canonical:(e,{engine:n})=>{if(e.length===0)return n.Nothing;let i=e[0];if(i.operator==="Rational"||i.operator==="Divide")return i.op2;let t=je(i);return t!==void 0?n.number(t[1]):n._fn("Denominator",Fe(n,e))},sgn:()=>"positive",evaluate:(e,{engine:n})=>{let i=n;if(e.length===0)return i.Nothing;let t=e[0];return t.operator==="Rational"||t.operator==="Divide"?t.op2.evaluate():t.denominator}},NumeratorDenominator:{description:"Sequence of Numerator and Denominator of an expression",complexity:1200,threadable:!0,lazy:!0,signature:"(number) -> tuple<number, number> | nothing",canonical:(e,{engine:n})=>{if(e.length===0)return n.Nothing;let i=e[0];if(i.operator==="Rational"||i.operator==="Divide")return n.tuple(...i.ops);let t=je(i.evaluate());return t!==void 0?n.tuple(n.number(t[0]),n.number(t[1])):n._fn("NumeratorDenominator",e.map(r=>r.evaluate()))},evaluate:(e,{engine:n})=>{let i=n;if(e.length===0)return i.Nothing;let t=e[0];return t.operator==="Rational"||t.operator==="Divide"?i.tuple(...t.ops):i.tuple(...t.numeratorDenominator)}}},{Max:{description:"Maximum of two or more numbers",complexity:1200,threadable:!1,signature:"(...value) -> number | list",sgn:e=>{if(e.some(n=>n.isReal==!1||n.isNaN))return"unsigned";if(!e.some(n=>n.isReal==!1||n.isNaN!==!1)){if(e.some(n=>n.isPositive))return"positive";if(e.every(n=>n.isNonPositive))return e.some(n=>n.is(0))?"zero":"non-positive";if(e.some(n=>n.isNonNegative))return"non-negative";if(e.every(n=>n.isNegative))return"negative";if(e.some(n=>!n.is(0)))return"not-zero"}},evaluate:(e,{engine:n})=>Vr(n,e,"Max")},Min:{description:"Minimum of two or more numbers",complexity:1200,threadable:!1,signature:"(...value) -> number | list",sgn:e=>{if(e.some(n=>n.isReal==!1||n.isNaN))return"unsigned";if(!e.some(n=>n.isReal==!1||n.isNaN!==!1)){if(e.some(n=>n.isNegative))return"negative";if(e.every(n=>n.isNonNegative))return e.some(n=>n.is(0))?"zero":"non-negative";if(e.some(n=>n.isNonPositive))return"non-positive";if(e.every(n=>n.isPositive))return"positive"}},evaluate:(e,{engine:n})=>Vr(n,e,"Min")},Supremum:{description:"Like Max, but defined for open sets",complexity:1200,threadable:!1,signature:"(...value) -> number | list",evaluate:(e,{engine:n})=>Vr(n,e,"Supremum")},Infimum:{description:"Like Min, but defined for open sets",complexity:1200,threadable:!1,signature:"(...value) -> number | list",evaluate:(e,{engine:n})=>Vr(n,e,"Infimum")},Product:{description:"`Product(f, a, b)` computes the product of `f` from `a` to `b`",wikidata:"Q901718",complexity:1e3,threadable:!1,lazy:!0,signature:"(collection|function, ...(tuple<symbol>|tuple<symbol, integer>|tuple<symbol, integer, integer>)) -> number",canonical:([e,...n])=>To("Product",e,n),evaluate:(e,n)=>{let i=(r,s)=>(s=s.evaluate(n),s.isNumberLiteral?r.mul(s.numericValue):null),t=Ri(Gt(e[0],e.slice(1),i,n.engine._numericValue(1)),n.engine._timeRemaining);return n.engine.number(t??NaN)},evaluateAsync:async(e,n)=>{let i=(r,s)=>(s=s.evaluate(n),s.isNumberLiteral?r.mul(s.numericValue):null),t=await Ai(Gt(e[0],e.slice(1),i,n.engine._numericValue(1)),n.engine._timeRemaining,n.signal);return n.engine.number(t??NaN)}},Sum:{description:"`Sum(f, a, b)` computes the sum of `f` from `a` to `b`",wikidata:"Q218005",complexity:1e3,threadable:!1,lazy:!0,signature:"(collection|function, ...(tuple<symbol>|tuple<symbol, integer>|tuple<symbol, integer, integer>)) -> number",canonical:([e,...n])=>To("Sum",e,n),evaluate:(e,{engine:n})=>n.number(Ri(Gt(e[0],e.slice(1),(i,t)=>(t=t.evaluate(),t.isNumberLiteral?i.add(t.numericValue):null),n._numericValue(0)),n._timeRemaining)),evaluateAsync:async(e,{engine:n,signal:i})=>n.number(await Ai(Gt(e[0],e.slice(1),(t,r)=>(r=r.evaluate(),r.isNumberLiteral?t.add(r.numericValue):null),n._numericValue(0)),n._timeRemaining,i))}},{BaseForm:{description:"`BaseForm(expr, base=10)`",complexity:9e3,signature:"(number, (string|integer)?) -> string | nothing",type:([e])=>e===void 0?"nothing":e.type,evaluate:([e])=>e},FromDigits:{description:"`FromDigits(s, base=10)` return an integer representation of the string `s` in base `base`.",signature:"(string, (string|integer)?) -> integer",evaluate:(e,{engine:n})=>{let i=e[0]?.string,t=n;if(!i)return t.typeError("string",e[0]?.type,e[0]);if(i=i.trim(),i.startsWith("0x"))return t.number(parseInt(i.slice(2),16));if(i.startsWith("0b"))return t.number(parseInt(i.slice(2),2));let r=e[1]??t.Nothing;if(r.symbol==="Nothing")return t.number(Number.parseInt(i,10));let s=r.re;if(!r.isInteger||!Number.isFinite(s)||s<2||s>36)return t.error(["unexpected-base",s.toString()],r.toString());let[o,a]=Vi(i,r.string??r.symbol??10);return a?t.error(["unexpected-digit",a[0]],a):t.number(o)}},IntegerString:{description:"`IntegerString(n, base=10)` return a string representation of the integer `n` in base `base`.",threadable:!0,signature:"(integer, integer?) -> string",evaluate:(e,{engine:n})=>{let i=n,t=e[0];if(!t.isInteger)return i.typeError("integer",t.type,t);let r=t.re;if(!Number.isFinite(r))return i.typeError("integer",t.type,t);let s=e[1]??i.Nothing;if(s.symbol==="Nothing")return t.bignumRe!==void 0?i.string(t.bignumRe.abs().toString()):i.string(Math.abs(r).toString());let o=G(s);return o===null?i.typeError("integer",s.type,s):o<2||o>36?i.error(["out-of-range","2","36",o.toString()],s.toString()):i.string(Math.abs(r).toString(o))}}}];function bd(e){let n=e.engine,i=e.numericValue;if(i!==null)return typeof i=="number"?n.number(Math.abs(i)):n.number(i.abs());if(e.isNonNegative)return e;if(e.isNegative)return e.neg()}function Bl(e,n){let i=e.engine,t=n==="Max"||n==="Supremum";if(e.operator==="Interval"){let r=t?e.op2:e.op1;return!r.isNumber||r.numericValue===null?[void 0,[e]]:[r,[]]}if(e.operator==="Range"){let r=Je(e),s=El(r);return[i.number(Math.max(r[0],s)),[]]}if(e.operator==="Linspace")return e.nops===1?e=t?e.op1:i.One:t?e=e.op2:e=e.op1,[e,[]];if(e.isCollection){let r,s=[];for(let o of ee(e)){let[a,u]=Bl(o,n);a&&(r?(t&&a.isGreater(r)||!t&&a.isLess(r))&&(r=a):r=a),s.push(...u)}return[r,s]}return!e.isNumber||e.numericValue===null?[void 0,[e]]:[e,[]]}function Vr(e,n,i){let t=i==="Max"||i==="Supremum";if(n.length===0)return t?e.NegativeInfinity:e.PositiveInfinity;let r,s=[];for(let o of n){let[a,u]=Bl(o,i);a&&(r?(t&&a.isGreater(r)||!t&&a.isLess(r))&&(r=a):r=a),s.push(...u)}return s.length>0?e.box(r?[i,r,...s]:[i,...s]):r??(t?e.NegativeInfinity:e.PositiveInfinity)}function _l(e,n){let i=e[0].engine,t=n==="LCM"?ki:rn,r=n==="LCM"?mu:Hs,s=[];if(oe(i)){let a=null;for(let u of e)if(a===null)a=Gs(u),(a===null||!a.isInteger())&&s.push(u);else{let l=Gs(u);l&&l.isInteger()?a=r(a,l):s.push(u)}return s.length===0?a===null?i.One:i.number(a):a===null?i._fn(n,s):i._fn(n,[i.number(a),...s])}let o=null;for(let a of e)o===null?a.isInteger&&s.push(a):a.isInteger?o=t(o,a.re):s.push(a);return s.length===0?o===null?i.One:i.number(o):o===null?i._fn(n,s):i._fn(n,[i.number(o),...s])}function zr(e){if(!e.isInteger||e.isNegative||e.numericValue===null)return;let i=G(e);if(i!==null)return ks(i);let t=Dt(e);if(t!==null)return Ha(t)}var Al={boolean:e=>e.type.matches("boolean"),string:e=>e.string!==null,number:e=>e.isNumberLiteral,symbol:e=>e.symbol!==null,expression:e=>!0,numeric:e=>{let[n,i]=e.toNumericValue();return i.is(1)},integer:e=>e.isInteger,rational:e=>e.isRational,irrational:e=>e.isRational===!1,real:e=>e.isReal,notreal:e=>!e.isReal,complex:e=>e.type.matches("complex"),imaginary:e=>e.type.matches("imaginary"),positive:e=>e.isPositive,negative:e=>e.isNegative,nonnegative:e=>e.isNonNegative,nonpositive:e=>e.isNonPositive,even:e=>e.isEven,odd:e=>e.isOdd,prime:e=>zr(e)===!0,composite:e=>zr(e)===!1,notzero:e=>e.is(0)===!1,notone:e=>e.is(1)===!1,finite:e=>e.isFinite,infinite:e=>e.isFinite===!1,constant:e=>e.symbolDefinition?.isConstant??!1,variable:e=>!(e.symbolDefinition?.isConstant??!0),function:e=>e.symbolDefinition?.isFunction??!1,relation:e=>we(e.operator),equation:e=>e.operator==="Equal",inequality:e=>zn(e),collection:e=>e.isCollection,list:e=>e.operator==="List",set:e=>e.operator==="Set",tuple:e=>e.operator==="Tuple"||e.operator==="Single"||e.operator==="Pair"||e.operator==="Triple",single:e=>e.operator==="Single",pair:e=>e.operator==="Pair",triple:e=>e.operator==="Triple",scalar:e=>e.rank===0,tensor:e=>e.rank>0,vector:e=>e.rank===1,matrix:e=>e.rank===2,unit:e=>e.operator==="Unit",dimension:e=>e.operator==="Dimension",angle:e=>e.operator==="Angle",polynomial:e=>e.unknowns.length===1};function Rl(e,n){for(let i of n)if(Al[i](e)!==!0)return!1;return!0}function Ed(e){let n=/\\[a-zA-Z]+|[{}]|[\d]+|[+\-*/^_=()><,.;]|[a-zA-Z]/g,i=e.match(n);return i?i.filter(t=>!/^[ \f\n\r\t\v\xA0\u2028\u2029]+$/.test(t)):[]}function Nd(e){let n=e.peek,i=null;if(n==="\\mathrm")e.nextToken(),i=e.parseStringGroup();else if(/^[a-z]$/.test(n))for(i=e.nextToken();/^[a-z]$/.test(e.peek);)i+=e.nextToken();else{let t={">0":"positive","\\gt0":"positive","<0":"negative","\\lt0":"negative",">=0":"nonnegative","\\geq0":"nonnegative","<=0":"nonpositive","\\leq0":"nonpositive","!=0":"notzero","\\neq0":"notzero","\\neq1":"notone","!=1":"notone","\\in\\R":"real","\\in\\mathbb{R}":"real","\\in\\C":"complex","\\in\\mathbb{C}":"complex","\\in\\Q":"rational","\\in\\mathbb{Q}":"rational","\\in\\Z^+":"integer,positive","\\in\\Z^-":"intger,negative","\\in\\Z^*":"nonzero","\\in\\R^+":"positive","\\in\\R^-":"negative","\\in\\R^*":"real,nonzero","\\in\\Z":"integer","\\in\\mathbb{Z}":"integer","\\in\\N":"integer,nonnegative","\\in\\mathbb{N}":"integer,nonnegative","\\in\\N^*":"integer,positive","\\in\\N_0":"integer,nonnegative","\\in\\R\\backslash\\Q":"irrational"};for(let r in t)if(e.matchAll(Ed(r))){i=t[r];break}}if(!i)return null;if(!Object.keys(Al).includes(i))throw new Error(`Unexpected condition "${i}" in a rule`);return i}function kl(e){let n=[];do{let i=Nd(e);if(!i)break;n.push(i)}while(e.match(","));return n.join(",")}function Io(e){let n=null;if(e.match(":"))n=kl(e);else if(e.matchAll(["_","<{>"])&&(n=kl(e),!e.match("<}>")))return null;return n}function wl(e,n,i){if(!(n===void 0||typeof n=="function")){if(typeof n=="string"){let t=e.parse(n,{canonical:i?.canonical??!1});return t=t.map(r=>r.symbol&&r.symbol.length===1?e.symbol("_"+r.symbol):r,{canonical:!1}),t}return e.box(n,{canonical:i?.canonical??!1})}}function vd(e,n,i){let t=p=>({kind:"symbol",latexTrigger:p,parse:(m,y)=>{s[p]||(s[p]=`_${p}`);let x=Io(m);return x!==null&&(o[p]?o[p]+=","+x:o[p]=x),s[p]}}),r=e.latexDictionary,s={},o={};e.latexDictionary=[...r,{kind:"prefix",precedence:100,latexTrigger:"...",parse:(p,m)=>{let y=p.nextToken();if(!"abcfghjklmnopqrstuvwxyz".includes(y))return null;let x="__";if(p.match("?")&&(x="___"),s[y]&&s[y]!==`${x}${y}`)throw new Error(`Duplicate wildcard "${y}"`);s[y]||(s[y]=`${x}${y}`);let E=Io(p);return E===null?null:(o[y]?o[y]+=","+E:o[y]=E,`${x}${y}`)}},..."abcfghjklmnopqrstuvwxyz".split("").map(t),{kind:"infix",precedence:100,latexTrigger:"->",parse:(p,m,y)=>{let x=p.parseExpression({...y,minPrec:20});if(x===null)return null;let E=null;if(p.match(";")){let I=!1,q=p.index;do{p.skipSpace();let be=p.nextToken();if(s[be]){let Ee=Io(p);if(Ee===null||!Ee){I=!0,p.index=q;break}o[be]?o[be]+=","+Ee:o[be]=Ee}}while(!I&&!p.atEnd);E=p.parseExpression(y)}let _=[];for(let I in o){let q=o[I].split(",");q.length!==0&&(q.length===1?_.push(["Condition",s[I],q[0]]):_.push(["Condition",s[I],["And",...q]]))}let R;return E&&_.length>0?R=["And",E,..._]:E?R=E:_.length===1?R=_[0]:_.length>1&&(R=["And",..._]),R?["Rule",m,x,R]:["Rule",m,x]}}];let a=e.parse(n,{canonical:i?.canonical??!1});if(e.latexDictionary=r,!a.isValid||a.operator!=="Rule")throw new Error(`Invalid rule "${n}"
|
|
45
|
-
| ${
|
|
68
|
+
943987003023703395183286900015581939880427074115422278197165230110735658339673`}}},{PreIncrement:{signature:"(number) -> number"},PreDecrement:{signature:"(number) -> number"}},{IsPrime:{description:"`IsPrime(n)` returns `True` if `n` is a prime number",wikidata:"Q49008",complexity:1200,broadcastable:!0,signature:"(number) -> boolean",evaluate:([n],{engine:e})=>{let t=xo(n);if(t!==void 0)return e.symbol(t?"True":"False")}},IsComposite:{description:"`IsComposite(n)` returns `True` if `n` is not a prime number",complexity:1200,broadcastable:!0,signature:"(number) -> boolean",canonical:(n,{engine:e})=>e.box(["Not",["IsPrime",...n]])},IsOdd:{description:"`IsOdd(n)` returns `True` if `n` is an odd number",complexity:1200,broadcastable:!0,signature:"(number) -> boolean",evaluate:(n,{engine:e})=>{let t=!1,i=n.every(r=>{if(r.im!==0)return!1;let o=Qn(r);if(o!==null)return o%BigInt(2)!==BigInt(0);let s=r.re;return Number.isInteger(s)?s%2!==0:(t=!0,!1)});if(!t)return e.symbol(i?"True":"False")}},IsEven:{description:"Even Number",complexity:1200,broadcastable:!0,signature:"(number) -> boolean",canonical:(n,{engine:e})=>e.box(["Not",["IsOdd",...n]])}},{GCD:{description:"Greatest Common Divisor",complexity:1200,broadcastable:!1,signature:"(any*) -> integer",sgn:()=>"positive",evaluate:n=>Ec(n,"GCD")},LCM:{description:"Least Common Multiple",complexity:1200,broadcastable:!1,signature:"(any*) -> integer",sgn:()=>"positive",evaluate:n=>Ec(n,"LCM")},Numerator:{description:"Numerator of an expression",complexity:1200,broadcastable:!0,lazy:!0,signature:"(number) -> number | nothing",canonical:(n,{engine:e})=>{if(n.length===0)return e.Nothing;let t=n[0];return t.operator==="Rational"||t.operator==="Divide"?t.op1:e._fn("Numerator",Qe(e,n))},sgn:([n])=>n.sgn,evaluate:(n,{engine:e})=>{let t=e;if(n.length===0)return t.Nothing;let i=n[0];return i.operator==="Rational"||i.operator==="Divide"?i.op1.evaluate():i.numerator}},Denominator:{description:"Denominator of an expression",complexity:1200,broadcastable:!0,lazy:!0,signature:"(number) -> number | nothing",canonical:(n,{engine:e})=>{if(n.length===0)return e.Nothing;let t=n[0];if(t.operator==="Rational"||t.operator==="Divide")return t.op2;let i=rn(t);return i!==void 0?e.number(i[1]):e._fn("Denominator",Qe(e,n))},sgn:()=>"positive",evaluate:(n,{engine:e})=>{let t=e;if(n.length===0)return t.Nothing;let i=n[0];return i.operator==="Rational"||i.operator==="Divide"?i.op2.evaluate():i.denominator}},NumeratorDenominator:{description:"Sequence of Numerator and Denominator of an expression",complexity:1200,broadcastable:!0,lazy:!0,signature:"(number) -> tuple<number, number> | nothing",canonical:(n,{engine:e})=>{if(n.length===0)return e.Nothing;let t=n[0];if(t.operator==="Rational"||t.operator==="Divide")return e.tuple(...t.ops);let i=rn(t.evaluate());return i!==void 0?e.tuple(e.number(i[0]),e.number(i[1])):e._fn("NumeratorDenominator",n.map(r=>r.evaluate()))},evaluate:(n,{engine:e})=>{let t=e;if(n.length===0)return t.Nothing;let i=n[0];return i.operator==="Rational"||i.operator==="Divide"?t.tuple(...i.ops):t.tuple(...i.numeratorDenominator)}}},{Max:{description:"Maximum of two or more numbers",complexity:1200,broadcastable:!1,signature:"(value*) -> number | list",sgn:n=>{if(n.some(e=>e.isReal==!1||e.isNaN))return"unsigned";if(!n.some(e=>e.isReal==!1||e.isNaN!==!1)){if(n.some(e=>e.isPositive))return"positive";if(n.every(e=>e.isNonPositive))return n.some(e=>e.is(0))?"zero":"non-positive";if(n.some(e=>e.isNonNegative))return"non-negative";if(n.every(e=>e.isNegative))return"negative";if(n.some(e=>!e.is(0)))return"not-zero"}},evaluate:(n,{engine:e})=>yo(e,n,"Max")},Min:{description:"Minimum of two or more numbers",complexity:1200,broadcastable:!1,signature:"(value+) -> number | list",sgn:n=>{if(n.some(e=>e.isReal==!1||e.isNaN))return"unsigned";if(!n.some(e=>e.isReal==!1||e.isNaN!==!1)){if(n.some(e=>e.isNegative))return"negative";if(n.every(e=>e.isNonNegative))return n.some(e=>e.is(0))?"zero":"non-negative";if(n.some(e=>e.isNonPositive))return"non-positive";if(n.every(e=>e.isPositive))return"positive"}},evaluate:(n,{engine:e})=>yo(e,n,"Min")},Supremum:{description:"Like Max, but defined for open sets",complexity:1200,broadcastable:!1,signature:"(value*) -> number | list",evaluate:(n,{engine:e})=>yo(e,n,"Supremum")},Infimum:{description:"Like Min, but defined for open sets",complexity:1200,broadcastable:!1,signature:"(value*) -> number | list",evaluate:(n,{engine:e})=>yo(e,n,"Infimum")},Product:{description:"`Product(f, a, b)` computes the product of `f` from `a` to `b`",wikidata:"Q901718",complexity:1e3,broadcastable:!1,scoped:!0,lazy:!0,signature:"((number+) -> number, (tuple<integer>|tuple<integer, integer>)+) -> number",canonical:([n,...e],{scope:t})=>Fs("Product",n,e,t),evaluate:(n,e)=>{let t=(r,o)=>(o=o.evaluate(e),o.isNumberLiteral?r.mul(o.numericValue):null),i=fi(Qi(n[0],n.slice(1),t,e.engine._numericValue(1)),e.engine._timeRemaining);return e.engine.number(i??NaN)},evaluateAsync:async(n,e)=>{let t=(r,o)=>(o=o.evaluate(e),o.isNumberLiteral?r.mul(o.numericValue):null),i=await ci(Qi(n[0],n.slice(1),t,e.engine._numericValue(1)),e.engine._timeRemaining,e.signal);return e.engine.number(i??NaN)}},Sum:{description:"`Sum(f, [a, b])` computes the sum of `f` from `a` to `b`",wikidata:"Q218005",complexity:1e3,broadcastable:!1,scoped:!0,lazy:!0,signature:"((number) -> number, bounds:tuple+) -> number",canonical:([n,...e],{scope:t})=>Fs("Sum",n,e,t),evaluate:([n,...e],{engine:t})=>t.number(fi(Qi(n,e,(i,r)=>(r=r.evaluate(),r.isNumberLiteral?i.add(r.numericValue):null),t._numericValue(0)),t._timeRemaining)),evaluateAsync:async(n,{engine:e,signal:t})=>e.number(await ci(Qi(n[0],n.slice(1),(i,r)=>(r=r.evaluate(),r.isNumberLiteral?i.add(r.numericValue):null),e._numericValue(0)),e._timeRemaining,t))}}];function gm(n){let e=n.engine,t=n.numericValue;if(t!==null)return typeof t=="number"?e.number(Math.abs(t)):e.number(t.abs());if(n.isNonNegative)return n;if(n.isNegative)return n.neg()}function Nc(n,e){let t=n.engine,i=e==="Max"||e==="Supremum";if(n.operator==="Interval"){let r=i?n.op2:n.op1;return!r.isNumber||r.numericValue===null?[void 0,[n]]:[r,[]]}if(n.operator==="Range")if(i){let r=sn(n),o=Dl(r);return[t.number(Math.max(r[0],o)),[]]}else return[t.number(sn(n)[0]),[]];if(n.operator==="Linspace")return n.nops===1?n=i?n.op1:t.One:i?n=n.op2:n=n.op1,[n,[]];if(n.isCollection){let r,o=[];for(let s of n.each()){let[a,u]=Nc(s,e);a&&(r?(i&&a.isGreater(r)||!i&&a.isLess(r))&&(r=a):r=a),o.push(...u)}return[r,o]}return!n.isNumber||n.numericValue===null?[void 0,[n]]:[n,[]]}function yo(n,e,t){let i=t==="Max"||t==="Supremum";if(e=Q(e),e.length===0)return i?n.NegativeInfinity:n.PositiveInfinity;let r,o=[];for(let s of e){let[a,u]=Nc(s,t);a&&(r?(i&&a.isGreater(r)||!i&&a.isLess(r))&&(r=a):r=a),o.push(...u)}return o.length>0?n.box(r?[t,r,...o]:[t,...o]):r??(i?n.NegativeInfinity:n.PositiveInfinity)}function Ec(n,e){let t=n[0].engine,i=e==="LCM"?Nt:Pe,r=e==="LCM"?tc:ta,o=[];if(me(t)){let a=null;for(let u of n)if(a===null)a=Ds(u),(a===null||!a.isInteger())&&o.push(u);else{let l=Ds(u);l&&l.isInteger()?a=r(a,l):o.push(u)}return o.length===0?a===null?t.One:t.number(a):a===null?t._fn(e,o):t._fn(e,[t.number(a),...o])}let s=null;for(let a of n)s===null?a.isInteger&&o.push(a):a.isInteger?s=i(s,a.re):o.push(a);return o.length===0?s===null?t.One:t.number(s):s===null?t._fn(e,o):t._fn(e,[t.number(s),...o])}function xo(n){if(!n.isInteger||n.isNegative||n.numericValue===null)return;let t=P(n);if(t!==null)return Xo(t);let i=Qn(n);if(i!==null)return gu(i)}var hm={Sin:["Cos","_"],Cos:["Negate",["Sin","_"]],Tan:["Power",["Sec","_"],2],Sec:["Multiply",["Tan","_"],["Sec","_"]],Csc:["Multiply",["Negate",["Cot","_"]],["Csc","_"]],Cot:["Negate",["Power",["Csc","_"],2]],Arcsin:["Power",["Subtract",1,["Power","_",2]],["Negate","Half"]],Arccos:["Negate",["Power",["Subtract",1,["Power","_",2]],["Negate","Half"]]],Arctan:["Power",["Add",1,["Power","_",2]],-1],Arcsec:["Multiply",["Power",["Subtract",1,["Power","_",2]],["Negate","Half"]],["Negate",["Power","_",2]]],Arccsc:["Multiply",["Power",["Subtract",1,["Power","_",2]],["Negate","Half"]],["Negate",["Power","_",2]]],Arccot:["Negate",["Power",["Add",1,["Power","_",2]],-1]],Sinh:["Cosh","_"],Cosh:["Sinh","_"],Tanh:["Power",["Sech","_"],2],Sech:["Multiply",["Tanh","_"],"Sech"],Csch:["Multiply",["Coth","_"],"Csch"],Coth:["Negate",["Power",["Csch","_"],2]],Arcsinh:["Power",["Add",["Power","_",2],1],["Negate","Half"]],Arccosh:["Power",["Subtract",["Power","_",2],1],["Negate","Half"]],Arctanh:["Power",["Subtract",1,["Power","_",2]],-1],Arcsech:["Negate",["Power",["Multiply","2","Subtract",["Power","_",2]],["Negate","Half"]]],Arccsch:["Negate",["Power",["Multiply","2","Add",["Power","_",2]],["Negate","Half"]]],Arccoth:["Negate",["Power",["Subtract",1,["Power","_",2]],-1]],Ln:["Divide",1,"_"],Log:["Power",["Multiply","_",["Ln","10"]],-1],Sqrt:["Multiply",["Power","_",["Negate","Half"]],"Half"],Abs:["Which",["Equal","_",0],NaN,["Less","_",0],-1,["Greater","_",0],1,"True",["D",["Abs","_"],"_"]],Erf:["Multiply",["Divide","2",["Sqrt","Pi"]],["Exp",["Negate",["Square","_"]]]],Gamma:["Multiply",["Gamma","_"],["Digamma","_"]],Digamma:["Add",["Multiply",["Digamma","_"],["Gamma","_"]],["Multiply",["Power","_",-1],["Gamma","_"]]],Zeta:["Multiply",["Multiply",-1,["Zeta","_"]],["Digamma","_"]],PolyGamma:["Add",["Multiply",["PolyGamma","_"],["Gamma","_"]],["Multiply",["Power","_",-1],["Gamma","_"]]],Beta:["Multiply",["Add",["Multiply",["Beta","_"],["Digamma","_"]],["Multiply",["Power","_",-1],["Beta","_"]]],["Beta","_"]],Erfc:["Multiply",["Negate",["Erfc","_"]],["Exp",["Negate",["Power","_",2]]],["Power","_",-1]],LambertW:["Multiply",["Power","_",-1],["Multiply",["Add","_",["LambertW","_"]],["Add",["LambertW","_"],1]]],AiryAi:["Multiply",["AiryAi","_"],["AiryBi","_"]],AiryBi:["Multiply",["AiryAi","_"],["AiryBi","_"]],BesselJ:["Multiply",["BesselJ","_"],["BesselY","_"]],BesselY:["Multiply",["BesselJ","_"],["BesselY","_"]],BesselI:["Multiply",["BesselI","_"],["BesselK","_"]],BesselK:["Multiply",["BesselI","_"],["BesselK","_"]],FresnelS:["Multiply",["FresnelS","_"],["FresnelC","_"]],FresnelC:["Multiply",["FresnelS","_"],["FresnelC","_"]],Erfi:["Multiply",["Erfi","_"],["Erf","_"]]};function _c(n,e){if(e===0)return n;let t=n.engine,i="_";n.symbol&&n.operatorDefinition&&(n=An(t.symbol(n.symbol),[t.symbol("_")])),n.operator==="Function"&&(i=n.ops[1]?.symbol??"_",n=n.ops[0]);let r=n;for(;e-- >0&&r;)r=fn(r,i);return r}function fn(n,e){let t=n.engine;if(n.string)return;if(n.isNumberLiteral)return n.engine.Zero;if(n.symbol===e)return n.engine.One;if(n.symbol)return n.engine.Zero;if(!n.operator)return;if(n.operator==="Negate"){let s=fn(n.op1,e);return s?s.neg():t._fn("D",[n.op1,t.symbol(e)]).neg()}if(n.operator==="Add"){let s=n.ops.map(a=>fn(a,e));return s.some(a=>a===void 0)?void 0:H(...s).evaluate()}if(n.operator==="Multiply"){let s=n.ops.map((a,u)=>{let l=n.ops.slice();l.splice(u,1);let c=ae(...l);return(fn(a,e)??t._fn("D",[a,t.symbol(e)])).mul(c)});return s.some(a=>a===void 0)?void 0:H(...s).evaluate()}if(n.operator==="Power"){let[s,a]=n.ops;if(s.symbol===e)return a.mul(s.pow(a.add(t.NegativeOne))).evaluate();let u=s,l=a,c=fn(u,e)??t._fn("D",[u,t.symbol(e)]),d=(fn(l,e)??t._fn("D",[l,t.symbol(e)])).mul(u.ln()),p=l.mul(c).div(u);return n.mul(d.add(p)).evaluate()}if(n.operator==="Divide"){let[s,a]=n.ops,u=fn(s,e)??t._fn("D",[s,t.symbol(e)]),l=fn(a,e)??t._fn("D",[a,t.symbol(e)]);return u.mul(a).sub(l.mul(s)).div(a.pow(2)).evaluate()}let i=hm[n.operator];if(!i){if(n.nops>1)return;let s=t._fn("Derivative",[t.symbol(n.operator),t.One]);if(!s.isValid)return;let a=n.ops[0],u=fn(a,e)??t._fn("D",[a,t.symbol(e)]);return u.isValid?t._fn("Apply",[s,a]).mul(u):void 0}if(n.nops>1)return t._fn("D",[n,t.symbol(e)]);let r=n.ops[0],o=fn(r,e)??t._fn("D",[r,t.symbol(e)]);return An(t.box(i),[r]).mul(o)}var Ic={boolean:n=>n.type.matches("boolean"),string:n=>n.string!==null,number:n=>n.isNumberLiteral,symbol:n=>n.symbol!==null,expression:n=>!0,numeric:n=>{let[e,t]=n.toNumericValue();return t.is(1)},integer:n=>n.isInteger,rational:n=>n.isRational,irrational:n=>n.isRational===!1,real:n=>n.isReal,notreal:n=>!n.isReal,complex:n=>n.type.matches("complex"),imaginary:n=>n.type.matches("imaginary"),positive:n=>n.isPositive,negative:n=>n.isNegative,nonnegative:n=>n.isNonNegative,nonpositive:n=>n.isNonPositive,even:n=>n.isEven,odd:n=>n.isOdd,prime:n=>xo(n)===!0,composite:n=>xo(n)===!1,notzero:n=>n.is(0)===!1,notone:n=>n.is(1)===!1,finite:n=>n.isFinite,infinite:n=>n.isFinite===!1,constant:n=>n.valueDefinition?.isConstant??!1,variable:n=>!(n.valueDefinition?.isConstant??!0),function:n=>n.operatorDefinition!==void 0,relation:n=>Je(n.operator),equation:n=>n.operator==="Equal",inequality:n=>vn(n.operator),collection:n=>n.isCollection,list:n=>n.operator==="List",set:n=>n.operator==="Set",tuple:n=>n.operator==="Tuple"||n.operator==="Single"||n.operator==="Pair"||n.operator==="Triple",single:n=>n.operator==="Single",pair:n=>n.operator==="Pair",triple:n=>n.operator==="Triple",scalar:n=>n.rank===0,tensor:n=>n.rank>0,vector:n=>n.rank===1,matrix:n=>n.rank===2,unit:n=>n.operator==="Unit",dimension:n=>n.operator==="Dimension",angle:n=>n.operator==="Angle",polynomial:n=>n.unknowns.length===1};function wc(n,e){for(let t of e)if(Ic[t](n)!==!0)return!1;return!0}function ym(n){let e=/\\[a-zA-Z]+|[{}]|[\d]+|[+\-*/^_=()><,.;]|[a-zA-Z]/g,t=n.match(e);return t?t.filter(i=>!/^[ \f\n\r\t\v\xA0\u2028\u2029]+$/.test(i)):[]}function xm(n){let e=n.peek,t=null;if(e==="\\mathrm")n.nextToken(),t=n.parseStringGroup();else if(/^[a-z]$/.test(e))for(t=n.nextToken();/^[a-z]$/.test(n.peek);)t+=n.nextToken();else{let i={">0":"positive","\\gt0":"positive","<0":"negative","\\lt0":"negative",">=0":"nonnegative","\\geq0":"nonnegative","<=0":"nonpositive","\\leq0":"nonpositive","!=0":"notzero","\\neq0":"notzero","\\neq1":"notone","!=1":"notone","\\in\\R":"real","\\in\\mathbb{R}":"real","\\in\\C":"complex","\\in\\mathbb{C}":"complex","\\in\\Q":"rational","\\in\\mathbb{Q}":"rational","\\in\\Z^+":"integer,positive","\\in\\Z^-":"intger,negative","\\in\\Z^*":"nonzero","\\in\\R^+":"positive","\\in\\R^-":"negative","\\in\\R^*":"real,nonzero","\\in\\Z":"integer","\\in\\mathbb{Z}":"integer","\\in\\N":"integer,nonnegative","\\in\\mathbb{N}":"integer,nonnegative","\\in\\N^*":"integer,positive","\\in\\N_0":"integer,nonnegative","\\in\\R\\backslash\\Q":"irrational"};for(let r in i)if(n.matchAll(ym(r))){t=i[r];break}}if(!t)return null;if(!Object.keys(Ic).includes(t))throw new Error(`Unexpected condition "${t}" in a rule`);return t}function Sc(n){let e=[];do{let t=xm(n);if(!t)break;e.push(t)}while(n.match(","));return e.join(",")}function la(n){let e=null;if(n.match(":"))e=Sc(n);else if(n.matchAll(["_","<{>"])&&(e=Sc(n),!n.match("<}>")))return null;return e}function Tc(n,e,t){if(!(e===void 0||typeof e=="function")){if(typeof e=="string"){let i=n.parse(e,{canonical:t?.canonical??!1});return i=i.map(r=>r.symbol&&r.symbol.length===1?n.symbol("_"+r.symbol):r,{canonical:!1}),i}return n.box(e,{canonical:t?.canonical??!1})}}function bm(n,e,t){let i=p=>({kind:"symbol",latexTrigger:p,parse:(x,g)=>{o[p]||(o[p]=`_${p}`);let b=la(x);return b!==null&&(s[p]?s[p]+=","+b:s[p]=b),o[p]}}),r=n.latexDictionary,o={},s={};n.latexDictionary=[...r,{kind:"prefix",precedence:100,latexTrigger:"...",parse:(p,x)=>{let g=p.nextToken();if(!"abcfghjklmnopqrstuvwxyz".includes(g))return null;let b="__";if(p.match("?")&&(b="___"),o[g]&&o[g]!==`${b}${g}`)throw new Error(`Duplicate wildcard "${g}"`);o[g]||(o[g]=`${b}${g}`);let _=la(p);return _===null?null:(s[g]?s[g]+=","+_:s[g]=_,`${b}${g}`)}},..."abcfghjklmnopqrstuvwxyz".split("").map(i),{kind:"infix",precedence:100,latexTrigger:"->",parse:(p,x,g)=>{let b=p.parseExpression({...g,minPrec:20});if(b===null)return null;let _=null;if(p.match(";")){let z=!1,be=p.index;do{p.skipSpace();let ke=p.nextToken();if(o[ke]){let hn=la(p);if(hn===null||!hn){z=!0,p.index=be;break}s[ke]?s[ke]+=","+hn:s[ke]=hn}}while(!z&&!p.atEnd);_=p.parseExpression(g)}let k=[];for(let z in s){let be=s[z].split(",");be.length!==0&&(be.length===1?k.push(["Condition",o[z],be[0]]):k.push(["Condition",o[z],["And",...be]]))}let w;return _&&k.length>0?w=["And",_,...k]:_?w=_:k.length===1?w=k[0]:k.length>1&&(w=["And",...k]),w?["Rule",x,b,w]:["Rule",x,b]}}];let a=t?.canonical??!1,u=n.parse(e);if(n.latexDictionary=r,!u.isValid||u.operator!=="Rule")throw new Error(`Invalid rule "${e}"
|
|
69
|
+
| ${bo(u).toString()}
|
|
46
70
|
| A rule should be of the form:
|
|
47
|
-
| <match> -> <replace>; <condition>`);let[
|
|
48
|
-
| The replace expression contains wildcards not present in the match expression`);if(
|
|
71
|
+
| <match> -> <replace>; <condition>`);let[l,c,f]=u.ops;if(a&&(l=l.canonical,c=c.canonical),!Bc(c,l))throw new Error(`Invalid rule "${e}"
|
|
72
|
+
| The replace expression contains wildcards not present in the match expression`);if(l.isSame(c))throw new Error(`Invalid rule "${e}"
|
|
49
73
|
| The match and replace expressions are the same.
|
|
50
|
-
| This may be because the rule is not necessary due to canonical simplification`);let
|
|
51
|
-
| The condition expression contains wildcards not present in the match expression`);
|
|
52
|
-
| A rule must include at least a replace property`);let
|
|
53
|
-
| condition is not a valid function`);
|
|
74
|
+
| This may be because the rule is not necessary due to canonical simplification`);let d;if(f!==void 0){if(!Bc(f,l))throw new Error(`Invalid rule "${e}"
|
|
75
|
+
| The condition expression contains wildcards not present in the match expression`);d=p=>f.subs(p).canonical.evaluate()?.symbol==="True"}return kc(n,{match:l,replace:c,condition:d,id:e},t)}function kc(n,e,t){if(e==null)throw new Error("Expected a rule, not "+e);if(vm(e))return e;if(typeof e=="string")return bm(n,e,t);if(typeof e=="function")return{_tag:"boxed-rule",match:void 0,replace:e,condition:void 0,id:e.toString().replace(/\n/g," ")};let{match:i,replace:r,condition:o,id:s,onMatch:a,onBeforeMatch:u}=e;if(r===void 0)throw new Error(`Invalid rule "${s??JSON.stringify(e,void 0,4)}"
|
|
76
|
+
| A rule must include at least a replace property`);let l;if(typeof o=="string"){let d=ut(o);if(d){let p=n.parse(d,{canonical:t?.canonical??!1});l=(x,g)=>p.subs(x).evaluate()?.symbol==="True"}}else{if(o!==void 0&&typeof o!="function")throw new Error(`Invalid rule ${s??JSON.stringify(e,void 0,4)}
|
|
77
|
+
| condition is not a valid function`);l=o}if(typeof i=="function")throw new Error(`Invalid rule ${s??JSON.stringify(e,void 0,4)}
|
|
54
78
|
| match is not a valid expression.
|
|
55
|
-
| Use a replace function instead to validate and replace the expression`);let
|
|
56
|
-
| the match expression is not valid: ${
|
|
57
|
-
| The replace expression is not valid: ${
|
|
58
|
-
| The replace expression could not be parsed`);return{_tag:"boxed-rule",match:
|
|
59
|
-
${
|
|
60
|
-
| Skipping rule ${JSON.stringify(r)}
|
|
79
|
+
| Use a replace function instead to validate and replace the expression`);n.pushScope();let c=Tc(n,i,t),f=Tc(n,r,t);if(n.popScope(),s||(typeof i=="string"?s=i:s=JSON.stringify(i,void 0,4),r&&(s+=" -> ",typeof r=="string"?s+=r:typeof r=="function"?s+=r?.toString().replace(/\n/g," "):s=JSON.stringify(r,void 0,4)),typeof o=="string"?s+=`; ${o}`:typeof o=="function"&&(s+=`; ${o.toString().replace(/\n/g," ")}`)),c&&!c.isValid)throw new Error(`Invalid rule ${s}
|
|
80
|
+
| the match expression is not valid: ${c.toString()}`);if(f&&!f.isValid)throw new Error(`Invalid rule ${s??JSON.stringify(e,void 0,4)}
|
|
81
|
+
| The replace expression is not valid: ${f?.toString()}`);if(!f&&typeof r!="function")throw new Error(`Invalid rule ${s??JSON.stringify(e,void 0,4)}
|
|
82
|
+
| The replace expression could not be parsed`);return{_tag:"boxed-rule",match:c,replace:f??r,condition:l,useVariations:e.useVariations,id:s,onMatch:a,onBeforeMatch:u}}function hr(n,e,t){if(!e)return{rules:[]};if(typeof e=="object"&&"rules"in e)return e;Array.isArray(e)||(e=[e]);let i=[];for(let r of e)try{i.push(kc(n,r,t))}catch(o){throw new Error(`
|
|
83
|
+
${o.message}
|
|
84
|
+
| Skipping rule ${JSON.stringify(r,void 0,4)}
|
|
61
85
|
|
|
62
|
-
`)}return{rules:
|
|
63
|
-
| Invalid rule "${
|
|
64
|
-
| The canonical form of ${
|
|
65
|
-
| This could indicate that the match expression in canonical form is already simplified and this rule may not be necessary`)}let
|
|
66
|
-
| Rule "${
|
|
86
|
+
`)}return{rules:i}}function ca(n,e,t,i){let r=i?.canonical??(e.isCanonical||e.isStructural),o=!1;if(e.ops&&i?.recursive){let b=e.ops.map(_=>{let k=ca(n,_,{},i);return k?(o=!0,k.value):_});o&&(e=e.engine.function(e.operator,b,{canonical:r}))}let{match:s,replace:a,condition:u,id:l,onMatch:c,onBeforeMatch:f}=n,d=l??"";if(r&&s){let b=gr(s),_=s;s=s.canonical;let k=gr(s);if(!b.every(w=>k.includes(w)))throw new Error(`
|
|
87
|
+
| Invalid rule "${n.id}"
|
|
88
|
+
| The canonical form of ${bo(_).toString()} is "${bo(s).toString()}" and it does not contain all the wildcards of the original match.
|
|
89
|
+
| This could indicate that the match expression in canonical form is already simplified and this rule may not be necessary`)}let p=n.useVariations??i?.useVariations??!1;f?.(n,e);let x=s?e.match(s,{substitution:t,...i,useVariations:p}):{};if(x===null)return o?{value:e,because:d}:null;if(typeof u=="function"){let b={...Object.fromEntries(Object.entries(x).map(([_,k])=>[_.slice(1),k])),...x};try{if(!u(b,e.engine))return o?{value:e,because:d}:null}catch(_){return console.error(`
|
|
90
|
+
| Rule "${n.id}"
|
|
67
91
|
| Error while checking condition
|
|
68
|
-
| ${
|
|
69
|
-
${
|
|
92
|
+
| ${_.message}`),null}}let g=typeof a=="function"?a(e,x):a.subs(x,{canonical:r});return g?(c?.(n,e,g),Em(g)?r?{...g,value:g.value.canonical}:g:{value:r?g.canonical:g,because:d}):null}function et(n,e,t){if(!e)throw new Error("replace(): Expected one or more rules");let i=t?.iterationLimit??1,r=0,o=t?.once??!1,s;typeof e=="object"&&"rules"in e?s=e.rules:s=n.engine.rules(Array.isArray(e)?e:[e]).rules;let a=!1,u=[];for(;!a&&r<i;){a=!0;for(let l of s)try{let c=ca(l,n,{},t);if(c!==null&&c.value!==n&&!c.value.isSame(n)){if(o)return[c];if(u.some(f=>f.value.isSame(c.value)))return u;u.push(c),a=!1,n=c.value}}catch(c){return console.error(`
|
|
93
|
+
${n.toString()}
|
|
70
94
|
${l.id}
|
|
71
|
-
${f.message}`),u}r+=1}return u}function Zt(e,n,i,t){let r=[];for(let s of n.rules){let o=Bo(s,e,i,t);o!==null&&!r.some(a=>a.isSame(o.value))&&r.push(o.value)}return r}function Gr(e){let n=e.symbol;if(n&&n.startsWith("_"))return e.engine.symbol(n.slice(1));if(e.ops){let i=e.ops.map(t=>Gr(t));return e.engine.function(e.operator,i,{canonical:!1})}return e}function Ut(e){let n=[];return e.symbol&&e.symbol.startsWith("_")&&n.push(e.symbol),e.ops&&e.ops.forEach(i=>n.push(...Ut(i))),n}function Dl(e,n){let i=Ut(e),t=Ut(n);return i.every(r=>t.includes(r))}function Td(e){return e&&typeof e=="object"&&"because"in e&&"value"in e}function Sd(e){return e&&typeof e=="object"&&e._tag==="boxed-rule"}var Pl=[{match:["Multiply","_x","__a"],replace:0,id:"ax",condition:({__a:e})=>!e.has("_x")},{match:["Add",["Divide","_a","_x"],"__b"],replace:1/0,useVariations:!0,condition:({_a:e,__b:n})=>!e.has("_x")&&!n.has("_x")},{match:["Add",["Multiply","_x","__a"],"__b"],replace:["Divide",["Negate","__b"],"__a"],useVariations:!0,condition:({__a:e,__b:n})=>!e.has("_x")&&!n.has("_x")},{match:["Add",["Multiply","_a",["Power","_x","_n"]],"__b"],replace:["Power",["Divide",["Negate","__b"],"_a"],["Divide",1,"_n"]],useVariations:!0,condition:({_a:e,__b:n,_n:i})=>!e.has("_x")&&!n.has("_x")&&!i.is(0)},{match:["Add",["Multiply","_a",["Power","_x","_n"]],"__b"],replace:["Negate",["Power",["Divide",["Negate","__b"],"_a"],["Divide",1,"_n"]]],useVariations:!0,condition:({_a:e,__b:n,_n:i})=>!e.has("_x")&&!n.has("_x")&&!i.is(0)&&(i.isEven??!1)},{match:["Add",["Multiply","__a",["Power","_x",2]],["Multiply","__b","_x"],"__c"],replace:["Divide",["Add",["Negate","__b"],["Sqrt",["Subtract",["Square","__b"],["Multiply",4,"__a","__c"]]]],["Multiply",2,"__a"]],useVariations:!0,condition:({__a:e,__b:n,__c:i})=>!e.has("_x")&&!n.has("_x")&&!i.has("_x")},{match:["Add",["Multiply","__a",["Power","_x",2]],["Multiply","__b","_x"],"__c"],replace:["Divide",["Subtract",["Negate","__b"],["Sqrt",["Subtract",["Square","__b"],["Multiply",4,"__a","__c"]]]],["Multiply",2,"__a"]],useVariations:!0,condition:({__a:e,__b:n,__c:i})=>!e.has("_x")&&!n.has("_x")&&!i.has("_x")},{match:["Add",["Multiply","__a",["Exp",["Multiply","__b","_x"]]],"__c"],replace:["Divide",["Ln",["Negate",["Divide","__c","__a"]]],"__b"],useVariations:!0,condition:({__a:e,__c:n})=>((!e.is(0)&&n.div(e).isNegative)??!1)&&!e.has("_x")&&!n.has("_x")},{match:["Add",["Multiply","__a",["Exp","_x"]],"__c"],replace:["Ln",["Negate",["Divide","__c","__a"]]],useVariations:!0,condition:({__a:e,__c:n})=>((!e.is(0)&&n.div(e).isNegative)??!1)&&!e.has("_x")&&!n.has("_x")},{match:["Add",["Exp","_x"],"__c"],replace:["Ln",["Negate","__c"]],useVariations:!0,condition:({__c:e})=>e.isNegative??!1},{match:["Add",["Exp",["Multiply","__b","_x"]],"__c"],replace:["Divide",["Ln",["Negate","__c"]],"__b"],useVariations:!0,condition:({__c:e})=>e.isNegative??!1},{match:["Add",["Multiply","__a",["Log","_x","__b"]],"__c"],replace:["Power","__b",["Negate",["Divide","__c","__a"]]],useVariations:!0,condition:({__a:e,__b:n})=>(!e.is(0)&&n.isPositive)??!1},{match:["Multiply","__a",["Log","_x","__b"]],replace:["Power","__b",["Negate",["Divide","__c","__a"]]],useVariations:!0,condition:({__a:e,__b:n})=>(!e.is(0)&&n.isPositive)??!1},{match:["Add",["Abs",["Add",["Multiply","__a","_x"],"__b"]],"__c"],replace:["Divide",["Subtract","__b","__c"],"__a"]},{match:["Add",["Abs",["Add",["Multiply","__a","_x"],"__b"]],"__c"],replace:["Divide",["Negate",["Add","__b","__c"],"__a"]]},{match:"ax + \\mathrm{__b} \\sqrt{cx + \\mathrm{__d}} + \\mathrm{__g}",replace:"\\frac{-(2 a g - \\mathrm{__b}^2 c) + \\sqrt{(2 a \\mathrm{__g} - \\mathrm{__b}^2 c)^2 - 4 a^2(g^2 - b^2 \\mathrm{__d})}}{2 a^2}",useVariations:!0,condition:({a:e,__b:n,c:i,d:t,__g:r})=>!e.has("_x")&&!n.has("_x")&&!i.has("_x")&&!t.has("_x")&&!r.has("_x")},{match:"ax + \\mathrm{__b} \\sqrt{cx + \\mathrm{__d}} + \\mathrm{__g}",replace:"\\frac{-(2 a g - \\mathrm{__b}^2 c) - \\sqrt{(2 a \\mathrm{__g} - \\mathrm{__b}^2 c)^2 - 4 a^2(g^2 - b^2 \\mathrm{__d})}}{2 a^2}",useVariations:!0,condition:({a:e,__b:n,c:i,d:t,__g:r})=>!e.has("_x")&&!n.has("_x")&&!i.has("_x")&&!t.has("_x")&&!r.has("_x")}];function Ur(e,n){let i=e.engine;e.operator==="Equal"?e=e.op1.expand().sub(e.op2.expand()).simplify():e=e.expand().simplify();let t=i.getRuleSet("solve-univariate"),r=[e.subs({[n]:"_x"},{canonical:!1})],s=r.flatMap(o=>Zt(o,t,{_x:i.symbol("_x")},{useVariations:!0,canonical:!0}));return s.length===0&&(r=r.flatMap(o=>Cl(o)),s=r.flatMap(o=>Zt(o,t,{_x:i.symbol(n)},{useVariations:!0,canonical:!0}))),s.length===0&&(r=r.flatMap(o=>Pe(o.canonical)).filter(o=>o!==null),r=r.flatMap(o=>Cl(o)),s=r.flatMap(o=>Zt(o,t,{_x:i.symbol(n)},{useVariations:!0,canonical:!0}))),_d(e,n,s.map(o=>o.evaluate().simplify()))}var Ol=[{match:["Add",["Abs",["Add",["Multiply","__a","_x"],"__b"]],"__c"],replace:["Add",["Multiply","__a","_x"],"__b","__c"]},{match:["Add",["Abs",["Add",["Multiply","__a","_x"],"__b"]],"__c"],replace:["Add",["Negate",["Multiply","__a","_x"]],["Negate","__b"],"__c"]},{match:["Multiply","__a",["Power","_b","_n"]],replace:"_b",condition:({__a:e,_b:n,_n:i})=>!e.has("_x")&&n.has("_x")&&!i.is(0)&&!i.has("_x")},{match:["Multiply","__a",["Sqrt","_b"]],replace:["Multiply",["Square","_a"],"__b"],condition:({_b:e})=>e.has("_x")},{match:["Divide","_a","_b"],replace:"_a",condition:({_a:e,_b:n})=>e.has("_x")&&!n.is(0)},{match:["Multiply","__a","_b"],replace:"_b",condition:({__a:e,_b:n})=>!e.has("_x")&&n.has("_x")},{match:["Add",["Ln","_a"],["Ln","_b"],"__c"],replace:["Add",["Ln",["Multiply","_a","_b"]],"__c"]},{match:["Multiply",["Exp","__a"],["Exp","__b"],"__c"],replace:["Multiply",["Exp",["Add","_a","_b"]],"__c"]},{match:["Ln","_a"],replace:["Subtract","_a",1],condition:({_a:e})=>e.has("_x")},{match:["Sin","_a"],replace:"_a",condition:({_a:e})=>e.has("_x")},{match:["Cos","_a"],replace:["Subtract","_a",["Divide","Pi",2]],condition:({_a:e})=>e.has("_x")},{match:["Tan","_a"],replace:"_a",condition:({_a:e})=>e.has("_x")},{match:["Add",["Sin","_a"],["Cos","_a"]],replace:1,condition:({_a:e})=>e.has("_x")},{match:["Subtract",["Square",["Sin","_a"]],["Square",["Cos","_a"]]],replace:["PlusMinus",["Sin","_a"],["Divide",["Sqrt",2],2]],condition:({_a:e})=>e.has("_x")}];function Cl(e){let n=e.engine,i=n.getRuleSet("harmonization");return Zt(e,i,{_x:n.symbol("_x")})}function _d(e,n,i){return i.filter(t=>{let r=e.subs({[n]:t}).N();return r===null||!r.isValid||r.isNaN||r.has(n)?!1:r.isEqual(0)})}function Ll(e){if(e.operator==="Element")return kd(e);if(e.operator==="Equal")return Id(e);if(zn(e))return Bd(e);throw new Error("Unsupported assumption. Use `Element`, `Equal` or an inequality")}function Id(e){e.operator;let n=e.unknowns;if(n.length===0){let r=e.evaluate();return r.symbol==="True"?"tautology":r.symbol==="False"?"contradiction":(e.canonical.evaluate(),"not-a-predicate")}let i=e.engine,t=e.op1.symbol;if(t&&!Dd(i,t)&&!e.op2.has(t)){let r=e.op2.evaluate();if(!r.isValid)return"not-a-predicate";let s=i.lookupSymbol(t);return s?s.type&&!r.type.matches(s.type)&&!s.inferredType?"contradiction":(s.value=r,s.inferredType&&(s.type=r.type),"ok"):(i.defineSymbol(t,{value:r}),"ok")}if(n.length===1){let r=n[0],s=Ur(e,r);s.length===0&&i.assumptions.set(i.function("Equal",[e.op1.sub(e.op2),0]),!0);let o=s.length===1?s[0]:i.function("List",s),a=i.lookupSymbol(r);return a?a.type&&!s.every(u=>!u.type||o.type.matches(u.type))?"contradiction":(a.value=o,"ok"):(i.defineSymbol(r,{value:o}),"ok")}return i.assumptions.set(e,!0),"ok"}function Bd(e){let n=e.engine;if(e.op1.symbol&&!ko(n,e.op1.symbol))return e.op2.is(0)?e.operator==="Less"?n.defineSymbol(e.op1.symbol,{type:"real",flags:{sgn:"negative"}}):e.operator==="LessEqual"?n.defineSymbol(e.op1.symbol,{type:"real",flags:{sgn:"non-positive"}}):e.operator==="Greater"?n.defineSymbol(e.op1.symbol,{type:"real",flags:{sgn:"positive"}}):e.operator==="GreaterEqual"&&n.defineSymbol(e.op1.symbol,{type:"real",flags:{sgn:"non-negative"}}):(n.defineSymbol(e.op1.symbol,{type:"real"}),n.assumptions.set(e,!0)),"ok";let i="",t,r;if(e.operator==="Less"?(t=e.op1,r=e.op2,i="<"):e.operator==="LessEqual"?(t=e.op1,r=e.op2,i="<="):e.operator==="Greater"?(t=e.op2,r=e.op1,i="<"):e.operator==="GreaterEqual"&&(t=e.op2,r=e.op1,i="<="),!i)return"internal-error";let s=t.sub(r),o=n.box([i==="<"?"Less":"LessEqual",s,0]).evaluate();if(o.symbol==="True")return"tautology";if(o.symbol==="False")return"contradiction";let a=o.unknowns;return a.length===0?"not-a-predicate":(a.length===1&&(n.lookupSymbol(a[0])||n.defineSymbol(a[0],{type:"real"})),o.operator==="Less"||o.operator,n.assumptions.set(o,!0),"ok")}function kd(e){e.operator;let n=e.engine,i=wd(e.op1);if(i.length===1){let r=e.op2.evaluate();if(!r.isValid)return"not-a-predicate";let s=vr(r);if(s==="unknown")throw new Error(`Invalid domain "${r.toString()}"`);return n.declare(i[0],s),"ok"}if(e.op1.symbol&&ko(n,e.op1.symbol)){let r=e.op2.evaluate();if(!r.isValid)return"not-a-predicate";let s=vr(r);n.context?.ids?.has(e.op1.symbol)||n.declare(e.op1.symbol,vr(r));let o=n.lookupSymbol(e.op1.symbol);if(o)return o.type&&!v(s,o.type.type)?"contradiction":(o.type=new C(s),"ok");let a=n.lookupFunction(e.op1.symbol);return a?v(s,Kn(a.signature.type))?"ok":"contradiction":"not-a-predicate"}if(i.length>0)return n.assumptions.set(e,!0),"ok";let t=e.evaluate();return t.symbol==="True"?"tautology":t.symbol==="False"?"contradiction":"not-a-predicate"}function ko(e,n){return(e.lookupSymbol(n)??e.lookupFunction(n))!==void 0}function wd(e){return e.symbols.filter(n=>!ko(e.engine,n))}function Dd(e,n){return e.lookupFunction(n)?!1:e.lookupSymbol(n)?.value!==void 0}function Fl(e,n,i,t,r){if(n.numericValue!==null&&n.isNegative){let s=n.numericValue;if(typeof s=="number")return L(e,"Subtract",[i,e.number(-s)],t,r);if(n.type.matches("rational"))return L(e,"Subtract",[i,e.number(s.neg())],t,r)}return n.operator==="Negate"&&i.operator!=="Negate"?L(e,"Subtract",[i,n.op1],t,r):null}function Ad(e,n,i,t,r){let s=t.exclude;if(n==="Add"&&i.length===2&&!s.includes("Subtract")){let o=Fl(e,i[0],i[1],t,r)??Fl(e,i[1],i[0],t,r);if(o)return o}if(n==="Divide"&&i.length===2&&s.includes("Divide"))return L(e,"Multiply",[i[0],e._fn("Power",[i[1],e.NegativeOne])],t,r);if(n==="Multiply"&&!s.includes("Negate")&&i[0].im===0&&i[0].re===-1)return i.length===2?L(e,"Negate",[i[1]],t):L(e,"Negate",[e._fn("Multiply",[...i.slice(1)].sort(fe))],t,r);if(n==="Multiply"&&!s.includes("Divide")){let o=new Be(e,i,{canonical:!1}).asRationalExpression();if(o.operator==="Divide")return L(e,o.operator,o.ops,t,r)}if(n==="Power"){if(!s.includes("Exp")&&i[0]?.symbol==="ExponentialE")return L(e,"Exp",[i[1]],t,r);if(i[1]?.numericValue!==null){let o=G(i[1]);if(o===2&&!s.includes("Square"))return L(e,"Square",[i[0]],t,r);if(o!==null&&o<0&&!s.includes("Divide"))return L(e,"Divide",[e.One,o===-1?i[0]:i[0].pow(-o)],t,r);let a=i[1].re;if(!s.includes("Sqrt")&&a===.5)return L(e,"Sqrt",[i[0]],t,r);if(!s.includes("Sqrt")&&a===-.5)return L(e,"Divide",[e.One,e._fn("Sqrt",[i[0]])],t,r);if(Bn(a)){let u=Os(a),l=Ls(a);if(u===1){if(!s.includes("Sqrt")&&l===2)return L(e,"Sqrt",[i[0]],t,r);if(!s.includes("Root"))return L(e,"Root",[i[0],e.number(a[1])],t,r)}if(u===-1){if(!s.includes("Sqrt")&&l===2)return L(e,"Divide",[e.One,e._fn("Sqrt",[i[0]])],t,r);if(!s.includes("Root"))return L(e,"Divide",[e.One,e._fn("Root",[i[0],e.number(a[1])])],t,r)}}}}if(n==="Add"&&i.length===2&&!s.includes("Subtract")){if(i[1]?.numericValue!==null){let o=G(i[1]);if(o!==null&&o<0)return L(e,"Subtract",[i[0],e.number(-o)],t,r)}if(i[1]?.operator==="Negate")return L(e,"Subtract",[i[0],i[1].op1],t,r)}if(n==="Tuple"){if(i.length===1&&!s.includes("Single"))return L(e,"Single",i,t,r);if(i.length===2&&!s.includes("Pair"))return L(e,"Pair",i,t,r);if(i.length===3&&!s.includes("Triple"))return L(e,"Triple",i,t,r)}return L(e,n,i,t,r)}function L(e,n,i,t,r){let s=t.exclude;if(n==="Negate"&&i.length===1){let l=i[0]?.numericValue;if(l!==null){if(typeof l=="number")return Ye(e,-l,t);if(l instanceof M||l instanceof $)return Ye(e,l.neg(),t);if(Bn(l))return Ye(e,ui(l),t)}}if(typeof n=="string"&&s.includes(n)){if(n==="Rational"&&i.length===2)return L(e,"Divide",i,t,r);if(n==="Complex"&&i.length===2)return L(e,"Add",[i[0],e._fn("Multiply",[i[1]??e.symbol("Undefined"),e.I])],t,r);if(n==="Sqrt"&&i.length===1)return L(e,"Power",[i[0],s.includes("Half")?e.number([1,2]):e.Half],t,r);if(n==="Root"&&i.length===2&&i[1]?.numericValue!==null){let l=G(i[1]);if(l===2)return L(e,"Sqrt",[i[0]],t);if(l!==null)return l<0?L(e,"Divide",[e.One,e._fn("Power",[i[0]??e.symbol("Undefined"),e.number([1,-l])])],t,r):L(e,"Power",[i[0],e.number([1,-l])],t,r)}if(n==="Square"&&i.length===1)return L(e,"Power",[i[0],e.number(2)],t,r);if(n==="Exp"&&i.length===1)return L(e,"Power",[e.E,i[0]],t,r);if(n==="Pair"||n=="Single"||n==="Triple")return L(e,"Tuple",i,t,r);if(n==="Subtract"&&i.length===2)return L(e,"Add",[i[0],e._fn("Negate",[i[1]??e.symbol("Undefined")])],t,r);if(n==="Subtract"&&i.length===1)return L(e,"Negate",i,t,r)}let a=[n,...i.map(l=>l?wo(e,l,t):"Undefined")],u={...r??{}};return t.metadata.includes("latex")?u.latex=u.latex??e.box({fn:a}).latex:u.latex="",t.metadata.includes("wikidata")||(u.wikidata=""),!u.latex&&!u.wikidata&&t.shorthands.includes("function")?a:u.latex&&u.wikidata?{fn:a,latex:u.latex,wikidata:u.wikidata}:u.latex?{fn:a,latex:u.latex}:u.wikidata?{fn:a,wikidata:u.wikidata}:{fn:a}}function Rd(e,n){return e=e,n.shorthands.includes("string")?`'${e}'`:{str:e}}function Wn(e,n,i,t){if(n==="Half"&&i.exclude.includes("Half"))return Ye(e,[1,2],i,t);if(t={...t},i.metadata.includes("latex")?(t.latex=t.latex??e.box({sym:n}).latex,t.latex!==void 0&&(t.latex=t.latex)):t.latex=void 0,i.metadata.includes("wikidata")){if(t.wikidata===void 0){let r=e.lookupSymbol(n)?.wikidata;r!==void 0&&(t.wikidata=r)}}else t.wikidata=void 0;return n=n,t.latex===void 0&&t.wikidata===void 0&&i.shorthands.includes("symbol")?n:t.latex!==void 0&&t.wikidata!==void 0?{sym:n,latex:t.latex,wikidata:t.wikidata}:t.latex!==void 0?{sym:n,latex:t.latex}:t.wikidata!==void 0?{sym:n,wikidata:t.wikidata}:{sym:n}}function ql(e,n){if(!n.repeatingDecimal)return e;let[i,t,r,s]=e.match(/^(.*)\.([0-9]+)([e|E][-+]?[0-9]+)?$/)??[];if(!r)return e.toLowerCase();let o=r[r.length-1];r=r.slice(0,-1);let a=16,u="";for(let l=0;l<r.length-a;l++){u=r.substring(0,l);for(let f=0;f<=a;f++){let c=r.substring(l,l+f+1),p=Math.floor((r.length-u.length)/c.length);if(p<3)break;if((u+c.repeat(p+1)).startsWith(r))return c==="0"?o==="0"?t+"."+u+(s??""):e:t+"."+u+"("+c+")"+(s??"")}}for(r+=o;r.endsWith("0");)r=r.slice(0,-1);return typeof n.fractionalDigits=="number"&&(r=r.slice(0,n.fractionalDigits)),s?`${t}.${r}${s.toLowerCase()}`:`${t}.${r}`}function Ye(e,n,i,t){t={...t},i.metadata.includes("latex")||(t.latex=void 0);let r=t.latex===void 0&&t.wikidata===void 0&&!i.metadata.includes("latex")&&i.shorthands.includes("number"),s=i.exclude;if(n instanceof z){if(n.isNaN)return Wn(e,"NaN",i,t);if(n.isPositiveInfinity)return Wn(e,"PositiveInfinity",i,t);if(n.isNegativeInfinity)return Wn(e,"NegativeInfinity",i,t);if(n.isComplexInfinity)return Wn(e,"ComplexInfinity",i,t);if(r){if(n.isZero)return 0;if(n.isOne)return 1;if(n.isNegativeOne)return-1}if(n instanceof Z){n.im;let u=l=>oi(l)?Ye(e,n.rational[0],i):["Rational",Ye(e,n.rational[0],i),Ye(e,n.rational[1],i)];return n.radical===1?u(n.rational):ve(n.rational)?["Sqrt",n.radical]:Bt(n.rational)?["Negate",["Sqrt",n.radical]]:n.rational[0]==1?["Divide",["Sqrt",n.radical],Ye(e,n.rational[1],i)]:n.rational[0]==-1?["Negate",["Divide",["Sqrt",n.radical],Ye(e,n.rational[1],i)]]:["Multiply",u(n.rational),["Sqrt",n.radical]]}if(n.im===0){let u=n.bignumRe??n.re;return Ye(e,u,i,t)}return Number.isFinite(n.im)?L(e,"Complex",[e.number(n.bignumRe??n.re),e.number(n.im)],i,{...t,wikidata:"Q11567"}):Wn(e,"ComplexInfinity",i,t)}let o="";if(n instanceof M){let u;if(n.isNaN())u="NaN";else if(!n.isFinite())u=n.isPositive()?"PositiveInfinity":"NegativeInfinity";else{if(r&&fi(n))return n.toNumber();if(n.isInteger()&&n.e<n.precision()+4)o=n.toFixed(0);else{let l=i.fractionalDigits,f;if(l==="max"?f=n.toString():l==="auto"?f=n.toPrecision(e.precision):f=n.toDecimalPlaces(l).toString(),o=ql(f,i),r){let c=n.toNumber();if(c.toString()===o)return c}}}return i.metadata.includes("latex")&&(t.latex=t.latex??e.box(u??{num:o}).latex),u?t.latex!==void 0?{sym:u,latex:t.latex}:r?u:{sym:u}:t.latex!==void 0?{num:o,latex:t.latex}:r?o:{num:o}}if(n instanceof $)return n.isInfinite()?Wn(e,"ComplexInfinity",i,t):n.isNaN()?(o="NaN",i.metadata.includes("latex")&&(t.latex=t.latex??e.box({num:o}).latex),t.latex!==void 0?{num:o,latex:t.latex}:{num:o}):L(e,"Complex",[e.number(n.re),e.number(n.im)],i,{...t,wikidata:"Q11567"});if(Bn(n)){let u=!s.includes("Rational");return r&&i.shorthands.includes("function")&&te(n)?n[0]===1&&n[1]===2&&!s.includes("Half")?Wn(e,"Half",i,t):[u?"Rational":"Divide",n[0],n[1]]:L(e,u?"Rational":"Divide",[e.number(n[0]),e.number(n[1])],i,{...t})}if(typeof n=="bigint")if(n>=Number.MIN_SAFE_INTEGER&&n<=Number.MAX_SAFE_INTEGER)n=Number(n);else return i.metadata.includes("latex")&&(t.latex=t.latex??e.box({num:n.toString()}).latex),t.latex!==void 0?{num:n.toString(),latex:t.latex}:r?Ie(n,i.fractionalDigits):{num:ge(n,i.fractionalDigits)};let a;return Number.isNaN(n)?a="NaN":Number.isFinite(n)?o=ql(n.toString(),i):a=n>0?"PositiveInfinity":"NegativeInfinity",i.metadata.includes("latex")&&(t.latex=t.latex??e.box({num:o}).latex),a?t.latex!==void 0?{sym:a,latex:t.latex}:r?a:{sym:a}:t.latex!==void 0?{num:o,latex:t.latex}:r&&o===n.toString()?n:{num:o}}function wo(e,n,i){let t=n.scope?n.wikidata:void 0;return n.numericValue!==null?Ye(e,n.numericValue,i,{latex:n.verbatimLatex}):n.rank>0?n.json:n.string!==null?Rd(n.string,i):n.symbol!==null?Wn(e,n.symbol,i,{latex:n.verbatimLatex,wikidata:t}):n.ops?n.isValid&&(n.isCanonical||n.isStructural)&&i.prettify?Ad(e,n.operator,n.structural.ops,i,{latex:n.verbatimLatex,wikidata:t}):L(e,n.operator,n.structural.ops,i,{latex:n.verbatimLatex,wikidata:t}):n.json}function jr(e,n,i,t=1e5){let r=0;if(n===-1/0&&i===1/0)for(let s=0;s<t;s++){let o=Math.random(),a=Math.tan(Math.PI*(o-.5)),u=Math.PI*(1+a*a);r+=e(a)/u}else if(n===-1/0)for(let s=0;s<t;s++){let o=Math.random(),a=i-Math.log(1-o),u=1/(1-o);r+=e(a)/u}else if(i===1/0)for(let s=0;s<t;s++){let o=Math.random(),a=n+Math.log(o),u=1/o;r+=e(a)/u}else for(let s=0;s<t;s++)r+=e(n+Math.random()*(i-n));return r/t*(i-n)}function Zr(e){let n=0,i=0;for(let t of e)n+=t,i++;return i===0?NaN:n/i}function $l(e,n){let i=e(0),t=0;for(let r of n)i=i.add(r),t++;return t===0?e(NaN):i.div(t)}function Cn(e){let n=[...e].sort((t,r)=>t-r),i=Math.floor(n.length/2);return n.length%2===0?(n[i-1]+n[i])/2:n[i]}function hi(e){let n=[...e].sort((t,r)=>t.cmp(r)),i=Math.floor(n.length/2);return n.length%2===0?n[i-1].add(n[i]).div(2):n[i]}function tt(e){let n=0,i=0,t=0;for(let r of e)n+=r,i+=r*r,t++;return t===0?NaN:(i-n*n/t)/(t-1)}function Do(e,n){let i=e(0),t=e(0),r=0;for(let s of n)i=i.add(s),t=t.add(s.mul(s)),r++;return r===0?e(NaN):t.sub(i.mul(i).div(r)).div(r-1)}function rt(e){let n=0,i=0,t=0;for(let r of e)n+=r,i+=r*r,t++;return t===0?NaN:(i-n*n/t)/t}function Ao(e,n){let i=e(0),t=e(0),r=0;for(let s of n)i=i.add(s),t=t.add(s.mul(s)),r++;return r===0?e(NaN):t.sub(i.mul(i).div(r)).div(r)}function Vl(e){return Math.sqrt(tt(e))}function zl(e){return Math.sqrt(rt(e))}function Hr(e){let n=0,i=0,t=0,r=0;for(let o of e){let a=o;if(!Number.isFinite(a))return NaN;n+=a,i+=a*a,t+=a*a*a*a,r++}if(r===0)return NaN;let s=(i-n*n/r)/(r-1);return(t-4*n*i/r+6*n*n*n/r/r-3*n*n*n*n/r/r/r)/(s*s)}function Gl(e,n){let i=e(0),t=e(0),r=e(0),s=0;for(let a of n){let u=a;if(!u.isFinite())return e(NaN);i=i.add(u),t=t.add(u.mul(u)),r=r.add(u.mul(u).mul(u).mul(u)),s++}if(s===0)return e(NaN);let o=t.sub(i.mul(i).div(s)).div(s-1);return r.sub(i.mul(t).mul(4).div(s)).add(i.mul(i).mul(i).mul(6).div(s).div(s)).sub(i.mul(i).mul(i).mul(i).div(s).div(s).div(s)).div(o.mul(o))}function Wr(e){let n=0,i=0,t=0,r=0;for(let a of e){let u=a;if(!Number.isFinite(u))return NaN;n+=u,i+=u*u,t+=u*u*u,r++}if(r===0)return NaN;let s=(i-n*n/r)/(r-1);return(t-i*n/r)/(r-1)/Math.pow(s,3/2)*Math.sqrt(r*1)}function Ul(e,n){let i=e(0),t=e(0),r=e(0),s=0;for(let u of n){let l=u;if(!l.isFinite())return e(NaN);i=i.add(l),t=t.add(l.mul(l)),r=r.add(l.mul(l).mul(l)),s++}if(s===0)return e(NaN);let o=t.sub(i.mul(i).div(s)).div(s-1);return r.sub(t.mul(i).div(s)).div(s-1).div(o.pow(3/2)).mul(s).sqrt()}function Jr(e){let n={};for(let r of e)n[r]=(n[r]??0)+1;let i=0,t=NaN;for(let r in n){let s=n[r];s>i&&(i=s,t=+r)}return t}function jl(e,n){let i={};for(let s of n)i[s.toString()]=(i[s.toString()]??0)+1;let t=0,r=e(NaN);for(let s in i){let o=i[s];o>t&&(t=o,r=e(s))}return r}function Yr(e){let n=[...e].sort((o,a)=>o-a),i=Math.floor(n.length/2),t=Cn(n.slice(0,i)),r=Cn(n),s=Cn(n.slice(i));return[t,r,s]}function Zl(e){let n=[...e].sort((o,a)=>o.cmp(a)),i=Math.floor(n.length/2),t=hi(n.slice(0,i)),r=hi(n),s=hi(n.slice(i));return[t,r,s]}function Qr(e){let n=[...e].sort((s,o)=>s-o),i=Math.floor(n.length/2),t=n.slice(0,i),r=n.slice(i+1);return Cn(r)-Cn(t)}function Hl(e){let n=[...e].sort((s,o)=>s.cmp(o)),i=Math.floor(n.length/2),t=n.slice(0,i),r=n.slice(i+1);return hi(r).sub(hi(t))}var Md={Add:["+",11],Negate:["-",14],Subtract:["-",11],Multiply:["*",12],Divide:["/",13],Equal:["===",8],NotEqual:["!==",8],LessEqual:["<=",9],GreaterEqual:[">=",9],Less:["<",9],Greater:[">",9],And:["&&",4],Or:["||",3],Not:["!",14]},Cd={Abs:"Math.abs",Add:(e,n)=>e.length===1?n(e[0]):`(${e.map(i=>n(i)).join(" + ")})`,Arccos:"Math.acos",Arccosh:"Math.acosh",Arccot:([e],n)=>{if(e===null)throw new Error("Arccot: no argument");return`Math.atan(1 / (${n(e)}))`},Arccoth:([e],n)=>{if(e===null)throw new Error("Arccoth: no argument");return`Math.atanh(1 / (${n(e)}))`},Arccsc:([e],n)=>{if(e===null)throw new Error("Arccsc: no argument");return`Math.asin(1 / (${n(e)}))`},Arccsch:([e],n)=>{if(e===null)throw new Error("Arccsch: no argument");return`Math.asinh(1 / (${n(e)}))`},Arcsec:([e],n)=>{if(e===null)throw new Error("Arcsec: no argument");return`Math.acos(1 / (${n(e)}))`},Arcsech:([e],n)=>{if(e===null)throw new Error("Arcsech: no argument");return`Math.acosh(1 / (${n(e)}))`},Arcsin:"Math.asin",Arcsinh:"Math.asinh",Arctan:"Math.atan",Arctanh:"Math.atanh",Ceiling:"Math.ceil",Chop:"_SYS.chop",Cos:"Math.cos",Cosh:"Math.cosh",Cot:([e],n)=>{if(e===null)throw new Error("Cot: no argument");return Wl("Math.cos(${x}) / Math.sin(${x})",n(e))},Coth:([e],n)=>{if(e===null)throw new Error("Coth: no argument");return Wl("(Math.cosh(${x}) / Math.sinh(${x}))",n(e))},Csc:([e],n)=>{if(e===null)throw new Error("Csc: no argument");return`1 / Math.sin(${n(e)})`},Csch:([e],n)=>{if(e===null)throw new Error("Csch: no argument");return`1 / Math.sinh(${n(e)})`},Exp:"Math.exp",Floor:"Math.floor",Gamma:"_SYS.gamma",GCD:"_SYS.gcd",Integrate:(e,n,i)=>Ld(e,n,i),LCM:"_SYS.lcm",Limit:(e,n)=>`_SYS.limit(${n(e[0])}, ${n(e[1])})`,Ln:"Math.log",List:(e,n)=>`[${e.map(i=>n(i)).join(", ")}]`,Log:(e,n)=>e.length===1?`Math.log10(${n(e[0])})`:`(Math.log(${n(e[0])}) / Math.log(${n(e[1])}))`,LogGamma:"_SYS.lngamma",Lb:"Math.log2",Max:"Math.max",Mean:(e,n)=>e.length===0?"NaN":e.length===1?`_SYS.mean(${n(e[0])})`:`_SYS.mean([${e.map(i=>n(i)).join(", ")}])`,Median:(e,n)=>e.length===0?"NaN":e.length===1?`_SYS.median(${n(e[0])})`:`_SYS.median([${e.map(i=>n(i)).join(", ")}])`,Variance:(e,n)=>e.length===0?"NaN":e.length===1?`_SYS.variance(${n(e[0])})`:`_SYS.variance([${e.map(i=>n(i)).join(", ")}])`,PopulationVariance:(e,n)=>e.length===0?"NaN":e.length===1?`_SYS.populationVariance(${n(e[0])})`:`_SYS.populationVariance([${e.map(i=>n(i)).join(", ")}])`,StandardDeviation:(e,n)=>e.length===0?"NaN":e.length===1?`_SYS.standardDeviation(${n(e[0])})`:`_SYS.standardDeviation([${e.map(i=>n(i)).join(", ")}])`,PopulationStandardDeviation:(e,n)=>e.length===0?"NaN":e.length===1?`_SYS.populationStandardDeviation(${n(e[0])})`:`_SYS.populationStandardDeviation([${e.map(i=>n(i)).join(", ")}])`,Kurtosis:(e,n)=>e.length===0?"NaN":e.length===1?`_SYS.kurtosis(${n(e[0])})`:`_SYS.kurtosis([${e.map(i=>n(i)).join(", ")}])`,Skewness:(e,n)=>e.length===0?"NaN":e.length===1?`_SYS.skewness(${n(e[0])})`:`_SYS.skewness([${e.map(i=>n(i)).join(", ")}])`,Mode:(e,n)=>e.length===0?"NaN":e.length===1?`_SYS.mode(${n(e[0])})`:`_SYS.mode([${e.map(i=>n(i)).join(", ")}])`,Quartiles:(e,n)=>e.length===0?"NaN":e.length===1?`_SYS.quartiles(${n(e[0])})`:`_SYS.quartiles([${e.map(i=>n(i)).join(", ")}])`,InterquartileRange:(e,n)=>e.length===0?"NaN":e.length===1?`_SYS.interquartileRange(${n(e[0])})`:`_SYS.interquartileRange([${e.map(i=>n(i)).join(", ")}])`,Min:"Math.min",Power:(e,n)=>{let i=e[0];if(i===null)throw new Error("Power: no argument");let t=e[1].re;return t===.5?`Math.sqrt(${n(i)})`:t===1/3?`Math.cbrt(${n(i)})`:t===1?n(i):t===-1?`(1 / (${n(i)}))`:t===-.5?`(1 / Math.sqrt(${n(i)}))`:`Math.pow(${n(i)}, ${n(e[1])})`},Range:(e,n)=>{if(e.length===0)return"[]";if(e.length===1)return`Array.from({length: ${n(e[0])}}, (_, i) => i)`;let i=n(e[0]),t=n(e[1]),r=e[2]?n(e[2]):"1";if(i===null)throw new Error("Range: no start");if(t===null&&(t=i,i="1"),r==="0")throw new Error("Range: step cannot be zero");if(parseFloat(r)===1){let s=parseFloat(t),o=parseFloat(i);return s!==null&&o!==null?s-o<50?`[${Array.from({length:s-o+1},(a,u)=>o+u).join(", ")}]`:`Array.from({length: ${s-o+1}
|
|
72
|
-
|
|
73
|
-
}, (_, i) => ${i} + i)`}return`Array.from({length: Math.floor((${t} - ${i}) / ${r}) + 1}, (_, i) => ${i} + i * ${r})`},Root:([e,n],i)=>{if(e===null)throw new Error("Root: no argument");return n===null?`Math.sqrt(${i(e)})`:n?.re===2?`Math.sqrt(${i(e)})`:n?.re===3?`Math.cbrt(${i(e)})`:isNaN(n?.re)?`Math.pow(${i(e)}, 1 / (${i(n)}))`:`Math.pow(${i(e)}, ${1/n.re})`},Random:"Math.random",Round:"Math.round",Square:(e,n)=>{let i=e[0];if(i===null)throw new Error("Square: no argument");return`Math.pow(${n(i)}, 2)`},Sec:(e,n)=>{let i=e[0];if(i===null)throw new Error("Sec: no argument");return`1 / Math.cos(${n(i)})`},Sech:(e,n)=>{let i=e[0];if(i===null)throw new Error("Sech: no argument");return`1 / Math.cosh(${n(i)})`},Sgn:"Math.sign",Sin:"Math.sin",Sinh:"Math.sinh",Sqrt:"Math.sqrt",Tan:"Math.tan",Tanh:"Math.tanh"},Ro=class extends Function{constructor(i,t=""){super("_SYS","_",`${t};return ${i}`);this.sys={chop:Qa,factorial:Ja,gamma:ci,gcd:rn,integrate:(i,t,r)=>jr(i,t,r,1e7),lcm:ki,lngamma:Mt,limit:ii,mean:Zr,median:Cn,variance:tt,populationVariance:rt,standardDeviation:Vl,populationStandardDeviation:zl,kurtosis:Hr,skewness:Wr,mode:Jr,quartiles:Yr,interquartileRange:Qr};return new Proxy(this,{apply:(r,s,o)=>super.apply(s,[this.sys,...o]),get:(r,s)=>s==="toString"?()=>i:r[s]})}};function Pd(e,n){let i=ye(e,n);return new Ro(i,n.preamble)}function Jl(e,n,i,t=[],r){let s=e.unknowns,o=t.map(u=>{if(typeof u=="function")return u.toString();throw new Error(`Unsupported import \`${u}\``)}).join(`
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
`)}${a.join(`;${r.ws(`
|
|
78
|
-
`)}`)}${r.ws(`
|
|
79
|
-
`)}})()`}let s=r.functions?.(n);if(!s)throw new Error(`Unknown function \`${n}\``);if(typeof s=="function"){if(e.lookupFunction(n)?.threadable&&i.length===1&&ie(i[0])){let a=Ht();return`(${ye(i[0],r)}).map((${a}) => ${s([i[0].engine.box(a)],u=>ye(u,r),r)})`}return s(i,a=>ye(a,r),r)}return i===null?`${s}()`:`${s}(${i.map(o=>ye(o,r)).join(", ")})`}function ye(e,n,i=0){if(e===void 0)return"";if(!e.isValid)throw new Error(`Cannot compile invalid expression: "${e.toString()}"`);let t=e.symbol;if(t!==null)return n.var?.(t)??t;if(e.isNumberLiteral){if(e.im!==0)throw new Error("Complex numbers are not supported");return n.number(e.re)}return e.string!==null?n.string(t):Yl(e.engine,e.operator,e.ops,i,n)}function Od(e,n,i){if(n===null)throw new Error("Sum/Product: no arguments");if(!n[0])throw new Error("Sum/Product: no body");let{index:t,lower:r,upper:s,isFinite:o}=nt(n[1]),a=e==="Sum"?"+":"*";if(!t){let f=Ht(),c=Ht();return`${ye(n[0],i)}.reduce((${c}, ${f}) => ${c} ${a} ${f}, ${a==="+"?"0":"1"})`}let u=ye(n[0],{...i,var:f=>f===t?t:i.var(f)}),l=Ht();return`(() => {
|
|
80
|
-
let ${l} = ${a==="+"?"0":"1"};
|
|
81
|
-
let ${t} = ${r};
|
|
82
|
-
while (${t} <= ${s}) {
|
|
83
|
-
${l} ${a}= ${u};
|
|
84
|
-
${t}++;
|
|
85
|
-
}
|
|
86
|
-
return ${l};
|
|
87
|
-
})()`}function Wl(e,n){if(/^[\p{L}_][\p{L}\p{N}_]*$/u.test(n)||/^[0-9]+$/.test(n))return new Function("x",`return \`${e}\`;`)(n);{let t=Ht();return new Function("x",`return \`(() => { const ${t} = \${x}; return ${e.replace(/\\\${x}/g,t)}; })()\`;`)(n)}}function Ht(){return`_${Math.random().toString(36).substring(4)}`}function Ld(e,n,i){let{index:t,lower:r,upper:s}=nt(e[1]),o=ye(e[0],{...i,var:a=>a===t?a:i.var(a)});return`_SYS.integrate((${t}) => (${o}), ${r}, ${s})`}function Fd(e){let n=e.toString();return n.includes("=>")?!1:n.startsWith("function ")&&n.includes(e.name)}function Xl(e,n,i){if(i.repeatingDecimal&&i.repeatingDecimal!=="none"){let s=e.slice(0,-1);for(let o=0;o<e.length-16;o++){let a=s.substring(0,o);for(let u=0;u<17;u++){let l=s.substring(o,o+u+1),f=Math.floor((s.length-a.length)/l.length);if(f<=3)break;if((a+l.repeat(f+1)).startsWith(s)){if(l==="0")return Mo(a,i);let c={vinculum:"\\overline{#}",parentheses:"(#)",dots:"\\overset{\\cdots}{#1}#2\\overset{\\cdots}{#3}",arc:"\\wideparen{#}"}[i.repeatingDecimal]??"\\overline{#}";return c=c.replace(/#1/g,l[0]).replace(/#2/g,l.slice(1)).replace(/#3/g,l.slice(-1)).replace(/#/,l),Mo(a,i)+c}}}}let t=typeof i.fractionalDigits=="number"?i.fractionalDigits:1/0;t<0&&(t=t-n),t<0&&(t=0);let r=e.length>t;return r&&(e=e.substring(0,t)),e=Mo(e,i),r&&(e+=i.truncationMarker),e}function Kl(e,n){return!e||e==="0"?"":n.beginExponentMarker?n.beginExponentMarker+e+(n.endExponentMarker??""):`10^{${e}}`}function ef(e,n){if(e===null)return"";let i;if(typeof e=="number"||typeof e=="string")i=e;else if(typeof e=="object"&&"num"in e)i=e.num;else return"";if(typeof i=="number"){if(i===1/0)return n.positiveInfinity;if(i===-1/0)return n.negativeInfinity;if(Number.isNaN(i))return n.notANumber;let s;return n.notation==="engineering"?s=Xr(i.toExponential(),n,3):n.notation==="scientific"&&(s=Xr(i.toExponential(),n)),s??Co(i.toString(),n)}if(i=i.toLowerCase().replace(/[\u0009-\u000d\u0020\u00a0]/g,""),i==="infinity"||i==="+infinity")return n.positiveInfinity;if(i==="-infinity")return n.negativeInfinity;if(i==="nan")return n.notANumber;if(!/^[-+\.]?[0-9]/.test(i))return"";if(i=i.replace(/[nd]$/,""),/\([0-9]+\)/.test(i)){let[s,o,a,u]=i.match(/(.+)\(([0-9]+)\)(.*)$/)??[];i=o+a.repeat(6)+u}let t="";for(i[0]==="-"?(t="-",i=i.substring(1)):i[0]==="+"&&(i=i.substring(1));i[0]==="0";)i=i.substring(1);i.length===0?i="0":i[0]==="."&&(i="0"+i);let r;return n.notation==="engineering"?r=Xr(i,n,3):n.notation==="scientific"&&(r=Xr(i,n)),t+(r??Co(i,n))}function Xr(e,n,i=1){let t=e.match(/^(.*)[e|E]([-+]?[0-9]+)$/);if(!t){let f="";if(e[0]==="-"?(f="-",e=e.substring(1)):e[0]==="+"&&(e=e.substring(1)),e.indexOf(".")<0)e.length===1?e=f+e+"e+0":e=f+e[0]+"."+e.slice(1)+"e+"+(e.length-1).toString();else{let[c,p,m]=e.match(/^(.*)\.(.*)$/);for(m||(m="");p.startsWith("0");)p=p.substring(1);p?e=f+p[0]+"."+p.slice(1)+m+"e+"+(p.length-1).toString():e=f+"0."+m+"e+0"}t=e.match(/^(.*)[e|E]([-+]?[0-9]+)$/)}if(!t)return Co(e,n);let r=parseInt(t[2]),s=t[1];if(Math.abs(r)%i!==0){let f=r>0?r%i:-((i+r)%i);r=r>=0?r-f:r+f;let[c,p,m]=s.match(/^(.*)\.(.*)$/)??["",s,""];s=p+(m+"00000000000000000").slice(0,Math.abs(f))+"."+m.slice(Math.abs(f))}let o=n.avoidExponentsInRange;if(o&&r>=o[0]&&r<=o[1])return;let a="",u=s;t=u.match(/^(.*)\.(.*)$/),t&&(u=t[1],a=t[2]);let l=Kl(Number(r).toString(),n);if(a=Xl(a,u.length,n),u=tf(u,n),a&&(a=n.decimalSeparator+a),!l)return u+a;if(!a){if(u==="1")return l;if(u==="-1")return"-"+l}return u+a+n.exponentProduct+l}function Co(e,n){let i=e.match(/^(.*)[e|E]([-+]?[0-9]+)$/i),t=0;i?.[1]&&i[2]&&(t=parseInt(i[2]),e=i[1]);let r=i?.[1]??e,s="";i=e.match(/^(.*)\.(.*)$/),i?.[1]&&i[2]&&(r=i[1],s=i[2]),t!==0&&s&&(r+=s,t-=s.length,s="");let o=n.avoidExponentsInRange;t!==0&&o&&t>=o[0]&&t<=o[1]&&([r,s]=Vd(r,s,t),t=0);let a=Kl(t.toString(),n);if(s&&(s=n.decimalSeparator+Xl(s,r.length,n)),r=tf(r,n),!a)return r+s;if(!s){if(r==="1")return a;if(r==="-1")return"-"+a}return r+s+n.exponentProduct+a}function Ql(e,n,i){let t=new RegExp(`(\\d{${n}})(?=\\d)`,"g");return e.replace(t,`$1${i}`)}function qd(e,n,i){let t=new RegExp(`(\\d{${n}})(?=\\d)`,"g"),r=i.split("").reverse().join("");return e.split("").reverse().join("").replace(t,`$1${r}`).split("").reverse().join("")}function $d(e,n){let i=e.split("").reverse().join(""),t=n.split("").reverse().join(""),r=i.replace(/(\d{3})(?=\d)/,`$1${t}`);return r=r.replace(/(\d{2})(?=(\d{2})+,)/g,`$1${t}`),r.split("").reverse().join("")}function nf(e,n,i){let t=n.digitGroup;typeof t!="string"&&Array.isArray(t)&&(t=t[i]);let r=typeof n.digitGroupSeparator=="string"?n.digitGroupSeparator:n.digitGroupSeparator[i];return r?t==="lakh"?i===0?$d(e,r):Ql(e,3,r):t===!1||t<=0?e:i===1?Ql(e,t,r):qd(e,t,r):e}function Mo(e,n){return nf(e,n,1)}function tf(e,n){return nf(e,n,0)}function Vd(e,n,i){let t=e+n,s=e.length+i,o,a;return s>0?s>=t.length?(t=t+"0".repeat(s-t.length),o=t,a=""):(o=t.slice(0,s),a=t.slice(s)):(o="0",a="0".repeat(-s)+t),[o,a]}var Oo={deg:e=>`${e}\\degree`,prime:e=>`${e}^{\\prime}`,dprime:e=>`${e}^{\\doubleprime}`,ring:e=>`\\mathring{${e}}`,hat:e=>`\\hat{${e}}`,tilde:e=>`\\tilde{${e}}`,vec:e=>`\\vec{${e}}`,bar:e=>`\\overline{${e}}`,underbar:e=>`\\underline{${e}}`,dot:e=>`\\dot{${e}}`,ddot:e=>`\\ddot{${e}}`,tdot:e=>`\\dddot{${e}}`,qdot:e=>`\\ddddot{${e}}`,acute:e=>`\\acute{${e}}`,grave:e=>`\\grave{${e}}`,breve:e=>`\\breve{${e}}`,check:e=>`\\check{${e}}`},Lo={upright:e=>`\\mathrm{${e}}`,italic:e=>`\\mathit{${e}}`,bold:e=>`\\mathbf{${e}}`,script:e=>`\\mathscr{${e}}`,fraktur:e=>`\\mathfrak{${e}}`,doublestruck:e=>`\\mathbb{${e}}`,blackboard:e=>`\\mathbb{${e}}`,calligraphic:e=>`\\mathcal{${e}}`,gothic:e=>`\\mathfrak{${e}}`,sansserif:e=>`\\mathsf{${e}}`,monospace:e=>`\\mathtt{${e}}`},Fo=class{constructor(n,i){this.level=-1;this.dictionary=n,this.options=i}wrap(n,i){if(n==null)return"";if(i===void 0)return this.wrapString(this.serialize(n),this.options.groupStyle(n,this.level+1));if(typeof n=="number"||Fi(n)){let r=D(n);return r!==null&&r<0&&i>275?this.wrap(n):this.serialize(n)}let t=h(n);if(t&&t!=="Delimiter"&&t!=="Subscript"){let r=this.dictionary.ids.get(t);if(r&&(r.kind==="symbol"||r.kind==="expression"||r.kind==="prefix"||r.kind==="infix"||r.kind==="postfix")&&r.precedence<i)return this.wrapString(this.serialize(n),this.options.applyFunctionStyle(n,this.level))}return this.serialize(n)}wrapShort(n){if(n==null)return"";let i=this.serialize(n);if(A(n)!==null||kn(n)&&!/^(-|\.)/.test(i))return i;let r=h(n);return r==="Delimiter"&&Y(n)===1||r!=="Add"&&r!=="Negate"&&r!=="Subtract"&&r!=="PlusMinus"&&r!=="Multiply"?i:this.wrapString(i,this.options.groupStyle(n,this.level+1))}wrapString(n,i,t){if(i==="none")return n;t??(t="()");let r=t?.[0]??".",s=t?.[1]??".";return r==='"'?r="``":r==="|"?r="\\lvert":r=ji[r]??r,s==='"'?s="''":s==="|"?s="\\rvert":s=ji[s]??s,r==="."&&s==="."?n:((r==="."||s===".")&&i==="normal"&&(i="scaled"),i==="scaled"?`\\left${r}${n}\\right${s}}`:i==="big"?`${`\\Bigl${r}`}${n}${`\\Bigr${s}`})`:r+n+s)}wrapArguments(n){return this.wrapString(N(n).map(i=>this.serialize(i)).join(", "),this.options.applyFunctionStyle(n,this.level))}serializeSymbol(n,i){return typeof n=="string"||kr(n),i?.kind==="function"?Po(A(n)??"")??"":i?.serialize?.(this,n)??Po(A(n))??""}serializeFunction(n,i){if(i?.serialize)return i.serialize(this,n);let t=h(n);return Po(t,"auto")+this.wrapArguments(n)}serialize(n){if(n==null)return"";this.level+=1;try{let i=(()=>{let t=ef(n,this.options);if(t)return t;let r=V(n);if(r!==null)return`\\text{${r}}`;let s=A(n);if(s!==null)return this.serializeSymbol(n,this.dictionary.ids.get(s));let o=h(n);if(o){let a=this.dictionary.ids.get(o);return this.serializeFunction(n,a)}throw Error(`Syntax error ${n?JSON.stringify(n):""}`)})();return this.level-=1,i??""}catch{}return this.level-=1,""}applyFunctionStyle(n,i){return this.options.applyFunctionStyle(n,i)}groupStyle(n,i){return this.options.groupStyle(n,i)}rootStyle(n,i){return this.options.rootStyle(n,i)}fractionStyle(n,i){return this.options.fractionStyle(n,i)}logicStyle(n,i){return this.options.logicStyle(n,i)}powerStyle(n,i){return this.options.powerStyle(n,i)}numericSetStyle(n,i){return this.options.numericSetStyle(n,i)}};function zd(e){let n=e.match(/^([^_]+)/)?.[1]??"",i=sn.findIndex(o=>n===o[0]);if(i>=0)return[sn[i][1],e.substring(sn[i][0].length)];let t={zero:"0",one:"1",two:"2",three:"3",four:"4",five:"5",six:"6",seven:"7",eight:"8",nine:"9",ten:"10"};if(i=Object.keys(t).findIndex(o=>e.startsWith(o)),i>=0){let o=Object.keys(t)[i];return[t[o],e.substring(o.length)]}let r=e.codePointAt(0);if(i=sn.findIndex(o=>o[2]===r),i>=0)return[sn[i][1],e.substring(1)];let s={plus:"+",minus:"-",pm:"\\pm",ast:"\\ast",dag:"\\dag",ddag:"\\ddag",hash:"\\#",bottom:"\\bot",top:"\\top",bullet:"\\bullet",circle:"\\circ",diamond:"\\diamond",times:"\\times",square:"\\square",star:"\\star"};if(i=Object.keys(s).findIndex(o=>n===o),i>=0){let o=Object.keys(s)[i];return[s[o],e.substring(o.length)]}return[n,e.substring(n.length)]}function Gd(e){let[n,i]=zd(e),t=[];for(;i.length>0;){let s=i.match(/^_([a-zA-Z]+)(.*)/);if(!s||!Oo[s[1]])break;t.push(s[1]),i=s[2]}let r=[];for(;i.length>0;){let s=i.match(/^_([a-zA-Z]+)(.*)/);if(!s||!Lo[s[1]])break;r.push(s[1]),i=s[2]}return[n,t,r,i]}function Kr(e,n=!0,i="auto"){let[t,r,s,o]=Gd(e);for(let a of r)Oo[a]&&(t=Oo[a](t));if(n){let a=[],u=[],l=t.match(/^([^\d].*?)(\d+)$/);for(l&&(u.push(l[2]),t=l[1]);o.length>0;)if(o.startsWith("__")){let[f,c]=Kr(o.substring(2),!1,"none");a.push(f),o=c}else if(o.startsWith("_")){let[f,c]=Kr(o.substring(1),!1,"none");u.push(f),o=c}else break;a.length>0&&(t=Ii("^",t,a.join(","))),u.length>0&&(t=Ii("_",t,u.join(",")))}for(let a of s)Lo[a]&&(t=Lo[a](t));if(s.length===0&&i!=="none")switch(i){case"auto":yr(t)>1&&(t=`\\mathrm{${t}}`);break;case"operator":t=`\\operatorname{${t}}`;break;case"italic":t=`\\mathit{${t}}`;break;case"upright":t=`\\mathrm{${t}}`;break}return[t,o]}function Po(e,n="auto"){if(e===null)return null;if(Gi.test(e))return e;let i=e.match(/^(_+)(.*)/);if(i){let[s,o]=Kr(i[2],!0,"none");return`\\operatorname{${"\\_".repeat(i[1].length)+s+o}}`}let[t,r]=Kr(e,!0,n);return r.length>0?`\\operatorname{${e}}`:t}function rf(e,n,i){return new Fo(n,i).serialize(e)}var sf={PositiveInfinity:"+oo",NegativeInfinity:"-oo",ComplexInfinity:"~oo",NaN:"NaN",Pi:"pi",ExponentialE:"e",ImaginaryUnit:"i",alpha:"alpha",beta:"beta",gamma:"gamma",delta:"delta",epsilon:"epsilon",epsilonSymbol:"varepsilon",zeta:"zeta",eta:"eta",theta:"theta",thetaSymbol:"vartheta",iota:"iota",kappa:"kappa",lambda:"lambda",mu:"mu",nu:"nu",xi:"xi",omicron:"omicron",pi:"pi",rho:"rho",sigma:"sigma",tau:"tau",upsilon:"upsilon",phi:"phi",phiSymbol:"varphi",chi:"chi",psi:"psi",omega:"omega",Gamma:"Gamma",Delta:"Delta",Theta:"Theta",Lambda:"Lambda",Xi:"Xi",Sigma:"Sigma",Upsilon:"Upsilon",Phi:"Phi",Psi:"Psi",Omega:"Omega"},of={Add:[(e,n)=>e.ops?.reduce((i,t)=>{if(t.operator==="Negate"){let r=n(t.op1,10);return i===""?`-${r}`:r.startsWith("+")?`${i} - ${r.substring(1)}`:r.startsWith("-")?`${i} + ${r.substring(1)}`:`${i} - ${r}`}return af(i,n(t,10))},"")??"",11],Negate:[(e,n)=>{let i=n(e.op1,14);return i==="Power"?`-(${i})`:`-${i}`},14],Subtract:[(e,n)=>e.ops?.reduce((i,t)=>{let r=n(t,10);return i===""?r:r.startsWith("-")?`${i} - (${r})`:`${i} - ${r}`},"")??"",11],Multiply:[(e,n)=>{if(!e.ops)return"";if(e.nops===2){let i=e.op1.numericValue;if(i!==null){typeof i!="number"&&i.im!==0&&$o(n(e.op2,12),af(i.re.toString(),`${i.im}i`));let t=e.op2;if((t.symbol||t.operator==="Power"||t.operator==="Square"||typeof Vo[t.operator]=="string")&&Bn(i)&&i[0]===1){let r=i[1];return`${n(t,12)}/${r}`}return $o(n(e.op1,12),n(e.op2,12))}}return e.ops.reduce((i,t)=>$o(i,n(t,12)),"")},12],Divide:["/",13],Power:[(e,n)=>{let i=n(e.op2,14);if(i==="1")return n(e.op1);if(i==="(1/2)"||i==="1/2"||i==="0.5")return`sqrt(${n(e.op1)})`;if(i==="-0.5")return`(1/sqrt(${n(e.op1)}))`;let t=n(e.op1,14);return t.startsWith("-")&&(t=`(${t})`),i.length===1?`${t}^${i}`:`${t}^${gi(i)}`},15],Equal:["===",8],NotEqual:["!==",8],LessEqual:["<=",9],GreaterEqual:[">=",9],Less:["<",9],Greater:[">",9],And:["&&",4],Or:["||",3],Not:["!",14]},Vo={Abs:(e,n)=>`|${n(e.op1)}|`,Sin:"sin",Cos:"cos",Tan:"tan",Sec:"sec",Csc:"csc",Arcsin:"arcsin",Arccos:"arccos",Arctan:"arctan",Sinh:"sinh",Cosh:"cosh",Tanh:"tanh",Sech:"sech",Csch:"csch",Coth:"coth",Ceil:"ceil",Exp:"exp",Factorial:(e,n)=>`${n(e.op1,12)}!`,Floor:"floor",Log:"log",Ln:"ln",Log10:"log10",Sqrt:"sqrt",Root:(e,n)=>{let i=e.op1,t=e.op2;return t.is(2)?`sqrt${gi(n(i))}`:`root${gi(n(t))}${gi(n(i))}`},Square:(e,n)=>`${n(e.op1,12)}^2`,Det:"det",Dim:"dim",Mod:"mod",GCD:"gcd",LCM:"lcm",Lub:"lub",Glb:"glb",Max:"max",Min:"min",Sum:(e,n)=>qo(e,"sum",n),Product:(e,n)=>qo(e,"prod",n),Integrate:(e,n)=>qo(e,"int",n),Delimiter:(e,n)=>Ud(e.ops[0],e.ops[1]?.string,n),Sequence:(e,n)=>e.nops===0?"":e.ops.map(i=>n(i)).join(" "),List:(e,n)=>`[${e.ops?.map(i=>n(i))??""}]`,Single:(e,n)=>`(${e.ops.map(i=>n(i)).join(", ")})`,Pair:(e,n)=>`(${e.ops.map(i=>n(i)).join(", ")})`,Triple:(e,n)=>`(${e.ops.map(i=>n(i)).join(", ")})`,Tuple:(e,n)=>`(${e.ops.map(i=>n(i)).join(", ")})`,Function:(e,n)=>`(${e.ops.slice(1).map(i=>n(i)).join(", ")}) |-> {${n(e.op1)}}`,Domain:e=>JSON.stringify(e.json),Error:(e,n)=>e.nops===1?`Error(${n(e.op1)})`:e.nops===2?e.op1.string?`Error("${e.op1.string}", ${n(e.op2)})`:`Error(${n(e.op1)}, ${n(e.op2)})`:`Error(${e.ops.map(i=>n(i)).join(", ")})`,LatexString:e=>`"${e.op1.string??""}"`};function qo(e,n,i){let t=e.op2,r=t?.op1,s=t?.op2,o=t?.op3;r.symbol==="Nothing"&&(r=null),s.symbol==="Nothing"&&(s=null),o.symbol==="Nothing"&&(o=null);let a=n;return r&&s&&(a+=`_(${i(r)}=${i(s)})`),o&&(a+=`^${gi(i(o))}`),a+gi(i(e.op1))}function Ud(e,n,i){n||(n="(,)");let t="",r="",s="";if(n.length===1&&(t=n),n.length===2&&(r=n[0],s=n[1]),n.length===3&&(r=n[0],t=n[1],s=n[2]),!e)return`${r}${s}`;let o=[e];return e.operator==="Sequence"&&(o=e.ops),`${r}${o.map(a=>i(a)).join(t)}${s}`}function gi(e,n=0,i=-1){return n>i&&!/^\(.+\)$/.test(e)?`(${e})`:e}function es(e,n={}){return n.symbols?.[e]?n.symbols[e]:sf[e]?sf[e]:e.length===1?e:`"${e}"`}function ns(e,n={},i=0){if(e.symbol)return es(e.symbol,n);let t=(s,o=0)=>ns(s,n,o);if(e.string)return e.string;let r=e.numericValue;if(r!==null)return e.isNaN?es("NaN",n):e.isFinite===!1?e.isNegative!==!0&&e.isPositive!==!0?es("ComplexInfinity",n):es(e.isNegative?"NegativeInfinity":"PositiveInfinity",n):r.toString();if(e.operator){let s=n.operators?{...of,...n.operators}:of,[o,a]=s[e.operator]??[];if(o){let f="";if(typeof o=="function")f=o(e,t);else{if(e.nops===1)return`${o}${t(e.op1,a+1)}`;f=e.ops?.map(c=>t(c,a+1)).join(` ${o} `)??""}return gi(f,i,a)}let l=(n.functions?{...Vo,...n.functions}:Vo)[e.operator];return typeof l=="function"?l(e,t):typeof l=="string"?`${l}(${e.ops?.map(f=>t(f)).join(", ")??""})`:`${e.operator}(${e.ops?.map(f=>t(f)).join(", ")??""})`}return JSON.stringify(e.json)}function $o(e,n){return e?n?(n.startsWith("-")&&(n=`(${n})`),e==="-1"?`-${n}`:n==="-1"?`-${e}`:e.match(/^[-+]?\d+$/)&&n.match(/^[a-zA-Z\(]/)?e+n:`${e} * ${n}`):e:n}function af(e,n){return e?n?e==="0"?n:n==="0"?e:n.startsWith("-")?`${e} - ${n.substring(1)}`:`${e} + ${n}`:e:n}var X=class{get head(){return this.operator}constructor(n,i){this.engine=n,i?.latex!==void 0&&(this.verbatimLatex=i.latex)}isSame(n){return Ji(this,n)}isEqual(n){return qr(this,n)}isLess(n){let i=Yi(this,n);if(i!==void 0)return i==="<"}isLessEqual(n){let i=Yi(this,n);if(i!==void 0)return i==="<="||i==="<"||i==="="}isGreater(n){let i=Yi(this,n);if(i!==void 0)return i===">"}isGreaterEqual(n){let i=Yi(this,n);if(i!==void 0)return i===">="||i===">"||i==="="}valueOf(){return this.symbol==="True"?!0:this.symbol==="False"?!1:this.symbol==="NaN"?NaN:this.symbol==="PositiveInfinity"?1/0:this.symbol==="NegativeInfinity"?-1/0:this.isInfinity?this.isPositive?1/0:this.isNegative?-1/0:NaN:typeof this.string=="string"?this.string:typeof this.symbol=="string"?this.symbol:this.im===0?this.re:this.toString()}toAsciiMath(n={}){return ns(this,n)}toString(){return ns(this)}print(){let n=console.info;n?.(this.toString())}[Symbol.toPrimitive](n){if(n==="number"){let i=this.valueOf();return typeof i=="number"?i:null}return this.toString()}toJSON(){return this.json}toMathJson(n){let i={exclude:[],shorthands:["function","symbol","string","number"],metadata:[],fractionalDigits:"max",repeatingDecimal:!0,prettify:!0};n&&((typeof n.shorthands=="string"&&n.shorthands==="all"||n.shorthands?.includes("all"))&&(i.shorthands=["function","symbol","string","number"]),Array.isArray(n.shorthands)&&(i.shorthands=n.shorthands),(typeof n.metadata=="string"&&n.metadata==="all"||n.metadata?.includes("all"))&&(i.metadata=["latex","wikidata"]),n.fractionalDigits==="auto"&&(i.fractionalDigits=-this.engine.precision),typeof n.fractionalDigits=="number"&&(i.fractionalDigits=n.fractionalDigits));let t={...i,...n,fractionalDigits:i.fractionalDigits,shorthands:i.shorthands,metadata:i.metadata};return wo(this.engine,this,t)}toLatex(n){let i=this.toMathJson(),t={imaginaryUnit:"\\imaginaryI",positiveInfinity:"\\infty",negativeInfinity:"-\\infty",notANumber:"\\operatorname{NaN}",decimalSeparator:this.engine.decimalSeparator,digitGroupSeparator:"\\,",exponentProduct:"\\cdot",beginExponentMarker:"10^{",endExponentMarker:"}",digitGroup:3,truncationMarker:"\\ldots",repeatingDecimal:"vinculum",fractionalDigits:"max",notation:"auto",avoidExponentsInRange:[-7,20],prettify:!0,invisibleMultiply:"",invisiblePlus:"",multiply:"\\times",missingSymbol:"\\blacksquare",applyFunctionStyle:Su,groupStyle:_u,rootStyle:Iu,fractionStyle:Bu,logicStyle:ku,powerStyle:wu,numericSetStyle:Du};return n?.fractionalDigits==="auto"?t.fractionalDigits=-this.engine.precision:t.fractionalDigits=n?.fractionalDigits??"max",typeof t.fractionalDigits=="number"&&t.fractionalDigits>this.engine.precision&&(t.fractionalDigits=this.engine.precision),t={...t,...n??{},fractionalDigits:t.fractionalDigits},!t.prettify&&this.verbatimLatex?this.verbatimLatex:rf(i,this.engine.indexedLatexDictionary,t)}toNumericValue(){return[this.engine._numericValue(1),this]}get scope(){return null}is(n){return typeof n=="number"||typeof n=="bigint"?!1:typeof n=="boolean"?this.symbol==="True"&&n===!0||this.symbol==="False"&&n===!1:n==null?!1:Ji(this,this.engine.box(n))}get canonical(){return this}get structural(){return this}get isStructural(){return!0}get latex(){return this.toLatex()}set latex(n){this.verbatimLatex=n}get symbol(){return null}get tensor(){return null}get string(){return null}getSubexpressions(n){return cf(this,n)}get subexpressions(){return this.getSubexpressions("")}get symbols(){let n=new Set;return lf(this,n),Array.from(n).sort()}get unknowns(){let n=new Set;return ff(this,n),Array.from(n).sort()}get freeVariables(){let n=new Set;return uf(this,n),Array.from(n).sort()}get errors(){return this.getSubexpressions("Error")}get ops(){return null}get nops(){return 0}get op1(){return this.engine.Nothing}get op2(){return this.engine.Nothing}get op3(){return this.engine.Nothing}get isValid(){return!0}get isPure(){return!1}get isConstant(){return!0}get isNaN(){}get isInfinity(){}get isFinite(){}get isEven(){}get isOdd(){}get numericValue(){return null}get isNumberLiteral(){return!1}get isFunctionExpression(){return!1}get re(){return NaN}get im(){return NaN}get bignumRe(){}get bignumIm(){}get numerator(){return this}get denominator(){return this.engine.One}get numeratorDenominator(){return[this,this.engine.One]}neg(){return this.engine.NaN}inv(){return this.engine.NaN}abs(){return this.engine.NaN}add(n){return this.engine.NaN}sub(n){return this.add(n.neg())}mul(n){return this.engine.NaN}div(n){return this.engine.NaN}pow(n){return this.engine.NaN}root(n){return this.engine.NaN}sqrt(){return this.engine.NaN}ln(n){return this.engine.NaN}get sgn(){}get shape(){return[]}get rank(){return 0}subs(n,i){return i?.canonical===!0?this.canonical:this}map(n,i){if(!this.ops)return n(this);let t=i?.canonical??this.isCanonical,r=i?.recursive??!0,s=this.ops.map(o=>r?o.map(n,i):n(o));return n(this.engine.function(this.operator,s,{canonical:t}))}solve(n){return null}replace(n){return null}has(n){return!1}get isPositive(){}get isNonNegative(){}get isNegative(){}get isNonPositive(){}get description(){if(this.baseDefinition&&this.baseDefinition.description)return typeof this.baseDefinition.description=="string"?[this.baseDefinition.description]:this.baseDefinition.description}get url(){return this.baseDefinition?.url??void 0}get wikidata(){return this.baseDefinition?.wikidata??void 0}get complexity(){}get baseDefinition(){}get symbolDefinition(){}get functionDefinition(){}infer(n){return!1}bind(){}reset(){}get value(){return this.N().valueOf()}set value(n){throw new Error(`Can't change the value of \\(${this.latex}\\)`)}get type(){return C.unknown}set type(n){throw new Error(`Can't change the type of \\(${this.latex}\\)`)}get isNumber(){}get isInteger(){}get isRational(){}get isReal(){}simplify(n){return this}expand(){return Pe(this)??this}evaluate(n){return this.simplify()}evaluateAsync(n){return Promise.resolve(this.evaluate())}N(){return this.evaluate({numericApproximation:!0})}compile(n){if(n?.to&&n.to!=="javascript")throw new Error("Unknown target");return n??(n={}),Jl(this,n?.functions,n?.vars,n?.imports,n?.preamble)}get isCollection(){return!1}contains(n){return!1}subsetOf(n,i){return!1}get size(){return 0}each(n,i){return{next(){return{done:!0,value:void 0}}}}at(n){}get(n){}indexOf(n){return-1}};function uf(e,n){if(e.operator,e.symbol){let i=e.engine.lookupSymbol(e.symbol);if(i&&i.value!==void 0)return;let t=e.engine.lookupFunction(e.symbol);if(t&&t.evaluate)return;n.add(e.symbol);return}if(e.ops)for(let i of e.ops)uf(i,n)}function lf(e,n){if(e.symbol){n.add(e.symbol);return}if(e.ops)for(let i of e.ops)lf(i,n)}function ff(e,n){if(e.symbol){let i=e.symbol;if(i==="Unknown"||i==="Undefined"||i==="Nothing")return;let t=e.engine.lookupSymbol(i);if(t&&t.value!==void 0)return;let r=e.engine.lookupFunction(i);if(r&&r.evaluate)return;n.add(i);return}if(e.ops)for(let i of e.ops)ff(i,n)}function cf(e,n){let i=!n||e.operator===n?[e]:[];if(e.ops)for(let t of e.ops)i.push(...cf(t,n));return i}function zo(e){let n=[],i=(t,r=[])=>{if(t.length===0)n.push(r);else for(let s=0;s<t.length;s++){let o=t.slice(),a=o.splice(s,1);i(o.slice(),r.concat(a))}};return i(e),n}function pf(e){for(let n in e)n.startsWith("_")&&e.hasOwnProperty(n)&&Object.defineProperty(e,n,{enumerable:!1,configurable:!0,writable:!0,value:e[n]})}function is(e,n){if(!e.ops)return[];let i=e.ops,t=e.functionDefinition;if(!t||i.length===0)return i;let r=t?.associative?t.name:"";if(i=Gn(i,r),t.lazy)return i;let s=[];for(let o of i){let a=o.operator;if(a==="Hold")s.push(o);else{let u=a==="ReleaseHold"?o.op1:o;if(u){let l=n(u);l!==null&&s.push(l)}}}return Gn(s,r)}async function df(e,n){if(!e.ops)return[];let i=e.ops,t=e.functionDefinition;if(!t||i.length===0)return i;let r=t?.associative?t.name:"";if(i=Gn(i,r),t.lazy)return i;let s=[];for(let o of i){let a=o.operator;if(a==="Hold")s.push(o);else{let u=a==="ReleaseHold"?o.op1:o;if(u){let l=await n(u);l!==null&&s.push(l)}}}return Gn(s,r)}function Jn(e,n,i){if((o=>i&&i.some(a=>a.value.isSame(o)))(e)||(i||(i=[{value:e,because:"initial"}]),!e.isValid))return i;if(!(e.isCanonical||e.isStructural)){let o=e.canonical;return o.isCanonical||o.isStructural?Jn(o,n,i):i}let r=e.engine,s=n?.rules?r.rules(n.rules,{canonical:!0}):r.getRuleSet("standard-simplification");n={...n,rules:s};do{let o=Zd(e,s,n,i);if(o.length<=i.length)break;e=o.at(-1).value,i=o}while(!i.slice(0,-1).some(o=>o.value.isSame(e)));return i}function jd(e,n,i){if(n==null||e===n||e.isSame(n))return!1;let t=e.engine;return i??(i=r=>t.costFunction(r)),i(n)<=1.2*i(e)}function mf(e,n){return e.ops?e.engine.function(e.operator,is(e,i=>Jn(i,n).at(-1).value)):e}function Zd(e,n,i,t){if(e.isNumberLiteral||e.string)return t;if(e.symbol){let o=Mn(e,n,{recursive:!1,canonical:!0,useVariations:!1});return o.length>0?[...t,...o]:t}let r=mf(e,i);r.isSame(e)||(t=[...t,{value:r,because:"simplified operands"}],e=r);let s=Hd(e,n,i,t);return s.length>t.length?s:t}function Hd(e,n,i,t){let r=Mn(e,n,{recursive:!1,canonical:!0,useVariations:i.useVariations??!1});if(r.length===0)return t;let s=r.at(-1).value;return s.isSame(e)||(s=mf(s),!jd(e,s,i?.costFunction))?t:(r.at(-1).value=s,[...t,...r])}function xi(e){return e.symbol?.startsWith("_")??(e.operator==="Wildcard"||e.operator==="WildcardSequence"||e.operator==="WildcardOptionalSequence")}function yi(e){if(e.symbol?.startsWith("_"))return e.symbol;if(e.nops===1){let n=e.op1;if(e.operator==="Wildcard")return`_${n}`;if(e.operator==="WildcardSequence")return`__${n}`;if(e.operator==="WildcardOptionalSequence")return`___${n}`}return e.operator==="Wildcard"?"_":e.operator==="WildcardSequence"?"__":e.operator==="WildcardOptionalSequence"?"___":null}function Uo(e){return typeof e=="string"?e.startsWith("_"):xi(e)?!0:e.ops?Uo(e.operator)||e.ops.some(Uo):!1}function ts(e,n,i){return e.startsWith("_"),e==="_"||e==="__"||e==="___"?i:e in i?n.isSame(i[e])?i:null:Uo(n)?null:{...i,[e]:n}}function bi(e,n,i,t){if(xi(n))return ts(yi(n),e,i);let r=t.acceptVariants??!0;if(t={...t,acceptVariants:!0},n.numericValue!==null)return e.numericValue===null?null:n.isEqual(e)?i:r?Go(e,n,i,t):null;let s=n.string;if(s!==null)return e.string===s?i:null;let o=n.symbol;if(o!==null)return o===e.symbol?i:r?Go(e,n,i,t):null;if(n.ops){let a=t.useVariations??!1,u=e.engine,l=null,f=n.operator;if(f.startsWith("_")?(l=ts(f,u.box(e.operator),i),l!==null&&(l=jo(e,n.ops,l,t))):f===e.operator&&(l=u.lookupFunction(f)?.commutative?Jd(e,n,i,t):jo(e,n.ops,i,t)),l===null&&a){if(!r)return null;l=Go(e,n,i,t)}return l!==null&&(i=l),t.recursive&&e.ops&&(l=Wd(e,n,i,{...t,acceptVariants:r})??l),l}return null}function Wd(e,n,i,t){e.ops;let r=null;for(let s of e.ops){let o=bi(s,n,i,t);o!==null&&(r=o,i=o)}return r}function Go(e,n,i,t){if(!t.useVariations)return null;let r=e.engine,s={...t,acceptVariants:!1},o=(u,l)=>bi(r.function(u,l,{canonical:!1}),n,i,s),a=n.operator;if(a==="Negate"&&e.is(0))return bi(r.Zero,n.op1,i,s);if(a==="Add"){let u=o("Add",[0,e]);if(u!==null||(e.operator==="Subtract"&&(u=o("Add",[e.op1,["Negate",e.op2]])),u!==null))return u}if(a==="Subtract"){let u=o("Subtract",[e,0]);if(u!==null||(e.operator==="Negate"&&(u=o("Subtract",[0,e.op1])),u!==null))return u}if(a==="Multiply"){let u=o("Multiply",[1,e]);if(u!==null||e.operator==="Negate"&&(u=o("Multiply",[-1,e.op1]),u!==null)||e.operator==="Divide"&&(u=o("Multiply",[e.op1,["Divide",1,e.op2]]),u!==null))return u}if(a==="Divide"){let u=o("Divide",[e,1]);if(u!==null)return u}if(a==="Square"){let u=o("Power",[e,2]);if(u!==null)return u}if(a==="Exp"){let u=o("Power",[r.E,e]);if(u!==null)return u}if(a==="Power"){if(n.op2.re===2&&n.op2.im===0){let u=o("Square",[e]);if(u!==null)return u}if(n.op1.symbol==="ExponentialE"){let u=o("Exp",[e]);if(u!==null)return u}{let u=o("Power",[e,1]);if(u!==null)return u}}return null}function Jd(e,n,i,t){e.operator,n.operator;let r=zo(n.ops);for(let s of r){let o=jo(e,s,i,t);if(o!==null)return o}return null}function jo(e,n,i,t){if(n.length===0)return e.ops&&e.ops.length===0?i:null;let r=n[0].engine,s={...i},o=[...e.ops],a=0;for(;a<n.length;){let u=n[a],l=yi(u);if(l!==null)if(l.startsWith("__")){let f=0;if(n[a+1]===void 0)f=o.length+1;else{let p=!1;for(;!p&&f<o.length;)p=bi(o[f],n[a+1],s,t)!==null,f+=1;if(!p&&l.startsWith("___"))return null}if(!l.startsWith("___")&&f<=1)return null;let c;if(f<=1)e.operator==="Add"?c=r.Zero:e.operator==="Multiply"?c=r.One:c=r.Nothing;else if(f===2){if(o.length===0)return null;c=o.shift()}else{let p=r.lookupFunction(e.operator),m=o.splice(0,f-1);p?.associative?c=r.function(e.operator,m,{canonical:!1}):c=r.function("Sequence",m,{canonical:!1})}s=ts(l,c,s)}else if(l.startsWith("_")){if(o.length===0)return null;s=ts(l,o.shift(),s)}else s=bi(o.shift(),u,s,t);else{let f=o.shift();if(!f)return null;s=bi(f,u,s,t)}if(s===null)return null;a+=1}return o.length>0?null:s}function st(e,n,i){n=n.structural;let t=i?.useVariations??!1,r={recursive:i?.recursive??!1,useVariations:t,acceptVariants:t},s=i?.substitution??{};return bi(e.structural,n.structural,s,r)}function Wt(e){let n=e.engine,i=e.operator;if(we(i))return n.function(i,e.ops.map(Wt));if(i==="Divide")return e.ops[0].div(e.ops[1]);if(i==="Negate")return Wt(e.ops[0]).neg();if(i==="Add"){let[t,r]=e.ops.reduce((s,o)=>(o.operator==="Divide"?(s[0].push(o.ops[0]),s[1].push(o.ops[1])):s[0].push(o),s),[[],[]]);return H(...t).div(H(...r))}return e}function Yn(e){let n=e.operator;if(we(n)){let i=Be.from(e.op1),t=Be.from(e.op2),[r,s]=yu(i,t),o=r.sgn()===-1;return r.isOne||(i.div(r),t.div(r)),s.is(1)||(s.isPositive?(i.div(s),t.div(s)):s.isNegative&&(i.div(s.neg()),t.div(s.neg()),o=!o)),o&&([i,t]=[t,i]),e.engine.function(n,[i.asExpression(),t.asExpression()])}if(n==="Negate")return Yn(e.ops[0]).neg();if(n==="Add"){let i=e.engine,t,r=[];for(let o of e.ops){let[a,u]=o.toNumericValue();t=t?t.gcd(a):a,a.isZero||r.push({coeff:a,term:u})}if(!t||t.isOne)return e;let s=r.map(({coeff:o,term:a})=>ae(a,i.box(o.div(t))));return ae(i.number(t),H(...s))}return Be.from(Wt(e)).asExpression()}function hf(e){let n=e.engine;if(e.operator==="Hold")return;let i;if(e.ops){let t=e.functionDefinition;if(t?.sgn){let r=n.swapScope(e.scope);i=t.sgn(e.ops,{engine:n}),n.swapScope(r)}return i}return e.symbol?e.symbolDefinition?.sgn:e.isNumberLiteral?e.sgn:"unsigned"}function ot(e){if(e!==void 0){if(e==="positive")return!0;if(["non-positive","zero","unsigned","negative","negative-infinity"].includes(e))return!1}}function at(e){if(e!==void 0){if(e==="positive"||e==="positive-infinity"||e==="non-negative")return!0;if(["negative","negative-infinity","zero","unsigned"].includes(e))return!1}}function ut(e){if(e!==void 0){if(e==="negative"||e==="negative-infinity")return!0;if(["non-negative","zero","unsigned","positive","positive-infinity"].includes(e))return!1}}function lt(e){if(e!==void 0){if(e==="negative"||e==="negative-infinity"||e==="non-positive")return!0;if(["positive","zero","unsigned"].includes(e))return!1}}function rs(e,n,i){return e.generation===void 0||e.generation===n?(e.value===null&&(e.value=i()),e.value):(e.generation=n,e.value=i(),e.value)}async function gf(e,n,i){return e.generation===void 0||e.generation===n?(e.value===null&&(e.value=await i()),e.value):(e.generation=n,e.value=await i(),e.value)}var Ge=class extends X{constructor(i,t,r,s){super(i,s?.metadata);this._value={value:null,generation:-1};this._valueN={value:null,generation:-1};this._sgn={value:null,generation:-1};this._type={value:null,generation:-1};this._name=t,this._ops=r,this._isStructural=s?.structural??!1,s?.canonical&&(this._canonical=this),(s?.canonical||this._isStructural)&&this.bind(),i._register(this)}get hash(){if(this._hash!==void 0)return this._hash;let i=0;for(let t of this._ops)i=i<<1^t.hash|0;return i=i^pn(this._name)|0,this._hash=i,i}infer(i){let t=this.functionDefinition;return!t||!t.inferredSignature?!1:(t.signature.is("function")?t.signature=new C({kind:"signature",result:i}):Xn(t.signature.type)&&(t.signature=new C({kind:"signature",result:wa(t.signature.type.result,i)})),this.engine.generation+=1,!0)}bind(){this._def=void 0,this._scope=this.engine.context,this._def=this.engine.lookupFunction(this._name);for(let i of this._ops)i.bind()}reset(){}get isCanonical(){return this._canonical===this}set isCanonical(i){this._canonical=i?this:void 0}get isPure(){if(this._isPure!==void 0)return this._isPure;if(!this.isCanonical)return this._isPure=!1,!1;let i=this.functionDefinition?.pure??!1;return i&&(i=this._ops.every(t=>t.isPure)),this._isPure=i,i}get isConstant(){return this.isPure?this._ops.every(i=>i.isConstant):!1}get json(){return[this._name,...this.structural.ops.map(i=>i.json)]}get scope(){return this._scope}get operator(){return this._name}get ops(){return this._ops}get nops(){return this._ops.length}get op1(){return this._ops[0]??this.engine.Nothing}get op2(){return this._ops[1]??this.engine.Nothing}get op3(){return this._ops[2]??this.engine.Nothing}get isValid(){return this._name==="Error"?!1:this._ops.every(i=>i?.isValid)}get canonical(){return this._canonical??(this._canonical=this.isValid?this.engine.function(this._name,this._ops):this),this._canonical}get structural(){if(this.isStructural)return this;let i=this.functionDefinition;if(i?.associative||i?.commutative){let t=this.ops.map(s=>s.structural),r=[];if(!i.associative)r=t;else for(let s of t)s.operator===this.operator?r.push(...s.ops):r.push(s);return this.engine.function(this._name,this.isValid?Rt(this._name,r):r,{canonical:!1,structural:!0})}return this.engine.function(this._name,this.ops.map(t=>t.structural),{canonical:!1,structural:!0})}get isStructural(){return this._isStructural}toNumericValue(){this.isCanonical||this.isStructural;let i=this.engine;if(this.operator==="Complex")return[i._numericValue({re:this.op1.re,im:this.op2.re}),i.One];let t=this;if(t.operator==="Add"&&(t=Yn(this),t.numericValue!==null)){if(typeof t.numericValue=="number"){if(Number.isInteger(t.numericValue))return[i._numericValue(t.numericValue),i.One]}else if(t.numericValue.isExact)return[t.numericValue,i.One]}if(t.operator==="Negate"){let[r,s]=t.op1.toNumericValue();return[r.neg(),s]}if(t.operator==="Multiply"){let r=[],s=i._numericValue(1);for(let o of t.ops){let[a,u]=o.toNumericValue();s=s.mul(a),u.is(1)||r.push(u)}return r.length===0?[s,i.One]:r.length===1?[s,r[0]]:[s,pe(this.engine,r)]}if(t.operator==="Divide"){let[r,s]=t.op1.toNumericValue(),[o,a]=t.op2.toNumericValue(),u=r.div(o);return a.is(1)?[u,s]:[u,i.function("Divide",[s,a])]}if(t.operator==="Power"){if(t.op2.numericValue===null)return[i._numericValue(1),this];let[r,s]=t.op1.toNumericValue();if(r.isOne)return[r,this];let o=G(t.op2);return o!==null?[r.pow(o),i.function("Power",[s,t.op2])]:t.op2.is(.5)?[r.sqrt(),i.function("Sqrt",[s])]:[i._numericValue(1),this]}if(t.operator==="Sqrt"){let[r,s]=t.op1.toNumericValue();return s.is(1)||s.is(0)?r.isOne||r.isZero?[r,s]:[r.sqrt(),s]:[r.sqrt(),i.function("Sqrt",[s])]}if(t.operator==="Root"){let r=t.op2.re;if(isNaN(r)||t.op2.im!==0)return[i._numericValue(1),this];let[s,o]=t.op1.toNumericValue();return r===2?[s.sqrt(),i.function("Sqrt",[o])]:[s.root(r),i.function("Root",[o,t.op2])]}if(t.operator==="Abs"){let[r,s]=t.op1.toNumericValue();return[r.abs(),i.function("Abs",[s])]}if(t.operator,t.operator,t.operator==="Log"||t.operator==="Ln"){let r=t.op2.re;isNaN(r)&&t.operator==="Log"&&(r=10);let[s,o]=t.op1.toNumericValue();return s.isOne?[s,this]:i.box(s.ln(r)).add(i.function(t.operator,[o,t.op2])).toNumericValue()}return[i._numericValue(1),t]}subs(i,t){let r=this._ops.map(s=>s.subs(i,t));return r.every(s=>s.isValid)?this.engine.function(this._name,r,t):this.engine.function(this._name,r,{canonical:!1})}replace(i,t){return Mn(this,i,t).at(-1)?.value??null}match(i,t){return st(this,i,t)}has(i){if(typeof i=="string"){if(this._name===i)return!0}else if(i.includes(this._name))return!0;return this._ops.some(t=>t.has(i))}get sgn(){let i=this.isPure&&this._ops.every(t=>t.isConstant)?void 0:this.engine.generation;return rs(this._sgn,i,()=>{if(!(!this.isValid||this.isNumber!==!0))return hf(this)})}get isNaN(){return this.sgn==="nan"}get isInfinity(){let i=this.sgn;return i==="positive-infinity"||i==="negative-infinity"||i==="complex-infinity"}get isFinite(){if(this.isNumber!==!0||this.isNaN||this.isInfinity)return!1;if(!(this.isNaN===void 0||this.isInfinity===void 0))return!0}get isOne(){if(this.isNonPositive===!0||this.isReal===!1)return!1}get isNegativeOne(){if(this.isNonNegative===!0||this.isReal===!1)return!1}get isPositive(){return ot(this.sgn)}get isNonNegative(){return at(this.sgn)}get isNegative(){return ut(this.sgn)}get isNonPositive(){return lt(this.sgn)}get numerator(){return this.numeratorDenominator[0]}get denominator(){return this.numeratorDenominator[1]}get numeratorDenominator(){if(!this.isCanonical)return this.canonical.numeratorDenominator;if(this.isNumber!==!0)return[this.engine.Nothing,this.engine.Nothing];let i=this.operator;if(i==="Divide")return[this.op1,this.op2];if(i==="Negate"){let[t,r]=this.op1.numeratorDenominator;return[t.neg(),r]}if(i==="Power"){let[t,r]=this.op1.numeratorDenominator;return[t.pow(this.op2),r.pow(this.op2)]}if(i==="Root"){let[t,r]=this.op1.numeratorDenominator;return[t.root(this.op2),r.root(this.op2)]}if(i==="Sqrt"){let[t,r]=this.op1.numeratorDenominator;return[t.sqrt(),r.sqrt()]}if(i==="Abs"){let[t,r]=this.op1.numeratorDenominator;return[t.abs(),r.abs()]}return i==="Multiply"?new Be(this.engine,this.ops).asNumeratorDenominator():[this,this.engine.One]}neg(){return pi(this.canonical)}inv(){if(!this.isCanonical)return this.canonical.inv();if(this.isOne)return this;if(this.isNegativeOne)return this;if(this.operator==="Sqrt")return this.op1.inv().sqrt();if(this.operator==="Divide")return this.op2.div(this.op1);if(this.operator==="Power"){let i=this.op2.neg();return i.operator!=="Negate"?this.op1.pow(i):this.engine.function("Power",[this.op1,i])}if(this.operator==="Root"){let i=this.op2.neg();return i.operator!=="Negate"?this.op1.root(i):this.engine.function("Root",[this.op1,i])}return this.operator==="Exp"?this.engine.E.pow(this.op1.neg()):this.operator==="Rational"?this.op2.div(this.op1):this.operator==="Negate"?this.op1.inv().neg():this.engine._fn("Divide",[this.engine.One,this.canonical])}abs(){return this.isCanonical?this.operator==="Abs"||this.operator==="Negate"?this:this.isNonNegative?this:this.isNonPositive?this.neg():this.engine._fn("Abs",[this]):this.canonical.abs()}add(i){return i===0?this:H(this.canonical,this.engine.box(i))}mul(i){if(i===0)return this.engine.Zero;if(i===1)return this;if(i===-1)return this.neg();if(i instanceof z){if(i.isZero)return this.engine.Zero;if(i.isOne)return this.canonical;if(i.isNegativeOne)return this.neg()}return ae(this.canonical,this.engine.box(i))}div(i){return Hi(this,i)}pow(i){return me(this,i,{numericApproximation:!1})}root(i){if(!this.isCanonical)return this.canonical.root(i);typeof i!="number"&&(i=i.canonical);let t=typeof i=="number"?i:i.im===0?i.re:void 0;if(t===0)return this.engine.NaN;if(t===1)return this;if(t===-1)return this.inv();if(t===2)return this.engine.function("Sqrt",[this]);if(this.operator==="Power"&&t!==void 0){let[r,s]=this.ops;return r.pow(s.div(t))}if(this.operator==="Divide"){let[r,s]=this.ops;return r.root(i).div(s.root(i))}if(this.operator==="Negate"&&t!==void 0)return t%2===0?this.op1.root(i):this.op1.root(i).neg();if(this.operator==="Sqrt"){if(t!==void 0)return this.op1.root(t+2);if(typeof i!="number")return this.op1.root(i.add(2))}if(this.operator==="Multiply"){let r=this.ops.map(s=>s.root(i));return ae(...r)}if(this.operator==="Root"){let[r,s]=this.ops;return r.root(s.mul(i))}if(this.isNumberLiteral){let r=this.numericValue;if(typeof r=="number"){if(r<0)return this.engine.NaN;if(r===0)return this.engine.Zero;if(r===1)return this.engine.One;if(t!==void 0){let s=this.engine.number(Math.pow(r,1/t));if(!s.isFinite||s.isInteger)return s}}else{if(r.isOne)return this.engine.One;if(r.isZero)return this.engine.Zero;if(t!==void 0){let s=r.root(t);if(s.isExact)return this.engine.number(s)}}}return this.engine._fn("Root",[this,this.engine.box(i)])}sqrt(){return this.root(2)}ln(i){let t=i?this.engine.box(i):void 0;if(!this.isCanonical)return this.canonical.ln(t);if(this.is(0))return this.engine.NegativeInfinity;if(this.operator==="Exp")return this.op1;if(t&&this.isSame(t))return this.engine.One;if(!t&&this.isSame(this.engine.E))return this.engine.One;if(this.operator==="Power"){let[r,s]=this.ops;return r.isSame(this.engine.E)?s:s.mul(r.ln(t))}if(this.operator==="Root"){let[r,s]=this.ops;return s.div(r.ln(t))}return this.operator==="Sqrt"?this.op1.ln(t).div(2):this.operator==="Divide"?this.op1.ln(t).sub(this.op2.ln(t)):t&&t.type.matches("finite_integer")?t.re===10?this.engine._fn("Log",[this]):this.engine._fn("Log",[this,t]):this.engine._fn("Ln",[this])}get complexity(){if(this.isCanonical)return this.functionDefinition?.complexity??Un}get baseDefinition(){return this._def}get functionDefinition(){return this._def}get isNumber(){let i=this.type.type;if(i!=="unknown")return v(i,"number")}get isInteger(){let i=this.type.type;if(i!=="unknown")return v(i,"integer")}get isRational(){let i=this.type.type;if(i!=="unknown")return v(i,"rational")}get isReal(){let i=this.type.type;if(i!=="unknown")return v(i,"real")}get isFunctionExpression(){return!0}get type(){let i=this.isPure&&this._ops.every(t=>t.isConstant)?void 0:this.engine.generation;return rs(this._type,i,()=>{let t=Yd(this);return t?new C(t):void 0})??C.unknown}simplify(i){return Jn(this,i).at(-1)?.value??this}evaluate(i){return rs(i?.numericApproximation?this._valueN:this._value,this.engine.generation,Qd(this.engine,this._computeValue(i)))}evaluateAsync(i){return gf(i?.numericApproximation?this._valueN:this._value,this.engine.generation,Xd(this.engine,this._computeValueAsync(i)))}N(){return this.evaluate({numericApproximation:!0})}solve(i){let t=vt(i??this.unknowns);return t.length!==1?null:Ur(this,t[0])}get isCollection(){let i=this.functionDefinition;return i?i.collection?.contains!==void 0||i.collection?.size!==void 0:!1}contains(i){return this.functionDefinition?.collection?.contains?.(this,i)??!1}get size(){return this.functionDefinition?.collection?.size?.(this)??0}each(i,t){let r=this.functionDefinition?.collection?.iterator?.(this,i,t);return r||{next(){return{done:!0,value:void 0}}}}at(i){return this.functionDefinition?.collection?.at?.(this,i)}get(i){if(typeof i=="string")return this.functionDefinition?.collection?.at?.(this,i);if(i.string)return this.functionDefinition?.collection?.at?.(this,i.string)}indexOf(i){return this.functionDefinition?.collection?.indexOf?.(this,i)??-1}subsetOf(i,t){return this.functionDefinition?.collection?.subsetOf?.(this,i,t)??!1}_computeValue(i){return()=>{if(!this.isValid)return this;let t=i?.numericApproximation??!1;if(t){let o=this.operator;if(o==="Integrate"||o==="Limit")return this.engine.box(["N",this],{canonical:!0}).evaluate(i)}if(!this.isCanonical){this.engine.pushScope();let o=this.canonical;return this.engine.popScope(),!o.isCanonical||!o.isValid?this:o.evaluate(i)}let r=this.functionDefinition;if(r?.threadable&&this.ops.some(o=>ie(o))){let o=Ms(this._ops);if(!o)return this.engine.Nothing;let a=[];for(;;){let{done:u,value:l}=o.next();if(u)break;a.push(this.engine._fn(this.operator,l).evaluate(i))}return a.length===0?this.engine.Nothing:a.length===1?a[0]:this.engine._fn("List",a)}let s=is(this,o=>o.evaluate(i));if(r){let o=this.engine,a=o.swapScope(this.scope),u=r.evaluate?.(s,{numericApproximation:t,engine:o});return o.swapScope(a),u??this.engine.function(this._name,s)}return this.engine.function(this._name,s)}}_computeValueAsync(i){return async()=>{if(!this.isValid)return this;let t=i?.numericApproximation??!1;if(t){let o=this.operator;(o==="Integrate"||o==="Limit")&&this.engine.box(["N",this],{canonical:!0}).evaluateAsync(i)}if(!this.isCanonical){this.engine.pushScope();let o=this.canonical;return this.engine.popScope(),!o.isCanonical||!o.isValid?this:o.evaluateAsync(i)}let r=this.functionDefinition;if(r?.threadable&&this.ops.some(o=>ie(o))){let o=Ms(this._ops);if(!o)return this.engine.Nothing;let a=[];for(;;){let{done:u,value:l}=o.next();if(u)break;a.push(this.engine._fn(this.operator,l).evaluateAsync(i))}return a.length===0?this.engine.Nothing:a.length===1?a[0]:Promise.all(a).then(u=>this.engine._fn("List",u))}let s=await df(this,async o=>await o.evaluateAsync(i));if(r){let o=this.engine,a=o.swapScope(this.scope),u={numericApproximation:t,engine:o,signal:i?.signal},l=r.evaluateAsync?.(s,u)??r.evaluate?.(s,u);return o.swapScope(a),Promise.resolve(l).then(f=>f??this.engine.function(this._name,s))}return Promise.resolve(this.engine.function(this._name,s))}}};function Yd(e){if(!e.isValid)return"error";if(e.operator==="Function"){let t=e.ops[0].type,r=e.ops.slice(1);return k(`(${r.map(s=>"any").join(", ")}) -> ${t}`)}let n=e.functionDefinition;if(n){let i=n.signature instanceof C?n.signature.type:typeof n.signature=="string"?k(n.signature):n.signature,t=Kn(i)??"unknown";if(typeof n.type=="function"){let r=n.type(e.ops,{engine:e.engine});r&&(r instanceof C?t=r.type:t=k(r)??t)}return t}return"function"}function Qd(e,n){return()=>{if(e._deadline===void 0){e._deadline=Date.now()+e.timeLimit;let i=n();return e._deadline=void 0,i}return n()}}function Xd(e,n){return async()=>{if(e._deadline===void 0){e._deadline=Date.now()+e.timeLimit;let i=await n();return e._deadline=void 0,i}return n()}}var Nn=class e extends X{constructor(n,i,t){super(n,t),this._string=i.normalize(),n._register(this)}get json(){return`'${this._string}'`}get hash(){return pn("String"+this._string)}get operator(){return"String"}get isPure(){return!0}get isCanonical(){return!0}set isCanonical(n){}get type(){return new C("string")}get complexity(){return 19}get string(){return this._string}match(n,i){return _n(n)||(n=this.engine.box(n,{canonical:!1})),xi(n)?{[yi(n)]:this}:n instanceof e&&this._string===n._string?{}:null}get isCollection(){return!0}contains(n){return n.string?this._string.includes(n.string):!1}get size(){return this._string.length}each(n,i){let t=this.string,r=n??1;return i=Math.min(i??t.length,t.length),i<=0?{next:()=>({value:void 0,done:!0})}:{next:()=>i>0?(i--,{value:this.engine.string(t[r++-1]),done:!1}):{value:void 0,done:!0}}}at(n){return this.engine.string(this._string[n-1])}get(n){}indexOf(n){return n.string?this._string.indexOf(n.string):-1}};var Jt=class e extends X{constructor(i,t,r){super(i,r?.metadata);this.options=r;if(t instanceof Hn)this._tensor=t;else{let s=r?.canonical??!0;this._operator=t.op??"List",this._ops=s?Fe(i,t.ops):t.ops,this._expression=i._fn(this._operator,this._ops,{canonical:s})}i._register(this)}get structural(){return this._expression??(this._expression=this._tensor.expression),this._expression}get tensor(){if(this._tensor===void 0){this._operator,this._ops;let i=xf(this._operator,this._ops);if(i===void 0){let t=xf(this._operator,this._ops);throw new Error("Invalid tensor")}this._tensor=bn(this.engine,i)}return this._tensor}get baseDefinition(){return this.structural.baseDefinition}get functionDefinition(){return this.structural.functionDefinition}bind(){this.structural.bind()}reset(){}get hash(){return pn("BoxedTensor")}get canonical(){return this.isCanonical?this:new e(this.engine,{op:this._operator,ops:this._ops},{canonical:!0})}get isCanonical(){return this._tensor?!0:this._expression.isCanonical}set isCanonical(i){this._tensor||(this.structural.isCanonical=i)}get isPure(){return this._tensor?!0:this.structural.isPure}get isValid(){return this._tensor?!0:this.structural.isValid}get complexity(){return 97}get operator(){return this._tensor?"List":this._operator}get nops(){return this._tensor?this._tensor.shape[0]:this.structural.nops}get ops(){return this.structural.ops}get op1(){if(this._tensor){let i=this._tensor.data;return i.length===0?this.engine.Nothing:this.engine.box(i[0])}return this.structural.op1}get op2(){if(this._tensor){let i=this._tensor.data;return i.length<2?this.engine.Nothing:this.engine.box(i[1])}return this.structural.op2}get op3(){if(this._tensor){let i=this._tensor.data;return i.length<3?this.engine.Nothing:this.engine.box(i[2])}return this.structural.op3}neg(){return this.structural.neg()}inv(){return this.engine.One.div(this.structural)}abs(){return this.structural.abs()}add(i){return this.structural.add(i)}sub(i){return this.structural.sub(i)}mul(i){return this.structural.mul(i)}div(i){return this.structural.div(i)}pow(i){return this.structural.pow(i)}root(i){return this.structural.root(i)}sqrt(){return this.structural.sqrt()}get shape(){return this.tensor.shape}get rank(){return this.tensor.rank}get type(){return new C(this.isValid?k("list<number>"):"error")}get json(){return this.structural.json}isEqual(i){return this===i?!0:i instanceof e?this.tensor.equals(i.tensor):this.structural.isEqual(i)}get isCollection(){return!0}contains(i){let t=this.tensor.data,r=this.tensor.field.cast(i,this.tensor.dtype);if(typeof r=="number")return t.includes(r);let s=t.map(o=>this.tensor.field.cast(o,"expression")??i.engine.Nothing);for(let o of s)if(i.isSame(o))return!0;return!1}get size(){return this.tensor.shape.reduce((i,t)=>i*t,1)}each(i,t){let r=this.tensor.data,s=i??1;return t=Math.min(t??r.length,r.length),t<=0?{next:()=>({value:void 0,done:!0})}:{next:()=>t>0?(t--,{value:this.engine.box(r[s++-1]),done:!1}):{value:void 0,done:!0}}}at(i){}indexOf(i){return-1}match(i,t){return _n(i)||(i=this.engine.box(i,{canonical:!1})),xi(i)?{[yi(i)]:this}:this.structural.match(i,t)}evaluate(i){return this._tensor?this:this.structural.evaluate(i)}simplify(i){return this._tensor?this:this.structural.simplify(i)}N(){return this._tensor?this:this.structural.N()}};function Oe(e){return e instanceof Jt}function Zo(e,n){let i,t=[],r=!0,s=(o,a=0)=>{if(o.length!==0){o.length>1&&t[a]!==void 0?r=r&&t[a]===o.length:t[a]=Math.max(t[a]??0,o.length);for(let u of o)if(u.operator===e?s(u.ops,a+1):i=Lr(i,tl(u)),!r)return}};return s(n),r?{shape:t,dtype:i}:void 0}function xf(e,n){let{shape:i,dtype:t}=Zo(e,n)??{shape:[],dtype:void 0};if(t===void 0)return;let r=!0,s=[],o=Or(n[0].engine,"expression"),a=o.cast.bind(o),u=l=>{for(let f of l)if(f.operator===e)u(f.ops);else{let c=a(f,t);if(c===void 0){r=!1;return}s.push(c)}};if(u(n),!!r)return{shape:i,rank:i.length,data:s,dtype:t}}function ss(e,{engine:n}){if(e.length===0)return null;let i=e[0];if(e.length===1)return i.canonical;if(e.length===2){let t=bf(i);if(!Number.isNaN(t)){let s=e[1];if(s.operator==="Divide"||s.operator==="Rational"){let[o,a]=[s.op1.canonical.re,s.op2.canonical.re];if(o>0&&o<=1e3&&a>1&&a<=1e3&&Number.isInteger(o)&&Number.isInteger(a)){let u=s.canonical;return t<0&&(u=u.neg()),n._fn("Add",[i.canonical,u])}}}let r=e[1];if(!Number.isNaN(t)){let s=r.canonical;if(s.re===0&&s.im===1)return n.number(n.complex(0,t))}if(i.symbol&&r.operator==="Delimiter"){if(r.nops===0)return n.lookupFunction(i.symbol)||n.declare(i.symbol,"function"),n.box([i.symbol]);let s=r.op1.operator==="Sequence"?r.op1.ops:[r.op1];if(s=J(s),!n.lookupSymbol(i.symbol))return n.lookupFunction(i.symbol)||n.declare(i.symbol,"function"),n.function(i.symbol,s)}if(i.symbol&&r.operator==="Delimiter"&&(r.op2.string==="[,]"||r.op2.string==="[;]")){let s=r.op1.operator==="Sequence"?r.op1.ops:[r.op1];return n.function("At",[i,...s])}}return e=yf(e),e=J(e),e.every(t=>t.isValid&&(t.type.isUnknown||t.type.matches("number")||si(t)&&!t.string))?n._fn("Multiply",e):n._fn("Tuple",e)}function yf(e){let n=[];for(let i of e)i.operator==="InvisibleOperator"?n.push(...yf(i.ops)):n.push(i);return n}function bf(e){if(e.isNumberLiteral){let n=e.re;if(Number.isInteger(n))return n}if(e.operator==="Negate"){let n=bf(e.op1);if(!Number.isNaN(n))return-n}return Number.NaN}function Ei(e,n){if(n===!1)return e;if(n===!0)return e.canonical;typeof n=="string"&&(n=[n]);for(let i of n)switch(i){case"InvisibleOperator":e=Wo(e);break;case"Number":e=Ef(e);break;case"Multiply":e=Nf(e);break;case"Add":e=vf(e);break;case"Power":e=ft(e);break;case"Divide":e=Tf(e);break;case"Flatten":e=Ho(e);break;case"Order":e=Zs(e,{recursive:!0});break;default:throw Error("Invalid canonical form")}return e}function Ho(e){if(!e.operator||!e.ops||e.nops===0)return e;if(e.operator==="Delimiter")return Ho(e.op1);let n=e.engine,i=e.operator==="Add"||e.operator==="Multiply";return i||n.lookupFunction(e.operator)?.associative&&(i=!0),i?n.function(e.operator,Gn(e.ops.map(Ho),e.operator)):e}function Wo(e){return e.ops?e.operator==="InvisibleOperator"?ss(e.ops.map(Wo),{engine:e.engine})??e:e.engine._fn(e.operator,e.ops.map(Wo)):e}function Ef(e){return e.isNumberLiteral?e.canonical:e.ops?e.engine._fn(e.operator,e.ops.map(Ef)):e}function Nf(e){if(!e.ops)return e;let n=e.ops.map(Nf);return e.operator==="Multiply"?pe(e.engine,n.map(i=>i.canonical)):e.operator==="Negate"?pe(e.engine,[n[0],e.engine.NegativeOne]):e}function vf(e){if(!e.ops)return e;let n=e.ops.map(vf);return e.operator==="Add"?Ve(e.engine,n):e.operator==="Subtract"?Ve(e.engine,[n[0],n[1].neg()]):e.engine._fn(e.operator,n)}function ft(e){return e.ops?e.operator==="Power"?ft(e.op1).pow(ft(e.op2)):e.ops?e.engine._fn(e.operator,e.ops.map(ft)):e:e}function Tf(e){return e.operator==="Divide"?He(ft(e.op1),ft(e.op2)):e.ops?e.engine._fn(e.operator,e.ops.map(Tf)):e}function Jo(e,n,i){if(n instanceof X)return n;if(n=F(n),typeof n=="string")return on(e,n,i);if(Array.isArray(n)){let[t,...r]=n;return new Ge(e,t,r.map(s=>Jo(e,s,i)))}if(typeof n=="object"){if("fn"in n)return Jo(e,n.fn,i);if("str"in n)return new Nn(e,n.str);if("sym"in n)return on(e,n.sym,i);if("num"in n)return on(e,n.num,i)}return on(e,n,i)}function os(e,n,i,t){if(t=t?{...t}:{},"canonical"in t||(t.canonical=!0),!xe(n))throw new Error(`Unexpected function name: "${n}" (not a valid identifier: ${We(n)})`);let r=t.structural??!1;if(n==="Hold")return new Ge(e,"Hold",[Jo(e,i[0],t)],{...t,canonical:!0,structural:r});if(n==="Error"||n==="ErrorCode")return e._fn(n,i.map(o=>e.box(o,{canonical:!1})),t.metadata);if(n==="String")return i.length===0?new Nn(e,"",t.metadata):new Nn(e,i.map(o=>Sf(o)??"").join(""),t.metadata);if(n==="Symbol"&&i.length>0)return e.symbol(i.map(o=>Sf(o)??"").join(""),t);if(n==="Number"&&i.length===1)return on(e,i[0],t);if(r===!1&&(t.canonical===!0||t.canonical==="Number"||Array.isArray(t.canonical)&&t.canonical.includes("Number"))){if((n==="Divide"||n==="Rational")&&i.length===2){let o=_f(i[0]);if(o!==null){let a=_f(i[1]);if(a!==null)return e.number([o,a],t)}n="Divide"}if(n==="Complex"){if(i.length===1){let o=i[0];if(o instanceof X&&o.isNumberLiteral)return e.number(e.complex(0,o.re),t);let a=D(i[0]);return a!==null&&a!==0?e.number(e.complex(0,a),t):e.box(o).mul(e.I)}if(i.length===2){let o=i[0]instanceof X?i[0].re:D(i[0]),a=i[1]instanceof X?i[1].re:D(i[1]);return a!==null&&o!==null&&!isNaN(a)&&!isNaN(o)?a===0&&o===0?e.Zero:a!==0?e.number(e._numericValue({re:o,im:a}),t):on(e,i[0],t):on(e,i[0],t).add(on(e,i[1],t).mul(e.I))}throw new Error("Expected one or two arguments with Complex expression")}if(n==="Negate"&&i.length===1){let o=i[0];if(typeof o=="number")return e.number(-o,t);if(o instanceof M)return e.number(o.neg(),t);let a=e.box(o,t),u=a.numericValue;if(u!==null)return e.number(typeof u=="number"?-u:u.neg(),t);i=[a]}}return t.canonical===!0?Kd(e,n,i,t.metadata):Ei(new Ge(e,n,i.map(o=>on(e,o,{canonical:t.canonical,structural:r})),{metadata:t.metadata,canonical:!1,structural:r}),t.canonical??!1)}function on(e,n,i){if(n==null)return e.error("missing");if(n instanceof z)return nm(e,n);if(n instanceof X)return Ei(n,i?.canonical??!0);i=i?{...i}:{},"canonical"in i||(i.canonical=!0);let t=i.canonical===!0,r=i.structural??!1;if(Array.isArray(n)){if(typeof n[0]!="string")throw new Error(`The first element of an array should be a string (the function name): ${JSON.stringify(n)}`);return Ei(os(e,n[0],n.slice(1),{canonical:t,structural:r}),i.canonical)}if(typeof n=="number"||n instanceof M||n instanceof $)return e.number(n);if(typeof n=="string"){if(n.startsWith("'")&&n.endsWith("'"))return new Nn(e,n.slice(1,-1));let s=n;if(s=s.replace(/[\u0009-\u000d\u0020\u00a0]/g,""),/^[+-]?[0-9]/.test(s)){let o=e.number(n);if(!o.isNaN)return o}return xe(n)?e.symbol(n,{canonical:t}):e.error("invalid-identifier",n)}if(typeof n=="object"){if("fn"in n){let[s,...o]=n.fn;return Ei(os(e,s,o,{canonical:t,structural:r}),i.canonical)}if("str"in n)return new Nn(e,n.str);if("sym"in n)return e.symbol(n.sym,{canonical:t});if("num"in n)return e.number(n,{canonical:t});throw new Error(`Unexpected MathJSON object: ${JSON.stringify(n)}`)}return e.symbol("Undefined")}function Sf(e){if(typeof e=="string")return e;if(e instanceof X)return e.string??e.symbol??e.toString();if(typeof e=="object"){if("str"in e)return e.str;if("fn"in e&&e.fn[0]==="String"&&typeof e.fn[1]=="string")return e.fn[1]}return Array.isArray(e)&&e[0]==="String"&&typeof e[1]=="string"?e[1]:null}function Kd(e,n,i,t){let r=em(e,n,i,t);if(r)return r;if(n==="List"){let l=i.map(p=>e.box(p)),{shape:f,dtype:c}=Zo("List",l)??{};return c&&f?new Jt(e,{op:"List",ops:l}):e._fn("List",l)}let s=e.lookupFunction(n);if(!s)return new Ge(e,n,J(Fe(e,i)),{metadata:t,canonical:!0});if(s.lazy){let l=i.map(f=>e.box(f,{canonical:!1}));if(s.canonical){try{let f=s.canonical(l,{engine:e});if(f)return f}catch(f){console.error(f.message)}return new Ge(e,n,l,{metadata:t,canonical:!1})}return e._fn(n,Ci(e,l,s.signature.type,s.lazy,s.threadable)??l,t)}let o=i.map(l=>e.box(l));if(s.canonical){try{let l=s.canonical(o,{engine:e});if(l)return l}catch(l){console.error(l.message)}return new Ge(e,n,o,{metadata:t,canonical:!1})}let a=J(o,s.associative?n:void 0),u=Ci(e,a,s.signature.type,s.lazy,s.threadable);if(u)return e._fn(n,u,t);if(a.length===1&&a[0].operator===n){if(s.involution)return a[0].op1;if(s.idempotent)return e._fn(n,o[0].ops,t)}return e._fn(n,Rt(n,a),t)}function em(e,n,i,t){let r=[];if(n==="Add"||n==="Multiply")r=Me(e,Di(e,i),{flatten:n});else if(n==="Negate"||n==="Square"||n==="Sqrt"||n==="Exp")r=Me(e,Di(e,i),1);else if(n==="Ln"||n==="Log")r=Me(e,Di(e,i)),r.length===0&&(r=[e.error("missing")]);else if(n==="Power"||n==="Root")r=Me(e,Di(e,i),2);else if(n==="Divide")r=Me(e,Di(e,i)),r.length===0&&(r=[e.error("missing"),e.error("missing")]),r.length===1&&(r=[r[0],e.error("missing")]);else return null;if(!r.every(s=>s.isValid))return e._fn(n,r,t);if(n==="Add")return Ve(e,r);if(n==="Negate")return al(r[0]);if(n==="Multiply")return pe(e,r);if(n==="Divide")return r.length===2?He(...r):r.slice(1).reduce((s,o)=>He(s,o),r[0]);if(n==="Exp")return zi(e.E,r[0]);if(n==="Square")return zi(r[0],e.number(2));if(n==="Power")return zi(r[0],r[1]);if(n==="Root")return li(r[0],r[1]);if(n==="Sqrt")return li(r[0],2);if(n==="Ln"||n==="Log"){if(r.length>0){if(r[0].is(1))return e.Zero;if(r.length===1)return e._fn(n,r,t)}return e._fn("Log",r,t)}return null}function nm(e,n){if(n.isZero)return e.Zero;if(n.isOne)return e.One;if(n.isNegativeOne)return e.NegativeOne;if(n.isNaN)return e.NaN;if(n.isNegativeInfinity)return e.NegativeInfinity;if(n.isPositiveInfinity)return e.PositiveInfinity;if(n=n.asExact??n,!n.isExact){let s=n.im;return s===0?e.number(n.bignumRe??n.re):n.re===0?e.number(e.complex(0,s)):n.bignumRe!==void 0&&!fi(n.bignumRe)?Ve(e,[e.number(n.bignumRe),e.number(e.complex(0,s))]):e.number(e.complex(n.re,n.im))}let i=[],t=n;if(t.sign!==0)if(t.radical===1)i.push(e.number(t.rational));else{let s=t.rational,o=e.function("Sqrt",[e.number(t.radical)]);if(ve(s))i.push(o);else{let[a,u]=s;u===1?a===1?i.push(o):i.push(e.function("Multiply",[e.number(a),o])):a===1?i.push(e.function("Divide",[o,e.number(u)])):i.push(e.function("Divide",[e.function("Multiply",[e.number(a),o]),e.number(u)]))}}let r;return n.im===0?i.length===0?e.Zero:(r=i.length===1?i[0]:pe(e,i),r):i.length===0?e.number(e.complex(0,n.im)):(r=i.length===1?i[0]:pe(e,i),Ve(e,[r,e.number(e.complex(0,n.im))]))}function _f(e){return typeof e=="bigint"?e:typeof e=="number"&&Number.isInteger(e)?BigInt(e):e instanceof X?Dt(e):e instanceof M||typeof e=="string"?K(e):e instanceof $?e.im===0?K(e.re):null:uu(e)}var im={Sin:["Cos","_"],Cos:["Negate",["Sin","_"]],Tan:["Power",["Sec","_"],2],Sec:["Multiply",["Tan","_"],["Sec","_"]],Csc:["Multiply",["Negate",["Cot","_"]],["Csc","_"]],Cot:["Negate",["Power",["Csc","_"],2]],Arcsin:["Power",["Subtract",1,["Power","_",2]],["Negate","Half"]],Arccos:["Negate",["Power",["Subtract",1,["Power","_",2]],["Negate","Half"]]],Arctan:["Power",["Add",1,["Power","_",2]],-1],Arcsec:["Multiply",["Power",["Subtract",1,["Power","_",2]],["Negate","Half"]],["Negate",["Power","_",2]]],Arccsc:["Multiply",["Power",["Subtract",1,["Power","_",2]],["Negate","Half"]],["Negate",["Power","_",2]]],Arccot:["Negate",["Power",["Add",1,["Power","_",2]],-1]],Sinh:["Cosh","_"],Cosh:["Sinh","_"],Tanh:["Power",["Sech","_"],2],Sech:["Multiply",["Tanh","_"],"Sech"],Csch:["Multiply",["Coth","_"],"Csch"],Coth:["Negate",["Power",["Csch","_"],2]],Arcsinh:["Power",["Add",["Power","_",2],1],["Negate","Half"]],Arccosh:["Power",["Subtract",["Power","_",2],1],["Negate","Half"]],Arctanh:["Power",["Subtract",1,["Power","_",2]],-1],Arcsech:["Negate",["Power",["Multiply","2","Subtract",["Power","_",2]],["Negate","Half"]]],Arccsch:["Negate",["Power",["Multiply","2","Add",["Power","_",2]],["Negate","Half"]]],Arccoth:["Negate",["Power",["Subtract",1,["Power","_",2]],-1]],Ln:["Divide",1,"_"],Log:["Power",["Multiply","_",["Ln","10"]],-1],Sqrt:["Multiply",["Power","_",["Negate","Half"]],"Half"],Abs:["Which",["Equal","_",0],NaN,["Less","_",0],-1,["Greater","_",0],1,"True",["D",["Abs","_"],"_"]],Erf:["Multiply",["Divide","2",["Sqrt","Pi"]],["Exp",["Negate",["Square","_"]]]],Gamma:["Multiply",["Gamma","_"],["Digamma","_"]],Digamma:["Add",["Multiply",["Digamma","_"],["Gamma","_"]],["Multiply",["Power","_",-1],["Gamma","_"]]],Zeta:["Multiply",["Multiply",-1,["Zeta","_"]],["Digamma","_"]],PolyGamma:["Add",["Multiply",["PolyGamma","_"],["Gamma","_"]],["Multiply",["Power","_",-1],["Gamma","_"]]],Beta:["Multiply",["Add",["Multiply",["Beta","_"],["Digamma","_"]],["Multiply",["Power","_",-1],["Beta","_"]]],["Beta","_"]],Erfc:["Multiply",["Negate",["Erfc","_"]],["Exp",["Negate",["Power","_",2]]],["Power","_",-1]],LambertW:["Multiply",["Power","_",-1],["Multiply",["Add","_",["LambertW","_"]],["Add",["LambertW","_"],1]]],AiryAi:["Multiply",["AiryAi","_"],["AiryBi","_"]],AiryBi:["Multiply",["AiryAi","_"],["AiryBi","_"]],BesselJ:["Multiply",["BesselJ","_"],["BesselY","_"]],BesselY:["Multiply",["BesselJ","_"],["BesselY","_"]],BesselI:["Multiply",["BesselI","_"],["BesselK","_"]],BesselK:["Multiply",["BesselI","_"],["BesselK","_"]],FresnelS:["Multiply",["FresnelS","_"],["FresnelC","_"]],FresnelC:["Multiply",["FresnelS","_"],["FresnelC","_"]],Erfi:["Multiply",["Erfi","_"],["Erf","_"]]};function If(e,n){if(n===0)return e;let i=e.engine,t="_";e.symbol&&e.functionDefinition&&(e=Qi(i.symbol(e.symbol),[i.symbol("_")])),e.operator==="Function"&&(t=e.ops[1].symbol??"_",e=e.ops[0]);let r=e;for(;n-- >0&&r;)r=Qe(r,t);return r}function Qe(e,n){let i=e.engine;if(e.string)return;if(e.isNumberLiteral)return e.engine.Zero;if(e.symbol===n)return e.engine.One;if(e.symbol)return e.engine.Zero;if(!e.operator)return;if(e.operator==="Negate"){let o=Qe(e.op1,n);return o?o.neg():i._fn("D",[e.op1,i.symbol(n)]).neg()}if(e.operator==="Add"){let o=e.ops.map(a=>Qe(a,n));return o.some(a=>a===void 0)?void 0:H(...o).evaluate()}if(e.operator==="Multiply"){let o=e.ops.map((a,u)=>{let l=e.ops.slice();l.splice(u,1);let f=ae(...l);return(Qe(a,n)??i._fn("D",[a,i.symbol(n)])).mul(f)});return o.some(a=>a===void 0)?void 0:H(...o).evaluate()}if(e.operator==="Power"){let[o,a]=e.ops;if(o.symbol===n)return a.mul(o.pow(a.add(i.NegativeOne))).evaluate();let u=o,l=a,f=Qe(u,n)??i._fn("D",[u,i.symbol(n)]),p=(Qe(l,n)??i._fn("D",[l,i.symbol(n)])).mul(u.ln()),m=l.mul(f).div(u);return e.mul(p.add(m)).evaluate()}if(e.operator==="Divide"){let[o,a]=e.ops,u=Qe(o,n)??i._fn("D",[o,i.symbol(n)]),l=Qe(a,n)??i._fn("D",[a,i.symbol(n)]);return u.mul(a).sub(l.mul(o)).div(a.pow(2)).evaluate()}let t=im[e.operator];if(!t){if(e.nops>1)return;let o=i._fn("Derivative",[i.symbol(e.operator),i.One]);if(!o.isValid)return;let a=e.ops[0],u=Qe(a,n)??i._fn("D",[a,i.symbol(n)]);return u.isValid?i._fn("Apply",[o,a]).mul(u):void 0}if(e.nops>1)return i._fn("D",[e,i.symbol(n)]);let r=e.ops[0],s=Qe(r,n)??i._fn("D",[r,i.symbol(n)]);return Qi(i.box(t),[r]).mul(s)}var Bf=[{Derivative:{threadable:!1,lazy:!0,signature:"(any, order:number?) -> function",canonical:(e,{engine:n})=>n._fn("Derivative",[e[0].canonical,...e.slice(1)]),evaluate:e=>{let n=e[0].evaluate(),i=Math.floor(e[1]?.N().re);return If(n,isNaN(i)?1:i)}},D:{threadable:!1,lazy:!0,signature:"(expression, variable:symbol, variables:...symbol) -> expression",canonical:(e,{engine:n})=>{let i=n,t=e[0];if(!t)return null;i.pushScope();let r=e.slice(1);t.bind(),t=t.canonical;let s=i._fn("D",[t,...r]);return i.popScope(),s},evaluate:(e,{engine:n})=>{let i=n,t=e[0].canonical,r=i.swapScope(t.scope);t=t.evaluate();let s=e.slice(1);s.length===0&&(t=void 0);for(let o of s){if(!o.symbol){t=void 0;break}if(t=Qe(t,o.symbol),t===void 0)break}return i.swapScope(r),t=t?.canonical,t?.operator==="D"?t:t?.evaluate()}},ND:{threadable:!1,lazy:!0,signature:"(function, at:number) -> number",evaluate:([e,n],{engine:i})=>{let t=n?.canonical.N().re;if(isNaN(t))return;let r=go(i.box(e));return i.number(Xa(r,t))}},Integrate:{wikidata:"Q80091",threadable:!1,lazy:!0,signature:"(expression, range:(tuple|symbol|nothing)) -> number",canonical:(e,{engine:n})=>{let i=n,t=e[1],r=null,s=null,o=null;t&&t.operator!=="Tuple"&&t.operator!=="Triple"&&t.operator!=="Pair"&&t.operator!=="Single"?r=t:t&&(r=t.ops?.[0]??null,s=t.ops?.[1]?.canonical??null,o=t.ops?.[2]?.canonical??null),r&&r.operator==="Hold"&&(r=r.op1),r&&r.operator==="ReleaseHold"&&(r=r.op1.evaluate()),r??(r=i.Nothing),r.symbol||(r=i.typeError("symbol",r.type,r)),s&&s.symbol!=="Nothing"&&(s.type.isUnknown||(s=In(i,s,"number"))),o&&o.symbol!=="Nothing"&&(o.type.isUnknown||(o=In(i,o,"number"))),s&&o?t=i.tuple(r,s,o):o?t=i.tuple(r,i.NegativeInfinity,o):s?t=i.tuple(r,s):t=r;let a=e[0]??i.error("missing");return a=a.canonical,a.operator==="Delimiter"&&a.op1.operator==="Sequence"&&(a=a.op1.op1),i._fn("Integrate",[a,t])}},NIntegrate:{threadable:!1,lazy:!0,signature:"(expression, lower:number, upper:number) -> number",evaluate:(e,{engine:n})=>{let i=n.precision;n.precision="machine";let t=n.strict;n.strict=!1;let[r,s]=e.slice(1).map(a=>a.value),o;if(typeof r=="number"&&typeof s=="number"){let a=go(e[0]);o=n.number(jr(a,r,s))}return n.precision=i,n.strict=t,o}}},{Limit:{description:"Limit of a function",complexity:5e3,threadable:!1,lazy:!0,signature:"(expression, point:number, direction:number?) -> number",evaluate:(e,{engine:n})=>{let[i,t,r]=e,s=t.N().re;if(!isFinite(s))return;let o=ze(i);return n.number(ii(a=>{let u=o([n.number(a)])?.value;return typeof u=="number"?u:Number.NaN},s,r?r.re:1))}},NLimit:{description:"Numerical approximation of the limit of a function",complexity:5e3,threadable:!1,lazy:!0,signature:"(expression, point:number, direction:number?) -> number",evaluate:([e,n,i],{engine:t})=>{let r=n.N().re;if(Number.isNaN(r))return;let s=ze(e);return t.number(ii(o=>{let a=s([t.number(o)])?.value;return typeof a=="number"?a:Number.NaN},r,i?i.re:1))}}}];var wf=[{Block:{lazy:!0,signature:"(any) -> any",canonical:sm,evaluate:rm},Condition:{lazy:!0,signature:"(value, symbol) -> boolean",evaluate:([e,n],{engine:i})=>{let t=[];return n.symbol?t=[n.symbol]:n.operator==="And"&&(t=n.ops.map(r=>r.symbol??"")),Rl(e,t)?i.True:i.False}},If:{lazy:!0,signature:"(expression, expression, expression) -> any",type:([e,n,i])=>ke(n.type.type,i.type.type),evaluate:([e,n,i],{engine:t})=>(e=e.evaluate(),e&&e.symbol==="True"?n?.evaluate()??t.Nothing:i?.evaluate()??t.Nothing)},Loop:{lazy:!0,signature:"(body:expression, collection:expression) -> any",type:([e])=>e.type,evaluate:([e,n],{engine:i})=>Ri(kf(e,n,i),i._timeRemaining),evaluateAsync:async([e,n],{engine:i,signal:t})=>Ai(kf(e,n,i),i._timeRemaining,t)},Which:{lazy:!0,signature:"(...expression) -> unknown",type:e=>e.length%2!==0?"nothing":ke(...e.filter((n,i)=>i%2===1).map(n=>n.type.type)),canonical:(e,n)=>e.length%2!==0?n.engine.Nothing:n.engine._fn("Which",e.map(i=>i.canonical)),evaluate:(e,n)=>tm(e,n)},FixedPoint:{lazy:!0,signature:"any -> any"}}];function tm(e,n){let i=0;for(;i<e.length-1;){if(e[i].evaluate().symbol==="True")return e[i+1]?e[i+1].evaluate(n):n.engine.symbol("Undefined");i+=2}return n.engine.symbol("Undefined")}function rm(e,{engine:n}){if(e.length===0)return n.Nothing;n.resetContext();let i;for(let t of e){let r=t.operator;if(r==="Return"){i=t.op1.evaluate();break}if(r==="Break"||r==="Continue"){i=n.box([r,t.op1.evaluate()]);break}i=t.evaluate()}return i??n.Nothing}function sm(e,n){let{engine:i}=n;if(e.length===0)return null;i.pushScope();let t=[],r=[];for(let o of e)o.operator==="Declare"?t.push(o):r.push(Df(o));let s=i._fn("Block",[...t,...r]);return i.popScope(),s}function Df(e){return e.operator==="Declare"&&e.engine.error("unexpected-declare"),e.ops?e.engine._fn(e.operator,e.ops.map(Df)):e}function*kf(e,n,i){if(e??(e=i.Nothing),e.symbol==="Nothing")return e;if(n?.isCollection){let r,s=ze(e),o=0;for(let a of ee(n)){if(r=s([a])??i.Nothing,r.operator==="Break")return r.op1;if(r.operator==="Return")return r;if(o+=1,o%1e3===0&&(yield r),o>i.iterationLimit)throw new dn({cause:"iteration-limit-exceeded"})}return r}let t=0;for(;;){let r=e.evaluate();if(r.operator==="Break")return r.op1;if(r.operator==="Return")return r;if(t+=1,t%1e3===0&&(yield r),t>i.iterationLimit)throw new dn({cause:"iteration-limit-exceeded"})}}var Af=[{Real:{threadable:!0,complexity:1200,signature:"number -> real",sgn:([e])=>{let n=e.re;if(!isNaN(n))return n===0?"zero":n>0?"positive":"negative"},evaluate:(e,{engine:n})=>{let i=e[0].numericValue;if(i!==null)return typeof i=="number"?e[0]:n.number(i.bignumRe??i.re)}},Imaginary:{threadable:!0,complexity:1200,signature:"number -> real",sgn:([e])=>{let n=e.im;if(!isNaN(n))return n===0?"zero":n>0?"positive":"negative"},evaluate:(e,{engine:n})=>{let i=e[0].numericValue;if(i!==null)return typeof i=="number"?n.Zero:n.number(i.im)}},Argument:{threadable:!0,complexity:1200,signature:"number -> real",evaluate:(e,{engine:n})=>{let i=e[0].numericValue;if(i!==null)return typeof i=="number"?i>=0?n.Zero:n.Pi:i.im===0?i.re>=0?n.Zero:n.Pi:n.function("ArcTan2",[i.im,i.re]).evaluate()}},AbsArg:{threadable:!0,complexity:1200,signature:"number -> tuple<real, real>",evaluate:(e,{engine:n})=>{if(e[0].numericValue!==null)return n.tuple(n.function("Abs",e).evaluate(),n.function("Argument",e).evaluate())}},Conjugate:{threadable:!0,complexity:1200,signature:"number -> number",type:([e])=>e.type,sgn:([e])=>e.sgn,evaluate:(e,{engine:n})=>{let i=e[0].numericValue;if(i!==null)return typeof i=="number"||i.im===0?e[0]:n.number(n.complex(i.re,-i.im))}},ComplexRoots:{threadable:!0,complexity:1200,signature:"(number, number) -> list<number>",evaluate:(e,{engine:n})=>{let i=e[0].re;if(isNaN(i))return;let t=e[1].re;if(!Number.isInteger(t)||t<=0)return;let r=[],s=e[0].im??0,o=Math.atan2(s,i),a=Math.sqrt(i*i+s*s);for(let u=0;u<t;u++){let l=(o+2*Math.PI*u)/t,f=Math.pow(a,1/t);r.push([f*Math.cos(l),f*Math.sin(l)])}return n.function("List",r.map(u=>n.number(u[1]!==0?n.complex(u[0],u[1]):u[0])))}}}];function Yt(e){return e[Math.floor(Math.random()*e.length)]}function Rf(e,n){if(e==="Add"||e==="Multiply"){let i=[],t=1+Math.floor(Math.random()*12);for(;t>0;)i.push(vn(n+1)),t-=1;return[e,...i]}return e==="Divide"||e==="Power"?[e,vn(n+1),vn(n+1)]:e==="Root"?[e,vn(n+1),vn(10)]:e==="trig"?om():[e,vn(n+1)]}function om(){return[Yt(["Cos","Sin","Tan","Sinh","Arccos","Arcsinh"]),Yt(["Pi","-1","0","1",["Divide","Pi",-5],["Multiply",-2,["Divide","Pi",11]],["Multiply","Half","Pi"],["Multiply",5,"Pi"],["Multiply",12,"Pi"],["Divide","Pi",5],["Divide","Pi",9],["Multiply",5,["Divide","Pi",9]],["Multiply",2,["Divide","Pi",11]],["Multiply",2,["Divide","Pi",3]]])]}function vn(e){if(e??(e=1),e===1){let n=Yt([["Sqrt",["Multiply",6,["Sum",["Divide",1,["Power","n",2]],["Triple",["Hold","n"],1,"PositiveInfinity"]]]],"Add","Add","Add","Add","Add","Multiply","Multiply","Multiply","Multiply","Divide","Divide","Divide","Root","Sqrt","Subtract","Negate","trig"]);return typeof n=="string"?Rf(n,1):n}if(e===2){let n=Math.random();if(n>.75)return vn(1);if(n>.5)return vn(3);let i=Yt(["Multiply","Multiply","Add","Power","trig","Ln","Exp"]);return Rf(i,2)}return Yt([-12345e-9,-2,-2,-2,-3,-5,-6,-12,-1654e-60,0,0,12345e-8,1654e-60,1,2,2,2,2,3,3,5,5,6,6,1234.5678,5678.1234,10,15,18,30,60,1234e54,"123456789.12345678912345e200","987654321.12345678912345",["Rational",-6,10],["Rational",-12,15],["Rational",-15,12],["Rational",3,5],["Rational",12,15],["Rational",15,12],"ExponentialE",["Sqrt",3],["Sqrt",5],["Sqrt",15],["Sqrt",25],["Complex",-1.1,1.1],["Complex",4,5],"x","x","x","x",["Add","x",1],["Divide","x",3],["Square","x"],["Power","x",3],["Power","x",4],["Subtract","x",1],["Add","x",1],"Pi"])}var Mf=[{Nothing:{type:"nothing"}},{InvisibleOperator:{complexity:9e3,lazy:!0,signature:"...any -> any",canonical:(e,{engine:n})=>{let i=ss(e,{engine:n});return i?i.operator==="Multiply"?pe(n,i.ops):i:n.Nothing}},Sequence:{lazy:!0,signature:"...any -> any",type:e=>e.length===0?"nothing":e.length===1?e[0].type:"any",canonical:(e,{engine:n})=>{let i=J(e);return i.length===0?n.Nothing:i.length===1?i[0]:n._fn("Sequence",i)}},Delimiter:{complexity:9e3,lazy:!0,signature:"(any, string?) -> any",type:e=>e.length===0?"nothing":e[0].type,canonical:(e,{engine:n})=>{if(e.length===0)return n._fn("Tuple",[]);if(e.length>2)return n._fn("Delimiter",qe(n,e,2));let i=e[0];if(i.operator==="Sequence")return n._fn("Tuple",Fe(n,i.ops));i=i.canonical;let t=e[1]?.string;return!t||t.startsWith("(")&&t.endsWith(")")?i:(t?.length??0)>3?n._fn("Delimiter",[i,n.error("invalid-delimiter",e[1].toString())]):n._fn("Delimiter",[e[0],In(n,e[1],"string")])},evaluate:(e,n)=>{let i=n.engine;if(e.length===0)return i.Nothing;let t=e[0];return(t.operator==="Sequence"||t.operator==="Delimiter")&&(e=Cs(e[0].ops)),e.length===1?e[0].evaluate(n):i._fn("Tuple",e.map(r=>r.evaluate(n)))}},Error:{lazy:!0,complexity:500,signature:"((string|expression), expression?) -> nothing",canonical:(e,{engine:n})=>n._fn("Error",e)},ErrorCode:{complexity:500,lazy:!0,signature:"(string, ...any) -> error",canonical:(e,{engine:n})=>{let i=In(n,e[0],"string").string;return i==="incompatible-type"?n._fn("ErrorCode",[n.string(i),e[1],e[2]]):n._fn("ErrorCode",e)}},Unevaluated:{description:"Prevent an expression from being evaluated",lazy:!1,signature:"any -> any",type:([e])=>e.type,evaluate:([e])=>e},Hold:{description:"Hold an expression, preventing it from being canonicalized or evaluated until `ReleaseHold` is applied to it",lazy:!0,signature:"any -> unknown",type:([e])=>e.symbol?"symbol":e.string?"string":e.isNumberLiteral?e.type:e.ops?Kn(e.type.type)??"unknown":"unknown",eq:(e,n)=>(n.operator==="Hold"&&(n=n.ops[0]),e.ops[0].isSame(n)),canonical:(e,{engine:n})=>e.length!==1?null:n.hold(e[0]),evaluate:([e],{engine:n})=>n.hold(e)},ReleaseHold:{description:"Release an expression held by `Hold`",lazy:!0,signature:"any -> any",type:([e])=>e.type,evaluate:([e],n)=>e.operator==="Hold"?e.ops[0].evaluate(n):e.evaluate(n)},HorizontalSpacing:{signature:"number -> nothing",canonical:(e,{engine:n})=>e.length===2?e[0].canonical:n.Nothing},Style:{complexity:9e3,signature:"(expression, map) -> expression",lazy:!0,type:([e])=>e.type,canonical:([e,n],{engine:i})=>(e=e.canonical,n=vo(i,n),n.nops===0?e:i._fn("Style",[e,n])),evaluate:([e,n],i)=>e.evaluate(i)}},{About:{description:"Return information about an expression",lazy:!0,signature:"any -> string",evaluate:([e],{engine:n})=>{let i=[e.toString()];if(i.push(""),e.string)i.push("string");else if(e.symbol)if(e.symbolDefinition){let t=e.symbolDefinition;t.isConstant&&i.push("constant"),t.isFunction&&i.push("function"),typeof t.description=="string"?i.push(t.description):Array.isArray(t.description)&&i.push(t.description.join(`
|
|
88
|
-
`)),t.wikidata&&i.push(`WikiData: ${t.wikidata}`),t.url&&i.push(`Read More: ${t.url}`)}else i.push("symbol"),i.push(`value: ${e.evaluate().toString()}`);else e.isNumberLiteral?i.push(e.type.toString()):e.ops?(i.push(e.type.toString()),i.push(e.isCanonical?"canonical":"non-canonical")):i.push("Unknown expression's type");return n.string(i.join(`
|
|
89
|
-
`))}},Head:{description:"Return the head of an expression, the name of the operator",lazy:!0,signature:"any -> symbol",canonical:(e,{engine:n})=>{if(e.length!==1)return null;let i=e[0];return i.operator?n.box(i.operator):n._fn("Head",Fe(n,e))},evaluate:(e,{engine:n})=>n.symbol(e[0]?.operator??"Undefined")},Tail:{description:"Return the tail of an expression, the operands of the expression",lazy:!0,signature:"any -> collection",canonical:(e,{engine:n})=>{if(e.length!==1)return null;let i=e[0];return i.ops?n._fn("Sequence",i.ops):n._fn("Tail",Fe(n,e))},evaluate:([e],{engine:n})=>e?.ops?n._fn("Sequence",e.ops):n.Nothing},Identity:{description:"Return the argument unchanged",signature:"any -> any",type:([e])=>e.type,evaluate:([e])=>e}},{Apply:{description:"Apply a function to a list of arguments",signature:"(name:symbol, arguments:...expression) -> any",type:([e])=>Kn(e.type.type)??"any",canonical:(e,{engine:n})=>e[0].symbol?n.function(e[0].symbol,e.slice(1)):n._fn("Apply",e),evaluate:e=>Qi(e[0],e.slice(1))},Assign:{description:"Assign a value to a symbol",lazy:!0,pure:!1,signature:"(symbol, any) -> any",type:([e,n])=>n.type,canonical:(e,{engine:n})=>{if(e.length!==2)return null;let i=e[0];if(!i.symbol)return null;let t=e[1];return n._fn("Assign",[i.canonical,t.canonical])},evaluate:([e,n],{engine:i})=>{let t=n.evaluate();return i.assign(e.symbol,t),t}},Assume:{description:"Assume a type for a symbol",lazy:!0,pure:!1,signature:"any -> symbol",evaluate:(e,{engine:n})=>n.symbol(n.assume(e[0]))},Declare:{lazy:!0,pure:!1,signature:"symbol -> any",type:([e,n])=>n.type,canonical:(e,{engine:n})=>{if(e.length!==2)return null;let i=e[0],t=e[1];return i.symbol?t.symbol?n._fn("Declare",e):n._fn("Declare",[i,n._fn("Hold",[t])]):null},evaluate:(e,{engine:n})=>{let i=e[0],t=e[1];if(!i.symbol)return n.Nothing;let r=t.evaluate();if(!r.string)return;let s=k(r.string);if(Sn(s))return n.declare(i.symbol,s),r}},Type:{lazy:!0,signature:"any -> string",evaluate:([e],{engine:n})=>n.string(e.type.toString()??"unknown")},Evaluate:{lazy:!0,signature:"any -> any",type:([e])=>e.type,canonical:(e,{engine:n})=>n._fn("Evaluate",qe(n,e,1)),evaluate:([e],n)=>e.evaluate(n)},Function:{complexity:9876,lazy:!0,signature:"function",type:([e,...n])=>`(${n.map(i=>i.type)}) -> ${e.type.type}`,canonical:(e,{engine:n})=>{if(e.length===0)return n.Nothing;let i=$r(e[0],e.slice(1));if(!i)return null;let t=i[0].canonical,r=i.slice(1).map(s=>n.symbol(s));return r.length===0?t:n._fn("Function",[t,...r])},evaluate:e=>{}},Simplify:{lazy:!0,signature:"any -> expression",canonical:(e,{engine:n})=>n._fn("Simplify",qe(n,e,1)),evaluate:([e])=>e.simplify()??void 0},CanonicalForm:{description:["Return the canonical form of an expression","Can be used to sort arguments of an expression.",'Sorting arguments of commutative functions is a weak form of canonicalization that can be useful in some cases, for example to accept "x+1" and "1+x" while rejecting "x+1" and "2x-x+1"'],complexity:8200,lazy:!0,signature:"(any, ...symbol) -> any",canonical:e=>{if(e.length===1)return e[0].canonical;let n=e.slice(1).map(i=>i.symbol??i.string).filter(i=>i!=null);return Ei(e[0],n)}},N:{description:"Numerically evaluate an expression",lazy:!0,signature:"any -> any",type:([e])=>e.type,canonical:(e,{engine:n})=>{if(e.length!==1)return n._fn("N",qe(n,e,1));let i=e[0].operator;if(i==="N")return e[0].canonical;if(i==="Integrate"){let{index:t,lower:r,upper:s}=nt(e[0].op2);if(!t||r===void 0||s===void 0)return null;let o=e[0].op1;return n._fn("NIntegrate",[n.function("Function",[o,t]),n.number(r),n.number(s)])}return i==="Limit"?n._fn("NLimit",e[0].ops):n._fn("N",e)},evaluate:([e])=>e.N()},Random:{description:["Random(): Return a random number between 0 and 1","Random(n): Return a random integer between 0 and n-1","Random(m, n): Return a random integer between m and n-1"],pure:!1,signature:"(lower:integer?, upper:integer?) -> finite_number",type:([e,n])=>e===void 0&&n===void 0?"finite_number":"finite_integer",sgn:()=>"non-negative",evaluate:(e,{engine:n})=>{if(e.length===0)return n.number(Math.random());let[i,t]=e,r,s;return t===void 0?(r=0,s=Math.floor(i.re-1),isNaN(s)&&(s=0)):(r=Math.floor(i.re),s=Math.floor(t.re),isNaN(r)&&(r=0),isNaN(s)&&(s=0)),n.number(r+Math.floor(Math.random()*(s-r)))}},Signature:{lazy:!0,signature:"symbol -> string | nothing",evaluate:([e],{engine:n})=>e.functionDefinition?n.string(e.functionDefinition.signature.toString()):n.Nothing},Subscript:{lazy:!0,signature:"(collection|string, any) -> any",type:([e,n])=>e.string&&G(n)!==null?"integer":e.isCollection&&si(e)?ei(e.type.type)??"any":e.symbol?"symbol":"expression",canonical:([e,n],{engine:i})=>{if(e=e.canonical,e.string){let t=G(n.canonical);if(t!==null&&t>1&&t<=36){let[r,s]=Vi(e.string,t);return s?i.error(["unexpected-digit",s[0]],e.toString()):i.number(r)}return i._fn("Baseform",[e,i.error(["invalid-base",n.toString()])])}if(e.isCollection&&si(e))return i._fn("At",[e,n.canonical]);if(e.symbol){let t=n.string??n.symbol??G(n)?.toString();if(t)return i.symbol(e.symbol+"_"+t)}return n.operator==="Sequence"&&i._fn("Subscript",[e,i._fn("List",n.ops)]),i._fn("Subscript",[e,n])}},Symbol:{complexity:500,description:"Construct a new symbol with a name formed by concatenating the arguments",threadable:!0,lazy:!0,signature:"...any -> any",type:e=>e.length===0?"nothing":"symbol",canonical:(e,{engine:n})=>{if(e.length===0)return n.Nothing;let i=e.map(t=>t.symbol??t.string??G(t)?.toString()??"").join("");return i.length>0?n.symbol(i):n.Nothing}},Timing:{description:"`Timing(expr)` evaluates `expr` and return a `Pair` of the number of second elapsed for the evaluation, and the value of the evaluation",signature:"(value, repeat: integer?) -> tuple<result:value, time:number>",evaluate:(e,{engine:n})=>{if(e[1].symbol==="Nothing"){let u=globalThis.performance.now(),l=e[0].evaluate(),f=1e3*(globalThis.performance.now()-u);return n.tuple(n.number(f),l)}let i=Math.max(3,Math.round(G(e[1])??3)),t=[],r;for(;i>0;){let u=globalThis.performance.now();r=e[0].evaluate(),t.push(1e3*(globalThis.performance.now()-u)),i-=1}let s=Math.max(...t),o=Math.min(...t);t=t.filter(u=>u>o&&u<s);let a=t.reduce((u,l)=>u+l,0);return a===0?n.tuple(n.number(s),r):n.tuple(n.number(a/t.length),r)}}},{Wildcard:{signature:"symbol -> symbol",canonical:(e,{engine:n})=>e.length!==1?n.symbol("_"):n.symbol("_"+e[0].symbol)},WildcardSequence:{signature:"symbol -> symbol",canonical:(e,{engine:n})=>e.length!==1?n.symbol("__"):n.symbol("__"+e[0].symbol)},WildcardOptionalSequence:{signature:"symbol -> symbol",canonical:(e,{engine:n})=>e.length!==1?n.symbol("___"):n.symbol("___"+e[0].symbol)}},{LatexString:{description:"Value preserving type conversion/tag indicating the string is a LaTeX string",signature:"string -> string",evaluate:([e])=>e},Latex:{description:"Serialize an expression to LaTeX",signature:"...any -> string",evaluate:(e,{engine:n})=>n.box(["LatexString",n.string(b(e.map(i=>i.latex)))])},Parse:{description:"Parse a LaTeX string and evaluate to a corresponding expression",signature:"string -> any",evaluate:([e],{engine:n})=>n.parse(e.string)??n.Nothing}},{RandomExpression:{signature:"() -> expression",evaluate:(e,{engine:n})=>n.box(vn())}}];var Cf=[{Matrix:{complexity:9e3,lazy:!0,signature:"(matrix, string?, string?) -> matrix",type:([e])=>e.type,canonical:am,evaluate:(e,n)=>e[0].evaluate(n)},Vector:{complexity:9e3,lazy:!0,signature:"...number -> vector",type:e=>k(`vector<${e.length}>`),canonical:(e,{engine:n})=>n._fn("Matrix",[n.function("List",e.map(i=>n.function("List",[i])))])}},{Shape:{complexity:8200,signature:"(value) -> tuple",evaluate:(e,{engine:n})=>{let i=e[0];return Oe(i)?n.tuple(...i.tensor.shape):n.tuple()}},Rank:{description:"The length of the shape of the expression. Note this is not the matrix rank (the number of linearly independent rows or columns in the matrix)",complexity:8200,signature:"(value) -> number",sgn:()=>"positive",evaluate:(e,{engine:n})=>{let i=e[0];return Oe(i)?n.number(i.tensor.rank):n.Zero}},Reshape:{complexity:8200,signature:"(list<number>, tuple) -> value",type:([e,n])=>{if(!e.type.matches("list"))return"nothing";let i=e.type.type;return v(i.elements,"number")?k(`list<number^${n.ops.map(t=>t.toString()).join("x")}>`):"nothing"},evaluate:(e,{engine:n})=>{let i=e[0],t=e[1].ops?.map(r=>r.value)??[];if(!Oe(i)&&ie(i)&&(i=n.function("List",[...ee(i)])),Oe(i))return t.join("x")===i.tensor.shape.join("x")?i:i.tensor.reshape(...t).expression}},Flatten:{complexity:8200,signature:"(value) -> list",evaluate:(e,{engine:n})=>{let i=e[0];if(Oe(i))return n.box(["List",...i.tensor.flatten().map(t=>n.box(t))]);if(ie(i))return n.function("List",[...ee(i)])}},Transpose:{complexity:8200,signature:"(matrix|vector, axis1: integer?, axis2: integer?) -> matrix",evaluate:(e,{engine:n})=>{let i=e[0],t=1,r=2;if(e.length===3&&(t=e[1].value,r=e[2].value,t>0&&r>0),t!==r&&(!Oe(i)&&ie(i)&&(i=n.function("List",[...ee(i)])),Oe(i)))return t===1&&r===2?i.tensor.transpose()?.expression:i.tensor.transpose(t,r)?.expression}},ConjugateTranspose:{complexity:8200,signature:"(tensor, axis1: integer?, axis2: integer?) -> matrix",evaluate:e=>{let n=e[0],i=1,t=2;if(e.length===3&&(i=e[1].value,t=e[2].value,i>0&&t>0),i!==t&&Oe(n))return n.tensor.conjugateTranspose(i,t)?.expression}},Determinant:{complexity:8200,signature:"(matrix) -> number",evaluate:e=>{let n=e[0];if(Oe(n))return n.tensor.determinant()}},Inverse:{complexity:8200,signature:"(matrix) -> matrix",type:([e])=>e.type,evaluate:([e])=>{if(Oe(e))return e.tensor.inverse()?.expression}},PseudoInverse:{complexity:8200,signature:"(matrix) -> matrix",evaluate:([e])=>{if(Oe(e))return e.tensor.pseudoInverse()?.expression}},AdjugateMatrix:{complexity:8200,signature:"(matrix) -> matrix",evaluate:e=>{let n=e[0];if(Oe(n))return n.tensor.adjugateMatrix()?.expression}},Trace:{complexity:8200,signature:"(matrix) -> number",evaluate:e=>{let n=e[0];if(Oe(n))return n.tensor.trace()}}}];function am(e,{engine:n}){let i="Matrix";if(e.length===0)return n._fn(i,[]);let t=e[0].operator==="Vector"?e[0].canonical.ops[0]:e[0].canonical,r=e[1]?.canonical,s=e[2]?.canonical;return e.length>3?n._fn(i,qe(n,e,3)):s?n._fn(i,[t,r,s]):r?n._fn(i,[t,r]):n._fn(i,[t])}var Pf={True:{wikidata:"Q16751793",type:"boolean",constant:!0},False:{wikidata:"Q5432619",type:"boolean",constant:!0},And:{wikidata:"Q191081",threadable:!0,associative:!0,commutative:!0,idempotent:!0,complexity:1e4,signature:"(boolean, ...boolean) -> boolean",evaluate:Of},Or:{wikidata:"Q1651704",threadable:!0,associative:!0,commutative:!0,idempotent:!0,complexity:1e4,signature:"(boolean, ...boolean) -> boolean",evaluate:Lf},Not:{wikidata:"Q190558",threadable:!0,involution:!0,complexity:10100,signature:"boolean -> boolean",evaluate:Ff},Equivalent:{wikidata:"Q220433",threadable:!0,complexity:10200,signature:"(boolean, boolean) -> boolean",canonical:(e,{engine:n})=>{let i=e[0].symbol,t=e[1].symbol;return i==="True"&&t==="True"||i==="False"&&t==="False"?n.True:i==="True"&&t==="False"||i==="False"&&t==="True"?n.False:n._fn("Equivalent",e)},evaluate:qf},Implies:{wikidata:"Q7881229",threadable:!0,complexity:10200,signature:"(boolean, boolean) -> boolean",evaluate:$f},Exists:{signature:"function",lazy:!0},NotExists:{signature:"function",lazy:!0},ExistsUnique:{signature:"function",lazy:!0},ForAll:{signature:"function",lazy:!0},NotForAll:{signature:"function",lazy:!0},KroneckerDelta:{description:"Return 1 if the arguments are equal, 0 otherwise",signature:"(value, ...value) -> integer",evaluate:(e,{engine:n})=>{if(e.length===1)return e[0].symbol==="True"?n.One:n.Zero;if(e.length===2)return e[0].isEqual(e[1])?n.One:n.Zero;for(let i=1;i<e.length;i++)if(!e[i].isEqual(e[0]))return n.Zero;return n.One}},Boole:{description:"Return 1 if the argument is true, 0 otherwise. Also known as the Iverson bracket",signature:"boolean -> integer",evaluate:(e,{engine:n})=>e[0].symbol==="True"?n.One:n.Zero}};function Of(e,{engine:n}){if(e.length===0)return n.True;let i=[];for(let t of e){if(t.symbol==="False")return n.False;if(t.symbol!=="True"){let r=!1;for(let s of i)if(s.isSame(t))r=!0;else if(t.operator==="Not"&&t.op1.isSame(s)||s.operator==="Not"&&s.op1.isSame(t))return n.False;r||i.push(t)}}return i.length===0?n.True:i.length===1?i[0]:n._fn("And",i)}function Lf(e,{engine:n}){if(e.length===0)return n.True;let i=[];for(let t of e){if(t.symbol==="True")return n.True;if(t.symbol!=="False"){let r=!1;for(let s of i)if(s.isSame(t))r=!0;else if(t.operator==="Not"&&t.op1.isSame(s)||s.operator==="Not"&&s.op1.isSame(t))return n.True;r||i.push(t)}}return i.length===0?n.False:i.length===1?i[0]:n._fn("Or",i)}function Ff(e,{engine:n}){let i=e[0]?.symbol;if(i==="True")return n.False;if(i==="False")return n.True}function qf(e,{engine:n}){let i=e[0].symbol,t=e[1].symbol;if(i==="True"&&t==="True"||i==="False"&&t==="False")return n.True;if(i==="True"&&t==="False"||i==="False"&&t==="True")return n.False}function $f(e,{engine:n}){let i=e[0].symbol,t=e[1].symbol;if(i==="True"&&t==="True"||i==="False"&&t==="False"||i==="False"&&t==="True")return n.True;if(i==="True"&&t==="False")return n.False}function Vf(e){let n={And:Of,Or:Lf,Not:Ff,Equivalent:qf,Implies:$f}[e.operator]?.(e.engine,e.ops);if(n)return{value:n,because:"logic"}}function Yo(e,n,i,t){let r=e.engine;return e.operator===i?r.box([t,...e.ops.map(s=>Yo(s,n,i,t))]):n.operator===i?r.box([t,...n.ops.map(s=>Yo(e,s,i,t))]):r.box([t,e,n])}function zf(e,n="Add",i="Multiply"){if(e.operator!==i)return e;let t=e.ops;return!t||t.length<2?e:e.engine.box([n,t.slice(1).reduce((r,s)=>Yo(r,s,n,i),t[0])])}var Gf=[{Expand:{description:"Expand out products and positive integer powers",lazy:!0,signature:"(value)-> value",evaluate:([e])=>Pe(e.canonical)??e},ExpandAll:{description:"Recursively expand out products and positive integer powers",lazy:!0,signature:"(value)-> value",evaluate:([e])=>ol(e)??e},Factor:{description:"Factors an algebraic expression into a product of irreducible factors",lazy:!0,signature:"(value)-> value",evaluate:([e])=>Yn(e.canonical)},Together:{description:"Combine rational expressions into a single fraction",lazy:!0,signature:"(value)-> value",evaluate:([e])=>Wt(e)},Distribute:{description:"Distribute multiplication over addition",lazy:!0,signature:"(value)-> value",evaluate:([e])=>e&&zf(e)}}];var jf={Congruent:{description:"Indicate that two expressions are congruent modulo a number",complexity:11e3,signature:"(number, number, modulo: integer) -> boolean",evaluate:(e,{engine:n})=>{if(e.length<3)return;let[i,t,r]=e,s=i.value,o=t.value,a=r.value;if(typeof s=="number"&&typeof o=="number"&&typeof a=="number")return s%a===o%a?n.True:n.False}},IsSame:{description:"Compare two expressions for structural equality",lazy:!0,signature:"(any, any) -> boolean",evaluate:(e,{engine:n})=>{if(e.length!==2)return;let[i,t]=e;return i.isSame(t)?n.True:n.False}},Equal:{complexity:11e3,signature:"(any, any) -> boolean",lazy:!0,canonical:(e,{engine:n})=>re(n,"Equal",e),eq:(e,n)=>e.operator!==n.operator?!1:e.op1.sub(e.op2).N().isEqual(n.op1.sub(n.op2).N()),evaluate:(e,{engine:n})=>{if(e.length<2)return n.True;let i;for(let t of e)if(!i)i=t;else if(qr(i,t)!==!0)return n.False;return n.True}},NotEqual:{wikidata:"Q28113351",complexity:11e3,signature:"(any, any) -> boolean",canonical:(e,{engine:n})=>re(n,"NotEqual",e),eq:(e,n)=>e.operator!==n.operator?!1:!!(e.op1.isEqual(n.op1)&&e.op2.isEqual(n.op2)||e.op1.isEqual(n.op2)&&e.op2.isEqual(n.op1)),evaluate:(e,{engine:n})=>{if(e.length<2)return n.False;let i;for(let t of e)if(!i)i=t;else if(i.isEqual(t)===!0)return n.False;return n.True}},Less:{complexity:11e3,signature:"(any, any, ...any) -> boolean",canonical:(e,{engine:n})=>re(n,"Less",e),eq:(e,n)=>Uf(e,n,"Greater"),evaluate:(e,{engine:n})=>{if(e.length===2){let[t,r]=e,s=t.isLess(r);return s===void 0?void 0:s?n.True:n.False}if(e.length<2)return n.True;let i;for(let t of e)if(!i)i=t;else{let r=t.isLess(i);if(r===void 0)return;if(r===!1)return n.False;i=t}return n.True}},NotLess:{complexity:11e3,signature:"(any, any, ...any) -> boolean",canonical:(e,{engine:n})=>n._fn("Not",[re(n,"Less",e)])},Greater:{complexity:11e3,signature:"(any, any, ...any) -> boolean",canonical:(e,{engine:n})=>re(n,"Less",[...e].reverse())},NotGreater:{complexity:11e3,signature:"(any, any, ...any) -> boolean",canonical:(e,{engine:n})=>n._fn("Not",[n._fn("Greater",e)])},LessEqual:{complexity:11e3,signature:"(any, any, ...any) -> boolean",canonical:(e,{engine:n})=>re(n,"LessEqual",e),eq:(e,n)=>Uf(e,n,"LessGreater"),evaluate:(e,{engine:n})=>{if(e.length===2){let[t,r]=e,s=t.isLessEqual(r);return s===void 0?void 0:s?n.True:n.False}if(e.length<2)return n.True;let i;for(let t of e)if(!i)i=t;else{let r=t.isLessEqual(i);if(r===void 0)return;if(r===!1)return n.False;i=t}return n.True}},NotLessNotEqual:{complexity:11e3,signature:"(any, any, ...any) -> boolean",canonical:(e,{engine:n})=>n._fn("Not",[re(n,"LessEqual",e)])},GreaterEqual:{complexity:11e3,signature:"(any, any, ...any) -> boolean",canonical:(e,{engine:n})=>re(n,"LessEqual",[...e].reverse())},NotGreaterNotEqual:{complexity:11e3,signature:"(any, any, ...any) -> boolean",canonical:(e,{engine:n})=>n._fn("Not",[re(n,"GreaterEqual",e)])},TildeFullEqual:{description:"Indicate isomorphism, congruence and homotopic equivalence",signature:"(any, any, ...any) -> boolean",canonical:(e,{engine:n})=>re(n,"TildeFullEqual",e)},NotTildeFullEqual:{complexity:11100,signature:"(any, any, ...any) -> boolean",canonical:(e,{engine:n})=>n._fn("Not",[re(n,"TildeFullEqual",e)])},TildeEqual:{description:"Approximately or asymptotically equal",complexity:11e3,signature:"(any, any, ...any) -> boolean",canonical:(e,{engine:n})=>re(n,"TildeEqual",e)},NotTildeEqual:{complexity:11100,signature:"(any, any, ...any) -> boolean",canonical:(e,{engine:n})=>n._fn("Not",[re(n,"TildeEqual",e)])},Approx:{complexity:11100,signature:"(any, any, ...any) -> boolean",canonical:(e,{engine:n})=>re(n,"Approx",e)},NotApprox:{complexity:11100,signature:"(any, any, ...any) -> boolean",canonical:(e,{engine:n})=>n._fn("Not",[re(n,"Approx",e)])},ApproxEqual:{complexity:11100,signature:"(any, any, ...any) -> boolean",canonical:(e,{engine:n})=>re(n,"ApproxEqual",e)},NotApproxEqual:{complexity:11100,canonical:(e,{engine:n})=>n._fn("Not",[re(n,"ApproxEqual",e)])},ApproxNotEqual:{complexity:11100,signature:"(any, any, ...any) -> boolean",canonical:(e,{engine:n})=>re(n,"ApproxNotEqual",e)},NotApproxNotEqual:{complexity:11100,signature:"(any, any, ...any) -> boolean",canonical:(e,{engine:n})=>n._fn("Not",[re(n,"ApproxNotEqual",e)])},Precedes:{complexity:11100,signature:"(any, any, ...any) -> boolean",canonical:(e,{engine:n})=>re(n,"Precedes",e)},NotPrecedes:{complexity:11100,signature:"(any, any, ...any) -> boolean",canonical:(e,{engine:n})=>n._fn("Not",[re(n,"Precedes",e)])},Succeeds:{signature:"(any, any, ...any) -> boolean",canonical:(e,{engine:n})=>re(n,"Succeeds",e)},NotSucceeds:{complexity:11100,signature:"(any, any, ...any) -> boolean",canonical:(e,{engine:n})=>n._fn("Not",[re(n,"Succeeds",e)])}};function re(e,n,i){i=J(i,n);let t=[],r=[];for(let s of i)we(s)?(t.push(s),r.push(s.ops[s.ops.length-1])):r.push(s);return t.length===0?e._fn(n,r):e._fn("And",[e._fn(n,r),...t])}function Uf(e,n,i){return e.operator===n.operator?e.nops!==n.nops?!1:e.ops.every((t,r)=>t.isEqual(n.ops[r])):n.operator===i?e.nops!==n.nops?!1:e.ops.every((t,r)=>t.isEqual(n.ops[n.nops-1-r])):!1}var Zf={EmptySet:{type:"set",constant:!0,wikidata:"Q226183",eq:e=>e.type.matches("set")&&e.size===0,collection:{size:()=>0,contains:()=>!1,subsetOf:()=>!0,eltsgn:()=>{},elttype:()=>"never"}},Numbers:{type:"set<number>",constant:!0,collection:{size:()=>1/0,contains:(e,n)=>n.type.matches("number"),subsetOf:(e,n,i)=>n.operator==="Range"||n.operator==="Linspace"?!0:n.type.matches("set<number>")&&(!i||n.symbol!=="Numbers"),eltsgn:()=>"unsigned",elttype:()=>"number"}},ComplexNumbers:{type:"set<finite_complex>",constant:!0,collection:{size:()=>1/0,contains:(e,n)=>n.type.matches("finite_complex"),subsetOf:(e,n,i)=>n.operator==="Range"||n.operator==="Linspace"?!0:n.type.matches("set<complex>")&&(!i||n.symbol!=="ComplexNumbers"),eltsgn:()=>"unsigned",elttype:()=>"finite_complex"}},ExtendedComplexNumbers:{type:"set<complex>",constant:!0,collection:{size:()=>1/0,contains:(e,n)=>n.type.matches("complex"),subsetOf:(e,n,i)=>n.operator==="Range"||n.operator==="Linspace"?!0:n.type.matches("set<complex>")&&(!i||n.symbol!=="ComplexNumbers"),eltsgn:()=>"unsigned",elttype:()=>"complex"}},ImaginaryNumbers:{type:"set<imaginary>",constant:!0,collection:{size:()=>1/0,contains:(e,n)=>n.type.matches("imaginary"),subsetOf:(e,n,i)=>n.type.matches("set<imaginary>")&&(!i||n.symbol!=="ImaginaryNumbers"),eltsgn:()=>"unsigned",elttype:()=>"imaginary"}},RealNumbers:{type:"set<finite_real>",constant:!0,collection:{contains:(e,n)=>n.type.matches("finite_real"),size:()=>1/0,subsetOf:(e,n,i)=>n.type.matches("set<real>")&&(!i||n.symbol!=="RealNumbers"),eltsgn:()=>{},elttype:()=>"finite_real"}},ExtendedRealNumbers:{type:"set<real>",constant:!0,collection:{contains:(e,n)=>n.type.matches("real"),size:()=>1/0,subsetOf:(e,n,i)=>n.type.matches("set<real>")&&(!i||n.symbol!=="ExtendedRealNumbers"),eltsgn:()=>{},elttype:()=>"real"}},Integers:{type:"set<finite_integer>",constant:!0,collection:{contains:(e,n)=>n.type.matches("finite_integer"),size:()=>1/0,subsetOf:(e,n,i)=>n.operator==="Range"?!0:n.type.matches("set<finite_integer>")&&(!i||n.symbol!=="Integers"),eltsgn:()=>{},elttype:()=>"finite_integer"}},ExtendedIntegers:{type:"set<integer>",constant:!0,collection:{contains:(e,n)=>n.type.matches("integer"),size:()=>1/0,subsetOf:(e,n,i)=>n.operator==="Range"?!0:n.type.matches("set<integer>")&&(!i||n.symbol!=="ExtendedIntegers"),eltsgn:()=>{},elttype:()=>"integer"}},RationalNumbers:{type:"set<finite_rational>",constant:!0,collection:{size:()=>1/0,contains:(e,n)=>n.type.matches("finite_rational"),subsetOf:(e,n,i)=>n.type.matches("set<rational>")&&(!i||n.symbol!=="RationalNumbers"),eltsgn:()=>{},elttype:()=>"finite_rational"}},ExtendedRationalNumbers:{type:"set<rational>",constant:!0,collection:{contains:(e,n)=>n.type.matches("rational"),size:()=>1/0,subsetOf:(e,n,i)=>n.type.matches("set<rational>")&&(!i||n.symbol!=="ExtendedRationalNumbers"),eltsgn:()=>{},elttype:()=>"rational"}},NegativeNumbers:{type:"set<real>",constant:!0,collection:{size:()=>1/0,contains:(e,n)=>n.type.matches("real")&&n.isNegative===!0,subsetOf:(e,n,i)=>{if(n.operator==="Range"||n.operator==="Linspace"){let t=n.ops[0].re,r=n.ops[1].re;return t<0&&r<0}return n.type.matches("set<real>")&&n.symbolDefinition?.collection?.eltsgn?.(n)==="negative"&&(!i||n.symbol!=="NegativeNumbers")},eltsgn:()=>"negative",elttype:()=>"real"}},NonPositiveNumbers:{type:"set<real>",constant:!0,collection:{contains:(e,n)=>n.type.matches("real")&&n.isNonPositive===!0,size:()=>1/0,subsetOf:(e,n,i)=>{if(n.operator==="Range"||n.operator==="Linspace"){let t=n.ops[0].re,r=n.ops[1].re;return t>=0&&r>=0}return n.type.matches("set<real>")&&n.symbolDefinition?.collection?.eltsgn?.(n)==="non-positive"&&(!i||n.symbol!=="NonPositiveNumbers")},eltsgn:()=>"non-positive",elttype:()=>"real"}},NonNegativeNumbers:{type:"set<real>",constant:!0,collection:{contains:(e,n)=>n.type.matches("real")&&n.isNonNegative===!0,size:()=>1/0,subsetOf:(e,n,i)=>{if(n.operator==="Range"||n.operator==="Linspace"){let t=n.ops[0].re,r=n.ops[1].re;return t<=0&&r<=0}return n.type.matches("set<real>")&&n.symbolDefinition?.collection?.eltsgn?.(n)==="non-negative"&&(!i||n.symbol!=="NonNegativeNumbers")},eltsgn:()=>"non-negative",elttype:()=>"real"}},PositiveNumbers:{type:"set<real>",constant:!0,collection:{contains:(e,n)=>n.type.matches("real")&&n.isPositive===!0,size:()=>1/0,subsetOf:(e,n,i)=>{if(n.operator==="Range"||n.operator==="Linspace"){let t=n.ops[0].re,r=n.ops[1].re;return t>0&&r>0}return n.type.matches("set<real>")&&n.symbolDefinition?.collection?.eltsgn?.(n)==="positive"&&(!i||n.symbol!=="PositiveNumbers")},eltsgn:()=>"positive",elttype:()=>"real"}},NegativeIntegers:{type:"set<integer>",constant:!0,collection:{contains:(e,n)=>n.type.matches("integer")&&n.isNegative===!0,size:()=>1/0,subsetOf:(e,n,i)=>{if(n.operator==="Range"){let t=n.ops[0].re,r=n.ops[1].re;return t<0&&r<0}return n.type.matches("set<integer>")&&n.symbolDefinition?.collection?.eltsgn?.(n)==="negative"&&(!i||n.symbol!=="NegativeIntegers")},eltsgn:()=>"negative",elttype:()=>"integer"}},NonPositiveIntegers:{type:"set<integer>",constant:!0,collection:{contains:(e,n)=>n.type.matches("integer")&&n.isNonPositive===!0,size:()=>1/0,subsetOf:(e,n,i)=>{if(n.operator==="Range"){let t=n.ops[0].re,r=n.ops[1].re;return t<=0&&r<=0}return n.type.matches("set<integer>")&&n.symbolDefinition?.collection?.eltsgn?.(n)==="non-positive"&&(!i||n.symbol!=="NonPositiveIntegers")},eltsgn:()=>"non-positive",elttype:()=>"integer"}},NonNegativeIntegers:{type:"set<integer>",constant:!0,collection:{contains:(e,n)=>n.type.matches("integer")&&n.isNonNegative===!0,size:()=>1/0,subsetOf:(e,n,i)=>{if(n.operator==="Range"){let t=n.ops[0].re,r=n.ops[1].re;return t>0&&r>0}return n.type.matches("set<integer>")&&n.symbolDefinition?.collection?.eltsgn?.(n)==="non-negative"&&(!i||n.symbol!=="NonNegativeIntegers")},eltsgn:()=>"non-negative",elttype:()=>"integer"}},PositiveIntegers:{type:"set<integer>",constant:!0,collection:{contains:(e,n)=>n.type.matches("integer")&&n.isPositive===!0,size:()=>1/0,subsetOf:(e,n,i)=>{if(n.operator==="Range"){let t=n.ops[0].re,r=n.ops[1].re;return t>0&&r>0}return n.type.matches("set<integer>")&&n.symbolDefinition?.collection?.eltsgn?.(n)==="positive"&&(!i||n.symbol!=="PositiveIntegers")},eltsgn:()=>"positive",elttype:()=>"integer"}},Element:{complexity:11200,signature:"(value, collection|string) -> boolean",evaluate:([e,n],{engine:i})=>{let t=n.contains(e);if(t===!0)return i.True;if(t===!1)return i.False}},NotElement:{complexity:11200,signature:"(value, collection|string) -> boolean",evaluate:([e,n],{engine:i})=>{let t=n.contains(e);if(t===!0)return i.False;if(t===!1)return i.True}},Subset:{complexity:11200,signature:"(lhs:collection, rhs: collection) -> boolean",evaluate:([e,n],{engine:i})=>{let t=Ni(e,n);if(t===!0)return i.True;if(t===!1)return i.False}},SubsetEqual:{complexity:11200,signature:"(lhs:collection, rhs: collection) -> boolean",evaluate:([e,n],{engine:i})=>{let t=Ni(e,n,!1);if(t===!0)return i.True;if(t===!1)return i.False}},NotSubset:{complexity:11200,signature:"(lhs:collection, rhs: collection) -> boolean",evaluate:([e,n],{engine:i})=>{let t=Ni(e,n);if(t===!0)return i.False;if(t===!1)return i.True}},Superset:{complexity:11200,signature:"(lhs:collection, rhs: collection) -> boolean",evaluate:([e,n],{engine:i})=>{let t=Ni(n,e);if(t===!0)return i.True;if(t===!1)return i.False}},SupersetEqual:{complexity:11200,signature:"(lhs:collection, rhs: collection) -> boolean",evaluate:([e,n],{engine:i})=>{let t=Ni(n,e,!0);if(t===!0)return i.True;if(t===!1)return i.False}},NotSuperset:{complexity:11200,signature:"(lhs:collection, rhs: collection) -> boolean",evaluate:([e,n],{engine:i})=>{let t=Ni(n,e);if(t===!0)return i.False;if(t===!1)return i.True}},NotSupersetEqual:{complexity:11200,signature:"(lhs:collection, rhs: collection) -> boolean",evaluate:([e,n],{engine:i})=>{let t=Ni(n,e,!0);if(t===!0)return i.False;if(t===!1)return i.True}},CartesianProduct:{wikidata:"Q173740",signature:"(set, ...set) -> set"},Complement:{wikidata:"Q242767",signature:"(set, ...set) -> set"},Intersection:{wikidata:"Q185837",signature:"(set, ...set) -> set",canonical:(e,{engine:n})=>e.length===0||e.length===1?n.symbol("EmptySet"):(e=Ci(n,J(e,"Intersection"),k("(set, ...set) -> set"))??e,n._fn("Intersection",e)),evaluate:lm},Union:{wikidata:"Q185359",signature:"(collection, ...collection) -> set",canonical:(e,{engine:n})=>e.length===0?n.symbol("EmptySet"):(e=Ci(n,J(e,"Union"),k("(collection, ...collection) -> set"))??e,n._fn("Union",e)),evaluate:um,collection:{contains:(e,n)=>e.ops.some(i=>i.contains(n)),size:e=>{if(e.ops.some(t=>t.size===1/0))return 1/0;let n=[],i=0;for(let t of e.ops){for(let r of ee(t))n.every(s=>!s.contains(r))&&(i+=1);n.push(t)}return i},iterator:e=>{let n=[],i=0,t=Mi(e.ops[i]);return t?{next:()=>{let r=!1,s;do{if(s=t.next(),s.done){if(n.push(e.ops[i]),i+=1,i===e.ops.length)return{value:void 0,done:!0};if(t=Mi(e.ops[i]),!t)return{value:void 0,done:!0}}r=n.every(o=>!o.contains(s.value))}while(!r);return{value:s.value,done:!1}}}:{next:()=>({value:void 0,done:!0})}}}},SetMinus:{wikidata:"Q18192442",signature:"(set, ...value) -> set",evaluate:fm,collection:{contains:(e,n)=>{let[i,...t]=e.ops;return(i.contains(n)??!1)&&!t.some(r=>r.isSame(n))},iterator:e=>{let[n,...i]=e.ops,t=Mi(n);return t?{next(){let r=t.next();for(;!r.done&&i.some(s=>s.isSame(r.value));)r=t.next();return r}}:{next:()=>({value:void 0,done:!0})}}}},SymmetricDifference:{wikidata:"Q1147242",signature:"(set, set) -> set"}};function Ni(e,n,i=!0){return!e.isCollection||!n.isCollection?!1:!!e.symbolDefinition?.collection?.subsetOf?.(e,n,i)}function um(e,{engine:n}){let i=e.map(s=>s.isCollection?s:n.function("Set",[s]));if(i.reduce((s,o)=>s+(o.size??0),0)>Ka)return n._fn("Union",i);let r=[];for(let s of i)for(let o of ee(s))r.every(a=>!a.isSame(o))&&r.push(o);return r.length===0?n.symbol("EmptySet"):n._fn("Set",r)}function lm(e,{engine:n}){let i=[...e[0].ops??[]];for(let t of e.slice(1))ie(t)?i=i.filter(r=>[...ee(t)].some(s=>r.isSame(s))):i=i.filter(r=>r.isSame(t));return i.length===0?n.symbol("EmptySet"):n._fn("Set",i)}function fm(e,{engine:n}){return n.symbol("EmptySet")}var Hf=[{Choose:{complexity:1200,signature:"(n:number, m:number) -> number",evaluate:(e,{engine:n})=>{let i=e[0].re,t=e[1].re;if(!(!Number.isFinite(i)||!Number.isFinite(t)))return i<0||t<0||t>i?n.NaN:n.number(po(i,t))}}},{Mean:{complexity:1200,threadable:!1,signature:"((collection|number)...) -> number",evaluate:(e,{engine:n})=>n.number(oe(n)?$l(n.bignum.bind(n),un(e)):Zr(an(e)))},Median:{complexity:1200,threadable:!1,signature:"((collection|number)...) -> number",evaluate:(e,{engine:n})=>n.number(oe(n)?hi(un(e)):Cn(an(e)))},Variance:{complexity:1200,threadable:!1,signature:"((collection|number)...) -> number",evaluate:(e,{engine:n})=>n.number(oe(n)?Do(n.bignum.bind(n),un(e)):tt(an(e)))},PopulationVariance:{complexity:1200,threadable:!1,signature:"((collection|number)...) -> number",evaluate:(e,{engine:n})=>n.number(oe(n)?Ao(n.bignum.bind(n),un(e)):rt(an(e)))},StandardDeviation:{complexity:1200,threadable:!1,description:"Sample Standard Deviation of a collection of numbers.",signature:"((collection|number)...) -> number",evaluate:(e,{engine:n})=>n.number(oe(n)?Do(n.bignum.bind(n),un(e)).sqrt():Math.sqrt(tt(an(e))))},PopulationStandardDeviation:{complexity:1200,threadable:!1,description:"Population Standard Deviation of a collection of numbers.",signature:"((collection|number)...) -> number",evaluate:(e,{engine:n})=>n.number(oe(n)?Ao(n.bignum.bind(n),un(e)).sqrt():Math.sqrt(rt(an(e))))},Kurtosis:{complexity:1200,threadable:!1,signature:"((collection|number)...) -> number",evaluate:(e,{engine:n})=>n.number(oe(n)?Gl(n.bignum.bind(n),un(e)):Hr(an(e)))},Skewness:{complexity:1200,threadable:!1,signature:"((collection|number)...) -> number",evaluate:(e,{engine:n})=>n.number(oe(n)?Ul(n.bignum.bind(n),un(e)):Wr(an(e)))},Mode:{complexity:1200,threadable:!1,signature:"((collection|number)...) -> number",evaluate:(e,{engine:n})=>n.number(oe(n)?jl(n.bignum.bind(n),un(e)):Jr(an(e)))},Quartiles:{complexity:1200,threadable:!1,signature:"((collection|number)...) -> tuple<mid:number, lower:number, upper:number>",evaluate:(e,{engine:n})=>{let[i,t,r]=(oe(n)?Zl(un(e)):Yr(an(e))).map(s=>n.number(s));return n.tuple(i,t,r)}},InterquartileRange:{complexity:1200,threadable:!1,signature:"((collection|number)...) -> number",evaluate:(e,{engine:n})=>n.number(oe(n)?Hl(un(e)):Qr(an(e)))},Erf:{complexity:7500,signature:"number -> number",evaluate:(e,{engine:n})=>{let i=e[0].re;if(Number.isFinite(i))return n.number(Ws(i))}},Erfc:{complexity:7500,signature:"number -> number",evaluate:(e,{engine:n})=>{let i=e[0].re;if(Number.isFinite(i))return n.number(1-Ws(i))}},ErfInv:{complexity:7500,signature:"number -> number",evaluate:(e,{engine:n})=>{let i=e[0].re;if(Number.isFinite(i))return n.number(xu(i))}}}];function*Wf(e){if(e.length===1&&ri(e[0]))yield*ee(e[0]);else for(let n of e)ri(n)?yield*ee(n):yield n}function*an(e){for(let n of Wf(e))yield n.re}function*un(e){for(let n of Wf(e))yield n.bignumRe??n.engine.bignum(n.re)}var cm={Sin:[[1,"Sin"],[1,"Cos"],[-1,"Sin"],[-1,"Cos"]],Cos:[[1,"Cos"],[-1,"Sin"],[-1,"Cos"],[1,"Sin"]],Sec:[[1,"Sec"],[-1,"Csc"],[-1,"Sec"],[1,"Csc"]],Csc:[[1,"Csc"],[1,"Sec"],[-1,"Csc"],[-1,"Sec"]],Tan:[[1,"Tan"],[-1,"Cot"],[1,"Tan"],[-1,"Cot"]],Cot:[[1,"Cot"],[-1,"Tan"],[1,"Cot"],[-1,"Tan"]]},Qn=["Sqrt",2],ct=["Sqrt",3],pt=["Sqrt",5],as=["Sqrt",6],pm=[[[0,1],{Sin:0,Cos:1,Tan:0,Cot:"ComplexInfinity",Sec:1,Csc:"ComplexInfinity"}],[[1,12],{Sin:["Divide",["Subtract",as,Qn],4],Cos:["Divide",["Add",as,Qn],4],Tan:["Subtract",2,ct],Cot:["Add",2,ct],Sec:["Subtract",as,Qn],Csc:["Add",as,Qn]}],[[1,10],{Sin:["Divide",["Subtract",pt,1],4],Cos:["Divide",["Sqrt",["Add",10,["Multiply",2,pt]]],4],Tan:["Divide",["Sqrt",["Subtract",25,["Multiply",10,pt]]],5],Cot:["Sqrt",["Add",5,["Multiply",2,pt]]],Sec:["Divide",["Sqrt",["Subtract",50,["Multiply",10,pt]]],5],Csc:["Add",1,pt]}],[[1,8],{Sin:"$\\frac{\\sqrt{2-\\sqrt2}}{2}$",Cos:"$\\frac{\\sqrt {2+{\\sqrt {2}}}}{2}$",Tan:"$\\sqrt{2} - 1$",Cot:"$\\sqrt{2} + 1$",Sec:"$\\sqrt{ 4 - 2\\sqrt{2}}$",Csc:"$\\sqrt{ 4 + 2\\sqrt{2}}$"}],[[1,6],{Sin:"$\\frac{1}{2}$",Cos:"$\\frac{\\sqrt{3}}{2}$",Tan:"$\\frac{\\sqrt{3}}{3}$",Cot:"$\\sqrt{3}$",Sec:"$\\frac{2\\sqrt{3}}{3}$",Csc:2}],[[1,5],{Sin:"$\\frac{\\sqrt{10- 2\\sqrt{5}}} {4}$",Cos:"$\\frac{1+ \\sqrt{5}} {4}$",Tan:"$\\sqrt{5-2\\sqrt5}$",Cot:"$\\frac{\\sqrt{25+10\\sqrt5}} {5}$",Sec:"$\\sqrt{5} - 1$",Csc:"$\\frac{\\sqrt{50+10\\sqrt{5}}} {5}$"}],[[1,4],{Sin:["Divide",Qn,2],Cos:["Divide",Qn,2],Tan:1,Cot:1,Sec:Qn,Csc:Qn}],[[3,10],{Sin:"$\\frac{1+ \\sqrt5} {4}$",Cos:"$\\frac{\\sqrt{10- 2\\sqrt5}} {4}$",Tan:"$\\frac{\\sqrt{25+10\\sqrt5}} {5}$",Cot:"$\\sqrt{5-2\\sqrt5}$",Sec:"$\\frac{\\sqrt{50+10\\sqrt5}} {5}$",Csc:"$\\sqrt5-1$"}],[[1,3],{Sin:["Divide",ct,2],Cos:"Half",Tan:ct,Cot:["Divide",ct,3],Sec:2,Csc:["Divide",["Multiply",2,ct],3]}],[[3,8],{Sin:"$\\frac{ \\sqrt{2 + \\sqrt{2}} } {2}$",Cos:"$\\frac{ \\sqrt{2 - \\sqrt{2}} } {2}$",Tan:"$\\sqrt{2} + 1$",Cot:"$\\sqrt{2} - 1$",Sec:"$\\sqrt{ 4 + 2 \\sqrt{2} }$",Csc:"$\\sqrt{ 4 - 2 \\sqrt{2} }$"}],[[2,5],{Sin:"$\\frac{\\sqrt{10+ 2\\sqrt{5}}} {4}$",Cos:"$\\frac{\\sqrt{5}-1} {4}$",Tan:"$\\sqrt{5+2\\sqrt{5}}$",Cot:"$\\frac{\\sqrt{25-10\\sqrt{5}}} {5}$",Sec:"$1 + \\sqrt{5}$",Csc:"$\\frac{\\sqrt{50-10\\sqrt{5}}} {5}$"}],[[5,12],{Sin:"$\\frac{\\sqrt{6} + \\sqrt{2}} {4}$",Cos:"$\\frac{ \\sqrt{6} - \\sqrt{2}} {4}$",Tan:"$2+\\sqrt{3}$",Cot:"$2-\\sqrt{3}$",Sec:"$\\sqrt{6}+\\sqrt{2}$",Csc:"$\\sqrt{6} - \\sqrt{2}$"}],[[1,2],{Sin:1,Cos:0,Tan:"ComplexInfinity",Cot:0,Sec:"ComplexInfinity",Csc:1}]];function Xe(e,n,i,t){let r=Tr(e)?.N();if(r!==void 0)return Q(r,n,i,t)}function Ke(e){if(!e)return e;let n=e.engine,i=n.angularUnit;if(i==="rad")return e;let t=e.N().re;return Number.isNaN(t)?e:i==="deg"?n.number(t*(180/Math.PI)):i==="grad"?n.number(t*(200/Math.PI)):i==="turn"?n.number(t/(2*Math.PI)):e}function Qt(e,n){if(!n)return;let i=n.engine;switch(e){case"Arccos":return Ke(Q(n,Math.acos,t=>t.acos(),t=>t.acos()));case"Arccot":return Ke(Q(n,t=>Math.atan2(1,t),t=>M.atan2(i._BIGNUM_ONE,t),t=>t.inverse().atan()));case"Arccsc":return Ke(Q(n,t=>Math.asin(1/t),t=>i._BIGNUM_ONE.div(t).asin(),t=>t.inverse().asin()));case"Arccosh":return Ke(Q(n,Math.acosh,t=>t.acosh(),t=>t.acosh()));case"Arccoth":return Ke(Q(n,t=>Math.log((1+t)/(t-1))/2,t=>i._BIGNUM_ONE.add(t).div(t.sub(i._BIGNUM_ONE)).log().div(2),t=>i.complex(1).add(t).div(t.sub(1)).log().div(2)));case"Arccsch":return Ke(Q(n,t=>Math.log(1/t+Math.sqrt(1/(t*t)+1)),t=>i._BIGNUM_ONE.div(t.mul(t)).add(i._BIGNUM_ONE).sqrt().add(i._BIGNUM_ONE.div(t)).log(),t=>t.mul(t).inverse().add(1).sqrt().add(t.inverse()).log()));case"Arcsec":return Ke(Q(n,t=>Math.acos(1/t),t=>i._BIGNUM_ONE.div(t).acos(),t=>t.inverse().acos()));case"Arcsin":return Ke(Q(n,Math.asin,t=>t.asin(),t=>t.asin()));case"Arcsech":return Ke(Q(n,t=>Math.log((1+Math.sqrt(1-t*t))/t),t=>i._BIGNUM_ONE.sub(t.mul(t).add(i._BIGNUM_ONE).div(t)).log(),t=>i.complex(1).sub(t.mul(t)).add(1).div(t).log()));case"Arcsinh":return Ke(Q(n,Math.asinh,t=>t.asinh(),t=>t.asinh()));case"Arctan":return Ke(Q(n,Math.atan,t=>t.atan(),t=>t.atan()));case"Arctanh":return Ke(Q(n,Math.atanh,t=>t.atanh(),t=>t.atanh()));case"Cos":return Xe(n,Math.cos,t=>i.chop(t.cos()),t=>t.cos());case"Cosh":return Xe(n,Math.cosh,t=>t.cosh(),t=>t.cosh());case"Cot":return Xe(n,t=>1/Math.tan(t),t=>i._BIGNUM_ONE.div(t.tan()),t=>t.tan().inverse());case"Coth":return Xe(n,t=>1/Math.tanh(t),t=>i._BIGNUM_ONE.div(t.tanh()),t=>t.tanh().inverse());case"Csc":return Xe(n,t=>1/Math.sin(t),t=>i._BIGNUM_ONE.div(t.sin()),t=>t.sin().inverse());case"Csch":return Xe(n,t=>1/Math.sinh(t),t=>i._BIGNUM_ONE.div(t.sinh()),t=>t.sinh().inverse());case"Sec":return Xe(n,t=>1/Math.cos(t),t=>i._BIGNUM_ONE.div(t.cos()),t=>t.cos().inverse());case"Sech":return Xe(n,t=>1/Math.cosh(t),t=>i._BIGNUM_ONE.div(t.cosh()),t=>t.cosh().inverse());case"Sin":return Xe(n,Math.sin,t=>i.chop(t.sin()),t=>t.sin());case"Sinh":return Xe(n,Math.sinh,t=>t.sinh(),t=>t.sinh());case"Tan":return Xe(n,r=>{let s=Math.tan(r);return s>1e6||s<-1e6?i.ComplexInfinity:s},r=>{let s=r.tan();return s.greaterThan(1e6)||s.lessThan(-1e6)?i.ComplexInfinity:s},r=>r.tan());case"Tanh":return Xe(n,Math.tanh,t=>t.tanh(),t=>t.tanh())}}function dm(e){return!!(e.startsWith("Ar")&&Qo(e))}function Qo(e){return{Sin:"Arcsin",Cos:"Arccos",Tan:"Arctan",Sec:"Arcsec",Csc:" Arccsc",Sinh:"Arcsinh",Cosh:"Arccosh",Tanh:"Arctanh",Sech:"Arcsech",Csch:"Arccsch",Arccosh:"Cosh",Arccos:"Cos",Arccsc:"Csc",Arccsch:"Csch",Arcsec:"Sec",Arcsin:"Sin",Arcsinh:"Sinh",Arctan:"Tan",Arctanh:"Tanh"}[e]}function Xt(e,n){if(n.length!==1||!n[0].isValid)return;let i=n[0],t=i.symbol;if(typeof t!="string")return;if(t==="InverseFunction")return i.op1;let r=Qo(t);return r?e.symbol(r):void 0}function Jf(e){return e!=="Cos"&&e!=="Sec"?-1:1}function mm(e,n,i,t){if(!i)return;let r=i.N().re;if(Number.isNaN(r))return;let s=Qo(n),o=e.cache("constructible-inverse-trigonometric-values-"+n,()=>{let u=[];for(let[[l,f],c]of t){let p=c[s];if(p===void 0)continue;let m=p.N().re;Number.isNaN(m)||u.push([[p,m],[l,f]])}return u},u=>{for(let[[l,f],[c,p]]of u)l.reset();return u}),a=0;r<0&&(a=Jf(s)==-1?-1:1,r=-r,i=i.neg());for(let[[u,l],[f,c]]of o)if(e.chop(r-l)===0){let p=e.Pi.mul(f).div(c);return a==-1?p=p.neg():a==1&&(p=e.Pi.sub(p)),p.evaluate()}}function Xo(e,n){let[i,t]=hm(n);if(i!==void 0)return t!==void 0&&((e==="Sin"||e==="Tan")&&(t===0||t===2)||(e==="Cos"||e==="Cot")&&(t===1||t===3))?"zero":{Sin:["positive","positive","negative","negative"],Cos:["positive","negative","negative","positive"],Sec:["positive","negative","negative","positive"],Csc:["positive","positive","negative","negative"],Tan:["positive","negative","positive","negative"],Cot:["positive","negative","positive","negative"]}[e]?.[i]}function Ko(e){return["Sin","Cos","Tan","Csc","Sec","Cot"].includes(typeof e=="string"?e:e.operator)}function Kt(e,n){if(!n||!Ko(e))return;let i=n.engine;if(n=n.N(),n.im!==0)return;let t=n.re;if(Number.isNaN(t))return;let r=i.cache("constructible-trigonometric-values",()=>pm.map(([l,f])=>[l,Object.fromEntries(Object.entries(f).map(([c,p])=>[c,(i.parse(Vn(p))??i.box(p)).simplify()]))]),l=>{for(let[f,c]of l)for(let p of Object.values(c))p.reset();return l});if(dm(e))return mm(i,e,n,r);let s=i.angularUnit;s!=="rad"&&(s==="deg"&&(t*=Math.PI/180),s==="grad"&&(t*=Math.PI/200),s==="turn"&&(t*=2*Math.PI));let o=Jf(e)==-1?Math.sign(t):1;t=Math.abs(t%(2*Math.PI));let a=Math.floor(t*2/Math.PI);t=t%(Math.PI/2);let u;[u,e]=cm[e]?.[a]??[1,e];for(let[[l,f],c]of r){let p=c[e];if(p&&Math.abs(t-Math.PI*l/f)<=1e-12)return p.symbol==="ComplexInfinity"?p:o*u<0?p.neg():p}}function hm(e){if(!e.isValid||!e.isNumberLiteral)return[void 0,void 0];if(e.im!==0)return[void 0,void 0];let n=e.re;if(isNaN(n))return[void 0,void 0];let i=(n%(2*Math.PI)+2*Math.PI)%(2*Math.PI);return Math.abs(i)<1e-12?[1,0]:Math.abs(i-Math.PI/2)<1e-12?[2,1]:Math.abs(i-Math.PI)<1e-12?[3,2]:Math.abs(i-3*Math.PI/2)<1e-12?[4,3]:[Math.floor(i/(Math.PI/2))+1,void 0]}var Yf=[{Pi:{type:"finite_real",constant:!0,holdUntil:"N",wikidata:"Q167",value:e=>e.number(oe(e)?e._BIGNUM_PI:Math.PI)}},{Degrees:{signature:"real -> real",canonical:(e,{engine:n})=>{let i=n;if(i.angularUnit==="deg")return e[0];if(e.length!==1)return i._fn("Degrees",e);let t=e[0];if(t.numericValue===null||!t.isValid)return i._fn("Degrees",e);let r=t.re;if(Number.isNaN(r))return t.mul(i.Pi).div(180);if(r=r%360,r<0&&(r+=360),Number.isInteger(r)){let s=Pi([r,180]);return s[0]===0?i.Zero:s[0]===1&&s[1]===1?i.Pi:s[0]===1?i.Pi.div(s[1]):i.number(s).mul(i.Pi)}return i.number(r).div(180).mul(i.Pi)},evaluate:(e,n)=>n.engine.angularUnit==="deg"?e[0]:e[0].mul(n.engine.Pi.div(180)).evaluate(n)},Hypot:{threadable:!0,signature:"(real, real) -> real",sgn:()=>"non-negative",evaluate:([e,n],{engine:i})=>i.box(["Sqrt",["Add",["Square",e],["Square",n]]])},Sin:se("Sin",5e3)},{Arctan:{wikidata:"Q2257242",complexity:5200,threadable:!0,signature:"number -> finite_real",sgn:([e])=>Xo("Arctan",e),evaluate:([e],{numericApproximation:n})=>n?Qt("Arctan",e):Kt("Arctan",e)??Qt("Arctan",e)},Arctan2:{wikidata:"Q776598",complexity:5200,threadable:!0,signature:"(y:number, x: number) -> real",evaluate:([e,n],{engine:i,numericApproximation:t})=>t?gn(e,n,Math.atan2,(r,s)=>M.atan2(r,s)):e.isFinite===!1&&n.isFinite===!1?i.NaN:e.is(0)&&n.is(0)?i.Zero:n.isFinite===!1?n.isPositive?i.Zero:i.Pi:e.isFinite===!1?e.isPositive?i.Pi.div(2):i.Pi.div(-2):e.is(0)?n.isPositive?i.Zero:i.Pi:i.function("Arctan",[e.div(n)]).evaluate()},Cos:se("Cos",5050),Tan:se("Tan",5100)},{Arccosh:se("Arccosh",6200),Arcsin:se("Arcsin",5500),Arcsinh:se("Arcsinh",6100),Arctanh:se("Arctanh",6300),Cosh:se("Cosh",6050),Cot:se("Cot",5600),Csc:se("Csc",5600,"Cosecant"),Sec:se("Sec",5600,"Secant, inverse of cosine"),Sinh:se("Sinh",6e3),Haversine:{wikidata:"Q2528380",threadable:!0,signature:"real -> number",evaluate:([e],{engine:n})=>n.box(["Divide",["Subtract",1,["Cos",e]],2])},InverseHaversine:{threadable:!0,signature:"real -> real",evaluate:([e],{engine:n})=>n.box(["Multiply",2,["Arcsin",["Sqrt",e]]])}},{Csch:se("Csch",6200,"Hyperbolic cosecant"),Sech:se("Sech",6200,"Hyperbolic secant"),Tanh:se("Tanh",6200,"Hyperbolic tangent")},{Arccos:se("Arccos",5550),Arccot:se("Arccot",5650),Arccoth:se("Arccoth",6350),Arccsch:se("Arccsch",6250),Arcsec:se("Arcsec",5650),Arcsech:se("Arcsech",6250),Arccsc:se("Arccsc",5650),Coth:se("Coth",6300),InverseFunction:{lazy:!0,signature:"function -> function",canonical:(e,{engine:n})=>(e=qe(n,e,1),Xt(n,e)??n._fn("InverseFunction",e)),evaluate:(e,{engine:n})=>Xt(n,e)}}];function se(e,n,i){return{complexity:n,description:i,threadable:!0,signature:"number -> number",sgn:([t])=>Xo(e,t),evaluate:([t],{numericApproximation:r})=>r?Qt(e,t):Kt(e,t)??Qt(e,t)}}var ue=class{constructor(n,i,t){this.constant=!1;this.holdUntil="evaluate";if(!n.context)throw Error("No context available");this.name=i,this._engine=n,this.scope=n.context,this.update(t)}get isFunction(){return this.type.matches("function")}get isConstant(){return this.constant}update(n){if(n.wikidata&&(this.wikidata=n.wikidata),n.description&&(this.description=n.description),n.url&&(this.url=n.url),n.flags&&(this._flags=Rs(n.flags)),n.holdUntil&&(this.holdUntil=n.holdUntil),this.constant&&n.constant===!1)throw new Error(`The constant "${this.name}" cannot be changed to a variable`);if(n.constant&&(this.constant=n.constant,this._defValue=n.value),this._value=Qf(this._engine,n.value),n.type){let i=k(n?.type);if(!Sn(i))throw new Error(`Invalid type: "${n.type}"`);this._type=new C(i),this.inferredType=n.inferred??!1}if(this._value){if(!this._type||this._type.isUnknown)this._type=this._value.type,this.inferredType=!0;else if(!this._value.type.matches(this._type))throw new Error([`Symbol "${this.name}"`,`The value "${this._value.toString()}" of type "${this._value.type}" is not compatible with the type "${this._type}"`].join(`
|
|
90
|
-
| `))}n.eq&&(this.eq=n.eq),n.neq&&(this.neq=n.neq),n.cmp&&(this.cmp=n.cmp),n.collection&&(this.collection=eu(n.collection))}reset(){this.constant&&(this._value=null)}get value(){return this._value===null&&(this._value=Qf(this._engine,this._defValue)),this._value}set value(n){if(this.constant)throw new Error(`The value of the constant "${this.name}" cannot be changed`);if(this._defValue,n!==void 0){let i=this._engine.box(n);this.inferredType?(this._value=i,this._type=this._type?new C(ke(this._type.type,i.type.type)):i.type):!this._type||this.type.isUnknown||!i.type||i.type.matches(this._type)?this._value=i:this._value=void 0}else this._value=void 0}get type(){return this._type??this._value?.type??C.unknown}set type(n){if(this.constant)throw new Error(`The type of the constant "${this.name}" cannot be changed`);if(!this.inferredType&&!this.type.isUnknown)throw Error(`The type of "${this.name}" cannot be changed because it has already been declared`);if(n instanceof C&&(n=n.type),n==="unknown"){this._defValue=void 0,this._value=void 0,this._flags=void 0,this._type=C.unknown;return}if(this._type?.isUnknown){this._type=new C(n);return}if(this._value?.type&&!this._value.type.matches(n))throw Error(`The type of "${this.name}" cannot be changed to "${n}" because its value has a type of "${this._value.type}"`);this._type=new C(n)}get sgn(){return this.value?.sgn??this._flags?.sgn}set sgn(n){this.updateFlags({sgn:n})}get even(){return this.value?.isEven??this._flags?.even}set even(n){this.updateFlags({even:n})}get odd(){return this.value?.isOdd??this._flags?.odd}set odd(n){this.updateFlags({odd:n})}updateFlags(n){if(this.constant)throw Error(`The flags of "${this.name}" cannot be changed because it is a constant`);this._flags=Rs({...this._flags??{},...n})}};function Qf(e,n){if(n!==void 0)return Nt(n)?e.parse(n)??e.symbol("Undefined"):typeof n=="function"?e.box(n(e)??"Undefined"):n instanceof X?n:e.box(n)}var gm=new Set(["description","wikidata","url","lazy","threadable","associative","commutative","commutativeOrder","idempotent","involution","pure","signature","type","sgn","even","complexity","canonical","evaluate","evaluateAsync","evalDimension","compile","eq","neq","cmp","collection"]),Le=class{constructor(n,i,t){this.threadable=!1;this.associative=!1;this.commutative=!1;this.idempotent=!1;this.involution=!1;this.pure=!0;this.complexity=Un;this.lazy=!1;this.inferredSignature=!0;if(!n.context)throw Error("No context available");this.name=i,this.engine=n,this.scope=n.context,t.signature?(this.inferredSignature=!1,this.signature=new C(t.signature)):this.signature=new C("...any -> any"),this.update(t)}infer(n){let i=new C(n);if(!i.matches(this.signature))throw new Error(`Function Definition "${this.name}": inferred signature "${i}" does not match current signature "${this.signature}"`);this.inferredSignature&&(this.signature=i)}update(n){if(this.engine.strict){for(let s in n)if(!gm.has(s))throw new Error(`Function Definition "${this.name}": unexpected key "${s}"`)}this.lazy=n.lazy??this.lazy;let i=n.idempotent??this.idempotent,t=n.involution??this.involution;if(i&&t)throw new Error(`Function Definition "${this.name}": the 'idempotent' and 'involution' flags are mutually exclusive`);if(this.idempotent=i,this.involution=t,this.description=n.description??this.description,this.wikidata=n.wikidata??this.wikidata,this.threadable=n.threadable??this.threadable,this.associative=n.associative??this.associative,this.commutative=n.commutative??this.commutative,this.commutativeOrder=n.commutativeOrder??this.commutativeOrder,this.commutativeOrder&&!this.commutative)throw new Error(`Function Definition "${this.name}": the 'commutativeOrder' handler requires the 'commutative' flag`);if(n.canonical&&(n.associative||n.commutative||n.idempotent||n.involution))throw new Error(`Function Definition "${this.name}": the 'canonical' handler is incompatible with the 'associative', 'commutative', 'idempotent', and 'involution' flags`);if(this.pure=n.pure??this.pure,this.complexity=n.complexity??this.complexity,n.signature){let s=n.signature,o=new C(k(n.signature));if(s&&!o.matches(s))throw new Error(`Function Definition "${this.name}": signature "${o}" does not match "${s}"`);this.inferredSignature=!1,this.signature=o}let r;if(n.evaluate&&typeof n.evaluate!="function"){let s=this.engine.box(n.evaluate,{canonical:!1});if(!s.isValid)throw Error(`Invalid function ${s.toString()}`);let o=ze(s);r=a=>o(a),Object.defineProperty(r,"toString",{value:()=>s.toString()})}else r=n.evaluate??this.evaluate;this.type=n.type??this.type,this.evaluate=r,this.evaluateAsync=n.evaluateAsync??this.evaluateAsync,this.canonical=n.canonical??this.canonical,this.evalDimension=n.evalDimension??this.evalDimension,this.sgn=n.sgn??this.sgn,this.even=n.even??this.even,this.compile=n.compile??this.compile,this.eq=n.eq??this.eq,this.neq=n.neq??this.neq,this.collection=n.collection??this.collection}reset(){}};function us(e,n,i){return i instanceof Le?i:new Le(e,n,i)}function ea(e){if(e==="all")return ea(["core","control-structures","logic","collections","relop","numeric","arithmetic","trigonometry","algebra","calculus","polynomials","combinatorics","linear-algebra","statistics","dimensions","units","physics","other"]);typeof e=="string"&&(e=[e]);let n=[];for(let i of e){let t=xm[i];if(!t)throw Error(`Unknown library category ${i}`);Array.isArray(t)?n.push(...t):n.push(t)}return Object.freeze(n)}var xm={algebra:[],arithmetic:[...Il,...Af],calculus:Bf,collections:[Zf,bl],combinatorics:[],"control-structures":wf,core:Mf,dimensions:[],domains:[],"linear-algebra":Cf,logic:Pf,numeric:[],other:[],relop:jf,polynomials:Gf,physics:{Mu0:{description:"Vaccum permeability",constant:!0,wikidata:"Q1515261",type:"real",value:125663706212e-17}},statistics:Hf,trigonometry:Yf,units:[]};function ym(e){if(e=e.normalize(),xe(e))return e;throw new Error(`Invalid definition name "${e}": ${We(e)}`)}function na(e,n){var t;if(!e.context)throw Error("No context available");(t=e.context).ids??(t.ids=new Map);let i=e.context.ids;e.strict;for(let[r,s]of Object.entries(n))try{if(r=ym(r),St(s))try{let o=us(e,r,s);if(i.has(r))throw new Error(`Duplicate function definition:
|
|
91
|
-
${JSON.stringify(i.get(r))}
|
|
92
|
-
${JSON.stringify(s)}`);i.set(r,o)}catch(o){console.error([`
|
|
93
|
-
Error in function definition`,"",JSON.stringify(s),"",o.message].join(`
|
|
94
|
-
| `)+`
|
|
95
|
-
`)}else if(Tt(s))try{let o=new ue(e,r,s);if(e.strict&&s.wikidata){for(let[a,u]of i)if(u.wikidata===s.wikidata)throw new Error(`Duplicate entries with wikidata "${s.wikidata}": "${r}" and "${u.name}"`)}if(i.has(r))throw new Error("The symbol is already defined");i.set(r,o)}catch(o){console.error([`
|
|
96
|
-
Error in symbol definition of "${r}"`,"",JSON.stringify(s),"",o.message].join(`
|
|
97
|
-
| `))}else{let o=new ue(e,r,{value:e.box(s)});i.set(r,o)}}catch(o){console.error([`
|
|
98
|
-
Error in definition of "${r}"`,"",JSON.stringify(s),"",o.message].join(`
|
|
95
|
+
${c.message}`),u}r+=1}return u}function $t(n,e,t,i){let r=[];for(let o of e.rules){let s=ca(o,n,t,i);s!==null&&!r.some(a=>a.isSame(s.value))&&r.push(s.value)}return r}function bo(n){let e=n.symbol;if(e&&e.startsWith("_"))return n.engine.symbol(e.slice(1));if(n.ops){let t=n.ops.map(i=>bo(i));return n.engine.function(n.operator,t,{canonical:!1})}return n}function gr(n){let e=[];return n.symbol&&n.symbol.startsWith("_")&&e.push(n.symbol),n.ops&&n.ops.forEach(t=>e.push(...gr(t))),e}function Bc(n,e){let t=gr(n),i=gr(e);return t.every(r=>i.includes(r))}function Em(n){return n&&typeof n=="object"&&"because"in n&&"value"in n}function vm(n){return n&&typeof n=="object"&&n._tag==="boxed-rule"}function G(n){for(let[e,t]of Object.entries(n))if(e!=="x"&&e!=="_x"&&t.has("_x"))return!1;return!0}var Nm=[{match:["Power",["Add",["Multiply","_a","_x"],"__b"],"_n"],replace:["Divide",["Power",["Add",["Multiply","_a","_x"],"__b"],["Add","_n",1]],["Multiply","_a",["Add","_n",1]]],condition:n=>G(n)&&!n._n.is(-1)},{match:["Power",["Add",["Multiply","_a","_x"],"__b"],1/2],replace:["Divide",["Multiply",2,["Power",["Add",["Multiply","_a","_x"],"__b"],3]],["Multiply",3,"_a"]],condition:n=>G(n)&&n._a.isNumberLiteral},{match:["Power",["Add",["Multiply","_a","_x"],"__b"],1/3],replace:["Divide",["Multiply",3,["Power",["Add",["Multiply","_a","_x"],"__b"],4]],["Multiply",4,"_a"]],condition:n=>G(n)&&n._a.isNumberLiteral},{match:["Power","__a","_x"],replace:["Divide",["Power","__a","_x"],["Ln",["Abs","__a"]]],condition:n=>G(n)&&n._x.isNumberLiteral},{match:["Power",["Add",["Multiply","_a","_x"],"__b"],-1],replace:["Divide",["Ln",["Abs",["Add",["Multiply","_a","_x"],"__b"]]],"_a"],condition:G},{match:["Divide",1,["Add",["Multiply","_a","_x"],"__b"]],replace:["Divide",["Ln",["Abs",["Add",["Multiply","_a","_x"],"__b"]]],"_a"],condition:G},{match:["Ln",["Add",["Multiply","_a","_x"],"__b"]],replace:["Subtract",["Multiply",["Add",["Multiply","_a","_x"],"__b"],["Ln","_x"]],["Subtract",["Multiply","_a","_x"],"__b"]],condition:G},{match:["Exp",["Add",["Multiply","_a","_x"],"__b"]],replace:["Divide",["Exp",["Add",["Multiply","_a","_x"],"__b"]],"_a"],condition:G},{match:["Power",["Sech",["Add",["Multiply","_a","_x"],"__b"]],2],replace:["Divide",["Tanh",["Add",["Multiply","_a","_x"],"__b"]],"_a"],condition:G},{match:["Power",["Sin",["Add",["Multiply","_a","_x"],"__b"]],2],replace:["Divide",["Add","_x",["Divide",["Sin",["Multiply",2,"_a","_x"]],2]],2],condition:G},{match:["Power",["Cos",["Add",["Multiply","_a","_x"],"__b"]],2],replace:["Divide",["Add","_x",["Divide",["Sin",["Multiply",2,"_a","_x"]],2]],2],condition:G},{match:["Sin",["Add",["Multiply","_a","_x"],"__b"]],replace:["Divide",["Negate",["Cos",["Add",["Multiply","_a","_x"],"__b"]]],"_a"],condition:G},{match:["Cos",["Add",["Multiply","_a","_x"],"__b"]],replace:["Divide",["Sin",["Add",["Multiply","_a","_x"],"__b"]],"_a"],condition:G},{match:["Tan",["Add",["Multiply","_a","_x"],"__b"]],replace:["Divide",["Ln",["Abs",["Sec",["Add",["Multiply","_a","_x"],"__b"]]]],"_a"],condition:G},{match:["Sec",["Add",["Multiply","_a","_x"],"__b"]],replace:["Divide",["Ln",["Abs",["Add",["Sec",["Add",["Multiply","_a","_x"],"__b"]],["Tan",["Add",["Multiply","_a","_x"],"__b"]]]]],"_a"],condition:G},{match:["Csc",["Add",["Multiply","_a","_x"],"__b"]],replace:["Divide",["Negate",["Ln",["Abs",["Add",["Csc",["Add",["Multiply","_a","_x"],"__b"]],["Cot",["Add",["Multiply","_a","_x"],"__b"]]]]]],"_a"],condition:G},{match:["Cot",["Add",["Multiply","_a","_x"],"__b"]],replace:["Divide",["Negate",["Ln",["Abs",["Sin",["Add",["Multiply","_a","_x"],"__b"]]]]],"_a"],condition:G},{match:["Sinh",["Add",["Multiply","_a","_x"],"__b"]],replace:["Divide",["Ln",["Abs",["Cosh",["Add",["Multiply","_a","_x"],"__b"]]]],"_a"],condition:G},{match:["Cosh",["Add",["Multiply","_a","_x"],"__b"]],replace:["Divide",["Ln",["Abs",["Sinh",["Add",["Multiply","_a","_x"],"__b"]]]],"_a"],condition:G},{match:["Tanh",["Add",["Multiply","_a","_x"],"__b"]],replace:["Divide",["Ln",["Abs",["Sech",["Add",["Multiply","_a","_x"],"__b"]]]],"_a"],condition:G},{match:["Sech",["Add",["Multiply","_a","_x"],"__b"]],replace:["Divide",["Ln",["Abs",["Tanh",["Add",["Multiply","_a","_x"],"__b"]]]],"_a"],condition:G},{match:["Csch",["Add",["Multiply","_a","_x"],"__b"]],replace:["Divide",["Negate",["Ln",["Abs",["Coth",["Add",["Multiply","_a","_x"],"__b"]]]]],"_a"],condition:G},{match:["Coth",["Add",["Multiply","_a","_x"],"__b"]],replace:["Divide",["Negate",["Ln",["Abs",["Csch",["Add",["Multiply","_a","_x"],"__b"]]]]],"_a"],condition:G},{match:["Arcsinh",["Add",["Multiply","_a","_x"],"__b"]],replace:["Divide",["Ln",["Add",["Add",["Multiply","_a","_x"],"__b"],["Sqrt",["Add",["Power",["Add",["Multiply","_a","_x"],"__b"],2],1]]]],"_a"],condition:G},{match:["Arccosh",["Add",["Multiply","_a","_x"],"__b"]],replace:["Divide",["Ln",["Add",["Add",["Multiply","_a","_x"],"__b"],["Sqrt",["Subtract",["Power",["Add",["Multiply","_a","_x"],"__b"],2],1]]]],"_a"],condition:G},{match:["Arctanh",["Add",["Multiply","_a","_x"],"__b"]],replace:["Divide",["Ln",["Divide",["Add",1,["Add",["Multiply","_a","_x"],"__b"]],["Subtract",1,["Add",["Multiply","_a","_x"],"__b"]]]],["Multiply",2,"_a"]],condition:G},{match:["Arcsech",["Add",["Multiply","_a","_x"],"__b"]],replace:["Divide",["Negate",["Ln",["Add",["Add",["Multiply","_a","_x"],"__b"],["Sqrt",["Subtract",["Power",["Add",["Multiply","_a","_x"],"__b"],2],1]]]]],"_a"],condition:G},{match:["Arccsch",["Add",["Multiply","_a","_x"],"__b"]],replace:["Divide",["Negate",["Ln",["Add",["Add",["Multiply","_a","_x"],"__b"],["Sqrt",["Add",["Power",["Add",["Multiply","_a","_x"],"__b"],2],1]]]]],"_a"],condition:G},{match:["Arccoth",["Add",["Multiply","_a","_x"],"__b"]],replace:["Divide",["Ln",["Divide",["Add",["Add",["Multiply","_a","_x"],"__b"],1],["Subtract",["Add",["Multiply","_a","_x"],"__b"],1]]],["Multiply",2,"_a"]],condition:G},{match:["Arccsch",["Add",["Multiply","_a","_x"],"__b"]],replace:["Divide",["Negate",["Ln",["Add",["Add",["Multiply","_a","_x"],"__b"],["Sqrt",["Add",["Power",["Add",["Multiply","_a","_x"],"__b"],2],1]]]]],"_a"],condition:G},{match:["Arccoth",["Add",["Multiply","_a","_x"],"__b"]],replace:["Divide",["Negate",["Ln",["Add",["Add",["Multiply","_a","_x"],"__b"],["Sqrt",["Subtract",["Power",["Add",["Multiply","_a","_x"],"__b"],2],1]]]]],"_a"],condition:G},{match:["Arctan",["Add",["Multiply","_a","_x"],"__b"]],replace:["Divide",["Ln",["Add",["Sec",["Add",["Multiply","_a","_x"],"__b"]],["Tan",["Add",["Multiply","_a","_x"],"__b"]]]],"_a"],condition:G},{match:["Arccos",["Add",["Multiply","_a","_x"],"__b"]],replace:["Divide",["Ln",["Add",["Add",["Multiply","_a","_x"],"__b"],["Sqrt",["Subtract",["Power",["Add",["Multiply","_a","_x"],"__b"],2],1]]]],"_a"],condition:G},{match:["Arcsin",["Add",["Multiply","_a","_x"],"__b"]],replace:["Divide",["Ln",["Add",["Add",["Multiply","_a","_x"],"__b"],["Sqrt",["Subtract",1,["Power",["Add",["Multiply","_a","_x"],"__b"],2]]]]],"_a"],condition:G}];function nt(n,e){if(n.operator==="Function"||n.operator==="Block"||n.operator==="Delimiter")return nt(n.op1,e);let t=n.engine;if(n.symbol===e)return t.box(["Divide",["Power",n,2],2]);if(!n.has(e))return t.box(["Multiply",n,t.symbol(e)]);if(n.operator==="Add"){let s=n.ops.map(a=>nt(a,e));return H(...s).evaluate()}if(n.operator==="Negate")return nt(n.op1,e).neg();if(n.operator==="Multiply"){let s=n.ops.map((a,u)=>{let l=n.ops.slice();l.splice(u,1);let c=ae(...l);return nt(a,e).mul(c)});return H(...s).evaluate()}if(n.operator==="Divide"){if(!n.op2.has(e)){let s=nt(n.op1,e);return n.engine.box(["Divide",s,n.op2])}return Cc(n,e)}let i=t.rules(Nm),r=(lr(n)??n).subs({[e]:"_x"},{canonical:!0}),o=$t(r,i,{_x:t.symbol("_x")},{useVariations:!0,canonical:!0});return o&&o[0]?o[0].subs({_x:e}):Cc(n,e)}function Cc(n,e){let t=n.engine;return t.function("Integrate",[n,t.symbol(e,{canonical:!1})])}var Ac=[{Derivative:{broadcastable:!1,lazy:!0,signature:"(function, order:number?) -> function",canonical:(n,{engine:e})=>{let t=ve(n[0].canonical);if(!t)return null;if(!n[1])return e._fn("Derivative",[t]);let i=ge(e,n[1]?.canonical,"number");return e._fn("Derivative",[t,i])},evaluate:n=>{let e=n[0].evaluate(),t=Math.floor(n[1]?.N().re);return _c(e,isNaN(t)?1:t)}},D:{broadcastable:!1,scoped:!0,lazy:!0,signature:"(expression, variable:symbol, variables:symbol+) -> expression",canonical:(n,{engine:e,scope:t})=>{let i=ai(e,n);return i?e._fn("D",[i,...n.slice(1)],{scope:t}):null},evaluate:(n,{engine:e})=>{let t=n[0].canonical;t=t.evaluate();let i=n.slice(1);i.length===0&&(t=void 0);for(let r of i){if(!r.symbol){t=void 0;break}if(t&&t.operator==="Function"&&(t=t.op1),t=fn(t,r.symbol),t===void 0)break}return t=t?.canonical,t?.operator==="D"?t:t?.evaluate()}},ND:{broadcastable:!1,lazy:!0,signature:"(function, at:number) -> number",canonical:(n,{engine:e})=>{let t=ve(n[0]);if(!t)return null;let i=ge(e,n[1]?.canonical,"number");return e._fn("ND",[t,i])},evaluate:([n,e],{engine:t})=>{let i=e.N().re;if(!isNaN(i))return t.number(xu(n.compile(),i))}},Integrate:{wikidata:"Q80091",broadcastable:!1,lazy:!0,signature:"(function, limits+) -> number",canonical:(n,{engine:e})=>{if(!n[0])return null;let t=ve(n[0]);if(!t)return null;let i=Rl(n.slice(1),{engine:e});return e._fn("Integrate",[t,...i])},evaluate:(n,{engine:e,numericApproximation:t})=>{if(t){let s=n[0],a=n[1],[u,l]=[a.op2.N().re,a.op3.N().re];if(isNaN(u)||isNaN(l))return;let c=s.compile(),f=di(c,u,l,c.isCompiled?1e7:1e4);return e.box(["PlusMinus",e.number(f.estimate),e.number(f.error)])}let i=n[0],r=i.ops?.slice(1)?.map(s=>s.symbol)??[],o=n.slice(1);if(o.length!==0){for(let s=o.length-1;s>=0;s--){let[a,u,l]=o[s].ops,c=a.symbol;(!c||c==="Nothing")&&s<r.length&&(c=r[s]),c||(c="x");let f=nt(i,c);if(f.operator!=="Integrate"){let d=f;if(u.symbol==="Nothing"&&l.symbol==="Nothing")i=d;else{let p=e.box(["Function",f,c]);i=e.box(["EvaluateAt",p,u,l])}}else if(u.symbol==="Nothing"&&l.symbol==="Nothing")i=f;else{let d=e.box(["Function",f,c]);i=e.box(["EvaluateAt",d,u,l])}}return i.operator!=="Integrate"?i.evaluate({numericApproximation:t}):i}}},NIntegrate:{broadcastable:!1,lazy:!0,signature:"(function, limits:(tuple|symbol)?) -> number",canonical:(n,{engine:e})=>{let[t,i,r]=n,o=ve(t);return!o||!i||!r?null:e._fn("NIntegrate",[o,i.canonical,r.canonical])},evaluate:([n,e,t],{engine:i})=>{let[r,o]=[e.N().re,t.N().re];if(isNaN(r)||isNaN(o))return;let s=n.compile();return i.number(di(s,r,o,s.isCompiled?1e7:1e4).estimate)}},Limits:{description:"Limits of a function",complexity:5e3,broadcastable:!1,lazy:!0,signature:"(index:symbol, lower:number, upper:number) -> tuple",canonical:(n,{engine:e})=>dt(n,{engine:e})??null}},{Limit:{description:"Limit of a function",complexity:5e3,broadcastable:!1,lazy:!0,signature:"(function, point:number, direction:number?) -> number",canonical:([n,e,t],{engine:i})=>{let r=ve(n);return!r||!e?null:t===void 0?i._fn("Limit",[r,e.canonical]):i._fn("Limit",[r,e.canonical,t.canonical])},evaluate:([n,e,t],{engine:i,numericApproximation:r})=>{if(r){let o=e.N().re;if(Number.isNaN(o))return;let s=n.compile();return i.number(at(s,o,t?t.re:1))}}},NLimit:{description:"Numerical approximation of the limit of a function",complexity:5e3,broadcastable:!1,lazy:!0,signature:"(function, point:number, direction:number?) -> number",canonical:([n,e,t],{engine:i})=>{let r=ve(n);return!r||!e?null:t===void 0?i._fn("NLimit",[r,e.canonical]):i._fn("NLimit",[r,e.canonical,t.canonical])},evaluate:([n,e,t],{engine:i})=>{let r=e.N().re;if(Number.isNaN(r))return;let o=n.compile();return i.number(at(o,r,t?t.re:1))}}}];var Mc=[{Block:{lazy:!0,scoped:!0,signature:"(unknown*) -> unknown",type:n=>n.length===0?"nothing":n[n.length-1].type,canonical:Tm,evaluate:Sm},Condition:{lazy:!0,signature:"(value, symbol) -> boolean",evaluate:([n,e],{engine:t})=>{let i=[];return e.symbol?i=[e.symbol]:e.operator==="And"&&(i=e.ops.map(r=>r.symbol??"")),wc(n,i)?t.True:t.False}},If:{lazy:!0,signature:"(expression, expression, expression) -> any",type:([n,e,t])=>oe(e.type.type,t.type.type),canonical:([n,e,t],{engine:i})=>i._fn("If",[n.canonical,e.canonical,t.canonical]),evaluate:([n,e,t],{engine:i})=>{let r=n.evaluate().symbol;if(r==="True")return e?.evaluate()??i.Nothing;if(r==="False")return t?.evaluate()??i.Nothing;throw new Error(`Condition must evaluate to "True" or "False". ${an(n)}`)}},Loop:{lazy:!0,signature:"(body:expression, collection:expression) -> any",type:([n])=>n.type,evaluate:([n,e],{engine:t})=>fi(Dc(n,e,t),t._timeRemaining),evaluateAsync:async([n,e],{engine:t,signal:i})=>ci(Dc(n,e,t),t._timeRemaining,i)},Which:{lazy:!0,signature:"(expression+) -> unknown",type:n=>n.length%2!==0?"nothing":oe(...n.filter((e,t)=>t%2===1).map(e=>e.type.type)),canonical:(n,e)=>n.length%2!==0?e.engine.Nothing:e.engine._fn("Which",n.map(t=>t.canonical)),evaluate:(n,e)=>_m(n,e)},FixedPoint:{lazy:!0,signature:"(any) -> unknown"}}];function _m(n,e){let t=0;for(;t<n.length-1;){let i=n[t].evaluate().symbol;if(i==="True")return n[t+1]?n[t+1].evaluate(e):e.engine.symbol("Undefined");if(i!=="False")throw new Error(`Condition must evaluate to "True" or "False". ${an(n[t])}`);t+=2}return e.engine.symbol("Undefined")}function Sm(n,{engine:e}){if(n.length===0)return e.Nothing;let t;for(let i of n){let r=i.operator;if(r==="Return"){t=i.op1.evaluate();break}if(r==="Break"||r==="Continue"){t=e.box([r,i.op1.evaluate()]);break}t=i.evaluate()}return t??e.Nothing}function Tm(n,e){let{engine:t,scope:i}=e;return n.length===0?null:t._fn("Block",t._inScope(i,()=>n.map(o=>o.canonical)),{scope:i})}function*Dc(n,e,t){if(n??=t.Nothing,n.symbol==="Nothing")return n;if(e?.isCollection){let r,o=le(n),s=0;for(let a of e.each()){if(r=o([a])??t.Nothing,r.operator==="Break")return r.op1;if(r.operator==="Return")return r;if(s+=1,s%1e3===0&&(yield r),s>t.iterationLimit)throw new Ye({cause:"iteration-limit-exceeded"})}return r}let i=0;for(;;){let r=n.evaluate();if(r.operator==="Break")return r.op1;if(r.operator==="Return")return r;if(i+=1,i%1e3===0&&(yield r),i>t.iterationLimit)throw new Ye({cause:"iteration-limit-exceeded"})}}var Rc=[{Choose:{complexity:1200,signature:"(n:number, m:number) -> number",evaluate:(n,{engine:e})=>{let t=n[0].re,i=n[1].re;if(!(!Number.isFinite(t)||!Number.isFinite(i)))return t<0||i<0||i>t?e.NaN:e.number(ra(t,i))}}},{Fibonacci:{description:"Compute the nth Fibonacci number.",wikidata:"Q47577",signature:"(integer) -> integer",evaluate:([n],{engine:e})=>{let t=ye(n);if(t===null)return;if(t<0n)return e.function("Negate",["Fibonacci",e.number(-t)]);if(t===0n)return e.Zero;if(t===1n)return e.One;let i=0n,r=1n;for(let o=2n;o<=t;o++){let s=i+r;i=r,r=s}return e.number(r)}},Binomial:{description:"Compute the binomial coefficient C(n, k) = n! / (k! (n-k)!).",wikidata:"Q209875",signature:"(integer, integer) -> integer",evaluate:([n,e],{engine:t})=>{let i=ye(n),r=ye(e);if(i===null||r===null)return;if(r<0n||r>i)return t.number(0);if(r===0n||r===i)return t.number(1);let o=1n;for(let s=1n;s<=r;s++)o*=i-(r-s),o/=s;return t.number(o)}},CartesianProduct:{description:"Return the Cartesian product of input sets.",wikidata:"Q173740",signature:"(set+) -> set",collection:{contains:(n,e)=>{let t=n.ops;return!e.isCollection||e.ops.length!==t.length?!1:t.every((i,r)=>i.xcontains(e.ops[r])??!1)},count:n=>{let e=n.ops.map(t=>t.xsize);return e.includes(1/0)?1/0:e.reduce((t,i)=>t*i,1)},iterator:Bm}},PowerSet:{description:"Return the power set of a set (set of all subsets).",wikidata:"Q205170",signature:"(set) -> set",collection:{contains:(n,e)=>{let t=n.ops[0];return e.isCollection?e.ops.every(i=>t.xcontains(i)??!1):!1},count:n=>{let e=n.ops[0];return e.isEmptyCollection?1:e.isFiniteCollection===!1?1/0:2**e.xsize},iterator:Im}},Permutations:{description:"Return all permutations of length k (default full length) of a collection.",signature:"(collection, integer?) -> list<list>",evaluate:([n,e],{engine:t})=>{if(!n.isFiniteCollection)return;let i=Array.from(n.each()),r=e?P(e):i.length;if(r===null||r<0||r>i.length)return;function*o(s,a){if(s.length===r){yield s;return}for(let u=0;u<a.length;u++){let l=a.slice(),[c]=l.splice(u,1);yield*o([...s,c],l)}}return t.function("List",[...o([],i)].map(s=>t.function("List",s)))}},Combinations:{description:"Return all k-element combinations of a collection.",wikidata:"Q193606",signature:"(collection, integer) -> list<list>",evaluate:([n,e],{engine:t})=>{if(!n.isFiniteCollection)return;let i=Array.from(n.each()),r=P(e);if(r===null||r<0||r>i.length)return;function*o(s,a){if(a.length===r){yield a;return}for(let u=s;u<i.length;u++)yield*o(u+1,[...a,i[u]])}return t.function("List",[...o(0,[])].map(s=>t.function("List",s)))}},Multinomial:{description:"Compute the multinomial coefficient for multiple integers.",wikidata:"Q20820114",signature:"(integer+) -> integer",evaluate:(n,{engine:e})=>{let t=n.map(P);if(t.some(o=>o===null||o<0))return;let i=t.reduce((o,s)=>o+(s??0),0),r=1;for(let o=1;o<=i;o++)r*=o;for(let o of t)for(let s=1;s<=o;s++)r/=s;return e.number(r)}},Subfactorial:{description:"Compute the number of derangements (subfactorial) of n items.",wikidata:"Q2361661",signature:"(integer) -> integer",evaluate:([n],{engine:e})=>{let t=P(n);if(t===null||t<0)return;let i=1;for(let r=1;r<=t;r++)i=Math.round(i*r*(1-1/r));return e.number(i)}},BellNumber:{description:"Compute the Bell number B(n), the number of partitions of a set of n elements.",wikidata:"Q816063",signature:"(integer) -> integer",evaluate:([n],{engine:e})=>{let t=P(n);if(t===null||t<0)return;let i=[1];for(let r=1;r<=t;r++){let o=0;for(let s=0;s<r;s++)o+=wm(r-1,s)*i[s];i[r]=o}return e.number(i[t])}}}];function*Bm(n){let e=n.ops,t=e.map(o=>[...o.each()]),i=t.map(o=>o.length);if(i.some(o=>o===0))return;let r=Array(e.length).fill(0);for(;;){let o=r.map((a,u)=>t[u][a]);yield n.engine._fn("Tuple",o);let s=r.length-1;for(;s>=0&&(r[s]++,!(r[s]<i[s]));)r[s]=0,s--;if(s<0)break}}function*Im(n){let e=[...n.ops[0].each()],t=e.length,i=n.engine,r=1<<t;for(let o=0;o<r;o++){let s=[];for(let a=0;a<t;a++)(o&1<<a)!==0&&s.push(e[a]);yield s.length===0?i.symbol("EmptySet"):i._fn("Set",s)}}function wm(n,e){if(e<0||e>n)return 0;if(e===0||e===n)return 1;let t=1;for(let i=1;i<=e;i++)t*=n-(e-i),t/=i;return t}var Pc=[{Real:{broadcastable:!0,complexity:1200,signature:"(number) -> real",sgn:([n])=>{let e=n.re;if(!isNaN(e))return e===0?"zero":e>0?"positive":"negative"},evaluate:(n,{engine:e})=>{let t=n[0].numericValue;if(t!==null)return typeof t=="number"?n[0]:e.number(t.bignumRe??t.re)}},Imaginary:{broadcastable:!0,complexity:1200,signature:"(number) -> real",sgn:([n])=>{let e=n.im;if(!isNaN(e))return e===0?"zero":e>0?"positive":"negative"},evaluate:(n,{engine:e})=>{let t=n[0].numericValue;if(t!==null)return typeof t=="number"?e.Zero:e.number(t.im)}},Argument:{broadcastable:!0,complexity:1200,signature:"(number) -> real",evaluate:(n,{engine:e})=>{let t=n[0].numericValue;if(t!==null)return typeof t=="number"?t>=0?e.Zero:e.Pi:t.im===0?t.re>=0?e.Zero:e.Pi:e.function("ArcTan2",[t.im,t.re]).evaluate()}},AbsArg:{broadcastable:!0,complexity:1200,signature:"(number) -> tuple<real, real>",evaluate:(n,{engine:e})=>{if(n[0].numericValue!==null)return e.tuple(e.function("Abs",n).evaluate(),e.function("Argument",n).evaluate())}},Conjugate:{broadcastable:!0,complexity:1200,signature:"(number) -> number",type:([n])=>n.type,sgn:([n])=>n.sgn,evaluate:(n,{engine:e})=>{let t=n[0].numericValue;if(t!==null)return typeof t=="number"||t.im===0?n[0]:e.number(e.complex(t.re,-t.im))}},ComplexRoots:{broadcastable:!0,complexity:1200,signature:"(number, number) -> list<number>",evaluate:(n,{engine:e})=>{let t=n[0].re;if(isNaN(t))return;let i=n[1].re;if(!Number.isInteger(i)||i<=0)return;let r=[],o=n[0].im??0,s=Math.atan2(o,t),a=Math.sqrt(t*t+o*o);for(let u=0;u<i;u++){let l=(s+2*Math.PI*u)/i,c=Math.pow(a,1/i);r.push([c*Math.cos(l),c*Math.sin(l)])}return e.function("List",r.map(u=>e.number(u[1]!==0?e.complex(u[0],u[1]):u[0])))}}}];function Eo(n,{engine:e}){if(n.length===0)return null;let t=n[0];if(n.length===1)return t.canonical;if(n.length===2){let i=Oc(t);if(!Number.isNaN(i)){let o=n[1];if(o.operator==="Divide"||o.operator==="Rational"){let[s,a]=[o.op1.canonical.re,o.op2.canonical.re];if(s>0&&s<=1e3&&a>1&&a<=1e3&&Number.isInteger(s)&&Number.isInteger(a)){let u=o.canonical;return i<0&&(u=u.neg()),e._fn("Add",[t.canonical,u])}}}let r=n[1];if(!Number.isNaN(i)&&fr(r))return e.number(e.complex(0,i));if(t.symbol&&r.operator==="Delimiter"){if(r.nops===0){let s=e.lookupDefinition(t.symbol);return s?Z(s)?e.box([t.symbol]):s.value.type.isUnknown?(t.infer("function"),e.box([t.symbol])):s.value.type.matches("function")?e.box([t.symbol]):e.typeError("function",s.value.type,t):(e.declare(t.symbol,"function"),e.box([t.symbol]))}let o=r.op1.operator==="Sequence"?r.op1.ops:[r.op1];if(o=Q(o),!e.lookupDefinition(t.symbol))return e.declare(t.symbol,"function"),e.function(t.symbol,o)}if(t.symbol&&r.operator==="Delimiter"&&(r.op2.string==="[,]"||r.op2.string==="[;]")){let o=r.op1.operator==="Sequence"?r.op1.ops:[r.op1];return e.function("At",[t,...o])}}return n=Lc(n),n=Q(n),n.every(i=>i.isValid&&(i.type.isUnknown||i.type.matches("number")||i.isIndexedCollection&&!i.string))?e._fn("Multiply",n):e._fn("Tuple",n)}function Lc(n){let e=[];for(let t of n)t.operator==="InvisibleOperator"?e.push(...Lc(t.ops)):e.push(t);return e}function Oc(n){if(n.isNumberLiteral){let e=n.re;if(Number.isInteger(e))return e}if(n.operator==="Negate"){let e=Oc(n.op1);if(!Number.isNaN(e))return-e}return Number.NaN}function Ft(n,e,t){if(e===!1)return n;if(e===!0)return n.engine._inScope(t,()=>n.canonical);typeof e=="string"&&(e=[e]),n=qc(n);for(let i of e)switch(i){case"InvisibleOperator":n=da(n);break;case"Number":n=$c(n);break;case"Multiply":n=Fc(n);break;case"Add":n=Vc(n);break;case"Power":n=vo(n);break;case"Divide":n=zc(n);break;case"Flatten":n=fa(n);break;case"Order":n=Ps(n,{recursive:!0});break;default:throw Error("Invalid canonical form")}return n}function fa(n){if(!n.operator||!n.ops||n.nops===0)return n;if(n.operator==="Delimiter")return fa(n.op1);let e=n.engine,t=n.operator==="Add"||n.operator==="Multiply";if(!t){let i=e.lookupDefinition(n.operator);Z(i)&&i.operator.associative&&(t=!0)}return t?e.function(n.operator,lt(n.ops.map(fa),n.operator)):n}function da(n){return n.ops?n.operator==="InvisibleOperator"?Eo(n.ops.map(da),{engine:n.engine})??n:n.engine._fn(n.operator,n.ops.map(da)):n}function $c(n){if(n.isNumberLiteral)return n.canonical;if(fr(n))return n.engine.I;if(!n.isFunctionExpression)return n;let{engine:e}=n,t=n.ops.map($c),{operator:i}=n;if((i==="Divide"||i==="Rational")&&t.length===2){let r=Qn(t[0]);if(r!==null){let o=Qn(t[1]);if(o!==null)return e.number([r,o])}return i="Divide",e._fn("Divide",t,{canonical:!1})}if(i==="Complex"){if(t.length===1){let r=t[0];return r.isNumberLiteral?e.number(e.complex(0,r.re)):e._fn("Multiply",[r,e.I],{canonical:!1})}if(t.length===2){let r=t[0].re,o=t[1].re;return o!==null&&r!==null&&!isNaN(o)&&!isNaN(r)?o===0&&r===0?e.Zero:o!==0?e.number(e._numericValue({re:r,im:o})):t[0]:e._fn("Add",[t[0],e._fn("Multiply",[t[1],e.I],{canonical:!1})],{canonical:!1})}throw new Error("Expected one or two arguments with `Complex` expression")}if(i==="Negate"&&t.length===1){let r=t[0],{numericValue:o}=r;if(o!==null)return e.number(typeof o=="number"?-o:o.neg());if(fr(r))return e.number(e.complex(0,-1))}return t.every((r,o)=>r===n.ops[o])?n:e._fn(i,t,{canonical:!1})}function Fc(n){if(!n.ops)return n;let e=n.ops.map(Fc);return n.operator==="Multiply"?_e(n.engine,e.map(t=>t.canonical)):n.operator==="Negate"?_e(n.engine,[e[0],n.engine.NegativeOne]):n}function Vc(n){if(!n.ops)return n;let e=n.ops.map(Vc);return n.operator==="Add"?Ke(n.engine,e):n.operator==="Subtract"?Ke(n.engine,[e[0],e[1].neg()]):n.engine._fn(n.operator,e)}function vo(n){if(!n.ops)return n;let e=n.ops.map(t=>vo(t));return n.operator==="Power"?Kn(e[0],e[1]):n.engine._fn(n.operator,e,{canonical:!1})}function qc(n){return n.symbol!==null?n.canonical:n.isFunctionExpression?n.engine._fn(n.operator,n.ops.map(qc),{canonical:!1}):n}function zc(n){return n.operator==="Divide"?un(vo(n.op1),vo(n.op2)):n.ops?n.engine._fn(n.operator,n.ops.map(zc)):n}function yr(n){return n[Math.floor(Math.random()*n.length)]}function Gc(n,e){if(n==="Add"||n==="Multiply"){let t=[],i=1+Math.floor(Math.random()*12);for(;i>0;)t.push(On(e+1)),i-=1;return[n,...t]}return n==="Divide"||n==="Power"?[n,On(e+1),On(e+1)]:n==="Root"?[n,On(e+1),On(10)]:n==="trig"?km():[n,On(e+1)]}function km(){return[yr(["Cos","Sin","Tan","Sinh","Arccos","Arcsinh"]),yr(["Pi","-1","0","1",["Divide","Pi",-5],["Multiply",-2,["Divide","Pi",11]],["Multiply","Half","Pi"],["Multiply",5,"Pi"],["Multiply",12,"Pi"],["Divide","Pi",5],["Divide","Pi",9],["Multiply",5,["Divide","Pi",9]],["Multiply",2,["Divide","Pi",11]],["Multiply",2,["Divide","Pi",3]]])]}function On(n){if(n??=1,n===1){let e=yr([["Sqrt",["Multiply",6,["Sum",["Divide",1,["Power","n",2]],["Triple",["Hold","n"],1,"PositiveInfinity"]]]],"Add","Add","Add","Add","Add","Multiply","Multiply","Multiply","Multiply","Divide","Divide","Divide","Root","Sqrt","Subtract","Negate","trig"]);return typeof e=="string"?Gc(e,1):e}if(n===2){let e=Math.random();if(e>.75)return On(1);if(e>.5)return On(3);let t=yr(["Multiply","Multiply","Add","Power","trig","Ln","Exp"]);return Gc(t,2)}return yr([-12345e-9,-2,-2,-2,-3,-5,-6,-12,-1654e-60,0,0,12345e-8,1654e-60,1,2,2,2,2,3,3,5,5,6,6,1234.5678,5678.1234,10,15,18,30,60,1234e54,"123456789.12345678912345e200","987654321.12345678912345",["Rational",-6,10],["Rational",-12,15],["Rational",-15,12],["Rational",3,5],["Rational",12,15],["Rational",15,12],"ExponentialE",["Sqrt",3],["Sqrt",5],["Sqrt",15],["Sqrt",25],["Complex",-1.1,1.1],["Complex",4,5],"x","x","x","x",["Add","x",1],["Divide","x",3],["Square","x"],["Power","x",3],["Power","x",4],["Subtract","x",1],["Add","x",1],"Pi"])}var Uc=[{Nothing:{type:"nothing"}},{InvisibleOperator:{complexity:9e3,lazy:!0,signature:"function",canonical:(n,{engine:e})=>{let t=Eo(n,{engine:e});return t?t.operator==="Multiply"?_e(e,t.ops):t:e.Nothing}},Sequence:{lazy:!0,signature:"function",type:n=>n.length===0?"nothing":n.length===1?n[0].type:"any",canonical:(n,{engine:e})=>{let t=Q(n);return t.length===0?e.Nothing:t.length===1?t[0]:e._fn("Sequence",t)}},Delimiter:{complexity:9e3,lazy:!0,signature:"(any, string?) -> any",type:n=>n.length===0?"nothing":n[0].type,canonical:(n,{engine:e})=>{if(n.length===0)return e._fn("Tuple",[]);if(n.length>2)return e._fn("Delimiter",Xe(e,n,2));let t=n[0];if(t.operator==="Sequence")return e._fn("Tuple",Qe(e,t.ops));t=t.canonical;let i=n[1]?.string;return!i||i.startsWith("(")&&i.endsWith(")")?t:(i?.length??0)>3?e._fn("Delimiter",[t,e.error("invalid-delimiter",n[1].toString())]):e._fn("Delimiter",[n[0],ge(e,n[1],"string")])},evaluate:(n,e)=>{let t=e.engine;if(n.length===0)return t.Nothing;let i=n[0];return(i.operator==="Sequence"||i.operator==="Delimiter")&&(n=Is(n[0].ops)),n.length===1?n[0].evaluate(e):t._fn("Tuple",n.map(r=>r.evaluate(e)))}},Error:{lazy:!0,complexity:500,signature:"((string|expression<ErrorCode>), expression?) -> nothing",canonical:(n,{engine:e})=>e._fn("Error",n)},ErrorCode:{complexity:500,lazy:!0,signature:"(string, any*) -> error",canonical:(n,{engine:e})=>{let t=ge(e,n[0],"string").string;return t==="incompatible-type"?e._fn("ErrorCode",[e.string(t),n[1],n[2]]):e._fn("ErrorCode",n)}},Unevaluated:{description:"Prevent an expression from being evaluated",lazy:!0,signature:"(any) -> unknown",type:([n])=>n.type,canonical:(n,{engine:e,scope:t})=>e._fn("Unevaluated",Qe(e,n,t)),evaluate:([n],e)=>n.evaluate(e)},Hold:{description:"Hold an expression, preventing it from being canonicalized or evaluated until `ReleaseHold` is applied to it",lazy:!0,signature:"(any) -> unknown",type:([n])=>n.symbol?"symbol":n.string?"string":n.isNumberLiteral?n.type:n.ops?We(n.type.type)??"unknown":"unknown",eq:(n,e)=>(e.operator==="Hold"&&(e=e.ops[0]),n.ops[0].isSame(e)),evaluate:([n],{engine:e})=>e.hold(n)},ReleaseHold:{description:"Release an expression held by `Hold`",lazy:!0,signature:"(any) -> unknown",type:([n])=>n.operator==="Hold"?n.op1.type:n.type,evaluate:([n],e)=>(n.operator==="Hold"&&(n=n.op1),n.canonical.evaluate(e))},HorizontalSpacing:{signature:"(number) -> nothing",canonical:(n,{engine:e})=>n.length===2?n[0].canonical:e.Nothing},Annotated:{signature:"(expression, dictionary) -> expression",type:([n])=>n.type,complexity:9e3,lazy:!0,canonical:([n,e],{engine:t})=>(n=n.canonical,e=e.canonical,!xc(e)||e.keys.length===0?n:t._fn("Annotated",[n,e])),evaluate:([n,e],t)=>n.evaluate(t)},Text:{description:"A sequence of strings, annotated expressions and other Text expressions",signature:"(any*) -> expression"}},{About:{description:"Return information about an expression",lazy:!0,signature:"(any) -> string",evaluate:([n],{engine:e})=>{let t=[n.toString()];if(t.push(""),n.string)t.push("string");else if(n.symbol)if(n.valueDefinition){let i=n.valueDefinition;i.isConstant&&t.push("constant"),typeof i.description=="string"?t.push(i.description):Array.isArray(i.description)&&t.push(i.description.join(`
|
|
96
|
+
`)),i.wikidata&&t.push(`WikiData: ${i.wikidata}`),i.url&&t.push(`Read More: ${i.url}`)}else t.push("symbol"),t.push(`value: ${n.evaluate().toString()}`);else n.isNumberLiteral?t.push(n.type.toString()):n.ops?(t.push(n.type.toString()),t.push(n.isCanonical?"canonical":"non-canonical")):t.push("Unknown expression's type");return e.string(t.join(`
|
|
97
|
+
`))}},Head:{description:"Return the head of an expression, the name of the operator",lazy:!0,signature:"(any) -> symbol",canonical:(n,{engine:e})=>{if(n.length!==1)return null;let t=n[0];return t.operator?e.box(t.operator):e._fn("Head",Qe(e,n))},evaluate:(n,{engine:e})=>e.symbol(n[0]?.operator??"Undefined")},Tail:{description:"Return the tail of an expression, the operands of the expression",lazy:!0,signature:"(any) -> collection",canonical:(n,{engine:e})=>{if(n.length!==1)return null;let t=n[0];return t.ops?e._fn("Sequence",t.ops):e._fn("Tail",Qe(e,n))},evaluate:([n],{engine:e})=>n?.ops?e._fn("Sequence",n.ops):e.Nothing},Identity:{description:"Return the argument unchanged",signature:"(any) -> unknown",type:([n])=>n.type,evaluate:([n])=>n}},{Apply:{description:"Apply a function to a list of arguments",signature:"(name:symbol, arguments:expression*) -> unknown",type:([n])=>We(n.type.type)??"unknown",canonical:(n,{engine:e})=>n[0].symbol?e.function(n[0].symbol,n.slice(1)):e._fn("Apply",n),evaluate:n=>An(n[0],n.slice(1))},Assign:{description:"Assign a value to a symbol",lazy:!0,pure:!1,signature:"(symbol, any) -> any",type:([n,e])=>e.type,canonical:(n,{engine:e})=>{if(n.length!==2)return null;let t=n[0];return t.symbol||(t=ge(e,n[0],"symbol")),e._fn("Assign",[t,n[1].canonical])},evaluate:([n,e],{engine:t})=>{let i=n.evaluate();if(!i.symbol)return;let r=e.evaluate();return t.assign(i.symbol,r),r}},Assume:{description:"Assume a type for a symbol",lazy:!0,pure:!1,signature:"(any) -> symbol",evaluate:(n,{engine:e})=>e.symbol(e.assume(n[0]))},Declare:{lazy:!0,pure:!1,signature:"(symbol, type: string | symbol) -> nothing",canonical:(n,{engine:e})=>{let t=n[0];return t.symbol||(t=ge(e,n[0],"symbol")),n.length===1?e._fn("Declare",[t]):n.length!==2?null:e._fn("Declare",[t,n[1]])},evaluate:(n,{engine:e})=>{let t=n[0].evaluate().symbol;if(!t)return;if(!n[1])return e.declare(t,{inferred:!0,type:"unknown"}),e.Nothing;let i=n[1].canonical.evaluate(),r=A(i.string??i.symbol??void 0);if(st(r))return e.declare(t,r),e.Nothing}},Type:{lazy:!0,signature:"(any) -> string",evaluate:([n],{engine:e})=>e.string(n.type.toString()??"unknown")},Evaluate:{lazy:!0,signature:"(any) -> unknown",type:([n])=>n.type,canonical:(n,{engine:e})=>e._fn("Evaluate",Xe(e,n,1)),evaluate:([n],e)=>n.evaluate(e)},EvaluateAt:{lazy:!0,signature:"(function, lower:number, upper:number) -> number",type:([n])=>We(n.type.type)??"number",canonical:(n,{engine:e})=>{if(n.length===0)return null;let t=ve(n[0]);return t?e._fn("EvaluateAt",[t,...n.slice(1).map(i=>ge(e,i,"value"))]):null},evaluate:([n,e,t],{engine:i})=>{if(t===void 0){let s=An(n,[e]);return s&&s.isNumberLiteral?s:i._fn("EvaluateAt",[n,e])}let r=An(n,[e]),o=An(n,[t]);return r&&o&&r.N().isNumberLiteral&&o.N().isNumberLiteral?o.sub(r):i._fn("EvaluateAt",[n,e,t])}},BuiltinFunction:{complexity:9876,lazy:!0,signature:"(symbol | string) -> symbol",canonical:([n],{engine:e})=>e.symbol(n.symbol??n.string??"Undefined")},Function:{description:"A function literal",complexity:9876,lazy:!0,signature:"(expression, symbol*) -> function",type:([n,...e])=>`(${e.map(t=>t.type.type)}) -> ${n.type.type}`,canonical:(n,{engine:e})=>ai(e,n)??null,evaluate:n=>{}},Rule:{lazy:!0,signature:"(match: expression, replace: expression, predicate: function?) -> expression",evaluate:([n,e,t],{engine:i})=>{}},Simplify:{lazy:!0,signature:"(any) -> expression",canonical:(n,{engine:e})=>e._fn("Simplify",Xe(e,n,1)),evaluate:([n])=>n.simplify()??void 0},CanonicalForm:{description:["Return the canonical form of an expression","Can be used to sort arguments of an expression.",'Sorting arguments of commutative functions is a weak form of canonicalization that can be useful in some cases, for example to accept "x+1" and "1+x" while rejecting "x+1" and "2x-x+1"'],complexity:8200,lazy:!0,signature:"(any, symbol*) -> any",canonical:n=>{if(n.length===1)return n[0].canonical;let e=n.slice(1).map(t=>t.symbol??t.string).filter(t=>t!=null);return Ft(n[0],e)}},N:{description:"Numerically evaluate an expression",lazy:!0,signature:"(any) -> unknown",type:([n])=>n.type,canonical:(n,{engine:e})=>{if(n.length!==1)return e._fn("N",Xe(e,n,1));let t=n[0].operator;return t==="N"||t==="Evaluate"?n[0].canonical:e._fn("N",n)},evaluate:([n])=>n.N()},Random:{description:["Random(): Return a random number between 0 and 1","Random(n): Return a random integer between 0 and n-1","Random(m, n): Return a random integer between m and n-1"],pure:!1,signature:"(lower:integer?, upper:integer?) -> finite_number",type:([n,e])=>n===void 0&&e===void 0?"finite_number":"finite_integer",sgn:()=>"non-negative",evaluate:(n,{engine:e})=>{if(n.length===0)return e.number(Math.random());let[t,i]=n,r,o;return i===void 0?(r=0,o=Math.floor(t.re-1),isNaN(o)&&(o=0)):(r=Math.floor(t.re),o=Math.floor(i.re),isNaN(r)&&(r=0),isNaN(o)&&(o=0)),e.number(r+Math.floor(Math.random()*(o-r)))}},Signature:{lazy:!0,signature:"(symbol) -> string | nothing",evaluate:([n],{engine:e})=>n.operatorDefinition?e.string(n.operatorDefinition.signature.toString()):e.Nothing},Subscript:{lazy:!0,signature:"(collection, any) -> any",type:([n,e],{engine:t})=>n.string&&ee(e)!==null?"integer":n.isIndexedCollection?bn(n.type.type)??"any":n.symbol?"symbol":"expression",canonical:([n,e],{engine:t})=>{if(n=n.canonical,n.string){let i=ee(e.canonical);if(i!==null&&i>1&&i<=36){let[r,o]=Zi(n.string,i);return o?t.error(["unexpected-digit",o[0]],n.toString()):t.number(r)}return t._fn("Baseform",[n,t.error(["invalid-base",e.toString()])])}if(n.isIndexedCollection)return t._fn("At",[n,e.canonical]);if(n.symbol){let i=e.string??e.symbol??ee(e)?.toString();if(i)return t.symbol(n.symbol+"_"+i)}return e.operator==="Sequence"&&t._fn("Subscript",[n,t._fn("List",e.ops)]),t._fn("Subscript",[n,e])}},Symbol:{complexity:500,description:"Construct a new symbol with a name formed by concatenating the arguments",broadcastable:!0,lazy:!0,signature:"function",type:n=>n.length===0?"nothing":"symbol",canonical:(n,{engine:e})=>n.length===0?e.Nothing:e._fn("Symbol",n.map(t=>t.symbol?t:t.canonical)),evaluate:(n,{engine:e})=>{n.length>0;let t=n.map(i=>i.symbol??i.string??ee(i)?.toString()??"").join("");return e.symbol(t)}},Timing:{description:"`Timing(expr)` evaluates `expr` and return a `Pair` of the number of second elapsed for the evaluation, and the value of the evaluation",signature:"(value, repeat: integer?) -> tuple<result:value, time:number>",evaluate:(n,{engine:e})=>{if(n[1].symbol==="Nothing"){let u=globalThis.performance.now(),l=n[0].evaluate(),c=1e3*(globalThis.performance.now()-u);return e.tuple(e.number(c),l)}let t=Math.max(3,P(n[1])??3),i=[],r;for(;t>0;){let u=globalThis.performance.now();r=n[0].evaluate(),i.push(1e3*(globalThis.performance.now()-u)),t-=1}let o=Math.max(...i),s=Math.min(...i);i=i.filter(u=>u>s&&u<o);let a=i.reduce((u,l)=>u+l,0);return a===0?e.tuple(e.number(o),r):e.tuple(e.number(a/i.length),r)}}},{Wildcard:{signature:"(symbol) -> symbol",canonical:(n,{engine:e})=>n.length!==1?e.symbol("_"):e.symbol("_"+n[0].symbol)},WildcardSequence:{signature:"(symbol) -> symbol",canonical:(n,{engine:e})=>n.length!==1?e.symbol("__"):e.symbol("__"+n[0].symbol)},WildcardOptionalSequence:{signature:"(symbol) -> symbol",canonical:(n,{engine:e})=>n.length!==1?e.symbol("___"):e.symbol("___"+n[0].symbol)}},{LatexString:{description:"Value preserving type conversion/tag indicating the string is a LaTeX string",signature:"(string) -> string",evaluate:([n])=>n},Latex:{description:"Serialize an expression to LaTeX",signature:"(any+) -> string",evaluate:(n,{engine:e})=>e.box(["LatexString",e.string(v(n.map(t=>t.latex)))])},Parse:{description:"Parse a LaTeX string and evaluate to a corresponding expression",signature:"(string) -> any",evaluate:([n],{engine:e})=>e.parse(n.string)??e.Nothing}},{String:{description:"A string created by joining its arguments. The arguments are converted to their default string representation.",broadcastable:!0,signature:"(any*) -> string",evaluate:(n,{engine:e})=>n.length===0?e.string(""):e.string(n.map(t=>t.toString()).join(""))},StringFrom:{description:"Create a string by converting its arguments to a string and joining them.",broadcastable:!0,signature:"(any, format:string?) -> string",evaluate:([n,e],{engine:t})=>{if(n===void 0)return t.string("");let i=e?.string??"default";return i==="default"?t.string(n.toString()):i==="utf-8"?n.isIndexedCollection?t.string(new TextDecoder("utf-8").decode(new Uint8Array([...n.each()].map(r=>P(r)??65533)))):t.typeError(A("indexed_collection<integer>"),n.type):i==="utf-16"?n.isIndexedCollection?t.string(new TextDecoder("utf-16").decode(new Uint16Array([...n.each()].map(r=>P(r)??65533)))):t.typeError(A("indexed_collection<integer>"),n.type):i==="unicode-scalars"?n.isIndexedCollection?t.string(String.fromCodePoint(...[...n.each()].map(r=>P(r)??65533))):t.typeError(A("indexed_collection<integer>"),n.type):t.string(n.toString())}},Utf8:{description:"A collection of utf-8 code units from a string.",signature:"(string) -> list<integer>",evaluate:([n],{engine:e})=>{if(!n.string)return;let t=n.buffer;return e.function("List",Array.from(t,i=>e.number(i)))}},Utf16:{description:"A collection of utf-16 code units from a string.",signature:"(string) -> list<integer>",evaluate:([n],{engine:e})=>{if(!n.string)return;let t=[];for(let i=0;i<n.string.length;i++){let r=n.string.charCodeAt(i);t.push(r)}return e.function("List",t.map(i=>e.number(i)))}},UnicodeScalars:{description:"A collection of Unicode scalars from a string, same as utf-32",signature:"(string) -> list<integer>",evaluate:([n],{engine:e})=>{if(!n.string)return;let t=n.unicodeScalars;return e.function("List",t.map(i=>e.number(i)))}},GraphemeClusters:{description:"A collection of grapheme clusters from a string.",signature:"(string) -> list<string>",evaluate:([n],{engine:e})=>{if(!n.string)return;let t=new Intl.Segmenter("en",{granularity:"grapheme"}),i=Array.from(t.segment(n.string),r=>e.string(r.segment));return e.function("List",i)}},BaseForm:{description:"`BaseForm(expr, base=10)`",complexity:9e3,signature:"(number, (string|integer)?) -> string | nothing",type:([n])=>n===void 0?"nothing":n.type,evaluate:([n])=>n},DigitsFrom:{description:"Return an integer representation of the string `s` in base `base`.",signature:"(string, (string|integer)?) -> integer",evaluate:(n,{engine:e})=>{let t=n[0]?.string,i=e;if(!t)return i.typeError("string",n[0]?.type,n[0]);if(t=t.trim(),t.startsWith("0x"))return i.number(parseInt(t.slice(2),16));if(t.startsWith("0b"))return i.number(parseInt(t.slice(2),2));let r=n[1]??i.Nothing;if(r.symbol==="Nothing")return i.number(Number.parseInt(t,10));let o=r.re;if(!r.isInteger||!Number.isFinite(o)||o<2||o>36)return i.error(["unexpected-base",o.toString()],r.toString());let[s,a]=Zi(t,r.string??r.symbol??10);return a?i.error(["unexpected-digit",a[0]],a):i.number(s)}},IntegerString:{description:"`IntegerString(n, base=10)` return a string representation of the integer `n` in base `base`.",broadcastable:!0,signature:"(integer, integer?) -> string",evaluate:(n,{engine:e})=>{let t=e,i=n[0];if(!i.isInteger)return t.typeError("integer",i.type,i);let r=i.re;if(!Number.isFinite(r))return t.typeError("integer",i.type,i);let o=n[1]??t.Nothing;if(o.symbol==="Nothing")return i.bignumRe!==void 0?t.string(i.bignumRe.abs().toString()):t.string(Math.abs(r).toString());let s=ee(o);return s===null?t.typeError("integer",o.type,o):s<2||s>36?t.error(["out-of-range","2","36",s.toString()],o.toString()):t.string(Math.abs(r).toString(s))}}},{RandomExpression:{signature:"() -> expression",evaluate:(n,{engine:e})=>e.box(On())}}];function _o(n,e){switch(e){case"float64":case"float32":case"int32":case"uint8":return new No(n);case"complex128":case"complex64":return new ma(n);case"bool":case"expression":return new pa(n);case void 0:return new No(n)}throw new Error(`Unknown dtype ${e}`)}var No=class{constructor(e){this.ce=e}one=1;zero=0;nan=NaN;cast(e,t){let i=this.ce;switch(t){case"float64":case"float32":case"int32":case"uint8":return e;case"complex128":case"complex64":return Array.isArray(e)?e.map(r=>i.complex(r)):this.ce.complex(e);case"bool":return Array.isArray(e)?e.map(r=>r!==0):e!==0;case"expression":return Array.isArray(e)?e.map(r=>i.number(r)):i.number(e)}throw new Error(`Cannot cast ${e} to ${t}`)}expression(e){return this.ce.number(e)}isZero(e){return e===0}isOne(e){return e===1}equals(e,t){return e===t}add(e,t){return e+t}addn(...e){return e.reduce((t,i)=>t+i,0)}neg(e){return-e}sub(e,t){return e-t}mul(e,t){return e*t}muln(...e){return e.reduce((t,i)=>t*i,1)}div(e,t){return e/t}pow(e,t){return e**t}conjugate(e){return e}},pa=class{one;zero;nan;ce;constructor(e){this.zero=e.Zero,this.nan=e.NaN,this.ce=e}cast(e,t){if(Array.isArray(e))return e.map(i=>this.cast(i,t));switch(t){case"float64":case"float32":return e.im===0?e.re:void 0;case"int32":return typeof e.re=="number"?Math.round(e.re):void 0;case"uint8":if(typeof e.re!="number")return;let i=Math.round(e.re);return i>=0&&i<=255?i:void 0;case"complex128":case"complex64":let[r,o]=[e.re,e.im];return typeof r=="number"&&typeof o=="number"?this.ce.complex(r,o):typeof r=="number"?this.ce.complex(r):void 0;case"bool":let s=e.valueOf();return typeof s=="boolean"?s:void 0;case"expression":return e}throw new Error(`Cannot cast ${e} to ${t}`)}expression(e){return e}isZero(e){return e.is(0)}isOne(e){return e.is(1)}equals(e,t){return e.isSame(t)===!0}add(e,t){return e.add(t)}addn(...e){return H(...e)}neg(e){return e.neg()}sub(e,t){return e.sub(t)}mul(e,t){return e.mul(t)}muln(...e){return ae(...e)}div(e,t){return e.div(t)}pow(e,t){return e.pow(t)}conjugate(e){return this.ce.function("Conjugate",[e]).evaluate()}},ma=class{one;zero;nan;ce;constructor(e){this.ce=e,this.one=e.complex(1),this.zero=e.complex(0),this.nan=e.complex(NaN)}cast(e,t){if(Array.isArray(e))return e.map(i=>this.cast(i,t));switch(t){case"float64":return e.im===0?e.re:void 0;case"float32":return e.im===0?e.re:void 0;case"int32":return e.im===0?Math.round(e.re):void 0;case"uint8":if(e.im!==0)return;let i=Math.round(e.re);return i>=0&&i<=255?i:void 0;case"complex128":return e;case"complex64":return e;case"bool":return!(e.im===0&&e.re===0);case"expression":return this.ce.number(e)}throw new Error(`Cannot cast ${e} to ${t}`)}expression(e){return this.ce.number(e)}isZero(e){return e.isZero()}isOne(e){return e.re===1&&e.im===0}equals(e,t){return e.equals(t)}add(e,t){return e.add(t)}addn(...e){return e.reduce((t,i)=>t.add(i),this.zero)}neg(e){return e.neg()}sub(e,t){return e.sub(t)}mul(e,t){return e.mul(t)}muln(...e){return e.reduce((t,i)=>t.mul(i),this.one)}div(e,t){return e.div(t)}pow(e,t){return e.pow(t)}conjugate(e){return e.conjugate()}};function So(n,e){return n===void 0?e:n===e?n:n==="expression"||e==="expression"?"expression":n==="complex128"||e==="complex128"?"complex128":n==="complex64"||e==="complex64"?"complex64":n==="float64"||e==="float64"?"float64":n==="float32"||e==="float32"?"float32":n==="int32"||e==="int32"?"int32":n==="uint8"||e==="uint8"?"uint8":n==="bool"||e==="bool"?"bool":"expression"}function jc(n){if(n.symbol==="True"||n.symbol==="False")return"bool";if(n.symbol==="NaN"||n.symbol==="PositiveInfinity"||n.symbol==="NegativeInfinity")return"float64";if(n.symbol==="ComplexInfinity"||n.symbol==="ImaginaryUnit")return"complex128";if(n.isNumberLiteral)switch(n.type.type){case"real":case"rational":case"finite_real":case"finite_rational":case"integer":return"float64";case"complex":case"finite_complex":case"imaginary":return"complex128";case"finite_integer":{let e=n.re;return e>=0&&e<=255?"uint8":"int32"}default:return"expression"}return"expression"}var bi=class n{constructor(e,t){this.ce=e;this.shape=t.shape,this.rank=this.shape.length,this._strides=Cm(this.shape),this.field=_o(e,t.dtype)}static align(e,t){if(e.dtype===t.dtype)return[e,t];let i=So(e.dtype,t.dtype);return e.dtype===i?[e,t.upcast(i)]:[e.upcast(i),t]}static broadcast(e,t,i){if(!(i instanceof n))return t.map1(e,i);let[r,o]=n.align(t,i),s=r.data.map((a,u)=>e(a,o.data[u]));return dn(r.ce,{dtype:r.dtype,shape:r.shape,data:s})}field;shape;rank;_strides;get expression(){let e=this.shape,t=this.rank,i=this.data,r=this._index.bind(this),o=this.field.expression.bind(this.field),s=a=>{if(a.length===t-1){let u=r(a);return this.ce._fn("List",i.slice(u,u+e[t-1]).map(l=>o(l)))}else{let u=[];for(let l=1;l<=e[a.length];l++)u.push(s([...a,l]));return this.ce._fn("List",u)}};return s([])}get array(){let e=this.shape,t=this.rank,i=this.data;if(t===1)return i;if(t===2){let[s,a]=e,u=new Array(s);for(let l=0;l<s;l++)u[l]=i.slice(l*a,(l+1)*a);return u}let r=this._index.bind(this),o=s=>{if(s.length===t-1){let a=r(s);return i.slice(a,a+e[t-1])}else{let a=[];for(let u=0;u<e[s.length];u++)a.push(o([...s,u+1]));return a}};return o([])}_index(e){let t=this._strides;return e.reduce((i,r,o)=>i+(r-1)*t[o],0)}get isSquare(){let e=this.shape;return e.length===2&&e[0]===e[1]}get isSymmetric(){if(!this.isSquare)return!1;let e=this.shape[0],t=this.data,i=this.field.equals.bind(this.field);for(let r=0;r<e;r++)for(let o=r+1;o<e;o++)if(!i(t[r*e+o],t[o*e+r]))return!1;return!0}get isSkewSymmetric(){if(!this.isSquare)return!1;let e=this.shape[0],t=this.data,i=this.field.equals.bind(this.field),r=this.field.neg.bind(this.field);for(let o=0;o<e;o++)for(let s=o+1;s<e;s++)if(!i(t[o*e+s],r(t[s*e+o])))return!1;return!0}get isUpperTriangular(){if(!this.isSquare)return!1;let e=this.shape[0],t=this.data,i=this.field.isZero.bind(this.field);for(let r=1;r<e;r++)for(let o=0;o<r;o++)if(i(t[r*e+o]))return!1;return!0}get isLowerTriangular(){if(!this.isSquare)return!1;let e=this.shape[0],t=this.data,i=this.field.isZero.bind(this.field);for(let r=0;r<e-1;r++)for(let o=r+1;o<e;o++)if(!i(t[r*e+o]))return!1;return!0}get isTriangular(){if(!this.isSquare)return!1;let e=this.shape[0],t=this.data,i=this.field.isZero.bind(this.field);for(let r=0;r<e;r++)for(let o=0;o<e;o++)if(r<o&&!i(t[r*e+o])||r>o&&!i(t[r*e+o]))return!1;return!0}get isDiagonal(){if(!this.isSquare)return!1;let e=this.shape[0],t=this.data,i=this.field.isZero.bind(this.field);for(let r=0;r<e;r++)for(let o=0;o<e;o++)if(r===o&&!i(t[r*e+o])||r!==o&&!i(t[r*e+o]))return!1;return!0}get isIdentity(){if(!this.isSquare)return!1;let[e,t]=this.shape,i=this.data,r=this.field.isOne.bind(this.field),o=this.field.isZero.bind(this.field);for(let s=0;s<t;s++)for(let a=0;a<t;a++)if(s===a&&!r(i[s*t+a])||s!==a&&!o(i[s*t+a]))return!1;return!0}get isZero(){let e=this.field.isZero.bind(this.field);return this.data.every(t=>e(t))}at(...e){let t=this.data.length;return this.data[this._index(e)%t]}diagonal(e,t){if(e??=1,t??=2,e===t||e<=0||e>this.shape.length||this.shape[e-1]!==this.shape[t-1])return;let i=new Array(this.shape[e-1]),r=this.data,o=this.shape[e-1];for(let s=0;s<o;s++)i[s]=r[s*o+s];return i}trace(e,t){if(this.rank!==2)return;let[i,r]=this.shape;if(i!==r)return;let o=this.data,s=new Array(i);for(let a=0;a<i;a++)s[a]=o[a*i+a];return this.field.addn(...s)}reshape(...e){return dn(this.ce,{dtype:this.dtype,shape:e,data:this.data})}slice(e){if(e<0&&(e=this.shape[0]+e+1),this.rank===0)return this;if(this.rank===1){let s=this.data[e-1];return dn(this.ce,{dtype:this.dtype,shape:[],data:[s]})}let t=this.shape[1],i=this._strides[0],r=e*i,o=r+i;return dn(this.ce,{dtype:this.dtype,shape:this.shape.slice(1),data:this.data.slice(r,o)})}flatten(){return this.data}upcast(e){let t=this.field.cast(this.data,e);if(t===void 0)throw Error(`Cannot cast tensor to ${e}`);return dn(this.ce,{dtype:e,shape:this.shape,data:t})}transpose(e,t,i){if(this.rank!==2)return;if(e??=1,t??=2,e===t)return this;if(e<=0||e>2||t<=0||t>2)return;let[r,o]=this.shape,s=this.data;i&&(s=s.map(c=>i(c)));let a=0,u=new Array(r*o),l=o;for(let c=0;c<o;c++)for(let f=0;f<r;f++)u[a++]=s[f*l+c];return dn(this.ce,{dtype:this.dtype,shape:[o,r],data:u})}conjugateTranspose(e,t){let i=this.field.conjugate.bind(this.field);return this.transpose(e,t,i)}determinant(){if(this.rank!==2)return;let[e,t]=this.shape;if(e!==t)return;if(e===1)return this.data[0];let i=this.field.add.bind(this.field),r=this.field.mul.bind(this.field),o=this.field.neg.bind(this.field);if(e===2){let[g,b,_,k]=this.data;return i(r(g,k),o(r(b,_)))}let s=this.field.addn.bind(this.field),a=this.field.muln.bind(this.field);if(e===3){let[g,b,_,k,w,z,be,ke,hn]=this.data;return s([a(g,w,hn),a(b,z,be),a(_,k,ke),o(a(_,w,be)),o(a(b,k,hn)),o(a(g,z,ke))])}let u=this.shape[0],l=!1,c=this.field.div.bind(this.field),f=this.field.sub.bind(this.field),d=new Array(u).fill(0).map((g,b)=>b),p=[...this.data];for(let g=0;g<u;g++){let b=d[g-1];if(this.at(b,g)===0){let w;for(w=g+1;w<u;w++)if(this.at(d[w],g)!==0){b=d[w],d[w-1]=d[g-1],d[g-1]=b,l=!l;break}if(w===u)return this.at(b,g)}let _=this.at(b,g),k=g===0?1:this.at(d[g-2],g-2);for(let w=g+1;w<u;w++){let z=d[w-1];for(let be=g+1;be<u;be++)p[z][be]=c(f(r(p[z][be],_),r(p[z][g],p[b][be])),k)}}let x=p[d[u-1]][u-1];return l?this.field.neg(x):x}inverse(){if(this.rank!==2)return;let[e,t]=this.shape;if(e!==t)return;if(e===2){let[d,p,x,g]=this.data,b=this.determinant();if(b===void 0||this.field.isZero(b))return;let _=this.field.div.bind(this.field),k=this.field.neg.bind(this.field),w=[_(g,b),k(_(p,b)),k(_(x,b)),_(d,b)];return dn(this.ce,{dtype:this.dtype,shape:[t,t],data:w})}let i=this.shape[0],r=this.field.div.bind(this.field),o=this.field.sub.bind(this.field),s=this.field.mul.bind(this.field),a=this.array,u=new Array(i).fill(0).map((d,p)=>{let x=new Array(i).fill(0);return x[p]=1,x}),l=a.map((d,p)=>[...d,...u[p]]),c=new Array(i).fill(0).map((d,p)=>p);for(let d=0;d<i;d++){let p=c[d-1];if(this.at(p,d)===0){let b;for(b=d+1;b<i;b++)if(this.at(c[b],d)!==0){p=c[b],c[b-1]=c[d-1],c[d-1]=p;break}if(b===i)return}let x=this.at(p,d),g=d===0?1:this.at(c[d-2],d-2);for(let b=d+1;b<i;b++){let _=c[b-1];for(let k=d+1;k<i*2;k++)l[_][k]=o(l[_][k],s(r(s(l[_][d],l[p][k]),x),g))}}for(let d=i-1;d>=0;d--){let p=l[c[d],d];for(let x=0;x<d;x++){let g=c[x];for(let b=i;b<i*2;b++)l[g][b]=o(l[g][b],s(r(s(l[g][d],l[d][b]),p),p))}for(let x=i;x<i*2;x++)l[d][x]=r(l[d][x],p)}let f=l.map(d=>d.slice(i));return dn(this.ce,{dtype:this.dtype,shape:[t,t],data:f})}pseudoInverse(){}adjugateMatrix(){}minor(e,t){}map1(e,t){return dn(this.ce,{dtype:this.dtype,shape:this.shape,data:this.data.map(i=>e(i,t))})}map2(e,t){let i=t.data;return dn(this.ce,{dtype:this.dtype,shape:this.shape,data:this.data.map((r,o)=>e(r,i[o]))})}add(e){return n.broadcast(this.field.add.bind(this.field),this,e)}subtract(e){return n.broadcast(this.field.sub.bind(this.field),this,e)}multiply(e){return n.broadcast(this.field.mul.bind(this.field),this,e)}divide(e){return n.broadcast(this.field.div.bind(this.field),this,e)}power(e){return n.broadcast(this.field.pow.bind(this.field),this,e)}equals(e){if(this.rank!==e.rank||!this.shape.every((o,s)=>o===e.shape[s]))return!1;let t=this.field.equals.bind(this.field),i=this.field.cast.bind(this.field),r=this.dtype;return this.dtype!==e.dtype?!!this.data.every((o,s)=>t(o,i(e.data[s],r))):this.data.every((o,s)=>t(o,e.data[s]))}};function Cm(n){let e=new Array(n.length);for(let t=n.length-1,i=1;t>=0;t--)e[t]=i,i*=n[t];return e}var ga=class extends bi{dtype="float64";data;constructor(e,t){super(e,t),this.data=t.data}get isZero(){return this.data.every(e=>e===0)}},ha=class extends bi{dtype="complex128";data;constructor(e,t){super(e,t),this.data=t.data}},ya=class extends bi{dtype="bool";data;constructor(e,t){super(e,t),this.data=t.data}},xa=class extends bi{dtype="expression";data;constructor(e,t){super(e,t),this.data=t.data}};function dn(n,e){let t=e.dtype;return t==="float64"||t==="float32"||t==="uint8"||t==="int32"?new ga(n,e):t==="bool"?new ya(n,e):t==="complex64"||t==="complex128"?new ha(n,e):new xa(n,e)}function $n(n){return n.symbol?.startsWith("_")??(n.operator==="Wildcard"||n.operator==="WildcardSequence"||n.operator==="WildcardOptionalSequence")}function Fn(n){if(n.symbol?.startsWith("_"))return n.symbol;if(n.nops===1){let e=n.op1;if(n.operator==="Wildcard")return`_${e}`;if(n.operator==="WildcardSequence")return`__${e}`;if(n.operator==="WildcardOptionalSequence")return`___${e}`}return n.operator==="Wildcard"?"_":n.operator==="WildcardSequence"?"__":n.operator==="WildcardOptionalSequence"?"___":null}var xr=class n extends W{constructor(t,i,r){super(t,r?.metadata);this.input=i;this.options=r;let o=Am(t,"List",i.ops,i.shape,i.dtype);if(!o)throw new Error("Invalid tensor");this._tensor=dn(t,o)}_tensor;_expression;get structural(){return this._expression??=this._tensor.expression,this._expression}get tensor(){return this._tensor}get baseDefinition(){return this.structural.baseDefinition}get operatorDefinition(){return this.structural.operatorDefinition}get hash(){return cn("BoxedTensor")}get canonical(){return this}get isCanonical(){return this._tensor?!0:this._expression.isCanonical}get isPure(){return this._tensor?!0:this.structural.isPure}get isValid(){return this._tensor?!0:this.structural.isValid}get complexity(){return 97}get operator(){return"List"}get nops(){return this._tensor?this._tensor.shape[0]:this.structural.nops}get ops(){return this.structural.ops}get op1(){if(this._tensor){let t=this._tensor.data;return t.length===0?this.engine.Nothing:this.engine.box(t[0])}return this.structural.op1}get op2(){if(this._tensor){let t=this._tensor.data;return t.length<2?this.engine.Nothing:this.engine.box(t[1])}return this.structural.op2}get op3(){if(this._tensor){let t=this._tensor.data;return t.length<3?this.engine.Nothing:this.engine.box(t[2])}return this.structural.op3}neg(){return this.structural.neg()}inv(){return this.engine.One.div(this.structural)}abs(){return this.structural.abs()}add(t){return this.structural.add(t)}sub(t){return this.structural.sub(t)}mul(t){return this.structural.mul(t)}div(t){return this.structural.div(t)}pow(t){return this.structural.pow(t)}root(t){return this.structural.root(t)}sqrt(){return this.structural.sqrt()}get shape(){return this.tensor.shape}get rank(){try{return this.tensor.rank}catch{}return 0}get type(){return new S(this.isValid?A("list<number>"):"error")}get json(){return this.structural.json}isEqual(t){return this===t?!0:t instanceof n?this.tensor.equals(t.tensor):this.structural.isEqual(t)}get isCollection(){return!0}get isIndexedCollection(){return!0}xcontains(t){return["float64","float32","int32","uint8"].includes(this.tensor.dtype)?this.tensor.data.includes(t.re):this.tensor.data.some(i=>t.isSame(this.tensor.field.cast(i,"expression")??t.engine.Nothing))}get xsize(){return this.tensor.shape.reduce((t,i)=>t*i,1)}each(){let t=this.tensor.shape,i=this.tensor.rank;if(i===0)return function*(o){yield o}(this);let r=t[0];return i===1?function*(o){for(let s=1;s<=r;s+=1){let a=o.tensor.data,u=s-1;u>=0&&u<a.length&&(yield o.engine.box(a[u]))}}(this):function*(o){for(let s=1;s<=r;s+=1){let a=o.tensor.slice(s-1);yield new n(o.engine,{ops:a.expression.ops,shape:a.shape,dtype:a.dtype})}}(this)}at(t){let i=this.tensor.slice(t);if(i.rank===0)return this.engine.box(i.data[0]);if(i.rank===1)return this.engine.box(i.data[0]);if(i.rank>1)return new n(this.engine,{ops:i.expression.ops,shape:i.shape,dtype:i.dtype})}match(t,i){return Xn(t)||(t=this.engine.box(t,{canonical:!1})),$n(t)?{[Fn(t)]:this}:this.structural.match(t,i)}evaluate(t){return this._tensor&&this._tensor.dtype!=="expression"?this:this.structural.evaluate(t)}simplify(t){return this._tensor&&this._tensor.dtype!=="expression"?this:this.structural.simplify(t)}N(){return this._tensor&&this._tensor.dtype!=="expression"?this:this.structural.N()}};function pn(n){return n instanceof xr}function Zc(n,e){let t,i=[],r=!0,o=(s,a=0)=>{if(!r)return;let u=s.length;if(u===0)return;if(i[a]===void 0)i[a]=u;else if(i[a]!==u){r=!1;return}let l=0;for(let f of s)f.operator===n&&l++;let c=u-l;if(l>0&&c>0){r=!1;return}if(l===u){for(let f of s)if(o(f.ops,a+1),!r)return}else for(let f of s)t=So(t,jc(f))};return o(e),r?{shape:i,dtype:t}:void 0}function Am(n,e,t,i,r){let o=!0,s=[],a=_o(n,"expression"),u=a.cast.bind(a),l=(c,f=0)=>{if(c.length!==0){if(i[f]===void 0)i[f]=c.length;else if(i[f]!==c.length){o=!1;return}for(let d of c){if(!o)return;if(d.operator===e)l(d.ops,f+1);else{let p=u(d,r);if(p===void 0){o=!1;return}s.push(p)}}}};if(l(t),!!o)return{shape:i,rank:i.length,data:s,dtype:r}}var Hc=[{Matrix:{complexity:9e3,lazy:!0,signature:"(matrix, string?, string?) -> matrix",type:([n])=>n.type,canonical:Dm,evaluate:(n,e)=>n[0].evaluate(e)},Vector:{complexity:9e3,lazy:!0,signature:"(number+) -> vector",type:n=>A(`vector<${n.length}>`,n[0].engine._typeResolver),canonical:(n,{engine:e})=>e._fn("Matrix",[e.function("List",n.map(t=>e.function("List",[t])))])}},{Shape:{complexity:8200,signature:"(value) -> tuple",evaluate:([n],{engine:e})=>e.tuple(...n.shape)},Rank:{description:"The length of the shape of the expression. Note this is not the matrix rank (the number of linearly independent rows or columns in the matrix)",complexity:8200,signature:"(value) -> number",sgn:()=>"positive",evaluate:([n],{engine:e})=>e.number(n.rank)},Reshape:{complexity:8200,signature:"(list<number>, tuple) -> value",type:([n,e])=>{if(!n.type.matches("list"))return"nothing";let t=n.type.type;return E(t.elements,"number")?A(`list<number^${e.ops.map(i=>i.toString()).join("x")}>`):"nothing"},evaluate:(n,{engine:e})=>{let t=n[0],i=n[1].ops?.map(r=>r.re)??[];if(!pn(t)&&pe(t)&&(t=e.function("List",[...t.each()])),pn(t))return i.join("x")===t.shape.join("x")?t:t.tensor.reshape(...i).expression}},Flatten:{complexity:8200,signature:"(value) -> list",evaluate:(n,{engine:e})=>{let t=n[0];if(pn(t))return e.box(["List",...t.tensor.flatten().map(i=>e.box(i))]);if(pe(t))return e.function("List",[...t.each()])}},Transpose:{complexity:8200,signature:"(matrix|vector, axis1: integer?, axis2: integer?) -> matrix",evaluate:(n,{engine:e})=>{let t=n[0],i=1,r=2;if(n.length===3&&(i=n[1].re,r=n[2].re,i>0&&r>0),i!==r&&(!pn(t)&&pe(t)&&(t=e.function("List",[...t.each()])),pn(t)))return i===1&&r===2?t.tensor.transpose()?.expression:t.tensor.transpose(i,r)?.expression}},ConjugateTranspose:{complexity:8200,signature:"(tensor, axis1: integer?, axis2: integer?) -> matrix",evaluate:n=>{let e=n[0],t=1,i=2;if(n.length===3&&(t=n[1].re,i=n[2].re,t>0&&i>0),t!==i&&pn(e))return e.tensor.conjugateTranspose(t,i)?.expression}},Determinant:{complexity:8200,signature:"(matrix) -> number",evaluate:n=>{let e=n[0];if(pn(e))return e.tensor.determinant()}},Inverse:{complexity:8200,signature:"(matrix) -> matrix",type:([n])=>n.type,evaluate:([n])=>{if(pn(n))return n.tensor.inverse()?.expression}},PseudoInverse:{complexity:8200,signature:"(matrix) -> matrix",evaluate:([n])=>{if(pn(n))return n.tensor.pseudoInverse()?.expression}},AdjugateMatrix:{complexity:8200,signature:"(matrix) -> matrix",evaluate:n=>{let e=n[0];if(pn(e))return e.tensor.adjugateMatrix()?.expression}},Trace:{complexity:8200,signature:"(matrix) -> number",evaluate:n=>{let e=n[0];if(pn(e))return e.tensor.trace()}}}];function Dm(n,{engine:e}){let t="Matrix";if(n.length===0)return e._fn(t,[]);let i=n[0].operator==="Vector"?n[0].canonical.ops[0]:n[0].canonical,r=n[1]?.canonical,o=n[2]?.canonical;return n.length>3?e._fn(t,Xe(e,n,3)):o?e._fn(t,[i,r,o]):r?e._fn(t,[i,r]):e._fn(t,[i])}var Wc={True:{wikidata:"Q16751793",type:"boolean",isConstant:!0},False:{wikidata:"Q5432619",type:"boolean",isConstant:!0},And:{wikidata:"Q191081",broadcastable:!0,associative:!0,commutative:!0,idempotent:!0,complexity:1e4,signature:"(boolean+) -> boolean",evaluate:Jc},Or:{wikidata:"Q1651704",broadcastable:!0,associative:!0,commutative:!0,idempotent:!0,complexity:1e4,signature:"(boolean+) -> boolean",evaluate:Yc},Not:{wikidata:"Q190558",broadcastable:!0,involution:!0,complexity:10100,signature:"(boolean) -> boolean",evaluate:Qc},Equivalent:{wikidata:"Q220433",broadcastable:!0,complexity:10200,signature:"(boolean, boolean) -> boolean",canonical:(n,{engine:e})=>{let t=n[0].symbol,i=n[1].symbol;return t==="True"&&i==="True"||t==="False"&&i==="False"?e.True:t==="True"&&i==="False"||t==="False"&&i==="True"?e.False:e._fn("Equivalent",n)},evaluate:Xc},Implies:{wikidata:"Q7881229",broadcastable:!0,complexity:10200,signature:"(boolean, boolean) -> boolean",evaluate:Kc},Exists:{signature:"function",lazy:!0},NotExists:{signature:"function",lazy:!0},ExistsUnique:{signature:"function",lazy:!0},ForAll:{signature:"function",lazy:!0},NotForAll:{signature:"function",lazy:!0},KroneckerDelta:{description:"Return 1 if the arguments are equal, 0 otherwise",signature:"(value+) -> integer",evaluate:(n,{engine:e})=>{if(n.length===1)return n[0].symbol==="True"?e.One:e.Zero;if(n.length===2)return n[0].isEqual(n[1])?e.One:e.Zero;for(let t=1;t<n.length;t++)if(!n[t].isEqual(n[0]))return e.Zero;return e.One}},Boole:{description:"Return 1 if the argument is true, 0 otherwise. Also known as the Iverson bracket",signature:"(boolean) -> integer",evaluate:(n,{engine:e})=>n[0].symbol==="True"?e.One:e.Zero}};function Jc(n,{engine:e}){if(n.length===0)return e.True;let t=[];for(let i of n){if(i.symbol==="False")return e.False;if(i.symbol!=="True"){let r=!1;for(let o of t)if(o.isSame(i))r=!0;else if(i.operator==="Not"&&i.op1.isSame(o)||o.operator==="Not"&&o.op1.isSame(i))return e.False;r||t.push(i)}}return t.length===0?e.True:t.length===1?t[0]:e._fn("And",t)}function Yc(n,{engine:e}){if(n.length===0)return e.True;let t=[];for(let i of n){if(i.symbol==="True")return e.True;if(i.symbol!=="False"){let r=!1;for(let o of t)if(o.isSame(i))r=!0;else if(i.operator==="Not"&&i.op1.isSame(o)||o.operator==="Not"&&o.op1.isSame(i))return e.True;r||t.push(i)}}return t.length===0?e.False:t.length===1?t[0]:e._fn("Or",t)}function Qc(n,{engine:e}){let t=n[0]?.symbol;if(t==="True")return e.False;if(t==="False")return e.True}function Xc(n,{engine:e}){let t=n[0].symbol,i=n[1].symbol;if(t==="True"&&i==="True"||t==="False"&&i==="False")return e.True;if(t==="True"&&i==="False"||t==="False"&&i==="True")return e.False}function Kc(n,{engine:e}){let t=n[0].symbol,i=n[1].symbol;if(t==="True"&&i==="True"||t==="False"&&i==="False"||t==="False"&&i==="True")return e.True;if(t==="True"&&i==="False")return e.False}function ef(n){let e={And:Jc,Or:Yc,Not:Qc,Equivalent:Xc,Implies:Kc}[n.operator]?.(n.engine,n.ops);if(e)return{value:e,because:"logic"}}var nf=[{Totient:{wikidata:"Q190026",description:"Euler\u2019s totient function \u03C6(n): count of positive integers \u2264 n that are coprime to n.",signature:"(integer) -> integer",evaluate:([n],{engine:e})=>{let t=ye(n);if(t===null||t<1)return;let i=1n;for(let r=2n;r<t;r++)St(r,t)===1n&&i++;return e.number(i)}},Sigma0:{description:"Number of positive divisors of n.",signature:"(integer) -> integer",evaluate:([n],{engine:e})=>{let t=ye(n);if(t===null||t<1)return;let i=0;for(let r=1n;r<=t;r++)t%r===0n&&i++;return e.number(i)}},Sigma1:{description:"Sum of positive divisors of n.",signature:"(integer) -> integer",evaluate:([n],{engine:e})=>{let t=ye(n);if(t===null||t<1)return;let i=e.bignum(0);for(let r=1n;r<=t;r++)t%r===0n&&(i=i.add(e.bignum(r)));return e.number(i)}},SigmaMinus1:{description:"Sum of reciprocals of positive divisors of n.",signature:"(integer) -> number",evaluate:([n],{engine:e})=>{let t=ye(n);if(t===null||t<1)return;let i=e.bignum(0);for(let r=1n;r<=t;r++)t%r===0n&&(i=i.add(e.bignum(1).div(e.bignum(r))));return e.number(i)}},IsPerfect:{wikidata:"Q170043",description:'Returns "True" if n is a perfect number, a positive integer which equals the sum of all its divisors.',signature:"(integer) -> boolean",evaluate:([n],{engine:e})=>{let t=ye(n);if(t===null||t<1)return;let i=0n;for(let r=1n;r<t;r++)t%r===0n&&(i+=r);return e.symbol(i===t?"True":"False")}},Eulerian:{description:"Eulerian number A(n, m): number of permutations of {1..n} with exactly m ascents.",signature:"(integer, integer) -> integer",evaluate:([n,e],{engine:t})=>{let i=ye(n),r=ye(e);if(i===null||r===null||i<0n||r<0n||r>=i)return;let o=(s,a)=>a===0n?1n:a>=s?0n:(a+1n)*o(s-1n,a)+(s-a)*o(s-1n,a-1n);return t.number(o(i,r))}},Stirling:{description:"Stirling number of the second kind S(n, m): ways to partition n elements into m non-empty subsets.",signature:"(integer, integer) -> integer",evaluate:([n,e],{engine:t})=>{let i=ye(n),r=ye(e);if(i===null||r===null||i<0n||r<0n||r>i)return;let o=(s,a)=>s===0n&&a===0n?1n:s===0n||a===0n?0n:o(s-1n,a-1n)+a*o(s-1n,a);return t.number(o(i,r))}},NPartition:{description:"Number of integer partitions of n.",signature:"(integer) -> integer",evaluate:([n],{engine:e})=>{let t=ye(n);if(t===null||t<0n)return;let i=new Map,r=o=>{if(o===0n)return 1n;if(o<0n)return 0n;if(i.has(o))return i.get(o);let s=0n;for(let a=1n;;a++){let u=a*(3n*a-1n)/2n,l=a*(3n*a+1n)/2n;if(u>o&&l>o)break;let c=a%2n===0n?-1n:1n;s+=c*(r(o-u)+r(o-l))}return i.set(o,s),s};return e.number(r(t))}},IsTriangular:{description:"True if n is a triangular number.",signature:"(integer) -> boolean",evaluate:([n],{engine:e})=>{let t=ye(n);if(t===null||t<1n)return e.False;let i=8n*t+1n,r=BigInt(ki.sqrt(e.bignum(i)).toFixed(0));return e.symbol(r*r===i&&(r-1n)%2n===0n?"True":"False")}},IsSquare:{description:"True if n is a perfect square.",signature:"(integer) -> boolean",evaluate:([n],{engine:e})=>{let t=ye(n);if(t===null||t<0n)return e.False;let i=BigInt(ki.sqrt(e.bignum(t)).toFixed(0));return e.symbol(i*i===t?"True":"False")}},IsOctahedral:{description:"True if n is an octahedral number.",signature:"(integer) -> boolean",evaluate:([n],{engine:e})=>{let t=ye(n);if(t===null||t<1n)return e.False;let i=3n*t+1n,r=BigInt(ki.sqrt(e.bignum(i)).toFixed(0));return e.symbol(r*r===i?"True":"False")}},IsCenteredSquare:{description:"True if n is a centered square number.",signature:"(integer) -> boolean",evaluate:([n],{engine:e})=>{let t=ye(n);if(t===null||t<1n||(t-1n)%4n!==0n)return e.False;let i=(t-1n)/4n,r=BigInt(ki.sqrt(e.bignum(i)).toFixed(0));return e.symbol(r*r*4n+1n===t?"True":"False")}},IsHappy:{wikidata:"Q44535",description:"True if n is a happy number, a number which eventually reaches 1 when the number is replaced by the sum of the square of each digit",signature:"(integer) -> boolean",evaluate:([n],{engine:e})=>{let t=new Set,i=ye(n);if(i===null)return e.False;for(;!t.has(i);){if(i===1n)return e.True;t.add(i),i=Mm(i)}return e.False}},IsAbundant:{description:"True if n is an abundant number (sum of divisors > 2n).",signature:"(integer) -> boolean",evaluate:([n],{engine:e})=>{let t=ye(n);if(t===null||t<1n)return e.False;let i=1n;for(let r=2n;r*r<=t;r++)if(t%r===0n){i+=r;let o=t/r;o!==r&&(i+=o)}return e.symbol(i>t?"True":"False")}}}];function Mm(n){return n.toString().split("").map(e=>BigInt(e)).reduce((e,t)=>e+t*t,0n)}function br(n){let e=n.engine,t=n.operator;if(Je(t))return e.function(t,n.ops.map(br));if(t==="Divide")return n.ops[0].div(n.ops[1]);if(t==="Negate")return br(n.ops[0]).neg();if(t==="Add"){let[i,r]=n.ops.reduce((o,s)=>(s.operator==="Divide"?(o[0].push(s.ops[0]),o[1].push(s.ops[1])):o[0].push(s),o),[[],[]]);return H(...i).div(H(...r))}return n}function gt(n){let e=n.operator;if(Je(e)){let t=Oe.from(n.op1),i=Oe.from(n.op2),[r,o]=fc(t,i),s=r.sgn()===-1;return r.isOne||(t.div(r),i.div(r)),o.is(1)||(o.isPositive?(t.div(o),i.div(o)):o.isNegative&&(t.div(o.neg()),i.div(o.neg()),s=!s)),s&&([t,i]=[i,t]),n.engine.function(e,[t.asExpression(),i.asExpression()])}if(e==="Negate")return gt(n.ops[0]).neg();if(e==="Add"){let t=n.engine,i,r=[];for(let s of n.ops){let[a,u]=s.toNumericValue();i=i?i.gcd(a):a,a.isZero||r.push({coeff:a,term:u})}if(!i||i.isOne)return n;let o=r.map(({coeff:s,term:a})=>ae(a,t.box(s.div(i))));return ae(t.number(i),H(...o))}return Oe.from(br(n)).asExpression()}function ba(n,e,t,i){let r=n.engine;return n.operator===t?r.box([i,...n.ops.map(o=>ba(o,e,t,i))]):e.operator===t?r.box([i,...e.ops.map(o=>ba(n,o,t,i))]):r.box([i,n,e])}function tf(n,e="Add",t="Multiply"){if(n.operator!==t)return n;let i=n.ops;return!i||i.length<2?n:n.engine.box([e,i.slice(1).reduce((r,o)=>ba(r,o,e,t),i[0])])}var rf=[{Expand:{description:"Expand out products and positive integer powers",lazy:!0,signature:"(value)-> value",evaluate:([n])=>Ze(n.canonical)??n.canonical},ExpandAll:{description:"Recursively expand out products and positive integer powers",lazy:!0,signature:"(value)-> value",evaluate:([n])=>lr(n.canonical)??n.canonical},Factor:{description:"Factors an algebraic expression into a product of irreducible factors",lazy:!0,signature:"(value)-> value",evaluate:([n])=>gt(n.canonical)??n.canonical},Together:{description:"Combine rational expressions into a single fraction",lazy:!0,signature:"(value)-> value",evaluate:([n])=>br(n.canonical)},Distribute:{description:"Distribute multiplication over addition",lazy:!0,signature:"(value)-> value",evaluate:([n])=>n&&tf(n.canonical)}}];var sf={Congruent:{description:"Indicate that two expressions are congruent modulo a number",complexity:11e3,signature:"(number, number, modulo: integer) -> boolean",evaluate:(n,{engine:e})=>{if(n.length<3)return;let[t,i,r]=n,o=t.value,s=i.value,a=r.value;if(typeof o=="number"&&typeof s=="number"&&typeof a=="number")return o%a===s%a?e.True:e.False}},IsSame:{description:"Compare two expressions for structural equality",lazy:!0,signature:"(any, any) -> boolean",evaluate:(n,{engine:e})=>{if(n.length!==2)return;let[t,i]=n;return t.isSame(i)?e.True:e.False}},Equal:{complexity:11e3,signature:"(any, any) -> boolean",lazy:!0,canonical:(n,{engine:e})=>ce(e,"Equal",n),eq:(n,e)=>n.operator!==e.operator?!1:n.op1.sub(n.op2).N().isEqual(e.op1.sub(e.op2).N()),evaluate:(n,{engine:e})=>{if(n.length<2)return e.True;let t;for(let i of n)if(!t)t=i;else if(no(t,i)!==!0)return e.False;return e.True}},NotEqual:{wikidata:"Q28113351",complexity:11e3,signature:"(any, any) -> boolean",canonical:(n,{engine:e})=>ce(e,"NotEqual",n),eq:(n,e)=>n.operator!==e.operator?!1:!!(n.op1.isEqual(e.op1)&&n.op2.isEqual(e.op2)||n.op1.isEqual(e.op2)&&n.op2.isEqual(e.op1)),evaluate:(n,{engine:e})=>{if(n.length<2)return e.False;let t;for(let i of n)if(!t)t=i;else if(t.isEqual(i)===!0)return e.False;return e.True}},Less:{complexity:11e3,signature:"(any, any+) -> boolean",canonical:(n,{engine:e})=>ce(e,"Less",n),eq:(n,e)=>of(n,e,"Greater"),evaluate:(n,{engine:e})=>{if(n.length===2){let[i,r]=n,o=i.isLess(r);return o===void 0?void 0:o?e.True:e.False}if(n.length<2)return e.True;let t;for(let i of n)if(!t)t=i;else{let r=i.isLess(t);if(r===void 0)return;if(r===!1)return e.False;t=i}return e.True}},NotLess:{complexity:11e3,signature:"(any, any+) -> boolean",canonical:(n,{engine:e})=>e._fn("Not",[ce(e,"Less",n)])},Greater:{complexity:11e3,signature:"(any, any+) -> boolean",canonical:(n,{engine:e})=>ce(e,"Less",[...n].reverse())},NotGreater:{complexity:11e3,signature:"(any, any+) -> boolean",canonical:(n,{engine:e})=>e._fn("Not",[e._fn("Greater",n)])},LessEqual:{complexity:11e3,signature:"(any, any+) -> boolean",canonical:(n,{engine:e})=>ce(e,"LessEqual",n),eq:(n,e)=>of(n,e,"LessGreater"),evaluate:(n,{engine:e})=>{if(n.length===2){let[i,r]=n,o=i.isLessEqual(r);return o===void 0?void 0:o?e.True:e.False}if(n.length<2)return e.True;let t;for(let i of n)if(!t)t=i;else{let r=i.isLessEqual(t);if(r===void 0)return;if(r===!1)return e.False;t=i}return e.True}},NotLessNotEqual:{complexity:11e3,signature:"(any, any+) -> boolean",canonical:(n,{engine:e})=>e._fn("Not",[ce(e,"LessEqual",n)])},GreaterEqual:{complexity:11e3,signature:"(any, any+) -> boolean",canonical:(n,{engine:e})=>ce(e,"LessEqual",[...n].reverse())},NotGreaterNotEqual:{complexity:11e3,signature:"(any, any+) -> boolean",canonical:(n,{engine:e})=>e._fn("Not",[ce(e,"GreaterEqual",n)])},TildeFullEqual:{description:"Indicate isomorphism, congruence and homotopic equivalence",signature:"(any, any+) -> boolean",canonical:(n,{engine:e})=>ce(e,"TildeFullEqual",n)},NotTildeFullEqual:{complexity:11100,signature:"(any, any+) -> boolean",canonical:(n,{engine:e})=>e._fn("Not",[ce(e,"TildeFullEqual",n)])},TildeEqual:{description:"Approximately or asymptotically equal",complexity:11e3,signature:"(any, any+) -> boolean",canonical:(n,{engine:e})=>ce(e,"TildeEqual",n)},NotTildeEqual:{complexity:11100,signature:"(any, any+) -> boolean",canonical:(n,{engine:e})=>e._fn("Not",[ce(e,"TildeEqual",n)])},Approx:{complexity:11100,signature:"(any, any+) -> boolean",canonical:(n,{engine:e})=>ce(e,"Approx",n)},NotApprox:{complexity:11100,signature:"(any, any+) -> boolean",canonical:(n,{engine:e})=>e._fn("Not",[ce(e,"Approx",n)])},ApproxEqual:{complexity:11100,signature:"(any, any+) -> boolean",canonical:(n,{engine:e})=>ce(e,"ApproxEqual",n)},NotApproxEqual:{complexity:11100,canonical:(n,{engine:e})=>e._fn("Not",[ce(e,"ApproxEqual",n)])},ApproxNotEqual:{complexity:11100,signature:"(any, any+) -> boolean",canonical:(n,{engine:e})=>ce(e,"ApproxNotEqual",n)},NotApproxNotEqual:{complexity:11100,signature:"(any, any+) -> boolean",canonical:(n,{engine:e})=>e._fn("Not",[ce(e,"ApproxNotEqual",n)])},Precedes:{complexity:11100,signature:"(any, any+) -> boolean",canonical:(n,{engine:e})=>ce(e,"Precedes",n)},NotPrecedes:{complexity:11100,signature:"(any, any+) -> boolean",canonical:(n,{engine:e})=>e._fn("Not",[ce(e,"Precedes",n)])},Succeeds:{signature:"(any, any+) -> boolean",canonical:(n,{engine:e})=>ce(e,"Succeeds",n)},NotSucceeds:{complexity:11100,signature:"(any, any+) -> boolean",canonical:(n,{engine:e})=>e._fn("Not",[ce(e,"Succeeds",n)])}};function ce(n,e,t){t=Q(t,e);let i=[],r=[];for(let o of t)Je(o.operator)?(i.push(o),r.push(o.ops[o.ops.length-1])):r.push(o);return i.length===0?n._fn(e,r):n._fn("And",[n._fn(e,r),...i])}function of(n,e,t){return n.operator===e.operator?n.nops!==e.nops?!1:n.ops.every((i,r)=>i.isEqual(e.ops[r])):e.operator===t?n.nops!==e.nops?!1:n.ops.every((i,r)=>i.isEqual(e.ops[e.nops-1-r])):!1}var uf={EmptySet:{type:"set",isConstant:!0,wikidata:"Q226183",description:"The empty set, a set containing no elements.",eq:n=>n.type.matches("set")&&n.xsize===0,collection:{iterator:()=>({next:()=>({value:void 0,done:!0})}),count:()=>0,isEmpty:()=>!0,isFinite:()=>!0,contains:()=>!1,subsetOf:()=>!0,eltsgn:()=>{},elttype:()=>"never"}},Numbers:{type:"set<number>",isConstant:!0,description:"The set of all numbers.",collection:{iterator:Ea,count:()=>1/0,isEmpty:()=>!1,isFinite:()=>!1,contains:(n,e)=>e.type.matches("number"),subsetOf:(n,e,t)=>e.operator==="Range"||e.operator==="Linspace"?!0:e.type.matches(S.setNumber)&&(!t||e.symbol!=="Numbers"),eltsgn:()=>"unsigned",elttype:()=>"number"}},ComplexNumbers:{type:"set<finite_complex>",isConstant:!0,description:"The set of all finite complex numbers.",collection:{iterator:Ea,count:()=>1/0,isEmpty:()=>!1,isFinite:()=>!1,contains:(n,e)=>e.type.matches("finite_complex"),subsetOf:(n,e,t)=>e.operator==="Range"||e.operator==="Linspace"?!0:e.type.matches(S.setComplex)&&(!t||e.symbol!=="ComplexNumbers"),eltsgn:()=>"unsigned",elttype:()=>"finite_complex"}},ExtendedComplexNumbers:{type:"set<complex>",isConstant:!0,description:"The set of all complex numbers, including infinities.",collection:{iterator:Ea,count:()=>1/0,isEmpty:()=>!1,isFinite:()=>!1,contains:(n,e)=>e.type.matches("complex"),subsetOf:(n,e,t)=>e.operator==="Range"||e.operator==="Linspace"?!0:e.type.matches(S.setComplex)&&(!t||e.symbol!=="ComplexNumbers"),eltsgn:()=>"unsigned",elttype:()=>"complex"}},ImaginaryNumbers:{type:"set<imaginary>",isConstant:!0,description:"The set of all imaginary numbers.",collection:{iterator:Om,count:()=>1/0,isEmpty:()=>!1,isFinite:()=>!1,contains:(n,e)=>e.type.matches(S.setImaginary),subsetOf:(n,e,t)=>e.type.matches(S.setImaginary)&&(!t||e.symbol!=="ImaginaryNumbers"),eltsgn:()=>"unsigned",elttype:()=>"imaginary"}},RealNumbers:{type:"set<finite_real>",isConstant:!0,description:"The set of all finite real numbers.",collection:{iterator:n=>ht(n),contains:(n,e)=>e.type.matches("finite_real"),count:()=>1/0,isEmpty:()=>!1,isFinite:()=>!1,subsetOf:(n,e,t)=>e.type.matches(S.setReal)&&(!t||e.symbol!=="RealNumbers"),eltsgn:()=>{},elttype:()=>"finite_real"}},ExtendedRealNumbers:{type:"set<real>",isConstant:!0,description:"The set of all real numbers, including infinities.",collection:{iterator:n=>ht(n),contains:(n,e)=>e.type.matches("real"),count:()=>1/0,isEmpty:()=>!1,isFinite:()=>!1,subsetOf:(n,e,t)=>e.type.matches(S.setReal)&&(!t||e.symbol!=="ExtendedRealNumbers"),eltsgn:()=>{},elttype:()=>"real"}},Integers:{type:"set<finite_integer>",isConstant:!0,description:"The set of all finite integers.",collection:{iterator:af,contains:(n,e)=>e.type.matches("finite_integer"),count:()=>1/0,isEmpty:()=>!1,isFinite:()=>!1,subsetOf:(n,e,t)=>e.operator==="Range"?!0:e.type.matches(S.setFiniteInteger)&&(!t||e.symbol!=="Integers"),eltsgn:()=>{},elttype:()=>"finite_integer"}},ExtendedIntegers:{type:"set<integer>",isConstant:!0,description:"The set of all integers, including infinities.",collection:{iterator:af,contains:(n,e)=>e.type.matches("integer"),count:()=>1/0,isEmpty:()=>!1,isFinite:()=>!1,subsetOf:(n,e,t)=>e.operator==="Range"?!0:e.type.matches(S.setInteger)&&(!t||e.symbol!=="ExtendedIntegers"),eltsgn:()=>{},elttype:()=>"integer"}},RationalNumbers:{type:"set<finite_rational>",isConstant:!0,description:"The set of all finite rational numbers.",collection:{iterator:n=>ht(n),count:()=>1/0,isEmpty:()=>!1,isFinite:()=>!1,contains:(n,e)=>e.type.matches("finite_rational"),subsetOf:(n,e,t)=>e.type.matches(S.setRational)&&(!t||e.symbol!=="RationalNumbers"),eltsgn:()=>{},elttype:()=>"finite_rational"}},ExtendedRationalNumbers:{type:"set<rational>",isConstant:!0,description:"The set of all rational numbers, including infinities.",collection:{iterator:n=>ht(n),contains:(n,e)=>e.type.matches("rational"),count:()=>1/0,isEmpty:()=>!1,isFinite:()=>!1,subsetOf:(n,e,t)=>e.type.matches(S.setRational)&&(!t||e.symbol!=="ExtendedRationalNumbers"),eltsgn:()=>{},elttype:()=>"rational"}},NegativeNumbers:{type:"set<real>",isConstant:!0,description:"The set of all negative real numbers.",collection:{iterator:n=>ht(n,{sign:"-",includeZero:!1}),count:()=>1/0,contains:(n,e)=>e.type.matches("real")&&e.isNegative===!0,subsetOf:(n,e,t)=>{if(e.operator==="Range"||e.operator==="Linspace"){let i=e.ops[0].re,r=e.ops[1].re;return i<0&&r<0}return e.type.matches(S.setReal)&&e.baseDefinition?.collection?.eltsgn?.(e)==="negative"&&(!t||e.symbol!=="NegativeNumbers")},eltsgn:()=>"negative",elttype:()=>"real"}},NonPositiveNumbers:{type:"set<real>",isConstant:!0,description:"The set of all non-positive real numbers.",collection:{iterator:n=>ht(n,{sign:"-",includeZero:!0}),contains:(n,e)=>e.type.matches("real")&&e.isNonPositive===!0,count:()=>1/0,isEmpty:()=>!1,isFinite:()=>!1,subsetOf:(n,e,t)=>{if(e.operator==="Range"||e.operator==="Linspace"){let i=e.ops[0].re,r=e.ops[1].re;return i>=0&&r>=0}return e.type.matches(S.setReal)&&e.baseDefinition?.collection?.eltsgn?.(e)==="non-positive"&&(!t||e.symbol!=="NonPositiveNumbers")},eltsgn:()=>"non-positive",elttype:()=>"real"}},NonNegativeNumbers:{type:"set<real>",isConstant:!0,description:"The set of all non-negative real numbers.",collection:{iterator:n=>ht(n,{sign:"+",includeZero:!0}),contains:(n,e)=>e.type.matches("real")&&e.isNonNegative===!0,count:()=>1/0,isEmpty:()=>!1,isFinite:()=>!1,subsetOf:(n,e,t)=>{if(e.operator==="Range"||e.operator==="Linspace"){let i=e.ops[0].re,r=e.ops[1].re;return i<=0&&r<=0}return e.type.matches(S.setReal)&&e.baseDefinition?.collection?.eltsgn?.(e)==="non-negative"&&(!t||e.symbol!=="NonNegativeNumbers")},eltsgn:()=>"non-negative",elttype:()=>"real"}},PositiveNumbers:{type:"set<real>",isConstant:!0,description:"The set of all positive real numbers.",collection:{iterator:n=>ht(n,{sign:"+",includeZero:!1}),contains:(n,e)=>e.type.matches("real")&&e.isPositive===!0,count:()=>1/0,subsetOf:(n,e,t)=>{if(e.operator==="Range"||e.operator==="Linspace"){let i=e.ops[0].re,r=e.ops[1].re;return i>0&&r>0}return e.type.matches(S.setReal)&&e.baseDefinition?.collection?.eltsgn?.(e)==="positive"&&(!t||e.symbol!=="PositiveNumbers")},eltsgn:()=>"positive",elttype:()=>"real"}},NegativeIntegers:{type:"set<integer>",isConstant:!0,description:"The set of all negative integers.",collection:{iterator:n=>To(n.engine,-1,-1),contains:(n,e)=>e.type.matches("integer")&&e.isNegative===!0,count:()=>1/0,isEmpty:()=>!1,isFinite:()=>!1,subsetOf:(n,e,t)=>{if(e.operator==="Range"){let i=e.ops[0].re,r=e.ops[1].re;return i<0&&r<0}return e.type.matches(S.setInteger)&&e.baseDefinition?.collection?.eltsgn?.(e)==="negative"&&(!t||e.symbol!=="NegativeIntegers")},eltsgn:()=>"negative",elttype:()=>"integer"}},NonPositiveIntegers:{type:"set<integer>",isConstant:!0,description:"The set of all non-positive integers.",collection:{iterator:n=>To(n.engine,0,-1),contains:(n,e)=>e.type.matches("integer")&&e.isNonPositive===!0,count:()=>1/0,isEmpty:()=>!1,isFinite:()=>!1,subsetOf:(n,e,t)=>{if(e.operator==="Range"){let i=e.ops[0].re,r=e.ops[1].re;return i<=0&&r<=0}return e.type.matches(S.setInteger)&&e.baseDefinition?.collection?.eltsgn?.(e)==="non-positive"&&(!t||e.symbol!=="NonPositiveIntegers")},eltsgn:()=>"non-positive",elttype:()=>"integer"}},NonNegativeIntegers:{type:"set<integer>",isConstant:!0,description:"The set of all non-negative integers.",collection:{iterator:n=>To(n.engine,0,1),contains:(n,e)=>e.type.matches("integer")&&e.isNonNegative===!0,count:()=>1/0,isEmpty:()=>!1,isFinite:()=>!1,subsetOf:(n,e,t)=>{if(e.operator==="Range"){let i=e.ops[0].re,r=e.ops[1].re;return i>0&&r>0}return e.type.matches(S.setInteger)&&e.baseDefinition?.collection?.eltsgn?.(e)==="non-negative"&&(!t||e.symbol!=="NonNegativeIntegers")},eltsgn:()=>"non-negative",elttype:()=>"integer"}},PositiveIntegers:{type:"set<integer>",isConstant:!0,description:"The set of all positive integers.",collection:{iterator:n=>To(n.engine,1,1),contains:(n,e)=>e.type.matches("integer")&&e.isPositive===!0,count:()=>1/0,isEmpty:()=>!1,isFinite:()=>!1,subsetOf:(n,e,t)=>{if(e.operator==="Range"){let i=e.ops[0].re,r=e.ops[1].re;return i>0&&r>0}return e.type.matches(S.setInteger)&&e.baseDefinition?.collection?.eltsgn?.(e)==="positive"&&(!t||e.symbol!=="PositiveIntegers")},eltsgn:()=>"positive",elttype:()=>"integer"}},Element:{complexity:11200,signature:"(value, collection) -> boolean",description:"Test whether a value is an element of a collection.",evaluate:([n,e],{engine:t})=>{let i=e.xcontains(n);if(i===!0)return t.True;if(i===!1)return t.False}},NotElement:{complexity:11200,signature:"(value, collection) -> boolean",description:"Test whether a value is not an element of a collection.",evaluate:([n,e],{engine:t})=>{let i=e.xcontains(n);if(i===!0)return t.False;if(i===!1)return t.True}},Subset:{complexity:11200,signature:"(lhs:collection, rhs: collection) -> boolean",description:"Test whether the first collection is a strict subset of the second.",evaluate:([n,e],{engine:t})=>{let i=Vt(n,e);if(i===!0)return t.True;if(i===!1)return t.False}},SubsetEqual:{complexity:11200,signature:"(lhs:collection, rhs: collection) -> boolean",description:"Test whether the first collection is a subset (possibly equal) of the second.",evaluate:([n,e],{engine:t})=>{let i=Vt(n,e,!1);if(i===!0)return t.True;if(i===!1)return t.False}},NotSubset:{complexity:11200,signature:"(lhs:collection, rhs: collection) -> boolean",description:"Test whether the first collection is not a strict subset of the second.",evaluate:([n,e],{engine:t})=>{let i=Vt(n,e);if(i===!0)return t.False;if(i===!1)return t.True}},Superset:{complexity:11200,signature:"(lhs:collection, rhs: collection) -> boolean",description:"Test whether the first collection is a strict superset of the second.",evaluate:([n,e],{engine:t})=>{let i=Vt(e,n);if(i===!0)return t.True;if(i===!1)return t.False}},SupersetEqual:{complexity:11200,signature:"(lhs:collection, rhs: collection) -> boolean",description:"Test whether the first collection is a superset (possibly equal) of the second.",evaluate:([n,e],{engine:t})=>{let i=Vt(e,n,!0);if(i===!0)return t.True;if(i===!1)return t.False}},NotSuperset:{complexity:11200,signature:"(lhs:collection, rhs: collection) -> boolean",description:"Test whether the first collection is not a strict superset of the second.",evaluate:([n,e],{engine:t})=>{let i=Vt(e,n);if(i===!0)return t.False;if(i===!1)return t.True}},NotSupersetEqual:{complexity:11200,signature:"(lhs:collection, rhs: collection) -> boolean",description:"Test whether the first collection is not a superset (possibly equal) of the second.",evaluate:([n,e],{engine:t})=>{let i=Vt(e,n,!0);if(i===!0)return t.False;if(i===!1)return t.True}},Complement:{wikidata:"Q242767",signature:"(set+) -> set",description:"Return the elements of the first set that are not in any of the subsequent sets.",collection:{contains:(n,e)=>{let[t,...i]=n.ops;return(t.xcontains(e)??!1)&&i.every(r=>!r.xcontains(e))},count:n=>Bo(n,e=>n.ops.slice(1).every(t=>!t.xcontains(e))),iterator:Vm}},Intersection:{wikidata:"Q185837",signature:"(set+) -> set",description:"Return the intersection of two or more sets.",canonical:(n,{engine:e})=>n.length===0||n.length===1?e.symbol("EmptySet"):(n=yi(e,Q(n,"Intersection"),A("(set+) -> set"))??n,e._fn("Intersection",n)),evaluate:Pm,collection:{contains:Um,count:n=>Bo(n,e=>n.ops.slice(1).every(t=>t.xcontains(e))),iterator:qm}},Union:{wikidata:"Q185359",signature:"(collection+) -> set",description:"Return the union of two or more collections as a set.",canonical:(n,{engine:e})=>n.length===0?e.symbol("EmptySet"):(n=yi(e,Q(n,"Union"),A("(collection+) -> set"))??n,e._fn("Union",n)),evaluate:Rm,collection:{contains:(n,e)=>n.ops.some(t=>t.xcontains(e)),count:n=>Gm(n,(e,t)=>t.every(i=>!i.xcontains(e))),isEmpty:n=>n.ops.every(e=>e.isEmptyCollection),isFinite:n=>n.ops.every(e=>e.isFiniteCollection),iterator:$m}},SetMinus:{wikidata:"Q18192442",signature:"(set, value*) -> set",description:"Return the set difference between the first set and subsequent values.",evaluate:Lm,collection:{contains:(n,e)=>{let[t,...i]=n.ops;return(t.xcontains(e)??!1)&&!i.some(r=>r.isSame(e))},count:n=>Bo(n,e=>{let[t,...i]=n.ops;return!i.some(r=>r.isSame(e))}),iterator:Fm}},SymmetricDifference:{wikidata:"Q1147242",signature:"(set, set) -> set",description:"Return the symmetric difference of two sets (elements in either set but not both).",collection:{contains:(n,e)=>{let[t,i]=n.ops,r=t.xcontains(e)??!1,o=i.xcontains(e)??!1;return r&&!o||!r&&o},count:n=>Bo(n,e=>{let[t,i]=n.ops,r=t.xcontains(e)??!1,o=i.xcontains(e)??!1;return r&&!o||!r&&o}),iterator:zm}}};function Vt(n,e,t=!0){return!n.isCollection||!e.isCollection?!1:!!n.baseDefinition?.collection?.subsetOf?.(n,e,t)}function Rm(n,{engine:e}){let t=n.map(o=>o.isCollection?o:e.function("Set",[o]));if(t.reduce((o,s)=>o+(s.xsize??0),0)>fl)return e._fn("Union",t);let r=[];for(let o of t)for(let s of o.each())r.every(a=>!a.isSame(s))&&r.push(s);return r.length===0?e.symbol("EmptySet"):e._fn("Set",r)}function Pm(n,{engine:e}){let t=[...n[0].ops??[]];for(let i of n.slice(1))pe(i)?t=t.filter(r=>[...i.each()].some(o=>r.isSame(o))):t=t.filter(r=>r.isSame(i));return t.length===0?e.symbol("EmptySet"):e._fn("Set",t)}function Lm(n,{engine:e}){return e.symbol("EmptySet")}function Om(n){let e=is();return{next:()=>{let{value:t,done:i}=e.next();if(i)return{value:void 0,done:!0};let[r,o]=t;return{value:n.engine.number({re:0,im:r/o}),done:!1}}}}function Ea(n){let e=Eu();return{next:()=>{let{value:t,done:i}=e.next();if(i)return{value:void 0,done:!0};let[r,o]=t;return{value:n.engine.number({re:r,im:o}),done:!1}}}}function*ht(n,e){let t=e?.sign??"+-",i=e?.includeZero??!0,r=t==="+-"?is():bu();i||r.next();for(let o of r)if(t==="+-")yield n.engine.number(o);else{let s=t==="-"?-1:1,[a,u]=o;yield n.engine.number([s*a,u])}}function*af(n){for(let e of vu())yield n.engine.number(e)}function*To(n,e,t){let i=e;for(;;)yield n.number(i),i+=t}function*$m(n){let e=[];for(let t of n.ops){for(let i of t.each())e.every(r=>!r.xcontains(i))&&(yield i);e.push(t)}}function*Fm(n){let[e,...t]=n.ops;for(let i of e.each())t.some(r=>r.isSame(i))||(yield i)}function*Vm(n){let[e,...t]=n.ops;for(let i of e.each())t.every(r=>!r.xcontains(i))&&(yield i)}function*qm(n){for(let e of n.ops[0].each())n.ops.slice(1).every(t=>t.xcontains(e))&&(yield e)}function*zm(n){let[e,t]=n.ops;for(let i of e.each())(t.xcontains(i)??!1)||(yield i);for(let i of t.each())(e.xcontains(i)??!1)||(yield i)}function Bo(n,e){if(n.ops.some(i=>i.xsize===1/0))return 1/0;let t=0;for(let i of n.ops[0].each())e(i)&&(t+=1);return t}function Gm(n,e){if(n.ops.some(r=>r.xsize===1/0))return 1/0;let t=[],i=0;for(let r of n.ops){for(let o of r.each())e(o,t)&&(i+=1);t.push(r)}return i}function Um(n,e){return n.ops.every(t=>t.xcontains(e)??!1)}var lf=[{Erf:{complexity:7500,signature:"(number) -> number",evaluate:(n,{engine:e})=>{let t=n[0].re;if(Number.isFinite(t))return e.number(Vs(t))}},Erfc:{complexity:7500,signature:"(number) -> number",evaluate:(n,{engine:e})=>{let t=n[0].re;if(Number.isFinite(t))return e.number(1-Vs(t))}},ErfInv:{complexity:7500,signature:"(number) -> number",evaluate:(n,{engine:e})=>{let t=n[0].re;if(Number.isFinite(t))return e.number(Ll(t))}}},{Mean:{complexity:1200,broadcastable:!1,signature:"((collection|number)+) -> number",description:"The most frequently occurring value in the collection.",evaluate:(n,{engine:e})=>e.number(me(e)?Ol(e.bignum.bind(e),Tn(n)):Xi(Sn(n)))},Median:{complexity:1200,broadcastable:!1,signature:"((collection|number)+) -> number",description:"The most frequently occurring value in the collection.",examples:["Mode([1, 2, 2, 3]) // Returns 2"],evaluate:(n,{engine:e})=>e.number(me(e)?Ct(Tn(n)):Pn(Sn(n)))},Variance:{complexity:1200,broadcastable:!1,signature:"((collection|number)+) -> number",evaluate:(n,{engine:e})=>e.number(me(e)?Gs(e.bignum.bind(e),Tn(n)):At(Sn(n)))},PopulationVariance:{complexity:1200,broadcastable:!1,signature:"((collection|number)+) -> number",evaluate:(n,{engine:e})=>e.number(me(e)?Us(e.bignum.bind(e),Tn(n)):Dt(Sn(n)))},StandardDeviation:{complexity:1200,broadcastable:!1,description:"Sample Standard Deviation of a collection of numbers.",signature:"((collection|number)+) -> number",evaluate:(n,{engine:e})=>e.number(me(e)?Gs(e.bignum.bind(e),Tn(n)).sqrt():Math.sqrt(At(Sn(n))))},PopulationStandardDeviation:{complexity:1200,broadcastable:!1,description:"Population Standard Deviation of a collection of numbers.",signature:"((collection|number)+) -> number",evaluate:(n,{engine:e})=>e.number(me(e)?Us(e.bignum.bind(e),Tn(n)).sqrt():Math.sqrt(Dt(Sn(n))))},Kurtosis:{complexity:1200,broadcastable:!1,signature:"((collection|number)+) -> number",evaluate:(n,{engine:e})=>e.number(me(e)?$l(e.bignum.bind(e),Tn(n)):Ki(Sn(n)))},Skewness:{complexity:1200,broadcastable:!1,signature:"((collection|number)+) -> number",evaluate:(n,{engine:e})=>e.number(me(e)?Fl(e.bignum.bind(e),Tn(n)):er(Sn(n)))},Mode:{complexity:1200,broadcastable:!1,signature:"((collection|number)+) -> number",evaluate:(n,{engine:e})=>e.number(me(e)?Vl(e.bignum.bind(e),Tn(n)):nr(Sn(n)))},Quartiles:{complexity:1200,broadcastable:!1,signature:"((collection|number)+) -> tuple<mid:number, lower:number, upper:number>",examples:["Quartiles([1, 2, 3, 4, 5]) // Returns (3, 2, 4)"],evaluate:(n,{engine:e})=>{let[t,i,r]=(me(e)?ql(Tn(n)):tr(Sn(n))).map(o=>e.number(o));return e.tuple(t,i,r)}},InterquartileRange:{complexity:1200,broadcastable:!1,signature:"((collection|number)+) -> number",evaluate:(n,{engine:e})=>e.number(me(e)?zl(Tn(n)):ir(Sn(n)))},Histogram:{description:"Compute a histogram of the values in a collection. Returns a list of (bin start, count) tuples.",complexity:8200,signature:"(collection, integer | list<number>) -> list<tuple<number, integer>>",examples:["Histogram([1, 2, 2, 3], 3) // Returns [(1,1), (1.6667,2), (2.3333,1)]"],evaluate:([n,e],{engine:t})=>{if(!n.isFiniteCollection)return;let i=Array.from(n.each()).map(u=>u.re).filter(Number.isFinite);if(i.length===0)return;let r=Math.min(...i),o=Math.max(...i),s;if(e?.operator==="List")s=e.ops.map(u=>u.re);else{let u=P(e);if(u===null||u<=0)return;let l=(o-r)/u;s=Array.from({length:u+1},(c,f)=>r+f*l)}let a=Array(s.length-1).fill(0);for(let u of i)for(let l=0;l<s.length-1;l++)if(u>=s[l]&&u<s[l+1]){a[l]++;break}return t.function("List",a.map((u,l)=>t._fn("Tuple",[t.number(s[l]),t.number(u)])))}},BinCounts:{description:"Count the number of elements falling into each bin.",complexity:8200,signature:"(collection, integer | list<number>) -> list<number>",examples:["BinCounts([1, 2, 2, 3], 3) // Returns [1, 2, 1]"],evaluate:([n,e],{engine:t})=>{if(!n.isFiniteCollection)return;let i=Array.from(n.each()).map(u=>u.re).filter(Number.isFinite);if(i.length===0)return;let r=Math.min(...i),o=Math.max(...i),s;if(e.isCollection)s=[...e.each()].map(u=>u.re);else{let u=P(e);if(u===null||u<=0)return;let l=(o-r)/u;s=Array.from({length:u+1},(c,f)=>r+f*l)}let a=Array(s.length-1).fill(0);for(let u of i)for(let l=0;l<s.length-1;l++)if(u>=s[l]&&u<s[l+1]){a[l]++;break}return t.function("List",a.map(u=>t.number(u)))}},SlidingWindow:{description:"Return overlapping sliding windows of fixed size over the collection.",complexity:8200,signature:"(collection, integer, integer?) -> list<list>",examples:["SlidingWindow([1, 2, 3, 4], 2) // Returns [[1,2], [2,3], [3,4]]"],evaluate:([n,e,t],{engine:i})=>{if(!n.isFiniteCollection)return;let r=P(e),o=t?P(t):1;if(r===null||r<=0||o===null||o<=0)return;let s=Array.from(n.each()),a=[];for(let u=0;u<=s.length-r;u+=o)a.push(i.function("List",s.slice(u,u+r)));return i.function("List",a)}}},{Sample:{description:"Return a random sample of k elements from the collection, without replacement.",complexity:8200,signature:"(collection, integer) -> list",evaluate:([n,e],{engine:t})=>{if(!n.isFiniteCollection)return;let i=P(e);if(i===null||i<0)return;let r=Array.from(n.each());if(i>r.length)return;for(let s=r.length-1;s>0;s--){let a=Math.floor(Math.random()*(s+1));[r[s],r[a]]=[r[a],r[s]]}let o=r.slice(0,i);return t.function("List",o)}}}];function*cf(n){for(let e of n)e.isFiniteCollection?yield*e.each():yield e}function*Sn(n){for(let e of cf(n))yield e.re}function*Tn(n){for(let e of cf(n))yield e.bignumRe??e.engine.bignum(e.re)}var jm={Sin:[[1,"Sin"],[1,"Cos"],[-1,"Sin"],[-1,"Cos"]],Cos:[[1,"Cos"],[-1,"Sin"],[-1,"Cos"],[1,"Sin"]],Sec:[[1,"Sec"],[-1,"Csc"],[-1,"Sec"],[1,"Csc"]],Csc:[[1,"Csc"],[1,"Sec"],[-1,"Csc"],[-1,"Sec"]],Tan:[[1,"Tan"],[-1,"Cot"],[1,"Tan"],[-1,"Cot"]],Cot:[[1,"Cot"],[-1,"Tan"],[1,"Cot"],[-1,"Tan"]]},yt=["Sqrt",2],Ei=["Sqrt",3],vi=["Sqrt",5],Io=["Sqrt",6],Zm=[[[0,1],{Sin:0,Cos:1,Tan:0,Cot:"ComplexInfinity",Sec:1,Csc:"ComplexInfinity"}],[[1,12],{Sin:["Divide",["Subtract",Io,yt],4],Cos:["Divide",["Add",Io,yt],4],Tan:["Subtract",2,Ei],Cot:["Add",2,Ei],Sec:["Subtract",Io,yt],Csc:["Add",Io,yt]}],[[1,10],{Sin:["Divide",["Subtract",vi,1],4],Cos:["Divide",["Sqrt",["Add",10,["Multiply",2,vi]]],4],Tan:["Divide",["Sqrt",["Subtract",25,["Multiply",10,vi]]],5],Cot:["Sqrt",["Add",5,["Multiply",2,vi]]],Sec:["Divide",["Sqrt",["Subtract",50,["Multiply",10,vi]]],5],Csc:["Add",1,vi]}],[[1,8],{Sin:"$\\frac{\\sqrt{2-\\sqrt2}}{2}$",Cos:"$\\frac{\\sqrt {2+{\\sqrt {2}}}}{2}$",Tan:"$\\sqrt{2} - 1$",Cot:"$\\sqrt{2} + 1$",Sec:"$\\sqrt{ 4 - 2\\sqrt{2}}$",Csc:"$\\sqrt{ 4 + 2\\sqrt{2}}$"}],[[1,6],{Sin:"$\\frac{1}{2}$",Cos:"$\\frac{\\sqrt{3}}{2}$",Tan:"$\\frac{\\sqrt{3}}{3}$",Cot:"$\\sqrt{3}$",Sec:"$\\frac{2\\sqrt{3}}{3}$",Csc:2}],[[1,5],{Sin:"$\\frac{\\sqrt{10- 2\\sqrt{5}}} {4}$",Cos:"$\\frac{1+ \\sqrt{5}} {4}$",Tan:"$\\sqrt{5-2\\sqrt5}$",Cot:"$\\frac{\\sqrt{25+10\\sqrt5}} {5}$",Sec:"$\\sqrt{5} - 1$",Csc:"$\\frac{\\sqrt{50+10\\sqrt{5}}} {5}$"}],[[1,4],{Sin:["Divide",yt,2],Cos:["Divide",yt,2],Tan:1,Cot:1,Sec:yt,Csc:yt}],[[3,10],{Sin:"$\\frac{1+ \\sqrt5} {4}$",Cos:"$\\frac{\\sqrt{10- 2\\sqrt5}} {4}$",Tan:"$\\frac{\\sqrt{25+10\\sqrt5}} {5}$",Cot:"$\\sqrt{5-2\\sqrt5}$",Sec:"$\\frac{\\sqrt{50+10\\sqrt5}} {5}$",Csc:"$\\sqrt5-1$"}],[[1,3],{Sin:["Divide",Ei,2],Cos:"Half",Tan:Ei,Cot:["Divide",Ei,3],Sec:2,Csc:["Divide",["Multiply",2,Ei],3]}],[[3,8],{Sin:"$\\frac{ \\sqrt{2 + \\sqrt{2}} } {2}$",Cos:"$\\frac{ \\sqrt{2 - \\sqrt{2}} } {2}$",Tan:"$\\sqrt{2} + 1$",Cot:"$\\sqrt{2} - 1$",Sec:"$\\sqrt{ 4 + 2 \\sqrt{2} }$",Csc:"$\\sqrt{ 4 - 2 \\sqrt{2} }$"}],[[2,5],{Sin:"$\\frac{\\sqrt{10+ 2\\sqrt{5}}} {4}$",Cos:"$\\frac{\\sqrt{5}-1} {4}$",Tan:"$\\sqrt{5+2\\sqrt{5}}$",Cot:"$\\frac{\\sqrt{25-10\\sqrt{5}}} {5}$",Sec:"$1 + \\sqrt{5}$",Csc:"$\\frac{\\sqrt{50-10\\sqrt{5}}} {5}$"}],[[5,12],{Sin:"$\\frac{\\sqrt{6} + \\sqrt{2}} {4}$",Cos:"$\\frac{ \\sqrt{6} - \\sqrt{2}} {4}$",Tan:"$2+\\sqrt{3}$",Cot:"$2-\\sqrt{3}$",Sec:"$\\sqrt{6}+\\sqrt{2}$",Csc:"$\\sqrt{6} - \\sqrt{2}$"}],[[1,2],{Sin:1,Cos:0,Tan:"ComplexInfinity",Cot:0,Sec:"ComplexInfinity",Csc:1}]];function mn(n,e,t,i){let r=ao(n)?.N();if(r!==void 0)return re(r,e,t,i)}function gn(n){if(!n)return n;let e=n.engine,t=e.angularUnit;if(t==="rad")return n;let i=n.N().re;return Number.isNaN(i)?n:t==="deg"?e.number(i*(180/Math.PI)):t==="grad"?e.number(i*(200/Math.PI)):t==="turn"?e.number(i/(2*Math.PI)):n}function Er(n,e){if(!e)return;let t=e.engine;switch(n){case"Arccos":return gn(re(e,Math.acos,i=>i.acos(),i=>i.acos()));case"Arccot":return gn(re(e,i=>Math.atan2(1,i),i=>M.atan2(t._BIGNUM_ONE,i),i=>i.inverse().atan()));case"Arccsc":return gn(re(e,i=>Math.asin(1/i),i=>t._BIGNUM_ONE.div(i).asin(),i=>i.inverse().asin()));case"Arccosh":return gn(re(e,Math.acosh,i=>i.acosh(),i=>i.acosh()));case"Arccoth":return gn(re(e,i=>Math.log((1+i)/(i-1))/2,i=>t._BIGNUM_ONE.add(i).div(i.sub(t._BIGNUM_ONE)).log().div(2),i=>t.complex(1).add(i).div(i.sub(1)).log().div(2)));case"Arccsch":return gn(re(e,i=>Math.log(1/i+Math.sqrt(1/(i*i)+1)),i=>t._BIGNUM_ONE.div(i.mul(i)).add(t._BIGNUM_ONE).sqrt().add(t._BIGNUM_ONE.div(i)).log(),i=>i.mul(i).inverse().add(1).sqrt().add(i.inverse()).log()));case"Arcsec":return gn(re(e,i=>Math.acos(1/i),i=>t._BIGNUM_ONE.div(i).acos(),i=>i.inverse().acos()));case"Arcsin":return gn(re(e,Math.asin,i=>i.asin(),i=>i.asin()));case"Arcsech":return gn(re(e,i=>Math.log((1+Math.sqrt(1-i*i))/i),i=>t._BIGNUM_ONE.sub(i.mul(i).add(t._BIGNUM_ONE).div(i)).log(),i=>t.complex(1).sub(i.mul(i)).add(1).div(i).log()));case"Arcsinh":return gn(re(e,Math.asinh,i=>i.asinh(),i=>i.asinh()));case"Arctan":return gn(re(e,Math.atan,i=>i.atan(),i=>i.atan()));case"Arctanh":return gn(re(e,Math.atanh,i=>i.atanh(),i=>i.atanh()));case"Cos":return mn(e,Math.cos,i=>t.chop(i.cos()),i=>i.cos());case"Cosh":return mn(e,Math.cosh,i=>i.cosh(),i=>i.cosh());case"Cot":return mn(e,i=>1/Math.tan(i),i=>t._BIGNUM_ONE.div(i.tan()),i=>i.tan().inverse());case"Coth":return mn(e,i=>1/Math.tanh(i),i=>t._BIGNUM_ONE.div(i.tanh()),i=>i.tanh().inverse());case"Csc":return mn(e,i=>1/Math.sin(i),i=>t._BIGNUM_ONE.div(i.sin()),i=>i.sin().inverse());case"Csch":return mn(e,i=>1/Math.sinh(i),i=>t._BIGNUM_ONE.div(i.sinh()),i=>i.sinh().inverse());case"Sec":return mn(e,i=>1/Math.cos(i),i=>t._BIGNUM_ONE.div(i.cos()),i=>i.cos().inverse());case"Sech":return mn(e,i=>1/Math.cosh(i),i=>t._BIGNUM_ONE.div(i.cosh()),i=>i.cosh().inverse());case"Sin":return mn(e,Math.sin,i=>t.chop(i.sin()),i=>i.sin());case"Sinh":return mn(e,Math.sinh,i=>i.sinh(),i=>i.sinh());case"Tan":return mn(e,r=>{let o=Math.tan(r);return o>1e6||o<-1e6?t.ComplexInfinity:o},r=>{let o=r.tan();return o.greaterThan(1e6)||o.lessThan(-1e6)?t.ComplexInfinity:o},r=>r.tan());case"Tanh":return mn(e,Math.tanh,i=>i.tanh(),i=>i.tanh())}}function Hm(n){return!!(n.startsWith("Ar")&&va(n))}function va(n){return{Sin:"Arcsin",Cos:"Arccos",Tan:"Arctan",Sec:"Arcsec",Csc:" Arccsc",Sinh:"Arcsinh",Cosh:"Arccosh",Tanh:"Arctanh",Sech:"Arcsech",Csch:"Arccsch",Arccosh:"Cosh",Arccos:"Cos",Arccsc:"Csc",Arccsch:"Csch",Arcsec:"Sec",Arcsin:"Sin",Arcsinh:"Sinh",Arctan:"Tan",Arctanh:"Tanh"}[n]}function vr(n,e){if(e.length!==1||!e[0].isValid)return;let t=e[0];if(t.operator==="InverseFunction")return t.op1.canonical;let i=t.symbol;if(typeof i!="string")return;let r=va(i);return r?n.symbol(r):void 0}function ff(n){return n!=="Cos"&&n!=="Sec"?-1:1}function Wm(n,e,t,i){if(!t)return;let r=t.N().re;if(Number.isNaN(r))return;let o=va(e),s=n._cache("constructible-inverse-trigonometric-values-"+e,()=>{let u=[];for(let[[l,c],f]of i){let d=f[o];if(d===void 0)continue;let p=d.N().re;Number.isNaN(p)||u.push([[d,p],[l,c]])}return u},u=>{for(let[[l,c],[f,d]]of u)l.reset();return u}),a=0;r<0&&(a=ff(o)==-1?-1:1,r=-r,t=t.neg());for(let[[u,l],[c,f]]of s)if(n.chop(r-l)===0){let d=n.Pi.mul(c).div(f);return a==-1?d=d.neg():a==1&&(d=n.Pi.sub(d)),d.evaluate()}}function Na(n,e){let[t,i]=Jm(e);if(t!==void 0)return i!==void 0&&((n==="Sin"||n==="Tan")&&(i===0||i===2)||(n==="Cos"||n==="Cot")&&(i===1||i===3))?"zero":{Sin:["positive","positive","negative","negative"],Cos:["positive","negative","negative","positive"],Sec:["positive","negative","negative","positive"],Csc:["positive","positive","negative","negative"],Tan:["positive","negative","positive","negative"],Cot:["positive","negative","positive","negative"]}[n]?.[t]}function _a(n){return["Sin","Cos","Tan","Csc","Sec","Cot"].includes(typeof n=="string"?n:n.operator)}function Nr(n,e){if(!e||!_a(n))return;let t=e.engine;if(e=e.N(),e.im!==0)return;let i=e.re;if(Number.isNaN(i))return;let r=t._cache("constructible-trigonometric-values",()=>Zm.map(([l,c])=>[l,Object.fromEntries(Object.entries(c).map(([f,d])=>[f,(t.parse(ut(d))??t.box(d)).simplify()]))]),l=>{for(let[c,f]of l)for(let d of Object.values(f))d.reset();return l});if(Hm(n))return Wm(t,n,e,r);let o=t.angularUnit;o!=="rad"&&(o==="deg"&&(i*=Math.PI/180),o==="grad"&&(i*=Math.PI/200),o==="turn"&&(i*=2*Math.PI));let s=ff(n)==-1?Math.sign(i):1;i=Math.abs(i%(2*Math.PI));let a=Math.floor(i*2/Math.PI);i=i%(Math.PI/2);let u;[u,n]=jm[n]?.[a]??[1,n];for(let[[l,c],f]of r){let d=f[n];if(d&&Math.abs(i-Math.PI*l/c)<=1e-12)return d.symbol==="ComplexInfinity"?d:s*u<0?d.neg():d}}function Jm(n){if(!n.isValid||!n.isNumberLiteral)return[void 0,void 0];if(n.im!==0)return[void 0,void 0];let e=n.re;if(isNaN(e))return[void 0,void 0];let t=(e%(2*Math.PI)+2*Math.PI)%(2*Math.PI);return Math.abs(t)<1e-12?[1,0]:Math.abs(t-Math.PI/2)<1e-12?[2,1]:Math.abs(t-Math.PI)<1e-12?[3,2]:Math.abs(t-3*Math.PI/2)<1e-12?[4,3]:[Math.floor(t/(Math.PI/2))+1,void 0]}var df=[{Pi:{type:"finite_real",isConstant:!0,holdUntil:"N",wikidata:"Q167",value:n=>n.number(me(n)?n._BIGNUM_PI:Math.PI)}},{Degrees:{signature:"(real) -> real",canonical:(n,{engine:e})=>{let t=e;if(t.angularUnit==="deg")return n[0];if(n.length!==1)return t._fn("Degrees",n);let i=n[0];if(i.numericValue===null||!i.isValid)return t._fn("Degrees",n);let r=i.re;if(Number.isNaN(r))return i.mul(t.Pi).div(180);if(r=r%360,r<0&&(r+=360),Number.isInteger(r)){let o=ui([r,180]);return o[0]===0?t.Zero:o[0]===1&&o[1]===1?t.Pi:o[0]===1?t.Pi.div(o[1]):t.number(o).mul(t.Pi)}return t.number(r).div(180).mul(t.Pi)},evaluate:(n,e)=>e.engine.angularUnit==="deg"?n[0]:n[0].mul(e.engine.Pi.div(180)).evaluate(e)},Hypot:{broadcastable:!0,signature:"(real, real) -> real",sgn:()=>"non-negative",evaluate:([n,e],{engine:t})=>t.box(["Sqrt",["Add",["Square",n],["Square",e]]])},Sin:fe("Sin",5e3)},{Arctan:{wikidata:"Q2257242",complexity:5200,broadcastable:!0,signature:"(number) -> finite_real",sgn:([n])=>Na("Arctan",n),evaluate:([n],{numericApproximation:e})=>e?Er("Arctan",n):Nr("Arctan",n)??Er("Arctan",n)},Arctan2:{wikidata:"Q776598",complexity:5200,broadcastable:!0,signature:"(y:number, x: number) -> real",evaluate:([n,e],{engine:t,numericApproximation:i})=>i?Rn(n,e,Math.atan2,(r,o)=>M.atan2(r,o)):n.isFinite===!1&&e.isFinite===!1?t.NaN:n.is(0)&&e.is(0)?t.Zero:e.isFinite===!1?e.isPositive?t.Zero:t.Pi:n.isFinite===!1?n.isPositive?t.Pi.div(2):t.Pi.div(-2):n.is(0)?e.isPositive?t.Zero:t.Pi:t.function("Arctan",[n.div(e)]).evaluate()},Cos:fe("Cos",5050),Tan:fe("Tan",5100)},{Arccosh:fe("Arccosh",6200),Arcsin:fe("Arcsin",5500),Arcsinh:fe("Arcsinh",6100),Arctanh:fe("Arctanh",6300),Cosh:fe("Cosh",6050),Cot:fe("Cot",5600),Csc:fe("Csc",5600,"Cosecant"),Sec:fe("Sec",5600,"Secant, inverse of cosine"),Sinh:fe("Sinh",6e3),Haversine:{wikidata:"Q2528380",broadcastable:!0,signature:"(real) -> number",evaluate:([n],{engine:e})=>e.box(["Divide",["Subtract",1,["Cos",n]],2])},InverseHaversine:{broadcastable:!0,signature:"(real) -> real",evaluate:([n],{engine:e})=>e.box(["Multiply",2,["Arcsin",["Sqrt",n]]])}},{Csch:fe("Csch",6200,"Hyperbolic cosecant"),Sech:fe("Sech",6200,"Hyperbolic secant"),Tanh:fe("Tanh",6200,"Hyperbolic tangent")},{Arccos:fe("Arccos",5550),Arccot:fe("Arccot",5650),Arccoth:fe("Arccoth",6350),Arccsch:fe("Arccsch",6250),Arcsec:fe("Arcsec",5650),Arcsech:fe("Arcsech",6250),Arccsc:fe("Arccsc",5650),Coth:fe("Coth",6300),InverseFunction:{lazy:!0,signature:"(function) -> function",canonical:(n,{engine:e})=>(n=Xe(e,n,1),vr(e,n)??e._fn("InverseFunction",n)),evaluate:(n,{engine:e})=>vr(e,n)}}];function fe(n,e,t){return{complexity:e,description:t,broadcastable:!0,signature:"(number) -> number",sgn:([i])=>Na(n,i),evaluate:([i],{numericApproximation:r})=>r?Er(n,i):Nr(n,i)??Er(n,i)}}function Sa(n){if(n==="all")return Sa(["core","control-structures","logic","collections","relop","numeric","arithmetic","trigonometry","algebra","calculus","polynomials","combinatorics","number-theory","linear-algebra","statistics","dimensions","units","physics","other"]);typeof n=="string"&&(n=[n]);let e=[];for(let t of n){let i=Ym[t];if(!i)throw Error(`Unknown library category ${t}`);Array.isArray(i)?e.push(...i):e.push(i)}return Object.freeze(e)}var Ym={algebra:[],arithmetic:[...vc,...Pc],calculus:Ac,collections:[uf,Al],combinatorics:Rc,"control-structures":Mc,core:Uc,dimensions:[],domains:[],"linear-algebra":Hc,logic:Wc,"number-theory":nf,numeric:[],other:[],relop:sf,polynomials:rf,physics:{Mu0:{description:"Vaccum permeability",isConstant:!0,wikidata:"Q1515261",type:"real",value:125663706212e-17}},statistics:lf,trigonometry:df,units:[]};function Qm(n){if(n=n.normalize(),Te(n))return n;throw new Error(`Invalid definition name "${n}": ${nn(n)}`)}function Ta(n,e){let t=n.context.lexicalScope.bindings;n.strict;for(let[i,r]of Object.entries(e))try{if(i=Qm(i),dr(r))try{if(t.has(i))throw new Error(`Duplicate operator definition: "${i}"
|
|
98
|
+
${JSON.stringify(t.get(i),void 0,4)}
|
|
99
|
+
`);t.set(i,{operator:new kt(n,i,r)})}catch(o){console.error([`
|
|
100
|
+
Error in operator definition`,JSON.stringify(r,void 0,4),"",o.message].join(`
|
|
99
101
|
| `)+`
|
|
100
|
-
`)}}function ls(e){return typeof e=="number"?e===0?1:Number.isInteger(e)?Math.floor(Math.log2(Math.abs(e))/Math.log2(10))+(e>0?1:2):2:e.isZero?1:e.im!==0?ls(e.re)+ls(e.im)+1:ls(e.re)}function ia(e){if(e.symbol)return 1;if(e.isNumberLiteral)return ls(e.numericValue);let n=e.operator,i=2;if(["Add"].includes(n))i=3;else if(["Subtract","Negate"].includes(n))i=4;else if(["Square","Sqrt"].includes(n))i=5;else{if(["Power","Root"].includes(n))return ia(e.ops[1]);["Multiply"].includes(n)?i=7:["Divide"].includes(n)?i=8:["Ln","Exp","Log","Lb"].includes(n)?i=9:["Cos","Sin","Tan"].includes(n)?i=10:i=11}return i+(e.ops?.reduce((t,r)=>t+ia(r),0)??0)}var ta=ia;var dt=class e{constructor(n){n?n instanceof e?this._items=new Map(n._items):this._items=new Map(n):this._items=new Map}has(n){for(let i of this._items.keys())if(i.isSame(n))return!0;return!1}get(n){for(let[i,t]of this._items)if(i.isSame(n))return t}clear(){this._items.clear()}set(n,i){for(let t of this._items.keys())if(t.isSame(n)){this._items.set(t,i);return}this._items.set(n,i)}delete(n){this._items.delete(n)}[Symbol.iterator](){return this._items.entries()}entries(){return this._items.entries()}};var Ae=class extends X{constructor(n,i,t){super(n,t?.metadata),i instanceof z||typeof i=="number"?this._value=i:this._value=n._numericValue(i)}get hash(){return this._hash??(this._hash=pn(this._value.toString())),console.info("hash BoxedNumber ",this._hash),this._hash}get json(){let n=this._value;return typeof n=="number"?Number.isNaN(n)?"NaN":Number.isFinite(n)?n:n>0?"PositiveInfinity":"NegativeInfinity":n.toJSON()}get operator(){return"Number"}get isPure(){return!0}get isCanonical(){return!0}set isCanonical(n){}get complexity(){return 1}get numericValue(){return this._value}get isNumberLiteral(){return!0}get re(){return typeof this._value=="number"?this._value:this._value.re}get im(){return typeof this._value=="number"?0:this._value.im}get bignumRe(){if(typeof this._value!="number")return this._value.bignumRe}get bignumIm(){}neg(){let n=this._value;return n===0?this:typeof n=="number"?this.engine.number(-n):this.engine.number(n.neg())}inv(){return this.value===1||this.value===-1?this:typeof this._value=="number"?Number.isInteger(this._value)?this.engine.number(this.engine._numericValue({rational:[1,this._value]})):this.engine.number(1/this._value):this.engine.number(this._value.inv())}abs(){return this.isPositive?this:typeof this._value=="number"?this.engine.number(-this._value):this.engine.number(this._value.abs())}add(n){let i=this.engine;return this.is(0)?i.box(n):typeof n=="number"?n===0?this:typeof this._value=="number"?i.number(this._value+n):i.number(this._value.add(n)):n.numericValue!==null?typeof this._value=="number"?typeof n.numericValue=="number"?i.number(this._value+n.numericValue):i.number(n.numericValue.add(this._value)):i.number(this._value.add(n.numericValue)):H(this.canonical,n.canonical)}mul(n){if(this.is(1))return this.engine.box(n);if(this.is(-1))return this.engine.box(n).neg();let i=this.engine;return typeof n=="number"?n===1?this:n===0||this.is(0)?this.engine.Zero:n===-1?this.neg():i.number(typeof this._value=="number"?this._value*n:this._value.mul(n)):typeof this._value=="number"&&typeof n=="number"?i.number(this._value*n):n instanceof z?this.is(1)?i.number(n):this.is(-1)?i.number(n.neg()):i.number(n.mul(this._value)):n.numericValue!==null?i.number(i._numericValue(this._value).mul(n.numericValue)):ae(this,n)}div(n){return Hi(this,n)}pow(n){return me(this,n,{numericApproximation:!1})}root(n){if(!this.isCanonical)return this.canonical.root(n);if(typeof n=="number"){if(n===0)return this.engine.NaN;if(n===1)return this;if(n===-1)return this.inv();if(n===2)return this.sqrt();if(this.isNegative){if(n%2===1)return this.neg().root(n).neg();if(n%2===0)return this.neg().root(n)}}else{if(n=n.canonical,n.is(0))return this.engine.NaN;if(n.is(1))return this;if(n.is(-1))return this.inv();if(n.is(2))return this.sqrt();if(this.isNegative){if(n.isOdd)return this.neg().root(n).neg();if(n.isEven)return this.neg().root(n)}}let i=typeof n=="number"?n:n.re;if(Number.isInteger(i))if(typeof this._value=="number"){let t=this._value**(1/i);if(Number.isInteger(t))return this.engine.number(t)}else{let t=this._value.root(i);if(v(t.type,"integer"))return this.engine.number(t)}return this.engine._fn("Root",[this,this.engine.box(n)])}sqrt(){return typeof this._value=="number"?this._value===0||this._value===1?this:this._value===-1?this.engine.I:this._value>0&&Number.isInteger(this._value)&&this._value<O?this.engine.number(this.engine._numericValue({radical:this._value})):this.engine.number(this.engine._numericValue(this._value).sqrt()):this.is(0)||this.is(1)?this:this.engine.number(this._value.sqrt())}ln(n){let i=n?this.engine.box(n):void 0;if(!this.isCanonical)return this.canonical.ln(i);if(this.is(0))return this.engine.NegativeInfinity;if(i&&this.isSame(i))return this.engine.One;if((!i||i.symbol==="ExponentialE")&&this.symbol==="ExponentialE")return this.engine.One;let t=this.re;if(Number.isInteger(t)&&t>0){let r=this.engine,[s,o]=Bi(t,3);if(s!==1)return r.number(s).ln(i).mul(3).add(r.number(o).ln(i));if([s,o]=Bi(t,2),s!==1)return r.number(s).ln(i).mul(2).add(r.number(o).ln(i))}return i&&i.isInteger?typeof this._value=="number"?this.engine.number(Math.log(this._value)/Math.log(i.re)):this.engine.number(this._value.ln(i.re)):i===void 0?typeof this._value=="number"?this.engine.number(Math.log(this._value)):this.engine.number(this._value.ln()):this.engine._fn("Ln",[this])}get type(){return typeof this._value=="number"?Number.isNaN(this._value)?new C("number"):Number.isFinite(this._value)?new C(Number.isInteger(this._value)?"finite_integer":"finite_real"):new C("non_finite_number"):new C(this._value.type)}get sgn(){if(this._value===0)return"zero";let n;if(typeof this._value=="number"){if(Number.isNaN(this._value))return"unsigned";n=Math.sign(this._value)}else n=this._value.sgn();return n===void 0||Number.isNaN(n)?"unsigned":n===0?"zero":n>0?"positive":"negative"}get numerator(){return typeof this._value=="number"?this:this.engine.number(this._value.numerator)}get denominator(){return typeof this._value=="number"?this.engine.One:this.engine.number(this._value.denominator)}get numeratorDenominator(){if(typeof this._value=="number")return[this,this.engine.One];let n=this.engine;return[n.number(this._value.numerator),n.number(this._value.denominator)]}subs(n,i){return this.isStructural?this:this.structural.subs(n,i)}replace(n,i){return Mn(this.structural,n,i).at(-1)?.value??null}match(n,i){return st(this.structural,n,i)}get isPositive(){return typeof this._value=="number"?!Number.isNaN(this._value)&&this._value>0:ot(this.sgn)}get isNonNegative(){return typeof this._value=="number"?!Number.isNaN(this._value)&&this._value>=0:at(this.sgn)}get isNegative(){return typeof this._value=="number"?!Number.isNaN(this._value)&&this._value<0:ut(this.sgn)}get isNonPositive(){return typeof this._value=="number"?!Number.isNaN(this._value)&&this._value<=0:lt(this.sgn)}get isOdd(){if(this.is(1)||this.is(-1))return!0;if(this.is(0))return!1;if(!this.isFinite||!this.isInteger)return;if(typeof this._value=="number")return this._value%2!==0;let[n,i]=[this._value.numerator,this._value.denominator];return i.isOne?n.re%2!==0:n.re%2!==0&&i.re%2===0}get isEven(){let n=this.isOdd;return n!==void 0?!n:void 0}get isInfinity(){return typeof this._value=="number"?!Number.isFinite(this._value)&&!Number.isNaN(this._value):Number.isFinite(this._value.im)?this._value.isPositiveInfinity||this._value.isNegativeInfinity:!0}get isNaN(){return typeof this._value=="number"?Number.isNaN(this._value):this._value.isNaN}get isFinite(){return this.isInfinity===!1&&this.isNaN===!1}get isNumber(){return!0}get isInteger(){return typeof this._value=="number"?Number.isInteger(this._value):v(this._value.type,"integer")}get isRational(){return typeof this._value=="number"?Number.isInteger(this._value):v(this._value.type,"rational")}get isReal(){return typeof this._value=="number"?!0:v(this._value.type,"real")}is(n){return typeof n=="number"?typeof this._value=="number"?this._value===n:this._value.eq(n):!1}get canonical(){return this}get isStructural(){return typeof this._value=="number"||this.type.matches("rational")?!0:!(this._value instanceof Z)}get structural(){return this.isStructural?this:this.engine.box(this.json,{canonical:!1,structural:!0})}toNumericValue(){let n=this._value;return typeof n=="number"?[this.engine._numericValue(n),this.engine.One]:[n,this.engine.One]}simplify(n){return Jn(this.canonical.structural,n).at(-1).value??this}evaluate(n){return n?.numericApproximation?this.N():this}N(){let n=this._value;if(typeof n=="number")return this;let i=n.N();return n===i?this:this.engine.number(i)}};function fs(e,n){if(n==null)return NaN;if(n instanceof z)return n;if(typeof n=="number")return Number.isInteger(n)&&n>=-O&&n<=O||!Number.isFinite(n)?n:e._numericValue(n);if(n instanceof M){let i=n.toNumber();return n.isInteger()&&Math.abs(i)<=O?i:n.isNaN()?NaN:n.isFinite()?e._numericValue(n):i>0?1/0:-1/0}if(typeof n=="bigint")return n>=-O&&n<=O?Number(n):e._numericValue(n);if(n instanceof $)return n.im===0?fs(e,n.re):n.isNaN()?NaN:!n.isFinite()&&n.im===0?n.re>0?1/0:-1/0:e._numericValue({re:n.re,im:n.im});if(typeof n=="object"&&"num"in n){if(typeof n.num=="number")return fs(e,n.num);if(typeof n.num!="string")throw new Error("MathJSON `num` property should be a string of digits");return Xf(e,n.num)}if(typeof n=="string")return Xf(e,n);if(n[1]==0)return NaN;if(typeof n[1]=="number"&&!Number.isFinite(n[1]))return Number.isFinite(n[0])?0:NaN;if(typeof n[0]=="number"&&!Number.isFinite(n[0])){let i=n[0]>0?1:-1;return n[0]>0?i>0?1/0:-1/0:n[0]<0?i>0?-1/0:1/0:NaN}return e._numericValue(n)}function Xf(e,n){if(n=n.toLowerCase(),/[0-9][nd]$/.test(n)&&(n=n.slice(0,-1)),n=n.replace(/[\u0009-\u000d\u0020\u00a0]/g,""),n==="nan")return NaN;if(n==="infinity"||n==="+infinity")return Number.POSITIVE_INFINITY;if(n==="-infinity")return Number.NEGATIVE_INFINITY;if(n==="0")return 0;if(n==="1")return 1;if(n==="-1")return-1;if(/\([0-9]+\)/.test(n)){let[t,r,s,o]=n.match(/(.+)\(([0-9]+)\)(.+)?$/)??[];n=r+s.repeat(Math.ceil(e.precision/s.length))+(o??"")}let i=K(n);return i!==null?i>=-O&&i<=O?Number(i):e._numericValue(i):e._numericValue(e.bignum(n))}var Pn=class e extends X{constructor(i,t,r){super(i,r?.metadata);this._isStructural=!1;xe(t),`${t}${We(t)}`,this._id=t,this._def=r?.def??void 0,r?.structural&&(this._isStructural=!0),(r?.canonical??!0)!==!0?this._scope=null:this._def?this._scope=i.context:this.bind()}get json(){return this._id}get hash(){return this._hash===void 0&&(this._hash=pn(this._id)),this._hash}get isPure(){return!0}get isStructural(){return this._isStructural}get structural(){return this.isStructural?this:new e(this.engine,this._id,{structural:!0,def:this._def??void 0})}get scope(){return this._scope}get isConstant(){let i=this._def??this.engine.lookupSymbol(this._id,this.wikidata);return!(i instanceof ue)||i.constant}_lookupDef(){let i=this.engine;return i.lookupSymbol(this._id)??i.lookupFunction(this._id)}_getDef(){let i=this.symbolDefinition;if(!i)return;let t="value"in i?i.value:void 0;return t&&t!==this&&(i=t.baseDefinition??i),i}bind(){this._scope=this.engine.context;let i=this._lookupDef();if(i){this._def=i;return}this._def=this.engine.defineSymbol(this._id,{type:"unknown",inferred:!0}),this._id=this._def?.name??this._id}reset(){this._def?.reset()}get isCanonical(){return this._scope!==null}set isCanonical(i){this._scope=i?this.engine.context:null,this._def=void 0}is(i){return typeof i=="number"?this.symbolDefinition?.value?.is(i)??!1:!1}get canonical(){return this._scope?this:this.engine.box(this._id)}toNumericValue(){this.isCanonical;let i=this.engine;return this.symbol==="ImaginaryUnit"?[i._numericValue({re:0,im:1}),i.One]:this.symbol==="PositiveInfinity"||this.isInfinity&&this.isPositive?[i._numericValue(1/0),i.One]:this.symbol==="NegativeInfinity"||this.isInfinity&&this.isNegative?[i._numericValue(-1/0),i.One]:this.symbol==="NaN"?[i._numericValue(NaN),i.One]:[i._numericValue(1),this]}neg(){return pi(this)}inv(){return this.engine._fn("Divide",[this.engine.One,this])}abs(){return this.isNonNegative?this:this.isNonPositive?this.neg():this.engine._fn("Abs",[this])}add(i){return i===0?this:H(this.canonical,this.engine.box(i))}mul(i){if(i===1)return this;if(i===-1)return this.neg();if(i===0)return this.engine.Zero;if(i instanceof z){if(i.isOne)return this;if(i.isNegativeOne)return this.neg();if(i.isZero)return this.engine.Zero}return ae(this.canonical,this.engine.box(i))}div(i){return Hi(this,i)}pow(i){return me(this,i,{numericApproximation:!1})}root(i){if(!this.isCanonical)return this.canonical.root(i);typeof i!="number"&&(i=i.canonical);let t=typeof i=="number"?i:i.im===0?i.re:void 0,r=this.engine;return this.symbol==="ComplexInfinity"||t===0?r.NaN:t===1?this:t===2?this.sqrt():t===-1?this.inv():r._fn("Root",[this,r.box(i)])}sqrt(){let i=this.engine;return this.symbol==="ComplexInfinity"?i.NaN:this.is(0)?this:this.is(1)?this.engine.One:this.is(-1)?i.I:i._fn("Sqrt",[this])}ln(i){let t=i?this.engine.box(i):void 0;return this.isCanonical?this.is(0)?this.engine.NegativeInfinity:(!t||t.symbol==="ExponentialE")&&this.symbol==="ExponentialE"?this.engine.One:t?t.re===10?this.engine._fn("Log",[this]):this.engine._fn("Log",[this,t]):this.engine._fn("Ln",[this]):this.canonical.ln(t)}solve(i){let t=vt(i);return t.length!==1?null:t.includes(this.symbol)?[this.engine.Zero]:null}get complexity(){return 7}get operator(){return"Symbol"}get symbol(){return this._id}get baseDefinition(){return this._def===void 0&&this.bind(),this._def??void 0}get symbolDefinition(){return this._def===void 0&&this.bind(),this._def instanceof ue?this._def:void 0}get functionDefinition(){return this._def===void 0&&this.bind(),this._def instanceof Le?this._def:void 0}infer(i){let t=this._lookupDef();if(!t){let r=this.engine.swapScope(this._scope??this.engine.context);return this._def=this.engine.defineSymbol(this._id,{type:i,inferred:!0}),this.engine.swapScope(r),!0}return t instanceof ue&&(t.inferredType||t.type.isUnknown)?(t.type=ke(t.type.type,i),!0):!1}get value(){return this.symbolDefinition?.value?.value}set value(i){let t=this.engine;t.forget(this._id);let r;if(typeof i=="boolean"&&(i=i?t.True:t.False),typeof i=="string"&&(i=t.string(i)),typeof i=="object")if("re"in i&&"im"in i)i=t.complex(i.re??0,i.im);else if("num"in i&&"denom"in i)i=t.number([i.num,i.denom]);else if(Array.isArray(i))i=t._fn("List",i.map(o=>t.box(o)));else throw new Error(`Invalid value for symbol ${this._id}: ${i}`);if(i!==void 0&&(r=t.box(i).evaluate()),r?.type.matches("function")){this.engine.lookupSymbol(this._id),this._def=t.defineFunction(this._id,{signature:r.type.toString(),evaluate:r});return}let s=this.engine.lookupSymbol(this._id);s&&s instanceof ue?s.value=r:this._def=t.defineSymbol(this._id,{value:r,type:r?.type.toString()})}get type(){let i=this._def;return i?i instanceof ue?i.type:i instanceof Le?i.signature:C.unknown:C.unknown}set type(i){if(this._def){if(i instanceof C&&(i=i.type),this._id[0]==="_")throw new Error(`The type of the wildcard "${this._id}" cannot be changed`);i==="function"||Xn(i)?(this.engine.forget(this._id),this._def=this.engine.defineFunction(this._id,{signature:i.toString()})):this._def instanceof ue?this._def.type=typeof i=="string"?k(i):i:(this.engine.forget(this._id),this._def=this.engine.defineSymbol(this._id,{type:i.toString()}))}}get sgn(){let i=this._def;if(!(!i||!(i instanceof ue)))return i.sgn}has(i){return typeof i=="string"?this._id===i:i.includes(this._id)}match(i,t){return st(this,i,t)}get isFunction(){return!!this.functionDefinition}get isOdd(){return this.symbolDefinition?.odd}get isEven(){return this.symbolDefinition?.even}get isInfinity(){let i=this.sgn;return i==="negative-infinity"||i==="positive-infinity"}get isNaN(){return this.sgn==="nan"}get isPositive(){return ot(this.sgn)}get isNonPositive(){return lt(this.sgn)}get isNegative(){return ut(this.sgn)}get isNonNegative(){return at(this.sgn)}get isNumber(){let i=this.type;if(!i.isUnknown)return i.matches("number")}get isInteger(){if(this.symbolDefinition?.inferredType)return;let i=this.type;if(!i.isUnknown)return i.matches("integer")}get isRational(){if(this.symbolDefinition?.inferredType)return;let i=this.type;if(!i.isUnknown)return i.matches("rational")}get isReal(){if(this.symbolDefinition?.inferredType)return;let i=this.type;if(!i.isUnknown)return i.matches("real")}get re(){return this.symbolDefinition?.value?.re??NaN}get im(){return this.symbolDefinition?.value?.im??NaN}get bignumRe(){return this.symbolDefinition?.value?.bignumRe}get bignumIm(){return this.symbolDefinition?.value?.bignumIm}simplify(i){return Jn(this,i).at(-1)?.value??this}evaluate(i){let t=this.symbolDefinition;if(!t)return this;let r=t.holdUntil;if(i?.numericApproximation){if(r==="never"||r==="evaluate"||r==="N")return t.value?.N()??this}else if(r==="never"||r==="evaluate")return t.value?.evaluate(i)??this;return this}N(){let i=this.symbolDefinition;return i&&i.holdUntil==="never"?this:i?.value?.N()??this}replace(i,t){return Mn(this,i,t).at(-1)?.value??null}subs(i,t){let r=t?.canonical??this.isCanonical;return i[this._id]===void 0?r?this.canonical:this:this.engine.box(i[this._id],{canonical:r})}get isCollection(){return this._getDef()?.collection?.contains!==void 0}contains(i){return this._getDef()?.collection?.contains?.(this,i)??!1}get size(){return this._getDef()?.collection?.size?.(this)??0}each(i,t){let r=this._getDef()?.collection?.iterator?.(this,i,t);return r||{next(){return{done:!0,value:void 0}}}}at(i){return this._getDef()?.collection?.at?.(this,i)}get(i){if(typeof i=="string")return this.baseDefinition?.collection?.at?.(this,i);if(i.string)return this.symbolDefinition?.collection?.at?.(this,i.string)}indexOf(i){return this._getDef()?.collection?.indexOf?.(this,i)??-1}subsetOf(i,t){return this._getDef()?.collection?.subsetOf?.(this,i,t)??!1}};function Kf(e,n){let i=e.lookupSymbol(n);if(i?.holdUntil==="never"&&i.value)return i.value;if(i)return new Pn(e,n,{canonical:!0,def:i});let t=e.lookupFunction(n);return t?new Pn(e,n,{canonical:!0,def:t}):new Pn(e,n,{canonical:!0})}var er="\x1B[0m";var ec="\x1B[33m";var nc="\x1B[36;1m",ra="\x1B[101;97m";var bm={"\\mathord":"","\\mathop":"","\\mathbin":"","\\mathrel":"","\\mathopen":"","\\mathclose":"","\\mathpunct":"","\\mathinner":"","\\operatorname":"","\\mathrm":"_upright","\\mathit":"_italic","\\mathbf":"_bold","\\mathscr":"_script","\\mathcal":"_calligraphic","\\mathfrak":"_fraktur","\\mathsf":"_sansserif","\\mathtt":"_monospace","\\mathbb":"_doublestruck"},Em={"\\mathring":"_ring","\\hat":"_hat","\\tilde":"_tilde","\\vec":"_vec","\\overline":"_bar","\\underline":"_underbar","\\dot":"_dot","\\ddot":"_ddot","\\dddot":"_dddot","\\ddddot":"_ddddot","\\acute":"_acute","\\grave":"_grave","\\breve":"_breve","\\check":"_check"};function ic(e,n){if(e.atEnd)return null;let i=e.peek,t={"\\_":"_","\\#":"hash"}[i];if(!t&&!n.toplevel&&(t={"+":"plus","-":"minus","\\plusmn":"pm","\\pm":"pm","\\ast":"ast","\\dag":"dag","\\ddag":"ddag","\\bot":"bottom","\\top":"top","\\bullet":"bullet","\\cir":"circle","\\diamond":"diamond","\\times":"times","\\square":"square","\\star":"star"}[i]),t)return e.nextToken(),t;let r=sn.findIndex(s=>s[1]===i);return r>=0?(e.nextToken(),sn[r][0]):e.matchChar()??e.nextToken()}function cs(e){let n=sa(e),i=Em[e.peek]??null;if(i){if(e.nextToken(),!e.match("<{>"))return null;let s=cs(e);if(s===null||!e.match("<}>"))return null;n=`${s}${i}`}if(n===null){for(n="";!e.atEnd;){let s=e.peek;if(s==="<}>"||s==="_"||s==="^")break;let o=ic(e,{toplevel:!1});if(o===null)return null;n+=o}for(;!e.atEnd&&/\d/.test(e.peek);)n+=e.nextToken()}for(;!e.atEnd;)if(e.match("\\degree"))n+="_deg";else if(e.matchAll(["^","\\circ"]))n+="_deg";else if(e.matchAll(["^","\\prime"]))n+="_prime";else if(e.matchAll(["^","<{>","\\prime","<}>"]))n+="_prime";else if(e.matchAll(["^","<{>","\\doubleprime","<}>"]))n+="_dprime";else if(e.matchAll(["^","<{>","\\prime","\\prime","<}>"]))n+="_dprime";else break;let t=[],r=[];for(;!e.atEnd;)if(e.match("_")){let s=e.match("<{>"),o=cs(e);if(s&&!e.match("<}>")||o===null)return null;r.push(o)}else if(e.match("^")){let s=e.match("<{>"),o=cs(e);if(s&&!e.match("<}>")||o===null)return null;t.push(o)}else break;return t.length>0&&(n+="__"+t.join("")),r.length>0&&(n+="_"+r.join("")),n}function sa(e){let n=bm[e.peek]??null;if(n===null)return null;if(e.nextToken(),e.match("<{>")){let i="",t={0:"zero",1:"one",2:"two",3:"three",4:"four",5:"five",6:"six",7:"seven",8:"eight",9:"nine"}[e.peek]??"";return t&&(i=t,e.nextToken()),i+=cs(e),i===null||!e.match("<}>")?null:n==="_upright"&&i.length>1?i:i+n}return null}function oa(e){let n=e.index,i=sa(e);return i===null||xe(i)?null:e.error(["invalid-identifier",{str:We(i)}],n)}function nr(e){if(/^[a-zA-Z]$/.test(e.peek)||/^\p{XIDS}$/u.test(e.peek))return e.nextToken();let n=sa(e);if(!n){for(n="";!e.atEnd&&Gi.test(n+e.peek);)n+=e.nextToken();n||(n=null)}let i=e.index;return n??(n=ic(e,{toplevel:!0})),n&&(n=n.normalize(),xe(n))?n:(e.index=i,null)}var Nm={"(":["\\lparen","("],")":["\\rparen",")"],"[":["\\lbrack","\\[","["],"]":["\\rbrack","\\]","]"],"<":["<","\\langle"],">":[">","\\rangle"],"{":["\\{","\\lbrace"],"}":["\\}","\\rbrace"],":":[":","\\colon"],"|":["|","\\|","\\lvert","\\rvert"],"||":["||","\\Vert","\\lVert","\\rVert"]},ua={"\\left":"\\right","\\bigl":"\\bigr","\\Bigl":"\\Bigr","\\biggl":"\\biggr","\\Biggl":"\\Biggr","\\big":"\\big","\\Big":"\\Big","\\bigg":"\\bigg","\\Bigg":"\\Bigg"},la={"(":")","[":"]","|":"|","\\{":"\\}","\\[":"\\]","\\lbrace":"\\rbrace","\\lparen":"\\rparen","\\langle":"\\rangle","\\lfloor":"\\rfloor","\\lceil":"\\rceil","\\vert":"\\vert","\\lvert":"\\rvert","\\Vert":"\\Vert","\\lVert":"\\rVert","\\lbrack":"\\rbrack","\\ulcorner":"\\urcorner","\\llcorner":"\\lrcorner","\\lgroup":"\\rgroup","\\lmoustache":"\\rmoustache","\\llbracket":"\\rrbracket"},fa=class{constructor(n,i,t){this._index=0;this.symbolTable={parent:null,ids:{}};this._boundaries=[];this._lastPeek="";this._peekCounter=0;this._tokens=n,this.options=t,this._dictionary=i,this._positiveInfinityTokens=de(this.options.positiveInfinity),this._negativeInfinityTokens=de(this.options.negativeInfinity),this._notANumberTokens=de(this.options.notANumber),this._decimalSeparatorTokens=de(this.options.decimalSeparator),this._wholeDigitGroupSeparatorTokens=[],this._fractionalDigitGroupSeparatorTokens=[],this.options.digitGroupSeparator&&(typeof this.options.digitGroupSeparator=="string"?(this._wholeDigitGroupSeparatorTokens=de(this.options.digitGroupSeparator),this._fractionalDigitGroupSeparatorTokens=this._wholeDigitGroupSeparatorTokens):Array.isArray(this.options.digitGroupSeparator)&&(this._wholeDigitGroupSeparatorTokens=de(this.options.digitGroupSeparator[0]),this._fractionalDigitGroupSeparatorTokens=de(this.options.digitGroupSeparator[1]))),this._exponentProductTokens=de(this.options.exponentProduct),this._beginExponentMarkerTokens=de(this.options.beginExponentMarker),this._endExponentMarkerTokens=de(this.options.endExponentMarker),this._truncationMarkerTokens=de(this.options.truncationMarker),this._imaginaryUnitTokens=de(this.options.imaginaryUnit)}pushSymbolTable(){this.symbolTable={parent:this.symbolTable,ids:{}}}popSymbolTable(){this.symbolTable=this.symbolTable.parent??this.symbolTable}addSymbol(n,i){if(n in this.symbolTable.ids&&this.symbolTable.ids[n]!==i)throw new Error(`Symbol ${n} already declared as a different type`);this.symbolTable.ids[n]=i}get index(){return this._index}set index(n){this._index=n,this._lastPeek="",this._peekCounter=0}getIdentifierType(n){let i=this.symbolTable;for(;i;){if(n in i.ids)return i.ids[n];i=i.parent}return this.options.getIdentifierType?this.options.getIdentifierType(n):"unknown"}get peek(){let n=this._tokens[this.index];if(n===this._lastPeek?this._peekCounter+=1:this._peekCounter=0,this._peekCounter>=1024){let i=`Infinite loop detected while parsing "${this.latex(0)}" at "${this._lastPeek}" (index ${this.index})`;throw console.error(i),new Error(i)}return this._lastPeek=n,n}nextToken(){return this._tokens[this.index++]}get atEnd(){return this.index>=this._tokens.length}atTerminator(n){return this.atBoundary||((n?.condition&&n.condition(this))??!1)}get atBoundary(){if(this.atEnd)return!0;let n=this.index;for(let i of this._boundaries)if(this.matchAll(i.tokens))return this.index=n,!0;return!1}addBoundary(n){this._boundaries.push({index:this.index,tokens:n})}removeBoundary(){this._boundaries.pop()}matchBoundary(){let n=this._boundaries[this._boundaries.length-1],i=n&&this.matchAll(n.tokens);return i&&this._boundaries.pop(),i}boundaryError(n){let i=this._boundaries[this._boundaries.length-1];return this._boundaries.pop(),this.error(n,i.index)}latex(n,i){return tn(this._tokens.slice(n,i))}latexAhead(n){return this.latex(this.index,this.index+n)}lookAhead(){let n=Math.min(this._dictionary.lookahead,this._tokens.length-this.index);if(n<=0)return[];let i=[];for(;n>0;)i.push([n,this.latexAhead(n--)]);return i}peekDefinitions(n){if(this.atEnd)return[];let i=[],t=[...this.getDefs(n)];for(let r of t)r.latexTrigger===""&&i.push([r,0]);for(let[r,s]of this.lookAhead())for(let o of t)o.latexTrigger===s&&i.push([o,r]);for(let r of t)if(r.identifierTrigger){let s=vm(this,r.identifierTrigger);s>0&&i.push([r,s])}return i}skipSpaceTokens(){for(;this.match("<space>"););}skipSpace(){if(!this.atEnd&&this.peek==="<{>"){let i=this.index;for(this.nextToken();this.match("<space>"););if(this.nextToken()==="<}>")return this.skipSpace(),!0;this.index=i}if(!this.options.skipSpace)return!1;let n=!1;for(;this.match("<space>");)n=!0;return n&&this.skipSpace(),n}skipVisualSpace(){this.options.skipSpace&&(this.skipSpace(),["\\!","\\,","\\:","\\;","\\enskip","\\enspace","\\space","\\quad","\\qquad"].includes(this.peek)&&(this.nextToken(),this.skipVisualSpace()),this.skipSpace())}match(n){return this._tokens[this.index]!==n?!1:(this.index++,!0)}matchAll(n){if(n.length===0)return!1;let i,t=0;do i=this._tokens[this.index+t]===n[t++];while(i&&t<n.length);return i&&(this.index+=t),i}matchAny(n){return n.includes(this._tokens[this.index])?this._tokens[this.index++]:""}matchLatexNumber(n=!0){let i=!1,t=this.peek;for(;t==="<space>"||t==="+"||t==="-";)t==="-"&&(i=!i),this.nextToken(),t=this.peek;let r=10,s=["0","1","2","3","4","5","6","7","8","9"];if(this.match("'"))r=8,s=["0","1","2","3","4","5","6","7"],n=!0;else if(this.match('"')||this.match("x"))r=16,s=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"],n=!0;else if(this.match("`"))return t=this.nextToken(),t?t.startsWith("\\")&&t.length===2?(i?-1:1)*(t.codePointAt(1)??0):(i?-1:1)*(t.codePointAt(0)??0):null;let o="";for(;s.includes(this.peek);)o+=this.nextToken();if(!n&&this.match("."))for(o+=".";s.includes(this.peek);)o+=this.nextToken();let a=n?Number.parseInt(o,r):Number.parseFloat(o);return Number.isNaN(a)?null:i?-a:a}matchChar(){let n=this.index,i=0;for(;this.match("^");)i+=1;if(i<2&&(this.index=n),i>=2){let t="",r=0;for(;r!=i;){let s=this.matchAny(["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"]);if(!s)break;t+=s,r+=1}if(t.length===i)return String.fromCodePoint(Number.parseInt(t,16))}else if(this.match("\\char")){let t=Math.floor(this.matchLatexNumber()??Number.NaN);return(!Number.isFinite(t)||t<0||t>1114111)&&(t=10067),String.fromCodePoint(t)}else if(this.match("\\unicode"))if(this.skipSpaceTokens(),this.match("<{>")){let t=this.matchLatexNumber();if(this.match("<}>")&&t!==null&&t>=0&&t<=1114111)return String.fromCodePoint(t)}else{let t=this.matchLatexNumber();if(t!==null&&t>=0&&t<=1114111)return String.fromCodePoint(t)}return this.index=n,null}matchDelimiter(n,i){if(Array.isArray(n))return Array.isArray(i),this.matchAll(n)?(this.addBoundary(i),!0):!1;Array.isArray(i);let t=this.index,r=ua[this.peek];return r&&this.nextToken(),n==="||"&&this.matchAll(["|","|"])?(this.addBoundary(["|","|"]),!0):(Nm[n]??[n]).includes(this.peek)?(n=this.nextToken(),i=la[n]??i,this.addBoundary(r?[r,i]:[i]),!0):(this.index=t,!1)}parseGroup(){let n=this.index;if(this.skipSpaceTokens(),this.match("<{>")){this.addBoundary(["<}>"]);let i=this.parseExpression();if(this.skipSpace(),this.matchBoundary())return i??"Nothing";for(;!this.matchBoundary()&&!this.atEnd;)this.nextToken();if(h(i)==="Error")return i;let t=this.error("expected-closing-delimiter",n);return i!==null?["InvisibleOperator",i,t]:t}return this.index=n,null}parseOptionalGroup(){let n=this.index;if(this.skipSpaceTokens(),this.match("[")){this.addBoundary(["]"]);let i=this.parseExpression();return this.skipSpace(),this.matchBoundary()?i:this.boundaryError("expected-closing-delimiter")}return this.index=n,null}parseToken(){return this.skipSpace(),[...'!"#$%&(),/;:?@[]\\`|~'.split(""),"\\left","\\bigl"].includes(this.peek)?null:/^[0-9]$/.test(this.peek)?parseInt(this.nextToken(),10):this.parseGenericExpression()??this.parseSymbol()}parseTabular(){let n=[],i=[],t=null;for(;!this.atBoundary;)if(this.skipSpace(),this.match("&"))i.push(t??"Nothing"),t=null;else if(this.match("\\\\")||this.match("\\cr"))this.skipSpace(),this.parseOptionalGroup(),t!==null&&i.push(t),n.push(i),i=[],t=null;else{let r=[],s=this.peek;for(;s!=="&"&&s!=="\\\\"&&s!=="\\cr"&&!this.atBoundary;)t=this.parseExpression({minPrec:0,condition:o=>{let a=o.peek;return a==="&"||a==="\\\\"||a==="\\cr"}}),t!==null?r.push(t):(r.push(["Error","'unexpected-token'",{str:tn(s)}]),this.nextToken()),this.skipSpace(),s=this.peek;r.length>1?t=["Sequence",...r]:t=r[0]??"Nothing"}return t!==null&&i.push(t),i.length>0&&n.push(i),n}parseStringGroupContent(){let n=this.index,i="",t=0;for(;!this.atBoundary||t>0;){let r=this.nextToken();if(r==="<$>"||r==="<$$>")return this.index=n,"";r==="<{>"?(t+=1,i+="\\{"):r==="<}>"?(t-=1,i+="\\}"):r==="<space>"?i+=" ":(r[0],i+=r)}return i}parseStringGroup(n){n===void 0&&(n=!1);let i=this.index;for(;this.match("<space>"););if(this.match(n?"[":"<{>")){this.addBoundary([n?"]":"<}>"]);let t=this.parseStringGroupContent();if(this.matchBoundary())return t;this.removeBoundary()}return this.index=i,null}parseEnvironment(n){let i=this.index;if(!this.match("\\begin"))return null;let t=this.parseStringGroup()?.trim();if(!t)return this.error("expected-environment-name",i);this.addBoundary(["\\end","<{>",...t.split(""),"<}>"]);for(let r of this.getDefs("environment"))if(r.identifierTrigger===t){let s=r.parse(this,n);return this.skipSpace(),this.matchBoundary()?s!==null?this.decorate(s,i):(this.index=i,null):this.boundaryError("unbalanced-environment")}return this.parseTabular(),this.skipSpace(),this.matchBoundary()?this.error(["unknown-environment",{str:t}],i):this.boundaryError("unbalanced-environment")}parseOptionalSign(){let n=!!this.matchAny(["-","\u2212"]);for(;this.matchAny(["+","\uFE62"])||this.skipSpace();)this.matchAny(["-","\u2212"])&&(n=!n);return n?"-":"+"}parseDecimalDigits(n="whole"){let i=[],t=!1;for(;!t;){for(;/^[0-9]$/.test(this.peek);)i.push(this.nextToken()),this.skipVisualSpace();t=!0;let r=n==="whole"?this._wholeDigitGroupSeparatorTokens:this._fractionalDigitGroupSeparatorTokens;if(n!=="none"&&r.length>0){let s=this.index;this.skipVisualSpace(),this.matchAll(r)&&(this.skipVisualSpace(),/^[0-9]$/.test(this.peek)?t=!1:this.index=s)}}return i.join("")}parseSignedInteger(n){let i=this.index,t=this.parseOptionalSign(),r=this.parseDecimalDigits(n);return r?t==="-"?"-"+r:r:(this.index=i,"")}parseExponent(){let n=this.index;if(this.skipVisualSpace(),this.matchAny(["e","E"])){let i=this.parseSignedInteger("none");if(i)return i}if(this.index=n,this.match("\\times")&&(this.skipVisualSpace(),this.matchAll(["1","0"])&&(this.skipVisualSpace(),this.match("^")))){if(this.skipVisualSpace(),/^[0-9]$/.test(this.peek))return this.nextToken();if(this.match("<{>")){this.skipVisualSpace();let i=this.parseSignedInteger("whole");if(this.skipVisualSpace(),i&&this.match("<}>"))return i}}if(this.index=n,this.skipVisualSpace(),this.match("\\%"))return"-2";if(this.index=n,this.matchAll(this._exponentProductTokens)&&(this.skipVisualSpace(),this.matchAll(this._beginExponentMarkerTokens))){this.skipVisualSpace();let i=this.parseSignedInteger("none");if(this.skipVisualSpace(),i&&this.matchAll(this._endExponentMarkerTokens))return i}return this.index=n,""}parseRepeatingDecimal(){let n=this.index,i=this.options.repeatingDecimal,t="";if((i==="auto"||i==="parentheses")&&this.match("("))return t=this.parseDecimalDigits("fraction"),t&&this.match(")")?`(${t})`:(this.index=n,"");if(this.index=n,(i==="auto"||i==="parentheses")&&this.matchAll(["\\left","("]))return t=this.parseDecimalDigits("fraction"),t&&this.matchAll(["\\right",")"])?`(${t})`:(this.index=n,"");if(this.index=n,(i==="auto"||i==="vinculum")&&this.matchAll(["\\overline","<{>"]))return t=this.parseDecimalDigits("fraction"),t&&this.match("<}>")?`(${t})`:(this.index=n,"");if(this.index=n,(i==="auto"||i==="arc")&&(this.matchAll(["\\wideparen","<{>"])||this.matchAll(["\\overarc","<{>"])))return t=this.parseDecimalDigits("fraction"),t&&this.match("<}>")?`(${t})`:(this.index=n,"");if(this.index=n,i==="auto"||i==="dots"){let r=rc(this);if(r!==null){if(t=this.parseDecimalDigits("fraction"),!t)return`(${r})`;let s=rc(this);if(s!==null)return`(${r}${t}${s})`}}return this.index=n,""}parseNumber(){if(this.options.parseNumbers===!1||this.options.parseNumbers==="never")return null;let n=this.index;this.skipVisualSpace();let i=1;for(;this.peek==="-"||this.peek==="+";)this.match("-")?i=-i:this.match("+"),this.skipVisualSpace();let t="",r="",s=!1;if(this.match(".")||this.matchAll(this._decimalSeparatorTokens)){let f=this.peek;(/^[\d]$/.test(f)||Sm(this))&&(s=!0,t="0")}else t=this.parseDecimalDigits("whole");if(!t)return this.index=n,null;let o=this.index,a=!1;(s||this.match(".")||this.matchAll(this._decimalSeparatorTokens))&&(r=this.parseDecimalDigits("fraction"),a=!0);let u=!1;if(a){let f=this.parseRepeatingDecimal();f&&(r+=f,u=!0),this.match("\\ldots")||this.matchAll(this._truncationMarkerTokens)}if(a&&!r)return this.index=o,t.length<10?aa(i*parseInt(t,10)):{num:i<0?"-"+t:t};let l=this.parseExponent();if(!a&&!l&&t.length<10)return aa(i*parseInt(t,10));if(!u&&this.options.parseNumbers==="rational"){let f=parseInt(t,10);if(!r)return l?["Multiply",i*f,["Power",10,l]]:aa(i*f);let c=parseInt(r,10),p=r.length,m=f*10**p+c,y=10**p;return l?["Multiply",["Rational",i*m,y],["Power",10,l]]:["Rational",i*m,y]}return{num:(i<0?"-":"")+t+(a?"."+r:"")+(l?"e"+l:"")}}parsePrefixOperator(n){n||(n={minPrec:0}),n.minPrec||(n={...n,minPrec:0});let i=this.index;for(let[t,r]of this.peekDefinitions("prefix")){this.index=i+r;let s=t.parse(this,{...n,minPrec:t.precedence+1});if(s!==null)return s}return this.index=i,null}parseInfixOperator(n,i){i??(i={minPrec:0}),i.minPrec,i.minPrec===void 0&&(i={...i,minPrec:0});let t=this.index;for(let[r,s]of this.peekDefinitions("infix"))if(r.precedence>=i.minPrec){this.index=t+s;let o=r.parse(this,n,i);if(o!==null)return o}return this.index=t,null}parseArguments(n="enclosure",i){if(this.atTerminator(i))return null;let t=this.index,r=this.parseEnclosure();if(n==="enclosure")return r===null?null:wn(r)??[];if(n==="implicit"){if(h(r)==="Delimiter"){let o=d(r,1);return h(o)==="Sequence"?N(o):o===null?[]:[o]}if(r!==null)return[r];let s=this.parseExpression({...i,minPrec:390});return s===null?null:[s]}return this.index=t,null}parseEnclosure(){let n=this.getDefs("matchfix"),i=this.index;for(let t of n){if(this.index=i,!this.matchDelimiter(t.openTrigger,t.closeTrigger))continue;let r=this.index;this.skipSpace();let s=this.parseExpression();if(this.skipSpace(),!this.matchBoundary()){let a=this._boundaries[this._boundaries.length-1].tokens;if(this.removeBoundary(),this.index=r,this.skipSpace(),s=this.parseExpression(),this.skipSpace(),!this.matchAll(a)){if(this.index=i,!this.atEnd)continue;return null}}let o=t.parse(this,s??"Nothing");if(o!==null)return o}return this.index=i,null}parseGenericExpression(n){if(this.atTerminator(n))return null;let i=this.index,t=null,r=this.peekDefinitions("expression")??[];for(let[s,o]of r)if(this.index=i+o,typeof s.parse=="function"){if(t=s.parse(this,n),t!==null)return t}else return s.name;return this.index=i,null}parseFunction(n){if(this.atTerminator(n))return null;let i=this.index,t=null;for(let[s,o]of this.peekDefinitions("function"))if(this.index=i+o,typeof s.parse=="function"){if(t=s.parse(this,n),t!==null)return t}else{t=s.name;break}if(t===null&&(this.index=i,t=nr(this),!this.isFunctionOperator(t)))return this.index=i,null;do{let s=this.parsePostfixOperator(t,n);if(s===null)break;t=s}while(!0);let r=this.parseArguments("enclosure",n);return r===null?t:typeof t=="string"?[t,...r]:["Apply",t,...r]}parseSymbol(n){if(this.atTerminator(n))return null;let i=this.index;for(let[r,s]of this.peekDefinitions("symbol"))if(this.index=i+s,typeof r.parse=="function"){let o=r.parse(this,n);if(o!==null)return o}else return r.name;this.index=i;let t=nr(this);return t!==null&&this.getIdentifierType(t)==="symbol"?t:(this.index=i,null)}parseSupsub(n){if(this.atEnd)return n;let i=this.index;this.skipSpace();let t=[],r=[],s=i;for(;this.peek==="_"||this.peek==="^";){if(this.match("_"))if(s=this.index,this.match("_")||this.match("^"))r.push(this.error("syntax-error",s));else{let a=this.parseGroup()??this.parseToken()??this.parseStringGroup();if(a===null)return this.error("missing",i);r.push(a)}else if(this.match("^"))if(s=this.index,this.match("_")||this.match("^"))t.push(this.error("syntax-error",s));else{let a=this.parseGroup()??this.parseToken();if(a===null)return this.error("missing",i);t.push(a)}s=this.index,this.skipSpace()}if(t.length===0&&r.length===0)return this.index=i,n;let o=n;if(r.length>0){let a=[...this.getDefs("infix")].filter(u=>u.latexTrigger==="_");if(a){let u=["Subscript",o,r.length===1?r[0]:["List",...r]];for(let l of a)if(typeof l.parse=="function"?o=l.parse(this,u,{minPrec:0}):o=u,o!==null)break}}if(t.length>0){let a=[...this.getDefs("infix")].filter(u=>u.latexTrigger==="^");if(a){let u=t.filter(l=>!U(l));if(u.length!==0){let l=u.length===1?u[0]:["List",...u],f=["Superscript",o,l];for(let c of a)if(typeof c.parse=="function"?o=c.parse(this,f,{minPrec:0}):o=f,o!==null)break}}}return o===null&&(this.index=i),o}parsePostfixOperator(n,i){if(n===null||this.atEnd)return null;let t=this.index;for(let[r,s]of this.peekDefinitions("postfix")){this.index=t+s;let o=r.parse(this,n,i);if(o!==null)return o}return this.index=t,null}parseSyntaxError(){let n=this.index;if(this.peek==="^")return this.index+=1,["Superscript",this.error("missing",n),F(this.parseGroup())];let i=this.peekDefinitions("operator");if(i.length>0){if(i=this.peekDefinitions("postfix"),i.length>0){let[a,u]=i[0];if(this.index+=u,typeof a.parse=="function"){let l=a.parse(this,this.error("missing",n));if(l!==null)return l}return a.name?[a.name,this.error("missing",n)]:this.error("unexpected-operator",n)}if(i=this.peekDefinitions("prefix"),i.length>0){let[a,u]=i[0];if(this.index+=u,typeof a.parse=="function"){let l=a.parse(this,{minPrec:0});if(l!==null)return l}return a.name?[a.name,this.parseExpression()??this.error("missing",n)]:this.error("unexpected-operator",n)}if(i=this.peekDefinitions("infix"),i.length>0){let[a,u]=i[0];this.index+=u;let l=a.parse(this,this.error("missing",n),{minPrec:0});return l!==null?l:this.error("unexpected-operator",n)}}let t=this.index,r=oa(this);if(r!==null)return r;if(r=nr(this),r!==null)return this.error(["unexpected-identifier",{str:r}],t);let s=this.peek;if(!s)return this.error("syntax-error",n);if(Tm(this))return this.error("unexpected-delimiter",n);if(s[0]!=="\\")return this.error(["unexpected-token",{str:tn(s)}],n);let o=this.nextToken();if(this.skipSpaceTokens(),o==="\\end"){let a=this.parseStringGroup();return a===null?this.error("expected-environment-name",n):this.error(["unbalanced-environment",{str:a}],n)}for(;this.match("[");){let a=0;for(;!this.atEnd&&a===0&&this.peek!=="]";)this.peek==="["&&(a+=1),this.peek==="]"&&(a-=1),this.nextToken();this.match("]")}for(;this.match("<{>");){let a=0;for(;!this.atEnd&&a===0&&this.peek!=="<}>";)this.peek==="<{>"&&(a+=1),this.peek==="<}>"&&(a-=1),this.nextToken();this.match("<}>")}return this.error(["unexpected-command",{str:tn(o)}],n)}parsePrimary(n){if(this.atBoundary||this.atTerminator(n))return null;let i=null,t=this.index;if(this.match("<}>"))return this.error("unexpected-closing-delimiter",t);if(i??(i=this.parseGroup()),i??(i=this.parseNumber()),i??(i=this.parseEnclosure()),i??(i=this.parseEnvironment(n)),i===null&&this.matchAll(this._positiveInfinityTokens)&&(i="PositiveInfinity"),i===null&&this.matchAll(this._negativeInfinityTokens)&&(i="NegativeInfinity"),i===null&&this.matchAll(this._notANumberTokens)&&(i="NaN"),i===null&&this.matchAll(this._imaginaryUnitTokens)&&(i="ImaginaryUnit"),i??(i=this.parseGenericExpression(n)??this.parseFunction(n)??this.parseSymbol(n)??oa(this)),i!==null){i=this.decorate(i,t);let r=null,s=this.index;do{if(r=this.parsePostfixOperator(i,n),i=r??i,this.index===s&&r!==null){this.index;break}s=this.index}while(r!==null)}return i!==null&&(i=this.parseSupsub(i)),i===null&&(i=this.options.parseUnexpectedToken?.(null,this)??null,i===null&&this.peek.startsWith("\\")&&(this.nextToken(),i=this.error("unexpected-command",t))),this.decorate(i,t)}parseExpression(n){this.skipSpace();let i=this.index;if(this.atBoundary)return this.index=i,null;n??(n={minPrec:0}),n.minPrec,n.minPrec===void 0&&(n={...n,minPrec:0});let t=this.parsePrefixOperator({...n,minPrec:0});if(t===null&&(t=this.parsePrimary(n),U(t)&&(t=null)),t!==null){let r=!1;for(;!r&&!this.atTerminator(n);){this.skipSpace();let s=this.parseInfixOperator(t,n);if(s===null&&n.minPrec<=650&&this.peekDefinitions("operator").length===0){let o=this.parseExpression({...n,minPrec:651});o!==null?h(t)==="InvisibleOperator"?h(o)==="InvisibleOperator"?s=["InvisibleOperator",...N(t),...N(o)]:s=["InvisibleOperator",...N(t),o]:h(o)==="InvisibleOperator"?s=["InvisibleOperator",t,...N(o)]:s=["InvisibleOperator",t,o]:s===null&&(s=this.options.parseUnexpectedToken?.(t,this)??null)}s!==null?t=s:r=!0}}return this.decorate(t,i)}decorate(n,i){if(n===null)return null;if(!this.options.preserveLatex)return n;let t=this.latex(i,this.index);return Array.isArray(n)?n={latex:t,fn:n}:typeof n=="number"?n={latex:t,num:Number(n).toString()}:typeof n=="string"?n={latex:t,sym:n}:typeof n=="object"&&n!==null&&(n.latex=t),n}error(n,i){let t;typeof n=="string"?(n.startsWith("'"),t={str:n}):(n[0].startsWith("'"),t=["ErrorCode",{str:n[0]},...n.slice(1)]);let r=this.latex(i,this.index);return r?["Error",t,["LatexString",{str:r}]]:["Error",t]}isFunctionOperator(n){return n===null?!1:this.getIdentifierType(n)==="function"}*getDefs(n){if(n==="operator")for(let i=this._dictionary.defs.length-1;i>=0;i--){let t=this._dictionary.defs[i];/^prefix|infix|postfix/.test(t.kind)&&(yield t)}else for(let i=this._dictionary.defs.length-1;i>=0;i--){let t=this._dictionary.defs[i];t.kind===n&&(yield t)}}};function vm(e,n){let i=e.index,t=nr(e)?.trim();if(t===null)return 0;let r=t!==n?0:e.index-i;return e.index=i,r}function Tm(e){let n=e.peek;return Object.values(la).includes(n)||la[n]?(e.nextToken(),!0):ua[n]||Object.values(ua).includes(n)?(e.nextToken(),e.nextToken(),!0):!1}function rc(e){let n=e.index;if(e.matchAll(["\\overset","<{>"])&&(e.match(".")||e.match("\\cdots"))&&e.matchAll(["<}>","<{>"])){let i=e.nextToken();if(i&&/^\d$/.test(i)&&e.match("<}>"))return i}return e.index=n,null}function Sm(e){let n=e.peek;return n==="\\overline"||n==="\\overset"||n==="\\wideparent"||n==="\\overarc"||n==="("||n==="\\left"}function sc(e,n,i){let t=new fa(de(e),n,i),r=t.parseExpression();if(!t.atEnd){let s=t.parseSyntaxError();r=r!==null?["Sequence",r,s]:s}return r??(r="Nothing"),i.preserveLatex&&(Array.isArray(r)?r={latex:e,fn:r}:typeof r=="number"?r={latex:e,num:Number(r).toString()}:typeof r=="string"&&r.startsWith("'")&&r.endsWith("'")?r={latex:e,str:r.slice(1,-1)}:typeof r=="string"?r={latex:e,sym:r}:typeof r=="object"&&r!==null&&(r.latex=e)),r}function aa(e){return e===0?{num:"0"}:Number.isInteger(e)&&Math.abs(e)<O?e:{num:e.toString()}}var ac=["\\varphi -> \\frac{1+\\sqrt{5}}{2}",_m,Im,e=>{let n=Pe(e);return n?{value:n,because:"expand"}:void 0},e=>{if(e.operator==="Add")return{value:H(...e.ops.map(n=>n.canonical.simplify())),because:"addition"}},e=>{if(e.operator==="Negate")return{value:e.op1.neg(),because:"negation"}},e=>{if(e.operator==="Multiply")return{value:ae(...e.ops.map(n=>n.canonical.simplify())),because:"multiplication"}},e=>{if(e.operator==="Divide")return{value:e.op1.div(e.op2),because:"division"};if(e.operator==="Rational"&&e.nops===2)return{value:e.op1.div(e.op2),because:"rational"}},e=>{if(!e.op1.isNumberLiteral)return;if(e.operator==="Sqrt"){if(e.op1.isNegative)return{value:e.engine.box(["Multiply",["Sqrt",e.op1.neg()],"ImaginaryUnit"]).simplify(),because:"sqrt"};let t=e.op1.sqrt();return oc(t.numericValue)?{value:t,because:"sqrt"}:void 0}let n=e.op1,i=e.op2;if(i.isNumberLiteral&&n.isInteger&&i.isInteger&&n.re<O&&i.re<O){if(e.operator==="Power")return{value:e.op1.pow(e.op2),because:"power"};if(e.operator==="Root"){let t=e.op1.root(e.op2);if(oc(t.numericValue))return{value:e.op1.root(e.op2),because:"root"}}}},e=>{if(e.operator!=="Abs")return;let n=e.op1;if(n.isNonNegative)return{value:n,because:"|x| -> x"};if(n.isNegative)return{value:n.neg(),because:"|x| -> -x"}},e=>{if(e.operator!=="Sign")return;let n=e.sgn,i=e.engine;if(n!==void 0){if(n==="positive")return{value:i.One,because:"sign positive"};if(n==="negative")return{value:i.One,because:"sign negative"};if(n==="zero")return{value:i.Zero,because:"sign zero"};if(n==="unsigned")return{value:i.NaN,because:"sign unsinged"}}},e=>{if(e.operator==="Ln")return{value:e.op1.ln(e.ops[1]),because:"ln"};if(e.operator==="Log")return{value:e.op1.ln(e.ops[1]??10),because:"log"}},e=>{if(e.operator==="Max"){if(e.nops===0)return{value:e.engine.NegativeInfinity,because:"max"};if(e.nops===1)return{value:e.op1,because:"max"}}else if(e.operator==="Min"){if(e.nops===0)return{value:e.engine.PositiveInfinity,because:"min"};if(e.nops===1)return{value:e.op1,because:"min"}}else if(e.operator==="Supremum"){if(e.nops===0)return{value:e.engine.NegativeInfinity,because:"sup"};if(e.nops===1)return{value:e.op1,because:"sup"}}else if(e.operator==="Infimum"){if(e.nops===0)return{value:e.engine.PositiveInfinity,because:"inf"};if(e.nops===1)return{value:e.op1,because:"inf"}}},e=>{if(e.operator!=="Derivative")return;let n=e.engine,[i,t]=e.ops;if(e.nops===2)return{value:n.function("Derivative",[i.simplify(),t]),because:"derivative"};if(e.nops===1)return{value:n.function("Derivative",[i.simplify()]),because:"derivative"}},e=>e.operator!=="Hypot"?void 0:{value:e.engine.box(["Sqrt",["Add",["Square",e.op1],["Square",e.op2]]]).simplify(),because:"hypot(x,y) -> sqrt(x^2+y^2)"},e=>{if(e.operator!=="Congruent"||e.nops<3)return;let n=e.engine;return{value:n._fn("Equal",[n.function("Mod",[e.ops[0],e.ops[2]]).simplify(),n.function("Mod",[e.ops[1],e.ops[2]]).simplify()]).simplify(),because:"congruent"}},e=>{e.operator},e=>{if(!Ko(e))return;let n=Kt(e.operator,e.op1);if(n)return{value:n,because:"constructible value"}},e=>{if(e.operator!=="InverseFunction")return;let n=Xt(e.engine,e.ops);if(n)return{value:n,because:"inverse function"}},e=>{if(e.operator!=="Arctan2")return;let[n,i]=e.ops,t=e.engine;return n.isFinite===!1&&i.isFinite===!1?{value:t.NaN,because:"arctan2"}:n.is(0)&&i.is(0)?{value:t.Zero,because:"arctan2"}:i.isFinite===!1?{value:i.isPositive?t.Zero:t.Pi,because:"arctan2"}:n.isFinite===!1?{value:n.isPositive?t.Pi.div(2):t.Pi.div(-2),because:"arctan2"}:n.is(0)?{value:i.isPositive?t.Zero:t.Pi,because:"arctan2"}:{value:t.function("Arctan",[n.div(i)]).simplify(),because:"arctan2"}},"\\arcsinh(x) -> \\ln(x+\\sqrt{x^2+1})","\\arccosh(x) -> \\ln(x+\\sqrt{x^2-1})","\\arctanh(x) -> \\frac{1}{2}\\ln(\\frac{1+x}{1-x})","\\arccoth(x) -> \\frac{1}{2}\\ln(\\frac{x+1}{x-1})","\\arcsech(x) -> \\ln(\\frac{1+\\sqrt{1-x^2}}{x})","\\arccsch(x) -> \\ln(\\frac{1}{x} + \\sqrt{\\frac{1}{x^2}+1})",Vf];function _m(e){if(!zn(e)&&!As(e))return;let n=e,i=e.engine,t=e.op1.simplify(),r=e.op2.simplify();if(e=i.function(e.operator,[t,r]),e=Yn(e)??e,we(e.operator),e.nops===2&&!e.op2.is(0)){let s=Yn(i.function(e.operator,[e.op1.sub(e.op2),i.Zero]));i.costFunction(s)<i.costFunction(e)&&(e=s)}if(!e.isSame(n))return{value:e,because:"simplify-relational-operator"}}function Im(e){return e.operator!=="List"||!e.ops.every(i=>As(i)||zn(i))?void 0:{value:e.engine.function("List",e.ops.map(i=>i.simplify())),because:"simplify-system-of-equations"}}function oc(e){return e===null?!1:typeof e=="number"?Number.isInteger(e):e.isExact}var ir=class e{constructor(n){this.decimalSeparator=".";this._cache={};this._commonSymbols={True:null,False:null,All:null,Nothing:null,None:null,Undefined:null,Pi:null,ImaginaryUnit:null,ExponentialE:null};this._commonNumbers={"-5":null,"-4":null,"-3":null,"-2":null,2:null,3:null,4:null,5:null,6:null,7:null,8:null,9:null,10:null,11:null,12:null,36:null};this.generation=0;this._timeLimit=2e3;this._deadline=void 0;this._iterationLimit=1024;this._recursionLimit=1024;if(n!==void 0&&typeof n!="object")throw Error("Unexpected argument");this.strict=!0,this._stats={highwaterMark:0,symbols:new Set,expressions:new Set};let i=n?.precision??ws;i==="machine"&&(i=Math.floor(cn)),this._bignum=M.clone({precision:i}),this._precision=i,this.tolerance=n?.tolerance??"auto",this._angularUnit="rad",this.Zero=new Ae(this,0),this.One=new Ae(this,1),this.Half=new Ae(this,{rational:[1,2]}),this.NegativeOne=new Ae(this,-1),this.Two=new Ae(this,2),this.NaN=new Ae(this,Number.NaN),this.PositiveInfinity=new Ae(this,Number.POSITIVE_INFINITY),this.NegativeInfinity=new Ae(this,Number.NEGATIVE_INFINITY),this.I=new Ae(this,{im:1}),this.ComplexInfinity=new Ae(this,{re:1/0,im:1/0}),this.reset(),this.context={assumptions:new dt};for(let r of e.getStandardLibrary("domains"))na(this,r);let t=n?.ids??e.getStandardLibrary();for(let r of t)na(this,r);for(let r of Object.keys(this._commonSymbols)){let s=new Pn(this,r,{canonical:!0});s.bind(),this._commonSymbols[r]=s}this.True=this._commonSymbols.True,this.False=this._commonSymbols.False,this.Pi=this._commonSymbols.Pi,this.E=this._commonSymbols.ExponentialE,this.Nothing=this._commonSymbols.Nothing,this.pushScope(),pf(this)}static getStandardLibrary(n="all"){return ea(n)}static getLatexDictionary(n="all"){return il(n)}toString(){return"[ComputeEngine]"}get latexDictionary(){return this._latexDictionaryInput??e.getLatexDictionary()}set latexDictionary(n){this._latexDictionaryInput=n,this._indexedLatexDictionary=to(n,i=>{throw Error(typeof i.message=="string"?i.message:i.message.join(","))})}get indexedLatexDictionary(){return this._indexedLatexDictionary??(this._indexedLatexDictionary=to(this.latexDictionary,n=>console.error(n))),this._indexedLatexDictionary}reset(){this._bignum,this.generation+=1,this._BIGNUM_NEGATIVE_ONE=this.bignum(-1),this._BIGNUM_NAN=this.bignum(NaN),this._BIGNUM_ZERO=this.bignum(0),this._BIGNUM_ONE=this.bignum(1),this._BIGNUM_TWO=this.bignum(2),this._BIGNUM_HALF=this._BIGNUM_ONE.div(this._BIGNUM_TWO),this._BIGNUM_PI=this._BIGNUM_NEGATIVE_ONE.acos();let n=this._stats.symbols.values(),i=this._stats.expressions.values();this._stats.symbols=new Set,this._stats.expressions=new Set;for(let r of n)r.reset();for(let r of i)r.reset();for(let r of Object.values(this._commonSymbols))r?.reset();let t=this.context;for(;t;){if(t.ids)for(let[r,s]of t.ids)s.reset();t=t.parentScope??null}for(let r of Object.keys(this._cache))this._cache[r].value&&(this._cache[r].purge?this._cache[r].value=this._cache[r].purge(this._cache[r].value):delete this._cache[r])}_register(n){this._stats.highwaterMark+=1}_unregister(n){}get stats(){let n=this._stats.expressions;return this._stats.expressions=null,this._stats.expressions=n,{...this._stats}}get precision(){return this._precision}set precision(n){n==="machine"&&(n=cn),n==="auto"&&(n=ws);let i=this._precision;if(n!==i){if(typeof n!="number"||n<=0)throw Error('Expected "machine" or a positive number');this._precision=Math.max(n,cn),this._bignum=this._bignum.config({precision:this._precision}),this.tolerance="auto",this.reset()}}get angularUnit(){return this._angularUnit}set angularUnit(n){if(n!==this._angularUnit){if(typeof n!="string")throw Error("Expected a string");this._angularUnit=n,this.reset()}}get timeLimit(){return this._timeLimit}set timeLimit(n){n<=0&&(n=Number.POSITIVE_INFINITY),this._timeLimit=n}get _timeRemaining(){return this.deadline===void 0?Number.POSITIVE_INFINITY:this.deadline-Date.now()}get iterationLimit(){return this._iterationLimit}set iterationLimit(n){n<=0&&(n=Number.POSITIVE_INFINITY),this._iterationLimit=n}get recursionLimit(){return this._recursionLimit}set recursionLimit(n){n<=0&&(n=Number.POSITIVE_INFINITY),this._recursionLimit=n}get tolerance(){return this._tolerance}set tolerance(n){n==="auto"&&(n=Ds),(!Number.isFinite(n)||n<0)&&(n=Math.pow(10,-this._precision+2)),this._tolerance=n,this._bignumTolerance=this.bignum(n),this._negBignumTolerance=this.bignum(-n)}chop(n){return typeof n=="number"?Math.abs(n)<=this._tolerance?0:n:n instanceof M?n.isPositive()&&n.lte(this._bignumTolerance)||n.isNegative()&&n.gte(this._negBignumTolerance)||n.isZero()?0:n:n instanceof $&&Math.abs(n.re)<=this._tolerance&&Math.abs(n.im)<=this._tolerance?0:n}bignum(n){if(typeof n=="bigint")return new this._bignum(n.toString());try{return new this._bignum(n)}catch(i){console.error(i.message)}return this._BIGNUM_NAN}complex(n,i){return n instanceof M&&(n=n.toNumber()),i instanceof M&&(i=i.toNumber()),new $(n,i)}_numericValue(n){if(n instanceof z)return n.asExact??n;let i=r=>this.bignum(r),t=this._precision>cn?r=>new di(r,i):r=>new mi(r,i);if(typeof n=="number")return Number.isInteger(n)?new Z(n,t,i):t(n);if(typeof n=="bigint")return new Z(n,t,i);if(Bn(n))return new Z({rational:n},t,i);if(n instanceof M)return n.isInteger()&&n.e<=Wa?new Z(K(n.toString()),t,i):t(n);if(n instanceof $)return n.im===0?this._numericValue(n.re):t({re:n.re,im:n.im});if("im"in n||"re"in n)return n.im!==void 0&&n.im!==0?t(n):n.re instanceof M&&n.re.isInteger()?new Z({rational:[K(n.re.toString()),BigInt(1)]},t,i):typeof n.re=="number"&&Number.isInteger(n.re)?new Z({rational:[n.re,1]},t,i):t(n);if("radical"in n||"rational"in n){if(n.radical!==void 0&&(!Number.isInteger(n.radical)||n.radical>=O))throw Error("Unexpected value for radical part:"+n.radical);return n.rational&&te(n.rational)&&(!Number.isInteger(n.rational[0])||!Number.isInteger(n.rational[1]))?t(n):new Z(n,t,i)}throw Error("Unexpected value")}get costFunction(){return this._cost??ta}set costFunction(n){typeof n!="function"&&(this._cost=ta),this._cost=n}lookupSymbol(n,i,t){if(!this.strict){for(t??(t=this.context??void 0);t;){let s=t.ids?.get(n);if(s&&s instanceof ue)return s;t=t.parentScope}return}if(typeof n!="string")throw Error("Expected a string");if(n.length===0||!this.context)return;let r=t??this.context;if(i)for(t=r;t;){if(t.ids){for(let[s,o]of t.ids)if(o instanceof ue&&o.wikidata===i)return o}t=t.parentScope}for(t=r;t;){let s=t.ids?.get(n);if(s instanceof ue)return s;t=t.parentScope}}lookupFunction(n,i){if(typeof n=="string"&&this.context)for(i??(i=this.context);i;){let t=i.ids?.get(n);if(t instanceof Le)return t;i=i.parentScope}}defineSymbol(n,i){if(!this.context)throw Error("Symbol cannot be defined: no scope available");if(n.length===0||!xe(n))throw Error(`Invalid identifier "${n}": ${We(n)}}`);return this._defineSymbol(n,i)}_defineSymbol(n,i){var r;(r=this.context).ids??(r.ids=new Map);let t=new ue(this,n,i);return t.name&&this.context.ids.set(t.name,t),this.generation+=1,t}defineFunction(n,i){if(!this.context)throw Error("Function cannot be defined: no scope available");if(n.length===0||!xe(n))throw Error(`Invalid identifier "${n}": ${We(n)}}`);return this._defineFunction(n,i)}_defineFunction(n,i){var r;(r=this.context).ids??(r.ids=new Map);let t=us(this,n,i);return t.name&&this.context.ids.set(t.name,t),this.generation+=1,t}pushScope(n){if(this.context===null)throw Error("No parent scope available");return this.context={...n??{},parentScope:this.context,assumptions:new dt(this.context.assumptions)},this}popScope(){if(!this.context)throw Error("No scope available");return this.context=this.context.parentScope??null,this.context,this}swapScope(n){let i=this.context;return n&&(this.context=n),i}_printScope(n,i,t=0){if(n??(n={details:!1,maxDepth:1}),i??(i=this.context),!i||n.maxDepth&&t>n.maxDepth)return null;let r=`${ec}[undefined]${er}`;if(t===0?console.group("current scope - level 0"):console.groupCollapsed(i.parentScope?`scope - level ${t}`:`root scope - level ${t}`),i.ids){let s=0;for(let[o,a]of i.ids){let u=`${nc}${o}${er}`;try{if(a instanceof ue){let l=a.value?.isValid?a.value.toString():a.value?`${ra}${a.value.toString()}${er}`:r;console.info(`${u}: ${a.type?.toString()??r} = ${l}`)}else a instanceof Le&&(typeof a.evaluate=="function"?console.info(`${u}(): ${n.details?a.evaluate.toString():"[native-code]"}`):a.evaluate===void 0?console.info(`${u}(): ${r}`):console.info(`${u}(): ${a.toString()}`));s===11&&console.groupCollapsed(`... and ${i.ids.size-s} more`),s+=1}catch(l){console.info(`${u}: ${ra}${l.message}${er}`)}}s>=11&&console.groupEnd()}if(i.assumptions){let s=[...i.assumptions.entries()].map(([o,a])=>`${o}: ${a}`);if(s.length>0){console.groupCollapsed(`${s.length} assumptions)`);for(let o of s)console.info(o);console.groupEnd()}}return i.parentScope&&this._printScope(n,i.parentScope,t+1),console.groupEnd(),this.context}resetContext(){if(this.context)for(let[n,i]of this.context.ids??[])i instanceof ue?i.constant||(i.value=void 0):i instanceof Le&&(i.evaluate=void 0,i.canonical=void 0)}declare(n,i){if(typeof n!="string"||i===void 0){for(let[o,a]of Object.entries(n))this.declare(o,a);return this}let[t,r]=xo(n);if(r!==void 0)throw Error(`Unexpected arguments "${n}". It should be a plain identifier. Use 'ce.assign()' instead to assign a value, or a use a function definition with 'ce.declare()'.`);if(t==="Nothing")return this;if(!i)throw Error(`Expected a definition or type for "${t}"`);if(this.context?.ids?.get(t)){let o=this.context.ids.get(t);this.generation+=1;let a=!1,u=!1;try{a=St(i),u=Tt(i)}catch(l){console.error([`
|
|
101
|
-
|
|
102
|
+
`)}else if(pr(r))try{if(t.has(i))throw new Error(`The symbol "${i}" is already defined`);t.set(i,{value:new _n(n,i,r)})}catch(o){console.error([`
|
|
103
|
+
Error in value definition of "${i}"`,"",JSON.stringify(r,void 0,4),"",o.message].join(`
|
|
104
|
+
| `))}else{let o=new _n(n,i,{value:n.box(r)});t.set(i,{value:o})}}catch(o){console.error([`
|
|
105
|
+
Error in definition of "${i}"`,"",JSON.stringify(r,void 0,4),"",o.message].join(`
|
|
102
106
|
| `)+`
|
|
103
|
-
`)}if(o instanceof ue&&o.inferredType){if(a)throw new Error(`Cannot redeclare the symbol "${t}" as a function`);return u?o.update(i):(o.type=k(i),o.inferredType=!1),this}if(o instanceof Le&&o.inferredSignature){if(a)o.update(i);else{if(u)throw new Error(`Cannot redeclare the function "${t}" as a symbol`);o.update({signature:k(i)})}return this}throw o instanceof Le?Error([`The symbol "${t}" has already been declared in the current scope as a function with signature ${o.signature}.`,`You may use 'ce.assign("${t}", ...)' to assign a new value to this function.`].join(`
|
|
104
|
-
| `)):Error(
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
| `));o==="function"?this.defineFunction(t,{signature:"...unknown -> unknown"}):Xn(o)?this.defineFunction(t,{signature:o}):this.defineSymbol(t,{type:o})}return this}assign(n,i){if(typeof n=="object"){for(let[u,l]of Object.entries(n))this.assign(u,l);return this}let[t,r]=xo(n);if(t==="Nothing")return this;let s=i;typeof s=="boolean"&&(s=s?this.True:this.False);let o=this.lookupSymbol(t);if(o){if(o.constant)throw Error(`Cannot change the value of the constant "${t}"`);if(!o.type.isUnknown&&!o.inferredType&&ca(s))throw Error(`Cannot assign a function to symbol "${t}"`);let u=o.scope;if(u?.ids?.delete(o.name),!r&&!ca(s))return s==null?o.value=void 0:o.value=this.box(s),u?.ids?.set(o.name,o),this.generation+=1,this}let a=this.lookupFunction(t);if(a){let u=a.scope;if(u?.ids?.delete(a.name),s==null)return this;if(typeof s=="function"){let p=this.swapScope(u);return this.defineFunction(t,{evaluate:s}),this.swapScope(p),this}if(r&&ca(s))throw Error(`Unexpected arguments for "${t}"`);let l=r?this.box(["Function",s,...r]):this.box(s);if(!l.isValid)throw Error(`Invalid function ${l.toString()}`);let f=this.swapScope(u),c=ze(l);return this.defineFunction(t,{evaluate:p=>c(p)}),this.swapScope(f),this.generation+=1,this}if(s==null)return this.declare(t,{inferred:!0,type:"unknown"}),this;if(typeof s=="function")return this.defineFunction(t,{evaluate:s}),this;if(s instanceof X&&(s.type.type==="function"||Xn(s.type.type)))return this.defineFunction(t,{evaluate:s,signature:s.type.type}),this;if(Array.isArray(s)||s instanceof X||r){let u=this.box(s,{canonical:!1});if(u.operator==="Hold")return this.defineSymbol(t,{value:u,type:"unknown"}),this;if(u.operator==="Function")return u=this.box(["Function",...u.ops,...(r??[]).map(f=>this.symbol(f))]),this.defineFunction(t,{evaluate:u,signature:u.type.type}),this;let l=[...u.unknowns].sort();if(l.length===0){let f=u.evaluate();return this.defineSymbol(t,{value:f}),this}if(l.some(f=>/\_[\d]+/.test(f)))return u=this.box(["Function",u]),this.defineFunction(t,{evaluate:u,signature:u.type.type}),this;if(r&&r.length>0)return this.pushScope(),u=this.box(["Function",u,...r]),this.popScope(),this.defineFunction(t,{evaluate:u,signature:u.type.type}),this;this.pushScope(),s=u.evaluate(),this.popScope()}return this.defineSymbol(t,{value:s}),this}_assign(n,i){let t=this.lookupSymbol(n);if(t){t.value=i.evaluate(),this.generation+=1;return}let r=this.lookupFunction(n);if(r){r.canonical=void 0,r.evaluate=i,this.generation+=1;return}`${n}`}shouldContinueExecution(){return this.deadline===void 0||this.deadline>=Date.now()}checkContinueExecution(){if(!this.shouldContinueExecution())throw new Error("timeout")}cache(n,i,t){if(this._cache[n]===void 0)try{this._cache[n]={build:i,purge:t,value:i()}}catch(r){console.error(`Fatal error building cache "${n}":
|
|
108
|
-
${r.toString()}`)}return this._cache[n]?.value}box(n,i){return on(this,n,i)}function(n,i,t){return os(this,n,i,t)}error(n,i){let t;typeof n=="string"?t=this.string(n):t=this._fn("ErrorCode",n.map(o=>this.string(o)));let r;i&&Nt(i)?r=this._fn("LatexString",[this.string(Vn(i))]):typeof i=="string"&&i.length>0&&(r=this.string(i));let s=[this.box(t)];return r&&s.push(r),new Ge(this,"Error",s,{canonical:!1})}typeError(n,i,t){return i?this.error(["incompatible-type",ne(n),i.toString()],t):this.error(["incompatible-type",ne(n)],t)}hold(n){return this._fn("Hold",[this.box(n,{canonical:!1})])}tuple(...n){return new Ge(this,"Tuple",n.map(i=>typeof i=="number"?this.number(i):i.canonical),{canonical:!0})}type(n){return n instanceof C?n:new C(n)}string(n,i){return new Nn(this,n,i)}symbol(n,i){if(i=i?{...i}:{},"canonical"in i||(i.canonical=!0),n=n.normalize(),n==="NaN")return this.NaN;if(n==="Infinity"||n==="+Infinity"||n==="PositiveInfinity")return this.PositiveInfinity;if(n==="-Infinity"||n==="NegativeInfinity")return this.NegativeInfinity;if(n==="Half")return this.Half;if(this.strict&&!xe(n)){let r=i?.metadata?.latex;return this.error(["invalid-identifier",We(n)],r?`$$${r}$$`:n)}if(i?.metadata?.latex!==void 0&&i.canonical!==!0)return new Pn(this,n,i);let t=this._commonSymbols[n];return t&&(!i?.metadata?.wikidata||!t.wikidata||t.wikidata===i.metadata.wikidata)?t:i.canonical===!0?Kf(this,n):new Pn(this,n,i)}number(n,i){var s;let t=i?.metadata,r=!1;if((!i||i.canonical===void 0||i.canonical==="Number"||i.canonical===!0||Array.isArray(i.canonical)&&i.canonical.includes("Number"))&&(r=!0),!r&&Bn(n))return this._fn("Rational",[this.number(n[0]),this.number(n[1])],{...t,canonical:!1});if(n=fs(this,n),t===void 0){if(typeof n=="number"){let o=n;if(o===1)return this.One;if(o===0)return this.Zero;if(o===-1)return this.NegativeOne;if(o===2)return this.Two;if(Number.isInteger(o)&&this._commonNumbers[o]!==void 0)return(s=this._commonNumbers)[o]??(s[o]=new Ae(this,n)),this._commonNumbers[o];if(Number.isNaN(o))return this.NaN;if(!Number.isFinite(o))return o<0?this.NegativeInfinity:this.PositiveInfinity}else if(n instanceof z){if(n.isZero)return this.Zero;if(n.isOne)return this.One;if(n.isNegativeOne)return this.NegativeOne;if(n.isNaN)return this.NaN;if(n.isNegativeInfinity)return this.NegativeInfinity;if(n.isPositiveInfinity)return this.PositiveInfinity}}return new Ae(this,n,{metadata:t})}rules(n,i){return jt(this,n,i)}getRuleSet(n){if(n??(n="standard-simplification"),n==="standard-simplification")return this.cache("standard-simplification-rules",()=>jt(this,ac,{canonical:!0}));if(n==="solve-univariate")return this.cache("univariate-roots-rules",()=>jt(this,Pl));if(n==="harmonization")return this.cache("harmonization-rules",()=>jt(this,Ol))}_fn(n,i,t){let r=t?.canonical??!0;return new Ge(this,n,i,{...t,canonical:r})}parse(n,i){if(n==null)return null;if(typeof n!="string")throw Error("ce.parse(): expected a LaTeX string");let t={imaginaryUnit:"\\imaginaryI",positiveInfinity:"\\infty",negativeInfinity:"-\\infty",notANumber:"\\operatorname{NaN}",decimalSeparator:this.decimalSeparator,digitGroup:3,digitGroupSeparator:"\\,",exponentProduct:"\\cdot",beginExponentMarker:"10^{",endExponentMarker:"}",truncationMarker:"\\ldots",repeatingDecimal:"auto",skipSpace:!0,parseNumbers:"auto",getIdentifierType:s=>this.lookupFunction(s)?"function":"symbol",parseUnexpectedToken:(s,o)=>null,preserveLatex:!1},r=sc(Vn(n)??n,this.indexedLatexDictionary,{...t,...i});if(r===null)throw Error("Failed to parse LaTeX string");return this.box(r,{canonical:i?.canonical??!0})}get assumptions(){if(!this.context)throw Error("No scope available");return this.context.assumptions?this.context.assumptions:(this.context.assumptions=new dt,this.context.assumptions)}ask(n){let i=this.box(n,{canonical:!1}),t=[];for(let[r,s]of this.assumptions){let o=i.match(r);o!==null&&s===!0&&t.push(o)}return t}verify(n){return!1}assume(n){try{let i=Nt(n)?this.parse(n,{canonical:!1}):this.box(n,{canonical:!1});return this.generation+=1,Ll(i)}catch(i){throw console.error(i.message.toString()),i}}forget(n){if(!this.context)throw Error("No scope available");if(n===void 0){if(this.context.ids)for(let i of this.context.ids.keys())this.forget(i);this.generation+=1,this.assumptions.clear();return}if(Array.isArray(n)){for(let i of n)this.forget(i);return}if(typeof n=="string"){if(this.context.ids){let i=this.context.ids.get(n);i instanceof ue?i.value=void 0:i instanceof Le&&(i.evaluate=void 0,i.canonical=void 0)}for(let[i,t]of this.assumptions)i.symbols.includes(n)&&this.assumptions.delete(i)}this.generation+=1}};function ca(e){return!!(typeof e=="function"||e instanceof X&&v(e.type.type,"function"))}var nS="0.29.1";globalThis[Symbol.for("io.cortexjs.compute-engine")]={ComputeEngine:ir.prototype.constructor,version:"0.29.1"};export{Hn as AbstractTensor,C as BoxedType,ir as ComputeEngine,Lt as DEFAULT_LATEX_DICTIONARY,z as NumericValue,oo as TensorFieldComplex,so as TensorFieldExpression,ro as TensorFieldNumber,tl as getExpressionDatatype,il as getLatexDictionary,Lr as getSupertype,to as indexLatexDictionary,cy as isIndexedEnvironmentEntry,sy as isIndexedExpressionEntry,oy as isIndexedFunctionEntry,uy as isIndexedInfixdEntry,ay as isIndexedMatchfixEntry,fy as isIndexedPostfixEntry,ly as isIndexedPrefixedEntry,ry as isIndexedSymbolEntry,bn as makeTensor,Or as makeTensorField,nS as version};
|
|
107
|
+
`)}}function wo(n){return typeof n=="number"?n===0?1:Number.isInteger(n)?Math.floor(Math.log2(Math.abs(n))/Math.log2(10))+(n>0?1:2):2:n.isZero?1:n.im!==0?wo(n.re)+wo(n.im)+1:wo(n.re)}function Ba(n){if(n.symbol)return 1;if(n.isNumberLiteral)return wo(n.numericValue);let e=n.operator,t=2;if(["Add"].includes(e))t=3;else if(["Subtract","Negate"].includes(e))t=4;else if(["Square","Sqrt"].includes(e))t=5;else{if(["Power","Root"].includes(e))return Ba(n.ops[1]);["Multiply"].includes(e)?t=7:["Divide"].includes(e)?t=8:["Ln","Exp","Log","Lb"].includes(e)?t=9:["Cos","Sin","Tan"].includes(e)?t=10:t=11}return t+(n.ops?.reduce((i,r)=>i+Ba(r),0)??0)}var Ia=Ba;function we(n){for(let[e,t]of Object.entries(n))if(e!=="x"&&e!=="_x"&&t.has("_x"))return!1;return!0}var mf=[{match:["Multiply","_x","__a"],replace:0,id:"ax",condition:we},{match:["Add",["Divide","_a","_x"],"__b"],replace:1/0,useVariations:!0,condition:we},{match:["Add",["Multiply","_x","__a"],"__b"],replace:["Divide",["Negate","__b"],"__a"],useVariations:!0,condition:we},{match:["Add",["Multiply","_a",["Power","_x","_n"]],"__b"],replace:["Power",["Divide",["Negate","__b"],"_a"],["Divide",1,"_n"]],useVariations:!0,condition:n=>we(n)&&!n._n.is(0)},{match:["Add",["Multiply","_a",["Power","_x","_n"]],"__b"],replace:["Negate",["Power",["Divide",["Negate","__b"],"_a"],["Divide",1,"_n"]]],useVariations:!0,condition:n=>we(n)&&!n._n.is(0)&&(n._n.isEven??!1)},{match:["Add",["Multiply","__a",["Power","_x",2]],["Multiply","__b","_x"],"__c"],replace:["Divide",["Add",["Negate","__b"],["Sqrt",["Subtract",["Square","__b"],["Multiply",4,"__a","__c"]]]],["Multiply",2,"__a"]],useVariations:!0,condition:we},{match:["Add",["Multiply","__a",["Power","_x",2]],["Multiply","__b","_x"],"__c"],replace:["Divide",["Subtract",["Negate","__b"],["Sqrt",["Subtract",["Square","__b"],["Multiply",4,"__a","__c"]]]],["Multiply",2,"__a"]],useVariations:!0,condition:we},{id:"a^x + b = 0",match:["Add",["Power","_a","_x"],"__b"],replace:["Ln",["Negate","__b"],"_a"],useVariations:!0,onBeforeMatch:()=>{},condition:n=>we(n)&&(n._a.isPositive??!1)&&(n.__b.isNegative??!1)},{match:["Add",["Multiply","__a",["Exp",["Multiply","__b","_x"]]],"__c"],replace:["Divide",["Ln",["Negate",["Divide","__c","__a"]]],"__b"],useVariations:!0,condition:n=>we(n)&&((!n.__a.is(0)&&n.__c.div(n.__a).isNegative)??!1)},{match:["Add",["Multiply","__a",["Exp","_x"]],"__c"],replace:["Ln",["Negate",["Divide","__c","__a"]]],useVariations:!0,condition:n=>we(n)&&((!n.__a.is(0)&&n.__c.div(n.__a).isNegative)??!1)&&!n.__a.has("_x")&&!n.__c.has("_x")},{match:["Add",["Exp","_x"],"__c"],replace:["Ln",["Negate","__c"]],useVariations:!0,condition:n=>we(n)&&(n.__c.isNegative??!1)},{match:["Add",["Exp",["Multiply","__b","_x"]],"__c"],replace:["Divide",["Ln",["Negate","__c"]],"__b"],useVariations:!0,condition:n=>we(n)&&(n.__c.isNegative??!1)},{match:["Add",["Multiply","__a",["Log","_x","__b"]],"__c"],replace:["Power","__b",["Negate",["Divide","__c","__a"]]],useVariations:!0,condition:n=>(we(n)&&!n.__a.is(0)&&n.__b.isPositive)??!1},{match:["Multiply","__a",["Log","_x","__b"]],replace:["Power","__b",["Negate",["Divide","__c","__a"]]],useVariations:!0,condition:n=>(we(n)&&!n.__a.is(0)&&n.__b.isPositive)??!1},{match:["Add",["Abs",["Add",["Multiply","__a","_x"],"__b"]],"__c"],replace:["Divide",["Subtract","__b","__c"],"__a"],condition:we},{match:["Add",["Abs",["Add",["Multiply","__a","_x"],"__b"]],"__c"],replace:["Divide",["Negate",["Add","__b","__c"],"__a"]],condition:we},{match:"ax + \\mathrm{__b} \\sqrt{cx + \\mathrm{__d}} + \\mathrm{__g}",replace:"\\frac{-(2 a g - \\mathrm{__b}^2 c) + \\sqrt{(2 a \\mathrm{__g} - \\mathrm{__b}^2 c)^2 - 4 a^2(g^2 - b^2 \\mathrm{__d})}}{2 a^2}",useVariations:!0,condition:we},{match:"ax + \\mathrm{__b} \\sqrt{cx + \\mathrm{__d}} + \\mathrm{__g}",replace:"\\frac{-(2 a g - \\mathrm{__b}^2 c) - \\sqrt{(2 a \\mathrm{__g} - \\mathrm{__b}^2 c)^2 - 4 a^2(g^2 - b^2 \\mathrm{__d})}}{2 a^2}",useVariations:!0,condition:we}];function ko(n,e){let t=n.engine;n.operator==="Equal"?n=n.op1.expand().sub(n.op2.expand()).simplify():n=n.expand().simplify();let i=t.getRuleSet("solve-univariate"),r=[n.subs({[e]:"_x"},{canonical:!1})];t.pushScope(),t.declare("_x","number");let o=r.flatMap(s=>$t(s,i,{_x:t.symbol("_x")},{useVariations:!0,canonical:!0}));return o.length===0&&(r=r.flatMap(s=>pf(s)),o=r.flatMap(s=>$t(s,i,{_x:t.symbol(e)},{useVariations:!0,canonical:!0}))),o.length===0&&(r=r.flatMap(s=>Ze(s.canonical)).filter(s=>s!==null),r=r.flatMap(s=>pf(s)),o=r.flatMap(s=>$t(s,i,{_x:t.symbol(e)},{useVariations:!0,canonical:!0}))),t.popScope(),Xm(n,e,o.map(s=>s.evaluate().simplify()))}var gf=[{match:["Add",["Abs",["Add",["Multiply","__a","_x"],"__b"]],"__c"],replace:["Add",["Multiply","__a","_x"],"__b","__c"]},{match:["Add",["Abs",["Add",["Multiply","__a","_x"],"__b"]],"__c"],replace:["Add",["Negate",["Multiply","__a","_x"]],["Negate","__b"],"__c"]},{match:["Multiply","__a",["Power","_b","_n"]],replace:"_b",condition:({__a:n,_b:e,_n:t})=>!n.has("_x")&&e.has("_x")&&!t.is(0)&&!t.has("_x")},{match:["Multiply","__a",["Sqrt","_b"]],replace:["Multiply",["Square","_a"],"__b"],condition:({_b:n})=>n.has("_x")},{match:["Divide","_a","_b"],replace:"_a",condition:({_a:n,_b:e})=>n.has("_x")&&!e.is(0)},{match:["Multiply","__a","_b"],replace:"_b",condition:({__a:n,_b:e})=>!n.has("_x")&&e.has("_x")},{match:["Add",["Ln","_a"],["Ln","_b"],"__c"],replace:["Add",["Ln",["Multiply","_a","_b"]],"__c"]},{match:["Multiply",["Exp","__a"],["Exp","__b"],"__c"],replace:["Multiply",["Exp",["Add","_a","_b"]],"__c"]},{match:["Ln","_a"],replace:["Subtract","_a",1],condition:({_a:n})=>n.has("_x")},{match:["Sin","_a"],replace:"_a",condition:({_a:n})=>n.has("_x")},{match:["Cos","_a"],replace:["Subtract","_a",["Divide","Pi",2]],condition:({_a:n})=>n.has("_x")},{match:["Tan","_a"],replace:"_a",condition:({_a:n})=>n.has("_x")},{match:["Add",["Sin","_a"],["Cos","_a"]],replace:1,condition:({_a:n})=>n.has("_x")},{match:["Subtract",["Square",["Sin","_a"]],["Square",["Cos","_a"]]],replace:["PlusMinus",["Sin","_a"],["Divide",["Sqrt",2],2]],condition:({_a:n})=>n.has("_x")}];function pf(n){let e=n.engine,t=e.getRuleSet("harmonization");return $t(n,t,{_x:e.symbol("_x")})}function Xm(n,e,t){return t.filter(i=>{let r=n.subs({[e]:i}).canonical.evaluate();return r===null||!r.isValid||r.isNaN||r.has(e)?!1:r.isEqual(0)})}function Co(n,e){if(!n.ops)return[];let t=n.ops,i=n.operatorDefinition;if(!i||t.length===0)return t;let r=i?.associative?n.operator:"";if(t=lt(t,r),i.lazy)return t;let o=[];for(let s of t){let a=s.operator;if(a==="Hold")o.push(s);else{let u=a==="ReleaseHold"?s.op1:s;if(u){let l=e(u);l!==null&&o.push(l)}}}return lt(o,r)}async function hf(n,e){if(!n.ops)return[];let t=n.ops,i=n.operatorDefinition;if(!i||t.length===0)return t;let r=i?.associative?n.operator:"";if(t=lt(t,r),i.lazy)return t;let o=[];for(let s of t){let a=s.operator;if(a==="Hold")o.push(s);else{let u=a==="ReleaseHold"?s.op1:s;if(u){let l=await e(u);l!==null&&o.push(l)}}}return lt(o,r)}function xt(n,e,t){if((s=>t&&t.some(a=>a.value.isSame(s)))(n)||(t||(t=[{value:n,because:"initial"}]),!n.isValid))return t;if(!(n.isCanonical||n.isStructural)){let s=n.canonical;return s.isCanonical||s.isStructural?xt(s,e,t):t}let r=n.engine,o=e?.rules?r.rules(e.rules,{canonical:!0}):r.getRuleSet("standard-simplification");e={...e,rules:o};do{let s=eg(n,o,e,t);if(s.length<=t.length)break;n=s.at(-1).value,t=s}while(!t.slice(0,-1).some(s=>s.value.isSame(n)));return t}function Km(n,e,t){if(e==null||n===e||n.isSame(e))return!1;let i=n.engine;return t??=r=>i.costFunction(r),t(e)<=1.2*t(n)}function yf(n,e){return n.ops?n.engine.function(n.operator,Co(n,t=>xt(t,e).at(-1).value)):n}function eg(n,e,t,i){if(n.isNumberLiteral||n.string)return i;if(n.symbol){let s=et(n,e,{recursive:!1,canonical:!0,useVariations:!1});return s.length>0?[...i,...s]:i}let r=yf(n,t);r.isSame(n)||(i=[...i,{value:r,because:"simplified operands"}],n=r);let o=ng(n,e,t,i);return o.length>i.length?o:i}function ng(n,e,t,i){let r=et(n,e,{recursive:!1,canonical:!0,useVariations:t.useVariations??!1});if(r.length===0)return i;let o=r.at(-1).value;return o.isSame(n)||(o=yf(o),!Km(n,o,t?.costFunction))?i:(r.at(-1).value=o,[...i,...r])}function ka(n){return typeof n=="string"?n.startsWith("_"):$n(n)?!0:n.ops?ka(n.operator)||n.ops.some(ka):!1}function Ao(n,e,t){return n.startsWith("_"),n==="_"||n==="__"||n==="___"?t:n in t?e.isSame(t[n])?t:null:ka(e)?null:{...t,[n]:e}}function qt(n,e,t,i){if($n(e))return Ao(Fn(e),n,t);let r=i.acceptVariants??!0;if(i={...i,acceptVariants:!0},e.numericValue!==null)return n.numericValue===null?null:e.isEqual(n)?t:r?wa(n,e,t,i):null;let o=e.string;if(o!==null)return n.string===o?t:null;let s=e.symbol;if(s!==null)return s===n.symbol?t:r?wa(n,e,t,i):null;if(e.ops){let a=i.useVariations??!1,u=n.engine,l=null,c=e.operator;if(c.startsWith("_")?(l=Ao(c,u.box(n.operator),t),l!==null&&(l=Ca(n,e.ops,l,i))):c===n.operator&&(l=e.operatorDefinition.commutative?ig(n,e,t,i):Ca(n,e.ops,t,i)),l===null&&a){if(!r)return null;l=wa(n,e,t,i)}return l!==null&&(t=l),i.recursive&&n.ops&&(l=tg(n,e,t,{...i,acceptVariants:r})??l),l}return null}function tg(n,e,t,i){n.ops;let r=null;for(let o of n.ops){let s=qt(o,e,t,i);s!==null&&(r=s,t=s)}return r}function wa(n,e,t,i){if(!i.useVariations)return null;let r=n.engine,o={...i,acceptVariants:!1},s=(u,l)=>qt(r.function(u,l,{canonical:!1}),e,t,o),a=e.operator;if(a==="Negate"&&n.is(0))return qt(r.Zero,e.op1,t,o);if(a==="Add"){let u=s("Add",[0,n]);if(u!==null||(n.operator==="Subtract"&&(u=s("Add",[n.op1,["Negate",n.op2]])),u!==null))return u}if(a==="Subtract"){let u=s("Subtract",[n,0]);if(u!==null||(n.operator==="Negate"&&(u=s("Subtract",[0,n.op1])),u!==null))return u}if(a==="Multiply"){let u=s("Multiply",[1,n]);if(u!==null||n.operator==="Negate"&&(u=s("Multiply",[-1,n.op1]),u!==null)||n.operator==="Divide"&&(u=s("Multiply",[n.op1,["Divide",1,n.op2]]),u!==null))return u}if(a==="Divide"){let u=s("Divide",[n,1]);if(u!==null)return u}if(a==="Square"){let u=s("Power",[n,2]);if(u!==null)return u}if(a==="Exp"){let u=s("Power",[r.E,n]);if(u!==null)return u}if(a==="Power"){if(e.op2.re===2&&e.op2.im===0){let u=s("Square",[n]);if(u!==null)return u}if(e.op1.symbol==="ExponentialE"){let u=s("Exp",[n]);if(u!==null)return u}{let u=s("Power",[n,1]);if(u!==null)return u}}return null}function ig(n,e,t,i){n.operator,e.operator;let r=Jo(e.ops);for(let o of r){let s=Ca(n,o,t,i);if(s!==null)return s}return null}function Ca(n,e,t,i){if(e.length===0)return n.ops&&n.ops.length===0?t:null;let r=e[0].engine,o={...t},s=[...n.ops],a=0;for(;a<e.length;){let u=e[a],l=Fn(u);if(l!==null)if(l.startsWith("__")){let c=0;if(e[a+1]===void 0)c=s.length+1;else{let d=!1;for(;!d&&c<s.length;)d=qt(s[c],e[a+1],o,i)!==null,c+=1;if(!d&&l.startsWith("___"))return null}if(!l.startsWith("___")&&c<=1)return null;let f;if(c<=1)n.operator==="Add"?f=r.Zero:n.operator==="Multiply"?f=r.One:f=r.Nothing;else if(c===2){if(s.length===0)return null;f=s.shift()}else{let d=r.lookupDefinition(n.operator),p=s.splice(0,c-1);d&&Z(d)&&d.operator.associative?f=r.function(n.operator,p,{canonical:!1}):f=r.function("Sequence",p,{canonical:!1})}o=Ao(l,f,o)}else if(l.startsWith("_")){if(s.length===0)return null;o=Ao(l,s.shift(),o)}else o=qt(s.shift(),u,o,i);else{let c=s.shift();if(!c)return null;o=qt(c,u,o,i)}if(o===null)return null;a+=1}return s.length>0?null:o}function Ni(n,e,t){e=e.structural;let i=t?.useVariations??!1,r={recursive:t?.recursive??!1,useVariations:i,acceptVariants:i},o=t?.substitution??{};return qt(n.structural,e.structural,o,r)}function xf(n){let e=n.engine;if(n.operator==="Hold")return;let t;if(n.ops){let i=n.operatorDefinition;return i?.sgn&&(t=i.sgn(n.ops,{engine:e})),t}return n.symbol||n.isNumberLiteral?n.sgn:"unsigned"}function _i(n){if(n!==void 0){if(n==="positive")return!0;if(["non-positive","zero","negative"].includes(n))return!1}}function Si(n){if(n!==void 0){if(["positive","positive-infinity","non-negative","zero"].includes(n))return!0;if(n==="negative")return!1}}function Ti(n){if(n!==void 0){if(n==="negative")return!0;if(["non-negative","zero","positive"].includes(n))return!1}}function Bi(n){if(n!==void 0){if(["negative","non-positive","zero"].includes(n))return!0;if(["positive","positive-infinity"].includes(n))return!1}}function Aa(n,e,t){return n.generation=e,n.value=t(),n.value}var rg=[5,5],he=class extends W{_operator;_ops;_def;_capturedContext;_localScope;_isPure;_isStructural;_hash;_value={value:null,generation:-1};_valueN={value:null,generation:-1};_sgn={value:null,generation:-1};_type={value:null,generation:-1};constructor(e,t,i,r){super(e,r?.metadata),this._operator=t,this._ops=i,this._localScope=r?.scope,this._isStructural=r?.structural??!1,(r?.canonical||this._isStructural)&&this.bind()}get hash(){if(this._hash!==void 0)return this._hash;let e=0;for(let t of this._ops)e=e<<1^t.hash|0;return e=e^cn(this._operator)|0,this._hash=e,e}infer(e,t){let i=this.operatorDefinition;return!i||!i.inferredSignature?!1:(i.signature.is("function")?i.signature=new S({kind:"signature",result:e},this.engine._typeResolver):Gr(i.signature.type)&&(i.signature=new S({kind:"signature",result:t==="narrow"?vt(i.signature.type.result,e):oe(i.signature.type.result,e)},this.engine._typeResolver)),this.engine._generation+=1,!0)}bind(){this._def=to(this._operator,this._localScope??this.engine.context.lexicalScope)}reset(){}get value(){}get isCanonical(){return this._def!==void 0&&this._def!==null}get isPure(){if(this._isPure!==void 0)return this._isPure;let e=this.operatorDefinition?.pure??!1;return e&&(e=this._ops.every(t=>t.isPure)),this._isPure=e,e}get isConstant(){return this.isPure&&this._ops.every(e=>e.isConstant)}get constantValue(){return this.isConstant?this.value:void 0}get json(){return[this._operator,...this.structural.ops.map(e=>e.json)]}get operator(){return this._operator}get ops(){return this._ops}get nops(){return this._ops.length}get op1(){return this._ops[0]??this.engine.Nothing}get op2(){return this._ops[1]??this.engine.Nothing}get op3(){return this._ops[2]??this.engine.Nothing}get isScoped(){return this._localScope!==void 0}get localScope(){return this._localScope}get isValid(){return this._operator==="Error"?!1:this._ops.every(e=>e?.isValid)}get canonical(){return this.isCanonical||!this.isValid?this:this.engine.function(this._operator,this._ops)}get structural(){if(this.isStructural)return this;let e=this.operatorDefinition;if(e?.associative||e?.commutative){let t=this.ops.map(r=>r.structural),i=[];if(!e.associative)i=t;else for(let r of t)r.operator===this.operator?i.push(...r.ops):i.push(r);return this.engine.function(this._operator,this.isValid?Wi(this._operator,i):i,{canonical:!1,structural:!0})}return this.engine.function(this._operator,this.ops.map(t=>t.structural),{canonical:!1,structural:!0})}get isStructural(){return this._isStructural}toNumericValue(){this.isCanonical||this.isStructural;let e=this.engine;if(this.operator==="Complex")return[e._numericValue({re:this.op1.re,im:this.op2.re}),e.One];let t=this;if(t.operator==="Add"&&(t=gt(this),t.numericValue!==null)){if(typeof t.numericValue=="number"){if(Number.isInteger(t.numericValue))return[e._numericValue(t.numericValue),e.One]}else if(t.numericValue.isExact)return[t.numericValue,e.One]}if(t.operator==="Negate"){let[i,r]=t.op1.toNumericValue();return[i.neg(),r]}if(t.operator==="Multiply"){let i=[],r=e._numericValue(1);for(let o of t.ops){let[s,a]=o.toNumericValue();r=r.mul(s),a.is(1)||i.push(a)}return i.length===0?[r,e.One]:i.length===1?[r,i[0]]:[r,_e(this.engine,i)]}if(t.operator==="Divide"){let[i,r]=t.op1.toNumericValue(),[o,s]=t.op2.toNumericValue(),a=i.div(o);return s.is(1)?[a,r]:[a,e.function("Divide",[r,s])]}if(t.operator==="Power"){if(t.op2.numericValue===null)return[e._numericValue(1),this];let[i,r]=t.op1.toNumericValue();if(i.isOne)return[i,this];let o=ee(t.op2);return o!==null?[i.pow(o),e.function("Power",[r,t.op2])]:t.op2.is(.5)?[i.sqrt(),e.function("Sqrt",[r])]:[e._numericValue(1),this]}if(t.operator==="Sqrt"){let[i,r]=t.op1.toNumericValue();return r.is(1)||r.is(0)?i.isOne||i.isZero?[i,r]:[i.sqrt(),r]:[i.sqrt(),e.function("Sqrt",[r])]}if(t.operator==="Root"){let i=t.op2.re;if(isNaN(i)||t.op2.im!==0)return[e._numericValue(1),this];let[r,o]=t.op1.toNumericValue();return i===2?[r.sqrt(),e.function("Sqrt",[o])]:[r.root(i),e.function("Root",[o,t.op2])]}if(t.operator==="Abs"){let[i,r]=t.op1.toNumericValue();return[i.abs(),e.function("Abs",[r])]}if(t.operator,t.operator,t.operator==="Log"||t.operator==="Ln"){let i=t.op2.re;isNaN(i)&&t.operator==="Log"&&(i=10);let[r,o]=t.op1.toNumericValue();return r.isOne?[r,this]:e.box(r.ln(i)).add(e.function(t.operator,[o,t.op2])).toNumericValue()}return[e._numericValue(1),t]}subs(e,t){t??={canonical:void 0},t.canonical===void 0&&(t={canonical:this.isCanonical});let i=this._ops.map(r=>r.subs(e,t));return i.every(r=>r.isValid)?this.engine.function(this._operator,i,t):this.engine.function(this._operator,i,{canonical:!1})}replace(e,t){return et(this,e,t).at(-1)?.value??null}match(e,t){return Ni(this,e,t)}has(e){if(typeof e=="string"){if(this._operator===e)return!0}else if(e.includes(this._operator))return!0;return this._ops.some(t=>t.has(e))}get sgn(){let e=this.isPure&&this._ops.every(t=>t.isConstant)?void 0:this.engine._generation;return Aa(this._sgn,e,()=>{if(!(!this.isValid||this.isNumber!==!0))return xf(this)})}get isNaN(){if(!this.isNumber)return!1}get isInfinity(){if(!this.isNumber)return!1}get isFinite(){if(this.isNumber!==!0||this.isNaN||this.isInfinity)return!1;if(!(this.isNaN===void 0||this.isInfinity===void 0))return!0}get isOne(){if(this.isNonPositive===!0||this.isReal===!1)return!1}get isNegativeOne(){if(this.isNonNegative===!0||this.isReal===!1)return!1}get isPositive(){return _i(this.sgn)}get isNonNegative(){return Si(this.sgn)}get isNegative(){return Ti(this.sgn)}get isNonPositive(){return Bi(this.sgn)}get numerator(){return this.numeratorDenominator[0]}get denominator(){return this.numeratorDenominator[1]}get numeratorDenominator(){if(!this.isCanonical)return[this,this.engine.One];if(this.isNumber!==!0)return[this.engine.Nothing,this.engine.Nothing];let e=this.operator;if(e==="Divide")return[this.op1,this.op2];if(e==="Negate"){let[t,i]=this.op1.numeratorDenominator;return[t.neg(),i]}if(e==="Power"){let[t,i]=this.op1.numeratorDenominator;return[t.pow(this.op2),i.pow(this.op2)]}if(e==="Root"){let[t,i]=this.op1.numeratorDenominator;return[t.root(this.op2),i.root(this.op2)]}if(e==="Sqrt"){let[t,i]=this.op1.numeratorDenominator;return[t.sqrt(),i.sqrt()]}if(e==="Abs"){let[t,i]=this.op1.numeratorDenominator;return[t.abs(),i.abs()]}return e==="Multiply"?new Oe(this.engine,this.ops).asNumeratorDenominator():[this,this.engine.One]}neg(){if(!this.isCanonical)throw new Error("Not canonical");return Lt(this)}inv(){if(!this.isCanonical)throw new Error("Not canonical");if(this.isOne)return this;if(this.isNegativeOne)return this;if(this.operator==="Sqrt")return this.op1.inv().sqrt();if(this.operator==="Divide")return this.op2.div(this.op1);if(this.operator==="Power"){let e=this.op2.neg();return e.operator!=="Negate"?this.op1.pow(e):this.engine.function("Power",[this.op1,e])}if(this.operator==="Root"){let e=this.op2.neg();return e.operator!=="Negate"?this.op1.root(e):this.engine.function("Root",[this.op1,e])}return this.operator==="Exp"?this.engine.E.pow(this.op1.neg()):this.operator==="Rational"?this.op2.div(this.op1):this.operator==="Negate"?this.op1.inv().neg():this.engine._fn("Divide",[this.engine.One,this])}abs(){if(!this.isCanonical)throw new Error("Not canonical");return this.operator==="Abs"||this.operator==="Negate"?this:this.isNonNegative?this:this.isNonPositive?this.neg():this.engine._fn("Abs",[this])}add(e){if(e===0)return this;if(!this.isCanonical)throw new Error("Not canonical");return H(this,this.engine.box(e))}mul(e){if(!this.isCanonical)throw new Error("Not canonical");if(e===0)return this.engine.Zero;if(e===1)return this;if(e===-1)return this.neg();if(e instanceof j){if(e.isZero)return this.engine.Zero;if(e.isOne)return this;if(e.isNegativeOne)return this.neg()}return ae(this,this.engine.box(e))}div(e){if(!this.isCanonical)throw new Error("Not canonical");return hi(this,e)}pow(e){return Ie(this,e,{numericApproximation:!1})}root(e){if(!this.isCanonical||typeof e!="number"&&!e.isCanonical)throw new Error("Not canonical");let t=typeof e=="number"?e:e.im===0?e.re:void 0;if(t===0)return this.engine.NaN;if(t===1)return this;if(t===-1)return this.inv();if(t===2)return this.engine.function("Sqrt",[this]);if(this.operator==="Power"&&t!==void 0){let[i,r]=this.ops;return i.pow(r.div(t))}if(this.operator==="Divide"){let[i,r]=this.ops;return i.root(e).div(r.root(e))}if(this.operator==="Negate"&&t!==void 0)return t%2===0?this.op1.root(e):this.op1.root(e).neg();if(this.operator==="Sqrt"){if(t!==void 0)return this.op1.root(t*2);if(typeof e!="number")return this.op1.root(e.mul(2))}if(this.operator==="Root"){let[i,r]=this.ops;return i.root(r.mul(e))}if(this.operator==="Multiply"){let i=this.ops.map(r=>r.root(e));return ae(...i)}if(this.isNumberLiteral){let i=this.numericValue;if(typeof i=="number"){if(i<0)return this.engine.NaN;if(i===0)return this.engine.Zero;if(i===1)return this.engine.One;if(t!==void 0){let r=this.engine.number(Math.pow(i,1/t));if(!r.isFinite||r.isInteger)return r}}else{if(i.isOne)return this.engine.One;if(i.isZero)return this.engine.Zero;if(t!==void 0){let r=i.root(t);if(r.isExact)return this.engine.number(r)}}}return this.engine._fn("Root",[this,this.engine.box(e)])}sqrt(){return this.root(2)}ln(e){let t=e?this.engine.box(e):void 0;if(!this.isCanonical)throw new Error("Not canonical");if(this.is(0))return this.engine.NegativeInfinity;if(this.operator==="Exp")return this.op1;if(t&&this.isSame(t))return this.engine.One;if(!t&&this.isSame(this.engine.E))return this.engine.One;if(this.operator==="Power"){let[i,r]=this.ops;return i.isSame(this.engine.E)?r:r.mul(i.ln(t))}if(this.operator==="Root"){let[i,r]=this.ops;return r.div(i.ln(t))}return this.operator==="Sqrt"?this.op1.ln(t).div(2):this.operator==="Divide"?this.op1.ln(t).sub(this.op2.ln(t)):t&&t.type.matches("finite_integer")?t.re===10?this.engine._fn("Log",[this]):this.engine._fn("Log",[this,t]):this.engine._fn("Ln",[this])}get complexity(){if(this.isCanonical)return this.operatorDefinition?.complexity??ct}get baseDefinition(){if(this._def)return Z(this._def)?this._def.operator:this._def.value}get operatorDefinition(){if(this._def)return Z(this._def)?this._def.operator:void 0}get valueDefinition(){if(this._def)return ne(this._def)?this._def.value:void 0}get isNumber(){if(!this.type.isUnknown)return E(this.type.type,"number")}get isInteger(){if(!this.type.isUnknown)return E(this.type.type,"integer")}get isRational(){if(!this.type.isUnknown)return E(this.type.type,"rational")}get isReal(){if(!this.type.isUnknown)return E(this.type.type,"real")}get isFunctionExpression(){return!0}get type(){let e=this.isPure&&this._ops.every(t=>t.isConstant)?void 0:this.engine._generation;return Aa(this._type,e,()=>new S(og(this),this.engine._typeResolver))??S.unknown}simplify(e){return xt(this,e).at(-1)?.value??this}evaluate(e){return sg(this.engine,this._computeValue(e))()}evaluateAsync(e){return ag(this.engine,this._computeValueAsync(e))()}N(){return this.evaluate({numericApproximation:!0})}solve(e){let t=cr(e??this.unknowns);return t.length!==1?null:ko(this,t[0])}get isCollection(){if(!this.isValid)return!1;let e=this.baseDefinition?.collection;return!e||e.count!==void 0&&e.iterator,e!==void 0}get isIndexedCollection(){return!this.isValid||!this.baseDefinition?.collection?.at?!1:this.type.matches("indexed_collection")}get isLazyCollection(){if(!this.isValid)return!1;let e=this.baseDefinition?.collection;return e?e?.isLazy?.(this)??!1:!1}xcontains(e){return this.baseDefinition?.collection?.contains?.(this,e)}get xsize(){return this.operatorDefinition?.collection?.count?.(this)}get isEmptyCollection(){if(this.isCollection)return this.operatorDefinition?.collection?.isEmpty?.(this)}get isFiniteCollection(){if(this.isCollection)return this.operatorDefinition?.collection?.isFinite?.(this)}each(){let e=this.operatorDefinition?.collection?.iterator?.(this);return e?function*(){let t=e.next(),i=0;for(;!t.done;)i+=1,yield t.value,t=e.next()}():function*(){}()}at(e){return this.operatorDefinition?.collection?.at?.(this,e)}get(e){if(typeof e=="string")return this.operatorDefinition?.collection?.at?.(this,e);if(e.string)return this.operatorDefinition?.collection?.at?.(this,e.string)}indexWhere(e){if(this.operatorDefinition?.collection?.indexWhere)return this.operatorDefinition.collection.indexWhere(this,e);if(!this.isIndexedCollection||!this.isFiniteCollection)return;let t=0;for(let i of this.each()){if(e(i))return t;t+=1}}subsetOf(e,t){return this.operatorDefinition?.collection?.subsetOf?.(this,e,t)??!1}_computeValue(e){return()=>{if(!this.isValid||!this._def)return this;let t=e?.numericApproximation??!1,i=e?.materialization??!1;if(ne(this._def))return bf(this,this._def.value,e);let r=this._def.operator;if(r.broadcastable&&this.ops.some(u=>pe(u))){let u=Bs(this._ops);if(!u)return this.engine.Nothing;let l=[];for(;;){let{done:c,value:f}=u.next();if(c)break;l.push(this.engine._fn(this.operator,f).evaluate(e))}return l.length===0?this.engine.Nothing:l.length===1?l[0]:this.engine._fn("List",l)}if(i!==!1&&!r.evaluate&&this.isLazyCollection)return ug(this,r,e);let o=Co(this,u=>u.evaluate(e)),s=this._localScope!==void 0||e?.withArguments;if(s&&(this.engine._pushEvalContext(this._localScope??{parent:this.engine.context?.lexicalScope,bindings:new Map}),e?.withArguments))for(let[u,l]of Object.entries(e.withArguments))this.engine.context.values[u]=l;let a=r.evaluate?.(o,{numericApproximation:t,engine:this.engine,materialization:i});return s&&this.engine._popEvalContext(),a??this.engine.function(this._operator,o)}}_computeValueAsync(e){return async()=>{if(!this.isValid||!this._def)return this;let t=e?.numericApproximation??!1;if(ne(this._def))return bf(this,this._def.value,e);let i=this._def.operator;if(i?.broadcastable&&this.ops.some(l=>pe(l))){let l=Bs(this._ops);if(!l)return this.engine.Nothing;let c=[];for(;;){let{done:f,value:d}=l.next();if(f)break;c.push(this.engine._fn(this.operator,d).evaluateAsync(e))}return c.length===0?this.engine.Nothing:c.length===1?c[0]:Promise.all(c).then(f=>this.engine._fn("List",f))}let r=await hf(this,async l=>await l.evaluateAsync(e)),o=this._localScope!==void 0||e?.withArguments;if(o&&(this.engine._pushEvalContext(this._localScope??{parent:this.engine.context?.lexicalScope,bindings:new Map}),e?.withArguments))for(let[l,c]of Object.entries(e.withArguments))this.engine.context.values[l]=c;let s=this.engine,a={numericApproximation:t,engine:s,signal:e?.signal,eager:e?.materialization},u=i.evaluateAsync?.(r,a)??i.evaluate?.(r,a);return o&&this.engine._popEvalContext(),Promise.resolve(u).then(l=>l??s.function(this._operator,r))}}};function og(n){if(!n.isValid)return"error";if(n.operator==="Function"){let i=n.ops[0].type,r=n.ops.slice(1);return A(`(${r.map(o=>"unknown").join(", ")}) -> ${i}`,n.engine._typeResolver)}let e=n.operatorDefinition;if(e){let t=e.signature instanceof S?e.signature.type:typeof e.signature=="string"?A(e.signature,n.engine._typeResolver):e.signature,i=We(t)??"unknown";if(typeof e.type=="function"){let r=e.type(n.ops,{engine:n.engine});r&&(r instanceof S?i=r.type:i=A(r,n.engine._typeResolver)??i)}return i}return n.valueDefinition?We(n.valueDefinition.type.type)??"unknown":"unknown"}function sg(n,e){return()=>{if(n._deadline===void 0){n._deadline=Date.now()+n.timeLimit;let t=e();return n._deadline=void 0,t}return e()}}function ag(n,e){return async()=>{if(n._deadline===void 0){n._deadline=Date.now()+n.timeLimit;let t=await e();return n._deadline=void 0,t}return e()}}function bf(n,e,t){let i=e.isConstant?e.value:n.engine._getSymbolValue(n.operator);if(i&&!i.type.matches("function"))return i.isValid?n.engine.typeError("function",i.type,i.toString()):n;let r=n.ops.map(o=>o.evaluate(t));return!i||i.type.isUnknown?n.engine.function(n.operator,r):An(i,r)}function ug(n,e,t){if(!n.isValid||t?.materialization===!1)return n;let i=t?.materialization??!1;typeof i=="boolean"&&(i=rg);let r=n.isIndexedCollection,o=n.isFiniteCollection,s=[];if(!n.isEmptyCollection)if(!r||!o){let u=typeof i=="number"?i:i[0],l=n.each();for(let c of l){if(s.length===u){l.next().done||s.push(n.engine.symbol("ContinuationPlaceholder"));break}s.push(c.evaluate(t))}}else{let[u,l]=typeof i=="number"?[Math.ceil(i/2),i-Math.ceil(i/2)]:i,c=1,f=n.each();for(let p of f)if(s.push(p.evaluate(t)),c+=1,c>u)break;let d=n.xsize;if(d===void 0||d<=u)(d===void 0||s.length<d)&&s.push(n.engine.symbol("ContinuationPlaceholder"));else{let p=Math.max(u+1,d-l+1);for(d>u+l&&s.push(n.engine.symbol("ContinuationPlaceholder")),c=p;c<=d;){let x=n.at(c);if(!x)break;s.push(x.evaluate(t)),c+=1}}}let a=e.collection?.elttype?.(n);return a&&E(a,"tuple<string, any>")?n.engine.function("Dictionary",s):r?n.engine._fn("List",s):n.engine.function("Set",[...s])}var bt=class n extends W{[Symbol.toStringTag]="[BoxedString]";_string;_utf8Buffer;_unicodeScalarValues;constructor(e,t,i){super(e,i),this._string=t.normalize()}get json(){return Ge(this._string)&&!tn(this._string)?this._string:`'${this._string}'`}get hash(){return cn("String"+this._string)}get operator(){return"String"}get isPure(){return!0}get isCanonical(){return!0}set isCanonical(e){}get value(){return this}get type(){return S.string}get complexity(){return 19}get string(){return this._string}get buffer(){if(this._utf8Buffer===void 0){let e=new TextEncoder;this._utf8Buffer=e.encode(this._string)}return this._utf8Buffer}get unicodeScalars(){return this._unicodeScalarValues===void 0&&(this._unicodeScalarValues=lg(this._string)),this._unicodeScalarValues}match(e,t){return Xn(e)||(e=this.engine.box(e,{canonical:!1})),$n(e)?{[Fn(e)]:this}:e instanceof n&&this._string===e._string?{}:null}};function lg(n){let e=[];for(let t=0;t<n.length;t++){let i=n.codePointAt(t);e.push(i),i>65535&&t++}return e}var _r=class n extends W{[Symbol.toStringTag]="[BoxedDictionary]";_keyValues={};_type;constructor(e,t,i){super(e,i?.metadata),t instanceof W?this._initFromExpression(t,i):this._initFromRecord(t,i)}_initFromRecord(e,t){for(let i in e){if(typeof i!="string")throw new Error(`Dictionary keys must be strings, but got ${typeof i}`);if(i.length===0)throw new Error("Dictionary keys must not be empty strings");e[i]instanceof W?this._keyValues[i]=e[i]:this._keyValues[i]=this.engine.box(e[i],t)}}_initFromExpression(e,t){if(e instanceof n){Object.assign(this._keyValues,e._keyValues);return}if(e.operator==="Tuple"||e.operator==="Pair"||e.operator==="KeyValuePair"){if(e.nops!==2)throw new Error(`Expected a key/value pair, got ${e.nops} elements`);let[i,r]=e.ops,o;if(i.string)o=i.string;else if(i.symbol)o=i.symbol;else throw new Error(`Expected a string key, got ${i.type}`);this._keyValues[o]=r.canonical;return}if(e.operator==="Dictionary"){for(let i of e.ops)if(i.operator==="KeyValuePair"||i.operator==="Pair"||i.operator==="Tuple"){let[r,o]=i.ops,s;if(r.string)s=r.string;else if(r.symbol)s=r.symbol;else return;this._keyValues[s]=o.canonical}else throw new Error(`Expected a key/value pair, got ${i.type}`);return}}get json(){return["Dictionary",{dict:Object.fromEntries(Object.entries(this._keyValues).map(([e,t])=>[e,t.json]))}]}get hash(){return cn("Dictionary"+JSON.stringify(this._keyValues))}get operator(){return"Dictionary"}get type(){if(this._type)return this._type;let e=oe(...Object.values(this._keyValues).map(t=>t.type.type));return this._type=this.engine.type(`dictionary<${e}>`),this._type}get isPure(){return!0}get isCanonical(){return!0}set isCanonical(e){}get value(){}get complexity(){return 1e3}get isCollection(){return!0}get isIndexedCollection(){return!1}get isLazyCollection(){return!1}xcontains(e){}get xsize(){return Object.keys(this._keyValues).length}get isEmptyCollection(){return Object.keys(this._keyValues).length===0}get isFiniteCollection(){return!0}each(){let e=this.engine;return function*(t){for(let[i,r]of Object.entries(t._keyValues))yield e.tuple(e.string(i),r)}(this)}get(e){return this._keyValues[e]}has(e){return this._keyValues.hasOwnProperty(e)}get keys(){return Object.keys(this._keyValues)}get entries(){return Object.entries(this._keyValues)}get values(){return Object.values(this._keyValues)}match(e,t){if($n(e))return{[Fn(e)]:this};if(!(e instanceof n))return null;let i=null,r=Object.keys(e._keyValues);for(let o of r){if(!this._keyValues.hasOwnProperty(o))return null;let s=this._keyValues[o],a=e._keyValues[o];if(!s.match(a))return null;if($n(e._keyValues[o])){let u=Fn(e._keyValues[o]);u&&(i={...i??{},[u]:s})}}return i}};function Da(n,e,t){if(e instanceof W)return e;if(e=V(e),typeof e=="string")return Bn(n,e,t);if(Array.isArray(e)){let[i,...r]=e;return new he(n,i,r.map(o=>Da(n,o,t)),{canonical:!1})}if(typeof e=="object"){if("fn"in e)return Da(n,e.fn,t);if("str"in e)return new bt(n,e.str);if("sym"in e)return Bn(n,e.sym,t);if("num"in e)return Bn(n,e.num,t)}return Bn(n,e,t)}function Do(n,e,t,i){if(i=i?{...i}:{},"canonical"in i||(i.canonical=!0),!Te(e))throw new Error(`Unexpected operator: "${e}" is not a valid symbol: ${nn(e)}`);let r=i.structural??!1;if(e==="Hold")return new he(n,"Hold",[Da(n,t[0],i)],{...i,canonical:!0,structural:r});if(e==="Error"||e==="ErrorCode")return new he(n,e,t.map(s=>n.box(s,{canonical:!1})),{metadata:i?.metadata,canonical:!0});if(e==="Number"&&t.length===1)return Bn(n,t[0],i);if(r===!1&&i.canonical===!0){if((e==="Divide"||e==="Rational")&&t.length===2){let s=Qn(t[0]);if(s!==null){let a=Qn(t[1]);if(a!==null)return n.number([s,a],i)}e="Divide"}if(e==="Complex"){if(t.length===1){let s=t[0];if(s instanceof W&&s.isNumberLiteral)return n.number(n.complex(0,s.re),i);let a=R(t[0]);return a!==null&&a!==0?n.number(n.complex(0,a),i):n.box(s).mul(n.I)}if(t.length===2){let s=t[0]instanceof W?t[0].re:R(t[0]),a=t[1]instanceof W?t[1].re:R(t[1]);return a!==null&&s!==null&&!isNaN(a)&&!isNaN(s)?a===0&&s===0?n.Zero:a!==0?n.number(n._numericValue({re:s,im:a}),i):Bn(n,t[0],i):Bn(n,t[0],i).add(Bn(n,t[1],i).mul(n.I))}throw new Error("Expected one or two arguments with Complex expression")}if(e==="Negate"&&t.length===1){let s=t[0];if(typeof s=="number")return n.number(-s,i);if(s instanceof M)return n.number(s.neg(),i);let a=n.box(s,i),u=a.numericValue;if(u!==null)return n.number(typeof u=="number"?-u:u.neg(),i);t=[a]}}return i.canonical===!0?cg(n,e,t,i.metadata,i.scope):Ft(new he(n,e,t.map(s=>Bn(n,s,{canonical:i.canonical,structural:r,scope:i.scope})),{metadata:i.metadata,canonical:!1,structural:r,scope:i.scope}),i.canonical??!1,i.scope)}function Bn(n,e,t){if(e==null)return n.error("missing");if(e instanceof j)return dg(n,e);if(e instanceof W)return Ft(e,t?.canonical??!0,t?.scope);t=t?{...t}:{},"canonical"in t||(t.canonical=!0);let i=t.canonical===!0,r=t.structural??!1;if(Array.isArray(e)){if(typeof e[0]!="string")throw new Error(`The first element of an array should be a string (the function name): ${JSON.stringify(e,void 0,4)}`);return Ft(Do(n,e[0],e.slice(1),{canonical:i,structural:r,scope:t?.scope}),t?.canonical??!0,t?.scope)}if(typeof e=="number"||e instanceof M||e instanceof q)return n.number(e);if(typeof e=="string"){if(Ge(e)){let o=T(e);if(!o||!Te(o))return n.error("invalid-symbol",e);let s=i||t.canonical!==!1;return n.symbol(o,{canonical:s})}return tn(e)?n.number(e):(Hr(e),new bt(n,F(e)))}if(typeof e=="object"){if("fn"in e){let[o,...s]=e.fn;return Ft(Do(n,o,s,{canonical:i,structural:r}),t.canonical,t.scope)}if("str"in e)return new bt(n,e.str);if("sym"in e)return n.symbol(e.sym,{canonical:i});if("num"in e)return n.number(e,{canonical:i});if("dict"in e)return new _r(n,e.dict,{canonical:i});throw new Error(`Unexpected MathJSON object: ${JSON.stringify(e,void 0,4)}`)}return n.symbol("Undefined")}function cg(n,e,t,i,r){let o=fg(n,e,t,i,r);if(o)return o;if(e==="List"){let f=t.map(p=>n.box(p,{canonical:!1})),d=Zc("List",f);return d&&d.dtype?new xr(n,{ops:Qe(n,f,r),shape:d.shape,dtype:d.dtype},{metadata:i}):new he(n,"List",Qe(n,f,r),{canonical:!0})}if(e==="Dictionary"){let f=t.map(d=>n.box(d,{canonical:!1}));return new _r(n,n._fn("Dictionary",f),{canonical:!0})}let s=n.lookupDefinition(e);if(!s)return n.declare(e,{type:"function",inferred:!0}),new he(n,e,Q(zt(n,t)),{metadata:i,canonical:!0});if(ne(s))return new he(n,e,Q(zt(n,t)),{metadata:i,canonical:!0});let a=s.operator;if(r??=a.scoped?{parent:n.context.lexicalScope,bindings:new Map}:void 0,a.lazy){let f=t.map(d=>n.box(d,{canonical:!1}));if(a.canonical){try{if(o=a.canonical(f,{engine:n,scope:r}),o)return o}catch(d){console.error(d.message)}return o=new he(n,e,f,{metadata:i,canonical:!1}),o}return o=new he(n,e,yi(n,f,a.signature.type,a.lazy,a.broadcastable)??f,{metadata:i,canonical:!0,scope:r}),o}let u=t.map(f=>n.box(f));if(a.canonical){try{let d=a.canonical(u,{engine:n,scope:r});if(d)return d}catch(d){console.error(d.message)}return new he(n,e,u,{metadata:i,canonical:!1})}let l=Q(u,a.associative?e:void 0),c=yi(n,l,a.signature.type,a.lazy,a.broadcastable);if(c)return new he(n,e,c,{metadata:i,canonical:!0,scope:r});if(l.length===1&&l[0].operator===e){if(a.involution)return l[0].op1;if(a.idempotent)return new he(n,e,u[0].ops,{metadata:i,canonical:!0,scope:r})}return new he(n,e,Wi(e,l),{metadata:i,canonical:!0,scope:r})}function fg(n,e,t,i,r){let o=[];if(e==="Add"||e==="Multiply")o=He(n,zt(n,t,r),{flatten:e});else if(e==="Negate"||e==="Square"||e==="Sqrt"||e==="Exp")o=He(n,zt(n,t,r),1);else if(e==="Ln"||e==="Log")o=He(n,zt(n,t,r)),o.length===0&&(o=[n.error("missing")]);else if(e==="Power"||e==="Root")o=He(n,zt(n,t,r),2);else if(e==="Divide")o=He(n,zt(n,t,r)),o.length===0&&(o=[n.error("missing"),n.error("missing")]),o.length===1&&(o=[o[0],n.error("missing")]);else return null;if(!o.every(s=>s.isValid))return new he(n,e,o,{metadata:i,canonical:!0});if(e==="Add")return Ke(n,o);if(e==="Negate")return lc(o[0]);if(e==="Multiply")return _e(n,o);if(e==="Divide")return o.length===2?un(...o):o.slice(1).reduce((s,a)=>un(s,a),o[0]);if(e==="Exp")return Kn(n.E,o[0]);if(e==="Square")return Kn(o[0],n.number(2));if(e==="Power")return Kn(o[0],o[1]);if(e==="Root")return wt(o[0],o[1]);if(e==="Sqrt")return wt(o[0],2);if(e==="Ln"||e==="Log"){if(o.length>0){if(o[0].is(1))return n.Zero;if(o.length===1)return new he(n,e,o,{metadata:i,canonical:!0})}return new he(n,"Log",o,{metadata:i,canonical:!0})}return null}function dg(n,e){if(e.isZero)return n.Zero;if(e.isOne)return n.One;if(e.isNegativeOne)return n.NegativeOne;if(e.isNaN)return n.NaN;if(e.isNegativeInfinity)return n.NegativeInfinity;if(e.isPositiveInfinity)return n.PositiveInfinity;if(e=e.asExact??e,!e.isExact){let o=e.im;return o===0?n.number(e.bignumRe??e.re):e.re===0?n.number(n.complex(0,o)):e.bignumRe!==void 0&&!Mt(e.bignumRe)?Ke(n,[n.number(e.bignumRe),n.number(n.complex(0,o))]):n.number(n.complex(e.re,e.im))}let t=[],i=e;if(i.sign!==0)if(i.radical===1)t.push(n.number(i.rational));else{let o=i.rational,s=n.function("Sqrt",[n.number(i.radical)]);if(Ae(o))t.push(s);else{let[a,u]=o;u===1?a===1?t.push(s):t.push(n.function("Multiply",[n.number(a),s])):a===1?t.push(n.function("Divide",[s,n.number(u)])):t.push(n.function("Divide",[n.function("Multiply",[n.number(a),s]),n.number(u)]))}}let r;return e.im===0?t.length===0?n.Zero:(r=t.length===1?t[0]:_e(n,t),r):t.length===0?n.number(n.complex(0,e.im)):(r=t.length===1?t[0]:_e(n,t),Ke(n,[r,n.number(n.complex(0,e.im))]))}function zt(n,e,t){return e.every(i=>i instanceof W&&i.isCanonical)?e:e.map(i=>n.box(i,{scope:t}))}var Sr=class n{_items;constructor(e){e?e instanceof n?this._items=new Map(e._items):this._items=new Map(e):this._items=new Map}has(e){for(let t of this._items.keys())if(t.isSame(e))return!0;return!1}get(e){for(let[t,i]of this._items)if(t.isSame(e))return i}clear(){this._items.clear()}set(e,t){for(let i of this._items.keys())if(i.isSame(e)){this._items.set(i,t);return}this._items.set(e,t)}delete(e){this._items.delete(e)}[Symbol.iterator](){return this._items.entries()}entries(){return this._items.entries()}};var qe=class extends W{_value;_hash;constructor(e,t,i){super(e,i?.metadata),t instanceof j||typeof t=="number"?this._value=t:this._value=e._numericValue(t)}get hash(){return this._hash??=cn(this._value.toString()),this._hash}get json(){let e=this._value;return typeof e=="number"?Number.isNaN(e)?"NaN":Number.isFinite(e)?e:e>0?"PositiveInfinity":"NegativeInfinity":e.toJSON()}get operator(){return"Number"}get isPure(){return!0}get isCanonical(){return!0}set isCanonical(e){}get complexity(){return 1}valueOf(){return typeof this._value=="number"?this._value:this._value.N().valueOf()}get numericValue(){return this._value}get isNumberLiteral(){return!0}get re(){return typeof this._value=="number"?this._value:this._value.re}get im(){return typeof this._value=="number"?0:this._value.im}get bignumRe(){if(typeof this._value!="number")return this._value.bignumRe}get bignumIm(){return typeof this._value=="number"?this.engine._BIGNUM_ZERO:this.engine.bignum(this._value.im)}neg(){let e=this._value;return e===0?this:typeof e=="number"?this.engine.number(-e):this.engine.number(e.neg())}inv(){return typeof this._value=="number"?Math.abs(this._value)===1?this:Number.isInteger(this._value)?this.engine.number(this.engine._numericValue({rational:[1,this._value]})):this.engine.number(1/this._value):Math.abs(this.re)===1&&this.im===0?this:this.engine.number(this._value.inv())}abs(){return this.isPositive?this:typeof this._value=="number"?this.engine.number(-this._value):this.engine.number(this._value.abs())}add(e){let t=this.engine;return this.is(0)?t.box(e):typeof e=="number"?e===0?this:typeof this._value=="number"?t.number(this._value+e):t.number(this._value.add(e)):e.numericValue!==null?typeof this._value=="number"?typeof e.numericValue=="number"?t.number(this._value+e.numericValue):t.number(e.numericValue.add(this._value)):t.number(this._value.add(e.numericValue)):H(this,e.canonical)}mul(e){if(this.is(1))return this.engine.box(e);if(this.is(-1))return this.engine.box(e).neg();let t=this.engine;return typeof e=="number"?e===1?this:e===0||this.is(0)?this.engine.Zero:e===-1?this.neg():t.number(typeof this._value=="number"?this._value*e:this._value.mul(e)):typeof this._value=="number"&&typeof e=="number"?t.number(this._value*e):e instanceof j?this.is(1)?t.number(e):this.is(-1)?t.number(e.neg()):t.number(e.mul(this._value)):e.numericValue!==null?t.number(t._numericValue(this._value).mul(e.numericValue)):ae(this,e)}div(e){return hi(this,e)}pow(e){return Ie(this,e,{numericApproximation:!1})}root(e){if(typeof e=="number"){if(e===0)return this.engine.NaN;if(e===1)return this;if(e===-1)return this.inv();if(e===2)return this.sqrt();if(this.isNegative){if(e%2===1)return this.neg().root(e).neg();if(e%2===0)return this.neg().root(e)}}else{if(e=e.canonical,e.is(0))return this.engine.NaN;if(e.is(1))return this;if(e.is(-1))return this.inv();if(e.is(2))return this.sqrt();if(this.isNegative){if(e.isOdd)return this.neg().root(e).neg();if(e.isEven)return this.neg().root(e)}}let t=typeof e=="number"?e:e.re;if(Number.isInteger(t))if(typeof this._value=="number"){let i=this._value**(1/t);if(Number.isInteger(i))return this.engine.number(i)}else{let i=this._value.root(t);if(E(i.type,"integer"))return this.engine.number(i)}return this.engine._fn("Root",[this,this.engine.box(e)])}sqrt(){return typeof this._value=="number"?this._value===0||this._value===1?this:this._value===-1?this.engine.I:this._value>0&&Number.isInteger(this._value)&&this._value<$?this.engine.number(this.engine._numericValue({radical:this._value})):this.engine.number(this.engine._numericValue(this._value).sqrt()):this.is(0)||this.is(1)?this:this.engine.number(this._value.sqrt())}ln(e){let t=e?this.engine.box(e):void 0;if(this.is(0))return this.engine.NegativeInfinity;if(t&&this.isSame(t))return this.engine.One;if((!t||t.symbol==="ExponentialE")&&this.symbol==="ExponentialE")return this.engine.One;let i=this.re;if(Number.isInteger(i)&&i>0){let r=this.engine,[o,s]=Yt(i,3);if(o!==1)return r.number(o).ln(t).mul(3).add(r.number(s).ln(t));if([o,s]=Yt(i,2),o!==1)return r.number(o).ln(t).mul(2).add(r.number(s).ln(t))}return t&&t.isInteger?typeof this._value=="number"?this.engine.number(Math.log(this._value)/Math.log(t.re)):this.engine.number(this._value.ln(t.re)):t===void 0?typeof this._value=="number"?this.engine.number(Math.log(this._value)):this.engine.number(this._value.ln()):this.engine._fn("Ln",[this])}get value(){return this}get type(){return typeof this._value=="number"?Number.isNaN(this._value)?S.number:Number.isFinite(this._value)?Number.isInteger(this._value)?S.finite_integer:S.finite_real:S.non_finite_number:new S(this._value.type,this.engine._typeResolver)}get sgn(){if(this._value===0)return"zero";let e;return typeof this._value=="number"?e=Math.sign(this._value):e=this._value.sgn(),e===void 0||Number.isNaN(e)?"unsigned":e===0?"zero":e>0?"positive":"negative"}get numerator(){return typeof this._value=="number"?this:this.engine.number(this._value.numerator)}get denominator(){return typeof this._value=="number"?this.engine.One:this.engine.number(this._value.denominator)}get numeratorDenominator(){if(typeof this._value=="number")return[this,this.engine.One];let e=this.engine;return[e.number(this._value.numerator),e.number(this._value.denominator)]}subs(e,t){return this.isStructural?this:this.structural.subs(e,t)}replace(e,t){return et(this.structural,e,t).at(-1)?.value??null}match(e,t){return Ni(this.structural,e,t)}get isPositive(){return typeof this._value=="number"?!Number.isNaN(this._value)&&this._value>0:_i(this.sgn)}get isNonNegative(){return typeof this._value=="number"?!Number.isNaN(this._value)&&this._value>=0:Si(this.sgn)}get isNegative(){return typeof this._value=="number"?!Number.isNaN(this._value)&&this._value<0:Ti(this.sgn)}get isNonPositive(){return typeof this._value=="number"?!Number.isNaN(this._value)&&this._value<=0:Bi(this.sgn)}get isOdd(){if(this.is(1)||this.is(-1))return!0;if(this.is(0))return!1;if(!this.isFinite||!this.isInteger)return;if(typeof this._value=="number")return this._value%2!==0;let[e,t]=[this._value.numerator,this._value.denominator];return t.isOne?e.re%2!==0:e.re%2!==0&&t.re%2===0}get isEven(){let e=this.isOdd;return e!==void 0?!e:void 0}get isInfinity(){return typeof this._value=="number"?!Number.isFinite(this._value)&&!Number.isNaN(this._value):Number.isFinite(this._value.im)?this._value.isPositiveInfinity||this._value.isNegativeInfinity:!0}get isNaN(){return typeof this._value=="number"?Number.isNaN(this._value):this._value.isNaN}get isFinite(){return this.isInfinity===!1&&this.isNaN===!1}get isNumber(){return!0}get isInteger(){return typeof this._value=="number"?Number.isInteger(this._value):E(this._value.type,"integer")}get isRational(){return typeof this._value=="number"?Number.isInteger(this._value):E(this._value.type,"rational")}get isReal(){return typeof this._value=="number"?!0:E(this._value.type,"real")}is(e){return typeof e=="number"?typeof this._value=="number"?Object.is(this._value,e):this._value.isNaN?Object.is(e,NaN):this._value.eq(e):typeof e=="bigint"?typeof this._value=="number"?ie(this._value)===e:this._value.eq(this.engine._numericValue(e)):typeof e=="boolean"?!1:this.isSame(e)}get canonical(){return this}get isStructural(){return typeof this._value=="number"||this.type.matches("rational")?!0:!(this._value instanceof K)}get structural(){return this.isStructural?this:this.engine.box(this.json,{canonical:!1,structural:!0})}toNumericValue(){let e=this._value;return typeof e=="number"?[this.engine._numericValue(e),this.engine.One]:[e,this.engine.One]}simplify(e){return xt(this.structural,e).at(-1).value??this}evaluate(e){return e?.numericApproximation?this.N():this}N(){let e=this._value;if(typeof e=="number")return this;let t=e.N();return e===t?this:this.engine.number(t)}};function Mo(n,e){if(e==null)return NaN;if(e instanceof j)return e;if(typeof e=="number")return Number.isInteger(e)&&e>=-$&&e<=$||!Number.isFinite(e)?e:n._numericValue(e);if(e instanceof M){let t=e.toNumber();return e.isInteger()&&Math.abs(t)<=$?t:e.isNaN()?NaN:e.isFinite()?n._numericValue(e):t>0?1/0:-1/0}if(typeof e=="bigint")return e>=-$&&e<=$?Number(e):n._numericValue(e);if(e instanceof q)return e.im===0?Mo(n,e.re):e.isNaN()?NaN:!e.isFinite()&&e.im===0?e.re>0?1/0:-1/0:n._numericValue({re:e.re,im:e.im});if(typeof e=="object"&&"num"in e){if(typeof e.num=="number")return Mo(n,e.num);if(typeof e.num!="string")throw new Error("MathJSON `num` property should be a string of digits");return Ef(n,e.num)}if(typeof e=="string")return Ef(n,e);if(e[1]==0)return NaN;if(typeof e[1]=="number"&&!Number.isFinite(e[1]))return Number.isFinite(e[0])?0:NaN;if(typeof e[0]=="number"&&!Number.isFinite(e[0])){let t=e[0]>0?1:-1;return e[0]>0?t>0?1/0:-1/0:e[0]<0?t>0?-1/0:1/0:NaN}return n._numericValue(e)}function Ef(n,e){if(e=e.toLowerCase(),/[0-9][nd]$/.test(e)&&(e=e.slice(0,-1)),e=e.replace(/[\u0009-\u000d\u0020\u00a0]/g,""),e==="nan")return NaN;if(e==="infinity"||e==="+infinity"||e==="oo"||e==="+oo")return Number.POSITIVE_INFINITY;if(e==="-infinity"||e==="-oo")return Number.NEGATIVE_INFINITY;if(e==="0")return 0;if(e==="1")return 1;if(e==="-1")return-1;if(/\([0-9]+\)/.test(e)){let[i,r,o,s]=e.match(/(.+)\(([0-9]+)\)(.+)?$/)??[];e=r+o.repeat(Math.ceil(n.precision/o.length))+(s??"")}let t=ie(e);return t!==null?t>=-$&&t<=$?Number(t):n._numericValue(t):n._numericValue(n.bignum(e))}var Gt=class extends W{_hash;_id;_def;constructor(e,t,i){super(e,i?.metadata),Te(t),`${t}${nn(t)}`,this._id=t,this._def=i?.def}get json(){return Ge(this._id)?this._id:{sym:this._id}}get hash(){return this._hash??=cn(this._id),this._hash}get isPure(){return!0}get isConstant(){let e=this._def;return(ne(e)&&e?.value.isConstant)??!1}bind(){}reset(){}get isCanonical(){return this._def!==void 0}set isCanonical(e){throw new Error("Setting the isCanonical property is not allowed. Use the canonical() method instead.")}get canonical(){return this._def?this:this.engine.symbol(this._id)}is(e){return e===!0?this.symbol==="True"||this.value?.symbol==="True":e===!1?this.symbol==="False"||this.value?.symbol==="False":e instanceof W&&e.symbol?this.symbol===e.symbol:this.value?.is(e instanceof W?e.value:e)??!1}toNumericValue(){this.isCanonical;let e=this.engine;return this.symbol==="ImaginaryUnit"?[e._numericValue({re:0,im:1}),e.One]:this.symbol==="PositiveInfinity"||this.isInfinity&&this.isPositive?[e._numericValue(1/0),e.One]:this.symbol==="NegativeInfinity"||this.isInfinity&&this.isNegative?[e._numericValue(-1/0),e.One]:this.symbol==="NaN"?[e._numericValue(NaN),e.One]:[e._numericValue(1),this]}neg(){return Lt(this)}inv(){return this.engine._fn("Divide",[this.engine.One,this])}abs(){return this.isNonNegative?this:this.isNonPositive?this.neg():this.engine._fn("Abs",[this])}add(e){return e===0?this:H(this,this.engine.box(e))}mul(e){if(e===1)return this;if(e===-1)return this.neg();if(e===0&&!this.isNaN)return this.engine.Zero;if(e instanceof j){if(e.isOne)return this;if(e.isNegativeOne)return this.neg();if(e.isZero&&!this.isNaN)return this.engine.Zero}return ae(this,this.engine.box(e))}div(e){return hi(this,e)}pow(e){return Ie(this,e,{numericApproximation:!1})}root(e){let t=typeof e=="number"?e:e.im===0?e.re:void 0,i=this.engine;return this.symbol==="ComplexInfinity"||t===0?i.NaN:t===1?this:t===2?this.sqrt():t===-1?this.inv():i._fn("Root",[this,i.box(e)])}sqrt(){let e=this.engine;return this.symbol==="ComplexInfinity"?e.NaN:this.is(0)?this:this.is(1)?this.engine.One:this.is(-1)?e.I:e._fn("Sqrt",[this])}ln(e){let t=e?this.engine.box(e):void 0;return this.is(0)?this.engine.NegativeInfinity:(!t||t.symbol==="ExponentialE")&&this.symbol==="ExponentialE"?this.engine.One:t?t.re===10?this.engine._fn("Log",[this]):this.engine._fn("Log",[this,t]):this.engine._fn("Ln",[this])}solve(e){let t=cr(e);return t.length!==1?null:t.includes(this.symbol)?[this.engine.Zero]:null}get complexity(){return 7}get operator(){return"Symbol"}get symbol(){return this._id}get baseDefinition(){return this.valueDefinition??this.operatorDefinition}get valueDefinition(){if(ne(this._def))return this._def.value}get operatorDefinition(){if(Z(this._def))return this._def.operator}infer(e,t="narrow"){if(!this._def)return!1;let i=this._def;if(ne(i))return i.value.inferredType||i.value.type.isUnknown?(i.value.isConstant,i.value.type=this.engine.type(t==="widen"?oe(i.value.type.type,e):vt(i.value.type.type,e)),!0):!1;if(Z(i)){let r=this.engine.type(t==="widen"?oe(i.operator.signature.type,e):vt(i.operator.signature.type,e));return r.matches("function")?(i.operator.signature=r,!0):(delete i.operator,i.value={value:{type:r}},!0)}return!1}get _value(){if(!(!this._def||Z(this._def)))return this._def.value.isConstant?this._def.value.value:this.engine._getSymbolValue(this._id)}get value(){return Z(this._def)?this.engine._fn("Operator",[this.engine.string(this._id)]):this._value}set value(e){if(!this._def)throw new Error(`Cannot set value of non-canonical ${this._id}`);let t=this.engine;t.forget(this._id);let i;if(typeof e=="boolean"&&(e=e?t.True:t.False),typeof e=="string"&&(e=t.string(e)),typeof e=="object")if("re"in e&&"im"in e)e=t.complex(e.re??0,e.im);else if("num"in e&&"denom"in e)e=t.number([e.num,e.denom]);else if(Array.isArray(e))e=t._fn("List",e.map(r=>t.box(r)));else throw new Error(`Invalid value for symbol ${this._id}: ${e}`);if(e!==void 0&&(i=t.box(e).evaluate()),i?.type.matches("function")){delete this._def.value,this._def.operator={signature:i.type,evaluate:i};return}if(ne(this._def)&&this._def.value.isConstant)throw new Error(`The value of the constant "${this._id}" cannot be changed`);t._setSymbolValue(this._id,i)}get type(){let e=this._def;return ne(e)?e.value.type:Z(e)?e.operator.signature:S.unknown}set type(e){if(!this._def)throw new Error(`Cannot set type of non-canonical symbol "${this._id}"`);if(this._id[0]==="_")throw new Error(`The type of the wildcard "${this._id}" cannot be changed`);this.engine.forget(this._id),typeof e=="string"?e=A(e):e instanceof S&&(e=e.type),e==="function"||Gr(e)?Z(this._def)?this._def.operator.signature=e:(delete this._def.value,this._def.operator={signature:e}):Z(this._def)?(delete this._def.operator,this._def.value={type:e}):this._def.value.type=e}has(e){return typeof e=="string"?this._id===e:e.includes(this._id)}match(e,t){return Ni(this,e,t)}get sgn(){return this.value?.sgn}get isOdd(){return this.value?.isOdd}get isEven(){return this.value?.isEven}get isFinite(){return this.value?.isFinite}get isInfinity(){return this.value?.isInfinity}get isNaN(){return this.value?.isNaN}get isPositive(){return _i(this.sgn)}get isNonPositive(){return Bi(this.sgn)}get isNegative(){return Ti(this.sgn)}get isNonNegative(){return Si(this.sgn)}get isFunction(){if(!this.type.isUnknown)return this.type.matches("function")}get isNumber(){let e=this.type;if(!e.isUnknown)return e.matches("number")}get isInteger(){let e=this.type;if(!e.isUnknown)return e.matches("integer")}get isRational(){let e=this.type;if(!e.isUnknown)return e.matches("rational")}get isReal(){let e=this.type;if(!e.isUnknown)return e.matches("real")}get re(){return this.value?.re??NaN}get im(){return this.value?.im??NaN}get bignumRe(){return this.value?.bignumRe}get bignumIm(){return this.value?.bignumIm}simplify(e){return xt(this,e).at(-1)?.value??this}evaluate(e){let t=this.valueDefinition;if(!t)return this;let i=t.holdUntil;if(t.isConstant){if(e?.numericApproximation){if(i==="never"||i==="evaluate"||i==="N")return t.value?.N()??this}else if(i==="never"||i==="evaluate")return t.value?.evaluate(e)??this}else if(i==="never"||i==="evaluate"||i==="N"&&e?.numericApproximation){let r=this.engine._getSymbolValue(this._id)??this;return r.operator==="Unevaluated"&&(r=r.evaluate(e)??this),r}return this}N(){let e=this.valueDefinition;return e&&e.holdUntil==="never"?this:e?.value?.N()??this}replace(e,t){return et(this,e,t).at(-1)?.value??null}subs(e,t){let i=t?.canonical??this.isCanonical;return e[this._id]===void 0?i?this.canonical:this:this.engine.box(e[this._id],{canonical:i})}get _asCollection(){if(ne(this._def))return this._def.value.collection}get isCollection(){return this._asCollection?.iterator!==void 0||(this._value?.isCollection??!1)}get isIndexedCollection(){return this._asCollection?.at!==void 0||(this._value?.isIndexedCollection??!1)}get isLazyCollection(){return this._asCollection?.isLazy?.(this._value??this)??this._value?.isLazyCollection??!1}xcontains(e){return this._asCollection?.contains?.(this._value??this,e)??this._value?.xcontains?.(e)}get xsize(){return this._asCollection?.count(this._value??this)??this._value?.xsize??0}get isEmptyCollection(){return this._asCollection?.isEmpty?.(this._value??this)??this._value?.isEmptyCollection??this.xsize===0}get isFiniteCollection(){return this._asCollection?.isFinite?.(this._value??this)??this._value?.isFiniteCollection??isFinite(this.xsize)}each(){let e=this._asCollection?.iterator?.(this._value??this);return e?function*(){let t=e.next();for(;!t.done;)yield t.value,t=e.next()}():this._value?.each()??function*(){}()}at(e){return this._asCollection?.at?.(this._value??this,e)??this._value?.at?.(e)}get(e){return this._value?.get?.(e)}indexWhere(e){return this._asCollection?.indexWhere?this._asCollection.indexWhere(this._value??this,e):this._value?.indexWhere(e)}subsetOf(e,t){return this._asCollection?.subsetOf?.(this._value??this,e,t)??this._value?.subsetOf?.(e,t)??!1}};var Nf=["\\varphi -> \\frac{1+\\sqrt{5}}{2}",pg,mg,n=>{let e=Ze(n);return e?{value:e,because:"expand"}:void 0},n=>{if(n.operator==="Add")return{value:H(...n.ops.map(e=>e.canonical.simplify())),because:"addition"}},n=>{if(n.operator==="Negate")return{value:n.op1.neg(),because:"negation"}},n=>{if(n.operator==="Multiply")return{value:ae(...n.ops.map(e=>e.canonical.simplify())),because:"multiplication"}},n=>{if(n.operator==="Divide")return{value:n.op1.div(n.op2),because:"division"};if(n.operator==="Rational"&&n.nops===2)return{value:n.op1.div(n.op2),because:"rational"}},n=>{if(!n.op1.isNumberLiteral)return;if(n.operator==="Sqrt"){if(n.op1.isNegative)return{value:n.engine.box(["Multiply",["Sqrt",n.op1.neg()],"ImaginaryUnit"]).simplify(),because:"sqrt"};let i=n.op1.sqrt();return vf(i.numericValue)?{value:i,because:"sqrt"}:void 0}let e=n.op1,t=n.op2;if(t.isNumberLiteral&&e.isInteger&&t.isInteger&&e.re<$&&t.re<$){if(n.operator==="Power")return{value:n.op1.pow(n.op2),because:"power"};if(n.operator==="Root"){let i=n.op1.root(n.op2);if(vf(i.numericValue))return{value:n.op1.root(n.op2),because:"root"}}}},n=>{if(n.operator!=="Abs")return;let e=n.op1;if(e.isNonNegative)return{value:e,because:"|x| -> x"};if(e.isNegative)return{value:e.neg(),because:"|x| -> -x"}},n=>{if(n.operator!=="Sign")return;let e=n.sgn,t=n.engine;if(e!==void 0){if(e==="positive")return{value:t.One,because:"sign positive"};if(e==="negative")return{value:t.One,because:"sign negative"};if(e==="zero")return{value:t.Zero,because:"sign zero"};if(e==="unsigned")return{value:t.NaN,because:"sign unsinged"}}},n=>{if(n.operator==="Ln")return{value:n.op1.ln(n.ops[1]),because:"ln"};if(n.operator==="Log")return{value:n.op1.ln(n.ops[1]??10),because:"log"}},n=>{if(n.operator==="Max"){if(n.nops===0)return{value:n.engine.NegativeInfinity,because:"max"};if(n.nops===1)return{value:n.op1,because:"max"}}else if(n.operator==="Min"){if(n.nops===0)return{value:n.engine.PositiveInfinity,because:"min"};if(n.nops===1)return{value:n.op1,because:"min"}}else if(n.operator==="Supremum"){if(n.nops===0)return{value:n.engine.NegativeInfinity,because:"sup"};if(n.nops===1)return{value:n.op1,because:"sup"}}else if(n.operator==="Infimum"){if(n.nops===0)return{value:n.engine.PositiveInfinity,because:"inf"};if(n.nops===1)return{value:n.op1,because:"inf"}}},n=>{if(n.operator!=="Derivative")return;let e=n.engine,[t,i]=n.ops;if(n.nops===2)return{value:e.function("Derivative",[t.simplify(),i]),because:"derivative"};if(n.nops===1)return{value:e.function("Derivative",[t.simplify()]),because:"derivative"}},n=>n.operator!=="Hypot"?void 0:{value:n.engine.box(["Sqrt",["Add",["Square",n.op1],["Square",n.op2]]]).simplify(),because:"hypot(x,y) -> sqrt(x^2+y^2)"},n=>{if(n.operator!=="Congruent"||n.nops<3)return;let e=n.engine;return{value:e._fn("Equal",[e.function("Mod",[n.ops[0],n.ops[2]]).simplify(),e.function("Mod",[n.ops[1],n.ops[2]]).simplify()]).simplify(),because:"congruent"}},n=>{n.operator},n=>{if(!_a(n))return;let e=Nr(n.operator,n.op1);if(e)return{value:e,because:"constructible value"}},n=>{if(n.operator!=="InverseFunction")return;let e=vr(n.engine,n.ops);if(e)return{value:e,because:"inverse function"}},n=>{if(n.operator!=="Arctan2")return;let[e,t]=n.ops,i=n.engine;return e.isFinite===!1&&t.isFinite===!1?{value:i.NaN,because:"arctan2"}:e.is(0)&&t.is(0)?{value:i.Zero,because:"arctan2"}:t.isFinite===!1?{value:t.isPositive?i.Zero:i.Pi,because:"arctan2"}:e.isFinite===!1?{value:e.isPositive?i.Pi.div(2):i.Pi.div(-2),because:"arctan2"}:e.is(0)?{value:t.isPositive?i.Zero:i.Pi,because:"arctan2"}:{value:i.function("Arctan",[e.div(t)]).simplify(),because:"arctan2"}},"\\arcsinh(x) -> \\ln(x+\\sqrt{x^2+1})","\\arccosh(x) -> \\ln(x+\\sqrt{x^2-1})","\\arctanh(x) -> \\frac{1}{2}\\ln(\\frac{1+x}{1-x})","\\arccoth(x) -> \\frac{1}{2}\\ln(\\frac{x+1}{x-1})","\\arcsech(x) -> \\ln(\\frac{1+\\sqrt{1-x^2}}{x})","\\arccsch(x) -> \\ln(\\frac{1}{x} + \\sqrt{\\frac{1}{x^2}+1})",ef];function pg(n){let e=n.operator;if(!vn(e)&&!ti(e))return;let t=n,i=n.engine,r=n.op1.simplify(),o=n.op2.simplify();if(n=i.function(n.operator,[r,o]),n=gt(n)??n,Je(n.operator),n.nops===2&&!n.op2.is(0)){let s=gt(i.function(n.operator,[n.op1.sub(n.op2),i.Zero]));i.costFunction(s)<i.costFunction(n)&&(n=s)}if(!n.isSame(t))return{value:n,because:"simplify-relational-operator"}}function mg(n){return n.operator!=="List"||!n.ops.every(t=>ti(t.operator)||vn(t.operator))?void 0:{value:n.engine.function("List",n.ops.map(t=>t.simplify())),because:"simplify-system-of-equations"}}function vf(n){return n===null?!1:typeof n=="number"?Number.isInteger(n):n.isExact}function _f(n){if(n.operator==="Element")return yg(n);if(n.operator==="Equal")return gg(n);if(vn(n.operator))return hg(n);throw new Error("Unsupported assumption. Use `Element`, `Equal` or an inequality")}function gg(n){n.operator;let e=n.unknowns;if(e.length===0){let r=n.evaluate();return r.symbol==="True"?"tautology":r.symbol==="False"?"contradiction":(n.canonical.evaluate(),"not-a-predicate")}let t=n.engine,i=n.op1.symbol;if(i&&!bg(t,i)&&!n.op2.has(i)){let r=n.op2.evaluate();if(!r.isValid)return"not-a-predicate";let o=t.lookupDefinition(i);return!o||!ne(o)?(t.declare(i,{value:r}),"ok"):o.value.type&&!r.type.matches(o.value.type)&&!o.value.inferredType?"contradiction":"ok"}if(e.length===1){let r=e[0],o=ko(n,r);o.length===0&&t.context.assumptions.set(t.function("Equal",[n.op1.sub(n.op2),0]),!0);let s=o.length===1?o[0]:t.function("List",o),a=t.lookupDefinition(r);return!a||!ne(a)?(t.declare(r,{value:s}),"ok"):a.value.type&&!o.every(u=>!u.type||s.type.matches(u.type))?"contradiction":"ok"}return t.context.assumptions.set(n,!0),"ok"}function hg(n){let e=n.engine,t="",i,r;if(n.operator==="Less"?(i=n.op1,r=n.op2,t="<"):n.operator==="LessEqual"?(i=n.op1,r=n.op2,t="<="):n.operator==="Greater"?(i=n.op2,r=n.op1,t="<"):n.operator==="GreaterEqual"&&(i=n.op2,r=n.op1,t="<="),!t)return"internal-error";let o=i.sub(r),s=e.box([t==="<"?"Less":"LessEqual",o,0]).evaluate();if(s.symbol==="True")return"tautology";if(s.symbol==="False")return"contradiction";let a=s.unknowns;return a.length===0?"not-a-predicate":(a.length===1&&(e.lookupDefinition(a[0])||e.declare(a[0],{type:"real"})),s.operator==="Less"||s.operator,e.context.assumptions.set(s,!0),"ok")}function yg(n){n.operator;let e=n.engine,t=xg(n.op1);if(t.length===1){let r=n.op2.evaluate();if(!r.isValid)return"not-a-predicate";let o=ho(r);if(o==="unknown")throw new Error(`Invalid domain "${r.toString()}"`);return e.declare(t[0],o),"ok"}if(n.op1.symbol&&Sf(e,n.op1.symbol)){let r=n.op2.evaluate();if(!r.isValid)return"not-a-predicate";let o=ho(r);e.context?.lexicalScope?.bindings.has(n.op1.symbol)||e.declare(n.op1.symbol,ho(r));let s=e.lookupDefinition(n.op1.symbol);return ne(s)?s.value.type&&!E(o,s.value.type.type)?"contradiction":(s.value.type=new S(o,e._typeResolver),"ok"):Z(s)?E(o,We(s.operator.signature.type))?"ok":"contradiction":"not-a-predicate"}if(t.length>0)return e.context.assumptions.set(n,!0),"ok";let i=n.evaluate();return i.symbol==="True"?"tautology":i.symbol==="False"?"contradiction":"not-a-predicate"}function Sf(n,e){return n.lookupDefinition(e)!==void 0}function xg(n){return n.symbols.filter(e=>!Sf(n.engine,e))}function bg(n,e){let t=n.lookupDefinition(e);return t?!!(ne(t)&&t.value.isConstant||n._getSymbolValue(e)!==void 0):!1}var Tr=class n{True;False;Pi;E;Nothing;Zero;One;Half;NegativeOne;Two;I;NaN;PositiveInfinity;NegativeInfinity;ComplexInfinity;decimalSeparator=".";_BIGNUM_NAN;_BIGNUM_ZERO;_BIGNUM_ONE;_BIGNUM_TWO;_BIGNUM_HALF;_BIGNUM_PI;_BIGNUM_NEGATIVE_ONE;_precision;_angularUnit;_tolerance;_bignumTolerance;_negBignumTolerance;__cache={};_configurationChangeTracker=new Ur;_cost;_commonSymbols={Pi:null,True:null,False:null,All:null,Nothing:null,None:null,Undefined:null,ImaginaryUnit:null,ExponentialE:null};_commonNumbers={"-5":null,"-4":null,"-3":null,"-2":null,2:null,3:null,4:null,5:null,6:null,7:null,8:null,9:null,10:null,11:null,12:null,36:null};_evalContextStack=[];get context(){return this._evalContextStack[this._evalContextStack.length-1]}get contextStack(){return[...this._evalContextStack]}set contextStack(e){this._evalContextStack=[...e]}get _typeResolver(){let e=this;return{get names(){let t=[],i=e.context.lexicalScope;for(;i;)i.types&&t.push(...Object.keys(i.types)),i=i.parent;return t},resolve:t=>{let i=e.context.lexicalScope;for(;i;){if(i.types?.[t])return i.types[t];i=i.parent}},forward:t=>{let i={kind:"reference",name:t,alias:!1,def:void 0};return e.context.lexicalScope.types??={},e.context.lexicalScope.types[t]=i,i}}}declareType(e,t,{alias:i}={}){if(!lu(e))throw Error(`The type name "${e}" is invalid`);let r=this.context.lexicalScope;if(r.types?.[e])throw Error(`The type "${e}" is already defined in the current scope`);r.types??={},i??=!1,r.types[e]={kind:"reference",name:e,alias:i,def:void 0};let o=t instanceof S?t.type:typeof t=="string"?A(t,this._typeResolver):t;r.types[e].def=o}get trace(){return this._evalContextStack.map(e=>e.name).filter(e=>e!==void 0).reverse()}_generation=0;strict;deadline;_latexDictionaryInput;__indexedLatexDictionary;_bignum;static getStandardLibrary(e="all"){return Sa(e)}static getLatexDictionary(e="all"){return al(e)}constructor(e){if(e!==void 0&&typeof e!="object")throw Error("Unexpected argument");this.strict=!0;let t=e?.precision??Ko;t==="machine"&&(t=Math.floor(kn)),this._bignum=M.clone({precision:t}),this._precision=t,this.tolerance=e?.tolerance??"auto",this._angularUnit="rad",this.Zero=new qe(this,0),this.One=new qe(this,1),this.Half=new qe(this,{rational:[1,2]}),this.NegativeOne=new qe(this,-1),this.Two=new qe(this,2),this.NaN=new qe(this,Number.NaN),this.PositiveInfinity=new qe(this,Number.POSITIVE_INFINITY),this.NegativeInfinity=new qe(this,Number.NEGATIVE_INFINITY),this.I=new qe(this,{im:1}),this.ComplexInfinity=new qe(this,{re:1/0,im:1/0}),this._reset(),this.pushScope(void 0,"system"),this.declareType("limits","expression<Limits>");for(let r of n.getStandardLibrary("domains"))Ta(this,r);let i=e?.ids??n.getStandardLibrary();for(let r of i)Ta(this,r);for(let r of Object.keys(this._commonSymbols))this._commonSymbols[r]=new Gt(this,r,{def:this.lookupDefinition(r)});this.True=this._commonSymbols.True,this.False=this._commonSymbols.False,this.Pi=this._commonSymbols.Pi,this.E=this._commonSymbols.ExponentialE,this.Nothing=this._commonSymbols.Nothing,this.pushScope(void 0,"global"),fu(this)}toJSON(){return"[ComputeEngine]"}[Symbol.toStringTag]="ComputeEngine";get latexDictionary(){return this._latexDictionaryInput??n.getLatexDictionary()}set latexDictionary(e){this._latexDictionaryInput=e,this.__indexedLatexDictionary=bs(e,t=>{throw Error(typeof t.message=="string"?t.message:t.message.join(","))})}get _indexedLatexDictionary(){return this.__indexedLatexDictionary??=bs(this.latexDictionary,e=>console.error(e)),this.__indexedLatexDictionary}_reset(){this._bignum,this._generation+=1,this._BIGNUM_NEGATIVE_ONE=this.bignum(-1),this._BIGNUM_NAN=this.bignum(NaN),this._BIGNUM_ZERO=this.bignum(0),this._BIGNUM_ONE=this.bignum(1),this._BIGNUM_TWO=this.bignum(2),this._BIGNUM_HALF=this._BIGNUM_ONE.div(this._BIGNUM_TWO),this._BIGNUM_PI=this._BIGNUM_NEGATIVE_ONE.acos();for(let e of Object.values(this._commonSymbols))e?.reset();for(let e of Object.keys(this.__cache))this.__cache[e].value&&(this.__cache[e].purge?this.__cache[e].value=this.__cache[e].purge(this.__cache[e].value):delete this.__cache[e]);this._configurationChangeTracker.notifyNow()}listenToConfigurationChange(e){return this._configurationChangeTracker.listen(e)}get precision(){return this._precision}set precision(e){e==="machine"&&(e=kn),e==="auto"&&(e=Ko);let t=this._precision;if(e!==t){if(typeof e!="number"||e<=0)throw Error('Expected "machine" or a positive number');this._precision=Math.max(e,kn),this._bignum=this._bignum.config({precision:this._precision}),this.tolerance="auto",this._reset()}}get angularUnit(){return this._angularUnit}set angularUnit(e){if(e!==this._angularUnit){if(typeof e!="string")throw Error("Expected a string");this._angularUnit=e,this._reset()}}get timeLimit(){return this._timeLimit}set timeLimit(e){e<=0&&(e=Number.POSITIVE_INFINITY),this._timeLimit=e}_timeLimit=2e3;_deadline=void 0;get _timeRemaining(){return this.deadline===void 0?Number.POSITIVE_INFINITY:this.deadline-Date.now()}get iterationLimit(){return this._iterationLimit}set iterationLimit(e){e<=0&&(e=Number.POSITIVE_INFINITY),this._iterationLimit=e}_iterationLimit=1024;get recursionLimit(){return this._recursionLimit}set recursionLimit(e){e<=0&&(e=Number.POSITIVE_INFINITY),this._recursionLimit=e}_recursionLimit=1024;get tolerance(){return this._tolerance}set tolerance(e){e==="auto"&&(e=es),(!Number.isFinite(e)||e<0)&&(e=Math.pow(10,-this._precision+2)),this._tolerance=e,this._bignumTolerance=this.bignum(e),this._negBignumTolerance=this.bignum(-e)}chop(e){return typeof e=="number"?Math.abs(e)<=this._tolerance?0:e:e instanceof M?e.isPositive()&&e.lte(this._bignumTolerance)||e.isNegative()&&e.gte(this._negBignumTolerance)||e.isZero()?0:e:e instanceof q&&Math.abs(e.re)<=this._tolerance&&Math.abs(e.im)<=this._tolerance?0:e}bignum(e){if(typeof e=="bigint")return new this._bignum(e.toString());try{return new this._bignum(e)}catch(t){console.error(t.message)}return this._BIGNUM_NAN}complex(e,t){return e instanceof M&&(e=e.toNumber()),t instanceof M&&(t=t.toNumber()),new q(e,t)}_numericValue(e){if(e instanceof j)return e.asExact??e;let t=r=>this.bignum(r),i=this._precision>kn?r=>new Rt(r,t):r=>new Pt(r,t);if(typeof e=="number")return Number.isInteger(e)?new K(e,i,t):i(e);if(typeof e=="bigint")return new K(e,i,t);if(Yn(e))return new K({rational:e},i,t);if(e instanceof M)return e.isInteger()&&e.e<=hu?new K(ie(e.toString()),i,t):i(e);if(e instanceof q)return e.im===0?this._numericValue(e.re):i({re:e.re,im:e.im});if("im"in e||"re"in e)return e.im!==void 0&&e.im!==0?i(e):e.re instanceof M&&e.re.isInteger()?new K({rational:[ie(e.re.toString()),BigInt(1)]},i,t):typeof e.re=="number"&&Number.isInteger(e.re)?new K({rational:[e.re,1]},i,t):i(e);if("radical"in e||"rational"in e){if(e.radical!==void 0&&(!Number.isInteger(e.radical)||e.radical>=$))throw Error("Unexpected value for radical part:"+e.radical);return e.rational&&se(e.rational)&&(!Number.isInteger(e.rational[0])||!Number.isInteger(e.rational[1]))?i(e):new K(e,i,t)}throw Error("Unexpected value")}get costFunction(){return this._cost??Ia}set costFunction(e){typeof e!="function"&&(this._cost=Ia),this._cost=e}lookupDefinition(e){return to(e,this.context.lexicalScope)}_declareSymbolValue(e,t,i){i??=this.context.lexicalScope,i.bindings.set(e,{value:new _n(this,e,{type:"unknown",inferred:!0})});let r=i.bindings.get(e);return mr(this,e,r,t),i===this.context.lexicalScope&&ne(r)&&r.value.value&&!r.value.isConstant&&(this.context.values[e]=r.value.value),this._generation+=1,r}_declareSymbolOperator(e,t,i){i??=this.context.lexicalScope,i.bindings.set(e,{value:new _n(this,e,{type:"function"})});let r=i.bindings.get(e);return mr(this,e,r,t),this._generation+=1,r}pushScope(e,t){this._pushEvalContext(e??{parent:this.context?.lexicalScope,bindings:new Map},t)}popScope(){this._popEvalContext()}_pushEvalContext(e,t){if(!t){let r=this._evalContextStack.length;r===0&&(t="system"),r===1&&(t="global"),t??=`anonymous_${r-1}`}let i={};for(let[r,o]of e.bindings.entries())ne(o)&&!o.value.isConstant&&(i[r]=o.value.value);this._evalContextStack.push({lexicalScope:e,name:t,assumptions:new Sr(this.context?.assumptions??[]),values:i})}_popEvalContext(){this._evalContextStack.pop()}_inScope(e,t){if(!e)return t();this._evalContextStack.push({lexicalScope:e,name:"",assumptions:new Sr([]),values:{}});try{return t()}finally{this._evalContextStack.pop()}}_printStack(e){e?(e={...e},e.maxDepth??=1,e.details??=!1):e={details:!1,maxDepth:-2},e.maxDepth!==void 0&&e.maxDepth<0&&(e.maxDepth=this._evalContextStack.length+e.maxDepth),e.maxDepth=Math.min(this._evalContextStack.length-1,e.maxDepth);let t=0;for(;t<=e.maxDepth;){let i=this._evalContextStack[this._evalContextStack.length-1-t];t===0?console.group(`${Or}${zo}${i.name}${$e}`):console.groupCollapsed(`${Or}${zo}${i.name}${$e} ${Ht}(${t})${$e}`);let r=[...i.assumptions.entries()].map(([s,a])=>`${s}: ${a}`);if(r.length>0){console.groupCollapsed(`${Or}${r.length} assumptions${$e}`);for(let s of r)console.info(s);console.groupEnd()}let o=Object.entries(i.values);if(o.length+i.lexicalScope.bindings.size===0){console.groupEnd(),t+=1;continue}for(let[s,a]of o)i.lexicalScope.bindings.has(s)?console.info(If(s,i.lexicalScope.bindings.get(s),a)):console.info(a===void 0?`${Ci}${s}${$e}: ${Ht}undefined${$e}`:`${Ci}${s}${$e}: ${Ht}${a.toString()}${$e}`);for(let[s,a]of i.lexicalScope.bindings)s in i.values||console.info(If(s,a));console.groupEnd(),t+=1}}_getSymbolValue(e){let t=this._evalContextStack.length-1;if(!(t<0))for(let i=t;i>=0;i--){let r=this._evalContextStack[i].values;if(e in r)return r[e]}}_setSymbolValue(e,t){let i=this._evalContextStack.length-1;if(i<0)throw new Error(`Unknown symbol "${e}"`);typeof t=="number"?t=this.number(t):typeof t=="boolean"&&(t=t?this.True:this.False);for(let o=i;o>=0;o--){let s=this._evalContextStack[o].values;if(e in s){s[e]=t,this._generation+=1;return}}let r=this.lookupContext(e);if(!r)throw new Error(`Unknown symbol "${e}"`);r.values[e]=t}declare(e,t,i){if(typeof e!="string"){for(let[a,u]of Object.entries(e))this.declare(a,u);return this}let r=e;if(r==="Nothing")return this;if(t==null)throw Error(`Expected a definition or type for "${r}"`);if(typeof r!="string"||r.length===0||!Te(r))throw new Error(`Invalid symbol "${r}": ${nn(r)}`);if(i??=this.context.lexicalScope,i.bindings.has(r))throw new Error(`The symbol "${r}" is already declared in this scope`);let s=t;if(pr(s))return this._declareSymbolValue(r,s,i),this;if(dr(s))return this._declareSymbolOperator(r,s,i),this;{let a=A(s,this._typeResolver);if(!st(a))throw Error([`Invalid argument for "${r}"`,JSON.stringify(s,void 0,4),"Use a type, a `OperatorDefinition` or a `ValueDefinition`"].join(`
|
|
108
|
+
| `));this._declareSymbolValue(r,{type:a},i)}return this}lookupContext(e){if(e.length===0||!Te(e))throw Error(`Invalid symbol "${e}": ${nn(e)}}`);let t=this._evalContextStack.length-1;if(!(t<0))for(let i=t;i>=0;i--){let r=this._evalContextStack[i];if(r.lexicalScope.bindings.has(e))return r}}_swapContext(e){for(;this._evalContextStack.length>0&&this._evalContextStack[this._evalContextStack.length-1]!==e;)this._evalContextStack.pop();this._evalContextStack.length===0&&(this._evalContextStack=[e])}assign(e,t){if(typeof e=="object"){for(let[a,u]of Object.entries(e))this.assign(a,u);return this}let i=e;if(i==="Nothing")return this;let r=this.lookupDefinition(i);if(Z(r)){if(Tf(this,t))throw Error(`Cannot change the operator "${i}" to a value`);let u=Bf(this,t);if(!u)throw Error(`Cannot change the operator "${i}" to a value`);return mr(this,i,r,u),this}let o=Tf(this,t);if(o!==void 0){if(!r)return this._declareSymbolValue(i,{value:o}),this;if(r.value.isConstant)throw Error(`Cannot assign a value to the constant "${i}"`);return r.value.inferredType&&(r.value.type=this.type(oe(r.value.type.type,o.type.type))),this._setSymbolValue(i,o),this}let s=Bf(this,t);if(s===void 0)throw Error(`Invalid definition for symbol "${i}"`);return r?(ne(r),mr(this,i,r,s),this._setSymbolValue(i,void 0)):this.declare(i,s),this}_shouldContinueExecution(){return this.deadline===void 0||this.deadline>=Date.now()}_checkContinueExecution(){if(!this._shouldContinueExecution())throw new Error("timeout")}_cache(e,t,i){if(this.__cache[e]===void 0)try{this.__cache[e]={build:t,purge:i,value:t()}}catch(r){console.error(`Fatal error building cache "${e}":
|
|
109
|
+
${r.toString()}`)}return this.__cache[e]?.value}box(e,t){return Bn(this,e,t)}function(e,t,i){return Do(this,e,t,i)}error(e,t){let i;typeof e=="string"?i=this.string(e):i=this.function("ErrorCode",e.map(s=>this.string(s)));let r;t&&qi(t)?r=this.function("LatexString",[this.string(ut(t))]):typeof t=="string"&&t.length>0&&(r=this.string(t));let o=[this.box(i)];return r&&o.push(r),this.function("Error",o)}typeError(e,t,i){return t?this.error(["incompatible-type",U(e),t.toString()],i):this.error(["incompatible-type",U(e)],i)}hold(e){return this._fn("Hold",[this.box(e,{canonical:!1})])}tuple(...e){return new he(this,"Tuple",e.map(t=>typeof t=="number"?this.number(t):t.canonical),{canonical:!0})}type(e){return e instanceof S?e:new S(e,this._typeResolver)}string(e,t){return new bt(this,e,t)}symbol(e,t){let i=t?.canonical??!0;e=e.normalize();let r=e.toLowerCase();if(r==="infinity"||r==="+infinity")return this.PositiveInfinity;if(r==="-infinity")return this.NegativeInfinity;if(this.strict&&!Te(e))return this.error(["invalid-symbol",nn(e)],e);if(!i)return new Gt(this,e);let o=this._commonSymbols[e];if(o)return o;let s=this.lookupDefinition(e);return ne(s)&&s.value.holdUntil==="never"?s.value.value??this.Nothing:s?new Gt(this,e,{def:s}):(s=this._declareSymbolValue(e,{type:"unknown",inferred:!0}),new Gt(this,e,{def:s}))}number(e,t){let i=t?.metadata,r=!1;if((!t||t.canonical===void 0||t.canonical==="Number"||t.canonical===!0||Array.isArray(t.canonical)&&t.canonical.includes("Number"))&&(r=!0),!r&&Yn(e))return this._fn("Rational",[this.number(e[0]),this.number(e[1])],{...i,canonical:!1});if(e=Mo(this,e),i===void 0){if(typeof e=="number"){let o=e;if(o===1)return this.One;if(o===0)return this.Zero;if(o===-1)return this.NegativeOne;if(o===2)return this.Two;if(Number.isInteger(o)&&this._commonNumbers[o]!==void 0)return this._commonNumbers[o]??=new qe(this,e),this._commonNumbers[o];if(Number.isNaN(o))return this.NaN;if(!Number.isFinite(o))return o<0?this.NegativeInfinity:this.PositiveInfinity}else if(e instanceof j){if(e.isZero)return this.Zero;if(e.isOne)return this.One;if(e.isNegativeOne)return this.NegativeOne;if(e.isNaN)return this.NaN;if(e.isNegativeInfinity)return this.NegativeInfinity;if(e.isPositiveInfinity)return this.PositiveInfinity}}return new qe(this,e,{metadata:i})}rules(e,t){return hr(this,e,t)}getRuleSet(e){if(e??="standard-simplification",e==="standard-simplification")return this._cache("standard-simplification-rules",()=>hr(this,Nf,{canonical:!0}));if(e==="solve-univariate")return this._cache("univariate-roots-rules",()=>hr(this,mf));if(e==="harmonization")return this._cache("harmonization-rules",()=>hr(this,gf))}_fn(e,t,i){let r=i?.canonical??!0;return new he(this,e,t,{...i,canonical:r})}parse(e,t){if(e==null)return null;if(typeof e!="string")throw Error("ce.parse(): expected a LaTeX string");let i={imaginaryUnit:"\\imaginaryI",positiveInfinity:"\\infty",negativeInfinity:"-\\infty",notANumber:"\\operatorname{NaN}",decimalSeparator:this.decimalSeparator,digitGroup:3,digitGroupSeparator:"\\,",exponentProduct:"\\cdot",beginExponentMarker:"10^{",endExponentMarker:"}",truncationMarker:"\\ldots",repeatingDecimal:"auto",skipSpace:!0,parseNumbers:"auto",getSymbolType:o=>{let s=this.lookupDefinition(o);return s?Z(s)?s.operator.signature:ne(s)?s.value.type:S.unknown:S.unknown},parseUnexpectedToken:(o,s)=>null,preserveLatex:!1},r=cl(ut(e)??e,this._indexedLatexDictionary,{...i,...t});if(r===null)throw Error("Failed to parse LaTeX string");return this.box(r,{canonical:t?.canonical??!0})}ask(e){let t=this.box(e,{canonical:!1}),i=[],r=this.context.assumptions;for(let[o,s]of r){let a=t.match(o);a!==null&&s===!0&&i.push(a)}return i}verify(e){return!1}assume(e){try{let t=qi(e)?this.parse(e,{canonical:!1}):this.box(e,{canonical:!1});return this._generation+=1,_f(t)}catch(t){throw console.error(t.message.toString()),t}}forget(e){if(e===void 0){this.context.assumptions?.clear(),this._generation+=1;return}if(Array.isArray(e)){for(let t of e)this.forget(t);return}if(typeof e=="string")for(let[t,i]of this.context.assumptions)t.has(e)&&this.context.assumptions.delete(t);this._generation+=1}};function Tf(n,e){if(e==null||typeof e=="function")return;if(typeof e=="boolean")return e?n.True:n.False;if(typeof e=="number"||typeof e=="bigint")return n.number(e);let t=n.box(e);if(!(t.unknowns.length>0))return t}function Bf(n,e){if(typeof e=="function")return{evaluate:e,signature:"function"};if(e==null||typeof e=="boolean")return;let t=ve(n.box(e));if(t!==void 0)return{evaluate:t,signature:"function"}}function If(n,e,t){let i="";if(ne(e)){let r=[];e.value.holdUntil==="never"&&r.push("(hold never)"),e.value.holdUntil==="N"&&r.push("(hold until N)"),e.value.inferredType&&r.push("inferred");let o=r.length>0?` ${r.join(" ")}`:"";i=`${Ci}${n}${$e}:${o}`,e.value.isConstant?(i+=` const ${e.value.type.toString()}`,e.value.value!==void 0&&(i+=` = ${e.value.value?.toString()}`)):i+=` ${e.value.type.toString()}`}else if(Z(e)){let r=[];e.operator.inferredSignature&&r.push("(inferred)");let o=r.length>0?` (${r.join(" ")})`:"";i=`${Ci}${n}${$e}:${o} ${e.operator.signature.toString()}`;let s=[];e.operator.lazy&&s.push("lazy"),e.operator.scoped&&s.push("scoped"),e.operator.broadcastable&&s.push("broadcastable"),e.operator.associative&&s.push("associative"),e.operator.commutative&&s.push("commutative"),e.operator.idempotent&&s.push("idempotent"),e.operator.involution&&s.push("involution"),e.operator.pure||s.push("not pure");let a=s.map(u=>`${Ht}${u}${$e}`).join(" ");a.length>0&&(i+=`
|
|
110
|
+
\u2514 ${a}`)}else i="unknown";return t&&(t.isValid?t.isCanonical?i+=` = ${Ht}${t.toString()}${$e}`:i+=` = ${Ha}${t.toString()}${$e} (not canonical)`:i+=` = ${Wa}${t.toString()}${$e} (not valid)`),i}var k2="0.30.0";globalThis[Symbol.for("io.cortexjs.compute-engine")]={ComputeEngine:Tr.prototype.constructor,version:"0.30.0"};export{S as BoxedType,Tr as ComputeEngine,j as NumericValue,k2 as version};
|
|
109
111
|
/*! Bundled license information:
|
|
110
112
|
|
|
111
113
|
complex-esm/dist/src/complex.js:
|
|
@@ -118,7 +120,7 @@ complex-esm/dist/src/complex.js:
|
|
|
118
120
|
|
|
119
121
|
decimal.js/decimal.mjs:
|
|
120
122
|
(*!
|
|
121
|
-
* decimal.js v10.
|
|
123
|
+
* decimal.js v10.6.0
|
|
122
124
|
* An arbitrary-precision Decimal type for JavaScript.
|
|
123
125
|
* https://github.com/MikeMcl/decimal.js
|
|
124
126
|
* Copyright (c) 2025 Michael Mclaughlin <M8ch88l@gmail.com>
|