@cortex-js/compute-engine 0.26.0 → 0.26.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -10
- package/dist/compute-engine.esm.js +160 -81
- package/dist/compute-engine.js +160 -81
- package/dist/compute-engine.min.esm.js +37 -36
- package/dist/compute-engine.min.js +37 -36
- package/dist/math-json.esm.js +2 -2
- package/dist/math-json.js +2 -2
- package/dist/math-json.min.esm.js +2 -2
- package/dist/math-json.min.js +2 -2
- package/dist/types/common/ansi-codes.d.ts +1 -1
- package/dist/types/common/buffer.d.ts +1 -1
- package/dist/types/common/grapheme-splitter.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/styled-text.d.ts +1 -1
- package/dist/types/common/suggest.d.ts +1 -1
- package/dist/types/common/syntax-highlighter.d.ts +1 -1
- package/dist/types/common/terminal.d.ts +1 -1
- package/dist/types/common/type/parse.d.ts +1 -1
- package/dist/types/common/type/primitive.d.ts +1 -1
- 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 +1 -1
- package/dist/types/common/type/utils.d.ts +1 -1
- package/dist/types/common/utils.d.ts +1 -1
- package/dist/types/compute-engine/assume.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/abstract-boxed-expression.d.ts +2 -1
- 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-divide.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/arithmetic-multiply.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/arithmetic-power.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/ascii-math.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/box.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-function-definition.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-function.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-number.d.ts +2 -1
- package/dist/types/compute-engine/boxed-expression/boxed-patterns.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-string.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-symbol-definition.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-symbol.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-tensor.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/cache.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/canonical.d.ts +1 -1
- 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 +1 -1
- package/dist/types/compute-engine/boxed-expression/match.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/negate.d.ts +2 -1
- package/dist/types/compute-engine/boxed-expression/numerics.d.ts +1 -1
- 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 +1 -1
- package/dist/types/compute-engine/boxed-expression/public.d.ts +7 -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 +1 -1
- package/dist/types/compute-engine/boxed-expression/simplify.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/solve.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/tensor-fields.d.ts +1 -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 +1 -1
- package/dist/types/compute-engine/boxed-expression/validate.d.ts +1 -1
- package/dist/types/compute-engine/collection-utils.d.ts +1 -1
- package/dist/types/compute-engine/compile.d.ts +1 -1
- package/dist/types/compute-engine/compute-engine.d.ts +2 -2
- package/dist/types/compute-engine/cost-function.d.ts +1 -1
- package/dist/types/compute-engine/function-utils.d.ts +1 -1
- 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 +1 -1
- package/dist/types/compute-engine/latex-syntax/parse-identifier.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/parse.d.ts +2 -2
- package/dist/types/compute-engine/latex-syntax/public.d.ts +3 -1
- 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 +1 -1
- package/dist/types/compute-engine/latex-syntax/tokenizer.d.ts +1 -1
- package/dist/types/compute-engine/library/arithmetic.d.ts +1 -1
- package/dist/types/compute-engine/library/calculus.d.ts +1 -1
- package/dist/types/compute-engine/library/collections.d.ts +1 -1
- package/dist/types/compute-engine/library/complex.d.ts +1 -1
- package/dist/types/compute-engine/library/control-structures.d.ts +1 -1
- package/dist/types/compute-engine/library/core.d.ts +1 -1
- package/dist/types/compute-engine/library/invisible-operator.d.ts +1 -1
- package/dist/types/compute-engine/library/library.d.ts +1 -1
- package/dist/types/compute-engine/library/linear-algebra.d.ts +1 -1
- package/dist/types/compute-engine/library/logic.d.ts +1 -1
- package/dist/types/compute-engine/library/polynomials.d.ts +1 -1
- package/dist/types/compute-engine/library/random-expression.d.ts +1 -1
- package/dist/types/compute-engine/library/relational-operator.d.ts +1 -1
- package/dist/types/compute-engine/library/sets.d.ts +1 -1
- package/dist/types/compute-engine/library/statistics.d.ts +1 -1
- package/dist/types/compute-engine/library/trigonometry.d.ts +1 -1
- package/dist/types/compute-engine/library/utils.d.ts +1 -1
- package/dist/types/compute-engine/numeric-value/big-numeric-value.d.ts +1 -1
- package/dist/types/compute-engine/numeric-value/exact-numeric-value.d.ts +1 -1
- package/dist/types/compute-engine/numeric-value/machine-numeric-value.d.ts +1 -1
- package/dist/types/compute-engine/numeric-value/public.d.ts +1 -1
- package/dist/types/compute-engine/numerics/bigint.d.ts +1 -1
- package/dist/types/compute-engine/numerics/bignum.d.ts +1 -1
- package/dist/types/compute-engine/numerics/expression.d.ts +2 -2
- package/dist/types/compute-engine/numerics/interval.d.ts +1 -1
- package/dist/types/compute-engine/numerics/monte-carlo.d.ts +1 -1
- 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 +1 -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/strings.d.ts +2 -2
- package/dist/types/compute-engine/public.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/derivative.d.ts +1 -1
- 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/tensors.d.ts +1 -1
- package/dist/types/compute-engine.d.ts +2 -2
- package/dist/types/math-json/identifiers.d.ts +1 -1
- package/dist/types/math-json/types.d.ts +1 -1
- package/dist/types/math-json/utils.d.ts +1 -1
- package/dist/types/math-json.d.ts +2 -2
- package/package.json +1 -1
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
/** Compute Engine 0.26.
|
|
1
|
+
/** Compute Engine 0.26.3 */
|
|
2
2
|
(function(global,factory){typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'],factory):(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.ComputeEngine = {}));})(this, (function (exports) { 'use strict';
|
|
3
|
-
var ComputeEngine=(()=>{var
|
|
4
|
-
`||(a==="+"?r++:a==="-"?o++:a==="i"||a==="I"?(r+o===0&&xi(),t[s+1]!==" "&&!isNaN(Number(t[s+1]))?(i.im+=parseFloat((o%2?"-":"")+t[s+1]),s++):i.im+=parseFloat((o%2?"-":"")+"1"),r=o=0):((r+o===0||isNaN(Number(a)))&&xi(),t[s+1]==="i"||t[s+1]==="I"?(i.im+=parseFloat((o%2?"-":"")+a),s++):i.re+=parseFloat((o%2?"-":"")+a),r=o=0))}r+o>0&&xi();break;case"number":i.im=0,i.re=e;break;default:xi()}return isNaN(i.re)||isNaN(i.im),i},O=class e{constructor(n,i){this.re=0,this.im=0;var t=Kf(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,o=t.im,s,a;return o===0?new e(n/r,i/r):Math.abs(r)<Math.abs(o)?(a=r/o,s=r*a+o,new e((n*a+i)/s,(i*a-n)/s)):(a=o/r,s=o*a+r,new e((n+i*a)/s,(i-n*a)/s))}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),o=oo(n,i);return n=Math.exp(t.re*o-t.im*r),i=t.im*o+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,o;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?o=.5*Math.sqrt(2*(t-n)):o=Math.abs(i)/Math.sqrt(2*(t+n)),new e(r,i<0?-o:o)}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)+Qf(i),Math.exp(n)*Math.sin(i))}log(){var n=this.re,i=this.im;return i===0&&n>0,new e(oo(n,i),Math.atan2(i,n))}abs(){return Xf(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)*$e(i))}cos(){var n=this.re,i=this.im;return new e(Math.cos(n)*Se(i),-Math.sin(n)*$e(i))}tan(){var n=2*this.re,i=2*this.im,t=Math.cos(n)+Se(i);return new e(Math.sin(n)/t,$e(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,$e(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)*$e(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)*$e(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($e(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),$e(n)*Math.sin(i))}tanh(){var n=2*this.re,i=2*this.im,t=Se(n)+Math.cos(i);return new e($e(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($e(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*$e(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*$e(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,o=1+n,s=r*r+i*i,a=s!==0?new e((o*r-i*i)/s,(i*r+o*i)/s):new e(n!==-1?n/0:0,i!==0?i/0:0),u=a.re;return a.re=oo(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())}};O.ZERO=new O(0,0);O.ONE=new O(1,0);O.I=new O(0,1);O.PI=new O(Math.PI,0);O.E=new O(Math.E,0);O.INFINITY=new O(1/0,1/0);O.NAN=new O(NaN,NaN);O.EPSILON=1e-15;var yi=9e15,Ln=1e9,so="0123456789abcdef",Jt="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Yt="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",ao={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-yi,maxE:yi,crypto:!1},oa,vn,B=!0,Xt="[DecimalError] ",On=Xt+"Invalid argument: ",sa=Xt+"Precision limit exceeded",aa=Xt+"crypto unavailable",ua="[object Decimal]",Te=Math.floor,pe=Math.pow,ec=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,nc=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,ic=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,la=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,tn=1e7,I=7,tc=9007199254740991,rc=Jt.length-1,uo=Yt.length-1,h={toStringTag:ua};h.absoluteValue=h.abs=function(){var e=new this.constructor(this);return e.s<0&&(e.s=1),S(e)};h.ceil=function(){return S(new this.constructor(this),this.e+1,2)};h.clampedTo=h.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(On+n);return i=t.cmp(e),i<0?e:t.cmp(n)>0?n:new r(t)};h.comparedTo=h.cmp=function(e){var n,i,t,r,o=this,s=o.d,a=(e=new o.constructor(e)).d,u=o.s,l=e.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!==e.e)return o.e>e.e^u<0?1:-1;for(t=s.length,r=a.length,n=0,i=t<r?t:r;n<i;++n)if(s[n]!==a[n])return s[n]>a[n]^u<0?1:-1;return t===r?0:t>r^u<0?1:-1};h.cosine=h.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())+I,t.rounding=1,i=oc(t,ma(t,i)),t.precision=e,t.rounding=n,S(vn==2||vn==3?i.neg():i,e,n,!0)):new t(1):new t(NaN)};h.cubeRoot=h.cbrt=function(){var e,n,i,t,r,o,s,a,u,l,f=this,c=f.constructor;if(!f.isFinite()||f.isZero())return new c(f);for(B=!1,o=f.s*pe(f.s*f,1/3),!o||Math.abs(o)==1/0?(i=Ee(f.d),e=f.e,(o=(e-i.length+1)%3)&&(i+=o==1||o==-2?"0":"00"),o=pe(i,1/3),e=Te((e+1)/3)-(e%3==(e<0?-1:2)),o==1/0?i="5e"+e:(i=o.toExponential(),i=i.slice(0,i.indexOf("e")+1)+e),t=new c(i),t.s=f.s):t=new c(o.toString()),s=(e=c.precision)+3;;)if(a=t,u=a.times(a).times(a),l=u.plus(f),t=U(l.plus(f).times(a),l.plus(u),s+2,1),Ee(a.d).slice(0,s)===(i=Ee(t.d)).slice(0,s))if(i=i.slice(s-3,s+1),i=="9999"||!r&&i=="4999"){if(!r&&(S(a,e+1,0),a.times(a).times(a).eq(f))){t=a;break}s+=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 B=!0,S(t,e,c.rounding,n)};h.decimalPlaces=h.dp=function(){var e,n=this.d,i=NaN;if(n){if(e=n.length-1,i=(e-Te(this.e/I))*I,e=n[e],e)for(;e%10==0;e/=10)i--;i<0&&(i=0)}return i};h.dividedBy=h.div=function(e){return U(this,new this.constructor(e))};h.dividedToIntegerBy=h.divToInt=function(e){var n=this,i=n.constructor;return S(U(n,new i(e),0,1,1),i.precision,i.rounding)};h.equals=h.eq=function(e){return this.cmp(e)===0};h.floor=function(){return S(new this.constructor(this),this.e+1,3)};h.greaterThan=h.gt=function(e){return this.cmp(e)>0};h.greaterThanOrEqualTo=h.gte=function(e){var n=this.cmp(e);return n==1||n===0};h.hyperbolicCosine=h.cosh=function(){var e,n,i,t,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;i=s.precision,t=s.rounding,s.precision=i+Math.max(o.e,o.sd())+4,s.rounding=1,r=o.d.length,r<32?(e=Math.ceil(r/3),n=(1/er(4,e)).toString()):(e=16,n="2.3283064365386962890625e-10"),o=bi(s,1,o.times(n),new s(1),!0);for(var u,l=e,f=new s(8);l--;)u=o.times(o),o=a.minus(u.times(f.minus(u.times(f))));return S(o,s.precision=i,s.rounding=t,!0)};h.hyperbolicSine=h.sinh=function(){var e,n,i,t,r=this,o=r.constructor;if(!r.isFinite()||r.isZero())return new o(r);if(n=o.precision,i=o.rounding,o.precision=n+Math.max(r.e,r.sd())+4,o.rounding=1,t=r.d.length,t<3)r=bi(o,2,r,r,!0);else{e=1.4*Math.sqrt(t),e=e>16?16:e|0,r=r.times(1/er(5,e)),r=bi(o,2,r,r,!0);for(var s,a=new o(5),u=new o(16),l=new o(20);e--;)s=r.times(r),r=r.times(a.plus(s.times(u.times(s).plus(l))))}return o.precision=n,o.rounding=i,S(r,n,i,!0)};h.hyperbolicTangent=h.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,U(i.sinh(),i.cosh(),t.precision=e,t.rounding=n)):new t(i.s)};h.inverseCosine=h.acos=function(){var e,n=this,i=n.constructor,t=n.abs().cmp(1),r=i.precision,o=i.rounding;return t!==-1?t===0?n.isNeg()?nn(i,r,o):new i(0):new i(NaN):n.isZero()?nn(i,r+4,o).times(.5):(i.precision=r+6,i.rounding=1,n=n.asin(),e=nn(i,r+4,o).times(.5),i.precision=r,i.rounding=o,e.minus(n))};h.inverseHyperbolicCosine=h.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,B=!1,i=i.times(i).minus(1).sqrt().plus(i),B=!0,t.precision=e,t.rounding=n,i.ln()):new t(i)};h.inverseHyperbolicSine=h.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,B=!1,i=i.times(i).plus(1).sqrt().plus(i),B=!0,t.precision=e,t.rounding=n,i.ln())};h.inverseHyperbolicTangent=h.atanh=function(){var e,n,i,t,r=this,o=r.constructor;return r.isFinite()?r.e>=0?new o(r.abs().eq(1)?r.s/0:r.isZero()?r:NaN):(e=o.precision,n=o.rounding,t=r.sd(),Math.max(t,e)<2*-r.e-1?S(new o(r),e,n,!0):(o.precision=i=t-r.e,r=U(r.plus(1),new o(1).minus(r),i+e,1),o.precision=e+4,o.rounding=1,r=r.ln(),o.precision=e,o.rounding=n,r.times(.5))):new o(NaN)};h.inverseSine=h.asin=function(){var e,n,i,t,r=this,o=r.constructor;return r.isZero()?new o(r):(n=r.abs().cmp(1),i=o.precision,t=o.rounding,n!==-1?n===0?(e=nn(o,i+4,t).times(.5),e.s=r.s,e):new o(NaN):(o.precision=i+6,o.rounding=1,r=r.div(new o(1).minus(r.times(r)).sqrt().plus(1)).atan(),o.precision=i,o.rounding=t,r.times(2)))};h.inverseTangent=h.atan=function(){var e,n,i,t,r,o,s,a,u,l=this,f=l.constructor,c=f.precision,d=f.rounding;if(l.isFinite()){if(l.isZero())return new f(l);if(l.abs().eq(1)&&c+4<=uo)return s=nn(f,c+4,d).times(.25),s.s=l.s,s}else{if(!l.s)return new f(NaN);if(c+4<=uo)return s=nn(f,c+4,d).times(.5),s.s=l.s,s}for(f.precision=a=c+10,f.rounding=1,i=Math.min(28,a/I+2|0),e=i;e;--e)l=l.div(l.times(l).plus(1).sqrt().plus(1));for(B=!1,n=Math.ceil(a/I),t=1,u=l.times(l),s=new f(l),r=l;e!==-1;)if(r=r.times(u),o=s.minus(r.div(t+=2)),r=r.times(u),s=o.plus(r.div(t+=2)),s.d[n]!==void 0)for(e=n;s.d[e]===o.d[e]&&e--;);return i&&(s=s.times(2<<i-1)),B=!0,S(s,f.precision=c,f.rounding=d,!0)};h.isFinite=function(){return!!this.d};h.isInteger=h.isInt=function(){return!!this.d&&Te(this.e/I)>this.d.length-2};h.isNaN=function(){return!this.s};h.isNegative=h.isNeg=function(){return this.s<0};h.isPositive=h.isPos=function(){return this.s>0};h.isZero=function(){return!!this.d&&this.d[0]===0};h.lessThan=h.lt=function(e){return this.cmp(e)<0};h.lessThanOrEqualTo=h.lte=function(e){return this.cmp(e)<1};h.logarithm=h.log=function(e){var n,i,t,r,o,s,a,u,l=this,f=l.constructor,c=f.precision,d=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)o=!0;else{for(r=i[0];r%10===0;)r/=10;o=r!==1}if(B=!1,a=c+m,s=Pn(l,a),t=n?Qt(f,a+10):Pn(e,a),u=U(s,t,a,1),ot(u.d,r=c,d))do if(a+=10,s=Pn(l,a),t=n?Qt(f,a+10):Pn(e,a),u=U(s,t,a,1),!o){+Ee(u.d).slice(r+1,r+15)+1==1e14&&(u=S(u,c+1,0));break}while(ot(u.d,r+=10,d));return B=!0,S(u,c,d)};h.minus=h.sub=function(e){var n,i,t,r,o,s,a,u,l,f,c,d,m=this,b=m.constructor;if(e=new b(e),!m.d||!e.d)return!m.s||!e.s?e=new b(NaN):m.d?e.s=-e.s:e=new b(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,d=e.d,a=b.precision,u=b.rounding,!l[0]||!d[0]){if(d[0])e.s=-e.s;else if(l[0])e=new b(m);else return new b(u===3?-0:0);return B?S(e,a,u):e}if(i=Te(e.e/I),f=Te(m.e/I),l=l.slice(),o=f-i,o){for(c=o<0,c?(n=l,o=-o,s=d.length):(n=d,i=f,s=l.length),t=Math.max(Math.ceil(a/I),s)+2,o>t&&(o=t,n.length=1),n.reverse(),t=o;t--;)n.push(0);n.reverse()}else{for(t=l.length,s=d.length,c=t<s,c&&(s=t),t=0;t<s;t++)if(l[t]!=d[t]){c=l[t]<d[t];break}o=0}for(c&&(n=l,l=d,d=n,e.s=-e.s),s=l.length,t=d.length-s;t>0;--t)l[s++]=0;for(t=d.length;t>o;){if(l[--t]<d[t]){for(r=t;r&&l[--r]===0;)l[r]=tn-1;--l[r],l[t]+=tn}l[t]-=d[t]}for(;l[--s]===0;)l.pop();for(;l[0]===0;l.shift())--i;return l[0]?(e.d=l,e.e=Kt(l,i),B?S(e,a,u):e):new b(u===3?-0:0)};h.modulo=h.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):(B=!1,t.modulo==9?(n=U(i,e.abs(),0,3,1),n.s*=e.s):n=U(i,e,0,t.modulo,1),n=n.times(e),B=!0,i.minus(n))};h.naturalExponential=h.exp=function(){return lo(this)};h.naturalLogarithm=h.ln=function(){return Pn(this)};h.negated=h.neg=function(){var e=new this.constructor(this);return e.s=-e.s,S(e)};h.plus=h.add=function(e){var n,i,t,r,o,s,a,u,l,f,c=this,d=c.constructor;if(e=new d(e),!c.d||!e.d)return!c.s||!e.s?e=new d(NaN):c.d||(e=new d(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=d.precision,u=d.rounding,!l[0]||!f[0])return f[0]||(e=new d(c)),B?S(e,a,u):e;if(o=Te(c.e/I),t=Te(e.e/I),l=l.slice(),r=o-t,r){for(r<0?(i=l,r=-r,s=f.length):(i=f,t=o,s=l.length),o=Math.ceil(a/I),s=o>s?o+1:s+1,r>s&&(r=s,i.length=1),i.reverse();r--;)i.push(0);i.reverse()}for(s=l.length,r=f.length,s-r<0&&(r=s,i=f,f=l,l=i),n=0;r;)n=(l[--r]=l[r]+f[r]+n)/tn|0,l[r]%=tn;for(n&&(l.unshift(n),++t),s=l.length;l[--s]==0;)l.pop();return e.d=l,e.e=Kt(l,t),B?S(e,a,u):e};h.precision=h.sd=function(e){var n,i=this;if(e!==void 0&&e!==!!e&&e!==1&&e!==0)throw Error(On+e);return i.d?(n=fa(i.d),e&&i.e+1>n&&(n=i.e+1)):n=NaN,n};h.round=function(){var e=this,n=e.constructor;return S(new n(e),e.e+1,n.rounding)};h.sine=h.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())+I,t.rounding=1,i=ac(t,ma(t,i)),t.precision=e,t.rounding=n,S(vn>2?i.neg():i,e,n,!0)):new t(NaN)};h.squareRoot=h.sqrt=function(){var e,n,i,t,r,o,s=this,a=s.d,u=s.e,l=s.s,f=s.constructor;if(l!==1||!a||!a[0])return new f(!l||l<0&&(!a||a[0])?NaN:a?s:1/0);for(B=!1,l=Math.sqrt(+s),l==0||l==1/0?(n=Ee(a),(n.length+u)%2==0&&(n+="0"),l=Math.sqrt(n),u=Te((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(o=t,t=o.plus(U(s,o,i+2,1)).times(.5),Ee(o.d).slice(0,i)===(n=Ee(t.d)).slice(0,i))if(n=n.slice(i-3,i+1),n=="9999"||!r&&n=="4999"){if(!r&&(S(o,u+1,0),o.times(o).eq(s))){t=o;break}i+=4,r=1}else{(!+n||!+n.slice(1)&&n.charAt(0)=="5")&&(S(t,u+1,1),e=!t.times(t).eq(s));break}return B=!0,S(t,u,f.rounding,e)};h.tangent=h.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=U(i,new t(1).minus(i.times(i)).sqrt(),e+10,0),t.precision=e,t.rounding=n,S(vn==2||vn==4?i.neg():i,e,n,!0)):new t(NaN)};h.times=h.mul=function(e){var n,i,t,r,o,s,a,u,l,f=this,c=f.constructor,d=f.d,m=(e=new c(e)).d;if(e.s*=f.s,!d||!d[0]||!m||!m[0])return new c(!e.s||d&&!d[0]&&!m||m&&!m[0]&&!d?NaN:!d||!m?e.s/0:e.s*0);for(i=Te(f.e/I)+Te(e.e/I),u=d.length,l=m.length,u<l&&(o=d,d=m,m=o,s=u,u=l,l=s),o=[],s=u+l,t=s;t--;)o.push(0);for(t=l;--t>=0;){for(n=0,r=u+t;r>t;)a=o[r]+m[t]*d[r-t-1]+n,o[r--]=a%tn|0,n=a/tn|0;o[r]=(o[r]+n)%tn|0}for(;!o[--s];)o.pop();return n?++i:o.shift(),e.d=o,e.e=Kt(o,i),B?S(e,c.precision,c.rounding):e};h.toBinary=function(e,n){return co(this,2,e,n)};h.toDecimalPlaces=h.toDP=function(e,n){var i=this,t=i.constructor;return i=new t(i),e===void 0?i:(De(e,0,Ln),n===void 0?n=t.rounding:De(n,0,8),S(i,e+i.e+1,n))};h.toExponential=function(e,n){var i,t=this,r=t.constructor;return e===void 0?i=cn(t,!0):(De(e,0,Ln),n===void 0?n=r.rounding:De(n,0,8),t=S(new r(t),e+1,n),i=cn(t,!0,e+1)),t.isNeg()&&!t.isZero()?"-"+i:i};h.toFixed=function(e,n){var i,t,r=this,o=r.constructor;return e===void 0?i=cn(r):(De(e,0,Ln),n===void 0?n=o.rounding:De(n,0,8),t=S(new o(r),e+r.e+1,n),i=cn(t,!1,e+t.e+1)),r.isNeg()&&!r.isZero()?"-"+i:i};h.toFraction=function(e){var n,i,t,r,o,s,a,u,l,f,c,d,m=this,b=m.d,y=m.constructor;if(!b)return new y(m);if(l=i=new y(1),t=u=new y(0),n=new y(t),o=n.e=fa(b)-m.e-1,s=o%I,n.d[0]=pe(10,s<0?I+s:s),e==null)e=o>0?n:l;else{if(a=new y(e),!a.isInt()||a.lt(l))throw Error(On+a);e=a.gt(n)?o>0?n:l:a}for(B=!1,a=new y(Ee(b)),f=y.precision,y.precision=o=b.length*I*2;c=U(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=U(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,d=U(l,t,o,1).minus(m).abs().cmp(U(u,i,o,1).minus(m).abs())<1?[l,t]:[u,i],y.precision=f,B=!0,d};h.toHexadecimal=h.toHex=function(e,n){return co(this,16,e,n)};h.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:De(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]?(B=!1,i=U(i,e,0,n,1).times(e),B=!0,S(i)):(e.s=i.s,i=e),i};h.toNumber=function(){return+this};h.toOctal=function(e,n){return co(this,8,e,n)};h.toPower=h.pow=function(e){var n,i,t,r,o,s,a=this,u=a.constructor,l=+(e=new u(e));if(!a.d||!e.d||!a.d[0]||!e.d[0])return new u(pe(+a,l));if(a=new u(a),a.eq(1))return a;if(t=u.precision,o=u.rounding,e.eq(1))return S(a,t,o);if(n=Te(e.e/I),n>=e.d.length-1&&(i=l<0?-l:l)<=tc)return r=ca(u,a,i,t),e.s<0?new u(1).div(r):S(r,t,o);if(s=a.s,s<0){if(n<e.d.length-1)return new u(NaN);if(e.d[n]&1||(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return i=pe(+a,l),n=i==0||!isFinite(i)?Te(l*(Math.log("0."+Ee(a.d))/Math.LN10+a.e+1)):new u(i+"").e,n>u.maxE+1||n<u.minE-1?new u(n>0?s/0:0):(B=!1,u.rounding=a.s=1,i=Math.min(12,(n+"").length),r=lo(e.times(Pn(a,t+i)),t),r.d&&(r=S(r,t+5,1),ot(r.d,t,o)&&(n=t+10,r=S(lo(e.times(Pn(a,n+i)),n),n+5,1),+Ee(r.d).slice(t+1,t+15)+1==1e14&&(r=S(r,t+1,0)))),r.s=s,B=!0,u.rounding=o,S(r,t,o))};h.toPrecision=function(e,n){var i,t=this,r=t.constructor;return e===void 0?i=cn(t,t.e<=r.toExpNeg||t.e>=r.toExpPos):(De(e,1,Ln),n===void 0?n=r.rounding:De(n,0,8),t=S(new r(t),e,n),i=cn(t,e<=t.e||t.e<=r.toExpNeg,e)),t.isNeg()&&!t.isZero()?"-"+i:i};h.toSignificantDigits=h.toSD=function(e,n){var i=this,t=i.constructor;return e===void 0?(e=t.precision,n=t.rounding):(De(e,1,Ln),n===void 0?n=t.rounding:De(n,0,8)),S(new t(i),e,n)};h.toString=function(){var e=this,n=e.constructor,i=cn(e,e.e<=n.toExpNeg||e.e>=n.toExpPos);return e.isNeg()&&!e.isZero()?"-"+i:i};h.truncated=h.trunc=function(){return S(new this.constructor(this),this.e+1,1)};h.valueOf=h.toJSON=function(){var e=this,n=e.constructor,i=cn(e,e.e<=n.toExpNeg||e.e>=n.toExpPos);return e.isNeg()?"-"+i:i};function Ee(e){var n,i,t,r=e.length-1,o="",s=e[0];if(r>0){for(o+=s,n=1;n<r;n++)t=e[n]+"",i=I-t.length,i&&(o+=Cn(i)),o+=t;s=e[n],t=s+"",i=I-t.length,i&&(o+=Cn(i))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function De(e,n,i){if(e!==~~e||e<n||e>i)throw Error(On+e)}function ot(e,n,i,t){var r,o,s,a;for(o=e[0];o>=10;o/=10)--n;return--n<0?(n+=I,r=0):(r=Math.ceil((n+1)/I),n%=I),o=pe(10,I-n),a=e[r]%o|0,t==null?n<3?(n==0?a=a/100|0:n==1&&(a=a/10|0),s=i<4&&a==99999||i>3&&a==49999||a==5e4||a==0):s=(i<4&&a+1==o||i>3&&a+1==o/2)&&(e[r+1]/o/100|0)==pe(10,n-2)-1||(a==o/2||a==0)&&(e[r+1]/o/100|0)==0:n<4?(n==0?a=a/1e3|0:n==1?a=a/100|0:n==2&&(a=a/10|0),s=(t||i<4)&&a==9999||!t&&i>3&&a==4999):s=((t||i<4)&&a+1==o||!t&&i>3&&a+1==o/2)&&(e[r+1]/o/1e3|0)==pe(10,n-3)-1,s}function Wt(e,n,i){for(var t,r=[0],o,s=0,a=e.length;s<a;){for(o=r.length;o--;)r[o]*=n;for(r[0]+=so.indexOf(e.charAt(s++)),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 oc(e,n){var i,t,r;if(n.isZero())return n;t=n.d.length,t<32?(i=Math.ceil(t/3),r=(1/er(4,i)).toString()):(i=16,r="2.3283064365386962890625e-10"),e.precision+=i,n=bi(e,1,n.times(r),new e(1));for(var o=i;o--;){var s=n.times(n);n=s.times(s).minus(s).times(8).plus(1)}return e.precision-=i,n}var U=function(){function e(t,r,o){var s,a=0,u=t.length;for(t=t.slice();u--;)s=t[u]*r+a,t[u]=s%o|0,a=s/o|0;return a&&t.unshift(a),t}function n(t,r,o,s){var a,u;if(o!=s)u=o>s?1:-1;else for(a=u=0;a<o;a++)if(t[a]!=r[a]){u=t[a]>r[a]?1:-1;break}return u}function i(t,r,o,s){for(var a=0;o--;)t[o]-=a,a=t[o]<r[o]?1:0,t[o]=a*s+t[o]-r[o];for(;!t[0]&&t.length>1;)t.shift()}return function(t,r,o,s,a,u){var l,f,c,d,m,b,y,N,T,R,_,P,xe,be,hi,jt,rt,eo,en,Zt,Ht=t.constructor,no=t.s==r.s?1:-1,ve=t.d,H=r.d;if(!ve||!ve[0]||!H||!H[0])return new Ht(!t.s||!r.s||(ve?H&&ve[0]==H[0]:!H)?NaN:ve&&ve[0]==0||!H?no*0:no/0);for(u?(m=1,f=t.e-r.e):(u=tn,m=I,f=Te(t.e/m)-Te(r.e/m)),en=H.length,rt=ve.length,T=new Ht(no),R=T.d=[],c=0;H[c]==(ve[c]||0);c++);if(H[c]>(ve[c]||0)&&f--,o==null?(be=o=Ht.precision,s=Ht.rounding):a?be=o+(t.e-r.e)+1:be=o,be<0)R.push(1),b=!0;else{if(be=be/m+2|0,c=0,en==1){for(d=0,H=H[0],be++;(c<rt||d)&&be--;c++)hi=d*u+(ve[c]||0),R[c]=hi/H|0,d=hi%H|0;b=d||c<rt}else{for(d=u/(H[0]+1)|0,d>1&&(H=e(H,d,u),ve=e(ve,d,u),en=H.length,rt=ve.length),jt=en,_=ve.slice(0,en),P=_.length;P<en;)_[P++]=0;Zt=H.slice(),Zt.unshift(0),eo=H[0],H[1]>=u/2&&++eo;do d=0,l=n(H,_,en,P),l<0?(xe=_[0],en!=P&&(xe=xe*u+(_[1]||0)),d=xe/eo|0,d>1?(d>=u&&(d=u-1),y=e(H,d,u),N=y.length,P=_.length,l=n(y,_,N,P),l==1&&(d--,i(y,en<N?Zt:H,N,u))):(d==0&&(l=d=1),y=H.slice()),N=y.length,N<P&&y.unshift(0),i(_,y,P,u),l==-1&&(P=_.length,l=n(H,_,en,P),l<1&&(d++,i(_,en<P?Zt:H,P,u))),P=_.length):l===0&&(d++,_=[0]),R[c++]=d,l&&_[0]?_[P++]=ve[jt]||0:(_=[ve[jt]],P=1);while((jt++<rt||_[0]!==void 0)&&be--);b=_[0]!==void 0}R[0]||R.shift()}if(m==1)T.e=f,oa=b;else{for(c=1,d=R[0];d>=10;d/=10)c++;T.e=c+f*m-1,S(T,a?o+T.e+1:o,s,b)}return T}}();function S(e,n,i,t){var r,o,s,a,u,l,f,c,d,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(o=n-r,o<0)o+=I,s=n,f=c[d=0],u=f/pe(10,r-s-1)%10|0;else if(d=Math.ceil((o+1)/I),a=c.length,d>=a)if(t){for(;a++<=d;)c.push(0);f=u=0,r=1,o%=I,s=o-I+1}else break e;else{for(f=a=c[d],r=1;a>=10;a/=10)r++;o%=I,s=o-I+r,u=s<0?0:f/pe(10,r-s-1)%10|0}if(t=t||n<0||c[d+1]!==void 0||(s<0?f:f%pe(10,r-s-1)),l=i<4?(u||t)&&(i==0||i==(e.s<0?3:2)):u>5||u==5&&(i==4||t||i==6&&(o>0?s>0?f/pe(10,r-s):0:c[d-1])%10&1||i==(e.s<0?8:7)),n<1||!c[0])return c.length=0,l?(n-=e.e+1,c[0]=pe(10,(I-n%I)%I),e.e=-n||0):c[0]=e.e=0,e;if(o==0?(c.length=d,a=1,d--):(c.length=d+1,a=pe(10,I-o),c[d]=s>0?(f/pe(10,r-s)%pe(10,s)|0)*a:0),l)for(;;)if(d==0){for(o=1,s=c[0];s>=10;s/=10)o++;for(s=c[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(e.e++,c[0]==tn&&(c[0]=1));break}else{if(c[d]+=a,c[d]!=tn)break;c[d--]=0,a=1}for(o=c.length;c[--o]===0;)c.pop()}return B&&(e.e>m.maxE?(e.d=null,e.e=NaN):e.e<m.minE&&(e.e=0,e.d=[0])),e}function cn(e,n,i){if(!e.isFinite())return pa(e);var t,r=e.e,o=Ee(e.d),s=o.length;return n?(i&&(t=i-s)>0?o=o.charAt(0)+"."+o.slice(1)+Cn(t):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(e.e<0?"e":"e+")+e.e):r<0?(o="0."+Cn(-r-1)+o,i&&(t=i-s)>0&&(o+=Cn(t))):r>=s?(o+=Cn(r+1-s),i&&(t=i-r-1)>0&&(o=o+"."+Cn(t))):((t=r+1)<s&&(o=o.slice(0,t)+"."+o.slice(t)),i&&(t=i-s)>0&&(r+1===s&&(o+="."),o+=Cn(t))),o}function Kt(e,n){var i=e[0];for(n*=I;i>=10;i/=10)n++;return n}function Qt(e,n,i){if(n>rc)throw B=!0,i&&(e.precision=i),Error(sa);return S(new e(Jt),n,1,!0)}function nn(e,n,i){if(n>uo)throw Error(sa);return S(new e(Yt),n,i,!0)}function fa(e){var n=e.length-1,i=n*I+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 Cn(e){for(var n="";e--;)n+="0";return n}function ca(e,n,i,t){var r,o=new e(1),s=Math.ceil(t/I+4);for(B=!1;;){if(i%2&&(o=o.times(n),ta(o.d,s)&&(r=!0)),i=Te(i/2),i===0){i=o.d.length-1,r&&o.d[i]===0&&++o.d[i];break}n=n.times(n),ta(n.d,s)}return B=!0,o}function ia(e){return e.d[e.d.length-1]&1}function da(e,n,i){for(var t,r=new e(n[0]),o=0;++o<n.length;)if(t=new e(n[o]),t.s)r[i](t)&&(r=t);else{r=t;break}return r}function lo(e,n){var i,t,r,o,s,a,u,l=0,f=0,c=0,d=e.constructor,m=d.rounding,b=d.precision;if(!e.d||!e.d[0]||e.e>17)return new d(e.d?e.d[0]?e.s<0?0:1/0:1:e.s?e.s<0?0:e:NaN);for(n==null?(B=!1,u=b):u=n,a=new d(.03125);e.e>-2;)e=e.times(a),c+=5;for(t=Math.log(pe(2,c))/Math.LN10*2+5|0,u+=t,i=o=s=new d(1),d.precision=u;;){if(o=S(o.times(e),u,1),i=i.times(++f),a=s.plus(U(o,i,u,1)),Ee(a.d).slice(0,u)===Ee(s.d).slice(0,u)){for(r=c;r--;)s=S(s.times(s),u,1);if(n==null)if(l<3&&ot(s.d,u-t,m,l))d.precision=u+=10,i=o=a=new d(1),f=0,l++;else return S(s,d.precision=b,m,B=!0);else return d.precision=b,s}s=a}}function Pn(e,n){var i,t,r,o,s,a,u,l,f,c,d,m=1,b=10,y=e,N=y.d,T=y.constructor,R=T.rounding,_=T.precision;if(y.s<0||!N||!N[0]||!y.e&&N[0]==1&&N.length==1)return new T(N&&!N[0]?-1/0:y.s!=1?NaN:N?0:y);if(n==null?(B=!1,f=_):f=n,T.precision=f+=b,i=Ee(N),t=i.charAt(0),Math.abs(o=y.e)<15e14){for(;t<7&&t!=1||t==1&&i.charAt(1)>3;)y=y.times(e),i=Ee(y.d),t=i.charAt(0),m++;o=y.e,t>1?(y=new T("0."+i),o++):y=new T(t+"."+i.slice(1))}else return l=Qt(T,f+2,_).times(o+""),y=Pn(new T(t+"."+i.slice(1)),f-b).plus(l),T.precision=_,n==null?S(y,_,R,B=!0):y;for(c=y,u=s=y=U(y.minus(1),y.plus(1),f,1),d=S(y.times(y),f,1),r=3;;){if(s=S(s.times(d),f,1),l=u.plus(U(s,new T(r),f,1)),Ee(l.d).slice(0,f)===Ee(u.d).slice(0,f))if(u=u.times(2),o!==0&&(u=u.plus(Qt(T,f+2,_).times(o+""))),u=U(u,new T(m),f,1),n==null)if(ot(u.d,f-b,R,a))T.precision=f+=b,l=s=y=U(c.minus(1),c.plus(1),f,1),d=S(y.times(y),f,1),r=a=1;else return S(u,T.precision=_,R,B=!0);else return T.precision=_,u;u=l,r+=2}}function pa(e){return String(e.s*e.s/0)}function fo(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)%I,i<0&&(t+=I),t<r){for(t&&e.d.push(+n.slice(0,t)),r-=I;t<r;)e.d.push(+n.slice(t,t+=I));n=n.slice(t),t=I-n.length}else t-=r;for(;t--;)n+="0";e.d.push(+n),B&&(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 sc(e,n){var i,t,r,o,s,a,u,l,f;if(n.indexOf("_")>-1){if(n=n.replace(/(\d)_(?=\d)/g,"$1"),la.test(n))return fo(e,n)}else if(n==="Infinity"||n==="NaN")return+n||(e.s=NaN),e.e=NaN,e.d=null,e;if(nc.test(n))i=16,n=n.toLowerCase();else if(ec.test(n))i=2;else if(ic.test(n))i=8;else throw Error(On+n);for(o=n.search(/p/i),o>0?(u=+n.slice(o+1),n=n.substring(2,o)):n=n.slice(2),o=n.indexOf("."),s=o>=0,t=e.constructor,s&&(n=n.replace(".",""),a=n.length,o=a-o,r=ca(t,new t(i),o,o*2)),l=Wt(n,i,tn),f=l.length-1,o=f;l[o]===0;--o)l.pop();return o<0?new t(e.s*0):(e.e=Kt(l,f),e.d=l,B=!1,s&&(e=U(e,r,a*4)),u&&(e=e.times(Math.abs(u)<54?pe(2,u):Q.pow(2,u))),B=!0,e)}function ac(e,n){var i,t=n.d.length;if(t<3)return n.isZero()?n:bi(e,2,n,n);i=1.4*Math.sqrt(t),i=i>16?16:i|0,n=n.times(1/er(5,i)),n=bi(e,2,n,n);for(var r,o=new e(5),s=new e(16),a=new e(20);i--;)r=n.times(n),n=n.times(o.plus(r.times(s.times(r).minus(a))));return n}function bi(e,n,i,t,r){var o,s,a,u,l=1,f=e.precision,c=Math.ceil(f/I);for(B=!1,u=i.times(i),a=new e(t);;){if(s=U(a.times(u),new e(n++*n++),f,1),a=r?t.plus(s):t.minus(s),t=U(s.times(u),new e(n++*n++),f,1),s=a.plus(t),s.d[c]!==void 0){for(o=c;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=t,t=s,s=o,l++}return B=!0,s.d.length=c+1,s}function er(e,n){for(var i=e;--n;)i*=e;return i}function ma(e,n){var i,t=n.s<0,r=nn(e,e.precision,1),o=r.times(.5);if(n=n.abs(),n.lte(o))return vn=t?4:1,n;if(i=n.divToInt(r),i.isZero())vn=t?3:2;else{if(n=n.minus(i.times(r)),n.lte(o))return vn=ia(i)?t?2:3:t?4:1,n;vn=ia(i)?t?1:4:t?3:2}return n.minus(r).abs()}function co(e,n,i,t){var r,o,s,a,u,l,f,c,d,m=e.constructor,b=i!==void 0;if(b?(De(i,1,Ln),t===void 0?t=m.rounding:De(t,0,8)):(i=m.precision,t=m.rounding),!e.isFinite())f=pa(e);else{for(f=cn(e),s=f.indexOf("."),b?(r=2,n==16?i=i*4-3:n==8&&(i=i*3-2)):r=n,s>=0&&(f=f.replace(".",""),d=new m(1),d.e=f.length-s,d.d=Wt(cn(d),10,r),d.e=d.d.length),c=Wt(f,10,r),o=u=c.length;c[--u]==0;)c.pop();if(!c[0])f=b?"0p+0":"0";else{if(s<0?o--:(e=new m(e),e.d=c,e.e=o,e=U(e,d,i,t,0,r),c=e.d,o=e.e,l=oa),s=c[i],a=r/2,l=l||c[i+1]!==void 0,l=t<4?(s!==void 0||l)&&(t===0||t===(e.s<0?3:2)):s>a||s===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||(++o,c.unshift(1));for(u=c.length;!c[u-1];--u);for(s=0,f="";s<u;s++)f+=so.charAt(c[s]);if(b){if(u>1)if(n==16||n==8){for(s=n==16?4:3,--u;u%s;u++)f+="0";for(c=Wt(f,r,n),u=c.length;!c[u-1];--u);for(s=1,f="1.";s<u;s++)f+=so.charAt(c[s])}else f=f.charAt(0)+"."+f.slice(1);f=f+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)f="0"+f;f="0."+f}else if(++o>u)for(o-=u;o--;)f+="0";else o<u&&(f=f.slice(0,o)+"."+f.slice(o))}f=(n==16?"0x":n==2?"0b":n==8?"0o":"")+f}return e.s<0?"-"+f:f}function ta(e,n){if(e.length>n)return e.length=n,!0}function uc(e){return new this(e).abs()}function lc(e){return new this(e).acos()}function fc(e){return new this(e).acosh()}function cc(e,n){return new this(e).plus(n)}function dc(e){return new this(e).asin()}function pc(e){return new this(e).asinh()}function mc(e){return new this(e).atan()}function gc(e){return new this(e).atanh()}function hc(e,n){e=new this(e),n=new this(n);var i,t=this.precision,r=this.rounding,o=t+4;return!e.s||!n.s?i=new this(NaN):!e.d&&!n.d?(i=nn(this,o,1).times(n.s>0?.25:.75),i.s=e.s):!n.d||e.isZero()?(i=n.s<0?nn(this,t,r):new this(0),i.s=e.s):!e.d||n.isZero()?(i=nn(this,o,1).times(.5),i.s=e.s):n.s<0?(this.precision=o,this.rounding=1,i=this.atan(U(e,n,o,1)),n=nn(this,o,1),this.precision=t,this.rounding=r,i=e.s<0?i.minus(n):i.plus(n)):i=this.atan(U(e,n,o,1)),i}function xc(e){return new this(e).cbrt()}function yc(e){return S(e=new this(e),e.e+1,2)}function bc(e,n,i){return new this(e).clamp(n,i)}function Ec(e){if(!e||typeof e!="object")throw Error(Xt+"Object expected");var n,i,t,r=e.defaults===!0,o=["precision",1,Ln,"rounding",0,8,"toExpNeg",-yi,0,"toExpPos",0,yi,"maxE",0,yi,"minE",-yi,0,"modulo",0,9];for(n=0;n<o.length;n+=3)if(i=o[n],r&&(this[i]=ao[i]),(t=e[i])!==void 0)if(Te(t)===t&&t>=o[n+1]&&t<=o[n+2])this[i]=t;else throw Error(On+i+": "+t);if(i="crypto",r&&(this[i]=ao[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(aa);else this[i]=!1;else throw Error(On+i+": "+t);return this}function Nc(e){return new this(e).cos()}function vc(e){return new this(e).cosh()}function ga(e){var n,i,t;function r(o){var s,a,u,l=this;if(!(l instanceof r))return new r(o);if(l.constructor=r,ra(o)){l.s=o.s,B?!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++;B?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}else if(o*0!==0){o||(l.s=NaN),l.e=NaN,l.d=null;return}return fo(l,o.toString())}else if(u!=="string")throw Error(On+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),l.s=-1):(a===43&&(o=o.slice(1)),l.s=1),la.test(o)?fo(l,o):sc(l,o)}if(r.prototype=h,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=Ec,r.clone=ga,r.isDecimal=ra,r.abs=uc,r.acos=lc,r.acosh=fc,r.add=cc,r.asin=dc,r.asinh=pc,r.atan=mc,r.atanh=gc,r.atan2=hc,r.cbrt=xc,r.ceil=yc,r.clamp=bc,r.cos=Nc,r.cosh=vc,r.div=Sc,r.exp=Tc,r.floor=_c,r.hypot=Ic,r.ln=Bc,r.log=kc,r.log10=Dc,r.log2=wc,r.max=Rc,r.min=Ac,r.mod=Mc,r.mul=Cc,r.pow=Pc,r.random=Oc,r.round=Lc,r.sign=Fc,r.sin=qc,r.sinh=Vc,r.sqrt=$c,r.sub=Gc,r.sum=zc,r.tan=Uc,r.tanh=jc,r.trunc=Zc,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 Sc(e,n){return new this(e).div(n)}function Tc(e){return new this(e).exp()}function _c(e){return S(e=new this(e),e.e+1,3)}function Ic(){var e,n,i=new this(0);for(B=!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 B=!0,new this(1/0);i=n}return B=!0,i.sqrt()}function ra(e){return e instanceof Q||e&&e.toStringTag===ua||!1}function Bc(e){return new this(e).ln()}function kc(e,n){return new this(e).log(n)}function wc(e){return new this(e).log(2)}function Dc(e){return new this(e).log(10)}function Rc(){return da(this,arguments,"lt")}function Ac(){return da(this,arguments,"gt")}function Mc(e,n){return new this(e).mod(n)}function Cc(e,n){return new this(e).mul(n)}function Pc(e,n){return new this(e).pow(n)}function Oc(e){var n,i,t,r,o=0,s=new this(1),a=[];if(e===void 0?e=this.precision:De(e,1,Ln),t=Math.ceil(e/I),this.crypto)if(crypto.getRandomValues)for(n=crypto.getRandomValues(new Uint32Array(t));o<t;)r=n[o],r>=429e7?n[o]=crypto.getRandomValues(new Uint32Array(1))[0]:a[o++]=r%1e7;else if(crypto.randomBytes){for(n=crypto.randomBytes(t*=4);o<t;)r=n[o]+(n[o+1]<<8)+(n[o+2]<<16)+((n[o+3]&127)<<24),r>=214e7?crypto.randomBytes(4).copy(n,o):(a.push(r%1e7),o+=4);o=t/4}else throw Error(aa);else for(;o<t;)a[o++]=Math.random()*1e7|0;for(t=a[--o],e%=I,t&&e&&(r=pe(10,I-e),a[o]=(t/r|0)*r);a[o]===0;o--)a.pop();if(o<0)i=0,a=[0];else{for(i=-1;a[0]===0;i-=I)a.shift();for(t=1,r=a[0];r>=10;r/=10)t++;t<I&&(i-=I-t)}return s.e=i,s.d=a,s}function Lc(e){return S(e=new this(e),e.e+1,this.rounding)}function Fc(e){return e=new this(e),e.d?e.d[0]?e.s:0*e.s:e.s||NaN}function qc(e){return new this(e).sin()}function Vc(e){return new this(e).sinh()}function $c(e){return new this(e).sqrt()}function Gc(e,n){return new this(e).sub(n)}function zc(){var e=0,n=arguments,i=new this(n[e]);for(B=!1;i.s&&++e<n.length;)i=i.plus(n[e]);return B=!0,S(i,this.precision,this.rounding)}function Uc(e){return new this(e).tan()}function jc(e){return new this(e).tanh()}function Zc(e){return S(e=new this(e),e.e+1,1)}h[Symbol.for("nodejs.util.inspect.custom")]=h.toString;h[Symbol.toStringTag]="Decimal";var Q=h.constructor=ga(ao);Jt=new Q(Jt);Yt=new Q(Yt);var me=Q;var nr=["number","finite_number","complex","finite_complex","imaginary","finite_imaginary","real","finite_real","rational","finite_rational","integer","finite_integer","non_finite_number"],ir=["collection","list","set","tuple","map"],tr=["scalar",...nr,"boolean","string"],po=["value",...ir,...tr],mo=["expression","symbol","function",...po],Fn=["any","unknown","nothing","never","error",...mo];var ha=3,xa=1,ya=2,Hc=4,Wc=5,Jc=6,Yc=7,Qc=8,Xc=9;function Ie(e,n=0){if(typeof e=="string")return e;let i="";switch(e.kind){case"value":i=e.value.toString();break;case"reference":i=e.ref;break;case"negation":i=`!${Ie(e.type,ha)}`;break;case"union":i=e.types.map(u=>Ie(u,xa)).join(" | ");break;case"intersection":i=e.types.map(u=>Ie(u,ya)).join(" & ");break;case"list":if(e.dimensions&&g(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<${e.elements}>`:i=`vector<${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<${e.elements}>`:i=`matrix<${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<${Ie(e.elements)}${u}>`}break;case"map":i=`map<${Object.entries(e.elements).map(([u,l])=>`${u}: ${Ie(l)}`).join(", ")}>`;break;case"set":i=`set<${Ie(e.elements)}>`;break;case"collection":i=`collection<${Ie(e.elements)}>`;break;case"tuple":if(e.elements.length===0)i="tuple";else if(e.elements.length===1){let[u]=e.elements;i=`tuple<${st(u)}>`}else i="tuple<"+e.elements.map(u=>st(u)).join(", ")+">";break;case"signature":let r=e.args?e.args.map(u=>st(u)).join(", "):"",o=e.optArgs?e.optArgs.map(u=>st(u)+"?").join(", "):"",s=e.restArg?`...${st(e.restArg)}`:"";i=`(${[r,o,s].filter(u=>u).join(", ")}) -> ${Ie(e.result)}`;break;default:i="error"}return n>0&&n>Kc(e.kind)?`(${i})`:i}function st(e){return e.name?`${e.name}: ${Ie(e.type)}`:Ie(e.type)}function Kc(e){switch(e){case"negation":return ha;case"union":return xa;case"intersection":return ya;case"list":return Hc;case"map":return Wc;case"set":return Jc;case"collection":return Yc;case"tuple":return Qc;case"signature":return Xc;default:return 0}}function ed(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"||g(e,n)?e:g(n,e)?n:Ea(e,n)}function nd(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:g(e,n)?n:g(n,e)?e:Ea(e,n)}function rr(...e){return e.length===0?"nothing":e.length===1?e[0]:e.reduce(ed)}function Ce(...e){return e.length===0?"nothing":e.length===1?e[0]:e.reduce(nd)}function at(e){return e=typeof e=="string"?k(e):e,typeof e!="string"&&e.kind==="signature"}function ba(e){if(e==="function")return k("...any -> any");if(typeof e!="string"&&e.kind==="signature")return e}function Ei(e){if(e==="function")return"any";if(typeof e!="string"&&e.kind==="signature")return e.result}function Jn(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, ${Ce(...Object.values(e.elements))}>`);if(e.kind==="set")return e.elements;if(e.kind==="tuple")return Ce(...e.elements.map(n=>n.type))}}function Sn(e){return typeof e=="string"?Fn.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 Ea(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:oe(e,n,"non_finite_number")?"non_finite_number":oe(e,n,"finite_integer")?"finite_integer":oe(e,n,"integer")?"integer":oe(e,n,"finite_rational")?"finite_rational":oe(e,n,"rational")?"rational":oe(e,n,"finite_real")?"finite_real":oe(e,n,"real")?"real":oe(e,n,"finite_imaginary")?"finite_imaginary":oe(e,n,"imaginary")?"imaginary":oe(e,n,"finite_complex")?"finite_complex":oe(e,n,"complex")?"complex":oe(e,n,"finite_number")?"finite_number":oe(e,n,"number")?"number":oe(e,n,"list")?"list":oe(e,n,"map")?"map":oe(e,n,"set")?"set":oe(e,n,"tuple")?"tuple":oe(e,n,"collection")?"collection":oe(e,n,"scalar")?"scalar":oe(e,n,"value")?"value":oe(e,n,"function")?"function":oe(e,n,"expression")?"expression":"any"}function oe(e,n,i){return!!(g(e,i)&&g(n,i))}var go=class extends String{constructor(n){super(n)}isSubtypeOf(n){return g(this.toString(),n)}};function ye(e){return typeof e=="string"?Object.freeze(new go(e)):(Object.defineProperty(e,"toString",{value:()=>Ie(e)}),Object.defineProperty(e,"isSubtypeOf",{value:n=>g(e,n)}),Object.freeze(e))}function id(e,n){let i=[];for(let t=0;t<=n.length;t++)i[t]=[t];for(let t=0;t<=e.length;t++)i[0][t]=t;for(let t=1;t<=n.length;t++)for(let r=1;r<=e.length;r++)n.charAt(t-1)===e.charAt(r-1)?i[t][r]=i[t-1][r-1]:i[t][r]=Math.min(i[t-1][r-1]+1,i[t][r-1]+1,i[t-1][r]+1);return i[n.length][e.length]}function Na(e,n){let i=null,t=1/0,r=3;for(let o of n){let s=id(e,o);s<=r&&Math.abs(e.length-o.length)<=2&&s<t&&(t=s,i=o)}return i}var ho=class{constructor(n,i={value:()=>null,type:()=>null}){this.buffer=n,this.pos=0,this._valueParser=i.value,this._typeParser=i.type}error(...n){throw new Error(`
|
|
3
|
+
var ComputeEngine=(()=>{var ro=Object.defineProperty;var Hf=Object.getOwnPropertyDescriptor;var Wf=Object.getOwnPropertyNames;var Jf=Object.prototype.hasOwnProperty;var Yf=(e,n)=>{for(var i in n)ro(e,i,{get:n[i],enumerable:!0})},Qf=(e,n,i,t)=>{if(n&&typeof n=="object"||typeof n=="function")for(let r of Wf(n))!Jf.call(e,r)&&r!==i&&ro(e,r,{get:()=>n[r],enumerable:!(t=Hf(n,r))||t.enumerable});return e};var Xf=e=>Qf(ro({},"__esModule",{value:!0}),e);var gm={};Yf(gm,{ComputeEngine:()=>tt,highlightCodeBlock:()=>Zf,highlightCodeSpan:()=>jf,isBoxedRule:()=>so,isRuleStep:()=>oo,terminal:()=>Vf,version:()=>mm});function oo(e){return e&&typeof e=="object"&&"because"in e&&"value"in e}function so(e){return e&&typeof e=="object"&&e._tag==="boxed-rule"}var Te=Math.cosh||function(e){return Math.abs(e)<1e-9?1-e:(Math.exp(e)+Math.exp(-e))*.5},Ge=Math.sinh||function(e){return Math.abs(e)<1e-9?e:(Math.exp(e)-Math.exp(-e))*.5},Kf=function(e){var n=Math.PI/4;if(-n>e||e>n)return Math.cos(e)-1;var i=e*e;return i*(i*(i*(i*(i*(i*(i*(i/20922789888e3-1/87178291200)+1/479001600)-1/3628800)+1/40320)-1/720)+1/24)-1/2)},ec=function(e,n){var i=Math.abs(e),t=Math.abs(n);return i<3e3&&t<3e3?Math.sqrt(i*i+t*t):(i<t?(i=t,t=e/n):t=n/e,i*Math.sqrt(1+t*t))},xi=function(){throw SyntaxError("Invalid Param")};function ao(e,n){var i=Math.abs(e),t=Math.abs(n);return e===0?Math.log(t):n===0?Math.log(i):i<3e3&&t<3e3?Math.log(e*e+n*n)*.5:(e=e/2,n=n/2,.5*Math.log(e*e+n*n)+Math.LN2)}var nc=function(e,n){var i={re:0,im:0};if(e==null)i.re=i.im=0;else if(n!==void 0)i.re=e,i.im=n;else switch(typeof e){case"object":if("im"in e&&"re"in e)i.re=e.re,i.im=e.im;else if("abs"in e&&"arg"in e){if(!Number.isFinite(e.abs)&&Number.isFinite(e.arg))return L.INFINITY;i.re=e.abs*Math.cos(e.arg),i.im=e.abs*Math.sin(e.arg)}else if("r"in e&&"phi"in e){if(!Number.isFinite(e.r)&&Number.isFinite(e.phi))return L.INFINITY;i.re=e.r*Math.cos(e.phi),i.im=e.r*Math.sin(e.phi)}else e.length===2?(i.re=e[0],i.im=e[1]):xi();break;case"string":i.im=i.re=0;var t=e.match(/\d+\.?\d*e[+-]?\d+|\d+\.?\d*|\.\d+|./g),r=1,o=0;t===null&&xi();for(var s=0;s<t.length;s++){var a=t[s];a===" "||a===" "||a===`
|
|
4
|
+
`||(a==="+"?r++:a==="-"?o++:a==="i"||a==="I"?(r+o===0&&xi(),t[s+1]!==" "&&!isNaN(Number(t[s+1]))?(i.im+=parseFloat((o%2?"-":"")+t[s+1]),s++):i.im+=parseFloat((o%2?"-":"")+"1"),r=o=0):((r+o===0||isNaN(Number(a)))&&xi(),t[s+1]==="i"||t[s+1]==="I"?(i.im+=parseFloat((o%2?"-":"")+a),s++):i.re+=parseFloat((o%2?"-":"")+a),r=o=0))}r+o>0&&xi();break;case"number":i.im=0,i.re=e;break;default:xi()}return isNaN(i.re)||isNaN(i.im),i},L=class e{constructor(n,i){this.re=0,this.im=0;var t=nc(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,o=t.im,s,a;return o===0?new e(n/r,i/r):Math.abs(r)<Math.abs(o)?(a=r/o,s=r*a+o,new e((n*a+i)/s,(i*a-n)/s)):(a=o/r,s=o*a+r,new e((n+i*a)/s,(i-n*a)/s))}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),o=ao(n,i);return n=Math.exp(t.re*o-t.im*r),i=t.im*o+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,o;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?o=.5*Math.sqrt(2*(t-n)):o=Math.abs(i)/Math.sqrt(2*(t+n)),new e(r,i<0?-o:o)}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)+Kf(i),Math.exp(n)*Math.sin(i))}log(){var n=this.re,i=this.im;return i===0&&n>0,new e(ao(n,i),Math.atan2(i,n))}abs(){return ec(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)*Te(i),Math.cos(n)*Ge(i))}cos(){var n=this.re,i=this.im;return new e(Math.cos(n)*Te(i),-Math.sin(n)*Ge(i))}tan(){var n=2*this.re,i=2*this.im,t=Math.cos(n)+Te(i);return new e(Math.sin(n)/t,Ge(i)/t)}cot(){var n=2*this.re,i=2*this.im,t=Math.cos(n)-Te(i);return new e(-Math.sin(n)/t,Ge(i)/t)}sec(){var n=this.re,i=this.im,t=.5*Te(2*i)+.5*Math.cos(2*n);return new e(Math.cos(n)*Te(i)/t,Math.sin(n)*Ge(i)/t)}csc(){var n=this.re,i=this.im,t=.5*Te(2*i)-.5*Math.cos(2*n);return new e(Math.sin(n)*Te(i)/t,-Math.cos(n)*Ge(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(Ge(n)*Math.cos(i),Te(n)*Math.sin(i))}cosh(){var n=this.re,i=this.im;return new e(Te(n)*Math.cos(i),Ge(n)*Math.sin(i))}tanh(){var n=2*this.re,i=2*this.im,t=Te(n)+Math.cos(i);return new e(Ge(n)/t,Math.sin(i)/t)}coth(){var n=2*this.re,i=2*this.im,t=Te(n)-Math.cos(i);return new e(Ge(n)/t,-Math.sin(i)/t)}csch(){var n=this.re,i=this.im,t=Math.cos(2*i)-Te(2*n);return new e(-2*Ge(n)*Math.cos(i)/t,2*Te(n)*Math.sin(i)/t)}sech(){var n=this.re,i=this.im,t=Math.cos(2*i)+Te(2*n);return new e(2*Te(n)*Math.cos(i)/t,-2*Ge(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,o=1+n,s=r*r+i*i,a=s!==0?new e((o*r-i*i)/s,(i*r+o*i)/s):new e(n!==-1?n/0:0,i!==0?i/0:0),u=a.re;return a.re=ao(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())}};L.ZERO=new L(0,0);L.ONE=new L(1,0);L.I=new L(0,1);L.PI=new L(Math.PI,0);L.E=new L(Math.E,0);L.INFINITY=new L(1/0,1/0);L.NAN=new L(NaN,NaN);L.EPSILON=1e-15;var yi=9e15,On=1e9,uo="0123456789abcdef",Yt="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Qt="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",lo={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-yi,maxE:yi,crypto:!1},sa,vn,B=!0,Kt="[DecimalError] ",Pn=Kt+"Invalid argument: ",aa=Kt+"Precision limit exceeded",ua=Kt+"crypto unavailable",la="[object Decimal]",_e=Math.floor,pe=Math.pow,ic=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,tc=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,rc=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,fa=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,tn=1e7,I=7,oc=9007199254740991,sc=Yt.length-1,fo=Qt.length-1,h={toStringTag:la};h.absoluteValue=h.abs=function(){var e=new this.constructor(this);return e.s<0&&(e.s=1),S(e)};h.ceil=function(){return S(new this.constructor(this),this.e+1,2)};h.clampedTo=h.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(Pn+n);return i=t.cmp(e),i<0?e:t.cmp(n)>0?n:new r(t)};h.comparedTo=h.cmp=function(e){var n,i,t,r,o=this,s=o.d,a=(e=new o.constructor(e)).d,u=o.s,l=e.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!==e.e)return o.e>e.e^u<0?1:-1;for(t=s.length,r=a.length,n=0,i=t<r?t:r;n<i;++n)if(s[n]!==a[n])return s[n]>a[n]^u<0?1:-1;return t===r?0:t>r^u<0?1:-1};h.cosine=h.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())+I,t.rounding=1,i=ac(t,ga(t,i)),t.precision=e,t.rounding=n,S(vn==2||vn==3?i.neg():i,e,n,!0)):new t(1):new t(NaN)};h.cubeRoot=h.cbrt=function(){var e,n,i,t,r,o,s,a,u,l,f=this,c=f.constructor;if(!f.isFinite()||f.isZero())return new c(f);for(B=!1,o=f.s*pe(f.s*f,1/3),!o||Math.abs(o)==1/0?(i=Ee(f.d),e=f.e,(o=(e-i.length+1)%3)&&(i+=o==1||o==-2?"0":"00"),o=pe(i,1/3),e=_e((e+1)/3)-(e%3==(e<0?-1:2)),o==1/0?i="5e"+e:(i=o.toExponential(),i=i.slice(0,i.indexOf("e")+1)+e),t=new c(i),t.s=f.s):t=new c(o.toString()),s=(e=c.precision)+3;;)if(a=t,u=a.times(a).times(a),l=u.plus(f),t=U(l.plus(f).times(a),l.plus(u),s+2,1),Ee(a.d).slice(0,s)===(i=Ee(t.d)).slice(0,s))if(i=i.slice(s-3,s+1),i=="9999"||!r&&i=="4999"){if(!r&&(S(a,e+1,0),a.times(a).times(a).eq(f))){t=a;break}s+=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 B=!0,S(t,e,c.rounding,n)};h.decimalPlaces=h.dp=function(){var e,n=this.d,i=NaN;if(n){if(e=n.length-1,i=(e-_e(this.e/I))*I,e=n[e],e)for(;e%10==0;e/=10)i--;i<0&&(i=0)}return i};h.dividedBy=h.div=function(e){return U(this,new this.constructor(e))};h.dividedToIntegerBy=h.divToInt=function(e){var n=this,i=n.constructor;return S(U(n,new i(e),0,1,1),i.precision,i.rounding)};h.equals=h.eq=function(e){return this.cmp(e)===0};h.floor=function(){return S(new this.constructor(this),this.e+1,3)};h.greaterThan=h.gt=function(e){return this.cmp(e)>0};h.greaterThanOrEqualTo=h.gte=function(e){var n=this.cmp(e);return n==1||n===0};h.hyperbolicCosine=h.cosh=function(){var e,n,i,t,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;i=s.precision,t=s.rounding,s.precision=i+Math.max(o.e,o.sd())+4,s.rounding=1,r=o.d.length,r<32?(e=Math.ceil(r/3),n=(1/nr(4,e)).toString()):(e=16,n="2.3283064365386962890625e-10"),o=bi(s,1,o.times(n),new s(1),!0);for(var u,l=e,f=new s(8);l--;)u=o.times(o),o=a.minus(u.times(f.minus(u.times(f))));return S(o,s.precision=i,s.rounding=t,!0)};h.hyperbolicSine=h.sinh=function(){var e,n,i,t,r=this,o=r.constructor;if(!r.isFinite()||r.isZero())return new o(r);if(n=o.precision,i=o.rounding,o.precision=n+Math.max(r.e,r.sd())+4,o.rounding=1,t=r.d.length,t<3)r=bi(o,2,r,r,!0);else{e=1.4*Math.sqrt(t),e=e>16?16:e|0,r=r.times(1/nr(5,e)),r=bi(o,2,r,r,!0);for(var s,a=new o(5),u=new o(16),l=new o(20);e--;)s=r.times(r),r=r.times(a.plus(s.times(u.times(s).plus(l))))}return o.precision=n,o.rounding=i,S(r,n,i,!0)};h.hyperbolicTangent=h.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,U(i.sinh(),i.cosh(),t.precision=e,t.rounding=n)):new t(i.s)};h.inverseCosine=h.acos=function(){var e,n=this,i=n.constructor,t=n.abs().cmp(1),r=i.precision,o=i.rounding;return t!==-1?t===0?n.isNeg()?nn(i,r,o):new i(0):new i(NaN):n.isZero()?nn(i,r+4,o).times(.5):(i.precision=r+6,i.rounding=1,n=n.asin(),e=nn(i,r+4,o).times(.5),i.precision=r,i.rounding=o,e.minus(n))};h.inverseHyperbolicCosine=h.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,B=!1,i=i.times(i).minus(1).sqrt().plus(i),B=!0,t.precision=e,t.rounding=n,i.ln()):new t(i)};h.inverseHyperbolicSine=h.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,B=!1,i=i.times(i).plus(1).sqrt().plus(i),B=!0,t.precision=e,t.rounding=n,i.ln())};h.inverseHyperbolicTangent=h.atanh=function(){var e,n,i,t,r=this,o=r.constructor;return r.isFinite()?r.e>=0?new o(r.abs().eq(1)?r.s/0:r.isZero()?r:NaN):(e=o.precision,n=o.rounding,t=r.sd(),Math.max(t,e)<2*-r.e-1?S(new o(r),e,n,!0):(o.precision=i=t-r.e,r=U(r.plus(1),new o(1).minus(r),i+e,1),o.precision=e+4,o.rounding=1,r=r.ln(),o.precision=e,o.rounding=n,r.times(.5))):new o(NaN)};h.inverseSine=h.asin=function(){var e,n,i,t,r=this,o=r.constructor;return r.isZero()?new o(r):(n=r.abs().cmp(1),i=o.precision,t=o.rounding,n!==-1?n===0?(e=nn(o,i+4,t).times(.5),e.s=r.s,e):new o(NaN):(o.precision=i+6,o.rounding=1,r=r.div(new o(1).minus(r.times(r)).sqrt().plus(1)).atan(),o.precision=i,o.rounding=t,r.times(2)))};h.inverseTangent=h.atan=function(){var e,n,i,t,r,o,s,a,u,l=this,f=l.constructor,c=f.precision,d=f.rounding;if(l.isFinite()){if(l.isZero())return new f(l);if(l.abs().eq(1)&&c+4<=fo)return s=nn(f,c+4,d).times(.25),s.s=l.s,s}else{if(!l.s)return new f(NaN);if(c+4<=fo)return s=nn(f,c+4,d).times(.5),s.s=l.s,s}for(f.precision=a=c+10,f.rounding=1,i=Math.min(28,a/I+2|0),e=i;e;--e)l=l.div(l.times(l).plus(1).sqrt().plus(1));for(B=!1,n=Math.ceil(a/I),t=1,u=l.times(l),s=new f(l),r=l;e!==-1;)if(r=r.times(u),o=s.minus(r.div(t+=2)),r=r.times(u),s=o.plus(r.div(t+=2)),s.d[n]!==void 0)for(e=n;s.d[e]===o.d[e]&&e--;);return i&&(s=s.times(2<<i-1)),B=!0,S(s,f.precision=c,f.rounding=d,!0)};h.isFinite=function(){return!!this.d};h.isInteger=h.isInt=function(){return!!this.d&&_e(this.e/I)>this.d.length-2};h.isNaN=function(){return!this.s};h.isNegative=h.isNeg=function(){return this.s<0};h.isPositive=h.isPos=function(){return this.s>0};h.isZero=function(){return!!this.d&&this.d[0]===0};h.lessThan=h.lt=function(e){return this.cmp(e)<0};h.lessThanOrEqualTo=h.lte=function(e){return this.cmp(e)<1};h.logarithm=h.log=function(e){var n,i,t,r,o,s,a,u,l=this,f=l.constructor,c=f.precision,d=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)o=!0;else{for(r=i[0];r%10===0;)r/=10;o=r!==1}if(B=!1,a=c+m,s=Mn(l,a),t=n?Xt(f,a+10):Mn(e,a),u=U(s,t,a,1),ot(u.d,r=c,d))do if(a+=10,s=Mn(l,a),t=n?Xt(f,a+10):Mn(e,a),u=U(s,t,a,1),!o){+Ee(u.d).slice(r+1,r+15)+1==1e14&&(u=S(u,c+1,0));break}while(ot(u.d,r+=10,d));return B=!0,S(u,c,d)};h.minus=h.sub=function(e){var n,i,t,r,o,s,a,u,l,f,c,d,m=this,b=m.constructor;if(e=new b(e),!m.d||!e.d)return!m.s||!e.s?e=new b(NaN):m.d?e.s=-e.s:e=new b(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,d=e.d,a=b.precision,u=b.rounding,!l[0]||!d[0]){if(d[0])e.s=-e.s;else if(l[0])e=new b(m);else return new b(u===3?-0:0);return B?S(e,a,u):e}if(i=_e(e.e/I),f=_e(m.e/I),l=l.slice(),o=f-i,o){for(c=o<0,c?(n=l,o=-o,s=d.length):(n=d,i=f,s=l.length),t=Math.max(Math.ceil(a/I),s)+2,o>t&&(o=t,n.length=1),n.reverse(),t=o;t--;)n.push(0);n.reverse()}else{for(t=l.length,s=d.length,c=t<s,c&&(s=t),t=0;t<s;t++)if(l[t]!=d[t]){c=l[t]<d[t];break}o=0}for(c&&(n=l,l=d,d=n,e.s=-e.s),s=l.length,t=d.length-s;t>0;--t)l[s++]=0;for(t=d.length;t>o;){if(l[--t]<d[t]){for(r=t;r&&l[--r]===0;)l[r]=tn-1;--l[r],l[t]+=tn}l[t]-=d[t]}for(;l[--s]===0;)l.pop();for(;l[0]===0;l.shift())--i;return l[0]?(e.d=l,e.e=er(l,i),B?S(e,a,u):e):new b(u===3?-0:0)};h.modulo=h.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):(B=!1,t.modulo==9?(n=U(i,e.abs(),0,3,1),n.s*=e.s):n=U(i,e,0,t.modulo,1),n=n.times(e),B=!0,i.minus(n))};h.naturalExponential=h.exp=function(){return co(this)};h.naturalLogarithm=h.ln=function(){return Mn(this)};h.negated=h.neg=function(){var e=new this.constructor(this);return e.s=-e.s,S(e)};h.plus=h.add=function(e){var n,i,t,r,o,s,a,u,l,f,c=this,d=c.constructor;if(e=new d(e),!c.d||!e.d)return!c.s||!e.s?e=new d(NaN):c.d||(e=new d(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=d.precision,u=d.rounding,!l[0]||!f[0])return f[0]||(e=new d(c)),B?S(e,a,u):e;if(o=_e(c.e/I),t=_e(e.e/I),l=l.slice(),r=o-t,r){for(r<0?(i=l,r=-r,s=f.length):(i=f,t=o,s=l.length),o=Math.ceil(a/I),s=o>s?o+1:s+1,r>s&&(r=s,i.length=1),i.reverse();r--;)i.push(0);i.reverse()}for(s=l.length,r=f.length,s-r<0&&(r=s,i=f,f=l,l=i),n=0;r;)n=(l[--r]=l[r]+f[r]+n)/tn|0,l[r]%=tn;for(n&&(l.unshift(n),++t),s=l.length;l[--s]==0;)l.pop();return e.d=l,e.e=er(l,t),B?S(e,a,u):e};h.precision=h.sd=function(e){var n,i=this;if(e!==void 0&&e!==!!e&&e!==1&&e!==0)throw Error(Pn+e);return i.d?(n=ca(i.d),e&&i.e+1>n&&(n=i.e+1)):n=NaN,n};h.round=function(){var e=this,n=e.constructor;return S(new n(e),e.e+1,n.rounding)};h.sine=h.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())+I,t.rounding=1,i=lc(t,ga(t,i)),t.precision=e,t.rounding=n,S(vn>2?i.neg():i,e,n,!0)):new t(NaN)};h.squareRoot=h.sqrt=function(){var e,n,i,t,r,o,s=this,a=s.d,u=s.e,l=s.s,f=s.constructor;if(l!==1||!a||!a[0])return new f(!l||l<0&&(!a||a[0])?NaN:a?s:1/0);for(B=!1,l=Math.sqrt(+s),l==0||l==1/0?(n=Ee(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(o=t,t=o.plus(U(s,o,i+2,1)).times(.5),Ee(o.d).slice(0,i)===(n=Ee(t.d)).slice(0,i))if(n=n.slice(i-3,i+1),n=="9999"||!r&&n=="4999"){if(!r&&(S(o,u+1,0),o.times(o).eq(s))){t=o;break}i+=4,r=1}else{(!+n||!+n.slice(1)&&n.charAt(0)=="5")&&(S(t,u+1,1),e=!t.times(t).eq(s));break}return B=!0,S(t,u,f.rounding,e)};h.tangent=h.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=U(i,new t(1).minus(i.times(i)).sqrt(),e+10,0),t.precision=e,t.rounding=n,S(vn==2||vn==4?i.neg():i,e,n,!0)):new t(NaN)};h.times=h.mul=function(e){var n,i,t,r,o,s,a,u,l,f=this,c=f.constructor,d=f.d,m=(e=new c(e)).d;if(e.s*=f.s,!d||!d[0]||!m||!m[0])return new c(!e.s||d&&!d[0]&&!m||m&&!m[0]&&!d?NaN:!d||!m?e.s/0:e.s*0);for(i=_e(f.e/I)+_e(e.e/I),u=d.length,l=m.length,u<l&&(o=d,d=m,m=o,s=u,u=l,l=s),o=[],s=u+l,t=s;t--;)o.push(0);for(t=l;--t>=0;){for(n=0,r=u+t;r>t;)a=o[r]+m[t]*d[r-t-1]+n,o[r--]=a%tn|0,n=a/tn|0;o[r]=(o[r]+n)%tn|0}for(;!o[--s];)o.pop();return n?++i:o.shift(),e.d=o,e.e=er(o,i),B?S(e,c.precision,c.rounding):e};h.toBinary=function(e,n){return mo(this,2,e,n)};h.toDecimalPlaces=h.toDP=function(e,n){var i=this,t=i.constructor;return i=new t(i),e===void 0?i:(De(e,0,On),n===void 0?n=t.rounding:De(n,0,8),S(i,e+i.e+1,n))};h.toExponential=function(e,n){var i,t=this,r=t.constructor;return e===void 0?i=cn(t,!0):(De(e,0,On),n===void 0?n=r.rounding:De(n,0,8),t=S(new r(t),e+1,n),i=cn(t,!0,e+1)),t.isNeg()&&!t.isZero()?"-"+i:i};h.toFixed=function(e,n){var i,t,r=this,o=r.constructor;return e===void 0?i=cn(r):(De(e,0,On),n===void 0?n=o.rounding:De(n,0,8),t=S(new o(r),e+r.e+1,n),i=cn(t,!1,e+t.e+1)),r.isNeg()&&!r.isZero()?"-"+i:i};h.toFraction=function(e){var n,i,t,r,o,s,a,u,l,f,c,d,m=this,b=m.d,y=m.constructor;if(!b)return new y(m);if(l=i=new y(1),t=u=new y(0),n=new y(t),o=n.e=ca(b)-m.e-1,s=o%I,n.d[0]=pe(10,s<0?I+s:s),e==null)e=o>0?n:l;else{if(a=new y(e),!a.isInt()||a.lt(l))throw Error(Pn+a);e=a.gt(n)?o>0?n:l:a}for(B=!1,a=new y(Ee(b)),f=y.precision,y.precision=o=b.length*I*2;c=U(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=U(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,d=U(l,t,o,1).minus(m).abs().cmp(U(u,i,o,1).minus(m).abs())<1?[l,t]:[u,i],y.precision=f,B=!0,d};h.toHexadecimal=h.toHex=function(e,n){return mo(this,16,e,n)};h.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:De(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]?(B=!1,i=U(i,e,0,n,1).times(e),B=!0,S(i)):(e.s=i.s,i=e),i};h.toNumber=function(){return+this};h.toOctal=function(e,n){return mo(this,8,e,n)};h.toPower=h.pow=function(e){var n,i,t,r,o,s,a=this,u=a.constructor,l=+(e=new u(e));if(!a.d||!e.d||!a.d[0]||!e.d[0])return new u(pe(+a,l));if(a=new u(a),a.eq(1))return a;if(t=u.precision,o=u.rounding,e.eq(1))return S(a,t,o);if(n=_e(e.e/I),n>=e.d.length-1&&(i=l<0?-l:l)<=oc)return r=da(u,a,i,t),e.s<0?new u(1).div(r):S(r,t,o);if(s=a.s,s<0){if(n<e.d.length-1)return new u(NaN);if(e.d[n]&1||(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return i=pe(+a,l),n=i==0||!isFinite(i)?_e(l*(Math.log("0."+Ee(a.d))/Math.LN10+a.e+1)):new u(i+"").e,n>u.maxE+1||n<u.minE-1?new u(n>0?s/0:0):(B=!1,u.rounding=a.s=1,i=Math.min(12,(n+"").length),r=co(e.times(Mn(a,t+i)),t),r.d&&(r=S(r,t+5,1),ot(r.d,t,o)&&(n=t+10,r=S(co(e.times(Mn(a,n+i)),n),n+5,1),+Ee(r.d).slice(t+1,t+15)+1==1e14&&(r=S(r,t+1,0)))),r.s=s,B=!0,u.rounding=o,S(r,t,o))};h.toPrecision=function(e,n){var i,t=this,r=t.constructor;return e===void 0?i=cn(t,t.e<=r.toExpNeg||t.e>=r.toExpPos):(De(e,1,On),n===void 0?n=r.rounding:De(n,0,8),t=S(new r(t),e,n),i=cn(t,e<=t.e||t.e<=r.toExpNeg,e)),t.isNeg()&&!t.isZero()?"-"+i:i};h.toSignificantDigits=h.toSD=function(e,n){var i=this,t=i.constructor;return e===void 0?(e=t.precision,n=t.rounding):(De(e,1,On),n===void 0?n=t.rounding:De(n,0,8)),S(new t(i),e,n)};h.toString=function(){var e=this,n=e.constructor,i=cn(e,e.e<=n.toExpNeg||e.e>=n.toExpPos);return e.isNeg()&&!e.isZero()?"-"+i:i};h.truncated=h.trunc=function(){return S(new this.constructor(this),this.e+1,1)};h.valueOf=h.toJSON=function(){var e=this,n=e.constructor,i=cn(e,e.e<=n.toExpNeg||e.e>=n.toExpPos);return e.isNeg()?"-"+i:i};function Ee(e){var n,i,t,r=e.length-1,o="",s=e[0];if(r>0){for(o+=s,n=1;n<r;n++)t=e[n]+"",i=I-t.length,i&&(o+=Cn(i)),o+=t;s=e[n],t=s+"",i=I-t.length,i&&(o+=Cn(i))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function De(e,n,i){if(e!==~~e||e<n||e>i)throw Error(Pn+e)}function ot(e,n,i,t){var r,o,s,a;for(o=e[0];o>=10;o/=10)--n;return--n<0?(n+=I,r=0):(r=Math.ceil((n+1)/I),n%=I),o=pe(10,I-n),a=e[r]%o|0,t==null?n<3?(n==0?a=a/100|0:n==1&&(a=a/10|0),s=i<4&&a==99999||i>3&&a==49999||a==5e4||a==0):s=(i<4&&a+1==o||i>3&&a+1==o/2)&&(e[r+1]/o/100|0)==pe(10,n-2)-1||(a==o/2||a==0)&&(e[r+1]/o/100|0)==0:n<4?(n==0?a=a/1e3|0:n==1?a=a/100|0:n==2&&(a=a/10|0),s=(t||i<4)&&a==9999||!t&&i>3&&a==4999):s=((t||i<4)&&a+1==o||!t&&i>3&&a+1==o/2)&&(e[r+1]/o/1e3|0)==pe(10,n-3)-1,s}function Jt(e,n,i){for(var t,r=[0],o,s=0,a=e.length;s<a;){for(o=r.length;o--;)r[o]*=n;for(r[0]+=uo.indexOf(e.charAt(s++)),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 ac(e,n){var i,t,r;if(n.isZero())return n;t=n.d.length,t<32?(i=Math.ceil(t/3),r=(1/nr(4,i)).toString()):(i=16,r="2.3283064365386962890625e-10"),e.precision+=i,n=bi(e,1,n.times(r),new e(1));for(var o=i;o--;){var s=n.times(n);n=s.times(s).minus(s).times(8).plus(1)}return e.precision-=i,n}var U=function(){function e(t,r,o){var s,a=0,u=t.length;for(t=t.slice();u--;)s=t[u]*r+a,t[u]=s%o|0,a=s/o|0;return a&&t.unshift(a),t}function n(t,r,o,s){var a,u;if(o!=s)u=o>s?1:-1;else for(a=u=0;a<o;a++)if(t[a]!=r[a]){u=t[a]>r[a]?1:-1;break}return u}function i(t,r,o,s){for(var a=0;o--;)t[o]-=a,a=t[o]<r[o]?1:0,t[o]=a*s+t[o]-r[o];for(;!t[0]&&t.length>1;)t.shift()}return function(t,r,o,s,a,u){var l,f,c,d,m,b,y,N,T,R,_,O,xe,be,hi,Zt,rt,io,en,Ht,Wt=t.constructor,to=t.s==r.s?1:-1,Se=t.d,H=r.d;if(!Se||!Se[0]||!H||!H[0])return new Wt(!t.s||!r.s||(Se?H&&Se[0]==H[0]:!H)?NaN:Se&&Se[0]==0||!H?to*0:to/0);for(u?(m=1,f=t.e-r.e):(u=tn,m=I,f=_e(t.e/m)-_e(r.e/m)),en=H.length,rt=Se.length,T=new Wt(to),R=T.d=[],c=0;H[c]==(Se[c]||0);c++);if(H[c]>(Se[c]||0)&&f--,o==null?(be=o=Wt.precision,s=Wt.rounding):a?be=o+(t.e-r.e)+1:be=o,be<0)R.push(1),b=!0;else{if(be=be/m+2|0,c=0,en==1){for(d=0,H=H[0],be++;(c<rt||d)&&be--;c++)hi=d*u+(Se[c]||0),R[c]=hi/H|0,d=hi%H|0;b=d||c<rt}else{for(d=u/(H[0]+1)|0,d>1&&(H=e(H,d,u),Se=e(Se,d,u),en=H.length,rt=Se.length),Zt=en,_=Se.slice(0,en),O=_.length;O<en;)_[O++]=0;Ht=H.slice(),Ht.unshift(0),io=H[0],H[1]>=u/2&&++io;do d=0,l=n(H,_,en,O),l<0?(xe=_[0],en!=O&&(xe=xe*u+(_[1]||0)),d=xe/io|0,d>1?(d>=u&&(d=u-1),y=e(H,d,u),N=y.length,O=_.length,l=n(y,_,N,O),l==1&&(d--,i(y,en<N?Ht:H,N,u))):(d==0&&(l=d=1),y=H.slice()),N=y.length,N<O&&y.unshift(0),i(_,y,O,u),l==-1&&(O=_.length,l=n(H,_,en,O),l<1&&(d++,i(_,en<O?Ht:H,O,u))),O=_.length):l===0&&(d++,_=[0]),R[c++]=d,l&&_[0]?_[O++]=Se[Zt]||0:(_=[Se[Zt]],O=1);while((Zt++<rt||_[0]!==void 0)&&be--);b=_[0]!==void 0}R[0]||R.shift()}if(m==1)T.e=f,sa=b;else{for(c=1,d=R[0];d>=10;d/=10)c++;T.e=c+f*m-1,S(T,a?o+T.e+1:o,s,b)}return T}}();function S(e,n,i,t){var r,o,s,a,u,l,f,c,d,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(o=n-r,o<0)o+=I,s=n,f=c[d=0],u=f/pe(10,r-s-1)%10|0;else if(d=Math.ceil((o+1)/I),a=c.length,d>=a)if(t){for(;a++<=d;)c.push(0);f=u=0,r=1,o%=I,s=o-I+1}else break e;else{for(f=a=c[d],r=1;a>=10;a/=10)r++;o%=I,s=o-I+r,u=s<0?0:f/pe(10,r-s-1)%10|0}if(t=t||n<0||c[d+1]!==void 0||(s<0?f:f%pe(10,r-s-1)),l=i<4?(u||t)&&(i==0||i==(e.s<0?3:2)):u>5||u==5&&(i==4||t||i==6&&(o>0?s>0?f/pe(10,r-s):0:c[d-1])%10&1||i==(e.s<0?8:7)),n<1||!c[0])return c.length=0,l?(n-=e.e+1,c[0]=pe(10,(I-n%I)%I),e.e=-n||0):c[0]=e.e=0,e;if(o==0?(c.length=d,a=1,d--):(c.length=d+1,a=pe(10,I-o),c[d]=s>0?(f/pe(10,r-s)%pe(10,s)|0)*a:0),l)for(;;)if(d==0){for(o=1,s=c[0];s>=10;s/=10)o++;for(s=c[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(e.e++,c[0]==tn&&(c[0]=1));break}else{if(c[d]+=a,c[d]!=tn)break;c[d--]=0,a=1}for(o=c.length;c[--o]===0;)c.pop()}return B&&(e.e>m.maxE?(e.d=null,e.e=NaN):e.e<m.minE&&(e.e=0,e.d=[0])),e}function cn(e,n,i){if(!e.isFinite())return ma(e);var t,r=e.e,o=Ee(e.d),s=o.length;return n?(i&&(t=i-s)>0?o=o.charAt(0)+"."+o.slice(1)+Cn(t):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(e.e<0?"e":"e+")+e.e):r<0?(o="0."+Cn(-r-1)+o,i&&(t=i-s)>0&&(o+=Cn(t))):r>=s?(o+=Cn(r+1-s),i&&(t=i-r-1)>0&&(o=o+"."+Cn(t))):((t=r+1)<s&&(o=o.slice(0,t)+"."+o.slice(t)),i&&(t=i-s)>0&&(r+1===s&&(o+="."),o+=Cn(t))),o}function er(e,n){var i=e[0];for(n*=I;i>=10;i/=10)n++;return n}function Xt(e,n,i){if(n>sc)throw B=!0,i&&(e.precision=i),Error(aa);return S(new e(Yt),n,1,!0)}function nn(e,n,i){if(n>fo)throw Error(aa);return S(new e(Qt),n,i,!0)}function ca(e){var n=e.length-1,i=n*I+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 Cn(e){for(var n="";e--;)n+="0";return n}function da(e,n,i,t){var r,o=new e(1),s=Math.ceil(t/I+4);for(B=!1;;){if(i%2&&(o=o.times(n),ra(o.d,s)&&(r=!0)),i=_e(i/2),i===0){i=o.d.length-1,r&&o.d[i]===0&&++o.d[i];break}n=n.times(n),ra(n.d,s)}return B=!0,o}function ta(e){return e.d[e.d.length-1]&1}function pa(e,n,i){for(var t,r=new e(n[0]),o=0;++o<n.length;)if(t=new e(n[o]),t.s)r[i](t)&&(r=t);else{r=t;break}return r}function co(e,n){var i,t,r,o,s,a,u,l=0,f=0,c=0,d=e.constructor,m=d.rounding,b=d.precision;if(!e.d||!e.d[0]||e.e>17)return new d(e.d?e.d[0]?e.s<0?0:1/0:1:e.s?e.s<0?0:e:NaN);for(n==null?(B=!1,u=b):u=n,a=new d(.03125);e.e>-2;)e=e.times(a),c+=5;for(t=Math.log(pe(2,c))/Math.LN10*2+5|0,u+=t,i=o=s=new d(1),d.precision=u;;){if(o=S(o.times(e),u,1),i=i.times(++f),a=s.plus(U(o,i,u,1)),Ee(a.d).slice(0,u)===Ee(s.d).slice(0,u)){for(r=c;r--;)s=S(s.times(s),u,1);if(n==null)if(l<3&&ot(s.d,u-t,m,l))d.precision=u+=10,i=o=a=new d(1),f=0,l++;else return S(s,d.precision=b,m,B=!0);else return d.precision=b,s}s=a}}function Mn(e,n){var i,t,r,o,s,a,u,l,f,c,d,m=1,b=10,y=e,N=y.d,T=y.constructor,R=T.rounding,_=T.precision;if(y.s<0||!N||!N[0]||!y.e&&N[0]==1&&N.length==1)return new T(N&&!N[0]?-1/0:y.s!=1?NaN:N?0:y);if(n==null?(B=!1,f=_):f=n,T.precision=f+=b,i=Ee(N),t=i.charAt(0),Math.abs(o=y.e)<15e14){for(;t<7&&t!=1||t==1&&i.charAt(1)>3;)y=y.times(e),i=Ee(y.d),t=i.charAt(0),m++;o=y.e,t>1?(y=new T("0."+i),o++):y=new T(t+"."+i.slice(1))}else return l=Xt(T,f+2,_).times(o+""),y=Mn(new T(t+"."+i.slice(1)),f-b).plus(l),T.precision=_,n==null?S(y,_,R,B=!0):y;for(c=y,u=s=y=U(y.minus(1),y.plus(1),f,1),d=S(y.times(y),f,1),r=3;;){if(s=S(s.times(d),f,1),l=u.plus(U(s,new T(r),f,1)),Ee(l.d).slice(0,f)===Ee(u.d).slice(0,f))if(u=u.times(2),o!==0&&(u=u.plus(Xt(T,f+2,_).times(o+""))),u=U(u,new T(m),f,1),n==null)if(ot(u.d,f-b,R,a))T.precision=f+=b,l=s=y=U(c.minus(1),c.plus(1),f,1),d=S(y.times(y),f,1),r=a=1;else return S(u,T.precision=_,R,B=!0);else return T.precision=_,u;u=l,r+=2}}function ma(e){return String(e.s*e.s/0)}function po(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)%I,i<0&&(t+=I),t<r){for(t&&e.d.push(+n.slice(0,t)),r-=I;t<r;)e.d.push(+n.slice(t,t+=I));n=n.slice(t),t=I-n.length}else t-=r;for(;t--;)n+="0";e.d.push(+n),B&&(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 uc(e,n){var i,t,r,o,s,a,u,l,f;if(n.indexOf("_")>-1){if(n=n.replace(/(\d)_(?=\d)/g,"$1"),fa.test(n))return po(e,n)}else if(n==="Infinity"||n==="NaN")return+n||(e.s=NaN),e.e=NaN,e.d=null,e;if(tc.test(n))i=16,n=n.toLowerCase();else if(ic.test(n))i=2;else if(rc.test(n))i=8;else throw Error(Pn+n);for(o=n.search(/p/i),o>0?(u=+n.slice(o+1),n=n.substring(2,o)):n=n.slice(2),o=n.indexOf("."),s=o>=0,t=e.constructor,s&&(n=n.replace(".",""),a=n.length,o=a-o,r=da(t,new t(i),o,o*2)),l=Jt(n,i,tn),f=l.length-1,o=f;l[o]===0;--o)l.pop();return o<0?new t(e.s*0):(e.e=er(l,f),e.d=l,B=!1,s&&(e=U(e,r,a*4)),u&&(e=e.times(Math.abs(u)<54?pe(2,u):Q.pow(2,u))),B=!0,e)}function lc(e,n){var i,t=n.d.length;if(t<3)return n.isZero()?n:bi(e,2,n,n);i=1.4*Math.sqrt(t),i=i>16?16:i|0,n=n.times(1/nr(5,i)),n=bi(e,2,n,n);for(var r,o=new e(5),s=new e(16),a=new e(20);i--;)r=n.times(n),n=n.times(o.plus(r.times(s.times(r).minus(a))));return n}function bi(e,n,i,t,r){var o,s,a,u,l=1,f=e.precision,c=Math.ceil(f/I);for(B=!1,u=i.times(i),a=new e(t);;){if(s=U(a.times(u),new e(n++*n++),f,1),a=r?t.plus(s):t.minus(s),t=U(s.times(u),new e(n++*n++),f,1),s=a.plus(t),s.d[c]!==void 0){for(o=c;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=t,t=s,s=o,l++}return B=!0,s.d.length=c+1,s}function nr(e,n){for(var i=e;--n;)i*=e;return i}function ga(e,n){var i,t=n.s<0,r=nn(e,e.precision,1),o=r.times(.5);if(n=n.abs(),n.lte(o))return vn=t?4:1,n;if(i=n.divToInt(r),i.isZero())vn=t?3:2;else{if(n=n.minus(i.times(r)),n.lte(o))return vn=ta(i)?t?2:3:t?4:1,n;vn=ta(i)?t?1:4:t?3:2}return n.minus(r).abs()}function mo(e,n,i,t){var r,o,s,a,u,l,f,c,d,m=e.constructor,b=i!==void 0;if(b?(De(i,1,On),t===void 0?t=m.rounding:De(t,0,8)):(i=m.precision,t=m.rounding),!e.isFinite())f=ma(e);else{for(f=cn(e),s=f.indexOf("."),b?(r=2,n==16?i=i*4-3:n==8&&(i=i*3-2)):r=n,s>=0&&(f=f.replace(".",""),d=new m(1),d.e=f.length-s,d.d=Jt(cn(d),10,r),d.e=d.d.length),c=Jt(f,10,r),o=u=c.length;c[--u]==0;)c.pop();if(!c[0])f=b?"0p+0":"0";else{if(s<0?o--:(e=new m(e),e.d=c,e.e=o,e=U(e,d,i,t,0,r),c=e.d,o=e.e,l=sa),s=c[i],a=r/2,l=l||c[i+1]!==void 0,l=t<4?(s!==void 0||l)&&(t===0||t===(e.s<0?3:2)):s>a||s===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||(++o,c.unshift(1));for(u=c.length;!c[u-1];--u);for(s=0,f="";s<u;s++)f+=uo.charAt(c[s]);if(b){if(u>1)if(n==16||n==8){for(s=n==16?4:3,--u;u%s;u++)f+="0";for(c=Jt(f,r,n),u=c.length;!c[u-1];--u);for(s=1,f="1.";s<u;s++)f+=uo.charAt(c[s])}else f=f.charAt(0)+"."+f.slice(1);f=f+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)f="0"+f;f="0."+f}else if(++o>u)for(o-=u;o--;)f+="0";else o<u&&(f=f.slice(0,o)+"."+f.slice(o))}f=(n==16?"0x":n==2?"0b":n==8?"0o":"")+f}return e.s<0?"-"+f:f}function ra(e,n){if(e.length>n)return e.length=n,!0}function fc(e){return new this(e).abs()}function cc(e){return new this(e).acos()}function dc(e){return new this(e).acosh()}function pc(e,n){return new this(e).plus(n)}function mc(e){return new this(e).asin()}function gc(e){return new this(e).asinh()}function hc(e){return new this(e).atan()}function xc(e){return new this(e).atanh()}function yc(e,n){e=new this(e),n=new this(n);var i,t=this.precision,r=this.rounding,o=t+4;return!e.s||!n.s?i=new this(NaN):!e.d&&!n.d?(i=nn(this,o,1).times(n.s>0?.25:.75),i.s=e.s):!n.d||e.isZero()?(i=n.s<0?nn(this,t,r):new this(0),i.s=e.s):!e.d||n.isZero()?(i=nn(this,o,1).times(.5),i.s=e.s):n.s<0?(this.precision=o,this.rounding=1,i=this.atan(U(e,n,o,1)),n=nn(this,o,1),this.precision=t,this.rounding=r,i=e.s<0?i.minus(n):i.plus(n)):i=this.atan(U(e,n,o,1)),i}function bc(e){return new this(e).cbrt()}function Ec(e){return S(e=new this(e),e.e+1,2)}function Nc(e,n,i){return new this(e).clamp(n,i)}function vc(e){if(!e||typeof e!="object")throw Error(Kt+"Object expected");var n,i,t,r=e.defaults===!0,o=["precision",1,On,"rounding",0,8,"toExpNeg",-yi,0,"toExpPos",0,yi,"maxE",0,yi,"minE",-yi,0,"modulo",0,9];for(n=0;n<o.length;n+=3)if(i=o[n],r&&(this[i]=lo[i]),(t=e[i])!==void 0)if(_e(t)===t&&t>=o[n+1]&&t<=o[n+2])this[i]=t;else throw Error(Pn+i+": "+t);if(i="crypto",r&&(this[i]=lo[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(ua);else this[i]=!1;else throw Error(Pn+i+": "+t);return this}function Sc(e){return new this(e).cos()}function Tc(e){return new this(e).cosh()}function ha(e){var n,i,t;function r(o){var s,a,u,l=this;if(!(l instanceof r))return new r(o);if(l.constructor=r,oa(o)){l.s=o.s,B?!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++;B?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}else if(o*0!==0){o||(l.s=NaN),l.e=NaN,l.d=null;return}return po(l,o.toString())}else if(u!=="string")throw Error(Pn+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),l.s=-1):(a===43&&(o=o.slice(1)),l.s=1),fa.test(o)?po(l,o):uc(l,o)}if(r.prototype=h,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=vc,r.clone=ha,r.isDecimal=oa,r.abs=fc,r.acos=cc,r.acosh=dc,r.add=pc,r.asin=mc,r.asinh=gc,r.atan=hc,r.atanh=xc,r.atan2=yc,r.cbrt=bc,r.ceil=Ec,r.clamp=Nc,r.cos=Sc,r.cosh=Tc,r.div=_c,r.exp=Ic,r.floor=Bc,r.hypot=kc,r.ln=wc,r.log=Dc,r.log10=Ac,r.log2=Rc,r.max=Cc,r.min=Mc,r.mod=Pc,r.mul=Oc,r.pow=Lc,r.random=Fc,r.round=qc,r.sign=$c,r.sin=Vc,r.sinh=Gc,r.sqrt=zc,r.sub=Uc,r.sum=jc,r.tan=Zc,r.tanh=Hc,r.trunc=Wc,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 _c(e,n){return new this(e).div(n)}function Ic(e){return new this(e).exp()}function Bc(e){return S(e=new this(e),e.e+1,3)}function kc(){var e,n,i=new this(0);for(B=!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 B=!0,new this(1/0);i=n}return B=!0,i.sqrt()}function oa(e){return e instanceof Q||e&&e.toStringTag===la||!1}function wc(e){return new this(e).ln()}function Dc(e,n){return new this(e).log(n)}function Rc(e){return new this(e).log(2)}function Ac(e){return new this(e).log(10)}function Cc(){return pa(this,arguments,"lt")}function Mc(){return pa(this,arguments,"gt")}function Pc(e,n){return new this(e).mod(n)}function Oc(e,n){return new this(e).mul(n)}function Lc(e,n){return new this(e).pow(n)}function Fc(e){var n,i,t,r,o=0,s=new this(1),a=[];if(e===void 0?e=this.precision:De(e,1,On),t=Math.ceil(e/I),this.crypto)if(crypto.getRandomValues)for(n=crypto.getRandomValues(new Uint32Array(t));o<t;)r=n[o],r>=429e7?n[o]=crypto.getRandomValues(new Uint32Array(1))[0]:a[o++]=r%1e7;else if(crypto.randomBytes){for(n=crypto.randomBytes(t*=4);o<t;)r=n[o]+(n[o+1]<<8)+(n[o+2]<<16)+((n[o+3]&127)<<24),r>=214e7?crypto.randomBytes(4).copy(n,o):(a.push(r%1e7),o+=4);o=t/4}else throw Error(ua);else for(;o<t;)a[o++]=Math.random()*1e7|0;for(t=a[--o],e%=I,t&&e&&(r=pe(10,I-e),a[o]=(t/r|0)*r);a[o]===0;o--)a.pop();if(o<0)i=0,a=[0];else{for(i=-1;a[0]===0;i-=I)a.shift();for(t=1,r=a[0];r>=10;r/=10)t++;t<I&&(i-=I-t)}return s.e=i,s.d=a,s}function qc(e){return S(e=new this(e),e.e+1,this.rounding)}function $c(e){return e=new this(e),e.d?e.d[0]?e.s:0*e.s:e.s||NaN}function Vc(e){return new this(e).sin()}function Gc(e){return new this(e).sinh()}function zc(e){return new this(e).sqrt()}function Uc(e,n){return new this(e).sub(n)}function jc(){var e=0,n=arguments,i=new this(n[e]);for(B=!1;i.s&&++e<n.length;)i=i.plus(n[e]);return B=!0,S(i,this.precision,this.rounding)}function Zc(e){return new this(e).tan()}function Hc(e){return new this(e).tanh()}function Wc(e){return S(e=new this(e),e.e+1,1)}h[Symbol.for("nodejs.util.inspect.custom")]=h.toString;h[Symbol.toStringTag]="Decimal";var Q=h.constructor=ha(lo);Yt=new Q(Yt);Qt=new Q(Qt);var me=Q;var ir=["number","finite_number","complex","finite_complex","imaginary","finite_imaginary","real","finite_real","rational","finite_rational","integer","finite_integer","non_finite_number"],tr=["collection","list","set","tuple","map"],rr=["scalar",...ir,"boolean","string"],go=["value",...tr,...rr],ho=["expression","symbol","function",...go],Ln=["any","unknown","nothing","never","error",...ho];var xa=3,ya=1,ba=2,Jc=4,Yc=5,Qc=6,Xc=7,Kc=8,ed=9;function Ie(e,n=0){if(typeof e=="string")return e;let i="";switch(e.kind){case"value":i=e.value.toString();break;case"reference":i=e.ref;break;case"negation":i=`!${Ie(e.type,xa)}`;break;case"union":i=e.types.map(u=>Ie(u,ya)).join(" | ");break;case"intersection":i=e.types.map(u=>Ie(u,ba)).join(" & ");break;case"list":if(e.dimensions&&g(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<${e.elements}>`:i=`vector<${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<${e.elements}>`:i=`matrix<${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<${Ie(e.elements)}${u}>`}break;case"map":i=`map<${Object.entries(e.elements).map(([u,l])=>`${u}: ${Ie(l)}`).join(", ")}>`;break;case"set":i=`set<${Ie(e.elements)}>`;break;case"collection":i=`collection<${Ie(e.elements)}>`;break;case"tuple":if(e.elements.length===0)i="tuple";else if(e.elements.length===1){let[u]=e.elements;i=`tuple<${st(u)}>`}else i="tuple<"+e.elements.map(u=>st(u)).join(", ")+">";break;case"signature":let r=e.args?e.args.map(u=>st(u)).join(", "):"",o=e.optArgs?e.optArgs.map(u=>st(u)+"?").join(", "):"",s=e.restArg?`...${st(e.restArg)}`:"";i=`(${[r,o,s].filter(u=>u).join(", ")}) -> ${Ie(e.result)}`;break;default:i="error"}return n>0&&n>nd(e.kind)?`(${i})`:i}function st(e){return e.name?`${e.name}: ${Ie(e.type)}`:Ie(e.type)}function nd(e){switch(e){case"negation":return xa;case"union":return ya;case"intersection":return ba;case"list":return Jc;case"map":return Yc;case"set":return Qc;case"collection":return Xc;case"tuple":return Kc;case"signature":return ed;default:return 0}}function id(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"||g(e,n)?e:g(n,e)?n:Na(e,n)}function td(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:g(e,n)?n:g(n,e)?e:Na(e,n)}function or(...e){return e.length===0?"nothing":e.length===1?e[0]:e.reduce(id)}function Pe(...e){return e.length===0?"nothing":e.length===1?e[0]:e.reduce(td)}function at(e){return e=typeof e=="string"?k(e):e,typeof e!="string"&&e.kind==="signature"}function Ea(e){if(e==="function")return k("...any -> any");if(typeof e!="string"&&e.kind==="signature")return e}function Ei(e){if(e==="function")return"any";if(typeof e!="string"&&e.kind==="signature")return e.result}function Wn(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, ${Pe(...Object.values(e.elements))}>`);if(e.kind==="set")return e.elements;if(e.kind==="tuple")return Pe(...e.elements.map(n=>n.type))}}function Sn(e){return typeof e=="string"?Ln.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 Na(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:re(e,n,"non_finite_number")?"non_finite_number":re(e,n,"finite_integer")?"finite_integer":re(e,n,"integer")?"integer":re(e,n,"finite_rational")?"finite_rational":re(e,n,"rational")?"rational":re(e,n,"finite_real")?"finite_real":re(e,n,"real")?"real":re(e,n,"finite_imaginary")?"finite_imaginary":re(e,n,"imaginary")?"imaginary":re(e,n,"finite_complex")?"finite_complex":re(e,n,"complex")?"complex":re(e,n,"finite_number")?"finite_number":re(e,n,"number")?"number":re(e,n,"list")?"list":re(e,n,"map")?"map":re(e,n,"set")?"set":re(e,n,"tuple")?"tuple":re(e,n,"collection")?"collection":re(e,n,"scalar")?"scalar":re(e,n,"value")?"value":re(e,n,"function")?"function":re(e,n,"expression")?"expression":"any"}function re(e,n,i){return!!(g(e,i)&&g(n,i))}var xo=class extends String{constructor(n){super(n)}isSubtypeOf(n){return g(this.toString(),n)}};function ye(e){return typeof e=="string"?Object.freeze(new xo(e)):(Object.defineProperty(e,"toString",{value:()=>Ie(e)}),Object.defineProperty(e,"isSubtypeOf",{value:n=>g(e,n)}),Object.freeze(e))}function rd(e,n){let i=[];for(let t=0;t<=n.length;t++)i[t]=[t];for(let t=0;t<=e.length;t++)i[0][t]=t;for(let t=1;t<=n.length;t++)for(let r=1;r<=e.length;r++)n.charAt(t-1)===e.charAt(r-1)?i[t][r]=i[t-1][r-1]:i[t][r]=Math.min(i[t-1][r-1]+1,i[t][r-1]+1,i[t-1][r]+1);return i[n.length][e.length]}function va(e,n){let i=null,t=1/0,r=3;for(let o of n){let s=rd(e,o);s<=r&&Math.abs(e.length-o.length)<=2&&s<t&&(t=s,i=o)}return i}var yo=class{constructor(n,i={value:()=>null,type:()=>null}){this.buffer=n,this.pos=0,this._valueParser=i.value,this._typeParser=i.type}error(...n){throw new Error(`
|
|
5
5
|
Invalid type
|
|
6
6
|
| ${this.buffer}
|
|
7
7
|
| ${" ".repeat(this.pos)}^
|
|
8
8
|
|
|
|
9
9
|
| ${n.join(`
|
|
10
10
|
| `)}
|
|
11
|
-
`)}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:ye({kind:"value",value:n})}parseTypeReference(){this.skipWhitespace();let n=this._typeParser(this);return n===null?null:ye({kind:"reference",ref:n})}parsePrimitiveType(){this.skipWhitespace(),this.isEOF()&&this.error("Unexpected end of input");for(let n of Fn)if(this.match(n))return n;return null}parseArguments(){let n=[],i=[];for(;;){let s=this.parseNamedElement();if(s===null||(this.match("?")?i.push(s):(i.length>0&&this.error("Optional arguments must come after required arguments"),n.push(s)),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 o=va([...n,...i,...r?[r]:[]]);return o&&this.error(`Duplicate argument name "${o}"`),[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.parsePrimaryGroup();if(!t&&!i&&(this.pos=n,this.match("...")&&this.parseName())){let r=this.parsePrimitiveType()??this.parsePrimaryGroup();this.pos=n,this.error("The rest argument indicator is placed before the type, not the name",`Use "${i}: ...${r?Ie(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 o=this.parseType();return o===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),ye({kind:"signature",args:n,optArgs:i,restArg:t,result:o})}parseIntegerLiteral(){let n=0;for(this.skipWhitespace();/[1-9]/.test(this.peek());)n=n*10+parseInt(this.consume());return n===0?null:n}parseOptionalDimension(){let n=this.parseIntegerLiteral();return n===null&&this.match("?")&&(n=-1),n}parseDimensions(){let n=this.match("("),i=[],t=this.parseOptionalDimension();t===null&&this.error("Expected a positive integer literal.","For example : `vector<3>]`");do{if(i.push(t),this.skipWhitespace(),!this.match("x"))break;this.skipWhitespace(),t=this.parseOptionalDimension(),t===null&&this.error("Expected a positive integer literal or `?`.","For example : `matrix<integer^2x3>` or `matrix<integer^?x?>`")}while(!0);return this.skipWhitespace(),n&&!this.match(")")&&this.error('Expected ")".',"For example `matrix<integer^(2x3)>`"),i}parseList(){if(this.skipWhitespace(),this.match("list<")){let t=this.parseType(),r;return t&&this.match("^")?(r=this.parseDimensions(),r===void 0&&this.error("Expected dimensions after `^`.","For example `list<number^2x3>`")):t||(t="any",r=this.parseDimensions()),this.skipWhitespace(),this.match(">")||this.error('Expected ">".',"For example `list<number>`"),ye({kind:"list",elements:t,dimensions:r})}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 o=this.parseIntegerLiteral();o===null&&this.error("Expected a positive integer literal.","For example `vector<3>`","Use `vector` for a vector of unknown size"),r=[o]}else t||(t="number",r=this.parseDimensions());return this.skipWhitespace(),this.match(">")||this.error('Expected ">"',"For example `vector<integer>`"),ye({kind:"list",elements:t,dimensions:r})}if(this.match("vector"))return ye({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>`"),ye({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("vector(")&&this.error("Use `vector<...>` instead of `vector(...)`.","For example `vector<3>` or `vector<integer^3>`"),this.match("matrix"))return ye({kind:"list",elements:"number",dimensions:[-1,-1]});if(this.match("tensor"))return ye({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>`"),ye({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}: ${Ie(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=va(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>`"),ye({kind:"tuple",elements:n})}parsePrimaryGroup(){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>`"),ye({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],o)=>n.slice(o+1).some(([s])=>s===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>`"),ye({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>`"),ye({kind:"collection",elements:n})}parsePrimary(){let n=this.parseNegationType()??this.parseList()??this.parseSet()??this.parseMap()??this.parseCollection()??this.parseFunctionSignature()??this.parseTuple()??this.parsePrimitiveType()??this.parseValue()??this.parseTypeReference()??this.parsePrimaryGroup();if(n===null){let i="";for(;!this.isEOF()&&/[a-zA-Z_]/.test(this.peek());)i+=this.consume();if(!i)return null;let t=Na(i,[...Fn,"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"),ye({kind:"negation",type:n})}parseIntersectionType(){let n=this.parsePrimary();if(n===null)return null;let i=[n];for(this.skipWhitespace();this.match("&");)n=this.parsePrimary(),n===null&&this.error("Expected type"),i.push(n);return i.length===1?i[0]:ye({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]:ye({kind:"union",types:i})}parseType(){return this.skipWhitespace(),this.isEOF()?null:this.parseUnionType()}parse(){let n=this.parseType(),i=this.pos;return this.parseNamedElement()!==null&&(this.pos=i,this.error("Named elements must be enclosed in parentheses")),n===null&&this.error("Syntax error. The type was not recognized."),this.skipWhitespace(),this.isEOF()||this.error("Unexpected character. Could be some mismatched parentheses."),n}};function k(e){return e===void 0?void 0:Sn(e)||Fn.includes(e)?e:new ho(e).parse()}function va(e){let n=new Set;for(let{name:i}of e)if(i){if(n.has(i))return i;n.add(i)}return""}var td={number:nr,finite_number:["finite_complex","finite_imaginary","finite_real","finite_integer","finite_rational"],non_finite_number:[],complex:["finite_complex","finite_imaginary","finite_real","finite_rational","finite_integer","non_finite_number","imaginary","real","rational","integer"],finite_complex:["finite_imaginary","finite_real","finite_rational","finite_integer"],imaginary:["finite_imaginary","non_finite_number"],finite_imaginary:[],real:["finite_real","finite_rational","finite_integer","non_finite_number","rational","integer"],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:Fn,unknown:[],nothing:[],never:[],error:[],value:po,scalar:tr,collection:ir,list:[],set:[],tuple:[],map:[],function:[],symbol:[],boolean:[],string:[],expression:mo};function rd(e,n){return n==="any"||e==="never"?!0:e==="unknown"||n==="unknown"?!1:e===n?!0:td[n].includes(e)}function g(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"||e==="unknown"||n==="unknown")return!1;if(typeof n=="string")return typeof e=="string"?rd(e,n):n==="numeric"?Sa(e):n==="function"?Ba(e):n==="expression"?od(e):n==="scalar"?Ta(e):n==="value"?Ia(e):n==="collection"?_a(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.some(i=>g(i,n)):!1;if(n.kind==="union")return n.types.some(i=>g(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=>g(i,n));if(e.kind==="intersection"&&n.kind==="intersection")return n.types.every(i=>e.types.some(t=>g(t,i)));if(e.kind==="intersection")return e.types.every(i=>g(i,n));if(n.kind==="intersection")return n.types.every(i=>g(e,i));if(e.kind==="signature"&&n.kind==="signature"){if(!g(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(!g(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(!g(n.optArgs[i].type,e.optArgs[i].type))return!1}else if(e.optArgs)return!1;if(n.restArg){if(!e.restArg||!g(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[o,s]=t[r],a=i.findIndex(f=>f[0]===o);if(a===-1)return!1;let u=s,l=i[a][1];if(!g(l,u))return!1}return!0}if(n.kind==="collection")return e.kind==="collection"||e.kind==="list"||e.kind==="set"?!!g(e.elements,n.elements):e.kind==="tuple"?e.elements.every(i=>g(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++)if(!g(e.elements[i].type,n.elements[i].type))return!1;return!0}if(n.kind==="list"&&e.kind==="list"){if(!g(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}return n.kind==="set"&&e.kind==="set"?!!g(e.elements,n.elements):!1}function Sa(e){return typeof e=="string"?nr.includes(e):!1}function Ta(e){return Sa(e)?!0:typeof e=="string"?tr.includes(e):!1}function _a(e){return typeof e=="string"?ir.includes(e):["collection","list","set","tuple","map"].includes(e.kind)}function Ia(e){return Ta(e)||_a(e)}function Ba(e){return e==="function"||typeof e!="string"&&e.kind==="signature"}function od(e){return!!(typeof e=="string"&&["expression","symbol","function"].includes(e)||Ia(e)||Ba(e))}function sd(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 o=t-55296,s=r-56320;t=2**16+o*2**10+s,i++}}n.push(t)}return n}var or=8205,ka=[127462,127487];function wa(e){return e===or||e===65038||e===65039||e>=127995&&e<=128e3||e>=129456&&e<=129460||e>=917536&&e<=917632}function ad(e){return e>=ka[0]&&e<=ka[1]}function Da(e){if(/^[\u0020-\u00FF]*$/.test(e))return e;let n=[],i=sd(e),t=0;for(;t<i.length;){let r=i[t++],o=i[t];if(o===or){let s=t-1;for(t+=2;i[t]===or;)t+=2;n.push(String.fromCodePoint(...i.slice(s,2*t-s+1)))}else if(wa(o)){let s=t-1;for(;wa(i[t]);)t+=i[t]===or?2:1;n.push(String.fromCodePoint(...i.slice(s,2*t-s-1)))}else ad(r)?(t+=1,n.push(String.fromCodePoint(...i.slice(t-2,2)))):n.push(String.fromCodePoint(r))}return n}var xo=class{constructor(n){this.obeyspaces=!1;n=n.replace(/[\u200E\u200F\u2066-\u2069\u202A-\u202E]/g,""),n=n.replace(/\u2212/g,"-"),this.s=Da(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 ud(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="",o=!1,s=[];do{if(s.length===0)if(/^#[0-9?]$/.test(e.peek())){let a=e.get().slice(1);s=ce(n?.[a]??n?.["?"]??"\\placeholder{}",n),i=s[0]}else i=e.next(),s=i?[i]:[];o=s.length===0,!o&&i==="\\endcsname"&&(o=!0,s.shift()),o||(o=i==="<$>"||i==="<$$>"||i==="<{>"||i==="<}>"||!!i&&i.length>1&&i[0]==="\\"),o||(r+=s.shift())}while(!o);r&&t.push("\\"+r),t=t.concat(s)}else if(i!=="\\endcsname")if(i.length>1&&i[0]==="#"){let r=i.slice(1);t=t.concat(ce(n?.[r]??n?.["?"]??"\\placeholder{}",n))}else t.push(i)}return t}function ce(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 o=new xo(t),s=[];do s.push(...ud(o,n));while(!o.end());return s}function sr(e){return ce(e).length}function E(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 Ni(e,n){return/^[0-9]$/.test(n)?`${e}${n}`:`${e}{${n}}`}function dn(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 E(n.map(t=>({"<space>":" ","<$$>":"$$","<$>":"$","<{>":"{","<}>":"}"})[t]??t))}function Ra(e){return!("kind"in e)||e.kind==="expression"}function Aa(e){return"kind"in e&&e.kind==="symbol"}function ut(e){return"kind"in e&&e.kind==="matchfix"}function yo(e){return"kind"in e&&e.kind==="infix"}function ar(e){return"kind"in e&&e.kind==="prefix"}function bo(e){return"kind"in e&&e.kind==="postfix"}function Ma(e){return"kind"in e&&e.kind==="environment"}var Yn=[{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 Eo(e,n,i={}){let{contract:t=.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}=i;if(!isFinite(n))return Eo(N=>e(1/N),1/n,{rtol:a,atol:s,maxeval:u,contract:Math.abs(t)>1?1/t:t,step:1/r,power:o});let f=r,c=Math.pow(1/t,o),d=e(n+f),m=[d],b=1/0,y=1;for(;y<u;){y+=1,f*=t,m.push(e(n+f));let N=c,T=1/0;for(let R=m.length-2;R>=0;R--){let _=m[R];m[R]=m[R+1]+(m[R+1]-m[R])/(N-1);let P=Math.abs(m[R]-_);T=Math.min(T,P),P<b&&(d=m[R],b=P),N*=c}if(T>l*b||!isFinite(T)||b<=Math.max(a*Math.abs(d),s))break}return[d,b]}function X(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):X(e.toString()):null;if(e instanceof me)return e.isInteger()?X(e.toString()):null;let n=e.toLowerCase(),i=n.match(/([+-]?[0-9]*)(?:\.([0-9]+))?e([+-]?[0-9]+)$/);if(i){let o=parseInt(i[3])-(i[2]?i[2].length:0);if(o<0)return null;n=(i[1]??"")+(i[2]??"")+"0".repeat(o)}if(n.indexOf(".")>=0||!/^[+-]?[0-9]+$/.test(n))return null;try{return BigInt(n)}catch(r){return console.error(r.message),null}}var Ca=0x3ffffffffffe5,No=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]),Pa=7919;function Oa(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 o=6;o<=r+6;o+=6){if(e%(o-1)===0){n[o-1]=(n[o-1]??0)+1,e/=o-1,t=!1;break}if(e%(o+1)===0){n[o+1]=(n[o+1]??0)+1,e/=o+1,t=!1;break}}}return n[e]!==void 0?n[e]+=1:n[e]=1,n}function vo(e){if(!Number.isInteger(e)||!Number.isFinite(e)||Number.isNaN(e)||e<=1)return!1;if(e<=Pa)return No.has(e);for(let n of No)if(e%n===0)return!1;return e<Ca&&ld(e),cd(e,30)?void 0:!1}function ld(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 La(e){if(e<=1)return!1;if(e<=Pa)return vo(Number(e));for(let n of No)if(e%BigInt(n)===BigInt(0))return!1;return e<Ca&&(e=fd(e)),dd(e,30)?void 0:!1}function fd(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 cd(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 o=i-1;o--;){if(r=r*r%e,r===1)return!1;if(r===e-1)continue e}return!1}}while(--n);return!0}function dd(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 o=i-1;o--;){if(r=r*r%e,r===BigInt(1))return!1;if(r===e-BigInt(1))continue e}return!1}}while(--n);return!0}var Wm=[BigInt(4),BigInt(2),BigInt(4),BigInt(2),BigInt(4),BigInt(6),BigInt(2),BigInt(6)];var So=21,Fa=53,rn=Math.floor(Math.log10(Math.pow(2,Fa))),pd=7,Xn=Math.pow(2,-(Fa-pd)),G=1e6,qa=1024,lt=1e6;function vi(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 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]][e];if(o)return o}let i=Oa(e),t=1,r=1;for(let o of Object.keys(i)){let s=parseInt(o);t=t*Math.pow(s,Math.floor(i[o]/n)),r=r*Math.pow(s,i[o]%n)}return[t,r]}function on(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 Si(e,n){return e*n/on(e,n)}function ur(e){if(!Number.isInteger(e)||e<0)return NaN;let n=1;for(let i=2;i<=e;i++)n=n*i;return n}function Va(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 $a(e,n=Xn){return typeof e=="number"&&Math.abs(e)<=n?0:e}function Ga(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 Qn(e,n,i=1){if(i===0){let o=Qn(e,n,-1),s=Qn(e,n,1);return o===void 0||s===void 0?NaN:Math.abs(o-s)>1e-5?NaN:(o+s)/2}let[t,r]=Eo(e,n,{step:i>0?1:-1});return t}function Tn(e){return typeof e=="object"&&e!==null&&"engine"in e}function sn(e){return e.precision>rn}function ft(e){return typeof e=="string"?e.startsWith("$")&&e.endsWith("$"):!1}function qn(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)?qn(E(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 ct(e){return e==null?[]:typeof e=="string"?[e]:Tn(e)?ct(e.symbol):typeof e[Symbol.iterator]=="function"?Array.from(e).map(n=>typeof n=="string"?n:n.symbol):[]}function Be(e){return typeof e!="string"?!1:Yn.some(n=>n.name===e)}function lr(e){return["Less","LessEqual","Greater","GreaterEqual"].includes(e)}function fr(e){return["Equal","NotEqual"].includes(e)}function Vn(e){let n=e.operator;return typeof n!="string"?!1:lr(n)}function To(e){let n=e.operator;return typeof n!="string"?!1:fr(n)}function Ti(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 Ti(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:Ti(e.op1)?.div(i)}}function _o(e){if(!e)return;let n={...e};return n.odd&&(n.even=!1),n.even&&(n.odd=!1),n}function dt(e){if(e==null||typeof e!="object"||Tn(e))return!1;if("type"in e||"value"in e||"constant"in e){if(typeof e.type=="function")throw new Error("The type field of a symbol definition should be a 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 field instead.");return!0}return!1}function pt(e){if(e==null||typeof e!="object"||Tn(e))return!1;if("signature"in e||"complexity"in e){if("constant"in e)throw new Error("Function definition cannot have a constant field and symbol definition cannot have a signature field.");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}return!1}function _i(e,n){return n.every(i=>Tn(i))?n.every(i=>i.isCanonical)?n:n.map(i=>i.canonical):n.map(i=>e.box(i))}function Pe(e,n){return n.every(i=>Tn(i)&&i.isCanonical)?n:n.map(i=>e.box(i))}function cr(e){return e.symbol==="Booleans"?"boolean":e.symbol==="Strings"?"string":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 dr(e){let n=md(e);return n===void 0?!1:Number.isFinite(n)}function Kn(e){return e.string!==null||(e.symbolDefinition?.value?.string??null)!==null?!0:(e.functionDefinition??e.symbolDefinition?.value?.functionDefinition)?.collection?.at!==void 0}function K(e){if(e.string!==null||(e.symbolDefinition?.value?.string??null)!==null)return!0;let n=e.functionDefinition??e.symbolDefinition?.value?.functionDefinition;return n?n.collection?.at!==void 0&&Number.isFinite(n.collection?.size?.(e)??1/0):!1}function*F(e){let n=mt(e);if(!n){yield e;return}let i=e.engine.iterationLimit,t=0;for(;;){let{done:r,value:o}=n.next();if(r)return;if(t++>i){yield e.engine.error("iteration-limit-exceeded");return}yield o}}function md(e){let n=e.string??e.symbolDefinition?.value?.string??null;return n!==null?n.length:(e.functionDefinition??e.symbolDefinition?.value?.functionDefinition)?.collection?.size?.(e)}function mt(e){let n=e.functionDefinition??e.symbolDefinition?.value?.functionDefinition;if(n?.collection?.iterator)return n.collection.iterator(e);let i=e.string??e.symbolDefinition?.value?.string??null;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 za(e,n){let i=e.functionDefinition??e.symbolDefinition?.value?.functionDefinition;if(i?.collection?.at)return i.collection.at(e,n);let t=e.string;if(t)return n<1?e.engine.string(t.charAt(t.length+n)):e.engine.string(t.charAt(n-1))}function Ua(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,o=-1)=>{let s=e.at,a=r;return{next(){if(o>=0&&a>=r+o)return{done:!0,value:void 0};let u=s(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 o=1,s=i(t),a=s.next();for(;!a.done;){if(r.isSame(a.value))return o;o++,a=s.next()}}),{contains:e.contains,size:e.size,at:e.at,iterator:i,keys:e.keys,indexOf:e.indexOf,subsetOf:e.subsetOf}}function ie(e,n){let i=e.every(r=>r.isCanonical)?e:e.map(r=>r.canonical);if(n){let r=s=>s.symbol==="Nothing"||s.operator===n||s.operator==="Sequence";if(i.every(s=>!r(s)))return i;let o=[];for(let s of i)s.symbol!=="Nothing"&&(s.ops&&(s.operator===n||s.operator==="Sequence")?o.push(...ie(s.ops,n)):o.push(s));return o}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(...ie(r.ops,n)):t.push(r));return t}function Ii(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(...Ii(t.ops,n));return i.length,e.length,i.length===e.length?e:i}function Io(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(...Io(t))}else n.push(i.op1);else i.operator==="Sequence"?i.ops&&n.push(...i.ops):n.push(i);return n}function Oe(e,n,i){if(n=ie(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 Le(e,n,i){let t=typeof i=="number"?i:i?.count,r=typeof i=="number"?void 0:i?.flatten;if(n=ie(n,r),!e.strict){for(let a of n)K(a)||a.infer("real");return n}let o=!0;t??(t=n.length);let s=[];for(let a=0;a<=Math.max(t-1,n.length-1);a++){let u=n[a];if(a>t-1)o=!1,s.push(e.error("unexpected-argument",u.toString()));else if(u===void 0)o=!1,s.push(e.error("missing"));else if(!u.isValid)o=!1,s.push(u);else if(u.isNumber)s.push(u);else if(u.symbol&&!e.lookupSymbol(u.symbol)&&!e.lookupFunction(u.symbol))s.push(u);else if(u.type==="unknown")s.push(u);else if(K(u)){for(let l of F(u))if(!l.isNumber){o=!1;break}o?s.push(u):s.push(e.typeError("number",u.type,u))}else u.symbolDefinition?.inferredType&&g("number",u.type)||u.functionDefinition?.inferredSignature&&g("number",u.type)?s.push(u):(o=!1,s.push(e.typeError("number",u.type,u)))}if(o)for(let a of s)if(K(a))for(let u of F(a))u.infer("real");else a.infer("real");return s}function _n(e,n,i){return n==null?e.error("missing"):i===void 0?e.error("unexpected-argument",n.toString()):(n=n.canonical,!n.isValid||g(n.type,i)?n:e.typeError(i,n.type,n))}function pr(e,n,i){if(n.length===i.length&&n.every((r,o)=>g(r.type,i[o])))return n;let t=[];for(let r=0;r<=i.length-1;r++)t.push(_n(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 ja(e,n,i){if(!e.strict||typeof i.signature=="string"||i.signature.kind!=="signature")return null;let t=[],r=!0,o=i.signature.args?.map(c=>c.type)??[],s=i.signature.optArgs?.map(c=>c.type)??[],a=i.signature.restArg?.type,u=i.hold,l=i.threadable,f=0;for(let c of o){let d=n[f++];if(!d){t.push(e.error("missing")),r=!1;continue}if(u){t.push(d);continue}if(!d.isValid){t.push(d),r=!1;continue}if(d.type==="unknown"){t.push(d);continue}if(l&&K(d)){t.push(d);continue}if(d.symbolDefinition?.inferredType&&g(d.type,c)){t.push(d);continue}if(d.functionDefinition?.inferredSignature&&g(d.type,c)){t.push(d);continue}if(!g(d.type,c)){t.push(e.typeError(c,d.type,d)),r=!1;continue}t.push(d)}for(let c of s){let d=n[f];if(!d)break;if(u){t.push(d),f+=1;continue}if(!d.isValid){t.push(d),r=!1,f+=1;continue}if(d.type==="unknown"){t.push(d),f+=1;continue}if(l&&K(d)){t.push(d),f+=1;continue}if(d.symbolDefinition?.inferredType&&g(d.type,c)){t.push(d),f+=1;continue}if(!g(d.type,c)){t.push(e.typeError(c,d.type,d)),r=!1,f+=1;continue}t.push(d),f+=1}if(a)for(let c of n.slice(f)){if(f+=1,u){t.push(c);continue}if(!c.isValid){t.push(c),r=!1;continue}if(c.type==="unknown"){t.push(c);continue}if(l&&K(c)){t.push(c);continue}if(c.symbolDefinition?.inferredType&&g(c.type,a)){t.push(c);continue}if(!g(c.type,a)){t.push(e.typeError(a,c.type,c)),r=!1;continue}t.push(c)}if(f<n.length)for(let c of n.slice(f))t.push(e.error("unexpected-argument",c.toString())),r=!1;if(!r)return t;f=0;for(let c of o)u||(!l||!K(n[f]))&&n[f].infer(c),f+=1;for(let c of s){if(!n[f])break;(!l||!K(n[f]))&&n[f]?.infer(c),f+=1}if(a)for(let c of n.slice(f))u||(!l||!K(c))&&c.infer(a),f+=1;return null}function gt(e,n){for(;n!==BigInt(0);)[e,n]=[n,e%n];return e<0?-e:e}function Za(e,n){return e*n/gt(e,n)}function In(e){return e!==null&&Array.isArray(e)}function ee(e){return e!==null&&Array.isArray(e)&&typeof e[0]=="number"}function Ha(e){return e!==null&&Array.isArray(e)&&typeof e[0]=="bigint"}function an(e){return e[0]==0}function Bo(e){return e[0]>0}function _e(e){return e[0]==e[1]}function ht(e){return e[0]===-e[1]}function ei(e){return e[1]==1}function ko(e){return Number(e[0])}function wo(e){return Number(e[1])}function Wa(e){return Number(e[0])/Number(e[1])}function ni(e,n){if(typeof e[0]=="number"&&!Number.isFinite(e[0]))return e;let i=n;if(i===null)return e;if(Ha(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(Ha(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 mn(e,n){return ee(e)&&ee(n)?[e[0]*n[0],e[1]*n[1]]:ee(e)?[BigInt(e[0])*n[0],BigInt(e[1])*n[1]]:ee(n)?[BigInt(n[0])*e[0],BigInt(n[1])*e[1]]:[e[0]*n[0],e[1]*n[1]]}function ii(e){return[-e[0],e[1]]}function Ja(e){return e[0]<0?[-e[1],-e[0]]:[e[1],e[0]]}function Ya(e){return[Number(e[0]),Number(e[1])]}function mr(e,n){return ee(e)&&ee(n)?e[1]===1&&n[1]===1?[on(e[0],n[0]),1]:[on(e[0],n[0]),Si(e[1],n[1])]:e[1]===1&&n[1]===1?[gt(BigInt(e[0]),BigInt(n[0])),BigInt(1)]:[gt(BigInt(e[0]),BigInt(n[0])),Za(BigInt(e[1]),BigInt(n[1]))]}function Bi(e){if(ee(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=on(e[0],e[1]);return r<=1?e:[e[0]/r,e[1]/r]}e[1]<0&&(e=[-e[0],-e[1]]);let n=gt(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 Qa(e){if(!Number.isFinite(e)||e%1===0)return e;let i=1e-15,t=Math.floor(e),r=1,o=0,s=t,a=1;for(;e-t>i*a*a;){e=1/(e-t),t=Math.floor(e);let u=r;r=s;let l=o;o=a,s=u+t*r,a=l+t*o}return[s,a]}var q=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 ki=["Error","'missing'"];function Bn(e){return!!(typeof e=="number"||wi(e)||typeof e=="string"&&/^[+-]?[0-9\.]/.test(e))}function wi(e){return e!==null&&typeof e=="object"&&"num"in e}function hr(e){return e!==null&&typeof e=="object"&&"sym"in e}function gd(e){return e!==null&&typeof e=="object"&&"str"in e}function xt(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 Ro(e){if(e==null||V(e)!==null)return null;let n=x(e);return n?[n,...v(e).map(i=>Ro(i)).filter(i=>i!==null)]:e}function x(e){return Array.isArray(e)?e[0]:e==null?"":xt(e)?e.fn[0]:""}function v(e){return Array.isArray(e)?e.slice(1):e!==void 0&&xt(e)?e.fn.slice(1):[]}function p(e,n){return Array.isArray(e)?e[n]??null:e===null||!xt(e)?null:e.fn[n]??null}function W(e){return e==null?0:Array.isArray(e)?Math.max(0,e.length-1):xt(e)?Math.max(0,e.fn.length-1):0}function Ao(e){return e==null?null:x(e)==="Hold"?p(e,1):e}function D(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=hr(e)?e.sym:e;return typeof n!="string"?null:n}function Xa(e){let n=x(e);if(n==="KeyValuePair"||n==="Tuple"||n==="Pair"){let[i,t]=v(e),r=V(i);return r?[r,t??"Nothing"]:null}return null}function Mo(e){if(e===null)return null;let n=Xa(e);if(n)return{[n[0]]:n[1]};if(x(e)==="Dictionary"){let t={},r=v(e);for(let o=1;o<W(e);o++){let s=Xa(r[o]);s&&(t[s[0]]=s[1])}return t}return null}function xr(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 hd(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 w(e){return typeof e=="number"?e:typeof e=="string"?hd(e):e!==void 0&&wi(e)?w(e.num):null}function Di(e){if(e==null)return null;if(D(e)==="Half")return[1,2];let n=x(e);if(!n)return null;let i=null,t=null;if(n==="Negate"){let r=Di(v(e)[0]);if(r)return[-r[0],r[1]]}if(n==="Rational"||n==="Divide"){let[r,o]=v(e);i=w(r)??NaN,t=w(o)??NaN}if(n==="Power"){let[r,o]=v(e),s=w(o);s===1?(i=w(r),t=1):s===-1&&(i=1,t=w(r))}if(n==="Multiply"){let[r,o]=v(e);if(x(o)==="Power"){let[s,a]=v(o);w(a)===-1&&(i=w(r),t=w(s))}}return i===null||t===null?null:Number.isInteger(i)&&Number.isInteger(t)?[i,t]:null}function gr(e,n){let i=D(e);if(i&&n[i])return n[i];let t=x(e);return t?[gr(t,n),...v(e).map(r=>gr(r,n))]:e}function yr(e,n){let i=null;if(Array.isArray(e)&&(i=e),xt(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 Ri(e,n,i){let t=x(n),r=x(i);return t===e&&r===e?[e,...v(n),...v(i)]:t===e?[e,...v(n),i]:r===e?[e,n,...v(i)]:[e,n,i]}function kn(e){if(e==null)return null;let n=x(e);if(n==="Delimiter"){if(e=p(e,1),e===null)return[];if(n=x(e),n!=="Sequence")return[e]}return n!=="Sequence"?null:v(e)}function z(e){return e==null||e==="Nothing"?!0:x(e)==="Sequence"&&W(e)===0}function C(e){return z(e)?ki:e}function Do(e){return e[0]==="Square"?Do(e.slice(1))+2:e.reduce((n,i)=>n+yt(i),0)}function yt(e){if(e===null)return 0;if(typeof e=="number"||typeof e=="string"||Bn(e)||hr(e)||gd(e))return 1;if(Array.isArray(e))return Do(e);if("fn"in e)return Do(e.fn);let n=Mo(e);if(n){let i=Object.keys(n);return 1+i.length+i.reduce((t,r)=>t+yt(n[r]),0)}return 0}function xd(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 o=n[e[r]];if(o===void 0)return[i,e.slice(r)];o<t?i-=o:i+=o,t=o}return[i,""]}function Ai(e,n){if(e=e.trim(),e.length===0)return[NaN,""];if(e.startsWith("+"))return Ai(e.slice(1),n);if(e.startsWith("-")){let[r,o]=Ai(e.slice(1),n);return[-r,o]}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 xd(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 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}[e[r]];if(o!==-1){if(o===void 0)return[t,e.substring(r)];if(o>=i)return[t,e.substring(r)];t=t*i+o}}return[t,""]}function ge(e){let n=e.toString();if(typeof e=="number"&&Number.isInteger(e)&&n.includes("e")){let i=BigInt(e).toString(),t=i.match(/0+$/);if((t?t[0].length:0)<=5)return i}else if(typeof e=="bigint"){let i=n.match(/0+$/),t=i?i[0].length:0;if(t>5)return`${n.slice(0,-t)}e+${t}`}return n}function Ka(e){if(typeof e=="number")return Number.isInteger(e)?BigInt(e):null;if(e==null||!Bn(e))return null;let n=wi(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:X(i)}function Re(e){if(typeof e=="number")return isNaN(e)?"NaN":Number.isFinite(e)?e:e<0?"NegativeInfinity":"PositiveInfinity";if(e>=Number.MIN_SAFE_INTEGER&&e<=Number.MAX_SAFE_INTEGER)return Number(e);let n=ge(e);return Number(e).toString()===n?Number(e):{num:n}}var j=class e extends q{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 o=1;if(typeof o!="number"||Number.isInteger(o),o==0){this.rational=[0,1],this.radical=1;return}let s=i.rational?[...i.rational]:[1,1];o!=1&&(typeof o=="bigint"?s=mn(s,[o,BigInt(1)]):s=mn(s,[o,1])),this.rational=s,this.radical=i.radical??1,this.radical<=G&&this.radical>=1,this.normalize()}get type(){return this.isNaN||this.isPositiveInfinity||this.isNegativeInfinity?"non_finite_number":this.radical!==1?(an(this.rational),"finite_real"):ei(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=0,t=r=>ei(r)?Re(r[0]):["Rational",Re(r[0]),Re(r[1])];return an(this.rational)||(this.radical===1?i=t(this.rational):_e(this.rational)?i=["Sqrt",this.radical]:ht(this.rational)?i=["Negate",["Sqrt",this.radical]]:i=["Multiply",t(this.rational),["Sqrt",this.radical]]),i}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=>ei(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 _e(this.rational)?t(this.radical):ht(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 an(this.rational)?0:Bo(this.rational)?1:-1}get re(){return Wa(this.rational)*Math.sqrt(this.radical)}get bignumRe(){let i,t=this.rational;return ee(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:ee(this.rational)?[this.rational[0],1]:[this.rational[0],BigInt(1)],radical:this.radical})}get denominator(){return ee(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,o]=vi(this.radical,2);typeof this.rational[0]=="number"?this.rational[0]*=r:this.rational=mn(this.rational,[r,1]),this.radical=o}this.rational=Bi(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 an(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 an(this.rational)?0:Bo(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:ii(this.rational),radical:this.radical})}inv(){return this.isOne?this:this.isNegativeOne?this:this.clone({rational:ee(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:ee(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:ni(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:ee(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 me?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:mn(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:ee(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(ee(this.rational)&&ee(i.rational)){let[r,o]=this.rational,[s,a]=i.rational;t=[r*a,o*s*i.radical]}else t=mn(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 q){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>G||this.rational[0]>G||this.rational[0]<-G||this.rational[1]>G)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:ee(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:ee(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>G||this.rational[0]>G||this.rational[0]<-G||this.rational[1]>G)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(ee(this.rational)){let[i,t]=this.rational;return i*t>G?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=mr(this.rational,i.rational),r=on(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&&ei(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 o=0,s=[0,1],a=[];for(let l of i){if(l.isNaN)return[new e(NaN,t,r)];if(!l.isZero)if(o+=l.im,l instanceof e){let f=l.rational;if(l.radical===1)s=ni(s,f);else{let c=a.findIndex(d=>d.radical===l.radical);c===-1?a.push({multiple:f,radical:l.radical}):a[c].multiple=ni(a[c].multiple,f)}}else l.type,s=ni(s,[l.re,1])}if(an(s)&&a.length===0)return o===0?[new e(0,t,r)]:[t({im:o})];let u=[];return o!==0&&u.push(t({im:o})),a.length===0?u.push(new e({rational:s},t,r)):(a.push({multiple:s,radical:1}),u.push(...a.map(l=>new e({rational:l.multiple,radical:l.radical},t,r)))),u}};function Ge(e){let n=e.numericValue;if(n===null||typeof n=="number"&&!Number.isFinite(n)||n instanceof q&&(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 j)return n.radical!==1?void 0:n.rational;let t=n.bignumRe;if(t!==void 0&&Number.isInteger(t))return[X(t),BigInt(1)];let r=n.re;if(Number.isInteger(r))return[r,1]}function bt(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()?X(i):Number.isInteger(n.re)?BigInt(n.re):null}function Co(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 $(e){if(e==null)return null;if(typeof e=="number")return Number.isInteger(e)&&e>=-G&&e<=G?e:null;let n=e.numericValue;if(n===null)return null;if(typeof n=="number")return Number.isInteger(n)&&n>=-G&&n<=G?n:null;if(n.im!==0)return null;let i=n.re;return Number.isInteger(i)&&i>=-G&&i<=G?Number(i):null}function ke(e){if(e.symbol&&!e.isConstant)return 1;if(e.operator==="Power"&&e.op2.numericValue!==null){if(ke(e.op1)===0)return 0;let n=$(e.op2);return n!==null&&n>0?n:0}if(e.operator==="Multiply"){let n=0;for(let i of e.ops){let t=ke(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,ke(i));return n}return e.operator==="Negate"||e.operator==="Divide"?ke(e.op1):0}function ze(e){if(e.symbol&&!e.isConstant)return 1;if(e.operator==="Power"&&e.op2.numericValue!==null){if(ze(e.op1)===0)return 0;let n=$(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,ke(i));return n}return e.operator==="Negate"||e.operator==="Divide"?ze(e.op1):0}function eu(e){return e.symbol&&!e.isConstant?e.symbol:e.ops?e.ops.map(n=>eu(n)).join(" ").trim():""}function Po(e){return eu(e).split(" ").reverse().join(" ").trim()}function J(e,n,i,t){if((e?.numericValue??null)===null)return;let r=e.engine,o;if(e.im!==0)o=t?.(r.complex(e.re,e.im));else{let s=e.bignumRe;if(s!==void 0&&sn(r)&&i)o=i(s);else{let a=e.re;sn(r)&&i?o=i(r.bignum(a)):o=n(a)}}if(o!==void 0)return o instanceof O?r.number(r._numericValue({re:r.chop(o.re),im:r.chop(o.im)})):r.number(r.chop(o))}function gn(e,n,i,t,r){if(e.numericValue===null||n.numericValue===null)return;let o=e.engine,s;if((e.im!==0||n.im!==0)&&(s=r?.(o.complex(e.re,e.im),o.complex(n.re,n.im))),s===void 0&&t){let a=e.bignumRe,u=n.bignumRe;(a!==void 0||u!==void 0)&&(a??(a=o.bignum(e.re)),u??(u=o.bignum(n.re)),s=t(a,u))}if(s===void 0){let a=e.re,u=n.re;!isNaN(a)&&!isNaN(u)&&(sn(o)&&t?s=t(o.bignum(e.bignumRe??a),o.bignum(n.bignumRe??u)):s=i(a,u))}if(s!==void 0)return s instanceof O?o.number(o._numericValue({re:o.chop(s.re),im:o.chop(s.im)})):o.number(o.chop(s))}function Oo(e,n){for(e.isInteger()&&n.isInteger();!n.isZero();)[e,n]=[n,e.modulo(n)];return e.abs()}function nu(e,n){return e.mul(n).div(Oo(e,n))}function Lo(e,n){if(!n.isInteger()||n.isNegative())return e._BIGNUM_NAN;if(n.lessThan(10))return e.bignum([1,1,2,6,24,120,720,5040,40320,362880,3628800][n.toNumber()]);if(n.gt(Number.MAX_SAFE_INTEGER)){let o=e._BIGNUM_ONE,s=e._BIGNUM_TWO;for(;s.lessThan(n);)o=o.mul(s),s=s.add(1);return o}if(n.modulo(2).eq(1))return n.times(Lo(e,n.minus(1)));let i=n.toNumber(),t=n,r=n;for(;i>2;)i-=2,t=t.add(i),r=r.mul(t);return r}function iu(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 wn(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 ti=class e extends q{constructor(n,i){if(super(),this.bignum=i,typeof n=="number")this.decimal=i(n),this.im=0;else if(n instanceof me)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.im!==0?Number.isFinite(this.im)?this.decimal.isZero()?"finite_imaginary":"finite_complex":"non_finite_number":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(X(this.decimal))}toJSON(){return this.isNaN?"NaN":this.isPositiveInfinity?"PositiveInfinity":this.isNegativeInfinity?"NegativeInfinity":this.isComplexInfinity?"ComplexInfinity":this.im===0?wn(this.decimal)?Ue(this.decimal.toNumber()):{num:br(this.decimal)}:wn(this.decimal)?["Complex",Re(Ue(this.decimal.toNumber())),Re(this.im)]:["Complex",{num:br(this.decimal)},Re(this.im)]}toString(){if(this.isZero)return"0";if(this.isOne)return"1";if(this.isNegativeOne)return"-1";if(this.im===0)return br(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`,`(${br(this.decimal)} ${n})`}clone(n){return new e(n,this.bignum)}_makeExact(n){return new j(n,i=>this.clone(i),this.bignum)}get re(){return Ue(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 me?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 me)return this.im===0?this.clone(this.decimal.mul(n)):this.clone({re:this.decimal.mul(n),im:Ue(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,o]=[n.re,n.im],s=r*r+o*o,a=n.bignumRe??this.bignum(n.re),u=a.mul(a).add(o*o);return this.clone({re:this.decimal.mul(a).add(t*o).div(u),im:(t*r-i*o)/s})}pow(n){if(Array.isArray(n),this.isNaN)return this;if(typeof n=="number"&&isNaN(n))return this.clone(NaN);if(n instanceof q){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),d=this.clone({re:c.cos(),im:Ue(c.sin().toNumber())});return f.mul(d)}}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(),o=me.atan2(t,i),s=r.pow(n),a=o.mul(n);return this.clone({re:s.mul(a.cos()),im:Ue(s.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(),o=me.atan2(t,i),s=r.pow(1/n),a=o.div(n);return this.clone({re:s.mul(a.cos()),im:Ue(s.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(),o=Ue(Math.sign(i)*t.sub(n).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(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(),o=Ue(me.atan2(t,i).toNumber());return n===void 0?this.clone({re:r.ln(),im:o}):this.clone({re:r.log(n),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 n=this.decimal.exp();return this.clone({re:n.mul(Ue(Math.cos(this.im))),im:Ue(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(X(this.decimal.floor()))}ceil(){return this.isNaN||this.im!==0?this._makeExact(NaN):this.decimal.isInteger()?this:this._makeExact(X(this.decimal.ceil()))}round(){return this.isNaN||this.im!==0?this._makeExact(NaN):this.decimal.isInteger()?this:this._makeExact(X(this.decimal.round()))}eq(n){return typeof n=="number"?this.im===0&&this.decimal.eq(n):this.decimal.eq(n.bignumRe??n.re)&&Ue(this.im-n.im)===0}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 br(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 Ue(e){return Math.abs(e)<=Xn?0:e}var ri=class e extends q{constructor(n,i){if(super(),this.bignum=i,typeof n=="number")this.decimal=n,this.im=0;else if(n instanceof me)this.decimal=n.toNumber(),this.im=0;else{let t=n.re===void 0?0:n.re instanceof me?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 j(n,i=>this.clone(i),this.bignum)}get type(){return this.im!==0?Number.isFinite(this.im)?this.decimal===0?"finite_imaginary":"finite_complex":"non_finite_number":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?Re(this.decimal):["Complex",Re(this.decimal),Re(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 me?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 me&&(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 me?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,o]=[n.re,n.im],s=r*r+o*o;return this.clone({re:(i*r+t*o)/s,im:(t*r-i*o)/s})}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 q){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:Et(f*Math.cos(c)),im:Et(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.pow(-n).inv();if(this.im===0)return this.clone(this.decimal**n);let i=this.decimal,t=this.im,r=Math.sqrt(i*i+t*t),o=Math.atan2(t,i),s=r**n,a=o**n;return this.clone({re:s*Math.cos(a),im:s*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),o=Math.atan2(t,i),s=Math.pow(r,1/n),a=o/n;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 n=this.decimal,i=this.im,t=Math.sqrt(n*n+i*i),r=Math.sqrt((n+t)/2),o=Math.sign(i)*Math.sqrt((t-n)/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(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),o=Math.atan2(t,i),s=n===void 0?Math.log(r):Math.log(r)/Math.log(n);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 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 typeof n=="number"?this.im===0&&Et(this.decimal-n)===0:Et(this.decimal-n.re)===0&&Et(this.im-n.im)===0}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 Et(e){return Math.abs(e)<=Xn?0:e}var Nt=class{constructor(n,i){this.terms=[];this.engine=n;let t=0,r=0,o=[];for(let s of i){if((s.type==="imaginary"||s.type==="complex")&&s.isInfinity){this.terms=[{term:n.ComplexInfinity,coef:[]}];return}if(s.isNaN||s.symbol==="Undefined"){this.terms=[{term:n.NaN,coef:[]}];return}let[a,u]=s.toNumericValue();a.isPositiveInfinity?t+=1:a.isNegativeInfinity&&(r+=1),u.is(1)?a.isZero||o.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}o.length===1?this.add(o[0],n.One):o.length>0&&tu(n,o).forEach(s=>this.add(s,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[o,s]=r.toNumericValue();this.add(n.mul(o),s)}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:s,term:a}of i)if(s.length===0)a.isNumberLiteral?typeof a.numericValue=="number"?r.push(n._numericValue(a.numericValue)):r.push(a.numericValue):t.push(a);else{let u=s.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 o=yd(n,r);if(!o.isZero){if(t.length===0)return n.box(o);t.push(n.box(o))}return Fe(n,t)}asExpression(){let n=this.engine,i=this.terms;return i.length===0?n.Zero:Fe(n,i.map(({coef:t,term:r})=>{if(t.length===0)return r;let o=tu(n,t);if(o.length===0)return r;if(o.length>1)return se(n,[Fe(n,o.map(a=>n.box(a))),r]);let s=o[0];return s.isNaN?n.NaN:s.isZero?n.Zero:s.eq(1)?r:s.eq(-1)?r.neg():r.is(1)?n.box(s):r.mul(n.box(s))}))}};function tu(e,n){let i=o=>e.bignum(o),t=o=>new j(o,r,i),r=e.precision>rn?o=>new ti(o,i):o=>new ri(o,t);return j.sum(n,r,i)}function yd(e,n){let i=s=>e.bignum(s),t=s=>new j(s,r,i),r=e.precision>rn?s=>new ti(s,i):s=>new ri(s,t),o=j.sum(n,r,i);return o.length===0?t(0):o.length===1?o[0].N():o.reduce((s,a)=>s.add(a).N())}function Fe(e,n){if(n=ie(n,"Add"),n=n.filter(t=>t.numericValue===null||!t.is(0)),n.length===0)return e.Zero;if(n.length===1&&!Kn(n[0]))return n[0];let i=[];for(let t=0;t<n.length;t++){let r=n[t];if(r.isNumberLiteral){let o=r.numericValue;if(typeof o=="number"||g(o.type,"real")&&!o.isExact||g(o.type,"integer")){let s=n[t+1];if(s){let a=Ti(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;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(vt))}function ru(e){return e.length===0?"finite_integer":e.length===1?e[0].type:Ce(...e.map(n=>n.type))}function Z(...e){return e.length>0,e.every(n=>n.isValid)?new Nt(e[0].engine,e).asExpression():e[0].engine._fn("Add",e)}function ou(...e){return e.length>0,e.every(n=>n.isValid)?(e=e.map(n=>n.isNumberLiteral?n.evaluate():n.N()),new Nt(e[0].engine,e).N()):e[0].engine._fn("Add",e)}function hn(e,n){if(e.operator==="Negate"&&n.operator==="Negate")return hn(e.op1,n.op1);let i=e.engine;if(e.operator==="Negate")return hn(e.op1,n).neg();if(n.operator==="Negate")return hn(e,n.op1).neg();if(e.operator==="Divide"&&n.operator==="Divide"){let t=e.op2.mul(n.op2);return hn(e.op1,n.op1).div(t)}return e.operator==="Divide"?hn(e.op1,n).div(e.op2):n.operator==="Divide"?hn(e,n.op1).div(n.op2):e.operator==="Add"?Z(...e.ops.map(t=>hn(t,n))):n.operator==="Add"?Z(...n.ops.map(t=>hn(e,t))):new Ne(i,[e,n]).asExpression()}function Tt(e,n){if(n.length===0)return null;if(n.length===1)return n[0];if(n.length===2)return hn(n[0],n[1]);let i=Tt(e,n.slice(1));return i===null?null:hn(n[0],i)}var St=[[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 qo(e,n){for(;e>=St.length;){let i=St.length,t=[1],r=St[i-1];for(let o=1;o<i;o++)t[o]=r[o-1]+r[o];t[i]=1,St.push(t)}return St[e][n]}function bd(e){let n=e.reduce((t,r)=>t+r,0),i=1;for(let t=0;t<e.length;t+=1)i*=qo(n,e[t]),n-=e[t];return i}function*su(e,n){if(e===1){yield[n];return}for(let i=0;i<=n;i+=1)for(let t of su(e-1,n-i))yield[i,...t]}function Fo(e,n){let i=e.engine;if(n<0){let s=Fo(e,-n);return s?s.inv():null}if(n===0)return i.One;if(n===1)return je(e);if(e.operator==="Negate"&&Number.isInteger(n)){let s=n%2===0?1:-1,a=Fo(e.op1,n);return a===null?null:s>0?a:a.neg()}if(e.operator,e.operator!=="Add")return null;let t=e.ops,r=su(t.length,n),o=[];for(let s of r){let a=[i.number(bd(s))];for(let u=0;u<s.length;u+=1)s[u]!==0&&(s[u]===1?a.push(t[u]):a.push(t[u].pow(s[u])));o.push(ae(...a))}return Z(...o)}function au(e,n,i){let t=null;if(n==="Divide"){let r=je(i[0]);return r===null?null:r.operator==="Add"?Z(...r.ops.map(o=>o.div(i[1]))):e._fn("Divide",[r,i[1]])}if(n==="Multiply")return Tt(e,i);if(n==="Negate")return je(i[0])?.neg()??null;if(n==="Add")return Z(...i.map(r=>je(r)??r));if(n==="Power"){let r=$(i[1]);t=r!==null?Fo(i[0],r):null}return t}function je(e){return e=e?.canonical,!e||typeof e.operator!="string"?null:Be(e.operator)?e.engine._fn(e.operator,e.ops.map(n=>je(n)??n)):au(e.engine,e.operator,e.ops??[])}function uu(e){if(!e.operator||!e.ops)return null;let n=e.engine,i=e.ops.map(r=>r.ops?au(n,r.operator,r.ops)??r:r),t=e.engine.function(e.operator,i);return je(t)??t}function oi(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"?Z(...e.ops.map(t=>oi(t))):e.operator==="Multiply"?Vo(i,e.ops):e.operator==="Divide"?oi(e.op1).div(e.op2):i._fn("Negate",[e])}function Vo(e,n){if(n.length===0)return e.NegativeOne;if(n.length===1)return oi(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(ue));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(ue)):e._fn("Negate",[e._fn("Multiply",[...n].sort(ue))])}function se(e,n){let i=1,t=[];for(let o of n){let[s,a]=Ed(o);i*=a,t.push(s)}t=t.filter(o=>!o.is(1));let r=[];for(let o=0;o<t.length;o++){let s=t[o];if(o+1>=t.length){r.push(s);continue}let a=t[o+1];if(s.isNumberLiteral){if(a.operator==="Sqrt"&&a.op1.isNumberLiteral&&g(a.op1.type,"finite_integer")){let u=a.op1.numericValue;if(typeof u!="number"&&(u=u.re),u>=G)continue;if(g(s.type,"finite_rational")){let l=s.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}))),o++;continue}}else if(a.isNumberLiteral&&a.numericValue instanceof q){let u=a.numericValue;if(u instanceof j&&_e(u.rational)&&u.radical!==1){let l=Ge(s);if(l){r.push(e.number(e._numericValue({rational:l,radical:u.radical}))),o++;continue}}else if(u.im===1){let l=s.numericValue;if(typeof l=="number"){r.push(e.number(e.complex(0,l))),o++;continue}else if(l.im===0){if(Number.isInteger(l.re)){r.push(e.number(e.complex(0,l.re))),o++;continue}else if(!l.isExact){r.push(e.number(e.complex(0,l.re))),o++;continue}}}}}r.push(s)}return i<0?r.length===0?e.number(-1):r.length===1?r[0].neg():Vo(e,r):r.length===0?e.number(1):r.length===1?r[0]:e._fn("Multiply",[...r].sort(ue))}function Ed(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=Tt(n,e);if(i){if(i.operator!=="Multiply")return i;e=i.ops}return new Ne(n,e).asRationalExpression()}function lu(...e){e.length>0;let n=e[0].engine;e=e.map(t=>t.N());let i=Tt(n,e);if(i){if(i.operator!=="Multiply")return i;e=i.ops}return new Ne(n,e).asExpression({numericApproximation:!0})}function Ze(e,n){let i=e.engine;if(!e.isValid||!n.isValid)return i._fn("Divide",[e,n]);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 Ze(se(i,[e.op1,n.op2]),se(i,[e.op2,n.op1]));if(e.operator==="Divide")return Ze(e.op1,se(i,[e.op2,n]));if(n.operator==="Divide")return Ze(se(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=$(e.op1),c=$(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=$(e.op1),c=$(n);if(f!==null&&c!==null)return i.number(i._numericValue({radical:f,rational:[1,c]}))}else if(n.operator==="Sqrt"){let f=$(e),c=$(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"&&g(r.type,"integer")){let f=r.bignumRe;if(f!==void 0){if(f.isInteger())return i.number([X(t),X(f)])}else{let c=r.re;if(Number.isInteger(c))return i.number([t,c])}}}return i._fn("Divide",[e,n])}let[o,s]=e.toNumericValue();if(o.isZero)return i.Zero;let[a,u]=n.toNumericValue();if(a.isZero)return i.NaN;let l=o.div(a);return l.isOne?u.is(1)?s:i._fn("Divide",[s,u]):l.isNegativeOne?u.is(1)?s.neg():i._fn("Divide",[s.neg(),u]):l.isExact?s.is(1)&&u.is(1)?i.number(l):u.is(1)?se(i,[i.number(l),s]):i._fn("Divide",[se(i,[i.number(l.numerator),s]),se(i,[i.number(l.denominator),u])]):i._fn("Divide",[e,n])}function Mi(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,o=n.numericValue;if(typeof r=="number"&&typeof o=="number"&&Number.isInteger(r)&&Number.isInteger(o))return i.number(i._numericValue({rational:[r,o]}));if(typeof r=="number"&&Number.isInteger(r)&&typeof o!="number"){if(o.isExact)return i.number(i._numericValue(r).div(o.asExact))}else if(typeof o=="number"&&Number.isInteger(o)&&typeof r!="number"){if(r.isExact)return i.number(r.asExact.div(o))}else if(typeof r!="number"&&typeof o!="number"&&r.isExact&&o.isExact)return i.number(r.asExact.div(o.asExact))}}let t=new Ne(i,[e]);return t.div(typeof n=="number"?i._numericValue(n):n),t.asRationalExpression()}var Ne=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 o of n.ops)this.mul(o,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 o=n.numericValue;if(o!==null){if(n.is(1))return;if(n.is(0)){this.coefficient=this.engine._numericValue(an(i)?NaN:0);return}if(n.is(-1)){_e(i)?this.coefficient=this.coefficient.neg():this.coefficient=this.coefficient.mul(this.engine._numericValue(-1).pow(this.engine._numericValue(i)));return}if(n.isInfinity){this.coefficient=this.engine._numericValue(n.isNegative?-1/0:1/0);return}_e(i)?this.coefficient=this.coefficient.mul(o):this.coefficient=this.coefficient.mul(this.engine._numericValue(o).pow(this.engine._numericValue(i)));return}let s=Nr(n);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(i)));return}if(!n.symbol){let a;[a,n]=n.toNumericValue(),i&&!_e(i)&&(a=a.pow(this.engine._numericValue(i))),this.coefficient=this.coefficient.mul(a)}}if(n.is(1)&&(!i||_e(i))||n.is(0)===!1&&i&&an(i))return;if(n.is(0)){i&&an(i)?this.coefficient=this.engine._numericValue(NaN):this.coefficient=this.engine._numericValue(0);return}let t=i??[1,1];if(n.operator==="Power"){let o=Ge(n.op2);if(o){this.mul(n.op1,mn(t,o));return}}if(n.operator==="Sqrt"){this.mul(n.op1,mn(t,[1,2]));return}if(n.operator==="Root"){let o=Ge(n.op2);if(o){this.mul(n.op1,mn(t,Ja(o)));return}}if(n.operator==="Divide"){this.mul(n.op1,t),this.mul(n.op2,ii(t));return}let r=!1;for(let o of this.terms)if(o.term.isSame(n)){o.exponent=ni(o.exponent,t),r=!0;break}r||this.terms.push({term:n,exponent:t})}div(n){n instanceof q?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 o=this.coefficient.N();return[{exponent:[1,1],terms:[t.number(o)]}]}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 o=this.coefficient.numerator;o.isOne||r.push({exponent:[1,1],terms:[t.number(o)]});let s=this.coefficient.denominator;s.isOne||r.push({exponent:[-1,1],terms:[t.number(s)]})}else if(i==="numeric"){let o=this.coefficient.N();r.push({exponent:[1,1],terms:[t.number(o)]})}else r.push({exponent:[1,1],terms:[t.number(this.coefficient)]});for(let o of this.terms){let s=Bi(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(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 o=this.groupedByDegrees({mode:n.numericApproximation?"numeric":"expression"});if(o===null)return i.NaN;if(r){let s=Er(i,o).neg();return this.coefficient=i._numericValue(-1),s}return Er(i,o)}asNumeratorDenominator(){let n=this.engine,i=this.coefficient;if(i.isZero)return[n.Zero,n.One];if(i.isPositiveInfinity||i.isNegativeInfinity)return[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 o=r.filter(u=>u.exponent[0]>=0),s=r.filter(u=>u.exponent[0]<0).map(u=>({exponent:ii(u.exponent),terms:u.terms})),a=Er(n,o);return[t?a.neg():a,Er(n,s)]}asRationalExpression(){let[n,i]=this.asNumeratorDenominator();return Ze(n,i)}};function fu(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 o of e.terms){let s=n.terms.find(u=>o.term.isSame(u.term));if(!s)continue;let a=mr(o.exponent,s.exponent);if(_e(a))r.push(o.term);else{let[u,l]=Ya(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[t,r.length===0?i.One:ae(...r)]}function Er(e,n){let i=n.map(({terms:t,exponent:r})=>{let o=ie(t,"Multiply"),s=o.length<=1?o[0]:e._fn("Multiply",[...o].sort(ue));return _e(r)?s:s.pow(e.number(r))});return i=ie(i,"Multiply"),i.length===0?e.One:i.length===1?i[0]:e._fn("Multiply",i.sort(ue))}function _t(e){let n=e.engine,i=e.operator;if(Be(i))return n.function(i,e.ops.map(_t));if(i==="Divide")return e.ops[0].div(e.ops[1]);if(i==="Negate")return _t(e.ops[0]).neg();if(i==="Add"){let[t,r]=e.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 Z(...t).div(Z(...r))}return e}function $n(e){let n=e.operator;if(Be(n)){let i=Ne.from(e.op1),t=Ne.from(e.op2),[r,o]=fu(i,t),s=r.sgn()===-1;return r.isOne||(i.div(r),t.div(r)),o.is(1)||(o.isPositive?(i.div(o),t.div(o)):o.isNegative&&(i.div(o.neg()),t.div(o.neg()),s=!s)),s&&([i,t]=[t,i]),e.engine.function(n,[i.asExpression(),t.asExpression()])}if(n==="Negate")return $n(e.ops[0]).neg();if(n==="Add"){let i=e.engine,t,r=[];for(let s of e.ops){let[a,u]=s.toNumericValue();t=t?t.gcd(a):a,a.isZero||r.push({coeff:a,term:u})}if(!t||t.isOne)return e;let o=r.map(({coeff:s,term:a})=>ae(a,i.box(s.div(t))));return ae(i.number(t),Z(...o))}return Ne.from(_t(e)).asExpression()}function un(e){let n=e.engine;if(e.symbol==="Pi")return[n._numericValue(1),n._numericValue(0)];if(e.operator==="Negate"){let[i,t]=un(e.ops[0]);return[i.neg(),t]}if(e.operator==="Add"&&e.nops===2){let[i,t]=un(e.op1),[r,o]=un(e.op2);return[i.add(r),t.add(o)]}if(e.operator==="Multiply"&&e.nops===2){if(e.op1.isNumberLiteral){let[i,t]=un(e.op2),r=e.op1.numericValue;return[i.mul(r),t.mul(r)]}if(e.op2.isNumberLiteral){let[i,t]=un(e.op1),r=e.op2.numericValue;return[i.mul(r),t.mul(r)]}}if(e.operator==="Divide"&&e.op2.isNumberLiteral){let[i,t]=un(e.op1),r=e.op2.numericValue;return[i.div(r),t.div(r)]}if(e.operator==="Power"){let[i,t]=un(e.op1),r=e.op2.re;if(!isNaN(r))return[i.pow(r),t.pow(r)]}if(e.operator==="Sqrt"){let[i,t]=un(e.ops[0]);return[i.sqrt(),t.sqrt()]}if(e.operator==="Root"){let[i,t]=un(e.ops[0]),r=e.ops[1].re;if(!isNaN(r))return[i.root(r),t.root(r)]}return[n._numericValue(0),n._numericValue(e.numericValue??0)]}var Nd={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"]]},Gn=["Sqrt",2],Ci=["Sqrt",3],Pi=["Sqrt",5],vr=["Sqrt",6],vd=[[[0,1],{Sin:0,Cos:1,Tan:0,Cot:"ComplexInfinity",Sec:1,Csc:"ComplexInfinity"}],[[1,12],{Sin:["Divide",["Subtract",vr,Gn],4],Cos:["Divide",["Add",vr,Gn],4],Tan:["Subtract",2,Ci],Cot:["Add",2,Ci],Sec:["Subtract",vr,Gn],Csc:["Add",vr,Gn]}],[[1,10],{Sin:["Divide",["Subtract",Pi,1],4],Cos:["Divide",["Sqrt",["Add",10,["Multiply",2,Pi]]],4],Tan:["Divide",["Sqrt",["Subtract",25,["Multiply",10,Pi]]],5],Cot:["Sqrt",["Add",5,["Multiply",2,Pi]]],Sec:["Divide",["Sqrt",["Subtract",50,["Multiply",10,Pi]]],5],Csc:["Add",1,Pi]}],[[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",Gn,2],Cos:["Divide",Gn,2],Tan:1,Cot:1,Sec:Gn,Csc:Gn}],[[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",Ci,2],Cos:"Half",Tan:Ci,Cot:["Divide",Ci,3],Sec:2,Csc:["Divide",["Multiply",2,Ci],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 He(e,n,i,t){let r=Uo(e)?.N();if(r!==void 0)return J(r,n,i,t)}function Sd(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 We(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 It(e,n){if(!n)return;let i=n.engine;switch(e){case"Arccos":return We(J(n,Math.acos,t=>t.acos(),t=>t.acos()));case"Arccot":return We(J(n,t=>Math.atan2(1,t),t=>me.atan2(i._BIGNUM_ONE,t),t=>t.inverse().atan()));case"Arccsc":return We(J(n,t=>Math.asin(1/t),t=>i._BIGNUM_ONE.div(t).asin(),t=>t.inverse().asin()));case"Arcosh":return We(J(n,Math.acosh,t=>t.acosh(),t=>t.acosh()));case"Arcoth":return We(J(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"Arcsch":return We(J(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 We(J(n,t=>Math.acos(1/t),t=>i._BIGNUM_ONE.div(t).acos(),t=>t.inverse().acos()));case"Arcsin":return We(J(n,Math.asin,t=>t.asin(),t=>t.asin()));case"Arsech":return We(J(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"Arsinh":return We(J(n,Math.asinh,t=>t.asinh(),t=>t.asinh()));case"Arctan":return We(J(n,Math.atan,t=>t.atan(),t=>t.atan()));case"Artanh":return We(J(n,Math.atanh,t=>t.atanh(),t=>t.atanh()));case"Cos":return He(n,Math.cos,t=>t.toSignificantDigits(i.precision+4).cos().toSignificantDigits(i.precision),t=>t.cos());case"Cosh":return He(n,Math.cosh,t=>t.cosh(),t=>t.cosh());case"Cot":return He(n,t=>1/Math.tan(t),t=>i._BIGNUM_ONE.div(t.tan()),t=>t.tan().inverse());case"Coth":return He(n,t=>1/Math.tanh(t),t=>i._BIGNUM_ONE.div(t.tanh()),t=>t.tanh().inverse());case"Csc":return He(n,t=>1/Math.sin(t),t=>i._BIGNUM_ONE.div(t.sin()),t=>t.sin().inverse());case"Csch":return He(n,t=>1/Math.sinh(t),t=>i._BIGNUM_ONE.div(t.sinh()),t=>t.sinh().inverse());case"Sec":return He(n,t=>1/Math.cos(t),t=>i._BIGNUM_ONE.div(t.cos()),t=>t.cos().inverse());case"Sech":return He(n,t=>1/Math.cosh(t),t=>i._BIGNUM_ONE.div(t.cosh()),t=>t.cosh().inverse());case"Sin":return He(n,Math.sin,t=>t.toSignificantDigits(i.precision+4).sin().toSignificantDigits(i.precision),t=>t.sin());case"Sinh":return He(n,Math.sinh,t=>t.sinh(),t=>t.sinh());case"Tan":return He(n,Math.tan,t=>t.toSignificantDigits(i.precision+4).tan().toSignificantDigits(i.precision),t=>t.tan());case"Tanh":return He(n,Math.tanh,t=>t.tanh(),t=>t.tanh())}}function Td(e){return!!(e.startsWith("Ar")&&$o(e))}function $o(e){return{Sin:"Arcsin",Cos:"Arccos",Tan:"Arctan",Sec:"Arcsec",Csc:" Arccsc",Sinh:"Arsinh",Cosh:"Arcosh",Tanh:"Artanh",Sech:"Arcsech",Csch:"Arcsch",Arcosh:"Cosh",Arccos:"Cos",Arccsc:"Csc",Arcsch:"Csch",Arcsec:"Sec",Arcsin:"Sin",Arsinh:"Sinh",Arctan:"Tan",Artanh:"Tanh"}[e]}function Bt(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=$o(t);return r?e.symbol(r):void 0}function cu(e){return e!=="Cos"&&e!=="Sec"?-1:1}function _d(e,n,i,t){if(!i)return;let r=i.N().re;if(Number.isNaN(r))return;let o=$o(n),s=e.cache("constructible-inverse-trigonometric-values-"+n,()=>{let u=[];for(let[[l,f],c]of t){let d=c[o];if(d===void 0)continue;let m=d.N().re;Number.isNaN(m)||u.push([[d,m],[l,f]])}return u},u=>{for(let[[l,f],[c,d]]of u)l.reset();return u}),a=0;r<0&&(a=cu(o)==-1?-1:1,r=-r,i=i.neg());for(let[[u,l],[f,c]]of s)if(e.chop(r-l)===0){let d=e.Pi.mul(f).div(c);return a==-1?d=d.neg():a==1&&(d=e.Pi.sub(d)),d.evaluate()}}function Go(e,n){let[i,t]=Id(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 zo(e){return["Sin","Cos","Tan","Csc","Sec","Cot"].includes(typeof e=="string"?e:e.operator)}function kt(e,n){if(!n||!zo(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",()=>vd.map(([l,f])=>[l,Object.fromEntries(Object.entries(f).map(([c,d])=>[c,(i.parse(qn(d))??i.box(d)).simplify()]))]),l=>{for(let[f,c]of l)for(let d of Object.values(c))d.reset();return l});if(Td(e))return _d(i,e,n,r);let o=i.angularUnit;o!=="rad"&&(o==="deg"&&(t*=Math.PI/180),o==="grad"&&(t*=Math.PI/200),o==="turn"&&(t*=2*Math.PI));let s=cu(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]=Nd[e]?.[a]??[1,e];for(let[[l,f],c]of r){let d=c[e];if(d&&Math.abs(t-Math.PI*l/f)<=1e-12)return d.symbol==="ComplexInfinity"?d:s*u<0?d.neg():d}}function Id(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]}function Uo(e){if(!e)return e;let n=Sd(e);if(!n)return;if(n.N().im!==0)return n;let i=n.engine,[t,r]=un(n);if(t.isZero)return i.number(r);let o=i._numericValue(t.bignumRe?t.bignumRe.mod(2):t.re%2);return i.number(r.add(i.Pi.mul(o).N().numericValue))}function du(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 Nr(e){if(du(e))return Ge(e.op1)??null;if(e.operator==="Divide"&&e.op1.is(1)&&du(e.op2)){let n=e.op2.re;return Number.isInteger(n)?[1,n]:null}return null}function Oi(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 si(e,2);let t=Ge(n);return t!==void 0&&t[0]===1?si(e,i.number(t[1])):i._fn("Power",[e,n])}function si(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&&g(e.type,"rational")){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 de(e,n,{numericApproximation:i}){if(!e.isCanonical)return e.canonical.pow(n);if(i&&e.isNumberLiteral){if(typeof n=="number")return J(e,o=>Math.pow(o,n),o=>o.pow(n),o=>o.pow(n))??de(e,n,{numericApproximation:!1});if(n.isNumberLiteral)return gn(e,n,(o,s)=>Math.pow(o,s),(o,s)=>o.pow(s),(o,s)=>o.pow(s))??de(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==="imaginary")return t.NaN;if(n.type==="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 de(e,n.op1,{numericApproximation:i}).inv();if(e.symbol==="ComplexInfinity")return t.NaN;if(e.symbol==="ExponentialE"){let o=Ti(n);if(o!==void 0){if(o=Uo(o),o!==void 0)return t.function("Cos",[o]).add(t.function("Sin",[o]).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[o,s]=e.ops;return de(o,s.mul(n),{numericApproximation:i})}if(e.operator==="Divide"){let[o,s]=e.ops;return de(o,n,{numericApproximation:i}).div(de(s,n,{numericApproximation:i}))}if(e.operator==="Negate"&&r!==void 0)return r%2===0?de(e.op1,n,{numericApproximation:i}):de(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):de(e.op1,n,{numericApproximation:i}).sqrt();if(e.operator==="Exp")return de(t.E,e.op1.mul(n),{numericApproximation:i});if(e.operator==="Multiply"){let o=e.ops.map(s=>de(s,n,{numericApproximation:i}));return t._fn("Multiply",o)}if(typeof n!="number"&&n.isNumberLiteral){let o=Ge(n);if(o!==void 0&&o[0]===1)return pu(e,t.number(o[1]),{numericApproximation:i})}if(e.operator==="Root"){let[o,s]=e.ops;return de(o,t.box(n).div(s),{numericApproximation:i})}if(e.isNumberLiteral&&Number.isInteger(r)){let o=e.numericValue;if(typeof o=="number"){if(Number.isInteger(o))return J(e,s=>Math.pow(s,r),s=>s.pow(r),s=>s.pow(r))??t._fn("Power",[e,t.box(n)])}else if(o.isExact){let s=o.asExact.pow(r);if(s.isExact)return t.number(s)}}return t._fn("Power",[e,t.box(n)])}function pu(e,n,{numericApproximation:i}){if(i&&e.isNumberLiteral&&n.isNumberLiteral)return gn(e,n,(t,r)=>Math.pow(t,1/r),(t,r)=>t.pow(r.pow(-1)),(t,r)=>t.pow(typeof r=="number"?1/r:r.inverse()))??pu(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 zn=1e5,Bd={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,Arsinh:!0,Arcosh:!0,Artanh:!0,Arcoth:!0,Arcsch:!0,Arsech:!0,Arcsech:!0};function kd(e){return!e||typeof e!="string"?!1:e in Bd}function vt(e,n){let i=ke(e),t=ke(n);if(i!==t)return t-i;let r=ze(e),o=ze(n);if(r!==o)return o-r;let s=Po(e),a=Po(n);if(s||a){if(!s)return 1;if(!a||s<a)return-1;if(s>a)return 1}return ue(e,n)}function Sr(e,n){let i=o=>o.symbol!==null?1:o.isNumberLiteral?3:2,t=i(e),r=i(n);if(t<r)return-1;if(r<t)return 1;if(t===1)return e.symbol===n.symbol?0:e.symbol>n.symbol?1:-1;if(t===3){let o=e.numericValue,s=n.numericValue,a=typeof o=="number"?o:o.re,u=typeof s=="number"?s:s.re;return a-u}return ue(e,n)}var mu=["integer","rational","radical","real","complex","constant","symbol","multiply","divide","add","trig","fn","power","string","other"];function gu(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_imaginary"||n==="finite_number"?"complex":n==="non_finite_number"?"constant":n==="number"?"real":"other"}return e.symbol==="ImaginaryUnit"?"complex":Nr(e)?"radical":e.symbol&&e.isConstant?"constant":e.symbol?"symbol":kd(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 ue(e,n){if(e===n)return 0;let i=gu(e),t=gu(n);if(i!==t)return mu.indexOf(i)-mu.indexOf(t);if(i==="complex"){let[r,o]=hu(e),[s,a]=hu(n);return o!==a?o-a:r-s}if(i==="integer"||i==="rational"||i==="real"){let r=e.numericValue,o=n.numericValue;r===null&&e.operator==="Rational"&&(r=e.op1.re/e.op2.re),o===null&&n.operator==="Rational"&&(o=n.op1.re/n.op2.re);let s=typeof r=="number"?r:r.re,a=typeof o=="number"?o:o.re;return s-a}if(i==="radical")return ue(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,o=n.ops;if(r.length!==o.length)return o.length-r.length;for(let s=0;s<r.length;s++){let a=ue(r[s],o[s]);if(a!==0)return a}return 0}if(i==="power"){let r=ke(e),o=ke(n);if(r!==o)return o-r;let s=ze(e),a=ze(n);return s!==a?s-a:ue(e.op1,n.op1)}if(i==="multiply"){let r=ke(e),o=ke(n);if(r!==o)return o-r;let s=ze(e),a=ze(n);if(s!==a)return s-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=ue(u[f],l[f]);if(c!==0)return c}return 0}if(i==="divide"){let r=ke(e.op1),o=ke(n.op1);if(r!==o)return o-r;let s=ze(e.op1),a=ze(n.op1);if(s!==a)return s-a;let u=ue(e.op1,n.op1);return u!==0?u:ue(e.op2,n.op2)}if(i==="fn"||i==="trig"){if(e.operator==n.operator&&e.nops===1&&n.nops===1)return ue(e.op1,n.op1);let r=e.functionDefinition?.complexity??zn,o=n.functionDefinition?.complexity??zn;return r===o?e.operator===n.operator?jo(e)-jo(n):e.operator<n.operator?1:-1:r-o}return i==="string"?e.string===n.string?0:n.string<e.string?-1:1:(e.complexity??zn)-(n.complexity??zn)}function Zo(e,{recursive:n=!1}){if(e.isCanonical||!e.ops)return e;let i=e.ops;return n&&(i=i.map(t=>Zo(t,{recursive:n}))),i=wt(e.operator,i),e.engine._fn(e.operator,i,{canonical:!1})}function wt(e,n){if(n.length===0)return n;let i=n[0].engine;if(e==="Add")return[...n].sort(vt);if(e==="Multiply")return[...n].sort(ue);let t=i.lookupFunction(e);return!t||!t.commutative?n:t.commutativeOrder?[...n].sort(t.commutativeOrder):[...n].sort(ue)}function jo(e){return e.ops?1+[...e.ops].reduce((n,i)=>n+jo(i),0):1}function hu(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]}var Tr=7,xu=[.9999999999998099,676.5203681218851,-1259.1392167224028,771.3234287776531,-176.6150291621406,12.507343278686905,-.13857109526572012,9984369578019572e-21,15056327351493116e-23];function Dt(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 Li(e){if(e<.5)return Math.PI/(Math.sin(Math.PI*e)*Li(1-e));if(e>100)return Math.exp(Dt(e));e-=1;let n=xu[0];for(let t=1;t<Tr+2;t++)n+=xu[t]/(e+t);let i=e+Tr+.5;return Math.sqrt(2*Math.PI)*Math.pow(i,e+.5)*Math.exp(-i)*n}function yu(e){let n=Math.PI,i=n*n,t=i*n,r=e*e,o=e*r,s=o*r,a=s*r;return Math.sqrt(n)/2*(e+n/12*o+7*i/480*s+127*t/40320*a+4369*i*i/5806080*a*r+34807*t*i/182476800*a*r*r)}function Ho(e){let n=.254829592,i=-.284496736,t=1.421413741,r=-1.453152027,o=1.061405429,s=.3275911,a=e<0?-1:1;e=Math.abs(e);let u=1/(1+s*e),l=((((o*u+r)*u+t)*u+i)*u+n)*u;return a*(1-l*Math.exp(-e*e))}function Wo(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(s=>e.bignum(s))),t=i[0];for(let s=i.length-1;s>0;--s)t=t.add(i[s].div(n.add(s)));let r=e.cache("gamma-g-ln",()=>e.bignum(607).div(128)),o=n.add(r).add(e._BIGNUM_HALF);return e._BIGNUM_NEGATIVE_ONE.acos().mul(e._BIGNUM_TWO).log().mul(e._BIGNUM_HALF).add(o.log().mul(n.add(e._BIGNUM_HALF)).minus(o).add(t.log()).minus(n.log()))}function Jo(e,n){if(n.lessThan(e._BIGNUM_HALF)){let o=e._BIGNUM_NEGATIVE_ONE.acos();return o.div(o.mul(n).sin().mul(Jo(e,e._BIGNUM_ONE.sub(n))))}if(n.greaterThan(100))return Wo(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(o=>e.bignum(o))),t=i[0];for(let o=1;o<Tr+2;o++)t=t.add(i[o].div(n.add(o)));let r=n.add(Tr).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))))}function Rt(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)=>Rt(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 bu(e,n){if(e=e.N(),typeof n!="number"&&(n=n.N()),typeof n!="number"&&typeof n.numericValue=="number"&&(n=n.numericValue),typeof n=="number"){if(e.string||e.tensor||!e.isValid)return!1;if(!e.isNumberLiteral)return;let t=e.numericValue;return typeof t=="number"?t===n:t.eq(n)}if(e.ops||n.ops){let t=e.functionDefinition?.eq?.(e,n);if(t!==void 0)return t;let r=e.sub(n).N();if(!r.isNumberLiteral)return!1;if(typeof r.numericValue=="number")return r.numericValue===0;let o=e.engine.tolerance;return r.numericValue.isZeroWithTolerance(o)}if(e.symbol){let t=e.symbolDefinition?.eq?.(n);return t!==void 0?t:e.symbol===n.symbol}let i=e.engine;return i.ask(i.box(["Equal",e,n])).length>0?!0:i.ask(i.box(["NotEqual",e,n])).length>0?!1:Rt(e,n)}function Fi(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"?r===n?"=":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 _r(e,n=[]){let i=n.map((s,a)=>!s.symbol||s.symbol==="Nothing"?`_${a+1}`:s.symbol),t=e.unknowns;t.includes("_")&&(e=e.subs({_:"_1"}),t=e.unknowns);let r=i.length;for(let s of t)if(s.startsWith("_")){let a=Number(s.slice(1));a<=i.length&&(e=e.subs({[s]:i[a-1]})),a>r&&(r=a)}for(let s=i.length;s<r;s++)i.push(`_${s+1}`);let o=r;for(;o>0&&i[o-1]===`_${o}`;){t.includes(`_${o}`)||i.pop();o--}return[e,...i]}function Yo(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:void 0});let o=t.canonical;o.bind(),n.popScope();let s=o.scope;return s?r.length===0?()=>{let a=n.swapScope(s);n.resetContext();let u=o.N()??o.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,b)=>n.symbol(`_${b+1}`)),d=qi(n.function("Function",[t,...r]),[...a,...c]).evaluate();return n.function("Function",[d])}a=a.map(c=>c.evaluate());let u=n.swapScope(s);n.resetContext();let l=0;for(let c of r)n.assign(c,a[l++]);let f=o.N()??o.evaluate();if(n.swapScope(u),!!f.isValid)return f}:()=>o.N()??o.evaluate()}function qi(e,n){let i=Yo(e)?.(n);return i||e.engine.function("Apply",[e,...n])}function qe(e){return Yo(e)??(n=>e.engine.function("Apply",[e.N(),...n]).N())}function Qo(e){let n=e.engine,i=Yo(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 Vi(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 o=n.N(),s=i.N();return!o.isNumberLiteral||!s.isNumberLiteral?void 0:{start:o.re,openStart:t,end:s.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 At=50,_u={List:{complexity:8200,signature:"(...any) -> list",type:e=>k(`list<${Ce(...e.map(n=>n.type))}>`),canonical:wd,eq:Tu,collection:Ko()},Set:{complexity:8200,signature:"(...any) -> set",type:e=>k(`set<${Ce(...e.map(n=>n.type))}>`),canonical:Dd,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:{...Ko(),at:(e,n)=>{},indexOf:(e,n)=>{}}},Dictionary:{complexity:8200,signature:"(...any) -> map",type:e=>k(`tuple<${Object.entries(Ir(e)).map(([n,i])=>n?`${n}: ${i.type.toString()}`:i.type.toString()).join(", ")}>`),canonical:(e,{engine:n})=>{let i=Ir(e);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=Ir(e.ops),t=Ir(n.ops);return Object.entries(i).every(([r,o])=>{let s=t[r];return s&&o.isSame(s)})},collection:{...Ko(),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),[o,s,a]=Je(n);return i===o&&t===s&&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!=="integer")return!1;let i=n.re,[t,r,o]=Je(e);return o===0?!1:o>0?i>=t&&i<=r:i<=t&&i>=r},iterator:(e,n,i)=>{let[t,r,o]=Je(e),s=n??1,a=o===0?0:Math.floor((r-t)/o)+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+o*(s++-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,o,s]=Je(e),[a,u,l]=Je(n);return r>=a&&o<=u&&s%l===0}if(!dr(n))return!1;let i=n.baseDefinition;if(!i?.collection?.iterator||!i?.collection?.at)return!1;let t=1;for(let r of F(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,hold:!0,signature:"(expression, expression) -> set<real>",eq:(e,n)=>{let i=Vi(e),t=Vi(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=Vi(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=Vi(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=Vi(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=At),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=At),!(!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,o;isFinite(r)?o=Math.max(0,isFinite(e.op3.re)?e.op3.re:At):(r=t,t=1,o=At);let s=n??1;return i=Math.min(i??o,o),i<=0?{next:()=>({value:void 0,done:!0})}:{next:()=>i>0?(i--,{value:e.engine.number(t+(r-t)*(s++-1)/o),done:!1}):{value:void 0,done:!0}}},contains:(e,n)=>{if(!g(n.type,"finite_real"))return!1;let i=n.re,t=e.op1.re,r=e.op2.re;if(i<t||i>r)return!1;let o=e.op3.re;if(isFinite(o)||(o=At),o===0)return!1;let s=(r-t)/o;return(i-t)%s===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:Tu,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, any>",type:([e,n])=>k(`tuple<string, ${n.type}>`),canonical:(e,{engine:n})=>{let[i,t]=pr(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(...Oe(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(...Oe(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(...Oe(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(Gi(e)),sgn:([e])=>Gi(e)===0?"zero":"positive"},IsEmpty:{complexity:8200,signature:"any -> boolean",evaluate:([e],{engine:n})=>Gi(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) -> any",evaluate:(e,{engine:n})=>{let i=e[0],t=1;for(;e[t];){let o=i.baseDefinition?.collection?.at;if(!o)return;let s=e[t].string;if(s!==null)i=o(i,s)??n.Nothing;else{let a=e[t].re;if(!Number.isInteger(a))return;i=o(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==="string"?"string":k(`list<${Jn(e[0].type)}>`),evaluate:(e,{engine:n})=>{if(e.length<2)return;let i=e[0].string;if(i!==null){let r=e.slice(1).map(o=>$i(o,i.length));return n.string(Eu(i,r))}let t=Gi(e[0]);return Mt(e[0],e.slice(1).map(r=>$i(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=Nu(e.slice(1).map(l=>$i(l,i.length)));return n.string(i.split("").filter((l,f)=>!u.includes(f+1)).join(""))}let t=e[0].baseDefinition,r=Gi(e[0]);if(r===0)return n.Nothing;let o=t?.collection?.at;if(!o)return;let s=Nu(e.slice(1).map(u=>$i(u,r))),a=[];for(let u=1;u<=r;u++)if(!s.includes(u)){let l=o(e[0],u);l&&a.push(l)}return n.function("List",a)}},First:{complexity:8200,signature:"(value: collection|string) -> any",evaluate:([e],{engine:n})=>es(e,1)??n.Nothing},Second:{complexity:8200,signature:"(value: collection|string) -> any",evaluate:([e],{engine:n})=>es(e,2)??n.Nothing},Last:{complexity:8200,signature:"(value: collection|string) -> any",evaluate:([e],{engine:n})=>es(e,-1)??n.Nothing},Rest:{complexity:8200,signature:"(value: collection|string) -> list",evaluate:e=>Mt(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==="string"?"string":k(`list<${Jn(e[0].type)}>`),evaluate:(e,{engine:n})=>{if(e.length<3)return;let i=e[0].string;if(i!==null){let[s,a]=e.slice(1).map(u=>$i(u,i.length));return n.string(Eu(i,[s,a]))}let t=Gi(e[0]),[r,o]=e.slice(1).map(s=>$i(s,t));return Mt(e[0],[r,o])}},Most:{complexity:8200,signature:"(value: collection|string) -> list",evaluate:e=>Mt(e[0],[[1,-2,1]])},Reverse:{complexity:8200,signature:"(value: collection|string) -> collection",type:e=>e[0].type,evaluate:([e])=>Mt(e,[[-1,2,1]])},Ordering:{complexity:8200,hold:!0,signature:"(value: collection, f: function?) -> list<integer>",evaluate:e=>{}},Sort:{complexity:8200,hold:!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,hold:!0,signature:"(collection, function) -> collection",evaluate:(e,{engine:n})=>{let[i,t]=Rd(e);if(!t)return;let r=[];for(let a of i)r.push(t([a])??n.Nothing);let o=e[0].operator,s={List:"List",Set:"Set",Range:"List",Linspace:"List",Single:"List",Pair:"List",Triple:"List",Tuple:"List",String:"String"}[o]??"List";return n.function(s,r)}},Filter:{complexity:8200,hold:!0,signature:"(collection, function) -> collection",type:e=>e[0].type,evaluate:(e,{engine:n})=>{let i=qe(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(!K(e[0])||!e[1])return;let r=[];for(let a of F(t))i([a])?.symbol==="True"&&r.push(a);let o=t.operator,s={List:"List",Set:"Set",Range:"List",Linspace:"List",Single:"List",Pair:"List",Triple:"List",Tuple:"List"}[o]??"List";return n.function(s,r)}},Reduce:{complexity:8200,hold:!0,signature:"(collection, function, initial:value) -> collection",evaluate:e=>{}},Tabulate:{complexity:8200,hold:!0,signature:"(function, integer, integer?) -> collection",evaluate:(e,{engine:n})=>{let i=qe(e[0]);if(!i)return;if(e.length===1)return n.function("List",[]);let t=e.slice(1).map(o=>$(o));if(t.some(o=>o===null||o<=0))return;if(t.length===1)return n.function("List",Array.from({length:t[0]??0},(o,s)=>i([n.number(s+1)])??n.Nothing));let r=(o,s,a=0)=>{if(a===o.length){let l=s.map(f=>n.number(f));return i(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 n.box(r(t,Array(t.length).fill(0)))}},Tally:{complexity:8200,signature:"(collection) -> tuple<list, list<integer>>",type:e=>k(`tuple<list<${Jn(e[0].type)}>, list<integer>>`),evaluate:(e,{engine:n})=>{if(!dr(e[0]))return;let[i,t]=vu(e[0]);return n.tuple(n.function("List",i),n.function("List",t))}},Unique:{complexity:8200,signature:"(collection) -> list",type:e=>k(`list<${Jn(e[0].type)}>`),evaluate:(e,{engine:n})=>{if(!dr(e[0]))return;let[i,t]=vu(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:Su,evaluate:(e,{engine:n})=>{let i=Su(e);if(g(i,"map")){let t={};for(let r of e)if(t=ku(t,r),!t)return;return n.function("Dictionary",Object.entries(t).map(([r,o])=>n.function("KeyValuePair",[n.string(r),o])))}if(g(i,"set")){let t=[];for(let r of e)if(t=wu(t,r),!t)return;return n.function("Set",t)}if(g(i,"list")){let t=[];for(let r of e)if(t=Du(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 Iu(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 $i(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,o,s]=Je(e);return(r<0||o<0)&&n===void 0?[0,0,0]:(r<0&&(r=n+r+1),o<0&&(o=n+o+1),s=Math.abs(Math.round(s)),s===0?[0,0,0]:(r>o&&(s=-s),[r,o,s]))}function Mt(e,n){let i=e.engine,r=e.baseDefinition?.collection?.at;if(!r)return i.Nothing;let o=[];for(let s of n){let[a,u,l]=s;if(l!==0)if(l<0)for(let f=a;f>=u;f+=l){let c=r(e,f);c&&o.push(c)}else for(let f=a;f<=u;f+=l){let c=r(e,f);c&&o.push(c)}}return i.function("List",o)}function Eu(e,n){let i="";for(let t of n){let[r,o,s]=t;if(s===1)i+=e.slice(r-1,o);else if(s<0)for(let a=r;a>=o;a+=s)i+=e[a-1];else for(let a=r;a<=o;a+=s)i+=e[a-1]}return i}function Nu(e){let n=[];for(let i of e){let[t,r,o]=i;if(o!==0)if(o<0)for(let s=t;s>=r;s+=o)n.push(s);else for(let s=t;s<=r;s+=o)n.push(s)}return n}function wd(e,{engine:n}){let i=e[0];if(e.length===1&&i.operator==="Matrix"){let[t,r,o]=i.ops;if(!r||r.string==="..")return o?n._fn("Matrix",[t,n.string("[]"),o]):n._fn("Matrix",[t,r])}return e=e.map(t=>t.operator==="Delimiter"?t.op1.operator==="Sequence"?n._fn("List",Pe(n,t.op1.ops)):n._fn("List",[t.op1?.canonical??n.Nothing]):t.canonical),n._fn("List",e)}function Dd(e,{engine:n}){let i=[],t=r=>i.some(o=>o.isSame(r));for(let r of e)t(r)||i.push(r);return n._fn("Set",i)}function Rd(e){if(e.length!==2)return[[],void 0];let n=qe(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(o=>n([r.string(o)])?.string??"").join(""))}]:!K(e[0])||!e[1]?[[],void 0]:[F(e[0]),n]:[[],void 0]}function vu(e){let n=[],i=[],t=r=>{for(let o=0;o<n.length;o++)if(n[o].isSame(r))return o;return-1};for(let r of F(e)){let o=t(r);o>=0?i[o]++:(n.push(r),i.push(1))}return[n,i]}function Bu(e,n,i){let t=i;for(let r of F(e)){let o=n(t,r);if(o===null)return;t=o}return t}function Su(e){return e.some(n=>n.type==="map")?"map":e.some(n=>n.type==="set")?"set":"list"}function ku(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=ku(e,i);if(!t)return;e=t}return e}}function wu(e,n){if(n.operator==="Set"||n.operator==="List"){for(let t of n.ops)if(e=wu(e,t),!e)return}return(t=>e.some(r=>r.isSame(t)))(n)||e.push(n),e}function Du(e,n){if(n.operator==="List"||n.operator==="Set"){for(let i of n.ops)if(e=Du(e,i),!e)return}return e.push(n),e}function Ad(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 F(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 Ko(){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:Ad,eltsgn:e=>{},elttype:e=>e.nops===0?"unknown":e.nops===1?e.ops[0].type:Ce(...e.ops.map(n=>n.type))}}function Ir(e){let n={},i=1;for(let t of e){if(t.operator==="KeyValuePair"||t.operator==="Tuple"||t.operator==="Pair"){let[r,o]=t.ops;if(r.symbol==="Nothing")continue;n[r?.string??r?.toString()??i.toString()]=o??t.engine.Nothing}else n[i.toString()]=t;i+=1}return n}function Gi(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 es(e,n){let i=e.baseDefinition;if(i?.collection?.at)return i.collection.at(e,n)}function Tu(e,n){return e.operator!==n.operator||e.nops!==n.nops?!1:e.ops.every((i,t)=>i.isSame(n.ops[t]))}function ns(e,n){return Array.from({length:n-e+1},(i,t)=>e+t)}function zi(e){e?.operator;let n=1,i=n+lt,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+lt),{index:t,lower:n,upper:i,isFinite:r}}function Md(e){return e.map(n=>zi(n))}function Cd(e){e.length>0;let{index:n,lower:i,upper:t,isFinite:r}=e[0];r||(t=i+lt);let o=ns(i,t).map(s=>[s]);if(e.length===1)return o;for(let s=1;s<e.length;s++){let{index:a,lower:u,upper:l,isFinite:f}=e[s];f||(l=u+lt),o=Pd(o.map(c=>c[0]),ns(u,l))}return o}function Pd(e,n){return e.flatMap(i=>n.map(t=>[i,t]))}function Od(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 is(e,n,i){let t=n.engine;t.pushScope(),n??(n=t.error("missing"));let r=i.map(s=>Od(s)).filter(s=>s!==void 0),o=t._fn(e,[n.canonical,...r]);return t.popScope(),o}function Ui(e,n,i,t){if(e.isCollection)return Bu(e,i,t);if(n.length===0)return i(t,e)??void 0;let r=e.engine,o=r.swapScope(e.scope),s=Md(n),a=Cd(s),u=t;for(let l of a)if(s.forEach((f,c)=>r.assign(f.index,l[c])),u=i(u,e)??void 0,u===void 0)break;for(let l of s)r.assign(l.index,void 0);return r.swapScope(o),u??void 0}function ts(e){if(e!==void 0)return isNaN(e)?"unsigned":e>0?"positive":e<0?"negative":"zero"}function Br(e){return e==="positive"?"negative":e==="non-negative"?"non-positive":e==="negative"?"positive":e==="non-positive"?"non-negative":e}function ji(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 Au=[{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])=>Ld(e)},Add:{wikidata:"Q32043",associative:!0,commutative:!0,commutativeOrder:vt,threadable:!0,idempotent:!0,complexity:1300,hold:!0,signature:"(number, ...number) -> number",type:ru,sgn:e=>{if(e.some(n=>n.isReal===!1||n.isNaN))return"unsigned";if(e.every(n=>n.is(0)))return"zero";if(e.every(n=>n.isNonNegative))return e.every(n=>n.isPositive)?"positive":"non-negative";if(e.every(n=>n.isNonPositive))return e.every(n=>n.isNegative)?"negative":"non-positive";if(e.every(n=>n.isReal))return"real"},evaluate:(e,{numericApproximation:n})=>n?ou(...e):Z(...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.isNegative&&e.isGreater(-1)||e.is(0))return"zero";if(e.isNonPositive)return"non-positive";if(e.isReal==!1&&e.isNumberLiteral)return e.im>0||e.im<=-1?"unsigned":ts(e.re)},evaluate:([e])=>J(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 J(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.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 Br(n.sgn);if(n.is(0)&&i.isFinite)return"zero";if(!n.is(0)&&!i.is(0))return"real-not-zero"},canonical:(e,{engine:n})=>{let i=n;e=Le(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 o of r)t=Ze(t,o);return t},evaluate:([e,n])=>e.div(n)},Exp:{wikidata:"Q168698",threadable:!0,complexity:3500,signature:"number -> number",canonical:(e,{engine:n})=>(e=Le(n,e,1),n.function("Power",[n.E,...e]))},Factorial:{description:"Factorial Function",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.numericValue!==null&&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.im,e.re).add(1));let i=e.re;if(!isNaN(i))return i<0||!Number.isInteger(i)?n.number(Li(1+i)):sn(n)?n.number(Lo(n,n.bignum(i))):n.number(ur(i))}},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=$(n);if(i===null)return;let t=n.engine;return sn(t)?t.number(iu(t,t.bignum(i))):t.number(Va(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.isPositive&&e.isLess(1)||e.is(0))return"zero";if(e.isNonNegative)return"non-negative";if(e.isReal==!1&&e.isNumberLiteral)return e.im<0||e.im>=1?"unsigned":ts(e.re)},evaluate:([e])=>J(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?J(e,t=>Li(t),t=>Jo(i,t),t=>t):void 0},GammaLn:{complexity:8e3,threadable:!0,signature:"number -> number",evaluate:(e,{numericApproximation:n,engine:i})=>n?J(e[0],t=>Dt(t),t=>Wo(i,t),t=>t):void 0},Ln:{description:"Natural Logarithm",wikidata:"Q204037",complexity:4e3,threadable:!0,signature:"(number, base: number?) -> number",sgn:([e])=>ji(e),evaluate:([e],{numericApproximation:n,engine:i})=>n?J(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 ji(e);if(n.is(1)||n.isReal==!1)return"unsigned";if(n.isGreater(1))return ji(e);if(n.isLess(1))return Br(ji(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?J(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):Q.log10(r),r=>r.isZero()?NaN:r.log().div(Math.LN10)):gn(e[0],e[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,threadable:!0,signature:"(number, base: number?) -> number",sgn:([e])=>ji(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])=>ji(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,hold:!0,signature:"(number, ...number) -> number",type:e=>e.length===0?"finite_integer":e.length===1?e[0].type: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)&&n.isReal))return"real-not-zero";if(e.every(n=>!n.is(0)))return"not-zero";if(e.every(n=>n.isReal))return"real"}}},evaluate:(e,{numericApproximation:n})=>n?lu(...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])=>Br(e.sgn),canonical:(e,{engine:n})=>(e=Le(n,e),e.length===0?n.error("missing"):e[0].neg()),evaluate:([e])=>e.neg()},PlusMinus:{description:"Plus or Minus",wikidata:"Q120812",complexity:1200,involution:!0,signature:"value -> tuple",type:([e])=>k(`tuple(${e.type.toString()}, ${e.type.toString()})`),evaluate:([e],{engine:n})=>n.tuple(e.abs(),e.abs().neg())},Power:{wikidata:"Q33456",threadable:!0,complexity:3500,signature:"(number, number) -> number",type:([e,n])=>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=Le(n,e,2),e.length!==2)return n._fn("Power",e);let[i,t]=e;return Oi(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==="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})=>de(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=ie(e),e.length===0?i._fn("Rational",[i.error("missing")]):e.length===1?i._fn("Rational",[_n(i,e[0],"real")]):(e=pr(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 s=e[0].N();return s.numericValue===null||s.im!==0?void 0:t.number(Qa(s.re))}if(n)return gn(e[0],e[1],(s,a)=>s/a,(s,a)=>s.div(a),(s,a)=>s.div(a));let[r,o]=[$(e[0]),$(e[1])];if(r!==null&&o!==null)return t.number([r,o])}},Root:{complexity:3200,threadable:!0,signature:"(number, number) -> number",type:([e,n])=>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=Le(n,e,2);let[i,t]=e;return si(i,t)},evaluate:([e,n],{numericApproximation:i})=>e.root(n)},Round:{complexity:1250,threadable:!0,signature:"number -> integer",type:([e])=>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":ts(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])=>J(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.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==="imaginary"||e.type==="complex")return"negative";if(e.isReal==!1||e.isNaN)return"unsigned"},canonical:(e,{engine:n})=>{let i=n;return e=ie(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=Le(n,e),e.length===0)return n.error("missing");let i=e[0],t=e.slice(1);return Fe(n,[i,...t.map(r=>r.neg())])}}},{ImaginaryUnit:{type:"finite_imaginary",constant:!0,holdUntil:"never",wikidata:"Q193796",value:e=>e.I},i:{type:"finite_imaginary",constant:!0,holdUntil:"never",value:e=>e.I},ExponentialE:{type:"finite_real",wikidata:"Q82435",constant:!0,holdUntil:"N",value:e=>e.number(sn(e)?e._BIGNUM_ONE.exp():Math.exp(1))},e:{type:"finite_real",constant:!0,holdUntil:"never",value:"ExponentialE"},ComplexInfinity:{type:"non_finite_number",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:"non_finite_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
|
|
11
|
+
`)}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:ye({kind:"value",value:n})}parseTypeReference(){this.skipWhitespace();let n=this._typeParser(this);return n===null?null:ye({kind:"reference",ref:n})}parsePrimitiveType(){this.skipWhitespace(),this.isEOF()&&this.error("Unexpected end of input");for(let n of Ln)if(this.match(n))return n;return null}parseArguments(){let n=[],i=[];for(;;){let s=this.parseNamedElement();if(s===null||(this.match("?")?i.push(s):(i.length>0&&this.error("Optional arguments must come after required arguments"),n.push(s)),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 o=Sa([...n,...i,...r?[r]:[]]);return o&&this.error(`Duplicate argument name "${o}"`),[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.parsePrimaryGroup();if(!t&&!i&&(this.pos=n,this.match("...")&&this.parseName())){let r=this.parsePrimitiveType()??this.parsePrimaryGroup();this.pos=n,this.error("The rest argument indicator is placed before the type, not the name",`Use "${i}: ...${r?Ie(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 o=this.parseType();return o===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),ye({kind:"signature",args:n,optArgs:i,restArg:t,result:o})}parseIntegerLiteral(){let n=0;for(this.skipWhitespace();/[1-9]/.test(this.peek());)n=n*10+parseInt(this.consume());return n===0?null:n}parseOptionalDimension(){let n=this.parseIntegerLiteral();return n===null&&this.match("?")&&(n=-1),n}parseDimensions(){let n=this.match("("),i=[],t=this.parseOptionalDimension();t===null&&this.error("Expected a positive integer literal.","For example : `vector<3>]`");do{if(i.push(t),this.skipWhitespace(),!this.match("x"))break;this.skipWhitespace(),t=this.parseOptionalDimension(),t===null&&this.error("Expected a positive integer literal or `?`.","For example : `matrix<integer^2x3>` or `matrix<integer^?x?>`")}while(!0);return this.skipWhitespace(),n&&!this.match(")")&&this.error('Expected ")".',"For example `matrix<integer^(2x3)>`"),i}parseList(){if(this.skipWhitespace(),this.match("list<")){let t=this.parseType(),r;return t&&this.match("^")?(r=this.parseDimensions(),r===void 0&&this.error("Expected dimensions after `^`.","For example `list<number^2x3>`")):t||(t="any",r=this.parseDimensions()),this.skipWhitespace(),this.match(">")||this.error('Expected ">".',"For example `list<number>`"),ye({kind:"list",elements:t,dimensions:r})}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 o=this.parseIntegerLiteral();o===null&&this.error("Expected a positive integer literal.","For example `vector<3>`","Use `vector` for a vector of unknown size"),r=[o]}else t||(t="number",r=this.parseDimensions());return this.skipWhitespace(),this.match(">")||this.error('Expected ">"',"For example `vector<integer>`"),ye({kind:"list",elements:t,dimensions:r})}if(this.match("vector"))return ye({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>`"),ye({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("vector(")&&this.error("Use `vector<...>` instead of `vector(...)`.","For example `vector<3>` or `vector<integer^3>`"),this.match("matrix"))return ye({kind:"list",elements:"number",dimensions:[-1,-1]});if(this.match("tensor"))return ye({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>`"),ye({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}: ${Ie(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=Sa(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>`"),ye({kind:"tuple",elements:n})}parsePrimaryGroup(){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>`"),ye({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],o)=>n.slice(o+1).some(([s])=>s===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>`"),ye({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>`"),ye({kind:"collection",elements:n})}parsePrimary(){let n=this.parseNegationType()??this.parseList()??this.parseSet()??this.parseMap()??this.parseCollection()??this.parseFunctionSignature()??this.parseTuple()??this.parsePrimitiveType()??this.parseValue()??this.parseTypeReference()??this.parsePrimaryGroup();if(n===null){let i="";for(;!this.isEOF()&&/[a-zA-Z_]/.test(this.peek());)i+=this.consume();if(!i)return null;let t=va(i,[...Ln,"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"),ye({kind:"negation",type:n})}parseIntersectionType(){let n=this.parsePrimary();if(n===null)return null;let i=[n];for(this.skipWhitespace();this.match("&");)n=this.parsePrimary(),n===null&&this.error("Expected type"),i.push(n);return i.length===1?i[0]:ye({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]:ye({kind:"union",types:i})}parseType(){return this.skipWhitespace(),this.isEOF()?null:this.parseUnionType()}parse(){let n=this.parseType(),i=this.pos;return this.parseNamedElement()!==null&&(this.pos=i,this.error("Named elements must be enclosed in parentheses")),n===null&&this.error("Syntax error. The type was not recognized."),this.skipWhitespace(),this.isEOF()||this.error("Unexpected character. Could be some mismatched parentheses."),n}};function k(e){return e===void 0?void 0:Sn(e)?e:typeof e!="string"?void 0:Ln.includes(e)?e:new yo(e).parse()}function Sa(e){let n=new Set;for(let{name:i}of e)if(i){if(n.has(i))return i;n.add(i)}return""}var od={number:ir,finite_number:["finite_complex","finite_imaginary","finite_real","finite_integer","finite_rational"],non_finite_number:[],complex:["finite_complex","finite_imaginary","finite_real","finite_rational","finite_integer","non_finite_number","imaginary","real","rational","integer"],finite_complex:["finite_imaginary","finite_real","finite_rational","finite_integer"],imaginary:["finite_imaginary","non_finite_number"],finite_imaginary:[],real:["finite_real","finite_rational","finite_integer","non_finite_number","rational","integer"],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:Ln,unknown:[],nothing:[],never:[],error:[],value:go,scalar:rr,collection:tr,list:[],set:[],tuple:[],map:[],function:[],symbol:[],boolean:[],string:[],expression:ho};function sd(e,n){return n==="any"||e==="never"?!0:e==="unknown"||n==="unknown"?!1:e===n?!0:od[n].includes(e)}function g(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"||e==="unknown"||n==="unknown")return!1;if(typeof n=="string")return typeof e=="string"?sd(e,n):n==="numeric"?Ta(e):n==="function"?ka(e):n==="expression"?ad(e):n==="scalar"?_a(e):n==="value"?Ba(e):n==="collection"?Ia(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.some(i=>g(i,n)):!1;if(n.kind==="union")return n.types.some(i=>g(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=>g(i,n));if(e.kind==="intersection"&&n.kind==="intersection")return n.types.every(i=>e.types.some(t=>g(t,i)));if(e.kind==="intersection")return e.types.every(i=>g(i,n));if(n.kind==="intersection")return n.types.every(i=>g(e,i));if(e.kind==="signature"&&n.kind==="signature"){if(!g(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(!g(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(!g(n.optArgs[i].type,e.optArgs[i].type))return!1}else if(e.optArgs)return!1;if(n.restArg){if(!e.restArg||!g(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[o,s]=t[r],a=i.findIndex(f=>f[0]===o);if(a===-1)return!1;let u=s,l=i[a][1];if(!g(l,u))return!1}return!0}if(n.kind==="collection")return e.kind==="collection"||e.kind==="list"||e.kind==="set"?!!g(e.elements,n.elements):e.kind==="tuple"?e.elements.every(i=>g(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++)if(!g(e.elements[i].type,n.elements[i].type))return!1;return!0}if(n.kind==="list"&&e.kind==="list"){if(!g(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}return n.kind==="set"&&e.kind==="set"?!!g(e.elements,n.elements):!1}function Ta(e){return typeof e=="string"?ir.includes(e):!1}function _a(e){return Ta(e)?!0:typeof e=="string"?rr.includes(e):!1}function Ia(e){return typeof e=="string"?tr.includes(e):["collection","list","set","tuple","map"].includes(e.kind)}function Ba(e){return _a(e)||Ia(e)}function ka(e){return e==="function"||typeof e!="string"&&e.kind==="signature"}function ad(e){return!!(typeof e=="string"&&["expression","symbol","function"].includes(e)||Ba(e)||ka(e))}function ud(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 o=t-55296,s=r-56320;t=2**16+o*2**10+s,i++}}n.push(t)}return n}var sr=8205,wa=[127462,127487];function Da(e){return e===sr||e===65038||e===65039||e>=127995&&e<=128e3||e>=129456&&e<=129460||e>=917536&&e<=917632}function ld(e){return e>=wa[0]&&e<=wa[1]}function Ra(e){if(/^[\u0020-\u00FF]*$/.test(e))return e;let n=[],i=ud(e),t=0;for(;t<i.length;){let r=i[t++],o=i[t];if(o===sr){let s=t-1;for(t+=2;i[t]===sr;)t+=2;n.push(String.fromCodePoint(...i.slice(s,2*t-s+1)))}else if(Da(o)){let s=t-1;for(;Da(i[t]);)t+=i[t]===sr?2:1;n.push(String.fromCodePoint(...i.slice(s,2*t-s-1)))}else ld(r)?(t+=1,n.push(String.fromCodePoint(...i.slice(t-2,2)))):n.push(String.fromCodePoint(r))}return n}var bo=class{constructor(n){this.obeyspaces=!1;n=n.replace(/[\u200E\u200F\u2066-\u2069\u202A-\u202E]/g,""),n=n.replace(/\u2212/g,"-"),this.s=Ra(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 fd(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="",o=!1,s=[];do{if(s.length===0)if(/^#[0-9?]$/.test(e.peek())){let a=e.get().slice(1);s=ce(n?.[a]??n?.["?"]??"\\placeholder{}",n),i=s[0]}else i=e.next(),s=i?[i]:[];o=s.length===0,!o&&i==="\\endcsname"&&(o=!0,s.shift()),o||(o=i==="<$>"||i==="<$$>"||i==="<{>"||i==="<}>"||!!i&&i.length>1&&i[0]==="\\"),o||(r+=s.shift())}while(!o);r&&t.push("\\"+r),t=t.concat(s)}else if(i!=="\\endcsname")if(i.length>1&&i[0]==="#"){let r=i.slice(1);t=t.concat(ce(n?.[r]??n?.["?"]??"\\placeholder{}",n))}else t.push(i)}return t}function ce(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 o=new bo(t),s=[];do s.push(...fd(o,n));while(!o.end());return s}function ar(e){return ce(e).length}function E(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 Ni(e,n){return/^[0-9]$/.test(n)?`${e}${n}`:`${e}{${n}}`}function dn(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 E(n.map(t=>({"<space>":" ","<$$>":"$$","<$>":"$","<{>":"{","<}>":"}"})[t]??t))}function Aa(e){return!("kind"in e)||e.kind==="expression"}function Ca(e){return"kind"in e&&e.kind==="symbol"}function ut(e){return"kind"in e&&e.kind==="matchfix"}function Eo(e){return"kind"in e&&e.kind==="infix"}function ur(e){return"kind"in e&&e.kind==="prefix"}function No(e){return"kind"in e&&e.kind==="postfix"}function Ma(e){return"kind"in e&&e.kind==="environment"}var Jn=[{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 vo(e,n,i={}){let{contract:t=.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}=i;if(!isFinite(n))return vo(N=>e(1/N),1/n,{rtol:a,atol:s,maxeval:u,contract:Math.abs(t)>1?1/t:t,step:1/r,power:o});let f=r,c=Math.pow(1/t,o),d=e(n+f),m=[d],b=1/0,y=1;for(;y<u;){y+=1,f*=t,m.push(e(n+f));let N=c,T=1/0;for(let R=m.length-2;R>=0;R--){let _=m[R];m[R]=m[R+1]+(m[R+1]-m[R])/(N-1);let O=Math.abs(m[R]-_);T=Math.min(T,O),O<b&&(d=m[R],b=O),N*=c}if(T>l*b||!isFinite(T)||b<=Math.max(a*Math.abs(d),s))break}return[d,b]}function X(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):X(e.toString()):null;if(e instanceof me)return e.isInteger()?X(e.toString()):null;let n=e.toLowerCase(),i=n.match(/([+-]?[0-9]*)(?:\.([0-9]+))?e([+-]?[0-9]+)$/);if(i){let o=parseInt(i[3])-(i[2]?i[2].length:0);if(o<0)return null;n=(i[1]??"")+(i[2]??"")+"0".repeat(o)}if(n.indexOf(".")>=0||!/^[+-]?[0-9]+$/.test(n))return null;try{return BigInt(n)}catch(r){return console.error(r.message),null}}var Pa=0x3ffffffffffe5,So=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]),Oa=7919;function La(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 o=6;o<=r+6;o+=6){if(e%(o-1)===0){n[o-1]=(n[o-1]??0)+1,e/=o-1,t=!1;break}if(e%(o+1)===0){n[o+1]=(n[o+1]??0)+1,e/=o+1,t=!1;break}}}return n[e]!==void 0?n[e]+=1:n[e]=1,n}function To(e){if(!Number.isInteger(e)||!Number.isFinite(e)||Number.isNaN(e)||e<=1)return!1;if(e<=Oa)return So.has(e);for(let n of So)if(e%n===0)return!1;return e<Pa&&cd(e),pd(e,30)?void 0:!1}function cd(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 Fa(e){if(e<=1)return!1;if(e<=Oa)return To(Number(e));for(let n of So)if(e%BigInt(n)===BigInt(0))return!1;return e<Pa&&(e=dd(e)),md(e,30)?void 0:!1}function dd(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 pd(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 o=i-1;o--;){if(r=r*r%e,r===1)return!1;if(r===e-1)continue e}return!1}}while(--n);return!0}function md(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 o=i-1;o--;){if(r=r*r%e,r===BigInt(1))return!1;if(r===e-BigInt(1))continue e}return!1}}while(--n);return!0}var Ym=[BigInt(4),BigInt(2),BigInt(4),BigInt(2),BigInt(4),BigInt(6),BigInt(2),BigInt(6)];var _o=21,qa=53,rn=Math.floor(Math.log10(Math.pow(2,qa))),gd=7,Qn=Math.pow(2,-(qa-gd)),P=1e6,$a=1024,lt=1e6;function vi(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 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]][e];if(o)return o}let i=La(e),t=1,r=1;for(let o of Object.keys(i)){let s=parseInt(o);t=t*Math.pow(s,Math.floor(i[o]/n)),r=r*Math.pow(s,i[o]%n)}return[t,r]}function on(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 Si(e,n){return e*n/on(e,n)}function lr(e){if(!Number.isInteger(e)||e<0)return NaN;let n=1;for(let i=2;i<=e;i++)n=n*i;return n}function Va(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 Ga(e,n=Qn){return typeof e=="number"&&Math.abs(e)<=n?0:e}function za(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 Yn(e,n,i=1){if(i===0){let o=Yn(e,n,-1),s=Yn(e,n,1);return o===void 0||s===void 0?NaN:Math.abs(o-s)>1e-5?NaN:(o+s)/2}let[t,r]=vo(e,n,{step:i>0?1:-1});return t}function Tn(e){return typeof e=="object"&&e!==null&&"engine"in e}function sn(e){return e.precision>rn}function ft(e){return typeof e=="string"?e.startsWith("$")&&e.endsWith("$"):!1}function Fn(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)?Fn(E(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 ct(e){return e==null?[]:typeof e=="string"?[e]:Tn(e)?ct(e.symbol):typeof e[Symbol.iterator]=="function"?Array.from(e).map(n=>typeof n=="string"?n:n.symbol):[]}function Be(e){return typeof e!="string"?!1:Jn.some(n=>n.name===e)}function fr(e){return["Less","LessEqual","Greater","GreaterEqual"].includes(e)}function cr(e){return["Equal","NotEqual"].includes(e)}function qn(e){let n=e.operator;return typeof n!="string"?!1:fr(n)}function Io(e){let n=e.operator;return typeof n!="string"?!1:cr(n)}function Ti(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 Ti(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:Ti(e.op1)?.div(i)}}function Bo(e){if(!e)return;let n={...e};return n.odd&&(n.even=!1),n.even&&(n.odd=!1),n}function dt(e){if(e==null||typeof e!="object"||Tn(e))return!1;if("value"in e||"constant"in e||"inferred"in e){if("type"in e&&typeof e.type=="function")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 pt(e){if(e==null||typeof e!="object"||Tn(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 _i(e,n){return n.every(i=>Tn(i))?n.every(i=>i.isCanonical)?n:n.map(i=>i.canonical):n.map(i=>e.box(i))}function Oe(e,n){return n.every(i=>Tn(i)&&i.isCanonical)?n:n.map(i=>e.box(i))}function dr(e){return e.symbol==="Booleans"?"boolean":e.symbol==="Strings"?"string":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 pr(e){let n=hd(e);return n===void 0?!1:Number.isFinite(n)}function Xn(e){return e.string!==null||(e.symbolDefinition?.value?.string??null)!==null?!0:(e.functionDefinition??e.symbolDefinition?.value?.functionDefinition)?.collection?.at!==void 0}function K(e){if(e.string!==null||(e.symbolDefinition?.value?.string??null)!==null)return!0;let n=e.functionDefinition??e.symbolDefinition?.value?.functionDefinition;return n?n.collection?.at!==void 0&&Number.isFinite(n.collection?.size?.(e)??1/0):!1}function*q(e){let n=mt(e);if(!n){yield e;return}let i=e.engine.iterationLimit,t=0;for(;;){let{done:r,value:o}=n.next();if(r)return;if(t++>i){yield e.engine.error("iteration-limit-exceeded");return}yield o}}function hd(e){let n=e.string??e.symbolDefinition?.value?.string??null;return n!==null?n.length:(e.functionDefinition??e.symbolDefinition?.value?.functionDefinition)?.collection?.size?.(e)}function mt(e){let n=e.functionDefinition??e.symbolDefinition?.value?.functionDefinition;if(n?.collection?.iterator)return n.collection.iterator(e);let i=e.string??e.symbolDefinition?.value?.string??null;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 Ua(e,n){let i=e.functionDefinition??e.symbolDefinition?.value?.functionDefinition;if(i?.collection?.at)return i.collection.at(e,n);let t=e.string;if(t)return n<1?e.engine.string(t.charAt(t.length+n)):e.engine.string(t.charAt(n-1))}function ja(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,o=-1)=>{let s=e.at,a=r;return{next(){if(o>=0&&a>=r+o)return{done:!0,value:void 0};let u=s(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 o=1,s=i(t),a=s.next();for(;!a.done;){if(r.isSame(a.value))return o;o++,a=s.next()}}),{contains:e.contains,size:e.size,at:e.at,iterator:i,keys:e.keys,indexOf:e.indexOf,subsetOf:e.subsetOf}}function ne(e,n){let i=e.every(r=>r.isCanonical)?e:e.map(r=>r.canonical);if(n){let r=s=>s.symbol==="Nothing"||s.operator===n||s.operator==="Sequence";if(i.every(s=>!r(s)))return i;let o=[];for(let s of i)s.symbol!=="Nothing"&&(s.ops&&(s.operator===n||s.operator==="Sequence")?o.push(...ne(s.ops,n)):o.push(s));return o}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(...ne(r.ops,n)):t.push(r));return t}function Ii(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(...Ii(t.ops,n));return i.length,e.length,i.length===e.length?e:i}function ko(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(...ko(t))}else n.push(i.op1);else i.operator==="Sequence"?i.ops&&n.push(...i.ops):n.push(i);return n}function Le(e,n,i){if(n=ne(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 Fe(e,n,i){let t=typeof i=="number"?i:i?.count,r=typeof i=="number"?void 0:i?.flatten;if(n=ne(n,r),!e.strict){for(let a of n)K(a)||a.infer("real");return n}let o=!0;t??(t=n.length);let s=[];for(let a=0;a<=Math.max(t-1,n.length-1);a++){let u=n[a];if(a>t-1)o=!1,s.push(e.error("unexpected-argument",u.toString()));else if(u===void 0)o=!1,s.push(e.error("missing"));else if(!u.isValid)o=!1,s.push(u);else if(u.isNumber)s.push(u);else if(u.symbol&&!e.lookupSymbol(u.symbol)&&!e.lookupFunction(u.symbol))s.push(u);else if(u.type==="unknown")s.push(u);else if(K(u)){for(let l of q(u))if(!l.isNumber){o=!1;break}o?s.push(u):s.push(e.typeError("number",u.type,u))}else u.symbolDefinition?.inferredType&&g("number",u.type)||u.functionDefinition?.inferredSignature&&g("number",u.type)?s.push(u):(o=!1,s.push(e.typeError("number",u.type,u)))}if(o)for(let a of s)if(K(a))for(let u of q(a))u.infer("real");else a.infer("real");return s}function _n(e,n,i){return n==null?e.error("missing"):i===void 0?e.error("unexpected-argument",n.toString()):(n=n.canonical,!n.isValid||g(n.type,i)?n:e.typeError(i,n.type,n))}function mr(e,n,i){if(n.length===i.length&&n.every((r,o)=>g(r.type,i[o])))return n;let t=[];for(let r=0;r<=i.length-1;r++)t.push(_n(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 Za(e,n,i){if(!e.strict||typeof i.signature=="string"||i.signature.kind!=="signature")return null;let t=[],r=!0,o=i.signature.args?.map(c=>c.type)??[],s=i.signature.optArgs?.map(c=>c.type)??[],a=i.signature.restArg?.type,u=i.hold,l=i.threadable,f=0;for(let c of o){let d=n[f++];if(!d){t.push(e.error("missing")),r=!1;continue}if(u){t.push(d);continue}if(!d.isValid){t.push(d),r=!1;continue}if(d.type==="unknown"){t.push(d);continue}if(l&&K(d)){t.push(d);continue}if(d.symbolDefinition?.inferredType&&g(d.type,c)){t.push(d);continue}if(d.functionDefinition?.inferredSignature&&g(d.type,c)){t.push(d);continue}if(!g(d.type,c)){t.push(e.typeError(c,d.type,d)),r=!1;continue}t.push(d)}for(let c of s){let d=n[f];if(!d)break;if(u){t.push(d),f+=1;continue}if(!d.isValid){t.push(d),r=!1,f+=1;continue}if(d.type==="unknown"){t.push(d),f+=1;continue}if(l&&K(d)){t.push(d),f+=1;continue}if(d.symbolDefinition?.inferredType&&g(d.type,c)){t.push(d),f+=1;continue}if(!g(d.type,c)){t.push(e.typeError(c,d.type,d)),r=!1,f+=1;continue}t.push(d),f+=1}if(a)for(let c of n.slice(f)){if(f+=1,u){t.push(c);continue}if(!c.isValid){t.push(c),r=!1;continue}if(c.type==="unknown"){t.push(c);continue}if(l&&K(c)){t.push(c);continue}if(c.symbolDefinition?.inferredType&&g(c.type,a)){t.push(c);continue}if(!g(c.type,a)){t.push(e.typeError(a,c.type,c)),r=!1;continue}t.push(c)}if(f<n.length)for(let c of n.slice(f))t.push(e.error("unexpected-argument",c.toString())),r=!1;if(!r)return t;f=0;for(let c of o)u||(!l||!K(n[f]))&&n[f].infer(c),f+=1;for(let c of s){if(!n[f])break;(!l||!K(n[f]))&&n[f]?.infer(c),f+=1}if(a)for(let c of n.slice(f))u||(!l||!K(c))&&c.infer(a),f+=1;return null}function gt(e,n){for(;n!==BigInt(0);)[e,n]=[n,e%n];return e<0?-e:e}function Ha(e,n){return e*n/gt(e,n)}function In(e){return e!==null&&Array.isArray(e)}function ee(e){return e!==null&&Array.isArray(e)&&typeof e[0]=="number"}function Wa(e){return e!==null&&Array.isArray(e)&&typeof e[0]=="bigint"}function an(e){return e[0]==0}function wo(e){return e[0]>0}function Ne(e){return e[0]==e[1]}function ht(e){return e[0]===-e[1]}function Kn(e){return e[1]==1}function Do(e){return Number(e[0])}function Ro(e){return Number(e[1])}function Ja(e){return Number(e[0])/Number(e[1])}function ei(e,n){if(typeof e[0]=="number"&&!Number.isFinite(e[0]))return e;let i=n;if(i===null)return e;if(Wa(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(Wa(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 mn(e,n){return ee(e)&&ee(n)?[e[0]*n[0],e[1]*n[1]]:ee(e)?[BigInt(e[0])*n[0],BigInt(e[1])*n[1]]:ee(n)?[BigInt(n[0])*e[0],BigInt(n[1])*e[1]]:[e[0]*n[0],e[1]*n[1]]}function ni(e){return[-e[0],e[1]]}function Ya(e){return e[0]<0?[-e[1],-e[0]]:[e[1],e[0]]}function Qa(e){return[Number(e[0]),Number(e[1])]}function gr(e,n){return ee(e)&&ee(n)?e[1]===1&&n[1]===1?[on(e[0],n[0]),1]:[on(e[0],n[0]),Si(e[1],n[1])]:e[1]===1&&n[1]===1?[gt(BigInt(e[0]),BigInt(n[0])),BigInt(1)]:[gt(BigInt(e[0]),BigInt(n[0])),Ha(BigInt(e[1]),BigInt(n[1]))]}function Bi(e){if(ee(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=on(e[0],e[1]);return r<=1?e:[e[0]/r,e[1]/r]}e[1]<0&&(e=[-e[0],-e[1]]);let n=gt(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 Xa(e){if(!Number.isFinite(e)||e%1===0)return e;let i=1e-15,t=Math.floor(e),r=1,o=0,s=t,a=1;for(;e-t>i*a*a;){e=1/(e-t),t=Math.floor(e);let u=r;r=s;let l=o;o=a,s=u+t*r,a=l+t*o}return[s,a]}var $=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 ki=["Error","'missing'"];function Bn(e){return!!(typeof e=="number"||wi(e)||typeof e=="string"&&/^[+-]?[0-9\.]/.test(e))}function wi(e){return e!==null&&typeof e=="object"&&"num"in e}function xr(e){return e!==null&&typeof e=="object"&&"sym"in e}function xd(e){return e!==null&&typeof e=="object"&&"str"in e}function xt(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 Co(e){if(e==null||V(e)!==null)return null;let n=x(e);return n?[n,...v(e).map(i=>Co(i)).filter(i=>i!==null)]:e}function x(e){return Array.isArray(e)?e[0]:e==null?"":xt(e)?e.fn[0]:""}function v(e){return Array.isArray(e)?e.slice(1):e!==void 0&&xt(e)?e.fn.slice(1):[]}function p(e,n){return Array.isArray(e)?e[n]??null:e===null||!xt(e)?null:e.fn[n]??null}function W(e){return e==null?0:Array.isArray(e)?Math.max(0,e.length-1):xt(e)?Math.max(0,e.fn.length-1):0}function Mo(e){return e==null?null:x(e)==="Hold"?p(e,1):e}function D(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=xr(e)?e.sym:e;return typeof n!="string"?null:n}function Ka(e){let n=x(e);if(n==="KeyValuePair"||n==="Tuple"||n==="Pair"){let[i,t]=v(e),r=V(i);return r?[r,t??"Nothing"]:null}return null}function Po(e){if(e===null)return null;let n=Ka(e);if(n)return{[n[0]]:n[1]};if(x(e)==="Dictionary"){let t={},r=v(e);for(let o=1;o<W(e);o++){let s=Ka(r[o]);s&&(t[s[0]]=s[1])}return t}return null}function yr(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 yd(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 w(e){return typeof e=="number"?e:typeof e=="string"?yd(e):e!==void 0&&wi(e)?w(e.num):null}function Di(e){if(e==null)return null;if(D(e)==="Half")return[1,2];let n=x(e);if(!n)return null;let i=null,t=null;if(n==="Negate"){let r=Di(v(e)[0]);if(r)return[-r[0],r[1]]}if(n==="Rational"||n==="Divide"){let[r,o]=v(e);i=w(r)??NaN,t=w(o)??NaN}if(n==="Power"){let[r,o]=v(e),s=w(o);s===1?(i=w(r),t=1):s===-1&&(i=1,t=w(r))}if(n==="Multiply"){let[r,o]=v(e);if(x(o)==="Power"){let[s,a]=v(o);w(a)===-1&&(i=w(r),t=w(s))}}return i===null||t===null?null:Number.isInteger(i)&&Number.isInteger(t)?[i,t]:null}function hr(e,n){let i=D(e);if(i&&n[i])return n[i];let t=x(e);return t?[hr(t,n),...v(e).map(r=>hr(r,n))]:e}function br(e,n){let i=null;if(Array.isArray(e)&&(i=e),xt(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 Ri(e,n,i){let t=x(n),r=x(i);return t===e&&r===e?[e,...v(n),...v(i)]:t===e?[e,...v(n),i]:r===e?[e,n,...v(i)]:[e,n,i]}function kn(e){if(e==null)return null;let n=x(e);if(n==="Delimiter"){if(e=p(e,1),e===null)return[];if(n=x(e),n!=="Sequence")return[e]}return n!=="Sequence"?null:v(e)}function z(e){return e==null||e==="Nothing"?!0:x(e)==="Sequence"&&W(e)===0}function M(e){return z(e)?ki:e}function Ao(e){return e[0]==="Square"?Ao(e.slice(1))+2:e.reduce((n,i)=>n+yt(i),0)}function yt(e){if(e===null)return 0;if(typeof e=="number"||typeof e=="string"||Bn(e)||xr(e)||xd(e))return 1;if(Array.isArray(e))return Ao(e);if("fn"in e)return Ao(e.fn);let n=Po(e);if(n){let i=Object.keys(n);return 1+i.length+i.reduce((t,r)=>t+yt(n[r]),0)}return 0}function bd(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 o=n[e[r]];if(o===void 0)return[i,e.slice(r)];o<t?i-=o:i+=o,t=o}return[i,""]}function Ai(e,n){if(e=e.trim(),e.length===0)return[NaN,""];if(e.startsWith("+"))return Ai(e.slice(1),n);if(e.startsWith("-")){let[r,o]=Ai(e.slice(1),n);return[-r,o]}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 bd(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 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}[e[r]];if(o!==-1){if(o===void 0)return[t,e.substring(r)];if(o>=i)return[t,e.substring(r)];t=t*i+o}}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 eu(e){if(typeof e=="number")return Number.isInteger(e)?BigInt(e):null;if(e==null||!Bn(e))return null;let n=wi(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:X(i)}function Re(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 j=class e extends ${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 o=1;if(typeof o!="number"||Number.isInteger(o),o==0){this.rational=[0,1],this.radical=1;return}let s=i.rational?[...i.rational]:[1,1];o!=1&&(typeof o=="bigint"?s=mn(s,[o,BigInt(1)]):s=mn(s,[o,1])),this.rational=s,this.radical=i.radical??1,this.radical<=P&&this.radical>=1,this.normalize()}get type(){return this.isNaN||this.isPositiveInfinity||this.isNegativeInfinity?"non_finite_number":this.radical!==1?(an(this.rational),"finite_real"):Kn(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=0,t=r=>Kn(r)?Re(r[0]):["Rational",Re(r[0]),Re(r[1])];return an(this.rational)||(this.radical===1?i=t(this.rational):Ne(this.rational)?i=["Sqrt",this.radical]:ht(this.rational)?i=["Negate",["Sqrt",this.radical]]:i=["Multiply",t(this.rational),["Sqrt",this.radical]]),i}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=>Kn(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 Ne(this.rational)?t(this.radical):ht(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 an(this.rational)?0:wo(this.rational)?1:-1}get re(){return Ja(this.rational)*Math.sqrt(this.radical)}get bignumRe(){let i,t=this.rational;return ee(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:ee(this.rational)?[this.rational[0],1]:[this.rational[0],BigInt(1)],radical:this.radical})}get denominator(){return ee(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,o]=vi(this.radical,2);typeof this.rational[0]=="number"?this.rational[0]*=r:this.rational=mn(this.rational,[r,1]),this.radical=o}this.rational=Bi(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 an(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 an(this.rational)?0:wo(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:ni(this.rational),radical:this.radical})}inv(){return this.isOne?this:this.isNegativeOne?this:this.clone({rational:ee(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:ee(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:ei(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:ee(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 me?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:mn(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:ee(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(ee(this.rational)&&ee(i.rational)){let[r,o]=this.rational,[s,a]=i.rational;t=[r*a,o*s*i.radical]}else t=mn(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 $){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>P||this.rational[0]>P||this.rational[0]<-P||this.rational[1]>P)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:ee(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:ee(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>P||this.rational[0]>P||this.rational[0]<-P||this.rational[1]>P)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(ee(this.rational)){let[i,t]=this.rational;return i*t>P?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=gr(this.rational,i.rational),r=on(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&&Kn(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 o=0,s=[0,1],a=[];for(let l of i){if(l.isNaN)return[new e(NaN,t,r)];if(!l.isZero)if(o+=l.im,l instanceof e){let f=l.rational;if(l.radical===1)s=ei(s,f);else{let c=a.findIndex(d=>d.radical===l.radical);c===-1?a.push({multiple:f,radical:l.radical}):a[c].multiple=ei(a[c].multiple,f)}}else l.type,s=ei(s,[l.re,1])}if(an(s)&&a.length===0)return o===0?[new e(0,t,r)]:[t({im:o})];let u=[];return o!==0&&u.push(t({im:o})),a.length===0?u.push(new e({rational:s},t,r)):(a.push({multiple:s,radical:1}),u.push(...a.map(l=>new e({rational:l.multiple,radical:l.radical},t,r)))),u}};function ze(e){let n=e.numericValue;if(n===null||typeof n=="number"&&!Number.isFinite(n)||n instanceof $&&(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 j)return n.radical!==1?void 0:n.rational;let t=n.bignumRe;if(t!==void 0&&Number.isInteger(t))return[X(t),BigInt(1)];let r=n.re;if(Number.isInteger(r))return[r,1]}function bt(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()?X(i):Number.isInteger(n.re)?BigInt(n.re):null}function Oo(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>=-P&&e<=P?e:null;let n=e.numericValue;if(n===null)return null;if(typeof n=="number")return Number.isInteger(n)&&n>=-P&&n<=P?n:null;if(n.im!==0)return null;let i=n.re;return Number.isInteger(i)&&i>=-P&&i<=P?Number(i):null}function ke(e){if(e.symbol&&!e.isConstant)return 1;if(e.operator==="Power"&&e.op2.isNumberLiteral){if(ke(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=ke(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,ke(i));return n}return e.operator==="Negate"||e.operator==="Divide"?ke(e.op1):0}function Ue(e){if(e.symbol&&!e.isConstant)return 1;if(e.operator==="Power"&&e.op2.isNumberLiteral){if(Ue(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,ke(i));return n}return e.operator==="Negate"||e.operator==="Divide"?Ue(e.op1):0}function nu(e){return e.symbol&&!e.isConstant?e.symbol:e.ops?e.ops.map(n=>nu(n)).join(" ").trim():""}function Lo(e){return nu(e).split(" ").reverse().join(" ").trim()}function J(e,n,i,t){if((e?.numericValue??null)===null)return;let r=e.engine,o;if(e.im!==0)o=t?.(r.complex(e.re,e.im));else{let s=e.bignumRe;if(s!==void 0&&sn(r)&&i)o=i(s);else{let a=e.re;sn(r)&&i?o=i(r.bignum(a)):o=n(a)}}if(o!==void 0)return o instanceof L?r.number(r._numericValue({re:r.chop(o.re),im:r.chop(o.im)})):r.number(r.chop(o))}function gn(e,n,i,t,r){if(e.numericValue===null||n.numericValue===null)return;let o=e.engine,s;if((e.im!==0||n.im!==0)&&(s=r?.(o.complex(e.re,e.im),o.complex(n.re,n.im))),s===void 0&&t){let a=e.bignumRe,u=n.bignumRe;(a!==void 0||u!==void 0)&&(a??(a=o.bignum(e.re)),u??(u=o.bignum(n.re)),s=t(a,u))}if(s===void 0){let a=e.re,u=n.re;!isNaN(a)&&!isNaN(u)&&(sn(o)&&t?s=t(o.bignum(e.bignumRe??a),o.bignum(n.bignumRe??u)):s=i(a,u))}if(s!==void 0)return s instanceof L?o.number(o._numericValue({re:o.chop(s.re),im:o.chop(s.im)})):o.number(o.chop(s))}function Fo(e,n){for(e.isInteger()&&n.isInteger();!n.isZero();)[e,n]=[n,e.modulo(n)];return e.abs()}function iu(e,n){return e.mul(n).div(Fo(e,n))}function qo(e,n){if(!n.isInteger()||n.isNegative())return e._BIGNUM_NAN;if(n.lessThan(10))return e.bignum([1,1,2,6,24,120,720,5040,40320,362880,3628800][n.toNumber()]);if(n.gt(Number.MAX_SAFE_INTEGER)){let o=e._BIGNUM_ONE,s=e._BIGNUM_TWO;for(;s.lessThan(n);)o=o.mul(s),s=s.add(1);return o}if(n.modulo(2).eq(1))return n.times(qo(e,n.minus(1)));let i=n.toNumber(),t=n,r=n;for(;i>2;)i-=2,t=t.add(i),r=r.mul(t);return r}function tu(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 ii(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 ti=class e extends ${constructor(n,i){if(super(),this.bignum=i,typeof n=="number")this.decimal=i(n),this.im=0;else if(n instanceof me)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.im!==0?Number.isFinite(this.im)?this.decimal.isZero()?"finite_imaginary":"finite_complex":"non_finite_number":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(X(this.decimal))}toJSON(){return this.isNaN?"NaN":this.isPositiveInfinity?"PositiveInfinity":this.isNegativeInfinity?"NegativeInfinity":this.isComplexInfinity?"ComplexInfinity":this.im===0?ii(this.decimal)?je(this.decimal.toNumber()):{num:Er(this.decimal)}:ii(this.decimal)?["Complex",Re(je(this.decimal.toNumber())),Re(this.im)]:["Complex",{num:Er(this.decimal)},Re(this.im)]}toString(){if(this.isZero)return"0";if(this.isOne)return"1";if(this.isNegativeOne)return"-1";if(this.im===0)return Er(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`,`(${Er(this.decimal)} ${n})`}clone(n){return new e(n,this.bignum)}_makeExact(n){return new j(n,i=>this.clone(i),this.bignum)}get re(){return je(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 me?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 me)return this.im===0?this.clone(this.decimal.mul(n)):this.clone({re:this.decimal.mul(n),im:je(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,o]=[n.re,n.im],s=r*r+o*o,a=n.bignumRe??this.bignum(n.re),u=a.mul(a).add(o*o);return this.clone({re:this.decimal.mul(a).add(t*o).div(u),im:(t*r-i*o)/s})}pow(n){if(Array.isArray(n),this.isNaN)return this;if(typeof n=="number"&&isNaN(n))return this.clone(NaN);if(n instanceof $){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),d=this.clone({re:c.cos(),im:je(c.sin().toNumber())});return f.mul(d)}}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(),o=me.atan2(t,i),s=r.pow(n),a=o.mul(n);return this.clone({re:s.mul(a.cos()),im:je(s.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(),o=me.atan2(t,i),s=r.pow(1/n),a=o.div(n);return this.clone({re:s.mul(a.cos()),im:je(s.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(),o=je(Math.sign(i)*t.sub(n).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(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(),o=je(me.atan2(t,i).toNumber());return n===void 0?this.clone({re:r.ln(),im:o}):this.clone({re:r.log(n),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 n=this.decimal.exp();return this.clone({re:n.mul(je(Math.cos(this.im))),im:je(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(X(this.decimal.floor()))}ceil(){return this.isNaN||this.im!==0?this._makeExact(NaN):this.decimal.isInteger()?this:this._makeExact(X(this.decimal.ceil()))}round(){return this.isNaN||this.im!==0?this._makeExact(NaN):this.decimal.isInteger()?this:this._makeExact(X(this.decimal.round()))}eq(n){return typeof n=="number"?this.im===0&&this.decimal.eq(n):this.decimal.eq(n.bignumRe??n.re)&&je(this.im-n.im)===0}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 Er(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 je(e){return Math.abs(e)<=Qn?0:e}var ri=class e extends ${constructor(n,i){if(super(),this.bignum=i,typeof n=="number")this.decimal=n,this.im=0;else if(n instanceof me)this.decimal=n.toNumber(),this.im=0;else{let t=n.re===void 0?0:n.re instanceof me?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 j(n,i=>this.clone(i),this.bignum)}get type(){return this.im!==0?Number.isFinite(this.im)?this.decimal===0?"finite_imaginary":"finite_complex":"non_finite_number":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?Re(this.decimal):["Complex",Re(this.decimal),Re(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 me?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 me&&(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 me?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,o]=[n.re,n.im],s=r*r+o*o;return this.clone({re:(i*r+t*o)/s,im:(t*r-i*o)/s})}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 $){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:Et(f*Math.cos(c)),im:Et(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.pow(-n).inv();if(this.im===0)return this.clone(this.decimal**n);let i=this.decimal,t=this.im,r=Math.sqrt(i*i+t*t),o=Math.atan2(t,i),s=r**n,a=o**n;return this.clone({re:s*Math.cos(a),im:s*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),o=Math.atan2(t,i),s=Math.pow(r,1/n),a=o/n;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 n=this.decimal,i=this.im,t=Math.sqrt(n*n+i*i),r=Math.sqrt((n+t)/2),o=Math.sign(i)*Math.sqrt((t-n)/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(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),o=Math.atan2(t,i),s=n===void 0?Math.log(r):Math.log(r)/Math.log(n);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 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 typeof n=="number"?this.im===0&&Et(this.decimal-n)===0:Et(this.decimal-n.re)===0&&Et(this.im-n.im)===0}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 Et(e){return Math.abs(e)<=Qn?0:e}var Nt=class{constructor(n,i){this.terms=[];this.engine=n;let t=0,r=0,o=[];for(let s of i){if((s.type==="imaginary"||s.type==="complex")&&s.isInfinity){this.terms=[{term:n.ComplexInfinity,coef:[]}];return}if(s.isNaN||s.symbol==="Undefined"){this.terms=[{term:n.NaN,coef:[]}];return}let[a,u]=s.toNumericValue();a.isPositiveInfinity?t+=1:a.isNegativeInfinity&&(r+=1),u.is(1)?a.isZero||o.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}o.length===1?this.add(o[0],n.One):o.length>0&&ru(n,o).forEach(s=>this.add(s,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[o,s]=r.toNumericValue();this.add(n.mul(o),s)}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:s,term:a}of i)if(s.length===0)a.isNumberLiteral?typeof a.numericValue=="number"?r.push(n._numericValue(a.numericValue)):r.push(a.numericValue):t.push(a);else{let u=s.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 o=Ed(n,r);if(!o.isZero){if(t.length===0)return n.box(o);t.push(n.box(o))}return qe(n,t)}asExpression(){let n=this.engine,i=this.terms;return i.length===0?n.Zero:qe(n,i.map(({coef:t,term:r})=>{if(t.length===0)return r;let o=ru(n,t);if(o.length===0)return r;if(o.length>1)return oe(n,[qe(n,o.map(a=>n.box(a))),r]);let s=o[0];return s.isNaN?n.NaN:s.isZero?n.Zero:s.eq(1)?r:s.eq(-1)?r.neg():r.is(1)?n.box(s):r.mul(n.box(s))}))}};function ru(e,n){let i=o=>e.bignum(o),t=o=>new j(o,r,i),r=e.precision>rn?o=>new ti(o,i):o=>new ri(o,t);return j.sum(n,r,i)}function Ed(e,n){let i=s=>e.bignum(s),t=s=>new j(s,r,i),r=e.precision>rn?s=>new ti(s,i):s=>new ri(s,t),o=j.sum(n,r,i);return o.length===0?t(0):o.length===1?o[0].N():o.reduce((s,a)=>s.add(a).N())}function qe(e,n){if(n=ne(n,"Add"),n=n.filter(t=>t.numericValue===null||!t.is(0)),n.length===0)return e.Zero;if(n.length===1&&!Xn(n[0]))return n[0];let i=[];for(let t=0;t<n.length;t++){let r=n[t];if(r.isNumberLiteral){let o=r.numericValue;if(typeof o=="number"||g(o.type,"real")&&!o.isExact||g(o.type,"integer")){let s=n[t+1];if(s){let a=Ti(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;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(vt))}function ou(e){return e.length===0?"finite_integer":e.length===1?e[0].type:Pe(...e.map(n=>n.type))}function Z(...e){return e.length>0,e.every(n=>n.isValid)?new Nt(e[0].engine,e).asExpression():e[0].engine._fn("Add",e)}function su(...e){return e.length>0,e.every(n=>n.isValid)?(e=e.map(n=>n.isNumberLiteral?n.evaluate():n.N()),new Nt(e[0].engine,e).N()):e[0].engine._fn("Add",e)}function hn(e,n){if(e.operator==="Negate"&&n.operator==="Negate")return hn(e.op1,n.op1);let i=e.engine;if(e.operator==="Negate")return hn(e.op1,n).neg();if(n.operator==="Negate")return hn(e,n.op1).neg();if(e.operator==="Divide"&&n.operator==="Divide"){let t=e.op2.mul(n.op2);return hn(e.op1,n.op1).div(t)}return e.operator==="Divide"?hn(e.op1,n).div(e.op2):n.operator==="Divide"?hn(e,n.op1).div(n.op2):e.operator==="Add"?Z(...e.ops.map(t=>hn(t,n))):n.operator==="Add"?Z(...n.ops.map(t=>hn(e,t))):new ve(i,[e,n]).asExpression()}function Tt(e,n){if(n.length===0)return null;if(n.length===1)return n[0];if(n.length===2)return hn(n[0],n[1]);let i=Tt(e,n.slice(1));return i===null?null:hn(n[0],i)}var St=[[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 Vo(e,n){for(;e>=St.length;){let i=St.length,t=[1],r=St[i-1];for(let o=1;o<i;o++)t[o]=r[o-1]+r[o];t[i]=1,St.push(t)}return St[e][n]}function Nd(e){let n=e.reduce((t,r)=>t+r,0),i=1;for(let t=0;t<e.length;t+=1)i*=Vo(n,e[t]),n-=e[t];return i}function*au(e,n){if(e===1){yield[n];return}for(let i=0;i<=n;i+=1)for(let t of au(e-1,n-i))yield[i,...t]}function $o(e,n){let i=e.engine;if(n<0){let s=$o(e,-n);return s?s.inv():null}if(n===0)return i.One;if(n===1)return Ae(e);if(e.operator==="Negate"&&Number.isInteger(n)){let s=n%2===0?1:-1,a=$o(e.op1,n);return a===null?null:s>0?a:a.neg()}if(e.operator,e.operator!=="Add")return null;let t=e.ops,r=au(t.length,n),o=[];for(let s of r){let a=[i.number(Nd(s))];for(let u=0;u<s.length;u+=1)s[u]!==0&&(s[u]===1?a.push(t[u]):a.push(t[u].pow(s[u])));o.push(se(...a))}return Z(...o)}function uu(e,n,i){let t=null;if(n==="Divide"){let r=Ae(i[0]);return r===null?null:r.operator==="Add"?Z(...r.ops.map(o=>o.div(i[1]))):e._fn("Divide",[r,i[1]])}if(n==="Multiply")return Tt(e,i);if(n==="Negate")return Ae(i[0])?.neg()??null;if(n==="Add")return Z(...i.map(r=>Ae(r)??r));if(n==="Power"){let r=G(i[1]);t=r!==null?$o(i[0],r):null}return t}function Ae(e){return e=e?.canonical,!e||typeof e.operator!="string"?null:Be(e.operator)?e.engine._fn(e.operator,e.ops.map(n=>Ae(n)??n)):uu(e.engine,e.operator,e.ops??[])}function lu(e){if(!e.operator||!e.ops)return null;let n=e.engine,i=e.ops.map(r=>r.ops?uu(n,r.operator,r.ops)??r:r),t=e.engine.function(e.operator,i);return Ae(t)??t}function fu(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 oi(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"?Z(...e.ops.map(t=>oi(t))):e.operator==="Multiply"?Go(i,e.ops):e.operator==="Divide"?oi(e.op1).div(e.op2):i._fn("Negate",[e])}function Go(e,n){if(n.length===0)return e.NegativeOne;if(n.length===1)return oi(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(ae));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(ae)):e._fn("Negate",[e._fn("Multiply",[...n].sort(ae))])}function oe(e,n){let i=1,t=[];for(let o of n){let[s,a]=vd(o);i*=a,t.push(s)}t=t.filter(o=>!o.is(1));let r=[];for(let o=0;o<t.length;o++){let s=t[o];if(o+1>=t.length){r.push(s);continue}let a=t[o+1];if(s.isNumberLiteral){if(a.operator==="Sqrt"&&a.op1.isNumberLiteral&&g(a.op1.type,"finite_integer")){let u=a.op1.numericValue;if(typeof u!="number"&&(u=u.re),u>=P){r.push(s);continue}if(g(s.type,"finite_rational")){let l=s.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}))),o++;continue}}else if(a.isNumberLiteral&&a.numericValue instanceof $){let u=a.numericValue;if(u instanceof j&&Ne(u.rational)&&u.radical!==1){let l=ze(s);if(l){r.push(e.number(e._numericValue({rational:l,radical:u.radical}))),o++;continue}}else if(u.im===1){let l=s.numericValue;if(typeof l=="number"){r.push(e.number(e.complex(0,l))),o++;continue}else if(l.im===0){if(Number.isInteger(l.re)){r.push(e.number(e.complex(0,l.re))),o++;continue}else if(!l.isExact){r.push(e.number(e.complex(0,l.re))),o++;continue}}}}}r.push(s)}return i<0?r.length===0?e.number(-1):r.length===1?r[0].neg():Go(e,r):r.length===0?e.number(1):r.length===1?r[0]:e._fn("Multiply",[...r].sort(ae))}function vd(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 se(...e){if(e.length>0,e.length===1)return e[0];let n=e[0].engine,i=Tt(n,e);if(i){if(i.operator!=="Multiply")return i;e=i.ops}return new ve(n,e).asRationalExpression()}function cu(...e){e.length>0;let n=e[0].engine;e=e.map(t=>t.N());let i=Tt(n,e);if(i){if(i.operator!=="Multiply")return i;e=i.ops}return new ve(n,e).asExpression({numericApproximation:!0})}function Ze(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 Ze(oe(i,[e.op1,n.op2]),oe(i,[e.op2,n.op1]));if(e.operator==="Divide")return Ze(e.op1,oe(i,[e.op2,n]));if(n.operator==="Divide")return Ze(oe(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"&&g(r.type,"integer")){let f=r.bignumRe;if(f!==void 0){if(f.isInteger())return i.number([X(t),X(f)])}else{let c=r.re;if(Number.isInteger(c))return i.number([t,c])}}}return i._fn("Divide",[e,n])}let[o,s]=e.toNumericValue();if(o.isZero)return i.Zero;let[a,u]=n.toNumericValue();if(a.isZero)return i.NaN;let l=o.div(a);return l.isOne?u.is(1)?s:i._fn("Divide",[s,u]):l.isNegativeOne?u.is(1)?s.neg():i._fn("Divide",[s.neg(),u]):l.isExact?s.is(1)&&u.is(1)?i.number(l):u.is(1)?oe(i,[i.number(l),s]):i._fn("Divide",[oe(i,[i.number(l.numerator),s]),oe(i,[i.number(l.denominator),u])]):i._fn("Divide",[e,n])}function Ci(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,o=n.numericValue;if(typeof r=="number"&&typeof o=="number"&&Number.isInteger(r)&&Number.isInteger(o))return i.number(i._numericValue({rational:[r,o]}));if(typeof r=="number"&&Number.isInteger(r)&&typeof o!="number"){if(o.isExact)return i.number(i._numericValue(r).div(o.asExact))}else if(typeof o=="number"&&Number.isInteger(o)&&typeof r!="number"){if(r.isExact)return i.number(r.asExact.div(o))}else if(typeof r!="number"&&typeof o!="number"&&r.isExact&&o.isExact)return i.number(r.asExact.div(o.asExact))}}let t=new ve(i,[e]);return t.div(typeof n=="number"?i._numericValue(n):n),t.asRationalExpression()}var ve=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 o of n.ops)this.mul(o,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 o=n.numericValue;if(o!==null){if(n.is(1))return;if(n.is(0)){this.coefficient=this.engine._numericValue(an(i)?NaN:0);return}if(n.is(-1)){Ne(i)?this.coefficient=this.coefficient.neg():this.coefficient=this.coefficient.mul(this.engine._numericValue(-1).pow(this.engine._numericValue(i)));return}if(n.isInfinity){Ne(i)?this.coefficient=this.engine._numericValue(n.isNegative?-1/0:1/0):this.terms.push({term:n,exponent:i});return}Ne(i)?this.coefficient=this.coefficient.mul(o):this.coefficient=this.coefficient.mul(this.engine._numericValue(o).pow(this.engine._numericValue(i)));return}let s=vr(n);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(i)));return}if(!n.symbol){let a;[a,n]=n.toNumericValue(),i&&!Ne(i)&&(a=a.pow(this.engine._numericValue(i))),this.coefficient=this.coefficient.mul(a)}}if(n.is(1)&&(!i||Ne(i))||n.is(0)===!1&&i&&an(i))return;if(n.is(0)){i&&an(i)?this.coefficient=this.engine._numericValue(NaN):this.coefficient=this.engine._numericValue(0);return}let t=i??[1,1];if(n.operator==="Power"){let o=ze(n.op2);if(o){this.mul(n.op1,mn(t,o));return}}if(n.operator==="Sqrt"){this.mul(n.op1,mn(t,[1,2]));return}if(n.operator==="Root"){let o=ze(n.op2);if(o){this.mul(n.op1,mn(t,Ya(o)));return}}if(n.operator==="Divide"){this.mul(n.op1,t),this.mul(n.op2,ni(t));return}let r=!1;for(let o of this.terms)if(o.term.isSame(n)){o.exponent=ei(o.exponent,t),r=!0;break}r||this.terms.push({term:n,exponent:t})}div(n){n instanceof $?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 o=this.coefficient.N();return[{exponent:[1,1],terms:[t.number(o)]}]}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 o=this.coefficient.numerator;o.isOne||r.push({exponent:[1,1],terms:[t.number(o)]});let s=this.coefficient.denominator;s.isOne||r.push({exponent:[-1,1],terms:[t.number(s)]})}else if(i==="numeric"){let o=this.coefficient.N();r.push({exponent:[1,1],terms:[t.number(o)]})}else r.push({exponent:[1,1],terms:[t.number(this.coefficient)]});for(let o of this.terms){let s=Bi(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(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 o=this.groupedByDegrees({mode:n.numericApproximation?"numeric":"expression"});if(o===null)return i.NaN;if(r){let s=Nr(i,o).neg();return this.coefficient=i._numericValue(-1),s}return Nr(i,o)}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 o=r.filter(u=>u.exponent[0]>=0),s=r.filter(u=>u.exponent[0]<0).map(u=>({exponent:ni(u.exponent),terms:u.terms})),a=Nr(n,o);return[t?a.neg():a,Nr(n,s)]}asRationalExpression(){let[n,i]=this.asNumeratorDenominator();return Ze(n,i)}};function du(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 o of e.terms){let s=n.terms.find(u=>o.term.isSame(u.term));if(!s)continue;let a=gr(o.exponent,s.exponent);if(Ne(a))r.push(o.term);else{let[u,l]=Qa(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[t,r.length===0?i.One:se(...r)]}function Nr(e,n){let i=n.map(({terms:t,exponent:r})=>{let o=ne(t,"Multiply"),s=o.length<=1?o[0]:e._fn("Multiply",[...o].sort(ae));return Ne(r)?s:s.pow(e.number(r))});return i=ne(i,"Multiply"),i.length===0?e.One:i.length===1?i[0]:e._fn("Multiply",i.sort(ae))}function _t(e){let n=e.engine,i=e.operator;if(Be(i))return n.function(i,e.ops.map(_t));if(i==="Divide")return e.ops[0].div(e.ops[1]);if(i==="Negate")return _t(e.ops[0]).neg();if(i==="Add"){let[t,r]=e.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 Z(...t).div(Z(...r))}return e}function $n(e){let n=e.operator;if(Be(n)){let i=ve.from(e.op1),t=ve.from(e.op2),[r,o]=du(i,t),s=r.sgn()===-1;return r.isOne||(i.div(r),t.div(r)),o.is(1)||(o.isPositive?(i.div(o),t.div(o)):o.isNegative&&(i.div(o.neg()),t.div(o.neg()),s=!s)),s&&([i,t]=[t,i]),e.engine.function(n,[i.asExpression(),t.asExpression()])}if(n==="Negate")return $n(e.ops[0]).neg();if(n==="Add"){let i=e.engine,t,r=[];for(let s of e.ops){let[a,u]=s.toNumericValue();t=t?t.gcd(a):a,a.isZero||r.push({coeff:a,term:u})}if(!t||t.isOne)return e;let o=r.map(({coeff:s,term:a})=>se(a,i.box(s.div(t))));return se(i.number(t),Z(...o))}return ve.from(_t(e)).asExpression()}function un(e){let n=e.engine;if(e.symbol==="Pi")return[n._numericValue(1),n._numericValue(0)];if(e.operator==="Negate"){let[i,t]=un(e.ops[0]);return[i.neg(),t]}if(e.operator==="Add"&&e.nops===2){let[i,t]=un(e.op1),[r,o]=un(e.op2);return[i.add(r),t.add(o)]}if(e.operator==="Multiply"&&e.nops===2){if(e.op1.isNumberLiteral){let[i,t]=un(e.op2),r=e.op1.numericValue;return[i.mul(r),t.mul(r)]}if(e.op2.isNumberLiteral){let[i,t]=un(e.op1),r=e.op2.numericValue;return[i.mul(r),t.mul(r)]}}if(e.operator==="Divide"&&e.op2.isNumberLiteral){let[i,t]=un(e.op1),r=e.op2.numericValue;return[i.div(r),t.div(r)]}if(e.operator==="Power"){let[i,t]=un(e.op1),r=e.op2.re;if(!isNaN(r))return[i.pow(r),t.pow(r)]}if(e.operator==="Sqrt"){let[i,t]=un(e.ops[0]);return[i.sqrt(),t.sqrt()]}if(e.operator==="Root"){let[i,t]=un(e.ops[0]),r=e.ops[1].re;if(!isNaN(r))return[i.root(r),t.root(r)]}return[n._numericValue(0),n._numericValue(e.numericValue??0)]}var Sd={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"]]},Vn=["Sqrt",2],Mi=["Sqrt",3],Pi=["Sqrt",5],Sr=["Sqrt",6],Td=[[[0,1],{Sin:0,Cos:1,Tan:0,Cot:"ComplexInfinity",Sec:1,Csc:"ComplexInfinity"}],[[1,12],{Sin:["Divide",["Subtract",Sr,Vn],4],Cos:["Divide",["Add",Sr,Vn],4],Tan:["Subtract",2,Mi],Cot:["Add",2,Mi],Sec:["Subtract",Sr,Vn],Csc:["Add",Sr,Vn]}],[[1,10],{Sin:["Divide",["Subtract",Pi,1],4],Cos:["Divide",["Sqrt",["Add",10,["Multiply",2,Pi]]],4],Tan:["Divide",["Sqrt",["Subtract",25,["Multiply",10,Pi]]],5],Cot:["Sqrt",["Add",5,["Multiply",2,Pi]]],Sec:["Divide",["Sqrt",["Subtract",50,["Multiply",10,Pi]]],5],Csc:["Add",1,Pi]}],[[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",Vn,2],Cos:["Divide",Vn,2],Tan:1,Cot:1,Sec:Vn,Csc:Vn}],[[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",Mi,2],Cos:"Half",Tan:Mi,Cot:["Divide",Mi,3],Sec:2,Csc:["Divide",["Multiply",2,Mi],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 He(e,n,i,t){let r=Zo(e)?.N();if(r!==void 0)return J(r,n,i,t)}function _d(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 We(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 It(e,n){if(!n)return;let i=n.engine;switch(e){case"Arccos":return We(J(n,Math.acos,t=>t.acos(),t=>t.acos()));case"Arccot":return We(J(n,t=>Math.atan2(1,t),t=>me.atan2(i._BIGNUM_ONE,t),t=>t.inverse().atan()));case"Arccsc":return We(J(n,t=>Math.asin(1/t),t=>i._BIGNUM_ONE.div(t).asin(),t=>t.inverse().asin()));case"Arcosh":return We(J(n,Math.acosh,t=>t.acosh(),t=>t.acosh()));case"Arcoth":return We(J(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"Arcsch":return We(J(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 We(J(n,t=>Math.acos(1/t),t=>i._BIGNUM_ONE.div(t).acos(),t=>t.inverse().acos()));case"Arcsin":return We(J(n,Math.asin,t=>t.asin(),t=>t.asin()));case"Arsech":return We(J(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"Arsinh":return We(J(n,Math.asinh,t=>t.asinh(),t=>t.asinh()));case"Arctan":return We(J(n,Math.atan,t=>t.atan(),t=>t.atan()));case"Artanh":return We(J(n,Math.atanh,t=>t.atanh(),t=>t.atanh()));case"Cos":return He(n,Math.cos,t=>t.toSignificantDigits(i.precision+4).cos().toSignificantDigits(i.precision),t=>t.cos());case"Cosh":return He(n,Math.cosh,t=>t.cosh(),t=>t.cosh());case"Cot":return He(n,t=>1/Math.tan(t),t=>i._BIGNUM_ONE.div(t.tan()),t=>t.tan().inverse());case"Coth":return He(n,t=>1/Math.tanh(t),t=>i._BIGNUM_ONE.div(t.tanh()),t=>t.tanh().inverse());case"Csc":return He(n,t=>1/Math.sin(t),t=>i._BIGNUM_ONE.div(t.sin()),t=>t.sin().inverse());case"Csch":return He(n,t=>1/Math.sinh(t),t=>i._BIGNUM_ONE.div(t.sinh()),t=>t.sinh().inverse());case"Sec":return He(n,t=>1/Math.cos(t),t=>i._BIGNUM_ONE.div(t.cos()),t=>t.cos().inverse());case"Sech":return He(n,t=>1/Math.cosh(t),t=>i._BIGNUM_ONE.div(t.cosh()),t=>t.cosh().inverse());case"Sin":return He(n,Math.sin,t=>t.toSignificantDigits(i.precision+4).sin().toSignificantDigits(i.precision),t=>t.sin());case"Sinh":return He(n,Math.sinh,t=>t.sinh(),t=>t.sinh());case"Tan":return He(n,r=>{let o=Math.tan(r);return o>1e6||o<-1e6?i.ComplexInfinity:o},r=>{let o=r.tan();return o.greaterThan(1e6)||o.lessThan(-1e6)?i.ComplexInfinity:o},r=>r.tan());case"Tanh":return He(n,Math.tanh,t=>t.tanh(),t=>t.tanh())}}function Id(e){return!!(e.startsWith("Ar")&&zo(e))}function zo(e){return{Sin:"Arcsin",Cos:"Arccos",Tan:"Arctan",Sec:"Arcsec",Csc:" Arccsc",Sinh:"Arsinh",Cosh:"Arcosh",Tanh:"Artanh",Sech:"Arcsech",Csch:"Arcsch",Arcosh:"Cosh",Arccos:"Cos",Arccsc:"Csc",Arcsch:"Csch",Arcsec:"Sec",Arcsin:"Sin",Arsinh:"Sinh",Arctan:"Tan",Artanh:"Tanh"}[e]}function Bt(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=zo(t);return r?e.symbol(r):void 0}function pu(e){return e!=="Cos"&&e!=="Sec"?-1:1}function Bd(e,n,i,t){if(!i)return;let r=i.N().re;if(Number.isNaN(r))return;let o=zo(n),s=e.cache("constructible-inverse-trigonometric-values-"+n,()=>{let u=[];for(let[[l,f],c]of t){let d=c[o];if(d===void 0)continue;let m=d.N().re;Number.isNaN(m)||u.push([[d,m],[l,f]])}return u},u=>{for(let[[l,f],[c,d]]of u)l.reset();return u}),a=0;r<0&&(a=pu(o)==-1?-1:1,r=-r,i=i.neg());for(let[[u,l],[f,c]]of s)if(e.chop(r-l)===0){let d=e.Pi.mul(f).div(c);return a==-1?d=d.neg():a==1&&(d=e.Pi.sub(d)),d.evaluate()}}function Uo(e,n){let[i,t]=kd(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 jo(e){return["Sin","Cos","Tan","Csc","Sec","Cot"].includes(typeof e=="string"?e:e.operator)}function kt(e,n){if(!n||!jo(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",()=>Td.map(([l,f])=>[l,Object.fromEntries(Object.entries(f).map(([c,d])=>[c,(i.parse(Fn(d))??i.box(d)).simplify()]))]),l=>{for(let[f,c]of l)for(let d of Object.values(c))d.reset();return l});if(Id(e))return Bd(i,e,n,r);let o=i.angularUnit;o!=="rad"&&(o==="deg"&&(t*=Math.PI/180),o==="grad"&&(t*=Math.PI/200),o==="turn"&&(t*=2*Math.PI));let s=pu(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]=Sd[e]?.[a]??[1,e];for(let[[l,f],c]of r){let d=c[e];if(d&&Math.abs(t-Math.PI*l/f)<=1e-12)return d.symbol==="ComplexInfinity"?d:s*u<0?d.neg():d}}function kd(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]}function Zo(e){if(!e)return e;let n=_d(e);if(!n)return;if(n.N().im!==0)return n;let i=n.engine,[t,r]=un(n);if(t.isZero)return i.number(r);let o=i._numericValue(t.bignumRe?t.bignumRe.mod(2):t.re%2);return i.number(r.add(i.Pi.mul(o).N().numericValue))}function mu(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 vr(e){if(mu(e))return ze(e.op1)??null;if(e.operator==="Divide"&&e.op1.is(1)&&mu(e.op2)){let n=e.op2.re;return Number.isInteger(n)?[1,n]:null}return null}function Oi(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 si(e,2);let t=ze(n);return t!==void 0&&t[0]===1?si(e,i.number(t[1])):i._fn("Power",[e,n])}function si(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&&g(e.type,"rational")&&e.re<P){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 de(e,n,{numericApproximation:i}){if(!e.isCanonical)return e.canonical.pow(n);if(i&&e.isNumberLiteral){if(typeof n=="number")return J(e,o=>Math.pow(o,n),o=>o.pow(n),o=>o.pow(n))??de(e,n,{numericApproximation:!1});if(n.isNumberLiteral)return gn(e,n,(o,s)=>Math.pow(o,s),(o,s)=>o.pow(s),(o,s)=>o.pow(s))??de(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==="imaginary")return t.NaN;if(n.type==="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 de(e,n.op1,{numericApproximation:i}).inv();if(e.symbol==="ComplexInfinity")return t.NaN;if(e.symbol==="ExponentialE"){let o=Ti(n);if(o!==void 0){if(o=Zo(o),o!==void 0)return t.function("Cos",[o]).add(t.function("Sin",[o]).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[o,s]=e.ops;return de(o,s.mul(n),{numericApproximation:i})}if(e.operator==="Divide"){let[o,s]=e.ops;return de(o,n,{numericApproximation:i}).div(de(s,n,{numericApproximation:i}))}if(e.operator==="Negate"&&r!==void 0)return r%2===0?de(e.op1,n,{numericApproximation:i}):de(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):de(e.op1,n,{numericApproximation:i}).sqrt();if(e.operator==="Exp")return de(t.E,e.op1.mul(n),{numericApproximation:i});if(e.operator==="Multiply"){let o=e.ops.map(s=>de(s,n,{numericApproximation:i}));return t._fn("Multiply",o)}if(typeof n!="number"&&n.isNumberLiteral){let o=ze(n);if(o!==void 0&&o[0]===1)return Tr(e,t.number(o[1]),{numericApproximation:i})}if(e.operator==="Root"){let[o,s]=e.ops;return de(o,t.box(n).div(s),{numericApproximation:i})}if(e.isNumberLiteral&&Number.isInteger(r)){let o=e.numericValue;if(typeof o=="number"){if(Number.isInteger(o))return J(e,s=>Math.pow(s,r),s=>s.pow(r),s=>s.pow(r))??t._fn("Power",[e,t.box(n)])}else if(o.isExact){let s=o.asExact.pow(r);if(s.isExact)return t.number(s)}}return t._fn("Power",[e,t.box(n)])}function Tr(e,n,{numericApproximation:i}){if(i&&e.isNumberLiteral&&n.isNumberLiteral)return gn(e,n,(t,r)=>Math.pow(t,1/r),(t,r)=>t.pow(r.pow(-1)),(t,r)=>t.pow(typeof r=="number"?1/r:r.inverse()))??Tr(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 Gn=1e5,wd={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,Arsinh:!0,Arcosh:!0,Artanh:!0,Arcoth:!0,Arcsch:!0,Arsech:!0,Arcsech:!0};function Dd(e){return!e||typeof e!="string"?!1:e in wd}function vt(e,n){let i=ke(e),t=ke(n);if(i!==t)return t-i;let r=Ue(e),o=Ue(n);if(r!==o)return o-r;let s=Lo(e),a=Lo(n);if(s||a){if(!s)return 1;if(!a||s<a)return-1;if(s>a)return 1}return ae(e,n)}function _r(e,n){let i=o=>o.symbol!==null?1:o.isNumberLiteral?3:2,t=i(e),r=i(n);if(t<r)return-1;if(r<t)return 1;if(t===1)return e.symbol===n.symbol?0:e.symbol>n.symbol?1:-1;if(t===3){let o=e.numericValue,s=n.numericValue,a=typeof o=="number"?o:o.re,u=typeof s=="number"?s:s.re;return a-u}return ae(e,n)}var gu=["integer","rational","radical","real","complex","constant","symbol","multiply","divide","add","trig","fn","power","string","other"];function hu(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_imaginary"||n==="finite_number"?"complex":n==="non_finite_number"?"constant":n==="number"?"real":"other"}return e.symbol==="ImaginaryUnit"?"complex":vr(e)?"radical":e.symbol&&e.isConstant?"constant":e.symbol?"symbol":Dd(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 ae(e,n){if(e===n)return 0;let i=hu(e),t=hu(n);if(i!==t)return gu.indexOf(i)-gu.indexOf(t);if(i==="complex"){let[r,o]=xu(e),[s,a]=xu(n);return o!==a?o-a:r-s}if(i==="integer"||i==="rational"||i==="real"){let r=e.numericValue,o=n.numericValue;r===null&&e.operator==="Rational"&&(r=e.op1.re/e.op2.re),o===null&&n.operator==="Rational"&&(o=n.op1.re/n.op2.re);let s=typeof r=="number"?r:r.re,a=typeof o=="number"?o:o.re;return s-a}if(i==="radical")return ae(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,o=n.ops;if(r.length!==o.length)return o.length-r.length;for(let s=0;s<r.length;s++){let a=ae(r[s],o[s]);if(a!==0)return a}return 0}if(i==="power"){let r=ke(e),o=ke(n);if(r!==o)return o-r;let s=Ue(e),a=Ue(n);return s!==a?s-a:ae(e.op1,n.op1)}if(i==="multiply"){let r=ke(e),o=ke(n);if(r!==o)return o-r;let s=Ue(e),a=Ue(n);if(s!==a)return s-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=ae(u[f],l[f]);if(c!==0)return c}return 0}if(i==="divide"){let r=ke(e.op1),o=ke(n.op1);if(r!==o)return o-r;let s=Ue(e.op1),a=Ue(n.op1);if(s!==a)return s-a;let u=ae(e.op1,n.op1);return u!==0?u:ae(e.op2,n.op2)}if(i==="fn"||i==="trig"){if(e.operator==n.operator&&e.nops===1&&n.nops===1)return ae(e.op1,n.op1);let r=e.functionDefinition?.complexity??Gn,o=n.functionDefinition?.complexity??Gn;return r===o?e.operator===n.operator?Ho(e)-Ho(n):e.operator<n.operator?1:-1:r-o}return i==="string"?e.string===n.string?0:n.string<e.string?-1:1:(e.complexity??Gn)-(n.complexity??Gn)}function Wo(e,{recursive:n=!1}){if(e.isCanonical||!e.ops)return e;let i=e.ops;return n&&(i=i.map(t=>Wo(t,{recursive:n}))),i=wt(e.operator,i),e.engine._fn(e.operator,i,{canonical:!1})}function wt(e,n){if(n.length===0)return n;let i=n[0].engine;if(e==="Add")return[...n].sort(vt);if(e==="Multiply")return[...n].sort(ae);let t=i.lookupFunction(e);return!t||!t.commutative?n:t.commutativeOrder?[...n].sort(t.commutativeOrder):[...n].sort(ae)}function Ho(e){return e.ops?1+[...e.ops].reduce((n,i)=>n+Ho(i),0):1}function xu(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]}var Ir=7,yu=[.9999999999998099,676.5203681218851,-1259.1392167224028,771.3234287776531,-176.6150291621406,12.507343278686905,-.13857109526572012,9984369578019572e-21,15056327351493116e-23];function Dt(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 Li(e){if(e<.5)return Math.PI/(Math.sin(Math.PI*e)*Li(1-e));if(e>100)return Math.exp(Dt(e));e-=1;let n=yu[0];for(let t=1;t<Ir+2;t++)n+=yu[t]/(e+t);let i=e+Ir+.5;return Math.sqrt(2*Math.PI)*Math.pow(i,e+.5)*Math.exp(-i)*n}function bu(e){let n=Math.PI,i=n*n,t=i*n,r=e*e,o=e*r,s=o*r,a=s*r;return Math.sqrt(n)/2*(e+n/12*o+7*i/480*s+127*t/40320*a+4369*i*i/5806080*a*r+34807*t*i/182476800*a*r*r)}function Jo(e){let n=.254829592,i=-.284496736,t=1.421413741,r=-1.453152027,o=1.061405429,s=.3275911,a=e<0?-1:1;e=Math.abs(e);let u=1/(1+s*e),l=((((o*u+r)*u+t)*u+i)*u+n)*u;return a*(1-l*Math.exp(-e*e))}function Yo(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(s=>e.bignum(s))),t=i[0];for(let s=i.length-1;s>0;--s)t=t.add(i[s].div(n.add(s)));let r=e.cache("gamma-g-ln",()=>e.bignum(607).div(128)),o=n.add(r).add(e._BIGNUM_HALF);return e._BIGNUM_NEGATIVE_ONE.acos().mul(e._BIGNUM_TWO).log().mul(e._BIGNUM_HALF).add(o.log().mul(n.add(e._BIGNUM_HALF)).minus(o).add(t.log()).minus(n.log()))}function Qo(e,n){if(n.lessThan(e._BIGNUM_HALF)){let o=e._BIGNUM_NEGATIVE_ONE.acos();return o.div(o.mul(n).sin().mul(Qo(e,e._BIGNUM_ONE.sub(n))))}if(n.greaterThan(100))return Yo(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(o=>e.bignum(o))),t=i[0];for(let o=1;o<Ir+2;o++)t=t.add(i[o].div(n.add(o)));let r=n.add(Ir).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))))}function Rt(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)=>Rt(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 Eu(e,n){if(e=e.N(),typeof n!="number"&&(n=n.N()),typeof n!="number"&&typeof n.numericValue=="number"&&(n=n.numericValue),typeof n=="number"){if(e.string||e.tensor||!e.isValid)return!1;if(!e.isNumberLiteral)return;let t=e.numericValue;return typeof t=="number"?t===n:t.eq(n)}if(e.ops||n.ops){let t=e.functionDefinition?.eq?.(e,n);if(t!==void 0)return t;let r=e.sub(n).N();if(!r.isNumberLiteral)return!1;if(typeof r.numericValue=="number")return r.numericValue===0;let o=e.engine.tolerance;return r.numericValue.isZeroWithTolerance(o)}if(e.symbol){let t=e.symbolDefinition?.eq?.(n);return t!==void 0?t:e.symbol===n.symbol}let i=e.engine;return i.ask(i.box(["Equal",e,n])).length>0?!0:i.ask(i.box(["NotEqual",e,n])).length>0?!1:Rt(e,n)}function Fi(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"?r===n?"=":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 Br(e,n=[]){let i=n.map((s,a)=>!s.symbol||s.symbol==="Nothing"?`_${a+1}`:s.symbol),t=e.unknowns;t.includes("_")&&(e=e.subs({_:"_1"}),t=e.unknowns);let r=i.length;for(let s of t)if(s.startsWith("_")){let a=Number(s.slice(1));a<=i.length&&(e=e.subs({[s]:i[a-1]})),a>r&&(r=a)}for(let s=i.length;s<r;s++)i.push(`_${s+1}`);let o=r;for(;o>0&&i[o-1]===`_${o}`;){t.includes(`_${o}`)||i.pop();o--}return[e,...i]}function Xo(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=Br(e.op1,e.ops.slice(1)):i=Br(e);let[t,...r]=i;n.pushScope();for(let a of r)n.declare(a,{inferred:!0,type:void 0});let o=t.canonical;o.bind(),n.popScope();let s=o.scope;return s?r.length===0?()=>{let a=n.swapScope(s);n.resetContext();let u=o.N()??o.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,b)=>n.symbol(`_${b+1}`)),d=qi(n.function("Function",[t,...r]),[...a,...c]).evaluate();return n.function("Function",[d])}a=a.map(c=>c.evaluate());let u=n.swapScope(s);n.resetContext();let l=0;for(let c of r)n.assign(c,a[l++]);let f=o.evaluate();return n.swapScope(u),f.isValid?f:void 0}:()=>o.N()??o.evaluate()}function qi(e,n){let i=Xo(e)?.(n);return i||e.engine.function("Apply",[e,...n])}function $e(e){return Xo(e)??(n=>e.engine.function("Apply",[e.N(),...n]).N())}function Ko(e){let n=e.engine,i=Xo(e);return i?t=>i([n.number(t)])?.value??NaN:t=>n.function("Apply",[e.evaluate(),n.number(t)]).value}function es(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 $i(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 o=n.N(),s=i.N();return!o.isNumberLiteral||!s.isNumberLiteral?void 0:{start:o.re,openStart:t,end:s.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 At=50,Iu={List:{complexity:8200,signature:"(...any) -> list",type:e=>k(`list<${Pe(...e.map(n=>n.type))}>`),canonical:Rd,eq:_u,collection:ns()},Set:{complexity:8200,signature:"(...any) -> set",type:e=>k(`set<${Pe(...e.map(n=>n.type))}>`),canonical:Ad,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:{...ns(),at:(e,n)=>{},indexOf:(e,n)=>{}}},Dictionary:{complexity:8200,signature:"(...any) -> map",type:e=>k(`tuple<${Object.entries(kr(e)).map(([n,i])=>n?`${n}: ${i.type.toString()}`:i.type.toString()).join(", ")}>`),canonical:(e,{engine:n})=>{let i=kr(e);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=kr(e.ops),t=kr(n.ops);return Object.entries(i).every(([r,o])=>{let s=t[r];return s&&o.isSame(s)})},collection:{...ns(),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),[o,s,a]=Je(n);return i===o&&t===s&&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!=="integer")return!1;let i=n.re,[t,r,o]=Je(e);return o===0?!1:o>0?i>=t&&i<=r:i<=t&&i>=r},iterator:(e,n,i)=>{let[t,r,o]=Je(e),s=n??1,a=o===0?0:Math.floor((r-t)/o)+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+o*(s++-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,o,s]=Je(e),[a,u,l]=Je(n);return r>=a&&o<=u&&s%l===0}if(!pr(n))return!1;let i=n.baseDefinition;if(!i?.collection?.iterator||!i?.collection?.at)return!1;let t=1;for(let r of q(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,hold:!0,signature:"(expression, expression) -> set<real>",eq:(e,n)=>{let i=$i(e),t=$i(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=$i(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=$i(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=$i(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=At),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=At),!(!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,o;isFinite(r)?o=Math.max(0,isFinite(e.op3.re)?e.op3.re:At):(r=t,t=1,o=At);let s=n??1;return i=Math.min(i??o,o),i<=0?{next:()=>({value:void 0,done:!0})}:{next:()=>i>0?(i--,{value:e.engine.number(t+(r-t)*(s++-1)/o),done:!1}):{value:void 0,done:!0}}},contains:(e,n)=>{if(!g(n.type,"finite_real"))return!1;let i=n.re,t=e.op1.re,r=e.op2.re;if(i<t||i>r)return!1;let o=e.op3.re;if(isFinite(o)||(o=At),o===0)return!1;let s=(r-t)/o;return(i-t)%s===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:_u,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, any>",type:([e,n])=>k(`tuple<string, ${n.type}>`),canonical:(e,{engine:n})=>{let[i,t]=mr(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(...Le(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(...Le(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(...Le(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(Gi(e)),sgn:([e])=>Gi(e)===0?"zero":"positive"},IsEmpty:{complexity:8200,signature:"any -> boolean",evaluate:([e],{engine:n})=>Gi(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) -> any",evaluate:(e,{engine:n})=>{let i=e[0],t=1;for(;e[t];){let o=i.baseDefinition?.collection?.at;if(!o)return;let s=e[t].string;if(s!==null)i=o(i,s)??n.Nothing;else{let a=e[t].re;if(!Number.isInteger(a))return;i=o(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==="string"?"string":k(`list<${Wn(e[0].type)}>`),evaluate:(e,{engine:n})=>{if(e.length<2)return;let i=e[0].string;if(i!==null){let r=e.slice(1).map(o=>Vi(o,i.length));return n.string(Nu(i,r))}let t=Gi(e[0]);return Ct(e[0],e.slice(1).map(r=>Vi(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=vu(e.slice(1).map(l=>Vi(l,i.length)));return n.string(i.split("").filter((l,f)=>!u.includes(f+1)).join(""))}let t=e[0].baseDefinition,r=Gi(e[0]);if(r===0)return n.Nothing;let o=t?.collection?.at;if(!o)return;let s=vu(e.slice(1).map(u=>Vi(u,r))),a=[];for(let u=1;u<=r;u++)if(!s.includes(u)){let l=o(e[0],u);l&&a.push(l)}return n.function("List",a)}},First:{complexity:8200,signature:"(value: collection|string) -> any",evaluate:([e],{engine:n})=>is(e,1)??n.Nothing},Second:{complexity:8200,signature:"(value: collection|string) -> any",evaluate:([e],{engine:n})=>is(e,2)??n.Nothing},Last:{complexity:8200,signature:"(value: collection|string) -> any",evaluate:([e],{engine:n})=>is(e,-1)??n.Nothing},Rest:{complexity:8200,signature:"(value: collection|string) -> list",evaluate:e=>Ct(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==="string"?"string":k(`list<${Wn(e[0].type)}>`),evaluate:(e,{engine:n})=>{if(e.length<3)return;let i=e[0].string;if(i!==null){let[s,a]=e.slice(1).map(u=>Vi(u,i.length));return n.string(Nu(i,[s,a]))}let t=Gi(e[0]),[r,o]=e.slice(1).map(s=>Vi(s,t));return Ct(e[0],[r,o])}},Most:{complexity:8200,signature:"(value: collection|string) -> list",evaluate:e=>Ct(e[0],[[1,-2,1]])},Reverse:{complexity:8200,signature:"(value: collection|string) -> collection",type:e=>e[0].type,evaluate:([e])=>Ct(e,[[-1,2,1]])},Ordering:{complexity:8200,hold:!0,signature:"(value: collection, f: function?) -> list<integer>",evaluate:e=>{}},Sort:{complexity:8200,hold:!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,hold:!0,signature:"(collection, function) -> collection",evaluate:(e,{engine:n})=>{let[i,t]=Cd(e);if(!t)return;let r=[];for(let a of i)r.push(t([a])??n.Nothing);let o=e[0].operator,s={List:"List",Set:"Set",Range:"List",Linspace:"List",Single:"List",Pair:"List",Triple:"List",Tuple:"List",String:"String"}[o]??"List";return n.function(s,r)}},Filter:{complexity:8200,hold:!0,signature:"(collection, function) -> collection",type:e=>e[0].type,evaluate:(e,{engine:n})=>{let i=$e(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(!K(e[0])||!e[1])return;let r=[];for(let a of q(t))i([a])?.symbol==="True"&&r.push(a);let o=t.operator,s={List:"List",Set:"Set",Range:"List",Linspace:"List",Single:"List",Pair:"List",Triple:"List",Tuple:"List"}[o]??"List";return n.function(s,r)}},Reduce:{complexity:8200,hold:!0,signature:"(collection, function, initial:value) -> collection",evaluate:e=>{}},Tabulate:{complexity:8200,hold:!0,signature:"(function, integer, integer?) -> collection",evaluate:(e,{engine:n})=>{let i=$e(e[0]);if(!i)return;if(e.length===1)return n.function("List",[]);let t=e.slice(1).map(o=>G(o));if(t.some(o=>o===null||o<=0))return;if(t.length===1)return n.function("List",Array.from({length:t[0]??0},(o,s)=>i([n.number(s+1)])??n.Nothing));let r=(o,s,a=0)=>{if(a===o.length){let l=s.map(f=>n.number(f));return i(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 n.box(r(t,Array(t.length).fill(0)))}},Tally:{complexity:8200,signature:"(collection) -> tuple<list, list<integer>>",type:e=>k(`tuple<list<${Wn(e[0].type)}>, list<integer>>`),evaluate:(e,{engine:n})=>{if(!pr(e[0]))return;let[i,t]=Su(e[0]);return n.tuple(n.function("List",i),n.function("List",t))}},Unique:{complexity:8200,signature:"(collection) -> list",type:e=>k(`list<${Wn(e[0].type)}>`),evaluate:(e,{engine:n})=>{if(!pr(e[0]))return;let[i,t]=Su(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:Tu,evaluate:(e,{engine:n})=>{let i=Tu(e);if(g(i,"map")){let t={};for(let r of e)if(t=wu(t,r),!t)return;return n.function("Dictionary",Object.entries(t).map(([r,o])=>n.function("KeyValuePair",[n.string(r),o])))}if(g(i,"set")){let t=[];for(let r of e)if(t=Du(t,r),!t)return;return n.function("Set",t)}if(g(i,"list")){let t=[];for(let r of e)if(t=Ru(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 Bu(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 Vi(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,o,s]=Je(e);return(r<0||o<0)&&n===void 0?[0,0,0]:(r<0&&(r=n+r+1),o<0&&(o=n+o+1),s=Math.abs(Math.round(s)),s===0?[0,0,0]:(r>o&&(s=-s),[r,o,s]))}function Ct(e,n){let i=e.engine,r=e.baseDefinition?.collection?.at;if(!r)return i.Nothing;let o=[];for(let s of n){let[a,u,l]=s;if(l!==0)if(l<0)for(let f=a;f>=u;f+=l){let c=r(e,f);c&&o.push(c)}else for(let f=a;f<=u;f+=l){let c=r(e,f);c&&o.push(c)}}return i.function("List",o)}function Nu(e,n){let i="";for(let t of n){let[r,o,s]=t;if(s===1)i+=e.slice(r-1,o);else if(s<0)for(let a=r;a>=o;a+=s)i+=e[a-1];else for(let a=r;a<=o;a+=s)i+=e[a-1]}return i}function vu(e){let n=[];for(let i of e){let[t,r,o]=i;if(o!==0)if(o<0)for(let s=t;s>=r;s+=o)n.push(s);else for(let s=t;s<=r;s+=o)n.push(s)}return n}function Rd(e,{engine:n}){let i=e[0];if(e.length===1&&i.operator==="Matrix"){let[t,r,o]=i.ops;if(!r||r.string==="..")return o?n._fn("Matrix",[t,n.string("[]"),o]):n._fn("Matrix",[t,r])}return e=e.map(t=>t.operator==="Delimiter"?t.op1.operator==="Sequence"?n._fn("List",Oe(n,t.op1.ops)):n._fn("List",[t.op1?.canonical??n.Nothing]):t.canonical),n._fn("List",e)}function Ad(e,{engine:n}){let i=[],t=r=>i.some(o=>o.isSame(r));for(let r of e)t(r)||i.push(r);return n._fn("Set",i)}function Cd(e){if(e.length!==2)return[[],void 0];let n=$e(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(o=>n([r.string(o)])?.string??"").join(""))}]:!K(e[0])||!e[1]?[[],void 0]:[q(e[0]),n]:[[],void 0]}function Su(e){let n=[],i=[],t=r=>{for(let o=0;o<n.length;o++)if(n[o].isSame(r))return o;return-1};for(let r of q(e)){let o=t(r);o>=0?i[o]++:(n.push(r),i.push(1))}return[n,i]}function ku(e,n,i){let t=i;for(let r of q(e)){let o=n(t,r);if(o===null)return;t=o}return t}function Tu(e){return e.some(n=>n.type==="map")?"map":e.some(n=>n.type==="set")?"set":"list"}function wu(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=wu(e,i);if(!t)return;e=t}return e}}function Du(e,n){if(n.operator==="Set"||n.operator==="List"){for(let t of n.ops)if(e=Du(e,t),!e)return}return(t=>e.some(r=>r.isSame(t)))(n)||e.push(n),e}function Ru(e,n){if(n.operator==="List"||n.operator==="Set"){for(let i of n.ops)if(e=Ru(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 q(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 ns(){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:Pe(...e.ops.map(n=>n.type))}}function kr(e){let n={},i=1;for(let t of e){if(t.operator==="KeyValuePair"||t.operator==="Tuple"||t.operator==="Pair"){let[r,o]=t.ops;if(r.symbol==="Nothing")continue;n[r?.string??r?.toString()??i.toString()]=o??t.engine.Nothing}else n[i.toString()]=t;i+=1}return n}function Gi(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 is(e,n){let i=e.baseDefinition;if(i?.collection?.at)return i.collection.at(e,n)}function _u(e,n){return e.operator!==n.operator||e.nops!==n.nops?!1:e.ops.every((i,t)=>i.isSame(n.ops[t]))}function ts(e,n){return Array.from({length:n-e+1},(i,t)=>e+t)}function zi(e){e?.operator;let n=1,i=n+lt,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+lt),{index:t,lower:n,upper:i,isFinite:r}}function Pd(e){return e.map(n=>zi(n))}function Od(e){e.length>0;let{index:n,lower:i,upper:t,isFinite:r}=e[0];r||(t=i+lt);let o=ts(i,t).map(s=>[s]);if(e.length===1)return o;for(let s=1;s<e.length;s++){let{index:a,lower:u,upper:l,isFinite:f}=e[s];f||(l=u+lt),o=Ld(o.map(c=>c[0]),ts(u,l))}return o}function Ld(e,n){return e.flatMap(i=>n.map(t=>[i,t]))}function Fd(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 rs(e,n,i){let t=n.engine;t.pushScope(),n??(n=t.error("missing"));let r=i.map(s=>Fd(s)).filter(s=>s!==void 0),o=t._fn(e,[n.canonical,...r]);return t.popScope(),o}function Ui(e,n,i,t){if(e.isCollection)return ku(e,i,t);if(n.length===0)return i(t,e)??void 0;let r=e.engine,o=r.swapScope(e.scope),s=Pd(n),a=Od(s),u=t;for(let l of a)if(s.forEach((f,c)=>r.assign(f.index,l[c])),u=i(u,e)??void 0,u===void 0)break;for(let l of s)r.assign(l.index,void 0);return r.swapScope(o),u??void 0}function os(e){if(e!==void 0)return isNaN(e)?"unsigned":e>0?"positive":e<0?"negative":"zero"}function wr(e){return e==="positive"?"negative":e==="non-negative"?"non-positive":e==="negative"?"positive":e==="non-positive"?"non-negative":e}function ji(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 Cu=[{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])=>qd(e)},Add:{wikidata:"Q32043",associative:!0,commutative:!0,commutativeOrder:vt,threadable:!0,idempotent:!0,complexity:1300,hold:!0,signature:"(number, ...number) -> number",type:ou,sgn:e=>{if(e.some(n=>n.isReal===!1||n.isNaN))return"unsigned";if(e.every(n=>n.is(0)))return"zero";if(e.every(n=>n.isNonNegative))return e.every(n=>n.isPositive)?"positive":"non-negative";if(e.every(n=>n.isNonPositive))return e.every(n=>n.isNegative)?"negative":"non-positive";if(e.every(n=>n.isReal))return"real"},evaluate:(e,{numericApproximation:n})=>n?su(...e):Z(...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.isNegative&&e.isGreater(-1)||e.is(0))return"zero";if(e.isNonPositive)return"non-positive";if(e.isReal==!1&&e.isNumberLiteral)return e.im>0||e.im<=-1?"unsigned":os(e.re)},evaluate:([e])=>J(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 J(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.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 wr(n.sgn);if(n.is(0)&&i.isFinite)return"zero";if(!n.is(0)&&!i.is(0))return"real-not-zero"},canonical:(e,{engine:n})=>{let i=n;e=Fe(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 o of r)t=Ze(t,o);return t},evaluate:([e,n])=>e.div(n)},Exp:{wikidata:"Q168698",threadable:!0,complexity:3500,signature:"number -> number",canonical:(e,{engine:n})=>(e=Fe(n,e,1),n.function("Power",[n.E,...e]))},Factorial:{description:"Factorial Function",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.im,e.re).add(1));let i=e.re;if(!isNaN(i))return i<0||!Number.isInteger(i)?n.number(Li(1+i)):sn(n)?n.number(qo(n,n.bignum(i))):n.number(lr(i))}},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 sn(t)?t.number(tu(t,t.bignum(i))):t.number(Va(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.isPositive&&e.isLess(1)||e.is(0))return"zero";if(e.isNonNegative)return"non-negative";if(e.isReal==!1&&e.isNumberLiteral)return e.im<0||e.im>=1?"unsigned":os(e.re)},evaluate:([e])=>J(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?J(e,t=>Li(t),t=>Qo(i,t),t=>t):void 0},GammaLn:{complexity:8e3,threadable:!0,signature:"number -> number",evaluate:(e,{numericApproximation:n,engine:i})=>n?J(e[0],t=>Dt(t),t=>Yo(i,t),t=>t):void 0},Ln:{description:"Natural Logarithm",wikidata:"Q204037",complexity:4e3,threadable:!0,signature:"(number, base: number?) -> number",sgn:([e])=>ji(e),evaluate:([e],{numericApproximation:n,engine:i})=>n?J(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 ji(e);if(n.is(1)||n.isReal==!1)return"unsigned";if(n.isGreater(1))return ji(e);if(n.isLess(1))return wr(ji(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?J(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):Q.log10(r),r=>r.isZero()?NaN:r.log().div(Math.LN10)):gn(e[0],e[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,threadable:!0,signature:"(number, base: number?) -> number",sgn:([e])=>ji(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])=>ji(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,hold:!0,signature:"(number, ...number) -> number",type:e=>e.length===0?"finite_integer":e.length===1?e[0].type: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)&&n.isReal))return"real-not-zero";if(e.every(n=>!n.is(0)))return"not-zero";if(e.every(n=>n.isReal))return"real"}}},evaluate:(e,{numericApproximation:n})=>n?cu(...e):se(...e.map(i=>i.evaluate()))},Negate:{description:"Additive Inverse",wikidata:"Q715358",complexity:2e3,threadable:!0,signature:"number -> number",type:([e])=>e.type,sgn:([e])=>wr(e.sgn),canonical:(e,{engine:n})=>(e=Fe(n,e),e.length===0?n.error("missing"):e[0].neg()),evaluate:([e])=>e.neg()},PlusMinus:{description:"Plus or Minus",wikidata:"Q120812",complexity:1200,involution:!0,signature:"value -> tuple",type:([e])=>k(`tuple(${e.type.toString()}, ${e.type.toString()})`),evaluate:([e],{engine:n})=>n.tuple(e.abs(),e.abs().neg())},Power:{wikidata:"Q33456",threadable:!0,complexity:3500,signature:"(number, number) -> number",type:([e,n])=>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=Fe(n,e,2),e.length!==2)return n._fn("Power",e);let[i,t]=e;return Oi(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==="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})=>de(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=ne(e),e.length===0?i._fn("Rational",[i.error("missing")]):e.length===1?i._fn("Rational",[_n(i,e[0],"real")]):(e=mr(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 s=e[0].N();return s.numericValue===null||s.im!==0?void 0:t.number(Xa(s.re))}if(n)return gn(e[0],e[1],(s,a)=>s/a,(s,a)=>s.div(a),(s,a)=>s.div(a));let[r,o]=[G(e[0]),G(e[1])];if(r!==null&&o!==null)return t.number([r,o])}},Root:{complexity:3200,threadable:!0,signature:"(number, number) -> number",type:([e,n])=>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=Fe(n,e,2);let[i,t]=e;return si(i,t)},evaluate:([e,n],{numericApproximation:i})=>Tr(e,n,{numericApproximation:i})},Round:{complexity:1250,threadable:!0,signature:"number -> integer",type:([e])=>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":os(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])=>J(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.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==="imaginary"||e.type==="complex")return"negative";if(e.isReal==!1||e.isNaN)return"unsigned"},canonical:(e,{engine:n})=>{let i=n;return e=ne(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=Fe(n,e),e.length===0)return n.error("missing");let i=e[0],t=e.slice(1);return qe(n,[i,...t.map(r=>r.neg())])}}},{ImaginaryUnit:{type:"finite_imaginary",constant:!0,holdUntil:"never",wikidata:"Q193796",value:e=>e.I},i:{type:"finite_imaginary",constant:!0,holdUntil:"never",value:e=>e.I},ExponentialE:{type:"finite_real",wikidata:"Q82435",constant:!0,holdUntil:"N",value:e=>e.number(sn(e)?e._BIGNUM_ONE.exp():Math.exp(1))},e:{type:"finite_real",constant:!0,holdUntil:"never",value:"ExponentialE"},ComplexInfinity:{type:"non_finite_number",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:"non_finite_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
|
|
12
12
|
21342664981196217630197762547694793565129261151062
|
|
13
13
|
48574422619196199579035898803325859059431594737481
|
|
14
14
|
15840699533202877331946051903872747816408786590902
|
|
@@ -38,39 +38,39 @@ Invalid type
|
|
|
38
38
|
792726801324310104765059637039473949576389065729679296010090151251959509222435
|
|
39
39
|
014093498712282479497471956469763185066761290638110518241974448678363808617494
|
|
40
40
|
551698927923018773910729457815543160050021828440960537724342032854783670151773
|
|
41
|
-
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=wr(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 o=bt(r);if(o!==null)return o%BigInt(2)!==BigInt(0);let s=r.re;return Number.isInteger(s)?s%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=>Ru(e,"GCD")},LCM:{description:"Least Common Multiple",complexity:1200,threadable:!1,signature:"(...any) -> integer",sgn:()=>"positive",evaluate:e=>Ru(e,"LCM")},Numerator:{description:"Numerator of an expression",complexity:1200,threadable:!0,hold:!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",Pe(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,hold:!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=Ge(i);return t!==void 0?n.number(t[1]):n._fn("Denominator",Pe(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,hold:!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=Ge(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"real-not-zero"}},evaluate:(e,{engine:n})=>kr(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";if(e.some(n=>!n.is(0)))return"real-not-zero"}},evaluate:(e,{engine:n})=>kr(n,e,"Min")},Supremum:{description:"Like Max, but defined for open sets",complexity:1200,threadable:!1,signature:"(...value) -> number | list",evaluate:(e,{engine:n})=>kr(n,e,"Supremum")},Infimum:{description:"Like Min, but defined for open sets",complexity:1200,threadable:!1,signature:"(...value) -> number | list",evaluate:(e,{engine:n})=>kr(n,e,"Infimum")},Product:{description:"`Product(f, a, b)` computes the product of `f` from `a` to `b`",wikidata:"Q901718",complexity:1e3,threadable:!1,hold:!0,signature:"(collection|function, ...(tuple<symbol>|tuple<symbol, integer>|tuple<symbol, integer, integer>)) -> number",canonical:([e,...n])=>is("Product",e,n),sgn:e=>{let n=e[0]?.sgn;if(n===void 0)return;if(["positive","zero"].includes(n))return n;let i=Ui(e[0],e.slice(1),(f,c)=>f+1,0);if(n==="real-not-zero"||n==="negative")return i%2===0?"positive":n;if(e[0]?.type==="imaginary")return i%2===0?"negative":"unsigned";if(n==="unsigned")return;let t=!1,r=!1,o=!1,s=!1,a="positive",u=!1,l=Ui(e[0],e.slice(1),(f,c)=>(c.isInfinity?(s=!0,o=!0):c.isInfinity!==!1&&(o=!0),c.is(0)&&(t=!0,r=!0),c.is(0)&&(r=!0),c.isNonPositive?a=Br(a):c.isNonNegative!==!0&&(u=!0),f+1),0);if(s&&t)return"unsigned";if(!(u||o&&r))return r?a==="positive"?"non-negative":"non-positive":a},evaluate:(e,n)=>{let i=(r,o)=>(o=o.evaluate(n),o.isNumberLiteral?r.mul(o.numericValue):null),t=Ui(e[0],e.slice(1),i,n.engine._numericValue(1));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,hold:!0,signature:"(collection|function, ...(tuple<symbol>|tuple<symbol, integer>|tuple<symbol, integer, integer>)) -> number",sgn:e=>{let n=e[0]?.sgn;if(n===void 0)return;if(["positive","negative","zero"].includes(n))return n;let i=[],t=Ui(e[0],e.slice(1),(r,o)=>(i.push(o.sgn),r+1),0);if(!i.some(r=>[void 0,"unsigned"].includes(r))){if(i.every(r=>r==="zero"))return"zero";if(i.every(r=>r==="positive"||r==="non-negative"))return i.some(r=>r==="positive")?"positive":"non-negative";if(i.every(r=>r==="negative"||r==="non-negative"))return i.some(r=>r==="negative")?"negative":"non-positive";if(i.every(r=>r==="real"||r==="real-not-zero"))return"real"}},canonical:([e,...n])=>is("Sum",e,n),evaluate:(e,{engine:n})=>n.number(Ui(e[0],e.slice(1),(i,t)=>(t=t.evaluate(),t.isNumberLiteral?i.add(t.numericValue):null),n._numericValue(0))??NaN)}},{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 o=r.re;if(r.type!=="integer"||!Number.isFinite(o)||o<2||o>36)return t.error(["unexpected-base",o.toString()],r.toString());let[s,a]=Ai(i,r.string??r.symbol??10);return a?t.error(["unexpected-digit",a[0]],a):t.number(s)}},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.type!=="integer")return i.typeError("integer",t.type,t);let r=t.re;if(!Number.isFinite(r))return i.typeError("integer",t.type,t);let o=e[1]??i.Nothing;if(o.symbol==="Nothing")return t.bignumRe!==void 0?i.string(t.bignumRe.abs().toString()):i.string(Math.abs(r).toString());let s=$(o);return s===null?i.typeError("integer",o.type,o):s<2||s>36?i.error(["out-of-range","2","36",s.toString()],o.toString()):i.string(Math.abs(r).toString(s))}}}];function Ld(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 Mu(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),o=Iu(r);return[i.number(Math.max(r[0],o)),[]]}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,o=[];for(let s of F(e)){let[a,u]=Mu(s,n);a&&(r?(t&&a.isGreater(r)||!t&&a.isLess(r))&&(r=a):r=a),o.push(...u)}return[r,o]}return!e.isNumber||e.numericValue===null?[void 0,[e]]:[e,[]]}function kr(e,n,i){let t=i==="Max"||i==="Supremum";if(n.length===0)return t?e.NegativeInfinity:e.PositiveInfinity;let r,o=[];for(let s of n){let[a,u]=Mu(s,i);a&&(r?(t&&a.isGreater(r)||!t&&a.isLess(r))&&(r=a):r=a),o.push(...u)}return o.length>0?e.box(r?[i,r,...o]:[i,...o]):r??(t?e.NegativeInfinity:e.PositiveInfinity)}function Ru(e,n){let i=e[0].engine,t=n==="LCM"?Si:on,r=n==="LCM"?nu:Oo,o=[];if(sn(i)){let a=null;for(let u of e)if(a===null)a=Co(u),(a===null||!a.isInteger())&&o.push(u);else{let l=Co(u);l&&l.isInteger()?a=r(a,l):o.push(u)}return o.length===0?a===null?i.One:i.number(a):a===null?i._fn(n,o):i._fn(n,[i.number(a),...o])}let s=null;for(let a of e)s===null?g(a.type,"integer")&&o.push(a):a.isInteger?s=t(s,a.re):o.push(a);return o.length===0?s===null?i.One:i.number(s):s===null?i._fn(n,o):i._fn(n,[i.number(s),...o])}function wr(e){if(!e.isInteger||e.isNegative||e.numericValue===null)return;let i=$(e);if(i!==null)return vo(i);let t=bt(e);if(t!==null)return La(t)}var Lu={boolean:e=>e.type==="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=>g(e.type,"complex"),imaginary:e=>e.type==="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=>wr(e)===!0,composite:e=>wr(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=>Be(e.operator),equation:e=>e.operator==="Equal",inequality:e=>Vn(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 Fu(e,n){for(let i of n)if(Lu[i](e)!==!0)return!1;return!0}function Fd(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 qd(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\\Z":"integer","\\in\\mathbb{Z}":"integer","\\in\\N":"natural","\\in\\mathbb{N}":"natural","\\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\\N^*":"integer,positive","\\in\\N_0":"integer,nonnegative","\\in\\R\\backslash\\Q":"irrational"};for(let r in t)if(e.matchAll(Fd(r))){i=t[r];break}}if(!i)return null;if(!Object.keys(Lu).includes(i))throw new Error(`Unexpected condition "${i}" in a rule`);return i}function Cu(e){let n=[];do{let i=qd(e);if(!i)break;n.push(i)}while(e.match(","));return n.join(",")}function rs(e){let n=null;if(e.match(":"))n=Cu(e);else if(e.matchAll(["_","<{>"])&&(n=Cu(e),!e.match("<}>")))return null;return n}function Pu(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=d=>({kind:"symbol",latexTrigger:d,parse:(m,b)=>{o[d]||(o[d]=`_${d}`);let y=rs(m);return y!==null&&(s[d]?s[d]+=","+y:s[d]=y),o[d]}}),r=e.latexDictionary,o={},s={};e.latexDictionary=[...r,{kind:"prefix",precedence:100,latexTrigger:"...",parse:(d,m)=>{let b=d.nextToken();if(!"abcfghjklmnopqrstuvwxyz".includes(b))return null;let y="__";if(d.match("?")&&(y="___"),o[b]&&o[b]!==`${y}${b}`)throw new Error(`Duplicate wildcard "${b}"`);o[b]||(o[b]=`${y}${b}`);let N=rs(d);return N===null?null:(s[b]?s[b]+=","+N:s[b]=N,`${y}${b}`)}},..."abcfghjklmnopqrstuvwxyz".split("").map(t),{kind:"infix",precedence:100,latexTrigger:"->",parse:(d,m,b)=>{let y=d.parseExpression({...b,minPrec:20});if(y===null)return null;let N=null;if(d.match(";")){let _=!1,P=d.index;do{d.skipSpace();let xe=d.nextToken();if(o[xe]){let be=rs(d);if(be===null||!be){_=!0,d.index=P;break}s[xe]?s[xe]+=","+be:s[xe]=be}}while(!_&&!d.atEnd);N=d.parseExpression(b)}let T=[];for(let _ in s){let P=s[_].split(",");P.length!==0&&(P.length===1?T.push(["Condition",o[_],P[0]]):T.push(["Condition",o[_],["And",...P]]))}let R;return N&&T.length>0?R=["And",N,...T]:N?R=N:T.length===1?R=T[0]:T.length>1&&(R=["And",...T]),R?["Rule",m,y,R]:["Rule",m,y]}}];let a=e.parse(n,{canonical:i?.canonical??!1});if(e.latexDictionary=r,!a.isValid||a.operator!=="Rule")throw new Error(`Invalid rule "${n}"
|
|
42
|
-
| ${
|
|
41
|
+
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=Rr(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 o=bt(r);if(o!==null)return o%BigInt(2)!==BigInt(0);let s=r.re;return Number.isInteger(s)?s%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=>Au(e,"GCD")},LCM:{description:"Least Common Multiple",complexity:1200,threadable:!1,signature:"(...any) -> integer",sgn:()=>"positive",evaluate:e=>Au(e,"LCM")},Numerator:{description:"Numerator of an expression",complexity:1200,threadable:!0,hold:!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",Oe(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,hold:!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=ze(i);return t!==void 0?n.number(t[1]):n._fn("Denominator",Oe(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,hold:!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=ze(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"real-not-zero"}},evaluate:(e,{engine:n})=>Dr(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";if(e.some(n=>!n.is(0)))return"real-not-zero"}},evaluate:(e,{engine:n})=>Dr(n,e,"Min")},Supremum:{description:"Like Max, but defined for open sets",complexity:1200,threadable:!1,signature:"(...value) -> number | list",evaluate:(e,{engine:n})=>Dr(n,e,"Supremum")},Infimum:{description:"Like Min, but defined for open sets",complexity:1200,threadable:!1,signature:"(...value) -> number | list",evaluate:(e,{engine:n})=>Dr(n,e,"Infimum")},Product:{description:"`Product(f, a, b)` computes the product of `f` from `a` to `b`",wikidata:"Q901718",complexity:1e3,threadable:!1,hold:!0,signature:"(collection|function, ...(tuple<symbol>|tuple<symbol, integer>|tuple<symbol, integer, integer>)) -> number",canonical:([e,...n])=>rs("Product",e,n),sgn:e=>{let n=e[0]?.sgn;if(n===void 0)return;if(["positive","zero"].includes(n))return n;let i=Ui(e[0],e.slice(1),(f,c)=>f+1,0);if(n==="real-not-zero"||n==="negative")return i%2===0?"positive":n;if(e[0]?.type==="imaginary")return i%2===0?"negative":"unsigned";if(n==="unsigned")return;let t=!1,r=!1,o=!1,s=!1,a="positive",u=!1,l=Ui(e[0],e.slice(1),(f,c)=>(c.isInfinity?(s=!0,o=!0):c.isInfinity!==!1&&(o=!0),c.is(0)&&(t=!0,r=!0),c.is(0)&&(r=!0),c.isNonPositive?a=wr(a):c.isNonNegative!==!0&&(u=!0),f+1),0);if(s&&t)return"unsigned";if(!(u||o&&r))return r?a==="positive"?"non-negative":"non-positive":a},evaluate:(e,n)=>{let i=(r,o)=>(o=o.evaluate(n),o.isNumberLiteral?r.mul(o.numericValue):null),t=Ui(e[0],e.slice(1),i,n.engine._numericValue(1));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,hold:!0,signature:"(collection|function, ...(tuple<symbol>|tuple<symbol, integer>|tuple<symbol, integer, integer>)) -> number",sgn:e=>{let n=e[0]?.sgn;if(n===void 0)return;if(["positive","negative","zero"].includes(n))return n;let i=[],t=Ui(e[0],e.slice(1),(r,o)=>(i.push(o.sgn),r+1),0);if(!i.some(r=>[void 0,"unsigned"].includes(r))){if(i.every(r=>r==="zero"))return"zero";if(i.every(r=>r==="positive"||r==="non-negative"))return i.some(r=>r==="positive")?"positive":"non-negative";if(i.every(r=>r==="negative"||r==="non-negative"))return i.some(r=>r==="negative")?"negative":"non-positive";if(i.every(r=>r==="real"||r==="real-not-zero"))return"real"}},canonical:([e,...n])=>rs("Sum",e,n),evaluate:(e,{engine:n})=>n.number(Ui(e[0],e.slice(1),(i,t)=>(t=t.evaluate(),t.isNumberLiteral?i.add(t.numericValue):null),n._numericValue(0))??NaN)}},{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 o=r.re;if(r.type!=="integer"||!Number.isFinite(o)||o<2||o>36)return t.error(["unexpected-base",o.toString()],r.toString());let[s,a]=Ai(i,r.string??r.symbol??10);return a?t.error(["unexpected-digit",a[0]],a):t.number(s)}},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.type!=="integer")return i.typeError("integer",t.type,t);let r=t.re;if(!Number.isFinite(r))return i.typeError("integer",t.type,t);let o=e[1]??i.Nothing;if(o.symbol==="Nothing")return t.bignumRe!==void 0?i.string(t.bignumRe.abs().toString()):i.string(Math.abs(r).toString());let s=G(o);return s===null?i.typeError("integer",o.type,o):s<2||s>36?i.error(["out-of-range","2","36",s.toString()],o.toString()):i.string(Math.abs(r).toString(s))}}}];function qd(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 Mu(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),o=Bu(r);return[i.number(Math.max(r[0],o)),[]]}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,o=[];for(let s of q(e)){let[a,u]=Mu(s,n);a&&(r?(t&&a.isGreater(r)||!t&&a.isLess(r))&&(r=a):r=a),o.push(...u)}return[r,o]}return!e.isNumber||e.numericValue===null?[void 0,[e]]:[e,[]]}function Dr(e,n,i){let t=i==="Max"||i==="Supremum";if(n.length===0)return t?e.NegativeInfinity:e.PositiveInfinity;let r,o=[];for(let s of n){let[a,u]=Mu(s,i);a&&(r?(t&&a.isGreater(r)||!t&&a.isLess(r))&&(r=a):r=a),o.push(...u)}return o.length>0?e.box(r?[i,r,...o]:[i,...o]):r??(t?e.NegativeInfinity:e.PositiveInfinity)}function Au(e,n){let i=e[0].engine,t=n==="LCM"?Si:on,r=n==="LCM"?iu:Fo,o=[];if(sn(i)){let a=null;for(let u of e)if(a===null)a=Oo(u),(a===null||!a.isInteger())&&o.push(u);else{let l=Oo(u);l&&l.isInteger()?a=r(a,l):o.push(u)}return o.length===0?a===null?i.One:i.number(a):a===null?i._fn(n,o):i._fn(n,[i.number(a),...o])}let s=null;for(let a of e)s===null?g(a.type,"integer")&&o.push(a):a.isInteger?s=t(s,a.re):o.push(a);return o.length===0?s===null?i.One:i.number(s):s===null?i._fn(n,o):i._fn(n,[i.number(s),...o])}function Rr(e){if(!e.isInteger||e.isNegative||e.numericValue===null)return;let i=G(e);if(i!==null)return To(i);let t=bt(e);if(t!==null)return Fa(t)}var Fu={boolean:e=>e.type==="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=>g(e.type,"complex"),imaginary:e=>e.type==="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=>Rr(e)===!0,composite:e=>Rr(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=>Be(e.operator),equation:e=>e.operator==="Equal",inequality:e=>qn(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 qu(e,n){for(let i of n)if(Fu[i](e)!==!0)return!1;return!0}function $d(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 Vd(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\\Z":"integer","\\in\\mathbb{Z}":"integer","\\in\\N":"natural","\\in\\mathbb{N}":"natural","\\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\\N^*":"integer,positive","\\in\\N_0":"integer,nonnegative","\\in\\R\\backslash\\Q":"irrational"};for(let r in t)if(e.matchAll($d(r))){i=t[r];break}}if(!i)return null;if(!Object.keys(Fu).includes(i))throw new Error(`Unexpected condition "${i}" in a rule`);return i}function Pu(e){let n=[];do{let i=Vd(e);if(!i)break;n.push(i)}while(e.match(","));return n.join(",")}function ss(e){let n=null;if(e.match(":"))n=Pu(e);else if(e.matchAll(["_","<{>"])&&(n=Pu(e),!e.match("<}>")))return null;return n}function Ou(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 Gd(e,n,i){let t=d=>({kind:"symbol",latexTrigger:d,parse:(m,b)=>{o[d]||(o[d]=`_${d}`);let y=ss(m);return y!==null&&(s[d]?s[d]+=","+y:s[d]=y),o[d]}}),r=e.latexDictionary,o={},s={};e.latexDictionary=[...r,{kind:"prefix",precedence:100,latexTrigger:"...",parse:(d,m)=>{let b=d.nextToken();if(!"abcfghjklmnopqrstuvwxyz".includes(b))return null;let y="__";if(d.match("?")&&(y="___"),o[b]&&o[b]!==`${y}${b}`)throw new Error(`Duplicate wildcard "${b}"`);o[b]||(o[b]=`${y}${b}`);let N=ss(d);return N===null?null:(s[b]?s[b]+=","+N:s[b]=N,`${y}${b}`)}},..."abcfghjklmnopqrstuvwxyz".split("").map(t),{kind:"infix",precedence:100,latexTrigger:"->",parse:(d,m,b)=>{let y=d.parseExpression({...b,minPrec:20});if(y===null)return null;let N=null;if(d.match(";")){let _=!1,O=d.index;do{d.skipSpace();let xe=d.nextToken();if(o[xe]){let be=ss(d);if(be===null||!be){_=!0,d.index=O;break}s[xe]?s[xe]+=","+be:s[xe]=be}}while(!_&&!d.atEnd);N=d.parseExpression(b)}let T=[];for(let _ in s){let O=s[_].split(",");O.length!==0&&(O.length===1?T.push(["Condition",o[_],O[0]]):T.push(["Condition",o[_],["And",...O]]))}let R;return N&&T.length>0?R=["And",N,...T]:N?R=N:T.length===1?R=T[0]:T.length>1&&(R=["And",...T]),R?["Rule",m,y,R]:["Rule",m,y]}}];let a=e.parse(n,{canonical:i?.canonical??!1});if(e.latexDictionary=r,!a.isValid||a.operator!=="Rule")throw new Error(`Invalid rule "${n}"
|
|
42
|
+
| ${Ar(a).toString()}
|
|
43
43
|
| A rule should be of the form:
|
|
44
|
-
| <match> -> <replace>; <condition>`);let[u,l,f]=a.ops;if(!
|
|
44
|
+
| <match> -> <replace>; <condition>`);let[u,l,f]=a.ops;if(!Lu(l,u))throw new Error(`Invalid rule "${n}"
|
|
45
45
|
| The replace expression contains wildcards not present in the match expression`);if(u.isSame(l))throw new Error(`Invalid rule "${n}"
|
|
46
46
|
| The match and replace expressions are the same.
|
|
47
|
-
| This may be because the rule is not necessary due to canonical simplification`);let c;if(f!==void 0){if(!
|
|
48
|
-
| The condition expression contains wildcards not present in the match expression`);c=d=>f.subs(d).evaluate()?.symbol==="True"}return
|
|
49
|
-
| A rule must include at least a replace property`);let a;if(typeof o=="string"){let f=
|
|
47
|
+
| This may be because the rule is not necessary due to canonical simplification`);let c;if(f!==void 0){if(!Lu(f,u))throw new Error(`Invalid rule "${n}"
|
|
48
|
+
| The condition expression contains wildcards not present in the match expression`);c=d=>f.subs(d).evaluate()?.symbol==="True"}return $u(e,{match:u,replace:l,condition:c,id:n},i)}function $u(e,n,i){if(n==null)throw new Error("Expected a rule, not "+n);if(so(n))return n;if(typeof n=="string")return Gd(e,n,i);if(typeof n=="function")return{_tag:"boxed-rule",match:void 0,replace:n,condition:void 0,id:n.toString().replace(/\n/g," ")};let{match:t,replace:r,condition:o,id:s}=n;if(r===void 0)throw new Error(`Invalid rule "${s??JSON.stringify(n)}"
|
|
49
|
+
| A rule must include at least a replace property`);let a;if(typeof o=="string"){let f=Fn(o);if(f){let c=e.parse(f,{canonical:i?.canonical??!1});a=(d,m)=>c.subs(d).evaluate()?.symbol==="True"}}else{if(o!==void 0&&typeof o!="function")throw new Error(`Invalid rule ${s??JSON.stringify(n)}
|
|
50
50
|
| condition is not a valid function`);a=o}if(typeof t=="function")throw new Error(`Invalid rule ${s??JSON.stringify(n)}
|
|
51
51
|
| match is not a valid expression.
|
|
52
|
-
| Use a replace function instead to validate and replace the expression`);let u=
|
|
52
|
+
| Use a replace function instead to validate and replace the expression`);let u=Ou(e,t,i),l=Ou(e,r,i);if(s||(typeof t=="string"?s=t:s=JSON.stringify(t),r&&(s+=" -> ",typeof r=="string"?s+=r:typeof r=="function"?s+=r?.toString().replace(/\n/g," "):s=JSON.stringify(r)),typeof o=="string"?s+=`; ${o}`:typeof o=="function"&&(s+=`; ${o.toString().replace(/\n/g," ")}`)),u&&!u.isValid)throw new Error(`Invalid rule ${s}
|
|
53
53
|
| the match expression is not valid: ${u.toString()}`);if(l&&!l.isValid)throw new Error(`Invalid rule ${s??JSON.stringify(n)}
|
|
54
54
|
| The replace expression is not valid: ${l?.toString()}`);if(!l&&typeof r!="function")throw new Error(`Invalid rule ${s??JSON.stringify(n)}
|
|
55
|
-
| The replace expression could not be parsed`);return{_tag:"boxed-rule",match:u,replace:l??r,condition:a,useVariations:n.useVariations,id:s}}function Pt(e,n,i){if(!n)return{rules:[]};if(typeof n=="object"&&"rules"in n)return n;Array.isArray(n)||(n=[n]);let t=[];for(let r of n)try{t.push(
|
|
55
|
+
| The replace expression could not be parsed`);return{_tag:"boxed-rule",match:u,replace:l??r,condition:a,useVariations:n.useVariations,id:s}}function Pt(e,n,i){if(!n)return{rules:[]};if(typeof n=="object"&&"rules"in n)return n;Array.isArray(n)||(n=[n]);let t=[];for(let r of n)try{t.push($u(e,r,i))}catch(o){throw new Error(`
|
|
56
56
|
${o.message}
|
|
57
57
|
| Skipping rule ${JSON.stringify(r)}
|
|
58
58
|
|
|
59
|
-
`)}return{rules:t}}function
|
|
59
|
+
`)}return{rules:t}}function as(e,n,i,t){let r=t?.canonical??(n.isCanonical||n.isStructural),o=!1;if(n.ops&&t?.recursive){let b=n.ops.map(y=>{let N=as(e,y,{},t);return N?(o=!0,N.value):y});o&&(n=n.engine.function(n.operator,b,{canonical:r}))}let{match:s,replace:a,condition:u,id:l}=e,f=l??"";if(r&&s){let b=Mt(s),y=s;s=s.canonical;let N=Mt(s);if(!b.every(T=>N.includes(T)))throw new Error(`
|
|
60
60
|
| Invalid rule "${e.id}"
|
|
61
|
-
| The canonical form of ${
|
|
61
|
+
| The canonical form of ${Ar(y).toString()} is "${Ar(s).toString()}" and it does not contain all the wildcards of the original match.
|
|
62
62
|
| This could indicate that the match expression in canonical form is already simplified and this rule may not be necessary`)}let c=e.useVariations??t?.useVariations??!1,d=s?n.match(s,{substitution:i,...t,useVariations:c}):{};if(d===null)return o?{value:n,because:f}:null;if(typeof u=="function"){let b={...Object.fromEntries(Object.entries(d).map(([y,N])=>[y.slice(1),N])),...d};try{if(!u(b,n.engine))return o?{value:n,because:f}:null}catch(y){return console.error(`
|
|
63
63
|
| Rule "${e.id}"
|
|
64
64
|
| Error while checking condition
|
|
65
|
-
| ${y.message}`),null}}let m=typeof a=="function"?a(n,d):a.subs(d,{canonical:r});return m?
|
|
65
|
+
| ${y.message}`),null}}let m=typeof a=="function"?a(n,d):a.subs(d,{canonical:r});return m?oo(m)?r?{...m,value:m.value.canonical}:m:{value:r?m.canonical:m,because:f}:null}function wn(e,n,i){if(!n)throw new Error("replace(): Expected one or more rules");let t=i?.iterationLimit??1,r=0,o=i?.once??!1,s;typeof n=="object"&&"rules"in n?s=n.rules:s=e.engine.rules(Array.isArray(n)?n:[n]).rules;let a=!1,u=[];for(;!a&&r<t;){a=!0;for(let l of s)try{let f=as(l,e,{},i);if(f!==null&&f.value!==e&&!f.value.isSame(e)){if(o)return[f];if(u.some(c=>c.value.isSame(f.value)))return u;u.push(f),a=!1,e=f.value}}catch(f){return console.error(`
|
|
66
66
|
${e.toString()}
|
|
67
67
|
${l.id}
|
|
68
|
-
${f.message}`),u}r+=1}return u}function Ot(e,n,i,t){let r=[];for(let o of n.rules){let s=os(o,e,i,t);s!==null&&(r.some(a=>a.isSame(s.value))||r.push(s.value))}return r}function Dr(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=>Dr(t));return e.engine.function(e.operator,i,{canonical:!1})}return e}function Ct(e){let n=[];return e.symbol&&e.symbol.startsWith("_")&&n.push(e.symbol),e.ops&&e.ops.forEach(i=>n.push(...Ct(i))),n}function Ou(e,n){let i=Ct(e),t=Ct(n);return i.every(r=>t.includes(r))}var $u=[{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",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"]]}];function Rr(e,n){let i=e.engine;e.operator==="Equal"&&(e=e.op1.canonical.sub(e.op2).simplify());let t=i.getRuleSet("solve-univariate"),r=[e.subs({[n]:"_x"},{canonical:!1})],o=r.flatMap(s=>Ot(s,t,{_x:i.symbol("_x")},{useVariations:!0,canonical:!0}));return o.length===0&&(r=r.flatMap(s=>Vu(s)),o=r.flatMap(s=>Ot(s,t,{_x:i.symbol(n)}))),o.length===0&&(r=r.flatMap(s=>je(s.canonical)).filter(s=>s!==null),r=r.flatMap(s=>Vu(s)),o=r.flatMap(s=>Ot(s,t,{_x:i.symbol(n)}))),o.map(s=>s.evaluate().simplify())}var Gu=[{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 Vu(e){let n=e.engine,i=n.getRuleSet("harmonization");return Ot(e,i,{_x:n.symbol("_x")})}function zu(e){if(e.operator==="Element")return zd(e);if(e.operator==="Equal")return $d(e);if(Vn(e))return Gd(e);throw new Error("Unsupported assumption. Use `Element`, `Equal` or an inequality")}function $d(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&&!jd(i,t)&&!e.op2.has(t)){let r=e.op2.evaluate();if(!r.isValid)return"not-a-predicate";let o=i.lookupSymbol(t);return o?o.type&&!g(r.type,o.type)&&!o.inferredType?"contradiction":(o.value=r,o.inferredType&&(o.type=r.type),"ok"):(i.defineSymbol(t,{value:r}),"ok")}if(n.length===1){let r=n[0],o=Rr(e,r);o.length===0&&i.assumptions.set(i.function("Equal",[e.op1.sub(e.op2),0]),!0);let s=o.length===1?o[0]:i.function("List",o),a=i.lookupSymbol(r);return a?a.type&&!o.every(u=>!u.type||g(s.type,u.type))?"contradiction":(a.value=s,"ok"):(i.defineSymbol(r,{value:s}),"ok")}return i.assumptions.set(e,!0),"ok"}function Gd(e){let n=e.engine;if(e.op1.symbol&&!ss(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 o=t.sub(r),s=n.box([i==="<"?"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&&(n.lookupSymbol(a[0])||n.defineSymbol(a[0],{type:"real"})),s.operator==="Less"||s.operator,n.assumptions.set(s,!0),"ok")}function zd(e){e.operator;let n=e.engine,i=Ud(e.op1);if(i.length===1){let r=e.op2.evaluate();if(!r.isValid)return"not-a-predicate";let o=cr(r);if(o==="unknown")throw new Error(`Invalid domain "${r.toString()}"`);return n.declare(i[0],o),"ok"}if(e.op1.symbol&&ss(n,e.op1.symbol)){let r=e.op2.evaluate();if(!r.isValid)return"not-a-predicate";let o=cr(r);n.context?.ids?.has(e.op1.symbol)||n.declare(e.op1.symbol,cr(r));let s=n.lookupSymbol(e.op1.symbol);if(s)return s.type&&!g(o,s.type)?"contradiction":(s.type=o,"ok");let a=n.lookupFunction(e.op1.symbol);return a?g(o,Ei(a.signature))?"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 ss(e,n){return(e.lookupSymbol(n)??e.lookupFunction(n))!==void 0}function Ud(e){return e.symbols.filter(n=>!ss(e.engine,n))}function jd(e,n){return e.lookupFunction(n)?!1:e.lookupSymbol(n)?.value!==void 0}var as;function Zu(e){if(!as){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("")}]*$`;as=new RegExp(i,"u")}return as.test(e)}function he(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)||Zi.test(e)?!0:Zu(e)?/^[\p{XIDS}_]\p{XIDC}*$/u.test(e):!1}var Zd="\\u{FE0F}",Hd="\\u{20E3}",Wd="\\u{200D}",Jd="\\p{RI}\\p{RI}",Yd="(?:[\\u{E0020}-\\u{E007E}]+\\u{E007F})",Uu=`(?:\\p{EMod}|${Zd}${Hd}?|${Yd})`,Qd="(?:(?=\\P{XIDC})\\p{Emoji})",ju=`(?:${Qd}${Uu}*|\\p{Emoji}${Uu}+|${Jd})`,Hu=`(?:${ju})(${Wd}${ju})*`,Xd=new RegExp(`(?:${Hu})+`,"u"),Zi=new RegExp(`^(?:${Hu})+$`,"u");function Ye(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":Zi.test(e)?"valid":/\p{XIDC}/u.test(e)&&Xd.test(e)?"unexpected-mixed-emoji":Zu(e)?he(e)?"valid":he(e[0])?"invalid-char":"invalid-first-char":"unexpected-script"}function Ar(e,n,i,t=1e5){let r=0;if(n===-1/0&&i===1/0)for(let o=0;o<t;o++){let s=Math.random(),a=Math.tan(Math.PI*(s-.5)),u=Math.PI*(1+a*a);r+=e(a)/u}else if(n===-1/0)for(let o=0;o<t;o++){let s=Math.random(),a=i-Math.log(1-s),u=1/(1-s);r+=e(a)/u}else if(i===1/0)for(let o=0;o<t;o++){let s=Math.random(),a=n+Math.log(s),u=1/s;r+=e(a)/u}else for(let o=0;o<t;o++)r+=e(n+Math.random()*(i-n));return r/t*(i-n)}var Kd={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]},ep={Abs:"Math.abs",Add:(e,n)=>e.length===1?n(e[0]):`(${e.map(i=>n(i)).join(" + ")})`,Arccos:"Math.acos",Arcosh:"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)}))`},Arsin:"Math.asin",Arsinh:"Math.asinh",Arctan:"Math.atan",Artanh:"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 Wu("Math.cos(${x}) / Math.sin(${x})",n(e))},Coth:([e],n)=>{if(e===null)throw new Error("Coth: no argument");return Wu("(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)=>tp(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",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 o=parseFloat(t),s=parseFloat(i);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}
|
|
68
|
+
${f.message}`),u}r+=1}return u}function Ot(e,n,i,t){let r=[];for(let o of n.rules){let s=as(o,e,i,t);s!==null&&(r.some(a=>a.isSame(s.value))||r.push(s.value))}return r}function Ar(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=>Ar(t));return e.engine.function(e.operator,i,{canonical:!1})}return e}function Mt(e){let n=[];return e.symbol&&e.symbol.startsWith("_")&&n.push(e.symbol),e.ops&&e.ops.forEach(i=>n.push(...Mt(i))),n}function Lu(e,n){let i=Mt(e),t=Mt(n);return i.every(r=>t.includes(r))}var Gu=[{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",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"]]}];function Cr(e,n){let i=e.engine;e.operator==="Equal"&&(e=e.op1.canonical.sub(e.op2).simplify());let t=i.getRuleSet("solve-univariate"),r=[e.subs({[n]:"_x"},{canonical:!1})],o=r.flatMap(s=>Ot(s,t,{_x:i.symbol("_x")},{useVariations:!0,canonical:!0}));return o.length===0&&(r=r.flatMap(s=>Vu(s)),o=r.flatMap(s=>Ot(s,t,{_x:i.symbol(n)}))),o.length===0&&(r=r.flatMap(s=>Ae(s.canonical)).filter(s=>s!==null),r=r.flatMap(s=>Vu(s)),o=r.flatMap(s=>Ot(s,t,{_x:i.symbol(n)}))),o.map(s=>s.evaluate().simplify())}var zu=[{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 Vu(e){let n=e.engine,i=n.getRuleSet("harmonization");return Ot(e,i,{_x:n.symbol("_x")})}function Uu(e){if(e.operator==="Element")return jd(e);if(e.operator==="Equal")return zd(e);if(qn(e))return Ud(e);throw new Error("Unsupported assumption. Use `Element`, `Equal` or an inequality")}function zd(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&&!Hd(i,t)&&!e.op2.has(t)){let r=e.op2.evaluate();if(!r.isValid)return"not-a-predicate";let o=i.lookupSymbol(t);return o?o.type&&!g(r.type,o.type)&&!o.inferredType?"contradiction":(o.value=r,o.inferredType&&(o.type=r.type),"ok"):(i.defineSymbol(t,{value:r}),"ok")}if(n.length===1){let r=n[0],o=Cr(e,r);o.length===0&&i.assumptions.set(i.function("Equal",[e.op1.sub(e.op2),0]),!0);let s=o.length===1?o[0]:i.function("List",o),a=i.lookupSymbol(r);return a?a.type&&!o.every(u=>!u.type||g(s.type,u.type))?"contradiction":(a.value=s,"ok"):(i.defineSymbol(r,{value:s}),"ok")}return i.assumptions.set(e,!0),"ok"}function Ud(e){let n=e.engine;if(e.op1.symbol&&!us(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 o=t.sub(r),s=n.box([i==="<"?"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&&(n.lookupSymbol(a[0])||n.defineSymbol(a[0],{type:"real"})),s.operator==="Less"||s.operator,n.assumptions.set(s,!0),"ok")}function jd(e){e.operator;let n=e.engine,i=Zd(e.op1);if(i.length===1){let r=e.op2.evaluate();if(!r.isValid)return"not-a-predicate";let o=dr(r);if(o==="unknown")throw new Error(`Invalid domain "${r.toString()}"`);return n.declare(i[0],o),"ok"}if(e.op1.symbol&&us(n,e.op1.symbol)){let r=e.op2.evaluate();if(!r.isValid)return"not-a-predicate";let o=dr(r);n.context?.ids?.has(e.op1.symbol)||n.declare(e.op1.symbol,dr(r));let s=n.lookupSymbol(e.op1.symbol);if(s)return s.type&&!g(o,s.type)?"contradiction":(s.type=o,"ok");let a=n.lookupFunction(e.op1.symbol);return a?g(o,Ei(a.signature))?"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 us(e,n){return(e.lookupSymbol(n)??e.lookupFunction(n))!==void 0}function Zd(e){return e.symbols.filter(n=>!us(e.engine,n))}function Hd(e,n){return e.lookupFunction(n)?!1:e.lookupSymbol(n)?.value!==void 0}var ls;function Hu(e){if(!ls){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("")}]*$`;ls=new RegExp(i,"u")}return ls.test(e)}function he(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)||Zi.test(e)?!0:Hu(e)?/^[\p{XIDS}_]\p{XIDC}*$/u.test(e):!1}var Wd="\\u{FE0F}",Jd="\\u{20E3}",Yd="\\u{200D}",Qd="\\p{RI}\\p{RI}",Xd="(?:[\\u{E0020}-\\u{E007E}]+\\u{E007F})",ju=`(?:\\p{EMod}|${Wd}${Jd}?|${Xd})`,Kd="(?:(?=\\P{XIDC})\\p{Emoji})",Zu=`(?:${Kd}${ju}*|\\p{Emoji}${ju}+|${Qd})`,Wu=`(?:${Zu})(${Yd}${Zu})*`,ep=new RegExp(`(?:${Wu})+`,"u"),Zi=new RegExp(`^(?:${Wu})+$`,"u");function Ye(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":Zi.test(e)?"valid":/\p{XIDC}/u.test(e)&&ep.test(e)?"unexpected-mixed-emoji":Hu(e)?he(e)?"valid":he(e[0])?"invalid-char":"invalid-first-char":"unexpected-script"}function Mr(e,n,i,t=1e5){let r=0;if(n===-1/0&&i===1/0)for(let o=0;o<t;o++){let s=Math.random(),a=Math.tan(Math.PI*(s-.5)),u=Math.PI*(1+a*a);r+=e(a)/u}else if(n===-1/0)for(let o=0;o<t;o++){let s=Math.random(),a=i-Math.log(1-s),u=1/(1-s);r+=e(a)/u}else if(i===1/0)for(let o=0;o<t;o++){let s=Math.random(),a=n+Math.log(s),u=1/s;r+=e(a)/u}else for(let o=0;o<t;o++)r+=e(n+Math.random()*(i-n));return r/t*(i-n)}var np={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]},ip={Abs:"Math.abs",Add:(e,n)=>e.length===1?n(e[0]):`(${e.map(i=>n(i)).join(" + ")})`,Arccos:"Math.acos",Arcosh:"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)}))`},Arsin:"Math.asin",Arsinh:"Math.asinh",Arctan:"Math.atan",Artanh:"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 Ju("Math.cos(${x}) / Math.sin(${x})",n(e))},Coth:([e],n)=>{if(e===null)throw new Error("Coth: no argument");return Ju("(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)=>op(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",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 o=parseFloat(t),s=parseFloat(i);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}
|
|
69
69
|
}, (_, i) => ${i} + i)`:`Array.from({length: ${t} - ${i} + 1
|
|
70
|
-
}, (_, 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"},
|
|
70
|
+
}, (_, 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"},fs=class extends Function{constructor(i){super("_SYS","_",`return ${i}`);this.sys={chop:Ga,factorial:lr,gamma:Li,gcd:on,integrate:(i,t,r)=>Mr(i,t,r,1e7),lcm:Si,lngamma:Dt,limit:Yn};return new Proxy(this,{apply:(t,r,o)=>super.apply(r,[this.sys,...o]),get:(t,r)=>r==="toString"?()=>i:t[r]})}};function tp(e,n){let i=fe(e,n);return new fs(i)}function Yu(e){let n=e.unknowns;return tp(e,{operators:i=>np[i],functions:i=>ip[i],var:i=>{let t={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"}[i];if(t!==void 0)return t;if(n.includes(i))return`_.${i}`},string:i=>JSON.stringify(i),number:i=>i.toString(),indent:0,ws:i=>i??""})}function Qu(e,n,i,t){if(e==="Error")throw new Error("Error");if(e==="Sequence")return n.length===0?"":`(${n.map(o=>fe(o,t,i)).join(", ")})`;if(e==="Sum"||e==="Product")return rp(e,n,t);if(n.every(o=>!o.isCollection)){let o=t.operators?.(e);if(Be(e)&&n.length>2&&o){let s=[];for(let a=0;a<n.length-1;a++)s.push(Qu(e,[n[a],n[a+1]],o[1],t));return`(${s.join(") && (")})`}if(o!==void 0){if(n===null)return"";let s;return n.length===1?s=`${o[0]}${fe(n[0],t,o[1])}`:s=n.map(a=>fe(a,t,o[1])).join(` ${o[0]} `),o[1]<i?`(${s})`:s}}if(e==="Function"){let o=n.slice(1).map(s=>s.symbol);return`((${o.join(", ")}) => ${fe(n[0].canonical,{...t,var:s=>o.includes(s)?s:t.var(s)})})`}if(e==="Declare")return`let ${n[0].symbol}`;if(e==="Assign")return`${n[0].symbol} = ${fe(n[1],t)}`;if(e==="Return")return`return ${fe(n[0],t)}`;if(e==="If"){if(n.length!==3)throw new Error("If: wrong number of arguments");return`((${fe(n[0],t)}) ? (${fe(n[1],t)}) : (${fe(n[2],t)}))`}if(e==="Block"){let o=[];for(let a of n)a.operator==="Declare"&&o.push(a.ops[0].symbol);if(n.length===1&&o.length===0)return fe(n[0],t);let s=n.map(a=>fe(a,{...t,var:u=>o.includes(u)?u:t.var(u)}));return s[s.length-1]=`return ${s[s.length-1]}`,`(() => {${t.ws(`
|
|
71
71
|
`)}${s.join(`;${t.ws(`
|
|
72
72
|
`)}`)}${t.ws(`
|
|
73
|
-
`)}})()`}let r=t.functions?.(e);if(!r)throw new Error(`Unknown function ${e}`);if(typeof r=="function"){if(n.length===1&&K(n[0])){let o=ai();return`(${fe(n[0],t)}).map((${o}) => ${r(n[0].engine.box(o),s=>fe(s,t))})`}return r(n,o=>fe(o,t),t)}if(n===null)return`${r}()`;if(n.length===1&&K(n[0])){let o=ai();return`(${fe(n[0],t)}).map((${o}) => ${r}(${fe(n[0].engine.box(o),t)}))`}return`${r}(${n.map(o=>fe(o,t)).join(", ")})`}function fe(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;let r=e.re;if(!isNaN(r)){if(e.im!==0)throw new Error("Complex numbers are not supported");return n.number(r)}return e.string!==null?n.string(t):
|
|
73
|
+
`)}})()`}let r=t.functions?.(e);if(!r)throw new Error(`Unknown function ${e}`);if(typeof r=="function"){if(n.length===1&&K(n[0])){let o=ai();return`(${fe(n[0],t)}).map((${o}) => ${r(n[0].engine.box(o),s=>fe(s,t))})`}return r(n,o=>fe(o,t),t)}if(n===null)return`${r}()`;if(n.length===1&&K(n[0])){let o=ai();return`(${fe(n[0],t)}).map((${o}) => ${r}(${fe(n[0].engine.box(o),t)}))`}return`${r}(${n.map(o=>fe(o,t)).join(", ")})`}function fe(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;let r=e.re;if(!isNaN(r)){if(e.im!==0)throw new Error("Complex numbers are not supported");return n.number(r)}return e.string!==null?n.string(t):Qu(e.operator,e.ops,i,n)}function rp(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:o,isFinite:s}=zi(n[1]),a=e==="Sum"?"+":"*";if(!t){let c=ai(),d=ai();return`${fe(n[0],i)}.reduce((${d}, ${c}) => ${d} ${a} ${c}, ${a==="+"?"0":"1"})`}let u=fe(n[0],{...i,var:c=>c===t?t:i.var(c)}),l=ai(),f=ai();return`(() => {
|
|
74
74
|
let ${f} = ${a==="+"?"0":"1"};
|
|
75
75
|
let ${t} = ${r};
|
|
76
76
|
const _fn = () => ${u};
|
|
@@ -79,10 +79,10 @@ ${f.message}`),u}r+=1}return u}function Ot(e,n,i,t){let r=[];for(let o of n.rule
|
|
|
79
79
|
${l}++;
|
|
80
80
|
}
|
|
81
81
|
return ${f};
|
|
82
|
-
})()`}function Wu(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=ai();return new Function("x",`return \`(() => { const ${t} = \${x}; return ${e.replace(/\\\${x}/g,t)}; })()\`;`)(n)}}function ai(){return`_${Math.random().toString(36).substring(4)}`}function tp(e,n,i){let{index:t,lower:r,upper:o}=zi(e[1]),s=fe(e[0],{...i,var:a=>a===t?a:i.var(a)});return`_SYS.integrate((${t}) => (${s}), ${r}, ${o})`}function Qu(e,n){return"normal"}function Xu(e,n){return"normal"}function Ku(e,n){return n>2?"solidus":"radical"}function el(e,n){if(n>3)return"inline-solidus";if(x(e)==="Divide"){let[i,t]=v(e),[r,o]=[yt(i),yt(t)];if(o<=2&&r>5)return"factor";if(r<=2&&o>5)return"reciprocal"}return"quotient"}function nl(e,n){return"boolean"}function il(e,n){return"solidus"}function tl(e,n){return"compact"}function ol(e,n,i){if(i.repeatingDecimal&&i.repeatingDecimal!=="none"){let o=e.slice(0,-1);for(let s=0;s<e.length-16;s++){let a=o.substring(0,s);for(let u=0;u<17;u++){let l=o.substring(s,s+u+1),f=Math.floor((o.length-a.length)/l.length);if(f<=3)break;if((a+l.repeat(f+1)).startsWith(o)){if(l==="0")return ls(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),ls(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=ls(e,i),r&&(e+=i.truncationMarker),e}function sl(e,n){return!e||e==="0"?"":n.beginExponentMarker?n.beginExponentMarker+e+(n.endExponentMarker??""):`10^{${e}}`}function al(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 o;return n.notation==="engineering"?o=Mr(i.toExponential(),n,3):n.notation==="scientific"&&(o=Mr(i.toExponential(),n)),o??fs(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[o,s,a,u]=i.match(/(.+)\(([0-9]+)\)(.*)$/)??[];i=s+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=Mr(i,n,3):n.notation==="scientific"&&(r=Mr(i,n)),t+(r??fs(i,n))}function Mr(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,d,m]=e.match(/^(.*)\.(.*)$/);for(m||(m="");d.startsWith("0");)d=d.substring(1);d?e=f+d[0]+"."+d.slice(1)+m+"e+"+(d.length-1).toString():e=f+"0."+m+"e+0"}t=e.match(/^(.*)[e|E]([-+]?[0-9]+)$/)}if(!t)return fs(e,n);let r=parseInt(t[2]),o=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,d,m]=o.match(/^(.*)\.(.*)$/)??["",o,""];o=d+(m+"00000000000000000").slice(0,Math.abs(f))+"."+m.slice(Math.abs(f))}let s=n.avoidExponentsInRange;if(s&&r>=s[0]&&r<=s[1])return;let a="",u=o;t=u.match(/^(.*)\.(.*)$/),t&&(u=t[1],a=t[2]);let l=sl(Number(r).toString(),n);if(a=ol(a,u.length,n),u=ll(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 fs(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,o="";i=e.match(/^(.*)\.(.*)$/),i?.[1]&&i[2]&&(r=i[1],o=i[2]),t!==0&&o&&(r+=o,t-=o.length,o="");let s=n.avoidExponentsInRange;t!==0&&s&&t>=s[0]&&t<=s[1]&&([r,o]=sp(r,o,t),t=0);let a=sl(t.toString(),n);if(o&&(o=n.decimalSeparator+ol(o,r.length,n)),r=ll(r,n),!a)return r+o;if(!o){if(r==="1")return a;if(r==="-1")return"-"+a}return r+o+n.exponentProduct+a}function rl(e,n,i){let t=new RegExp(`(\\d{${n}})(?=\\d)`,"g");return e.replace(t,`$1${i}`)}function rp(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 op(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 ul(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?op(e,r):rl(e,3,r):t===!1||t<=0?e:i===1?rl(e,t,r):rp(e,t,r):e}function ls(e,n){return ul(e,n,1)}function ll(e,n){return ul(e,n,0)}function sp(e,n,i){let t=e+n,o=e.length+i,s,a;return o>0?o>=t.length?(t=t+"0".repeat(o-t.length),s=t,a=""):(s=t.slice(0,o),a=t.slice(o)):(s="0",a="0".repeat(-o)+t),[s,a]}var ln=[["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]],fl=[...ln.map(([e,n,i])=>({kind:"symbol",name:e,latexTrigger:[n],parse:e})),...ln.map(([e,n,i])=>({kind:"symbol",latexTrigger:[String.fromCodePoint(i)],parse:e}))];function cs(e,n,i,t,r){if(n&&n.minPrec>=t)return null;let o=i?[i]:["Nothing"],s=!1;for(;!s;){for(s=!0,e.skipSpace();e.match(r);)o.push("Nothing"),e.skipSpace();if(e.atTerminator(n))o.push("Nothing");else{let a=e.parseExpression({...n,minPrec:t});o.push(a??"Nothing"),s=a===null}s||(e.skipSpace(),s=!e.match(r))}return o}function Hi(e=""){return(n,i)=>{if(!i)return"";let t=v(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((o,s)=>(o.push(n.serialize(s),e),o),[]);return r.pop(),E(r)}}var cl=[{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(x(n)==="Delimiter"&&(n=p(n,1)??"Nothing"),x(n)==="Sequence")for(let r of v(n)){if(!D(r))return null;i.push(D(r))}else{if(!D(n))return null;i=[D(n)]}let t=e.parseExpression({minPrec:270})??"Nothing";return x(t)==="Delimiter"&&(t=p(t,1)??"Nothing"),x(t)==="Sequence"&&(t=["Block",...v(t)]),["Function",t,...i]},serialize:(e,n)=>{let i=v(n);return i.length<1?"()\\mapsto()":i.length===1?E(["()","\\mapsto",e.serialize(p(n,1))]):i.length===2?E([e.serialize(p(n,2)),"\\mapsto",e.serialize(p(n,1))]):E([e.wrapString(v(n)?.slice(1).map(t=>e.serialize(t)).join(", "),"normal"),"\\mapsto",e.serialize(p(n,1))])}},{name:"Apply",kind:"function",identifierTrigger:"apply",serialize:(e,n)=>{let i=p(n,1),t=x(i);if(t==="InverseFunction"||t==="Derivative"){let s=e.options.applyFunctionStyle(n,e.level),a=v(n).slice(1);return e.serializeFunction(i,e.dictionary.ids.get(t))+e.wrapString(a.map(u=>e.serialize(u)).join(", "),s)}let r=p(n,2);if(typeof i=="string"||!r){let s=v(n).slice(1);return e.serialize(s)}if(W(n)===2)return E([e.wrap(i,20),"\\lhd",e.wrap(r,20)]);let o=e.options.applyFunctionStyle(n,e.level);return E(["\\operatorname{apply}",e.wrapString(e.serialize(t)+", "+e.serialize(["List",...v(n)]),o)])}},{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=Ao(p(n,1));if(x(p(n,2))==="Function"){let t=p(n,2),r=Ao(p(t,1)),o=v(t).slice(1);return E([e.serialize(i),e.wrapString(o.map(s=>e.serialize(s)).join(", "),e.options.applyFunctionStyle(n,e.level)),"\\coloneq",e.serialize(r)])}return E([e.serialize(i),"\\coloneq",e.serialize(p(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=w(p(n,2))??NaN;if(isFinite(i)&&i>=2&&i<=36){let t=w(p(n,1))??NaN;if(isFinite(t)&&Number.isInteger(t)){let r=Number(t).toString(i),o=0;if(i===2||i===10?o=4:i===16?o=2:i>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}}_{${i}}`}}return"\\operatorname{BaseForm}("+e.serialize(p(n,1))+", "+e.serialize(p(n,2))+")"}},{name:"Sequence",serialize:Hi(" ")},{name:"InvisibleOperator",serialize:Hi("")},{name:"Delimiter",serialize:(e,n)=>{let i=e.options.groupStyle(n,e.level+1),t=p(n,1),r={Set:"{,}",List:"[,]",Tuple:"(,)",Single:"(,)",Pair:"(,)",Triple:"(,)",Sequence:"(,)",String:'""'}[x(t)],o=r?t:["Sequence",t];if(r??(r="(,)"),W(n)>1){let f=V(p(n,2));typeof f=="string"&&f.length<=3&&(r=f)}let[s,a,u]=["","",""];r.length===3?[s,a,u]=r:r.length===2?[s,u]=r:r.length===1&&(a=r);let l=t?o?Hi(a)(e,o):e.serialize(t):"";return e.wrapString(l,i,s+u)}},{name:"Domain",serialize:(e,n)=>x(n)==="Error"?e.serialize(n):`\\mathbf{${e.serialize(p(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=p(n,1);if(V(i)==="missing")return`\\error{${e.options.missingSymbol??"\\placeholder{}"}}`;let t=lp(e,n)||"\\blacksquare",r=x(i)==="ErrorCode"?V(p(i,1)):V(i);return r==="incompatible-domain"?D(p(i,3))==="Undefined"?`\\mathtip{\\error{${t}}}{\\notin ${e.serialize(p(i,2))}}`:`\\mathtip{\\error{${t}}}{\\in ${e.serialize(p(i,3))}\\notin ${e.serialize(p(i,2))}}`:typeof r=="string"?`\\error{${t}}`:`\\error{${t}}`}},{name:"ErrorCode",serialize:(e,n)=>{let i=V(p(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-domain"||i==="invalid-domain"?"":`\\texttip{\\error{\\blacksquare}}{\\mathtt{${i}}}`}},{name:"FromLatex",serialize:(e,n)=>`\\texttt{${up(V(p(n,1)))}}`},{name:"Latex",serialize:(e,n)=>n===null?"":E(yr(n,i=>V(i)??e.serialize(i)))},{name:"LatexString",serialize:(e,n)=>n===null?"":E(yr(n,i=>e.serialize(i)))},{name:"LatexTokens",serialize:ap},{name:"At",kind:"postfix",precedence:810,latexTrigger:["["],parse:Or("]"),serialize:(e,n)=>E(["\\lbrack",Hi(", ")(e,n),"\\rbrack"])},{kind:"postfix",precedence:810,latexTrigger:["\\lbrack"],parse:Or("\\rbrack")},{kind:"postfix",precedence:810,latexTrigger:["\\left","\\lbrack"],parse:Or("\\right","\\rbrack")},{kind:"postfix",latexTrigger:["_"],parse:Or()},{name:"List",kind:"matchfix",openTrigger:"[",closeTrigger:"]",parse:dl,serialize:cp},{kind:"matchfix",openTrigger:"(",closeTrigger:")",parse:fp},{latexTrigger:[","],kind:"infix",precedence:20,parse:(e,n,i)=>{let t=cs(e,i,n,20,",");return t===null?null:["Delimiter",["Sequence",...t],{str:","}]}},{latexTrigger:[","],kind:"prefix",precedence:20,parse:(e,n)=>{let i=cs(e,n,null,20,",");return i===null?null:["Delimiter",["Sequence",...i],{str:","}]}},{name:"Range",latexTrigger:[".","."],kind:"infix",precedence:800,parse:dp,serialize:(e,n)=>{let i=v(n);if(i.length===0)return"";if(i.length===1)return"1.."+e.serialize(p(n,1));if(i.length===2)return e.wrap(p(n,1),10)+".."+e.wrap(p(n,2),10);if(i.length===3){let t=w(p(n,3)),r=w(p(n,1));return t!==null&&r!==null?e.wrap(p(n,1),10)+".."+e.wrap(r+t,10)+".."+e.wrap(p(n,2),10):e.wrap(p(n,1),10)+"..("+(e.wrap(p(n,1),275)+"+"+e.wrap(p(n,3),275))+").."+e.wrap(p(n,2),10)}return""}},{latexTrigger:[";"],kind:"infix",precedence:19,parse:(e,n,i)=>{let t=cs(e,i,n,19,";");return t===null?null:["Delimiter",["Sequence",...t],"';'"]}},{name:"String",latexTrigger:["\\text"],parse:e=>ps(e),serialize:(e,n)=>{let i=v(n);return i.length===0?"\\text{}":E(["\\text{",i.map(t=>e.serialize(t)).join(""),"}"])}},{name:"Subscript",latexTrigger:["_"],kind:"infix",serialize:(e,n)=>W(n)===2?e.serialize(p(n,1))+"_{"+e.serialize(p(n,2))+"}":"_{"+e.serialize(p(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)=>Rn(e,n,1),serialize:(e,n)=>{let i=w(p(n,2))??1,t=e.serialize(p(n,1));return i===1?t+"^\\prime":i===2?t+"^\\doubleprime":i===3?t+"^\\tripleprime":t+"^{("+e.serialize(p(n,2))+")}"}},{latexTrigger:"^{\\prime\\prime}",kind:"postfix",parse:(e,n)=>Rn(e,n,2)},{latexTrigger:"^{\\prime\\prime\\prime}",kind:"postfix",parse:(e,n)=>Rn(e,n,3)},{latexTrigger:["^","\\doubleprime"],kind:"postfix",parse:(e,n)=>Rn(e,n,2)},{latexTrigger:["^","\\tripleprime"],kind:"postfix",parse:(e,n)=>Rn(e,n,3)},{latexTrigger:"'",kind:"postfix",precedence:810,parse:(e,n)=>Rn(e,n,1)},{latexTrigger:"\\prime",kind:"postfix",precedence:810,parse:(e,n)=>Rn(e,n,1)},{latexTrigger:"\\doubleprime",kind:"postfix",precedence:810,parse:(e,n)=>Rn(e,n,2)},{latexTrigger:"\\tripleprime",kind:"postfix",precedence:810,parse:(e,n)=>Rn(e,n,3)},{latexTrigger:["^","<{>","("],kind:"postfix",parse:(e,n,i)=>{let t=D(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=D(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(p(n,1))+"^{-1}"},{name:"Derivative",serialize:(e,n)=>{let i=w(p(n,2))??1,t=e.serialize(p(n,1));return i===1?t+"^{\\prime}":i===2?t+"^{\\doubleprime}":i===3?t+"^{\\tripleprime}":t+"^{("+e.serialize(p(n,2))+")}"}},{kind:"environment",name:"Which",identifierTrigger:"cases",parse:ds,serialize:(e,n)=>{let i=[],t=v(n);if(t.length>0)for(let r=0;r<=t.length-2;r+=2){let o=[];o.push(e.serialize(t[r+1])),o.push(e.serialize(t[r])),i.push(o.join("&"))}return E(["\\begin{cases}",i.join("\\\\"),"\\end{cases}"])}},{kind:"environment",identifierTrigger:"dcases",parse:ds},{kind:"environment",identifierTrigger:"rcases",parse:ds}];function ps(e,n){if(!e.match("<{>"))return"''";let i=[],t="",r=null;for(;!e.atEnd&&!e.match("<}>");)if(e.peek==="<{>")i.push(ps(e));else if(e.match("\\textbf")&&e.match("<{>"))i.push(ps(e,{"font-weight":"bold"}));else if(e.match("\\color")){let s=e.parseStringGroup();s!==null&&(r!==null&&t?i.push(["Style",t,xr(r)]):t&&i.push(["String",t]),t="",r={color:s})}else if(e.match("<space>"))t+=" ";else if(e.match("<$>")){let s=e.index,a=e.parseExpression()??"Nothing";e.skipSpace(),e.match("<$>")?i.push(a):(t+="$",e.index=s)}else if(e.match("<$$>")){let s=e.index,a=e.parseExpression()??"Nothing";e.skipSpace(),e.match("<$$>")?i.push(a):(t+="$$",e.index=s)}else{let s=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"}[s]??s}r!==null&&t?i.push(["Style",`'${t}'`,xr(r)]):t&&i.push(`'${t}'`);let o;return i.length===1?o=i[0]:i.every(s=>V(s)!==null)?o="'"+i.map(s=>V(s)).join()+"'":o=["String",...i],n?["Style",o,xr(n)]:o}function ap(e,n){return n===null?"":E(yr(n,i=>{let t=V(i);return t===null?e.serialize(i):t==="<{>"?"{":t==="<}>"?"}":t==="<$>"?"$":t==="<$$>"?"$$":t==="<space>"?" ":t}))}function up(e){return e===null?"":e.replace(/[{}\[\]\\:\-\$%]/g,n=>({"{":"\\lbrace ","}":"\\rbrace ","[":"\\lbrack ","]":"\\rbrack ",":":"\\colon ","\\":"\\backslash "})[n]??"\\"+n)}function lp(e,n){let i=p(n,2);return i?x(i)==="LatexString"?V(p(i,1))??"":x(i)==="Hold"?e.serialize(p(i,1)):e.serialize(i):""}function Rn(e,n,i){let t=x(n);if(t==="Derivative"||t==="Prime"){let o=w(p(n,2))??1;return[t,C(p(n,1)),o+i]}let r=D(n);return r&&e.getIdentifierType(r)==="function"||x(n)?i===1?["Derivative",n]:["Derivative",n,i]:i===1?["Prime",C(n)]:["Prime",C(n),i]}function fp(e,n){if(z(n))return["Delimiter"];let i=x(n);if(i==="Delimiter"&&p(n,2)!==null){let t=V(p(n,2));if(t?.length===1)return["Delimiter",p(n,1)??"Nothing",{str:`(${t})`}]}return i==="Matrix"&&(V(p(n,2))??"..")===".."?["Matrix",p(n,1)]:["Delimiter",n]}function dl(e,n){if(z(n))return["List"];let i=x(n);if(i==="Range"||i==="Linspace")return n;if(i==="Sequence")return["List",...v(n)];if(i==="Delimiter"){let t=V(p(n,2))??"...";if(t===";"||t===".;.")return["List",...(v(p(n,1))??[]).map(r=>dl(e,r))];if(t===","||t===".,.")return n=p(n,1),x(n)==="Sequence"?["List",...v(n)]:["List",n??"Nothing"]}return["List",n]}function cp(e,n){return W(n)>1&&v(n).every(i=>{let t=x(i);return fr(t)||lr(t)})?E(["\\begin{cases}",Hi("\\\\")(e,n),"\\end{cases}"]):E(["\\bigl\\lbrack",Hi(", ")(e,n),"\\bigr\\rbrack"])}function dp(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=w(n),o=w(i);return r!==null&&o!==null?o<=r?null:o-r===1?["Range",n,t]:["Range",n,t,o-r]:["Range",n,t,["Subtract",i,n]]}return["Range",n,i]}var Wi={"(":"(",")":")","[":"\\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(x(n)==="InvisibleOperator"&&W(n)===2&&x(p(n,2))==="Delimiter"){let r=D(p(n,1));if(!r)return null;let o=e.parseExpression({minPrec:0});if(o===null)return null;let s=p(p(n,2),1),a=[];return x(s)==="Sequence"?a=[...v(s)]:s&&(a=[s]),["Assign",r,["Function",o,...a??[]]]}let i=x(n);if(i){let r=v(n),o=e.parseExpression({minPrec:0});return o===null?null:["Assign",i,["Function",o,...r]]}if(!D(n))return null;let t=e.parseExpression({minPrec:0});return t===null?null:["Assign",n,t]}function ds(e){let n=e.parseTabular();if(!n)return["List"];if(n.every(t=>{if(t.length!==1)return!1;let r=x(t[0]);return lr(r)||fr(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":Ro(t[1])??"True"),i.push(t[0])}return["Which",...i]}function Or(...e){return(n,i)=>{if(!D(i)&&x(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)?null:(x(t)==="Delimiter"&&(t=p(t,1)??"Nothing"),x(t)==="Sequence"?["At",i,...v(t)]:["At",i,t])}}var gs={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}}`},hs={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}}`},xs=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"||wi(n)){let r=w(n);return r!==null&&r<0&&i>275?this.wrap(n):this.serialize(n)}let t=x(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(D(n)!==null||Bn(n)&&!/^(-|\.)/.test(i))return i;let r=x(n);return r==="Delimiter"&&W(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]??".",o=t?.[1]??".";return r==='"'?r="``":r==="|"?r="\\lvert":r=Wi[r]??r,o==='"'?o="''":o==="|"?o="\\rvert":o=Wi[o]??o,r==="."&&o==="."?n:((r==="."||o===".")&&i==="normal"&&(i="scaled"),i==="scaled"?`\\left${r}${n}\\right${o}}`:i==="big"?`${`\\Bigl${r}`}${n}${`\\Bigr${o}`})`:r+n+o)}wrapArguments(n){return this.wrapString(v(n).map(i=>this.serialize(i)).join(", "),this.options.applyFunctionStyle(n,this.level))}serializeSymbol(n,i){return typeof n=="string"||hr(n),i?.kind==="function"?ms(D(n)??"")??"":i?.serialize?.(this,n)??ms(D(n))??""}serializeFunction(n,i){if(i?.serialize)return i.serialize(this,n);let t=x(n);return ms(t,"auto")+this.wrapArguments(n)}serialize(n){if(n==null)return"";this.level+=1;try{let i=(()=>{let t=al(n,this.options);if(t)return t;let r=V(n);if(r!==null)return`\\text{${r}}`;let o=D(n);if(o!==null)return this.serializeSymbol(n,this.dictionary.ids.get(o));let s=x(n);if(s){let a=this.dictionary.ids.get(s);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 pp(e){let n=e.match(/^([^_]+)/)?.[1]??"",i=ln.findIndex(s=>n===s[0]);if(i>=0)return[ln[i][1],e.substring(ln[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(s=>e.startsWith(s)),i>=0){let s=Object.keys(t)[i];return[t[s],e.substring(s.length)]}let r=e.codePointAt(0);if(i=ln.findIndex(s=>s[2]===r),i>=0)return[ln[i][1],e.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(i=Object.keys(o).findIndex(s=>n===s),i>=0){let s=Object.keys(o)[i];return[o[s],e.substring(s.length)]}return[n,e.substring(n.length)]}function mp(e){let[n,i]=pp(e),t=[];for(;i.length>0;){let o=i.match(/^_([a-zA-Z]+)(.*)/);if(!o||!gs[o[1]])break;t.push(o[1]),i=o[2]}let r=[];for(;i.length>0;){let o=i.match(/^_([a-zA-Z]+)(.*)/);if(!o||!hs[o[1]])break;r.push(o[1]),i=o[2]}return[n,t,r,i]}function Lr(e,n=!0,i="auto"){let[t,r,o,s]=mp(e);for(let a of r)gs[a]&&(t=gs[a](t));if(n){let a=[],u=[],l=t.match(/^([^\d].*?)(\d+)$/);for(l&&(u.push(l[2]),t=l[1]);s.length>0;)if(s.startsWith("__")){let[f,c]=Lr(s.substring(2),!1,"none");a.push(f),s=c}else if(s.startsWith("_")){let[f,c]=Lr(s.substring(1),!1,"none");u.push(f),s=c}else break;a.length>0&&(t=`${t}${Ni("^",a.join(","))}`),u.length>0&&(t=`${t}${Ni("_",u.join(","))}`)}for(let a of o)hs[a]&&(t=hs[a](t));if(o.length===0&&i!=="none")switch(i){case"auto":sr(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,s]}function ms(e,n="auto"){if(e===null)return null;if(Zi.test(e))return e;let i=e.match(/^(_+)(.*)/);if(i){let[o,s]=Lr(i[2],!0,"none");return`\\operatorname{${"\\_".repeat(i[1].length)+o+s}}`}let[t,r]=Lr(e,!0,n);return r.length>0?`\\operatorname{${e}}`:t}function pl(e,n,i){if(i.invisibleMultiply&&(!/#1/.test(i.invisibleMultiply)||!/#2/.test(i.invisibleMultiply)))throw Error("Expected 2 arguments (#1 and #2) for invisibleMultiply");return new xs(n,i).serialize(e)}var ml={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"},gl={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 hl(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&&bs(n(e.op2,12),hl(i.re.toString(),`${i.im}i`));let t=e.op2;if((t.symbol||t.operator==="Power"||t.operator==="Square"||typeof Es[t.operator]=="string")&&In(i)&&i[0]===1){let r=i[1];return`${n(t,12)}/${r}`}return bs(n(e.op1,12),n(e.op2,12))}}return e.ops.reduce((i,t)=>bs(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}^${ui(i)}`},15],Equal:["===",8],NotEqual:["!==",8],LessEqual:["<=",9],GreaterEqual:[">=",9],Less:["<",9],Greater:[">",9],And:["&&",4],Or:["||",3],Not:["!",14]},Es={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${ui(n(i))}`:`root${ui(n(t))}${ui(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)=>ys(e,"sum",n),Product:(e,n)=>ys(e,"prod",n),Integrate:(e,n)=>ys(e,"int",n),Delimiter:(e,n)=>gp(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 ys(e,n,i){let t=e.op2,r=t?.op1,o=t?.op2,s=t?.op3;r.symbol==="Nothing"&&(r=null),o.symbol==="Nothing"&&(o=null),s.symbol==="Nothing"&&(s=null);let a=n;return r&&o&&(a+=`_(${i(r)}=${i(o)})`),s&&(a+=`^${ui(i(s))}`),a+ui(i(e.op1))}function gp(e,n,i){n||(n="(,)");let t="",r="",o="";if(n.length===1&&(t=n),n.length===2&&(r=n[0],o=n[1]),n.length===3&&(r=n[0],t=n[1],o=n[2]),!e)return`${r}${o}`;let s=[e.op1];return e.op1.operator==="Sequence"&&(s=e.op1.ops),`${r}${s.map(a=>i(a)).join(t)}${o}`}function ui(e,n=0,i=-1){return n>i&&!/^\(.+\)$/.test(e)?`(${e})`:e}function Fr(e,n={}){return n.symbols?.[e]?n.symbols[e]:ml[e]?ml[e]:e.length===1?e:`"${e}"`}function qr(e,n={},i=0){if(e.symbol)return Fr(e.symbol,n);let t=(o,s=0)=>qr(o,n,s);if(e.string)return e.string;let r=e.numericValue;if(r!==null){let o=e.engine;return e.isNaN?Fr("NaN",n):e.isFinite===!1?e.isNegative!==!0&&e.isPositive!==!0?Fr("ComplexInfinity",n):Fr(e.isNegative?"NegativeInfinity":"PositiveInfinity",n):r.toString()}if(e.operator){let o=n.operators?{...gl,...n.operators}:gl,[s,a]=o[e.operator]??[];if(s){let f="";if(typeof s=="function")f=s(e,t);else{if(e.nops===1)return`${s}${t(e.op1,a+1)}`;f=e.ops?.map(c=>t(c,a+1)).join(` ${s} `)??""}return ui(f,i,a)}let l=(n.functions?{...Es,...n.functions}:Es)[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 bs(e,n){return e?n?e==="1"?n:n==="1"?e:(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 hl(e,n){return e?n?e==="0"?n:n==="0"?e:n.startsWith("-")?`${e} - ${n.substring(1)}`:`${e} + ${n}`:e:n}function xl(e,n,i,t,r){if(n.numericValue!==null&&n.isNegative){let o=n.numericValue;if(typeof o=="number")return M(e,"Subtract",[i,e.number(-o)],t,r);if(g(n.type,"rational"))return M(e,"Subtract",[i,e.number(o.neg())],t,r)}return n.operator==="Negate"&&i.operator!=="Negate"?M(e,"Subtract",[i,n.op1],t,r):null}function hp(e,n,i,t,r){let o=t.exclude;if(n==="Add"&&i.length===2&&!o.includes("Subtract")){let s=xl(e,i[0],i[1],t,r)??xl(e,i[1],i[0],t,r);if(s)return s}if(n==="Divide"&&i.length===2&&o.includes("Divide"))return M(e,"Multiply",[i[0],e._fn("Power",[i[1],e.NegativeOne])],t,r);if(n==="Multiply"&&!o.includes("Negate")&&i[0].im===0&&i[0].re===-1)return i.length===2?M(e,"Negate",[i[1]],t):M(e,"Negate",[e._fn("Multiply",[...i.slice(1)].sort(ue))],t,r);if(n==="Multiply"&&!o.includes("Divide")){let s=new Ne(e,i,{canonical:!1}).asRationalExpression();if(s.operator==="Divide")return M(e,s.operator,s.ops,t,r)}if(n==="Power"){if(!o.includes("Exp")&&i[0]?.symbol==="ExponentialE")return M(e,"Exp",[i[1]],t,r);if(i[1]?.numericValue!==null){let s=$(i[1]);if(s===2&&!o.includes("Square"))return M(e,"Square",[i[0]],t,r);if(s!==null&&s<0&&!o.includes("Divide"))return M(e,"Divide",[e.One,s===-1?i[0]:i[0].pow(-s)],t,r);let a=i[1].re;if(!o.includes("Sqrt")&&a===.5)return M(e,"Sqrt",[i[0]],t,r);if(!o.includes("Sqrt")&&a===-.5)return M(e,"Divide",[e.One,e._fn("Sqrt",[i[0]])],t,r);if(In(a)){let u=ko(a),l=wo(a);if(u===1){if(!o.includes("Sqrt")&&l===2)return M(e,"Sqrt",[i[0]],t,r);if(!o.includes("Root"))return M(e,"Root",[i[0],e.number(a[1])],t,r)}if(u===-1){if(!o.includes("Sqrt")&&l===2)return M(e,"Divide",[e.One,e._fn("Sqrt",[i[0]])],t,r);if(!o.includes("Root"))return M(e,"Divide",[e.One,e._fn("Root",[i[0],e.number(a[1])])],t,r)}}}}if(n==="Add"&&i.length===2&&!o.includes("Subtract")){if(i[1]?.numericValue!==null){let s=$(i[1]);if(s!==null&&s<0)return M(e,"Subtract",[i[0],e.number(-s)],t,r)}if(i[1]?.operator==="Negate")return M(e,"Subtract",[i[0],i[1].op1],t,r)}if(n==="Tuple"){if(i.length===1&&!o.includes("Single"))return M(e,"Single",i,t,r);if(i.length===2&&!o.includes("Pair"))return M(e,"Pair",i,t,r);if(i.length===3&&!o.includes("Triple"))return M(e,"Triple",i,t,r)}return M(e,n,i,t,r)}function M(e,n,i,t,r){let o=t.exclude;if(n==="Negate"&&i.length===1){let l=i[0]?.numericValue;if(l!==null){if(typeof l=="number")return xn(e,-l,t);if(l instanceof Q||l instanceof O)return xn(e,l.neg(),t);if(In(l))return xn(e,ii(l),t)}}if(typeof n=="string"&&o.includes(n)){if(n==="Rational"&&i.length===2)return M(e,"Divide",i,t,r);if(n==="Complex"&&i.length===2)return M(e,"Add",[i[0],e._fn("Multiply",[i[1]??e.symbol("Undefined"),e.I])],t,r);if(n==="Sqrt"&&i.length===1)return M(e,"Power",[i[0],o.includes("Half")?e.number([1,2]):e.Half],t,r);if(n==="Root"&&i.length===2&&i[1]?.numericValue!==null){let l=$(i[1]);if(l===2)return M(e,"Sqrt",[i[0]],t);if(l!==null)return l<0?M(e,"Divide",[e.One,e._fn("Power",[i[0]??e.symbol("Undefined"),e.number([1,-l])])],t,r):M(e,"Power",[i[0],e.number([1,-l])],t,r)}if(n==="Square"&&i.length===1)return M(e,"Power",[i[0],e.number(2)],t,r);if(n==="Exp"&&i.length===1)return M(e,"Power",[e.E,i[0]],t,r);if(n==="Pair"||n=="Single"||n==="Triple")return M(e,"Tuple",i,t,r);if(n==="Subtract"&&i.length===2)return M(e,"Add",[i[0],e._fn("Negate",[i[1]??e.symbol("Undefined")])],t,r);if(n==="Subtract"&&i.length===1)return M(e,"Negate",i,t,r)}let a=[n,...i.map(l=>l?Ns(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 xp(e,n){return e=e,n.shorthands.includes("string")?`'${e}'`:{str:e}}function jn(e,n,i,t){if(n==="Half"&&i.exclude.includes("Half"))return xn(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 yl(e,n){if(!n.repeatingDecimal)return e;let[i,t,r,o]=e.match(/^(.*)\.([0-9]+)([e|E][-+]?[0-9]+)?$/)??[];if(!r)return e.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 f=0;f<=a;f++){let c=r.substring(l,l+f+1),d=Math.floor((r.length-u.length)/c.length);if(d<3)break;if((u+c.repeat(d+1)).startsWith(r))return c==="0"?s==="0"?t+"."+u+(o??""):e:t+"."+u+"("+c+")"+(o??"")}}for(r+=s;r.endsWith("0");)r=r.slice(0,-1);return o?`${t}.${r}${o.toLowerCase()}`:`${t}.${r}`}function xn(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"),o=i.exclude;if(n instanceof q){if(n.isNaN)return jn(e,"NaN",i,t);if(n.isPositiveInfinity)return jn(e,"PositiveInfinity",i,t);if(n.isNegativeInfinity)return jn(e,"NegativeInfinity",i,t);if(n.isComplexInfinity)return jn(e,"ComplexInfinity",i,t);if(r){if(n.isZero)return 0;if(n.isOne)return 1;if(n.isNegativeOne)return-1}if(n instanceof j){let u;return ei(n.rational)?u=xn(e,n.rational[0],i):u=["Rational",xn(e,n.rational[0],i),xn(e,n.rational[1],i)],n.radical===1?n.im===0?u:typeof u=="number"?["Complex",u,n.im]:["Add",u,["Complex",0,n.im]]:_e(n.rational)?n.im===0?["Sqrt",n.radical]:["Add",["Sqrt",n.radical],["Complex",0,n.im]]:ht(n.rational)?n.im===0?["Negate",["Sqrt",n.radical]]:["Add",["Negate",["Sqrt",n.radical]],["Complex",0,n.im]]:n.im===0?["Multiply",u,["Sqrt",n.radical]]:["Add",["Multiply",u,["Sqrt",n.radical]],["Complex",0,n.im]]}if(n.im===0){let u=n.bignumRe??n.re;return xn(e,u,i,t)}return Number.isFinite(n.im)?M(e,"Complex",[e.number(n.bignumRe??n.re),e.number(n.im)],i,{...t,wikidata:"Q11567"}):jn(e,"ComplexInfinity",i,t)}let s="";if(n instanceof Q){let u;if(n.isNaN())u="NaN";else if(!n.isFinite())u=n.isPositive()?"PositiveInfinity":"NegativeInfinity";else{if(r&&wn(n))return n.toNumber();if(n.isInteger()&&n.e<n.precision()+4)s=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(),s=yl(f,i),r){let c=n.toNumber();if(c.toString()===s)return c}}}return i.metadata.includes("latex")&&(t.latex=t.latex??e.box(u??{num:s}).latex),u?t.latex!==void 0?{sym:u,latex:t.latex}:r?u:{sym:u}:t.latex!==void 0?{num:s,latex:t.latex}:r?s:{num:s}}if(n instanceof O)return n.isInfinite()?jn(e,"ComplexInfinity",i,t):n.isNaN()?(s="NaN",i.metadata.includes("latex")&&(t.latex=t.latex??e.box({num:s}).latex),t.latex!==void 0?{num:s,latex:t.latex}:{num:s}):M(e,"Complex",[e.number(n.re),e.number(n.im)],i,{...t,wikidata:"Q11567"});if(In(n)){let u=!o.includes("Rational");return r&&i.shorthands.includes("function")&&ee(n)?n[0]===1&&n[1]===2&&!o.includes("Half")?jn(e,"Half",i,t):[u?"Rational":"Divide",n[0],n[1]]:M(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?Re(n):{num:ge(n)};let a;return Number.isNaN(n)?a="NaN":Number.isFinite(n)?s=yl(n.toString(),i):a=n>0?"PositiveInfinity":"NegativeInfinity",i.metadata.includes("latex")&&(t.latex=t.latex??e.box({num:s}).latex),a?t.latex!==void 0?{sym:a,latex:t.latex}:r?a:{sym:a}:t.latex!==void 0?{num:s,latex:t.latex}:r&&s===n.toString()?n:{num:s}}function Ns(e,n,i){let t=n.scope?n.wikidata:void 0;return n.numericValue!==null?xn(e,n.numericValue,i,{latex:n.verbatimLatex}):n.rank>0?n.json:n.string!==null?xp(n.string,i):n.symbol!==null?jn(e,n.symbol,i,{latex:n.verbatimLatex,wikidata:t}):n.ops?n.isValid&&(n.isCanonical||n.isStructural)&&i.prettify?hp(e,n.operator,n.structural.ops,i,{latex:n.verbatimLatex,wikidata:t}):M(e,n.operator,n.structural.ops,i,{latex:n.verbatimLatex,wikidata:t}):n.json}var Y=class{get head(){return this.operator}constructor(n,i){this.engine=n,i?.latex!==void 0&&(this.verbatimLatex=i.latex)}isSame(n){return Rt(this,n)}isEqual(n){return bu(this,n)}isLess(n){let i=Fi(this,n);if(i!==void 0)return i==="<"}isLessEqual(n){let i=Fi(this,n);if(i!==void 0)return i==="<="||i==="<"||i==="="}isGreater(n){let i=Fi(this,n);if(i!==void 0)return i===">"}isGreaterEqual(n){let i=Fi(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 qr(this,n)}toString(){return qr(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"]),(typeof n.metadata=="string"&&n.metadata==="all"||n.metadata?.includes("all"))&&(i.metadata=["latex","wikidata"]),n.fractionalDigits==="auto"&&(i.fractionalDigits=-this.engine.precision));let t={...i,...n,fractionalDigits:i.fractionalDigits,shorthands:i.shorthands,metadata:i.metadata};return Ns(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:Qu,groupStyle:Xu,rootStyle:Ku,fractionStyle:el,logicStyle:nl,powerStyle:il,numericSetStyle:tl};return n?.fractionalDigits==="auto"&&(t.fractionalDigits=-this.engine.precision),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:pl(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:Rt(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 vl(this,n)}get subexpressions(){return this.getSubexpressions("")}get symbols(){let n=new Set;return El(this,n),Array.from(n)}get unknowns(){let n=new Set;return Nl(this,n),Array.from(n)}get freeVariables(){let n=new Set;return bl(this,n),Array.from(n)}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 this.numericValue!==null}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,o=this.ops.map(s=>r?s.map(n,i):n(s));return n(this.engine.function(this.operator,o,{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"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}evaluate(n){return this.simplify()}N(){return this.evaluate({numericApproximation:!0})}compile(n="javascript",i){if(n!=="javascript")return;i??(i={optimize:["simplify"]});let t=this;return i.optimize.includes("simplify")&&(t=t.simplify()),i.optimize.includes("evaluate")&&(t=t.evaluate()),Ju(t)}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 bl(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)bl(i,n)}function El(e,n){if(e.symbol){n.add(e.symbol);return}if(e.ops)for(let i of e.ops)El(i,n)}function Nl(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)Nl(i,n)}function vl(e,n){let i=!n||e.operator===n?[e]:[];if(e.ops)for(let t of e.ops)i.push(...vl(t,n));return i}function vs(e){let n=[],i=(t,r=[])=>{if(t.length===0)n.push(r);else for(let o=0;o<t.length;o++){let s=t.slice(),a=s.splice(o,1);i(s.slice(),r.concat(a))}};return i(e),n}function Sl(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 Vr(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=Ii(i,r),t.hold)return i;let o=[];for(let s of i){let a=s.operator;if(a==="Hold")o.push(s);else{let u=a==="ReleaseHold"?s.op1:s;if(u){let l=n(u);l!==null&&o.push(l)}}}return Ii(o,r)}function Zn(e,n,i){if((s=>i&&i.some(a=>a.value.isSame(s)))(e)||(i||(i=[{value:e,because:"initial"}]),!e.isValid))return i;if(!(e.isCanonical||e.isStructural)){let s=e.canonical;return s.isCanonical||s.isStructural?Zn(s,n,i):i}let r=e.engine,o=n?.rules?r.rules(n.rules,{canonical:!0}):r.getRuleSet("standard-simplification");n={...n,rules:o};do{let s=bp(e,o,n,i);if(s.length<=i.length)break;e=s.at(-1).value,i=s}while(!i.slice(0,-1).some(s=>s.value.isSame(e)));return i}function yp(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 Tl(e,n){return e.ops?e.engine.function(e.operator,Vr(e,i=>Zn(i,n).at(-1).value)):e}function bp(e,n,i,t){if(e.isNumberLiteral||e.string)return t;if(e.symbol){let s=Dn(e,n,{recursive:!1,canonical:!0,useVariations:!1});return s.length>0?[...t,...s]:t}let r=Tl(e,i);r.isSame(e)||(t=[...t,{value:r,because:"simplified operands"}],e=r);let o=Ep(e,n,i,t);return o.length>t.length?o:t}function Ep(e,n,i,t){let r=Dn(e,n,{recursive:!1,canonical:!0,useVariations:i.useVariations??!1});if(r.length===0)return t;let o=r.at(-1).value;return o.isSame(e)||(o=Tl(o),!yp(e,o,i?.costFunction))?t:(r.at(-1).value=o,[...t,...r])}function li(e){return e.symbol?.startsWith("_")??(e.operator==="Wildcard"||e.operator==="WildcardSequence"||e.operator==="WildcardOptionalSequence")}function fi(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 Ts(e){return typeof e=="string"?e.startsWith("_"):li(e)?!0:e.ops?Ts(e.operator)||e.ops.some(Ts):!1}function $r(e,n,i){return e.startsWith("_"),e==="_"||e==="__"||e==="___"?i:e in i?n.isSame(i[e])?i:null:Ts(n)?null:{...i,[e]:n}}function ci(e,n,i,t){if(li(n))return $r(fi(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?Ss(e,n,i,t):null;let o=n.string;if(o!==null)return e.string===o?i:null;let s=n.symbol;if(s!==null)return s===e.symbol?i:r?Ss(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=$r(f,u.box(e.operator),i),l!==null&&(l=_s(e,n.ops,l,t))):f===e.operator&&(l=u.lookupFunction(f)?.commutative?vp(e,n,i,t):_s(e,n.ops,i,t)),l===null&&a){if(!r)return null;l=Ss(e,n,i,t)}return l!==null&&(i=l),t.recursive&&e.ops&&(l=Np(e,n,i,{...t,acceptVariants:r})??l),l}return null}function Np(e,n,i,t){e.ops;let r=null;for(let o of e.ops){let s=ci(o,n,i,t);s!==null&&(r=s,i=s)}return r}function Ss(e,n,i,t){if(!t.useVariations)return null;let r=e.engine,o={...t,acceptVariants:!1},s=(u,l)=>ci(r.function(u,l,{canonical:!1}),n,i,o),a=n.operator;if(a==="Negate"&&e.is(0))return ci(r.Zero,n.op1,i,o);if(a==="Add"){let u=s("Add",[0,e]);if(u!==null||(e.operator==="Subtract"&&(u=s("Add",[e.op1,["Negate",e.op2]])),u!==null))return u}if(a==="Subtract"){let u=s("Subtract",[e,0]);if(u!==null||(e.operator==="Negate"&&(u=s("Subtract",[0,e.op1])),u!==null))return u}if(a==="Multiply"){let u=s("Multiply",[1,e]);if(u!==null||e.operator==="Negate"&&(u=s("Multiply",[-1,e.op1]),u!==null)||e.operator==="Divide"&&(u=s("Multiply",[e.op1,["Divide",1,e.op2]]),u!==null))return u}if(a==="Divide"){let u=s("Divide",[e,1]);if(u!==null)return u}if(a==="Square"){let u=s("Power",[e,2]);if(u!==null)return u}if(a==="Exp"){let u=s("Power",[r.E,e]);if(u!==null)return u}if(a==="Power"){if(n.op2.re===2&&n.op2.im===0){let u=s("Square",[e]);if(u!==null)return u}if(n.op1.symbol==="ExponentialE"){let u=s("Exp",[e]);if(u!==null)return u}{let u=s("Power",[e,1]);if(u!==null)return u}}return null}function vp(e,n,i,t){e.operator,n.operator;let r=vs(n.ops);for(let o of r){let s=_s(e,o,i,t);if(s!==null)return s}return null}function _s(e,n,i,t){if(n.length===0)return e.ops&&e.ops.length===0?i:null;let r=n[0].engine,o={...i},s=[...e.ops],a=0;for(;a<n.length;){let u=n[a],l=fi(u);if(l!==null)if(l.startsWith("__")){let f=0;if(n[a+1]===void 0)f=s.length+1;else{let d=!1;for(;!d&&f<s.length;)d=ci(s[f],n[a+1],o,t)!==null,f+=1;if(!d&&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(s.length===0)return null;c=s.shift()}else{let d=r.lookupFunction(e.operator),m=s.splice(0,f-1);d?.associative?c=r.function(e.operator,m,{canonical:!1}):c=r.function("Sequence",m,{canonical:!1})}o=$r(l,c,o)}else if(l.startsWith("_")){if(s.length===0)return null;o=$r(l,s.shift(),o)}else o=ci(s.shift(),u,o,t);else{let f=s.shift();if(!f)return null;o=ci(f,u,o,t)}if(o===null)return null;a+=1}return s.length>0?null:o}function Ji(e,n,i){n=n.structural;let t=i?.useVariations??!1,r={recursive:i?.recursive??!1,useVariations:t,acceptVariants:t},o=i?.substitution??{};return ci(e.structural,n.structural,o,r)}function _l(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 Yi(e){if(e!==void 0){if(e==="positive")return!0;if(["non-positive","zero","unsigned","negative","negative-infinity"].includes(e))return!1}}function Qi(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 Xi(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 Ki(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 Gr(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)}var Qe=class extends Y{constructor(i,t,r,o){super(i,o?.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=o?.structural??!1,o?.canonical&&(this._canonical=this),(o?.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:(typeof t.signature!="string"&&t.signature.kind==="signature"&&(t.signature={...t.signature,result:rr(t.signature.result,i)}),!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(o=>o.structural),r=[];if(!i.associative)r=t;else for(let o of t)o.operator===this.operator?r.push(...o.ops):r.push(o);return this.engine.function(this._name,this.isValid?wt(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=$n(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,o]=t.op1.toNumericValue();return[r.neg(),o]}if(t.operator==="Multiply"){let r=[],o=i._numericValue(1);for(let s of t.ops){let[a,u]=s.toNumericValue();o=o.mul(a),u.is(1)||r.push(u)}return r.length===0?[o,i.One]:r.length===1?[o,r[0]]:[o,se(this.engine,r)]}if(t.operator==="Divide"){let[r,o]=t.op1.toNumericValue(),[s,a]=t.op2.toNumericValue(),u=r.div(s);return a.is(1)?[u,o]:[u,i.function("Divide",[o,a])]}if(t.operator==="Power"){if(t.op2.numericValue===null)return[i._numericValue(1),this];let[r,o]=t.op1.toNumericValue();if(r.isOne)return[r,this];let s=$(t.op2);return s!==null?[r.pow(s),i.function("Power",[o,t.op2])]:t.op2.is(.5)?[r.sqrt(),i.function("Sqrt",[o])]:[i._numericValue(1),this]}if(t.operator==="Sqrt"){let[r,o]=t.op1.toNumericValue();return o.is(1)||o.is(0)?r.isOne||r.isZero?[r,o]:[r.sqrt(),o]:[r.sqrt(),i.function("Sqrt",[o])]}if(t.operator==="Root"){let r=t.op2.re;if(isNaN(r)||t.op2.im!==0)return[i._numericValue(1),this];let[o,s]=t.op1.toNumericValue();return r===2?[o.sqrt(),i.function("Sqrt",[s])]:[o.root(r),i.function("Root",[s,t.op2])]}if(t.operator==="Abs"){let[r,o]=t.op1.toNumericValue();return[r.abs(),i.function("Abs",[o])]}if(t.operator,t.operator,t.operator==="Log"||t.operator==="Ln"){let r=t.op2.re;isNaN(r)&&t.operator==="Log"&&(r=10);let[o,s]=t.op1.toNumericValue();return o.isOne?[o,this]:i.box(o.ln(r)).add(i.function(t.operator,[s,t.op2])).toNumericValue()}return[i._numericValue(1),t]}subs(i,t){let r=this._ops.map(o=>o.subs(i,t));return r.every(o=>o.isValid)?this.engine.function(this._name,r,t):this.engine.function(this._name,r,{canonical:!1})}replace(i,t){return Dn(this,i,t).at(-1)?.value??null}match(i,t){return Ji(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 Gr(this._sgn,i,()=>{if(!(!this.isValid||this.isNumber!==!0))return _l(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)return!1;if(!(this.isNaN===void 0||this.isInfinity===void 0))return!(this.isNaN||this.isInfinity)}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 Yi(this.sgn)}get isNonNegative(){return Qi(this.sgn)}get isNegative(){return Xi(this.sgn)}get isNonPositive(){return Ki(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 Ne(this.engine,this.ops).asNumeratorDenominator():[this,this.engine.One]}neg(){return oi(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:Z(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 q){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 Mi(this,i)}pow(i){return de(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,o]=this.ops;return r.pow(o.div(t))}if(this.operator==="Divide"){let[r,o]=this.ops;return r.root(i).div(o.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(o=>o.root(i));return ae(...r)}if(this.operator==="Root"){let[r,o]=this.ops;return r.root(o.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 o=this.engine.number(Math.pow(r,1/t));if(!o.isFinite||o.isInteger)return o}}else{if(r.isOne)return this.engine.One;if(r.isZero)return this.engine.Zero;if(t!==void 0){let o=r.root(t);if(o.isExact)return this.engine.number(o)}}}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,o]=this.ops;return r.isSame(this.engine.E)?o:o.mul(r.ln(t))}if(this.operator==="Root"){let[r,o]=this.ops;return o.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==="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??zn}get baseDefinition(){return this._def}get functionDefinition(){return this._def}get isNumber(){let i=this.type;if(i!=="unknown")return g(i,"number")}get isInteger(){let i=this.type;if(i!=="unknown")return g(i,"integer")}get isRational(){let i=this.type;if(i!=="unknown")return g(i,"rational")}get isReal(){let i=this.type;if(i!=="unknown")return g(i,"real")}get isFunctionExpression(){return!0}get type(){let i=this.isPure&&this._ops.every(t=>t.isConstant)?void 0:this.engine.generation;return Gr(this._type,i,()=>Sp(this))??"unknown"}simplify(i){return Zn(this,i).at(-1)?.value??this}evaluate(i){let t=()=>{if(!this.isValid)return this;if(i??(i={numericApproximation:!1}),i.numericApproximation){let a=this.operator;if(a==="Integrate"||a==="Limit")return this.engine.box(["N",this],{canonical:!0}).evaluate(i)}if(!this.isCanonical){this.engine.pushScope();let a=this.canonical;return this.engine.popScope(),!a.isCanonical||!a.isValid?this:a.evaluate(i)}let r=this.functionDefinition;if(r?.threadable&&this.ops.some(a=>K(a))){let a=Math.max(...this._ops.map(l=>l.functionDefinition?.collection?.size?.(l)??0)),u=[];for(let l=0;l<=a-1;l++){let f=this._ops.map(c=>K(c)?za(c,l%a+1)??this.engine.Nothing:c);u.push(this.engine._fn(this.operator,f).evaluate(i))}return u.length===0?this.engine.Nothing:u.length===1?u[0]:this.engine._fn("List",u)}let o=Vr(this,a=>a.evaluate(i)),s;if(r){let a=this.engine,u=a.swapScope(this.scope);s=r.evaluate?.(o,{...i,engine:a}),a.swapScope(u)}return s??this.engine.function(this._name,o)};return Gr(i?.numericApproximation?this._valueN:this._value,this.engine.generation,t)}N(){return this.evaluate({numericApproximation:!0})}solve(i){let t=ct(i);return t.length!==1?null:Rr(this.simplify(),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}};function Sp(e){if(!e.isValid)return"error";if(e.ops){if(e.operator==="Hold"){let[t]=e.ops;if(t.symbol)return"symbol";if(t.string!==void 0)return"string";if(t.isNumberLiteral)return t.type;if(t.isFunctionExpression){let r=t.functionDefinition;if(r){let o=r.signature;return typeof o!="string"&&o.kind==="signature"?{...o,result:k(r.type?.(t.ops,{engine:e.engine}))??o.result}:o}}return"function"}let n=e.functionDefinition;if(!n)return"function";let i=Ei(n.signature)??"any";return typeof n.type=="function"?k(n.type(e.ops,{engine:e.engine}))??i:i}if(e.symbol||e.isNumberLiteral)return e.type;if(e.string)return"string";if(e.tensor)return e.type}var yn=class e extends Y{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"string"}get complexity(){return 19}get string(){return this._string}match(n,i){return Tn(n)||(n=this.engine.box(n,{canonical:!1})),li(n)?{[fi(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}};function zr(e,n){switch(n){case"float64":case"float32":case"int32":case"uint8":return new Is(e);case"complex128":case"complex64":return new ks(e);case"bool":case"string":case"expression":return new Bs(e)}throw new Error(`Unknown dtype ${n}`)}var Is=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}},Bs=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 Z(...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()}},ks=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 Ur(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 Il(e){if(Be(e))return"bool";if(!e.isNumberLiteral)return"expression";switch(e.type){case"real":case"rational":case"finite_real":case"finite_rational":case"integer":return"float64";case"complex":case"finite_complex":case"imaginary":case"finite_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=Tp(this.shape),this.field=zr(n,i.dtype)}static align(n,i){if(n.dtype===i.dtype)return[n,i];let t=Ur(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,o]=e.align(i,t),s=r.data.map((a,u)=>n(a,o.data[u]));return bn(r.ce,{dtype:r.dtype,shape:r.shape,data:s})}get expression(){let n=this.shape,i=this.rank,t=this.data,r=this._index.bind(this),o=this.field.expression.bind(this.field),s=a=>{if(a.length===i-1){let u=r(a),l=this.ce._fn("List",t.slice(u,u+n[i-1]).map(f=>o(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(s([...a,f+1]));let l=this.ce._fn("List",u);return l.isCanonical=l.ops.every(f=>f.isCanonical),l}};return s([])}get array(){let n=this.shape,i=this.rank,t=this.data;if(i===1)return t;if(i===2){let[s,a]=n,u=new Array(s);for(let l=0;l<s;l++)u[l]=t.slice(l*a,(l+1)*a);return u}let r=this._index.bind(this),o=s=>{if(s.length===i-1){let a=r(s);return t.slice(a,a+n[i-1])}else{let a=[];for(let u=0;u<n[s.length];u++)a.push(o([...s,u+1]));return a}};return o([])}_index(n){let i=this._strides;return n.reduce((t,r,o)=>t+(r-1)*i[o],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 o=r+1;o<n;o++)if(!t(i[r*n+o],i[o*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 o=0;o<n;o++)for(let s=o+1;s<n;s++)if(!t(i[o*n+s],r(i[s*n+o])))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 o=0;o<r;o++)if(t(i[r*n+o]))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 o=r+1;o<n;o++)if(!t(i[r*n+o]))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 o=0;o<n;o++)if(r<o&&!t(i[r*n+o])||r>o&&!t(i[r*n+o]))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 o=0;o<n;o++)if(r===o&&!t(i[r*n+o])||r!==o&&!t(i[r*n+o]))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),o=this.field.isZero.bind(this.field);for(let s=0;s<i;s++)for(let a=0;a<i;a++)if(s===a&&!r(t[s*i+a])||s!==a&&!o(t[s*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,o=this.shape[n-1];for(let s=0;s<o;s++)t[s]=r[s*o+s];return t}trace(n,i){if(this.rank!==2)return;let[t,r]=this.shape;if(t!==r)return;let o=this.data,s=new Array(t);for(let a=0;a<t;a++)s[a]=o[a*t+a];return this.field.addn(...s)}reshape(...n){return bn(this.ce,{dtype:this.dtype,shape:n,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,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,o]=this.shape,s=this.data;t&&(s=s.map(f=>t(f)));let a=0,u=new Array(r*o),l=o;for(let f=0;f<o;f++)for(let c=0;c<r;c++)u[a++]=s[c*l+f];return bn(this.ce,{dtype:this.dtype,shape:[o,r],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),o=this.field.neg.bind(this.field);if(n===2){let[y,N,T,R]=this.data;return t(r(y,R),o(r(N,T)))}let s=this.field.addn.bind(this.field),a=this.field.muln.bind(this.field);if(n===3){let[y,N,T,R,_,P,xe,be,hi]=this.data;return s([a(y,_,hi),a(N,P,xe),a(T,R,be),o(a(T,_,xe)),o(a(N,R,hi)),o(a(y,P,be))])}let u=this.shape[0],l=!1,f=this.field.div.bind(this.field),c=this.field.sub.bind(this.field),d=new Array(u).fill(0).map((y,N)=>N),m=[...this.data];for(let y=0;y<u;y++){let N=d[y-1];if(this.at(N,y)===0){let _;for(_=y+1;_<u;_++)if(this.at(d[_],y)!==0){N=d[_],d[_-1]=d[y-1],d[y-1]=N,l=!l;break}if(_===u)return this.at(N,y)}let T=this.at(N,y),R=y===0?1:this.at(d[y-2],y-2);for(let _=y+1;_<u;_++){let P=d[_-1];for(let xe=y+1;xe<u;xe++)m[P][xe]=f(c(r(m[P][xe],T),r(m[P][y],m[N][xe])),R)}}let b=m[d[u-1]][u-1];return l?this.field.neg(b):b}inverse(){if(this.rank!==2)return;let[n,i]=this.shape;if(n!==i)return;if(n===2){let[d,m,b,y]=this.data,N=this.determinant();if(N===void 0||this.field.isZero(N))return;let T=this.field.div.bind(this.field),R=this.field.neg.bind(this.field),_=[T(y,N),R(T(m,N)),R(T(b,N)),T(d,N)];return bn(this.ce,{dtype:this.dtype,shape:[i,i],data:_})}let t=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(t).fill(0).map((d,m)=>{let b=new Array(t).fill(0);return b[m]=1,b}),l=a.map((d,m)=>[...d,...u[m]]),f=new Array(t).fill(0).map((d,m)=>m);for(let d=0;d<t;d++){let m=f[d-1];if(this.at(m,d)===0){let N;for(N=d+1;N<t;N++)if(this.at(f[N],d)!==0){m=f[N],f[N-1]=f[d-1],f[d-1]=m;break}if(N===t)return}let b=this.at(m,d),y=d===0?1:this.at(f[d-2],d-2);for(let N=d+1;N<t;N++){let T=f[N-1];for(let R=d+1;R<t*2;R++)l[T][R]=o(l[T][R],s(r(s(l[T][d],l[m][R]),b),y))}}for(let d=t-1;d>=0;d--){let m=l[f[d],d];for(let b=0;b<d;b++){let y=f[b];for(let N=t;N<t*2;N++)l[y][N]=o(l[y][N],s(r(s(l[y][d],l[d][N]),m),m))}for(let b=t;b<t*2;b++)l[d][b]=r(l[d][b],m)}let c=l.map(d=>d.slice(t));return bn(this.ce,{dtype:this.dtype,shape:[i,i],data:c})}pseudoInverse(){}adjugateMatrix(){}minor(n,i){}map1(n,i){return bn(this.ce,{dtype:this.dtype,shape:this.shape,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,data:this.data.map((r,o)=>n(r,t[o]))})}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((o,s)=>o===n.shape[s]))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((o,s)=>i(o,t(n.data[s],r))):this.data.every((o,s)=>i(o,n.data[s]))}};function Tp(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 ws=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)}},Ds=class extends Hn{constructor(i,t){super(i,t);this.dtype="complex128";this.data=t.data}},Rs=class extends Hn{constructor(i,t){super(i,t);this.dtype="bool";this.data=t.data}},As=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 ws(e,n):i==="bool"?new Rs(e,n):i==="complex64"||i==="complex128"?new Ds(e,n):new As(e,n)}var Lt=class e extends Y{constructor(i,t,r){super(i,r?.metadata);this.options=r;if(t instanceof Hn)this._tensor=t;else{let o=r?.canonical??!0;this._operator=t.op??"List",this._ops=o?Pe(i,t.ops):t.ops,this._expression=i._fn(this._operator,this._ops,{canonical:o})}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=Bl(this._operator,this._ops);if(i===void 0){let t=Bl(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 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 o=t.map(s=>this.tensor.field.cast(s,"expression")??i.engine.Nothing);for(let s of o)if(i.isSame(s))return!0;return!1}get size(){return this.tensor.shape.reduce((i,t)=>i*t,1)}each(i,t){let r=this.tensor.data,o=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[o++-1]),done:!1}):{value:void 0,done:!0}}}at(i){}indexOf(i){return-1}match(i,t){return Tn(i)||(i=this.engine.box(i,{canonical:!1})),li(i)?{[fi(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 Ae(e){return e instanceof Lt}function Ms(e,n){let i,t=[],r=!0,o=(s,a=0)=>{if(s.length!==0){s.length>1&&t[a]!==void 0?r=r&&t[a]===s.length:t[a]=Math.max(t[a]??0,s.length);for(let u of s)if(u.operator===e?o(u.ops,a+1):i=Ur(i,Il(u)),!r)return}};return o(n),r?{shape:t,dtype:i}:void 0}function Bl(e,n){let{shape:i,dtype:t}=Ms(e,n)??{shape:[],dtype:void 0};if(t===void 0)return;let r=!0,o=[],s=zr(n[0].engine,"expression"),a=s.cast.bind(s),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}o.push(c)}};if(u(n),!!r)return{shape:i,data:o,dtype:t}}function jr(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=i.canonical.re;if(Number.isInteger(t)){let o=e[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 t<0&&(u=u.neg()),n._fn("Add",[i.canonical,u])}}}let r=e[1];if(!isNaN(t)){let o=r.canonical;if(o.re===0&&o.im===1)return n.number(n.complex(0,t))}if(i.symbol&&r.operator==="Delimiter"&&!n.lookupSymbol(i.symbol)){if(r.nops===0)return n.lookupFunction(i.symbol)||n.declare(i.symbol,"function"),n.box([i.symbol]);let o=r.op1.operator==="Sequence"?r.op1.ops:[r.op1];if(o=ie(o),!n.lookupSymbol(i.symbol))return n.lookupFunction(i.symbol)||n.declare(i.symbol,"function"),n.function(i.symbol,o)}if(i.symbol&&r.operator==="Delimiter"&&(r.op2.string==="[,]"||r.op2.string==="[;]")){let o=r.op1.operator==="Sequence"?r.op1.ops:[r.op1];return n.function("At",[i,...o])}}return e=kl(e),e=ie(e),e.every(t=>t.isValid&&(t.type==="unknown"||g(t.type,"number")||Kn(t)&&!t.string))?se(n,e):n._fn("Tuple",e)}function kl(e){let n=[];for(let i of e)i.operator==="InvisibleOperator"?n.push(...kl(i.ops)):n.push(i);return n}function di(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=Ps(e);break;case"Number":e=wl(e);break;case"Multiply":e=Dl(e);break;case"Add":e=Rl(e);break;case"Power":e=et(e);break;case"Divide":e=Al(e);break;case"Flatten":e=Cs(e);break;case"Order":e=Zo(e,{recursive:!0});break;default:throw Error("Invalid canonical form")}return e}function Cs(e){if(!e.operator||!e.ops||e.nops===0)return e;if(e.operator==="Delimiter")return Cs(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,Ii(e.ops.map(Cs),e.operator)):e}function Ps(e){return e.ops?e.operator==="InvisibleOperator"?jr(e.ops.map(Ps),{engine:e.engine})??e:e.engine._fn(e.operator,e.ops.map(Ps)):e}function wl(e){return e.numericValue!==null?e.canonical:e.ops?e.engine._fn(e.operator,e.ops.map(wl)):e}function Dl(e){if(!e.ops)return e;let n=e.ops.map(Dl);return e.operator==="Multiply"?se(e.engine,n.map(i=>i.canonical)):e.operator==="Negate"?se(e.engine,[n[0],e.engine.NegativeOne]):e}function Rl(e){if(!e.ops)return e;let n=e.ops.map(Rl);return e.operator==="Add"?Fe(e.engine,n):e.operator==="Subtract"?Fe(e.engine,[n[0],n[1].neg()]):e.engine._fn(e.operator,n)}function et(e){return e.ops?e.operator==="Power"?et(e.op1).pow(et(e.op2)):e.ops?e.engine._fn(e.operator,e.ops.map(et)):e:e}function Al(e){return e.operator==="Divide"?Ze(et(e.op1),et(e.op2)):e.ops?e.engine._fn(e.operator,e.ops.map(Al)):e}function Os(e,n,i){if(n instanceof Y)return n;if(n=C(n),typeof n=="string")return fn(e,n,i);if(Array.isArray(n)){let[t,...r]=n;return new Qe(e,t,r.map(o=>Os(e,o,i)))}if(typeof n=="object"){if("fn"in n)return Os(e,n.fn,i);if("str"in n)return new yn(e,n.str);if("sym"in n)return fn(e,n.sym,i);if("num"in n)return fn(e,n.num,i)}return fn(e,n,i)}function Zr(e,n,i,t){if(t=t?{...t}:{},"canonical"in t||(t.canonical=!0),!he(n))throw new Error(`Unexpected function name: "${n}" (not a valid identifier: ${Ye(n)})`);let r=t.structural??!1;if(n==="Hold")return new Qe(e,"Hold",[Os(e,i[0],t)],{...t,canonical:!0,structural:r});if(n==="Error"||n==="ErrorCode")return e._fn(n,i.map(s=>e.box(s,{canonical:!1})),t.metadata);if(n==="String")return i.length===0?new yn(e,"",t.metadata):new yn(e,i.map(s=>Ml(s)??"").join(""),t.metadata);if(n==="Symbol"&&i.length>0)return e.symbol(i.map(s=>Ml(s)??"").join(""),t);if(n==="Number"&&i.length===1)return fn(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 s=Cl(i[0]);if(s!==null){let a=Cl(i[1]);if(a!==null)return e.number([s,a],t)}n="Divide"}if(n==="Complex"){if(i.length===1){let s=i[0];if(s instanceof Y&&s.isNumberLiteral)return e.number(e.complex(0,s.re),t);let a=w(i[0]);return a!==null&&a!==0?e.number(e.complex(0,a),t):e.box(s).mul(e.I)}if(i.length===2){let s=i[0]instanceof Y?i[0].re:w(i[0]),a=i[1]instanceof Y?i[1].re:w(i[1]);return a!==null&&s!==null&&!isNaN(a)&&!isNaN(s)?a===0&&s===0?e.Zero:a!==0?e.number(e._numericValue({re:s,im:a}),t):fn(e,i[0],t):fn(e,i[0],t).add(fn(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 s=i[0];if(typeof s=="number")return e.number(-s,t);if(s instanceof Q)return e.number(s.neg(),t);let a=e.box(s,t);i=[a];let u=a.numericValue;if(u!==null)return e.number(typeof u=="number"?-u:u.neg(),t)}}return t.canonical===!0?_p(e,n,i,t.metadata):di(new Qe(e,n,i.map(s=>fn(e,s,{canonical:t.canonical,structural:r})),{metadata:t.metadata,canonical:!1,structural:r}),t.canonical??!1)}function fn(e,n,i){if(n==null)return e.error("missing");if(n instanceof q)return Bp(e,n);if(n instanceof Y)return di(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 di(Zr(e,n[0],n.slice(1),{canonical:t,structural:r}),i.canonical)}if(typeof n=="number"||n instanceof Q||n instanceof O)return e.number(n);if(typeof n=="string")return n.startsWith("'")&&n.endsWith("'")?new yn(e,n.slice(1,-1)):/^[+-]?[0-9]/.test(n)?e.number(n):he(n)?e.symbol(n,{canonical:t}):e.error("invalid-identifier",n);if(typeof n=="object"){if("fn"in n){let[o,...s]=n.fn;return di(Zr(e,o,s,{canonical:t,structural:r}),i.canonical)}if("str"in n)return new yn(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 Ml(e){if(typeof e=="string")return e;if(e instanceof Y)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 _p(e,n,i,t){let r=Ip(e,n,i,t);if(r)return r;if(n==="List"){let l=i.map(d=>e.box(d)),{shape:f,dtype:c}=Ms("List",l)??{};return c&&f?new Lt(e,{op:"List",ops:l}):e._fn("List",l)}let o=e.lookupFunction(n);if(!o)return new Qe(e,n,ie(Pe(e,i)),{metadata:t,canonical:!0});let s;if(o.hold?s=i.map(l=>{let f=e.box(l,{canonical:!1});return f.operator==="ReleaseHold"?f.op1.canonical:f}):s=i.map(l=>e.box(l)),o.canonical){try{let l=o.canonical(s,{engine:e});if(l)return l}catch(l){console.error(l.message)}return new Qe(e,n,s,{metadata:t,canonical:!1})}let a=ie(s,o.associative?n:void 0),u=ja(e,a,o);if(u)return e._fn(n,u,t);if(a.length===1&&a[0].operator===n){if(o.involution)return a[0].op1;if(o.idempotent)return e._fn(n,s[0].ops,t)}return e._fn(n,wt(n,a),t)}function Ip(e,n,i,t){let r=[];if(n==="Add"||n==="Multiply")r=Le(e,_i(e,i),{flatten:n});else if(n==="Negate"||n==="Square"||n==="Sqrt"||n==="Exp")r=Le(e,_i(e,i),1);else if(n==="Ln"||n==="Log")r=Le(e,_i(e,i)),r.length===0&&(r=[e.error("missing")]);else if(n==="Power"||n==="Root")r=Le(e,_i(e,i),2);else if(n==="Divide")r=Le(e,_i(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(o=>o.isValid))return e._fn(n,r,t);if(n==="Add")return Fe(e,r);if(n==="Negate")return r[0].neg();if(n==="Multiply")return se(e,r);if(n==="Divide")return r.length===2?Ze(...r):r.slice(1).reduce((o,s)=>Ze(o,s),r[0]);if(n==="Exp")return Oi(e.E,r[0]);if(n==="Square")return Oi(r[0],e.number(2));if(n==="Power")return Oi(r[0],r[1]);if(n==="Root")return si(r[0],r[1]);if(n==="Sqrt")return si(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 Bp(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 o=n.im;return o===0?e.number(n.bignumRe??n.re):n.re===0?e.number(e.complex(0,o)):n.bignumRe!==void 0&&!wn(n.bignumRe)?Fe(e,[e.number(n.bignumRe),e.number(e.complex(0,o))]):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 o=t.rational,s=e.function("Sqrt",[e.number(t.radical)]);if(_e(o))i.push(s);else{let[a,u]=o;u===1?a===1?i.push(s):i.push(e.function("Multiply",[e.number(a),s])):a===1?i.push(e.function("Divide",[s,e.number(u)])):i.push(e.function("Divide",[e.function("Multiply",[e.number(a),s]),e.number(u)]))}}let r;return n.im===0?i.length===0?e.Zero:(r=i.length===1?i[0]:se(e,i),r):i.length===0?e.number(e.complex(0,n.im)):(r=i.length===1?i[0]:se(e,i),Fe(e,[r,e.number(e.complex(0,n.im))]))}function Cl(e){return typeof e=="bigint"?e:typeof e=="number"&&Number.isInteger(e)?BigInt(e):e instanceof Y?bt(e):e instanceof Q||typeof e=="string"?X(e):e instanceof O?e.im===0?X(e.re):null:Ka(e)}var kp={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"]]],Arcoth:["Negate",["Power",["Subtract",1,["Power","_",2]],-1]],Ln:["Divide",1,"_"],Log:["Power",["Multiply","_",["Ln","10"]],-1],Sqrt:["Multiply",["Power","_",["Negate","Half"]],"Half"],Abs:["Piecewise",["Tuple",["Multiply","_",["Power","_",-1]],["Greater","_",0]]],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 Pl(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=Xe(r,t);return r}function Xe(e,n){let i=e.engine;if(e.string)return;if(e.numericValue!==null)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 s=Xe(e.op1,n);return s?s.neg():i._fn("D",[e.op1,i.symbol(n)]).neg()}if(e.operator==="Add"){let s=e.ops.map(a=>Xe(a,n));return s.some(a=>a===void 0)?void 0:Z(...s).evaluate()}if(e.operator==="Multiply"){let s=e.ops.map((a,u)=>{let l=e.ops.slice();l.splice(u,1);let f=ae(...l);return(Xe(a,n)??i._fn("D",[a,i.symbol(n)])).mul(f)});return s.some(a=>a===void 0)?void 0:Z(...s).evaluate()}if(e.operator==="Power"){let[s,a]=e.ops;if(s.symbol===n)return a.mul(s.pow(a.add(i.NegativeOne))).evaluate();let u=s,l=a,f=Xe(u,n)??i._fn("D",[u,i.symbol(n)]),d=(Xe(l,n)??i._fn("D",[l,i.symbol(n)])).mul(u.ln()),m=l.mul(f).div(u);return e.mul(d.add(m)).evaluate()}if(e.operator==="Divide"){let[s,a]=e.ops,u=Xe(s,n)??i._fn("D",[s,i.symbol(n)]),l=Xe(a,n)??i._fn("D",[a,i.symbol(n)]);return u.mul(a).sub(l.mul(s)).div(a.pow(2)).evaluate()}let t=kp[e.operator];if(!t){if(e.nops>1)return;let s=i._fn("Derivative",[i.symbol(e.operator),i.One]);if(!s.isValid)return;let a=e.ops[0],u=Xe(a,n)??i._fn("D",[a,i.symbol(n)]);return u.isValid?i._fn("Apply",[s,a]).mul(u):void 0}if(e.nops>1)return i._fn("D",[e,i.symbol(n)]);let r=e.ops[0],o=Xe(r,n)??i._fn("D",[r,i.symbol(n)]);return qi(i.box(t),[r]).mul(o)}var Ol=[{Derivative:{threadable:!1,hold:!0,signature:"(any, order:number?) -> function",evaluate:e=>{let n=e[0].evaluate(),i=Math.floor(e[1]?.N().re);return Pl(n,isNaN(i)?1:i)}},D:{threadable:!1,hold:!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 o=i._fn("D",[t,...r]);return i.popScope(),o},evaluate:(e,{engine:n})=>{let i=n,t=e[0].canonical,r=i.swapScope(t.scope);t=t.evaluate();let o=e.slice(1);o.length===0&&(t=void 0);for(let s of o){if(!s.symbol){t=void 0;break}if(t=Xe(t,s.symbol),t===void 0)break}return i.swapScope(r),t=t?.canonical,t?.operator==="D"?t:t?.evaluate()}},ND:{threadable:!1,hold:!0,signature:"(function, point:number) -> number",evaluate:(e,{engine:n})=>{let i=e[1]?.canonical.re;if(isNaN(i))return;let t=Qo(n.box(e[0]));return n.number(Ga(t,i))}},Integrate:{wikidata:"Q80091",threadable:!1,hold:!0,signature:"(expression, range:(tuple|symbol|nothing)) -> number",canonical:(e,{engine:n})=>{let i=n,t=e[1],r=null,o=null,s=null;t&&t.operator!=="Tuple"&&t.operator!=="Triple"&&t.operator!=="Pair"&&t.operator!=="Single"?r=t:t&&(r=t.ops?.[0]??null,o=t.ops?.[1]?.canonical??null,s=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)),o&&o.symbol!=="Nothing"&&(o=_n(i,o,"number")),s&&s.symbol!=="Nothing"&&(s=_n(i,s,"number")),o&&s?t=i.tuple(r,o,s):s?t=i.tuple(r,i.NegativeInfinity,s):o?t=i.tuple(r,o):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,hold:!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,o]=e.slice(1).map(a=>a.value),s;if(typeof r=="number"&&typeof o=="number"){let a=Qo(e[0]);s=n.number(Ar(a,r,o))}return n.precision=i,n.strict=t,s}}},{Limit:{description:"Limit of a function",complexity:5e3,threadable:!1,hold:!0,signature:"(expression, point:number, direction:number?) -> number",evaluate:(e,{engine:n})=>{let[i,t,r]=e,o=t.N().re;if(!isFinite(o))return;let s=qe(i);return n.number(Qn(a=>{let u=s([n.number(a)])?.value;return typeof u=="number"?u:Number.NaN},o,r?r.re:1))}},NLimit:{description:"Numerical approximation of the limit of a function",complexity:5e3,threadable:!1,hold:!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 o=qe(e);return t.number(Qn(s=>{let a=o([t.number(s)])?.value;return typeof a=="number"?a:Number.NaN},r,i?i.re:1))}}}];var Ll=[{Block:{hold:!0,signature:"(any) -> any",canonical:Rp,evaluate:Dp},Condition:{hold:!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??"")),Fu(e,t)?i.True:i.False}},If:{hold:!0,signature:"(expression, expression, expression) -> any",type:([e,n,i])=>Ce(n.type,i.type),evaluate:([e,n,i],{engine:t})=>(e=e.evaluate(),e&&e.symbol==="True"?n?.evaluate()??t.Nothing:i?.evaluate()??t.Nothing)},Loop:{hold:!0,signature:"(body:expression, collection:expression) -> any",type:([e])=>e.type,evaluate:([e,n],{engine:i})=>{if(e??(e=i.Nothing),e.symbol==="Nothing")return e;if(n&&n.isCollection){let r,o=qe(e),s=0;for(let a of F(n)){if(r=o([a])??i.Nothing,r.operator==="Break")return r.op1;if(r.operator==="Return")return r;if(s++>i.iterationLimit)return i.error("iteration-limit-exceeded")}}let t=0;for(;;){let r=e.evaluate();if(r.operator==="Break")return r.op1;if(r.operator==="Return")return r;if(t++>i.iterationLimit)return i.error("iteration-limit-exceeded")}}},Which:{hold:!0,signature:"(...expression) -> any",type:e=>e.length%2!==0?"nothing":Ce(...e.filter((n,i)=>i%2===1).map(n=>n.type)),evaluate:(e,n)=>wp(e,n)},FixedPoint:{hold:!0,signature:"any -> any"}}];function wp(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 Dp(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 Rp(e,n){let{engine:i}=n;if(e.length===0)return null;i.pushScope();let t=[],r=[];for(let s of e)s.operator==="Declare"?t.push(s):r.push(Fl(s));let o=i._fn("Block",[...t,...r]);return i.popScope(),o}function Fl(e){return e.operator==="Declare"&&e.engine.error("unexpected-declare"),e.ops?e.engine._fn(e.operator,e.ops.map(Fl)):e}var ql=[{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=[],o=e[0].im??0,s=Math.atan2(o,i),a=Math.sqrt(i*i+o*o);for(let u=0;u<t;u++){let l=(s+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 Ft(e){return e[Math.floor(Math.random()*e.length)]}function Vl(e,n){if(e==="Add"||e==="Multiply"){let i=[],t=1+Math.floor(Math.random()*12);for(;t>0;)i.push(En(n+1)),t-=1;return[e,...i]}return e==="Divide"||e==="Power"?[e,En(n+1),En(n+1)]:e==="Root"?[e,En(n+1),En(10)]:e==="trig"?Ap():[e,En(n+1)]}function Ap(){return[Ft(["Cos","Sin","Tan","Sinh","Arccos","Arsinh"]),Ft(["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 En(e){if(e??(e=1),e===1){let n=Ft([["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"?Vl(n,1):n}if(e===2){let n=Math.random();if(n>.75)return En(1);if(n>.5)return En(3);let i=Ft(["Multiply","Multiply","Add","Power","trig","Ln","Exp"]);return Vl(i,2)}return Ft([-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 $l=[{Nothing:{signature:"nothing"}},{InvisibleOperator:{complexity:9e3,hold:!0,signature:"...any -> any",canonical:jr},Sequence:{hold:!0,signature:"...any -> any",type:e=>e.length===0?"nothing":e.length===1?e[0].type:"any",canonical:(e,{engine:n})=>{let i=ie(e);return i.length===0?n.Nothing:i.length===1?i[0]:n._fn("Sequence",i)}},Delimiter:{complexity:9e3,hold:!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",Oe(n,e,2));let i=e[0];if(i.operator==="Sequence")return n._fn("Tuple",Pe(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],_n(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=Io(e[0].ops)),e.length===1?e[0].evaluate(n):i._fn("Tuple",e.map(r=>r.evaluate(n)))}},Error:{hold:!0,complexity:500,signature:"((string|expression), expression?) -> nothing",canonical:(e,{engine:n})=>n._fn("Error",e)},ErrorCode:{complexity:500,hold:!0,signature:"(string, ...any) -> error",canonical:(e,{engine:n})=>{let i=_n(n,e[0],"string").string;return i==="incompatible-domain"?n._fn("ErrorCode",[n.string(i),e[1],e[2]]):n._fn("ErrorCode",e)}},Hold:{description:"Hold an expression, preventing it from being evaluated",hold:!0,signature:"any -> any",type:([e])=>e.symbol?"symbol":e.string?"string":e.isNumberLiteral?e.type:e.ops?ba(e.type)??"function":"expression",canonical:(e,{engine:n})=>e.length!==1?null:n.hold(e[0]),evaluate:([e])=>e},HorizontalSpacing:{signature:"number -> nothing",canonical:(e,{engine:n})=>e.length===2?e[0].canonical:n.Nothing},Style:{complexity:9e3,signature:"(expression, ...any) -> expression",type:([e])=>e.type,evaluate:([e])=>e}},{About:{description:"Return information about an expression",hold:!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(`
|
|
82
|
+
})()`}function Ju(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=ai();return new Function("x",`return \`(() => { const ${t} = \${x}; return ${e.replace(/\\\${x}/g,t)}; })()\`;`)(n)}}function ai(){return`_${Math.random().toString(36).substring(4)}`}function op(e,n,i){let{index:t,lower:r,upper:o}=zi(e[1]),s=fe(e[0],{...i,var:a=>a===t?a:i.var(a)});return`_SYS.integrate((${t}) => (${s}), ${r}, ${o})`}function Xu(e,n){return"normal"}function Ku(e,n){return"normal"}function el(e,n){return n>2?"solidus":"radical"}function nl(e,n){if(n>3)return"inline-solidus";if(x(e)==="Divide"){let[i,t]=v(e),[r,o]=[yt(i),yt(t)];if(o<=2&&r>5)return"factor";if(r<=2&&o>5)return"reciprocal"}return"quotient"}function il(e,n){return"boolean"}function tl(e,n){return"solidus"}function rl(e,n){return"compact"}function sl(e,n,i){if(i.repeatingDecimal&&i.repeatingDecimal!=="none"){let o=e.slice(0,-1);for(let s=0;s<e.length-16;s++){let a=o.substring(0,s);for(let u=0;u<17;u++){let l=o.substring(s,s+u+1),f=Math.floor((o.length-a.length)/l.length);if(f<=3)break;if((a+l.repeat(f+1)).startsWith(o)){if(l==="0")return cs(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),cs(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=cs(e,i),r&&(e+=i.truncationMarker),e}function al(e,n){return!e||e==="0"?"":n.beginExponentMarker?n.beginExponentMarker+e+(n.endExponentMarker??""):`10^{${e}}`}function ul(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 o;return n.notation==="engineering"?o=Pr(i.toExponential(),n,3):n.notation==="scientific"&&(o=Pr(i.toExponential(),n)),o??ds(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[o,s,a,u]=i.match(/(.+)\(([0-9]+)\)(.*)$/)??[];i=s+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=Pr(i,n,3):n.notation==="scientific"&&(r=Pr(i,n)),t+(r??ds(i,n))}function Pr(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,d,m]=e.match(/^(.*)\.(.*)$/);for(m||(m="");d.startsWith("0");)d=d.substring(1);d?e=f+d[0]+"."+d.slice(1)+m+"e+"+(d.length-1).toString():e=f+"0."+m+"e+0"}t=e.match(/^(.*)[e|E]([-+]?[0-9]+)$/)}if(!t)return ds(e,n);let r=parseInt(t[2]),o=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,d,m]=o.match(/^(.*)\.(.*)$/)??["",o,""];o=d+(m+"00000000000000000").slice(0,Math.abs(f))+"."+m.slice(Math.abs(f))}let s=n.avoidExponentsInRange;if(s&&r>=s[0]&&r<=s[1])return;let a="",u=o;t=u.match(/^(.*)\.(.*)$/),t&&(u=t[1],a=t[2]);let l=al(Number(r).toString(),n);if(a=sl(a,u.length,n),u=fl(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 ds(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,o="";i=e.match(/^(.*)\.(.*)$/),i?.[1]&&i[2]&&(r=i[1],o=i[2]),t!==0&&o&&(r+=o,t-=o.length,o="");let s=n.avoidExponentsInRange;t!==0&&s&&t>=s[0]&&t<=s[1]&&([r,o]=up(r,o,t),t=0);let a=al(t.toString(),n);if(o&&(o=n.decimalSeparator+sl(o,r.length,n)),r=fl(r,n),!a)return r+o;if(!o){if(r==="1")return a;if(r==="-1")return"-"+a}return r+o+n.exponentProduct+a}function ol(e,n,i){let t=new RegExp(`(\\d{${n}})(?=\\d)`,"g");return e.replace(t,`$1${i}`)}function sp(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 ap(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 ll(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?ap(e,r):ol(e,3,r):t===!1||t<=0?e:i===1?ol(e,t,r):sp(e,t,r):e}function cs(e,n){return ll(e,n,1)}function fl(e,n){return ll(e,n,0)}function up(e,n,i){let t=e+n,o=e.length+i,s,a;return o>0?o>=t.length?(t=t+"0".repeat(o-t.length),s=t,a=""):(s=t.slice(0,o),a=t.slice(o)):(s="0",a="0".repeat(-o)+t),[s,a]}var ln=[["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]],cl=[...ln.map(([e,n,i])=>({kind:"symbol",name:e,latexTrigger:[n],parse:e})),...ln.map(([e,n,i])=>({kind:"symbol",latexTrigger:[String.fromCodePoint(i)],parse:e}))];function ps(e,n,i,t,r){if(n&&n.minPrec>=t)return null;let o=i?[i]:["Nothing"],s=!1;for(;!s;){for(s=!0,e.skipSpace();e.match(r);)o.push("Nothing"),e.skipSpace();if(e.atTerminator(n))o.push("Nothing");else{let a=e.parseExpression({...n,minPrec:t});o.push(a??"Nothing"),s=a===null}s||(e.skipSpace(),s=!e.match(r))}return o}function Hi(e=""){return(n,i)=>{if(!i)return"";let t=v(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((o,s)=>(o.push(n.serialize(s),e),o),[]);return r.pop(),E(r)}}var dl=[{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(x(n)==="Delimiter"&&(n=p(n,1)??"Nothing"),x(n)==="Sequence")for(let r of v(n)){if(!D(r))return null;i.push(D(r))}else{if(!D(n))return null;i=[D(n)]}let t=e.parseExpression({minPrec:270})??"Nothing";return x(t)==="Delimiter"&&(t=p(t,1)??"Nothing"),x(t)==="Sequence"&&(t=["Block",...v(t)]),["Function",t,...i]},serialize:(e,n)=>{let i=v(n);return i.length<1?"()\\mapsto()":i.length===1?E(["()","\\mapsto",e.serialize(p(n,1))]):i.length===2?E([e.serialize(p(n,2)),"\\mapsto",e.serialize(p(n,1))]):E([e.wrapString(v(n)?.slice(1).map(t=>e.serialize(t)).join(", "),"normal"),"\\mapsto",e.serialize(p(n,1))])}},{name:"Apply",kind:"function",identifierTrigger:"apply",serialize:(e,n)=>{let i=p(n,1),t=x(i);if(t==="InverseFunction"||t==="Derivative"){let s=e.options.applyFunctionStyle(n,e.level),a=v(n).slice(1);return e.serializeFunction(i,e.dictionary.ids.get(t))+e.wrapString(a.map(u=>e.serialize(u)).join(", "),s)}let r=p(n,2);if(typeof i=="string"||!r){let s=v(n).slice(1);return e.serialize(s)}if(W(n)===2)return E([e.wrap(i,20),"\\lhd",e.wrap(r,20)]);let o=e.options.applyFunctionStyle(n,e.level);return E(["\\operatorname{apply}",e.wrapString(e.serialize(t)+", "+e.serialize(["List",...v(n)]),o)])}},{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=Mo(p(n,1));if(x(p(n,2))==="Function"){let t=p(n,2),r=Mo(p(t,1)),o=v(t).slice(1);return E([e.serialize(i),e.wrapString(o.map(s=>e.serialize(s)).join(", "),e.options.applyFunctionStyle(n,e.level)),"\\coloneq",e.serialize(r)])}return E([e.serialize(i),"\\coloneq",e.serialize(p(n,2))])},parse:Lr},{latexTrigger:"\\coloneqq",kind:"infix",associativity:"right",precedence:260,parse:Lr},{latexTrigger:"\\colonequals",kind:"infix",associativity:"right",precedence:260,parse:Lr},{latexTrigger:[":","="],kind:"infix",associativity:"right",precedence:260,parse:Lr},{name:"BaseForm",serialize:(e,n)=>{let i=w(p(n,2))??NaN;if(isFinite(i)&&i>=2&&i<=36){let t=w(p(n,1))??NaN;if(isFinite(t)&&Number.isInteger(t)){let r=Number(t).toString(i),o=0;if(i===2||i===10?o=4:i===16?o=2:i>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}}_{${i}}`}}return"\\operatorname{BaseForm}("+e.serialize(p(n,1))+", "+e.serialize(p(n,2))+")"}},{name:"Sequence",serialize:Hi(" ")},{name:"InvisibleOperator",serialize:Hi("")},{name:"Delimiter",serialize:(e,n)=>{let i=e.options.groupStyle(n,e.level+1),t=p(n,1),r={Set:"{,}",List:"[,]",Tuple:"(,)",Single:"(,)",Pair:"(,)",Triple:"(,)",Sequence:"(,)",String:'""'}[x(t)],o=r?t:["Sequence",t];if(r??(r="(,)"),W(n)>1){let f=V(p(n,2));typeof f=="string"&&f.length<=3&&(r=f)}let[s,a,u]=["","",""];r.length===3?[s,a,u]=r:r.length===2?[s,u]=r:r.length===1&&(a=r);let l=t?o?Hi(a)(e,o):e.serialize(t):"";return e.wrapString(l,i,s+u)}},{name:"Domain",serialize:(e,n)=>x(n)==="Error"?e.serialize(n):`\\mathbf{${e.serialize(p(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=p(n,1);if(V(i)==="missing")return`\\error{${e.options.missingSymbol??"\\placeholder{}"}}`;let t=cp(e,n)||"\\blacksquare",r=x(i)==="ErrorCode"?V(p(i,1)):V(i);return r==="incompatible-domain"?D(p(i,3))==="Undefined"?`\\mathtip{\\error{${t}}}{\\notin ${e.serialize(p(i,2))}}`:`\\mathtip{\\error{${t}}}{\\in ${e.serialize(p(i,3))}\\notin ${e.serialize(p(i,2))}}`:typeof r=="string"?`\\error{${t}}`:`\\error{${t}}`}},{name:"ErrorCode",serialize:(e,n)=>{let i=V(p(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-domain"||i==="invalid-domain"?"":`\\texttip{\\error{\\blacksquare}}{\\mathtt{${i}}}`}},{name:"FromLatex",serialize:(e,n)=>`\\texttt{${fp(V(p(n,1)))}}`},{name:"Latex",serialize:(e,n)=>n===null?"":E(br(n,i=>V(i)??e.serialize(i)))},{name:"LatexString",serialize:(e,n)=>n===null?"":E(br(n,i=>e.serialize(i)))},{name:"LatexTokens",serialize:lp},{name:"At",kind:"postfix",precedence:810,latexTrigger:["["],parse:Fr("]"),serialize:(e,n)=>E(["\\lbrack",Hi(", ")(e,n),"\\rbrack"])},{kind:"postfix",precedence:810,latexTrigger:["\\lbrack"],parse:Fr("\\rbrack")},{kind:"postfix",precedence:810,latexTrigger:["\\left","\\lbrack"],parse:Fr("\\right","\\rbrack")},{kind:"postfix",latexTrigger:["_"],parse:Fr()},{name:"List",kind:"matchfix",openTrigger:"[",closeTrigger:"]",parse:pl,serialize:pp},{kind:"matchfix",openTrigger:"(",closeTrigger:")",parse:dp},{latexTrigger:[","],kind:"infix",precedence:20,parse:(e,n,i)=>{let t=ps(e,i,n,20,",");return t===null?null:["Delimiter",["Sequence",...t],{str:","}]}},{latexTrigger:[","],kind:"prefix",precedence:20,parse:(e,n)=>{let i=ps(e,n,null,20,",");return i===null?null:["Delimiter",["Sequence",...i],{str:","}]}},{name:"Range",latexTrigger:[".","."],kind:"infix",precedence:800,parse:mp,serialize:(e,n)=>{let i=v(n);if(i.length===0)return"";if(i.length===1)return"1.."+e.serialize(p(n,1));if(i.length===2)return e.wrap(p(n,1),10)+".."+e.wrap(p(n,2),10);if(i.length===3){let t=w(p(n,3)),r=w(p(n,1));return t!==null&&r!==null?e.wrap(p(n,1),10)+".."+e.wrap(r+t,10)+".."+e.wrap(p(n,2),10):e.wrap(p(n,1),10)+"..("+(e.wrap(p(n,1),275)+"+"+e.wrap(p(n,3),275))+").."+e.wrap(p(n,2),10)}return""}},{latexTrigger:[";"],kind:"infix",precedence:19,parse:(e,n,i)=>{let t=ps(e,i,n,19,";");return t===null?null:["Delimiter",["Sequence",...t],"';'"]}},{name:"String",latexTrigger:["\\text"],parse:e=>gs(e),serialize:(e,n)=>{let i=v(n);return i.length===0?"\\text{}":E(["\\text{",i.map(t=>e.serialize(t)).join(""),"}"])}},{name:"Subscript",latexTrigger:["_"],kind:"infix",serialize:(e,n)=>W(n)===2?e.serialize(p(n,1))+"_{"+e.serialize(p(n,2))+"}":"_{"+e.serialize(p(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=w(p(n,2))??1,t=e.serialize(p(n,1));return i===1?t+"^\\prime":i===2?t+"^\\doubleprime":i===3?t+"^\\tripleprime":t+"^{("+e.serialize(p(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=D(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=D(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(p(n,1))+"^{-1}"},{name:"Derivative",serialize:(e,n)=>{let i=w(p(n,2))??1,t=e.serialize(p(n,1));return i===1?t+"^{\\prime}":i===2?t+"^{\\doubleprime}":i===3?t+"^{\\tripleprime}":t+"^{("+e.serialize(p(n,2))+")}"}},{kind:"environment",name:"Which",identifierTrigger:"cases",parse:ms,serialize:(e,n)=>{let i=[],t=v(n);if(t.length>0)for(let r=0;r<=t.length-2;r+=2){let o=[];o.push(e.serialize(t[r+1])),o.push(e.serialize(t[r])),i.push(o.join("&"))}return E(["\\begin{cases}",i.join("\\\\"),"\\end{cases}"])}},{kind:"environment",identifierTrigger:"dcases",parse:ms},{kind:"environment",identifierTrigger:"rcases",parse:ms}];function gs(e,n){if(!e.match("<{>"))return"''";let i=[],t="",r=null;for(;!e.atEnd&&!e.match("<}>");)if(e.peek==="<{>")i.push(gs(e));else if(e.match("\\textbf")&&e.match("<{>"))i.push(gs(e,{"font-weight":"bold"}));else if(e.match("\\color")){let s=e.parseStringGroup();s!==null&&(r!==null&&t?i.push(["Style",t,yr(r)]):t&&i.push(["String",t]),t="",r={color:s})}else if(e.match("<space>"))t+=" ";else if(e.match("<$>")){let s=e.index,a=e.parseExpression()??"Nothing";e.skipSpace(),e.match("<$>")?i.push(a):(t+="$",e.index=s)}else if(e.match("<$$>")){let s=e.index,a=e.parseExpression()??"Nothing";e.skipSpace(),e.match("<$$>")?i.push(a):(t+="$$",e.index=s)}else{let s=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"}[s]??s}r!==null&&t?i.push(["Style",`'${t}'`,yr(r)]):t&&i.push(`'${t}'`);let o;return i.length===1?o=i[0]:i.every(s=>V(s)!==null)?o="'"+i.map(s=>V(s)).join()+"'":o=["String",...i],n?["Style",o,yr(n)]:o}function lp(e,n){return n===null?"":E(br(n,i=>{let t=V(i);return t===null?e.serialize(i):t==="<{>"?"{":t==="<}>"?"}":t==="<$>"?"$":t==="<$$>"?"$$":t==="<space>"?" ":t}))}function fp(e){return e===null?"":e.replace(/[{}\[\]\\:\-\$%]/g,n=>({"{":"\\lbrace ","}":"\\rbrace ","[":"\\lbrack ","]":"\\rbrack ",":":"\\colon ","\\":"\\backslash "})[n]??"\\"+n)}function cp(e,n){let i=p(n,2);return i?x(i)==="LatexString"?V(p(i,1))??"":x(i)==="Hold"?e.serialize(p(i,1)):e.serialize(i):""}function Dn(e,n,i){let t=x(n);if(t==="Derivative"||t==="Prime"){let o=w(p(n,2))??1;return[t,M(p(n,1)),o+i]}let r=D(n);return r&&e.getIdentifierType(r)==="function"||x(n)?i===1?["Derivative",n]:["Derivative",n,i]:i===1?["Prime",M(n)]:["Prime",M(n),i]}function dp(e,n){if(z(n))return["Delimiter"];let i=x(n);if(i==="Delimiter"&&p(n,2)!==null){let t=V(p(n,2));if(t?.length===1)return["Delimiter",p(n,1)??"Nothing",{str:`(${t})`}]}return i==="Matrix"&&(V(p(n,2))??"..")===".."?["Matrix",p(n,1)]:["Delimiter",n]}function pl(e,n){if(z(n))return["List"];let i=x(n);if(i==="Range"||i==="Linspace")return n;if(i==="Sequence")return["List",...v(n)];if(i==="Delimiter"){let t=V(p(n,2))??"...";if(t===";"||t===".;.")return["List",...(v(p(n,1))??[]).map(r=>pl(e,r))];if(t===","||t===".,.")return n=p(n,1),x(n)==="Sequence"?["List",...v(n)]:["List",n??"Nothing"]}return["List",n]}function pp(e,n){return W(n)>1&&v(n).every(i=>{let t=x(i);return cr(t)||fr(t)})?E(["\\begin{cases}",Hi("\\\\")(e,n),"\\end{cases}"]):E(["\\bigl\\lbrack",Hi(", ")(e,n),"\\bigr\\rbrack"])}function mp(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=w(n),o=w(i);return r!==null&&o!==null?o<=r?null:o-r===1?["Range",n,t]:["Range",n,t,o-r]:["Range",n,t,["Subtract",i,n]]}return["Range",n,i]}var Wi={"(":"(",")":")","[":"\\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 Lr(e,n){if(x(n)==="InvisibleOperator"&&W(n)===2&&x(p(n,2))==="Delimiter"){let r=D(p(n,1));if(!r)return null;let o=e.parseExpression({minPrec:0});if(o===null)return null;let s=p(p(n,2),1),a=[];return x(s)==="Sequence"?a=[...v(s)]:s&&(a=[s]),["Assign",r,["Function",o,...a??[]]]}let i=x(n);if(i){let r=v(n),o=e.parseExpression({minPrec:0});return o===null?null:["Assign",i,["Function",o,...r]]}if(!D(n))return null;let t=e.parseExpression({minPrec:0});return t===null?null:["Assign",n,t]}function ms(e){let n=e.parseTabular();if(!n)return["List"];if(n.every(t=>{if(t.length!==1)return!1;let r=x(t[0]);return fr(r)||cr(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":Co(t[1])??"True"),i.push(t[0])}return["Which",...i]}function Fr(...e){return(n,i)=>{if(!D(i)&&x(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)?null:(x(t)==="Delimiter"&&(t=p(t,1)??"Nothing"),x(t)==="Sequence"?["At",i,...v(t)]:["At",i,t])}}var xs={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}}`},ys={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}}`},bs=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"||wi(n)){let r=w(n);return r!==null&&r<0&&i>275?this.wrap(n):this.serialize(n)}let t=x(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(D(n)!==null||Bn(n)&&!/^(-|\.)/.test(i))return i;let r=x(n);return r==="Delimiter"&&W(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]??".",o=t?.[1]??".";return r==='"'?r="``":r==="|"?r="\\lvert":r=Wi[r]??r,o==='"'?o="''":o==="|"?o="\\rvert":o=Wi[o]??o,r==="."&&o==="."?n:((r==="."||o===".")&&i==="normal"&&(i="scaled"),i==="scaled"?`\\left${r}${n}\\right${o}}`:i==="big"?`${`\\Bigl${r}`}${n}${`\\Bigr${o}`})`:r+n+o)}wrapArguments(n){return this.wrapString(v(n).map(i=>this.serialize(i)).join(", "),this.options.applyFunctionStyle(n,this.level))}serializeSymbol(n,i){return typeof n=="string"||xr(n),i?.kind==="function"?hs(D(n)??"")??"":i?.serialize?.(this,n)??hs(D(n))??""}serializeFunction(n,i){if(i?.serialize)return i.serialize(this,n);let t=x(n);return hs(t,"auto")+this.wrapArguments(n)}serialize(n){if(n==null)return"";this.level+=1;try{let i=(()=>{let t=ul(n,this.options);if(t)return t;let r=V(n);if(r!==null)return`\\text{${r}}`;let o=D(n);if(o!==null)return this.serializeSymbol(n,this.dictionary.ids.get(o));let s=x(n);if(s){let a=this.dictionary.ids.get(s);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 gp(e){let n=e.match(/^([^_]+)/)?.[1]??"",i=ln.findIndex(s=>n===s[0]);if(i>=0)return[ln[i][1],e.substring(ln[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(s=>e.startsWith(s)),i>=0){let s=Object.keys(t)[i];return[t[s],e.substring(s.length)]}let r=e.codePointAt(0);if(i=ln.findIndex(s=>s[2]===r),i>=0)return[ln[i][1],e.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(i=Object.keys(o).findIndex(s=>n===s),i>=0){let s=Object.keys(o)[i];return[o[s],e.substring(s.length)]}return[n,e.substring(n.length)]}function hp(e){let[n,i]=gp(e),t=[];for(;i.length>0;){let o=i.match(/^_([a-zA-Z]+)(.*)/);if(!o||!xs[o[1]])break;t.push(o[1]),i=o[2]}let r=[];for(;i.length>0;){let o=i.match(/^_([a-zA-Z]+)(.*)/);if(!o||!ys[o[1]])break;r.push(o[1]),i=o[2]}return[n,t,r,i]}function qr(e,n=!0,i="auto"){let[t,r,o,s]=hp(e);for(let a of r)xs[a]&&(t=xs[a](t));if(n){let a=[],u=[],l=t.match(/^([^\d].*?)(\d+)$/);for(l&&(u.push(l[2]),t=l[1]);s.length>0;)if(s.startsWith("__")){let[f,c]=qr(s.substring(2),!1,"none");a.push(f),s=c}else if(s.startsWith("_")){let[f,c]=qr(s.substring(1),!1,"none");u.push(f),s=c}else break;a.length>0&&(t=`${t}${Ni("^",a.join(","))}`),u.length>0&&(t=`${t}${Ni("_",u.join(","))}`)}for(let a of o)ys[a]&&(t=ys[a](t));if(o.length===0&&i!=="none")switch(i){case"auto":ar(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,s]}function hs(e,n="auto"){if(e===null)return null;if(Zi.test(e))return e;let i=e.match(/^(_+)(.*)/);if(i){let[o,s]=qr(i[2],!0,"none");return`\\operatorname{${"\\_".repeat(i[1].length)+o+s}}`}let[t,r]=qr(e,!0,n);return r.length>0?`\\operatorname{${e}}`:t}function ml(e,n,i){if(i.invisibleMultiply&&(!/#1/.test(i.invisibleMultiply)||!/#2/.test(i.invisibleMultiply)))throw Error("Expected 2 arguments (#1 and #2) for invisibleMultiply");return new bs(n,i).serialize(e)}var gl={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"},hl={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 xl(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&&Ns(n(e.op2,12),xl(i.re.toString(),`${i.im}i`));let t=e.op2;if((t.symbol||t.operator==="Power"||t.operator==="Square"||typeof vs[t.operator]=="string")&&In(i)&&i[0]===1){let r=i[1];return`${n(t,12)}/${r}`}return Ns(n(e.op1,12),n(e.op2,12))}}return e.ops.reduce((i,t)=>Ns(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}^${ui(i)}`},15],Equal:["===",8],NotEqual:["!==",8],LessEqual:["<=",9],GreaterEqual:[">=",9],Less:["<",9],Greater:[">",9],And:["&&",4],Or:["||",3],Not:["!",14]},vs={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${ui(n(i))}`:`root${ui(n(t))}${ui(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)=>Es(e,"sum",n),Product:(e,n)=>Es(e,"prod",n),Integrate:(e,n)=>Es(e,"int",n),Delimiter:(e,n)=>xp(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 Es(e,n,i){let t=e.op2,r=t?.op1,o=t?.op2,s=t?.op3;r.symbol==="Nothing"&&(r=null),o.symbol==="Nothing"&&(o=null),s.symbol==="Nothing"&&(s=null);let a=n;return r&&o&&(a+=`_(${i(r)}=${i(o)})`),s&&(a+=`^${ui(i(s))}`),a+ui(i(e.op1))}function xp(e,n,i){n||(n="(,)");let t="",r="",o="";if(n.length===1&&(t=n),n.length===2&&(r=n[0],o=n[1]),n.length===3&&(r=n[0],t=n[1],o=n[2]),!e)return`${r}${o}`;let s=[e.op1];return e.op1.operator==="Sequence"&&(s=e.op1.ops),`${r}${s.map(a=>i(a)).join(t)}${o}`}function ui(e,n=0,i=-1){return n>i&&!/^\(.+\)$/.test(e)?`(${e})`:e}function $r(e,n={}){return n.symbols?.[e]?n.symbols[e]:gl[e]?gl[e]:e.length===1?e:`"${e}"`}function Vr(e,n={},i=0){if(e.symbol)return $r(e.symbol,n);let t=(o,s=0)=>Vr(o,n,s);if(e.string)return e.string;let r=e.numericValue;if(r!==null){let o=e.engine;return e.isNaN?$r("NaN",n):e.isFinite===!1?e.isNegative!==!0&&e.isPositive!==!0?$r("ComplexInfinity",n):$r(e.isNegative?"NegativeInfinity":"PositiveInfinity",n):r.toString()}if(e.operator){let o=n.operators?{...hl,...n.operators}:hl,[s,a]=o[e.operator]??[];if(s){let f="";if(typeof s=="function")f=s(e,t);else{if(e.nops===1)return`${s}${t(e.op1,a+1)}`;f=e.ops?.map(c=>t(c,a+1)).join(` ${s} `)??""}return ui(f,i,a)}let l=(n.functions?{...vs,...n.functions}:vs)[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 Ns(e,n){return e?n?e==="1"?n:n==="1"?e:(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 xl(e,n){return e?n?e==="0"?n:n==="0"?e:n.startsWith("-")?`${e} - ${n.substring(1)}`:`${e} + ${n}`:e:n}function yl(e,n,i,t,r){if(n.numericValue!==null&&n.isNegative){let o=n.numericValue;if(typeof o=="number")return C(e,"Subtract",[i,e.number(-o)],t,r);if(g(n.type,"rational"))return C(e,"Subtract",[i,e.number(o.neg())],t,r)}return n.operator==="Negate"&&i.operator!=="Negate"?C(e,"Subtract",[i,n.op1],t,r):null}function yp(e,n,i,t,r){let o=t.exclude;if(n==="Add"&&i.length===2&&!o.includes("Subtract")){let s=yl(e,i[0],i[1],t,r)??yl(e,i[1],i[0],t,r);if(s)return s}if(n==="Divide"&&i.length===2&&o.includes("Divide"))return C(e,"Multiply",[i[0],e._fn("Power",[i[1],e.NegativeOne])],t,r);if(n==="Multiply"&&!o.includes("Negate")&&i[0].im===0&&i[0].re===-1)return i.length===2?C(e,"Negate",[i[1]],t):C(e,"Negate",[e._fn("Multiply",[...i.slice(1)].sort(ae))],t,r);if(n==="Multiply"&&!o.includes("Divide")){let s=new ve(e,i,{canonical:!1}).asRationalExpression();if(s.operator==="Divide")return C(e,s.operator,s.ops,t,r)}if(n==="Power"){if(!o.includes("Exp")&&i[0]?.symbol==="ExponentialE")return C(e,"Exp",[i[1]],t,r);if(i[1]?.numericValue!==null){let s=G(i[1]);if(s===2&&!o.includes("Square"))return C(e,"Square",[i[0]],t,r);if(s!==null&&s<0&&!o.includes("Divide"))return C(e,"Divide",[e.One,s===-1?i[0]:i[0].pow(-s)],t,r);let a=i[1].re;if(!o.includes("Sqrt")&&a===.5)return C(e,"Sqrt",[i[0]],t,r);if(!o.includes("Sqrt")&&a===-.5)return C(e,"Divide",[e.One,e._fn("Sqrt",[i[0]])],t,r);if(In(a)){let u=Do(a),l=Ro(a);if(u===1){if(!o.includes("Sqrt")&&l===2)return C(e,"Sqrt",[i[0]],t,r);if(!o.includes("Root"))return C(e,"Root",[i[0],e.number(a[1])],t,r)}if(u===-1){if(!o.includes("Sqrt")&&l===2)return C(e,"Divide",[e.One,e._fn("Sqrt",[i[0]])],t,r);if(!o.includes("Root"))return C(e,"Divide",[e.One,e._fn("Root",[i[0],e.number(a[1])])],t,r)}}}}if(n==="Add"&&i.length===2&&!o.includes("Subtract")){if(i[1]?.numericValue!==null){let s=G(i[1]);if(s!==null&&s<0)return C(e,"Subtract",[i[0],e.number(-s)],t,r)}if(i[1]?.operator==="Negate")return C(e,"Subtract",[i[0],i[1].op1],t,r)}if(n==="Tuple"){if(i.length===1&&!o.includes("Single"))return C(e,"Single",i,t,r);if(i.length===2&&!o.includes("Pair"))return C(e,"Pair",i,t,r);if(i.length===3&&!o.includes("Triple"))return C(e,"Triple",i,t,r)}return C(e,n,i,t,r)}function C(e,n,i,t,r){let o=t.exclude;if(n==="Negate"&&i.length===1){let l=i[0]?.numericValue;if(l!==null){if(typeof l=="number")return xn(e,-l,t);if(l instanceof Q||l instanceof L)return xn(e,l.neg(),t);if(In(l))return xn(e,ni(l),t)}}if(typeof n=="string"&&o.includes(n)){if(n==="Rational"&&i.length===2)return C(e,"Divide",i,t,r);if(n==="Complex"&&i.length===2)return C(e,"Add",[i[0],e._fn("Multiply",[i[1]??e.symbol("Undefined"),e.I])],t,r);if(n==="Sqrt"&&i.length===1)return C(e,"Power",[i[0],o.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 C(e,"Sqrt",[i[0]],t);if(l!==null)return l<0?C(e,"Divide",[e.One,e._fn("Power",[i[0]??e.symbol("Undefined"),e.number([1,-l])])],t,r):C(e,"Power",[i[0],e.number([1,-l])],t,r)}if(n==="Square"&&i.length===1)return C(e,"Power",[i[0],e.number(2)],t,r);if(n==="Exp"&&i.length===1)return C(e,"Power",[e.E,i[0]],t,r);if(n==="Pair"||n=="Single"||n==="Triple")return C(e,"Tuple",i,t,r);if(n==="Subtract"&&i.length===2)return C(e,"Add",[i[0],e._fn("Negate",[i[1]??e.symbol("Undefined")])],t,r);if(n==="Subtract"&&i.length===1)return C(e,"Negate",i,t,r)}let a=[n,...i.map(l=>l?Ss(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 bp(e,n){return e=e,n.shorthands.includes("string")?`'${e}'`:{str:e}}function Un(e,n,i,t){if(n==="Half"&&i.exclude.includes("Half"))return xn(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 bl(e,n){if(!n.repeatingDecimal)return e;let[i,t,r,o]=e.match(/^(.*)\.([0-9]+)([e|E][-+]?[0-9]+)?$/)??[];if(!r)return e.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 f=0;f<=a;f++){let c=r.substring(l,l+f+1),d=Math.floor((r.length-u.length)/c.length);if(d<3)break;if((u+c.repeat(d+1)).startsWith(r))return c==="0"?s==="0"?t+"."+u+(o??""):e:t+"."+u+"("+c+")"+(o??"")}}for(r+=s;r.endsWith("0");)r=r.slice(0,-1);return typeof n.fractionalDigits=="number"&&(r=r.slice(0,n.fractionalDigits)),o?`${t}.${r}${o.toLowerCase()}`:`${t}.${r}`}function xn(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"),o=i.exclude;if(n instanceof $){if(n.isNaN)return Un(e,"NaN",i,t);if(n.isPositiveInfinity)return Un(e,"PositiveInfinity",i,t);if(n.isNegativeInfinity)return Un(e,"NegativeInfinity",i,t);if(n.isComplexInfinity)return Un(e,"ComplexInfinity",i,t);if(r){if(n.isZero)return 0;if(n.isOne)return 1;if(n.isNegativeOne)return-1}if(n instanceof j){let u;return Kn(n.rational)?u=xn(e,n.rational[0],i):u=["Rational",xn(e,n.rational[0],i),xn(e,n.rational[1],i)],n.radical===1?n.im===0?u:typeof u=="number"?["Complex",u,n.im]:["Add",u,["Complex",0,n.im]]:Ne(n.rational)?n.im===0?["Sqrt",n.radical]:["Add",["Sqrt",n.radical],["Complex",0,n.im]]:ht(n.rational)?n.im===0?["Negate",["Sqrt",n.radical]]:["Add",["Negate",["Sqrt",n.radical]],["Complex",0,n.im]]:n.im===0?["Multiply",u,["Sqrt",n.radical]]:["Add",["Multiply",u,["Sqrt",n.radical]],["Complex",0,n.im]]}if(n.im===0){let u=n.bignumRe??n.re;return xn(e,u,i,t)}return Number.isFinite(n.im)?C(e,"Complex",[e.number(n.bignumRe??n.re),e.number(n.im)],i,{...t,wikidata:"Q11567"}):Un(e,"ComplexInfinity",i,t)}let s="";if(n instanceof Q){let u;if(n.isNaN())u="NaN";else if(!n.isFinite())u=n.isPositive()?"PositiveInfinity":"NegativeInfinity";else{if(r&&ii(n))return n.toNumber();if(n.isInteger()&&n.e<n.precision()+4)s=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(),s=bl(f,i),r){let c=n.toNumber();if(c.toString()===s)return c}}}return i.metadata.includes("latex")&&(t.latex=t.latex??e.box(u??{num:s}).latex),u?t.latex!==void 0?{sym:u,latex:t.latex}:r?u:{sym:u}:t.latex!==void 0?{num:s,latex:t.latex}:r?s:{num:s}}if(n instanceof L)return n.isInfinite()?Un(e,"ComplexInfinity",i,t):n.isNaN()?(s="NaN",i.metadata.includes("latex")&&(t.latex=t.latex??e.box({num:s}).latex),t.latex!==void 0?{num:s,latex:t.latex}:{num:s}):C(e,"Complex",[e.number(n.re),e.number(n.im)],i,{...t,wikidata:"Q11567"});if(In(n)){let u=!o.includes("Rational");return r&&i.shorthands.includes("function")&&ee(n)?n[0]===1&&n[1]===2&&!o.includes("Half")?Un(e,"Half",i,t):[u?"Rational":"Divide",n[0],n[1]]:C(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?Re(n,i.fractionalDigits):{num:ge(n,i.fractionalDigits)};let a;return Number.isNaN(n)?a="NaN":Number.isFinite(n)?s=bl(n.toString(),i):a=n>0?"PositiveInfinity":"NegativeInfinity",i.metadata.includes("latex")&&(t.latex=t.latex??e.box({num:s}).latex),a?t.latex!==void 0?{sym:a,latex:t.latex}:r?a:{sym:a}:t.latex!==void 0?{num:s,latex:t.latex}:r&&s===n.toString()?n:{num:s}}function Ss(e,n,i){let t=n.scope?n.wikidata:void 0;return n.numericValue!==null?xn(e,n.numericValue,i,{latex:n.verbatimLatex}):n.rank>0?n.json:n.string!==null?bp(n.string,i):n.symbol!==null?Un(e,n.symbol,i,{latex:n.verbatimLatex,wikidata:t}):n.ops?n.isValid&&(n.isCanonical||n.isStructural)&&i.prettify?yp(e,n.operator,n.structural.ops,i,{latex:n.verbatimLatex,wikidata:t}):C(e,n.operator,n.structural.ops,i,{latex:n.verbatimLatex,wikidata:t}):n.json}var Y=class{get head(){return this.operator}constructor(n,i){this.engine=n,i?.latex!==void 0&&(this.verbatimLatex=i.latex)}isSame(n){return Rt(this,n)}isEqual(n){return Eu(this,n)}isLess(n){let i=Fi(this,n);if(i!==void 0)return i==="<"}isLessEqual(n){let i=Fi(this,n);if(i!==void 0)return i==="<="||i==="<"||i==="="}isGreater(n){let i=Fi(this,n);if(i!==void 0)return i===">"}isGreaterEqual(n){let i=Fi(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 Vr(this,n)}toString(){return Vr(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"]),(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 Ss(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:Xu,groupStyle:Ku,rootStyle:el,fractionStyle:nl,logicStyle:il,powerStyle:tl,numericSetStyle:rl};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:ml(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:Rt(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 Sl(this,n)}get subexpressions(){return this.getSubexpressions("")}get symbols(){let n=new Set;return Nl(this,n),Array.from(n)}get unknowns(){let n=new Set;return vl(this,n),Array.from(n)}get freeVariables(){let n=new Set;return El(this,n),Array.from(n)}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,o=this.ops.map(s=>r?s.map(n,i):n(s));return n(this.engine.function(this.operator,o,{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"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 Ae(this)??this}evaluate(n){return this.simplify()}N(){return this.evaluate({numericApproximation:!0})}compile(n="javascript",i){if(n!=="javascript")return;i??(i={optimize:["simplify"]});let t=this;return i.optimize.includes("simplify")&&(t=t.simplify()),i.optimize.includes("evaluate")&&(t=t.evaluate()),Yu(t)}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 El(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)El(i,n)}function Nl(e,n){if(e.symbol){n.add(e.symbol);return}if(e.ops)for(let i of e.ops)Nl(i,n)}function vl(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)vl(i,n)}function Sl(e,n){let i=!n||e.operator===n?[e]:[];if(e.ops)for(let t of e.ops)i.push(...Sl(t,n));return i}function Ts(e){let n=[],i=(t,r=[])=>{if(t.length===0)n.push(r);else for(let o=0;o<t.length;o++){let s=t.slice(),a=s.splice(o,1);i(s.slice(),r.concat(a))}};return i(e),n}function Tl(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 Gr(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=Ii(i,r),t.hold)return i;let o=[];for(let s of i){let a=s.operator;if(a==="Hold")o.push(s);else{let u=a==="ReleaseHold"?s.op1:s;if(u){let l=n(u);l!==null&&o.push(l)}}}return Ii(o,r)}function jn(e,n,i){if((s=>i&&i.some(a=>a.value.isSame(s)))(e)||(i||(i=[{value:e,because:"initial"}]),!e.isValid))return i;if(!(e.isCanonical||e.isStructural)){let s=e.canonical;return s.isCanonical||s.isStructural?jn(s,n,i):i}let r=e.engine,o=n?.rules?r.rules(n.rules,{canonical:!0}):r.getRuleSet("standard-simplification");n={...n,rules:o};do{let s=Np(e,o,n,i);if(s.length<=i.length)break;e=s.at(-1).value,i=s}while(!i.slice(0,-1).some(s=>s.value.isSame(e)));return i}function Ep(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 _l(e,n){return e.ops?e.engine.function(e.operator,Gr(e,i=>jn(i,n).at(-1).value)):e}function Np(e,n,i,t){if(e.isNumberLiteral||e.string)return t;if(e.symbol){let s=wn(e,n,{recursive:!1,canonical:!0,useVariations:!1});return s.length>0?[...t,...s]:t}let r=_l(e,i);r.isSame(e)||(t=[...t,{value:r,because:"simplified operands"}],e=r);let o=vp(e,n,i,t);return o.length>t.length?o:t}function vp(e,n,i,t){let r=wn(e,n,{recursive:!1,canonical:!0,useVariations:i.useVariations??!1});if(r.length===0)return t;let o=r.at(-1).value;return o.isSame(e)||(o=_l(o),!Ep(e,o,i?.costFunction))?t:(r.at(-1).value=o,[...t,...r])}function li(e){return e.symbol?.startsWith("_")??(e.operator==="Wildcard"||e.operator==="WildcardSequence"||e.operator==="WildcardOptionalSequence")}function fi(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 Is(e){return typeof e=="string"?e.startsWith("_"):li(e)?!0:e.ops?Is(e.operator)||e.ops.some(Is):!1}function zr(e,n,i){return e.startsWith("_"),e==="_"||e==="__"||e==="___"?i:e in i?n.isSame(i[e])?i:null:Is(n)?null:{...i,[e]:n}}function ci(e,n,i,t){if(li(n))return zr(fi(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?_s(e,n,i,t):null;let o=n.string;if(o!==null)return e.string===o?i:null;let s=n.symbol;if(s!==null)return s===e.symbol?i:r?_s(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=zr(f,u.box(e.operator),i),l!==null&&(l=Bs(e,n.ops,l,t))):f===e.operator&&(l=u.lookupFunction(f)?.commutative?Tp(e,n,i,t):Bs(e,n.ops,i,t)),l===null&&a){if(!r)return null;l=_s(e,n,i,t)}return l!==null&&(i=l),t.recursive&&e.ops&&(l=Sp(e,n,i,{...t,acceptVariants:r})??l),l}return null}function Sp(e,n,i,t){e.ops;let r=null;for(let o of e.ops){let s=ci(o,n,i,t);s!==null&&(r=s,i=s)}return r}function _s(e,n,i,t){if(!t.useVariations)return null;let r=e.engine,o={...t,acceptVariants:!1},s=(u,l)=>ci(r.function(u,l,{canonical:!1}),n,i,o),a=n.operator;if(a==="Negate"&&e.is(0))return ci(r.Zero,n.op1,i,o);if(a==="Add"){let u=s("Add",[0,e]);if(u!==null||(e.operator==="Subtract"&&(u=s("Add",[e.op1,["Negate",e.op2]])),u!==null))return u}if(a==="Subtract"){let u=s("Subtract",[e,0]);if(u!==null||(e.operator==="Negate"&&(u=s("Subtract",[0,e.op1])),u!==null))return u}if(a==="Multiply"){let u=s("Multiply",[1,e]);if(u!==null||e.operator==="Negate"&&(u=s("Multiply",[-1,e.op1]),u!==null)||e.operator==="Divide"&&(u=s("Multiply",[e.op1,["Divide",1,e.op2]]),u!==null))return u}if(a==="Divide"){let u=s("Divide",[e,1]);if(u!==null)return u}if(a==="Square"){let u=s("Power",[e,2]);if(u!==null)return u}if(a==="Exp"){let u=s("Power",[r.E,e]);if(u!==null)return u}if(a==="Power"){if(n.op2.re===2&&n.op2.im===0){let u=s("Square",[e]);if(u!==null)return u}if(n.op1.symbol==="ExponentialE"){let u=s("Exp",[e]);if(u!==null)return u}{let u=s("Power",[e,1]);if(u!==null)return u}}return null}function Tp(e,n,i,t){e.operator,n.operator;let r=Ts(n.ops);for(let o of r){let s=Bs(e,o,i,t);if(s!==null)return s}return null}function Bs(e,n,i,t){if(n.length===0)return e.ops&&e.ops.length===0?i:null;let r=n[0].engine,o={...i},s=[...e.ops],a=0;for(;a<n.length;){let u=n[a],l=fi(u);if(l!==null)if(l.startsWith("__")){let f=0;if(n[a+1]===void 0)f=s.length+1;else{let d=!1;for(;!d&&f<s.length;)d=ci(s[f],n[a+1],o,t)!==null,f+=1;if(!d&&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(s.length===0)return null;c=s.shift()}else{let d=r.lookupFunction(e.operator),m=s.splice(0,f-1);d?.associative?c=r.function(e.operator,m,{canonical:!1}):c=r.function("Sequence",m,{canonical:!1})}o=zr(l,c,o)}else if(l.startsWith("_")){if(s.length===0)return null;o=zr(l,s.shift(),o)}else o=ci(s.shift(),u,o,t);else{let f=s.shift();if(!f)return null;o=ci(f,u,o,t)}if(o===null)return null;a+=1}return s.length>0?null:o}function Ji(e,n,i){n=n.structural;let t=i?.useVariations??!1,r={recursive:i?.recursive??!1,useVariations:t,acceptVariants:t},o=i?.substitution??{};return ci(e.structural,n.structural,o,r)}function Il(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 Yi(e){if(e!==void 0){if(e==="positive")return!0;if(["non-positive","zero","unsigned","negative","negative-infinity"].includes(e))return!1}}function Qi(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 Xi(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 Ki(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 Ur(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)}var Qe=class extends Y{constructor(i,t,r,o){super(i,o?.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=o?.structural??!1,o?.canonical&&(this._canonical=this),(o?.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:(typeof t.signature!="string"&&t.signature.kind==="signature"&&(t.signature={...t.signature,result:or(t.signature.result,i)}),!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(o=>o.structural),r=[];if(!i.associative)r=t;else for(let o of t)o.operator===this.operator?r.push(...o.ops):r.push(o);return this.engine.function(this._name,this.isValid?wt(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=$n(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,o]=t.op1.toNumericValue();return[r.neg(),o]}if(t.operator==="Multiply"){let r=[],o=i._numericValue(1);for(let s of t.ops){let[a,u]=s.toNumericValue();o=o.mul(a),u.is(1)||r.push(u)}return r.length===0?[o,i.One]:r.length===1?[o,r[0]]:[o,oe(this.engine,r)]}if(t.operator==="Divide"){let[r,o]=t.op1.toNumericValue(),[s,a]=t.op2.toNumericValue(),u=r.div(s);return a.is(1)?[u,o]:[u,i.function("Divide",[o,a])]}if(t.operator==="Power"){if(t.op2.numericValue===null)return[i._numericValue(1),this];let[r,o]=t.op1.toNumericValue();if(r.isOne)return[r,this];let s=G(t.op2);return s!==null?[r.pow(s),i.function("Power",[o,t.op2])]:t.op2.is(.5)?[r.sqrt(),i.function("Sqrt",[o])]:[i._numericValue(1),this]}if(t.operator==="Sqrt"){let[r,o]=t.op1.toNumericValue();return o.is(1)||o.is(0)?r.isOne||r.isZero?[r,o]:[r.sqrt(),o]:[r.sqrt(),i.function("Sqrt",[o])]}if(t.operator==="Root"){let r=t.op2.re;if(isNaN(r)||t.op2.im!==0)return[i._numericValue(1),this];let[o,s]=t.op1.toNumericValue();return r===2?[o.sqrt(),i.function("Sqrt",[s])]:[o.root(r),i.function("Root",[s,t.op2])]}if(t.operator==="Abs"){let[r,o]=t.op1.toNumericValue();return[r.abs(),i.function("Abs",[o])]}if(t.operator,t.operator,t.operator==="Log"||t.operator==="Ln"){let r=t.op2.re;isNaN(r)&&t.operator==="Log"&&(r=10);let[o,s]=t.op1.toNumericValue();return o.isOne?[o,this]:i.box(o.ln(r)).add(i.function(t.operator,[s,t.op2])).toNumericValue()}return[i._numericValue(1),t]}subs(i,t){let r=this._ops.map(o=>o.subs(i,t));return r.every(o=>o.isValid)?this.engine.function(this._name,r,t):this.engine.function(this._name,r,{canonical:!1})}replace(i,t){return wn(this,i,t).at(-1)?.value??null}match(i,t){return Ji(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 Ur(this._sgn,i,()=>{if(!(!this.isValid||this.isNumber!==!0))return Il(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)return!1;if(!(this.isNaN===void 0||this.isInfinity===void 0))return!(this.isNaN||this.isInfinity)}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 Yi(this.sgn)}get isNonNegative(){return Qi(this.sgn)}get isNegative(){return Xi(this.sgn)}get isNonPositive(){return Ki(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 ve(this.engine,this.ops).asNumeratorDenominator():[this,this.engine.One]}neg(){return oi(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:Z(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 $){if(i.isZero)return this.engine.Zero;if(i.isOne)return this.canonical;if(i.isNegativeOne)return this.neg()}return se(this.canonical,this.engine.box(i))}div(i){return Ci(this,i)}pow(i){return de(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,o]=this.ops;return r.pow(o.div(t))}if(this.operator==="Divide"){let[r,o]=this.ops;return r.root(i).div(o.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(o=>o.root(i));return se(...r)}if(this.operator==="Root"){let[r,o]=this.ops;return r.root(o.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 o=this.engine.number(Math.pow(r,1/t));if(!o.isFinite||o.isInteger)return o}}else{if(r.isOne)return this.engine.One;if(r.isZero)return this.engine.Zero;if(t!==void 0){let o=r.root(t);if(o.isExact)return this.engine.number(o)}}}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,o]=this.ops;return r.isSame(this.engine.E)?o:o.mul(r.ln(t))}if(this.operator==="Root"){let[r,o]=this.ops;return o.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==="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??Gn}get baseDefinition(){return this._def}get functionDefinition(){return this._def}get isNumber(){let i=this.type;if(i!=="unknown")return g(i,"number")}get isInteger(){let i=this.type;if(i!=="unknown")return g(i,"integer")}get isRational(){let i=this.type;if(i!=="unknown")return g(i,"rational")}get isReal(){let i=this.type;if(i!=="unknown")return g(i,"real")}get isFunctionExpression(){return!0}get type(){let i=this.isPure&&this._ops.every(t=>t.isConstant)?void 0:this.engine.generation;return Ur(this._type,i,()=>_p(this))??"unknown"}simplify(i){return jn(this,i).at(-1)?.value??this}evaluate(i){let t=()=>{if(!this.isValid)return this;if(i??(i={numericApproximation:!1}),i.numericApproximation){let a=this.operator;if(a==="Integrate"||a==="Limit")return this.engine.box(["N",this],{canonical:!0}).evaluate(i)}if(!this.isCanonical){this.engine.pushScope();let a=this.canonical;return this.engine.popScope(),!a.isCanonical||!a.isValid?this:a.evaluate(i)}let r=this.functionDefinition;if(r?.threadable&&this.ops.some(a=>K(a))){let a=Math.max(...this._ops.map(l=>l.functionDefinition?.collection?.size?.(l)??0)),u=[];for(let l=0;l<=a-1;l++){let f=this._ops.map(c=>K(c)?Ua(c,l%a+1)??this.engine.Nothing:c);u.push(this.engine._fn(this.operator,f).evaluate(i))}return u.length===0?this.engine.Nothing:u.length===1?u[0]:this.engine._fn("List",u)}let o=Gr(this,a=>a.evaluate(i)),s;if(r){let a=this.engine,u=a.swapScope(this.scope);s=r.evaluate?.(o,{...i,engine:a}),a.swapScope(u)}return s??this.engine.function(this._name,o)};return Ur(i?.numericApproximation?this._valueN:this._value,this.engine.generation,t)}N(){return this.evaluate({numericApproximation:!0})}solve(i){let t=ct(i);return t.length!==1?null:Cr(this.simplify(),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}};function _p(e){if(!e.isValid)return"error";if(e.ops){if(e.operator==="Hold"){let[t]=e.ops;if(t.symbol)return"symbol";if(t.string!==void 0)return"string";if(t.isNumberLiteral)return t.type;if(t.isFunctionExpression){let r=t.functionDefinition;if(r){let o=r.signature;return typeof o!="string"&&o.kind==="signature"?{...o,result:k(r.type?.(t.ops,{engine:e.engine}))??o.result}:o}}return"function"}let n=e.functionDefinition;if(!n)return"function";let i=Ei(n.signature)??"any";return typeof n.type=="function"?k(n.type(e.ops,{engine:e.engine}))??i:i}if(e.symbol||e.isNumberLiteral)return e.type;if(e.string)return"string";if(e.tensor)return e.type}var yn=class e extends Y{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"string"}get complexity(){return 19}get string(){return this._string}match(n,i){return Tn(n)||(n=this.engine.box(n,{canonical:!1})),li(n)?{[fi(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}};function jr(e,n){switch(n){case"float64":case"float32":case"int32":case"uint8":return new ks(e);case"complex128":case"complex64":return new Ds(e);case"bool":case"string":case"expression":return new ws(e)}throw new Error(`Unknown dtype ${n}`)}var ks=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}},ws=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 Z(...n)}neg(n){return n.neg()}sub(n,i){return n.sub(i)}mul(n,i){return n.mul(i)}muln(...n){return se(...n)}div(n,i){return n.div(i)}pow(n,i){return n.pow(i)}conjugate(n){return this.ce.function("Conjugate",[n]).evaluate()}},Ds=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 Zr(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 Bl(e){if(Be(e))return"bool";if(!e.isNumberLiteral)return"expression";switch(e.type){case"real":case"rational":case"finite_real":case"finite_rational":case"integer":return"float64";case"complex":case"finite_complex":case"imaginary":case"finite_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 Zn=class e{constructor(n,i){this.ce=n;this.shape=i.shape,this.rank=this.shape.length,this._strides=Ip(this.shape),this.field=jr(n,i.dtype)}static align(n,i){if(n.dtype===i.dtype)return[n,i];let t=Zr(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,o]=e.align(i,t),s=r.data.map((a,u)=>n(a,o.data[u]));return bn(r.ce,{dtype:r.dtype,shape:r.shape,data:s})}get expression(){let n=this.shape,i=this.rank,t=this.data,r=this._index.bind(this),o=this.field.expression.bind(this.field),s=a=>{if(a.length===i-1){let u=r(a),l=this.ce._fn("List",t.slice(u,u+n[i-1]).map(f=>o(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(s([...a,f+1]));let l=this.ce._fn("List",u);return l.isCanonical=l.ops.every(f=>f.isCanonical),l}};return s([])}get array(){let n=this.shape,i=this.rank,t=this.data;if(i===1)return t;if(i===2){let[s,a]=n,u=new Array(s);for(let l=0;l<s;l++)u[l]=t.slice(l*a,(l+1)*a);return u}let r=this._index.bind(this),o=s=>{if(s.length===i-1){let a=r(s);return t.slice(a,a+n[i-1])}else{let a=[];for(let u=0;u<n[s.length];u++)a.push(o([...s,u+1]));return a}};return o([])}_index(n){let i=this._strides;return n.reduce((t,r,o)=>t+(r-1)*i[o],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 o=r+1;o<n;o++)if(!t(i[r*n+o],i[o*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 o=0;o<n;o++)for(let s=o+1;s<n;s++)if(!t(i[o*n+s],r(i[s*n+o])))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 o=0;o<r;o++)if(t(i[r*n+o]))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 o=r+1;o<n;o++)if(!t(i[r*n+o]))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 o=0;o<n;o++)if(r<o&&!t(i[r*n+o])||r>o&&!t(i[r*n+o]))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 o=0;o<n;o++)if(r===o&&!t(i[r*n+o])||r!==o&&!t(i[r*n+o]))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),o=this.field.isZero.bind(this.field);for(let s=0;s<i;s++)for(let a=0;a<i;a++)if(s===a&&!r(t[s*i+a])||s!==a&&!o(t[s*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,o=this.shape[n-1];for(let s=0;s<o;s++)t[s]=r[s*o+s];return t}trace(n,i){if(this.rank!==2)return;let[t,r]=this.shape;if(t!==r)return;let o=this.data,s=new Array(t);for(let a=0;a<t;a++)s[a]=o[a*t+a];return this.field.addn(...s)}reshape(...n){return bn(this.ce,{dtype:this.dtype,shape:n,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,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,o]=this.shape,s=this.data;t&&(s=s.map(f=>t(f)));let a=0,u=new Array(r*o),l=o;for(let f=0;f<o;f++)for(let c=0;c<r;c++)u[a++]=s[c*l+f];return bn(this.ce,{dtype:this.dtype,shape:[o,r],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),o=this.field.neg.bind(this.field);if(n===2){let[y,N,T,R]=this.data;return t(r(y,R),o(r(N,T)))}let s=this.field.addn.bind(this.field),a=this.field.muln.bind(this.field);if(n===3){let[y,N,T,R,_,O,xe,be,hi]=this.data;return s([a(y,_,hi),a(N,O,xe),a(T,R,be),o(a(T,_,xe)),o(a(N,R,hi)),o(a(y,O,be))])}let u=this.shape[0],l=!1,f=this.field.div.bind(this.field),c=this.field.sub.bind(this.field),d=new Array(u).fill(0).map((y,N)=>N),m=[...this.data];for(let y=0;y<u;y++){let N=d[y-1];if(this.at(N,y)===0){let _;for(_=y+1;_<u;_++)if(this.at(d[_],y)!==0){N=d[_],d[_-1]=d[y-1],d[y-1]=N,l=!l;break}if(_===u)return this.at(N,y)}let T=this.at(N,y),R=y===0?1:this.at(d[y-2],y-2);for(let _=y+1;_<u;_++){let O=d[_-1];for(let xe=y+1;xe<u;xe++)m[O][xe]=f(c(r(m[O][xe],T),r(m[O][y],m[N][xe])),R)}}let b=m[d[u-1]][u-1];return l?this.field.neg(b):b}inverse(){if(this.rank!==2)return;let[n,i]=this.shape;if(n!==i)return;if(n===2){let[d,m,b,y]=this.data,N=this.determinant();if(N===void 0||this.field.isZero(N))return;let T=this.field.div.bind(this.field),R=this.field.neg.bind(this.field),_=[T(y,N),R(T(m,N)),R(T(b,N)),T(d,N)];return bn(this.ce,{dtype:this.dtype,shape:[i,i],data:_})}let t=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(t).fill(0).map((d,m)=>{let b=new Array(t).fill(0);return b[m]=1,b}),l=a.map((d,m)=>[...d,...u[m]]),f=new Array(t).fill(0).map((d,m)=>m);for(let d=0;d<t;d++){let m=f[d-1];if(this.at(m,d)===0){let N;for(N=d+1;N<t;N++)if(this.at(f[N],d)!==0){m=f[N],f[N-1]=f[d-1],f[d-1]=m;break}if(N===t)return}let b=this.at(m,d),y=d===0?1:this.at(f[d-2],d-2);for(let N=d+1;N<t;N++){let T=f[N-1];for(let R=d+1;R<t*2;R++)l[T][R]=o(l[T][R],s(r(s(l[T][d],l[m][R]),b),y))}}for(let d=t-1;d>=0;d--){let m=l[f[d],d];for(let b=0;b<d;b++){let y=f[b];for(let N=t;N<t*2;N++)l[y][N]=o(l[y][N],s(r(s(l[y][d],l[d][N]),m),m))}for(let b=t;b<t*2;b++)l[d][b]=r(l[d][b],m)}let c=l.map(d=>d.slice(t));return bn(this.ce,{dtype:this.dtype,shape:[i,i],data:c})}pseudoInverse(){}adjugateMatrix(){}minor(n,i){}map1(n,i){return bn(this.ce,{dtype:this.dtype,shape:this.shape,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,data:this.data.map((r,o)=>n(r,t[o]))})}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((o,s)=>o===n.shape[s]))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((o,s)=>i(o,t(n.data[s],r))):this.data.every((o,s)=>i(o,n.data[s]))}};function Ip(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 Rs=class extends Zn{constructor(i,t){super(i,t);this.dtype="float64";this.data=t.data}get isZero(){return this.data.every(i=>i===0)}},As=class extends Zn{constructor(i,t){super(i,t);this.dtype="complex128";this.data=t.data}},Cs=class extends Zn{constructor(i,t){super(i,t);this.dtype="bool";this.data=t.data}},Ms=class extends Zn{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 Rs(e,n):i==="bool"?new Cs(e,n):i==="complex64"||i==="complex128"?new As(e,n):new Ms(e,n)}var Lt=class e extends Y{constructor(i,t,r){super(i,r?.metadata);this.options=r;if(t instanceof Zn)this._tensor=t;else{let o=r?.canonical??!0;this._operator=t.op??"List",this._ops=o?Oe(i,t.ops):t.ops,this._expression=i._fn(this._operator,this._ops,{canonical:o})}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=kl(this._operator,this._ops);if(i===void 0){let t=kl(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 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 o=t.map(s=>this.tensor.field.cast(s,"expression")??i.engine.Nothing);for(let s of o)if(i.isSame(s))return!0;return!1}get size(){return this.tensor.shape.reduce((i,t)=>i*t,1)}each(i,t){let r=this.tensor.data,o=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[o++-1]),done:!1}):{value:void 0,done:!0}}}at(i){}indexOf(i){return-1}match(i,t){return Tn(i)||(i=this.engine.box(i,{canonical:!1})),li(i)?{[fi(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 Ce(e){return e instanceof Lt}function Ps(e,n){let i,t=[],r=!0,o=(s,a=0)=>{if(s.length!==0){s.length>1&&t[a]!==void 0?r=r&&t[a]===s.length:t[a]=Math.max(t[a]??0,s.length);for(let u of s)if(u.operator===e?o(u.ops,a+1):i=Zr(i,Bl(u)),!r)return}};return o(n),r?{shape:t,dtype:i}:void 0}function kl(e,n){let{shape:i,dtype:t}=Ps(e,n)??{shape:[],dtype:void 0};if(t===void 0)return;let r=!0,o=[],s=jr(n[0].engine,"expression"),a=s.cast.bind(s),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}o.push(c)}};if(u(n),!!r)return{shape:i,data:o,dtype:t}}function Hr(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=i.canonical.re;if(Number.isInteger(t)){let o=e[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 t<0&&(u=u.neg()),n._fn("Add",[i.canonical,u])}}}let r=e[1];if(!isNaN(t)){let o=r.canonical;if(o.re===0&&o.im===1)return n.number(n.complex(0,t))}if(i.symbol&&r.operator==="Delimiter"&&!n.lookupSymbol(i.symbol)){if(r.nops===0)return n.lookupFunction(i.symbol)||n.declare(i.symbol,"function"),n.box([i.symbol]);let o=r.op1.operator==="Sequence"?r.op1.ops:[r.op1];if(o=ne(o),!n.lookupSymbol(i.symbol))return n.lookupFunction(i.symbol)||n.declare(i.symbol,"function"),n.function(i.symbol,o)}if(i.symbol&&r.operator==="Delimiter"&&(r.op2.string==="[,]"||r.op2.string==="[;]")){let o=r.op1.operator==="Sequence"?r.op1.ops:[r.op1];return n.function("At",[i,...o])}}return e=wl(e),e=ne(e),e.every(t=>t.isValid&&(t.type==="unknown"||g(t.type,"number")||Xn(t)&&!t.string))?oe(n,e):n._fn("Tuple",e)}function wl(e){let n=[];for(let i of e)i.operator==="InvisibleOperator"?n.push(...wl(i.ops)):n.push(i);return n}function di(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=Ls(e);break;case"Number":e=Dl(e);break;case"Multiply":e=Rl(e);break;case"Add":e=Al(e);break;case"Power":e=et(e);break;case"Divide":e=Cl(e);break;case"Flatten":e=Os(e);break;case"Order":e=Wo(e,{recursive:!0});break;default:throw Error("Invalid canonical form")}return e}function Os(e){if(!e.operator||!e.ops||e.nops===0)return e;if(e.operator==="Delimiter")return Os(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,Ii(e.ops.map(Os),e.operator)):e}function Ls(e){return e.ops?e.operator==="InvisibleOperator"?Hr(e.ops.map(Ls),{engine:e.engine})??e:e.engine._fn(e.operator,e.ops.map(Ls)):e}function Dl(e){return e.isNumberLiteral?e.canonical:e.ops?e.engine._fn(e.operator,e.ops.map(Dl)):e}function Rl(e){if(!e.ops)return e;let n=e.ops.map(Rl);return e.operator==="Multiply"?oe(e.engine,n.map(i=>i.canonical)):e.operator==="Negate"?oe(e.engine,[n[0],e.engine.NegativeOne]):e}function Al(e){if(!e.ops)return e;let n=e.ops.map(Al);return e.operator==="Add"?qe(e.engine,n):e.operator==="Subtract"?qe(e.engine,[n[0],n[1].neg()]):e.engine._fn(e.operator,n)}function et(e){return e.ops?e.operator==="Power"?et(e.op1).pow(et(e.op2)):e.ops?e.engine._fn(e.operator,e.ops.map(et)):e:e}function Cl(e){return e.operator==="Divide"?Ze(et(e.op1),et(e.op2)):e.ops?e.engine._fn(e.operator,e.ops.map(Cl)):e}function Fs(e,n,i){if(n instanceof Y)return n;if(n=M(n),typeof n=="string")return fn(e,n,i);if(Array.isArray(n)){let[t,...r]=n;return new Qe(e,t,r.map(o=>Fs(e,o,i)))}if(typeof n=="object"){if("fn"in n)return Fs(e,n.fn,i);if("str"in n)return new yn(e,n.str);if("sym"in n)return fn(e,n.sym,i);if("num"in n)return fn(e,n.num,i)}return fn(e,n,i)}function Wr(e,n,i,t){if(t=t?{...t}:{},"canonical"in t||(t.canonical=!0),!he(n))throw new Error(`Unexpected function name: "${n}" (not a valid identifier: ${Ye(n)})`);let r=t.structural??!1;if(n==="Hold")return new Qe(e,"Hold",[Fs(e,i[0],t)],{...t,canonical:!0,structural:r});if(n==="Error"||n==="ErrorCode")return e._fn(n,i.map(s=>e.box(s,{canonical:!1})),t.metadata);if(n==="String")return i.length===0?new yn(e,"",t.metadata):new yn(e,i.map(s=>Ml(s)??"").join(""),t.metadata);if(n==="Symbol"&&i.length>0)return e.symbol(i.map(s=>Ml(s)??"").join(""),t);if(n==="Number"&&i.length===1)return fn(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 s=Pl(i[0]);if(s!==null){let a=Pl(i[1]);if(a!==null)return e.number([s,a],t)}n="Divide"}if(n==="Complex"){if(i.length===1){let s=i[0];if(s instanceof Y&&s.isNumberLiteral)return e.number(e.complex(0,s.re),t);let a=w(i[0]);return a!==null&&a!==0?e.number(e.complex(0,a),t):e.box(s).mul(e.I)}if(i.length===2){let s=i[0]instanceof Y?i[0].re:w(i[0]),a=i[1]instanceof Y?i[1].re:w(i[1]);return a!==null&&s!==null&&!isNaN(a)&&!isNaN(s)?a===0&&s===0?e.Zero:a!==0?e.number(e._numericValue({re:s,im:a}),t):fn(e,i[0],t):fn(e,i[0],t).add(fn(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 s=i[0];if(typeof s=="number")return e.number(-s,t);if(s instanceof Q)return e.number(s.neg(),t);let a=e.box(s,t),u=a.numericValue;if(u!==null)return e.number(typeof u=="number"?-u:u.neg(),t);i=[a]}}return t.canonical===!0?Bp(e,n,i,t.metadata):di(new Qe(e,n,i.map(s=>fn(e,s,{canonical:t.canonical,structural:r})),{metadata:t.metadata,canonical:!1,structural:r}),t.canonical??!1)}function fn(e,n,i){if(n==null)return e.error("missing");if(n instanceof $)return wp(e,n);if(n instanceof Y)return di(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 di(Wr(e,n[0],n.slice(1),{canonical:t,structural:r}),i.canonical)}if(typeof n=="number"||n instanceof Q||n instanceof L)return e.number(n);if(typeof n=="string")return n.startsWith("'")&&n.endsWith("'")?new yn(e,n.slice(1,-1)):/^[+-]?[0-9]/.test(n)?e.number(n):he(n)?e.symbol(n,{canonical:t}):e.error("invalid-identifier",n);if(typeof n=="object"){if("fn"in n){let[o,...s]=n.fn;return di(Wr(e,o,s,{canonical:t,structural:r}),i.canonical)}if("str"in n)return new yn(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 Ml(e){if(typeof e=="string")return e;if(e instanceof Y)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 Bp(e,n,i,t){let r=kp(e,n,i,t);if(r)return r;if(n==="List"){let l=i.map(d=>e.box(d)),{shape:f,dtype:c}=Ps("List",l)??{};return c&&f?new Lt(e,{op:"List",ops:l}):e._fn("List",l)}let o=e.lookupFunction(n);if(!o)return new Qe(e,n,ne(Oe(e,i)),{metadata:t,canonical:!0});let s;if(o.hold?s=i.map(l=>{let f=e.box(l,{canonical:!1});return f.operator==="ReleaseHold"?f.op1.canonical:f}):s=i.map(l=>e.box(l)),o.canonical){try{let l=o.canonical(s,{engine:e});if(l)return l}catch(l){console.error(l.message)}return new Qe(e,n,s,{metadata:t,canonical:!1})}let a=ne(s,o.associative?n:void 0),u=Za(e,a,o);if(u)return e._fn(n,u,t);if(a.length===1&&a[0].operator===n){if(o.involution)return a[0].op1;if(o.idempotent)return e._fn(n,s[0].ops,t)}return e._fn(n,wt(n,a),t)}function kp(e,n,i,t){let r=[];if(n==="Add"||n==="Multiply")r=Fe(e,_i(e,i),{flatten:n});else if(n==="Negate"||n==="Square"||n==="Sqrt"||n==="Exp")r=Fe(e,_i(e,i),1);else if(n==="Ln"||n==="Log")r=Fe(e,_i(e,i)),r.length===0&&(r=[e.error("missing")]);else if(n==="Power"||n==="Root")r=Fe(e,_i(e,i),2);else if(n==="Divide")r=Fe(e,_i(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(o=>o.isValid))return e._fn(n,r,t);if(n==="Add")return qe(e,r);if(n==="Negate")return fu(r[0]);if(n==="Multiply")return oe(e,r);if(n==="Divide")return r.length===2?Ze(...r):r.slice(1).reduce((o,s)=>Ze(o,s),r[0]);if(n==="Exp")return Oi(e.E,r[0]);if(n==="Square")return Oi(r[0],e.number(2));if(n==="Power")return Oi(r[0],r[1]);if(n==="Root")return si(r[0],r[1]);if(n==="Sqrt")return si(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 wp(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 o=n.im;return o===0?e.number(n.bignumRe??n.re):n.re===0?e.number(e.complex(0,o)):n.bignumRe!==void 0&&!ii(n.bignumRe)?qe(e,[e.number(n.bignumRe),e.number(e.complex(0,o))]):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 o=t.rational,s=e.function("Sqrt",[e.number(t.radical)]);if(Ne(o))i.push(s);else{let[a,u]=o;u===1?a===1?i.push(s):i.push(e.function("Multiply",[e.number(a),s])):a===1?i.push(e.function("Divide",[s,e.number(u)])):i.push(e.function("Divide",[e.function("Multiply",[e.number(a),s]),e.number(u)]))}}let r;return n.im===0?i.length===0?e.Zero:(r=i.length===1?i[0]:oe(e,i),r):i.length===0?e.number(e.complex(0,n.im)):(r=i.length===1?i[0]:oe(e,i),qe(e,[r,e.number(e.complex(0,n.im))]))}function Pl(e){return typeof e=="bigint"?e:typeof e=="number"&&Number.isInteger(e)?BigInt(e):e instanceof Y?bt(e):e instanceof Q||typeof e=="string"?X(e):e instanceof L?e.im===0?X(e.re):null:eu(e)}var Dp={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"]]],Arcoth:["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 Ol(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=Xe(r,t);return r}function Xe(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 s=Xe(e.op1,n);return s?s.neg():i._fn("D",[e.op1,i.symbol(n)]).neg()}if(e.operator==="Add"){let s=e.ops.map(a=>Xe(a,n));return s.some(a=>a===void 0)?void 0:Z(...s).evaluate()}if(e.operator==="Multiply"){let s=e.ops.map((a,u)=>{let l=e.ops.slice();l.splice(u,1);let f=se(...l);return(Xe(a,n)??i._fn("D",[a,i.symbol(n)])).mul(f)});return s.some(a=>a===void 0)?void 0:Z(...s).evaluate()}if(e.operator==="Power"){let[s,a]=e.ops;if(s.symbol===n)return a.mul(s.pow(a.add(i.NegativeOne))).evaluate();let u=s,l=a,f=Xe(u,n)??i._fn("D",[u,i.symbol(n)]),d=(Xe(l,n)??i._fn("D",[l,i.symbol(n)])).mul(u.ln()),m=l.mul(f).div(u);return e.mul(d.add(m)).evaluate()}if(e.operator==="Divide"){let[s,a]=e.ops,u=Xe(s,n)??i._fn("D",[s,i.symbol(n)]),l=Xe(a,n)??i._fn("D",[a,i.symbol(n)]);return u.mul(a).sub(l.mul(s)).div(a.pow(2)).evaluate()}let t=Dp[e.operator];if(!t){if(e.nops>1)return;let s=i._fn("Derivative",[i.symbol(e.operator),i.One]);if(!s.isValid)return;let a=e.ops[0],u=Xe(a,n)??i._fn("D",[a,i.symbol(n)]);return u.isValid?i._fn("Apply",[s,a]).mul(u):void 0}if(e.nops>1)return i._fn("D",[e,i.symbol(n)]);let r=e.ops[0],o=Xe(r,n)??i._fn("D",[r,i.symbol(n)]);return qi(i.box(t),[r]).mul(o)}var Ll=[{Derivative:{threadable:!1,hold:!0,signature:"(any, order:number?) -> function",evaluate:e=>{let n=e[0].evaluate(),i=Math.floor(e[1]?.N().re);return Ol(n,isNaN(i)?1:i)}},D:{threadable:!1,hold:!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 o=i._fn("D",[t,...r]);return i.popScope(),o},evaluate:(e,{engine:n})=>{let i=n,t=e[0].canonical,r=i.swapScope(t.scope);t=t.evaluate();let o=e.slice(1);o.length===0&&(t=void 0);for(let s of o){if(!s.symbol){t=void 0;break}if(t=Xe(t,s.symbol),t===void 0)break}return i.swapScope(r),t=t?.canonical,t?.operator==="D"?t:t?.evaluate()}},ND:{threadable:!1,hold:!0,signature:"(function, point:number) -> number",evaluate:(e,{engine:n})=>{let i=e[1]?.canonical.re;if(isNaN(i))return;let t=Ko(n.box(e[0]));return n.number(za(t,i))}},Integrate:{wikidata:"Q80091",threadable:!1,hold:!0,signature:"(expression, range:(tuple|symbol|nothing)) -> number",canonical:(e,{engine:n})=>{let i=n,t=e[1],r=null,o=null,s=null;t&&t.operator!=="Tuple"&&t.operator!=="Triple"&&t.operator!=="Pair"&&t.operator!=="Single"?r=t:t&&(r=t.ops?.[0]??null,o=t.ops?.[1]?.canonical??null,s=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)),o&&o.symbol!=="Nothing"&&(o=_n(i,o,"number")),s&&s.symbol!=="Nothing"&&(s=_n(i,s,"number")),o&&s?t=i.tuple(r,o,s):s?t=i.tuple(r,i.NegativeInfinity,s):o?t=i.tuple(r,o):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,hold:!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,o]=e.slice(1).map(a=>a.value),s;if(typeof r=="number"&&typeof o=="number"){let a=Ko(e[0]);s=n.number(Mr(a,r,o))}return n.precision=i,n.strict=t,s}}},{Limit:{description:"Limit of a function",complexity:5e3,threadable:!1,hold:!0,signature:"(expression, point:number, direction:number?) -> number",evaluate:(e,{engine:n})=>{let[i,t,r]=e,o=t.N().re;if(!isFinite(o))return;let s=$e(i);return n.number(Yn(a=>{let u=s([n.number(a)])?.value;return typeof u=="number"?u:Number.NaN},o,r?r.re:1))}},NLimit:{description:"Numerical approximation of the limit of a function",complexity:5e3,threadable:!1,hold:!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 o=$e(e);return t.number(Yn(s=>{let a=o([t.number(s)])?.value;return typeof a=="number"?a:Number.NaN},r,i?i.re:1))}}}];var Fl=[{Block:{hold:!0,signature:"(any) -> any",canonical:Cp,evaluate:Ap},Condition:{hold:!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??"")),qu(e,t)?i.True:i.False}},If:{hold:!0,signature:"(expression, expression, expression) -> any",type:([e,n,i])=>Pe(n.type,i.type),evaluate:([e,n,i],{engine:t})=>(e=e.evaluate(),e&&e.symbol==="True"?n?.evaluate()??t.Nothing:i?.evaluate()??t.Nothing)},Loop:{hold:!0,signature:"(body:expression, collection:expression) -> any",type:([e])=>e.type,evaluate:([e,n],{engine:i})=>{if(e??(e=i.Nothing),e.symbol==="Nothing")return e;if(n&&n.isCollection){let r,o=$e(e),s=0;for(let a of q(n)){if(r=o([a])??i.Nothing,r.operator==="Break")return r.op1;if(r.operator==="Return")return r;if(s++>i.iterationLimit)return i.error("iteration-limit-exceeded")}}let t=0;for(;;){let r=e.evaluate();if(r.operator==="Break")return r.op1;if(r.operator==="Return")return r;if(t++>i.iterationLimit)return i.error("iteration-limit-exceeded")}}},Which:{hold:!0,signature:"(...expression) -> any",type:e=>e.length%2!==0?"nothing":Pe(...e.filter((n,i)=>i%2===1).map(n=>n.type)),evaluate:(e,n)=>Rp(e,n)},FixedPoint:{hold:!0,signature:"any -> any"}}];function Rp(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 Ap(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 Cp(e,n){let{engine:i}=n;if(e.length===0)return null;i.pushScope();let t=[],r=[];for(let s of e)s.operator==="Declare"?t.push(s):r.push(ql(s));let o=i._fn("Block",[...t,...r]);return i.popScope(),o}function ql(e){return e.operator==="Declare"&&e.engine.error("unexpected-declare"),e.ops?e.engine._fn(e.operator,e.ops.map(ql)):e}var $l=[{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=[],o=e[0].im??0,s=Math.atan2(o,i),a=Math.sqrt(i*i+o*o);for(let u=0;u<t;u++){let l=(s+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 Ft(e){return e[Math.floor(Math.random()*e.length)]}function Vl(e,n){if(e==="Add"||e==="Multiply"){let i=[],t=1+Math.floor(Math.random()*12);for(;t>0;)i.push(En(n+1)),t-=1;return[e,...i]}return e==="Divide"||e==="Power"?[e,En(n+1),En(n+1)]:e==="Root"?[e,En(n+1),En(10)]:e==="trig"?Mp():[e,En(n+1)]}function Mp(){return[Ft(["Cos","Sin","Tan","Sinh","Arccos","Arsinh"]),Ft(["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 En(e){if(e??(e=1),e===1){let n=Ft([["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"?Vl(n,1):n}if(e===2){let n=Math.random();if(n>.75)return En(1);if(n>.5)return En(3);let i=Ft(["Multiply","Multiply","Add","Power","trig","Ln","Exp"]);return Vl(i,2)}return Ft([-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 Gl=[{Nothing:{signature:"nothing"}},{InvisibleOperator:{complexity:9e3,hold:!0,signature:"...any -> any",canonical:Hr},Sequence:{hold:!0,signature:"...any -> any",type:e=>e.length===0?"nothing":e.length===1?e[0].type:"any",canonical:(e,{engine:n})=>{let i=ne(e);return i.length===0?n.Nothing:i.length===1?i[0]:n._fn("Sequence",i)}},Delimiter:{complexity:9e3,hold:!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",Le(n,e,2));let i=e[0];if(i.operator==="Sequence")return n._fn("Tuple",Oe(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],_n(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=ko(e[0].ops)),e.length===1?e[0].evaluate(n):i._fn("Tuple",e.map(r=>r.evaluate(n)))}},Error:{hold:!0,complexity:500,signature:"((string|expression), expression?) -> nothing",canonical:(e,{engine:n})=>n._fn("Error",e)},ErrorCode:{complexity:500,hold:!0,signature:"(string, ...any) -> error",canonical:(e,{engine:n})=>{let i=_n(n,e[0],"string").string;return i==="incompatible-domain"?n._fn("ErrorCode",[n.string(i),e[1],e[2]]):n._fn("ErrorCode",e)}},Hold:{description:"Hold an expression, preventing it from being evaluated",hold:!0,signature:"any -> any",type:([e])=>e.symbol?"symbol":e.string?"string":e.isNumberLiteral?e.type:e.ops?Ea(e.type)??"function":"expression",canonical:(e,{engine:n})=>e.length!==1?null:n.hold(e[0]),evaluate:([e])=>e},HorizontalSpacing:{signature:"number -> nothing",canonical:(e,{engine:n})=>e.length===2?e[0].canonical:n.Nothing},Style:{complexity:9e3,signature:"(expression, ...any) -> expression",type:([e])=>e.type,evaluate:([e])=>e}},{About:{description:"Return information about an expression",hold:!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(`
|
|
83
83
|
`)),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(`
|
|
84
|
-
`))}},Head:{description:"Return the head of an expression, the name of the operator",hold:!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",Pe(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",hold:!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",Pe(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])=>Ei(e.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",hold:!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,{engine:n})=>{let i=e[0],t=e[1];if(!i.symbol)return n.Nothing;let r=t.evaluate();return n.assign(i.symbol,r),r}},Assume:{description:"Assume a type for a symbol",hold:!0,pure:!1,signature:"any -> symbol",evaluate:(e,{engine:n})=>n.symbol(n.assume(e[0]))},Declare:{hold:!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 o=k(r.string);if(Sn(o))return n.declare(i.symbol,o),r}},Type:{hold:!0,signature:"any -> string",evaluate:([e],{engine:n})=>n.string(e.type.toString())},Evaluate:{hold:!0,signature:"any -> any",type:([e])=>e.type,canonical:(e,{engine:n})=>n._fn("Evaluate",Oe(n,e,1)),evaluate:([e],n)=>e.evaluate(n)},Function:{complexity:9876,hold:!0,signature:"(any, ...symbol) -> any",type:([e])=>e.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(o=>n.symbol(o));return r.length===0?t:n._fn("Function",[t,...r])},evaluate:e=>{}},Simplify:{hold:!0,signature:"any -> expression",canonical:(e,{engine:n})=>n._fn("Simplify",Oe(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,hold:!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 di(e[0],n)}},N:{description:"Numerically evaluate an expression",hold:!0,signature:"any -> any",type:([e])=>e.type,canonical:(e,{engine:n})=>{if(e.length!==1)return n._fn("N",Oe(n,e,1));let i=e[0].operator;if(i==="N")return e[0].canonical;if(i==="Integrate"){let{index:t,lower:r,upper:o}=zi(e[0].op2);if(!t||r===void 0||o===void 0)return null;let s=e[0].op1;return n._fn("NIntegrate",[n.function("Function",[s,t]),n.number(r),n.number(o)])}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,o;return t===void 0?(r=0,o=Math.floor(i.re-1),isNaN(o)&&(o=0)):(r=Math.floor(i.re),o=Math.floor(t.re),isNaN(r)&&(r=0),isNaN(o)&&(o=0)),n.number(r+Math.floor(Math.random()*(o-r)))}},Signature:{hold:!0,signature:"symbol -> string | nothing",evaluate:([e],{engine:n})=>e.functionDefinition?n.string(e.functionDefinition.signature.toString()):n.Nothing},Subscript:{hold:!0,signature:"(collection|string, any) -> any",type:([e,n])=>e.string&&$(n)!==null?"integer":e.isCollection&&Kn(e)?Jn(e.type)??"any":e.symbol?"symbol":"expression",canonical:([e,n],{engine:i})=>{if(e=e.canonical,e.string){let t=$(n.canonical);if(t!==null&&t>1&&t<=36){let[r,o]=Ai(e.string,t);return o?i.error(["unexpected-digit",o[0]],e.toString()):i.number(r)}return i._fn("Baseform",[e,i.error(["invalid-base",n.toString()])])}if(e.isCollection&&Kn(e))return i._fn("At",[e,n.canonical]);if(e.symbol){let t=n.string??n.symbol??$(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,hold:!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??$(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($(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 o=Math.max(...t),s=Math.min(...t);t=t.filter(u=>u>s&&u<o);let a=t.reduce((u,l)=>u+l,0);return a===0?n.tuple(n.number(o),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(E(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(En())}}];var Gl=[{Matrix:{complexity:9e3,hold:!0,signature:"(matrix, string?, string?) -> matrix",type:([e])=>e.type,canonical:Mp,evaluate:(e,n)=>e[0].evaluate(n)},Vector:{complexity:9e3,hold:!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 Ae(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 Ae(i)?n.number(i.tensor.rank):n.Zero}},Reshape:{complexity:8200,signature:"(list<number>, tuple) -> value",type:([e,n])=>{if(!g(e.type,"list"))return"nothing";let i=e.type;return g(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(!Ae(i)&&K(i)&&(i=n.function("List",[...F(i)])),Ae(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(Ae(i))return n.box(["List",...i.tensor.flatten().map(t=>n.box(t))]);if(K(i))return n.function("List",[...F(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&&(!Ae(i)&&K(i)&&(i=n.function("List",[...F(i)])),Ae(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&&Ae(n))return n.tensor.conjugateTranspose(i,t)?.expression}},Determinant:{complexity:8200,signature:"(matrix) -> number",evaluate:e=>{let n=e[0];if(Ae(n))return n.tensor.determinant()}},Inverse:{complexity:8200,signature:"(matrix) -> matrix",type:([e])=>e.type,evaluate:([e])=>{if(Ae(e))return e.tensor.inverse()?.expression}},PseudoInverse:{complexity:8200,signature:"(matrix) -> matrix",evaluate:([e])=>{if(Ae(e))return e.tensor.pseudoInverse()?.expression}},AdjugateMatrix:{complexity:8200,signature:"(matrix) -> matrix",evaluate:e=>{let n=e[0];if(Ae(n))return n.tensor.adjugateMatrix()?.expression}},Trace:{complexity:8200,signature:"(matrix) -> number",evaluate:e=>{let n=e[0];if(Ae(n))return n.tensor.trace()}}}];function Mp(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,o=e[2]?.canonical;return e.length>3?n._fn(i,Oe(n,e,3)):o?n._fn(i,[t,r,o]):r?n._fn(i,[t,r]):n._fn(i,[t])}var zl={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:Ul},Or:{wikidata:"Q1651704",threadable:!0,associative:!0,commutative:!0,idempotent:!0,complexity:1e4,signature:"(boolean, ...boolean) -> boolean",evaluate:jl},Not:{wikidata:"Q190558",threadable:!0,involution:!0,complexity:10100,signature:"boolean -> boolean",evaluate:Zl},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:Hl},Implies:{wikidata:"Q7881229",threadable:!0,complexity:10200,signature:"(boolean, boolean) -> boolean",evaluate:Wl},Exists:{signature:"function",hold:!0},ExistsUnique:{signature:"function",hold:!0},ForAll:{signature:"function",hold:!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 Ul(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 o of i)if(o.isSame(t))r=!0;else if(t.operator==="Not"&&t.op1.isSame(o)||o.operator==="Not"&&o.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 jl(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 o of i)if(o.isSame(t))r=!0;else if(t.operator==="Not"&&t.op1.isSame(o)||o.operator==="Not"&&o.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 Zl(e,{engine:n}){let i=e[0]?.symbol;if(i==="True")return n.False;if(i==="False")return n.True}function Hl(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 Wl(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 Jl(e){let n={And:Ul,Or:jl,Not:Zl,Equivalent:Hl,Implies:Wl}[e.operator]?.(e.engine,e.ops);if(n)return{value:n,because:"logic"}}function Ls(e,n,i,t){let r=e.engine;return e.operator===i?r.box([t,...e.ops.map(o=>Ls(o,n,i,t))]):n.operator===i?r.box([t,...n.ops.map(o=>Ls(e,o,i,t))]):r.box([t,e,n])}function Yl(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,o)=>Ls(r,o,n,i),t[0])])}var Ql=[{Expand:{description:"Expand out products and positive integer powers",hold:!0,signature:"(value)-> value",evaluate:([e])=>je(e.canonical)??e},ExpandAll:{description:"Recursively expand out products and positive integer powers",hold:!0,signature:"(value)-> value",evaluate:([e])=>uu(e)??e},Factor:{description:"Factors an algebraic expression into a product of irreducible factors",hold:!0,signature:"(value)-> value",evaluate:([e])=>$n(e.canonical)},Together:{description:"Combine rational expressions into a single fraction",hold:!0,signature:"(value)-> value",evaluate:([e])=>_t(e)},Distribute:{description:"Distribute multiplication over addition",hold:!0,signature:"(value)-> value",evaluate:([e])=>e&&Yl(e)}}];var Kl={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,o=i.value,s=t.value,a=r.value;if(typeof o=="number"&&typeof s=="number"&&typeof a=="number")return o%a===s%a?n.True:n.False}},IsSame:{description:"Compare two expressions for structural equality",hold:!0,commutative:!0,commutativeOrder:Sr,signature:"(any, any) -> boolean",evaluate:(e,{engine:n})=>{if(e.length!==2)return;let[i,t]=e;return i.isSame(t)===!0?n.True:n.False}},Equal:{commutative:!0,commutativeOrder:Sr,complexity:11e3,signature:"(any, any) -> boolean",canonical:(e,{engine:n})=>te(n,"Equal",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.True;let i;for(let t of e)if(!i)i=t;else if(i.isEqual(t)!==!0)return n.False;return n.True}},NotEqual:{wikidata:"Q28113351",commutative:!0,commutativeOrder:Sr,complexity:11e3,signature:"(any, any) -> boolean",canonical:(e,{engine:n})=>te(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})=>te(n,"Less",e),eq:(e,n)=>Xl(e,n,"Greater"),evaluate:(e,{engine:n})=>{if(e.length===2){let[t,r]=e,o=t.isLess(r);return o===void 0?void 0:o?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",[te(n,"Less",e)])},Greater:{complexity:11e3,signature:"(any, any, ...any) -> boolean",canonical:(e,{engine:n})=>te(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})=>te(n,"LessEqual",e),eq:(e,n)=>Xl(e,n,"LessGreater"),evaluate:(e,{engine:n})=>{if(e.length===2){let[t,r]=e,o=t.isLessEqual(r);return o===void 0?void 0:o?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",[te(n,"LessEqual",e)])},GreaterEqual:{complexity:11e3,signature:"(any, any, ...any) -> boolean",canonical:(e,{engine:n})=>te(n,"LessEqual",[...e].reverse())},NotGreaterNotEqual:{complexity:11e3,signature:"(any, any, ...any) -> boolean",canonical:(e,{engine:n})=>n._fn("Not",[te(n,"GreaterEqual",e)])},TildeFullEqual:{description:"Indicate isomorphism, congruence and homotopic equivalence",signature:"(any, any, ...any) -> boolean",canonical:(e,{engine:n})=>te(n,"TildeFullEqual",e)},NotTildeFullEqual:{complexity:11100,signature:"(any, any, ...any) -> boolean",canonical:(e,{engine:n})=>n._fn("Not",[te(n,"TildeFullEqual",e)])},TildeEqual:{description:"Approximately or asymptotically equal",complexity:11e3,signature:"(any, any, ...any) -> boolean",canonical:(e,{engine:n})=>te(n,"TildeEqual",e)},NotTildeEqual:{complexity:11100,signature:"(any, any, ...any) -> boolean",canonical:(e,{engine:n})=>n._fn("Not",[te(n,"TildeEqual",e)])},Approx:{complexity:11100,signature:"(any, any, ...any) -> boolean",canonical:(e,{engine:n})=>te(n,"Approx",e)},NotApprox:{complexity:11100,signature:"(any, any, ...any) -> boolean",canonical:(e,{engine:n})=>n._fn("Not",[te(n,"Approx",e)])},ApproxEqual:{complexity:11100,signature:"(any, any, ...any) -> boolean",canonical:(e,{engine:n})=>te(n,"ApproxEqual",e)},NotApproxEqual:{complexity:11100,canonical:(e,{engine:n})=>n._fn("Not",[te(n,"ApproxEqual",e)])},ApproxNotEqual:{complexity:11100,signature:"(any, any, ...any) -> boolean",canonical:(e,{engine:n})=>te(n,"ApproxNotEqual",e)},NotApproxNotEqual:{complexity:11100,signature:"(any, any, ...any) -> boolean",canonical:(e,{engine:n})=>n._fn("Not",[te(n,"ApproxNotEqual",e)])},Precedes:{complexity:11100,signature:"(any, any, ...any) -> boolean",canonical:(e,{engine:n})=>te(n,"Precedes",e)},NotPrecedes:{complexity:11100,signature:"(any, any, ...any) -> boolean",canonical:(e,{engine:n})=>n._fn("Not",[te(n,"Precedes",e)])},Succeeds:{signature:"(any, any, ...any) -> boolean",canonical:(e,{engine:n})=>te(n,"Succeeds",e)},NotSucceeds:{complexity:11100,signature:"(any, any, ...any) -> boolean",canonical:(e,{engine:n})=>n._fn("Not",[te(n,"Succeeds",e)])}};function te(e,n,i){i=ie(i,n);let t=[],r=[];for(let o of i)Be(o)?(t.push(o),r.push(o.ops[o.ops.length-1])):r.push(o);return t.length===0?e._fn(n,r):e._fn("And",[e._fn(n,r),...t])}function Xl(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 ef={EmptySet:{type:"set",constant:!0,wikidata:"Q226183",eq:e=>g(e.type,"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)=>g(n.type,"number"),subsetOf:(e,n,i)=>n.operator==="Range"||n.operator==="Linspace"?!0:g(n.type,"set<number>")&&(!i||n.symbol!=="Numbers"),eltsgn:()=>"unsigned",elttype:()=>"number"}},ComplexNumbers:{type:"set<complex>",constant:!0,collection:{size:()=>1/0,contains:(e,n)=>g(n.type,"complex"),subsetOf:(e,n,i)=>n.operator==="Range"||n.operator==="Linspace"?!0:g(n.type,"set<complex>")&&(!i||n.symbol!=="ComplexNumbers"),eltsgn:()=>"unsigned",elttype:()=>"complex"}},ImaginaryNumbers:{type:"set<imaginary>",constant:!0,collection:{size:()=>1/0,contains:(e,n)=>g(n.type,"imaginary"),subsetOf:(e,n,i)=>g(n.type,"set<imaginary>")&&(!i||n.symbol!=="ImaginaryNumbers"),eltsgn:()=>"unsigned",elttype:()=>"complex"}},Integers:{type:"set<integer>",constant:!0,collection:{contains:(e,n)=>g(n.type,"integer"),size:()=>1/0,subsetOf:(e,n,i)=>n.operator==="Range"?!0:g(n.type,"set<integer>")&&(!i||n.symbol!=="Integers"),eltsgn:()=>{},elttype:()=>"integer"}},RationalNumbers:{type:"set<rational>",constant:!0,collection:{size:()=>1/0,contains:(e,n)=>g(n.type,"rational"),subsetOf:(e,n,i)=>g(n.type,"set<rational>")&&(!i||n.symbol!=="RationalNumbers"),eltsgn:()=>{},elttype:()=>"rational"}},NegativeNumbers:{type:"set<real>",constant:!0,collection:{size:()=>1/0,contains:(e,n)=>g(n.type,"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 g(n.type,"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)=>g(n.type,"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 g(n.type,"set<real>")&&n.symbolDefinition?.collection?.eltsgn?.(n)==="non-positive"&&(!i||n.symbol!=="NonPositiveNumbers")},eltsgn:()=>"non-positive",elttype:()=>"real"}},PositiveNumbers:{type:"set<real>",constant:!0,collection:{contains:(e,n)=>g(n.type,"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 g(n.type,"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)=>g(n.type,"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 g(n.type,"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)=>g(n.type,"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 g(n.type,"set<integer>")&&n.symbolDefinition?.collection?.eltsgn?.(n)==="non-positive"&&(!i||n.symbol!=="NonPositiveIntegers")},eltsgn:()=>"non-positive",elttype:()=>"integer"}},PositiveIntegers:{type:"set<integer>",constant:!0,collection:{contains:(e,n)=>g(n.type,"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 g(n.type,"set<integer>")&&n.symbolDefinition?.collection?.eltsgn?.(n)==="positive"&&(!i||n.symbol!=="PositiveIntegers")},eltsgn:()=>"non-positive",elttype:()=>"integer"}},NonNegativeInteger:{type:"set<integer>",constant:!0,collection:{contains:(e,n)=>g(n.type,"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 g(n.type,"set<integer>")&&n.symbolDefinition?.collection?.eltsgn?.(n)==="non-negative"&&(!i||n.symbol!=="NonNegativeInteger")},eltsgn:()=>"non-negative",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=pi(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=pi(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=pi(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=pi(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=pi(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=pi(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=pi(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",associative:!0,commutative:!0,involution:!0,signature:"(set, ...set) -> set",canonical:(e,{engine:n})=>e.length===0||e.length===1?n.symbol("EmptySet"):n._fn("Intersection",e),evaluate:Op},Union:{wikidata:"Q185359",associative:!0,commutative:!0,involution:!0,signature:"(collection, ...collection) -> set",canonical:(e,{engine:n})=>e.length===0?n.symbol("EmptySet"):n._fn("Union",e),evaluate:Pp,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 F(t))n.every(o=>!o.contains(r))&&(i+=1);n.push(t)}return i},iterator:e=>{let n=[],i=0,t=mt(e.ops[i]);return t?{next:()=>{let r=!1,o;do{if(o=t.next(),o.done){if(n.push(e.ops[i]),i+=1,i===e.ops.length)return{value:void 0,done:!0};if(t=mt(e.ops[i]),!t)return{value:void 0,done:!0}}r=n.every(s=>!s.contains(o.value))}while(!r);return{value:o.value,done:!1}}}:{next:()=>({value:void 0,done:!0})}}}},SetMinus:{wikidata:"Q18192442",signature:"(set, ...value) -> set",evaluate:Lp,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=mt(n);return t?{next(){let r=t.next();for(;!r.done&&i.some(o=>o.isSame(r.value));)r=t.next();return r}}:{next:()=>({value:void 0,done:!0})}}}},SymmetricDifference:{wikidata:"Q1147242",signature:"(set, set) -> set"}};function pi(e,n,i=!0){return!e.isCollection||!n.isCollection?!1:!!e.symbolDefinition?.collection?.subsetOf?.(e,n,i)}function Pp(e,{engine:n}){let i=e.map(o=>o.isCollection?o:n._fn("Set",[o]));if(i.reduce((o,s)=>o+(s.size??0),0)>100)return n._fn("Union",i);let r=[];for(let o of i)for(let s of F(o))r.every(a=>!a.isSame(s))&&r.push(s);return r.length===0?n.symbol("EmptySet"):n._fn("Set",r)}function Op(e,{engine:n}){let i=[...e[0].ops??[]];for(let t of e.slice(1))K(t)?i=i.filter(r=>[...F(t)].some(o=>r.isSame(o))):i=i.filter(r=>r.isSame(t));return i.length===0?n.symbol("EmptySet"):n._fn("Set",i)}function Lp(e,{engine:n}){return n.symbol("EmptySet")}var nf=[{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(qo(i,t))}}},{Mean:{complexity:1200,threadable:!1,signature:"collection -> number",evaluate:(e,{engine:n})=>{let i=0,t=0;for(let r of F(e[0]))i+=r.re,t++;return t===0?n.NaN:n.number(i/t)}},Median:{complexity:1200,threadable:!1,signature:"collection -> number",evaluate:(e,{engine:n})=>{let i=[];for(let r of F(e[0])){let o=r.re;if(!Number.isFinite(o))return n.NaN;i.push(o)}if(i.length===0)return n.NaN;i.sort((r,o)=>r-o);let t=Math.floor(i.length/2);return i.length%2===0?n.number((i[t-1]+i[t])/2):n.number(i[t])}},Variance:{complexity:1200,threadable:!1,signature:"collection -> number",evaluate:(e,{engine:n})=>{let i=0,t=0,r=0;for(let o of F(e[0])){let s=o.re;if(!Number.isFinite(s))return n.NaN;i+=s,t+=s*s,r++}return r===0?n.NaN:n.number((t-i*i/r)/(r-1))}},StandardDeviation:{complexity:1200,threadable:!1,description:"Sample Standard Deviation of a collection of numbers.",signature:"collection -> number",evaluate:(e,{engine:n})=>{let i=0,t=0,r=0;for(let o of F(e[0])){let s=o.re;if(!Number.isFinite(s))return n.NaN;i+=s,t+=s*s,r++}return r===0?n.NaN:n.number(Math.sqrt((t-i*i/r)/(r-1)))}},Kurtosis:{complexity:1200,threadable:!1,signature:"collection -> number",evaluate:(e,{engine:n})=>{let i=0,t=0,r=0,o=0;for(let u of F(e[0])){let l=u.re;if(!Number.isFinite(l))return n.NaN;i+=l,t+=l*l,r+=l*l*l*l,o++}if(o===0)return n.NaN;let s=(t-i*i/o)/(o-1),a=(r-t*t/o)/(o-1);return n.number((a/(s*s)-3)*(o*(o+1))/6)}},Skewness:{complexity:1200,threadable:!1,signature:"collection -> number",evaluate:(e,{engine:n})=>{let i=0,t=0,r=0,o=0;for(let u of F(e[0])){let l=u.re;if(!Number.isFinite(l))return n.NaN;i+=l,t+=l*l,r+=l*l*l,o++}if(o===0)return n.NaN;let s=(t-i*i/o)/(o-1),a=(r-t*i/o)/(o-1);return n.number(a/Math.pow(s,3/2)*Math.sqrt(o*1))}},Mode:{complexity:1200,threadable:!1,signature:"collection -> number",evaluate:(e,{engine:n})=>{let i=[];for(let s of F(e[0])){let a=s.re;if(!Number.isFinite(a))return n.NaN;i.push(a)}if(i.length===0)return n.NaN;i.sort((s,a)=>s-a);let t={};for(let s of i)t[s]=(t[s]??0)+1;let r=0,o=i[0];for(let s of i){let a=t[s];a>r&&(r=a,o=s)}return n.number(o)}},Quartiles:{complexity:1200,threadable:!1,signature:"collection -> tuple<mid:number, lower:number, upper:number>",evaluate:(e,{engine:n})=>{let i=[];for(let s of F(e[0])){let a=s.re;if(!Number.isFinite(a))return n.tuple(n.NaN,n.NaN,n.NaN);i.push(a)}if(i.length===0)return n.tuple(n.NaN,n.NaN,n.NaN);i.sort((s,a)=>s-a);let t=Math.floor(i.length/2),r=i.slice(0,t),o=i.slice(t+1);return n.tuple(n.number(i[t]),n.number(r[Math.floor(r.length/2)]),n.number(o[Math.floor(o.length/2)]))}},InterquartileRange:{complexity:1200,threadable:!1,signature:"collection -> number",evaluate:(e,{engine:n})=>{let i=[];for(let s of F(e[0])){let a=s.re;if(!Number.isFinite(a))return n.NaN;i.push(a)}if(i.length===0)return n.NaN;i.sort((s,a)=>s-a);let t=Math.floor(i.length/2),r=i.slice(0,t),o=i.slice(t+1);return n.number(o[Math.floor(o.length/2)]-r[Math.floor(r.length/2)])}},Erf:{complexity:7500,signature:"number -> number",evaluate:(e,{engine:n})=>{let i=e[0].re;if(Number.isFinite(i))return n.number(Ho(i))}},Erfc:{complexity:7500,signature:"number -> number",evaluate:(e,{engine:n})=>{let i=e[0].re;if(Number.isFinite(i))return n.number(1-Ho(i))}},ErfInv:{complexity:7500,signature:"number -> number",evaluate:(e,{engine:n})=>{let i=e[0].re;if(Number.isFinite(i))return n.number(yu(i))}}}];var tf=[{Pi:{type:"real",constant:!0,holdUntil:"N",wikidata:"Q167",value:e=>e.number(sn(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 o=Bi([r,180]);return o[0]===0?i.Zero:o[0]===1&&o[1]===1?i.Pi:o[0]===1?i.Pi.div(o[1]):i.number(o).mul(i.Pi)}return i.number(r).div(180).mul(i.Pi)},evaluate:(e,{engine:n})=>n.angularUnit==="deg"?e[0]:e[0].mul(n.Pi.div(180)).evaluate()},Hypot:{threadable:!0,signature:"(real, real) -> real",sgn:()=>"non-negative",evaluate:([e,n],{engine:i})=>i.box(["Sqrt",["Add",["Square",e],["Square",n]]])},Sin:re("Sin",5e3)},{Arctan:{wikidata:"Q2257242",complexity:5200,threadable:!0,signature:"number -> real",sgn:([e])=>Go("Arctan",e),evaluate:([e],{numericApproximation:n})=>n?It("Arctan",e):kt("Arctan",e)??It("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,o)=>Q.atan2(r,o)):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:re("Cos",5050),Tan:re("Tan",5100)},{Arcosh:re("Arcosh",6200),Arcsin:re("Arcsin",5500),Arsinh:re("Arsinh",6100),Artanh:re("Artanh",6300),Cosh:re("Cosh",6050),Cot:re("Cot",5600),Csc:re("Csc",5600,"Cosecant"),Sec:re("Sec",5600,"Secant, inverse of cosine"),Sinh:re("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:re("Csch",6200,"Hyperbolic cosecant"),Sech:re("Sech",6200,"Hyperbolic secant"),Tanh:re("Tanh",6200,"Hyperbolic tangent")},{Arccos:re("Arccos",5550),Arccot:re("Arccot",5650),Arcoth:re("Arcoth",6350),Arcsch:re("Arcsch",6250),Arcsec:re("Arcsec",5650),Arsech:re("Arsech",6250),Arccsc:re("Arccsc",5650),Coth:re("Coth",6300),InverseFunction:{hold:!0,signature:"(function) -> function",canonical:(e,{engine:n})=>(e=Oe(n,e,1),Bt(n,e)??n._fn("InverseFunction",e)),evaluate:(e,{engine:n})=>Bt(n,e)}}];function re(e,n,i){return{complexity:n,description:i,threadable:!0,signature:"number -> number",sgn:([t])=>Go(e,t),evaluate:([t],{numericApproximation:r})=>r?It(e,t):kt(e,t)??It(e,t)}}var le=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 g(this.type,"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=_o(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=rf(this._engine,n.value),n.type){let i=k(n?.type);if(!Sn(i))throw new Error(`Invalid type: "${n.type}"`);this._type=i,this.inferredType=!1}if(this._value){if(!this._type||this._type==="unknown")this._type=this._value.type,this.inferredType=!0;else if(!g(this._value.type,this._type))throw new Error([`Symbol "${this.name}"`,`The value "${this._value.toString()}" of type "${this._value.type.toString()}" is not compatible with the type "${this._type.toString()}"`].join(`
|
|
85
|
-
| `))}n.eq&&(this.eq=n.eq),n.neq&&(this.neq=n.neq),n.cmp&&(this.cmp=n.cmp),n.collection&&(this.collection=
|
|
84
|
+
`))}},Head:{description:"Return the head of an expression, the name of the operator",hold:!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",Oe(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",hold:!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",Oe(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])=>Ei(e.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",hold:!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,{engine:n})=>{let i=e[0],t=e[1];if(!i.symbol)return n.Nothing;let r=t.evaluate();return n.assign(i.symbol,r),r}},Assume:{description:"Assume a type for a symbol",hold:!0,pure:!1,signature:"any -> symbol",evaluate:(e,{engine:n})=>n.symbol(n.assume(e[0]))},Declare:{hold:!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 o=k(r.string);if(Sn(o))return n.declare(i.symbol,o),r}},Type:{hold:!0,signature:"any -> string",evaluate:([e],{engine:n})=>n.string(e.type.toString())},Evaluate:{hold:!0,signature:"any -> any",type:([e])=>e.type,canonical:(e,{engine:n})=>n._fn("Evaluate",Le(n,e,1)),evaluate:([e],n)=>e.evaluate(n)},Function:{complexity:9876,hold:!0,signature:"(any, ...symbol) -> any",type:([e])=>e.type,canonical:(e,{engine:n})=>{if(e.length===0)return n.Nothing;let i=Br(e[0],e.slice(1));if(!i)return null;let t=i[0].canonical,r=i.slice(1).map(o=>n.symbol(o));return r.length===0?t:n._fn("Function",[t,...r])},evaluate:e=>{}},Simplify:{hold:!0,signature:"any -> expression",canonical:(e,{engine:n})=>n._fn("Simplify",Le(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,hold:!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 di(e[0],n)}},N:{description:"Numerically evaluate an expression",hold:!0,signature:"any -> any",type:([e])=>e.type,canonical:(e,{engine:n})=>{if(e.length!==1)return n._fn("N",Le(n,e,1));let i=e[0].operator;if(i==="N")return e[0].canonical;if(i==="Integrate"){let{index:t,lower:r,upper:o}=zi(e[0].op2);if(!t||r===void 0||o===void 0)return null;let s=e[0].op1;return n._fn("NIntegrate",[n.function("Function",[s,t]),n.number(r),n.number(o)])}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,o;return t===void 0?(r=0,o=Math.floor(i.re-1),isNaN(o)&&(o=0)):(r=Math.floor(i.re),o=Math.floor(t.re),isNaN(r)&&(r=0),isNaN(o)&&(o=0)),n.number(r+Math.floor(Math.random()*(o-r)))}},Signature:{hold:!0,signature:"symbol -> string | nothing",evaluate:([e],{engine:n})=>e.functionDefinition?n.string(e.functionDefinition.signature.toString()):n.Nothing},Subscript:{hold:!0,signature:"(collection|string, any) -> any",type:([e,n])=>e.string&&G(n)!==null?"integer":e.isCollection&&Xn(e)?Wn(e.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,o]=Ai(e.string,t);return o?i.error(["unexpected-digit",o[0]],e.toString()):i.number(r)}return i._fn("Baseform",[e,i.error(["invalid-base",n.toString()])])}if(e.isCollection&&Xn(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,hold:!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 o=Math.max(...t),s=Math.min(...t);t=t.filter(u=>u>s&&u<o);let a=t.reduce((u,l)=>u+l,0);return a===0?n.tuple(n.number(o),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(E(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(En())}}];var zl=[{Matrix:{complexity:9e3,hold:!0,signature:"(matrix, string?, string?) -> matrix",type:([e])=>e.type,canonical:Pp,evaluate:(e,n)=>e[0].evaluate(n)},Vector:{complexity:9e3,hold:!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 Ce(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 Ce(i)?n.number(i.tensor.rank):n.Zero}},Reshape:{complexity:8200,signature:"(list<number>, tuple) -> value",type:([e,n])=>{if(!g(e.type,"list"))return"nothing";let i=e.type;return g(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(!Ce(i)&&K(i)&&(i=n.function("List",[...q(i)])),Ce(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(Ce(i))return n.box(["List",...i.tensor.flatten().map(t=>n.box(t))]);if(K(i))return n.function("List",[...q(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&&(!Ce(i)&&K(i)&&(i=n.function("List",[...q(i)])),Ce(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&&Ce(n))return n.tensor.conjugateTranspose(i,t)?.expression}},Determinant:{complexity:8200,signature:"(matrix) -> number",evaluate:e=>{let n=e[0];if(Ce(n))return n.tensor.determinant()}},Inverse:{complexity:8200,signature:"(matrix) -> matrix",type:([e])=>e.type,evaluate:([e])=>{if(Ce(e))return e.tensor.inverse()?.expression}},PseudoInverse:{complexity:8200,signature:"(matrix) -> matrix",evaluate:([e])=>{if(Ce(e))return e.tensor.pseudoInverse()?.expression}},AdjugateMatrix:{complexity:8200,signature:"(matrix) -> matrix",evaluate:e=>{let n=e[0];if(Ce(n))return n.tensor.adjugateMatrix()?.expression}},Trace:{complexity:8200,signature:"(matrix) -> number",evaluate:e=>{let n=e[0];if(Ce(n))return n.tensor.trace()}}}];function Pp(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,o=e[2]?.canonical;return e.length>3?n._fn(i,Le(n,e,3)):o?n._fn(i,[t,r,o]):r?n._fn(i,[t,r]):n._fn(i,[t])}var Ul={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:jl},Or:{wikidata:"Q1651704",threadable:!0,associative:!0,commutative:!0,idempotent:!0,complexity:1e4,signature:"(boolean, ...boolean) -> boolean",evaluate:Zl},Not:{wikidata:"Q190558",threadable:!0,involution:!0,complexity:10100,signature:"boolean -> boolean",evaluate:Hl},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:Wl},Implies:{wikidata:"Q7881229",threadable:!0,complexity:10200,signature:"(boolean, boolean) -> boolean",evaluate:Jl},Exists:{signature:"function",hold:!0},NotExists:{signature:"function",hold:!0},ExistsUnique:{signature:"function",hold:!0},ForAll:{signature:"function",hold:!0},NotForAll:{signature:"function",hold:!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 jl(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 o of i)if(o.isSame(t))r=!0;else if(t.operator==="Not"&&t.op1.isSame(o)||o.operator==="Not"&&o.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 Zl(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 o of i)if(o.isSame(t))r=!0;else if(t.operator==="Not"&&t.op1.isSame(o)||o.operator==="Not"&&o.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 Hl(e,{engine:n}){let i=e[0]?.symbol;if(i==="True")return n.False;if(i==="False")return n.True}function Wl(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 Jl(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 Yl(e){let n={And:jl,Or:Zl,Not:Hl,Equivalent:Wl,Implies:Jl}[e.operator]?.(e.engine,e.ops);if(n)return{value:n,because:"logic"}}function qs(e,n,i,t){let r=e.engine;return e.operator===i?r.box([t,...e.ops.map(o=>qs(o,n,i,t))]):n.operator===i?r.box([t,...n.ops.map(o=>qs(e,o,i,t))]):r.box([t,e,n])}function Ql(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,o)=>qs(r,o,n,i),t[0])])}var Xl=[{Expand:{description:"Expand out products and positive integer powers",hold:!0,signature:"(value)-> value",evaluate:([e])=>Ae(e.canonical)??e},ExpandAll:{description:"Recursively expand out products and positive integer powers",hold:!0,signature:"(value)-> value",evaluate:([e])=>lu(e)??e},Factor:{description:"Factors an algebraic expression into a product of irreducible factors",hold:!0,signature:"(value)-> value",evaluate:([e])=>$n(e.canonical)},Together:{description:"Combine rational expressions into a single fraction",hold:!0,signature:"(value)-> value",evaluate:([e])=>_t(e)},Distribute:{description:"Distribute multiplication over addition",hold:!0,signature:"(value)-> value",evaluate:([e])=>e&&Ql(e)}}];var ef={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,o=i.value,s=t.value,a=r.value;if(typeof o=="number"&&typeof s=="number"&&typeof a=="number")return o%a===s%a?n.True:n.False}},IsSame:{description:"Compare two expressions for structural equality",hold:!0,commutative:!0,commutativeOrder:_r,signature:"(any, any) -> boolean",evaluate:(e,{engine:n})=>{if(e.length!==2)return;let[i,t]=e;return i.isSame(t)===!0?n.True:n.False}},Equal:{commutative:!0,commutativeOrder:_r,complexity:11e3,signature:"(any, any) -> boolean",canonical:(e,{engine:n})=>ie(n,"Equal",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.True;let i;for(let t of e)if(!i)i=t;else if(i.isEqual(t)!==!0)return n.False;return n.True}},NotEqual:{wikidata:"Q28113351",commutative:!0,commutativeOrder:_r,complexity:11e3,signature:"(any, any) -> boolean",canonical:(e,{engine:n})=>ie(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})=>ie(n,"Less",e),eq:(e,n)=>Kl(e,n,"Greater"),evaluate:(e,{engine:n})=>{if(e.length===2){let[t,r]=e,o=t.isLess(r);return o===void 0?void 0:o?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",[ie(n,"Less",e)])},Greater:{complexity:11e3,signature:"(any, any, ...any) -> boolean",canonical:(e,{engine:n})=>ie(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})=>ie(n,"LessEqual",e),eq:(e,n)=>Kl(e,n,"LessGreater"),evaluate:(e,{engine:n})=>{if(e.length===2){let[t,r]=e,o=t.isLessEqual(r);return o===void 0?void 0:o?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",[ie(n,"LessEqual",e)])},GreaterEqual:{complexity:11e3,signature:"(any, any, ...any) -> boolean",canonical:(e,{engine:n})=>ie(n,"LessEqual",[...e].reverse())},NotGreaterNotEqual:{complexity:11e3,signature:"(any, any, ...any) -> boolean",canonical:(e,{engine:n})=>n._fn("Not",[ie(n,"GreaterEqual",e)])},TildeFullEqual:{description:"Indicate isomorphism, congruence and homotopic equivalence",signature:"(any, any, ...any) -> boolean",canonical:(e,{engine:n})=>ie(n,"TildeFullEqual",e)},NotTildeFullEqual:{complexity:11100,signature:"(any, any, ...any) -> boolean",canonical:(e,{engine:n})=>n._fn("Not",[ie(n,"TildeFullEqual",e)])},TildeEqual:{description:"Approximately or asymptotically equal",complexity:11e3,signature:"(any, any, ...any) -> boolean",canonical:(e,{engine:n})=>ie(n,"TildeEqual",e)},NotTildeEqual:{complexity:11100,signature:"(any, any, ...any) -> boolean",canonical:(e,{engine:n})=>n._fn("Not",[ie(n,"TildeEqual",e)])},Approx:{complexity:11100,signature:"(any, any, ...any) -> boolean",canonical:(e,{engine:n})=>ie(n,"Approx",e)},NotApprox:{complexity:11100,signature:"(any, any, ...any) -> boolean",canonical:(e,{engine:n})=>n._fn("Not",[ie(n,"Approx",e)])},ApproxEqual:{complexity:11100,signature:"(any, any, ...any) -> boolean",canonical:(e,{engine:n})=>ie(n,"ApproxEqual",e)},NotApproxEqual:{complexity:11100,canonical:(e,{engine:n})=>n._fn("Not",[ie(n,"ApproxEqual",e)])},ApproxNotEqual:{complexity:11100,signature:"(any, any, ...any) -> boolean",canonical:(e,{engine:n})=>ie(n,"ApproxNotEqual",e)},NotApproxNotEqual:{complexity:11100,signature:"(any, any, ...any) -> boolean",canonical:(e,{engine:n})=>n._fn("Not",[ie(n,"ApproxNotEqual",e)])},Precedes:{complexity:11100,signature:"(any, any, ...any) -> boolean",canonical:(e,{engine:n})=>ie(n,"Precedes",e)},NotPrecedes:{complexity:11100,signature:"(any, any, ...any) -> boolean",canonical:(e,{engine:n})=>n._fn("Not",[ie(n,"Precedes",e)])},Succeeds:{signature:"(any, any, ...any) -> boolean",canonical:(e,{engine:n})=>ie(n,"Succeeds",e)},NotSucceeds:{complexity:11100,signature:"(any, any, ...any) -> boolean",canonical:(e,{engine:n})=>n._fn("Not",[ie(n,"Succeeds",e)])}};function ie(e,n,i){i=ne(i,n);let t=[],r=[];for(let o of i)Be(o)?(t.push(o),r.push(o.ops[o.ops.length-1])):r.push(o);return t.length===0?e._fn(n,r):e._fn("And",[e._fn(n,r),...t])}function Kl(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 nf={EmptySet:{type:"set",constant:!0,wikidata:"Q226183",eq:e=>g(e.type,"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)=>g(n.type,"number"),subsetOf:(e,n,i)=>n.operator==="Range"||n.operator==="Linspace"?!0:g(n.type,"set<number>")&&(!i||n.symbol!=="Numbers"),eltsgn:()=>"unsigned",elttype:()=>"number"}},ComplexNumbers:{type:"set<complex>",constant:!0,collection:{size:()=>1/0,contains:(e,n)=>g(n.type,"complex"),subsetOf:(e,n,i)=>n.operator==="Range"||n.operator==="Linspace"?!0:g(n.type,"set<complex>")&&(!i||n.symbol!=="ComplexNumbers"),eltsgn:()=>"unsigned",elttype:()=>"complex"}},ImaginaryNumbers:{type:"set<imaginary>",constant:!0,collection:{size:()=>1/0,contains:(e,n)=>g(n.type,"imaginary"),subsetOf:(e,n,i)=>g(n.type,"set<imaginary>")&&(!i||n.symbol!=="ImaginaryNumbers"),eltsgn:()=>"unsigned",elttype:()=>"complex"}},Integers:{type:"set<integer>",constant:!0,collection:{contains:(e,n)=>g(n.type,"integer"),size:()=>1/0,subsetOf:(e,n,i)=>n.operator==="Range"?!0:g(n.type,"set<integer>")&&(!i||n.symbol!=="Integers"),eltsgn:()=>{},elttype:()=>"integer"}},RationalNumbers:{type:"set<rational>",constant:!0,collection:{size:()=>1/0,contains:(e,n)=>g(n.type,"rational"),subsetOf:(e,n,i)=>g(n.type,"set<rational>")&&(!i||n.symbol!=="RationalNumbers"),eltsgn:()=>{},elttype:()=>"rational"}},NegativeNumbers:{type:"set<real>",constant:!0,collection:{size:()=>1/0,contains:(e,n)=>g(n.type,"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 g(n.type,"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)=>g(n.type,"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 g(n.type,"set<real>")&&n.symbolDefinition?.collection?.eltsgn?.(n)==="non-positive"&&(!i||n.symbol!=="NonPositiveNumbers")},eltsgn:()=>"non-positive",elttype:()=>"real"}},PositiveNumbers:{type:"set<real>",constant:!0,collection:{contains:(e,n)=>g(n.type,"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 g(n.type,"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)=>g(n.type,"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 g(n.type,"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)=>g(n.type,"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 g(n.type,"set<integer>")&&n.symbolDefinition?.collection?.eltsgn?.(n)==="non-positive"&&(!i||n.symbol!=="NonPositiveIntegers")},eltsgn:()=>"non-positive",elttype:()=>"integer"}},PositiveIntegers:{type:"set<integer>",constant:!0,collection:{contains:(e,n)=>g(n.type,"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 g(n.type,"set<integer>")&&n.symbolDefinition?.collection?.eltsgn?.(n)==="positive"&&(!i||n.symbol!=="PositiveIntegers")},eltsgn:()=>"non-positive",elttype:()=>"integer"}},NonNegativeInteger:{type:"set<integer>",constant:!0,collection:{contains:(e,n)=>g(n.type,"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 g(n.type,"set<integer>")&&n.symbolDefinition?.collection?.eltsgn?.(n)==="non-negative"&&(!i||n.symbol!=="NonNegativeInteger")},eltsgn:()=>"non-negative",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=pi(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=pi(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=pi(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=pi(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=pi(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=pi(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=pi(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",associative:!0,commutative:!0,involution:!0,signature:"(set, ...set) -> set",canonical:(e,{engine:n})=>e.length===0||e.length===1?n.symbol("EmptySet"):n._fn("Intersection",e),evaluate:Fp},Union:{wikidata:"Q185359",associative:!0,commutative:!0,involution:!0,signature:"(collection, ...collection) -> set",canonical:(e,{engine:n})=>e.length===0?n.symbol("EmptySet"):n._fn("Union",e),evaluate:Lp,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 q(t))n.every(o=>!o.contains(r))&&(i+=1);n.push(t)}return i},iterator:e=>{let n=[],i=0,t=mt(e.ops[i]);return t?{next:()=>{let r=!1,o;do{if(o=t.next(),o.done){if(n.push(e.ops[i]),i+=1,i===e.ops.length)return{value:void 0,done:!0};if(t=mt(e.ops[i]),!t)return{value:void 0,done:!0}}r=n.every(s=>!s.contains(o.value))}while(!r);return{value:o.value,done:!1}}}:{next:()=>({value:void 0,done:!0})}}}},SetMinus:{wikidata:"Q18192442",signature:"(set, ...value) -> set",evaluate:qp,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=mt(n);return t?{next(){let r=t.next();for(;!r.done&&i.some(o=>o.isSame(r.value));)r=t.next();return r}}:{next:()=>({value:void 0,done:!0})}}}},SymmetricDifference:{wikidata:"Q1147242",signature:"(set, set) -> set"}};function pi(e,n,i=!0){return!e.isCollection||!n.isCollection?!1:!!e.symbolDefinition?.collection?.subsetOf?.(e,n,i)}function Lp(e,{engine:n}){let i=e.map(o=>o.isCollection?o:n._fn("Set",[o]));if(i.reduce((o,s)=>o+(s.size??0),0)>100)return n._fn("Union",i);let r=[];for(let o of i)for(let s of q(o))r.every(a=>!a.isSame(s))&&r.push(s);return r.length===0?n.symbol("EmptySet"):n._fn("Set",r)}function Fp(e,{engine:n}){let i=[...e[0].ops??[]];for(let t of e.slice(1))K(t)?i=i.filter(r=>[...q(t)].some(o=>r.isSame(o))):i=i.filter(r=>r.isSame(t));return i.length===0?n.symbol("EmptySet"):n._fn("Set",i)}function qp(e,{engine:n}){return n.symbol("EmptySet")}var tf=[{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(Vo(i,t))}}},{Mean:{complexity:1200,threadable:!1,signature:"collection -> number",evaluate:(e,{engine:n})=>{let i=0,t=0;for(let r of q(e[0]))i+=r.re,t++;return t===0?n.NaN:n.number(i/t)}},Median:{complexity:1200,threadable:!1,signature:"collection -> number",evaluate:(e,{engine:n})=>{let i=[];for(let r of q(e[0])){let o=r.re;if(!Number.isFinite(o))return n.NaN;i.push(o)}if(i.length===0)return n.NaN;i.sort((r,o)=>r-o);let t=Math.floor(i.length/2);return i.length%2===0?n.number((i[t-1]+i[t])/2):n.number(i[t])}},Variance:{complexity:1200,threadable:!1,signature:"collection -> number",evaluate:(e,{engine:n})=>{let i=0,t=0,r=0;for(let o of q(e[0])){let s=o.re;if(!Number.isFinite(s))return n.NaN;i+=s,t+=s*s,r++}return r===0?n.NaN:n.number((t-i*i/r)/(r-1))}},StandardDeviation:{complexity:1200,threadable:!1,description:"Sample Standard Deviation of a collection of numbers.",signature:"collection -> number",evaluate:(e,{engine:n})=>{let i=0,t=0,r=0;for(let o of q(e[0])){let s=o.re;if(!Number.isFinite(s))return n.NaN;i+=s,t+=s*s,r++}return r===0?n.NaN:n.number(Math.sqrt((t-i*i/r)/(r-1)))}},Kurtosis:{complexity:1200,threadable:!1,signature:"collection -> number",evaluate:(e,{engine:n})=>{let i=0,t=0,r=0,o=0;for(let u of q(e[0])){let l=u.re;if(!Number.isFinite(l))return n.NaN;i+=l,t+=l*l,r+=l*l*l*l,o++}if(o===0)return n.NaN;let s=(t-i*i/o)/(o-1),a=(r-t*t/o)/(o-1);return n.number((a/(s*s)-3)*(o*(o+1))/6)}},Skewness:{complexity:1200,threadable:!1,signature:"collection -> number",evaluate:(e,{engine:n})=>{let i=0,t=0,r=0,o=0;for(let u of q(e[0])){let l=u.re;if(!Number.isFinite(l))return n.NaN;i+=l,t+=l*l,r+=l*l*l,o++}if(o===0)return n.NaN;let s=(t-i*i/o)/(o-1),a=(r-t*i/o)/(o-1);return n.number(a/Math.pow(s,3/2)*Math.sqrt(o*1))}},Mode:{complexity:1200,threadable:!1,signature:"collection -> number",evaluate:(e,{engine:n})=>{let i=[];for(let s of q(e[0])){let a=s.re;if(!Number.isFinite(a))return n.NaN;i.push(a)}if(i.length===0)return n.NaN;i.sort((s,a)=>s-a);let t={};for(let s of i)t[s]=(t[s]??0)+1;let r=0,o=i[0];for(let s of i){let a=t[s];a>r&&(r=a,o=s)}return n.number(o)}},Quartiles:{complexity:1200,threadable:!1,signature:"collection -> tuple<mid:number, lower:number, upper:number>",evaluate:(e,{engine:n})=>{let i=[];for(let s of q(e[0])){let a=s.re;if(!Number.isFinite(a))return n.tuple(n.NaN,n.NaN,n.NaN);i.push(a)}if(i.length===0)return n.tuple(n.NaN,n.NaN,n.NaN);i.sort((s,a)=>s-a);let t=Math.floor(i.length/2),r=i.slice(0,t),o=i.slice(t+1);return n.tuple(n.number(i[t]),n.number(r[Math.floor(r.length/2)]),n.number(o[Math.floor(o.length/2)]))}},InterquartileRange:{complexity:1200,threadable:!1,signature:"collection -> number",evaluate:(e,{engine:n})=>{let i=[];for(let s of q(e[0])){let a=s.re;if(!Number.isFinite(a))return n.NaN;i.push(a)}if(i.length===0)return n.NaN;i.sort((s,a)=>s-a);let t=Math.floor(i.length/2),r=i.slice(0,t),o=i.slice(t+1);return n.number(o[Math.floor(o.length/2)]-r[Math.floor(r.length/2)])}},Erf:{complexity:7500,signature:"number -> number",evaluate:(e,{engine:n})=>{let i=e[0].re;if(Number.isFinite(i))return n.number(Jo(i))}},Erfc:{complexity:7500,signature:"number -> number",evaluate:(e,{engine:n})=>{let i=e[0].re;if(Number.isFinite(i))return n.number(1-Jo(i))}},ErfInv:{complexity:7500,signature:"number -> number",evaluate:(e,{engine:n})=>{let i=e[0].re;if(Number.isFinite(i))return n.number(bu(i))}}}];var rf=[{Pi:{type:"real",constant:!0,holdUntil:"N",wikidata:"Q167",value:e=>e.number(sn(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 o=Bi([r,180]);return o[0]===0?i.Zero:o[0]===1&&o[1]===1?i.Pi:o[0]===1?i.Pi.div(o[1]):i.number(o).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:te("Sin",5e3)},{Arctan:{wikidata:"Q2257242",complexity:5200,threadable:!0,signature:"number -> real",sgn:([e])=>Uo("Arctan",e),evaluate:([e],{numericApproximation:n})=>n?It("Arctan",e):kt("Arctan",e)??It("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,o)=>Q.atan2(r,o)):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:te("Cos",5050),Tan:te("Tan",5100)},{Arcosh:te("Arcosh",6200),Arcsin:te("Arcsin",5500),Arsinh:te("Arsinh",6100),Artanh:te("Artanh",6300),Cosh:te("Cosh",6050),Cot:te("Cot",5600),Csc:te("Csc",5600,"Cosecant"),Sec:te("Sec",5600,"Secant, inverse of cosine"),Sinh:te("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:te("Csch",6200,"Hyperbolic cosecant"),Sech:te("Sech",6200,"Hyperbolic secant"),Tanh:te("Tanh",6200,"Hyperbolic tangent")},{Arccos:te("Arccos",5550),Arccot:te("Arccot",5650),Arcoth:te("Arcoth",6350),Arcsch:te("Arcsch",6250),Arcsec:te("Arcsec",5650),Arsech:te("Arsech",6250),Arccsc:te("Arccsc",5650),Coth:te("Coth",6300),InverseFunction:{hold:!0,signature:"(function) -> function",canonical:(e,{engine:n})=>(e=Le(n,e,1),Bt(n,e)??n._fn("InverseFunction",e)),evaluate:(e,{engine:n})=>Bt(n,e)}}];function te(e,n,i){return{complexity:n,description:i,threadable:!0,signature:"number -> number",sgn:([t])=>Uo(e,t),evaluate:([t],{numericApproximation:r})=>r?It(e,t):kt(e,t)??It(e,t)}}var le=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 g(this.type,"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=Bo(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=of(this._engine,n.value),n.type){let i=k(n?.type);if(!Sn(i))throw new Error(`Invalid type: "${n.type}"`);this._type=i,this.inferredType=!1}if(this._value){if(!this._type||this._type==="unknown")this._type=this._value.type,this.inferredType=!0;else if(!g(this._value.type,this._type))throw new Error([`Symbol "${this.name}"`,`The value "${this._value.toString()}" of type "${this._value.type.toString()}" is not compatible with the type "${this._type.toString()}"`].join(`
|
|
85
|
+
| `))}n.eq&&(this.eq=n.eq),n.neq&&(this.neq=n.neq),n.cmp&&(this.cmp=n.cmp),n.collection&&(this.collection=ja(n.collection))}reset(){this.constant&&(this._value=null)}get value(){return this._value===null&&(this._value=of(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?Pe(this._type,i.type):i.type):!this._type||this.type==="unknown"||!i.type||g(i.type,this._type)?this._value=i:this._value=void 0}else this._value=void 0}get type(){return this._type??this._value?.type??"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!=="unknown")throw Error(`The type of "${this.name}" cannot be changed because it has already been declared`);if(n==="unknown"){this._defValue=void 0,this._value=void 0,this._flags=void 0,this._type="unknown";return}if(this._type&&this._type!=="unknown"&&!g(n,this._type))throw Error(`The type of "${this.name}" cannot be widened from "${this._type.toString()}" to "${n.toString()}"`);if(this._value?.type&&!g(this._value.type,n))throw Error(`The type of "${this.name}" cannot be changed to "${n.toString()}" because its value has a type of "${this._value.type.toString()}"`);this._type=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=Bo({...this._flags??{},...n})}};function of(e,n){if(n!==void 0)return ft(n)?e.parse(n)??e.symbol("Undefined"):typeof n=="function"?e.box(n(e)??"Undefined"):n instanceof Y?n:e.box(n)}var $p=new Set(["description","wikidata","url","hold","threadable","associative","commutative","commutativeOrder","idempotent","involution","pure","signature","type","sgn","even","complexity","canonical","evaluate","evalDimension","compile","eq","neq","cmp","collection"]),Ve=class{constructor(n,i,t){if(!n.context)throw Error("No context available");this.engine=n,this.scope=n.context;for(let f in t)if(!$p.has(f))throw new Error(`Function Definition "${i}": unexpected key "${f}"`);this.hold=t.hold??!1;let r=t.idempotent??!1,o=t.involution??!1;if(r&&o)throw new Error(`Function Definition "${i}": the 'idempotent' and 'involution' flags are mutually exclusive`);this.name=i,this.description=t.description,this.wikidata=t.wikidata,this.threadable=t.threadable??!1,this.associative=t.associative??!1,this.commutative=t.commutative??!1,this.commutativeOrder=t.commutativeOrder,this.idempotent=r,this.involution=o,this.pure=t.pure??!0,this.complexity=t.complexity??Gn;let s,a=!0;t.signature?(a=!1,s=k(t.signature)):s=k("...any -> any");let u;t.type&&(typeof t.type=="string"?k(t.type):u=t.type);let l;if(t.evaluate&&typeof t.evaluate!="function"){let f=n.box(t.evaluate,{canonical:!1});if(!f.isValid)throw Error(`Invalid function ${f.toString()}`);let c=$e(f);l=d=>c(d),Object.defineProperty(l,"toString",{value:()=>f.toString()})}else l=t.evaluate;this.inferredSignature=a,this.signature=s,this.type=u,this.evaluate=l,this.canonical=t.canonical,this.evalDimension=t.evalDimension,this.sgn=t.sgn,this.even=t.even,this.compile=t.compile,this.collection=t.collection}reset(){}};function Jr(e,n,i){return i instanceof Ve?i:new Ve(e,n,i)}function $s(e){if(e==="all")return $s(["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=Vp[i];if(!t)throw Error(`Unknown library category ${i}`);Array.isArray(t)?n.push(...t):n.push(t)}return Object.freeze(n)}var Vp={algebra:[],arithmetic:[...Cu,...$l],calculus:Ll,collections:[nf,Iu],combinatorics:[],"control-structures":Fl,core:Gl,dimensions:[],domains:[],"linear-algebra":zl,logic:Ul,numeric:[],other:[],relop:ef,polynomials:Xl,physics:{Mu0:{description:"Vaccum permeability",constant:!0,wikidata:"Q1515261",type:"real",value:125663706212e-17}},statistics:tf,trigonometry:rf,units:[]};function Gp(e){if(e=e.normalize(),he(e))return e;throw new Error(`Invalid definition name "${e}": ${Ye(e)}`)}function Vs(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,o]of Object.entries(n))try{if(r=Gp(r),pt(o))try{let s=Jr(e,r,o);if(i.has(r))throw new Error(`Duplicate function definition:
|
|
86
86
|
${JSON.stringify(i.get(r))}
|
|
87
87
|
${JSON.stringify(o)}`);i.set(r,s)}catch(s){console.error([`
|
|
88
88
|
Error in function definition`,"",JSON.stringify(o),"",s.message].join(`
|
|
@@ -92,29 +92,30 @@ Error in symbol definition of "${r}"`,"",JSON.stringify(o),"",s.message].join(`
|
|
|
92
92
|
| `))}else{let s=new le(e,r,{value:e.box(o)});i.set(r,s)}}catch(s){console.error([`
|
|
93
93
|
Error in definition of "${r}"`,"",JSON.stringify(o),"",s.message].join(`
|
|
94
94
|
| `)+`
|
|
95
|
-
`)}}function Wr(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?Wr(e.re)+Wr(e.im)+1:Wr(e.re)}function Vs(e){if(e.symbol)return 1;if(e.isNumberLiteral)return Wr(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 Vs(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+Vs(r),0)??0)}var $s=Vs;var nt=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 we=class extends Y{constructor(n,i,t){super(n,t?.metadata),i instanceof q||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 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)):Z(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 q?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 Mi(this,n)}pow(n){return de(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(g(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.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,[o,s]=vi(t,3);if(o!==1)return r.number(o).ln(i).mul(3).add(r.number(s).ln(i));if([o,s]=vi(t,2),o!==1)return r.number(o).ln(i).mul(2).add(r.number(s).ln(i))}return i&&g(i.type,"integer")?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.isFinite(this._value)?Number.isInteger(this._value)?"finite_integer":"finite_real":"non_finite_number":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 Dn(this.structural,n,i).at(-1)?.value??null}match(n,i){return Ji(this.structural,n,i)}get isPositive(){return typeof this._value=="number"?!Number.isNaN(this._value)&&this._value>0:Yi(this.sgn)}get isNonNegative(){return typeof this._value=="number"?!Number.isNaN(this._value)&&this._value>=0:Qi(this.sgn)}get isNegative(){return typeof this._value=="number"?!Number.isNaN(this._value)&&this._value<0:Xi(this.sgn)}get isNonPositive(){return typeof this._value=="number"?!Number.isNaN(this._value)&&this._value<=0:Ki(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):g(this._value.type,"integer")}get isRational(){return typeof this._value=="number"?Number.isInteger(this._value):g(this._value.type,"rational")}get isReal(){return typeof this._value=="number"?!0:g(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"||g(this.type,"rational")?!0:!(this._value instanceof j)}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 Zn(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 Jr(e,n){if(n instanceof q)return n;if(typeof n=="number")return Number.isInteger(n)&&n>=-G&&n<=G||!Number.isFinite(n)?n:e._numericValue(n);if(n instanceof Q){let i=n.toNumber();return n.isInteger()&&Math.abs(i)<=G?i:n.isNaN()?NaN:n.isFinite()?e._numericValue(n):i>0?1/0:-1/0}if(typeof n=="bigint")return n>=-G&&n<=G?Number(n):e._numericValue(n);if(n instanceof O)return n.im===0?Jr(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 Jr(e,n.num);if(typeof n.num!="string")throw new Error("MathJSON `num` property should be a string of digits");return of(e,n.num)}if(typeof n=="string")return of(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 of(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[r,o,s,a]=n.match(/(.+)\(([0-9]+)\)(.+)?$/)??[];n=o+s.repeat(Math.ceil(e.precision/s.length))+(a??"")}let i=X(n);if(i!==null)return i>=Number.MIN_SAFE_INTEGER&&i<=Number.MAX_SAFE_INTEGER?Number(i):e._numericValue(i);let t=e.bignum(n);return wn(t)?t.toNumber():e._numericValue(t)}var mi=class e extends Y{constructor(i,t,r){super(i,r?.metadata);this._isStructural=!1;he(t),`${t}${Ye(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 le)||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}reset(){this._def?.reset(),this._def=void 0}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 oi(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:Z(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 q){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 Mi(this,i)}pow(i){return de(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=ct(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 le?this._def:void 0}get functionDefinition(){return this._def===void 0&&this.bind(),this._def instanceof Ve?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 le&&(t.inferredType||t.type==="unknown")?(t.type=rr(t.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(s=>t.box(s)));else throw new Error(`Invalid value for symbol ${this._id}: ${i}`);if(i!==void 0&&(r=t.box(i).evaluate()),r?.type&&g(r.type,"function")){this.engine.lookupSymbol(this._id),this._def=t.defineFunction(this._id,{signature:r.type.toString(),evaluate:r});return}let o=this.engine.lookupSymbol(this._id);o&&o instanceof le?o.value=r:this._def=t.defineSymbol(this._id,{value:r,type:r?.type.toString()})}get type(){let i=this._def;return i?i instanceof le?i.type:i instanceof Ve?i.signature:"unknown":"unknown"}set type(i){if(this._def){if(this._id[0]==="_")throw new Error(`The type of the wildcard "${this._id}" cannot be changed`);i==="function"||at(i)?(this.engine.forget(this._id),this._def=this.engine.defineFunction(this._id,{signature:i.toString()})):this._def instanceof le?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 le)))return i.sgn}has(i){return typeof i=="string"?this._id===i:i.includes(this._id)}match(i,t){return Ji(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 Yi(this.sgn)}get isNonPositive(){return Ki(this.sgn)}get isNegative(){return Xi(this.sgn)}get isNonNegative(){return Qi(this.sgn)}get isNumber(){let i=this.type;if(i!=="unknown")return g(i,"number")}get isInteger(){let i=this.type;if(i!=="unknown")return g(i,"integer")}get isRational(){let i=this.type;if(i!=="unknown")return g(i,"rational")}get isReal(){let i=this.type;if(i!=="unknown")return g(i,"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 Zn(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 Dn(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 sf(e,n){let i=e.lookupSymbol(n);return i?.holdUntil==="never"&&i.value?i.value:new mi(e,n,{canonical:!0,def:i})}var qt="\x1B[0m";var af="\x1B[33m";var uf="\x1B[36;1m",zs="\x1B[101;97m";var Gs={black:0,red:1,green:2,yellow:3,blue:4,magenta:5,cyan:6,white:7,grey:8,gray:8,"bright-red":9,"bright-green":10,"bright-yellow":11,"bright-blue":12,"bright-magenta":13,"bright-cyan":14,"bright-white":15},$p={black:"#2E3436",red:"#ff0000",green:"#4E9A06",yellow:"#C4A000",blue:"#3465A4",magenta:"#75507B",cyan:"#06989A",white:"#D3D7CF",grey:"#555753",gray:"#555753","bright-red":"#EF2929","bright-green":"#8AE234","bright-yellow":"#FCE94F","bright-blue":"#729FCF","bright-magenta":"#AD7FA8","bright-cyan":"#34E2E2","bright-white":"#EEEEEC"};function lf(e){let n=$p[e];if(n===void 0)return[];let i=[],t=n.match(/#([\da-f]{2})([\da-f]{2})([\da-f]{2})/i);return t!==null?i=t.slice(1).map(r=>parseInt(r,16)):(t=n.match(/#([\da-f])([\da-f])([\da-f])/i),i=t.slice(1).map(r=>16*parseInt(r,16))),i}function ff(e,n){if(n==="none")return[];if(e==="default")return[39];if(n==="basic"){let i=typeof e=="string"?Gs[e]:e;return i===void 0?[]:i<8?[30+i]:[90+i-8]}return typeof e=="number"&&(e=Object.keys(Gs)[e]),[38,2,...lf(e)]}function cf(e,n){if(n==="none")return[];if(e==="default")return[49];if(n==="basic"){let i=Gs[e];return i===void 0?[]:i<8?[40+i]:[100+i-8]}return[48,2,...lf(e)]}var df=[{name:"To",latexTrigger:["\\to"],kind:"infix",precedence:270},{latexTrigger:["\\rightarrow"],kind:"infix",precedence:270,parse:"To"}];function Gp(e){if(x(e)!=="Multiply")return[[],[]];let n=[],i=[];for(let t of v(e))if(x(t)==="Power"){let r=p(t,1),o=p(t,2);if(x(o)==="Negate"){let s=p(o,1);r&&s&&i.push(["Power",r,s])}else{let s=w(o)??NaN;s===-1?r&&i.push(r):s<0?r&&i.push(["Power",r,-s]):n.push(t)}}else if(x(t)==="Rational"&&W(t)===2||x(t)==="Divide"){let r=p(t,1),o=p(t,2);w(r)!==1&&n.push(r),w(o)!==1&&i.push(o)}else{let r=Di(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 z(i)?n!==null?["Root",ki,C(n)]:["Sqrt",ki]:n!==null?["Root",i,n]:["Sqrt",i]}function Vt(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)+"}}":w(t)===2?"\\sqrt{"+e.serialize(i)+"}":"\\sqrt["+e.serialize(t)+"]{"+e.serialize(i)+"}")}function Up(e,n){e.level-=1;let i=x(n),t="",r=p(n,1);if(i==="Negate")t="-"+e.wrap(r,276);else if(i==="Subtract"){t=e.wrap(r,275);let o=p(n,2);if(o!==null){let s=e.wrap(o,275);s[0]==="-"?t+="+"+s.slice(1):s[0]==="+"?t+="-"+s.slice(1):t=t+"-"+s}}else if(i==="Add"){if(e.options.prettify&&W(n)===2&&e.options.invisiblePlus!=="+"){let[a,u]=[p(n,1),p(n,2)],[l,f]=[a,u],c=w(l),d=Di(f);if((c===null||d===null)&&([l,f]=[u,a],c=w(l),d=Di(f)),c!==null&&d!==null&&isFinite(c)&&Number.isInteger(c)&&c>=0&&c<=1e3&&isFinite(d[0])&&isFinite(d[1])&&d[0]>0&&d[0]<=100&&d[1]<=100)return t=E([e.serialize(l),e.options.invisiblePlus,e.serialize(f)]),e.level+=1,t}if(e.options.prettify&&W(n)===2){let[a,u]=$t(r),[l,f]=$t(p(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 o=W(n)+1,s=v(n);for(let a=2;a<o;a++)if(r=s[a-1],e.options.prettify){let[u,l]=$t(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 yf(e,n){if(n===null)return"";e.level-=1;let i="";if(e.options.prettify===!0){let[u,l]=Gp(n);l.length>0&&(l.length===1&&l[0]===1?u.length===0?i="1":u.length===1?i=e.serialize(u[0]):i=yf(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,o=W(n)+1,s=v(n);e.options.prettify===!0&&s.length===2&&Bn(s[1])&&!Bn(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(Bn(r)){l=e.serialize(r),l==="-1"&&!i?(i="",t=!t):(l[0]==="-"&&(l=l.slice(1),t=!t),i=i?E([i,e.options.multiply,l]):l),a=!0;continue}if(x(r)==="Power"){let f=Di(p(r,2));if(f!=null){let[c,d]=f;if(c===1&&d!==null){i+=Vt(e,e.rootStyle(r,e.level),p(r,1),d),a=!1;continue}}}if(x(r)==="Power"&&!isNaN(w(p(r,1))??NaN)){l=e.serialize(r),i=i?E([i,e.options.multiply,l]):l,a=!0;continue}if(x(r)==="Negate"&&(r=p(r,1),t=!t),l=e.wrap(r,390),!i)i=l;else{let f=x(r);a&&(f==="Divide"||f==="Rational")?i=E([i,e.options.multiply,l]):e.options.invisibleMultiply?i=E([i,e.options.invisibleMultiply,l]):i=E([i,l])}a=!1}return e.level+=1,t?"-"+i:i}function jp(e){let n=e.parseGroup(),i=null;if(n===null?(n=e.parseToken(),i=e.parseToken()):i=e.parseGroup(),n=C(n),i=C(i),x(n)==="PartialDerivative"&&(x(i)==="PartialDerivative"||x(i)==="Multiply"&&x(p(i,1))==="PartialDerivative")){let t=p(n,3)??null,r=p(n,1);r==null&&(r=C(e.parseExpression()));let o=[];if(x(i)==="Multiply"){for(let s of v(i))if(x(s)==="PartialDerivative"){let a=p(s,2);a&&o.push(a)}}else{let s=p(i,2);s&&o.push(s)}return o.length>1&&(o=["List",...o]),["PartialDerivative",r,...o,t===null?1:t]}return["Divide",n,i]}function mf(e,n){if(n===null)return"";let i=C(p(n,1)),t=C(p(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 w(i)===1?e.wrap(t)+"^{-1}":e.wrap(i)+e.wrap(t)+"^{-1}";if(r==="factor")return w(t)===1?e.wrap(i):"\\frac{1}{"+e.serialize(t)+"}"+e.wrapString(e.serialize(i),e.groupStyle(n,1))}let o="\\frac";r==="block-quotient"?o="\\dfrac":r==="inline-quotient"&&(o="\\tfrac");let s=e.serialize(i),a=e.serialize(t);return`${o}{${s}}{${a}}`}function Us(e,n){if(!n)return"";let i=x(n),t=C(p(n,1));if(i==="Sqrt")return Vt(e,e.rootStyle(n,e.level-1),t,2);let r=C(p(n,2));if(i==="Root")return Vt(e,e.rootStyle(n,e.level-1),t,r);if(e.options.prettify){let o=w(r)??1;if(o===-1)return e.serialize(["Divide","1",t]);if(o<0)return e.serialize(["Divide","1",["Power",t,-o]]);if(x(r)==="Divide"||x(r)==="Rational"){if(w(p(r,1))===1){let s=e.rootStyle(n,e.level);return Vt(e,s,t,p(r,2))}if(w(p(r,2))===2)return`${e.serialize(["Sqrt",t])}${Ni("^",e.serialize(p(r,1)))}`}else if(x(r)==="Power"&&w(p(r,2))===-1){let s=e.rootStyle(n,e.level);return Vt(e,s,t,p(r,1))}}return e.wrapShort(t)+Ni("^",e.serialize(r))}var bf=[{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)=>E([e.serialize(p(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)=>z(n)?null:["Abs",n]},{kind:"matchfix",openTrigger:["\\vert"],closeTrigger:["\\vert"],parse:(e,n)=>z(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:Ri("Add",n,t)},serialize:Up},{kind:"prefix",latexTrigger:["+"],precedence:275,parse:(e,n)=>e.parseExpression({...n,minPrec:400})},{name:"Ceil",kind:"matchfix",openTrigger:"\\lceil",closeTrigger:"\\rceil",parse:(e,n)=>z(n)?null:["Ceil",n]},{kind:"matchfix",openTrigger:["\u2308"],closeTrigger:["\u2309"],parse:(e,n)=>z(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(p(n,1)),t=w(p(n,2));if(t===0)return i;let r=t===1?"\\imaginaryI":t===-1?"-\\imaginaryI":E([e.serialize(p(n,2)),"\\imaginaryI"]);return w(p(n,1))===0?r:t!==null&&t<0?E([i,r]):E([i,"+",r])}},{name:"Divide",latexTrigger:"\\frac",precedence:600,parse:jp,serialize:mf},{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=p(n,1);return D(i)||w(i)!==null?E(["\\exponentialE^{",e.serialize(i),"}"]):E(["\\exp",e.wrap(C(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)=>z(n)?null:["Floor",n]},{kind:"matchfix",openTrigger:["\u230A"],closeTrigger:["\u230B"],parse:(e,n)=>z(n)?null:["Floor",n]},{identifierTrigger:"floor",kind:"function",parse:"Floor"},{latexTrigger:["\\Gamma"],parse:"Gamma"},{name:"GCD",identifierTrigger:"gcd",kind:"function"},{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=>xf("Ln",e),serialize:(e,n)=>"\\ln"+e.wrapArguments(n)},{name:"Log",latexTrigger:["\\log"],parse:e=>xf("Log",e),serialize:(e,n)=>{let[i,t]=v(n);return t?E(["\\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(x(n)!=="To")return null;let i=e.parseArguments("implicit");return i?["Limit",["Function",i[0],p(n,1)],p(n,2)]:null},serialize:(e,n)=>{let i=p(n,1),t=p(i,2),r=p(n,2);return E(["\\lim_{",e.serialize(t),"\\to",e.serialize(r),"}",e.serialize(p(i,1))])}},{name:"MinusPlus",latexTrigger:["\\mp"],kind:"infix",associativity:"any",precedence:270},{name:"Multiply",latexTrigger:["\\times"],kind:"infix",associativity:"any",precedence:390,serialize:yf},{latexTrigger:["\\cdot"],kind:"infix",associativity:"any",precedence:390,parse:(e,n,i)=>{let t=e.parseExpression({...i,minPrec:392});return t===null?["Multiply",n,ki]:Ri("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,ki]:Ri("Multiply",n,t)}},{name:"Mod",latexTrigger:"\\bmod",kind:"infix",precedence:600,serialize:(e,n)=>{if(W(n)!==2)return"";let i=e.serialize(p(n,1)),t=e.serialize(p(n,2));return E([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",C(n)]}},{name:"Congruent",serialize:(e,n)=>{let i=e.serialize(p(n,1)),t=e.serialize(p(n,2));if(p(n,3)===null)return E([i,"\\equiv",t]);let r=e.serialize(p(n,3));return E([i,"\\equiv",t,"\\pmod{",r,"}"])}},{name:"Negate",latexTrigger:["-"],kind:"prefix",precedence:277,parse:(e,n)=>{if(e.skipSpace(),/\d/.test(e.peek)||e.parseNumber()!==null)return null;let i=e.parseExpression({...n,minPrec:278});return i===null?null:["Negate",i]}},{kind:"matchfix",openTrigger:"||",closeTrigger:"||",parse:(e,n)=>z(n)?null:["Norm",n]},{name:"Norm",kind:"matchfix",openTrigger:["\\left","\\Vert"],closeTrigger:["\\right","\\Vert"],parse:(e,n)=>z(n)?null:["Norm",n]},{name:"PlusMinus",latexTrigger:["\\pm"],kind:"infix",associativity:"any",precedence:270,serialize:(e,n)=>{let i=p(n,1);if(i===null)return"\\pm";if(W(n)===1)return E(["\\pm",e.serialize(i)]);let t=p(n,2);return E([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",C(i)]}},{latexTrigger:["\\plusmn"],kind:"infix",associativity:"any",precedence:270,parse:(e,n,i)=>{let t=e.parseExpression({...i,minPrec:400});return["PlusMinus",n,C(t)]}},{latexTrigger:["\\plusmn"],kind:"prefix",precedence:270,parse:(e,n)=>{let i=e.parseExpression({...n,minPrec:400});return["PlusMinus",C(i)]}},{name:"Power",latexTrigger:["^"],kind:"infix",serialize:Us},{latexTrigger:"\\prod",precedence:390,name:"Product",parse:gf("Product",390),serialize:hf("\\prod")},{name:"Rational",precedence:600,serialize:(e,n)=>n&&W(n)===1?"\\operatorname{Rational}"+e.wrapArguments(n):mf(e,n)},{name:"Root",serialize:Us},{name:"Round",identifierTrigger:"round",kind:"function"},{name:"Square",precedence:720,serialize:(e,n)=>e.wrapShort(p(n,1))+"^2"},{latexTrigger:["\\sum"],precedence:275,name:"Sum",parse:gf("Sum",275),serialize:hf("\\sum")},{name:"Sign",identifierTrigger:"sgn",kind:"function"},{name:"Sqrt",latexTrigger:["\\sqrt"],parse:zp,serialize:Us},{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(p(n,1),277),t=e.wrap(p(n,2),278);return E([i,"-",t])}}];function Zp(e,n){if(e!==null){if(D(e))return{index:D(e)??"Nothing",upper:n};if(x(e)==="GreaterEqual"){let i=D(p(e,1))??"Nothing",t=p(e,2)??1;return{index:i,lower:t,upper:n}}if(x(e)==="Equal"){let i=D(p(e,1))??"Nothing",t=p(e,2);if(x(t)==="Range"){let o=p(t,1)??1,s=p(t,2)??void 0;return{index:i,lower:o,upper:s}}return{index:i,lower:t??1,upper:n}}}}function Hp(e,n){z(e)&&(e=null),z(n)&&(n=null);let i=e===null?[]:kn(e)??[e],t=n===null?[]:kn(n)??[n];return i.map((r,o)=>Zp(r,t[o])).filter(r=>r!==void 0)}function gf(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 o=Hp(r,t);i.pushSymbolTable();for(let u of o)i.addSymbol(u.index,"symbol");let s=i.parseExpression({minPrec:n+1});if(i.popSymbolTable(),s===null)return[e];let a=[];for(let u of o){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,s,...a]}}function hf(e){return(n,i)=>{if(p(i,1)!==null)return e;let t=p(i,2),r=x(t);r!=="Tuple"&&r!=="Triple"&&r!=="Pair"&&r!=="Single"&&(t=null);let o=p(t,1);o!==null&&x(o)==="Hold"&&(o=p(o,1));let s=p(i,1);if(t!=null)return p(i,2)!==null?E([e,n.serialize(s)]):E([e,"_{",n.serialize(p(i,2)),"}",n.serialize(s)]);let a=p(t,2),u=[];o&&D(o)!=="Nothing"&&a?u=[n.serialize(o),"=",n.serialize(a)]:o&&D(o)!=="Nothing"?u=[n.serialize(o)]:a!==null&&(u=[n.serialize(a)]),u.length>0&&(u=["_{",...u,"}"]);let l=[];return p(t,3)!==null&&(l=["^{",n.serialize(p(t,3)),"}"]),E([e,...l,...u,n.serialize(s)])}}function xf(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 $t(e){let n=1,i=e;do{e=i;let t=x(e);if(t==="Negate")n*=-1,i=p(e,1);else if(t==="Multiply"){let[r,o]=$t(p(e,1));o<0&&(n*=-1,r===1?i=["Multiply",...v(e).slice(1)]:i=["Multiply",r,...v(e).slice(1)])}else if(t==="Divide"||t==="Rational"){let[r,o]=$t(p(e,1));o<0&&(n*=-1,i=[t,r,p(e,2)])}else{let r=w(e);r!==null&&r<0&&(n*=-1,i=-r)}}while(i!==e);return[e,n]}var Nf=[{name:"Matrix",serialize:(e,n)=>{let i=v(p(n,1));return Ef(e,i,V(p(n,2)),V(p(n,3)))}},{name:"Vector",serialize:(e,n)=>{let i=v(n);return Ef(e,i.map(t=>["List",t]),V(p(n,2)),V(p(n,3)))}},{kind:"environment",identifierTrigger:"pmatrix",parse:e=>{let n=Mn(e),[i,t]=An(e);return n?[i,t,{str:"()"},{str:n}]:[i,t]}},{kind:"environment",identifierTrigger:"bmatrix",parse:e=>{let n=Mn(e),[i,t]=An(e);return n?[i,t,{str:"[]"},{str:n}]:[i,t,{str:"[]"}]}},{kind:"environment",identifierTrigger:"Bmatrix",parse:e=>{let n=Mn(e),[i,t]=An(e);return n?[i,t,{str:"{}"},{str:n}]:[i,t,{str:"{}"}]}},{kind:"environment",identifierTrigger:"vmatrix",parse:e=>{let n=Mn(e),[i,t]=An(e);return n?[i,t,{str:"||"},{str:n}]:[i,t,{str:"||"}]}},{kind:"environment",identifierTrigger:"Vmatrix",parse:e=>{let n=Mn(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=Mn(e),[i,t]=An(e);return n?[i,t,{str:"()"},{str:n}]:[i,t]}},{kind:"environment",identifierTrigger:"array",parse:e=>{let n=Mn(e,!1),[i,t]=An(e);return n?[i,t,{str:".."},{str:n}]:[i,t,{str:".."}]}},{kind:"environment",identifierTrigger:"matrix",parse:e=>{let n=Mn(e),[i,t]=An(e);return n?[i,t,{str:".."},{str:n}]:[i,t,{str:".."}]}},{kind:"environment",identifierTrigger:"matrix*",parse:e=>{let n=Mn(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 Mn(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 Ef(e,n,i,t){i??(i="()");let[r,o]=["",""];typeof i=="string"&&i.length===2&&([r,o]=i);let s="";if(t)for(let f of t)f==="<"?s+="l":f===">"?s+="r":f==="="?s+="c":f==="|"?s+="|":f===":"&&(s+=":");let a=[];for(let f of n??[]){let c=[];for(let d of v(f))c.push(e.serialize(d));a.push(c.join(" & "))}let u=a.join(`\\\\
|
|
96
|
-
`),l=s.length>0?`[${s}]`:"";return r==="("&&o===")"?E(["\\begin{pmatrix}",l,u,"\\end{pmatrix}"]):r==="["&&o==="]"?E(["\\begin{bmatrix}",l,u,"\\end{bmatrix}"]):r==="{"&&o==="}"?E(["\\begin{Bmatrix}",l,u,"\\end{Bmatrix}"]):r==="|"&&o==="|"?E(["\\begin{vmatrix}",l,u,"\\end{vmatrix}"]):r==="\u2016"&&o==="\u2016"?E(["\\begin{Vmatrix}",l,u,"\\end{Vmatrix}"]):r==="{"&&o==="."?E(["\\begin{dcases}",l,u,"\\end{dcases}"]):r==="."&&o==="}"?E(["\\begin{rcases}",l,u,"\\end{rcases}"]):s||r!=="."||o!=="."?E(["\\left",Wi[r]??r,"\\begin{array}",`{${s}}`,u,"\\end{array}","\\right",Wi[o]??o]):E(["\\begin{matrix}",u,"\\end{matrix}"])}var vf=[{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,o=e.parseExpression({...i,minPrec:219});return o!==null&&x(o)==="Mod"?["Congruent",n,t,C(p(o,1))]:(e.index=r,["Equivalent",n,C(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:js("ForAll")},{name:"Exists",kind:"prefix",latexTrigger:["\\exists"],precedence:200,serialize:"\\exists",parse:js("Exists")},{name:"ExistsUnique",kind:"prefix",latexTrigger:["\\exists","!"],precedence:200,serialize:"\\exists!",parse:js("ExistsUnique")},{name:"KroneckerDelta",kind:"prefix",latexTrigger:["\\delta","_"],precedence:200,serialize:(e,n)=>{let i=v(n);return i.length===0?"\\delta":i.every(t=>D(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=kn(n);return i&&i.length<=2?["KroneckerDelta",...i]:x(n)==="InvisibleOperator"?["KroneckerDelta",...v(n)]:n!==null?["KroneckerDelta",n]:null}},{name:"Boole",kind:"matchfix",openTrigger:"[",closeTrigger:"]",parse:(e,n)=>{let i=x(n);return!i||!Yn.some(t=>t.name===i)?null:["Boole",n]}},{kind:"matchfix",openTrigger:"\\llbracket",closeTrigger:"\\rrbracket",parse:(e,n)=>{let i=x(n);return!i||!Yn.some(t=>t.name===i)?null:["Boole",n]}}];function js(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 s=n.parseExpression(i);return[e,r,C(s)]}if(n.match("(")){let s=n.parseExpression(i);return n.match(")")?[e,r,C(s)]:null}}n.index=t;let o=n.parseExpression(i);if(o===null)return null;if(n.skipSpace(),n.matchAny([",","\\mid",":","\\colon"])){let s=n.parseExpression(i);return[e,o,C(s)]}if(n.match("(")){let s=n.parseExpression(i);return n.match(")")?[e,o,C(s)]:null}return null}}function Me(e){return n=>{let i=n.parseGroup();return i===null?[e]:[e,i]}}var Sf=[{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)=>D(n)===null?null:["Decrement",n]},{name:"Decrement",latexTrigger:["-","-"],kind:"postfix",precedence:880,parse:(e,n)=>D(n)===null?null:["Decrement",n]},{name:"PreIncrement",latexTrigger:["+","+"],kind:"prefix",precedence:880,parse:(e,n)=>{let i=e.parseExpression(n);return D(i)===null?null:["PreIncrement",i]}},{name:"PreDecrement",latexTrigger:["-","-"],kind:"prefix",precedence:880,parse:(e,n)=>{let i=e.parseExpression(n);return D(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=kn(t);if(r&&(t=["List",...r]),t===null||i===null)return null;let o=e.parseGroup()??"Nothing";if(!z(o)){let s=e.parseArguments()??["Nothing"];o=[o,...s]}return["PartialDerivative",o,t,i]},serialize:(e,n)=>{let i="\\partial",t=p(n,1),r=p(n,2),o=p(n,3);return r!==null&&r!=="Nothing"&&(x(r)==="List"?i+="_{"+e.serialize(["Sequence",...v(r)])+"}":i+="_{"+e.serialize(r)+"}"),o!==null&&o!=="Nothing"&&(i+="^{"+e.serialize(o)+"}"),t!==null&&t!=="Nothing"&&(i+=e.serialize(t)),i},precedence:740},{name:"OverBar",latexTrigger:["\\overline"],parse:Me("OverBar")},{name:"UnderBar",latexTrigger:["\\underline"],parse:Me("UnderBar")},{name:"OverVector",latexTrigger:["\\vec"],parse:Me("OverVector")},{name:"OverTilde",latexTrigger:["\\tilde"],parse:Me("OverTilde")},{name:"OverHat",latexTrigger:["\\hat"],parse:Me("OverHat")},{name:"OverRightArrow",latexTrigger:["\\overrightarrow"],parse:Me("OverRightArrow")},{name:"OverLeftArrow",latexTrigger:["\\overleftarrow"],parse:Me("OverLeftArrow")},{name:"OverRightDoubleArrow",latexTrigger:["\\Overrightarrow"],parse:Me("OverRightDoubleArrow")},{name:"OverLeftHarpoon",latexTrigger:["\\overleftharpoon"],parse:Me("OverLeftHarpoon")},{name:"OverRightHarpoon",latexTrigger:["\\overrightharpoon"],parse:Me("OverRightHarpoon")},{name:"OverLeftRightArrow",latexTrigger:["\\overleftrightarrow"],parse:Me("OverLeftRightArrow")},{name:"OverBrace",latexTrigger:["\\overbrace"],parse:Me("OverBrace")},{name:"OverLineSegment",latexTrigger:["\\overlinesegment"],parse:Me("OverLineSegment")},{name:"OverGroup",latexTrigger:["\\overgroup"],parse:Me("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(p(n,1)),t=Mo(p(n,2));if(t===null)return i;V(t.display)==="block"?i=E(["{\\displaystyle",i,"}"]):V(t.display)==="inline"?i=E(["{\\textstyle",i,"}"]):V(t.display)==="script"?i=E(["{\\scriptstyle",i,"}"]):V(t.display)==="scriptscript"&&(i=E(["{\\scriptscriptstyle",i,"}"]));let r=w(t.size);return r!==null&&r>=1&&r<=10&&(i=E(["{",{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(p(n,2)!==null)return e.serialize(p(n,1));let i=w(p(n,1));return i===null?"":{"-3":"\\!",6:"\\ ",3:"\\,",4:"\\:",5:"\\;",9:"\\enspace",18:"\\quad",36:"\\qquad"}[i]??""}}];function L(e){return(n,i)=>{let t={"\\arcsin":"Arcsin","\\arccos":"Arccos","\\arctan":"Arctan","\\arctg":"Arctan","\\arcctg":"Arccot","\\arcsec":"Arcsec","\\arccsc":" Arccsc","\\arsinh":"Arsinh","\\arcosh":"Arcosh","\\artanh":"Artanh","\\arsech":"Arcsech","\\arcsch":"Arcsch","\\ch":"Cosh","\\cos":"Cos","\\cosec":"Csc","\\cosh":"Csch","\\cot":"Cot","\\cotg":"Cot","\\coth":"Coth","\\csc":"Csc","\\csch":"Csch","\\ctg":"Cot","\\cth":"Coth","\\sec":"Sec","\\sech":"Sech","\\sin":"Sin","\\sinh":"Sinh","\\sh":"Sinh","\\tan":"Tan","\\tanh":"Tanh","\\tg":"Tan","\\th":"Tanh"},r=t[e??""]??e??"";if(n.atTerminator(i))return r;let o=r;do{let l=n.parsePostfixOperator(o,i);if(l===null)break;o=l}while(!0);n.skipSpace();let s=null;n.match("^")&&(s=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?o:typeof o=="string"?[o,...a]:["Apply",o,...a];return s===null?u:["Power",u,s]}}var Tf=[{name:"Arcsin",latexTrigger:["\\arcsin"],parse:L("Arcsin")},{name:"Arccos",latexTrigger:["\\arccos"],parse:L("Arccos")},{name:"Arctan",latexTrigger:["\\arctan"],parse:L("Arctan")},{latexTrigger:["\\arctg"],parse:L("Arctan")},{name:"Arccot",latexTrigger:["\\arcctg"],parse:L("Arccot")},{name:"Arcoth",identifierTrigger:"arcoth",parse:L("Arccot")},{name:"Arcsec",latexTrigger:["\\arcsec"],parse:L("Arcsec")},{name:"Arccsc",latexTrigger:["\\arccsc"],parse:L("Arccsc")},{name:"Arsinh",latexTrigger:["\\arsinh"],parse:L("Arsinh")},{name:"Arcosh",latexTrigger:["\\arcosh"],parse:L("Arcosh")},{name:"Artanh",latexTrigger:["\\artanh"],parse:L("Artanh")},{name:"Arsech",latexTrigger:["\\arsech"],parse:L("Arsech")},{name:"Arcsch",latexTrigger:["\\arcsch"],parse:L("Arcsch")},{latexTrigger:["\\ch"],parse:L("Cosh")},{name:"Cosec",latexTrigger:["\\cosec"],parse:L("Cosec")},{name:"Cosh",latexTrigger:["\\cosh"],parse:L("Cosh")},{name:"Cot",latexTrigger:["\\cot"],parse:L("Cot")},{latexTrigger:["\\cotg"],parse:L("Cot")},{name:"Coth",latexTrigger:["\\coth"],parse:L("Coth")},{name:"Csc",latexTrigger:["\\csc"],parse:L("Csc")},{name:"Csch",latexTrigger:["\\csch"],parse:L("Csch")},{latexTrigger:["\\ctg"],parse:L("Cot")},{latexTrigger:["\\cth"],parse:L("Cotanh")},{name:"Sec",latexTrigger:["\\sec"],parse:L("Sec")},{name:"Sech",latexTrigger:["\\sech"],parse:L("Sech")},{name:"Sinh",latexTrigger:["\\sinh"],parse:L("Sinh")},{latexTrigger:["\\sh"],parse:L("Sinh")},{name:"Tan",latexTrigger:["\\tan"],parse:L("Tan")},{latexTrigger:["\\tg"],parse:L("Tan")},{name:"Tanh",latexTrigger:["\\tanh"],parse:L("Tanh")},{latexTrigger:["\\th"],parse:L("Tanh")},{name:"Cos",latexTrigger:["\\cos"],parse:L("Cos")},{name:"Sin",latexTrigger:["\\sin"],parse:L("Sin")}];var If=[{name:"AlgebraicNumbers",latexTrigger:"\\bar\\Q"},{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"]},{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^-"},{latexTrigger:"\\R^{-}",parse:"NegativeNumbers"},{latexTrigger:"\\R_-",parse:"NegativeNumbers"},{latexTrigger:"\\R_{-}",parse:"NegativeNumbers"},{latexTrigger:"\\R^{\\lt}",parse:"NegativeNumbers"},{name:"PositiveNumbers",latexTrigger:"\\R^+"},{latexTrigger:"\\R^{+}",parse:"PositiveNumbers"},{latexTrigger:"\\R_+",parse:"PositiveNumbers"},{latexTrigger:"\\R_{+}",parse:"PositiveNumbers"},{latexTrigger:"\\R^{\\gt}",parse:"PositiveNumbers"},{name:"NonPositiveNumbers",latexTrigger:"\\R^{0-}"},{latexTrigger:"\\R^{-0}",parse:"NonPositiveNumbers"},{latexTrigger:"\\R^{\\leq}",parse:"NonPositiveNumbers"},{name:"NegativeIntegers",latexTrigger:"\\Z^-"},{latexTrigger:"\\Z^-",parse:"NegativeIntegers"},{latexTrigger:"\\Z^{-}",parse:"NegativeIntegers"},{latexTrigger:"\\Z_-",parse:"NegativeIntegers"},{latexTrigger:"\\Z_{-}",parse:"NegativeIntegers"},{latexTrigger:"\\Z^{\\lt}",parse:"NegativeIntegers"},{name:"PositiveIntegers",latexTrigger:"\\Z^+"},{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"},{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:_f},{name:"Multiple",serialize:_f},{name:"Union",latexTrigger:["\\cup"],kind:"infix",precedence:350},{name:"Set",kind:"matchfix",openTrigger:"{",closeTrigger:"}",parse:(e,n)=>z(n)?"EmptySet":(x(n)=="Delimiter"&&V(p(n,2))===","&&(n=p(n,1)),x(n)!=="Sequence"?["Set",n]:["Set",...v(n)]),serialize:(e,n)=>E(["\\lbrace",v(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 _f(e,n){if(n===null)return"";let i=x(n);if(!i)return"";if(i==="Set")return W(n)===0?"\\emptyset":W(n)===2&&x(p(n,2))==="Condition"?E(["\\left\\lbrace",e.serialize(p(n,1)),"\\middle\\mid",e.serialize(p(n,2)),"\\right\\rbrace"]):E(["\\left\\lbrace",...v(n).map(r=>e.serialize(r)+" ,"),"\\right\\rbrace"]);if(i==="Range")return E(["\\mathopen\\lbrack",e.serialize(p(n,1)),", ",e.serialize(p(n,2)),"\\mathclose\\rbrack"]);if(i==="Interval"){let r=p(n,1),o=p(n,2),s=!1,a=!1;return x(r)==="Open"&&(r=p(r,1),s=!0),x(o)==="Open"&&(o=p(o,1),a=!0),E([`\\mathopen${s?"\\rbrack":"\\lbrack"}`,e.serialize(r),", ",e.serialize(o),`\\mathclose${a?"\\lbrack":"\\rbrack"}`])}let t=e.numericSetStyle(n,e.level);return""}function it(e,n=1){return i=>{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();z(r)&&(r=null),z(t)&&(t=null);let[o,s]=Jp(i,n);if(o&&!s){if(x(o)==="Add"||x(o)==="Subtract"){let a=[],u=[];for(let l of v(o))if(s)u.push(l);else{let f;[f,s]=Nn(l),a.push(f??l)}if(s!==null&&u.length>0)return["Add",Bf(i,e,["Add",...a],[{index:s,sub:r,sup:t}]),...u]}else if(x(o)==="Divide"){let a;[a,s]=Nn(p(o,1)),a!==null&&s!==null&&(o=["Divide",a,p(o,2)])}}return Bf(i,e,o,[{index:s,sub:r,sup:t}])}}function Bf(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=>Wp(r))]}function Wp(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 Jp(e,n=1){let i=e.index,t=!1,r=e.parseExpression({minPrec:266,condition:()=>((e.matchAll(["\\mathrm","<{>","d","<}>"])||e.matchAll(["\\operatorname","<{>","d","<}>"]))&&(t=!0),t)});if(t||(e.index=i,r=e.parseExpression({minPrec:266,condition:()=>(e.match("d")&&(t=!0),t)})),r!==null&&!t)return Nn(r);let o=Yp(e,n);return[r,o[0]??null]}function Yp(e,n=1){e.skipSpace();let i=[],t=D(e.parseSymbol());return t===null?[]:(i.push(t),i)}function Nn(e){let n=x(e),i=p(e,1);if(!i)return[e,null];if(n==="Sequence"&&W(e)===1)return Nn(i);if(n==="Multiply"||n==="InvisibleOperator"){let t=v(e);if(t&&t.length>1){let r=D(t[t.length-2]);if(r==="d"||r==="d_upright")return t.length===2?[null,D(t[1])]:t.length===3?[t[0],D(t[2])]:[["Multiply",...t.slice(0,-2)],D(t[t.length-1])];let[o,s]=Nn(t[t.length-1]);if(o)return[["Multiply",...t.slice(0,-1),o],s]}}else if(n==="Delimiter"){let[t,r]=Nn(i);if(r)return t?[["Delimiter",["Sequence",t],...v(e).slice(1)],r]:[null,r]}else if(n==="Add"){let t=v(e);if(t.length>0){let[r,o]=Nn(t[t.length-1]);if(o){if(r)return[["Add",...t.slice(0,-1),r],o];if(t.length>2)return[["Add",...t.slice(0,-1)],o];if(t.length>2)return[t[0],o]}}}else if(n==="Negate"){let[t,r]=Nn(i);if(r)return[t?["Negate",t]:null,r]}else if(n==="Divide"){let[t,r]=Nn(i);if(r)return[["Divide",t??1,p(e,2)],r]}else{let t=v(e);if(t.length===1){let[r,o]=Nn(t[0]);if(o)return[[x(e),r],o]}}return[e,null]}function kf(e){return(n,i)=>{if(p(i,1)!==null)return e;let t=p(i,2),r=x(t),o=null;r==="Tuple"||r==="Triple"||r==="Pair"||r==="Single"?o=p(t,1):r==="Hold"?o=p(t,1):(o=p(t,1)??"x",t=null),x(o)==="Hold"&&(o=p(o,1));let s=o!==null?D(o):null,a=p(i,1);if(x(a)==="Lambda"&&p(a,1)!==null&&(a=gr(p(a,1),{_:s??"x",_1:s??"x"})),!t)return!s||s==="Nothing"?E([e,"\\!",n.serialize(a)]):E([e,"\\!",n.serialize(a),"\\,\\operatorname{d}",n.serialize(s)]);let u=p(t,2)?D(p(t,2)):null,l=t&&u!=="Nothing"?n.serialize(p(t,2)):"";l.length>0&&(l=`_{${l}}`);let f="",c=p(t,3)?D(p(t,3)):null;return p(t,3)!==null&&c!=="Nothing"&&(f=`^{${n.serialize(p(t,3))}}`),E([e,f,l,"\\!",n.serialize(a),...s&&D(s)!=="Nothing"?["\\,\\operatorname{d}",n.serialize(s)]:[]])}}var wf=[{kind:"expression",name:"Integrate",latexTrigger:["\\int"],parse:it("Integrate"),serialize:kf("\\int")},{kind:"expression",latexTrigger:["\\iint"],parse:it("Integrate",2)},{kind:"expression",latexTrigger:["\\iiint"],parse:it("Integrate",3)},{kind:"expression",name:"CircularIntegrate",latexTrigger:["\\oint"],parse:it("CircularIntegrate"),serialize:kf("\\oint")},{kind:"expression",latexTrigger:["\\oiint"],parse:it("CircularIntegrate",2)},{kind:"expression",latexTrigger:["\\oiiint"],parse:it("CircularIntegrate",3)}];var Df=[{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 Rf=[{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||!D(i)?null:["Mean",i]}}];var Af={"(":"(",")":")","[":"\\lbrack","]":"\\rbrack","{":"\\lbrace","}":"\\rbrace","<":"\\langle",">":"\\rangle","|":"\\vert","||":"\\Vert","\\lceil":"\\lceil","\\lfloor":"\\lfloor","\\rceil":"\\rceil","\\rfloor":"\\rfloor"};function Mf(e,n,i){let t=Qp(n,i);if(t===null)return;let r="kind"in n?n.kind:"expression",o=t.latexTrigger;typeof o=="string"&&(e.lookahead=Math.max(e.lookahead,sr(o)));let s=ce(o??"");if(s.length===2&&/[_^]/.test(s[0])&&s[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),Mf(e,{...n,kind:r,name:void 0,serialize:void 0,parse:a,latexTrigger:[s[0],"<{>",s[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 Zs(e,n){let i={lookahead:1,ids:new Map,defs:[]};for(let t of e)Mf(i,t,n);return i}function Qp(e,n){if(!em(e,n))return null;let i={kind:"kind"in e?e.kind:"expression"},t=null;"latexTrigger"in e&&(typeof e.latexTrigger=="string"?t=ce(e.latexTrigger):t=e.latexTrigger);let r=null;"identifierTrigger"in e&&(r=e.identifierTrigger),t!==null&&(i.latexTrigger=dn(t)),r!==null&&(i.identifierTrigger=r),e.name&&(i.name=e.name,i.serialize=Xp(e,t,r)),i.kind==="matchfix"&&ut(e)&&(i.openTrigger=e.openTrigger,i.closeTrigger=e.closeTrigger),i.kind==="symbol"&&Aa(e)&&(i.precedence=e.precedence??1e4),i.kind==="expression"&&Ra(e)&&(i.precedence=e.precedence??1e4),(i.kind==="prefix"||i.kind==="postfix")&&(ar(e)||bo(e))&&(t&&(t[0]==="^"||t[0]==="_")?(i.precedence=720,e.precedence):i.precedence=e.precedence??1e4),i.kind==="infix"&&yo(e)&&(!t||t[0]!=="^"&&t[0]!=="_"||!e.associativity||e.associativity,i.associativity=e.associativity??"none",i.precedence=e.precedence??1e4);let o=Kp(e,t,r);return o&&(i.parse=o),i}function Xp(e,n,i){if(typeof e.serialize=="function")return e.serialize;let t=e.kind??"expression";if(t==="environment"){let s=e.identifierTrigger??e.name??"unknown";return(a,u)=>E([`\\begin{${s}}`,a.serialize(p(u,1)),`\\end{${s}}`])}if(ut(e)){let s=typeof e.openTrigger=="string"?Af[e.openTrigger]:dn(e.openTrigger),a=typeof e.closeTrigger=="string"?Af[e.closeTrigger]:dn(e.closeTrigger);return(u,l)=>E([s,u.serialize(p(l,1)),a])}let r=e.serialize;if(r===void 0&&n&&(r=dn(n)),r)return t==="postfix"?(s,a)=>E([s.serialize(p(a,1)),r]):t==="prefix"?(s,a)=>E([r,s.serialize(p(a,1))]):t==="infix"?(s,a)=>{let u=W(a);if(u===0)return"";let l=e.precedence??1e4;return E(v(a).flatMap((f,c)=>{let d=s.wrap(f,l+1);return c<u-1?[d,r]:[d]}))}:(s,a)=>x(a)?E([r,s.wrapArguments(a)]):r;let o=i??e.name??"unknown";return t==="postfix"?(s,a)=>E([s.serialize(p(a,1)),s.serializeSymbol(o)]):t==="prefix"?(s,a)=>E([s.serializeSymbol(o),s.serialize(p(a,1))]):t==="infix"?(s,a)=>E([s.serialize(p(a,1)),s.serializeSymbol(o),s.serialize(p(a,2))]):(s,a)=>x(a)?E([s.serializeSymbol(o),s.wrapArguments(a)]):s.serializeSymbol(o)}function Kp(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(o,s)=>{let a=o.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(o,s)=>{let a=o.parseArguments("enclosure",s);return a===null?r:[r,...a]}}if(t==="symbol"){let r=e.parse??e.name??i;if(r)return(o,s)=>r}if(t==="prefix"){let r=e.parse??e.name??i;if(r){let o=e.precedence??1e4;return(s,a)=>{let u=s.parseExpression({...a??[],minPrec:o});return u===null?null:[r,u]}}}if(t==="postfix"){let r=e.parse??e.name;if(r)return(o,s)=>s===null?null:[r,s]}if(t==="infix"){if(/[_^]/.test(n?.[0]??"")){let o=e.name??e.parse;return(s,a)=>[o,C(p(a,1)),C(p(a,2))]}let r=e.parse??e.name??i;if(r){let o=e.precedence??1e4,s=e.associativity??"none";return s==="none"?(a,u,l)=>{if(u===null)return null;let f=C(a.parseExpression({...l,minPrec:o}));return[r,u,f]}:s==="left"?(a,u,l)=>{if(u===null)return null;let f=C(a.parseExpression({...l,minPrec:o+1}));return typeof r!="string"?[r,u,f]:[r,u,f]}:s==="right"?(a,u,l)=>{if(u===null)return null;let f=C(a.parseExpression({...l,minPrec:o}));return typeof r!="string"?[r,u,f]:[r,u,f]}:(a,u,l)=>{if(u===null)return null;let f=C(a.parseExpression({...l,minPrec:o}));return typeof r!="string"?[r,u,f]:Ri(r,u,f)}}}if(t==="matchfix"){let r=e.parse??e.name;if(r)return(o,s)=>z(s)?null:[r,s]}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 em(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=dn(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"||!he(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"]}):he(e.name)||n({severity:"warning",message:["invalid-dictionary-entry",e.name,"The 'name' property must be a valid identifier"]})),ut(e)){if("latexTrigger"in e||"identifierTrigger"in ar)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(yo(e)||bo(e)||ar(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!ut(e)&&!Ma(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 Gt={symbols:fl,algebra:df,arithmetic:bf,calculus:wf,complex:Df,core:cl,"linear-algebra":Nf,logic:vf,relop:Yn,other:Sf,physics:[{name:"mu0",kind:"symbol",latexTrigger:"\\mu_0"}],sets:If,statistics:Rf,trigonometry:Tf};function Cf(e="all"){if(e==="all"){let n=[];for(let i of Object.keys(Gt))Gt[i]&&n.push(...Gt[i]);return n}return Gt[e]?Object.freeze([...Gt[e]]):[]}var nm={"\\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"},im={"\\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 Pf(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=ln.findIndex(o=>o[1]===i);return r>=0?(e.nextToken(),ln[r][0]):e.matchChar()??e.nextToken()}function Yr(e){let n=Hs(e),i=im[e.peek]??null;if(i){if(e.nextToken(),!e.match("<{>"))return null;let o=Yr(e);if(o===null||!e.match("<}>"))return null;n=`${o}${i}`}if(n===null){for(n="";!e.atEnd;){let o=e.peek;if(o==="<}>"||o==="_"||o==="^")break;let s=Pf(e,{toplevel:!1});if(s===null)return null;n+=s}for(;!e.atEnd&&/\d/.test(e.peek);)n+=e.nextToken()}for(;!e.atEnd;)if(e.match("\\degree"))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 o=e.match("<{>"),s=Yr(e);if(o&&!e.match("<}>")||s===null)return null;r.push(s)}else if(e.match("^")){let o=e.match("<{>"),s=Yr(e);if(o&&!e.match("<}>")||s===null)return null;t.push(s)}else break;return t.length>0&&(n+="__"+t.join("")),r.length>0&&(n+="_"+r.join("")),n}function Hs(e){let n=nm[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+=Yr(e),i===null||!e.match("<}>")?null:n==="_upright"&&i.length>1?i:i+n}return null}function Ws(e){let n=e.index,i=Hs(e);return i===null||he(i)?null:e.error(["invalid-identifier",{str:Ye(i)}],n)}function zt(e){if(/^[a-zA-Z]$/.test(e.peek)||/^\p{XIDS}$/u.test(e.peek))return e.nextToken();let n=Hs(e);if(!n){for(n="";!e.atEnd&&Zi.test(n+e.peek);)n+=e.nextToken();n||(n=null)}let i=e.index;return n??(n=Pf(e,{toplevel:!0})),n&&(n=n.normalize(),he(n))?n:(e.index=i,null)}var tm={"(":["\\lparen","("],")":["\\rparen",")"],"[":["\\lbrack","\\[","["],"]":["\\rbrack","\\]","]"],"<":["<","\\langle"],">":[">","\\rangle"],"{":["\\{","\\lbrace"],"}":["\\}","\\rbrace"],":":[":","\\colon"],"|":["|","\\|","\\lvert","\\rvert"],"||":["||","\\Vert","\\lVert","\\rVert"]},Ys={"\\left":"\\right","\\bigl":"\\bigr","\\Bigl":"\\Bigr","\\biggl":"\\biggr","\\Biggl":"\\Biggr","\\big":"\\big","\\Big":"\\Big","\\bigg":"\\bigg","\\Bigg":"\\Bigg"},Qs={"(":")","[":"]","|":"|","\\{":"\\}","\\[":"\\]","\\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"},Xs=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=ce(this.options.positiveInfinity),this._negativeInfinityTokens=ce(this.options.negativeInfinity),this._notANumberTokens=ce(this.options.notANumber),this._decimalSeparatorTokens=ce(this.options.decimalSeparator),this._wholeDigitGroupSeparatorTokens=[],this._fractionalDigitGroupSeparatorTokens=[],this.options.digitGroupSeparator&&(typeof this.options.digitGroupSeparator=="string"?(this._wholeDigitGroupSeparatorTokens=ce(this.options.digitGroupSeparator),this._fractionalDigitGroupSeparatorTokens=this._wholeDigitGroupSeparatorTokens):Array.isArray(this.options.digitGroupSeparator)&&(this._wholeDigitGroupSeparatorTokens=ce(this.options.digitGroupSeparator[0]),this._fractionalDigitGroupSeparatorTokens=ce(this.options.digitGroupSeparator[1]))),this._exponentProductTokens=ce(this.options.exponentProduct),this._beginExponentMarkerTokens=ce(this.options.beginExponentMarker),this._endExponentMarkerTokens=ce(this.options.endExponentMarker),this._truncationMarkerTokens=ce(this.options.truncationMarker),this._imaginaryUnitTokens=ce(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 dn(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,o]of this.lookAhead())for(let s of t)s.latexTrigger===o&&i.push([s,r]);for(let r of t)if(r.identifierTrigger){let o=rm(this,r.identifierTrigger);o>0&&i.push([r,o])}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,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"],n=!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"],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 s="";for(;o.includes(this.peek);)s+=this.nextToken();if(!n&&this.match("."))for(s+=".";o.includes(this.peek);)s+=this.nextToken();let a=n?Number.parseInt(s,r):Number.parseFloat(s);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 o=this.matchAny(["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"]);if(!o)break;t+=o,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=Ys[this.peek];return r&&this.nextToken(),n==="||"&&this.matchAll(["|","|"])?(this.addBoundary(["|","|"]),!0):(tm[n]??[n]).includes(this.peek)?(n=this.nextToken(),i=Qs[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(x(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=[],o=this.peek;for(;o!=="&"&&o!=="\\\\"&&o!=="\\cr"&&!this.atBoundary;)t=this.parseExpression({minPrec:0,condition:s=>{let a=s.peek;return a==="&"||a==="\\\\"||a==="\\cr"}}),t!==null?r.push(t):(r.push(["Error",["'unexpected-token'",o]]),this.nextToken()),this.skipSpace(),o=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 o=r.parse(this,n);return this.skipSpace(),this.matchBoundary()?o!==null?this.decorate(o,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 o=this.index;this.skipVisualSpace(),this.matchAll(r)&&(this.skipVisualSpace(),/^[0-9]$/.test(this.peek)?t=!1:this.index=o)}}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=Of(this);if(r!==null){if(t=this.parseDecimalDigits("fraction"),!t)return`(${r})`;let o=Of(this);if(o!==null)return`(${r}${t}${o})`}}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="",o=!1;if(this.match(".")||this.matchAll(this._decimalSeparatorTokens)){let f=this.peek;(/^[\d]$/.test(f)||sm(this))&&(o=!0,t="0")}else t=this.parseDecimalDigits("whole");if(!t)return this.index=n,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 f=this.parseRepeatingDecimal();f&&(r+=f,u=!0),this.match("\\ldots")||this.matchAll(this._truncationMarkerTokens)}if(a&&!r)return this.index=s,t.length<10?Js(i*parseInt(t,10)):{num:i<0?"-"+t:t};let l=this.parseExponent();if(!a&&!l&&t.length<10)return Js(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]]:Js(i*f);let c=parseInt(r,10),d=r.length,m=f*10**d+c,b=10**d;return l?["Multiply",["Rational",i*m,b],["Power",10,l]]:["Rational",i*m,b]}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 o=t.parse(this,{...n,minPrec:t.precedence+1});if(o!==null)return o}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,o]of this.peekDefinitions("infix"))if(r.precedence>=i.minPrec){this.index=t+o;let s=r.parse(this,n,i);if(s!==null)return s}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:kn(r)??[];if(n==="implicit"){if(x(r)==="Delimiter"){let s=p(r,1);return x(s)==="Sequence"?v(s):s===null?[]:[s]}if(r!==null)return[r];let o=this.parseExpression({...i,minPrec:390});return o===null?null:[o]}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 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=i,!this.atEnd)continue;return null}}let s=t.parse(this,o??"Nothing");if(s!==null)return s}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[o,s]of r)if(this.index=i+s,typeof o.parse=="function"){if(t=o.parse(this,n),t!==null)return t}else return o.name;return this.index=i,null}parseFunction(n){if(this.atTerminator(n))return null;let i=this.index,t=null;for(let[o,s]of this.peekDefinitions("function"))if(this.index=i+s,typeof o.parse=="function"){if(t=o.parse(this,n),t!==null)return t}else{t=o.name;break}if(t===null&&(this.index=i,t=zt(this),!this.isFunctionOperator(t)))return this.index=i,null;do{let o=this.parsePostfixOperator(t,n);if(o===null)break;t=o}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,o]of this.peekDefinitions("symbol"))if(this.index=i+o,typeof r.parse=="function"){let s=r.parse(this,n);if(s!==null)return s}else return r.name;this.index=i;let t=zt(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=[],o=i;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",i);r.push(a)}else if(this.match("^"))if(o=this.index,this.match("_")||this.match("^"))t.push(this.error("syntax-error",o));else{let a=this.parseGroup()??this.parseToken();if(a===null)return this.error("missing",i);t.push(a)}o=this.index,this.skipSpace()}if(t.length===0&&r.length===0)return this.index=i,n;let s=n;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(t.length>0){let a=[...this.getDefs("infix")].filter(u=>u.latexTrigger==="^");if(a){let u=t.filter(l=>!z(l));if(u.length!==0){let l=u.length===1?u[0]:["List",...u],f=["Superscript",s,l];for(let c of a)if(typeof c.parse=="function"?s=c.parse(this,f,{minPrec:0}):s=f,s!==null)break}}}return s===null&&(this.index=i),s}parsePostfixOperator(n,i){if(n===null||this.atEnd)return null;let t=this.index;for(let[r,o]of this.peekDefinitions("postfix")){this.index=t+o;let s=r.parse(this,n,i);if(s!==null)return s}return this.index=t,null}parseSyntaxError(){let n=this.index;if(this.peek==="^")return this.index+=1,["Superscript",this.error("missing",n),C(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=Ws(this);if(r!==null)return r;if(r=zt(this),r!==null)return this.error(["unexpected-identifier",{str:r}],t);let o=this.peek;if(!o)return this.error("syntax-error",n);if(om(this))return this.error("unexpected-delimiter",n);if(o[0]!=="\\")return this.error(["unexpected-token",{str:dn(o)}],n);let s=this.nextToken();if(this.skipSpaceTokens(),s==="\\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:dn(s)}],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)??Ws(this)),i!==null){i=this.decorate(i,t);let r=null,o=this.index;do{if(r=this.parsePostfixOperator(i,n),i=r??i,this.index===o&&r!==null){this.index;break}o=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),z(t)&&(t=null)),t!==null){let r=!1;for(;!r&&!this.atTerminator(n);){this.skipSpace();let o=this.parseInfixOperator(t,n);if(o===null&&this.peekDefinitions("operator").length===0){let s=this.parseExpression({...n,minPrec:390});s!==null?x(t)==="InvisibleOperator"?x(s)==="InvisibleOperator"?o=["InvisibleOperator",...v(t),...v(s)]:o=["InvisibleOperator",...v(t),s]:x(s)==="InvisibleOperator"?o=["InvisibleOperator",t,...v(s)]:o=["InvisibleOperator",t,s]:o===null&&(o=this.options.parseUnexpectedToken?.(t,this)??null)}o!==null?t=o: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 rm(e,n){let i=e.index,t=zt(e)?.trim();if(t===null)return 0;let r=t!==n?0:e.index-i;return e.index=i,r}function om(e){let n=e.peek;return Object.values(Qs).includes(n)||Qs[n]?(e.nextToken(),!0):Ys[n]||Object.values(Ys).includes(n)?(e.nextToken(),e.nextToken(),!0):!1}function Of(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 Lf(e,n,i){let t=new Xs(ce(e),n,i),r=t.parseExpression();if(!t.atEnd){let o=t.parseSyntaxError();r=r!==null?["Sequence",r,o]:o}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 Js(e){return e===0?{num:"0"}:Number.isInteger(e)&&Math.abs(e)<G?e:{num:e.toString()}}var Ff=["\\varphi -> \\frac{1+\\sqrt{5}}{2}",am,um,e=>{let n=je(e);return n?{value:n,because:"expand"}:void 0},e=>{if(e.operator==="Add")return{value:Z(...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.operator==="Power")return{value:e.op1.pow(e.op2),because:"power"};if(e.operator==="Root")return{value:e.op1.root(e.op2),because:"root"};if(e.operator==="Sqrt")return{value:e.op1.sqrt(),because:"sqrt"}},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(!zo(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=Bt(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"}},"\\arsinh(x) -> \\ln(x+\\sqrt{x^2+1})","\\arcosh(x) -> \\ln(x+\\sqrt{x^2-1})","\\artanh(x) -> \\frac{1}{2}\\ln(\\frac{1+x}{1-x})","\\operatorname{arcoth}(x) -> \\frac{1}{2}\\ln(\\frac{x+1}{x-1})","\\arsech(x) -> \\ln(\\frac{1+\\sqrt{1-x^2}}{x})","\\operatorname{arccsch}(x) -> \\ln(\\frac{1}{x} + \\sqrt{\\frac{1}{x^2}+1})",Jl];function am(e){if(!Vn(e)&&!To(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=$n(e)??e,Be(e.operator),e.nops===2&&!e.op2.is(0)){let o=$n(i.function(e.operator,[e.op1.sub(e.op2),i.Zero]));i.costFunction(o)<i.costFunction(e)&&(e=o)}if(!e.isSame(n))return{value:e,because:"simplify-relational-operator"}}function um(e){return e.operator!=="List"||!e.ops.every(i=>To(i)||Vn(i))?void 0:{value:e.engine.function("List",e.ops.map(i=>i.simplify())),because:"simplify-system-of-equations"}}var tt=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;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??So;i==="machine"&&(i=Math.floor(rn)),this._bignum=Q.clone({precision:i}),this._precision=i,this.tolerance=n?.tolerance??"auto",this._angularUnit="rad",this.Zero=new we(this,0),this.One=new we(this,1),this.Half=new we(this,{rational:[1,2]}),this.NegativeOne=new we(this,-1),this.Two=new we(this,2),this.NaN=new we(this,Number.NaN),this.PositiveInfinity=new we(this,Number.POSITIVE_INFINITY),this.NegativeInfinity=new we(this,Number.NEGATIVE_INFINITY),this.I=new we(this,{im:1}),this.ComplexInfinity=new we(this,{re:1/0,im:1/0}),this.reset(),this.context={assumptions:new nt,timeLimit:2,memoryLimit:1,recursionLimit:1024,iterationLimit:Number.POSITIVE_INFINITY};for(let r of e.getStandardLibrary("domains"))qs(this,r);let t=n?.ids??e.getStandardLibrary();for(let r of t)qs(this,r);for(let r of Object.keys(this._commonSymbols)){let o=new mi(this,r,{canonical:!0});o.bind(),this._commonSymbols[r]=o}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(),Sl(this)}static getStandardLibrary(n="all"){return Fs(n)}static getLatexDictionary(n="all"){return Cf(n)}get latexDictionary(){return this._latexDictionaryInput??e.getLatexDictionary()}set latexDictionary(n){this._latexDictionaryInput=n,this._indexedLatexDictionary=Zs(n,i=>{throw Error(typeof i.message=="string"?i.message:i.message.join(","))})}get indexedLatexDictionary(){return this._indexedLatexDictionary??(this._indexedLatexDictionary=Zs(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,o]of t.ids)o.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=rn),n==="auto"&&(n=So);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,rn),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(){let n=this.context;for(;n;){if(n.timeLimit!==void 0)return n.timeLimit;n=n.parentScope??null}return 2}get iterationLimit(){let n=this.context;for(;n;){if(n.iterationLimit!==void 0)return n.iterationLimit;n=n.parentScope??null}return 1024}get recursionLimit(){let n=this.context;for(;n;){if(n.recursionLimit!==void 0)return n.recursionLimit;n=n.parentScope??null}return 1024}get tolerance(){return this._tolerance}set tolerance(n){n==="auto"&&(this._precision<=rn?n=Xn:n=-1),(!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 Q?n.isPositive()&&n.lte(this._bignumTolerance)||n.isNegative()&&n.gte(this._negBignumTolerance)||n.isZero()?0:n:n instanceof O&&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 Q&&(n=n.toNumber()),i instanceof Q&&(i=i.toNumber()),new O(n,i)}_numericValue(n){if(n instanceof q)return n.asExact??n;let i=r=>this.bignum(r),t=this._precision>rn?r=>new ti(r,i):r=>new ri(r,i);if(typeof n=="number")return Number.isInteger(n)?new j(n,t,i):t(n);if(typeof n=="bigint")return new j(n,t,i);if(In(n))return new j({rational:n},t,i);if(n instanceof Q)return n.isInteger()&&n.e<=qa?new j(X(n.toString()),t,i):t(n);if(n instanceof O)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 Q&&n.re.isInteger()?new j({rational:[X(n.re.toString()),BigInt(1)]},t,i):typeof n.re=="number"&&Number.isInteger(n.re)?new j({rational:[n.re,1]},t,i):t(n);if("radical"in n||"rational"in n)return n.radical!==void 0&&(!Number.isInteger(n.radical)||n.radical>=G)||n.rational&&ee(n.rational)&&(!Number.isInteger(n.rational[0])||!Number.isInteger(n.rational[1]))?t(n):new j(n,t,i);throw Error("Unexpected value")}get costFunction(){return this._cost??$s}set costFunction(n){typeof n!="function"&&(this._cost=$s),this._cost=n}lookupSymbol(n,i,t){if(!this.strict){for(t??(t=this.context??void 0);t;){let o=t.ids?.get(n);if(o&&o instanceof le)return o;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[o,s]of t.ids)if(s instanceof le&&s.wikidata===i)return s}t=t.parentScope}for(t=r;t;){let o=t.ids?.get(n);if(o instanceof le)return o;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 Ve)return t;i=i.parentScope}}defineSymbol(n,i){if(!this.context)throw Error("Symbol cannot be defined: no scope available");if(n.length===0||!he(n))throw Error(`Invalid identifier "${n}": ${Ye(n)}}`);return this._defineSymbol(n,i)}_defineSymbol(n,i){var r;(r=this.context).ids??(r.ids=new Map);let t=new le(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||!he(n))throw Error(`Invalid identifier "${n}": ${Ye(n)}}`);return this._defineFunction(n,i)}_defineFunction(n,i){var r;(r=this.context).ids??(r.ids=new Map);let t=Hr(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={timeLimit:this.context.timeLimit,memoryLimit:this.context.memoryLimit,recursionLimit:this.context.recursionLimit,iterationLimit:this.context.iterationLimit,...n??{},parentScope:this.context,assumptions:new nt(this.context.assumptions)},this}popScope(){if(!this.context)throw Error("No scope available");return this.context=this.context.parentScope??null,this.context,this.context,this}swapScope(n){let i=this.context;return this.context=n,this.context,this.context,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=`${af}[undefined]${qt}`;if(t===0?console.group("current scope - level 0"):console.groupCollapsed(i.parentScope?`scope - level ${t}`:`root scope - level ${t}`),i.ids){let o=0;for(let[s,a]of i.ids){let u=`${uf}${s}${qt}`;try{if(a instanceof le){let l=a.value?.isValid?a.value.toString():a.value?`${zs}${a.value.toString()}${qt}`:r;console.info(`${u}: ${a.type?.toString()??r} = ${l}`)}else a instanceof Ve&&(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()}`));o===11&&console.groupCollapsed(`... and ${i.ids.size-o} more`),o+=1}catch(l){console.info(`${u}: ${zs}${l.message}${qt}`)}}o>=11&&console.groupEnd()}if(i.assumptions){let o=[...i.assumptions.entries()].map(([s,a])=>`${s}: ${a}`);if(o.length>0){console.groupCollapsed(`${o.length} assumptions)`);for(let s of o)console.info(s);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 le?i.constant||(i.value=void 0):i instanceof Ve&&(i.evaluate=void 0,i.canonical=void 0)}declare(n,i){if(typeof n!="string"||i===void 0){for(let[s,a]of Object.entries(n))this.declare(s,a);return this}let[t,r]=Xo(n);if(r!==void 0)throw Error(`Unexpected arguments with ${n}. Use 'ce.assign()' instead to assign a value, or a use a function definition with 'ce.declare()'.`);if(t==="Nothing")return this;if(this.context?.ids?.get(t)){let s=this.context.ids.get(t);if(this.generation+=1,s instanceof le&&s.inferredType){try{if(dt(i))s.update(i);else{if(pt(i))throw new Error("Cannot redeclare a symbol as a function");s.type=k(i),s.inferredType=!1}}catch(a){console.error([`
|
|
95
|
+
`)}}function Yr(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?Yr(e.re)+Yr(e.im)+1:Yr(e.re)}function Gs(e){if(e.symbol)return 1;if(e.isNumberLiteral)return Yr(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 Gs(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+Gs(r),0)??0)}var zs=Gs;var nt=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 we=class extends Y{constructor(n,i,t){super(n,t?.metadata),i instanceof $||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)):Z(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 $?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)):se(this,n)}div(n){return Ci(this,n)}pow(n){return de(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(g(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<P?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,[o,s]=vi(t,3);if(o!==1)return r.number(o).ln(i).mul(3).add(r.number(s).ln(i));if([o,s]=vi(t,2),o!==1)return r.number(o).ln(i).mul(2).add(r.number(s).ln(i))}return i&&g(i.type,"integer")?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.isFinite(this._value)?Number.isInteger(this._value)?"finite_integer":"finite_real":"non_finite_number":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 wn(this.structural,n,i).at(-1)?.value??null}match(n,i){return Ji(this.structural,n,i)}get isPositive(){return typeof this._value=="number"?!Number.isNaN(this._value)&&this._value>0:Yi(this.sgn)}get isNonNegative(){return typeof this._value=="number"?!Number.isNaN(this._value)&&this._value>=0:Qi(this.sgn)}get isNegative(){return typeof this._value=="number"?!Number.isNaN(this._value)&&this._value<0:Xi(this.sgn)}get isNonPositive(){return typeof this._value=="number"?!Number.isNaN(this._value)&&this._value<=0:Ki(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):g(this._value.type,"integer")}get isRational(){return typeof this._value=="number"?Number.isInteger(this._value):g(this._value.type,"rational")}get isReal(){return typeof this._value=="number"?!0:g(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"||g(this.type,"rational")?!0:!(this._value instanceof j)}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 Qr(e,n){if(n instanceof $)return n;if(typeof n=="number")return Number.isInteger(n)&&n>=-P&&n<=P||!Number.isFinite(n)?n:e._numericValue(n);if(n instanceof Q){let i=n.toNumber();return n.isInteger()&&Math.abs(i)<=P?i:n.isNaN()?NaN:n.isFinite()?e._numericValue(n):i>0?1/0:-1/0}if(typeof n=="bigint")return n>=-P&&n<=P?Number(n):e._numericValue(n);if(n instanceof L)return n.im===0?Qr(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 Qr(e,n.num);if(typeof n.num!="string")throw new Error("MathJSON `num` property should be a string of digits");return sf(e,n.num)}if(typeof n=="string")return sf(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 sf(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,o,s]=n.match(/(.+)\(([0-9]+)\)(.+)?$/)??[];n=r+o.repeat(Math.ceil(e.precision/o.length))+(s??"")}let i=X(n);return i!==null?i>=-P&&i<=P?Number(i):e._numericValue(i):e._numericValue(e.bignum(n))}var mi=class e extends Y{constructor(i,t,r){super(i,r?.metadata);this._isStructural=!1;he(t),`${t}${Ye(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 le)||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}reset(){this._def?.reset(),this._def=void 0}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 oi(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:Z(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 $){if(i.isOne)return this;if(i.isNegativeOne)return this.neg();if(i.isZero)return this.engine.Zero}return se(this.canonical,this.engine.box(i))}div(i){return Ci(this,i)}pow(i){return de(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=ct(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 le?this._def:void 0}get functionDefinition(){return this._def===void 0&&this.bind(),this._def instanceof Ve?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 le&&(t.inferredType||t.type==="unknown")?(t.type=or(t.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(s=>t.box(s)));else throw new Error(`Invalid value for symbol ${this._id}: ${i}`);if(i!==void 0&&(r=t.box(i).evaluate()),r?.type&&g(r.type,"function")){this.engine.lookupSymbol(this._id),this._def=t.defineFunction(this._id,{signature:r.type.toString(),evaluate:r});return}let o=this.engine.lookupSymbol(this._id);o&&o instanceof le?o.value=r:this._def=t.defineSymbol(this._id,{value:r,type:r?.type.toString()})}get type(){let i=this._def;return i?i instanceof le?i.type:i instanceof Ve?i.signature:"unknown":"unknown"}set type(i){if(this._def){if(this._id[0]==="_")throw new Error(`The type of the wildcard "${this._id}" cannot be changed`);i==="function"||at(i)?(this.engine.forget(this._id),this._def=this.engine.defineFunction(this._id,{signature:i.toString()})):this._def instanceof le?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 le)))return i.sgn}has(i){return typeof i=="string"?this._id===i:i.includes(this._id)}match(i,t){return Ji(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 Yi(this.sgn)}get isNonPositive(){return Ki(this.sgn)}get isNegative(){return Xi(this.sgn)}get isNonNegative(){return Qi(this.sgn)}get isNumber(){let i=this.type;if(i!=="unknown")return g(i,"number")}get isInteger(){let i=this.type;if(i!=="unknown")return g(i,"integer")}get isRational(){let i=this.type;if(i!=="unknown")return g(i,"rational")}get isReal(){let i=this.type;if(i!=="unknown")return g(i,"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 wn(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 af(e,n){let i=e.lookupSymbol(n);return i?.holdUntil==="never"&&i.value?i.value:new mi(e,n,{canonical:!0,def:i})}var qt="\x1B[0m";var uf="\x1B[33m";var lf="\x1B[36;1m",js="\x1B[101;97m";var Us={black:0,red:1,green:2,yellow:3,blue:4,magenta:5,cyan:6,white:7,grey:8,gray:8,"bright-red":9,"bright-green":10,"bright-yellow":11,"bright-blue":12,"bright-magenta":13,"bright-cyan":14,"bright-white":15},zp={black:"#2E3436",red:"#ff0000",green:"#4E9A06",yellow:"#C4A000",blue:"#3465A4",magenta:"#75507B",cyan:"#06989A",white:"#D3D7CF",grey:"#555753",gray:"#555753","bright-red":"#EF2929","bright-green":"#8AE234","bright-yellow":"#FCE94F","bright-blue":"#729FCF","bright-magenta":"#AD7FA8","bright-cyan":"#34E2E2","bright-white":"#EEEEEC"};function ff(e){let n=zp[e];if(n===void 0)return[];let i=[],t=n.match(/#([\da-f]{2})([\da-f]{2})([\da-f]{2})/i);return t!==null?i=t.slice(1).map(r=>parseInt(r,16)):(t=n.match(/#([\da-f])([\da-f])([\da-f])/i),i=t.slice(1).map(r=>16*parseInt(r,16))),i}function cf(e,n){if(n==="none")return[];if(e==="default")return[39];if(n==="basic"){let i=typeof e=="string"?Us[e]:e;return i===void 0?[]:i<8?[30+i]:[90+i-8]}return typeof e=="number"&&(e=Object.keys(Us)[e]),[38,2,...ff(e)]}function df(e,n){if(n==="none")return[];if(e==="default")return[49];if(n==="basic"){let i=Us[e];return i===void 0?[]:i<8?[40+i]:[100+i-8]}return[48,2,...ff(e)]}var pf=[{name:"To",latexTrigger:["\\to"],kind:"infix",precedence:270},{latexTrigger:["\\rightarrow"],kind:"infix",precedence:270,parse:"To"}];function Up(e){if(x(e)!=="Multiply")return[[],[]];let n=[],i=[];for(let t of v(e))if(x(t)==="Power"){let r=p(t,1),o=p(t,2);if(x(o)==="Negate"){let s=p(o,1);r&&s&&i.push(["Power",r,s])}else{let s=w(o)??NaN;s===-1?r&&i.push(r):s<0?r&&i.push(["Power",r,-s]):n.push(t)}}else if(x(t)==="Rational"&&W(t)===2||x(t)==="Divide"){let r=p(t,1),o=p(t,2);w(r)!==1&&n.push(r),w(o)!==1&&i.push(o)}else{let r=Di(t);r!==null?(r[0]!==1&&n.push(r[0]),i.push(r[1])):n.push(t)}return[n,i]}function jp(e){let n=e.parseOptionalGroup(),i=e.parseGroup()??e.parseToken();return z(i)?n!==null?["Root",ki,M(n)]:["Sqrt",ki]:n!==null?["Root",i,n]:["Sqrt",i]}function $t(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)+"}}":w(t)===2?"\\sqrt{"+e.serialize(i)+"}":"\\sqrt["+e.serialize(t)+"]{"+e.serialize(i)+"}")}function Zp(e,n){e.level-=1;let i=x(n),t="",r=p(n,1);if(i==="Negate")t="-"+e.wrap(r,276);else if(i==="Subtract"){t=e.wrap(r,275);let o=p(n,2);if(o!==null){let s=e.wrap(o,275);s[0]==="-"?t+="+"+s.slice(1):s[0]==="+"?t+="-"+s.slice(1):t=t+"-"+s}}else if(i==="Add"){if(e.options.prettify&&W(n)===2&&e.options.invisiblePlus!=="+"){let[a,u]=[p(n,1),p(n,2)],[l,f]=[a,u],c=w(l),d=Di(f);if((c===null||d===null)&&([l,f]=[u,a],c=w(l),d=Di(f)),c!==null&&d!==null&&isFinite(c)&&Number.isInteger(c)&&c>=0&&c<=1e3&&isFinite(d[0])&&isFinite(d[1])&&d[0]>0&&d[0]<=100&&d[1]<=100)return t=E([e.serialize(l),e.options.invisiblePlus,e.serialize(f)]),e.level+=1,t}if(e.options.prettify&&W(n)===2){let[a,u]=Vt(r),[l,f]=Vt(p(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 o=W(n)+1,s=v(n);for(let a=2;a<o;a++)if(r=s[a-1],e.options.prettify){let[u,l]=Vt(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 Ef(e,n){if(n===null)return"";e.level-=1;let i="";if(e.options.prettify===!0){let[u,l]=Up(n);l.length>0&&(l.length===1&&l[0]===1?u.length===0?i="1":u.length===1?i=e.serialize(u[0]):i=Ef(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,o=W(n)+1,s=v(n);e.options.prettify===!0&&s.length===2&&Bn(s[1])&&!Bn(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(Bn(r)){l=e.serialize(r),l==="-1"&&!i?(i="",t=!t):(l[0]==="-"&&(l=l.slice(1),t=!t),i=i?E([i,e.options.multiply,l]):l),a=!0;continue}if(x(r)==="Power"){let f=Di(p(r,2));if(f!=null){let[c,d]=f;if(c===1&&d!==null){i+=$t(e,e.rootStyle(r,e.level),p(r,1),d),a=!1;continue}}}if(x(r)==="Power"&&!isNaN(w(p(r,1))??NaN)){l=e.serialize(r),i=i?E([i,e.options.multiply,l]):l,a=!0;continue}if(x(r)==="Negate"&&(r=p(r,1),t=!t),l=e.wrap(r,390),!i)i=l;else{let f=x(r);a&&(f==="Divide"||f==="Rational")?i=E([i,e.options.multiply,l]):e.options.invisibleMultiply?i=E([i,e.options.invisibleMultiply,l]):i=E([i,l])}a=!1}return e.level+=1,t?"-"+i:i}function Hp(e){let n=e.parseGroup(),i=null;if(n===null?(n=e.parseToken(),i=e.parseToken()):i=e.parseGroup(),n=M(n),i=M(i),x(n)==="PartialDerivative"&&(x(i)==="PartialDerivative"||x(i)==="Multiply"&&x(p(i,1))==="PartialDerivative")){let t=p(n,3)??null,r=p(n,1);r==null&&(r=M(e.parseExpression()));let o=[];if(x(i)==="Multiply"){for(let s of v(i))if(x(s)==="PartialDerivative"){let a=p(s,2);a&&o.push(a)}}else{let s=p(i,2);s&&o.push(s)}return o.length>1&&(o=["List",...o]),["PartialDerivative",r,...o,t===null?1:t]}return["Divide",n,i]}function hf(e,n){if(n===null)return"";let i=M(p(n,1)),t=M(p(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 w(i)===1?e.wrap(t)+"^{-1}":e.wrap(i)+e.wrap(t)+"^{-1}";if(r==="factor")return w(t)===1?e.wrap(i):"\\frac{1}{"+e.serialize(t)+"}"+e.wrapString(e.serialize(i),e.groupStyle(n,1))}let o="\\frac";r==="block-quotient"?o="\\dfrac":r==="inline-quotient"&&(o="\\tfrac");let s=e.serialize(i),a=e.serialize(t);return`${o}{${s}}{${a}}`}function Zs(e,n){if(!n)return"";let i=x(n),t=M(p(n,1));if(i==="Sqrt")return $t(e,e.rootStyle(n,e.level-1),t,2);let r=M(p(n,2));if(i==="Root")return $t(e,e.rootStyle(n,e.level-1),t,r);if(e.options.prettify){let o=w(r)??1;if(o===-1)return e.serialize(["Divide","1",t]);if(o<0)return e.serialize(["Divide","1",["Power",t,-o]]);if(x(r)==="Divide"||x(r)==="Rational"){if(w(p(r,1))===1){let s=e.rootStyle(n,e.level);return $t(e,s,t,p(r,2))}if(w(p(r,2))===2)return`${e.serialize(["Sqrt",t])}${Ni("^",e.serialize(p(r,1)))}`}else if(x(r)==="Power"&&w(p(r,2))===-1){let s=e.rootStyle(n,e.level);return $t(e,s,t,p(r,1))}}return e.wrapShort(t)+Ni("^",e.serialize(r))}var Nf=[{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)=>E([e.serialize(p(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)=>z(n)?null:["Abs",n]},{kind:"matchfix",openTrigger:["\\vert"],closeTrigger:["\\vert"],parse:(e,n)=>z(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:Ri("Add",n,t)},serialize:Zp},{kind:"prefix",latexTrigger:["+"],precedence:275,parse:(e,n)=>e.parseExpression({...n,minPrec:400})},{name:"Ceil",kind:"matchfix",openTrigger:"\\lceil",closeTrigger:"\\rceil",parse:(e,n)=>z(n)?null:["Ceil",n]},{kind:"matchfix",openTrigger:["\u2308"],closeTrigger:["\u2309"],parse:(e,n)=>z(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(p(n,1)),t=w(p(n,2));if(t===0)return i;let r=t===1?"\\imaginaryI":t===-1?"-\\imaginaryI":E([e.serialize(p(n,2)),"\\imaginaryI"]);return w(p(n,1))===0?r:t!==null&&t<0?E([i,r]):E([i,"+",r])}},{name:"Divide",latexTrigger:"\\frac",precedence:600,parse:Hp,serialize:hf},{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=p(n,1);return D(i)||w(i)!==null?E(["\\exponentialE^{",e.serialize(i),"}"]):E(["\\exp",e.wrap(M(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)=>z(n)?null:["Floor",n]},{kind:"matchfix",openTrigger:["\u230A"],closeTrigger:["\u230B"],parse:(e,n)=>z(n)?null:["Floor",n]},{identifierTrigger:"floor",kind:"function",parse:"Floor"},{latexTrigger:["\\Gamma"],parse:"Gamma"},{name:"GCD",identifierTrigger:"gcd",kind:"function"},{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=>bf("Ln",e),serialize:(e,n)=>"\\ln"+e.wrapArguments(n)},{name:"Log",latexTrigger:["\\log"],parse:e=>bf("Log",e),serialize:(e,n)=>{let[i,t]=v(n);return t?E(["\\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(x(n)!=="To")return null;let i=e.parseArguments("implicit");return i?["Limit",["Function",i[0],p(n,1)],p(n,2)]:null},serialize:(e,n)=>{let i=p(n,1),t=p(i,2),r=p(n,2);return E(["\\lim_{",e.serialize(t),"\\to",e.serialize(r),"}",e.serialize(p(i,1))])}},{name:"MinusPlus",latexTrigger:["\\mp"],kind:"infix",associativity:"any",precedence:270},{name:"Multiply",latexTrigger:["\\times"],kind:"infix",associativity:"any",precedence:390,serialize:Ef},{latexTrigger:["\\cdot"],kind:"infix",associativity:"any",precedence:390,parse:(e,n,i)=>{let t=e.parseExpression({...i,minPrec:392});return t===null?["Multiply",n,ki]:Ri("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,ki]:Ri("Multiply",n,t)}},{name:"Mod",latexTrigger:"\\bmod",kind:"infix",precedence:600,serialize:(e,n)=>{if(W(n)!==2)return"";let i=e.serialize(p(n,1)),t=e.serialize(p(n,2));return E([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",M(n)]}},{name:"Congruent",serialize:(e,n)=>{let i=e.serialize(p(n,1)),t=e.serialize(p(n,2));if(p(n,3)===null)return E([i,"\\equiv",t]);let r=e.serialize(p(n,3));return E([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)=>z(n)?null:["Norm",n]},{name:"Norm",kind:"matchfix",openTrigger:["\\left","\\Vert"],closeTrigger:["\\right","\\Vert"],parse:(e,n)=>z(n)?null:["Norm",n]},{name:"PlusMinus",latexTrigger:["\\pm"],kind:"infix",associativity:"any",precedence:270,serialize:(e,n)=>{let i=p(n,1);if(i===null)return"\\pm";if(W(n)===1)return E(["\\pm",e.serialize(i)]);let t=p(n,2);return E([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",M(i)]}},{latexTrigger:["\\plusmn"],kind:"infix",associativity:"any",precedence:270,parse:(e,n,i)=>{let t=e.parseExpression({...i,minPrec:400});return["PlusMinus",n,M(t)]}},{latexTrigger:["\\plusmn"],kind:"prefix",precedence:270,parse:(e,n)=>{let i=e.parseExpression({...n,minPrec:400});return["PlusMinus",M(i)]}},{name:"Power",latexTrigger:["^"],kind:"infix",serialize:Zs},{latexTrigger:"\\prod",precedence:390,name:"Product",parse:xf("Product",390),serialize:yf("\\prod")},{name:"Rational",precedence:600,serialize:(e,n)=>n&&W(n)===1?"\\operatorname{Rational}"+e.wrapArguments(n):hf(e,n)},{name:"Root",serialize:Zs},{name:"Round",identifierTrigger:"round",kind:"function"},{name:"Square",precedence:720,serialize:(e,n)=>e.wrapShort(p(n,1))+"^2"},{latexTrigger:["\\sum"],precedence:275,name:"Sum",parse:xf("Sum",275),serialize:yf("\\sum")},{name:"Sign",identifierTrigger:"sgn",kind:"function"},{name:"Sqrt",latexTrigger:["\\sqrt"],parse:jp,serialize:Zs},{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(p(n,1),277),t=e.wrap(p(n,2),278);return E([i,"-",t])}}];function Wp(e,n){if(e!==null){if(D(e))return{index:D(e)??"Nothing",upper:n};if(x(e)==="GreaterEqual"){let i=D(p(e,1))??"Nothing",t=p(e,2)??1;return{index:i,lower:t,upper:n}}if(x(e)==="Equal"){let i=D(p(e,1))??"Nothing",t=p(e,2);if(x(t)==="Range"){let o=p(t,1)??1,s=p(t,2)??void 0;return{index:i,lower:o,upper:s}}return{index:i,lower:t??1,upper:n}}}}function Jp(e,n){z(e)&&(e=null),z(n)&&(n=null);let i=e===null?[]:kn(e)??[e],t=n===null?[]:kn(n)??[n];return i.map((r,o)=>Wp(r,t[o])).filter(r=>r!==void 0)}function xf(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 o=Jp(r,t);i.pushSymbolTable();for(let u of o)i.addSymbol(u.index,"symbol");let s=i.parseExpression({minPrec:n+1});if(i.popSymbolTable(),s===null)return[e];let a=[];for(let u of o){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,s,...a]}}function yf(e){return(n,i)=>{if(p(i,1)!==null)return e;let t=p(i,2),r=x(t);r!=="Tuple"&&r!=="Triple"&&r!=="Pair"&&r!=="Single"&&(t=null);let o=p(t,1);o!==null&&x(o)==="Hold"&&(o=p(o,1));let s=p(i,1);if(t!=null)return p(i,2)!==null?E([e,n.serialize(s)]):E([e,"_{",n.serialize(p(i,2)),"}",n.serialize(s)]);let a=p(t,2),u=[];o&&D(o)!=="Nothing"&&a?u=[n.serialize(o),"=",n.serialize(a)]:o&&D(o)!=="Nothing"?u=[n.serialize(o)]:a!==null&&(u=[n.serialize(a)]),u.length>0&&(u=["_{",...u,"}"]);let l=[];return p(t,3)!==null&&(l=["^{",n.serialize(p(t,3)),"}"]),E([e,...l,...u,n.serialize(s)])}}function bf(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 Vt(e){let n=1,i=e;do{e=i;let t=x(e);if(t==="Negate")n*=-1,i=p(e,1);else if(t==="Multiply"){let[r,o]=Vt(p(e,1));o<0&&(n*=-1,r===1?i=["Multiply",...v(e).slice(1)]:i=["Multiply",r,...v(e).slice(1)])}else if(t==="Divide"||t==="Rational"){let[r,o]=Vt(p(e,1));o<0&&(n*=-1,i=[t,r,p(e,2)])}else{let r=w(e);r!==null&&r<0&&(n*=-1,i=-r)}}while(i!==e);return[e,n]}var Sf=[{name:"Matrix",serialize:(e,n)=>{let i=v(p(n,1));return vf(e,i,V(p(n,2)),V(p(n,3)))}},{name:"Vector",serialize:(e,n)=>{let i=v(n);return vf(e,i.map(t=>["List",t]),V(p(n,2)),V(p(n,3)))}},{kind:"environment",identifierTrigger:"pmatrix",parse:e=>{let n=An(e),[i,t]=Rn(e);return n?[i,t,{str:"()"},{str:n}]:[i,t]}},{kind:"environment",identifierTrigger:"bmatrix",parse:e=>{let n=An(e),[i,t]=Rn(e);return n?[i,t,{str:"[]"},{str:n}]:[i,t,{str:"[]"}]}},{kind:"environment",identifierTrigger:"Bmatrix",parse:e=>{let n=An(e),[i,t]=Rn(e);return n?[i,t,{str:"{}"},{str:n}]:[i,t,{str:"{}"}]}},{kind:"environment",identifierTrigger:"vmatrix",parse:e=>{let n=An(e),[i,t]=Rn(e);return n?[i,t,{str:"||"},{str:n}]:[i,t,{str:"||"}]}},{kind:"environment",identifierTrigger:"Vmatrix",parse:e=>{let n=An(e),[i,t]=Rn(e);return n?[i,t,{str:"\u2016\u2016"},{str:n}]:[i,t,{str:"\u2016\u2016"}]}},{kind:"environment",identifierTrigger:"smallmatrix",parse:e=>{let n=An(e),[i,t]=Rn(e);return n?[i,t,{str:"()"},{str:n}]:[i,t]}},{kind:"environment",identifierTrigger:"array",parse:e=>{let n=An(e,!1),[i,t]=Rn(e);return n?[i,t,{str:".."},{str:n}]:[i,t,{str:".."}]}},{kind:"environment",identifierTrigger:"matrix",parse:e=>{let n=An(e),[i,t]=Rn(e);return n?[i,t,{str:".."},{str:n}]:[i,t,{str:".."}]}},{kind:"environment",identifierTrigger:"matrix*",parse:e=>{let n=An(e),[i,t]=Rn(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 Rn(e){let n=e.parseTabular();return n?["Matrix",["List",...n.map(i=>["List",...i])]]:["",null]}function An(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 vf(e,n,i,t){i??(i="()");let[r,o]=["",""];typeof i=="string"&&i.length===2&&([r,o]=i);let s="";if(t)for(let f of t)f==="<"?s+="l":f===">"?s+="r":f==="="?s+="c":f==="|"?s+="|":f===":"&&(s+=":");let a=[];for(let f of n??[]){let c=[];for(let d of v(f))c.push(e.serialize(d));a.push(c.join(" & "))}let u=a.join(`\\\\
|
|
96
|
+
`),l=s.length>0?`[${s}]`:"";return r==="("&&o===")"?E(["\\begin{pmatrix}",l,u,"\\end{pmatrix}"]):r==="["&&o==="]"?E(["\\begin{bmatrix}",l,u,"\\end{bmatrix}"]):r==="{"&&o==="}"?E(["\\begin{Bmatrix}",l,u,"\\end{Bmatrix}"]):r==="|"&&o==="|"?E(["\\begin{vmatrix}",l,u,"\\end{vmatrix}"]):r==="\u2016"&&o==="\u2016"?E(["\\begin{Vmatrix}",l,u,"\\end{Vmatrix}"]):r==="{"&&o==="."?E(["\\begin{dcases}",l,u,"\\end{dcases}"]):r==="."&&o==="}"?E(["\\begin{rcases}",l,u,"\\end{rcases}"]):s||r!=="."||o!=="."?E(["\\left",Wi[r]??r,"\\begin{array}",`{${s}}`,u,"\\end{array}","\\right",Wi[o]??o]):E(["\\begin{matrix}",u,"\\end{matrix}"])}var Tf=[{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,o=e.parseExpression({...i,minPrec:219});return o!==null&&x(o)==="Mod"?["Congruent",n,t,M(p(o,1))]:(e.index=r,["Equivalent",n,M(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:Gt("ForAll")},{name:"Exists",kind:"prefix",latexTrigger:["\\exists"],precedence:200,serialize:"\\exists",parse:Gt("Exists")},{name:"ExistsUnique",kind:"prefix",latexTrigger:["\\exists","!"],precedence:200,serialize:"\\exists!",parse:Gt("ExistsUnique")},{name:"NotForAll",kind:"prefix",latexTrigger:["\\lnot","\\forall"],precedence:200,serialize:"\\lnot\\forall",parse:Gt("NotForAll")},{name:"NotExists",kind:"prefix",latexTrigger:["\\lnot","\\exists"],precedence:200,serialize:"\\lnot\\exists",parse:Gt("NotExists")},{name:"KroneckerDelta",kind:"prefix",latexTrigger:["\\delta","_"],precedence:200,serialize:(e,n)=>{let i=v(n);return i.length===0?"\\delta":i.every(t=>D(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=kn(n);return i&&i.length<=2?["KroneckerDelta",...i]:x(n)==="InvisibleOperator"?["KroneckerDelta",...v(n)]:n!==null?["KroneckerDelta",n]:null}},{name:"Boole",kind:"matchfix",openTrigger:"[",closeTrigger:"]",parse:(e,n)=>{let i=x(n);return!i||!Jn.some(t=>t.name===i)?null:["Boole",n]}},{kind:"matchfix",openTrigger:"\\llbracket",closeTrigger:"\\rrbracket",parse:(e,n)=>{let i=x(n);return!i||!Jn.some(t=>t.name===i)?null:["Boole",n]}}];function Gt(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,M(a)]}let s=n.parseEnclosure();if(s)return[e,r,M(s)]}n.index=t;let o=n.parseExpression(i);if(o===null)return null;if(n.skipSpace(),n.matchAny([",","\\mid",":","\\colon"])){let s=n.parseExpression(i);return[e,o,M(s)]}if(n.match("(")){let s=n.parseExpression(i);return n.match(")")?[e,o,M(s)]:null}return null}}function Me(e){return n=>{let i=n.parseGroup();return i===null?[e]:[e,i]}}var _f=[{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)=>D(n)===null?null:["Decrement",n]},{name:"Decrement",latexTrigger:["-","-"],kind:"postfix",precedence:880,parse:(e,n)=>D(n)===null?null:["Decrement",n]},{name:"PreIncrement",latexTrigger:["+","+"],kind:"prefix",precedence:880,parse:(e,n)=>{let i=e.parseExpression(n);return D(i)===null?null:["PreIncrement",i]}},{name:"PreDecrement",latexTrigger:["-","-"],kind:"prefix",precedence:880,parse:(e,n)=>{let i=e.parseExpression(n);return D(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=kn(t);if(r&&(t=["List",...r]),t===null||i===null)return null;let o=e.parseGroup()??"Nothing";if(!z(o)){let s=e.parseArguments()??["Nothing"];o=[o,...s]}return["PartialDerivative",o,t,i]},serialize:(e,n)=>{let i="\\partial",t=p(n,1),r=p(n,2),o=p(n,3);return r!==null&&r!=="Nothing"&&(x(r)==="List"?i+="_{"+e.serialize(["Sequence",...v(r)])+"}":i+="_{"+e.serialize(r)+"}"),o!==null&&o!=="Nothing"&&(i+="^{"+e.serialize(o)+"}"),t!==null&&t!=="Nothing"&&(i+=e.serialize(t)),i},precedence:740},{name:"OverBar",latexTrigger:["\\overline"],parse:Me("OverBar")},{name:"UnderBar",latexTrigger:["\\underline"],parse:Me("UnderBar")},{name:"OverVector",latexTrigger:["\\vec"],parse:Me("OverVector")},{name:"OverTilde",latexTrigger:["\\tilde"],parse:Me("OverTilde")},{name:"OverHat",latexTrigger:["\\hat"],parse:Me("OverHat")},{name:"OverRightArrow",latexTrigger:["\\overrightarrow"],parse:Me("OverRightArrow")},{name:"OverLeftArrow",latexTrigger:["\\overleftarrow"],parse:Me("OverLeftArrow")},{name:"OverRightDoubleArrow",latexTrigger:["\\Overrightarrow"],parse:Me("OverRightDoubleArrow")},{name:"OverLeftHarpoon",latexTrigger:["\\overleftharpoon"],parse:Me("OverLeftHarpoon")},{name:"OverRightHarpoon",latexTrigger:["\\overrightharpoon"],parse:Me("OverRightHarpoon")},{name:"OverLeftRightArrow",latexTrigger:["\\overleftrightarrow"],parse:Me("OverLeftRightArrow")},{name:"OverBrace",latexTrigger:["\\overbrace"],parse:Me("OverBrace")},{name:"OverLineSegment",latexTrigger:["\\overlinesegment"],parse:Me("OverLineSegment")},{name:"OverGroup",latexTrigger:["\\overgroup"],parse:Me("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(p(n,1)),t=Po(p(n,2));if(t===null)return i;V(t.display)==="block"?i=E(["{\\displaystyle",i,"}"]):V(t.display)==="inline"?i=E(["{\\textstyle",i,"}"]):V(t.display)==="script"?i=E(["{\\scriptstyle",i,"}"]):V(t.display)==="scriptscript"&&(i=E(["{\\scriptscriptstyle",i,"}"]));let r=w(t.size);return r!==null&&r>=1&&r<=10&&(i=E(["{",{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(p(n,2)!==null)return e.serialize(p(n,1));let i=w(p(n,1));return i===null?"":{"-3":"\\!",6:"\\ ",3:"\\,",4:"\\:",5:"\\;",9:"\\enspace",18:"\\quad",36:"\\qquad"}[i]??""}}];function F(e){return(n,i)=>{let t={"\\arcsin":"Arcsin","\\arccos":"Arccos","\\arctan":"Arctan","\\arctg":"Arctan","\\arcctg":"Arccot","\\arcsec":"Arcsec","\\arccsc":" Arccsc","\\arsinh":"Arsinh","\\arcosh":"Arcosh","\\artanh":"Artanh","\\arsech":"Arcsech","\\arcsch":"Arcsch","\\ch":"Cosh","\\cos":"Cos","\\cosec":"Csc","\\cosh":"Csch","\\cot":"Cot","\\cotg":"Cot","\\coth":"Coth","\\csc":"Csc","\\csch":"Csch","\\ctg":"Cot","\\cth":"Coth","\\sec":"Sec","\\sech":"Sech","\\sin":"Sin","\\sinh":"Sinh","\\sh":"Sinh","\\tan":"Tan","\\tanh":"Tanh","\\tg":"Tan","\\th":"Tanh"},r=t[e??""]??e??"";if(n.atTerminator(i))return r;let o=r;do{let l=n.parsePostfixOperator(o,i);if(l===null)break;o=l}while(!0);n.skipSpace();let s=null;n.match("^")&&(s=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?o:typeof o=="string"?[o,...a]:["Apply",o,...a];return s===null?u:["Power",u,s]}}var If=[{name:"Arcsin",latexTrigger:["\\arcsin"],parse:F("Arcsin")},{name:"Arccos",latexTrigger:["\\arccos"],parse:F("Arccos")},{name:"Arctan",latexTrigger:["\\arctan"],parse:F("Arctan")},{latexTrigger:["\\arctg"],parse:F("Arctan")},{name:"Arccot",latexTrigger:["\\arcctg"],parse:F("Arccot")},{name:"Arcoth",identifierTrigger:"arcoth",parse:F("Arccot")},{name:"Arcsec",latexTrigger:["\\arcsec"],parse:F("Arcsec")},{name:"Arccsc",latexTrigger:["\\arccsc"],parse:F("Arccsc")},{name:"Arsinh",latexTrigger:["\\arsinh"],parse:F("Arsinh")},{name:"Arcosh",latexTrigger:["\\arcosh"],parse:F("Arcosh")},{name:"Artanh",latexTrigger:["\\artanh"],parse:F("Artanh")},{name:"Arsech",latexTrigger:["\\arsech"],parse:F("Arsech")},{name:"Arcsch",latexTrigger:["\\arcsch"],parse:F("Arcsch")},{latexTrigger:["\\ch"],parse:F("Cosh")},{name:"Cosec",latexTrigger:["\\cosec"],parse:F("Cosec")},{name:"Cosh",latexTrigger:["\\cosh"],parse:F("Cosh")},{name:"Cot",latexTrigger:["\\cot"],parse:F("Cot")},{latexTrigger:["\\cotg"],parse:F("Cot")},{name:"Coth",latexTrigger:["\\coth"],parse:F("Coth")},{name:"Csc",latexTrigger:["\\csc"],parse:F("Csc")},{name:"Csch",latexTrigger:["\\csch"],parse:F("Csch")},{latexTrigger:["\\ctg"],parse:F("Cot")},{latexTrigger:["\\cth"],parse:F("Cotanh")},{name:"Sec",latexTrigger:["\\sec"],parse:F("Sec")},{name:"Sech",latexTrigger:["\\sech"],parse:F("Sech")},{name:"Sinh",latexTrigger:["\\sinh"],parse:F("Sinh")},{latexTrigger:["\\sh"],parse:F("Sinh")},{name:"Tan",latexTrigger:["\\tan"],parse:F("Tan")},{latexTrigger:["\\tg"],parse:F("Tan")},{name:"Tanh",latexTrigger:["\\tanh"],parse:F("Tanh")},{latexTrigger:["\\th"],parse:F("Tanh")},{name:"Cos",latexTrigger:["\\cos"],parse:F("Cos")},{name:"Sin",latexTrigger:["\\sin"],parse:F("Sin")}];var kf=[{name:"AlgebraicNumbers",latexTrigger:"\\bar\\Q"},{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"]},{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^-"},{latexTrigger:"\\R^{-}",parse:"NegativeNumbers"},{latexTrigger:"\\R_-",parse:"NegativeNumbers"},{latexTrigger:"\\R_{-}",parse:"NegativeNumbers"},{latexTrigger:"\\R^{\\lt}",parse:"NegativeNumbers"},{name:"PositiveNumbers",latexTrigger:"\\R^+"},{latexTrigger:"\\R^{+}",parse:"PositiveNumbers"},{latexTrigger:"\\R_+",parse:"PositiveNumbers"},{latexTrigger:"\\R_{+}",parse:"PositiveNumbers"},{latexTrigger:"\\R^{\\gt}",parse:"PositiveNumbers"},{name:"NonPositiveNumbers",latexTrigger:"\\R^{0-}"},{latexTrigger:"\\R^{-0}",parse:"NonPositiveNumbers"},{latexTrigger:"\\R^{\\leq}",parse:"NonPositiveNumbers"},{name:"NegativeIntegers",latexTrigger:"\\Z^-"},{latexTrigger:"\\Z^-",parse:"NegativeIntegers"},{latexTrigger:"\\Z^{-}",parse:"NegativeIntegers"},{latexTrigger:"\\Z_-",parse:"NegativeIntegers"},{latexTrigger:"\\Z_{-}",parse:"NegativeIntegers"},{latexTrigger:"\\Z^{\\lt}",parse:"NegativeIntegers"},{name:"PositiveIntegers",latexTrigger:"\\Z^+"},{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"},{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:Bf},{name:"Multiple",serialize:Bf},{name:"Union",latexTrigger:["\\cup"],kind:"infix",precedence:350},{name:"Set",kind:"matchfix",openTrigger:"{",closeTrigger:"}",parse:(e,n)=>z(n)?"EmptySet":(x(n)=="Delimiter"&&V(p(n,2))===","&&(n=p(n,1)),x(n)!=="Sequence"?["Set",n]:["Set",...v(n)]),serialize:(e,n)=>E(["\\lbrace",v(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 Bf(e,n){if(n===null)return"";let i=x(n);if(!i)return"";if(i==="Set")return W(n)===0?"\\emptyset":W(n)===2&&x(p(n,2))==="Condition"?E(["\\left\\lbrace",e.serialize(p(n,1)),"\\middle\\mid",e.serialize(p(n,2)),"\\right\\rbrace"]):E(["\\left\\lbrace",...v(n).map(r=>e.serialize(r)+" ,"),"\\right\\rbrace"]);if(i==="Range")return E(["\\mathopen\\lbrack",e.serialize(p(n,1)),", ",e.serialize(p(n,2)),"\\mathclose\\rbrack"]);if(i==="Interval"){let r=p(n,1),o=p(n,2),s=!1,a=!1;return x(r)==="Open"&&(r=p(r,1),s=!0),x(o)==="Open"&&(o=p(o,1),a=!0),E([`\\mathopen${s?"\\rbrack":"\\lbrack"}`,e.serialize(r),", ",e.serialize(o),`\\mathclose${a?"\\lbrack":"\\rbrack"}`])}let t=e.numericSetStyle(n,e.level);return""}function it(e,n=1){return i=>{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();z(r)&&(r=null),z(t)&&(t=null);let[o,s]=Qp(i,n);if(o&&!s){if(x(o)==="Add"||x(o)==="Subtract"){let a=[],u=[];for(let l of v(o))if(s)u.push(l);else{let f;[f,s]=Nn(l),a.push(f??l)}if(s!==null&&u.length>0)return["Add",wf(i,e,["Add",...a],[{index:s,sub:r,sup:t}]),...u]}else if(x(o)==="Divide"){let a;[a,s]=Nn(p(o,1)),a!==null&&s!==null&&(o=["Divide",a,p(o,2)])}}return wf(i,e,o,[{index:s,sub:r,sup:t}])}}function wf(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=>Yp(r))]}function Yp(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 Qp(e,n=1){let i=e.index,t=!1,r=e.parseExpression({minPrec:266,condition:()=>((e.matchAll(["\\mathrm","<{>","d","<}>"])||e.matchAll(["\\operatorname","<{>","d","<}>"]))&&(t=!0),t)});if(t||(e.index=i,r=e.parseExpression({minPrec:266,condition:()=>(e.match("d")&&(t=!0),t)})),r!==null&&!t)return Nn(r);let o=Xp(e,n);return[r,o[0]??null]}function Xp(e,n=1){e.skipSpace();let i=[],t=D(e.parseSymbol());return t===null?[]:(i.push(t),i)}function Nn(e){let n=x(e),i=p(e,1);if(!i)return[e,null];if(n==="Sequence"&&W(e)===1)return Nn(i);if(n==="Multiply"||n==="InvisibleOperator"){let t=v(e);if(t&&t.length>1){let r=D(t[t.length-2]);if(r==="d"||r==="d_upright")return t.length===2?[null,D(t[1])]:t.length===3?[t[0],D(t[2])]:[["Multiply",...t.slice(0,-2)],D(t[t.length-1])];let[o,s]=Nn(t[t.length-1]);if(o)return[["Multiply",...t.slice(0,-1),o],s]}}else if(n==="Delimiter"){let[t,r]=Nn(i);if(r)return t?[["Delimiter",["Sequence",t],...v(e).slice(1)],r]:[null,r]}else if(n==="Add"){let t=v(e);if(t.length>0){let[r,o]=Nn(t[t.length-1]);if(o){if(r)return[["Add",...t.slice(0,-1),r],o];if(t.length>2)return[["Add",...t.slice(0,-1)],o];if(t.length>2)return[t[0],o]}}}else if(n==="Negate"){let[t,r]=Nn(i);if(r)return[t?["Negate",t]:null,r]}else if(n==="Divide"){let[t,r]=Nn(i);if(r)return[["Divide",t??1,p(e,2)],r]}else{let t=v(e);if(t.length===1){let[r,o]=Nn(t[0]);if(o)return[[x(e),r],o]}}return[e,null]}function Df(e){return(n,i)=>{if(p(i,1)!==null)return e;let t=p(i,2),r=x(t),o=null;r==="Tuple"||r==="Triple"||r==="Pair"||r==="Single"?o=p(t,1):r==="Hold"?o=p(t,1):(o=p(t,1)??"x",t=null),x(o)==="Hold"&&(o=p(o,1));let s=o!==null?D(o):null,a=p(i,1);if(x(a)==="Lambda"&&p(a,1)!==null&&(a=hr(p(a,1),{_:s??"x",_1:s??"x"})),!t)return!s||s==="Nothing"?E([e,"\\!",n.serialize(a)]):E([e,"\\!",n.serialize(a),"\\,\\operatorname{d}",n.serialize(s)]);let u=p(t,2)?D(p(t,2)):null,l=t&&u!=="Nothing"?n.serialize(p(t,2)):"";l.length>0&&(l=`_{${l}}`);let f="",c=p(t,3)?D(p(t,3)):null;return p(t,3)!==null&&c!=="Nothing"&&(f=`^{${n.serialize(p(t,3))}}`),E([e,f,l,"\\!",n.serialize(a),...s&&D(s)!=="Nothing"?["\\,\\operatorname{d}",n.serialize(s)]:[]])}}var Rf=[{kind:"expression",name:"Integrate",latexTrigger:["\\int"],parse:it("Integrate"),serialize:Df("\\int")},{kind:"expression",latexTrigger:["\\iint"],parse:it("Integrate",2)},{kind:"expression",latexTrigger:["\\iiint"],parse:it("Integrate",3)},{kind:"expression",name:"CircularIntegrate",latexTrigger:["\\oint"],parse:it("CircularIntegrate"),serialize:Df("\\oint")},{kind:"expression",latexTrigger:["\\oiint"],parse:it("CircularIntegrate",2)},{kind:"expression",latexTrigger:["\\oiiint"],parse:it("CircularIntegrate",3)}];var Af=[{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 Cf=[{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||!D(i)?null:["Mean",i]}}];var Mf={"(":"(",")":")","[":"\\lbrack","]":"\\rbrack","{":"\\lbrace","}":"\\rbrace","<":"\\langle",">":"\\rangle","|":"\\vert","||":"\\Vert","\\lceil":"\\lceil","\\lfloor":"\\lfloor","\\rceil":"\\rceil","\\rfloor":"\\rfloor"};function Pf(e,n,i){let t=Kp(n,i);if(t===null)return;let r="kind"in n?n.kind:"expression",o=t.latexTrigger;typeof o=="string"&&(e.lookahead=Math.max(e.lookahead,ar(o)));let s=ce(o??"");if(s.length===2&&/[_^]/.test(s[0])&&s[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),Pf(e,{...n,kind:r,name:void 0,serialize:void 0,parse:a,latexTrigger:[s[0],"<{>",s[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 Hs(e,n){let i={lookahead:1,ids:new Map,defs:[]};for(let t of e)Pf(i,t,n);return i}function Kp(e,n){if(!im(e,n))return null;let i={kind:"kind"in e?e.kind:"expression"},t=null;"latexTrigger"in e&&(typeof e.latexTrigger=="string"?t=ce(e.latexTrigger):t=e.latexTrigger);let r=null;"identifierTrigger"in e&&(r=e.identifierTrigger),t!==null&&(i.latexTrigger=dn(t)),r!==null&&(i.identifierTrigger=r),e.name&&(i.name=e.name,i.serialize=em(e,t,r)),i.kind==="matchfix"&&ut(e)&&(i.openTrigger=e.openTrigger,i.closeTrigger=e.closeTrigger),i.kind==="symbol"&&Ca(e)&&(i.precedence=e.precedence??1e4),i.kind==="expression"&&Aa(e)&&(i.precedence=e.precedence??1e4),(i.kind==="prefix"||i.kind==="postfix")&&(ur(e)||No(e))&&(t&&(t[0]==="^"||t[0]==="_")?(i.precedence=720,e.precedence):i.precedence=e.precedence??1e4),i.kind==="infix"&&Eo(e)&&(!t||t[0]!=="^"&&t[0]!=="_"||!e.associativity||e.associativity,i.associativity=e.associativity??"none",i.precedence=e.precedence??1e4);let o=nm(e,t,r);return o&&(i.parse=o),i}function em(e,n,i){if(typeof e.serialize=="function")return e.serialize;let t=e.kind??"expression";if(t==="environment"){let s=e.identifierTrigger??e.name??"unknown";return(a,u)=>E([`\\begin{${s}}`,a.serialize(p(u,1)),`\\end{${s}}`])}if(ut(e)){let s=typeof e.openTrigger=="string"?Mf[e.openTrigger]:dn(e.openTrigger),a=typeof e.closeTrigger=="string"?Mf[e.closeTrigger]:dn(e.closeTrigger);return(u,l)=>E([s,u.serialize(p(l,1)),a])}let r=e.serialize;if(r===void 0&&n&&(r=dn(n)),r)return t==="postfix"?(s,a)=>E([s.serialize(p(a,1)),r]):t==="prefix"?(s,a)=>E([r,s.serialize(p(a,1))]):t==="infix"?(s,a)=>{let u=W(a);if(u===0)return"";let l=e.precedence??1e4;return E(v(a).flatMap((f,c)=>{let d=s.wrap(f,l+1);return c<u-1?[d,r]:[d]}))}:(s,a)=>x(a)?E([r,s.wrapArguments(a)]):r;let o=i??e.name??"unknown";return t==="postfix"?(s,a)=>E([s.serialize(p(a,1)),s.serializeSymbol(o)]):t==="prefix"?(s,a)=>E([s.serializeSymbol(o),s.serialize(p(a,1))]):t==="infix"?(s,a)=>E([s.serialize(p(a,1)),s.serializeSymbol(o),s.serialize(p(a,2))]):(s,a)=>x(a)?E([s.serializeSymbol(o),s.wrapArguments(a)]):s.serializeSymbol(o)}function nm(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(o,s)=>{let a=o.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(o,s)=>{let a=o.parseArguments("enclosure",s);return a===null?r:[r,...a]}}if(t==="symbol"){let r=e.parse??e.name??i;if(r)return(o,s)=>r}if(t==="prefix"){let r=e.parse??e.name??i;if(r){let o=e.precedence??1e4;return(s,a)=>{let u=s.parseExpression({...a??[],minPrec:o});return u===null?null:[r,u]}}}if(t==="postfix"){let r=e.parse??e.name;if(r)return(o,s)=>s===null?null:[r,s]}if(t==="infix"){if(/[_^]/.test(n?.[0]??"")){let o=e.name??e.parse;return(s,a)=>[o,M(p(a,1)),M(p(a,2))]}let r=e.parse??e.name??i;if(r){let o=e.precedence??1e4,s=e.associativity??"none";return s==="none"?(a,u,l)=>{if(u===null)return null;let f=M(a.parseExpression({...l,minPrec:o}));return[r,u,f]}:s==="left"?(a,u,l)=>{if(u===null)return null;let f=M(a.parseExpression({...l,minPrec:o+1}));return typeof r!="string"?[r,u,f]:[r,u,f]}:s==="right"?(a,u,l)=>{if(u===null)return null;let f=M(a.parseExpression({...l,minPrec:o}));return typeof r!="string"?[r,u,f]:[r,u,f]}:(a,u,l)=>{if(u===null)return null;let f=M(a.parseExpression({...l,minPrec:o}));return typeof r!="string"?[r,u,f]:Ri(r,u,f)}}}if(t==="matchfix"){let r=e.parse??e.name;if(r)return(o,s)=>z(s)?null:[r,s]}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 im(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=dn(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"||!he(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"]}):he(e.name)||n({severity:"warning",message:["invalid-dictionary-entry",e.name,"The 'name' property must be a valid identifier"]})),ut(e)){if("latexTrigger"in e||"identifierTrigger"in ur)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(Eo(e)||No(e)||ur(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!ut(e)&&!Ma(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 zt={symbols:cl,algebra:pf,arithmetic:Nf,calculus:Rf,complex:Af,core:dl,"linear-algebra":Sf,logic:Tf,relop:Jn,other:_f,physics:[{name:"mu0",kind:"symbol",latexTrigger:"\\mu_0"}],sets:kf,statistics:Cf,trigonometry:If};function Of(e="all"){if(e==="all"){let n=[];for(let i of Object.keys(zt))zt[i]&&n.push(...zt[i]);return n}return zt[e]?Object.freeze([...zt[e]]):[]}var tm={"\\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"},rm={"\\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 Lf(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=ln.findIndex(o=>o[1]===i);return r>=0?(e.nextToken(),ln[r][0]):e.matchChar()??e.nextToken()}function Xr(e){let n=Ws(e),i=rm[e.peek]??null;if(i){if(e.nextToken(),!e.match("<{>"))return null;let o=Xr(e);if(o===null||!e.match("<}>"))return null;n=`${o}${i}`}if(n===null){for(n="";!e.atEnd;){let o=e.peek;if(o==="<}>"||o==="_"||o==="^")break;let s=Lf(e,{toplevel:!1});if(s===null)return null;n+=s}for(;!e.atEnd&&/\d/.test(e.peek);)n+=e.nextToken()}for(;!e.atEnd;)if(e.match("\\degree"))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 o=e.match("<{>"),s=Xr(e);if(o&&!e.match("<}>")||s===null)return null;r.push(s)}else if(e.match("^")){let o=e.match("<{>"),s=Xr(e);if(o&&!e.match("<}>")||s===null)return null;t.push(s)}else break;return t.length>0&&(n+="__"+t.join("")),r.length>0&&(n+="_"+r.join("")),n}function Ws(e){let n=tm[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+=Xr(e),i===null||!e.match("<}>")?null:n==="_upright"&&i.length>1?i:i+n}return null}function Js(e){let n=e.index,i=Ws(e);return i===null||he(i)?null:e.error(["invalid-identifier",{str:Ye(i)}],n)}function Ut(e){if(/^[a-zA-Z]$/.test(e.peek)||/^\p{XIDS}$/u.test(e.peek))return e.nextToken();let n=Ws(e);if(!n){for(n="";!e.atEnd&&Zi.test(n+e.peek);)n+=e.nextToken();n||(n=null)}let i=e.index;return n??(n=Lf(e,{toplevel:!0})),n&&(n=n.normalize(),he(n))?n:(e.index=i,null)}var om={"(":["\\lparen","("],")":["\\rparen",")"],"[":["\\lbrack","\\[","["],"]":["\\rbrack","\\]","]"],"<":["<","\\langle"],">":[">","\\rangle"],"{":["\\{","\\lbrace"],"}":["\\}","\\rbrace"],":":[":","\\colon"],"|":["|","\\|","\\lvert","\\rvert"],"||":["||","\\Vert","\\lVert","\\rVert"]},Qs={"\\left":"\\right","\\bigl":"\\bigr","\\Bigl":"\\Bigr","\\biggl":"\\biggr","\\Biggl":"\\Biggr","\\big":"\\big","\\Big":"\\Big","\\bigg":"\\bigg","\\Bigg":"\\Bigg"},Xs={"(":")","[":"]","|":"|","\\{":"\\}","\\[":"\\]","\\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"},Ks=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=ce(this.options.positiveInfinity),this._negativeInfinityTokens=ce(this.options.negativeInfinity),this._notANumberTokens=ce(this.options.notANumber),this._decimalSeparatorTokens=ce(this.options.decimalSeparator),this._wholeDigitGroupSeparatorTokens=[],this._fractionalDigitGroupSeparatorTokens=[],this.options.digitGroupSeparator&&(typeof this.options.digitGroupSeparator=="string"?(this._wholeDigitGroupSeparatorTokens=ce(this.options.digitGroupSeparator),this._fractionalDigitGroupSeparatorTokens=this._wholeDigitGroupSeparatorTokens):Array.isArray(this.options.digitGroupSeparator)&&(this._wholeDigitGroupSeparatorTokens=ce(this.options.digitGroupSeparator[0]),this._fractionalDigitGroupSeparatorTokens=ce(this.options.digitGroupSeparator[1]))),this._exponentProductTokens=ce(this.options.exponentProduct),this._beginExponentMarkerTokens=ce(this.options.beginExponentMarker),this._endExponentMarkerTokens=ce(this.options.endExponentMarker),this._truncationMarkerTokens=ce(this.options.truncationMarker),this._imaginaryUnitTokens=ce(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 dn(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,o]of this.lookAhead())for(let s of t)s.latexTrigger===o&&i.push([s,r]);for(let r of t)if(r.identifierTrigger){let o=sm(this,r.identifierTrigger);o>0&&i.push([r,o])}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,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"],n=!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"],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 s="";for(;o.includes(this.peek);)s+=this.nextToken();if(!n&&this.match("."))for(s+=".";o.includes(this.peek);)s+=this.nextToken();let a=n?Number.parseInt(s,r):Number.parseFloat(s);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 o=this.matchAny(["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"]);if(!o)break;t+=o,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=Qs[this.peek];return r&&this.nextToken(),n==="||"&&this.matchAll(["|","|"])?(this.addBoundary(["|","|"]),!0):(om[n]??[n]).includes(this.peek)?(n=this.nextToken(),i=Xs[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(x(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=[],o=this.peek;for(;o!=="&"&&o!=="\\\\"&&o!=="\\cr"&&!this.atBoundary;)t=this.parseExpression({minPrec:0,condition:s=>{let a=s.peek;return a==="&"||a==="\\\\"||a==="\\cr"}}),t!==null?r.push(t):(r.push(["Error",["'unexpected-token'",o]]),this.nextToken()),this.skipSpace(),o=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 o=r.parse(this,n);return this.skipSpace(),this.matchBoundary()?o!==null?this.decorate(o,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 o=this.index;this.skipVisualSpace(),this.matchAll(r)&&(this.skipVisualSpace(),/^[0-9]$/.test(this.peek)?t=!1:this.index=o)}}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=Ff(this);if(r!==null){if(t=this.parseDecimalDigits("fraction"),!t)return`(${r})`;let o=Ff(this);if(o!==null)return`(${r}${t}${o})`}}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="",o=!1;if(this.match(".")||this.matchAll(this._decimalSeparatorTokens)){let f=this.peek;(/^[\d]$/.test(f)||um(this))&&(o=!0,t="0")}else t=this.parseDecimalDigits("whole");if(!t)return this.index=n,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 f=this.parseRepeatingDecimal();f&&(r+=f,u=!0),this.match("\\ldots")||this.matchAll(this._truncationMarkerTokens)}if(a&&!r)return this.index=s,t.length<10?Ys(i*parseInt(t,10)):{num:i<0?"-"+t:t};let l=this.parseExponent();if(!a&&!l&&t.length<10)return Ys(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]]:Ys(i*f);let c=parseInt(r,10),d=r.length,m=f*10**d+c,b=10**d;return l?["Multiply",["Rational",i*m,b],["Power",10,l]]:["Rational",i*m,b]}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 o=t.parse(this,{...n,minPrec:t.precedence+1});if(o!==null)return o}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,o]of this.peekDefinitions("infix"))if(r.precedence>=i.minPrec){this.index=t+o;let s=r.parse(this,n,i);if(s!==null)return s}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:kn(r)??[];if(n==="implicit"){if(x(r)==="Delimiter"){let s=p(r,1);return x(s)==="Sequence"?v(s):s===null?[]:[s]}if(r!==null)return[r];let o=this.parseExpression({...i,minPrec:390});return o===null?null:[o]}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 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=i,!this.atEnd)continue;return null}}let s=t.parse(this,o??"Nothing");if(s!==null)return s}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[o,s]of r)if(this.index=i+s,typeof o.parse=="function"){if(t=o.parse(this,n),t!==null)return t}else return o.name;return this.index=i,null}parseFunction(n){if(this.atTerminator(n))return null;let i=this.index,t=null;for(let[o,s]of this.peekDefinitions("function"))if(this.index=i+s,typeof o.parse=="function"){if(t=o.parse(this,n),t!==null)return t}else{t=o.name;break}if(t===null&&(this.index=i,t=Ut(this),!this.isFunctionOperator(t)))return this.index=i,null;do{let o=this.parsePostfixOperator(t,n);if(o===null)break;t=o}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,o]of this.peekDefinitions("symbol"))if(this.index=i+o,typeof r.parse=="function"){let s=r.parse(this,n);if(s!==null)return s}else return r.name;this.index=i;let t=Ut(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=[],o=i;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",i);r.push(a)}else if(this.match("^"))if(o=this.index,this.match("_")||this.match("^"))t.push(this.error("syntax-error",o));else{let a=this.parseGroup()??this.parseToken();if(a===null)return this.error("missing",i);t.push(a)}o=this.index,this.skipSpace()}if(t.length===0&&r.length===0)return this.index=i,n;let s=n;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(t.length>0){let a=[...this.getDefs("infix")].filter(u=>u.latexTrigger==="^");if(a){let u=t.filter(l=>!z(l));if(u.length!==0){let l=u.length===1?u[0]:["List",...u],f=["Superscript",s,l];for(let c of a)if(typeof c.parse=="function"?s=c.parse(this,f,{minPrec:0}):s=f,s!==null)break}}}return s===null&&(this.index=i),s}parsePostfixOperator(n,i){if(n===null||this.atEnd)return null;let t=this.index;for(let[r,o]of this.peekDefinitions("postfix")){this.index=t+o;let s=r.parse(this,n,i);if(s!==null)return s}return this.index=t,null}parseSyntaxError(){let n=this.index;if(this.peek==="^")return this.index+=1,["Superscript",this.error("missing",n),M(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=Js(this);if(r!==null)return r;if(r=Ut(this),r!==null)return this.error(["unexpected-identifier",{str:r}],t);let o=this.peek;if(!o)return this.error("syntax-error",n);if(am(this))return this.error("unexpected-delimiter",n);if(o[0]!=="\\")return this.error(["unexpected-token",{str:dn(o)}],n);let s=this.nextToken();if(this.skipSpaceTokens(),s==="\\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:dn(s)}],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)??Js(this)),i!==null){i=this.decorate(i,t);let r=null,o=this.index;do{if(r=this.parsePostfixOperator(i,n),i=r??i,this.index===o&&r!==null){this.index;break}o=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),z(t)&&(t=null)),t!==null){let r=!1;for(;!r&&!this.atTerminator(n);){this.skipSpace();let o=this.parseInfixOperator(t,n);if(o===null&&this.peekDefinitions("operator").length===0){let s=this.parseExpression({...n,minPrec:390});s!==null?x(t)==="InvisibleOperator"?x(s)==="InvisibleOperator"?o=["InvisibleOperator",...v(t),...v(s)]:o=["InvisibleOperator",...v(t),s]:x(s)==="InvisibleOperator"?o=["InvisibleOperator",t,...v(s)]:o=["InvisibleOperator",t,s]:o===null&&(o=this.options.parseUnexpectedToken?.(t,this)??null)}o!==null?t=o: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 sm(e,n){let i=e.index,t=Ut(e)?.trim();if(t===null)return 0;let r=t!==n?0:e.index-i;return e.index=i,r}function am(e){let n=e.peek;return Object.values(Xs).includes(n)||Xs[n]?(e.nextToken(),!0):Qs[n]||Object.values(Qs).includes(n)?(e.nextToken(),e.nextToken(),!0):!1}function Ff(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 um(e){let n=e.peek;return n==="\\overline"||n==="\\overset"||n==="\\wideparent"||n==="\\overarc"||n==="("||n==="\\left"}function qf(e,n,i){let t=new Ks(ce(e),n,i),r=t.parseExpression();if(!t.atEnd){let o=t.parseSyntaxError();r=r!==null?["Sequence",r,o]:o}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 Ys(e){return e===0?{num:"0"}:Number.isInteger(e)&&Math.abs(e)<P?e:{num:e.toString()}}var $f=["\\varphi -> \\frac{1+\\sqrt{5}}{2}",lm,fm,e=>{let n=Ae(e);return n?{value:n,because:"expand"}:void 0},e=>{if(e.operator==="Add")return{value:Z(...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:se(...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.operator==="Power")return{value:e.op1.pow(e.op2),because:"power"};if(e.operator==="Root")return{value:e.op1.root(e.op2),because:"root"};if(e.operator==="Sqrt")return{value:e.op1.sqrt(),because:"sqrt"}},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(!jo(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=Bt(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"}},"\\arsinh(x) -> \\ln(x+\\sqrt{x^2+1})","\\arcosh(x) -> \\ln(x+\\sqrt{x^2-1})","\\artanh(x) -> \\frac{1}{2}\\ln(\\frac{1+x}{1-x})","\\operatorname{arcoth}(x) -> \\frac{1}{2}\\ln(\\frac{x+1}{x-1})","\\arsech(x) -> \\ln(\\frac{1+\\sqrt{1-x^2}}{x})","\\operatorname{arccsch}(x) -> \\ln(\\frac{1}{x} + \\sqrt{\\frac{1}{x^2}+1})",Yl];function lm(e){if(!qn(e)&&!Io(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=$n(e)??e,Be(e.operator),e.nops===2&&!e.op2.is(0)){let o=$n(i.function(e.operator,[e.op1.sub(e.op2),i.Zero]));i.costFunction(o)<i.costFunction(e)&&(e=o)}if(!e.isSame(n))return{value:e,because:"simplify-relational-operator"}}function fm(e){return e.operator!=="List"||!e.ops.every(i=>Io(i)||qn(i))?void 0:{value:e.engine.function("List",e.ops.map(i=>i.simplify())),because:"simplify-system-of-equations"}}var tt=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;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??_o;i==="machine"&&(i=Math.floor(rn)),this._bignum=Q.clone({precision:i}),this._precision=i,this.tolerance=n?.tolerance??"auto",this._angularUnit="rad",this.Zero=new we(this,0),this.One=new we(this,1),this.Half=new we(this,{rational:[1,2]}),this.NegativeOne=new we(this,-1),this.Two=new we(this,2),this.NaN=new we(this,Number.NaN),this.PositiveInfinity=new we(this,Number.POSITIVE_INFINITY),this.NegativeInfinity=new we(this,Number.NEGATIVE_INFINITY),this.I=new we(this,{im:1}),this.ComplexInfinity=new we(this,{re:1/0,im:1/0}),this.reset(),this.context={assumptions:new nt,timeLimit:2,memoryLimit:1,recursionLimit:1024,iterationLimit:Number.POSITIVE_INFINITY};for(let r of e.getStandardLibrary("domains"))Vs(this,r);let t=n?.ids??e.getStandardLibrary();for(let r of t)Vs(this,r);for(let r of Object.keys(this._commonSymbols)){let o=new mi(this,r,{canonical:!0});o.bind(),this._commonSymbols[r]=o}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(),Tl(this)}static getStandardLibrary(n="all"){return $s(n)}static getLatexDictionary(n="all"){return Of(n)}get latexDictionary(){return this._latexDictionaryInput??e.getLatexDictionary()}set latexDictionary(n){this._latexDictionaryInput=n,this._indexedLatexDictionary=Hs(n,i=>{throw Error(typeof i.message=="string"?i.message:i.message.join(","))})}get indexedLatexDictionary(){return this._indexedLatexDictionary??(this._indexedLatexDictionary=Hs(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,o]of t.ids)o.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=rn),n==="auto"&&(n=_o);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,rn),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(){let n=this.context;for(;n;){if(n.timeLimit!==void 0)return n.timeLimit;n=n.parentScope??null}return 2}get iterationLimit(){let n=this.context;for(;n;){if(n.iterationLimit!==void 0)return n.iterationLimit;n=n.parentScope??null}return 1024}get recursionLimit(){let n=this.context;for(;n;){if(n.recursionLimit!==void 0)return n.recursionLimit;n=n.parentScope??null}return 1024}get tolerance(){return this._tolerance}set tolerance(n){n==="auto"&&(this._precision<=rn?n=Qn:n=-1),(!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 Q?n.isPositive()&&n.lte(this._bignumTolerance)||n.isNegative()&&n.gte(this._negBignumTolerance)||n.isZero()?0:n:n instanceof L&&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 Q&&(n=n.toNumber()),i instanceof Q&&(i=i.toNumber()),new L(n,i)}_numericValue(n){if(n instanceof $)return n.asExact??n;let i=r=>this.bignum(r),t=this._precision>rn?r=>new ti(r,i):r=>new ri(r,i);if(typeof n=="number")return Number.isInteger(n)?new j(n,t,i):t(n);if(typeof n=="bigint")return new j(n,t,i);if(In(n))return new j({rational:n},t,i);if(n instanceof Q)return n.isInteger()&&n.e<=$a?new j(X(n.toString()),t,i):t(n);if(n instanceof L)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 Q&&n.re.isInteger()?new j({rational:[X(n.re.toString()),BigInt(1)]},t,i):typeof n.re=="number"&&Number.isInteger(n.re)?new j({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>=P))throw Error("Unexpected value for radical part:"+n.radical);return n.rational&&ee(n.rational)&&(!Number.isInteger(n.rational[0])||!Number.isInteger(n.rational[1]))?t(n):new j(n,t,i)}throw Error("Unexpected value")}get costFunction(){return this._cost??zs}set costFunction(n){typeof n!="function"&&(this._cost=zs),this._cost=n}lookupSymbol(n,i,t){if(!this.strict){for(t??(t=this.context??void 0);t;){let o=t.ids?.get(n);if(o&&o instanceof le)return o;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[o,s]of t.ids)if(s instanceof le&&s.wikidata===i)return s}t=t.parentScope}for(t=r;t;){let o=t.ids?.get(n);if(o instanceof le)return o;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 Ve)return t;i=i.parentScope}}defineSymbol(n,i){if(!this.context)throw Error("Symbol cannot be defined: no scope available");if(n.length===0||!he(n))throw Error(`Invalid identifier "${n}": ${Ye(n)}}`);return this._defineSymbol(n,i)}_defineSymbol(n,i){var r;(r=this.context).ids??(r.ids=new Map);let t=new le(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||!he(n))throw Error(`Invalid identifier "${n}": ${Ye(n)}}`);return this._defineFunction(n,i)}_defineFunction(n,i){var r;(r=this.context).ids??(r.ids=new Map);let t=Jr(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={timeLimit:this.context.timeLimit,memoryLimit:this.context.memoryLimit,recursionLimit:this.context.recursionLimit,iterationLimit:this.context.iterationLimit,...n??{},parentScope:this.context,assumptions:new nt(this.context.assumptions)},this}popScope(){if(!this.context)throw Error("No scope available");return this.context=this.context.parentScope??null,this.context,this.context,this}swapScope(n){let i=this.context;return this.context=n,this.context,this.context,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=`${uf}[undefined]${qt}`;if(t===0?console.group("current scope - level 0"):console.groupCollapsed(i.parentScope?`scope - level ${t}`:`root scope - level ${t}`),i.ids){let o=0;for(let[s,a]of i.ids){let u=`${lf}${s}${qt}`;try{if(a instanceof le){let l=a.value?.isValid?a.value.toString():a.value?`${js}${a.value.toString()}${qt}`:r;console.info(`${u}: ${a.type?.toString()??r} = ${l}`)}else a instanceof Ve&&(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()}`));o===11&&console.groupCollapsed(`... and ${i.ids.size-o} more`),o+=1}catch(l){console.info(`${u}: ${js}${l.message}${qt}`)}}o>=11&&console.groupEnd()}if(i.assumptions){let o=[...i.assumptions.entries()].map(([s,a])=>`${s}: ${a}`);if(o.length>0){console.groupCollapsed(`${o.length} assumptions)`);for(let s of o)console.info(s);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 le?i.constant||(i.value=void 0):i instanceof Ve&&(i.evaluate=void 0,i.canonical=void 0)}declare(n,i){if(typeof n!="string"||i===void 0){for(let[s,a]of Object.entries(n))this.declare(s,a);return this}let[t,r]=es(n);if(r!==void 0)throw Error(`Unexpected arguments with ${n}. Use 'ce.assign()' instead to assign a value, or a use a function definition with 'ce.declare()'.`);if(t==="Nothing")return this;if(this.context?.ids?.get(t)){let s=this.context.ids.get(t);if(this.generation+=1,s instanceof le&&s.inferredType){try{if(dt(i))s.update(i);else{if(pt(i))throw new Error("Cannot redeclare a symbol as a function");s.type=k(i),s.inferredType=!1}}catch(a){console.error([`
|
|
97
97
|
Invalid definition for ${t}`,a.message].join(`
|
|
98
98
|
| `)+`
|
|
99
|
-
`)}return this}throw s instanceof Ve?Error(`The symbol "${t}" has already been declared in the current scope as a function with signature ${s.signature.toString()}.`):Error(`The symbol "${t}" has already been declared in the current scope.`)}let o=i;if(!o)throw Error(`Expected a definition for ${t}`);if(typeof o=="object"&&"type"in o&&(typeof o.type=="string"&&g(o.type,"function")||o.type&&Sn(o.type)))throw new Error(`Invalid definition for "${t}": use a FunctionDefinition to define a function or use 'ce.declare("${t}", "function")'`);if(dt(o))return this.defineSymbol(t,o),this;if(pt(o))return this.defineFunction(t,o),this;{let s=k(o);if(!Sn(s))throw Error([`Invalid argument for "${t}"`,
|
|
100
|
-
| `))
|
|
101
|
-
|
|
99
|
+
`)}return this}throw s instanceof Ve?Error(`The symbol "${t}" has already been declared in the current scope as a function with signature ${s.signature.toString()}.`):Error(`The symbol "${t}" has already been declared in the current scope.`)}let o=i;if(!o)throw Error(`Expected a definition for ${t}`);if(typeof o=="object"&&"type"in o&&(typeof o.type=="string"&&g(o.type,"function")||o.type&&Sn(o.type)))throw new Error(`Invalid definition for "${t}": use a FunctionDefinition to define a function or use 'ce.declare("${t}", "function")'`);if(dt(o))return this.defineSymbol(t,o),this;if(pt(o))return this.defineFunction(t,o),this;{let s=k(o);if(!Sn(s))throw typeof o=="object"&&"N"in o?Error([`Invalid argument for "${t}"`,"Use `evaluate` handler instead of `N`"].join(`
|
|
100
|
+
| `)):Error([`Invalid argument for "${t}"`,o.toString(),"Use a type, a `FunctionDefinition` or a `SymbolDefinition`"].join(`
|
|
101
|
+
| `));if(s==="function")this.defineFunction(t,{signature:"...any -> any"});else if(at(s))this.defineFunction(t,{signature:s});else{if(r)throw Error(`Unexpected arguments with type for "${t}"`);this.defineSymbol(t,{type:s})}}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]=es(n);if(t==="Nothing")return this;let o=i;if(typeof o=="boolean"&&(o=o?this.True:this.False),typeof o=="string"){let u=o.trim();u.startsWith("$$")&&u.endsWith("$$")?o=this.parse(u.slice(2,-2),{canonical:!1}):u.startsWith("$")&&u.endsWith("$")?o=this.parse(u.slice(1,-1),{canonical:!1}):o=this.string(o)}let s=this.lookupSymbol(t);if(s){if(s.constant)throw Error(`Cannot assign a value to the constant "${t}"`);if(!s.inferredType&&ea(o))throw Error(`Cannot assign a function to symbol "${t}"`);let u=s.scope;if(u?.ids?.delete(s.name),!r&&!ea(o))return o==null?s.value=void 0:s.value=this.box(o),u?.ids?.set(s.name,s),this.generation+=1,this}let a=this.lookupFunction(t);if(a){let u=a.scope;if(u?.ids?.delete(a.name),o==null)return this;if(typeof o=="function"){let d=this.swapScope(u);return this.defineFunction(t,{evaluate:o}),this.swapScope(d),this}if(r&&ea(o))throw Error(`Unexpected arguments for "${t}"`);let l=r?this.box(["Function",o,...r]):this.box(o);if(!l.isValid)throw Error(`Invalid function ${l.toString()}`);let f=this.swapScope(u),c=$e(l);return this.defineFunction(t,{evaluate:d=>c(d)}),this.swapScope(f),this.generation+=1,this}if(o==null)return this.declare(t,{inferred:!0,type:"unknown"}),this;if(typeof o=="function")return this.defineFunction(t,{evaluate:o}),this;if(o instanceof Y&&(o.type==="function"||at(o.type)))return this.defineFunction(t,{evaluate:o}),this;if(Array.isArray(o)||o instanceof Y||r){let u=this.box(o,{canonical:!1});if(u.operator==="Function")return u=this.box(["Function",...u.ops,...(r??[]).map(f=>this.symbol(f))]),this.defineFunction(t,{evaluate:u}),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}),this;if(r&&r.length>0)return this.pushScope(),u=this.box(["Function",u,...r]),this.popScope(),this.defineFunction(t,{evaluate:u}),this;this.pushScope(),o=u.evaluate(),this.popScope()}return this.defineSymbol(t,{value:o}),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}":
|
|
102
|
+
${r.toString()}`)}return this._cache[n]?.value}box(n,i){return fn(this,n,i)}function(n,i,t){return Wr(this,n,i,t)}error(n,i){let t;typeof n=="string"?t=this.string(n):t=this._fn("ErrorCode",n.map(s=>this.string(s)));let r;i&&ft(i)?r=this._fn("LatexString",[this.string(Fn(i))]):typeof i=="string"&&i.length>0&&(r=this.string(i));let o=[this.box(t)];return r&&o.push(r),new Qe(this,"Error",o,{canonical:!1})}typeError(n,i,t){return i?this.error(["incompatible-type",n.toString(),i.toString()],t):this.error(["incompatible-type",n.toString()],t)}hold(n){return this._fn("Hold",[this.box(n,{canonical:!1})])}tuple(...n){return new Qe(this,"Tuple",n.map(i=>typeof i=="number"?this.number(i):i.canonical),{canonical:!0})}string(n,i){return new yn(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&&!he(n)){let r=i?.metadata?.latex;return this.error(["invalid-identifier",Ye(n)],r?`$$${r}$$`:n)}if(i?.metadata?.latex!==void 0&&i.canonical!==!0)return new mi(this,n,i);let t=this._commonSymbols[n];return t&&(!i?.metadata?.wikidata||!t.wikidata||t.wikidata===i.metadata.wikidata)?t:i.canonical===!0?af(this,n):new mi(this,n,i)}number(n,i){var o;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&&In(n))return this._fn("Rational",[this.number(n[0]),this.number(n[1])],{...t,canonical:!1});if(n=Qr(this,n),t===void 0){if(typeof n=="number"){let s=n;if(s===1)return this.One;if(s===0)return this.Zero;if(s===-1)return this.NegativeOne;if(s===2)return this.Two;if(Number.isInteger(s)&&this._commonNumbers[s]!==void 0)return(o=this._commonNumbers)[s]??(o[s]=new we(this,n)),this._commonNumbers[s];if(Number.isNaN(s))return this.NaN;if(!Number.isFinite(s))return s<0?this.NegativeInfinity:this.PositiveInfinity}else if(n instanceof $){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 we(this,n,{metadata:t})}rules(n,i){return Pt(this,n,i)}getRuleSet(n){if(n??(n="standard-simplification"),n==="standard-simplification")return this.cache("standard-simplification-rules",()=>Pt(this,$f,{canonical:!0}));if(n==="solve-univariate")return this.cache("univariate-roots-rules",()=>Pt(this,Gu));if(n==="harmonization")return this.cache("harmonization-rules",()=>Pt(this,zu))}_fn(n,i,t){let r=t?.canonical??!0;return new Qe(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:o=>this.lookupFunction(o)?"function":"symbol",parseUnexpectedToken:(o,s)=>null,preserveLatex:!1},r=qf(Fn(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 nt,this.context.assumptions)}ask(n){let i=this.box(n,{canonical:!1}),t=[];for(let[r,o]of this.assumptions){let s=i.match(r);s!==null&&o===!0&&t.push(s)}return t}verify(n){return!1}assume(n){try{let i=ft(n)?this.parse(n,{canonical:!1}):this.box(n,{canonical:!1});return this.generation+=1,Uu(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 le?i.value=void 0:i instanceof Ve&&(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 ea(e){return!!(typeof e=="function"||e instanceof Y&&g(e.type,"function"))}function na(e){return e.fg===void 0&&e.bg===void 0&&(e.weight===void 0||e.weight==="normal")&&(e.italic===void 0||e.italic===!1)}var Kr=class{constructor(n){this.width=n?.width,this.indent=n?.indent??0}renderBlock(n){let i="spans"in n?this.renderSpans(n.spans):n.blocks.map(t=>this.renderBlock(t)).join(`
|
|
102
103
|
`);return n.tag==="paragraph"?`
|
|
103
|
-
${
|
|
104
|
+
${jt(i,this.width).join(`
|
|
104
105
|
`)}
|
|
105
106
|
|
|
106
|
-
`:n.tag==="blockquote"?
|
|
107
|
-
`):n.tag==="note"?
|
|
108
|
-
`):n.tag==="warning"?
|
|
109
|
-
`):n.tag==="error"?
|
|
110
|
-
`):i}renderSpans(n){return n.map(i=>this.renderSpan(i)).join("")}display(n){Array.isArray(n)?console.info(this.renderSpans(n)):console.info(this.renderBlock(n))}},
|
|
107
|
+
`:n.tag==="blockquote"?jt(i,(this.width??40)-4).map(r=>`> ${r}`).join(`
|
|
108
|
+
`):n.tag==="note"?jt(i,(this.width??40)-3).map(r=>`| ${r}`).join(`
|
|
109
|
+
`):n.tag==="warning"?jt(i,(this.width??40)-3).map(r=>`!! ${r}`).join(`
|
|
110
|
+
`):n.tag==="error"?jt(i,(this.width??40)-3).map(r=>`XX ${r}`).join(`
|
|
111
|
+
`):i}renderSpans(n){return n.map(i=>this.renderSpan(i)).join("")}display(n){Array.isArray(n)?console.info(this.renderSpans(n)):console.info(this.renderBlock(n))}},ia=class extends Kr{renderSpan(n){let i=typeof n.content=="string"?n.content:this.renderSpans(n.content);return i=i.replace(/[\u2551\u2502\u2503\u2506\u2507\u250a\u250b]/g,"|").replace(/—/g,"--").replace(/–/g,"-").replace(/‘|’/g,"'").replace(/“|”/g,'"').replace(/…/g,"..."),n.italic?n.weight==="bold"?i=`***${i}***`:i=`*${i}*`:n.weight==="bold"&&(i=`**${i}**`),n.mono&&(i=`\`${i}\``),i}constructor(n){super(n)}},eo=class extends Kr{constructor(i){super();this.state={};this.colorMode=i.mode}renderBlock(i){return super.renderBlock(i)}getStyleCodes(i){let t=[],r=i,o=this.state;return na(r)&&!na(o)?(t.push(0),o.fg=void 0,o.bg=void 0,o.weight=void 0,o.italic=void 0):(o.weight!==r.weight&&(r.weight==="bold"?(o.weight==="thin"&&t.push(22),t.push(1)):r.weight==="thin"?(o.weight==="bold"&&t.push(22),t.push(2)):o.weight!==void 0&&o.weight!=="normal"&&t.push(22)),o.italic!==r.italic&&(r.italic===!0?t.push(3):o.italic&&t.push(23)),o.bg!==r.bg&&(r.bg!==void 0?t.push(...df(r.bg,this.colorMode)):o.bg!==void 0&&t.push(49)),o.fg!==r.fg&&(r.fg!==void 0?t.push(...cf(r.fg,this.colorMode)):o.fg!==void 0&&t.push(39))),this.state.fg=r.fg,this.state.bg=r.bg,this.state.weight=r.weight,this.state.italic=r.italic,t}renderSpan(i){if(typeof i.content=="string"&&/^\s+$/.test(i.content)&&this.state.bg===void 0)return i.content;let t=this.getStyleCodes(i),r=typeof i.content=="string"?i.content:this.renderSpans(i.content);return i.mono&&t.push(7),t.length>0&&(r=`\x1B[${t.join(";")}m${r}`),i.mono&&(r=`${r}\x1B[27m`),r}renderSpans(i){let t=i.map(r=>this.renderSpan(r)).join("");return na(this.state)||(t+="\x1B[0m"),t}};var Vf={none:new ia,basic:new eo({mode:"basic"}),full:new eo({mode:"full"})}[cm()],jt=(e,n)=>{if(n===void 0||n<=0)return[e];let i=/\x1B\[[0-9;]*[A-Za-z]/g,t=[],r=0,o;for(;o=i.exec(e);){let a=o[0],u=o.index;u!=r&&t.push(["string",e.slice(r,u)]),t.push(["ansi",a]),r=u+a.length}r!=e.length-1&&t.push(["string",e.slice(r,e.length)]);let s=0;return t.reduce((a,[u,l])=>{if(u==="string")if(s+l.length>n)for(;l.length;){let f=l.slice(0,n-s),c=l.slice(n-s,l.length);a[a.length-1]+=f,s+=f.length,l=c,l.length&&(a.push(""),s=0)}else a[a.length-1]+=l,s+=l.length;else a[a.length-1]+=l;return a},[""])};function cm(){if(typeof process>"u")return globalThis.navigator.userAgentData&&navigator.userAgentData.brands.find(({brand:n})=>n==="Chromium")?.version>93?"full":"none";if(process.env.JEST_WORKER_ID!==void 0||process.env.NO_COLOR||process.env.NODE_DISABLE_COLORS||process.env.FORCE_COLOR==="0"||process.env.FORCE_COLOR==="false")return"none";if(process.env.FORCE_COLOR==="1"||process.env.FORCE_COLOR==="true"||typeof process.env.FORCE_COLOR=="string"&&process.env.FORCE_COLOR.length===0)return"basic";if(process.env.FORCE_COLOR==="2")return"256";if(typeof process.env.FORCE_COLOR=="string"&&process.env.FORCE_COLOR.length===0)return"basic";if(process.env.FORCE_COLOR==="3")return"full";if(process.stdout&&!process.stdout.isTTY||process.stderr&&!process.stderr.isTTY)return"none";if("CI"in process.env)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(e=>e in process.env)?"basic":"GITHUB_ACTIONS"in process.env||"GITEA_ACTIONS"in process.env?"full":"none";if("TERM_PROGRAM"in process.env)switch(process.env.TERM_PROGRAM){case"iTerm.app":return Number.parseInt((process.env.TERM_PROGRAM_VERSION||"").split(".")[0],10)>=3?"full":"256";case"Apple_Terminal":return"256"}if(process.env.COLORTERM==="truecolor"||process.env.COLORTERM==="24bit")return"full";if(typeof process.env.TERM=="string"){let e=process.env.TERM.toLowerCase();if(e==="dumb")return"none";if(/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(e))return"basic";if(e==="xterm-kitty")return"full";if(/-256(color)?$/i.test(e))return"256"}return"COLORTERM"in process.env,"basic"}var no=class{constructor(n,i=0){this.s=n,this.pos=i}atEnd(){return this.pos>=this.s.length}peek(){return this.s[this.pos]}consume(){return this.s[this.pos++]}match(n){let i=this.pos;for(let t=0;t<n.length;t++)if(this.s[i++]!==n[t])return!1;return this.pos+=n.length,!0}};var gi={comment:{fg:"bright-blue",italic:!0},keyword:{fg:"bright-red",weight:"bold"},literal:{fg:"green"},constant:{fg:"green",weight:"bold"},operator:{fg:"magenta"},punctuation:{fg:"cyan"},identifier:{fg:"default"},type:{fg:"yellow"},default:{fg:"default",bg:"default"},mark:{bg:"bright-blue",fg:"yellow"},mark_indicator:{fg:"bright-blue"}},Gf={const:"keyword",let:"keyword",var:"keyword",if:"keyword",else:"keyword",for:"keyword",while:"keyword",do:"keyword",switch:"keyword",case:"keyword",break:"keyword",continue:"keyword",return:"keyword",default:"keyword",function:"keyword",class:"keyword",interface:"keyword",type:"keyword",enum:"keyword",export:"keyword",import:"keyword",from:"keyword",as:"keyword",null:"literal",undefined:"literal",true:"literal",false:"literal",this:"literal",self:"literal",super:"literal",new:"keyword",delete:"keyword",typeof:"keyword",instanceof:"keyword",in:"keyword",await:"keyword",async:"literal",void:"type",any:"type",number:"type",string:"type",boolean:"type",object:"type",symbol:"type",bigint:"type",never:"type",unknown:"type",Array:"type",Record:"type",public:"keyword",private:"keyword",protected:"keyword",readonly:"keyword",static:"keyword",abstract:"keyword",implements:"keyword",extends:"keyword",declare:"keyword",namespace:"keyword",module:"keyword",require:"keyword","<=":"operator",">=":"operator","==":"operator","!=":"operator","===":"operator","!==":"operator","&&":"operator","||":"operator","+":"operator","-":"operator","*":"operator","/":"operator","%":"operator","++":"operator","--":"operator","=":"operator","+=":"operator","-=":"operator","*=":"operator","/=":"operator","%=":"operator","=>":"operator","->":"operator","?":"operator","!":"operator","~":"operator","&":"operator","|":"operator","^":"operator","<<":"operator",">>":"operator",">>>":"operator",".":"punctuation",",":"punctuation",":":"punctuation",";":"punctuation","(":"punctuation",")":"punctuation","{":"punctuation","}":"punctuation","[":"punctuation","]":"punctuation","<":"punctuation",">":"punctuation"},dm={comment:e=>{let n=e.pos;if(e.match("//")){for(;!e.atEnd()&&e.peek()!==`
|
|
111
112
|
`;)e.consume();return{content:e.s.slice(n,e.pos),tag:"comment"}}if(e.match("/*")){for(;!e.atEnd()&&!e.match("*/");)e.peek()==="\\"&&e.consume(),e.consume();return{content:e.s.slice(n,e.pos),tag:"comment"}}},number:e=>{let n=e.pos;if(e.match("0x")){for(;!e.atEnd()&&/[0-9a-fA-F]/.test(e.peek());)e.consume();return{content:e.s.slice(e.pos),tag:"literal"}}if(/[0-9]/.test(e.peek())){for(;!e.atEnd()&&/[0-9]/.test(e.peek());)e.consume();if(e.match("."))for(;!e.atEnd()&&/[0-9]/.test(e.peek());)e.consume();if(e.match("e")||e.match("E"))for(e.match("+")||e.match("-");!e.atEnd()&&/[0-9]/.test(e.peek());)e.consume();return{content:e.s.slice(n,e.pos),tag:"literal"}}},string:e=>{let n=e.pos,i=e.peek();if(!(i!=='"'&&i!=="'")){for(e.consume();!e.atEnd()&&e.peek()!==i;)e.peek()==="\\"&&e.consume(),e.consume();return e.consume(),{content:e.s.slice(n,e.pos),tag:"literal"}}},regex:e=>{let n=e.pos;if(e.match("//")){e.pos=n;return}if(e.match("/")){for(;!e.atEnd()&&e.peek()!=="/";){if(e.peek()==="\\"&&e.consume(),e.peek()===`
|
|
112
|
-
`)return{content:e.s.slice(e.pos),tag:"literal"};e.consume()}return e.consume(),{content:e.s.slice(n,e.pos),tag:"literal"}}},identifier:e=>{let n=e.pos;for(;!e.atEnd()&&/[a-zA-Z0-9_]/.test(e.peek());)e.consume();if(e.pos!==n)return{content:e.s.slice(n,e.pos),tag:"identifier"}},keyword:e=>{if(e.pos>0&&/[\.]/.test(e.s[e.pos-1]))return;let n=Object.keys(
|
|
113
|
-
`),a=s.map(c=>
|
|
113
|
+
`)return{content:e.s.slice(e.pos),tag:"literal"};e.consume()}return e.consume(),{content:e.s.slice(n,e.pos),tag:"literal"}}},identifier:e=>{let n=e.pos;for(;!e.atEnd()&&/[a-zA-Z0-9_]/.test(e.peek());)e.consume();if(e.pos!==n)return{content:e.s.slice(n,e.pos),tag:"identifier"}},keyword:e=>{if(e.pos>0&&/[\.]/.test(e.s[e.pos-1]))return;let n=Object.keys(Gf);n.sort((t,r)=>r.length-t.length);let i=e.pos;for(let t of n)if(e.pos=i,e.match(t)){if(t[t.length-1].match(/[a-zA-Z0-9_]/)&&!e.atEnd()&&/[a-zA-Z0-9_]/.test(e.peek())){e.pos=i;return}return{content:t,tag:Gf[t]}}}};function zf(e,n=dm,i=0){let t=[],r=new no(e,i);for(;!r.atEnd();){let o=n.comment?.(r)??n.number?.(r)??n.regex?.(r)??n.string?.(r)??n.keyword?.(r)??n.identifier?.(r);if(o){t.push(o);continue}let s=t.length?t[t.length-1]:null;s?.tag==="default"?s.content+=r.consume():t.push({content:r.consume(),tag:"default"})}return t}function Uf(e,n=gi){return e.map(i=>({...n[i.tag],content:i.content}))}function jf(e,n){let i=zf(e,n);return Uf(i)}function Zf(e,n=1,i,t){let r=0,o="";if(i){let c="";[c,o]=i.split(":"),r=parseInt(c)}let s=e.split(`
|
|
114
|
+
`),a=s.map(c=>Uf(zf(c,t)));if(n===void 0)return{tag:"block",spans:a.flatMap(d=>[...d,{content:`
|
|
114
115
|
`}])};let l=(n+s.length-1).toString().length,f=a.flatMap((c,d)=>{let m=n+d;return m===r?[{content:`
|
|
115
|
-
${m.toString().padStart(l," ")} `,weight:"normal",...gi.mark},{content:"\u2503",...gi.mark_indicator},...
|
|
116
|
+
${m.toString().padStart(l," ")} `,weight:"normal",...gi.mark},{content:"\u2503",...gi.mark_indicator},...pm(c,o)]:[{content:`
|
|
116
117
|
${m.toString().padStart(l," ")}`,weight:"thin"},{content:" \u2502 ",fg:"white"},...c]});return f.push({content:`
|
|
117
|
-
`}),{tag:"block",spans:f}}function
|
|
118
|
+
`}),{tag:"block",spans:f}}function pm(e,n){let[i,t]=n.split("-").map(s=>parseInt(s));t===void 0&&(t=i+1),i>=t&&(t=i+1);let r=0,o=s=>{let a=s.content,u=r,l=r+a.length-1;if(r+=a.length,l<i||t<u)return[s];if(u>=i&&l<=t)return[{...s,...gi.mark}];if(u>=i&&l>t){let m=a.slice(0,t+1-r),b=a.slice(t+1-r);return[{...s,content:m,...gi.mark},{...s,content:b}]}if(i>=u&&t>=l){let m=a.slice(0,i-r),b=a.slice(i-r);return[{...s,content:m},{...s,content:b,...gi.mark}]}let f=a.slice(0,i-r),c=a.slice(i-r,t-r+1),d=a.slice(t-r+1);return[{...s,content:f},{...s,content:c,...gi.mark},{...s,content:d}]};return e.flatMap(s=>o(s))}var mm="0.26.3";globalThis[Symbol.for("io.cortexjs.compute-engine")]={ComputeEngine:tt.prototype.constructor,version:"0.26.3"};return Xf(gm);})();
|
|
118
119
|
/*! Bundled license information:
|
|
119
120
|
|
|
120
121
|
complex-esm/dist/src/complex.js:
|