nerdamer 2.0.0-rc.2 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -5
- package/dist/bundle.js +1 -1
- package/dist/bundle.js.LICENSE.txt +6 -6
- package/output/algebra/dispatch.js +1 -1
- package/output/algebra/partfrac.js +1 -1
- package/output/algebra/simplify/funcsimp.js +1 -1
- package/output/algebra/simplify/ratsimp.js +1 -1
- package/output/algebra/utils.d.ts +1 -1
- package/output/algebra/utils.js +3 -3
- package/output/api/algebra.d.ts +19 -2
- package/output/api/algebra.js +18 -2
- package/output/api/assumptions.d.ts +1 -1
- package/output/api/assumptions.js +2 -1
- package/output/api/core.d.ts +28 -7
- package/output/api/core.js +28 -2
- package/output/calculus/derivative/diff.js +1 -1
- package/output/calculus/dispatch.js +2 -2
- package/output/calculus/integrate/integrate.js +4 -4
- package/output/calculus/integrate/integrationTable.js +16 -16
- package/output/calculus/laplace/ilaplace.js +1 -1
- package/output/calculus/laplace/ilaplaceTable.js +18 -17
- package/output/calculus/laplace/laplaceTable.js +3 -2
- package/output/calculus/limit/limit.js +1 -1
- package/output/core/classes/assumption/assume.d.ts +6 -0
- package/output/core/classes/assumption/assume.js +9 -0
- package/output/core/classes/expression/CoeffObject.d.ts +1 -1
- package/output/core/classes/expression/Expression.d.ts +8 -16
- package/output/core/classes/expression/Expression.js +11 -33
- package/output/core/classes/matrix/Matrix.d.ts +2 -3
- package/output/core/classes/matrix/Matrix.js +7 -16
- package/output/core/classes/matrix/dispatch.js +1 -1
- package/output/core/classes/parser/Parser.d.ts +17 -4
- package/output/core/classes/parser/Parser.js +312 -450
- package/output/core/classes/parser/operations/functions.d.ts +3 -4
- package/output/core/classes/parser/operations/functions.js +35 -97
- package/output/core/classes/parser/operations/power.js +2 -2
- package/output/core/classes/parser/preprocess.js +14 -7
- package/output/core/classes/parser/scripting/controlFlow.js +49 -25
- package/output/core/classes/parser/scripting/deferred.d.ts +1 -1
- package/output/core/classes/parser/scripting/deferred.js +1 -1
- package/output/core/classes/parser/scripting/scope.js +38 -19
- package/output/core/classes/parser/types.d.ts +0 -5
- package/output/core/classes/parser/wrappers/IndexedReference.d.ts +4 -3
- package/output/core/classes/parser/wrappers/IndexedReference.js +8 -0
- package/output/core/classes/parser/wrappers/KeyValuePair.d.ts +2 -2
- package/output/core/classes/polynomial/Polynomial.js +1 -1
- package/output/core/classes/polynomial/SparsePolynomial.d.ts +11 -11
- package/output/core/classes/polynomial/SparsePolynomial.js +65 -65
- package/output/core/classes/vector/Vector.d.ts +2 -3
- package/output/core/classes/vector/Vector.js +6 -14
- package/output/core/common/classes/StructuredEntity.d.ts +0 -17
- package/output/core/common/classes/StructuredEntity.js +3 -64
- package/output/core/converters/BaseConverter.js +2 -1
- package/output/core/fullFunctions.js +14 -14
- package/output/core/functions/bigint/bigint.d.ts +1 -1
- package/output/core/functions/numeric.d.ts +1 -1
- package/output/core/parserFunctions.js +10 -10
- package/output/index.d.ts +29 -29
- package/output/index.js +124 -20
- package/output/math/dispatch.js +1 -1
- package/output/math/math.js +21 -21
- package/output/math/trig.js +4 -4
- package/output/solve/solve.js +1 -1
- package/package.json +34 -15
- package/dist/parser.js +0 -2
- package/dist/parser.js.LICENSE.txt +0 -7
- package/docs-data/parser-functions.json +0 -2248
- package/output/core/classes/parser/operations/comma.d.ts +0 -7
- package/output/core/classes/parser/operations/comma.js +0 -11
package/dist/bundle.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/*! For license information please see bundle.js.LICENSE.txt */
|
|
2
|
-
!function webpackUniversalModuleDefinition(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.nerdamer=t():e.nerdamer=t()}(this,()=>(()=>{var e={3110(e,t,n){var i;!function(){"use strict";var r,s,o,a=9e15,l=1e9,u="0123456789abcdef",c="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",m="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",p={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-a,maxE:a,crypto:!1},g=!0,d="[DecimalError] ",h=d+"Invalid argument: ",x=d+"Precision limit exceeded",E=d+"crypto unavailable",y="[object Decimal]",v=Math.floor,w=Math.pow,b=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,P=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,A=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,N=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,M=1e7,T=c.length-1,I=m.length-1,O={toStringTag:y};function digitsToString(e){var t,n,i,r=e.length-1,s="",o=e[0];if(r>0){for(s+=o,t=1;t<r;t++)(n=7-(i=e[t]+"").length)&&(s+=getZeroString(n)),s+=i;(n=7-(i=(o=e[t])+"").length)&&(s+=getZeroString(n))}else if(0===o)return"0";for(;o%10==0;)o/=10;return s+o}function checkInt32(e,t,n){if(e!==~~e||e<t||e>n)throw Error(h+e)}function checkRoundingDigits(e,t,n,i){var r,s,o,a;for(s=e[0];s>=10;s/=10)--t;return--t<0?(t+=7,r=0):(r=Math.ceil((t+1)/7),t%=7),s=w(10,7-t),a=e[r]%s|0,null==i?t<3?(0==t?a=a/100|0:1==t&&(a=a/10|0),o=n<4&&99999==a||n>3&&49999==a||5e4==a||0==a):o=(n<4&&a+1==s||n>3&&a+1==s/2)&&(e[r+1]/s/100|0)==w(10,t-2)-1||(a==s/2||0==a)&&!(e[r+1]/s/100|0):t<4?(0==t?a=a/1e3|0:1==t?a=a/100|0:2==t&&(a=a/10|0),o=(i||n<4)&&9999==a||!i&&n>3&&4999==a):o=((i||n<4)&&a+1==s||!i&&n>3&&a+1==s/2)&&(e[r+1]/s/1e3|0)==w(10,t-3)-1,o}function convertBase(e,t,n){for(var i,r,s=[0],o=0,a=e.length;o<a;){for(r=s.length;r--;)s[r]*=t;for(s[0]+=u.indexOf(e.charAt(o++)),i=0;i<s.length;i++)s[i]>n-1&&(void 0===s[i+1]&&(s[i+1]=0),s[i+1]+=s[i]/n|0,s[i]%=n)}return s.reverse()}O.absoluteValue=O.abs=function(){var e=new this.constructor(this);return e.s<0&&(e.s=1),finalise(e)},O.ceil=function(){return finalise(new this.constructor(this),this.e+1,2)},O.clampedTo=O.clamp=function(e,t){var n=this,i=n.constructor;if(e=new i(e),t=new i(t),!e.s||!t.s)return new i(NaN);if(e.gt(t))throw Error(h+t);return n.cmp(e)<0?e:n.cmp(t)>0?t:new i(n)},O.comparedTo=O.cmp=function(e){var t,n,i,r,s=this,o=s.d,a=(e=new s.constructor(e)).d,l=s.s,u=e.s;if(!o||!a)return l&&u?l!==u?l:o===a?0:!o^l<0?1:-1:NaN;if(!o[0]||!a[0])return o[0]?l:a[0]?-u:0;if(l!==u)return l;if(s.e!==e.e)return s.e>e.e^l<0?1:-1;for(t=0,n=(i=o.length)<(r=a.length)?i:r;t<n;++t)if(o[t]!==a[t])return o[t]>a[t]^l<0?1:-1;return i===r?0:i>r^l<0?1:-1},O.cosine=O.cos=function(){var e,t,n=this,i=n.constructor;return n.d?n.d[0]?(e=i.precision,t=i.rounding,i.precision=e+Math.max(n.e,n.sd())+7,i.rounding=1,n=function cosine(e,t){var n,i,r;if(t.isZero())return t;i=t.d.length,i<32?r=(1/tinyPow(4,n=Math.ceil(i/3))).toString():(n=16,r="2.3283064365386962890625e-10");e.precision+=n,t=taylorSeries(e,1,t.times(r),new e(1));for(var s=n;s--;){var o=t.times(t);t=o.times(o).minus(o).times(8).plus(1)}return e.precision-=n,t}(i,toLessThanHalfPi(i,n)),i.precision=e,i.rounding=t,finalise(2==o||3==o?n.neg():n,e,t,!0)):new i(1):new i(NaN)},O.cubeRoot=O.cbrt=function(){var e,t,n,i,r,s,o,a,l,u,c=this,m=c.constructor;if(!c.isFinite()||c.isZero())return new m(c);for(g=!1,(s=c.s*w(c.s*c,1/3))&&Math.abs(s)!=1/0?i=new m(s.toString()):(n=digitsToString(c.d),(s=((e=c.e)-n.length+1)%3)&&(n+=1==s||-2==s?"0":"00"),s=w(n,1/3),e=v((e+1)/3)-(e%3==(e<0?-1:2)),(i=new m(n=s==1/0?"5e"+e:(n=s.toExponential()).slice(0,n.indexOf("e")+1)+e)).s=c.s),o=(e=m.precision)+3;;)if(u=(l=(a=i).times(a).times(a)).plus(c),i=R(u.plus(c).times(a),u.plus(l),o+2,1),digitsToString(a.d).slice(0,o)===(n=digitsToString(i.d)).slice(0,o)){if("9999"!=(n=n.slice(o-3,o+1))&&(r||"4999"!=n)){+n&&(+n.slice(1)||"5"!=n.charAt(0))||(finalise(i,e+1,1),t=!i.times(i).times(i).eq(c));break}if(!r&&(finalise(a,e+1,0),a.times(a).times(a).eq(c))){i=a;break}o+=4,r=1}return g=!0,finalise(i,e,m.rounding,t)},O.decimalPlaces=O.dp=function(){var e,t=this.d,n=NaN;if(t){if(n=7*((e=t.length-1)-v(this.e/7)),e=t[e])for(;e%10==0;e/=10)n--;n<0&&(n=0)}return n},O.dividedBy=O.div=function(e){return R(this,new this.constructor(e))},O.dividedToIntegerBy=O.divToInt=function(e){var t=this.constructor;return finalise(R(this,new t(e),0,1,1),t.precision,t.rounding)},O.equals=O.eq=function(e){return 0===this.cmp(e)},O.floor=function(){return finalise(new this.constructor(this),this.e+1,3)},O.greaterThan=O.gt=function(e){return this.cmp(e)>0},O.greaterThanOrEqualTo=O.gte=function(e){var t=this.cmp(e);return 1==t||0===t},O.hyperbolicCosine=O.cosh=function(){var e,t,n,i,r,s=this,o=s.constructor,a=new o(1);if(!s.isFinite())return new o(s.s?1/0:NaN);if(s.isZero())return a;n=o.precision,i=o.rounding,o.precision=n+Math.max(s.e,s.sd())+4,o.rounding=1,(r=s.d.length)<32?t=(1/tinyPow(4,e=Math.ceil(r/3))).toString():(e=16,t="2.3283064365386962890625e-10"),s=taylorSeries(o,1,s.times(t),new o(1),!0);for(var l,u=e,c=new o(8);u--;)l=s.times(s),s=a.minus(l.times(c.minus(l.times(c))));return finalise(s,o.precision=n,o.rounding=i,!0)},O.hyperbolicSine=O.sinh=function(){var e,t,n,i,r=this,s=r.constructor;if(!r.isFinite()||r.isZero())return new s(r);if(t=s.precision,n=s.rounding,s.precision=t+Math.max(r.e,r.sd())+4,s.rounding=1,(i=r.d.length)<3)r=taylorSeries(s,2,r,r,!0);else{e=(e=1.4*Math.sqrt(i))>16?16:0|e,r=taylorSeries(s,2,r=r.times(1/tinyPow(5,e)),r,!0);for(var o,a=new s(5),l=new s(16),u=new s(20);e--;)o=r.times(r),r=r.times(a.plus(o.times(l.times(o).plus(u))))}return s.precision=t,s.rounding=n,finalise(r,t,n,!0)},O.hyperbolicTangent=O.tanh=function(){var e,t,n=this,i=n.constructor;return n.isFinite()?n.isZero()?new i(n):(e=i.precision,t=i.rounding,i.precision=e+7,i.rounding=1,R(n.sinh(),n.cosh(),i.precision=e,i.rounding=t)):new i(n.s)},O.inverseCosine=O.acos=function(){var e=this,t=e.constructor,n=e.abs().cmp(1),i=t.precision,r=t.rounding;return-1!==n?0===n?e.isNeg()?getPi(t,i,r):new t(0):new t(NaN):e.isZero()?getPi(t,i+4,r).times(.5):(t.precision=i+6,t.rounding=1,e=new t(1).minus(e).div(e.plus(1)).sqrt().atan(),t.precision=i,t.rounding=r,e.times(2))},O.inverseHyperbolicCosine=O.acosh=function(){var e,t,n=this,i=n.constructor;return n.lte(1)?new i(n.eq(1)?0:NaN):n.isFinite()?(e=i.precision,t=i.rounding,i.precision=e+Math.max(Math.abs(n.e),n.sd())+4,i.rounding=1,g=!1,n=n.times(n).minus(1).sqrt().plus(n),g=!0,i.precision=e,i.rounding=t,n.ln()):new i(n)},O.inverseHyperbolicSine=O.asinh=function(){var e,t,n=this,i=n.constructor;return!n.isFinite()||n.isZero()?new i(n):(e=i.precision,t=i.rounding,i.precision=e+2*Math.max(Math.abs(n.e),n.sd())+6,i.rounding=1,g=!1,n=n.times(n).plus(1).sqrt().plus(n),g=!0,i.precision=e,i.rounding=t,n.ln())},O.inverseHyperbolicTangent=O.atanh=function(){var e,t,n,i,r=this,s=r.constructor;return r.isFinite()?r.e>=0?new s(r.abs().eq(1)?r.s/0:r.isZero()?r:NaN):(e=s.precision,t=s.rounding,i=r.sd(),Math.max(i,e)<2*-r.e-1?finalise(new s(r),e,t,!0):(s.precision=n=i-r.e,r=R(r.plus(1),new s(1).minus(r),n+e,1),s.precision=e+4,s.rounding=1,r=r.ln(),s.precision=e,s.rounding=t,r.times(.5))):new s(NaN)},O.inverseSine=O.asin=function(){var e,t,n,i,r=this,s=r.constructor;return r.isZero()?new s(r):(t=r.abs().cmp(1),n=s.precision,i=s.rounding,-1!==t?0===t?((e=getPi(s,n+4,i).times(.5)).s=r.s,e):new s(NaN):(s.precision=n+6,s.rounding=1,r=r.div(new s(1).minus(r.times(r)).sqrt().plus(1)).atan(),s.precision=n,s.rounding=i,r.times(2)))},O.inverseTangent=O.atan=function(){var e,t,n,i,r,s,o,a,l,u=this,c=u.constructor,m=c.precision,p=c.rounding;if(u.isFinite()){if(u.isZero())return new c(u);if(u.abs().eq(1)&&m+4<=I)return(o=getPi(c,m+4,p).times(.25)).s=u.s,o}else{if(!u.s)return new c(NaN);if(m+4<=I)return(o=getPi(c,m+4,p).times(.5)).s=u.s,o}for(c.precision=a=m+10,c.rounding=1,e=n=Math.min(28,a/7+2|0);e;--e)u=u.div(u.times(u).plus(1).sqrt().plus(1));for(g=!1,t=Math.ceil(a/7),i=1,l=u.times(u),o=new c(u),r=u;-1!==e;)if(r=r.times(l),s=o.minus(r.div(i+=2)),r=r.times(l),void 0!==(o=s.plus(r.div(i+=2))).d[t])for(e=t;o.d[e]===s.d[e]&&e--;);return n&&(o=o.times(2<<n-1)),g=!0,finalise(o,c.precision=m,c.rounding=p,!0)},O.isFinite=function(){return!!this.d},O.isInteger=O.isInt=function(){return!!this.d&&v(this.e/7)>this.d.length-2},O.isNaN=function(){return!this.s},O.isNegative=O.isNeg=function(){return this.s<0},O.isPositive=O.isPos=function(){return this.s>0},O.isZero=function(){return!!this.d&&0===this.d[0]},O.lessThan=O.lt=function(e){return this.cmp(e)<0},O.lessThanOrEqualTo=O.lte=function(e){return this.cmp(e)<1},O.logarithm=O.log=function(e){var t,n,i,r,s,o,a,l,u=this,c=u.constructor,m=c.precision,p=c.rounding;if(null==e)e=new c(10),t=!0;else{if(n=(e=new c(e)).d,e.s<0||!n||!n[0]||e.eq(1))return new c(NaN);t=e.eq(10)}if(n=u.d,u.s<0||!n||!n[0]||u.eq(1))return new c(n&&!n[0]?-1/0:1!=u.s?NaN:n?0:1/0);if(t)if(n.length>1)s=!0;else{for(r=n[0];r%10==0;)r/=10;s=1!==r}if(g=!1,o=naturalLogarithm(u,a=m+5),i=t?getLn10(c,a+10):naturalLogarithm(e,a),checkRoundingDigits((l=R(o,i,a,1)).d,r=m,p))do{if(o=naturalLogarithm(u,a+=10),i=t?getLn10(c,a+10):naturalLogarithm(e,a),l=R(o,i,a,1),!s){+digitsToString(l.d).slice(r+1,r+15)+1==1e14&&(l=finalise(l,m+1,0));break}}while(checkRoundingDigits(l.d,r+=10,p));return g=!0,finalise(l,m,p)},O.minus=O.sub=function(e){var t,n,i,r,s,o,a,l,u,c,m,p,d=this,h=d.constructor;if(e=new h(e),!d.d||!e.d)return d.s&&e.s?d.d?e.s=-e.s:e=new h(e.d||d.s!==e.s?d:NaN):e=new h(NaN),e;if(d.s!=e.s)return e.s=-e.s,d.plus(e);if(u=d.d,p=e.d,a=h.precision,l=h.rounding,!u[0]||!p[0]){if(p[0])e.s=-e.s;else{if(!u[0])return new h(3===l?-0:0);e=new h(d)}return g?finalise(e,a,l):e}if(n=v(e.e/7),c=v(d.e/7),u=u.slice(),s=c-n){for((m=s<0)?(t=u,s=-s,o=p.length):(t=p,n=c,o=u.length),s>(i=Math.max(Math.ceil(a/7),o)+2)&&(s=i,t.length=1),t.reverse(),i=s;i--;)t.push(0);t.reverse()}else{for((m=(i=u.length)<(o=p.length))&&(o=i),i=0;i<o;i++)if(u[i]!=p[i]){m=u[i]<p[i];break}s=0}for(m&&(t=u,u=p,p=t,e.s=-e.s),o=u.length,i=p.length-o;i>0;--i)u[o++]=0;for(i=p.length;i>s;){if(u[--i]<p[i]){for(r=i;r&&0===u[--r];)u[r]=M-1;--u[r],u[i]+=M}u[i]-=p[i]}for(;0===u[--o];)u.pop();for(;0===u[0];u.shift())--n;return u[0]?(e.d=u,e.e=getBase10Exponent(u,n),g?finalise(e,a,l):e):new h(3===l?-0:0)},O.modulo=O.mod=function(e){var t,n=this,i=n.constructor;return e=new i(e),!n.d||!e.s||e.d&&!e.d[0]?new i(NaN):!e.d||n.d&&!n.d[0]?finalise(new i(n),i.precision,i.rounding):(g=!1,9==i.modulo?(t=R(n,e.abs(),0,3,1)).s*=e.s:t=R(n,e,0,i.modulo,1),t=t.times(e),g=!0,n.minus(t))},O.naturalExponential=O.exp=function(){return naturalExponential(this)},O.naturalLogarithm=O.ln=function(){return naturalLogarithm(this)},O.negated=O.neg=function(){var e=new this.constructor(this);return e.s=-e.s,finalise(e)},O.plus=O.add=function(e){var t,n,i,r,s,o,a,l,u,c,m=this,p=m.constructor;if(e=new p(e),!m.d||!e.d)return m.s&&e.s?m.d||(e=new p(e.d||m.s===e.s?m:NaN)):e=new p(NaN),e;if(m.s!=e.s)return e.s=-e.s,m.minus(e);if(u=m.d,c=e.d,a=p.precision,l=p.rounding,!u[0]||!c[0])return c[0]||(e=new p(m)),g?finalise(e,a,l):e;if(s=v(m.e/7),i=v(e.e/7),u=u.slice(),r=s-i){for(r<0?(n=u,r=-r,o=c.length):(n=c,i=s,o=u.length),r>(o=(s=Math.ceil(a/7))>o?s+1:o+1)&&(r=o,n.length=1),n.reverse();r--;)n.push(0);n.reverse()}for((o=u.length)-(r=c.length)<0&&(r=o,n=c,c=u,u=n),t=0;r;)t=(u[--r]=u[r]+c[r]+t)/M|0,u[r]%=M;for(t&&(u.unshift(t),++i),o=u.length;0==u[--o];)u.pop();return e.d=u,e.e=getBase10Exponent(u,i),g?finalise(e,a,l):e},O.precision=O.sd=function(e){var t,n=this;if(void 0!==e&&e!==!!e&&1!==e&&0!==e)throw Error(h+e);return n.d?(t=getPrecision(n.d),e&&n.e+1>t&&(t=n.e+1)):t=NaN,t},O.round=function(){var e=this,t=e.constructor;return finalise(new t(e),e.e+1,t.rounding)},O.sine=O.sin=function(){var e,t,n=this,i=n.constructor;return n.isFinite()?n.isZero()?new i(n):(e=i.precision,t=i.rounding,i.precision=e+Math.max(n.e,n.sd())+7,i.rounding=1,n=function sine(e,t){var n,i=t.d.length;if(i<3)return t.isZero()?t:taylorSeries(e,2,t,t);n=(n=1.4*Math.sqrt(i))>16?16:0|n,t=t.times(1/tinyPow(5,n)),t=taylorSeries(e,2,t,t);for(var r,s=new e(5),o=new e(16),a=new e(20);n--;)r=t.times(t),t=t.times(s.plus(r.times(o.times(r).minus(a))));return t}(i,toLessThanHalfPi(i,n)),i.precision=e,i.rounding=t,finalise(o>2?n.neg():n,e,t,!0)):new i(NaN)},O.squareRoot=O.sqrt=function(){var e,t,n,i,r,s,o=this,a=o.d,l=o.e,u=o.s,c=o.constructor;if(1!==u||!a||!a[0])return new c(!u||u<0&&(!a||a[0])?NaN:a?o:1/0);for(g=!1,0==(u=Math.sqrt(+o))||u==1/0?(((t=digitsToString(a)).length+l)%2==0&&(t+="0"),u=Math.sqrt(t),l=v((l+1)/2)-(l<0||l%2),i=new c(t=u==1/0?"5e"+l:(t=u.toExponential()).slice(0,t.indexOf("e")+1)+l)):i=new c(u.toString()),n=(l=c.precision)+3;;)if(i=(s=i).plus(R(o,s,n+2,1)).times(.5),digitsToString(s.d).slice(0,n)===(t=digitsToString(i.d)).slice(0,n)){if("9999"!=(t=t.slice(n-3,n+1))&&(r||"4999"!=t)){+t&&(+t.slice(1)||"5"!=t.charAt(0))||(finalise(i,l+1,1),e=!i.times(i).eq(o));break}if(!r&&(finalise(s,l+1,0),s.times(s).eq(o))){i=s;break}n+=4,r=1}return g=!0,finalise(i,l,c.rounding,e)},O.tangent=O.tan=function(){var e,t,n=this,i=n.constructor;return n.isFinite()?n.isZero()?new i(n):(e=i.precision,t=i.rounding,i.precision=e+10,i.rounding=1,(n=n.sin()).s=1,n=R(n,new i(1).minus(n.times(n)).sqrt(),e+10,0),i.precision=e,i.rounding=t,finalise(2==o||4==o?n.neg():n,e,t,!0)):new i(NaN)},O.times=O.mul=function(e){var t,n,i,r,s,o,a,l,u,c=this,m=c.constructor,p=c.d,d=(e=new m(e)).d;if(e.s*=c.s,!(p&&p[0]&&d&&d[0]))return new m(!e.s||p&&!p[0]&&!d||d&&!d[0]&&!p?NaN:p&&d?0*e.s:e.s/0);for(n=v(c.e/7)+v(e.e/7),(l=p.length)<(u=d.length)&&(s=p,p=d,d=s,o=l,l=u,u=o),s=[],i=o=l+u;i--;)s.push(0);for(i=u;--i>=0;){for(t=0,r=l+i;r>i;)a=s[r]+d[i]*p[r-i-1]+t,s[r--]=a%M|0,t=a/M|0;s[r]=(s[r]+t)%M|0}for(;!s[--o];)s.pop();return t?++n:s.shift(),e.d=s,e.e=getBase10Exponent(s,n),g?finalise(e,m.precision,m.rounding):e},O.toBinary=function(e,t){return toStringBinary(this,2,e,t)},O.toDecimalPlaces=O.toDP=function(e,t){var n=this,i=n.constructor;return n=new i(n),void 0===e?n:(checkInt32(e,0,l),void 0===t?t=i.rounding:checkInt32(t,0,8),finalise(n,e+n.e+1,t))},O.toExponential=function(e,t){var n,i=this,r=i.constructor;return void 0===e?n=finiteToString(i,!0):(checkInt32(e,0,l),void 0===t?t=r.rounding:checkInt32(t,0,8),n=finiteToString(i=finalise(new r(i),e+1,t),!0,e+1)),i.isNeg()&&!i.isZero()?"-"+n:n},O.toFixed=function(e,t){var n,i,r=this,s=r.constructor;return void 0===e?n=finiteToString(r):(checkInt32(e,0,l),void 0===t?t=s.rounding:checkInt32(t,0,8),n=finiteToString(i=finalise(new s(r),e+r.e+1,t),!1,e+i.e+1)),r.isNeg()&&!r.isZero()?"-"+n:n},O.toFraction=function(e){var t,n,i,r,s,o,a,l,u,c,m,p,d=this,x=d.d,E=d.constructor;if(!x)return new E(d);if(u=n=new E(1),i=l=new E(0),o=(s=(t=new E(i)).e=getPrecision(x)-d.e-1)%7,t.d[0]=w(10,o<0?7+o:o),null==e)e=s>0?t:u;else{if(!(a=new E(e)).isInt()||a.lt(u))throw Error(h+a);e=a.gt(t)?s>0?t:u:a}for(g=!1,a=new E(digitsToString(x)),c=E.precision,E.precision=s=7*x.length*2;m=R(a,t,0,1,1),1!=(r=n.plus(m.times(i))).cmp(e);)n=i,i=r,r=u,u=l.plus(m.times(r)),l=r,r=t,t=a.minus(m.times(r)),a=r;return r=R(e.minus(n),i,0,1,1),l=l.plus(r.times(u)),n=n.plus(r.times(i)),l.s=u.s=d.s,p=R(u,i,s,1).minus(d).abs().cmp(R(l,n,s,1).minus(d).abs())<1?[u,i]:[l,n],E.precision=c,g=!0,p},O.toHexadecimal=O.toHex=function(e,t){return toStringBinary(this,16,e,t)},O.toNearest=function(e,t){var n=this,i=n.constructor;if(n=new i(n),null==e){if(!n.d)return n;e=new i(1),t=i.rounding}else{if(e=new i(e),void 0===t?t=i.rounding:checkInt32(t,0,8),!n.d)return e.s?n:e;if(!e.d)return e.s&&(e.s=n.s),e}return e.d[0]?(g=!1,n=R(n,e,0,t,1).times(e),g=!0,finalise(n)):(e.s=n.s,n=e),n},O.toNumber=function(){return+this},O.toOctal=function(e,t){return toStringBinary(this,8,e,t)},O.toPower=O.pow=function(e){var t,n,i,r,s,o,a=this,l=a.constructor,u=+(e=new l(e));if(!(a.d&&e.d&&a.d[0]&&e.d[0]))return new l(w(+a,u));if((a=new l(a)).eq(1))return a;if(i=l.precision,s=l.rounding,e.eq(1))return finalise(a,i,s);if((t=v(e.e/7))>=e.d.length-1&&(n=u<0?-u:u)<=9007199254740991)return r=intPow(l,a,n,i),e.s<0?new l(1).div(r):finalise(r,i,s);if((o=a.s)<0){if(t<e.d.length-1)return new l(NaN);if(1&e.d[t]||(o=1),0==a.e&&1==a.d[0]&&1==a.d.length)return a.s=o,a}return(t=0!=(n=w(+a,u))&&isFinite(n)?new l(n+"").e:v(u*(Math.log("0."+digitsToString(a.d))/Math.LN10+a.e+1)))>l.maxE+1||t<l.minE-1?new l(t>0?o/0:0):(g=!1,l.rounding=a.s=1,n=Math.min(12,(t+"").length),(r=naturalExponential(e.times(naturalLogarithm(a,i+n)),i)).d&&checkRoundingDigits((r=finalise(r,i+5,1)).d,i,s)&&(t=i+10,+digitsToString((r=finalise(naturalExponential(e.times(naturalLogarithm(a,t+n)),t),t+5,1)).d).slice(i+1,i+15)+1==1e14&&(r=finalise(r,i+1,0))),r.s=o,g=!0,l.rounding=s,finalise(r,i,s))},O.toPrecision=function(e,t){var n,i=this,r=i.constructor;return void 0===e?n=finiteToString(i,i.e<=r.toExpNeg||i.e>=r.toExpPos):(checkInt32(e,1,l),void 0===t?t=r.rounding:checkInt32(t,0,8),n=finiteToString(i=finalise(new r(i),e,t),e<=i.e||i.e<=r.toExpNeg,e)),i.isNeg()&&!i.isZero()?"-"+n:n},O.toSignificantDigits=O.toSD=function(e,t){var n=this.constructor;return void 0===e?(e=n.precision,t=n.rounding):(checkInt32(e,1,l),void 0===t?t=n.rounding:checkInt32(t,0,8)),finalise(new n(this),e,t)},O.toString=function(){var e=this,t=e.constructor,n=finiteToString(e,e.e<=t.toExpNeg||e.e>=t.toExpPos);return e.isNeg()&&!e.isZero()?"-"+n:n},O.truncated=O.trunc=function(){return finalise(new this.constructor(this),this.e+1,1)},O.valueOf=O.toJSON=function(){var e=this,t=e.constructor,n=finiteToString(e,e.e<=t.toExpNeg||e.e>=t.toExpPos);return e.isNeg()?"-"+n:n};var R=function(){function multiplyInteger(e,t,n){var i,r=0,s=e.length;for(e=e.slice();s--;)i=e[s]*t+r,e[s]=i%n|0,r=i/n|0;return r&&e.unshift(r),e}function compare(e,t,n,i){var r,s;if(n!=i)s=n>i?1:-1;else for(r=s=0;r<n;r++)if(e[r]!=t[r]){s=e[r]>t[r]?1:-1;break}return s}function subtract(e,t,n,i){for(var r=0;n--;)e[n]-=r,r=e[n]<t[n]?1:0,e[n]=r*i+e[n]-t[n];for(;!e[0]&&e.length>1;)e.shift()}return function(e,t,n,i,r,o){var a,l,u,c,m,p,g,d,h,x,E,y,w,b,P,A,N,T,I,O,R=e.constructor,F=e.s==t.s?1:-1,q=e.d,L=t.d;if(!(q&&q[0]&&L&&L[0]))return new R(e.s&&t.s&&(q?!L||q[0]!=L[0]:L)?q&&0==q[0]||!L?0*F:F/0:NaN);for(o?(m=1,l=e.e-t.e):(o=M,m=7,l=v(e.e/m)-v(t.e/m)),I=L.length,N=q.length,x=(h=new R(F)).d=[],u=0;L[u]==(q[u]||0);u++);if(L[u]>(q[u]||0)&&l--,null==n?(b=n=R.precision,i=R.rounding):b=r?n+(e.e-t.e)+1:n,b<0)x.push(1),p=!0;else{if(b=b/m+2|0,u=0,1==I){for(c=0,L=L[0],b++;(u<N||c)&&b--;u++)P=c*o+(q[u]||0),x[u]=P/L|0,c=P%L|0;p=c||u<N}else{for((c=o/(L[0]+1)|0)>1&&(L=multiplyInteger(L,c,o),q=multiplyInteger(q,c,o),I=L.length,N=q.length),A=I,y=(E=q.slice(0,I)).length;y<I;)E[y++]=0;(O=L.slice()).unshift(0),T=L[0],L[1]>=o/2&&++T;do{c=0,(a=compare(L,E,I,y))<0?(w=E[0],I!=y&&(w=w*o+(E[1]||0)),(c=w/T|0)>1?(c>=o&&(c=o-1),1==(a=compare(g=multiplyInteger(L,c,o),E,d=g.length,y=E.length))&&(c--,subtract(g,I<d?O:L,d,o))):(0==c&&(a=c=1),g=L.slice()),(d=g.length)<y&&g.unshift(0),subtract(E,g,y,o),-1==a&&(a=compare(L,E,I,y=E.length))<1&&(c++,subtract(E,I<y?O:L,y,o)),y=E.length):0===a&&(c++,E=[0]),x[u++]=c,a&&E[0]?E[y++]=q[A]||0:(E=[q[A]],y=1)}while((A++<N||void 0!==E[0])&&b--);p=void 0!==E[0]}x[0]||x.shift()}if(1==m)h.e=l,s=p;else{for(u=1,c=x[0];c>=10;c/=10)u++;h.e=u+l*m-1,finalise(h,r?n+h.e+1:n,i,p)}return h}}();function finalise(e,t,n,i){var r,s,o,a,l,u,c,m,p,d=e.constructor;e:if(null!=t){if(!(m=e.d))return e;for(r=1,a=m[0];a>=10;a/=10)r++;if((s=t-r)<0)s+=7,o=t,l=(c=m[p=0])/w(10,r-o-1)%10|0;else if((p=Math.ceil((s+1)/7))>=(a=m.length)){if(!i)break e;for(;a++<=p;)m.push(0);c=l=0,r=1,o=(s%=7)-7+1}else{for(c=a=m[p],r=1;a>=10;a/=10)r++;l=(o=(s%=7)-7+r)<0?0:c/w(10,r-o-1)%10|0}if(i=i||t<0||void 0!==m[p+1]||(o<0?c:c%w(10,r-o-1)),u=n<4?(l||i)&&(0==n||n==(e.s<0?3:2)):l>5||5==l&&(4==n||i||6==n&&(s>0?o>0?c/w(10,r-o):0:m[p-1])%10&1||n==(e.s<0?8:7)),t<1||!m[0])return m.length=0,u?(t-=e.e+1,m[0]=w(10,(7-t%7)%7),e.e=-t||0):m[0]=e.e=0,e;if(0==s?(m.length=p,a=1,p--):(m.length=p+1,a=w(10,7-s),m[p]=o>0?(c/w(10,r-o)%w(10,o)|0)*a:0),u)for(;;){if(0==p){for(s=1,o=m[0];o>=10;o/=10)s++;for(o=m[0]+=a,a=1;o>=10;o/=10)a++;s!=a&&(e.e++,m[0]==M&&(m[0]=1));break}if(m[p]+=a,m[p]!=M)break;m[p--]=0,a=1}for(s=m.length;0===m[--s];)m.pop()}return g&&(e.e>d.maxE?(e.d=null,e.e=NaN):e.e<d.minE&&(e.e=0,e.d=[0])),e}function finiteToString(e,t,n){if(!e.isFinite())return nonFiniteToString(e);var i,r=e.e,s=digitsToString(e.d),o=s.length;return t?(n&&(i=n-o)>0?s=s.charAt(0)+"."+s.slice(1)+getZeroString(i):o>1&&(s=s.charAt(0)+"."+s.slice(1)),s=s+(e.e<0?"e":"e+")+e.e):r<0?(s="0."+getZeroString(-r-1)+s,n&&(i=n-o)>0&&(s+=getZeroString(i))):r>=o?(s+=getZeroString(r+1-o),n&&(i=n-r-1)>0&&(s=s+"."+getZeroString(i))):((i=r+1)<o&&(s=s.slice(0,i)+"."+s.slice(i)),n&&(i=n-o)>0&&(r+1===o&&(s+="."),s+=getZeroString(i))),s}function getBase10Exponent(e,t){var n=e[0];for(t*=7;n>=10;n/=10)t++;return t}function getLn10(e,t,n){if(t>T)throw g=!0,n&&(e.precision=n),Error(x);return finalise(new e(c),t,1,!0)}function getPi(e,t,n){if(t>I)throw Error(x);return finalise(new e(m),t,n,!0)}function getPrecision(e){var t=e.length-1,n=7*t+1;if(t=e[t]){for(;t%10==0;t/=10)n--;for(t=e[0];t>=10;t/=10)n++}return n}function getZeroString(e){for(var t="";e--;)t+="0";return t}function intPow(e,t,n,i){var r,s=new e(1),o=Math.ceil(i/7+4);for(g=!1;;){if(n%2&&truncate((s=s.times(t)).d,o)&&(r=!0),0===(n=v(n/2))){n=s.d.length-1,r&&0===s.d[n]&&++s.d[n];break}truncate((t=t.times(t)).d,o)}return g=!0,s}function isOdd(e){return 1&e.d[e.d.length-1]}function maxOrMin(e,t,n){for(var i,r,s=new e(t[0]),o=0;++o<t.length;){if(!(r=new e(t[o])).s){s=r;break}((i=s.cmp(r))===n||0===i&&s.s===n)&&(s=r)}return s}function naturalExponential(e,t){var n,i,r,s,o,a,l,u=0,c=0,m=0,p=e.constructor,d=p.rounding,h=p.precision;if(!e.d||!e.d[0]||e.e>17)return new p(e.d?e.d[0]?e.s<0?0:1/0:1:e.s?e.s<0?0:e:NaN);for(null==t?(g=!1,l=h):l=t,a=new p(.03125);e.e>-2;)e=e.times(a),m+=5;for(l+=i=Math.log(w(2,m))/Math.LN10*2+5|0,n=s=o=new p(1),p.precision=l;;){if(s=finalise(s.times(e),l,1),n=n.times(++c),digitsToString((a=o.plus(R(s,n,l,1))).d).slice(0,l)===digitsToString(o.d).slice(0,l)){for(r=m;r--;)o=finalise(o.times(o),l,1);if(null!=t)return p.precision=h,o;if(!(u<3&&checkRoundingDigits(o.d,l-i,d,u)))return finalise(o,p.precision=h,d,g=!0);p.precision=l+=10,n=s=a=new p(1),c=0,u++}o=a}}function naturalLogarithm(e,t){var n,i,r,s,o,a,l,u,c,m,p,d=1,h=e,x=h.d,E=h.constructor,y=E.rounding,v=E.precision;if(h.s<0||!x||!x[0]||!h.e&&1==x[0]&&1==x.length)return new E(x&&!x[0]?-1/0:1!=h.s?NaN:x?0:h);if(null==t?(g=!1,c=v):c=t,E.precision=c+=10,i=(n=digitsToString(x)).charAt(0),!(Math.abs(s=h.e)<15e14))return u=getLn10(E,c+2,v).times(s+""),h=naturalLogarithm(new E(i+"."+n.slice(1)),c-10).plus(u),E.precision=v,null==t?finalise(h,v,y,g=!0):h;for(;i<7&&1!=i||1==i&&n.charAt(1)>3;)i=(n=digitsToString((h=h.times(e)).d)).charAt(0),d++;for(s=h.e,i>1?(h=new E("0."+n),s++):h=new E(i+"."+n.slice(1)),m=h,l=o=h=R(h.minus(1),h.plus(1),c,1),p=finalise(h.times(h),c,1),r=3;;){if(o=finalise(o.times(p),c,1),digitsToString((u=l.plus(R(o,new E(r),c,1))).d).slice(0,c)===digitsToString(l.d).slice(0,c)){if(l=l.times(2),0!==s&&(l=l.plus(getLn10(E,c+2,v).times(s+""))),l=R(l,new E(d),c,1),null!=t)return E.precision=v,l;if(!checkRoundingDigits(l.d,c-10,y,a))return finalise(l,E.precision=v,y,g=!0);E.precision=c+=10,u=o=h=R(m.minus(1),m.plus(1),c,1),p=finalise(h.times(h),c,1),r=a=1}l=u,r+=2}}function nonFiniteToString(e){return String(e.s*e.s/0)}function parseDecimal(e,t){var n,i,r;for((n=t.indexOf("."))>-1&&(t=t.replace(".","")),(i=t.search(/e/i))>0?(n<0&&(n=i),n+=+t.slice(i+1),t=t.substring(0,i)):n<0&&(n=t.length),i=0;48===t.charCodeAt(i);i++);for(r=t.length;48===t.charCodeAt(r-1);--r);if(t=t.slice(i,r)){if(r-=i,e.e=n=n-i-1,e.d=[],i=(n+1)%7,n<0&&(i+=7),i<r){for(i&&e.d.push(+t.slice(0,i)),r-=7;i<r;)e.d.push(+t.slice(i,i+=7));i=7-(t=t.slice(i)).length}else i-=r;for(;i--;)t+="0";e.d.push(+t),g&&(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 parseOther(e,t){var n,i,s,o,a,l,u,c,m;if(t.indexOf("_")>-1){if(t=t.replace(/(\d)_(?=\d)/g,"$1"),N.test(t))return parseDecimal(e,t)}else if("Infinity"===t||"NaN"===t)return+t||(e.s=NaN),e.e=NaN,e.d=null,e;if(P.test(t))n=16,t=t.toLowerCase();else if(b.test(t))n=2;else{if(!A.test(t))throw Error(h+t);n=8}for((o=t.search(/p/i))>0?(u=+t.slice(o+1),t=t.substring(2,o)):t=t.slice(2),a=(o=t.indexOf("."))>=0,i=e.constructor,a&&(o=(l=(t=t.replace(".","")).length)-o,s=intPow(i,new i(n),o,2*o)),o=m=(c=convertBase(t,n,M)).length-1;0===c[o];--o)c.pop();return o<0?new i(0*e.s):(e.e=getBase10Exponent(c,m),e.d=c,g=!1,a&&(e=R(e,s,4*l)),u&&(e=e.times(Math.abs(u)<54?w(2,u):r.pow(2,u))),g=!0,e)}function taylorSeries(e,t,n,i,r){var s,o,a,l,u=e.precision,c=Math.ceil(u/7);for(g=!1,l=n.times(n),a=new e(i);;){if(o=R(a.times(l),new e(t++*t++),u,1),a=r?i.plus(o):i.minus(o),i=R(o.times(l),new e(t++*t++),u,1),void 0!==(o=a.plus(i)).d[c]){for(s=c;o.d[s]===a.d[s]&&s--;);if(-1==s)break}s=a,a=i,i=o,o=s}return g=!0,o.d.length=c+1,o}function tinyPow(e,t){for(var n=e;--t;)n*=e;return n}function toLessThanHalfPi(e,t){var n,i=t.s<0,r=getPi(e,e.precision,1),s=r.times(.5);if((t=t.abs()).lte(s))return o=i?4:1,t;if((n=t.divToInt(r)).isZero())o=i?3:2;else{if((t=t.minus(n.times(r))).lte(s))return o=isOdd(n)?i?2:3:i?4:1,t;o=isOdd(n)?i?1:4:i?3:2}return t.minus(r).abs()}function toStringBinary(e,t,n,i){var r,o,a,c,m,p,g,d,h,x=e.constructor,E=void 0!==n;if(E?(checkInt32(n,1,l),void 0===i?i=x.rounding:checkInt32(i,0,8)):(n=x.precision,i=x.rounding),e.isFinite()){for(E?(r=2,16==t?n=4*n-3:8==t&&(n=3*n-2)):r=t,(a=(g=finiteToString(e)).indexOf("."))>=0&&(g=g.replace(".",""),(h=new x(1)).e=g.length-a,h.d=convertBase(finiteToString(h),10,r),h.e=h.d.length),o=m=(d=convertBase(g,10,r)).length;0==d[--m];)d.pop();if(d[0]){if(a<0?o--:((e=new x(e)).d=d,e.e=o,d=(e=R(e,h,n,i,0,r)).d,o=e.e,p=s),a=d[n],c=r/2,p=p||void 0!==d[n+1],p=i<4?(void 0!==a||p)&&(0===i||i===(e.s<0?3:2)):a>c||a===c&&(4===i||p||6===i&&1&d[n-1]||i===(e.s<0?8:7)),d.length=n,p)for(;++d[--n]>r-1;)d[n]=0,n||(++o,d.unshift(1));for(m=d.length;!d[m-1];--m);for(a=0,g="";a<m;a++)g+=u.charAt(d[a]);if(E){if(m>1)if(16==t||8==t){for(a=16==t?4:3,--m;m%a;m++)g+="0";for(m=(d=convertBase(g,r,t)).length;!d[m-1];--m);for(a=1,g="1.";a<m;a++)g+=u.charAt(d[a])}else g=g.charAt(0)+"."+g.slice(1);g=g+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)g="0"+g;g="0."+g}else if(++o>m)for(o-=m;o--;)g+="0";else o<m&&(g=g.slice(0,o)+"."+g.slice(o))}else g=E?"0p+0":"0";g=(16==t?"0x":2==t?"0b":8==t?"0o":"")+g}else g=nonFiniteToString(e);return e.s<0?"-"+g:g}function truncate(e,t){if(e.length>t)return e.length=t,!0}function abs(e){return new this(e).abs()}function acos(e){return new this(e).acos()}function acosh(e){return new this(e).acosh()}function add(e,t){return new this(e).plus(t)}function asin(e){return new this(e).asin()}function asinh(e){return new this(e).asinh()}function atan(e){return new this(e).atan()}function atanh(e){return new this(e).atanh()}function atan2(e,t){e=new this(e),t=new this(t);var n,i=this.precision,r=this.rounding,s=i+4;return e.s&&t.s?e.d||t.d?!t.d||e.isZero()?(n=t.s<0?getPi(this,i,r):new this(0)).s=e.s:!e.d||t.isZero()?(n=getPi(this,s,1).times(.5)).s=e.s:t.s<0?(this.precision=s,this.rounding=1,n=this.atan(R(e,t,s,1)),t=getPi(this,s,1),this.precision=i,this.rounding=r,n=e.s<0?n.minus(t):n.plus(t)):n=this.atan(R(e,t,s,1)):(n=getPi(this,s,1).times(t.s>0?.25:.75)).s=e.s:n=new this(NaN),n}function cbrt(e){return new this(e).cbrt()}function ceil(e){return finalise(e=new this(e),e.e+1,2)}function clamp(e,t,n){return new this(e).clamp(t,n)}function config(e){if(!e||"object"!=typeof e)throw Error(d+"Object expected");var t,n,i,r=!0===e.defaults,s=["precision",1,l,"rounding",0,8,"toExpNeg",-a,0,"toExpPos",0,a,"maxE",0,a,"minE",-a,0,"modulo",0,9];for(t=0;t<s.length;t+=3)if(n=s[t],r&&(this[n]=p[n]),void 0!==(i=e[n])){if(!(v(i)===i&&i>=s[t+1]&&i<=s[t+2]))throw Error(h+n+": "+i);this[n]=i}if(n="crypto",r&&(this[n]=p[n]),void 0!==(i=e[n])){if(!0!==i&&!1!==i&&0!==i&&1!==i)throw Error(h+n+": "+i);if(i){if("undefined"==typeof crypto||!crypto||!crypto.getRandomValues&&!crypto.randomBytes)throw Error(E);this[n]=!0}else this[n]=!1}return this}function cos(e){return new this(e).cos()}function cosh(e){return new this(e).cosh()}function div(e,t){return new this(e).div(t)}function exp(e){return new this(e).exp()}function floor(e){return finalise(e=new this(e),e.e+1,3)}function hypot(){var e,t,n=new this(0);for(g=!1,e=0;e<arguments.length;)if((t=new this(arguments[e++])).d)n.d&&(n=n.plus(t.times(t)));else{if(t.s)return g=!0,new this(1/0);n=t}return g=!0,n.sqrt()}function isDecimalInstance(e){return e instanceof r||e&&e.toStringTag===y||!1}function ln(e){return new this(e).ln()}function log(e,t){return new this(e).log(t)}function log2(e){return new this(e).log(2)}function log10(e){return new this(e).log(10)}function max(){return maxOrMin(this,arguments,-1)}function min(){return maxOrMin(this,arguments,1)}function mod(e,t){return new this(e).mod(t)}function mul(e,t){return new this(e).mul(t)}function pow(e,t){return new this(e).pow(t)}function random(e){var t,n,i,r,s=0,o=new this(1),a=[];if(void 0===e?e=this.precision:checkInt32(e,1,l),i=Math.ceil(e/7),this.crypto)if(crypto.getRandomValues)for(t=crypto.getRandomValues(new Uint32Array(i));s<i;)(r=t[s])>=429e7?t[s]=crypto.getRandomValues(new Uint32Array(1))[0]:a[s++]=r%1e7;else{if(!crypto.randomBytes)throw Error(E);for(t=crypto.randomBytes(i*=4);s<i;)(r=t[s]+(t[s+1]<<8)+(t[s+2]<<16)+((127&t[s+3])<<24))>=214e7?crypto.randomBytes(4).copy(t,s):(a.push(r%1e7),s+=4);s=i/4}else for(;s<i;)a[s++]=1e7*Math.random()|0;for(e%=7,(i=a[--s])&&e&&(r=w(10,7-e),a[s]=(i/r|0)*r);0===a[s];s--)a.pop();if(s<0)n=0,a=[0];else{for(n=-1;0===a[0];n-=7)a.shift();for(i=1,r=a[0];r>=10;r/=10)i++;i<7&&(n-=7-i)}return o.e=n,o.d=a,o}function round(e){return finalise(e=new this(e),e.e+1,this.rounding)}function sign(e){return(e=new this(e)).d?e.d[0]?e.s:0*e.s:e.s||NaN}function sin(e){return new this(e).sin()}function sinh(e){return new this(e).sinh()}function sqrt(e){return new this(e).sqrt()}function sub(e,t){return new this(e).sub(t)}function sum(){var e=0,t=arguments,n=new this(t[e]);for(g=!1;n.s&&++e<t.length;)n=n.plus(t[e]);return g=!0,finalise(n,this.precision,this.rounding)}function tan(e){return new this(e).tan()}function tanh(e){return new this(e).tanh()}function trunc(e){return finalise(e=new this(e),e.e+1,1)}r=function clone(e){var t,n,i;function Decimal(e){var t,n,i,r=this;if(!(r instanceof Decimal))return new Decimal(e);if(r.constructor=Decimal,isDecimalInstance(e))return r.s=e.s,void(g?!e.d||e.e>Decimal.maxE?(r.e=NaN,r.d=null):e.e<Decimal.minE?(r.e=0,r.d=[0]):(r.e=e.e,r.d=e.d.slice()):(r.e=e.e,r.d=e.d?e.d.slice():e.d));if("number"===(i=typeof e)){if(0===e)return r.s=1/e<0?-1:1,r.e=0,void(r.d=[0]);if(e<0?(e=-e,r.s=-1):r.s=1,e===~~e&&e<1e7){for(t=0,n=e;n>=10;n/=10)t++;return void(g?t>Decimal.maxE?(r.e=NaN,r.d=null):t<Decimal.minE?(r.e=0,r.d=[0]):(r.e=t,r.d=[e]):(r.e=t,r.d=[e]))}return 0*e!=0?(e||(r.s=NaN),r.e=NaN,void(r.d=null)):parseDecimal(r,e.toString())}if("string"===i)return 45===(n=e.charCodeAt(0))?(e=e.slice(1),r.s=-1):(43===n&&(e=e.slice(1)),r.s=1),N.test(e)?parseDecimal(r,e):parseOther(r,e);if("bigint"===i)return e<0?(e=-e,r.s=-1):r.s=1,parseDecimal(r,e.toString());throw Error(h+e)}if(Decimal.prototype=O,Decimal.ROUND_UP=0,Decimal.ROUND_DOWN=1,Decimal.ROUND_CEIL=2,Decimal.ROUND_FLOOR=3,Decimal.ROUND_HALF_UP=4,Decimal.ROUND_HALF_DOWN=5,Decimal.ROUND_HALF_EVEN=6,Decimal.ROUND_HALF_CEIL=7,Decimal.ROUND_HALF_FLOOR=8,Decimal.EUCLID=9,Decimal.config=Decimal.set=config,Decimal.clone=clone,Decimal.isDecimal=isDecimalInstance,Decimal.abs=abs,Decimal.acos=acos,Decimal.acosh=acosh,Decimal.add=add,Decimal.asin=asin,Decimal.asinh=asinh,Decimal.atan=atan,Decimal.atanh=atanh,Decimal.atan2=atan2,Decimal.cbrt=cbrt,Decimal.ceil=ceil,Decimal.clamp=clamp,Decimal.cos=cos,Decimal.cosh=cosh,Decimal.div=div,Decimal.exp=exp,Decimal.floor=floor,Decimal.hypot=hypot,Decimal.ln=ln,Decimal.log=log,Decimal.log10=log10,Decimal.log2=log2,Decimal.max=max,Decimal.min=min,Decimal.mod=mod,Decimal.mul=mul,Decimal.pow=pow,Decimal.random=random,Decimal.round=round,Decimal.sign=sign,Decimal.sin=sin,Decimal.sinh=sinh,Decimal.sqrt=sqrt,Decimal.sub=sub,Decimal.sum=sum,Decimal.tan=tan,Decimal.tanh=tanh,Decimal.trunc=trunc,void 0===e&&(e={}),e&&!0!==e.defaults)for(i=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],t=0;t<i.length;)e.hasOwnProperty(n=i[t++])||(e[n]=this[n]);return Decimal.config(e),Decimal}(p),r.prototype.constructor=r,r.default=r.Decimal=r,c=new r(c),m=new r(m),void 0===(i=function(){return r}.call(t,n,t,e))||(e.exports=i)}()},1339(e,t,n){"use strict";t.completeSquare=function completeSquare(e,t){const n=void 0===t?void 0:(0,i.assertPlainVariableAndGetString)(t);return(0,r.sqcomp)(e,n).expression};const i=n(1897),r=n(2634)},6431(e,t,n){"use strict";t.Groebner=function Groebner(e,t="LEX",n=!0){if(0===e.length)return[];const r=groebnerBasisSparse(e,{order:t,reduced:n}),s=r[0]?.variableCount??e[0].variableCount,o=new Map,getInfo=e=>{let n=o.get(e);return n||(n={pv:variablePresence(e),lt:ltOrNull(e,t)},o.set(e,n)),n};return[...r].sort((e,n)=>{const r=getInfo(e),o=getInfo(n);for(let e=0;e<s;e++){const t=r.pv[e]?1:0,n=o.pv[e]?1:0;if(t!==n)return t>n?-1:1}if(r.lt&&o.lt){const e=i.SparsePolynomial.compareMonomials(r.lt.exp,o.lt.exp,sparseOrder(t));if(0!==e)return e}return e.termCount-n.termCount})};const i=n(7248),r=n(4703),s=n(551);class GroebnerBudgetExceeded extends Error{stats;constructor(e,t){super(e),this.name="GroebnerBudgetExceeded",this.stats=t}}function sparseOrder(e){return"LEX"===e?"lex":"GRLEX"===e?"grlex":"grevlex"}function ltOrNull(e,t){const n=e.leadingTerm(sparseOrder(t));return null===n?null:{exp:n.exponents,coeff:n.coefficient}}function polyKey(e){const t=e.terms().map(e=>`${e.exponents.join(",")}:${e.coefficient.toString()}`);return t.sort(),t.join("|")}function primitiveNormalizeOrder(e,t){if(e.isZero())return i.SparsePolynomial.zero(e.variableCount);let n=e.primitivePart().normalizeLeadingSign(sparseOrder(t));const r=ltOrNull(n,t);if(r&&0n!==r.coeff&&1n!==r.coeff){let e=!0;for(const t of n.terms())if(t.coefficient%r.coeff!==0n){e=!1;break}e&&(n=n.divideByScalarExact(r.coeff))}return n}function expLcmDense(e,t){if(e.length!==t.length)throw new RangeError((0,r.message)("multidegreeMismatch"));const n=new Array(e.length);for(let i=0;i<e.length;i++)n[i]=e[i]>t[i]?e[i]:t[i];return n}function monoDividesDense(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]>t[n])return!1;return!0}function monoSubDense(e,t){if(t.length!==e.length)throw new RangeError((0,r.message)("multidegreeMismatch"));const n=new Array(t.length);for(let i=0;i<t.length;i++)n[i]=e[i]-t[i];return n}function monomialTotalDegreeDense(e){let t=0n;for(const n of e)t+=n;return t}function reducerViews(e,t,n){const i=[];for(const r of e){const e=n?primitiveNormalizeOrder(r,t):r;if(e.isZero())continue;const s=ltOrNull(e,t);null!==s&&i.push({poly:e,lt:s})}return i}function normalFormFractionFree(e,t,n,i=reducerViews(t,n,!1),r){let s=e;if(s.isZero())return s;for(;;){const e=ltOrNull(s,n);if(!e)break;let t=!1;for(let n=0;n<i.length;n++){const{poly:o,lt:a}=i[n];if(!monoDividesDense(a.exp,e.exp))continue;const l=monoSubDense(e.exp,a.exp);if(r){const e=r.reducerSugars[n]+monomialTotalDegreeDense(l);e>r.value&&(r.value=e)}s=s.scaleSubtractMonomial(a.coeff,o,e.coeff,l),t=!0;break}if(!t)break}return s}function normalFormFractionFreeAllTerms(e,t,n,r=reducerViews(t,n,!0),s){let o=primitiveNormalizeOrder(e,n);if(o.isZero()||0===r.length)return o;const a=sparseOrder(n);for(;;){let e=null,t=null,l=-1;for(const n of o.terms()){let s=null,o=-1;for(let e=0;e<r.length;e++){const t=r[e];if(monoDividesDense(t.lt.exp,n.exponents)){s=t,o=e;break}}null!==s&&(null===e||i.SparsePolynomial.compareMonomials(n.exponents,e.exponents,a)>0)&&(e=n,t=s,l=o)}if(null===e||null===t)break;const u=monoSubDense(e.exponents,t.lt.exp);if(s){const e=s.reducerSugars[l]+monomialTotalDegreeDense(u);e>s.value&&(s.value=e)}o=primitiveNormalizeOrder(o.scaleSubtractMonomial(t.lt.coeff,t.poly,e.coefficient,u),n)}return o}function variablePresence(e){const t=new Array(e.variableCount).fill(!1);for(const n of e.variables())t[n]=!0;return t}function sPairSugar(e,t,n,i,r){const s=e+r-n,o=t+r-i;return s>o?s:o}function insertPairSorted(e,t){let n=0,i=e.length;for(;n<i;){const r=n+i>>>1,s=e[r];s.sugar>t.sugar||s.sugar===t.sugar&&s.lcmDeg>=t.lcmDeg?n=r+1:i=r}e.splice(n,0,t)}function groebnerBasisSparse(e,t="LEX"){const n="string"==typeof t?{order:t}:t??{},s=n.order??"LEX",o=n.reduced??!0,a=n.maxPairsPopped,l=n.maxBasisSize,u=n.strategy??"sugar",c={pairsPopped:0,pairsSkippedProduct:0,pairsSkippedChain:0,pairsReducedToZero:0,basisAppends:0},m=e.filter(e=>!e.isZero());if(0===m.length)return[];const p=m[0].variableCount;for(const e of m)if(e.variableCount!==p)throw new RangeError((0,r.message)("multidegreeMismatch"));const g=m.slice(),d=reducerViews(g,s,!1),h=reducerViews(g,s,!0),x=d.map(e=>monomialTotalDegreeDense(e.lt.exp)),E=g.map(e=>e.totalDegree()??0n),y=g.map(()=>new Set),markZeroPair=(e,t)=>{y[e].add(t),y[t].add(e)},areCoprimeLM=(e,t)=>{for(let n=0;n<p;n++)if(e[n]>0n&&t[n]>0n)return!1;return!0},chainCriterionApplies=(e,t)=>{const n=expLcmDense(d[e].lt.exp,d[t].lt.exp),i=y[e],r=y[t],s=i.size<=r.size?i:r,o=s===i?r:i;for(const i of s)if(i!==e&&i!==t&&o.has(i)&&monoDividesDense(d[i].lt.exp,n))return!0;return!1},appendBasis=e=>{const t=g.length;g.push(e);const n=reducerViews([e],s,!1)[0],i=reducerViews([e],s,!0)[0];if(d.push(n),h.push(i),x.push(monomialTotalDegreeDense(n.lt.exp)),y.push(new Set),c.basisAppends++,void 0!==l&&g.length>l)throw new GroebnerBudgetExceeded((0,r.message)("groebnerBasisSizeBudgetExceeded",{max:String(l)}),c);return t},reducePair=(e,t,n)=>{const i=function sPolynomialFF(e,t,n,i){const r=expLcmDense(n.exp,i.exp),s=monoSubDense(r,n.exp),o=monoSubDense(r,i.exp);return e.monomialScaleSubtract(i.coeff,s,t,n.coeff,o)}(g[e],g[t],d[e].lt,d[t].lt),r=void 0===n?void 0:{value:n,reducerSugars:E};return{polynomial:normalFormFractionFreeAllTerms(normalFormFractionFree(i,g,s,d,r),g,s,h,r),sugar:r?.value}};if("sugar"===u){const e=[],makePair=(e,t)=>{const n=monomialTotalDegreeDense(expLcmDense(d[e].lt.exp,d[t].lt.exp));return{i:e,j:t,sugar:sPairSugar(E[e],E[t],x[e],x[t],n),lcmDeg:n}};for(let t=0;t<g.length;t++)for(let n=t+1;n<g.length;n++)insertPairSorted(e,makePair(t,n));for(;e.length>0;){const{i:t,j:n,sugar:s}=e.pop();if(c.pairsPopped++,void 0!==a&&c.pairsPopped>a)throw new GroebnerBudgetExceeded((0,r.message)("groebnerPairsBudgetExceeded",{max:String(a)}),c);if(areCoprimeLM(d[t].lt.exp,d[n].lt.exp)){c.pairsSkippedProduct++,markZeroPair(t,n);continue}if(chainCriterionApplies(t,n)){c.pairsSkippedChain++,markZeroPair(t,n);continue}const o=reducePair(t,n,s),l=o.polynomial;if(l.isZero()){c.pairsReducedToZero++,markZeroPair(t,n);continue}if(l.isConstant()&&0n!==l.constantTerm())return[i.SparsePolynomial.constant(p,1n)];const u=appendBasis(l),m=l.totalDegree()??0n,g=o.sugar??s;E.push(g>m?g:m);for(let t=0;t<u;t++)insertPairSorted(e,makePair(t,u))}}else{const e=[];for(let t=0;t<g.length;t++)for(let n=t+1;n<g.length;n++)e.push([t,n]);let t=0;for(;t<e.length;){const[n,s]=e[t++];if(c.pairsPopped++,void 0!==a&&c.pairsPopped>a)throw new GroebnerBudgetExceeded((0,r.message)("groebnerPairsBudgetExceeded",{max:String(a)}),c);if(areCoprimeLM(d[n].lt.exp,d[s].lt.exp)){c.pairsSkippedProduct++,markZeroPair(n,s);continue}if(chainCriterionApplies(n,s)){c.pairsSkippedChain++,markZeroPair(n,s);continue}const o=reducePair(n,s).polynomial;if(o.isZero()){c.pairsReducedToZero++,markZeroPair(n,s);continue}if(o.isConstant()&&0n!==o.constantTerm())return[i.SparsePolynomial.constant(p,1n)];const l=appendBasis(o);for(let t=0;t<l;t++)e.push([t,l])}}return o?function canonicalizeBasis(e,t){const n=[],r=[],s=[],o=e.filter(e=>!e.isZero());for(const e of o){const i=normalFormFractionFreeAllTerms(normalFormFractionFree(e,n,t,r),n,t,s);i.isZero()||(n.push(i),r.push(reducerViews([i],t,!1)[0]),s.push(reducerViews([i],t,!0)[0]))}const a=[];for(let e=0;e<n.length;e++){const i=n.filter((t,n)=>n!==e),o=r.filter((t,n)=>n!==e),l=s.filter((t,n)=>n!==e),u=normalFormFractionFreeAllTerms(normalFormFractionFree(n[e],i,t,o),i,t,l);u.isZero()||a.push(u)}const l=new Map;for(const e of a)l.set(polyKey(e),e);const u=Array.from(l.values()),c=sparseOrder(t),m=new Map;for(const e of u)m.set(e,{presence:variablePresence(e),lt:ltOrNull(e,t)});return u.sort((e,t)=>{const n=m.get(e),r=m.get(t);for(let t=0;t<e.variableCount;t++){const e=n.presence[t]?1:0,i=r.presence[t]?1:0;if(e!==i)return e-i}if(n.lt&&r.lt){const e=i.SparsePolynomial.compareMonomials(n.lt.exp,r.lt.exp,c);if(0!==e)return e}return e.termCount-t.termCount}),u}(g,s):g}function reduceSparseByBasis(e,t,n){if(e.isZero()||0===t.length)return e;const i=reducerViews(t,n,!1),r=reducerViews(t,n,!0);return normalFormFractionFreeAllTerms(normalFormFractionFree(e,t,n,i),t,n,r)}function scaleByDenomPow(e,t,n){const r=e.degree(t);return null===r||0n===r||1n===n?e:new i.SparsePolynomial(e.variableCount,e.terms().map(e=>({coefficient:e.coefficient*n**(r-e.exponents[t]),exponents:e.exponents})))}function rationalRootsUnivariate(e,t){const n=e.degree(t);if(null===n||0n===n)return[];const r=e.coefficientIn(t,n).constantTerm(),o=e.constantTerm();if(0n===o){const r=[{n:0n,d:1n}];let s=n;for(const n of e.terms())n.exponents[t]<s&&n.exponents[t];const o=new i.SparsePolynomial(e.variableCount,e.terms().map(e=>{const n=[...e.exponents];return n[t]-=s,{coefficient:e.coefficient,exponents:n}}));for(const e of rationalRootsUnivariate(o,t))0n!==e.n&&r.push(e);return r}const a=positiveDivisors((0,s.abs)(o)),l=positiveDivisors((0,s.abs)(r)),u=[],c=new Set;for(const i of a)for(const r of l)for(const o of[1n,-1n]){const a=o*i,l=(0,s.GCD)((0,s.abs)(a),r),m=a/l,p=r/l,g=`${m}/${p}`;c.has(g)||(c.add(g),evaluatesAtRationalToZero(e,t,n,m,p)&&u.push({n:m,d:p}))}return u}function evaluatesAtRationalToZero(e,t,n,i,r){let s=0n;for(const s of e.terms()){const e=s.exponents[t];s.coefficient*i**e*r**(n-e)}return 0n===s}function evaluatesToZero(e,t,n){const i=e.degree(t);return null===i||(0n===i?0n===e.constantTerm():evaluatesAtRationalToZero(e,t,i,n.n,n.d))}function positiveDivisors(e){if(0n===e)return[0n];e<0n&&-e;const t=[];let n=1n;for(;n*n<=e;)e%n===0n&&(t.push(n),n!==e/n&&t.push(e/n));return t}},193(e,t,n){"use strict";t.loadAlgebraFunctions=function loadAlgebraFunctions(){Object.assign(i.mathFunctionRegistry,{polyfactors:(0,i.systemFunction)({fn:o.polyFactors,minArgs:1,maxArgs:1,distElWise:!1}),factor:(0,i.systemFunction)({fn:o.factor,minArgs:1,maxArgs:1,distElWise:!0}),[r.PFACTOR]:(0,i.systemFunction)({fn:o.pfactor,minArgs:1,maxArgs:1,distElWise:!1}),[r.PFACTORD]:(0,i.systemFunction)({fn:o.pfactord,minArgs:1,maxArgs:1,distElWise:!1}),simplify:(0,i.systemFunction)({fn:c.simplify,minArgs:1,maxArgs:1,distElWise:!0}),partfrac:(0,i.systemFunction)({fn:u.partfrac,minArgs:1,maxArgs:2,distElWise:!0}),gcd:(0,i.systemFunction)({fn:a.gcd,minArgs:2,maxArgs:2,distElWise:!0}),lcm:(0,i.systemFunction)({fn:a.lcm,minArgs:2,maxArgs:2,distElWise:!0}),groebner:(0,i.systemFunction)({fn:l.groebner,minArgs:1,maxArgs:2,distElWise:!1}),sqcomp:(0,i.systemFunction)({fn:s.completeSquare,minArgs:1,maxArgs:2,distElWise:!0})})};const i=n(9426),r=n(8300),s=n(1339),o=n(2724),a=n(4692),l=n(3725),u=n(2766),c=n(9684)},2724(e,t,n){"use strict";t.factor=function factor(e){let t;try{if((e=s.Expression.create(e)).isZero())t=e;else if(e.isNUM()&&e.isInteger()){let n;const i=(0,p.primeFactorCounts)(e.getMultiplier().numerator);for(const e in i){const t=s.Expression.toEXP(e,i[e]);n=n?(0,l.merge)(n,t):t}t=n??s.Expression.Number("1"),-1===e.sign()&&(t=t.neg())}else if(e.isVAR())t=e;else if(e.isFunction()){const n=e.getMultiplier(),i=e.getPower();t=s.Expression.toFunction(e.name,e.getArguments().map(e=>factor(e))),t=t.pow(i).times(n)}else if(e.isPolynomialLike())t=polyFactors(e).prod();else{const n=factors(e);t=n.numerator.prod().div(n.denominator.prod())}}catch{t=s.Expression.toFunction(a.FACTOR,[e])}return t},t.pfactor=function pfactor(e){const t=s.Expression.create(e);if(!t.isNUM()||!t.isInteger()||t.lte((0,o.zero)()))throw new m.UnexpectedInputError((0,m.message)("wrongInput",{expected:"a positive integer",received:t.text()}));const n=t.getMultiplier().numerator;if(1n===n)return new c.Vector;const i=(0,p.primeFactorsBig)(n).factors.map(e=>s.Expression.Number(e));return new c.Vector(i)},t.pfactord=function pfactord(e){const t=s.Expression.create(e);if(!t.isNUM()||!t.isInteger()||t.lte((0,o.zero)()))throw new m.UnexpectedInputError((0,m.message)("wrongInput",{expected:"a positive integer",received:t.text()}));const n=t.getMultiplier().numerator;if(1n===n)return new i.Dictionary;const r=(0,p.primeFactorCounts)(n),a=new i.Dictionary;for(const e of Object.keys(r).sort((e,t)=>{const n=BigInt(e),i=BigInt(t);return n<i?-1:n>i?1:0}))a.set(e,s.Expression.Number(r[e]));return a},t.polyFactorExpressions=polyFactorExpressions,t.polyFactors=polyFactors,t.factorExpressionParts=factorExpressionParts;const i=n(6528),r=n(6056),s=n(296),o=n(6099),a=n(8300),l=n(6498),u=n(6105),c=n(3982),m=n(4703),p=n(982),g=n(886),d=n(133),h=n(4262),x=n(6827);function polyFactorExpressions(e){let t;try{const n=(0,r.normalizeMultiplierDenominators)(s.Expression.create(e)),i=n.getNumerator(),o=n.getDenominator(),[a,l]=(0,g.uSubConstants)(i),c=(0,u.expressionToSparsePolynomial)(a),p=c.variables,x=c.polynomial;if(0===p.length)t=[s.Expression.Number(x.constantTerm())];else{const e=p.map((e,t)=>t),n=1===p.length?(0,d.factorUnivariateInteger)(x,0):(0,h.factorMultivariateInteger)(x,e);t=[],1n!==n.content&&t.push(s.Expression.Number(n.content));for(const e of n.factors){let n=(0,u.sparsePolynomialToExpression)(e.factor,p);e.multiplicity>1n&&(n=n.pow(s.Expression.Number(e.multiplicity))),t.push(n)}if(0===t.length)throw new Error((0,m.message)("factorizationNoFactors"))}t=t.map(e=>(0,g.uUnSub)(e,l)),o.isOne()||(t[0]=t[0].div(o))}catch{t=[s.Expression.create(e)]}return t}function polyFactors(e){return new c.Vector(polyFactorExpressions(e))}function factorExpressionParts(e){const{numerator:t,denominator:n,map:i}=(0,x.polynomialize)(s.Expression.create(e));return{numerator:polyFactorExpressions(t).map(e=>(0,g.uUnSub)(e,i)),denominator:polyFactorExpressions(n).map(e=>(0,g.uUnSub)(e,i))}}function factors(e){const{numerator:t,denominator:n}=factorExpressionParts(e);return{numerator:new c.Vector(t),denominator:new c.Vector(n)}}},4692(e,t,n){"use strict";t.gcd=gcd,t.lcm=function lcm(e,t){const n=r.Expression.create(e),i=r.Expression.create(t);let o;o=n.isZero()||i.isZero()?(0,s.zero)():n.isNUM()&&i.isNUM()?r.Expression.fromRational(n.getMultiplier().LCM(i.getMultiplier()).abs()):n.times(i).div(gcd(n,i));return o};const i=n(6338),r=n(296),s=n(6099),o=n(8300),a=n(6105),l=n(551),u=n(886),c=n(6698),m=n(6827);function gcd(e,t){try{e=r.Expression.create(e),t=r.Expression.create(t);const n=e.hasDecimal()||t.hasDecimal(),{numerator:s,denominator:o,map:a}=(0,m.polynomialize)(e),{numerator:l,denominator:c,map:p}=(0,m.polynomialize)(t,a),g=(0,i.collectVariablesSet)([s,o,l,c]),d=expressionGCD(s,l,g),h=expressionGCD(o,c,g),x=(0,u.uUnSub)(d.div(h),p);return x.getMultiplier().asDecimal=n,x}catch{}return r.Expression.toFunction(o.GCD,[e,t])}function expressionGCD(e,t,n){if(e.isNUM()&&t.isNUM())return r.Expression.create(e.getMultiplier().GCD(t.getMultiplier()));if(e.isZero()&&t.isZero())return(0,s.zero)();if(e.isZero())return r.Expression.create(t);if(t.isZero())return r.Expression.create(e);n??=(0,i.collectVariablesSet)([e,t]);const o=(0,a.expressionToIntegerSparsePolynomial)(e,n),u=(0,a.expressionToIntegerSparsePolynomial)(t,n),m=n.map((e,t)=>t),p=(0,c.sparsePolynomialGcd)(o.polynomial,u.polynomial,m),g=(0,l.GCD)(o.denominator,u.denominator),d=(0,a.sparsePolynomialToExpression)(p,n);return 1n===g?d:d.div(r.Expression.Number(g))}},3725(e,t,n){"use strict";t.groebner=function groebner(e,t){const n=(o.Vector.isVector(e)?e.elements:e).map(e=>r.Expression.create(e));t??=(0,i.collectVariablesSet)(n);const l=n.map(e=>(0,s.expressionToIntegerSparsePolynomial)(e,t).polynomial);return new o.Vector((0,a.Groebner)(l).map(e=>(0,s.sparsePolynomialToExpression)(e,t)))};const i=n(6338),r=n(296),s=n(6105),o=n(3982),a=n(6431)},2766(e,t,n){"use strict";t.partfrac=function partfrac(e,t){const n=i.Expression.create(e);let u=n;const c=n.variables(),m=t?String(t):c[0];if(m&&c.length>0){const{num:e,den:t}=function extractNumDen(e,t){try{const t=e.getNumerator(),n=e.getDenominator();if(n&&!n.isOne())return{num:t,den:n}}catch{}if(e.isProduct()){let t=(0,r.one)(),n=(0,r.one)();for(const i of e.elementsArray())i.getPower().isNegative()?n=n.times(i.invert()):t=t.times(i);return t=t.times(i.Expression.fromRational(e.getMultiplier())),{num:t,den:n}}if(-1===e.getPower().sign())return{num:i.Expression.fromRational(e.getMultiplier()),den:e.invert()};return{num:e,den:(0,r.one)()}}(n);if(t.hasVariable(m)){const n=new o.Polynomial(e,[m]),c=new o.Polynomial(t,[m]),p=n.deg(),g=c.deg();let d=(0,r.zero)(),h=e;if(p>=g){const[n,i]=(0,a.divide)(e,t);d=n,h=i}if(i.Expression.create(h).isZero())u=d;else if(g<=1)d.isZero()||(u=d.plus(h.div(t)));else{const e=function collectFactors(e,t){const n=[],i=new Map;for(const r of e){let e=r;if(!e.hasVariable(t))continue;let s=1;const a=e.getPower();if(a.isInteger()){const t=Number(a.getNumerator());t>1&&(s=t,e=e.getBase())}const l=e.text(),u=new o.Polynomial(e,[t]).deg();i.has(l)?n[i.get(l)].power+=s:(i.set(l,n.length),n.push({expr:e,power:s,degree:u}))}return n}((0,l.polyFactorExpressions)(t),m);if(e.length>1||1===e.length&&e[0].power>1){const n=function decompose(e,t,n,o){const l=[];let u=0;for(const e of n)for(let t=1;t<=e.power;t++)l.push({factor:e.expr,power:t,unknownIndex:u,numUnknowns:e.degree}),u+=e.degree;const c=[];for(const e of n)if(1===e.degree){const t=findLinearRoot(e.expr,o);void 0!==t&&c.push(t)}let m=0;for(;c.length<u;){const e=i.Expression.Number(m);if(!evaluateAt(t,o,e).isZero()){c.some(t=>t.eq(e))||c.push(e)}m=m<=0?1-m:-m}const p=[],g=[],d=l.map(e=>function computeCofactor(e,t,n){const r=1===n?t:t.pow(i.Expression.Number(n)),[s]=(0,a.divide)(e,r);return s}(t,e.factor,e.power));for(let t=0;t<u;t++){const n=c[t],s=evaluateAt(e,o,n);g.push(s);const a=[];for(let e=0;e<l.length;e++){const t=l[e],s=evaluateAt(d[e],o,n);for(let e=t.numUnknowns-1;e>=0;e--){const t=0===e?(0,r.one)():n.pow(i.Expression.Number(e));a.push(t.times(s))}}p.push(a)}const h=function solveLinearSystem(e,t){const n=t.length;if(0===n)return[];const i=new s.Matrix(...e),r=new s.Matrix(...t.map(e=>[e])),o=i.augment(r).rref(),a=o.rows(),l=o.cols()-1;if(a!==n||l!==n)return;for(let e=0;e<a;e++){let t=!0;for(let n=0;n<l;n++)if(!o.elements[e][n].isZero()){t=!1;break}if(t&&!o.elements[e][l].isZero())return}const u=new Array(n),c=new Set;for(let e=0;e<a;e++){let t=-1;for(let n=0;n<l;n++)if(!o.elements[e][n].isZero()){t=n;break}if(-1!==t){if(!o.elements[e][t].eq("1"))return;if(c.has(t))return;c.add(t),u[t]=o.elements[e][l]}}if(c.size!==n)return;for(let e=0;e<n;e++)if(!u[e])return;return u}(p,g);if(void 0===h)return;let x=(0,r.zero)();const E=i.Expression.create(o);for(const e of l){const t=1===e.power?e.factor:e.factor.pow(i.Expression.Number(e.power));let n=(0,r.zero)();for(let t=0;t<e.numUnknowns;t++){const s=h[e.unknownIndex+t],o=e.numUnknowns-1-t,a=0===o?(0,r.one)():E.pow(i.Expression.Number(o));n=n.plus(s.times(a))}n.isZero()||(x=x.plus(n.div(t)))}return x}(h,t,e,m);void 0!==n&&(u=d.isZero()?n:d.plus(n))}}}}return u.text()===n.text()?n:u};const i=n(296),r=n(6099),s=n(4462),o=n(2116),a=n(9565),l=n(2724);function findLinearRoot(e,t){const n=evaluateAt(e,t,(0,r.zero)()),i=evaluateAt(e,t,(0,r.one)()).plus(n.times((0,r.minusOne)()));if(!i.isZero())return n.times((0,r.minusOne)()).div(i)}function evaluateAt(e,t,n){return e.subst(t,n)}},7134(e,t,n){"use strict";t.ModularSparsePolynomial=void 0;const i=n(7248),r=n(4703),s=n(551);class ModularSparsePolynomial{polynomial;modulus;variableCount;constructor(e,t,n=[]){if(t<=1n)throw new RangeError((0,r.message)("polyModulusGreaterThanOne"));let o;if(n instanceof i.SparsePolynomial){if(n.variableCount!==e)throw new RangeError((0,r.message)("polyVariableCountMatch"));o=n}else o=new i.SparsePolynomial(e,n);this.modulus=t,this.polynomial=o.mapCoefficients(e=>(0,s.mod)(e,t)),this.variableCount=this.polynomial.variableCount}static constant(e,t,n){return new ModularSparsePolynomial(e,t,[{coefficient:n,exponents:new Array(e).fill(0n)}])}static interpolateVariable(e,t){if(0===t.length)throw new RangeError((0,r.message)("polyRequires",{operation:"ModularSparsePolynomial interpolation",requirement:(0,r.message)("polyReqAtLeastOneSample")}));const n=t[0].polynomial;n.degree(e);const i=ModularSparsePolynomial.variable(n.variableCount,n.modulus,e);let o=ModularSparsePolynomial.zero(n.variableCount,n.modulus);for(let a=0;a<t.length;a++){const l=t[a];n.assertCompatible(l.polynomial);const u=l.polynomial.degree(e);if(null!==u&&0n!==u)throw new RangeError((0,r.message)("polyInterpolationCannotDepend"));const c=(0,s.mod)(l.value,n.modulus);let m=1n,p=ModularSparsePolynomial.constant(n.variableCount,n.modulus,1n);for(let e=0;e<t.length;e++){if(a===e)continue;const r=(0,s.mod)(t[e].value,n.modulus);p=p.multiply(i.subtract(ModularSparsePolynomial.constant(n.variableCount,n.modulus,r))),m=(0,s.mod)(m*(0,s.mod)(c-r,n.modulus),n.modulus)}const g=(0,s.invMod)(m,n.modulus);if(g<0n)throw new RangeError((0,r.message)("polyInterpolationInvertibleDifferences"));o=o.add(l.polynomial.multiply(p.scale(g)))}return o}static monomial(e,t,n,i){return new ModularSparsePolynomial(e,t,[{coefficient:n,exponents:i}])}static variable(e,t,n){const r=i.SparsePolynomial.variable(e,n);return new ModularSparsePolynomial(e,t,r)}static zero(e,t){return new ModularSparsePolynomial(e,t)}assertCompatible(e){if(this.variableCount!==e.variableCount||this.modulus!==e.modulus)throw new RangeError((0,r.message)("polyRequires",{operation:"ModularSparsePolynomial operations",requirement:(0,r.message)("polyReqSamePolynomialRing")}))}add(e){this.assertCompatible(e);const t=this.polynomial.add(e.polynomial);return new ModularSparsePolynomial(this.variableCount,this.modulus,t)}coefficient(e){return this.polynomial.coefficient(e)}coefficientIn(e,t){if(this.polynomial.degree(e),t<0n)throw new RangeError((0,r.message)("polyCoefficientExponentNonnegative"));const n=[];for(const i of this.polynomial.terms())if(i.exponents[e]===t){const t=[...i.exponents];t[e]=0n,n.push({coefficient:i.coefficient,exponents:t})}return new ModularSparsePolynomial(this.variableCount,this.modulus,n)}constantTerm(){return this.polynomial.constantTerm()}degree(e){return this.polynomial.degree(e)}derivative(e){this.polynomial.degree(e);const t=[];for(const n of this.polynomial.terms()){const i=n.exponents[e];if(0n===i)continue;const r=[...n.exponents];r[e]=i-1n,t.push({coefficient:(0,s.mod)(n.coefficient*i,this.modulus),exponents:r})}return new ModularSparsePolynomial(this.variableCount,this.modulus,t)}divideExact(e,t="lex"){const n=this.divideWithRemainder(e,t);return n.remainder.isZero()?n.quotient:null}divideWithRemainder(e,t="lex"){this.assertCompatible(e);const n=e.leadingTerm(t);if(null===n)throw new RangeError((0,r.message)("polyCannotDivideZero"));const i=(0,s.invMod)(n.coefficient,this.modulus);if(i<0n)throw new RangeError((0,r.message)("polyDivisorLeadingCoefficientInvertible"));let o=ModularSparsePolynomial.zero(this.variableCount,this.modulus),a=ModularSparsePolynomial.zero(this.variableCount,this.modulus),l=new ModularSparsePolynomial(this.variableCount,this.modulus,this.polynomial);for(;!l.isZero();){const r=l.leadingTerm(t);if(null===r)break;let u=!0;const c=new Array(this.variableCount);for(let e=0;e<this.variableCount;e++){if(r.exponents[e]<n.exponents[e]){u=!1;break}c[e]=r.exponents[e]-n.exponents[e]}if(u){const t=(0,s.mod)(r.coefficient*i,this.modulus),n=ModularSparsePolynomial.monomial(this.variableCount,this.modulus,t,c);o=o.add(n),l=l.subtract(e.multiply(n))}else{const e=ModularSparsePolynomial.monomial(this.variableCount,this.modulus,r.coefficient,r.exponents);a=a.add(e),l=l.subtract(e)}}return{quotient:o,remainder:a}}equals(e){return this.modulus===e.modulus&&this.polynomial.equals(e.polynomial)}evaluateVariable(e,t){this.polynomial.degree(e);const n=(0,s.mod)(t,this.modulus),i=[];for(const t of this.polynomial.terms()){const r=t.exponents[e],o=[...t.exponents];o[e]=0n,i.push({coefficient:(0,s.mod)(t.coefficient*(0,s.powMod)(n,r,this.modulus),this.modulus),exponents:o})}return new ModularSparsePolynomial(this.variableCount,this.modulus,i)}isConstant(){return this.polynomial.isConstant()}isZero(){return this.polynomial.isZero()}leadingCoefficientIn(e){const t=this.degree(e);return null===t?null:this.coefficientIn(e,t)}leadingTerm(e="lex"){return this.polynomial.leadingTerm(e)}monic(e="lex"){const t=this.leadingTerm(e);if(null===t||1n===t.coefficient)return this;const n=(0,s.invMod)(t.coefficient,this.modulus);if(n<0n)throw new RangeError((0,r.message)("polyLeadingCoefficientInvertible"));return this.scale(n)}multiply(e){this.assertCompatible(e);const t=this.polynomial.multiply(e.polynomial);return new ModularSparsePolynomial(this.variableCount,this.modulus,t)}negate(){const e=this.polynomial.negate();return new ModularSparsePolynomial(this.variableCount,this.modulus,e)}pow(e){if(e<0n)throw new RangeError((0,r.message)("polyExponentNonnegative"));let t=ModularSparsePolynomial.constant(this.variableCount,this.modulus,1n),n=e;if(0n===n)return t;if(1n==(1n&n)&&(t=t.multiply(this)),n>>=1n,0n===n)return t;let i=this.multiply(this);for(;n>0n;)1n==(1n&n)&&(t=t.multiply(i)),n>>=1n,n>0n&&(i=i.multiply(i));return t}scale(e){const t=this.polynomial.scale((0,s.mod)(e,this.modulus));return new ModularSparsePolynomial(this.variableCount,this.modulus,t)}subtract(e){this.assertCompatible(e);const t=this.polynomial.subtract(e.polynomial);return new ModularSparsePolynomial(this.variableCount,this.modulus,t)}get termCount(){return this.polynomial.termCount}terms(){return this.polynomial.terms()}toSymmetricIntegerPolynomial(){const e=this.modulus/2n;return new i.SparsePolynomial(this.variableCount,this.terms().map(t=>({coefficient:t.coefficient>e?t.coefficient-this.modulus:t.coefficient,exponents:t.exponents})))}totalDegree(){return this.polynomial.totalDegree()}variables(){return this.polynomial.variables()}}t.ModularSparsePolynomial=ModularSparsePolynomial},7609(e,t,n){"use strict";t.henselLiftMultivariateFactors=function henselLiftMultivariateFactors(e,t,n,o,l,u){if(o.length<2)throw new RangeError((0,i.message)("polyRequires",{operation:"Multivariate Hensel lifting",requirement:(0,i.message)("polyReqAtLeastTwoSelectedVariables")}));if(l.length!==o.length-1)throw new RangeError((0,i.message)("polyRequires",{operation:"Multivariate Hensel lifting",requirement:(0,i.message)("polyReqOneEvaluationPerTailVariable")}));if(0===t.length||t.length!==n.length)throw new RangeError((0,i.message)("polyRequires",{operation:"Multivariate Hensel lifting",requirement:(0,i.message)("polyReqMatchingFactorLeadingLists")}));if(!(0,s.isPrimeBig)(u))throw new RangeError((0,i.message)("polyRequires",{operation:"Multivariate Hensel lifting",requirement:(0,i.message)("polyReqPrimeModulus")}));const c=o[0];let m=0n;for(const t of o.slice(1)){const n=e.degree(t)??0n;n>m&&(m=n)}if(u<=m)throw new RangeError((0,i.message)("polyHenselPrimeExceedsTailDegree"));for(const r of[...t,...n])if(r.variableCount!==e.variableCount)throw new RangeError((0,i.message)("polyRequires",{operation:"Multivariate Hensel lifting inputs",requirement:(0,i.message)("polyReqSamePolynomialRing")}));const p=new a.ModularSparsePolynomial(e.variableCount,u,e.terms());let g=t.map(e=>new a.ModularSparsePolynomial(e.variableCount,u,e.terms())),d=p;for(let e=0;e<l.length;e++)d=d.evaluateVariable(o[e+1],l[e]);if(!productModularFactors(g,p.variableCount,u).equals(d))return null;for(let e=0;e<g.length;e++)for(let t=e+1;t<g.length;t++){if(!modularExtendedGcdUnivariate(g[e],g[t],c).gcd.isConstant())return null}for(let e=0;e<o.length-1;e++){const t=o[e+1];let i=p;for(let t=e+1;t<l.length;t++)i=i.evaluateVariable(o[t+1],l[t]);const s=i.evaluateVariable(t,l[e]);if(!productModularFactors(g,p.variableCount,u).equals(s))return null;const d=buildMultivariateHenselSeeds(n,l,g,o,e,u);if(null===d)return null;g=[...d];const h=a.ModularSparsePolynomial.variable(p.variableCount,u,t).subtract(a.ModularSparsePolynomial.constant(p.variableCount,u,l[e])),x=i.degree(t)??0n,E=g.map(n=>n.evaluateVariable(t,l[e]));for(let n=1n;n<=x;n++){const s=i.subtract(productModularFactors(g,p.variableCount,u));if(s.isZero())break;const a=modularDerivativeOrder(s,t,n).evaluateVariable(t,l[e]),d=(0,r.invMod)(factorialModulo(n,u),u);if(d<0n)return null;const x=a.scale(d);if(x.isZero())continue;const y=solveMultivariateDiophantine(E,x,c,o.slice(1,e+1),l.slice(0,e),m);if(null===y)return null;const v=h.pow(n);g=g.map((e,t)=>e.add(y[t].multiply(v)))}if(!productModularFactors(g,p.variableCount,u).equals(i))return null}if(!productModularFactors(g,p.variableCount,u).equals(p))return null;return g.map(e=>e.toSymmetricIntegerPolynomial().primitivePart().normalizeLeadingSign("lex"))},t.henselLiftUnivariateFactors=function henselLiftUnivariateFactors(e,t,n,o,a){if(!(0,s.isPrimeBig)(t))throw new RangeError((0,i.message)("polyRequires",{operation:"Hensel lifting",requirement:(0,i.message)("polyReqPrimeBaseModulus")}));if(0===n.length)throw new RangeError((0,i.message)("polyRequires",{operation:"Hensel lifting",requirement:(0,i.message)("polyReqAtLeastOneModularFactor")}));if(a<t)throw new RangeError((0,i.message)("polyHenselTargetNotSmaller"));e.degree(o);for(const t of e.variables())if(t!==o)throw new RangeError((0,i.message)("polyRequires",{operation:"Hensel lifting",requirement:(0,i.message)("polyReqUnivariateIntegerPolynomial")}));for(const r of n){if(r.variableCount!==e.variableCount||r.modulus!==t)throw new RangeError((0,i.message)("polyRequires",{operation:"Hensel lifting",requirement:(0,i.message)("polyReqFactorsSameRingAndPrime")}));for(const e of r.variables())if(e!==o)throw new RangeError((0,i.message)("polyRequires",{operation:"Hensel lifting",requirement:(0,i.message)("polyReqUnivariateFactors")}));if(!r.equals(r.monic()))throw new RangeError((0,i.message)("polyRequires",{operation:"Hensel lifting",requirement:(0,i.message)("polyReqMonicModularFactors")}))}let l=t;for(;l<a;)l*=l;if(l!==a)throw new RangeError((0,i.message)("polyHenselTargetRepeatedSquaring"));const u=integerPolynomialModulo(e,t),c=u.leadingTerm();if(null===c)throw new RangeError((0,i.message)("polyCannotFactorZeroPolynomial",{operation:"Hensel lifting"}));if((0,r.invMod)(c.coefficient,t)<0n)throw new RangeError((0,i.message)("polyRequires",{operation:"Hensel lifting",requirement:(0,i.message)("polyReqIntegerLeadingCoefficientInvertible")}));if(!productModularFactors(n,e.variableCount,t).scale(c.coefficient).equals(u))throw new RangeError((0,i.message)("polyHenselFactorsReconstructModuloBase"));const m=integerPolynomialModulo(e,a),p=liftFactorGroup(m,t,n,o,a),g=m.leadingTerm();if(null===g)throw new Error((0,i.message)("polyHenselLeadingLost"));if(!productModularFactors(p,e.variableCount,a).scale(g.coefficient).equals(m))throw new Error((0,i.message)("polyHenselReconstructionFailed"));return p},t.factorSquareFreeUnivariateFiniteField=function factorSquareFreeUnivariateFiniteField(e,t){const n=function assertSquareFreeUnivariate(e,t){if(!(0,s.isPrimeBig)(e.modulus))throw new RangeError((0,i.message)("polyRequires",{operation:"Modular factorization",requirement:(0,i.message)("polyReqPrimeModulus")}));const n=e.degree(t);for(const n of e.variables())if(n!==t)throw new RangeError((0,i.message)("polyRequires",{operation:"Modular factorization",requirement:(0,i.message)("polyReqUnivariatePolynomial")}));if(null===n||0n===n)return 0;if(n>BigInt(Number.MAX_SAFE_INTEGER))throw new RangeError((0,i.message)("polyDegreeMatrixLimit"));const l=[];for(const n of e.terms()){const i=n.exponents[t];if(0n===i)continue;const s=[...n.exponents];s[t]=i-1n,l.push({coefficient:(0,r.mod)(n.coefficient*i,e.modulus),exponents:s})}const u=new a.ModularSparsePolynomial(e.variableCount,e.modulus,l),c=(0,o.modularGcdUnivariate)(e,u,t);if(!c.isConstant())throw new RangeError((0,i.message)("polyRequires",{operation:"Berlekamp factorization",requirement:(0,i.message)("polyReqSquareFreeInput")}));return Number(n)}(e,t);if(0===n)return[];const l=e.monic();if(1===n)return[l];const u=function polynomialPowMod(e,t,n){let i=a.ModularSparsePolynomial.constant(e.variableCount,e.modulus,1n),r=polynomialRemainder(e,n),s=t;for(;s>0n;)1n==(1n&s)&&(i=polynomialRemainder(i.multiply(r),n)),s>>=1n,s>0n&&(r=polynomialRemainder(r.multiply(r),n));return i}(a.ModularSparsePolynomial.variable(l.variableCount,l.modulus,t),l.modulus,l),c=Array.from({length:n},()=>new Array(n).fill(0n));let m=a.ModularSparsePolynomial.constant(l.variableCount,l.modulus,1n);for(let e=0;e<n;e++){for(let i=0;i<n;i++){const n=new Array(l.variableCount).fill(0n);n[t]=BigInt(i),c[i][e]=m.coefficient(n)}c[e][e]=(0,r.mod)(c[e][e]-1n,l.modulus),m=polynomialRemainder(m.multiply(u),l)}const p=function nullspaceModulo(e,t){const n=e.length,s=0===n?0:e[0].length,o=e.map(e=>e.map(e=>(0,r.mod)(e,t))),a=[];let l=0;for(let e=0;e<s&&l<n;e++){let u=l;for(;u<n&&0n===o[u][e];)u++;if(u===n)continue;if(u!==l){const e=o[l];o[l]=o[u],o[u]=e}const c=(0,r.invMod)(o[l][e],t);if(c<0n)throw new RangeError((0,i.message)("polyBerlekampNoninvertiblePivot"));for(let n=e;n<s;n++)o[l][n]=(0,r.mod)(o[l][n]*c,t);for(let i=0;i<n;i++){if(i===l||0n===o[i][e])continue;const n=o[i][e];for(let a=e;a<s;a++)o[i][a]=(0,r.mod)(o[i][a]-n*o[l][a],t)}a.push(e),l++}const u=new Set(a),c=[];for(let e=0;e<s;e++){if(u.has(e))continue;const n=new Array(s).fill(0n);n[e]=1n;for(let i=0;i<a.length;i++){n[a[i]]=(0,r.mod)(-o[i][e],t)}c.push(n)}return c}(c,l.modulus);if(p.length<=1)return[l];let g=[l];for(const e of p){if(g.length>=p.length)break;const n=vectorPolynomial(e,l.variableCount,l.modulus,t);if(n.isConstant())continue;let r=0n;for(;r<l.modulus&&g.length<p.length;){const e=n.subtract(a.ModularSparsePolynomial.constant(l.variableCount,l.modulus,r)),s=[];for(const n of g){const r=n.degree(t);if(null===r||r<=1n){s.push(n);continue}const a=(0,o.modularGcdUnivariate)(n,e,t);if(a.isConstant()||a.equals(n)){s.push(n);continue}const l=n.divideExact(a);if(null===l)throw new Error((0,i.message)("polyBerlekampNonExactSplit"));s.push(a.monic(),l.monic())}g=s,r++}}if(g.length!==p.length)throw new Error((0,i.message)("polyBerlekampIncompleteSplit"));let d=a.ModularSparsePolynomial.constant(l.variableCount,l.modulus,1n);for(const e of g)d=d.multiply(e);if(!d.equals(l))throw new Error((0,i.message)("polyBerlekampReconstructionFailed"));return g.sort((e,n)=>{const i=e.degree(t)??0n,r=n.degree(t)??0n;if(i!==r)return i<r?-1:1;const s=e.terms(),o=n.terms(),a=Math.min(s.length,o.length);for(let e=0;e<a;e++){const n=s[e].exponents[t],i=o[e].exponents[t];if(n!==i)return n<i?-1:1;if(s[e].coefficient!==o[e].coefficient)return s[e].coefficient<o[e].coefficient?-1:1}return s.length-o.length})};const i=n(4703),r=n(551),s=n(982),o=n(7404),a=n(7134);function polynomialRemainder(e,t){return e.divideWithRemainder(t).remainder}function vectorPolynomial(e,t,n,i){const r=[];for(let n=0;n<e.length;n++){const s=e[n];if(0n===s)continue;const o=new Array(t).fill(0n);o[i]=BigInt(n),r.push({coefficient:s,exponents:o})}return new a.ModularSparsePolynomial(t,n,r)}function changeModulus(e,t){return new a.ModularSparsePolynomial(e.variableCount,t,e.terms())}function integerPolynomialModulo(e,t){return new a.ModularSparsePolynomial(e.variableCount,t,e.terms())}function modularExtendedGcdUnivariate(e,t,n){if(e.variableCount!==t.variableCount||e.modulus!==t.modulus)throw new RangeError((0,i.message)("polyRequires",{operation:"Modular extended GCD",requirement:(0,i.message)("polyReqSamePolynomialRing")}));e.degree(n),t.degree(n);let s=e,o=t,l=a.ModularSparsePolynomial.constant(e.variableCount,e.modulus,1n),u=a.ModularSparsePolynomial.zero(e.variableCount,e.modulus),c=a.ModularSparsePolynomial.zero(e.variableCount,e.modulus),m=a.ModularSparsePolynomial.constant(e.variableCount,e.modulus,1n);for(;!o.isZero();){const e=s.divideWithRemainder(o),t=e.remainder,n=l.subtract(e.quotient.multiply(u)),i=c.subtract(e.quotient.multiply(m));s=o,o=t,l=u,u=n,c=m,m=i}const p=s.leadingTerm();if(null===p)throw new RangeError((0,i.message)("polyExtendedGcdTwoZeroUndefined"));const g=(0,r.invMod)(p.coefficient,e.modulus);if(g<0n)throw new RangeError((0,i.message)("polyRequires",{operation:"Modular extended GCD",requirement:(0,i.message)("polyReqInvertibleLeadingCoefficient")}));return{gcd:s.scale(g),leftCoefficient:l.scale(g),rightCoefficient:c.scale(g)}}function henselPairStep(e,t){const n=t.g.modulus,i=n*n,r=changeModulus(e,i),s=changeModulus(t.g,i),o=changeModulus(t.h,i),l=changeModulus(t.s,i),u=changeModulus(t.t,i),c=r.subtract(s.multiply(o)),m=l.multiply(c).divideWithRemainder(o),p=u.multiply(c).add(m.quotient.multiply(s)),g=s.add(p),d=o.add(m.remainder),h=l.multiply(g).add(u.multiply(d)).subtract(a.ModularSparsePolynomial.constant(r.variableCount,i,1n)),x=l.multiply(h).divideWithRemainder(d),E=u.multiply(h).add(x.quotient.multiply(g));return{g,h:d,s:l.subtract(x.remainder),t:u.subtract(E)}}function productModularFactors(e,t,n){let i=a.ModularSparsePolynomial.constant(t,n,1n);for(const t of e)i=i.multiply(changeModulus(t,n));return i}function modularDerivativeOrder(e,t,n){let i=e,r=n;for(;r>0n;)i=i.derivative(t),r--;return i}function factorialModulo(e,t){let n=1n,i=2n;for(;i<=e;)n=(0,r.mod)(n*i,t),i++;return n}function buildMultivariateHenselSeeds(e,t,n,i,r,s){const o=i[0],l=i[r+1],u=[];for(let c=0;c<n.length;c++){const m=n[c],p=m.degree(o);if(null===p)return null;const g=m.terms().filter(e=>e.exponents[o]!==p),d=new a.ModularSparsePolynomial(m.variableCount,s,g);let h=e[c];for(let e=r+1;e<t.length;e++)h=h.evaluateVariable(i[e+1],t[e]);const x=new a.ModularSparsePolynomial(h.variableCount,s,h.terms()),E=new Array(m.variableCount).fill(0n);E[o]=p;const y=a.ModularSparsePolynomial.monomial(m.variableCount,s,1n,E),v=x.multiply(y).add(d);if(!v.evaluateVariable(l,t[r]).equals(m))return null;u.push(v)}return u}function solveMultivariateDiophantine(e,t,n,s,o,l){if(s.length!==o.length)throw new RangeError((0,i.message)("polyRequires",{operation:"Multivariate Diophantine solving",requirement:(0,i.message)("polyReqOneEvaluationPerTailVariable")}));if(0===s.length)return function solveUnivariateDiophantine(e,t,n){const i=[];for(let r=0;r<e.length;r++){const s=modularExtendedGcdUnivariate(productModularFactors(e.filter((e,t)=>t!==r),e[r].variableCount,e[r].modulus),e[r],n);if(!s.gcd.isConstant())return null;const o=t.multiply(s.leftCoefficient).divideWithRemainder(e[r]).remainder;i.push(o)}let r=a.ModularSparsePolynomial.zero(t.variableCount,t.modulus);for(let n=0;n<e.length;n++){const s=productModularFactors(e.filter((e,t)=>t!==n),t.variableCount,t.modulus);r=r.add(i[n].multiply(s))}return r.equals(t)?i:null}(e,t,n);const u=s[s.length-1],c=o[o.length-1],m=s.slice(0,-1),p=o.slice(0,-1),g=e.map(e=>e.evaluateVariable(u,c)),d=solveMultivariateDiophantine(g,t.evaluateVariable(u,c),n,m,p,l);if(null===d)return null;const h=e.map((n,i)=>productModularFactors(e.filter((e,t)=>t!==i),t.variableCount,t.modulus));let x=[...d];const E=a.ModularSparsePolynomial.variable(t.variableCount,t.modulus,u).subtract(a.ModularSparsePolynomial.constant(t.variableCount,t.modulus,c));function residualFor(e){let n=t;for(let t=0;t<e.length;t++)n=n.subtract(e[t].multiply(h[t]));return n}let y=residualFor(x);for(let e=1n;e<=l&&!y.isZero();e++){const i=modularDerivativeOrder(y,u,e).evaluateVariable(u,c),s=(0,r.invMod)(factorialModulo(e,t.modulus),t.modulus);if(s<0n)return null;const o=i.scale(s);if(o.isZero())continue;const a=solveMultivariateDiophantine(g,o,n,m,p,l);if(null===a)return null;const d=E.pow(e);x=x.map((e,t)=>e.add(a[t].multiply(d))),y=residualFor(x)}return y.isZero()?x:null}function liftFactorGroup(e,t,n,s,o){if(1===n.length){const t=changeModulus(e,o),n=t.leadingTerm();if(null===n)throw new RangeError((0,i.message)("polyHenselZeroFactorGroup"));const s=(0,r.invMod)(n.coefficient,o);if(s<0n)throw new RangeError((0,i.message)("polyRequires",{operation:"Hensel lifting",requirement:(0,i.message)("polyReqInvertibleLeadingCoefficient")}));return[t.scale(s)]}const a=Math.floor(n.length/2),l=n.slice(0,a),u=n.slice(a),c=changeModulus(e,t).leadingTerm();if(null===c)throw new RangeError((0,i.message)("polyHenselCannotLiftZero"));const m=productModularFactors(l,e.variableCount,t).scale(c.coefficient),p=productModularFactors(u,e.variableCount,t),g=modularExtendedGcdUnivariate(m,p,s);if(!g.gcd.isConstant())throw new RangeError((0,i.message)("polyRequires",{operation:"Hensel lifting",requirement:(0,i.message)("polyReqPairwiseCoprimeModularFactors")}));let d={g:m,h:p,s:g.leftCoefficient,t:g.rightCoefficient};for(;d.g.modulus<o;)d=henselPairStep(e,d);if(d.g.modulus!==o)throw new Error((0,i.message)("polyHenselModulusExceeded"));return[...liftFactorGroup(d.g,t,l,s,o),...liftFactorGroup(d.h,t,u,s,o)]}},133(e,t,n){"use strict";t.contentInVariable=contentInVariable,t.factorSquareFreeUnivariateInteger=factorSquareFreeUnivariateInteger,t.squareFreeFactorizationMultivariate=function squareFreeFactorizationMultivariate(e,t){if(function assertFactorVariables(e,t){if(0===t.length)throw new RangeError((0,r.message)("polyRequires",{operation:"Sparse polynomial factorization",requirement:(0,r.message)("polyReqAtLeastOneVariable")}));const n=new Set;let i=-1;for(const s of t){if(e.degree(s),n.has(s))throw new RangeError((0,r.message)("polyVariablesUnique",{operation:"Sparse polynomial factorization"}));if(s<=i)throw new RangeError((0,r.message)("polyVariablesRingOrder",{operation:"Sparse polynomial factorization"}));n.add(s),i=s}for(const t of e.variables())if(!n.has(t))throw new RangeError((0,r.message)("polyVariablesIncludeActive",{operation:"Sparse polynomial factorization"}))}(e,t),e.isZero())return{content:0n,factors:[]};return squareFreeFactorizationRecursive(e,t)},t.factorUnivariateInteger=function factorUnivariateInteger(e,t){const n=squareFreeFactorizationUnivariate(e,t);if(0n===n.content||0===n.factors.length)return n;const i=[];for(const e of n.factors){const n=factorSquareFreeUnivariateInteger(e.factor,t);for(const t of n)i.push({factor:t,multiplicity:e.multiplicity})}return{content:n.content,factors:i}};const i=n(7248),r=n(4703),s=n(551),o=n(982),a=n(7404),l=n(7134),u=n(7609),c=n(6698);function assertUnivariate(e,t){e.degree(t);for(const n of e.terms())for(let i=0;i<e.variableCount;i++)if(i!==t&&0n!==n.exponents[i])throw new RangeError((0,r.message)("polyRequires",{operation:"Square-free univariate factorization",requirement:(0,r.message)("polyReqAllOtherVariablesDormant")}))}function contentInVariable(e,t,n){const r=new Map;for(const n of e.terms()){const e=n.exponents[t],i=[...n.exponents];i[t]=0n;const s=r.get(e)??[];s.push({coefficient:n.coefficient,exponents:i}),r.set(e,s)}let s=null;for(const t of r.values()){const r=new i.SparsePolynomial(e.variableCount,t).primitivePart().normalizeLeadingSign("lex");if(null===s)s=r;else{if(null!==r.divideExact(s))continue;s=null!==s.divideExact(r)?r:(0,c.sparsePolynomialGcd)(s,r,n)}if(s.isConstant())return i.SparsePolynomial.constant(e.variableCount,1n)}return s??i.SparsePolynomial.zero(e.variableCount)}function mergeSquareFreeFactor(e,t,n){if(t.isConstant())return;const i=t.primitivePart().normalizeLeadingSign("lex"),r=e.get(n);e.set(n,void 0===r?i:r.multiply(i))}function squareFreeFactorizationRecursive(e,t){if(1===t.length)return squareFreeFactorizationUnivariate(e,t[0]);let n=e.content(),i=e.primitivePart();const r=i.leadingTerm("lex");if(null!==r&&r.coefficient<0n&&(i=i.negate(),n=-n),i.isConstant())return{content:n,factors:[]};const s=t[0],o=t.slice(1),a=contentInVariable(i,s,o),l=divideExactOrThrow(i,a),u=new Map,m=l.degree(s);if(null!==m&&m>0n){const e=l.derivative(s);let n=(0,c.sparsePolynomialGcd)(l,e,t),i=divideExactOrThrow(l,n),r=divideExactOrThrow(e,n),o=1n;for(;;){const e=r.subtract(i.derivative(s));if(e.isZero()){mergeSquareFreeFactor(u,i,o);break}n=(0,c.sparsePolynomialGcd)(i,e,t),i=divideExactOrThrow(i,n),r=divideExactOrThrow(e,n),mergeSquareFreeFactor(u,n,o),o++}}const p=squareFreeFactorizationRecursive(a,o);n*=p.content;for(const e of p.factors)mergeSquareFreeFactor(u,e.factor,e.multiplicity);return{content:n,factors:[...u.entries()].sort(([e],[t])=>e<t?-1:e>t?1:0).map(([e,t])=>({factor:t,multiplicity:e}))}}function divideExactOrThrow(e,t){const n=e.divideExact(t);if(null===n)throw new Error((0,r.message)("polySquareFreeNonExactDivision"));return n}function zassenhausCoefficientBound(e,t){const n=e.degree(t);if(null===n||0n===n)return e.maxAbsoluteCoefficient();const i=e.leadingTerm("lex");if(null===i)return 0n;const r=i.coefficient<0n?-i.coefficient:i.coefficient,o=e.maxAbsoluteCoefficient();return(0,s.ceilIntegerSquareRoot)(n+1n)*(1n<<n)*o*r}function modularProduct(e,t,n,i){let r=l.ModularSparsePolynomial.constant(n,i,1n);for(const n of t)r=r.multiply(e[n]);return r}function combinations(e,t){const n=[],i=[];return function choose(r){if(i.length===t)return void n.push([...i]);const s=t-i.length;for(let t=r;t<=e.length-s;t++)i.push(e[t]),choose(t+1),i.pop()}(0),n}function recombineLiftedUnivariateFactors(e,t,n){if(assertUnivariate(e,n),e.isZero())throw new RangeError((0,r.message)("polyCannotFactorZeroPolynomial",{operation:"Zassenhaus recombination"}));if(1n!==e.content())throw new RangeError((0,r.message)("polyRequires",{operation:"Zassenhaus recombination",requirement:(0,r.message)("polyReqPrimitiveIntegerPolynomial")}));const s=e.leadingTerm("lex");if(null===s||s.coefficient<=0n)throw new RangeError((0,r.message)("polyRequires",{operation:"Zassenhaus recombination",requirement:(0,r.message)("polyReqPositiveLeadingCoefficient")}));if(0===t.length)throw new RangeError((0,r.message)("polyRequires",{operation:"Zassenhaus recombination",requirement:(0,r.message)("polyReqLiftedModularFactors")}));const o=t[0].modulus;for(const i of t){if(i.variableCount!==e.variableCount||i.modulus!==o)throw new RangeError((0,r.message)("polyRequires",{operation:"Zassenhaus recombination",requirement:(0,r.message)("polyReqLiftedFactorsSameRing")}));for(const e of i.variables())if(e!==n)throw new RangeError((0,r.message)("polyRequires",{operation:"Zassenhaus recombination",requirement:(0,r.message)("polyReqUnivariateLiftedFactors")}));if(!i.equals(i.monic()))throw new RangeError((0,r.message)("polyRequires",{operation:"Zassenhaus recombination",requirement:(0,r.message)("polyReqMonicLiftedFactors")}))}if(o<=2n*zassenhausCoefficientBound(e,n))throw new RangeError((0,r.message)("polyRequires",{operation:"Zassenhaus recombination",requirement:(0,r.message)("polyReqLargerHenselModulus")}));const a=new l.ModularSparsePolynomial(e.variableCount,o,e.terms()),u=t.map((e,t)=>t);if(!modularProduct(t,u,e.variableCount,o).scale(s.coefficient).equals(a))throw new RangeError((0,r.message)("polyZassenhausFactorsReconstructModuloLift"));const c=[];let m=e,p=[...u],g=1;for(;2*g<=p.length;){let n=!1;for(const i of combinations(p,g)){const s=m.leadingTerm("lex");if(null===s)throw new Error((0,r.message)("polyZassenhausLostRemaining"));let a=modularProduct(t,i,e.variableCount,o).scale(s.coefficient).toSymmetricIntegerPolynomial().primitivePart();if(a=a.normalizeLeadingSign("lex"),a.isConstant())continue;const l=m.divideExact(a);if(null===l)continue;c.push(a),m=l.primitivePart().normalizeLeadingSign("lex");const u=new Set(i);p=p.filter(e=>!u.has(e)),g=1,n=!0;break}n||g++}m.isConstant()||c.push(m);let d=i.SparsePolynomial.constant(e.variableCount,1n);for(const e of c)d=d.multiply(e);if(!d.equals(e))throw new Error((0,r.message)("polyZassenhausReconstructionFailed"));return c}function factorSquareFreeUnivariateInteger(e,t){if(assertUnivariate(e,t),e.isZero())throw new RangeError((0,r.message)("polyCannotFactorZeroPolynomial",{operation:"Integer factorization"}));if(1n!==e.content())throw new RangeError((0,r.message)("polyRequires",{operation:"Integer square-free factorization",requirement:(0,r.message)("polyReqPrimitivePolynomial")}));const n=e.leadingTerm("lex");if(null===n)throw new Error((0,r.message)("polyIntegerFactorLostLeading"));const i=n.coefficient<0n?e.negate():e;if(i.isConstant())return[];if(1n===i.degree(t))return[i];const s=function findGoodFactorPrime(e,t){const n=e.leadingTerm("lex");if(null===n)throw new RangeError((0,r.message)("polyIntegerFactorPrimeZero"));const i=e.derivative(t);let s,c=(0,o.nextPrimeBig)(3n),m=0;for(;;){if(n.coefficient%c!==0n){const n=new l.ModularSparsePolynomial(e.variableCount,c,e.terms()),r=new l.ModularSparsePolynomial(e.variableCount,c,i.terms());if((0,a.modularGcdUnivariate)(n,r,t).isConstant()){const e=(0,u.factorSquareFreeUnivariateFiniteField)(n,t),i={prime:c,modularPolynomial:n,modularFactors:e};if(m++,1===e.length)return i;if((void 0===s||e.length<s.modularFactors.length)&&(s=i),m>=4)return s}}c=(0,o.nextPrimeBig)(c+1n)}}(i,t);if(1===s.modularFactors.length)return[i];const c=zassenhausCoefficientBound(i,t);let m=s.prime;for(;m<=2n*c;)m*=m;return recombineLiftedUnivariateFactors(i,(0,u.henselLiftUnivariateFactors)(i,s.prime,s.modularFactors,t,m),t)}function squareFreeFactorizationUnivariate(e,t){if(assertUnivariate(e,t),e.isZero())return{content:0n,factors:[]};let n=e.content(),r=e.primitivePart();const s=r.leadingTerm("lex");if(null!==s&&s.coefficient<0n&&(r=r.negate(),n=-n),r.isConstant())return{content:n,factors:[]};const o=[];let a=null;for(const e of r.terms()){const n=e.exponents[t];(null===a||n<a)&&(a=n)}if(null!==a&&a>0n){const e=new Array(r.variableCount).fill(0n);e[t]=a;r=divideExactOrThrow(r,i.SparsePolynomial.monomial(r.variableCount,1n,e)),o.push({factor:i.SparsePolynomial.variable(r.variableCount,t),multiplicity:a})}if(r.isConstant())return{content:n,factors:o};const l=r.derivative(t),u=[t];let m=(0,c.sparsePolynomialGcd)(r,l,u),p=divideExactOrThrow(r,m),g=divideExactOrThrow(l,m),d=1n;for(;;){const e=g.subtract(p.derivative(t));if(e.isZero()){p.isConstant()||o.push({factor:p.normalizeLeadingSign("lex"),multiplicity:d});break}m=(0,c.sparsePolynomialGcd)(p,e,u),p=divideExactOrThrow(p,m),g=divideExactOrThrow(e,m),m.isConstant()||o.push({factor:m.normalizeLeadingSign("lex"),multiplicity:d}),d++}return o.sort((e,t)=>e.multiplicity<t.multiplicity?-1:e.multiplicity>t.multiplicity?1:0),{content:n,factors:o}}},6698(e,t,n){"use strict";t.sparsePolynomialGcd=function sparsePolynomialGcd(e,t,n){if(e.variableCount!==t.variableCount)throw new RangeError((0,r.message)("polyRequires",{operation:"Sparse polynomial GCD",requirement:(0,r.message)("polyReqSamePolynomialRing")}));if(0===n.length)throw new RangeError((0,r.message)("polyRequires",{operation:"Sparse polynomial GCD",requirement:(0,r.message)("polyReqAtLeastOneVariable")}));const l=new Set;let u=-1;for(const i of n){if(e.degree(i),t.degree(i),l.has(i))throw new RangeError((0,r.message)("polyVariablesUnique",{operation:"Sparse polynomial GCD"}));if(i<=u)throw new RangeError((0,r.message)("polyVariablesRingOrder",{operation:"Sparse polynomial GCD"}));l.add(i),u=i}for(const n of[...e.variables(),...t.variables()])if(!l.has(n))throw new RangeError((0,r.message)("polyInputsSelectedOnly",{operation:"Sparse polynomial GCD"}));if(e.isZero())return t.isZero()?t:t.normalizeLeadingSign("lex");if(t.isZero())return e.normalizeLeadingSign("lex");const c=e.content(),m=t.content(),p=(0,s.GCD)(c,m),g=e.primitivePart().normalizeLeadingSign("lex"),d=t.primitivePart().normalizeLeadingSign("lex"),h=g.leadingTerm("lex"),x=d.leadingTerm("lex");if(null===h||null===x)return i.SparsePolynomial.zero(e.variableCount);if(g.isConstant()||d.isConstant())return i.SparsePolynomial.constant(e.variableCount,p);if(g.equals(d))return g.scale(p);if(null!==g.divideExact(d))return d.scale(p);if(null!==d.divideExact(g))return g.scale(p);const E=(0,s.GCD)(h.coefficient,x.coefficient),y=n.map(e=>(0,s.GCD)(leadingCoefficientForVariable(g,e),leadingCoefficientForVariable(d,e)));let v=(0,o.nextPrimeBig)(1000000007n),w=null,b=1n,P=null;for(;;){for(;y.some(e=>e%v===0n);)v=(0,o.nextPrimeBig)(v+1n);const r=reduceModulo(g,v),s=reduceModulo(d,v),l=(0,a.modularGcdFiniteField)(r,s,n);if(null===l){v=(0,o.nextPrimeBig)(v+1n);continue}if(l.isConstant()&&!l.isZero())return i.SparsePolynomial.constant(e.variableCount,p);const u=degreeVector(l,n);if(null!==P){let e=0;for(let t=0;t<u.length;t++){if(u[t]<P[t]){e=-1;break}if(u[t]>P[t]){e=1;break}}if(e>0){v=(0,o.nextPrimeBig)(v+1n);continue}e<0&&(P=u,w=null,b=1n)}else P=u;const c=l.scale(E).toSymmetricIntegerPolynomial();let m,h;if(null===w)m=c,h=v;else{const e=combinePolynomialCongruences(w,b,c,v);m=e.polynomial,h=e.modulus}const x=null!==w&&m.equals(w);if(w=m,b=h,x){const n=m.primitivePart().normalizeLeadingSign("lex").scale(p);if(null!==e.divideExact(n)&&null!==t.divideExact(n))return n}v=(0,o.nextPrimeBig)(v+1n)}};const i=n(7248),r=n(4703),s=n(551),o=n(982),a=n(7404),l=n(7134);function symmetricResidue(e,t){const n=(0,s.mod)(e,t);return 2n*n>t?n-t:n}function termMap(e){const t=new Map;for(const n of e.terms())t.set(n.exponents.join(","),n);return t}function combinePolynomialCongruences(e,t,n,o){if(e.variableCount!==n.variableCount)throw new RangeError((0,r.message)("polyRequires",{operation:"Polynomial CRT",requirement:(0,r.message)("polyReqSamePolynomialRing")}));if(t<=0n||o<=0n)throw new RangeError((0,r.message)("polyRequires",{operation:"Polynomial CRT",requirement:(0,r.message)("polyReqPositiveModuli")}));if(1n!==(0,s.GCD)(t,o))throw new RangeError((0,r.message)("polyRequires",{operation:"Polynomial CRT",requirement:(0,r.message)("polyReqCoprimeModuli")}));const a=(0,s.invMod)(t,o);if(a<0n)throw new RangeError((0,r.message)("polyCrtModuliInvertible"));const l=termMap(e),u=termMap(n),c=new Set([...l.keys(),...u.keys()]),m=t*o,p=[];for(const e of c){const n=l.get(e),i=u.get(e),r=n?.coefficient??0n,c=i?.coefficient??0n,g=symmetricResidue(r+t*(0,s.mod)((c-r)*a,o),m);0n!==g&&p.push({coefficient:g,exponents:n?.exponents??i?.exponents??[]})}return{polynomial:new i.SparsePolynomial(e.variableCount,p),modulus:m}}function leadingCoefficientForVariable(e,t){e.degree(t);const n=e.terms();if(0===n.length)return 0n;let i=n[0];for(let r=1;r<n.length;r++){const s=n[r];if(s.exponents[t]===i.exponents[t]){for(let n=0;n<e.variableCount;n++)if(n!==t&&s.exponents[n]!==i.exponents[n]){s.exponents[n]>i.exponents[n]&&(i=s);break}}else s.exponents[t]>i.exponents[t]&&(i=s)}return i.coefficient}function reduceModulo(e,t){return new l.ModularSparsePolynomial(e.variableCount,t,e.terms())}function degreeVector(e,t){return t.map(t=>e.degree(t)??0n)}},4262(e,t,n){"use strict";t.factorMultivariateInteger=factorMultivariateInteger;const i=n(7248),r=n(4703),s=n(551),o=n(982),a=n(7609),l=n(133),u=n(6698),c=1000003n;function assertWangVariables(e,t){if(t.length<2)throw new RangeError((0,r.message)("polyRequires",{operation:"Wang evaluation",requirement:(0,r.message)("polyReqAtLeastTwoSelectedVariables")}));const n=new Set;let i=-1;for(const s of t){if(e.degree(s),n.has(s))throw new RangeError((0,r.message)("polyVariablesUnique",{operation:"Wang evaluation"}));if(s<=i)throw new RangeError((0,r.message)("polyVariablesRingOrder",{operation:"Wang evaluation"}));n.add(s),i=s}for(const t of e.variables())if(!n.has(t))throw new RangeError((0,r.message)("polyVariablesIncludeActive",{operation:"Wang evaluation"}))}function evaluateTail(e,t,n){return e.evaluateVariables(t.slice(1),n)}function evaluateTailInteger(e,t,n){const i=evaluateTail(e,t,n);if(!i.isConstant())throw new Error((0,r.message)("polyWangLeadingEvaluationInteger"));return i.constantTerm()}function productPolynomials(e,t){let n=i.SparsePolynomial.constant(t,1n);for(const t of e)n=n.multiply(t);return n}function multivariateMignotteBound(e,t){let n=0n;for(const i of t)n+=e.degree(i)??0n;const i=e.leadingTerm("lex");if(null===i)return 0n;const r=i.coefficient<0n?-i.coefficient:i.coefficient;return(0,s.ceilIntegerSquareRoot)(n+1n)*(1n<<n)*e.maxAbsoluteCoefficient()*r}function testWangSpecializationPrepared(e,t,n,i,r){const s=evaluateTail(e,t,n);if(s.degree(i)!==r)return null;const o=function normalizeSpecialization(e){let t=e.content(),n=e.primitivePart();const i=n.leadingTerm("lex");return null!==i&&i.coefficient<0n&&(t=-t,n=n.negate()),{content:t,primitive:n}}(s);if(o.primitive.isConstant())return null;const a=o.primitive.derivative(i);return(0,u.sparsePolynomialGcd)(o.primitive,a,[i]).isConstant()?{values:[...n],content:o.content,polynomial:o.primitive}:null}function factorWangSpecialization(e,t){return{...e,factors:(0,l.factorSquareFreeUnivariateInteger)(e.polynomial,t)}}function visitEvaluationShell(e,t,n){const i=new Array(e).fill(0n);return function visit(r,s){if(r===e)return s&&n(i);for(let e=-t;e<=t;e++)if(i[r]=e,visit(r+1,s||e===-t||e===t))return!0;return!1}(0,0n===t)}function factorWangLeadingCoefficient(e,t){const n=t[0],i=t.slice(1),r=e.leadingCoefficientIn(n);if(null===r)return null;const s=i.filter(e=>(r.degree(e)??0n)>0n);return s.length<=1?(0,l.factorUnivariateInteger)(r,s[0]??i[0]):factorMultivariateInteger(r,s)}function testWangConfigurationWithLeadingFactorization(e,t,n,o,a,l){const u=testWangSpecializationPrepared(e,t,n,a,l);if(null===u)return null;const c=o.factors.map(e=>evaluateTailInteger(e.factor,t,n));if(!function wangNonDivisors(e,t,n){const i=[t*n];for(const t of e){let e=t<0n?-t:t;for(let t=i.length-1;t>=0;t--){let n=i[t];for(n<0n&&(n=-n);1n!==n;)n=(0,s.GCD)(n,e),e/=n}if(1n===e)return!1;i.push(t<0n?-t:t)}return!0}(c,u.content,o.content))return null;const m=factorWangSpecialization(u,a),p=[],g=new Array(o.factors.length).fill(!1);let d=m.content;const h=m.factors.map(e=>e);for(const t of h){const n=t.leadingCoefficientIn(a);if(null===n||!n.isConstant())throw new Error((0,r.message)("polyWangSpecializedLeadingInteger"));let s=n.constantTerm()*d,l=i.SparsePolynomial.constant(e.variableCount,1n);for(let e=o.factors.length-1;e>=0;e--){const t=c[e];if(0n===t)return null;let n=0n;for(;s%t===0n;)s/=t,n++;n>0n&&(l=l.multiply(o.factors[e].factor.pow(n)),g[e]=!0)}p.push(l)}if(g.some(e=>!e))return null;const x=[],E=[];for(let e=0;e<p.length;e++){let i=p[e],r=h[e];const o=evaluateTailInteger(i,t,n),l=r.leadingCoefficientIn(a)?.constantTerm();if(void 0===l||0n===o)return null;if(1n===d){if(l%o!==0n)return null;i=i.scale(l/o)}else{const e=(0,s.GCD)(l,o),t=o/e,n=l/e;if(0n===t||d%t!==0n)return null;r=r.scale(t),d/=t,i=i.scale(n)}x.push(r),E.push(i)}let y=e;1n!==d&&(x.forEach((e,t)=>{x[t]=e.scale(d),E[t]=E[t].scale(d)}),y=y.scale(d**BigInt(x.length-1)));const v=y.leadingCoefficientIn(a);if(null===v||!productPolynomials(E,e.variableCount).equals(v))return null;const w=evaluateTail(y,t,n);if(!productPolynomials(x,e.variableCount).equals(w))return null;for(let e=0;e<x.length;e++){const i=x[e].leadingCoefficientIn(a);if(null===i||!evaluateTail(E[e],t,n).equals(i))return null}return{evaluation:m,polynomial:y,factors:x,leadingCoefficients:E}}function testWangConfiguration(e,t,n){if(assertWangVariables(e,t),n.length!==t.length-1)throw new RangeError((0,r.message)("polyRequires",{operation:"Wang leading-coefficient reconstruction",requirement:(0,r.message)("polyReqOneValuePerTailVariable")}));if(1n!==e.content())throw new RangeError((0,r.message)("polyRequires",{operation:"Wang leading-coefficient reconstruction",requirement:(0,r.message)("polyReqPrimitivePolynomial")}));const i=e.leadingTerm("lex");if(null===i||i.coefficient<0n)throw new RangeError((0,r.message)("polyRequires",{operation:"Wang leading-coefficient reconstruction",requirement:(0,r.message)("polyReqPositiveLexLeadingSign")}));const s=t[0],o=e.degree(s);if(null===o||0n===o)return null;const a=factorWangLeadingCoefficient(e,t);return null===a?null:testWangConfigurationWithLeadingFactorization(e,t,n,a,s,o)}function liftWangConfiguration(e,t,n){if(t.length<2)throw new RangeError((0,r.message)("polyRequires",{operation:"Wang lifting",requirement:(0,r.message)("polyReqAtLeastTwoSelectedVariables")}));return(0,a.henselLiftMultivariateFactors)(e.polynomial,e.factors,e.leadingCoefficients,t,e.evaluation.values,n)}function factorSquareFreeMultivariateInteger(e,t){if(assertWangVariables(e,t),e.isZero())throw new RangeError((0,r.message)("polyCannotFactorZero",{operation:"Wang factorization"}));if(1n!==e.content())throw new RangeError((0,r.message)("polyRequires",{operation:"Wang factorization",requirement:(0,r.message)("polyReqPrimitivePolynomial")}));const n=e.leadingTerm("lex");if(null===n||n.coefficient<0n)throw new RangeError((0,r.message)("polyRequires",{operation:"Wang factorization",requirement:(0,r.message)("polyReqPositiveLexLeadingSign")}));const i=t[0],s=e.derivative(i);if(!(0,u.sparsePolynomialGcd)(e,s,t).isConstant())throw new RangeError((0,r.message)("polyRequires",{operation:"Wang factorization",requirement:(0,r.message)("polyReqSquareFreeMainVariable")}));const{originalDegree:a,leadingFactorization:l}=prepareWangConfigurationSearch(e,t);let m=0n,p=null,g=[];for(;;){let n=!1;if(visitEvaluationShell(t.length-1,m,r=>{const s=testWangConfigurationWithLeadingFactorization(e,t,r,l,i,a);if(null===s)return!1;if(1===s.factors.length)return n=!0,!0;if((null===p||s.factors.length<p)&&(p=s.factors.length,g=[]),s.factors.length!==p)return!1;let u=0n;for(const e of t.slice(1)){const t=s.polynomial.degree(e)??0n;t>u&&(u=t)}let m=2n*multivariateMignotteBound(s.polynomial,t)+1n;return m<c&&(m=c),m<=u&&(m=u+1n),g.push({configuration:s,prime:(0,o.nextPrimeBig)(m)}),!1}),n)return[e];const r=[];for(const n of g){const i=liftWangConfiguration(n.configuration,t,n.prime);if(null===i){r.push({configuration:n.configuration,prime:(0,o.nextPrimeBig)(n.prime+1n)});continue}if(productPolynomials(i,e.variableCount).equals(e))return i}g=r,m++}}function factorMultivariateInteger(e,t){assertWangVariables(e,t);const n=(0,l.squareFreeFactorizationMultivariate)(e,t);if(0n===n.content||0===n.factors.length)return n;const s=t[0],o=t.slice(1),a=[];for(const e of n.factors){const n=(0,l.contentInVariable)(e.factor,s,o),i=e.factor.divideExact(n);if(null===i)throw new Error((0,r.message)("polyMultivariateContentDivisionFailed"));if(!n.isConstant()){const t=o.filter(e=>(n.degree(e)??0n)>0n);let i;if(1===t.length)i=(0,l.factorUnivariateInteger)(n,t[0]);else{if(!(t.length>1))throw new Error((0,r.message)("polyMultivariateContentVariableMissing"));i=factorMultivariateInteger(n,t)}for(const t of i.factors)a.push({factor:t.factor,multiplicity:e.multiplicity*t.multiplicity})}if(!i.isConstant())for(const n of factorSquareFreeMultivariateInteger(i,t))a.push({factor:n,multiplicity:e.multiplicity})}let u=i.SparsePolynomial.constant(e.variableCount,n.content);for(const e of a)u=u.multiply(e.factor.pow(e.multiplicity));if(!u.equals(e))throw new Error((0,r.message)("polyMultivariateReconstructionFailed"));return{content:n.content,factors:a}}function prepareWangConfigurationSearch(e,t){if(assertWangVariables(e,t),1n!==e.content())throw new RangeError((0,r.message)("polyRequires",{operation:"Wang leading-coefficient reconstruction",requirement:(0,r.message)("polyReqPrimitivePolynomial")}));const n=e.leadingTerm("lex");if(null===n||n.coefficient<0n)throw new RangeError((0,r.message)("polyRequires",{operation:"Wang leading-coefficient reconstruction",requirement:(0,r.message)("polyReqPositiveLexLeadingSign")}));const i=t[0],s=e.degree(i);if(null===s||0n===s)throw new RangeError((0,r.message)("polyRequires",{operation:"Wang configuration search",requirement:(0,r.message)("polyReqPositiveDegreeMainVariable")}));const o=factorWangLeadingCoefficient(e,t);if(null===o)throw new RangeError((0,r.message)("polyRequires",{operation:"Wang configuration search",requirement:(0,r.message)("polyReqPositiveDegreeMainVariable")}));return{mainVariable:i,originalDegree:s,leadingFactorization:o}}function findWangConfiguration(e,t){const{mainVariable:n,originalDegree:i,leadingFactorization:r}=prepareWangConfigurationSearch(e,t);let s=0n;for(;;){let o=null;if(visitEvaluationShell(t.length-1,s,s=>{const o=testWangConfigurationWithLeadingFactorization(e,t,s,r,n,i);return null!==o&&!0}),null!==o)return o;0}}},7404(e,t,n){"use strict";t.modularGcdUnivariate=modularGcdUnivariate,t.modularGcdFiniteField=modularGcdFiniteField;const i=n(4703),r=n(982),s=n(7134);function modularPrimitivePartInVariable(e,t){if(e.isZero())return{content:s.ModularSparsePolynomial.zero(e.variableCount,e.modulus),primitive:e};const n=function modularContentInVariable(e,t){if(e.degree(t),e.isZero())return s.ModularSparsePolynomial.zero(e.variableCount,e.modulus);const n=new Map;for(const i of e.terms()){const r=[...i.exponents];r[t]=0n;const s=r.join(","),o=new Array(e.variableCount).fill(0n);o[t]=i.exponents[t];const a=n.get(s)??[];a.push({coefficient:i.coefficient,exponents:o}),n.set(s,a)}let i=s.ModularSparsePolynomial.zero(e.variableCount,e.modulus);for(const r of n.values()){const n=new s.ModularSparsePolynomial(e.variableCount,e.modulus,r);if(i=i.isZero()?n.monic("lex"):modularGcdUnivariate(i,n,t),i.isConstant())return s.ModularSparsePolynomial.constant(e.variableCount,e.modulus,1n)}return i.monic("lex")}(e,t),r=e.divideExact(n);if(null===r)throw new RangeError((0,i.message)("polyModularContentExactDivision"));return{content:n,primitive:r}}function modularLeadingCoefficientInVariables(e,t,n){e.degree(n);for(const n of t)e.degree(n);const i=e.terms();if(0===i.length)return null;let r=i[0];for(let e=1;e<i.length;e++){const n=i[e];for(const e of t)if(n.exponents[e]!==r.exponents[e]){n.exponents[e]>r.exponents[e]&&(r=n);break}}const o=[];for(const s of i){let i=!0;for(const e of t)if(s.exponents[e]!==r.exponents[e]){i=!1;break}if(!i)continue;const a=new Array(e.variableCount).fill(0n);a[n]=s.exponents[n],o.push({coefficient:s.coefficient,exponents:a})}return new s.ModularSparsePolynomial(e.variableCount,e.modulus,o)}function monomialSupport(e,t){const n=new Set;for(const i of e.terms())n.add(t.map(e=>i.exponents[e]).join(","));return n}function modularGcdUnivariate(e,t,n){if(e.variableCount!==t.variableCount||e.modulus!==t.modulus)throw new RangeError((0,i.message)("polyRequires",{operation:"Modular polynomial GCD",requirement:(0,i.message)("polyReqSamePolynomialRing")}));e.degree(n),t.degree(n);for(const t of e.variables())if(t!==n)throw new RangeError((0,i.message)("polyRequires",{operation:"Modular polynomial GCD inputs",requirement:(0,i.message)("polyReqUnivariatePolynomial")}));for(const e of t.variables())if(e!==n)throw new RangeError((0,i.message)("polyRequires",{operation:"Modular polynomial GCD inputs",requirement:(0,i.message)("polyReqUnivariatePolynomial")}));let r=new s.ModularSparsePolynomial(e.variableCount,e.modulus,e.terms()),o=new s.ModularSparsePolynomial(t.variableCount,t.modulus,t.terms());for(;!o.isZero();){const e=r.divideWithRemainder(o,"lex");r=o,o=e.remainder}return r.isZero()?r:r.monic("lex")}function modularGcdRecursive(e,t,n){if(1===n.length)return modularGcdUnivariate(e,t,n[0]);if(e.isZero())return t.isZero()?t:t.monic("lex");if(t.isZero())return e.monic("lex");const i=n[n.length-1],r=n.slice(0,-1),o=modularPrimitivePartInVariable(e,i),a=modularPrimitivePartInVariable(t,i),l=modularGcdUnivariate(o.content,a.content,i),u=modularLeadingCoefficientInVariables(o.primitive,r,i),c=modularLeadingCoefficientInVariables(a.primitive,r,i);if(null===u||null===c)return null;const m=modularGcdUnivariate(u,c,i),p=o.primitive.degree(i)??0n,g=a.primitive.degree(i)??0n,d=(p<g?p:g)+2n,h=(u.degree(i)??0n)+(c.degree(i)??0n)+(m.degree(i)??0n),x=e.modulus-1n,E=3n*d+h,y=x<E?x:E;let v=null,w=null,b=0n,P=0n,A=[];for(let n=1n;n<=y;n++){const p=u.evaluateVariable(i,n),g=c.evaluateVariable(i,n),h=m.evaluateVariable(i,n).constantTerm();if(0n===p.constantTerm()||0n===g.constantTerm()||0n===h)continue;const x=o.primitive.evaluateVariable(i,n),E=a.primitive.evaluateVariable(i,n);if(x.isZero()||E.isZero())continue;const y=modularGcdRecursive(x,E,r);if(null===y)continue;if(y.isConstant()&&!y.isZero())return l;const N=r.map(e=>y.degree(e)??0n);if(null===v)v=N;else{let e=0;for(let t=0;t<N.length;t++){if(N[t]<v[t]){e=-1;break}if(N[t]>v[t]){e=1;break}}if(e<0)v=N,w=null,A=[],b=0n,P=0n;else if(e>0)continue}const M=monomialSupport(y,r);if(null===w)w=M;else{const e=[...w].every(e=>M.has(e)),t=w,n=[...M].every(e=>t.has(e));if(e&&!n)w=M,A=[],b=0n,P=0n;else if(!e)continue}if(A.push({value:n,polynomial:y.scale(h)}),b++,b<d)continue;const T=modularPrimitivePartInVariable(s.ModularSparsePolynomial.interpolateVariable(i,A),i).primitive.multiply(l).monic("lex");if(null!==e.divideExact(T)&&null!==t.divideExact(T))return T;if(P++,P>=3n)return null;A=[],b=0n}return null}function modularGcdFiniteField(e,t,n){if(e.variableCount!==t.variableCount||e.modulus!==t.modulus)throw new RangeError((0,i.message)("polyRequires",{operation:"Modular polynomial GCD",requirement:(0,i.message)("polyReqSamePolynomialRing")}));if(0===n.length)throw new RangeError((0,i.message)("polyRequires",{operation:"Modular polynomial GCD",requirement:(0,i.message)("polyReqAtLeastOneVariable")}));if(!(0,r.isPrimeBig)(e.modulus))throw new RangeError((0,i.message)("polyRequires",{operation:"Multivariate modular GCD",requirement:(0,i.message)("polyReqPrimeModulus")}));const s=new Set;let o=-1;for(const r of n){if(e.degree(r),t.degree(r),s.has(r))throw new RangeError((0,i.message)("polyVariablesUnique",{operation:"Modular polynomial GCD"}));if(r<=o)throw new RangeError((0,i.message)("polyVariablesRingOrder",{operation:"Modular polynomial GCD"}));s.add(r),o=r}for(const n of[...e.variables(),...t.variables()])if(!s.has(n))throw new RangeError((0,i.message)("polyInputsSelectedOnly",{operation:"Modular polynomial GCD"}));return modularGcdRecursive(e,t,n)}},6827(e,t,n){"use strict";t.polynomialize=function polynomialize(e,t,n){t??={};let s=e.isPolynomialLike()?e:(0,r.simplify)(e);[s,t]=(0,i.uSubFN)(s,t),[s,t]=(0,i.uSubEXP)(s,t),[s,t]=(0,i.uSubConstants)(s,t);const o=s.getNumerator(),a=s.getDenominator();return{numerator:n?n(o,t):o,denominator:n?n(a,t):a,map:t}};const i=n(886),r=n(9684)},2826(e,t,n){"use strict";t.complexSimplify=function complexSimplify(e){const t=e.getPower();if(!t.isInteger()||!t.isMinusOne())return e;const n=(0,s.expand)(e.invert()),o=n.realPart(),a=n.imagPart(),l=o.pow((0,r.two)()).plus(a.pow((0,r.two)()));return o.div(l).minus(a.div(l).times(i.Expression.Img()))};const i=n(296),r=n(6099),s=n(7741)},6117(e,t,n){"use strict";t.factorCommonPower=function factorCommonPower(e){if(!e.isSum())return e;const t=e.getMultiplier(),n=e.getPower(),s=e.elementsArray();if(s.length<2)return e;const o=[];let a=!1;for(const e of s){const t=extractBasePowers(e);o.push(t),0===t.size&&(a=!0)}if(a)return e;const l=new Set(o[0].keys());for(let e=1;e<o.length;e++)for(const t of l)o[e].has(t)||l.delete(t);if(0===l.size)return e;const u=new Map;for(const e of l){let t=o[0].get(e);if(void 0!==t){for(let n=1;n<o.length;n++){const i=o[n].get(e);if(void 0===i){t=void 0;break}i.lt(t)&&(t=i)}void 0!==t&&1===t.sign()&&u.set(e,t)}}if(0===u.size)return e;let c=(0,r.one)();for(const[e,t]of u)c=c.times(i.Expression.create(e).pow(t));let m=(0,r.zero)();for(const e of s)m=m.plus(e.div(c));let p=c.times(m);n.isOne()||(p=p.pow(n));t.isOne()||(p=p.times(t));return p};const i=n(296),r=n(6099);function extractBasePowers(e){const t=new Map;if(e.isNUM())return t;if(e.isProduct()){for(const n of e.elementsArray())if(!n.isNUM()){const e=n.getBase().text(),i=n.getPower(),r=t.get(e);t.set(e,void 0!==r?r.plus(i):i)}}else{const n=e.getBase().text();t.set(n,e.getPower())}return t}},6808(e,t,n){"use strict";t.simplifyFactorials=function simplifyFactorials(e){if(!e.isProduct())return e;const{factorials:t,rest:n}=function extractFactorials(e){const t=[],n=[];if(!e.isProduct())return e.isFunction(s.FACTORIAL)?(t.push({arg:e.getArguments()[0],power:e.getPower(),multiplier:i.Expression.fromRational(e.getMultiplier()),index:0}),{factorials:t,rest:n}):{factorials:[],rest:[e]};let r=0;for(const o of e.elementsArray())o.isFunction(s.FACTORIAL)?t.push({arg:o.getArguments()[0],power:o.getPower(),multiplier:i.Expression.fromRational(o.getMultiplier()),index:r}):n.push(o),r++;return{factorials:t,rest:n}}(e);if(t.length<2)return e;const r=[],o=[];for(const e of t)if(1===e.power.sign()&&e.power.isOne())r.push(e);else if(-1===e.power.sign()){const t=e.power.getMultiplier();-1n!==t.numerator||1n!==t.denominator&&-1n!==t.denominator?n.push(e.multiplier.times(i.Expression.toFunction(s.FACTORIAL,[e.arg]).pow(e.power))):o.push(e)}else n.push(e.multiplier.times(i.Expression.toFunction(s.FACTORIAL,[e.arg]).pow(e.power)));const a=new Set,l=new Set,u=[];for(let e=0;e<r.length;e++)if(!a.has(e))for(let t=0;t<o.length;t++){if(l.has(t))continue;const n=r[e],i=o[t],s=diffFactorialArgs(n.arg,i.arg);if(null!==s&&0!==s){if(s<0){const e=consecutiveProduct(n.arg,-s);u.push(n.multiplier.times(i.multiplier).times(e.invert()))}else{const e=consecutiveProduct(i.arg,s);u.push(n.multiplier.times(i.multiplier).times(e))}a.add(e),l.add(t);break}if(0===s){u.push(n.multiplier.times(i.multiplier)),a.add(e),l.add(t);break}}let c=i.Expression.fromRational(e.getMultiplier());for(let e=0;e<r.length;e++)if(!a.has(e)){const t=r[e];c=c.times(t.multiplier.times(i.Expression.toFunction(s.FACTORIAL,[t.arg])))}for(let e=0;e<o.length;e++)if(!l.has(e)){const t=o[e];c=c.times(t.multiplier.times(i.Expression.toFunction(s.FACTORIAL,[t.arg]).invert()))}for(const e of u)c=c.times(e);for(const e of n)c=c.times(e);return c},t.simplifyLogs=function simplifyLogs(e){if(!e.isSum())return e;const t=i.Expression.fromRational(e.getMultiplier()),n=e.getPower(),s=[],a=[];for(const t of e.elementsArray()){const e=extractLogTerm(t);e?s.push(e):a.push(t)}const l=s.filter(e=>!e.arg.isComplex()&&e.arg.gt(0));if(0===l.length)return e;const u=s.filter(e=>!l.includes(e)).map(e=>e.original),c=[...a,...u],m=l.filter(e=>e.coeff.isNUM()),p=l.filter(e=>!e.coeff.isNUM());if(1===m.length&&0===p.length){const r=m[0];if(shouldLiftCoefficient(r.coeff,!1)){const e=liftCoefficientIntoPower(r.arg,r.coeff);let s=i.Expression.toFunction(o.LOG,[e]);for(const e of c)s=s.plus(e);return applyOuterMultiplierAndPower(s,t,n)}return e}if(m.length>=2){const s=function combineNumericLogTerms(e,t,n){const s=function findCommonCoeffFactor(e){if(e.length<2)return null;const t=e.map(e=>e.coeff.getMultiplier());let n=t[0].numerator<0n?-t[0].numerator:t[0].numerator,r=t[0].denominator<0n?-t[0].denominator:t[0].denominator;for(let e=1;e<t.length;e++){const i=t[e].numerator<0n?-t[e].numerator:t[e].numerator,s=t[e].denominator<0n?-t[e].denominator:t[e].denominator;n=bigintGCD(n,i),r=bigintLCM(r,s)}if(0n===n)return null;if(1n===n&&1n===r)return null;const s=`${n}/${r}`,o=i.Expression.create(s);let a=!1;for(const t of e){if(t.coeff.div(o).abs().isOne()){a=!0;break}}if(!a){if(!e.every(e=>{const t=e.coeff.div(o).getMultiplier();return 1n===t.denominator||-1n===t.denominator}))return null}return o}(e);if(s&&!s.isOne()){let n=(0,r.one)();for(const t of e){const e=t.coeff.div(s),i=e.sign(),r=e.abs();let o=t.arg;r.isOne()||(o=liftCoefficientIntoPower(t.arg,e)),n=i>=0?n.times(o):n.times(o.invert())}const a=i.Expression.toFunction(o.LOG,[n]),l=[...t,s.times(a)];if(1===l.length)return l[0];let u=(0,r.zero)();for(const e of l)u=u.plus(e);return u}let a=(0,r.one)();for(const t of e){const e=t.coeff.sign(),n=shouldLiftCoefficient(t.coeff,!0);let i=t.arg;n&&(i=liftCoefficientIntoPower(t.arg,t.coeff)),a=e>=0?a.times(i):a.times(i.invert())}const l=i.Expression.toFunction(o.LOG,[a]),u=[...t,l];if(1===u.length)return u[0];let c=(0,r.zero)();for(const e of u)c=c.plus(e);return c}(m,c);if(s!==e){let e=s;if(p.length>0)for(const t of p)e=e.plus(t.original);return applyOuterMultiplierAndPower(e,t,n)}}if(p.length>=2){const s=[...c];for(const e of m)if(shouldLiftCoefficient(e.coeff,!1)){const t=liftCoefficientIntoPower(e.arg,e.coeff);s.push(i.Expression.toFunction(o.LOG,[t]))}else s.push(e.original);const a=function combineSymbolicLogTerms(e,t,n){const s=new Map;for(const t of e){const e=t.coeff.abs().text(),n=s.get(e);n?n.push(t):s.set(e,[t])}const a=[...t];let l=!1;for(const[,e]of s){if(e.length<2){for(const t of e)a.push(t.original);continue}l=!0;const t=e.filter(e=>e.coeff.sign()>=0),n=e.filter(e=>e.coeff.sign()<0);let s=(0,r.one)();for(const e of t)s=s.times(e.arg);for(const e of n)s=s.times(e.arg.invert());const u=t.length>0?t[0].coeff:n[0].coeff.neg(),c=i.Expression.toFunction(o.LOG,[s]);a.push(u.times(c))}if(!l)return n;if(1===a.length)return a[0];let u=(0,r.zero)();for(const e of a)u=u.plus(e);return u}(p,s,e);if(a!==e)return applyOuterMultiplierAndPower(a,t,n)}return e};const i=n(296),r=n(6099),s=n(8300),o=n(8300);function diffFactorialArgs(e,t){const n=e.minus(t);if(!n.isNUM())return null;const i=n.getMultiplier();if(!i.isInteger())return null;const r=Number(i.numerator);return Math.abs(r)>100?null:r}function consecutiveProduct(e,t){if(0===t)return(0,r.one)();let n=(0,r.one)();if(t>0)for(let r=1;r<=t;r++)n=n.times(e.plus(i.Expression.Number(r)));else{const r=-t;for(let t=0;t<r;t++)n=n.times(e.minus(i.Expression.Number(t)))}return n}function extractLogTerm(e){if(e.isFunction(o.LOG)&&e.isLinear()){const t=e.getArguments();return 0===t.length?null:{coeff:i.Expression.fromRational(e.getMultiplier()),arg:t[0],original:e}}if(e.isProduct()){let t=null,n=(0,r.one)();const s=[];for(const r of e.elementsArray())!t&&r.isFunction(o.LOG)&&r.isLinear()?(t=r,n=i.Expression.fromRational(r.getMultiplier())):s.push(r);if(t){let r=i.Expression.fromRational(e.getMultiplier());for(const e of s)r=r.times(e);return r=r.times(n),{coeff:r,arg:t.getArguments()[0],original:e}}}return null}function shouldLiftCoefficient(e,t){if(!e.isNUM())return!1;const n=e.getMultiplier();if(n.abs().isOne())return!1;return!(1n!==n.denominator&&-1n!==n.denominator)||t}function liftCoefficientIntoPower(e,t){const n=t.abs();return e.pow(n)}function applyOuterMultiplierAndPower(e,t,n){return n.isOne()||(e=e.pow(n)),t.isOne()||(e=e.times(t)),e}function bigintGCD(e,t){for(e=e<0n?-e:e,t=t<0n?-t:t;t>0n;)[e,t]=[t,e%t];return e}function bigintLCM(e,t){return t=t<0n?-t:t,0n===(e=e<0n?-e:e)||0n===t?0n:e/bigintGCD(e,t)*t}},1024(e,t,n){"use strict";t.hasDerivedInverseTrig=function hasDerivedInverseTrig(e){let t=!1;return e.forEveryElement(e=>((e.isFunction(s.ASEC)||e.isFunction(s.ACSC)||e.isFunction(s.ACOT))&&(t=!0),e)),t},t.rewriteInverseTrig=function rewriteInverseTrig(e){if(e.isFunction(s.ASEC)||e.isFunction(s.ACSC)||e.isFunction(s.ACOT))return function rewriteInverseTrigElement(e){const t=e.getMultiplier(),n=e.getPower(),o=e.getArguments();if(e.isFunction(s.ASEC)&&o.length>0){const e=o[0],s=i.Expression.create("acos(x)",{x:(0,r.one)().div(e)});return i.Expression.fromRational(t).times(s.pow(n))}if(e.isFunction(s.ACSC)&&o.length>0){const e=o[0],s=i.Expression.create("asin(x)",{x:(0,r.one)().div(e)});return i.Expression.fromRational(t).times(s.pow(n))}if(e.isFunction(s.ACOT)&&o.length>0){const e=o[0],s=i.Expression.create("atan(x)",{x:(0,r.one)().div(e)});return i.Expression.fromRational(t).times(s.pow(n))}return e}(e);if(e.isSum()){const t=e.getMultiplier(),n=e.getPower();let s=(0,r.zero)();for(const t of e.elementsArray())s=s.plus(rewriteInverseTrig(t));return n.isOne()||(s=s.pow(n)),t.isOne()||(s=s.times(i.Expression.fromRational(t))),s}if(e.isProduct()){const t=e.getMultiplier(),n=e.getPower();let s=(0,r.one)();for(const t of e.elementsArray())s=s.times(rewriteInverseTrig(t));return n.isOne()||(s=s.pow(n)),t.isOne()||(s=s.times(i.Expression.fromRational(t))),s}return e};const i=n(296),r=n(6099),s=n(8300)},8989(e,t,n){"use strict";t.toCommonDenominator=void 0,t.rationalize=rationalize,t.simplifyRadicals=function simplifyRadicals(e){if(!e.isProduct())return e;const t=e.getMultiplier(),n=e.getPower();let s=(0,r.one)();const o=e.toLinearAndUnitMultiplier(),a=o.getMultiplier(),l=o.elementsArray().map(e=>e.hasRadical()?rationalize(e):e),u=[];for(let e=0;e<l.length;e++){if(u.includes(e))continue;let t=l[e];const n=t.getPower();for(let r=e+1;r<l.length;r++){const e=l[r];if(n.eq(e.getPower())){const s=t.toLinearAndUnitMultiplier(),o=e.toLinearAndUnitMultiplier();if(!s.isComplex()&&!o.isComplex()&&s.gte(0)&&o.gte(0)){const a=t.getMultiplier().times(e.getMultiplier());t=s.isNUM()&&o.isNUM()?s.times(o).pow(n).times(a):i.Expression.setPower(s.times(o),n).times(a),u.push(r)}}}s=s.times(t)}return s.pow(n).times(t).times(a)},t.cancelCommonFactors=function cancelCommonFactors(e){if(!e.isProduct()||!e.isLinear())return e;let t=e;const[n,i]=(0,l.subRadicals)(e),[r,a]=(0,l.uSubConstants)(n,i);let c=r.getNumerator(),m=r.getDenominator();function reduce(e,t){const n=new s.Polynomial(e);for(const i of(0,u.polyFactorExpressions)(t)){if(i.isNUM())continue;const r=new s.Polynomial(i),[a,l]=(0,o.divide)(n,r);if(l.isZero()){e=a;const[n,i]=(0,o.divide)(t,r);t=n}}return[e,t]}c.isPolynomialLike()&&m.isPolynomialLike()&&([c,m]=reduce(c,m),[m,c]=reduce(m,c),t=c.div(m));return(0,l.uUnSub)(t,a)};const i=n(296),r=n(6099),s=n(2116),o=n(9565),a=n(5523);Object.defineProperty(t,"toCommonDenominator",{enumerable:!0,get:function(){return a.toCommonDenominator}});const l=n(886),u=n(2724);function rationalize(e){const t=e.getNumerator(),n=e.getDenominator();if(n.isOne()||!n.isProduct()&&n.isLinear())return e;const i=n.getPower(),s=n.toLinearAndUnitMultiplier();return t.div(s.times(n.getMultiplier())).times(s.pow((0,r.one)().minus(i)))}},9684(e,t,n){"use strict";t.simplify=simplify;const i=n(296),r=n(6099),s=n(706),o=n(2724),a=n(2826),l=n(6117),u=n(6808),c=n(1024),m=n(8989),p=n(8125),g=n(6584),d=n(4166);function simplify(e,t={}){"string"==typeof e&&(e=i.Expression.create(e));const n=e.hasDecimal();(0,c.hasDerivedInverseTrig)(e)&&(e=(0,c.rewriteInverseTrig)(e));let r=e=(e=(0,m.toCommonDenominator)(e)).getNumerator().expand().div(e.getDenominator().expand());return t.image===e.text()||(r=simplifyArguments(r),r.isProduct()&&(0,d.hasFactorialRatio)(r)&&(r=(0,u.simplifyFactorials)(r)),!(0,d.hasFactorialRatio)(r)&&e.isProduct()&&(0,d.hasFactorialRatio)(e)||(e.isComplex()?r=(0,a.complexSimplify)(r):(0,d.hasIrrationalDenominator)(r)?r=(0,m.rationalize)(r):r.isSum()?(r=(0,p.tryRewriteTrig)(r),r=(0,g.simplifyTrigSum)(r),r=(0,l.factorCommonPower)(r),r=(0,u.simplifyLogs)(r)):r.isProduct()&&r.isLinear()&&(r=(0,u.simplifyFactorials)(r),r=(0,m.simplifyRadicals)(r),r=function cancelNestedFactors(e){if(!e.isProduct())return e;const t=[],n=[],r=[];let s=0;for(const i of e.elementsArray()){const e=i.getPower();if(-1===e.sign()&&e.isMinusOne?.()){const e=i.invert();e.isProduct()?n.push({base:e,index:s}):r.push(i)}else 1===e.sign()?t.push(i):r.push(i);s++}if(0===n.length||0===t.length)return e;let o=!1;const a=new Set;for(const e of n){const n=e.base.elementsArray(),s=e.base.getMultiplier(),l=[];let u=!1;for(const e of n){let n=!1;for(let r=0;r<t.length;r++){if(a.has(r))continue;const s=t[r].toUnitMultiplier(),l=e.toUnitMultiplier();if(s.eq(l)){const s=t[r].getMultiplier().div(e.getMultiplier());s.isOne()?a.add(r):t[r]=i.Expression.fromRational(s),n=!0,u=!0,o=!0;break}}n||l.push(e)}if(u)if(0===l.length)r.push(i.Expression.fromRational(s).invert());else{let e=i.Expression.fromRational(s);for(const t of l)e=e.times(t);r.push(e.invert())}else r.push(e.base.invert())}if(!o)return e;let l=i.Expression.fromRational(e.getMultiplier());for(let e=0;e<t.length;e++)a.has(e)||(l=l.times(t[e]));for(const e of r)l=l.times(e);return l}(r),r=(0,m.cancelCommonFactors)(r),r=(0,p.tryRewriteTrig)(r)))),r=function factorResult(e){if(e.isNUM())return e;function rebuildFactorResult(e,t){let n=(0,s.product)(...t);return e.hasDecimal()&&1===t.length&&t[0].eq(e)&&(n=e),n}const t=e.getNumerator(),n=e.getDenominator(),i=rebuildFactorResult(t,(0,o.polyFactorExpressions)(t)),r=rebuildFactorResult(n,(0,o.polyFactorExpressions)(n));return i.div(r)}(r),n&&(r.getMultiplier().asDecimal=!0),r}function simplifyArguments(e){let t;const n=e.getMultiplier(),s=e.getPower();if(e.isFunction())t=i.Expression.toFunction(e.name,e.getArguments().map(e=>simplify(e)));else if(e.isProduct()){t=(0,r.one)();for(const n of e.elementsArray()){const e=simplifyArguments(n);t=t.times(e)}}else if(e.isSum()){t=(0,r.zero)();for(const n of e.elementsArray())t=t.plus(simplifyArguments(n))}return t=t?t.pow(s).times(n):e,t}},8125(e,t,n){"use strict";t.hasDerivedTrig=hasDerivedTrig,t.rewrite=rewrite,t.tryRewriteTrig=function tryRewriteTrig(e){if(!hasDerivedTrig(e))return e;const t=rewrite(e);if(complexity(t)<=complexity(e))return t;return e};const i=n(296),r=n(6099),s=n(8300),o=n(1649);function hasDerivedTrig(e){let t=!1;return e.forEveryElement(e=>((e.isFunction(s.TAN)||e.isFunction(s.SEC)||e.isFunction(s.CSC)||e.isFunction(s.COT))&&(t=!0),e)),t}function rewrite(e){if(e.isFunction(s.TAN)||e.isFunction(s.COT)||e.isFunction(s.SEC)||e.isFunction(s.CSC))return function rewriteTrigElement(e){const t=e.getMultiplier(),n=e.getPower(),r=e.getArguments();if(e.isFunction(s.TAN)&&r.length>0){const e=r[0];return i.Expression.fromRational(t).times((0,o.sin)(e).pow(n)).times((0,o.cos)(e).pow(n.neg()))}if(e.isFunction(s.COT)&&r.length>0){const e=r[0];return i.Expression.fromRational(t).times((0,o.cos)(e).pow(n)).times((0,o.sin)(e).pow(n.neg()))}if(e.isFunction(s.SEC)&&r.length>0){const e=r[0];return i.Expression.fromRational(t).times((0,o.cos)(e).pow(n.neg()))}if(e.isFunction(s.CSC)&&r.length>0){const e=r[0];return i.Expression.fromRational(t).times((0,o.sin)(e).pow(n.neg()))}return e}(e);if(e.isSum()){const t=e.getMultiplier(),n=e.getPower();let s=(0,r.zero)();for(const t of e.elementsArray())s=s.plus(rewrite(t));return n.isOne()||(s=s.pow(n)),t.isOne()||(s=s.times(i.Expression.fromRational(t))),s}if(e.isProduct()){const t=e.getMultiplier(),n=e.getPower();let s=(0,r.one)();for(const t of e.elementsArray())s=s.times(rewrite(t));return n.isOne()||(s=s.pow(n)),t.isOne()||(s=s.times(i.Expression.fromRational(t))),s}return e.isFunction(),e}function complexity(e){let t=e.text().length;const n=new Set;return e.forEveryElement(e=>(e.isFunction(s.SIN)&&n.add(s.SIN),e.isFunction(s.COS)&&n.add(s.COS),e.isFunction(s.TAN)&&n.add(s.TAN),e.isFunction(s.SEC)&&n.add(s.SEC),e.isFunction(s.CSC)&&n.add(s.CSC),e.isFunction(s.COT)&&n.add(s.COT),e)),t+=10*n.size,t}},6584(e,t,n){"use strict";t.simplifyTrigSum=function simplifyTrigSum(e){if(!e.isSum())return e;let t=function simplifyPythagorean(e){if(!e.isSum())return e;const t=[],n=[];for(const i of e.elementsArray()){const e=extractTrigSquared(i);e?t.push(e):n.push(i)}const i=t.some(e=>e.trigFn===s.SIN),a=t.some(e=>e.trigFn===s.COS);if(!i||!a)return e;const l=new Map;for(const e of t){const t=e.arg.text();let n=l.get(t);n||(n={sins:[],coss:[]},l.set(t,n)),e.trigFn===s.SIN?n.sins.push(e):n.coss.push(e)}const u=[...n];for(const[,e]of l){const{sins:t,coss:n}=e,i=new Set,s=new Set;for(let e=0;e<t.length;e++)for(let r=0;r<n.length;r++)i.has(e)||s.has(r)||t[e].coeff.eq(n[r].coeff)&&(u.push(t[e].coeff),i.add(e),s.add(r));for(let e=0;e<t.length;e++)if(!i.has(e))for(let a=0;a<n.length;a++)if(!s.has(a)&&t[e].arg.eq(n[a].arg)){const l=t[e].coeff,c=n[a].coeff;let m,p,g;1===l.minus(c).sign()?(m=c,p=l,g=(0,o.sin)(t[e].arg).pow((0,r.two)())):(m=l,p=c,g=(0,o.cos)(n[a].arg).pow((0,r.two)()));const d=m.getDenominator(),h=m.times(d),x=p.minus(m).times(d),E=h.plus(x.times(g));u.push((0,r.one)().div(d).times(E)),i.add(e),s.add(a)}for(let e=0;e<t.length;e++)i.has(e)||u.push(t[e].original);for(let e=0;e<n.length;e++)s.has(e)||u.push(n[e].original)}if(1===u.length)return u[0];let c=(0,r.zero)();for(const e of u)c=c.plus(e);return c}(e);t.isSum()&&(t=function simplifyDerivedPythagorean(e){if(!e.isSum())return e;const t=[],n=[];for(const i of e.elementsArray()){const e=extractDerivedTrigSquared(i);e?t.push(e):n.push(i)}if(t.length<2)return e;const i=new Map;for(const e of t){const t=e.arg.text();let n=i.get(t);n||(n={secs:[],tans:[],cscs:[],cots:[]},i.set(t,n)),e.trigFn===s.SEC?n.secs.push(e):e.trigFn===s.TAN?n.tans.push(e):e.trigFn===s.CSC?n.cscs.push(e):e.trigFn===s.COT&&n.cots.push(e)}const o=[...n];for(const[,e]of i){const{secs:t,tans:n,cscs:i,cots:r}=e,s=new Set,a=new Set,l=new Set,u=new Set;for(let e=0;e<t.length;e++)for(let i=0;i<n.length;i++){if(s.has(e)||a.has(i))continue;const r=t[e].coeff,l=n[i].coeff;r.eq(l.neg())&&(o.push(r),s.add(e),a.add(i))}for(let e=0;e<i.length;e++)for(let t=0;t<r.length;t++){if(l.has(e)||u.has(t))continue;const n=i[e].coeff,s=r[t].coeff;n.eq(s.neg())&&(o.push(n),l.add(e),u.add(t))}for(let e=0;e<t.length;e++)s.has(e)||o.push(t[e].original);for(let e=0;e<n.length;e++)a.has(e)||o.push(n[e].original);for(let e=0;e<i.length;e++)l.has(e)||o.push(i[e].original);for(let e=0;e<r.length;e++)u.has(e)||o.push(r[e].original)}if(1===o.length)return o[0];let a=(0,r.zero)();for(const e of o)a=a.plus(e);return a}(t));return t};const i=n(296),r=n(6099),s=n(8300),o=n(1649);function extractTrigSquared(e){if((e.isFunction(s.SIN)||e.isFunction(s.COS))&&e.getPower().eq((0,r.two)()))return{coeff:i.Expression.fromRational(e.getMultiplier()),trigFn:e.isFunction(s.SIN)?s.SIN:s.COS,arg:e.getArguments()[0],trigPower:e.getPower(),original:e};if(e.isProduct()){let t=null,n=null,o=(0,r.one)();const a=[];for(const l of e.elementsArray())!t&&(l.isFunction(s.SIN)||l.isFunction(s.COS))&&l.getPower().eq((0,r.two)())?(t=l,n=l.isFunction(s.SIN)?s.SIN:s.COS,o=i.Expression.fromRational(l.getMultiplier())):a.push(l);if(t&&n){let r=i.Expression.fromRational(e.getMultiplier());for(const e of a)r=r.times(e);return r=r.times(o),{coeff:r,trigFn:n,arg:t.getArguments()[0],trigPower:t.getPower(),original:e}}}return null}function extractDerivedTrigSquared(e){const t=[s.TAN,s.SEC,s.CSC,s.COT];for(const n of t)if(e.isFunction(n)&&e.getPower().eq((0,r.two)()))return{coeff:i.Expression.fromRational(e.getMultiplier()),trigFn:n,arg:e.getArguments()[0],trigPower:e.getPower(),original:e};if(e.isProduct()){let n=null,s=null,o=(0,r.one)();const a=[];for(const l of e.elementsArray())if(n)a.push(l);else{for(const e of t)if(l.isFunction(e)&&l.getPower().eq((0,r.two)())){n=l,s=e,o=i.Expression.fromRational(l.getMultiplier());break}n||a.push(l)}if(n&&s){let t=i.Expression.fromRational(e.getMultiplier());for(const e of a)t=t.times(e);return t=t.times(o),{coeff:t,trigFn:s,arg:n.getArguments()[0],trigPower:n.getPower(),original:e}}}return null}},4166(e,t,n){"use strict";t.hasIrrationalDenominator=function hasIrrationalDenominator(e){return e.hasRadical(!0)},t.hasFactorialRatio=function hasFactorialRatio(e){if(!e.isProduct())return!1;let t=!1,n=!1;for(const r of e.elementsArray())r.isFunction(i.FACTORIAL)&&(1===r.getPower().sign()?t=!0:-1===r.getPower().sign()&&(n=!0));return t&&n};const i=n(8300)},2634(e,t,n){"use strict";t.sqcomp=function sqcomp(e,t){const n=i.Expression.create(e);if(!t){const e=n.variables();if(0===e.length)throw new s.UnexpectedInputError((0,s.message)("noVariableInExpression"));t=e[0]}const o=n.coeffs(t);if(2!==o.max())throw new s.UnexpectedInputError((0,s.message)("quadraticExpressionExpected"));const a=o.hasPower(2)?o.getPower(2):(0,r.zero)(),l=o.hasPower(1)?o.getPower(1):(0,r.zero)(),u=o.hasPower(0)?o.getPower(0):(0,r.zero)(),c=l.div(a.times(2)),m=u.minus(l.pow(2).div(a.times(4))),p=i.Expression.create(t),g=a.times(p.plus(c).pow(2)).plus(m);return{a,h:c,k:m,variable:t,expression:g}};const i=n(296),r=n(6099),s=n(4703)},8793(e,t,n){"use strict";t.differentiate=function differentiate(e,t,n){let r;r=i.Equation.isEquation(e)?e.each(e=>differentiate(e,t,n)):(0,s.diff)(e,t,n);return r},t.integrateEquation=function integrateEquation(e,t){let n;n=i.Equation.isEquation(e)?e.each(e=>integrateEquation(e,t)):(0,o.integrate)(e,t);return n},t.directionalLimit=function directionalLimit(e,t,n,i){let s="both";i&&(s=(0,r.assertPlainVariableAndGetString)(i));return(0,a.limit)(e,t,n,s)};const i=n(6184),r=n(1897),s=n(2012),o=n(5530),a=n(6082)},2012(e,t,n){"use strict";t.diff=diff;const i=n(296),r=n(6099),s=n(8300),o=n(7056),a=n(4703),l=n(8533);function diff(e,t,n){const u=(e=i.Expression.create(e)).variables();t??=i.Expression.Variable(u[0]),t=i.Expression.create(t);const c="number"==typeof n?i.Expression.create(n):n;if(t?.isNUM())throw new a.UnsupportedOperationError((0,a.message)("unsupportedOperation"));let m;if(e.hasFunction(s.SYMBOLIC_ACCESSOR,!0))m=i.Expression.toFunction(s.DIFF,[e,t,c]);else if(0===u.length||!e.hasVariable(t.value)||e.isConstant())m=(0,r.zero)();else if(t&&!t.isVAR()||c&&!c.isInteger())m=i.Expression.toFunction(s.DIFF,[e,t,c]);else if(e.isEXP()){const n=(0,l.log)(e.getBase()),i=e.getPower(),r=diff(n.times(i),t);m=e.times(r)}else{const n=c?Number(c)-1:0,a=e.getMultiplier().times(e.getPower()),l=e.getPower().minus("1"),u=i.Expression.create(e.value),p=l.isZero()?a:u.pow(l).times(a);if(u.isVAR())m=(0,r.one)();else if(u.isSum()){let e=(0,r.zero)();u.elementsArray().forEach(n=>{e=e.plus(diff(n,t))}),m=e}else if(u.isProduct())m=function productRule(e,t){const n=e.elementsArray();let i=(0,r.zero)();for(let e=0;e<n.length;e++){let r=diff(n[e],t);for(let t=0;t<n.length;t++)e!==t&&(r=r.times(n[t]));i=i.plus(r)}return i}(u,t);else if(u.isFunction()){const e=u.getArguments()[0],n=u.getMultiplier();switch(u.name){case s.LOG:m=(0,o._)(`(${n})/(${e})`);break;case s.COS:m=(0,o._)(`-sin(${e})`);break;case s.SIN:m=(0,o._)(`cos(${e})`);break;case s.TAN:m=(0,o._)(`sec(${e})^2`);break;case s.SEC:m=(0,o._)(`tan(${e})*sec(${e})`);break;case s.CSC:m=(0,o._)(`-cot(${e})*csc(${e})`);break;case s.COT:m=(0,o._)(`-csc(${e})^2`);break;case s.ACOS:m=(0,o._)(`-1/sqrt(1-(${e})^2)`);break;case s.ASIN:m=(0,o._)(`1/sqrt(1-(${e})^2)`);break;case s.ATAN:m=(0,o._)(`1/(1+(${e})^2)`);break;case s.ASEC:m=(0,o._)(`1/(sqrt(1-1/(${e})^2)*(${e})^2)`);break;case s.ACSC:m=(0,o._)(`-1/(sqrt(1-1/(${e})^2)*(${e})^2)`);break;case s.ACOT:m=(0,o._)(`-1/(1+(${e})^2)`);break;case s.COSH:m=(0,o._)(`sinh(${e})`);break;case s.SINH:m=(0,o._)(`cosh(${e})`);break;case s.TANH:m=(0,o._)(`sech(${e})^2`);break;case s.SECH:m=(0,o._)(`-sech(${e})*tanh(${e})`);break;case s.CSCH:m=(0,o._)(`-coth(${e})*csch(${e})`);break;case s.COTH:m=(0,o._)(`-csch(${e})^2`);break;case s.ASINH:m=(0,o._)(`1/sqrt(1+(${e})^2)`);break;case s.ACOSH:m=(0,o._)(`1/(sqrt(-1+(${e}))*sqrt(1+(${e})))`);break;case s.ATANH:m=(0,o._)(`1/(1-(${e})^2)`);break;case s.ASECH:m=(0,o._)(`-1/(sqrt(-1+1/(${e}))*sqrt(1+1/(${e}))*(${e})^2)`);break;case s.ACSCH:m=(0,o._)(`-1/(sqrt(1+1/(${e})^2)*(${e})^2)`);break;case s.ACOTH:m=(0,o._)(`1/(1-(${e})^2)`);break;case s.ABS:m=(0,o._)(`sign(${e})`);break;case s.CI:m=(0,o._)(`cos(${e})/${e}`);break;case s.CHI:m=(0,o._)(`cosh(${e})/${e}`);break;case s.SI:m=(0,o._)(`sin(${e})/${e}`);break;case s.SHI:m=(0,o._)(`sinh(${e})/${e}`);break;case s.EI:m=(0,o._)(`e^(${e})/${e}`);break;case s.LI:m=(0,o._)(`1/${s.LOG}(${e})`);break;case s.ERF:m=(0,o._)(`(2*e^(-(${e})^2))/sqrt(pi)`);break;case s.SGN:m=(0,r.zero)()}m&&(m=m.times(diff(e,t)))}m&&(m=m.times(p)),n>0&&m&&(m=diff(m,t,i.Expression.Number(n)))}return m||i.Expression.toFunction(s.DIFF,[e,t,c])}},1039(e,t,n){"use strict";t.loadCalculusFunctions=function loadCalculusFunctions(){Object.assign(i.mathFunctionRegistry,{diff:(0,i.systemFunction)({fn:o.differentiate,minArgs:1,maxArgs:3,equationArgs:[0],distElWise:!0}),integrate:(0,i.systemFunction)({fn:o.integrateEquation,minArgs:1,maxArgs:2,equationArgs:[0],distElWise:!0}),limit:(0,i.systemFunction)({fn:o.directionalLimit,minArgs:3,maxArgs:4,distElWise:!0}),laplace:(0,i.systemFunction)({fn:u.laplace,minArgs:3,maxArgs:3,distElWise:!0}),ilaplace:(0,i.systemFunction)({fn:l.ilaplace,minArgs:3,maxArgs:3,distElWise:!0}),sum:(0,i.systemFunction)({fn:r.sum,minArgs:4,maxArgs:4,distElWise:!0}),product:(0,i.systemFunction)({fn:r.product,minArgs:4,maxArgs:4,distElWise:!0}),defint:(0,i.systemFunction)({fn:s.defint,minArgs:4,maxArgs:4,distElWise:!0}),[c.FRESNEL_S]:(0,i.systemFunction)({fn:a.S,minArgs:1,maxArgs:1,distElWise:!0}),[c.FRESNEL_C]:(0,i.systemFunction)({fn:a.C,minArgs:1,maxArgs:1,distElWise:!0})})};const i=n(9426),r=n(8533),s=n(3394),o=n(8793),a=n(7410),l=n(7571),u=n(4317),c=n(8300)},7410(e,t,n){"use strict";t.S=function S(e){return fresnel(e,r.FRESNEL_S)},t.C=function C(e){return fresnel(e,r.FRESNEL_C)};const i=n(296),r=n(8300),s=n(2348);function fresnel(e,t){const n=i.Expression.create(e),o=n.isNUM()?n:n.evaluate();let a;if(o.isNUM()){const e=Number(o.getMultiplier().toDecimal());a=i.Expression.create(t===r.FRESNEL_S?(0,s.fresnelS)(e):(0,s.fresnelC)(e))}else a=i.Expression.toFunction(t,[n]);return a}},2212(e,t,n){"use strict";t.tryIntegrationByParts=function tryIntegrationByParts(e,t,n,s=0,a=0){if(!e.isProduct())return;if(a>=4)return;const d=e.elementsArray(),h=[];let x=e.getMultiplier(!0);for(let e of d)if(e.hasVariable(t)){const t=e.getMultiplier(!0);t.isOne()||(x=x.times(t),e=e.div(t)),h.push(e)}else x=x.times(e);if(h.length>2){const e=function tryMergeDerivativePair(e,t){if(e.length<3)return;const n=i.Expression.create(t);for(let i=0;i<e.length;i++){const r=e[i],s=(0,l.diff)(r,n);if(!s.isFunction(o.DIFF))for(let n=0;n<e.length;n++){if(n===i)continue;let o;for(let t=0;t<e.length;t++)t!==i&&t!==n&&(o=o?o.times(e[t]):e[t]);if(!o)continue;if(!s.div(o).hasVariable(t))return[r,e[n]]}}return}(h,t);e&&(h.length=0,h.push(...e))}if(2!==h.length)return;const E=liatePriority(h[0]),y=liatePriority(h[1]);if(E<0||y<0)return;let v,w;E>=y?(v=h[0],w=h[1]):(v=h[1],w=h[0]);const b=E>=y?E:y;if(function isCyclicPair(e,t,n,i){if(e===t&&(e===c||e===u))return!0;if(e===u&&t===c||e===c&&t===u){const t=e===c?n:i;if(t.isFunction()){const e=t.name;if(e!==o.SIN&&e!==o.COS)return!0}}return!1}(E,y,v,w))return;const P=(0,l.diff)(v,i.Expression.create(t));if(P.isFunction(o.DIFF))return;const A=n(w,t,s);if(A.isFunction(o.INTEGRATE))return;const N=x.times(v).times(A),M=x.times(A).times(P);if(!function isProgress(e,t,n,i){if(n===m){const n=maxAlgebraicDegree(e,i);return maxAlgebraicDegree(t,i)<n}if(n===g||n===p)return functionCount(t)<functionCount(e);return functionCount(t)<functionCount(e)}(e,M,b,t))return;const T=n(M,t,s);let I;if(T.isFunction(o.INTEGRATE)){const e=tryIntegrationByParts(M,t,n,s+1,a+1);void 0!==e&&(I=N.plus(e.times((0,r.minusOne)())))}else I=N.plus(T.times((0,r.minusOne)()));return I};const i=n(296),r=n(6099),s=n(652),o=n(8300),a=n(8533),l=n(2012),u=0,c=1,m=2,p=3,g=4;function maxAlgebraicDegree(e,t){let n;if(e.isVAR()&&e.hasVariable(t))n=e.getPower();else if(e.isProduct()){let i=(0,r.zero)();for(const n of e.elementsArray())if(n.isVAR()&&n.hasVariable(t)){const e=n.getPower();i=(0,a.max)(i,e)}n=i}else if(e.isSum()){let i=(0,r.zero)();e.each(e=>{i=(0,a.max)(i,maxAlgebraicDegree(e,t))}),n=i}return n??(0,r.zero)()}function functionCount(e){let t=0;return e.isFunction()&&(t=1),(e.isProduct()||e.isSum())&&e.each(e=>{t+=functionCount(e)}),t}function liatePriority(e){if(e.isVAR())return m;if(e.isEXP())return u;if(e.isFunction()){const t=e.name;if(t===o.LOG||t===o.LN)return g;if((0,s.isInverseTrig)(e))return p;if((0,s.isTrig)(e))return c;if((0,s.isHyperbolicTrig)(e))return c}return-1}},1097(e,t,n){"use strict";t.tryIntegrateBySubstitution=function tryIntegrateBySubstitution(e,t){e.isProduct()||(e=(0,i.factor)(e));if(!e.isProduct())return;const n=e.elementsArray();if(n.length<2)return;return bySubstitution(n,t)},t.tryIntegrateByWrappedFactorSubstitution=function tryIntegrateByWrappedFactorSubstitution(e,t,n){let i=t[0];for(let e=1;e<t.length;e++)i=i.times(t[e]);for(const o of t){const t=(0,r.simplify)(i.div(o));for(const i of getWrappedInnerCandidates(o,n)){const p=(0,c.diff)(i,n);if(p.isZero())continue;const g=(0,r.simplify)(t.div(p));if(g.hasVariable(n))continue;const d=s.Expression.create((0,u.getU)(e)),h=(0,r.simplify)((0,u.subst)(o,i,d));if(h.hasVariable(n)||!h.hasVariable(d.text()))continue;const x=m.tableOfIntegrals.lookup(new l.Pattern(h,[d.text()]),0);if(x&&!x.hasFunction(a.INTEGRATE))return(0,r.simplify)((0,u.subst)(x,d,i).times(g))}}return},t.tryIntegrateByLogSubstitution=function tryIntegrateByLogSubstitution(e,t){const n=(0,r.simplify)(e.getNumerator()),i=(0,r.simplify)(e.getDenominator());if(i.isOne())return;return function testQuotientSides(e,t,n){const i=(0,c.diff)(t,n),s=(0,r.simplify)(e.div(i));if(!s.hasVariable(n))return{fx:t,constant:s};return}(n,i,t)},t.tryIntegrateByPowerSubstitution=function tryIntegrateByPowerSubstitution(e,t){const n=(0,r.simplify)(e.getNumerator()),i=(0,r.simplify)(e.getDenominator());if(i.isOne()||!i.hasVariable(t))return;const s=i.getBase(),a=i.getPower();if(!s.hasVariable(t))return;const l=(0,c.diff)(s,t);if(l.isZero())return;const u=(0,r.simplify)(n.div(l));if(!u.hasVariable(t)){if((0,r.simplify)((0,o.one)().plus(a.times((0,o.minusOne)()))).isZero())return;return{fx:s,constant:u,power:a}}return};const i=n(2724),r=n(9684),s=n(296),o=n(6099),a=n(8300),l=n(2292),u=n(886),c=n(2012),m=n(959),p=n(388);function testProductSides(e,t,n){if(!(0,p.hasTranscendental)(t,n)&&(0,p.hasTranscendental)(e,n))return;const i=(0,c.diff)(e,n);if(i.isZero())return;const a=(0,r.simplify)(t.div(i));if(!a.hasVariable(n))return{fx:e,constant:a,power:(0,o.one)()};if(e.isVAR())return;let l=a,u=0;for(let t=0;t<8;t++){const t=(0,r.simplify)(l.div(e));if(!t.hasVariable(n)){const n=s.Expression.Number(u+2);if(s.Expression.Number(u+3).isZero())return;return{fx:e,constant:t,power:n}}l=t,u++}}function bySubstitution(e,t){const n=e.length;let i=e[0];for(let t=1;t<n;t++)i=i.times(e[t]);for(let i=0;i<n;i++){const r=e[i];let s;for(let t=0;t<n;t++)t!==i&&(s=s?s.times(e[t]):e[t]);s=s??(0,o.one)();const a=testProductSides(r,s,t);if(a)return a;const l=testProductSides(s,r,t);if(l)return l;const u=r.getBase(),c=r.getPower();if(!c.isOne()&&u.hasVariable(t)){const e=u.pow(c.minus((0,o.one)())).times(s),n=testProductSides(u,e,t);if(n)return n}const m=s.getBase(),p=s.getPower();if(!p.isOne()&&m.hasVariable(t)){const e=m.pow(p.minus((0,o.one)())).times(r),n=testProductSides(m,e,t);if(n)return n}}}function getWrappedInnerCandidates(e,t){const n=[];if(e.isFunction()){const i=e.getArguments();1===i.length&&i[0].hasVariable(t)&&n.push(i[0])}if(e.isEXP()){const i=e.getBase(),r=e.getPower();i.hasVariable(t)&&!i.eq(e)&&n.push(i),i.isE()&&r.hasVariable(t)&&!r.eq(e)&&n.push(r)}if(!e.isFunction()&&!e.isEXP()){const i=e.getBase();e.getPower().isOne()||!i.hasVariable(t)||i.eq(e)||n.push(i)}return n}},5530(e,t,n){"use strict";t.integrate=integrate;const i=n(2766),r=n(9684),s=n(8125),o=n(296),a=n(542),l=n(6099),u=n(1897),c=n(8300),m=n(2116),p=n(9565),g=n(2292),d=n(886),h=n(8533),x=n(1649),E=n(2212),y=n(1097),v=n(959),w=n(388);function integrate(e,t,n=0){e=o.Expression.create(e),t=(0,u.assertPlainVariableAndGetString)(o.Expression.create(t));const i=o.Expression.create(e);let b;if(n++>10)b=o.Expression.toFunction(c.INTEGRATE,[i,t]);else{let i;if(({constants:i,expression:e}=(0,a.constantsFreeProduct)(e,t)),e.hasVariable(t))if(e.isSum()&&e.isLinear()){let i=(0,l.zero)();e.each(e=>{i=i.plus(integrate(e,t,n))}),b=i}else b=v.tableOfIntegrals.lookup(new g.Pattern(e,[t]),n);else b=e.times(t);if(b||(b=function tryIntegrateLogPower(e,t,n){if(!e.isFunction(c.LOG))return;const i=e.getPower();if(!i.isInteger()||!i.gt((0,l.one)()))return;const r=e.getArguments();if(1!==r.length)return;let s;try{s=new m.Polynomial(r[0],[t])}catch{return}if(1!==s.deg())return;const o=s.toArray(!1,t),a=o[1]??(0,l.zero)();if(a.isZero())return;const u=e.getBase().pow(i.minus((0,l.one)())),p=integrate(u,t,n);if(p.isFunction(c.INTEGRATE))return;const g=r[0].div(a).times(e);return g.minus(i.times(p))}(e,t,n)),b||(b=function tryIntegrateByRadicalSubstitutionFastPath(e,t,n){const i=(0,d.getU)(e),s=(0,w.radicalSubstitution)(e,t,i);if(!s)return;const a=(0,r.simplify)(s.integrand);if(!isRationalFunctionInVariable(a,s.newVariable))return;const l=tryIntegrateRational(a,s.newVariable,n);if(!l||l.isFunction(c.INTEGRATE))return;return(0,r.simplify)((0,d.subst)(l,o.Expression.create(s.newVariable),s.backSub))}(e,t,n)),b||(b=function tryIntegrateSqrtQuadratic(e,t){const n=e.getPower();if(!n.eq((0,l.half)()))return;const i=e.getBase();if((0,w.hasTranscendental)(i,t))return;let r;try{r=new m.Polynomial(i,[t])}catch{return}if(2!==r.deg())return;const s=r.toArray(!1,t),a=s[0]??(0,l.zero)(),u=s[1]??(0,l.zero)(),p=s[2]??(0,l.zero)();if(p.isZero())return;const g=o.Expression.create(t),d=g.plus(u.div((0,l.two)().times(p))),x=a.minus(u.pow((0,l.two)()).div((0,l.four)().times(p))),E=e,y=(0,l.half)().times(d).times(E);if(x.isZero())return;if(p.gt((0,l.zero)())){const e=p.pow((0,l.half)());if(x.gt((0,l.zero)())){const t=x.pow((0,l.half)()),n=e.times(d).div(t);return y.plus(x.div((0,l.two)().times(e)).times(o.Expression.toFunction(c.ASINH,[n])))}if(x.lt((0,l.zero)())){const t=e.times(d).plus(E);return y.plus(x.div((0,l.two)().times(e)).times((0,h.log)(t)))}return}if(p.lt((0,l.zero)())&&x.gt((0,l.zero)())){const e=p.times("-1").pow((0,l.half)()),t=x.pow((0,l.half)()),n=e.times(d).div(t);return y.plus(x.div((0,l.two)().times(e)).times(o.Expression.toFunction(c.ASIN,[n])))}return}(e,t)),!b&&e.isProduct()){const n=(0,y.tryIntegrateByWrappedFactorSubstitution)(e,e.elementsArray(),t);n&&(b=n)}if(!b&&e.isProduct()){let i=!1;for(const n of e.elementsArray())if(n.isSum()&&(0,w.hasTranscendental)(n,t)){i=!0;break}if(i){const i=e.expand();if(i.isSum()&&i.isLinear()){let e=(0,l.zero)(),r=!0;i.each(i=>{const s=integrate(i,t,n);s.isFunction(c.INTEGRATE)&&(r=!1),e=e.plus(s)}),r&&(b=e)}}}if(!b){const i=(0,E.tryIntegrationByParts)(e,t,integrate,n);i&&(b=i)}if(!b){const n=(0,y.tryIntegrateByLogSubstitution)(e,t);n&&(b=(0,h.log)(n.fx).times(n.constant))}if(!b){const n=(0,y.tryIntegrateBySubstitution)(e,t);if(n){const e=n.power.plus((0,l.one)());b=n.fx.pow(e).div(e).times(n.constant)}}b||(b=function tryIntegratePolynomial(e,t){if(!e.isPolynomialLike()||(0,w.hasTranscendental)(e,t))return;let n;try{n=new m.Polynomial(e,[t])}catch{return}const i=n.toArray(!1,t),r=o.Expression.create(t);let s=(0,l.zero)();for(let e=0;e<i.length;e++){const t=i[e]??(0,l.zero)();if(!t.isZero()){const n=e+1;s=s.plus(t.times(r.pow(n)).div(n))}}return s}(e,t)),b||(b=function tryIntegratePowerQuotient(e,t,n){const i=(0,y.tryIntegrateByPowerSubstitution)(e,t);if(i){const e=i.power,t=(0,l.one)().plus(e.times((0,l.minusOne)()));return i.fx.pow(t).div(t).times(i.constant)}const r=e.getNumerator(),s=e.getDenominator();if(s.isOne()||!s.hasVariable(t))return;const a=s.getBase(),u=s.getPower();if(u.isOne())return;if((0,w.hasTranscendental)(r,t)||(0,w.hasTranscendental)(a,t))return;let g,d,h;try{g=new m.Polynomial(r,[t]),new m.Polynomial(a,[t])}catch{return}if(g.deg()<1)return;try{[d,h]=(0,p.divide)(r,a,void 0,[t])}catch{return}if(o.Expression.create(d).isZero())return;const x=o.Expression.create(d).times(a.pow((0,l.one)().plus(u.times((0,l.minusOne)())))),E=o.Expression.create(h),v=E.isZero()?(0,l.zero)():E.div(s),b=integrate(x,t,n);if(b.isFunction(c.INTEGRATE))return;let P=b;if(!E.isZero()){const e=integrate(v,t,n);if(e.isFunction(c.INTEGRATE))return;P=P.plus(e)}return P}(e,t,n)),b||(b=tryIntegrateRational(e,t,n)),b||(b=function tryIntegrateByWeierstrass(e,t,n){let i=e;(0,s.hasDerivedTrig)(i)&&(i=(0,s.rewrite)(i));const a=function getTrigArgIfRationalInTrig(e,t){let n,i=!0;function walk(e){if(i){if(e.isFunction(c.SIN)||e.isFunction(c.COS)){const r=e.getArguments();return void(1===r.length&&r[0].hasVariable(t)&&(void 0===n?n=r[0]:n.eq(r[0])||(i=!1)))}if(e.isVAR()&&e.hasVariable(t))i=!1;else{if(e.isSum()||e.isProduct()){for(const t of e.elementsArray())walk(t);return void(e.getPower().hasVariable(t)&&(i=!1))}(e.isFunction()&&e.hasVariable(t)||e.isEXP()&&e.hasVariable(t))&&(i=!1)}}}if(walk(e),i&&void 0!==n)return n;return}(i,t);if(!a)return;const u=function getLinearCoefficient(e,t){try{const n=new m.Polynomial(e,[t]);if(1!==n.deg())return;return n.toArray(!1,t)[1]??void 0}catch{return}}(a,t);if(!u)return;const p=(0,d.getU)(e),g=o.Expression.create(p),h=g.pow((0,l.two)()),E=(0,l.one)().plus(h),y=(0,l.two)().times(g).div(E),v=(0,l.one)().minus(h).div(E);let w=(0,d.subst)(i,(0,x.sin)(a),y);w=(0,d.subst)(w,(0,x.cos)(a),v);const b=(0,l.two)().div(u.times(E));if(w=w.times(b),w=(0,r.simplify)(w),w.hasVariable(t))return;if(!isRationalFunctionInVariable(w,p))return;const P=integrate(w,p,n);if(P.isFunction(c.INTEGRATE))return;const A=(0,x.tan)(a.div((0,l.two)()));return(0,r.simplify)((0,d.subst)(P,g,A))}(e,t,n)),b&&(b=b.times(i))}return b??o.Expression.toFunction(c.INTEGRATE,[i,t])}function isRationalFunctionInVariable(e,t){try{return new m.Polynomial(e.getNumerator(),[t]),new m.Polynomial(e.getDenominator(),[t]),!0}catch{return!1}}function tryIntegrateRational(e,t,n){const r=e.getNumerator(),s=e.getDenominator();if(s.isOne()||!s.hasVariable(t))return;if((0,w.hasTranscendental)(r,t)||(0,w.hasTranscendental)(s,t))return;let a,u;try{a=new m.Polynomial(r,[t]),u=new m.Polynomial(s,[t])}catch{return}const g=a.deg(),d=u.deg();if(d<2)return;let x=(0,l.zero)(),E=r;if(g>=d){try{const[e,i]=(0,p.divide)(r,s,void 0,[t]),o=integrate(e,t,n);if(o.isFunction(c.INTEGRATE))return;x=x.plus(o),E=i}catch{return}if(o.Expression.create(E).isZero())return x}const y=o.Expression.create(E).div(s);if(g>=d){const e=integrate(y,t,n);if(!e.isFunction(c.INTEGRATE))return x=x.plus(e),x}const v=function tryIntegrateLinearOverQuadratic(e,t){const n=e.getNumerator(),i=e.getDenominator();if(i.isOne()||!i.hasVariable(t))return;if((0,w.hasTranscendental)(n,t)||(0,w.hasTranscendental)(i,t))return;let r,s;try{const e=n.coeffs(t),o=i.coeffs(t);if(2!==o.max()||e.max()>1)return;r=e.toArray(),s=o.toArray()}catch{return}const a=s[2]??(0,l.zero)(),u=s[1]??(0,l.zero)(),m=s[0]??(0,l.zero)(),p=r[1]??(0,l.zero)(),g=r[0]??(0,l.zero)();if(a.isZero())return;const d=o.Expression.create(t),x=p.div((0,l.two)().times(a)),E=g.minus(x.times(u));let y=(0,l.zero)();x.isZero()||(y=y.plus(x.times((0,h.log)(i))));if(E.isZero())return y;const v=(0,l.two)().times(a).times(d).plus(u),b=(0,l.four)().times(a).times(m).minus(u.pow("2"));let P;if(b.isZero())P=(0,l.two)().times("-1").div(v);else if(b.gt((0,l.zero)())){const e=b.pow((0,l.half)()),t=v.div(e);P=(0,l.two)().div(e).times(o.Expression.toFunction(c.ATAN,[t]))}else{if(!b.lt((0,l.zero)()))return;{const e=b.times("-1").pow((0,l.half)()),t=v.minus(e).div(v.plus(e));P=(0,h.log)(t).div(e)}}return y.plus(E.times(P))}(y,t);if(v)return x.plus(v);let b;try{b=(0,i.partfrac)(y,t)}catch{return}if(b.text()===y.text())return;const P=integrate(b,t,n);return P.isFunction(c.INTEGRATE)?void 0:x.plus(P)}},959(e,t,n){"use strict";t.tableOfIntegrals=void 0;const i=n(296),r=n(6099),s=n(2178),o=n(8533),a=n(5530),l={"a1*cos(a2*x1^n1)^n2":(e,t)=>{if(e.get("n1").isOne()){const n=e.get("n2");if(n.isOne())return e.fromPattern("(a1*sin(a2*x1))/a2");if(n.isEven()){const n=e.fromPattern("a1*((1+cos(2*a2*x1^n1))/2)^(n2/2)").expand();return(0,a.integrate)(n,e.get("x1"),t)}{const n=e.fromPattern("a1*cos(a2*x1^n1)*((1+cos(2*a2*x1^n1))/2)^((n2-1)/2)").expand();return(0,a.integrate)(n,e.get("x1"),t)}}},"a1*sin(a2*x1^n1)^n2":(e,t)=>{if(e.get("n1").isOne()){const n=e.get("n2");if(n.isOne())return e.fromPattern("-((a1*cos(a2*x1))/a2)");if(n.isEven()){const n=e.fromPattern("a1*((1-cos(2*a2*x1^n1))/2)^(n2/2)").expand();return(0,a.integrate)(n,e.get("x1"),t)}{const n=e.fromPattern("a1*sin(a2*x1^n1)*((1-cos(2*a2*x1^n1))/2)^((n2-1)/2)").expand();return(0,a.integrate)(n,e.get("x1"),t)}}},"a1*tan(a2*x1^n1)^n2":(e,t)=>{if(e.get("n1").isOne()){const n=e.get("n2");if(n.isOne())return e.fromPattern("(a1*log(sec(a2*x1)))/a2");if(n.isEven()){const n=e.fromPattern("a1*tan(a2*x1)^(n2-2)*(sec(a2*x1)^2-1)").expand();return(0,a.integrate)(n,e.get("x1"),t)}{const n=e.fromPattern("(a1*tan(a2*x1)^(n2-1))/(a2*(n2-1))"),i=(0,a.integrate)(e.fromPattern("-a1*tan(a2*x1)^(n2-2)"),e.get("x1"),t);return n.plus(i)}}},"a1*sec(a2*x1^n1)^n2":(e,t)=>{if(e.get("n1").isOne()){if(e.get("n2").isOne())return e.fromPattern("(a1*log(tan(a2*x1)+sec(a2*x1)))/a2");const n=e.fromPattern("(a1*sec(a2*x1)^(n2-2)*tan(a2*x1))/(a2*(n2-1))"),i=(0,a.integrate)(e.fromPattern("a1*((n2-2)/(n2-1))*sec(a2*x1)^(n2-2)"),e.get("x1"),t);return n.plus(i)}},"a1*csc(a2*x1^n1)^n2":(e,t)=>{if(e.get("n1").isOne()){if(e.get("n2").isOne())return e.fromPattern("-(a1*log(csc(a2*x1)+cot(a2*x1)))/a2");const n=e.fromPattern("-(a1*csc(a2*x1)^(n2-2)*cot(a2*x1))/(a2*(n2-1))"),i=(0,a.integrate)(e.fromPattern("-a1*((n2-2)/(n2-1))*csc(a2*x1)^(n2-2)"),e.get("x1"),t);return n.plus(i)}},"a1*cot(a2*x1^n1)^n2":(e,t)=>{if(e.get("n1").isOne()){const n=e.get("n2");if(n.isOne())return e.fromPattern("(a1*log(sin(a2*x1)))/a2");if(n.isEven()){const n=e.fromPattern("a1*cot(a2*x1)^(n2-2)*(csc(a2*x1)^2-1)").expand();return(0,a.integrate)(n,e.get("x1"),t)}{const n=e.fromPattern("-(a1*cot(a2*x1)^(n2-1))/(a2*(n2-1))"),i=(0,a.integrate)(e.fromPattern("-a1*cot(a2*x1)^(n2-2)"),e.get("x1"),t);return n.plus(i)}}},"a1*cos(a2*x1^n1)^n2*cos(a3*x1^n3)^n4":(e,t)=>{if(e.get("n1").isOne()&&e.get("n3").isOne()){const n=e.get("n2"),i=e.get("n4");if(!n.isOne()){let i;return i=n.isEven()?e.fromPattern("a1*((1+cos(2*a2*x1))/2)^(n2/2)*cos(a3*x1)^n4").expand():e.fromPattern("a1*cos(a2*x1)*((1+cos(2*a2*x1))/2)^((n2-1)/2)*cos(a3*x1)^n4").expand(),(0,a.integrate)(i,e.get("x1"),t)}if(!i.isOne()){let n;return n=i.isEven()?e.fromPattern("a1*cos(a2*x1)^n2*((1+cos(2*a3*x1))/2)^(n4/2)").expand():e.fromPattern("a1*cos(a2*x1)^n2*cos(a3*x1)*((1+cos(2*a3*x1))/2)^((n4-1)/2)").expand(),(0,a.integrate)(n,e.get("x1"),t)}return e.get("a2").eq(e.get("a3"))?e.fromPattern("(a1*x1)/2+(a1*sin(2*a2*x1))/(4*a2)"):e.fromPattern("a1*(sin((a2+a3)*x1)/(2*(a2+a3))+sin((a2-a3)*x1)/(2*(a2-a3)))")}},"a1*sin(a2*x1^n1)^n2*sin(a3*x1^n3)^n4":(e,t)=>{if(e.get("n1").isOne()&&e.get("n3").isOne()){const n=e.get("n2"),i=e.get("n4");if(!n.isOne()){let i;return i=n.isEven()?e.fromPattern("a1*((1-cos(2*a2*x1))/2)^(n2/2)*sin(a3*x1)^n4").expand():e.fromPattern("a1*sin(a2*x1)*((1-cos(2*a2*x1))/2)^((n2-1)/2)*sin(a3*x1)^n4").expand(),(0,a.integrate)(i,e.get("x1"),t)}if(!i.isOne()){let n;return n=i.isEven()?e.fromPattern("a1*sin(a2*x1)^n2*((1-cos(2*a3*x1))/2)^(n4/2)").expand():e.fromPattern("a1*sin(a2*x1)^n2*sin(a3*x1)*((1-cos(2*a3*x1))/2)^((n4-1)/2)").expand(),(0,a.integrate)(n,e.get("x1"),t)}return e.get("a2").eq(e.get("a3"))?e.fromPattern("(a1*x1)/2-(a1*sin(2*a2*x1))/(4*a2)"):e.fromPattern("a1*(sin((a2-a3)*x1)/(2*(a2-a3))-sin((a2+a3)*x1)/(2*(a2+a3)))")}},"a1*cos(a2*x1^n1)^n2*sin(a3*x1^n3)^n4":(e,t)=>{if(e.get("n1").isOne()&&e.get("n3").isOne()){const n=e.get("n2"),i=e.get("n4");if(!n.isOne()){let i;return i=n.isEven()?e.fromPattern("a1*((1+cos(2*a2*x1))/2)^(n2/2)*sin(a3*x1)^n4").expand():e.fromPattern("a1*cos(a2*x1)*((1+cos(2*a2*x1))/2)^((n2-1)/2)*sin(a3*x1)^n4").expand(),(0,a.integrate)(i,e.get("x1"),t)}if(!i.isOne()){let n;return n=i.isEven()?e.fromPattern("a1*cos(a2*x1)^n2*((1-cos(2*a3*x1))/2)^(n4/2)").expand():e.fromPattern("a1*cos(a2*x1)^n2*sin(a3*x1)*((1-cos(2*a3*x1))/2)^((n4-1)/2)").expand(),(0,a.integrate)(n,e.get("x1"),t)}return e.get("a2").eq(e.get("a3"))?e.fromPattern("-(a1*cos(2*a2*x1))/(4*a2)"):e.fromPattern("a1*(-cos((a2+a3)*x1)/(2*(a2+a3))+cos((a2-a3)*x1)/(2*(a2-a3)))")}},"a1*sec(a2*x1^n1)^n2*tan(a3*x1^n3)^n4":e=>{if(e.get("n1").isOne()&&e.get("n3").isOne()&&e.get("n2").isOne()&&e.get("n4").isOne()&&e.get("a2").eq(e.get("a3")))return e.fromPattern("(a1*sec(a2*x1))/a2")},"a1*cot(a2*x1^n1)^n2*csc(a3*x1^n3)^n4":e=>{if(e.get("n1").isOne()&&e.get("n3").isOne()&&e.get("n2").isOne()&&e.get("n4").isOne()&&e.get("a2").eq(e.get("a3")))return e.fromPattern("-(a1*csc(a2*x1))/a2")},"a1/(cos(a2*x1^n1)^n2)":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne())return e.fromPattern("(a1*log(tan(a2*x1)+sec(a2*x1)))/a2")},"a1/(sin(a2*x1^n1)^n2)":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne())return e.fromPattern("-(a1*log(csc(a2*x1)+cot(a2*x1)))/a2")},"a1/(tan(a2*x1^n1)^n2)":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne())return e.fromPattern("(a1*log(sin(a2*x1)))/a2")},"a1/(sec(a2*x1^n1)^n2)":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne())return e.fromPattern("(a1*sin(a2*x1))/a2")},"a1/(csc(a2*x1^n1)^n2)":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne())return e.fromPattern("-((a1*cos(a2*x1))/a2)")},"a1/(cot(a2*x1^n1)^n2)":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne())return e.fromPattern("(a1*log(sec(a2*x1)))/a2")},"a1*sin(a2*(a3*x1^n1+a4)^n2)^n3":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne()&&e.get("n3").isOne())return e.fromPattern("-((a1*cos(a2*(a3*x1+a4)))/(a2*a3))")},"a1*cos(a2*(a3*x1^n1+a4)^n2)^n3":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne()&&e.get("n3").isOne())return e.fromPattern("(a1*sin(a2*(a3*x1+a4)))/(a2*a3)")},"a1*tan(a2*(a3*x1^n1+a4)^n2)^n3":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne()&&e.get("n3").isOne())return e.fromPattern("(a1*log(sec(a2*(a3*x1+a4))))/(a2*a3)")},"a1*sec(a2*(a3*x1^n1+a4)^n2)^n3":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne()&&e.get("n3").isOne())return e.fromPattern("(a1*log(tan(a2*(a3*x1+a4))+sec(a2*(a3*x1+a4))))/(a2*a3)")},"a1*csc(a2*(a3*x1^n1+a4)^n2)^n3":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne()&&e.get("n3").isOne())return e.fromPattern("-(a1*log(csc(a2*(a3*x1+a4))+cot(a2*(a3*x1+a4))))/(a2*a3)")},"a1*cot(a2*(a3*x1^n1+a4)^n2)^n3":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne()&&e.get("n3").isOne())return e.fromPattern("(a1*log(sin(a2*(a3*x1+a4))))/(a2*a3)")}},u={"a1*cosh(a2*x1^n1)^n2":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne())return e.fromPattern("(a1*sinh(a2*x1))/a2")},"a1*sinh(a2*x1^n1)^n2":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne())return e.fromPattern("(a1*cosh(a2*x1))/a2")},"a1*tanh(a2*x1^n1)^n2":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne())return e.fromPattern("(a1*log(cosh(a2*x1)))/a2")},"a1*sech(a2*x1^n1)^n2":e=>{if(e.get("n1").isOne()){if(e.get("n2").isOne())return e.fromPattern("(a1*atan(sinh(a2*x1)))/a2");if(e.get("n2").eq(2))return e.fromPattern("(a1*tanh(a2*x1))/a2")}},"a1*csch(a2*x1^n1)^n2":e=>{if(e.get("n1").isOne()){if(e.get("n2").isOne())return e.fromPattern("(a1*log(tanh((a2*x1)/2)))/a2");if(e.get("n2").eq(2))return e.fromPattern("-(a1*coth(a2*x1))/a2")}},"a1*coth(a2*x1^n1)^n2":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne())return e.fromPattern("(a1*log(sinh(a2*x1)))/a2")},"a1*sinh(a2*(a3*x1^n1+a4)^n2)^n3":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne()&&e.get("n3").isOne())return e.fromPattern("(a1*cosh(a2*(a3*x1+a4)))/(a2*a3)")},"a1*cosh(a2*(a3*x1^n1+a4)^n2)^n3":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne()&&e.get("n3").isOne())return e.fromPattern("(a1*sinh(a2*(a3*x1+a4)))/(a2*a3)")},"a1*tanh(a2*(a3*x1^n1+a4)^n2)^n3":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne()&&e.get("n3").isOne())return e.fromPattern("(a1*log(cosh(a2*(a3*x1+a4))))/(a2*a3)")},"a1*coth(a2*(a3*x1^n1+a4)^n2)^n3":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne()&&e.get("n3").isOne())return e.fromPattern("(a1*log(sinh(a2*(a3*x1+a4))))/(a2*a3)")},"a1*sech(a2*(a3*x1^n1+a4)^n2)^n3":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne()){if(e.get("n3").isOne())return e.fromPattern("(a1*atan(sinh(a2*(a3*x1+a4))))/(a2*a3)");if(e.get("n3").eq(2))return e.fromPattern("(a1*tanh(a2*(a3*x1+a4)))/(a2*a3)")}},"a1*csch(a2*(a3*x1^n1+a4)^n2)^n3":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne()){if(e.get("n3").isOne())return e.fromPattern("(a1*log(tanh((a2*(a3*x1+a4))/2)))/(a2*a3)");if(e.get("n3").eq(2))return e.fromPattern("-(a1*coth(a2*(a3*x1+a4)))/(a2*a3)")}},"a1*sech(a2*(a3*x1^n1+a4)^n2)^n3*tanh(a5*(a6*x1^n4+a7)^n5)^n6":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne()&&e.get("n3").isOne()&&e.get("n4").isOne()&&e.get("n5").isOne()&&e.get("n6").isOne()&&e.get("a2").eq(e.get("a5"))&&e.get("a3").eq(e.get("a6"))&&e.get("a4").eq(e.get("a7")))return e.fromPattern("-(a1*sech(a2*(a3*x1+a4)))/(a2*a3)")},"a1*coth(a2*(a3*x1^n1+a4)^n2)^n3*csch(a5*(a6*x1^n4+a7)^n5)^n6":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne()&&e.get("n3").isOne()&&e.get("n4").isOne()&&e.get("n5").isOne()&&e.get("n6").isOne()&&e.get("a2").eq(e.get("a5"))&&e.get("a3").eq(e.get("a6"))&&e.get("a4").eq(e.get("a7")))return e.fromPattern("-(a1*csch(a2*(a3*x1+a4)))/(a2*a3)")},"a1*cosh(a2*x1^n1)^n2*sinh(a3*x1^n3)^n4":(e,t)=>{if(e.get("n1").isOne()&&e.get("n3").isOne()&&e.get("a2").eq(e.get("a3"))){const n=e.get("n2"),i=e.get("n4");if(i.isOne())return e.fromPattern("(a1*cosh(a2*x1)^(n2+1))/(a2*(n2+1))");if(n.isOne())return e.fromPattern("(a1*sinh(a2*x1)^(n4+1))/(a2*(n4+1))");if(i.isOdd()){const n=e.fromPattern("a1*cosh(a2*x1)^n2*(cosh(a2*x1)^2-1)^((n4-1)/2)*sinh(a2*x1)").expand();return(0,a.integrate)(n,e.get("x1"),t)}if(n.isOdd()){const n=e.fromPattern("a1*(1+sinh(a2*x1)^2)^((n2-1)/2)*sinh(a2*x1)^n4*cosh(a2*x1)").expand();return(0,a.integrate)(n,e.get("x1"),t)}}},"a1*sech(a2*x1^n1)^n2*tanh(a3*x1^n3)^n4":(e,t)=>{if(e.get("n1").isOne()&&e.get("n3").isOne()&&e.get("a2").eq(e.get("a3"))){const n=e.get("n2"),i=e.get("n4");if(i.isOne())return e.fromPattern("-(a1*sech(a2*x1)^n2)/(a2*n2)");if(n.eq(2))return e.fromPattern("(a1*tanh(a2*x1)^(n4+1))/(a2*(n4+1))");if(i.isOdd()){const n=e.fromPattern("a1*sech(a2*x1)^n2*(1-sech(a2*x1)^2)^((n4-1)/2)*tanh(a2*x1)").expand();return(0,a.integrate)(n,e.get("x1"),t)}if(n.isEven()){const n=e.fromPattern("a1*(1-tanh(a2*x1)^2)^((n2-2)/2)*sech(a2*x1)^2*tanh(a2*x1)^n4").expand();return(0,a.integrate)(n,e.get("x1"),t)}}},"a1*coth(a2*x1^n1)^n2*csch(a3*x1^n3)^n4":(e,t)=>{if(e.get("n1").isOne()&&e.get("n3").isOne()&&e.get("a2").eq(e.get("a3"))){const n=e.get("n2"),i=e.get("n4");if(n.isOne())return e.fromPattern("-(a1*csch(a2*x1)^n4)/(a2*n4)");if(i.eq(2))return e.fromPattern("-(a1*coth(a2*x1)^(n2+1))/(a2*(n2+1))");if(n.isOdd()){const n=e.fromPattern("a1*(1+csch(a2*x1)^2)^((n2-1)/2)*csch(a2*x1)^n4*coth(a2*x1)").expand();return(0,a.integrate)(n,e.get("x1"),t)}if(i.isEven()){const n=e.fromPattern("a1*coth(a2*x1)^n2*(coth(a2*x1)^2-1)^((n4-2)/2)*csch(a2*x1)^2").expand();return(0,a.integrate)(n,e.get("x1"),t)}}}},c={"a1*log(a2*x1^n1)^n2":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne())return e.fromPattern("(a1*(a2*x1*log(a2*x1)-a2*x1))/a2")},"(a1*log(a2*x1^n2)^n3)/x1^n1":e=>{if(e.get("n2").isOne()&&e.get("n3").isOne())return e.get("n1").isOne()?e.fromPattern("a1*log(x1)*log(a2*x1)-(a1*log(x1)^2)/2"):e.fromPattern("(a1*x1^(1-n1)*log(a2*x1))/(1-n1)-(a1*x1^(1-n1))/(1-n1)^2")},"a1*x1^n1*log(a2*x1^n2)^n3":e=>{if(e.get("n2").isOne()&&e.get("n3").isOne())return e.fromPattern("(a1*x1^(n1+1)*log(a2*x1))/(n1+1)-(a1*x1^(n1+1))/(n1+1)^2")},"a1*x1^n1":e=>e.fromPattern("(a1*x1^(n1+1))/(n1+1)"),"a1/x1^n1":e=>e.get("n1").isOne()?e.fromPattern("a1*log(x1)"):e.fromPattern("(a1*x1^(-n1+1))/(-n1+1)"),"a1*(a2*x1^n1+a3)^n2":e=>{if(e.get("n1").isOne())return e.fromPattern("(a1*(a2*x1+a3)^(n2+1))/(a2*(n2+1))")},"a1/((a2*x1^n1+a3)^n2)":e=>{if(e.get("n1").isOne())return e.get("n2").isOne()?e.fromPattern("(a1*log(a2*x1+a3))/a2"):e.fromPattern("(a1*(a2*x1+a3)^(-n2+1))/(a2*(-n2+1))")},"a1*log(a2*(a3*x1^n1+a4)^n2)^n3":e=>{if(e.get("n3").isOne()&&e.get("n2").isOne()){const t=e.get("n1");if(t.isOne())return e.fromPattern("(a1*(a2*(a3*x1+a4)*log(a2*(a3*x1+a4))-a2*(a3*x1+a4)))/(a2*a3)");if(e.get("a3").times(e.get("a4")).lt((0,r.zero)())){if(t.eq((0,r.two)()))return e.fromPattern("a1*(x1*log(a2*(a3*x1^2+a4))-2*a3*(x1/a3-(a4*log((2*a3*x1-2*sqrt(-(a3*a4)))/(2*a3*x1+2*sqrt(-(a3*a4)))))/(2*a3*sqrt(-(a3*a4)))))");if(t.eq((0,r.three)()))return e.fromPattern(`a1*(x1*log(a2*(a3*x1^3+a4))-3*a3*((${i.Expression.Img()}*a4^(1/3)*log((2*a3^(2/3)*x1-sqrt(3)*${i.Expression.Img()}*a3^(1/3)*a4^(1/3)-a3^(1/3)*a4^(1/3))/(2*a3^(2/3)*x1+sqrt(3)*${i.Expression.Img()}*a3^(1/3)*a4^(1/3)-a3^(1/3)*a4^(1/3))))/(2*sqrt(3)*a3^(4/3))+(a4^(1/3)*log(a3^(2/3)*x1^2-a3^(1/3)*a4^(1/3)*x1+a4^(2/3)))/(6*a3^(4/3))-(a4^(1/3)*log((a3^(1/3)*x1+a4^(1/3))/a3^(1/3)))/(3*a3^(4/3))+x1/a3))`)}else{if(t.eq((0,r.two)()))return e.fromPattern("a1*(x1*log(a2*(a3*x1^2+a4))-2*a3*(x1/a3-(a4*atan((a3*x1)/sqrt(a3*a4)))/(a3*sqrt(a3*a4))))");if(t.eq((0,r.three)()))return e.fromPattern(`a1*(x1*log(a2*(a3*x1^3+a4))-3*a3*((${i.Expression.Img()}*a4^(1/3)*log((2*a3^(2/3)*x1-sqrt(3)*${i.Expression.Img()}*a3^(1/3)*a4^(1/3)-a3^(1/3)*a4^(1/3))/(2*a3^(2/3)*x1+sqrt(3)*${i.Expression.Img()}*a3^(1/3)*a4^(1/3)-a3^(1/3)*a4^(1/3))))/(2*sqrt(3)*a3^(4/3))+(a4^(1/3)*log(a3^(2/3)*x1^2-a3^(1/3)*a4^(1/3)*x1+a4^(2/3)))/(6*a3^(4/3))-(a4^(1/3)*log((a3^(1/3)*x1+a4^(1/3))/a3^(1/3)))/(3*a3^(4/3))+x1/a3))`)}}}},m={"a1*(a2)^(a3*x1^n1)*cos(a4*x1^n2)^n3":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne()&&e.get("n3").isOne())return e.fromPattern("(a1*(e^(log(a2)*a3*x1)*a4*sin(a4*x1)+e^(log(a2)*a3*x1)*log(a2)*a3*cos(a4*x1)))/(a4^2+log(a2)^2*a3^2)")},"a1*(a2)^(a3*x1^n1)*sin(a4*x1^n2)^n3":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne()&&e.get("n3").isOne())return e.fromPattern("(a1*(e^(log(a2)*a3*x1)*log(a2)*a3*sin(a4*x1)-e^(log(a2)*a3*x1)*a4*cos(a4*x1)))/(a4^2+log(a2)^2*a3^2)")},"a1*(a2)^(a3*x1^n1)*cosh(a4*x1^n2)^n3":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne()&&e.get("n3").isOne())return e.fromPattern("(a1*(x1-e^(-((-((log(a2)*a3)/a4)-1)*a4*x1))/((-((log(a2)*a3)/a4)-1)*a4)))/2")},"a1*(a2)^(a3*x1^n1)*sinh(a4*x1^n2)^n3":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne()&&e.get("n3").isOne())return e.fromPattern("(a1*(-x1-e^(-((-((log(a2)*a3)/a4)-1)*a4*x1))/((-((log(a2)*a3)/a4)-1)*a4)))/2")},"a1*(a2)^(a3*x1^n1)*x1^n2":e=>{if(e.get("n1").isOne()){const t=e.get("n2");if(t.isOne())return e.fromPattern("(e^(log(a2)*a3*x1)*a1*(log(a2)*a3*x1-1))/(log(a2)^2*a3^2)");if(t.eq((0,r.two)()))return e.fromPattern("(e^(log(a2)*a3*x1)*a1*(log(a2)^2*a3^2*x1^2-2*log(a2)*a3*x1+2))/(log(a2)^3*a3^3)");if(t.eq((0,r.three)()))return e.fromPattern("(e^(log(a2)*a3*x1)*a1*(log(a2)^3*a3^3*x1^3-3*log(a2)^2*a3^2*x1^2+6*log(a2)*a3*x1-6))/(log(a2)^4*a3^4)");if(t.eq((0,r.four)()))return e.fromPattern("(e^(log(a2)*a3*x1)*a1*(log(a2)^4*a3^4*x1^4-4*log(a2)^3*a3^3*x1^3+12*log(a2)^2*a3^2*x1^2-24*log(a2)*a3*x1+24))/(log(a2)^5*a3^5)");if(t.eq((0,r.five)()))return e.fromPattern("(e^(log(a2)*a3*x1)*a1*(log(a2)^5*a3^5*x1^5-5*log(a2)^4*a3^4*x1^4+20*log(a2)^3*a3^3*x1^3-60*log(a2)^2*a3^2*x1^2+120*log(a2)*a3*x1-120))/(log(a2)^6*a3^6)");if(t.eq((0,r.six)()))return e.fromPattern("(e^(log(a2)*a3*x1)*a1*(log(a2)^6*a3^6*x1^6-6*log(a2)^5*a3^5*x1^5+30*log(a2)^4*a3^4*x1^4-120*log(a2)^3*a3^3*x1^3+360*log(a2)^2*a3^2*x1^2-720*log(a2)*a3*x1+720))/(log(a2)^7*a3^7)")}}},p={"(a1*sin(a2*x1^n2)^n3)/x1^n1":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne()&&e.get("n3").isOne())return(0,o.Si)(e.fromPattern("a2*x1")).times(e.get("a1"))},"(a1*cos(a2*x1^n2)^n3)/x1^n1":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne()&&e.get("n3").isOne())return(0,o.Ci)(e.fromPattern("a2*x1")).times(e.get("a1"))},"(a1*(a2)^(a3*x1^n1))/x1^n2":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne())return(0,o.Ei)(e.fromPattern("log(a2)*a3*x1")).times(e.get("a1"))}};t.tableOfIntegrals=new s.LookupTable,t.tableOfIntegrals.addEntries(l),t.tableOfIntegrals.addEntries({"a1*acos(a2*x1^n1)^n2":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne())return e.fromPattern("(a1*(a2*x1*acos(a2*x1)-sqrt(1-a2^2*x1^2)))/a2")},"a1*asin(a2*x1^n1)^n2":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne())return e.fromPattern("(a1*(a2*x1*asin(a2*x1)+sqrt(1-a2^2*x1^2)))/a2")},"a1*atan(a2*x1^n1)^n2":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne())return e.fromPattern("(a1*(a2*x1*atan(a2*x1)-log(a2^2*x1^2+1)/2))/a2")},"a1*asec(a2*x1^n1)^n2":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne())return e.fromPattern("(a1*(a2*x1*asec(a2*x1)-log(sqrt(1-1/(a2^2*x1^2))+1)/2+log(1-sqrt(1-1/(a2^2*x1^2)))/2))/a2")},"a1*acsc(a2*x1^n1)^n2":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne())return e.fromPattern("(a1*(a2*x1*acsc(a2*x1)+log(sqrt(1-1/(a2^2*x1^2))+1)/2-log(1-sqrt(1-1/(a2^2*x1^2)))/2))/a2")},"a1*acot(a2*x1^n1)^n2":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne())return e.fromPattern("(a1*(log(a2^2*x1^2+1)/2+a2*x1*acot(a2*x1)))/a2")}}),t.tableOfIntegrals.addEntries(c),t.tableOfIntegrals.addEntries({"a1*(a2)^(a3*x1^n1)":e=>{if(e.get("n1").isOne())return e.fromPattern("(a1*a2^(a3*x1))/(log(a2)*a3)")},"a1*(a2)^(a3*(a4*x1^n1+a5)^n2)":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne())return e.fromPattern("(a1*a2^(a3*(a4*x1+a5)))/(log(a2)*a3*a4)")}}),t.tableOfIntegrals.addEntries(u),t.tableOfIntegrals.addEntries({"a1*acosh(a2*x1^n1)^n2":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne())return e.fromPattern("(a1*(a2*x1*acosh(a2*x1)-sqrt(a2^2*x1^2-1)))/a2")},"a1*asinh(a2*x1^n1)^n2":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne())return e.fromPattern("(a1*(a2*x1*asinh(a2*x1)-sqrt(a2^2*x1^2+1)))/a2")},"a1*atanh(a2*x1^n1)^n2":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne())return e.fromPattern("(a1*(log(1-a2^2*x1^2)/2+a2*x1*atanh(a2*x1)))/a2")},"a1*asech(a2*x1^n1)^n2":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne())return e.fromPattern("(a1*(a2*x1*asech(a2*x1)-atan(sqrt(1/(a2^2*x1^2)-1))))/a2")},"a1*acsch(a2*x1^n1)^n2":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne())return e.fromPattern("(a1*(a2*x1*acsch(a2*x1)+log(sqrt(1/(a2^2*x1^2)+1)+1)/2-log(sqrt(1/(a2^2*x1^2)+1)-1)/2))/a2")},"a1*acoth(a2*x1^n1)^n2":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne())return e.fromPattern("(a1*(log(1-a2^2*x1^2)/2+a2*x1*acoth(a2*x1)))/a2")}}),t.tableOfIntegrals.addEntries(m),t.tableOfIntegrals.addEntries({"a1*(-a2*x1^n1+a3)^n2":e=>{if(e.get("n1").eq(2)&&e.get("n2").isHalf())return e.fromPattern("(a1*x1*(-a2*x1^2+a3)^(1/2))/2+(a1*a3*asin((a2^(1/2)*x1)/(a3^(1/2))))/(2*a2^(1/2))")},"a1/((-a2*x1^n1+a3)^n2)":e=>e.get("n1").eq(2)&&e.get("n2").isOne()?e.fromPattern("(a1/(a2^(1/2)*a3^(1/2)))*atanh((a2^(1/2)*x1)/(a3^(1/2)))"):e.get("n1").eq(2)&&e.get("n2").isHalf()?e.fromPattern("(a1/a2^(1/2))*asin((a2^(1/2)*x1)/(a3^(1/2)))"):void 0,"-a1/((-a2*x1^n1+a3)^n2)":e=>{if(e.get("n1").eq(2)&&e.get("n2").isHalf())return e.fromPattern("(a1/a2^(1/2))*acos((a2^(1/2)*x1)/(a3^(1/2)))")},"a1/((a2*x1^n1+a3)^n2)":e=>e.get("n1").eq(2)&&e.get("n2").isOne()?e.fromPattern("(a1/(a2^(1/2)*a3^(1/2)))*atan((a2^(1/2)*x1)/(a3^(1/2)))"):e.get("n1").eq(2)&&e.get("n2").isHalf()?e.fromPattern("(a1/a2^(1/2))*asinh((a2^(1/2)*x1)/(a3^(1/2)))"):void 0,"-a1/((a2*x1^n1+a3)^n2)":e=>{if(e.get("n1").eq(2)&&e.get("n2").isOne())return e.fromPattern("(a1/(a2^(1/2)*a3^(1/2)))*acot((a2^(1/2)*x1)/(a3^(1/2)))")},"a1/(x1^n1*(-a2/x1^n2+a3)^n3)":e=>{if(e.get("n1").isOne()&&e.get("n2").eq(2)&&e.get("n3").isHalf())return e.fromPattern("(a1/a3^(1/2))*asec((a3^(1/2)*x1)/(a2^(1/2)))")},"-a1/(x1^n1*(-a2/x1^n2+a3)^n3)":e=>{if(e.get("n1").isOne()&&e.get("n2").eq(2)&&e.get("n3").isHalf())return e.fromPattern("(a1/a3^(1/2))*acsc((a3^(1/2)*x1)/(a2^(1/2)))")},"a1/(x1^n1*(a2/x1^n2+a3)^n3)":e=>{if(e.get("n1").isOne()&&e.get("n2").eq(2)&&e.get("n3").eq(.5))return e.fromPattern("a1*acsch((sqrt(a2/a3))/x1)/sqrt(a2*a3)")}}),t.tableOfIntegrals.addEntries(p)},388(e,t,n){"use strict";t.radicalSubstitution=function radicalSubstitution(e,t,n="t"){const o=i.Expression.create(e);if(!t){const e=o.variables();if(0===e.length)return null;t=e[0]}const a=function collectPowerDenominators(e,t){const n=[];function walk(e){if(e.isVAR()&&e.value===t){const t=e.getPower();if(t.isNUM()){const e=t.getMultiplier(),i=e.denominator<0n?-e.denominator:e.denominator;1n!==i&&n.push(i)}return}if(e.isSum()||e.isProduct())for(const t of e.elementsArray())walk(t);else if(e.isFunction())for(const t of e.getArguments())walk(t)}return walk(e),n}(o,t);if(0===a.length)return null;const l=(0,r.bigintLCM)(a),u=Number(l),c=i.Expression.create(n),m=(0,s.rewriteRadicals)(o,t,c,l),p=i.Expression.create(String(u)).times(c.pow(u-1)),g=m.times(p),d=i.Expression.create(t).pow(i.Expression.create(`1/${u}`));return{integrand:g,newVariable:n,originalVariable:t,n:u,backSub:d}},t.hasTranscendental=function hasTranscendental(e,t){if(e.isFunction()&&e.hasVariable(t))return!0;if(e.isEXP()&&e.hasVariable(t))return!0;let n=!1;(e.isProduct()||e.isSum())&&e.each(e=>{hasTranscendental(e,t)&&(n=!0)});return n};const i=n(296),r=n(551),s=n(886)},7571(e,t,n){"use strict";t.ilaplace=function ilaplace(e,t,n){let p;if(e=s.Expression.create(e),t=(0,l.assertPlainVariableAndGetString)(s.Expression.create(t)),n=(0,l.assertPlainVariableAndGetString)(s.Expression.create(n)),e.isSum()&&e.isLinear()){const i=e.elementsArray();p=(0,a.zero)();for(const e of i){const i=ilaplace(e,t,n);if(i.isFunction(u.ILAPLACE)){p=void 0;break}p=p.plus(i)}if(p)return p}const g=s.Expression.fromRational(e.getMultiplier());if(!g.isOne()){const i=ilaplace(e.toUnitMultiplier(),t,n);if(!i.isFunction(u.ILAPLACE))return g.times(i)}if(e.isProduct()){const{constants:i,expression:r}=(0,o.constantsFreeProduct)(e,t);if(!i.isOne()){const e=ilaplace(r,t,n);if(!e.isFunction(u.ILAPLACE))return i.times(e)}}if(p=m.tableOfInverseTransforms.lookup(new c.Pattern(e,[t]),0),p)return"t"!==n&&(p=p.evaluate({t:n})),p;{const i=e.getNumerator(),o=e.getDenominator();if(o.isPolynomialLike()&&i.isPolynomialLike()){const e=o.coeffs(t),l=i.coeffs(t);if(2===e.max()&&l.max()<=1){const{h:e,expression:i}=(0,r.sqcomp)(o,t),c=o.isSum()&&o.elementsArray().some(e=>e.getPower().eq(2)&&e.getBase().isSum());if(!e.isZero()&&!c){const r=l.hasPower(0)?l.getPower(0):(0,a.zero)(),o=l.hasPower(1)?l.getPower(1):(0,a.zero)(),c=s.Expression.create(t).plus(e),m=r.minus(o.times(e)),p=o.isZero()?(0,a.zero)():ilaplace(c.div(i),t,n),g=m.isZero()?(0,a.zero)():ilaplace(i.invert(),t,n);if(!p.isFunction(u.ILAPLACE)&&!g.isFunction(u.ILAPLACE))return o.times(p).plus(m.times(g))}}}}{const i=e.getNumerator(),r=function extractExpShift(e,t){const n=e.isProduct()?e.elementsArray():[e];for(const i of n){if(!i.isEXP())continue;const n=i.getPower();if(!n.hasVariable(t))continue;const{constants:r,expression:s}=(0,o.constantsFreeProduct)(n,t);if(!s.eq(t))continue;if(r.sign()<=0)continue;return{coefficient:r,remainder:e.div(i)}}return}(e.getDenominator(),t);if(r){const e=i.div(r.remainder),o=ilaplace(e,t,n);if(!o.isFunction(u.ILAPLACE)){const e=r.coefficient,t=s.Expression.create(n).minus(e),i=o.subst(n,t);return s.Expression.toFunction(u.HEAVISIDE,[t]).times(i)}}}const d=e.getNumerator(),h=e.getDenominator();if(d.isPolynomialLike()&&h.isPolynomialLike()){const r=(0,i.partfrac)(e,t);if(r!==e){const e=ilaplace(r,t,n);if(!e.isFunction(u.ILAPLACE))return e}}return s.Expression.toFunction(u.ILAPLACE,[e,t,n])};const i=n(2766),r=n(2634),s=n(296),o=n(542),a=n(6099),l=n(1897),u=n(8300),c=n(2292),m=n(1997)},1997(e,t,n){"use strict";t.tableOfInverseTransforms=void 0;const i=n(2178),r=n(2292),s={"a1/x1^n1":e=>{const{n1:t}=e.references;if(!t.isZero()&&!t.isNegative())return e.fromPattern("(a1*t^(n1-1))/gamma(n1)")},"a1/((a2*x1^n1+a3)^n2)":e=>{const{n1:t,n2:n}=e.references;return t.isOne()?e.fromPattern("(a1*t^(n2-1)*e^((-a3/a2)*t))/(a2^n2*gamma(n2))"):t.eq(2)&&n.isOne()?e.fromPattern("(a1*sin((a3^(1/2)*t)/(a2^(1/2))))/(a2^(1/2)*a3^(1/2))"):t.eq(2)&&n.eq(2)?e.fromPattern("(a1*sin((a3^(1/2)*t)/(a2^(1/2))))/(2*a2^(1/2)*a3^(3/2))").minus(e.fromPattern("(a1*t*cos((a3^(1/2)*t)/(a2^(1/2))))/(2*a2*a3)")):void 0},"(a1*x1^n1)/((a2*x1^n2+a3)^n3)":e=>{const{n1:t,n2:n,n3:i}=e.references;if(n.eq(2)){if(t.isOne()){if(i.isOne())return e.fromPattern("(a1*cos((a3^(1/2)*t)/(a2^(1/2))))/a2");if(i.eq(2))return e.fromPattern("(a1*t*sin((a3^(1/2)*t)/(a2^(1/2))))/(2*a2^(3/2)*a3^(1/2))")}return t.eq(2)&&i.eq(2)?e.fromPattern("(a1*sin((a3^(1/2)*t)/(a2^(1/2))))/(2*a2^(1/2)*a3^(1/2))").plus(e.fromPattern("(a1*t*cos((a3^(1/2)*t)/(a2^(1/2))))/(2*a2)")):void 0}},"a1/((a2*(a3*x1^n1+a4)^n2+a5)^n3)":e=>{const{n1:t,n2:n,n3:i,a5:r}=e.references;if(t.isOne()&&n.eq(2))return r.sign()<0?i.isOne()?e.fromPattern("(a1*e^((-a4/a3)*t)*sinh((((-a5)^(1/2))*t)/(a2^(1/2)*a3)))/(a2^(1/2)*a3*((-a5)^(1/2)))"):i.eq(2)?e.fromPattern("(a1*e^((-a4/a3)*t)*((((-a5)^(1/2))*t*cosh((((-a5)^(1/2))*t)/(a2^(1/2)*a3)))/(a2^(1/2)*a3)-sinh((((-a5)^(1/2))*t)/(a2^(1/2)*a3))))/(2*a2^(1/2)*a3*((-a5)^(3/2)))"):void 0:i.isOne()?e.fromPattern("(a1*e^((-a4/a3)*t)*sin((a5^(1/2)*t)/(a2^(1/2)*a3)))/(a2^(1/2)*a3*a5^(1/2))"):i.eq(2)?e.fromPattern("(a1*e^((-a4/a3)*t)*(sin((a5^(1/2)*t)/(a2^(1/2)*a3))-(a5^(1/2)*t*cos((a5^(1/2)*t)/(a2^(1/2)*a3)))/(a2^(1/2)*a3)))/(2*a2^(1/2)*a3*a5^(3/2))"):void 0},"(a1*((a6*x1^n4+a7)^n5))/((a2*(a3*x1^n1+a4)^n2+a5)^n3)":e=>{const{n1:t,n2:n,n3:i,n4:r,n5:s,a3:o,a4:a,a5:l,a6:u,a7:c}=e.references;if(t.isOne()&&n.eq(2)&&r.isOne()&&s.isOne()&&c.times(o).eq(a.times(u)))return l.sign()<0?i.isOne()?e.fromPattern("(a1*a6*e^((-a4/a3)*t)*cosh((((-a5)^(1/2))*t)/(a2^(1/2)*a3)))/(a2*a3^2)"):i.eq(2)?e.fromPattern("(a1*a6*t*e^((-a4/a3)*t)*sinh((((-a5)^(1/2))*t)/(a2^(1/2)*a3)))/(2*a2^(3/2)*a3^3*((-a5)^(1/2)))"):void 0:i.isOne()?e.fromPattern("(a1*a6*e^((-a4/a3)*t)*cos((a5^(1/2)*t)/(a2^(1/2)*a3)))/(a2*a3^2)"):i.eq(2)?e.fromPattern("(a1*a6*t*e^((-a4/a3)*t)*sin((a5^(1/2)*t)/(a2^(1/2)*a3)))/(2*a2^(3/2)*a3^3*a5^(1/2))"):void 0},"(a1*(a6*x1^n4+a7)^n5)/((a2*(a3*x1^n1+a4)^n2+a5)^n3)":e=>{const{n1:t,n2:n,n3:i,n4:r,n5:s,a3:o,a4:a,a5:l,a6:u,a7:c}=e.references;if(t.isOne()&&n.eq(2)&&i.eq(2)&&r.isOne()&&s.eq(2)&&c.times(o).eq(a.times(u)))return l.sign()<0?e.fromPattern("(a1*a6^2*e^((-a4/a3)*t)*(sinh((((-a5)^(1/2))*t)/(a2^(1/2)*a3))+(((-a5)^(1/2))*t*cosh((((-a5)^(1/2))*t)/(a2^(1/2)*a3)))/(a2^(1/2)*a3)))/(2*a2^(3/2)*a3^3*((-a5)^(1/2)))"):e.fromPattern("(a1*a6^2*e^((-a4/a3)*t)*(sin((a5^(1/2)*t)/(a2^(1/2)*a3))+(a5^(1/2)*t*cos((a5^(1/2)*t)/(a2^(1/2)*a3)))/(a2^(1/2)*a3)))/(2*a2^(3/2)*a3^3*a5^(1/2))")},"a1/(a2*(a3*x1^n1+a4)^n2-a5)":e=>{const{n1:t,n2:n}=e.references;if(t.isOne()&&n.eq(2))return e.fromPattern("(a1*e^((-a4/a3)*t)*sinh((a5^(1/2)*t)/(a2^(1/2)*a3)))/(a2^(1/2)*a3*a5^(1/2))")},"(a1*(a6*x1^n3+a7)^n4)/(a2*(a3*x1^n1+a4)^n2-a5)":e=>{const{n1:t,n2:n,n3:i,n4:r}=e.references;if(t.isOne()&&n.eq(2)&&i.isOne()&&r.isOne())return e.fromPattern("(a1*e^((-a4/a3)*t)*cosh((a5^(1/2)*t)/(a2^(1/2)*a3)))/(a2*a3^2)")},"a1/((a2*(a3*x1^n1+a4)^n2-a5)^n3)":e=>{const{n1:t,n2:n,n3:i}=e.references;if(t.isOne()&&n.eq(2)&&i.eq(2))return e.fromPattern("(a1*e^((-a4/a3)*t)*(a5^(1/2)*t*cosh((a5^(1/2)*t)/(a2^(1/2)*a3))-a2^(1/2)*a3*sinh((a5^(1/2)*t)/(a2^(1/2)*a3))))/(2*a2*a3^2*a5^(3/2))")},"(a1*(a6*x1^n3+a7)^n4)/((a2*(a3*x1^n1+a4)^n2-a5)^n5)":e=>{const{n1:t,n2:n,n3:i,n4:r,n5:s}=e.references;if(t.isOne()&&n.eq(2)&&i.isOne()&&r.isOne()&&s.eq(2))return e.fromPattern("(a1*t*e^((-a4/a3)*t)*sinh((a5^(1/2)*t)/(a2^(1/2)*a3)))/(2*a2^(1/2)*a3*a5^(1/2))")},"(a1*((a2*(a3*x1^n1+a4)^n2+a5)^n3))/((a6*(a7*x1^n4+a8)^n5+a9)^n6)":e=>{const{n1:n,n2:i,n3:s,n4:o,n5:a,n6:l,_a2:u,a3:c,a4:m,_a6:p,a7:g,a8:d,_a9:h}=e.references;if(!(n.isOne()&&i.eq(2)&&s.isOne()&&o.isOne()&&a.eq(2)&&l.eq(2)))return;if(!c.eq(g)||!m.eq(d))return;const x=e.get("x1").text(),E=e.fromPattern("1/(a6*(a7*x1^n4+a8)^n5+a9)"),y=e.fromPattern("1/((a6*(a7*x1^n4+a8)^n5+a9)^2)"),v=t.tableOfInverseTransforms.lookup(new r.Pattern(E,[x]),0),w=t.tableOfInverseTransforms.lookup(new r.Pattern(y,[x]),0);return v&&w?e.fromPattern("(a1*a2)/a6").times(v).plus(e.fromPattern("a1*(a5-(a2*a9)/a6)").times(w)):void 0}};t.tableOfInverseTransforms=new i.LookupTable,t.tableOfInverseTransforms.addEntries(s)},4317(e,t,n){"use strict";t.laplace=function laplace(e,t,n){let c;if(e=i.Expression.create(e).expand(),n=(0,o.assertPlainVariableAndGetString)(i.Expression.create(n)),t=(0,o.assertPlainVariableAndGetString)(i.Expression.create(t)),e.isSum()&&e.isLinear()){const i=e.elementsArray();c=(0,s.zero)();for(const e of i){const i=laplace(e,t,n);if(i.isFunction(a.LAPLACE)){c=void 0;break}c=c.plus(i)}if(c)return c}if(e.isProduct()){const{constants:i,expression:s}=(0,r.constantsFreeProduct)(e,t);if(!i.isOne()){const e=laplace(s,t,n);if(!e.isFunction(a.LAPLACE))return i.times(e)}}const m=e.isProduct()?e.elementsArray():[e];for(let e=0;e<m.length;e++){const r=m[e];if(!r.isEXP())continue;const o=r.getBase(),l=r.getPower();if(o.hasVariable(t)||!l.isPolynomialLike())continue;const u=l.coeffs(t).toArray();if(2!==u.length||!u[0].isZero())continue;const c=u[1];if(-1!==c.sign())continue;let p=(0,s.one)();for(let t=0;t<m.length;t++)t!==e&&(p=p.times(m[t]));const g=laplace(p,t,n);if(!g.isFunction(a.LAPLACE)){const e=o.isE()?(0,s.one)():i.Expression.toFunction(a.LOG,[o]),t=i.Expression.Variable(n).minus(c.copy().times(e));return g.subst(n,t)}}if(c=u.tableOfTransforms.lookup(new l.Pattern(e,[t]),0),c)return"s"!==n&&(c=c.evaluate({s:n})),c;return i.Expression.toFunction(a.LAPLACE,[e,t,n])};const i=n(296),r=n(542),s=n(6099),o=n(1897),a=n(8300),l=n(2292),u=n(7052)},7052(e,t,n){"use strict";t.tableOfTransforms=void 0;const i=n(2178),r=n(2012),s={a1:(e,t)=>e.fromPattern("a1/s"),"a1*x1^n1":e=>{const{n1:t}=e.references;if(!t.isNegative()||!t.plus(1).isInteger())return e.fromPattern("a1*gamma(n1+1)/s^(n1+1)")},"a1*(a2)^(a3*x1^n1)":e=>{if(e.get("n1").isOne())return e.fromPattern("a1/(s-log(a2)*a3)")},"a1*sin(a2*x1^n1)^n2":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne())return e.fromPattern("(a1*a2)/(s^2+a2^2)")},"a1*cos(a2*x1^n1)^n2":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne())return e.fromPattern("(a1*s)/(s^2+a2^2)")},"a1*(a2)^(a3*x1^n1)*x1^n2":e=>{const{n1:t,n2:n}=e.references;if(t.isOne()&&(!n.isNegative()||!n.plus(1).isInteger()))return e.fromPattern("a1*gamma(n2+1)/(s-log(a2)*a3)^(n2+1)")},"a1*x1^n1*sin(a2*x1^n2)^n3":e=>{const{_a1:t,n1:n,n2:i,n3:s,_a2:o}=e.references;if(!i.isOne()||!s.isOne())return;if(!n.isInteger()||n.isNegative())return;const a=Number(n.getMultiplier().numerator);let l=e.fromPattern("(a1*a2)/(s^2+a2^2)");for(let e=0;e<a;e++)l=(0,r.diff)(l,"s").neg();return l},"a1*x1^n1*cos(a2*x1^n2)^n3":e=>{const{_a1:t,n1:n,n2:i,n3:s,_a2:o}=e.references;if(!i.isOne()||!s.isOne())return;if(!n.isInteger()||n.isNegative())return;const a=Number(n.getMultiplier().numerator);let l=e.fromPattern("(a1*s)/(s^2+a2^2)");for(let e=0;e<a;e++)l=(0,r.diff)(l,"s").neg();return l},"a1*(a2)^(a3*x1^n1)*sin(a4*x1^n2)^n3":e=>{const{n1:t,n2:n,n3:i}=e.references;if(t.isOne()&&n.isOne()&&i.isOne())return e.fromPattern("(a1*a4)/((s-log(a2)*a3)^2+a4^2)")},"a1*(a2)^(a3*x1^n1)*cos(a4*x1^n2)^n3":e=>{const{n1:t,n2:n,n3:i}=e.references;if(t.isOne()&&n.isOne()&&i.isOne())return e.fromPattern("a1*(s-log(a2)*a3)/((s-log(a2)*a3)^2+a4^2)")},"a1*cos(a2*x1^n1)^n2*sin(a3*x1^n3)^n4":e=>{const{_a1:t,a2:n,a3:i,n1:r,n2:s,n3:o,n4:a}=e.references;if(r.isOne()&&s.isOne()&&o.isOne()&&a.isOne()&&n.eq(i))return e.fromPattern("(a1*a2)/(s^2+4*a2^2)")},"a1*(a2)^(a3*x1^n1)*x1^n2*sin(a4*x1^n3)^n4":e=>{const{n1:t,n2:n,n3:i,n4:r}=e.references;if(t.isOne()&&n.isOne()&&i.isOne()&&r.isOne())return e.fromPattern("(2*a1*a4*(s-a3*log(a2)))/((a4^2+(s-a3*log(a2))^2)^2)")},"a1*(a2)^(a3*x1^n1)*x1^n2*cos(a4*x1^n3)^n4":e=>{const{n1:t,n2:n,n3:i,n4:r}=e.references;if(t.isOne()&&n.isOne()&&i.isOne()&&r.isOne())return e.fromPattern("(a1*((s-a3*log(a2))^2-a4^2))/((a4^2+(s-a3*log(a2))^2)^2)")},"a1*(a2)^(a3*x1^n1)*(a4*sin(a5*x1^n2)^n3-a6*x1^n4*cos(a7*x1^n5)^n6)^n7":e=>{const{n1:t,n2:n,n3:i,n4:r,n5:s,n6:o,n7:a,a5:l,a7:u}=e.references;if(t.isOne()&&n.isOne()&&i.isOne()&&r.isOne()&&s.isOne()&&o.isOne()&&a.isOne()&&l.eq(u))return e.fromPattern("(a1*(a4*a5^2-a6*((s-a3*log(a2))^2-a5^2)))/(((s-a3*log(a2))^2+a5^2)^2)")},"a1*(a2)^(a3*x1^n1)*(a4*sin(a5*x1^n2)^n3+a6*x1^n4*cos(a7*x1^n5)^n6)^n7":e=>{const{n1:t,n2:n,n3:i,n4:r,n5:s,n6:o,n7:a,a5:l,a7:u}=e.references;if(t.isOne()&&n.isOne()&&i.isOne()&&r.isOne()&&s.isOne()&&o.isOne()&&a.isOne()&&l.eq(u))return e.fromPattern("(a1*(a4*a5^2+a6*((s-a3*log(a2))^2-a5^2)))/(((s-a3*log(a2))^2+a5^2)^2)")},"a1*(a2)^(a3*x1^n1)*sinh(a4*x1^n2)^n3":e=>{const{n1:t,n2:n,n3:i}=e.references;if(t.isOne()&&n.isOne()&&i.isOne())return e.fromPattern("(a1*a4)/((s-a3*log(a2))^2-a4^2)")},"a1*(a2)^(a3*x1^n1)*cosh(a4*x1^n2)^n3":e=>{const{n1:t,n2:n,n3:i}=e.references;if(t.isOne()&&n.isOne()&&i.isOne())return e.fromPattern("(a1*(s-a3*log(a2)))/((s-a3*log(a2))^2-a4^2)")},"a1*(a2)^(a3*x1^n1)*x1^n2*sinh(a4*x1^n3)^n4":e=>{const{n1:t,n2:n,n3:i,n4:r}=e.references;if(t.isOne()&&n.isOne()&&i.isOne()&&r.isOne())return e.fromPattern("(2*a1*a4*(s-a3*log(a2)))/(((s-a3*log(a2))^2-a4^2)^2)")},"a1*(a2)^(a3*x1^n1)*x1^n2*cosh(a4*x1^n3)^n4":e=>{const{n1:t,n2:n,n3:i,n4:r}=e.references;if(t.isOne()&&n.isOne()&&i.isOne()&&r.isOne())return e.fromPattern("(a1*((s-a3*log(a2))^2+a4^2))/(((s-a3*log(a2))^2-a4^2)^2)")}};t.tableOfTransforms=new i.LookupTable,t.tableOfTransforms.addEntries(s)},6082(e,t,n){"use strict";t.limit=limit;const i=n(9684),r=n(296),s=n(6099),o=n(8300),a=n(2116),l=n(2292),u=n(8533),c=n(2012),m=n(6541);function evalCategory(e,t,n){try{const r=(0,i.simplify)(e.subst(t,n));return r.isZero()?"zero":r.isPosInf()?"inf":r.isNegInf()?"neginf":r.eq((0,s.one)())?"one":"finite"}catch{return}}function tryRewriteIndeterminate(e,t,n,a,l){if(e.getDenominator().isOne()&&e.isProduct()){const o=e.elementsArray().map(e=>r.Expression.create(e));let u=-1,c=-1;for(let e=0;e<o.length;e++){const i=evalCategory(o[e],t,n);"zero"===i&&-1===u?u=e:"inf"!==i&&"neginf"!==i||-1!==c||(c=e)}if(-1!==u&&-1!==c){const e=o[u],r=o[c],m=[];for(let e=0;e<o.length;e++)e!==u&&e!==c&&m.push(o[e]);let p=e.div((0,s.one)().div(r));for(const e of m)p=p.times(e);return limit((0,i.simplify)(p),t,n,a,l+1)}}if(function isInfMinusInf(e,t,n){if(!e.isSum())return!1;const i=e.elementsArray().map(e=>r.Expression.create(e));let s=!1,o=!1;for(const e of i){const i=evalCategory(e,t,n);"inf"===i?s=!0:"neginf"===i&&(o=!0)}return s&&o}(e,t,n)){const s=(0,i.simplify)(e);if(!s.eq(e))return limit(s,t,n,a,l+1);const o=e.elementsArray().map(e=>r.Expression.create(e));if(2===o.length){const[r,s]=o,u=r.getNumerator(),c=r.getDenominator(),m=s.getNumerator(),p=s.getDenominator(),g=(0,i.simplify)(u.times(p).plus(m.times(c))),d=(0,i.simplify)(c.times(p)),h=g.div(d);if(!h.eq(e))return limit(h,t,n,a,l+1)}}if(e.isEXP()){const i=e.getBase(),c=e.getPower(),m=function classifyPowerForm(e,t,n,i){const r=evalCategory(e,n,i),s=evalCategory(t,n,i);return r&&s?"one"!==r||"inf"!==s&&"neginf"!==s?"zero"===r&&"zero"===s?"zero_to_zero":"inf"!==r&&"neginf"!==r||"zero"!==s?"none":"inf_to_zero":"one_to_inf":"none"}(i,c,t,n);if("one_to_inf"===m||"zero_to_zero"===m||"inf_to_zero"===m){const e=limit(c.times(r.Expression.toFunction(o.LOG,[i])),t,n,a,l+1);if(e.isPosInf())return r.Expression.Inf();if(e.isNegInf())return(0,s.zero)();if(!e.isFunction(o.LIMIT))return(0,u.exp)(e)}}}function growthTier(e){switch(e.type){case"bounded":return 0;case"logarithmic":return 1;case"polynomial":return 2;case"exponential":return 3;case"unknown":return-1}}function getInfinityGrowthClassification(e,t){if(!e.hasVariable(t.text()))return{type:"bounded"};if(e.isEXP()&&e.getBase().isE()&&e.getPower().hasVariable(t.text()))return{type:"exponential",exponent:e.getPower()};if(e.isProduct()){const n=e.elementsArray().map(e=>r.Expression.create(e));let i={type:"bounded"},s=0,o=!1;for(const e of n){const n=getInfinityGrowthClassification(e,t);if("unknown"===n.type)return{type:"unknown"};"bounded"===n.type&&e.hasVariable(t.text())&&(o=!0);const r=growthTier(n);r>s?(i=n,s=r):r===s&&"polynomial"===n.type&&"polynomial"===i.type&&(i={type:"polynomial",degree:i.degree+n.degree})}return o&&s>0?{type:"unknown"}:i}if(e.isFunction(o.LOG)&&e.getArguments()[0]?.hasVariable(t.text())){const n=getInfinityGrowthClassification(e.getArguments()[0],t);return"polynomial"===n.type||"exponential"===n.type||"logarithmic"===n.type?{type:"logarithmic"}:{type:"bounded"}}if(e.isPolynomialLike()){return{type:"polynomial",degree:new a.Polynomial(e).deg()}}if((e.isVAR()||e.isEXP())&&!e.getPower().hasVariable(t.text()))try{const t=e.getPower(),n=t.getMultiplier(),i=Number(n.numerator)/Number(n.denominator);if(isFinite(i)&&0!==i&&t.isNUM())return{type:"polynomial",degree:i}}catch{}return e.isFunction(o.SIN)||e.isFunction(o.COS)||e.isFunction(o.ATAN)?{type:"bounded"}:{type:"unknown"}}function getDominantAtInfinity(e,t){const n=function getAdditiveTerms(e){const t=e.distributeMultiplier();return t.isSum()?t.elementsArray().map(e=>r.Expression.create(e)):[t]}(e);let s=-1,o=-1/0;const a=[];for(const e of n){const n=getInfinityGrowthClassification(e,t);if("unknown"===n.type)return;let i=growthTier(n);"polynomial"===n.type&&n.degree<0&&(i=-1),i>s?(s=i,o="polynomial"===n.type?n.degree:-1/0,a.length=0,a.push(e)):i<s||("polynomial"===n.type?n.degree>o?(o=n.degree,a.length=0,a.push(e)):n.degree===o&&a.push(e):a.push(e))}if(0===a.length)return;let l=a[0];for(let e=1;e<a.length;e++)l=l.plus(a[e]);return(0,i.simplify)(l)}function tryComposition(e,t,n,a,l){if(e.isFunction()&&!e.isFunction(o.LIMIT)){const u=e.getArguments();if(0===u.length||!u.some(e=>e.hasVariable(t.text())))return;const m=e.name;if(m===o.ABS||m===o.SGN){const e=u[0],p=limit(e,t,n,a,l+1);if(p.isFunction(o.LIMIT))return;if(!p.isZero())try{return(0,i.simplify)(r.Expression.toFunction(m,[p]))}catch{return}if(p.isZero()){if(m===o.ABS)return(0,s.zero)();if(m===o.SGN){if("both"===a)return;try{const s=(0,c.diff)(e,t),o=(0,i.simplify)(s.subst(t,n)).sign();if(0!==o){if("right"===a)return r.Expression.create(o>0?1:-1);if("left"===a)return r.Expression.create(o>0?-1:1)}}catch{return}return}}return}const p=[];for(const e of u){let i;try{i=limit(e,t,n,a,l+1)}catch{return}if(i.isFunction(o.LIMIT))return;p.push(i)}const g=p[0];if(g.isPosInf())switch(m){case o.LOG:return r.Expression.Inf();case o.ATAN:return r.Expression.Pi().div((0,s.two)());case o.SQRT:return r.Expression.Inf();case o.SIN:case o.COS:return}if(g.isNegInf())switch(m){case o.ATAN:return r.Expression.Pi().div((0,s.minusTwo)());case o.LOG:case o.SIN:case o.COS:return}try{const e=r.Expression.toFunction(m,p),t=(0,i.simplify)(e);if(!t.isFunction(m))return t;const n=r.Expression.create(e.evaluate());if(!n.isFunction(m))return n}catch{}return}if(e.isEXP()){const u=e.getBase(),c=e.getPower();if(!u.hasVariable(t.text())&&!c.hasVariable(t.text()))return;let m,p;try{m=limit(u,t,n,a,l+1),p=limit(c,t,n,a,l+1)}catch{return}if(m.isFunction(o.LIMIT)||p.isFunction(o.LIMIT))return;const g=m.isPosInf()||m.isNegInf()?"inf":m.isZero()?"zero":m.eq((0,s.one)())?"one":"finite",d=p.isPosInf()||p.isNegInf()?"inf":p.isZero()?"zero":"finite";if("one"===g&&"inf"===d)return;if("zero"===g&&"zero"===d)return;if("inf"===g&&"zero"===d)return;if(m.isPosInf()&&p.isPosInf())return r.Expression.Inf();if(m.isPosInf()&&p.isNegInf())return(0,s.zero)();if(m.isZero()&&p.isPosInf())return(0,s.zero)();if("finite"===g&&"zero"===d)return(0,s.one)();if(!("finite"!==g&&"one"!==g||"finite"!==d&&"zero"!==d))try{return(0,i.simplify)(m.pow(p))}catch{return}if(m.isE()){if(p.isPosInf())return r.Expression.Inf();if(p.isNegInf())return(0,s.zero)()}return}if(e.isSum()){const s=e.elementsArray().map(e=>r.Expression.create(e));if(s.length<2)return;const u=[];let c=!1,m=!1;for(const e of s){let i;try{i=limit(e,t,n,a,l+1)}catch{return}if(i.isFunction(o.LIMIT))return;i.isPosInf()&&(c=!0),i.isNegInf()&&(m=!0),u.push(i)}if(c&&m)return;if(!c&&!m)try{let e=u[0];for(let t=1;t<u.length;t++)e=e.plus(u[t]);return(0,i.simplify)(e)}catch{return}return c&&!m?r.Expression.Inf():m&&!c?r.Expression.NegInf():void 0}if(e.isProduct()){const u=e.elementsArray(!0).map(e=>r.Expression.create(e));if(u.length<2)return;const m=[];let p=!1,g=!1;for(const e of u){let i;try{i=limit(e,t,n,a,l+1)}catch{return}if(i.isFunction(o.LIMIT))return;i.isZero()&&(p=!0),(i.isPosInf()||i.isNegInf())&&(g=!0),m.push(i)}if(p&&g){let e=-1,r=-1;for(let t=0;t<m.length;t++)m[t].isZero()&&-1===e?e=t:(m[t].isPosInf()||m[t].isNegInf())&&-1===r&&(r=t);if(-1!==e&&-1!==r){const s=u[e],o=u[r];try{const m=(0,c.diff)(s,t),p=(0,c.diff)(o,t);if(!p.isZero()){let s=(0,i.simplify)(m.times(o.pow(2)).div(p).neg());for(let t=0;t<u.length;t++)t!==e&&t!==r&&(s=s.times(u[t]));return limit(s,t,n,a,l+1)}}catch{return}}return}if(!g)try{let e=m[0];for(let t=1;t<m.length;t++)e=e.times(m[t]);return(0,i.simplify)(e)}catch{return}if(p&&!g)return(0,s.zero)();if(g&&!p){let e=1;for(const t of m)if(t.isNegInf())e*=-1;else if(t.isPosInf());else{const n=t.sign();if(0===n)return(0,s.zero)();e*=n}return e>0?r.Expression.Inf():r.Expression.NegInf()}return}}function limit(e,t,n,p="both",g=0){let d;e=r.Expression.create(e),t=r.Expression.create(t),n=r.Expression.create(n);const h=e.hasDecimal();if(g>=12)return r.Expression.toFunction(o.LIMIT,[e,t,n,p]);if(n.isPosInf()||n.isNegInf()){e.isSum()&&(d=tryComposition(e,t,n,p,g));const o=d?void 0:getDominantAtInfinity(e.getNumerator(),t),l=d?void 0:getDominantAtInfinity(e.getDenominator(),t);if(o&&l&&o.isPolynomialLike()&&l.isPolynomialLike()){const e=new a.Polynomial(o),t=new a.Polynomial(l),u=e.deg()-t.deg();if(u<0)d=(0,s.zero)();else if(0===u)d=(0,i.simplify)(r.Expression.create(e.LC()).div(r.Expression.create(t.LC())));else{let i=r.Expression.create(e.LC()).div(r.Expression.create(t.LC())).sign();n.isNegInf()&&u%2!=0&&(i*=-1),i>0?d=r.Expression.Inf():i<0&&(d=r.Expression.NegInf())}}if(!d&&o&&l){const e=getInfinityGrowthClassification(o,t),i=getInfinityGrowthClassification(l,t),a="polynomial"===e.type?e.degree:"bounded"===e.type?0:void 0,u="polynomial"===i.type?i.degree:"bounded"===i.type?0:void 0;if(void 0!==a&&void 0!==u){const e=a-u;if(e<0)d=(0,s.zero)();else if(e>0){let t=o.sign()*l.sign();n.isNegInf()&&e%2!=0&&(t*=-1),t>0?d=r.Expression.Inf():t<0&&(d=r.Expression.NegInf())}}}if(!d&&o&&l&&(d=function tryNonPolynomialInfinityLimit(e,t,n,o,a,l){const c=getInfinityGrowthClassification(e,n),m=getInfinityGrowthClassification(t,n),p=growthTier(c),g=growthTier(m);if(!(p<0||g<0))if(p>g){if("exponential"===c.type){const e=limit(c.exponent,n,o,a,l+1);if(e.isPosInf()){const e=t.sign();if(e>0)return r.Expression.Inf();if(e<0)return r.Expression.NegInf()}if(e.isNegInf())return(0,s.zero)()}if("polynomial"===c.type&&("logarithmic"===m.type||"bounded"===m.type)){const n=e.sign(),i=t.sign();if(0!==n&&0!==i)return n*i>0?r.Expression.Inf():r.Expression.NegInf()}}else{if(p<g){if("exponential"===m.type){const e=limit(m.exponent,n,o,a,l+1);if(e.isPosInf())return(0,s.zero)();if(e.isNegInf())return}return(0,s.zero)()}if("exponential"===c.type&&"exponential"===m.type){const r=(0,i.simplify)(c.exponent.minus(m.exponent)),s=(0,u.exp)(r),p=e.getMultiplier(!0),g=t.getMultiplier(!0),d=(0,i.simplify)(p.div(g));return limit((0,i.simplify)(d.times(s)),n,o,a,l+1)}if("logarithmic"===c.type&&"logarithmic"===m.type){const r=(0,i.simplify)(e.div(t));return r.eq(e.div(t))?void 0:limit(r,n,o,a,l+1)}}}(o,l,t,n,p,g)),!d&&o&&l){const i=o.div(l);i.eq(e)||(d=limit(i,t,n,p,g))}if(!d){const i=tryRewriteIndeterminate(e,t,n,p,g);i&&(d=i)}d||(d=tryComposition(e,t,n,p,g))}else{if(e.isFunction(o.SGN)||e.isFunction(o.ABS)){const i=tryComposition(e,t,n,p,g);void 0!==i&&(d=i)}if(!d){const s=function classifyAtPoint(e,t,n){const i={[t.text()]:n};try{const t=r.Expression.create(e.getNumerator().evaluate(i));return r.Expression.create(e.getDenominator().evaluate(i)).isZero()?t.isZero()?"zero_over_zero":"nonzero_over_zero":"regular"}catch{return"unknown"}}(e,t,n);if("regular"===s&&(d=r.Expression.create(e.evaluate({[t.text()]:n}))),d||"nonzero_over_zero"!==s||(d=function tryNonzeroOverZero(e,t,n,i){const s=e.getNumerator(),o=e.getDenominator(),a={[t.text()]:n};let l;try{l=r.Expression.create(s.evaluate(a)).sign()}catch{return}if(0===l)return;let u=o,m=0;for(let e=0;e<4;e++){let n;u=(0,c.diff)(u,t),m=e+1;try{n=r.Expression.create(u.evaluate(a))}catch{return}if(n.isZero())continue;const s=n.sign();if(0===s)return;if(m%2==0&&("both"===i||"left"===i||"right"===i))return l*s>0?r.Expression.Inf():r.Expression.NegInf();const o=s,p=-s;if("right"===i)return l*o>0?r.Expression.Inf():r.Expression.NegInf();if("left"===i)return l*p>0?r.Expression.Inf():r.Expression.NegInf();const g=l*o;return g===l*p?g>0?r.Expression.Inf():r.Expression.NegInf():void 0}}(e,t,n,p)),!d&&"zero_over_zero"===s){const r=(0,i.simplify)(e);r.eq(e)||(d=limit(r,t,n,p,g))}if(!d){const i=tryRewriteIndeterminate(e,t,n,p,g);i&&(d=i)}if(!d){const s=function tryLHopital(e,t,n,s,o){if(o>=4)return;const a=e.getDenominator();if(a.isOne())return;const l=e.getNumerator(),u={[t.text()]:n};let m,p;try{m=r.Expression.create(l.evaluate(u)),p=r.Expression.create(a.evaluate(u))}catch{return}const g=m.isZero()&&p.isZero(),d=(m.isPosInf()||m.isNegInf())&&(p.isPosInf()||p.isNegInf());if(!g&&!d)return;const h=(0,c.diff)(l,t),x=(0,c.diff)(a,t);if(x.isZero())return;const E=(0,i.simplify)(h.div(x));return E.eq(e)?void 0:limit(E,t,n,s,o+1)}(e,t,n,p,g);s&&(d=s)}d||(d=tryComposition(e,t,n,p,g))}}return d||(d=m.tableOfLimits.lookup(new l.Pattern(e,[t.text()]),0)),d??=r.Expression.toFunction(o.LIMIT,[e,t,n,p]),h&&(d.getMultiplier().asDecimal=!0),d}},6541(e,t,n){"use strict";t.tableOfLimits=void 0;const i=n(2178);t.tableOfLimits=new i.LookupTable,t.tableOfLimits.addEntries({})},5817(e,t,n){"use strict";t.RESTRICTED=t.Settings=void 0,t.scopedBlock=function scopedBlock(e,n,i){let r;const s=t.Settings[e];t.Settings[e]=n;try{r=i()}finally{t.Settings[e]=s}return r};const i=n(8300);t.Settings={USE_FRACTIONS:!0,ALLOW_BIGINT:!0,EVALUATE:!1,SUBSTITUTE:!0,LANGUAGE:"eng",ALLOW_IMPLICIT_MULTIPLICATION:!0,SORT_TERMS:!1,DEFER_SIMPLIFICATION:!1,REWRITE_SQRT:!0,MAX_FRAC_INT:BigInt(1e60),ALLOW_RAT_SUBS:!1,IMMUTABLE_VALUE_SETS:!0,USE_SINGLE_LETTER_VARIABLES:!1,MAX_PRODUCT_AND_SUMMATION_ITERATION:1e4,MAX_LOOP_ITERATIONS:1e4,INITIALIZE_RULES:!0,INDEX_BASE:0},t.RESTRICTED=[i.E,i.PI_NAME,i.DEFAULT_IMAGINARY,i.INDEX_VARIABLE,i.ALL_SYMBOL],i.E,i.PI_NAME},2446(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Assumption=void 0;const r=i(n(3110)),s=n(6441),o=n(4703),a=n(296),l=n(8300),u=n(5584);function isIdentChar(e){return/[A-Za-z0-9_]/.test(e)}function normalizeAssumptionValue(e){let t,n;return u.Rational.isRational(e)?(n=e.copy(),t=n.toDecimal()):(t="number"==typeof e||"string"==typeof e?new r.default(e):e,t.isFinite()&&(n=u.Rational.create(t.toString()))),{value:t,exact:n}}function compareBoundValues(e,t,n,i){let r;if(e.isFinite()&&n.isFinite()){const s=t??u.Rational.create(e.toString()),o=i??u.Rational.create(n.toString());r=s.lt(o)?-1:s.gt(o)?1:0}else r=e.eq(n)?0:e.lt(n)?-1:1;return r}function compareNumericExpressionToBound(e,t,n){let i;if(e.isNegInf())i=t.eq(-1/0)?0:-1;else if(e.isPosInf())i=t.eq(1/0)?0:1;else if(e.isNUM())if(t.isFinite()){const r=n??u.Rational.create(t.toString()),s=e.getMultiplier();i=s.lt(r)?-1:s.gt(r)?1:0}else i=t.lt(0)?1:-1;return i}class Assumption{endExact;startExact;dataType=l.ASSUMPTION;end;isSingleton;start;constructor(e,t,n=!0,i=!0){const r=normalizeAssumptionValue(e),s=normalizeAssumptionValue(t),a=r.value,l=s.value,u=a.isFinite()&&!!n,c=l.isFinite()&&!!i,m=a.isNaN()||l.isNaN()?void 0:compareBoundValues(a,r.exact,l,s.exact);if(void 0===m||m>0||0===m&&(!u||!c))throw new Error((0,o.message)("invalidInterval",{start:a.toString(),end:l.toString()}));this.start=Object.freeze({value:a,inclusive:u}),this.end=Object.freeze({value:l,inclusive:c}),this.startExact=r.exact,this.endExact=s.exact,this.isSingleton=0===m&&this.start.inclusive&&this.end.inclusive,Object.freeze(this)}static atLeast(e,t=!0){return new Assumption(e,1/0,!!t,!1)}static atMost(e,t=!0){return new Assumption(-1/0,e,!1,!!t)}static exactly(e){return new Assumption(e,e,!0,!0)}static isAssumption(e){return(0,s.isNerdamerNativeType)(e,l.ASSUMPTION)}static parse(e){if("string"!=typeof e)throw new Error((0,o.message)("invalidAssumption",{input:String(e)}));const t=e.replace(/\s+/g,"");if(!t)throw new Error((0,o.message)("invalidAssumption",{input:e}));if(t.length<3)throw new Error((0,o.message)("invalidAssumption",{input:e}));let n=0;if(!function isIdentStart(e){return/[A-Za-z_]/.test(e)}(t[n]))throw new Error((0,o.message)("assumptionIdentifierExpected"));let i=n+1;for(;i<t.length&&isIdentChar(t[i]);)i++;const s=t.slice(n,i);n=i;let a="";for(;n<t.length;){const e=t[n];if("<"!==e&&">"!==e&&"="!==e)break;a+=e,n++}if(!a)throw new Error((0,o.message)("assumptionOperatorMissing"));const l=t.slice(n);if(!l)throw new Error((0,o.message)("assumptionValueMissing"));const u=function parseNumber(e){const t=String(e).toLowerCase();if("inf"===t||"infinity"===t||"+inf"===t||"+infinity"===t)return new r.default(1/0);if("-inf"===t||"-infinity"===t)return new r.default(-1/0);const n=new r.default(t);if(n.isNaN())throw new Error((0,o.message)("invalidDecimal",{value:String(e)}));return n}(l);let c;switch(a){case">":c={symbol:s,assumption:Assumption.atLeast(u,!1)};break;case">=":c={symbol:s,assumption:Assumption.atLeast(u,!0)};break;case"<":c={symbol:s,assumption:Assumption.atMost(u,!1)};break;case"<=":c={symbol:s,assumption:Assumption.atMost(u,!0)};break;case"=":case"==":c={symbol:s,assumption:Assumption.exactly(u)};break;default:throw new Error((0,o.message)("assumptionOperatorUnsupported",{operator:a}))}return c}contains(e){const t=normalizeAssumptionValue(e);let n=!t.value.isNaN();return(n&&(compareBoundValues(t.value,t.exact,this.start.value,this.startExact)<0||compareBoundValues(t.value,t.exact,this.end.value,this.endExact)>0)||n&&0===compareBoundValues(t.value,t.exact,this.start.value,this.startExact)&&!this.start.inclusive||n&&0===compareBoundValues(t.value,t.exact,this.end.value,this.endExact)&&!this.end.inclusive)&&(n=!1),n}eq(e){let t;if(a.Expression.isExpression(e)){const n=compareNumericExpressionToBound(e,this.start.value,this.startExact),i=compareNumericExpressionToBound(e,this.end.value,this.endExact);void 0!==n&&void 0!==i&&(n<0||i>0||0===n&&!this.start.inclusive||0===i&&!this.end.inclusive?t=!1:this.isSingleton&&(t=!0))}else this.isSingleton&&e.isSingleton?t=0===compareBoundValues(this.start.value,this.startExact,e.start.value,e.startExact):this.overlaps(e)||(t=!1);return t}getSingletonValue(){let e;return this.isSingleton&&this.startExact&&(e=a.Expression.fromRational(this.startExact)),e}gt(e){let t;if(a.Expression.isExpression(e)){const n=compareNumericExpressionToBound(e,this.start.value,this.startExact),i=compareNumericExpressionToBound(e,this.end.value,this.endExact);void 0!==n&&void 0!==i&&(n<0||0===n&&!this.start.inclusive?t=!0:i>=0&&(t=!1))}else{const n=compareBoundValues(this.start.value,this.startExact,e.end.value,e.endExact),i=compareBoundValues(this.end.value,this.endExact,e.start.value,e.startExact);n>0||0===n&&(!this.start.inclusive||!e.end.inclusive)?t=!0:i<=0&&(t=!1)}return t}gte(e){let t;if(a.Expression.isExpression(e)){const n=compareNumericExpressionToBound(e,this.start.value,this.startExact),i=compareNumericExpressionToBound(e,this.end.value,this.endExact);void 0!==n&&void 0!==i&&(n<=0?t=!0:(i>0||0===i&&!this.end.inclusive)&&(t=!1))}else{const n=compareBoundValues(this.start.value,this.startExact,e.end.value,e.endExact),i=compareBoundValues(this.end.value,this.endExact,e.start.value,e.startExact);n>=0?t=!0:(i<0||0===i&&(!this.end.inclusive||!e.start.inclusive))&&(t=!1)}return t}intersect(e){const t=compareBoundValues(this.start.value,this.startExact,e.start.value,e.startExact),n=compareBoundValues(this.end.value,this.endExact,e.end.value,e.endExact);let i,r,s,o;t>0?(i=this.startExact??this.start.value,r=this.start.inclusive):t<0?(i=e.startExact??e.start.value,r=e.start.inclusive):(i=this.startExact??this.start.value,r=this.start.inclusive&&e.start.inclusive),n<0?(s=this.endExact??this.end.value,o=this.end.inclusive):n>0?(s=e.endExact??e.end.value,o=e.end.inclusive):(s=this.endExact??this.end.value,o=this.end.inclusive&&e.end.inclusive);const a=normalizeAssumptionValue(i),l=normalizeAssumptionValue(s),u=compareBoundValues(a.value,a.exact,l.value,l.exact);let c;return(u<0||0===u&&r&&o)&&(c=new Assumption(i,s,r,o)),c}lt(e){let t;if(a.Expression.isExpression(e)){const n=compareNumericExpressionToBound(e,this.start.value,this.startExact),i=compareNumericExpressionToBound(e,this.end.value,this.endExact);void 0!==n&&void 0!==i&&(i>0||0===i&&!this.end.inclusive?t=!0:n<=0&&(t=!1))}else{const n=compareBoundValues(this.end.value,this.endExact,e.start.value,e.startExact),i=compareBoundValues(this.start.value,this.startExact,e.end.value,e.endExact);n<0||0===n&&(!this.end.inclusive||!e.start.inclusive)?t=!0:i>=0&&(t=!1)}return t}lte(e){let t;if(a.Expression.isExpression(e)){const n=compareNumericExpressionToBound(e,this.start.value,this.startExact),i=compareNumericExpressionToBound(e,this.end.value,this.endExact);void 0!==n&&void 0!==i&&(i>=0?t=!0:(n<0||0===n&&!this.start.inclusive)&&(t=!1))}else{const n=compareBoundValues(this.end.value,this.endExact,e.start.value,e.startExact),i=compareBoundValues(this.start.value,this.startExact,e.end.value,e.endExact);n<=0?t=!0:(i>0||0===i&&(!this.start.inclusive||!e.end.inclusive))&&(t=!1)}return t}overlaps(e){const t=compareBoundValues(this.end.value,this.endExact,e.start.value,e.startExact),n=compareBoundValues(this.start.value,this.startExact,e.end.value,e.endExact);let i=!0;return t<0||n>0?i=!1:0===t?i=this.end.inclusive&&e.start.inclusive:0===n&&(i=this.start.inclusive&&e.end.inclusive),i}sameInterval(e){return 0===compareBoundValues(this.start.value,this.startExact,e.start.value,e.startExact)&&0===compareBoundValues(this.end.value,this.endExact,e.end.value,e.endExact)&&this.start.inclusive===e.start.inclusive&&this.end.inclusive===e.end.inclusive}toString(){const e=this.start.inclusive?"[":"(",t=this.end.inclusive?"]":")";return`${e}${this.start.value}, ${this.end.value}${t}`}}t.Assumption=Assumption},2332(e,t,n){"use strict";t.assertEQ=function assertEQ(e,t){return assertRelation(e,t,"=")},t.assertGT=function assertGT(e,t){return assertRelation(e,t,">")},t.assertGTE=function assertGTE(e,t){return assertRelation(e,t,">=")},t.assertLT=function assertLT(e,t){return assertRelation(e,t,"<")},t.assertLTE=function assertLTE(e,t){return assertRelation(e,t,"<=")};const i=n(4703),r=n(296),s=n(6351),o=n(2446);function assertRelation(e,t,n){let a,l;if(r.Expression.isExpression(t)&&t.isNUM())a=t.getMultiplier();else if(r.Expression.isExpression(t)&&t.isPosInf())a=1/0;else{if(!r.Expression.isExpression(t)||!t.isNegInf())throw new i.UnexpectedInputError((0,i.message)("wrongInput",{expected:"a real numeric value",received:String(t)}));a=-1/0}return l="="===n?o.Assumption.exactly(a):">"===n?o.Assumption.atLeast(a,!1):">="===n?o.Assumption.atLeast(a,!0):"<"===n?o.Assumption.atMost(a,!1):o.Assumption.atMost(a,!0),(0,s.assume)(String(e),l),e}},6351(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.hasAssumptions=function hasAssumptions(){return 0!==l.size},t.assume=function assume(e,t){let n;if(1===arguments.length){const t=a.Assumption.parse(e);n=setAssumption(t.symbol,t.assumption)}else{const r=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(r))throw new i.UnexpectedInputError((0,i.message)("plainVariableExpected",{input:r}));if("string"==typeof t){const e=a.Assumption.parse(t);if(e.symbol!==r)throw new i.UnexpectedInputError((0,i.message)("wrongInput",{expected:r,received:e.symbol}));n=setAssumption(r,e.assumption)}else{if(!a.Assumption.isAssumption(t))throw new i.UnexpectedInputError((0,i.message)("wrongInput",{expected:"string or Assumption",received:typeof t}));n=setAssumption(r,t)}}return n},t.clearAssumptions=clearAssumptions,t.forgetAssumptionFor=forgetAssumptionFor,t.getAssumptionFor=function getAssumptionFor(e){let t;s.Expression.isExpression(e)&&e.isPlainVariable()?t=e.value:"string"==typeof e&&(t=e);return void 0===t?void 0:l.get(t)},t.assuming=function assuming(e){return e},t.forget=function forget(e){e.eq(o.ALL_SYMBOL)?clearAssumptions():forgetAssumptionFor(e);return e};const i=n(4703),r=n(5817),s=n(296),o=n(8300),a=n(2446),l=new Map;function setAssumption(e,t){if(s.Expression.RESERVED.includes(e)||r.RESTRICTED.includes(e)||e===s.Expression.imaginary)throw new i.UnexpectedInputError((0,i.message)("plainVariableExpected",{input:e}));const n=l.get(e);let o=t;if(n){const e=n.intersect(t);if(!e)throw new i.UnexpectedInputError((0,i.message)("inconsistentAssumptions"));o=e}return l.set(e,o),o}function clearAssumptions(){l.clear()}function forgetAssumptionFor(e){let t;s.Expression.isExpression(e)&&e.isPlainVariable()?t=e.value:"string"==typeof e&&(t=e),void 0!==t&&l.delete(t)}},3263(e,t,n){"use strict";t.loadAssumptionFunctions=function loadAssumptionFunctions(){Object.assign(i.mathFunctionRegistry,{assume:(0,i.systemFunction)({fn:r.assuming,minArgs:1,maxArgs:1,distElWise:!1}),forget:(0,i.systemFunction)({fn:r.forget,minArgs:1,maxArgs:1,distElWise:!1})})};const i=n(9426),r=n(6351)},6284(e,t,n){"use strict";t.Collection=void 0;const i=n(8505),r=n(6441),s=n(4703),o=n(8300);class Collection extends i.StructuredEntity{dataType=o.COLLECTION;elements=[];isEnumerable=!0;precision;constructor(e){super(),this.elements=e||[]}static isCollection(e){return(0,r.isNerdamerNativeType)(e,o.COLLECTION)}__get__(e){const t=e[0];if(t<0||t>=this.elements.length)throw new RangeError((0,s.message)("indexOutOfBounds",{index:String(t),type:"Collection",length:String(this.elements.length)}));return this.elements[t]}__set__(e,t){const n=e[0];if(n<0||n>=this.elements.length)throw new RangeError((0,s.message)("indexOutOfBounds",{index:String(n),type:"Collection",length:String(this.elements.length)}));this.elements[n]=t}at(e){return this.elements[e]}copy(){const e=new Collection;return this.each((t,n)=>(e.elements[n]=t.copy(),t)),e}count(){return this.elements.length}dimensions(){return[this.elements.length]}each(e){for(let t=0;t<this.elements.length;t++){const n=e(this.elements[t],t);void 0!==n&&(this.elements[t]=n)}return this}eq(e){if(!Collection.isCollection(e)||e.elements.length!==this.elements.length)return!1;for(let t=0;t<this.elements.length;t++){const n=this.elements[t],i=e.elements[t];if(!n.eq(i))return!1}return!0}evaluate(){const e=this.copy();return e.each(e=>e.evaluate()),e}expand(){const e=this.copy();return e.each(e=>e.expand()),e}forEach(e){for(let t=0;t<this.elements.length;t++)e(this.elements[t],t)}getElements(){return this.elements}gt(e){if(!Collection.isCollection(e)||e.elements.length!==this.elements.length)return!1;for(let t=0;t<this.elements.length;t++){const n=this.elements[t],i=e.elements[t];if(!n.gt(i))return!1}return!0}gte(e){if(!Collection.isCollection(e)||e.elements.length!==this.elements.length)return!1;for(let t=0;t<this.elements.length;t++)if(!this.elements[t].gte(e.elements[t]))return!1;return!0}lt(e){if(!Collection.isCollection(e)||e.elements.length!==this.elements.length)return!1;for(let t=0;t<this.elements.length;t++){const n=this.elements[t],i=e.elements[t];if(!n.lt(i))return!1}return!0}lte(e){if(!Collection.isCollection(e)||e.elements.length!==this.elements.length)return!1;for(let t=0;t<this.elements.length;t++)if(!this.elements[t].lte(e.elements[t]))return!1;return!0}[Symbol.iterator](){return this.elements[Symbol.iterator]()}text(){return`(${this.elements.map(e=>e.text()).join(", ")})`}toArray(){return[...this.elements]}}t.Collection=Collection},3170(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Complex=void 0;const r=i(n(3110)),s=n(4703);class Complex{im;re;constructor(e,t=0){this.re="number"==typeof e?new r.default(e):e,this.im="number"==typeof t?new r.default(t):t}static create(e,t=0){return new Complex(e instanceof r.default?e:new r.default(e),t instanceof r.default?t:new r.default(t))}abs(){return this.absSquared().sqrt()}absSquared(){return this.re.mul(this.re).plus(this.im.mul(this.im))}add(e){return new Complex(this.re.plus(e.re),this.im.plus(e.im))}conjugate(){return new Complex(this.re,this.im.neg())}div(e){const t=e.re.mul(e.re).plus(e.im.mul(e.im));if(t.isZero())throw new s.DivisionByZeroError((0,s.message)("divisionByZero"));return new Complex(this.re.mul(e.re).plus(this.im.mul(e.im)).div(t),this.im.mul(e.re).minus(this.re.mul(e.im)).div(t))}mul(e){return new Complex(this.re.mul(e.re).minus(this.im.mul(e.im)),this.re.mul(e.im).plus(this.im.mul(e.re)))}neg(){return new Complex(this.re.neg(),this.im.neg())}reciprocal(){const e=this.re.mul(this.re).plus(this.im.mul(this.im));if(e.isZero())throw new s.DivisionByZeroError((0,s.message)("divisionByZero"));return new Complex(this.re.div(e),this.im.neg().div(e))}scale(e){const t=e instanceof r.default?e:new r.default(e);return new Complex(this.re.mul(t),this.im.mul(t))}sub(e){return new Complex(this.re.minus(e.re),this.im.minus(e.im))}}t.Complex=Complex},6528(e,t,n){"use strict";t.Dictionary=void 0;const i=n(8505),r=n(6441),s=n(4703),o=n(8300);class Dictionary extends i.StructuredEntity{_entries=new Map;dataType=o.DICTIONARY;isEnumerable=!0;precision;constructor(e){super(),e&&(this._entries=e)}static isDictionary(e){return(0,r.isNerdamerNativeType)(e,o.DICTIONARY)}__get__(e){const t="string"==typeof e?e:String(e[0]),n=this._entries.get(t);if(void 0===n)throw new s.UnexpectedDataType((0,s.message)("dictionaryKeyNotFound",{key:t,keys:this.keys().join(", ")}));return n}__set__(e,t){const n="string"==typeof e?e:String(e[0]);this._entries.set(n,t)}copy(){const e=new Map;for(const[t,n]of this._entries)e.set(t,n.copy());return new Dictionary(e)}count(){return this._entries.size}delete(e){return this._entries.delete(e)}dimensions(){return[this._entries.size]}each(e){for(const[t,n]of this._entries){const i=e(n,t);void 0!==i&&this._entries.set(t,i)}return this}get elements(){return[...this._entries.values()]}set elements(e){const t=[...this._entries.keys()];this._entries.clear();for(let n=0;n<t.length&&n<e.length;n++)this._entries.set(t[n],e[n])}entries(){return[...this._entries.entries()]}eq(e){if(!Dictionary.isDictionary(e))return!1;if(this._entries.size!==e._entries.size)return!1;for(const[t,n]of this._entries){const i=e._entries.get(t);if(!i||!n.eq(i))return!1}return!0}evaluate(){return this.copy().each(e=>e.evaluate())}expand(){const e=this.copy();return e.each(e=>e.expand()),e}forEach(e){for(const[t,n]of this._entries)e(n,t)}get(e){return this._entries.get(e)}gt(e){return!1}gte(e){return this.eq(e)}has(e){return this._entries.has(e)}keys(){return[...this._entries.keys()]}lt(e){return!1}lte(e){return this.eq(e)}merge(e){for(const[t,n]of e._entries)this._entries.set(t,n);return this}set(e,t){return this._entries.set(e,t),this}[Symbol.iterator](){return this._entries[Symbol.iterator]()}text(){const e=[];for(const[t,n]of this._entries)e.push(`${t} => ${n.text()}`);return`{${e.join(", ")}}`}values(){return[...this._entries.values()]}}t.Dictionary=Dictionary},6184(e,t,n){"use strict";t.Equation=void 0;const i=n(6441),r=n(4703),s=n(296),o=n(6099),a=n(8300);class Equation{dataType=a.EQUATION;isEnumerable=!1;LHS;precision;RHS;constructor(e,t){this.LHS=e,this.RHS=t}static isEquation(e){return(0,i.isNerdamerNativeType)(e,a.EQUATION)}abs(){throw new r.UnsupportedOperationError((0,r.message)("unsupportedOperation"))}add(e){return this.plus(e)}copy(){return new Equation(this.LHS.copy(),this.RHS.copy())}div(e){if(Equation.isEquation(e))throw new r.UnsupportedOperationError((0,r.message)("unsupportedOperation"));const t=s.Expression.create(e);if(!t.isNUM()||t.isZero())throw new r.UnsupportedOperationError((0,r.message)("unsupportedOperation"));return new Equation(this.LHS.div(t),this.RHS.div(t))}each(e){const t=e(this.LHS,0),n=e(this.RHS,1);if(s.Expression.isExpression(t)&&s.Expression.isExpression(n))return new Equation(t,n);const i=`${a.dataTypes[t.dataType]||typeof t} & ${a.dataTypes[n.dataType]||typeof n}`;throw new r.UnexpectedDataType((0,r.message)("expressionExpected",{type:i}))}eq(e){return!!Equation.isEquation(e)&&this.toLHS().LHS.eq(e.toLHS().LHS)}evaluate(){return this.copy().each(e=>e.evaluate())}expand(){return this.copy().each(e=>e.expand())}gt(e){return!!Equation.isEquation(e)&&this.toLHS().LHS.gt(e.toLHS().LHS)}gte(e){return this.gt(e)||this.eq(e)}lt(e){return!!Equation.isEquation(e)&&this.toLHS().LHS.lt(e.toLHS().LHS)}lte(e){return this.lt(e)||this.eq(e)}minus(e){if(Equation.isEquation(e))throw new r.UnsupportedOperationError((0,r.message)("unsupportedOperation"));const t=s.Expression.create(e);return this.each(e=>e.minus(t))}multiply(e){return this.times(e)}plus(e){if(Equation.isEquation(e))throw new r.UnsupportedOperationError((0,r.message)("unsupportedOperation"));const t=s.Expression.create(e);return this.each(e=>e.plus(t))}subtract(e){return this.minus(e)}text(){return`${this.LHS.text()}=${this.RHS.text()}`}times(e){if(Equation.isEquation(e))throw new r.UnsupportedOperationError((0,r.message)("unsupportedOperation"));const t=s.Expression.create(e);if(!t.isNUM()||t.isZero())throw new r.UnsupportedOperationError((0,r.message)("unsupportedOperation"));return this.LHS=this.LHS.times(t),this.RHS=this.RHS.times(t),this}toLHS(){const e=this.copy();return e.LHS=e.LHS.minus(e.RHS),e.RHS=(0,o.zero)(),e}toString(){return this.text()}}t.Equation=Equation},5894(e,t,n){"use strict";t.CoeffObject=void 0;const i=n(4703),r=n(2116),s=n(5640),o=n(3982),a=n(6099);t.CoeffObject=class CoeffObject{coeffs={};variables;constructor(e){this.variables=e}buildTerms(){const e=[];for(const t in this.coeffs)e.push(new s.Term(this.coeffs[t].copy(),t,this.variables));return e}add(e,t){const n=this.coeffs[e];this.coeffs[e]=n?n.plus(t):t}each(e){for(const t in this.coeffs)e(this.coeffs[t],t);return this}getPower(e){return this.coeffs[e]}hasPower(e){return e in this.coeffs}max(){const e=Object.keys(this.coeffs).map(e=>Number(e));return Math.max(...e)}text(e=!1){const t=e?"\n":"",n=e?" ":"",i=[],r=", "+t;for(const e in this.coeffs)i.push(`${n}${e}: ${this.coeffs[e]}`);return`{ ${t}${i.join(r)} ${t}}`}toArray(e=!1){const t=this.max(),n=[];if(isNaN(t))throw new i.NaNError((0,i.message)("cannotCreateArrayFromNaN"));for(let i=0;i<=t;i++){let t=this.coeffs[i];t||(t=(0,a.zero)()),n[i]=e?Number(t):t}return n}toExpression(){let e=(0,a.zero)();for(const t of this.buildTerms())t.isZero()||(e=e.plus(t.getExpression()));return e}toParsableString(){const e=[];for(const t of this.buildTerms())t.isZero()||e.push(t.text(this.variables));return e.join("+").replace(/\+-/g,"-")}toPolynomial(){const e=this.buildTerms(),t=e.some(e=>this.variables.some(t=>e.coeff.hasVariable(t))),n=this.toExpression();let i;return t?i=new r.Polynomial(n,this.variables):(i=new r.Polynomial((0,a.zero)(),this.variables),i.terms=e.filter(e=>!e.isZero()),i.order(),i.expression=n),i}toString(){return this.text()}toVector(){return new o.Vector(this.toArray())}}},296(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Expression=void 0;const r=i(n(3110)),s=n(8533),o=n(6441),a=n(4703),l=n(4895),u=n(4600),c=n(7741),m=n(886),p=n(5817),g=n(8300),d=n(6255),h=n(619),x=n(3171),E=n(6498),y=n(3957),v=n(3957),w=n(6910),b=n(238),P=n(5584),A=n(6056),N=n(6056),M=n(6056),T=n(8137),I=n(6099),O=n(5118),R=n(5118),F=n(5118),q=n(1897),{NUM:L,VAR:V,EXP:U,FUN:D,GRP:k,PRD:B,SUM:z,INF:$}=g.EXPRESSION_TYPES;class Expression{static DISTRIBUTE_MULTIPLIER=!0;static imaginary=g.DEFAULT_IMAGINARY;static LOG=g.LOG;static LOG10="log_10";static numberHash="#";static POW_OPR="^";static RESERVED=[g.E].concat(g.PI).concat(g.INFINITY);static sortFunction=(e,t)=>e.isI()?1:e.type===t.type?e.value===t.value?Number(t.getPower())-Number(e.getPower()):e.value>t.value?1:t.value>e.value?-1:0:e.type-t.type;static TYPES=g.EXPRESSION_TYPES;args;base;dataType=g.EXPRESSION;deferred=!1;elements=void 0;_keyValueCache;isEnumerable=!1;multiplier;name;power;precision;scientific;type;value;constructor(e,t){return e=Expression.hook(e),t&&"string"==typeof e?(this.value=e,this):Expression.isExpression(e)?void(0,q.copyOver)(e,this):Expression.create(e)}static create(e,t,n){if(Expression.isExpression(e)&&!t)return n?e.copy():e;if(P.Rational.isRational(e))return Expression.fromRational(e);if((0,o.isNerdamerNativeType)(e,g.EQUATION))return e.toLHS().LHS;const i=b.Parser.parse(String(e),t);if(!Expression.isExpression(i))throw new a.UnexpectedDataType((0,a.message)("expressionExpected",{type:g.dataTypes[i.dataType]}));return i}static E(e){return p.Settings.EVALUATE||e?Expression.fromRational(P.Rational.E):Expression.Variable(g.E)}static fromRational(e){const t=1n===e.denominator?e.numerator.toString():`${e.numerator}/${e.denominator}`,n=Expression.Number(t);return n.getMultiplier().asDecimal=e.asDecimal,n}static fromSymbolicAccess(e){let t;if("object"==typeof e&&null!==e){const n=e,i=n.symbolicTarget,r=n.symbolicAccessor;Expression.isExpression(i)&&r&&r.length>0&&r.every(e=>Expression.isExpression(e))&&(t=Expression.toAccessor(i,r))}return t}static Function(e){const t=Expression.Type(e,D);return t.name=e,t}static getValue(e,t,n){return e.map(e=>{let i=e[t]();return e.type!==z&&e.type!==k||n!==B||(i=`(${i})`),i}).sort().join(n===z||n===k?"+":"*").replace("+-","-")}static hook(e){return e}static Img(){return Expression.Variable(Expression.imaginary)}static Inf(){return Expression.Type(g.INFINITY[0],$)}static isExpression(e){return(0,o.isNerdamerNativeType)(e,g.EXPRESSION)}static isExpressionArray(e){if(!Array.isArray(e))return!1;for(let t=0;t<e.length;t++)if(!Expression.isExpression(e[t]))return!1;return!0}static N(){return Expression.Variable(g.INDEX_VARIABLE)}static NegInf(){return Expression.Inf().neg()}static Number(e){return Expression.Type(String(e),L)}static Pi(e){return p.Settings.EVALUATE||e?Expression.fromRational(P.Rational.PI):Expression.Variable(g.PI[0])}static setPower(e,t){return e.power=t,e}static symbols(...e){return e.map(e=>Expression.create(e))}static toAccessor(e,t){return Expression.toFunction(g.SYMBOLIC_ACCESSOR,[e,...t])}static toEXP(e,t,n=!1){let i;return e=Expression.create(e),t=Expression.create(t),e.isOne()?i=Expression.create(e):(n&&delete e.power,i=new Expression(e.idString(),!0),i.base=Expression.create(e),i.power=t,i.type=U),i}static toFunction(e,t){const n=Expression.Function(e);return n.args=t.filter(e=>void 0!==e).map(e=>Expression.fromSymbolicAccess(e)??Expression.create(e)),n.name=e,n.updateValue(),n}static Type(e,t){const n=new Expression(e,!0);return n.type=t,n}static Variable(e){return Expression.Type(e,V)}abs(){return(0,s.abs)(this)}add(e){return this.plus(e)}buildFunction(e){return(0,l.build)(this,e)}coeffs(...e){return(0,A.coeffs)(this,e)}copy(){return(0,q.cloneExpressionTree)(this)}denominator(){return this.getDenominator()}distributeMultiplier(){const e=this.copy();if(this.isSum()&&!this.getMultiplier().isOne()&&this.isLinear()){const t=e.getMultiplier();e.multiplier=void 0;const n=e.getElements();for(const e in n){const i=n[e];i.multiplier=i.getMultiplier().times(t),i.isSum()&&(n[e]=i.distributeMultiplier())}e.updateValue()}return e}div(e){return(0,x.divide)(this,Expression.create(e))}divide(e){return this.div(e)}each(e){if(this.elements){const t=this.getElements();for(const n in t)e(t[n],n)}else e(this.toUnitMultiplier(),this.value);return this}elementsArray(e){const t=[];if(this.isProduct()||this.isSum()){const e=this.getElements();for(const n in e){const i=e[n];if(i.isSum()&&this.isSum()&&i.isLinear()){const e=i.getElements();for(const n in e)t.push(e[n])}else t.push(i)}}else t.push(this.toUnitMultiplier());return e&&this.isProduct()&&t.push(Expression.fromRational(this.getMultiplier())),t.sort(Expression.sortFunction)}eq(e){return e=Expression.create(e),(0,h.equal)(this,e)}evaluate(e){let t;if(void 0!==this.scientific){const e=this.copy();delete e.scientific,t=e.hasFunction(g.SYMBOLIC_ACCESSOR,!0)?(0,T.toText)(e,{internalAccessor:!0},void 0,Expression.POW_OPR,Expression.sortFunction):e.text()}else t=this.hasFunction(g.SYMBOLIC_ACCESSOR,!0)?(0,T.toText)(this,{internalAccessor:!0},void 0,Expression.POW_OPR,Expression.sortFunction):this.text();const n=b.Parser.evaluate(t,e),i=Expression.fromSymbolicAccess(n)??Expression.create(n);return void 0!==this.scientific&&(i.scientific=this.scientific),i}expand(){return(0,c.expand)(this)}forEveryElement(e){return(0,F.forEveryElement)(this,e)}functions(e,t){return(0,R.functions)(this,e,t)}getArguments(){return this.args||(this.args=[]),this.args}getBase(){let e;return this.isEXP()?e=this.base:(e=this.copy(),delete e.multiplier,delete e.power),e}getDenominator(){return(0,M.getDenominator)(this)}getElements(){return this.elements?this.elements:{}}getMultiplier(e){if(void 0===this.multiplier){const e=this.type===L?this.value:"1";this.multiplier=P.Rational.create(e)}return e?Expression.create(this.multiplier):this.multiplier}getNumerator(){return(0,M.getNumerator)(this)}getPower(){return this.power||(this.isNUM()?this.power=Expression.Number("0"):this.power=Expression.Number("1")),this.power}getVariable(e){return(0,N.getVariable)(this,e)}gt(e){return e=Expression.create(e),(0,h.gt)(this,e)}gte(e){return e=Expression.create(e),(0,h.gte)(this,e)}hasDecimal(){let e=this.getMultiplier().asDecimal;return!e&&this.power&&(e=this.power.hasDecimal()),!e&&this.base&&(e=this.base.hasDecimal()),!e&&this.args&&(e=this.args.some(e=>e.hasDecimal())),!e&&this.elements&&(e=Object.values(this.elements).some(e=>e.hasDecimal())),e}hasFunction(e,t=!1){return(0,O.hasFunction)(this,e,t)}hasRadical(e){const t=this.getPower(),n=t.getMultiplier(),i=t.isNUM()&&1n!==n.denominator;return e?i&&n.isNegative():i}hasVariable(e){return(0,O.hasVariable)(this,e)}i(){return this.times(Expression.Img())}idString(){return this.text(void 0,!0)}imagPart(){return(0,u.imagPart)(this)}invert(){let e;return this.isComplex()?e=(0,I.one)().div(this):(e=this.copy(),e.power=e.getPower().neg(),e.multiplier=e.getMultiplier().invert()),e.hasRadical()?(0,v.rationalizeRadical)(e):e}isComplex(){let e=!1;if(this.isFunction(g.SYMBOLIC_ACCESSOR))e=!1;else if(!this.isComplexComponentFunction())if(this.isVAR()&&this.isI())e=!0;else if(this.isFunction()){for(const t of this.getArguments())if(t.isComplex()){e=!0;break}}else if(this.isEXP())e=this.getBase().isComplex()||this.getPower().isComplex();else if(this.elements)for(const t of Object.values(this.getElements()))if(t.isComplex()){e=!0;break}return e}isComplexComponentFunction(){return this.isFunction([g.REALPART,g.IMAGPART])}isConstant(){if(this.isSum()||this.isProduct()){const e=this.getElements();for(const t in e)if(!e[t].isConstant())return!1;return!0}return this.isNUM()||this.value in g.PARSER_CONSTANTS&&this.isVAR()||this.isEXP()&&this.getBase().isConstant()&&this.getPower().isConstant()}isE(){return this.value===g.E}isEven(){return this.isNUM()&&this.getMultiplier().isEven()}isEXP(){return this.type===U}isFunction(e){let t;return t=void 0===e?this.type===D:"string"==typeof e?e===this.name:e.includes(String(this.name)),t}isHalf(){if(this.isNUM()){const e=this.getMultiplier();return 1n===e.numerator&&2n===e.denominator}return!1}isI(){return this.value===Expression.imaginary}isImaginary(){return this.evaluate().isComplex()}isInf(){return this.type===$}isInteger(){return!!this.isOne()||this.type===L&&this.getMultiplier().isInteger()}isLinear(){return this.getPower().isOne()}isMinusOne(){return!!this.isNUM()&&(void 0===this.multiplier&&-1===Number(this.value)||this.getMultiplier().isMinusOne())}isNearlyZero(e=8){const t=new r.default(10).pow(-r.default.precision+e),n=this.realPart(),i=this.imagPart();return n.abs().lte(t)&&i.abs().lte(t)}isNegative(){return this.lt((0,I.zero)())}isNegInf(){return this.isInf()&&this.getMultiplier().lt("0")}isNUM(){return this.type===L}isNumber(){return this.isNUM()}isOdd(){return this.isInteger()&&!this.isEven()}isOne(){if(this.isNUM()){const e=this.getMultiplier();return 1n===e.numerator&&1n===e.denominator}return!1}isPi(){return g.PI.includes(this.value)}isPlainVariable(){return this.isVAR()&&this.getMultiplier().isOne()&&this.getPower().isOne()}isPolynomialLike(){return(0,N.isPolynomialLike)(this)}isPosInf(){return this.isInf()&&this.getMultiplier().gt((0,I.zero)())}isProduct(){return this.type===B}isQuarter(){if(this.isNUM()){const e=this.getMultiplier();return 1n===e.numerator&&4n===e.denominator}return!1}isSum(){return this.type===z||this.type===k}isVAR(){return this.type===V}isZero(){return this.getMultiplier().isZero()}keyValue(e=!1,t=!1){const n=!(e||t||this.type!==z&&this.type!==B);if(n&&void 0!==this._keyValueCache)return this._keyValueCache;let i="";if(t)i=this.getPower().text();else switch(this.type){case L:i=e?this.value:Expression.numberHash;break;case V:case D:case U:case $:i=e?this.idString():this.value;break;case k:i=e?this.text():Object.values(this.getElements())[0].keyValue();break;case z:case B:i=Expression.getValue(Object.values(this.getElements()),"text",this.type)}if(!i)throw new Error((0,a.message)("expressionKeyValueUnsupported",{type:String(this.type)}));return n&&(this._keyValueCache=i),i}lt(e){return e=Expression.create(e),(0,h.lt)(this,e)}lte(e){return e=Expression.create(e),(0,h.lte)(this,e)}minus(e){return(0,w.subtract)(this,Expression.create(e))}mod(e){return(0,s.mod)(this,Expression.create(e))}multiply(e){return this.times(e)}neg(){const e=this.copy();return e.multiplier=e.getMultiplier().neg(),e}numerator(){return this.getNumerator()}parseValue(){return this.toLinearAndUnitMultiplier()}plus(e){return(0,d.add)(this,Expression.create(e))}pow(e){return(0,y.power)(this,Expression.create(e))}realPart(){return(0,u.realPart)(this)}sign(){return this.type===U?this.getBase().sign()*this.getMultiplier().sign():this.getMultiplier().sign()}signFree(){let e;if(this.isComplex())e=this.abs();else{e=this.copy();const t=e.getMultiplier();e.value.startsWith("-")&&(e.value=e.value.substring(1)),t.lt("0")&&(e.multiplier=t.neg())}return e}sptext(e,t){const n=Expression.POW_OPR;Expression.POW_OPR="**";const i=(0,T.toText)(this,e,t,Expression.POW_OPR,Expression.sortFunction);return Expression.POW_OPR=n,i}sq(){return this.pow("2")}strictEqual(e){return((e=Expression.create(e)).isFunction()&&this.isFunction()?e.name===this.name:e.type===this.type)&&(0,h.equal)(this,e)}sub(e,t){return this.subst(e,t)}subst(e,t){return e=Expression.create(e),t=Expression.create(t),(0,m.subst)(this,e,t)}subtract(e){return this.minus(e)}text(e,t){return void 0===e&&void 0===t&&void 0===this.precision&&void 0===this.scientific?(0,T.toDefaultText)(this,Expression.POW_OPR,Expression.sortFunction):(0,T.toText)(this,e,t,Expression.POW_OPR,Expression.sortFunction)}times(e){return(0,E.multiply)(this,Expression.create(e))}toDecimal(e){const t={decimal:!0};return void 0!==e&&(t.precision=e),this.text(t)}toLinearAndUnitMultiplier(){let e=this.getBase();return this.isEXP()&&(e=e.copy()),e}toString(e){return this.text(e)}totalPower(){if(!this.isProduct())return this.getPower();let e=Expression.Number("0");const t=this.getElements();for(const n in t)e=e.plus(t[n].getPower());return e}toUnitMultiplier(){let e;return this.isNUM()?e=(0,I.one)():(e=this.copy(),delete e.multiplier),e}updateValue(e){if(this._keyValueCache=void 0,this.isFunction())this.value=`${this.name}(${this.getArguments().map(e=>e.text()).join(", ")})`;else if(this.isProduct()||this.isSum()){const t=e??this.elementsArray();this.value=Expression.getValue(t,"text",this.type),!e||this.type!==z&&this.type!==B||(this._keyValueCache=this.value)}return this}valueOf(){let e;return e=this.isNUM()?this.getMultiplier().valueOf():this.text({decimal:!0}),e}variables(e){return(0,R.variables)(this,e,Expression.RESERVED)}}t.Expression=Expression},6056(e,t,n){"use strict";t.coeffs=function coeffs(e,t,n,r=!0){const u=n||new o.CoeffObject(t);if(e.isComplex()&&!t.includes(a.Expression.imaginary)){const n=coeffs(e.realPart(),t,void 0,r),i=coeffs(e.imagPart(),t,void 0,r);return n.each((e,t)=>u.add(t,e)),i.each((e,t)=>u.add(t,e.times(a.Expression.Img()))),u}if(e.isProduct()){let n=(0,l.one)(),s=a.Expression.fromRational(e.getMultiplier()),o=!1;for(const r of e.elementsArray())if(r.isSum()&&r.getPower().sign()<0){if(t.some(e=>r.hasVariable(e)))throw new i.PolynomialError((0,i.message)("notAPolynomial"));n=n.times(r),o=!0}else s=s.times(r);if(o){return coeffs(s,t,void 0,r).each((e,t)=>{u.add(t,n.times(e))}),u}e=s}const c=r?(0,s.expand)(e):e;if(c.isSum())c.each(e=>{coeffs(e,t,u,!1)});else{const[n,i]=separateVar(e,t),r=t.map(e=>i.getVariable(e).getPower().text());u.add(r.join(","),n)}return u},t.getDenominator=function getDenominator(e){let t=a.Expression.Number(e.getMultiplier().denominator);const n=e.isProduct();if(-1===e.getPower().sign())t=t.times(e.toUnitMultiplier().invert());else if(n&&e.isLinear())for(const n of e.elementsArray())n.isProduct()?t=t.times(getDenominator(n)):n.getPower().sign()<0&&(t=t.times(n.invert()));return t},t.getNumerator=function getNumerator(e){let t=a.Expression.Number(e.getMultiplier().numerator);const n=e.isProduct(),i=e.getPower().sign();if(!n&&i>0||n&&i>0&&!e.isLinear())t=t.times(e.toUnitMultiplier());else if(n&&e.isLinear()){const n=e.elementsArray();for(const e of n){const n=getNumerator(e);t=t.times(n)}}return t},t.isPolynomialLike=function isPolynomialLike(e){const t=e.getPower();if(!t.isInteger()||-1===t.sign()||e.isEXP()||e.isFunction()||e.isInf())return!1;if(e.isSum()||e.isProduct())for(const t of e.elementsArray())if(!isPolynomialLike(t))return!1;return!0},t.getVariable=function getVariable(e,t){if(e.value===t)return e;if(e.isProduct()){const n=e.getElements();for(const e in n)if(n[e].value===t)return n[e]}return(0,l.zero)()},t.normalizeMultiplierDenominators=function normalizeMultiplierDenominators(e){let t;if(e.isSum()){const n=e.distributeMultiplier(),i=n.elementsArray(),s=[];for(const e of i)s.push(e.getMultiplier().denominator);const o=(0,r.LCM)(...s);t=n.times(o).distributeMultiplier().div(o)}else t=e;return t};const i=n(4703),r=n(551),s=n(7741),o=n(5894),a=n(296),l=n(6099),u=n(1897);function separateVar(e,t){const n=t.map(e=>"string"!=typeof e?e.value:e);function isLike(e,t){return t.includes(e.value)}let i;if(e.isProduct()){const t=[a.Expression.fromRational(e.getMultiplier())],r=[];e.each(e=>{isLike(e,n)?r.push(e):t.push(e)}),i=[(0,u.product)(...t),(0,u.product)(...r)||(0,l.one)()]}else i=isLike(e,n)?[a.Expression.fromRational(e.getMultiplier()),e.toUnitMultiplier()]:[a.Expression.create(e),(0,l.one)()];return i}},6338(e,t){"use strict";t.collectVariablesSet=function collectVariablesSet(e){const t=new Set;for(const n of e){const e=n.variables();for(const n of e)t.add(n)}return Array.from(t).sort()}},8137(e,t,n){"use strict";t.toDefaultText=toDefaultText,t.toText=function toText(e,t,n,i,s){t={precision:e.precision,scientific:e.scientific,...t};let d="";if(e.type===o)d=e.getMultiplier().text(t);else{const o=n&&!e.elements?"":formatMultiplierString(e,t),h=formatPowerString(e,t,i);let x;switch(e.type){case l:case u:d=t?.wrapPow&&h?`${o}(${e.value})`:`${o}${e.value}`;break;case a:if(e.name===r.SYMBOLIC_ACCESSOR){const n=e.getArguments();if(t?.internalAccessor)d=`${o}${r.SYMBOLIC_ACCESSOR}(${n.map(e=>e.text(t)).join(", ")})`;else{const e=n[0],i=n.slice(1);d=`${o}${e.text(t)}[${i.map(e=>e.text(t)).join(", ")}]`}}else d=`${o}${e.name||""}(${e.getArguments().map(e=>e.text(t)).join(", ")})`;break;case c:case g:x=formatExpressionString(e,t,s),x=o||h?`(${x})`:x,d=`${o}${x}`;break;case p:x=formatExpressionString(e,t,s),x=h?`(${x})`:x,d=`${o}${x}`;break;case m:{const n=e.getBase(),r=n.getPower();x=toText(n,t,void 0,i,s),(t?.wrapPow||n.elements||x.startsWith("-")||x.includes("/")||!r.isOne()&&!r.isZero())&&(x=`(${x})`),d=`${o}${x}`;break}}d+=h}return d.replace(/\+-/g,"-")};const i=n(5817),r=n(8300),s=n(8300),{NUM:o,FUN:a,VAR:l,INF:u,GRP:c,EXP:m,PRD:p,SUM:g}=s.EXPRESSION_TYPES;function formatMultiplierString(e,t){let n="";const i=e.getMultiplier(),r=i.text(t),s=void 0!==t?.scientific;if(!(s?i.isOne():"1"===r||"1.0"===r)){n=r,i.isInteger()||i.asDecimal||t?.decimal||t?.scientific||(n=`(${n})`);(s?i.isMinusOne():"-1"===r||"-1.0"===r)&&!t?.wrapPow?n="-":n+="*"}return n}function formatPowerString(e,t,n){let i="";const s=e.getPower(),o={...t,exactScientific:!0},a=s.text(o);if("1"!==a&&"1.0"!==a){if(i=a,s.dataType!==r.RATIONAL||s.isInteger()){const t=e.getPower();let n=!1;t.type===g||t.type===p?n=!0:e.type===m&&(t.isNUM()&&!t.isInteger()?n=!0:t.isNUM()||t.getMultiplier().isOne()||(n=!0)),(n||i.includes("/"))&&(i=`(${i})`)}else i=`(${i})`;t?.wrapPow&&!i.startsWith("(")&&(i=`(${i})`),i=`${n}${i}`}return i}function formatDefaultExpressionString(e,t,n){const r=e.type===p?"*":"+",s=Object.values(e.getElements());return i.Settings.SORT_TERMS&&s.sort(n),s.map(i=>{let r=toDefaultText(i,t,n);return e.type===p&&i.isSum()&&(r=`(${r})`),r}).join(r).replace("+-","-")}function toDefaultText(e,t,n){let i="";if(e.type===o)i=e.getMultiplier().text();else{const s=formatMultiplierString(e),o=function formatDefaultPowerString(e,t,n){let i="";const s=e.getPower(),o=toDefaultText(s,t,n);if("1"!==o&&"1.0"!==o){if(i=o,s.dataType!==r.RATIONAL||s.isInteger()){let t=!1;s.type===g||s.type===p?t=!0:e.type===m&&(s.isNUM()&&!s.isInteger()?t=!0:s.isNUM()||s.getMultiplier().isOne()||(t=!0)),(t||i.includes("/"))&&(i=`(${i})`)}else i=`(${i})`;i=`${t}${i}`}return i}(e,t,n);let d;switch(e.type){case l:case u:i=`${s}${e.value}`;break;case a:if(e.name===r.SYMBOLIC_ACCESSOR){const r=e.getArguments(),o=r[0],a=r.slice(1);i=`${s}${toDefaultText(o,t,n)}[${a.map(e=>toDefaultText(e,t,n)).join(", ")}]`}else i=`${s}${e.name||""}(${e.getArguments().map(e=>toDefaultText(e,t,n)).join(", ")})`;break;case c:case g:d=formatDefaultExpressionString(e,t,n),d=s||o?`(${d})`:d,i=`${s}${d}`;break;case p:d=formatDefaultExpressionString(e,t,n),d=o?`(${d})`:d,i=`${s}${d}`;break;case m:{const r=e.getBase(),o=r.getPower();d=toDefaultText(r,t,n),(r.elements||d.startsWith("-")||d.includes("/")||!o.isOne()&&!o.isZero())&&(d=`(${d})`),i=`${s}${d}`;break}}i+=o}return i.replace(/\+-/g,"-")}function formatExpressionString(e,t,n){const r=e.type===p?"*":"+",s=Object.values(e.getElements());return(i.Settings.SORT_TERMS||t?.sort)&&s.sort(n),s.map(n=>{let i=n.text(t);return e.type===p&&n.isSum()&&(i=`(${i})`),i}).join(r).replace("+-","-")}},542(e,t,n){"use strict";t.constantsFreeProduct=function constantsFreeProduct(e,t){let n=e.getMultiplier(!0);if((e=e.toUnitMultiplier()).isProduct()&&e.isLinear()){let r=(0,i.one)();e.each(i=>{i.hasVariable(t)?r=r.times(i):n=n.times(i),e=r})}return{constants:n,expression:e}};const i=n(6099)},6099(e,t,n){"use strict";t.zero=function zero(){return getFromCacheOrCreate("0")},t.third=function third(){return getFromCacheOrCreate("1/3")},t.half=function half(){return getFromCacheOrCreate("1/2")},t.one=function one(){return getFromCacheOrCreate("1")},t.minusOne=function minusOne(){return getFromCacheOrCreate("-1")},t.two=function two(){return getFromCacheOrCreate("2")},t.minusTwo=function minusTwo(){return getFromCacheOrCreate("-2")},t.three=function three(){return getFromCacheOrCreate("3")},t.four=function four(){return getFromCacheOrCreate("4")},t.five=function five(){return getFromCacheOrCreate("5")},t.six=function six(){return getFromCacheOrCreate("6")},t.eight=function eight(){return getFromCacheOrCreate("8")},t.sixteen=function sixteen(){return getFromCacheOrCreate("16")},t.twentySeven=function twentySeven(){return getFromCacheOrCreate("27")},t.twoHundredFiftySix=function twoHundredFiftySix(){return getFromCacheOrCreate("256")},t.all=function all(){return s.Expression.Variable(r.ALL_SYMBOL)},t.symbols=function symbols(...e){const t={};for(const n of e){const e=s.Expression.create(n);if(e.getMultiplier(),e.getPower(),!e.isVAR())throw new i.UnexpectedInputError((0,i.message)("plainVariableExpected"));Object.freeze(e),t[n]=e}return t};const i=n(4703),r=n(8300),s=n(296),o={};function getFromCacheOrCreate(e){if(void 0===o[e]){const t=s.Expression.Number(e);t.getMultiplier(),t.getPower(),Object.freeze(t),o[e]=t}return o[e]}},5118(e,t,n){"use strict";t.variables=function variables(e,t,n){return collect(e,(e,t)=>e.isVAR()&&!e.isI()&&!t.includes(e.value)&&!n.includes(e.value),(e,t)=>{t.push(e.value)},t)},t.functions=function functions(e,t,n){return collect(e,(e,t)=>e.isFunction()&&!t.includes(!0===n?e.value:e.name),(e,t)=>{!0===n?t.push(e.value):e.isFunction()&&t.push(e.name)},t)},t.hasFunction=function hasFunction(e,t,n=!1){if(e.isFunction()&&e.name===t)return!0;if(n&&e.args)for(const i of e.args)if(hasFunction(i,t,n))return!0;if(e.elements)for(const i in e.elements)if(hasFunction(e.elements[i],t,n))return!0;if(n&&e.isEXP()){if(hasFunction(e.getBase(),t,n))return!0;if(hasFunction(e.getPower(),t,n))return!0}return!1},t.hasVariable=function hasVariable(e,t){if(e.isVAR()&&e.value===t)return!0;if(e.args)for(const n of e.args)if(hasVariable(n,t))return!0;if(e.elements){const n=e.getElements();for(const e in n)if(hasVariable(n[e],t))return!0}if(e.isEXP()){if(hasVariable(e.getBase(),t))return!0;if(hasVariable(e.getPower(),t))return!0}return!1},t.forEveryElement=function forEveryElement(e,t,n=!1){if(e.isNUM()||e.isVAR())return e;const r=e.getMultiplier();let s=e.getPower();e.isEXP()&&(s=forEveryElement(s,t,!0));const o=t(e.toLinearAndUnitMultiplier());let a;if(o.isFunction())o.args=o.getArguments().map(e=>n?t(e):forEveryElement(e,t,!0)),a=o;else if(o.isProduct()){a=(0,i.one)();for(let e of o.elementsArray())e=t(e),a=a.times(forEveryElement(e,t,!0))}else if(o.isSum()){a=(0,i.zero)();for(let e of o.elementsArray())e=t(e),a=a.plus(forEveryElement(e,t,!0))}else a=t(o);return a.pow(s).times(r)};const i=n(6099);function collect(e,t,n,i){if(i??=[],t(e,i)&&n(e,i),e.args)for(const r of e.args)collect(r,t,n,i);if(e.elements)for(const r in e.elements)collect(e.elements[r],t,n,i);return e.isEXP()&&(collect(e.getBase(),t,n,i),collect(e.getPower(),t,n,i)),i}},652(e,t,n){"use strict";t.isTrig=function isTrig(e){return e.isFunction()&&i.TRIG.includes(e.name)},t.isInverseTrig=function isInverseTrig(e){return e.isFunction()&&i.INVERSE_TRIG.includes(e.name)},t.isHyperbolicTrig=function isHyperbolicTrig(e){return e.isFunction()&&i.HYPERBOLIC_TRIG.includes(e.name)};const i=n(8300)},1897(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.product=function product(...e){let t=(0,o.one)();for(const n of e)t=t.times(n);return t},t.sum=function sum(...e){let t=(0,o.zero)();for(const n of e)t=t.plus(n);return t},t.stripPower=stripPower,t.cloneExpressionTree=cloneExpressionTree,t.copyOver=function copyOver(e,t,n){n={omitMultiplier:!1,omitPower:!1,...n},e.multiplier&&!n.omitMultiplier&&(t.multiplier=e.multiplier.copy());void 0!==e.name&&(t.name=e.name);e.power&&!n.omitPower&&(t.power=cloneExpressionTree(e.power));if(e.args){t.args=[];for(const n of e.args)t.args.push(cloneExpressionTree(n))}e.base&&(t.base=cloneExpressionTree(e.base));if(e.elements){t.elements={};for(const n in e.elements)t.elements[n]=cloneExpressionTree(e.elements[n])}return t.type=e.type,t.value=e.value,t.precision=e.precision,t.scientific=e.scientific,t.deferred=e.deferred,t},t.toArrays=function toArrays(e,t){const n=t||{num:[],den:[]};function addMultiplier(e){n.num.push(s.Expression.Number(e.numerator)),1n!==e.denominator&&n.den.push(s.Expression.Number(e.denominator))}if(e.isNUM())addMultiplier(e.getMultiplier());else{addMultiplier(e.getMultiplier());const t=e.getPower();if(e.isProduct()){const t=e.elementsArray();for(const e of t)toArrays(e,n)}else{const i=stripPower(e.toUnitMultiplier());(t.getMultiplier().isNegative()?n.den:n.num).push(i)}n.power=toArrays(t.abs()),e.args&&(n.args=e.getArguments().map(e=>toArrays(e)))}return n},t.largestPower=function largestPower(e,...t){let n=e;for(const e of t)e.getPower().gt(n.getPower())&&(n=e);return n},t.assertPlainVariableAndGetString=function assertPlainVariableAndGetString(e){if(!e.isVAR())throw new i.UnexpectedInputError((0,i.message)("plainVariableExpected",{input:e.text()}));return e.value},t.getNumericOrAssumedValue=function getNumericOrAssumedValue(e){let t;if(e.isNUM())t=e;else{const n=(0,r.getAssumptionFor)(e);n&&n.isSingleton&&(t=n.getSingletonValue())}return t};const i=n(4703),r=n(6351),s=n(296),o=n(6099);function stripPower(e){const t=e.copy();return delete t.power,t}function cloneExpressionTree(e){const t=s.Expression.hook(e);if(!s.Expression.isExpression(t))return s.Expression.create(t);const n=t,i=Object.create(s.Expression.prototype);if(i.dataType=n.dataType,i.deferred=n.deferred,i.isEnumerable=n.isEnumerable,i.type=n.type,i.value=n.value,i.precision=n.precision,i.scientific=n.scientific,n.multiplier&&(i.multiplier=n.multiplier.copy()),void 0!==n.name&&(i.name=n.name),n.power&&(i.power=cloneExpressionTree(n.power)),n.args&&(i.args=n.args.map(cloneExpressionTree)),n.base&&(i.base=cloneExpressionTree(n.base)),n.elements){i.elements={};for(const e in n.elements)i.elements[e]=cloneExpressionTree(n.elements[e])}return i}},2178(e,t){"use strict";t.LookupTable=void 0;t.LookupTable=class LookupTable{_entries=new Map;addEntry(e,t){const n=this._entries.get(e);n?n.push(t):this._entries.set(e,[t])}get(e){return this._entries.get(e)}addEntries(e){for(const t in e){const n=e[t];this.addEntry(t,n)}}lookup(e,t){const n=this.get(e.patternString);if(n)for(const i of n){const n=i(e,t);if(n)return n}}set(e,t){const n=this._entries.get(e);return!!t&&(n?.push(t),!0)}}},4462(e,t,n){"use strict";t.Matrix=void 0;const i=n(8533),r=n(8505),s=n(6441),o=n(4861),a=n(4703),l=n(296),u=n(6099),c=n(8300),m=n(3982);class Matrix extends r.StructuredEntity{_rowSwaps=0;dataType=c.MATRIX;elements;isEnumerable=!0;precision;constructor(...e){let t;super(),this.elements=[];for(let n=0;n<e.length;n++){const i=e[n],r=(m.Vector.isVector(i)?i.elements:(0,o.toParserEntities)(i)).map(e=>l.Expression.create(e));if(r.length>0){if(void 0!==t&&t!==r.length)throw new a.MathError((0,a.message)("cannotCreateMatrix"));this.elements.push(r),t=r.length}}}static fill(e,t,n){const i=new Matrix([]);for(let r=0;r<e;r++){const e=[];for(let i=0;i<t;i++)e.push(n.copy());i.elements.push(e)}return i}static identity(e){const t=new Matrix([]);for(let n=0;n<e;n++){const i=[];for(let t=0;t<e;t++)i.push(n===t?(0,u.one)():(0,u.zero)());t.elements.push(i)}return t}static isMatrix(e){return(0,s.isNerdamerNativeType)(e,c.MATRIX)}static zeroMatrix(e,t){return Matrix.fill(e,t,(0,u.zero)())}__get__(e){const t=e[0];if(t<0||t>=this.elements.length)throw new a.MathError((0,a.message)("matrixRowIndexOutOfBounds",{index:String(t),length:String(this.elements.length)}));if(e.length>1){const n=e[1];if(n<0||n>=this.elements[t].length)throw new a.MathError((0,a.message)("matrixColumnIndexOutOfBounds",{index:String(n),length:String(this.elements[t].length)}));return this.elements[t][n]}return new m.Vector(this.elements[t])}__set__(e,t){if("string"==typeof e)throw new a.MathError((0,a.message)("matrixStringKeyUnsupported"));const n=e[0],i=e.length>1?e[1]:void 0;if(n<0||n>=this.elements.length)throw new a.MathError((0,a.message)("matrixRowIndexOutOfBounds",{index:String(n),length:String(this.elements.length)}));if(void 0!==i){if(i<0||i>=this.elements[n].length)throw new a.MathError((0,a.message)("matrixColumnIndexOutOfBounds",{index:String(i),length:String(this.elements[n].length)}));this.elements[n][i]=l.Expression.create(t)}else{if(!m.Vector.isVector(t))throw new a.UnexpectedDataType((0,a.message)("vectorExpected",{type:c.dataTypes[t.dataType]}));if(t.elements.length!==this.cols())throw new a.MathError((0,a.message)("mismatchedDimensions",{function:"Matrix.__set__"}));const e=t.elements.map(e=>l.Expression.create(e));this.elements[n]=e}}augment(e){const t=this.rows();if(t!==e.rows())throw new a.MathError((0,a.message)("rowsMustMatch"));if(0===t)return this.copy();const n=e.copy(),i=this.copy(),r=i.cols();let s=t;const o=n.cols();let l;for(;s--;)for(l=o;l--;)i.elements[s][r+l]=n.elements[s][l];return i}canMultiplyFromLeft(e){return this.cols()===e.rows()}col(e){const t=[],n=this.rows();if(e>0&&e<=this.cols())for(let i=0;i<n;i++)t.push([this.elements[i][e-1]]);return new Matrix(...t)}cols(){return 0===this.elements.length?0:this.elements[0].length}copy(){const e=this.map(e=>e.copy());return this.copySymbolicAccessTo(e)}determinant(){if(0===this.rows())return(0,u.one)();if(!this.isSquare())throw new a.UnsupportedOperationError((0,a.message)("squareMatrixRequired"));const e=this.toRightTriangular(),t=this.rows();let n=e.elements[0][0];for(let i=1;i<t;i++)n=n.times(e.get(i,i));return e._rowSwaps%2!=0&&(n=n.neg()),n}dimensions(){return[this.rows(),this.cols()]}dimensionsMatch(e){return Matrix.isMatrix(e)&&this.cols()===e.cols()&&this.rows()===e.rows()}div(e){if(Matrix.isMatrix(e)&&!this.dimensionsMatch(e))throw new a.DimensionError((0,a.message)("mismatchedDimensions",{function:"Matrix.div"}));return super.div(e)}e(e,t){return this.get(e-1,t-1)}each(e){for(let t=0;t<this.elements.length;t++){const n=this.elements[t];for(let i=0;i<n.length;i++){const r=e(n[i],t,i);void 0!==r&&(n[i]=r)}}return this}eq(e){if(!Matrix.isMatrix(e)||!this.dimensionsMatch(e))return!1;const t=this.rows(),n=this.cols();for(let i=0;i<t;i++)for(let t=0;t<n;t++)if(!this.elements[i][t].eq(e.elements[i][t]))return!1;return!0}evaluate(e){let t;const n=l.Expression.fromSymbolicAccess(this);if(n&&e)t=n.evaluate(e);else{const n=this.copy();n.each(t=>t.evaluate(e)),t=n}return t}expand(){const e=this.copy();return e.each(e=>e.expand()),e}forEach(e){for(let t=0;t<this.elements.length;t++)for(let n=0;n<this.elements[t].length;n++)e(this.elements[t][n],t,n)}get(e,t){return this.__get__([e,t])}gt(e){if(!Matrix.isMatrix(e)||!this.dimensionsMatch(e))return!1;const t=this.rows(),n=this.cols();for(let i=0;i<t;i++)for(let t=0;t<n;t++)if(!this.elements[i][t].gt(e.elements[i][t]))return!1;return!0}gte(e){if(!Matrix.isMatrix(e)||!this.dimensionsMatch(e))return!1;const t=this.rows(),n=this.cols();for(let i=0;i<t;i++)for(let t=0;t<n;t++)if(!this.elements[i][t].gte(e.elements[i][t]))return!1;return!0}inspect(){let e="";for(let t=0;t<this.elements.length;t++){e+=`[${this.elements[t].map(e=>e.text()).join(", ")}]\n`}return e}inverse(){if(!this.isSquare())throw new a.UnsupportedOperationError((0,a.message)("squareMatrixRequired"));if(0===this.rows())return this.copy();if(this.isSingular())throw new a.MathError((0,a.message)("singularMatrix"));const e=this.elements.length;let t=e;const n=this.augment(Matrix.identity(e)).toRightTriangular(),i=[];let r,s,o,l,c;const m=n.elements[0].length,p=(0,u.zero)();for(;t--;){if(o=[],i[t]=[],l=n.elements[t][t],l.eq(p))throw new a.MathError((0,a.message)("singularMatrix"));for(s=0;s<m;s++)c=n.elements[t][s].div(l),o.push(c),s>=e&&i[t].push(c);for(n.elements[t]=o,r=t;r--;){for(o=[],s=0;s<m;s++)o.push(n.elements[r][s].minus(n.elements[t][s].times(n.elements[r][t])));n.elements[r]=o}}return new Matrix(...i)}isSingular(){return this.isSquare()&&this.determinant().eq("0")}isSquare(){return this.rows()===this.cols()}lt(e){if(!Matrix.isMatrix(e)||!this.dimensionsMatch(e))return!1;const t=this.rows(),n=this.cols();for(let i=0;i<t;i++)for(let t=0;t<n;t++)if(!this.elements[i][t].lt(e.elements[i][t]))return!1;return!0}lte(e){if(!Matrix.isMatrix(e)||!this.dimensionsMatch(e))return!1;const t=this.rows(),n=this.cols();for(let i=0;i<t;i++)for(let t=0;t<n;t++)if(!this.elements[i][t].lte(e.elements[i][t]))return!1;return!0}map(e){const t=new Matrix([]);for(let n=0;n<this.elements.length;n++){t.elements[n]=[];for(let i=0;i<this.elements[n].length;i++)t.elements[n][i]=e(this.elements[n][i],n,i)}return t}minus(e){if(Matrix.isMatrix(e)&&!this.dimensionsMatch(e))throw new a.DimensionError((0,a.message)("mismatchedDimensions",{function:"Matrix.minus"}));return super.minus(e)}multiply(e){return this.times(e)}nullspace(e){const t=void 0===e?void 0:l.Expression.create(e),n=this.rref(e),r=n.rows(),s=n.cols(),o=(0,u.zero)(),a=new Set,c=new Array(r).fill(-1);for(let e=0;e<r;e++)for(let t=0;t<s;t++)if(!n.elements[e][t].eq(o)){a.add(t),c[e]=t;break}const m=[];for(let e=0;e<s;e++)a.has(e)||m.push(e);const p=[];for(const e of m){const o=Array.from({length:s},()=>(0,u.zero)());o[e]=(0,u.one)();for(let s=0;s<r;s++){const r=c[s];if(-1!==r){const a=(0,u.zero)().minus(n.elements[s][e]);o[r]=t?(0,i.mod)(a,t):a}}p.push(o)}return p}plus(e){if(Matrix.isMatrix(e)&&!this.dimensionsMatch(e))throw new a.DimensionError((0,a.message)("mismatchedDimensions",{function:"Matrix.plus"}));return super.plus(e)}pow(e){const t=l.Expression.create(e);if(!t.isNUM()||!t.isInteger())throw new a.UnsupportedOperationError((0,a.message)("unsupportedOperation"));const n=t.getMultiplier().numerator;let i;if(1n===n)i=this.copy();else{if(!this.isSquare())throw new a.UnsupportedOperationError((0,a.message)("squareMatrixRequired"));if(0n===n)i=Matrix.identity(this.rows());else{let e=n<0n?-n:n,t=n<0n?this.inverse():this.copy();for(i=Matrix.identity(this.rows());e>0n;)e%2n==1n&&(i=i.times(t)),e/=2n,e>0n&&(t=t.times(t))}}return i}rank(){const e=this.toRightTriangular();let t=0,n=e.rows();const i=e.cols(),r=(0,u.zero)();let s;for(;n--;)for(s=i;s--;)if(!e.elements[n][s].eq(r)){t++;break}return t}row(e){let t;return t=e<1||e>this.rows()?new Matrix([]):0===this.cols()?Matrix.zeroMatrix(1,0):new Matrix(this.elements[e-1]),t}rows(){return this.elements.length}rref(e){const t=this.rows(),n=this.cols();let r=0;const s=this.copy(),o=(0,u.zero)(),a=e?l.Expression.create(e):void 0;a&&s.each(e=>(0,i.mod)(e,a));for(let e=0;e<t&&!(n<=r);e++){let l=e;for(;s.elements[l][r].eq(o);)if(l++,t===l&&(l=e,r++,n===r))return s;if([s.elements[l],s.elements[e]]=[s.elements[e],s.elements[l]],a){const o=(0,i.modInv)(s.elements[e][r],a);for(let t=0;t<n;t++)s.elements[e][t]=(0,i.mod)(s.elements[e][t].times(o),a);for(let o=0;o<t;o++)if(o!==e){const t=s.elements[o][r];for(let r=0;r<n;r++)s.elements[o][r]=(0,i.mod)(s.elements[o][r].minus(t.times(s.elements[e][r])),a)}}else{const i=s.elements[e][r];for(let t=0;t<n;t++)s.elements[e][t]=s.elements[e][t].div(i);for(let i=0;i<t;i++)if(i!==e){const t=s.elements[i][r];if(t.eq(o))continue;for(let r=0;r<n;r++)s.elements[i][r]=s.elements[i][r].minus(t.times(s.elements[e][r]))}}r++}return s.elements.sort((e,t)=>{const n=e.every(e=>e.eq(o)),i=t.every(e=>e.eq(o));return n&&!i?1:!n&&i?-1:0}),s}set(e,t,n){return this.__set__([e,t],n),this}text(){const e=[];for(let t=0;t<this.elements.length;t++){const n=this.elements[t],i=[];for(let e=0;e<n.length;e++)i.push(n[e].text());e.push(`[${i.join(", ")}]`)}const t=`matrix(${e.join(", ")})`;return this.formatSymbolicAccess(t)}times(e){let t;if(l.Expression.isExpression(e))t=this.map(t=>t.times(e));else if(m.Vector.isVector(e)){if(this.cols()!==e.count())throw new a.MathError((0,a.message)("mismatchedDimensions",{function:"Matrix.times"}));const n=[];for(let t=0;t<this.rows();t++)n.push(new m.Vector(this.elements[t]).dot(e));t=new m.Vector(n)}else{if(!Matrix.isMatrix(e))throw new a.UnsupportedOperationError((0,a.message)("unsupportedType",{type:c.dataTypes[e.dataType]}));if(!this.canMultiplyFromLeft(e))throw new a.MathError((0,a.message)("mismatchedDimensions",{function:"Matrix.times"}));if(0===this.rows())t=new Matrix([]);else if(0===e.cols())t=Matrix.zeroMatrix(this.rows(),0);else{const n=this.elements,i=n.length,r=n[0].length,s=[];let o=i;const a=e.cols();let l,c,m,p,g;for(;o--;){for(p=[],m=n[o],l=a;l--;){for(g=(0,u.zero)(),c=r;c--;){const t=m[c],n=e.elements[c][l];g=g.plus(t.times(n))}p[l]=g}s[o]=p}t=new Matrix(...s)}}return t}toRightTriangular(){const e=this.copy(),t=e.rows(),n=e.cols(),i=(0,u.zero)();let r=0;e._rowSwaps=0;for(let s=0;s<n&&r<t;s++){let o=r;for(;o<t&&e.elements[o][s].eq(i);)o++;if(o===t)continue;o!==r&&([e.elements[o],e.elements[r]]=[e.elements[r],e.elements[o]],e._rowSwaps++);const a=e.elements[r][s];for(let o=r+1;o<t;o++)if(!e.elements[o][s].eq(i)){const t=e.elements[o][s].div(a),i=[];for(let a=0;a<n;a++)i.push(a<=s?(0,u.zero)():e.elements[o][a].minus(e.elements[r][a].times(t)));e.elements[o]=i}r++}return e}toUpperTriangular(){return this.toRightTriangular()}trace(){if(!this.isSquare())throw new a.MathError((0,a.message)("matrixTraceUnavailable"));let e=(0,u.zero)();const t=this.elements.length;for(let n=0;n<t;n++){const t=this.elements[n][n];if(!l.Expression.isExpression(t))throw new a.MathError((0,a.message)("matrixTraceUnavailable"));e=e.plus(t)}return e}transpose(){const e=this.rows(),t=this.cols();if(e>0&&0===t)throw new a.UnsupportedOperationError((0,a.message)("unsupportedOperation"));const n=[];let i=t;for(;i--;){let t=e;for(n[i]=[];t--;)n[i][t]=this.elements[t][i]}return new Matrix(...n)}unroll(){const e=[];for(let t=1;t<=this.cols();t++)for(let n=1;n<=this.rows();n++)e.push(this.e(n,t));return new m.Vector(e)}}t.Matrix=Matrix},981(e,t,n){"use strict";t.loadMatrixFunctions=function loadMatrixFunctions(){Object.assign(i.mathFunctionRegistry,{matrix:(0,i.systemFunction)({fn:o.matrix,minArgs:1,maxArgs:-1,distElWise:!1}),imatrix:(0,i.systemFunction)({fn:s.imatrix,minArgs:1,maxArgs:1,distElWise:!1}),determinant:(0,i.systemFunction)({fn:r.determinant,minArgs:1,maxArgs:1,distElWise:!1}),invert:(0,i.systemFunction)({fn:r.invert,minArgs:1,maxArgs:1,distElWise:!1}),transpose:(0,i.systemFunction)({fn:e=>e.transpose(),minArgs:1,maxArgs:1,distElWise:!1}),augment:(0,i.systemFunction)({fn:(e,t)=>e.augment(t),minArgs:2,maxArgs:2,distElWise:!1}),rref:(0,i.systemFunction)({fn:(e,t)=>e.rref(t),minArgs:1,maxArgs:2,distElWise:!1}),nullspace:(0,i.systemFunction)({fn:r.nullspace,minArgs:1,maxArgs:2,distElWise:!1})})};const i=n(9426),r=n(6430),s=n(430),o=n(8533)},6430(e,t,n){"use strict";t.determinant=function determinant(e){return e.copy().determinant()},t.invert=function invert(e){return e.inverse()},t.nullspace=function nullspace(e,t){return new o.Vector(e.nullspace(t).map(e=>new o.Vector(e)))};const i=n(4703),r=n(296),s=n(2116),o=n(3982),a=n(4462)},430(e,t,n){"use strict";t.imatrix=function imatrix(e){let t;t=e.isInteger()?s.Matrix.identity(Number(e)):i.Expression.toFunction(r.IMATRIX,[e]);return t};const i=n(296),r=n(8300),s=n(4462)},238(e,t,n){"use strict";t.Parser=void 0;const i=n(8891),r=n(2809),s=n(6441),o=n(9725),a=n(4861),l=n(9426),u=n(4703),c=n(7103),m=n(5817),p=n(6284),g=n(6528),d=n(6184),h=n(296),x=n(4462),E=n(5584),y=n(5598),v=n(3982),w=n(8300),b=n(8801),P=n(5823),A=n(12),N=n(567),M=n(8054),T=n(8584);function shouldPopOperator(e,t){let n=e.precedence>t.precedence;return n||e.precedence!==t.precedence||(n=t.leftAssoc),n}class ExpressionParser{CONSTANTS=w.PARSER_CONSTANTS;MAX_COMPOUND_OPERATOR_LENGTH=2;operators=(0,o.getOperators)();VALUE_SETS=[w.VECTOR,w.MATRIX];WHITE_SPACE=[w.NEWLINE,w.TAB,w.RETURN];KNOWN_VALUES={};extractIndices(e,t,n){const i=[];let s,o=!0;for(let t=0;t<e.length;t++){const n=e[t];if(r.Scope.isScope(n)){o=!1;break}if(n.type!==A.Token.OPERATOR){if(n.type!==A.Token.NUMBER){o=!1;break}i.push(Number(n.value)-m.Settings.INDEX_BASE)}}if(o&&i.length>0)s=i;else{const i=this.parseRPN(e,t,n),r=[];if(v.Vector.isVector(i))for(let e=0;e<i.elements.length;e++)r.push(h.Expression.create(i.elements[e]));else if(p.Collection.isCollection(i))for(const e of i.getElements())r.push(h.Expression.create(e));else r.push(h.Expression.create(i));const o=[];let a=!0;for(let e=0;e<r.length;e++){const t=Number(r[e].evaluate().text());if(!Number.isFinite(t)){a=!1;break}o.push(t-m.Settings.INDEX_BASE)}s=a?o:r}return s}extractStringKeys(e){const t=[];for(let n=0;n<e.length;n++){const i=e[n];r.Scope.isScope(i)||i.type!==A.Token.OPERATOR&&t.push(i.value)}return t}aliasOperator(e,t){const n=this.operators[e];if(!n)throw new u.ParserError((0,u.message)("unknownOperator",{operator:e}));return this.operators[t]={...n,operator:t,postfixVariant:n.postfixVariant?{...n.postfixVariant,operator:t}:void 0},(0,A.refreshOperatorSymbols)(),this}create(){return new ExpressionParser}evaluate(e,n){return(0,m.scopedBlock)("EVALUATE",!0,()=>t.Parser.parse(e,n))}get(e){return m.Settings[e]}getI(){return h.Expression.imaginary}getOperator(e){const t=this.operators[e];let n;return t&&(n={...t,postfixVariant:t.postfixVariant?{...t.postfixVariant}:void 0}),n}getPrecision(){return E.Rational.getPrecision()}isReserved(e){return m.RESTRICTED.includes(e)}parse(e,t){if(t){const e={};for(const n in t){const i=t[n];e[n]=h.Expression.isExpression(i)||d.Equation.isEquation(i)||(0,a.isEnumerable)(i)?i:h.Expression.create(i)}t=e}const n=(0,P.preprocess)(String(e),l.mathFunctionRegistry),i=this.toRPN(this.tokenize(n));let r;try{r=this.parseRPN(i,t)}catch(e){if(N.NullSignal.isNullSignal(e))throw new u.NullError((0,u.message)("nullValue"));throw e}return r}parseRPN(e,t,n){const i=[],o=this.operators;function addToOutput(e){if(void 0===e)throw new u.ParserError((0,u.message)("malformedExpression"));i.push(e)}function resolveStackValue(e){if(M.IndexedReference.isIndexedReference(e))return e.resolve();if(T.KeyValuePair.isKeyValuePair(e)||"function"==typeof e)throw new u.ParserError((0,u.message)("malformedExpression"));return e}function resolveStackValues(e){const t=[];for(const n of e)t.push(resolveStackValue(n));return t}const createDeferredArgument=(e,t,n)=>{let i;return r=>{const s=i??e();i=s;let o,a=!1===r?.inheritValues?void 0:t;if(a&&r?.excludeValues?.length){a={...a};for(const e of r.excludeValues)delete a[e]}return o="boolean"==typeof r?.substitute?(0,m.scopedBlock)("SUBSTITUTE",r.substitute,()=>this.parseRPN(s,a,n)):this.parseRPN(s,a,n),o}};for(let c=0;c<e.length;c++){const E=e[c];if(r.Scope.isScope(E)){const r=i[i.length-1];if(E.deferRHSResolution)addToOutput(createDeferredArgument(()=>E,t,n));else if(E.deferLHSResolution){addToOutput((0,m.scopedBlock)("SUBSTITUTE",!1,()=>this.parseRPN(E,void 0,n)))}else if("square"===E.type&&E.implicitMultiply&&r)if((0,a.isEnumerable)(r)||M.IndexedReference.isIndexedReference(r)){const s=M.IndexedReference.isIndexedReference(r)?r.resolve():r,o=e[c-1];let a,l;if(!A.Token.isToken(o)||o.type!==A.Token.VARIABLE||t&&o.value in t||!(o.value in this.KNOWN_VALUES)||(a=o.value),g.Dictionary.isDictionary(s)){l=this.extractStringKeys(E)[0]}else l=this.extractIndices(E,t,n);if(i.pop(),Array.isArray(l)&&l.length>0&&h.Expression.isExpression(l[0])){const e=l;let t;if((v.Vector.isVector(s)||x.Matrix.isMatrix(s))&&s.symbolicTarget?t=s.symbolicTarget:A.Token.isToken(o)&&o.type===A.Token.VARIABLE&&(t=h.Expression.Variable(o.value)),!t||!v.Vector.isVector(s)&&!x.Matrix.isMatrix(s))throw new u.ParserError((0,u.message)("symbolicAccessNamedTargetRequired"));if(v.Vector.isVector(s)&&1!==e.length)throw new u.ParserError((0,u.message)("symbolicVectorIndexCount"));if(x.Matrix.isMatrix(s)&&2!==e.length){if(1===e.length)throw new u.ParserError((0,u.message)("symbolicMatrixRowNonScalar"));throw new u.ParserError((0,u.message)("symbolicMatrixCellIndexCount"))}addToOutput(s.withSymbolicAccessor(t,e))}else addToOutput(new M.IndexedReference(s,l,a))}else if(h.Expression.isExpression(r)&&r.isPlainVariable()){const e=this.extractIndices(E,t,n);if(e.length>0&&h.Expression.isExpression(e[0])){const t=e;if(t.length>2)throw new u.ParserError((0,u.message)("symbolicAccessMaxIndices"));const n=2===t.length?new x.Matrix([]):new v.Vector;i.pop(),addToOutput(n.withSymbolicAccessor(r,t))}else if(m.Settings.ALLOW_IMPLICIT_MULTIPLICATION){const e=this.parseRPN(E,t,n);addToOutput((0,b._.multiply)(resolveStackValue(i.pop()),e))}else{addToOutput(this.parseRPN(E,t,n))}}else if(E.implicitMultiply&&m.Settings.ALLOW_IMPLICIT_MULTIPLICATION){const e=this.parseRPN(E,t,n);addToOutput((0,b._.multiply)(resolveStackValue(i.pop()),e))}else{addToOutput(this.parseRPN(E,t,n))}else{addToOutput(this.parseRPN(E,t,n))}}else if(E.type===A.Token.OPERATOR){const t=E.resolvedOperator??this.operators[E.value];let s,o=i.pop();if("comma"===t.action){const e=i.pop();s=(0,b._[t.action])(e,o)}else if(t.isPostfix){o=resolveStackValue(o),o=h.Expression.fromSymbolicAccess(o)??o;s=(0,b._[t.action])(o)}else{let a=i.pop();const l=e[c-1],m=e[c-2];if(-1===E.position&&"times"===t.action&&r.Scope.isScope(l)&&p.Collection.isCollection(o)&&A.Token.isToken(m)&&m.type===A.Token.VARIABLE&&h.Expression.isExpression(a)&&a.isPlainVariable())throw new u.ParserError((0,u.message)("unsupportedFunction",{function:m.value}));if("assign"===t.action&&M.IndexedReference.isIndexedReference(a)){let e=!0;try{o="function"==typeof o?o():resolveStackValue(o)}catch(t){if(!N.NullSignal.isNullSignal(t))throw t;e=!1}e&&(a.indices,a.target.__set__(a.indices,o),a.targetName&&(this.KNOWN_VALUES[a.targetName]=a.target)),s=a.target}else if(t.deferRHSResolution){if(a=resolveStackValue(a),"function"!=typeof o)throw new u.ParserError((0,u.message)("malformedExpression"));s=(0,b._[t.action])(a,o)}else if(t.deferLHSResolution){a=resolveStackValue(a),o=resolveStackValue(o);s=(0,b._[t.action])(a,o)}else if("mapTo"===t.action){a=resolveStackValue(a),o=resolveStackValue(o);const e=h.Expression.isExpression(a)?a.text():String(a.text());s=new T.KeyValuePair(e,o)}else{a=resolveStackValue(a),o=resolveStackValue(o),a=h.Expression.fromSymbolicAccess(a)??a,o=h.Expression.fromSymbolicAccess(o)??o;const e=n&&t.assertiveAction?t.assertiveAction:t.action,i=b._[e];s=a.isEnumerable||o.isEnumerable||d.Equation.isEquation(a)||d.Equation.isEquation(o)?(0,b.route)(a,o,t.action):i(a,o)}}Array.isArray(s)?(addToOutput(s[0]),addToOutput(s[1])):addToOutput(s)}else if(E.type===A.Token.FUNCTION){const i=e[++c];if(E.value===w.SYMBOLIC_ACCESSOR){const e=(0,m.scopedBlock)("SUBSTITUTE",!1,()=>this.parseRPN(i,void 0,n)),r=p.Collection.isCollection(e)?e.getElements():[e],s=this.parseRPN(i,t,n),o=p.Collection.isCollection(s)?s.getElements():[s];if(r.length<2||r.length!==o.length||!h.Expression.isExpression(r[0])||!r[0].isPlainVariable())throw new u.ParserError((0,u.message)("parserMalformedSymbolicAccessor"));const a=r[0],l=o[0],c=[],g=[];let d,E=!0;for(let e=1;e<r.length;e++){const t=r[e],n=o[e];if(!h.Expression.isExpression(t))throw new u.ParserError((0,u.message)("parserMalformedSymbolicAccessorIndex"));if(!h.Expression.isExpression(n))throw new u.ParserError((0,u.message)("symbolicAccessIndexScalar"));c.push(n);const i=Number(n.text());Number.isFinite(i)?g.push(i-m.Settings.INDEX_BASE):E=!1}if(c.length>2)throw new u.ParserError((0,u.message)("symbolicAccessMaxIndices"));if(v.Vector.isVector(l)&&1!==c.length)throw new u.ParserError((0,u.message)("symbolicVectorIndexCount"));if(x.Matrix.isMatrix(l)&&2!==c.length){if(1===c.length)throw new u.ParserError((0,u.message)("symbolicMatrixRowNonScalar"));throw new u.ParserError((0,u.message)("symbolicMatrixCellIndexCount"))}if((v.Vector.isVector(l)||x.Matrix.isMatrix(l))&&E)d=l.__get__(g);else{let e;if(v.Vector.isVector(l)||x.Matrix.isMatrix(l))e=l;else{if(!h.Expression.isExpression(l)||!l.isPlainVariable())throw new u.ParserError((0,u.message)("symbolicAccessTargetType"));e=2===c.length?new x.Matrix([]):new v.Vector}d=e.withSymbolicAccessor(a,c)}addToOutput(d)}else if(l.mathFunctionRegistry[E.value]?.deferArguments){const e=[];if(i.length>0){let t=new r.Scope(i.type,i.column);for(const n of i)A.Token.isToken(n)&&n.type===A.Token.OPERATOR&&n.value===w.COMMA?(e.push(t),t=new r.Scope(i.type,i.column)):t.push(n);e.push(t)}const n=l.mathFunctionRegistry[E.value].normalizeDeferredArguments,o=n?n(e):e,a=s.ASSERTIVE_FUNCTIONS.includes(E.value),u=o.map(e=>createDeferredArgument(()=>this.toRPN(e),t,a));addToOutput((0,b.callFunction)(E.value,u))}else if(i.deferLHSResolution){let e=[];if(i.length>0){const t=(0,m.scopedBlock)("SUBSTITUTE",!1,()=>this.parseRPN(i,void 0,n));e=p.Collection.isCollection(t)?[...t.getElements()]:[t]}e.push(h.Expression.Variable(E.value)),addToOutput(new p.Collection(e))}else{const e=this.parseRPN(i,t,s.ASSERTIVE_FUNCTIONS.includes(E.value)),n=p.Collection.isCollection(e)?e.getElements():[e];addToOutput((0,b.callFunction)(E.value,n))}}else if(E.type===A.Token.PREFIX){const e=resolveStackValue(i.pop()),t=h.Expression.fromSymbolicAccess(e)??e,n=`${o[E.value].action}Prefix`;addToOutput((0,b._[n])(t))}else{let e;const n=this.CONSTANTS[E.value];if("string"==typeof n)e=this.parse(n);else if(t&&E.value in t&&!E.is(A.Token.NUMBER)){const n=t[E.value];e=h.Expression.isExpression(n)||d.Equation.isEquation(n)||(0,a.isEnumerable)(n)?n.copy():h.Expression.create(n,void 0,!0)}else if(E.value in this.KNOWN_VALUES&&m.Settings.SUBSTITUTE)e=this.KNOWN_VALUES[E.value].copy();else if(m.Settings.EVALUATE&&"function"==typeof n)e=this.parse(n(),t);else switch(E.type){case A.Token.FUNCTION:e=h.Expression.Function(E.value);break;case A.Token.VARIABLE:e=w.INFINITY.includes(E.value)?h.Expression.Inf():h.Expression.Variable(E.value);break;default:e=h.Expression.Number(E.value)}addToOutput(e)}}let c;if("square"===e.type)c=new v.Vector(resolveStackValues(i));else if("curly"===e.type)if(i.length>0&&T.KeyValuePair.isKeyValuePair(i[0])){const e=new g.Dictionary;for(const t of i)T.KeyValuePair.isKeyValuePair(t)&&e.set(t.key,t.value);c=e}else c=new y.ValuesSet(resolveStackValues(i));else c=i.length>1?new p.Collection(resolveStackValues(i)):resolveStackValue(i[0]);return c}parseTeXRPN(e){const t=["int","int_","frac","sum_","prod_","lim_","infty","mathrm"],n={Re:"realpart",Im:"imagpart",arccos:"acos",arcsin:"asin",arctan:"atan"},i=[],{FUNCTION:s,VARIABLE:o}=A.Token;let a;const integral=()=>{const t=(t=>{const n=new r.Scope("",-1);for(;a<e.length;a++){const i=e[a];if(n.push(i),t(i))break}return n})(e=>/^d/.test(e.value)),n=A.Token.V(t.pop().text().substring(1));return t.at(-1)?.text()===w.COMMA&&t.pop(),[t,n]},getLimits=e=>{const t=new r.Scope("",-1),n=new r.Scope("",-1);let i=t;for(let t=0;t<e.length;t++){const r=e[t];"to"!==r.text()?i.push(r):i=n}return[t,n]};for(a=0;a<e.length;a++){const l=e[a];if(r.Scope.isScope(l)){const e=this.parseTeXRPN(l);i.push(`(${e})`)}else if(l.is(s)||l.is(o)&&t.includes(l.value)){a++;const t=l.text().split("_")[0],r=l.text();switch(l.value){case"cos":case"sin":case"tan":case"sec":case"csc":case"cot":case"acos":case"arccos":case"arcsin":case"arctan":case"asec":case"acsc":case"acot":case"sqrt":case"gcd":case"Re":case"Im":i.push(`${n[r]||r}(${this.parseTeXRPN(e[a])})`);break;case"sum_":case"prod_":{const n=e[a],r=n.shift().text();n.shift();const s=this.parseTeXRPN(n);a+=2;const o=this.parseTeXRPN(e[a]);i.push(`${t}(${this.parseTeXRPN(e[++a])},${r},${s},${o})`);break}case"lim_":{const[n,r]=getLimits(e[a]);i.push(`${t}(${this.parseTeXRPN(e[++a])},${n},${r})`);break}case"int_":{const[e,t]=integral(),n=this.parseTeXRPN(e.shift());e.shift();const r=this.parseTeXRPN(e.shift());i.push(`defint(${this.parseTeXRPN(e)},${n},${r},${t})`);break}case"int":{const[e,n]=integral();i.push(`${t}(${this.parseTeXRPN(e)},${n})`);break}case"frac":{const t=this.parseTeXRPN(e[a]),n=this.parseTeXRPN(e[++a]);i.push(`(${t})/(${n})`);break}case"infty":i.push(w.INFINITY[0]);break;case"mathrm":i.push(`${this.parseTeXRPN(e[a])}(${this.parseTeXRPN(e[++a])})`);break;default:i.push(`${r}(${this.parseTeXRPN(e[a])})`)}}else/\s+/.test(l.value)||i.push(l.value)}return i.join("")}scopedBlock(e,t,n){return(0,m.scopedBlock)(e,t,n)}set(e,t){if("object"==typeof e)for(const t in e)m.Settings[t]=e[t];else m.Settings[e]=t;return this}setConstants(e){for(const t in e){const n=e[t];"string"==typeof n&&""===n&&t in this.CONSTANTS?delete this.CONSTANTS[t]:this.CONSTANTS[t]=n}}setI(e){const t=h.Expression.imaginary;return(0,i.remove)(m.RESTRICTED,t),h.Expression.imaginary=e,m.RESTRICTED.push(e),this}setImaginary(e){return this.setI(e)}setOperator(e,t){const{prefix:n,postfix:i,...r}=e,s={...r,isPostfix:r.isPostfix??i??!1,isPrefix:r.isPrefix??n??!1,iterates:r.iterates??!0};if(t)b._[s.action]=t;else if(!b._[s.action])throw new u.ParserError((0,u.message)("unknownOperatorAction",{action:s.action}));return this.operators[s.operator]=s,(0,A.refreshOperatorSymbols)(),this}setPrecision(e){E.Rational.set({precision:e})}tokenize(e,t){t={pure:!1,keepWhiteSpace:!1,...t};let n=String(e)+"\0";t.keepWhiteSpace||(n=n.replace(/\s+/g," ").trim());const i=Object.keys(this.operators).sort(),o=i.filter(e=>this.operators[e].deferLHSResolution).sort((e,t)=>t.length-e.length);let a=0;const p=new r.Scope("top",0);let g=p;const d={tokenType:A.Token.UNDEFINED,chars:[],inputString:n,last:function(){return this.chars[this.chars.length-1]},next:function(e){return this.inputString.charAt(e+1)},is(e){return this.tokenType===e},prev:function(e){return this.inputString.charAt(e-1)},scientificNumber:!1};for(;a<n.length;a++){const e=n.charAt(a),r=A.Token.getCharType(e,a,d);if(r===A.Token.CHARACTER&&"\0"!==e)throw new u.UnexpectedTokenError((0,u.message)("unsupportedCharacter",{character:e,position:String(a)}));if(d.is(A.Token.BRACKET)){const e=d.last();if(void 0===e)throw new u.ParserError((0,u.message)("parserBracketTokenMissingCharacter"));const i=s.brackets[e];if(i.isOpen){const e=g[g.length-1];e&&e.type===A.Token.VARIABLE&&(e.value in l.mathFunctionRegistry||e.value===w.SYMBOLIC_ACCESSOR)&&(e.type=A.Token.FUNCTION);let n=!1;if(e&&e.type!==A.Token.FUNCTION&&e.type!==A.Token.OPERATOR)if("square"===i.type)n=!0;else{if(!m.Settings.ALLOW_IMPLICIT_MULTIPLICATION)throw new u.UnexpectedTokenError((0,u.message)("expectedOperatorOrFunction",{value:e.value}));"parenthesis"===i.type&&e.type===A.Token.VARIABLE&&(n=!0),t.pure||g.push(new A.Token("*",A.Token.OPERATOR,-1))}g=g.addScope(i.type,a),n&&(g.implicitMultiply=!0)}else{const e=g.type===i.type;if(e&&"parenthesis"===i.type&&g.parent){const e=n.slice(a).trimStart();if(o.find(t=>e.startsWith(t))){const e=g.parent;let t=e.length-2,n=e[t];A.Token.isToken(n)&&n.type===A.Token.OPERATOR&&"*"===n.value&&-1===n.position&&(e.splice(t,1),n=e[--t]),!A.Token.isToken(n)||n.type!==A.Token.VARIABLE&&n.type!==A.Token.FUNCTION||(n.type=A.Token.FUNCTION,g.deferLHSResolution=!0)}}if(g=g.upperScope(),void 0===g||!e)throw new u.UnexpectedTokenError((0,u.message)("missingOpeningBracket",{bracket:String(d.last()),position:String(a)}))}d.chars.pop()}if(d.tokenType!==A.Token.UNDEFINED&&d.tokenType!==r){let n=d.chars.join(w.BLANK);const r=w.ALIASES[n];r&&(n=r);const s=a-d.chars.length;if(i.includes(n)&&d.tokenType!==A.Token.PREFIX)d.tokenType=A.Token.OPERATOR;else if(d.is(A.Token.OPERATOR)&&d.chars.length>1){let e=d.chars[0];for(let t=1;t<d.chars.length+1;t++){const i=e+d.chars[t];i in this.operators?e=i:(g.push(new A.Token(e,A.Token.OPERATOR,s+t-e.length)),e=d.chars[t],n=w.BLANK)}d.chars=[],d.scientificNumber=!1}const o=n===w.SPACE;if(o&&t.keepWhiteSpace)g.push(new A.Token(n,A.Token.SPACE,s));else if(n!==w.BLANK&&!o){d.scientificNumber&&(n=(0,c.scientificToDecimal)(n),d.scientificNumber=!1);const e=g[g.length-1],i=A.Token.isToken(e)&&e.type===A.Token.OPERATOR?this.operators[e.value]:void 0;if(e&&(d.is(A.Token.VARIABLE)&&e.type!==A.Token.OPERATOR&&e.type!==A.Token.PREFIX||(d.is(A.Token.VARIABLE)||d.is(A.Token.NUMBER))&&i?.isPostfix)){if(!m.Settings.ALLOW_IMPLICIT_MULTIPLICATION)throw new u.UnexpectedTokenError((0,u.message)("expectedOperatorOrFunction",{value:e.value}));t.pure||g.push(new A.Token("*",A.Token.OPERATOR,-1))}m.Settings.USE_SINGLE_LETTER_VARIABLES&&!(n in l.mathFunctionRegistry)?g.push(...n.split("").map(e=>new A.Token(e,d.tokenType,-1)).flatMap(e=>[new A.Token("*",A.Token.OPERATOR,-1),e]).slice(1)):g.push(new A.Token(n,d.tokenType,s))}d.chars=[e]}else d.chars.push(e);d.tokenType=r}const h=p[p.length-1];if(r.Scope.isScope(h)&&h.isOpen)throw new u.UnexpectedTokenError((0,u.message)("missingClosingBracket",{bracket:n.charAt(h.column-1),position:String(h.column)}));return p}toRPN(e){const t=new r.Scope(e.type,e.depth),n=[],peek=()=>n[n.length-1],peekOperator=()=>{const e=peek();if(e)return e.resolvedOperator??this.operators[e.value]};for(let i=0;i<e.length;i++){let o=e[i];if(r.Scope.isScope(o)){const e=t[t.length-1];if(A.Token.isToken(e)&&e.type===A.Token.FUNCTION&&l.mathFunctionRegistry[e.value]?.deferArguments)t.push(o);else{const e=this.toRPN(o);e.implicitMultiply=o.implicitMultiply,e.deferLHSResolution=o.deferLHSResolution,e.deferRHSResolution=o.deferRHSResolution,t.push(e)}}else{const a=e[i+1],c=e[i+2];switch(o.type===A.Token.VARIABLE&&A.Token.isToken(a)&&a.type===A.Token.OPERATOR&&"*"===a.value&&-1===a.position&&r.Scope.isScope(c)&&"parenthesis"===c.type&&c.implicitMultiply&&o.value in l.mathFunctionRegistry&&(o=new A.Token(o.value,A.Token.FUNCTION,o.position),i++),o.type){case A.Token.OPERATOR:{let s=o.resolvedOperator??this.operators[o.value];if(s.postfixVariant){let t=i+1,n=e[t];for(;A.Token.isToken(n)&&(n.type===A.Token.SPACE||n.type===A.Token.UNDEFINED);)n=e[++t];(void 0===n||A.Token.isToken(n)&&(n.type===A.Token.OPERATOR||n.type===A.Token.PREFIX))&&(s=s.postfixVariant,o.resolvedOperator=s)}let a=peekOperator();for(let t=i+1;t<e.length;t++){const n=e[t];if(!n||n.type!==A.Token.OPERATOR||s.isPostfix)break;if(!this.operators[n.value].isPrefix)throw new u.ParserError((0,u.message)("prefixOperatorExpected",{operator:n.value}));n.type=A.Token.PREFIX}const l=t[t.length-1];if(s.isPrefix&&(0===t.length||t.length>0&&l&&l.type===A.Token.PREFIX)){o.type=A.Token.PREFIX,n.push(o);break}const greaterPrecedence=()=>{let e=!1;if(a){e=shouldPopOperator(a,s);const t=n[n.length-1];!e&&t&&t.type===A.Token.PREFIX&&s.leftAssoc&&(e=!0)}return e};for(;greaterPrecedence();)t.push(n.pop()),a=peekOperator();if(s.deferLHSResolution){const e=t[t.length-1];if(A.Token.isToken(e)&&e.type===A.Token.VARIABLE){const n=new r.Scope("",e.position);n.deferLHSResolution=!0,n.push(t.pop()),t.push(n)}}if(s.deferRHSResolution){const n=new r.Scope("",o.position);let a=i+1;for(;a<e.length;a++){const t=e[a];if(A.Token.isToken(t)&&t.type===A.Token.OPERATOR){const e=t.resolvedOperator??this.operators[t.value];if(e&&!shouldPopOperator(e,s))break}n.push(t)}if(0===n.length)throw new u.ParserError((0,u.message)("malformedExpression"));const l=this.toRPN(n);l.deferRHSResolution=!0,t.push(l),i=a-1}n.push(o);break}case A.Token.BRACKET:if(s.brackets[String(o.value)].isOpen)n.push(o);else{t.push(o);const e=peek();for(;e;){const e=n.pop();if(t.push(e),e.type===A.Token.BRACKET&&s.brackets[o.value].matches===e.value)break}}break;case A.Token.PREFIX:n.push(o);break;case A.Token.UNDEFINED:case A.Token.SPACE:break;default:t.push(o)}}}for(;n.length;){const e=n.pop();t.push(e)}return t}}t.Parser=new ExpressionParser},12(e,t,n){"use strict";t.Token=t.rx=t.dO=t.SY=t._Z=t.q4=t.Gp=t.Oy=void 0,t.refreshOperatorSymbols=function refreshOperatorSymbols(){t.Gp.splice(0,t.Gp.length,...(0,r.getOperatorSymbolArray)()),t.q4=new RegExp(`[${t.Gp.join("")}]`)};const i=n(6441),r=n(9725),s=n(8300);t.Oy=[],t.Gp=(0,r.getOperatorSymbolArray)(),t.q4=new RegExp(`[${t.Gp.join("")}]`),t._Z=new RegExp(`[${Object.keys(i.brackets).join("\\")}]`),t.SY=/[a-z_αAβBγΓδΔϵEζZηHθΘιIκKλΛμMνNξΞoOπΠρPσΣτTυϒϕΦχXψΨωΩ∞]/i,t.dO=/\d/,t.rx=/\d|\./;class Token{static BRACKET="BKT";static CHARACTER="CHR";static FUNCTION="FUN";static NUMBER="NUM";static OPERATOR="OPR";static PREFIX="PFX";static SPACE="SPC";static UNDEFINED="UND";static VARIABLE="VAR";dataType;position;resolvedOperator;type;value;constructor(e,t,n){this.dataType=s.TOKEN,this.position=n,this.type=t,this.value=String(e)}static getCharType(e,n,i){if(t.dO.test(e))return i.tokenType===Token.VARIABLE?Token.VARIABLE:Token.NUMBER;if(e===s.SPACE)return Token.SPACE;if(e===s.DOT)return i.tokenType===Token.VARIABLE?Token.OPERATOR:Token.NUMBER;if("e"!==e&&"E"!==e||i.tokenType!==Token.NUMBER){if(t.SY.test(e)||t.Oy.includes(e))return Token.VARIABLE;if(t._Z.test(e))return Token.BRACKET;if(t.q4.test(e)){const t=i.last();return i.tokenType!==Token.NUMBER||e!==s.PLUS&&e!==s.MINUS||"e"!==t&&"E"!==t?Token.OPERATOR:Token.NUMBER}return Token.CHARACTER}{const e=i.prev(n),r=i.next(n);return r===s.PLUS||r===s.MINUS||t.rx.test(e)&&t.dO.test(r)?(i.scientificNumber=!0,Token.NUMBER):Token.VARIABLE}}static isToken(e){return(0,i.isNerdamerNativeType)(e,s.TOKEN)}static O(e){return new Token(e,Token.OPERATOR,-1)}static V(e){return new Token(e,Token.VARIABLE,-1)}is(e){return this.type===e}text(){return this.value}toString(){return this.type===Token.PREFIX?"`"+this.value:this.value}}t.Token=Token},8300(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.FIB=t.DOUBLE_FACTORIAL=t.FACTORIAL=t.SYMBOLIC_ACCESSOR=t.PARSER_CONSTANTS=t.INFINITY=t.PI=t.ALIASES=t.ALL_SYMBOL=t.INDEX_VARIABLE=t.DEFAULT_IMAGINARY=t.PI_SYMBOL=t.PI_NAME=t.E=t.RANK=t.EXPRESSION_TYPES=t.dataTypes=t.ASSUMPTION=t.DICTIONARY=t.SOLUTIONS_SET=t.SET=t.GFPOLY=t.TERM=t.POLYNOMIAL=t.EQUATION=t.MATRIX=t.VECTOR=t.COLLECTION=t.EXPRESSION=t.SCOPE=t.RATIONAL=t.KEY_VALUE_PAIR=t.INDEXED_REFERENCE=t.TOKEN=t.WRAP=t.CLOSE_PAREN=t.OPEN_PAREN=t.RETURN=t.LINEFEED=t.TAB=t.NEWLINE=t.BLANK=t.SPACE=t.ASSIGN=t.COMMA=t.DOT=t.DIVIDE=t.MULTIPLY=t.PLUS=t.MINUS=void 0,t.SI=t.SHI=t.TRUNC=t.SIZE=t.ROUND=t.REALPART=t.PRODUCT_FUNCTION=t.NTHROOT=t.MIN=t.MAX=t.LN=t.LIMIT=t.LI=t.LAPLACE=t.ISPRIME=t.INTEGRATE=t.IMATRIX=t.IMAGPART=t.ILAPLACE=t.GCD=t.FRESNEL_S=t.FRESNEL_C=t.FLOOR=t.PFACTORD=t.PFACTOR=t.FACTOR=t.ERF=t.EI=t.DOT_PRODUCT=t.DIFF=t.DEG=t.DEFINT=t.CROSS=t.COUNT=t.CONTENT=t.CONTAINS=t.CONJUGATE=t.CI=t.CHI=t.CEIL=t.CBRT=t.CSGN=t.SGN=t.LOG=t.HEAVISIDE=t.DIRAC=t.GAMMA=t.MOD=t.ABS=t.SQRT=void 0,t.INVERSE_HYPERBOLIC_TRIG=t.HYPERBOLIC_TRIG=t.INVERSE_TRIG=t.TRIG=t.ACOTH=t.ACSCH=t.ASECH=t.ATANH=t.ASINH=t.ACOSH=t.COTH=t.CSCH=t.SECH=t.TANH=t.COSH=t.SINH=t.ATAN2=t.ACOT=t.ACSC=t.ASEC=t.ATAN=t.COT=t.CSC=t.SEC=t.ACOS=t.ASIN=t.TAN=t.SIN=t.COS=t.TRIG_FUNCTION_NAMES=t.SUM_FUNCTION=t.SINC=void 0;const r=i(n(3110));t.MINUS="-",t.PLUS="+",t.MULTIPLY="*",t.DIVIDE="/",t.DOT=".",t.COMMA=",",t.ASSIGN=":",t.SPACE=" ",t.BLANK="",t.NEWLINE="\n",t.TAB="\t",t.LINEFEED="\f",t.RETURN="\r",t.OPEN_PAREN="(",t.CLOSE_PAREN=")",t.WRAP="",t.TOKEN="Token",t.INDEXED_REFERENCE="INDEXED_REF",t.KEY_VALUE_PAIR="KEY_VALUE_PAIR",t.RATIONAL="RAT",t.SCOPE="SCP",t.EXPRESSION="EXP",t.COLLECTION="COL",t.VECTOR="VEC",t.MATRIX="MAT",t.EQUATION="EQN",t.POLYNOMIAL="POL",t.TERM="TRM",t.GFPOLY="GFP",t.SET="SET",t.SOLUTIONS_SET="SOL",t.DICTIONARY="DIC",t.ASSUMPTION="ASSUMPTION",t.dataTypes={[t.TOKEN]:"Token",[t.INDEXED_REFERENCE]:"IndexedReference",[t.KEY_VALUE_PAIR]:"KeyValuePair",[t.RATIONAL]:"Rational",[t.SCOPE]:"Scope",[t.EXPRESSION]:"Expression",[t.COLLECTION]:"Collection",[t.VECTOR]:"Vector",[t.MATRIX]:"Matrix",[t.EQUATION]:"Equation",[t.POLYNOMIAL]:"Polynomial",[t.TERM]:"Term",[t.GFPOLY]:"GFPolynomial",[t.SET]:"ValuesSet",[t.SOLUTIONS_SET]:"SolutionSet",[t.DICTIONARY]:"Dictionary",[t.ASSUMPTION]:"Assumption"},t.EXPRESSION_TYPES={NUM:6,VAR:2,EXP:1,FUN:3,GRP:4,PRD:7,SUM:5,INF:8,VEC:9,MAT:10},t.RANK={[t.EXPRESSION_TYPES.NUM]:1,[t.EXPRESSION_TYPES.VAR]:2,[t.EXPRESSION_TYPES.EXP]:3,[t.EXPRESSION_TYPES.FUN]:4,[t.EXPRESSION_TYPES.GRP]:5,[t.EXPRESSION_TYPES.PRD]:6,[t.EXPRESSION_TYPES.SUM]:7,[t.EXPRESSION_TYPES.INF]:8},t.E="e",t.PI_NAME="pi",t.PI_SYMBOL="π",t.DEFAULT_IMAGINARY="i",t.INDEX_VARIABLE="_n",t.ALL_SYMBOL="all",t.ALIASES={[t.PI_SYMBOL]:t.PI_NAME,"∞":"Inf"},t.PI=[t.PI_NAME,t.PI_SYMBOL],t.INFINITY=["Inf","Infinity","∞"],t.PARSER_CONSTANTS={[t.PI_NAME]:()=>r.default.acos(-1).toString(),[t.PI_SYMBOL]:()=>r.default.acos(-1).toString(),[t.E]:()=>r.default.exp(1).toString()},t.SYMBOLIC_ACCESSOR="__accessor__",t.FACTORIAL="fact",t.DOUBLE_FACTORIAL="dfact",t.FIB="fib",t.SQRT="sqrt",t.ABS="abs",t.MOD="mod",t.GAMMA="gamma",t.DIRAC="delta",t.HEAVISIDE="heaviside",t.LOG="log",t.SGN="sign",t.CSGN="csgn",t.CBRT="cbrt",t.CEIL="ceil",t.CHI="Chi",t.CI="Ci",t.CONJUGATE="conjugate",t.CONTAINS="contains",t.CONTENT="content",t.COUNT="count",t.CROSS="cross",t.DEFINT="defint",t.DEG="deg",t.DIFF="diff",t.DOT_PRODUCT="dot",t.EI="Ei",t.ERF="erf",t.FACTOR="factor",t.PFACTOR="pfactor",t.PFACTORD="pfactord",t.FLOOR="floor",t.FRESNEL_C="C",t.FRESNEL_S="S",t.GCD="gcd",t.ILAPLACE="ilaplace",t.IMAGPART="imagpart",t.IMATRIX="imatrix",t.INTEGRATE="integrate",t.ISPRIME="isprime",t.LAPLACE="laplace",t.LI="Li",t.LIMIT="limit",t.LN="ln",t.MAX="max",t.MIN="min",t.NTHROOT="nthroot",t.PRODUCT_FUNCTION="product",t.REALPART="realpart",t.ROUND="round",t.SIZE="size",t.TRUNC="trunc",t.SHI="Shi",t.SI="Si",t.SINC="sinc",t.SUM_FUNCTION="sum",t.TRIG_FUNCTION_NAMES={COS:"cos",SIN:"sin",TAN:"tan",SEC:"sec",CSC:"csc",COT:"cot",ACOS:"acos",ASIN:"asin",ATAN:"atan",ASEC:"asec",ACSC:"acsc",ACOT:"acot",ATAN2:"atan2",SINH:"sinh",COSH:"cosh",TANH:"tanh",SECH:"sech",CSCH:"csch",COTH:"coth",ACOSH:"acosh",ASINH:"asinh",ATANH:"atanh",ASECH:"asech",ACSCH:"acsch",ACOTH:"acoth"},t.COS=t.TRIG_FUNCTION_NAMES.COS,t.SIN=t.TRIG_FUNCTION_NAMES.SIN,t.TAN=t.TRIG_FUNCTION_NAMES.TAN,t.ASIN=t.TRIG_FUNCTION_NAMES.ASIN,t.ACOS=t.TRIG_FUNCTION_NAMES.ACOS,t.SEC=t.TRIG_FUNCTION_NAMES.SEC,t.CSC=t.TRIG_FUNCTION_NAMES.CSC,t.COT=t.TRIG_FUNCTION_NAMES.COT,t.ATAN=t.TRIG_FUNCTION_NAMES.ATAN,t.ASEC=t.TRIG_FUNCTION_NAMES.ASEC,t.ACSC=t.TRIG_FUNCTION_NAMES.ACSC,t.ACOT=t.TRIG_FUNCTION_NAMES.ACOT,t.ATAN2=t.TRIG_FUNCTION_NAMES.ATAN2,t.SINH=t.TRIG_FUNCTION_NAMES.SINH,t.COSH=t.TRIG_FUNCTION_NAMES.COSH,t.TANH=t.TRIG_FUNCTION_NAMES.TANH,t.SECH=t.TRIG_FUNCTION_NAMES.SECH,t.CSCH=t.TRIG_FUNCTION_NAMES.CSCH,t.COTH=t.TRIG_FUNCTION_NAMES.COTH,t.ACOSH=t.TRIG_FUNCTION_NAMES.ACOSH,t.ASINH=t.TRIG_FUNCTION_NAMES.ASINH,t.ATANH=t.TRIG_FUNCTION_NAMES.ATANH,t.ASECH=t.TRIG_FUNCTION_NAMES.ASECH,t.ACSCH=t.TRIG_FUNCTION_NAMES.ACSCH,t.ACOTH=t.TRIG_FUNCTION_NAMES.ACOTH,t.TRIG=[t.COS,t.SIN,t.TAN,t.SEC,t.CSC,t.COT],t.INVERSE_TRIG=[t.ACOS,t.ASIN,t.ATAN,t.ASEC,t.ACSC,t.ACOT],t.HYPERBOLIC_TRIG=[t.COSH,t.SINH,t.TANH,t.SECH,t.CSCH,t.COTH],t.INVERSE_HYPERBOLIC_TRIG=[t.ACOSH,t.ASINH,t.ATANH,t.ASECH,t.ACSCH,t.ACOTH]},567(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NullSignal=t.ContinueSignal=t.BreakSignal=t.ReturnSignal=t.ControlFlowSignal=t.NULL_SIGNAL=t.CONTINUE_SIGNAL=t.BREAK_SIGNAL=t.RETURN_SIGNAL=void 0;const i=n(6441);t.RETURN_SIGNAL="RETURN_SIGNAL",t.BREAK_SIGNAL="BREAK_SIGNAL",t.CONTINUE_SIGNAL="CONTINUE_SIGNAL",t.NULL_SIGNAL="NULL_SIGNAL";class ControlFlowSignal extends Error{constructor(){super(),this.name=new.target.name}}t.ControlFlowSignal=ControlFlowSignal;t.ReturnSignal=class ReturnSignal extends ControlFlowSignal{value;dataType=t.RETURN_SIGNAL;constructor(e){super(),this.value=e}static isReturnSignal(e){return(0,i.isNerdamerNativeType)(e,t.RETURN_SIGNAL)}};t.BreakSignal=class BreakSignal extends ControlFlowSignal{dataType=t.BREAK_SIGNAL;static isBreakSignal(e){return(0,i.isNerdamerNativeType)(e,t.BREAK_SIGNAL)}};t.ContinueSignal=class ContinueSignal extends ControlFlowSignal{dataType=t.CONTINUE_SIGNAL;static isContinueSignal(e){return(0,i.isNerdamerNativeType)(e,t.CONTINUE_SIGNAL)}};t.NullSignal=class NullSignal extends ControlFlowSignal{dataType=t.NULL_SIGNAL;static isNullSignal(e){return(0,i.isNerdamerNativeType)(e,t.NULL_SIGNAL)}}},7056(e,t,n){"use strict";t._=function _(e){return r.Expression.create(e)};const i=n(5817);const r=n(296),s=n(238)},6255(e,t,n){"use strict";t.add=add,t.addPrefix=function addPrefix(e){return e};const i=n(4703),r=n(5817),s=n(296),o=n(8300),{NUM:a,VAR:l,EXP:u,FUN:c,GRP:m,PRD:p,SUM:g,INF:d}=o.EXPRESSION_TYPES;function add(e,t){let n;if(r.Settings.DEFER_SIMPLIFICATION)n=join(e,t,!1),n.deferred=!0;else{const r=e.keyValue(),a=t.keyValue();s.Expression.DISTRIBUTE_MULTIPLIER&&(e.isSum()&&!e.getMultiplier().isOne()&&e.isLinear()&&(e=e.distributeMultiplier()),t.isSum()&&!t.getMultiplier().isOne()&&t.isLinear()&&(t=t.distributeMultiplier()));const l=!e.isNUM()&&r===a;if(e.isNUM()&&t.isNUM())n=s.Expression.fromRational(e.getMultiplier().plus(t.getMultiplier()));else if(e.isComplex()&&t.isComplex()){const i=e.realPart().plus(t.realPart()),r=e.imagPart().plus(t.imagPart()).times(s.Expression.Img());n=i.isZero()?r:r.isZero()?i:join(i,r)}else if(e.isZero())n=t.copy();else if(e.value===t.value&&e.type===t.type&&e.getPower().eq(t.getPower()))if(e.isInf()){const r=e.getMultiplier(),o=t.getMultiplier();if(r.isNegative()&&!o.isNegative()||o.isNegative()&&!r.isNegative())throw new i.UndefinedError((0,i.message)("infinityMinusInfinityUndefined"));n=e.isNegInf()?s.Expression.NegInf():s.Expression.Inf()}else{const i=e.getMultiplier().plus(t.getMultiplier());i.isZero()?n=s.Expression.Number("0"):e.isSum()&&t.isSum()&&e.isLinear()&&t.isLinear()?n=join(e,t):(n=e.copy(),n.multiplier=i)}else if(l)n=join(e,t,l);else if(e.isInf()&&t.isInf()){const n=e.getMultiplier(),r=t.getMultiplier();if(n.isNegative()&&!r.isNegative()||r.isNegative()&&!n.isNegative())throw new i.UndefinedError((0,i.message)("infinityMinusInfinityUndefined"))}else o.RANK[e.type]>o.RANK[t.type]&&(n=add(t,e));n=n||join(e,t,l)}return n}function canJoin(e,t){return(e.type===g||e.type===m&&e.keyValue()===t.keyValue())&&e.isLinear()&&(!e.multiplier||e.multiplier&&e.getMultiplier().isOne())}function join(e,t,n=!1){let i,r=[];const o=n?m:g;let a=canJoin(e,t),l=canJoin(t,e);if(a&&!l&&([t,e]=[e,t],[l,a]=[a,l]),l)if(!a&&l){i=t.copy();const s=i.getElements();let o=!0,a=e.keyValue(o,!1);if(a in s||(o=!1,a=e.keyValue(o,n)),a in s){const t=add(e,s[a]);t.isZero()?delete s[a]:s[a]=t}else s[a]=e.copy();r=Object.values(s)}else{i=e.copy(),i.multiplier=e.getMultiplier().times(t.getMultiplier());const n=i.getElements(),s=t.getElements();for(const e in s){const t=s[e];if(e in n){const i=add(t,n[e]);i.isZero()?delete n[e]:n[e]=i}else n[e]=t.copy()}r=Object.values(n)}else{let o=!1,a=e.keyValue(o,n),l=t.keyValue(o,n);a===l&&(o=!0,n=!1,a=e.keyValue(o,n),l=t.keyValue(o,n)),i=s.Expression.Number("1"),i.elements={},i.elements[a]=e.copy(),i.elements[l]=t.copy(),r=[e,t]}if((i.isSum()||i.isProduct())&&1===r.length){const e=r[0];(i.multiplier||e.multiplier)&&(e.multiplier=e.getMultiplier().times(i.getMultiplier())),i=e}else 0===r.length?i=s.Expression.Number("0"):(i.type=o,i.updateValue(r));return i}},4091(e,t){"use strict";t.comma=function comma(e,t){return[e,t]}},619(e,t,n){"use strict";t.equal=equal,t.gt=gt,t.gte=function gte(e,t){if(e=o.Expression.create(e),t=o.Expression.create(t),e.isComplex()||t.isComplex())throw new i.UnsupportedOperationError((0,i.message)("unsupportedOperation"));const n=e.isPlainVariable()&&t.isPlainVariable()&&e.value===t.value,r=(0,s.getAssumptionFor)(e),a=(0,s.getAssumptionFor)(t);let l,u;if(n)u=!0;else if(r&&a?l=r.gte(a):r?l=r.gte(t):a&&(l=a.lte(e)),void 0!==l)u=l;else{const n=(0,s.hasAssumptions)()?compareAffineExpressions(e,t,"gte"):void 0;u=void 0===n?gt(e,t)||equal(e,t):n}return u},t.lt=lt,t.lte=function lte(e,t){if(e=o.Expression.create(e),t=o.Expression.create(t),e.isComplex()||t.isComplex())throw new i.UnsupportedOperationError((0,i.message)("unsupportedOperation"));const n=e.isPlainVariable()&&t.isPlainVariable()&&e.value===t.value,r=(0,s.getAssumptionFor)(e),a=(0,s.getAssumptionFor)(t);let l,u;if(n)u=!0;else if(r&&a?l=r.lte(a):r?l=r.lte(t):a&&(l=a.gte(e)),void 0!==l)u=l;else{const n=(0,s.hasAssumptions)()?compareAffineExpressions(e,t,"lte"):void 0;u=void 0===n?lt(e,t)||equal(e,t):n}return u};const i=n(4703),r=n(5523),s=n(6351),o=n(296),a=n(6498),l=n(6910);var u=n(6351);function getAffineForm(e){let t;if(!e.isComplex()&&e.getPower().isOne())if(e.isVAR())(0,s.getAssumptionFor)(e.value)&&(t={coefficient:o.Expression.fromRational(e.getMultiplier()),constant:o.Expression.Number(0),symbol:e.value});else if(e.isSum()){const n=e.elementsArray();let i,r=!0;for(const e of n)if(!e.isNUM()){if(!e.isVAR()||!e.getPower().isOne()){r=!1;break}if(void 0===i){if(i=e.value,!(0,s.getAssumptionFor)(i)){r=!1;break}}else if(i!==e.value){r=!1;break}}if(r&&void 0!==i){let e=o.Expression.Number(0),r=o.Expression.Number(0);for(const t of n)t.isNUM()?r=r.plus(t):e=e.plus(o.Expression.fromRational(t.getMultiplier()));e.isZero()||(t={coefficient:e,constant:r,symbol:i})}}return t}function compareAffineToValue(e,t,n){const i=getAffineForm(e);let r;if(i){const e=(0,s.getAssumptionFor)(i.symbol);if(e){const s=t.minus(i.constant).div(i.coefficient);let o=n;i.coefficient.getMultiplier().isNegative()&&(o="gt"===n?"lt":"gte"===n?"lte":"lt"===n?"gt":"gte"),r=e[o](s)}}return r}function compareAffineExpressions(e,t,n){let i;const r=e.isSum()||e.isVAR()&&!e.isPlainVariable(),s=t.isSum()||t.isVAR()&&!t.isPlainVariable();if(r&&t.isNUM())i=compareAffineToValue(e,t,n);else if(e.isNUM()&&s){let r;r="gt"===n?"lt":"gte"===n?"lte":"lt"===n?"gt":"gte",i=compareAffineToValue(t,e,r)}return i}function getProvenSign(e){let t;if(!e.isComplex())if(e.isNUM())t=e.getMultiplier().sign();else{const n=e.getMultiplier().sign(),i=e.getPower();if(0===n)t=0;else if(!i.isOne()&&i.isNUM()){const r=getProvenSign(e.toLinearAndUnitMultiplier());let s;1===r?s=1:-1===r&&i.isInteger()?s=i.isEven()?1:-1:0===r&&i.getMultiplier().gt("0")&&(s=0),void 0!==s&&(t=n*s)}else if(e.isProduct()){let i=n,r=!0;for(const t of e.elementsArray()){const e=getProvenSign(t);if(void 0===e){r=!1;break}if(i*=e,0===i)break}r&&(t=i)}if(void 0===t&&i.isOne()){const i=e.toLinearAndUnitMultiplier(),r=(0,s.getAssumptionFor)(i);if(r){const e=o.Expression.Number(0);let i;!0===r.gt(e)?i=1:!0===r.lt(e)?i=-1:!0===r.eq(e)&&(i=0),void 0!==i&&(t=n*i)}else e.isSum()&&(0,s.hasAssumptions)()&&(t=function getAffineSign(e){const t=getAffineForm(e);let n;if(t){const e=(0,s.getAssumptionFor)(t.symbol);if(e){const i=t.constant.neg().div(t.coefficient),r=t.coefficient.getMultiplier().isNegative(),s=r?e.lt(i):e.gt(i),o=r?e.gt(i):e.lt(i);!0===s?n=1:!0===o?n=-1:!0===e.eq(i)&&(n=0)}}return n}(e))}}return t}function equal(e,t){e=o.Expression.create(e),t=o.Expression.create(t);const n=e.isPlainVariable()&&t.isPlainVariable()&&e.value===t.value,i=(0,s.getAssumptionFor)(e),u=(0,s.getAssumptionFor)(t);let c,m;if(e.isComplex()&&t.isComplex()){const n=e.realPart(),i=e.imagPart(),r=t.realPart(),s=t.imagPart();if(n.isNUM()&&i.isNUM()&&r.isNUM()&&s.isNUM())return n.getMultiplier().eq(r.getMultiplier())&&i.getMultiplier().eq(s.getMultiplier())}if(n)m=!0;else if(i&&u?c=i.eq(u):i?c=i.eq(t):u&&(c=u.eq(e)),void 0!==c)m=c;else{let n;e.isNUM()&&t.isNUM()?n=(0,l.subtract)(e,t):(e=(0,a.canonicalizeRadicals)(e),t=(0,a.canonicalizeRadicals)(t),n=(0,r.toCommonDenominator)((0,l.subtract)(e,t).expand()).expand()),m=n.isNUM()&&n.getMultiplier().eq("0")}return m}function gt(e,t){if(e=o.Expression.create(e),t=o.Expression.create(t),e.isComplex()||t.isComplex())throw new i.UnsupportedOperationError((0,i.message)("unsupportedOperation"));const n=(0,s.getAssumptionFor)(e),r=(0,s.getAssumptionFor)(t);let a,u;if(n&&r?a=n.gt(r):n?a=n.gt(t):r&&(a=r.lt(e)),void 0!==a)u=a;else{let n;if(t.isZero())n=getProvenSign(e);else if(e.isZero()){const e=getProvenSign(t);void 0!==e&&(n=-e)}if(void 0!==n)u=n>0;else{const n=!(0,s.hasAssumptions)()||e.isZero()||t.isZero()?void 0:compareAffineExpressions(e,t,"gt");if(void 0!==n)u=n;else{const n=(0,l.subtract)(e.evaluate(),t.evaluate()).expand();u=n.isNUM()&&n.getMultiplier().gt("0")}}}return u}function lt(e,t){if(e=o.Expression.create(e),t=o.Expression.create(t),e.isComplex()||t.isComplex())throw new i.UnsupportedOperationError((0,i.message)("unsupportedOperation"));const n=(0,s.getAssumptionFor)(e),r=(0,s.getAssumptionFor)(t);let a,u;if(n&&r?a=n.lt(r):n?a=n.lt(t):r&&(a=r.gt(e)),void 0!==a)u=a;else{let n;if(t.isZero())n=getProvenSign(e);else if(e.isZero()){const e=getProvenSign(t);void 0!==e&&(n=-e)}if(void 0!==n)u=n<0;else{const n=!(0,s.hasAssumptions)()||e.isZero()||t.isZero()?void 0:compareAffineExpressions(e,t,"lt");if(void 0!==n)u=n;else{const n=(0,l.subtract)(e.evaluate(),t.evaluate()).expand();u=n.isNUM()&&n.getMultiplier().lt("0")}}}return u}},3171(e,t,n){"use strict";t.divide=function divide(e,t){let n;if(r.Settings.DEFER_SIMPLIFICATION)t.isNUM()&&(t.power=(0,o.one)()),n=div(e,t),n.deferred=!0;else{if(t.isZero())throw new i.DivisionByZeroError((0,i.message)("divisionByZero"));if(e.isZero()&&!t.isInf())n=s.Expression.Number("0");else if(e.isNUM()&&t.isNUM())n=s.Expression.fromRational(e.getMultiplier().div(t.getMultiplier()));else if(t.isNUM()){n=e.copy();const i=e.getMultiplier().div(t.getMultiplier());n.multiplier=i}else{if(e.isComplex()||t.isComplex()){const n=e.realPart(),i=t.realPart(),r=e.imagPart(),o=t.imagPart(),a=i.sq().plus(o.sq()),l=n.times(i).plus(r.times(o)).div(a),u=r.times(i).minus(n.times(o)).div(a).times(s.Expression.Img());return l.plus(u)}t.isInf()&&!e.isZero()?t.getMultiplier().isNegative()||e.isInf()||(n=s.Expression.Number("0")):(n=div(e,t),n.isEXP()&&n.hasRadical()&&(n=(0,l.rationalizeRadical)(n)))}if(!n)throw new i.UndefinedError((0,i.message)("undefinedDivision",{type:`${e}/${t}`}))}return n};const i=n(4703),r=n(5817),s=n(296),o=n(6099),a=n(6498),l=n(3957);function div(e,t){return(t=t.copy()).power=t.getPower().neg(),t.multiplier=t.getMultiplier().invert(),(0,a.multiply)(e,t)}},8801(e,t,n){"use strict";t._=void 0,t.callFunction=callFunction,t.route=function route(e,t,n){let i;if("assign"===n)i=(0,v.assign)(e,t);else if("comma"===n)i=(0,b.comma)(e,t);else if("in"===n)i=callFunction("contains",[t,e]);else if(function isRoutedOperation(e){return"pow"===e||"times"===e||"div"===e||"minus"===e||"plus"===e||"eq"===e||"lt"===e||"lte"===e||"gt"===e||"gte"===e}(n))if(m.Equation.isEquation(e)||m.Equation.isEquation(t))if(m.Equation.isEquation(e)&&m.Equation.isEquation(t)){if(!["eq","lt","lte","gt","gte"].includes(n))throw new o.UnsupportedOperationError((0,o.message)("unsupportedOperation"));i=dispatchDynamicOperation(e,t,n)}else if(m.Equation.isEquation(e)){if(!["plus","minus","times","div"].includes(n))throw new o.UnsupportedOperationError((0,o.message)("unsupportedOperation"));i=dispatchDynamicOperation(e,t,n)}else{if("plus"!==n&&"times"!==n)throw new o.UnsupportedOperationError((0,o.message)("unsupportedOperation"));i=dispatchDynamicOperation(e,t,n)}else if((0,r.isEnumerable)(e))i=routeOperation(e,t,n);else if(!h.Vector.isVector(t)&&!d.Matrix.isMatrix(t)||"minus"!==n&&"div"!==n&&"pow"!==n)i=(0,r.isEnumerable)(t)?routeOperation(t,e,n):dispatchDynamicOperation(e,t,n);else{if(!p.Expression.isExpression(e))throw new o.UnsupportedOperationError((0,o.message)("unsupportedOperation"));if(d.Matrix.isMatrix(t)&&"pow"===n)throw new o.UnsupportedOperationError((0,o.message)("unsupportedOperation"));i=distribute(t=>{let i;if(p.Expression.isExpression(t))i="minus"===n?(0,M.subtract)(e,t):"div"===n?(0,P.divide)(e,t):(0,N.power)(e,t);else{const r=route(e,t,n);if(Array.isArray(r))throw new o.UnsupportedOperationError((0,o.message)("unsupportedOperation"));i=r}return i},t)}else i=dispatchDynamicOperation(e,t,n);return i};const i=n(8533),r=n(4861),s=n(9426),o=n(4703),a=n(3148),l=n(5817),u=n(2332),c=n(6284),m=n(6184),p=n(296),g=n(1897),d=n(4462),h=n(3982),x=n(8300),E=n(294),y=n(266),v=n(2707),w=n(6255),b=n(4091),P=n(3171),A=n(6498),N=n(3957),M=n(6910);function invokeMathFunction(e,t){return e(...t)}function callFunction(e,t){1===t.length&&void 0===t[0]&&(t=[]);const n=s.mathFunctionRegistry[e];if(void 0===n)throw new o.ParserError((0,o.message)("unsupportedFunction",{function:e}));const{fn:i,minArgs:r,maxArgs:a,maxPrecision:u,equationArgs:c,distElWise:g,deferArguments:x,returnBoundary:y}=n;if(r>-1&&t.length<r)throw new o.ParserError((0,o.message)("functionMinArgs",{function:e,min:String(r),actual:String(t.length)}));if(a>-1&&t.length>a)throw new o.ParserError((0,o.message)("functionMaxArgs",{function:e,max:String(a),actual:String(t.length)}));let v;if(x){const invoke=()=>invokeMathFunction(i,t);v=y?(0,E.parserReturnBoundary)(invoke):invoke()}else{const r=[];for(const e of t){if("function"==typeof e)throw new o.ParserError((0,o.message)("malformedExpression"));r.push(e)}const s=r.map(e=>p.Expression.fromSymbolicAccess(e)??e);if("system"===n.level)for(let e=0;e<s.length;e++)if(m.Equation.isEquation(s[e])&&!c?.includes(e))throw new o.UnexpectedDataType((0,o.message)("expressionExpected",{type:"Equation"}));const a=g?s.filter(e=>h.Vector.isVector(e)||d.Matrix.isMatrix(e)):[];if(a.length>0){const t=a[0];for(const n of a){let i;if(i=h.Vector.isVector(t)?h.Vector.isVector(n)&&t.count()===n.count():d.Matrix.isMatrix(n)&&t.dimensionsMatch(n),!i)throw new o.DimensionError((0,o.message)("mismatchedDimensions",{function:e}))}v=distribute((t,n,i)=>{const r=s.map(e=>{let t=e;return h.Vector.isVector(e)?t=e.__get__([n]):d.Matrix.isMatrix(e)&&(t=e.get(n,i)),t});return callFunction(e,r)},t)}else v=!i||l.Settings.DEFER_SIMPLIFICATION?p.Expression.toFunction(e,s):invokeMathFunction(i,s);v||(v=p.Expression.toFunction(e,s))}return u&&(v.precision=u),v}function distribute(e,t){let n;return n=h.Vector.isVector(t)?t.copy().each((t,n)=>e(t,n)):t.copy().each((t,n,i)=>{const r=e(t,Number(n),Number(i));if(!p.Expression.isExpression(r))throw new o.UnexpectedDataType((0,o.message)("expressionExpected",{type:x.dataTypes[r.dataType]}));return r}),n}function setEqual(e,t){if(!p.Expression.isExpression(e)&&!p.Expression.isExpression(t))throw new o.UnsupportedOperationError((0,o.message)("unsupportedOperation"));return new m.Equation(e,t)}function functionAssign(e,t){if(!c.Collection.isCollection(e))throw new o.UnexpectedInputError((0,o.message)("invalidFunctionDeclaration",{declaration:e.text()}));const n=[...e.getElements()],i=n.pop();if(!p.Expression.isExpression(i))throw new o.UnexpectedInputError((0,o.message)("invalidFunctionDeclaration",{declaration:e.text()}));const r=(0,g.assertPlainVariableAndGetString)(i),s=n.map(e=>{if(!p.Expression.isExpression(e))throw new o.UnexpectedInputError((0,o.message)("plainVariableExpected",{input:e.text()}));return(0,g.assertPlainVariableAndGetString)(e)});return(0,a.setFunction)({type:"symbolic",name:r,minArgs:s.length,maxArgs:s.length,fn:(0,y.wrappedFunction)(t,s)}),p.Expression.toFunction(r,s.map(e=>p.Expression.Variable(e)))}function routeOperation(e,t,n){const i=e[n](t);return"boolean"==typeof i?p.Expression.create(Number(i)):i}function dispatchDynamicOperation(e,t,n){const i=e.isEnumerable||m.Equation.isEquation(e),r=i?e:t,s=i?t:e,a=r[n];if(!a)throw new o.UnsupportedOperationError((0,o.message)("unsupportedOperation"));const l=a.call(r,s);return"boolean"==typeof l?p.Expression.create(Number(l)):l}t._={plus:w.add,minus:M.subtract,times:A.multiply,div:P.divide,pow:N.power,mod:function modulo(e,t){if(!p.Expression.isExpression(e)||!p.Expression.isExpression(t))throw new o.UnsupportedOperationError((0,o.message)("unsupportedOperation"));return e.mod(t)},percent:function percentage(e){if(!p.Expression.isExpression(e))throw new o.UnsupportedOperationError((0,o.message)("unsupportedOperation"));return e.div(100)},assertEQ:u.assertEQ,assertGT:u.assertGT,assertGTE:u.assertGTE,assertLT:u.assertLT,assertLTE:u.assertLTE,comma:b.comma,assign:v.assign,functionAssign,setEqual,lt:function lt(e,t){return p.Expression.create(Number(e.lt(t)))},lte:function lte(e,t){return p.Expression.create(Number(e.lte(t)))},eq:function eq(e,t){return p.Expression.create(Number(e.eq(t)))},gt:function gt(e,t){return p.Expression.create(Number(e.gt(t)))},gte:function gte(e,t){return p.Expression.create(Number(e.gte(t)))},minusPrefix:M.subtractPrefix,plusPrefix:w.addPrefix,factorial:i.factorial,doubleFactorial:i.doubleFactorial}},6498(e,t,n){"use strict";t.multiply=multiply,t.merge=merge,t.canonicalizeRadicals=function canonicalizeRadicals(e){let t;if(e.isEXP()&&e.isConstant()&&e.hasRadical())t=(0,u.rationalizeRadical)(e,!0);else if(e.isFunction()){const n=e.getArguments().map(e=>canonicalizeRadicals(e));let i=o.Expression.toFunction(e.name,n);i.multiplier=e.multiplier,i=o.Expression.setPower(i,e.getPower()),t=i}else if(e.isProduct()){let t=o.Expression.fromRational(e.getMultiplier());e.each(e=>{t=t.times(canonicalizeRadicals(e))})}else if(e.isSum()&&e.isLinear()){let t=(0,a.zero)();e.each(e=>{t=t.plus(canonicalizeRadicals(e))})}else if(e.isEXP()){const t=canonicalizeRadicals(e.getBase()),n=canonicalizeRadicals(e.getPower());t.pow(n).multiplier=e.multiplier}return t??e};const i=n(4703),r=n(4600),s=n(5817),o=n(296),a=n(6099),l=n(8300),u=n(3957);function multiply(e,t){let n;if(s.Settings.DEFER_SIMPLIFICATION)n=merge(o.Expression.toFunction(l.WRAP,[e]),o.Expression.toFunction(l.WRAP,[t])),n.deferred=!0;else{if(e.isZero()){if(t.isInf())throw new i.UndefinedError((0,i.message)("infinityTimesZero"));n=o.Expression.Number("0")}else if(e.isNUM()&&t.isNUM())n=o.Expression.fromRational(e.getMultiplier().times(t.getMultiplier()));else if(e.isComplex()&&t.isComplex()&&e.isSum()&&t.isSum()){const i=e.realPart(),r=t.realPart(),s=e.imagPart(),a=t.imagPart();n=i.times(r).minus(s.times(a)).plus(i.times(a).plus(s.times(r)).times(o.Expression.Img()))}else if(e.isNUM()&&!t.isInf())n=t.copy(),n.multiplier=e.getMultiplier().times(t.getMultiplier());else if((e.isInf()||e.isNUM())&&t.isInf()){if(n=o.Expression.Inf(),e.getMultiplier().times(t.getMultiplier()).isNegative())n=n.neg();else if(e.isZero()||t.isZero())throw new i.UndefinedError((0,i.message)("infinityTimesZero"))}else if(e.value===t.value){n=e.copy(),n.multiplier=n.getMultiplier().times(t.getMultiplier());const i=e.getPower().plus(t.getPower());n=i.isZero()?o.Expression.fromRational(n.getMultiplier()):o.Expression.setPower(n,i);const s=n.getPower();n.isI()?n=(0,r.simplifyImaginary)(n):n.isFunction(l.ABS)&&s.isEven()&&(n=n.getArguments()[0].pow(s).times(n.getMultiplier()))}else l.RANK[e.type]>l.RANK[t.type]&&(n=multiply(t,e));n=n||merge(e,t),n.isEXP()&&n.isLinear()&&(n=n.getBase().times(n.getMultiplier())),s.Settings.EVALUATE&&(n=n.distributeMultiplier())}return n}function combine(e,t,n,i){const r=o.Expression.Number("1");return r.elements={},r.elements[n]=e.copy(),r.elements[i]=t.copy(),[r,[e,t]]}function canMerge(e){return e.isProduct()&&e.isLinear()}function merge(e,t){let n,i=[];const r=o.Expression.TYPES.PRD;let s=canMerge(e),l=canMerge(t),c=!0;const m=void 0!==e.multiplier,p=void 0!==t.multiplier;let g=m||p?e.getMultiplier().times(t.getMultiplier()):void 0;if(g&&(m&&((e=e.copy()).multiplier=void 0),p&&((t=t.copy()).multiplier=void 0)),e.elements&&!t.elements&&([t,e]=[e,t],[l,s]=[s,l]),l)if(!s&&l){const r=e.keyValue();n=t.copy();const s=n.getElements();let o;if(r in s)o=multiply(e,s[r]);else{let t;for(const e in s)if(s[e].isProduct()){t=s[e],delete s[e];break}o=t?multiply(e,t):e.copy()}o.isNUM()?(o.isOne()||(g=g?.times(o.getMultiplier())),delete s[r]):s[r]=o,i=Object.values(s)}else{n=e.copy(),n.multiplier=e.getMultiplier().times(t.getMultiplier());const s=n.getElements(),a=t.getElements();for(const e in a){const t=a[e];if(e in s){const n=multiply(t,s[e]);r===o.Expression.TYPES.PRD&&n.isOne()?delete s[e]:s[e]=n}else s[e]=t.copy()}i=Object.values(s)}else{const r=e.type===o.Expression.TYPES.GRP?e.value:e.keyValue(),s=t.type===o.Expression.TYPES.GRP?t.value:t.keyValue(),l=e.isProduct()&&e.isLinear();if(l&&t.isProduct()&&t.getPower().isMinusOne()){let r=e,s=(0,a.one)();const o=e.getElements(),l=t.getElements();for(const e in l){const t=l[e];e in o?r=multiply(r,(0,u.power)(t,(0,a.minusOne)())):s=multiply(s,t)}[n,i]=combine(r,multiply((0,u.power)(s,(0,a.minusOne)()),e.getMultiplier(!0)),e.keyValue(),t.keyValue())}else if(l&&e.getElements()[s])n=function transfer(e,t,n){let i=e.getMultiplier(!0);const r=e.getElements();for(const e in r)e!==n&&(i=multiply(i,r[e]));const s=multiply(r[n],t);return multiply(i,s)}(e,t,s),c=!1;else{const o=e.getPower(),a=t.getPower();if(-1===o.sign()&&-1===a.sign()){n=multiply(e.invert(),t.invert()),n=n.invert(),i=Object.values(n.getElements())}else[n,i]=combine(e,t,r,s)}}if(c&&(n.type=r,n.updateValue(i)),g&&!g.isOne()&&(n.multiplier=g),n.isProduct()&&1===Object.keys(n.getElements()).length){const e=Object.values(n.getElements())[0];e.multiplier=e.getMultiplier().times(n.getMultiplier()),n=e}return n}},3957(e,t,n){"use strict";t.power=power,t.sqrtToPow=function sqrtToPow(e){let t;if(e.isFunction(h.SQRT)){t=e.getArguments()[0].copy();t=setPower(t,e.getPower().div((0,g.two)())),t.multiplier=e.getMultiplier().copy()}else t=e.copy();return t},t.rationalizeRadical=rationalizeRadical;const i=n(8533),r=n(1649),s=n(4703),o=n(551),a=n(551),l=n(982),u=n(4600),c=n(4600),m=n(5817),p=n(296),g=n(6099),d=n(1897),h=n(8300),x=n(619),E=n(6498),y={[h.COS]:h.SEC,[h.SEC]:h.COS,[h.SIN]:h.CSC,[h.CSC]:h.SIN,[h.TAN]:h.COT,[h.COT]:h.TAN,[h.COSH]:h.SECH,[h.SECH]:h.COSH,[h.SINH]:h.CSCH,[h.CSCH]:h.SINH,[h.TANH]:h.COTH,[h.COTH]:h.TANH};function power(e,t){let n;if(e.isZero()&&t.isZero())throw new s.ZeroToZeroPowerError((0,s.message)("zeroToZeroPower"));if(m.Settings.DEFER_SIMPLIFICATION)n=e.copy(),n=p.Expression.toEXP(n,t.copy()),n.deferred=!0;else{if(e.isI()&&t.isInteger())n=(0,u.simplifyImaginary)(setPower(e,t));else if(e.isE()&&t.isComplex()){const i=t.copy(),r=i.getMultiplier();if(delete i.multiplier,(0,x.equal)(i,`${p.Expression.imaginary}*${h.PI[0]}`))if(r.isInteger()){const t=p.Expression.Number(r.evenNumerator()?"1":"-1");n=(0,E.multiply)(p.Expression.fromRational(e.getMultiplier()),t)}else if("2"===r.denominator.toString()){const t=p.Expression.Number(1n===r.abs().mod("4").numerator?"1":"-1");n=(0,E.multiply)((0,E.multiply)(p.Expression.fromRational(e.getMultiplier()),p.Expression.Img()),t),r.isNegative()&&(n=n.neg())}}else if(m.Settings.EVALUATE){if(e.isFunction()&&t.isMinusOne()&&e.getMultiplier().isOne()&&e.getPower().isOne()&&y[e.name])n=p.Expression.toFunction(y[e.name],e.getArguments());else if(e.isNUM()&&t.isNUM()){const i=-1===e.sign(),s=-1===t.sign();let o=e.abs();const a=t.abs();if(i){let e=a.times(p.Expression.Pi());s&&(o=o.invert(),e=e.neg());const t=p.Expression.Number(o.getMultiplier().toDecimal().pow(a.getMultiplier().toDecimal())),i=(0,r.cos)(e).times(t),l=(0,r.sin)(e).times(t).times(p.Expression.Img());n=i.plus(l)}else n=p.Expression.fromRational(o.getMultiplier().pow(a.getMultiplier())),s&&(n=n.invert())}else if(e.isComplex())if(t.isComplex()){const[s,o]=(0,c.toPolarFormArray)(e),a=(0,u.realPart)(t),l=(0,u.imagPart)(t),m=a.times(o).plus(l.times((0,i.log)(s)));n=power(s,a).times(p.Expression.E().pow(l.neg().times(o))).times((0,r.cos)(m).plus(p.Expression.Img().times((0,r.sin)(m))))}else{const i=e.distributeMultiplier(),[s,o]=(0,c.toPolarFormArray)(i),a=o.times(t),l=s.pow(t);n=l.times((0,r.cos)(a)).plus(l.times(p.Expression.Img().times((0,r.sin)(a))))}else if(t.isComplex()){const s=e.pow(t.realPart()),o=e.pow(t.imagPart());n=s.times((0,r.cos)((0,i.log)(o))).plus(s.times((0,r.sin)((0,i.log)(o))).times(p.Expression.Img()))}}else{const r=t.isInf();if(e.isOne()&&!r)n=(0,g.one)();else if(!e.isZero()||r||t.isZero())if(!t.isZero()||e.isInf()||e.isNUM())if(t.isOne())n=e.copy();else if(e.isInf()||r){const i=e.isInf(),r=t.isInf();if(i&&r)throw new s.UndefinedError((0,s.message)("infinityToInfinity"));if(e.isNUM()){const i=e.getMultiplier();if(i.gt("1")&&t.isPosInf()||e.isPosInf()&&t.isPosInf())n=p.Expression.Inf();else{if(!(i.gt("1")&&t.isNegInf()||i.eq("0")&&t.isPosInf()))throw new s.UndefinedError((0,s.message)("valueToInfinityUndefined",{value:i.lt("0")?`(${e})`:`${e}`}));n=p.Expression.Number("0")}}else if(t.isZero())throw new s.UndefinedError((0,s.message)("infinityToPowerZero"))}else if(e.isProduct()&&(e.isLinear()&&t.isInteger()||e.isConstant()&&!e.isComplex()&&e.sign()>0)){n=p.Expression.fromRational(e.getMultiplier()).pow(t);const i=e.getElements();for(const e in i)n=n.times(i[e].pow(t))}else if(!t.isNUM()||t.isInteger()||e.isNUM()||e.getMultiplier().abs().isOne())if(t.isNUM()&&!t.isInteger()&&e.isProduct()&&e.isLinear()){let i=(0,g.one)(),r=(0,g.one)(),s=!1;for(const n of e.elementsArray())!n.isComplex()&&n.gt(0)?(i=i.times(power(n,t)),s=!0):r=r.times(n);s&&(n=r.isOne()?i:i.times(power(r,t)))}else if(t.isNUM())if(e.isZero())n=p.Expression.Number("0");else if(e.isMinusOne()&&t.isInteger()&&t.isOdd())n=(0,g.one)().neg();else if(t.isZero())n=(0,g.one)();else if(e.isEXP()&&!e.getBase().isNUM()&&t.isInteger()){const i=(0,E.multiply)(e.getPower(),t);i.isOne()?n=e.getBase().times(e.getMultiplier()):(n=e.copy(),n.power=i)}else{const r=t.abs().getMultiplier(),s=r.numerator,a=r.denominator,l=e.getMultiplier().abs(),u=l.numerator**s,c=l.denominator**s;if(u<=m.Settings.MAX_FRAC_INT&&c<=m.Settings.MAX_FRAC_INT){const r=nthPow(u,a),l=nthPow(c,a),m=(0,o.isEven)(s);let x;if(x=-1===t.sign()?l.times(r.invert()):r.times(l.invert()),1n!==a&&!e.isNUM()&&e.getMultiplier().isNegative())n=p.Expression.toEXP(e.copy(),t),n=n.times(x),n=rationalizeRadical(n);else if(1n!==a&&2n!==a&&e.isNUM()&&-1===e.sign())n=p.Expression.toEXP((0,g.minusOne)(),t).times(x);else{if(n=e.toUnitMultiplier(),n.isOne()&&-1===e.sign()&&2n===a)n=n.times(p.Expression.Img()),s%4n==3n&&(n=n.neg()),-1===t.sign()&&(n=n.invert());else if(-1!==e.sign()||m){const e=n.getPower(),r=e.times(t);if(r.isZero())n=(0,g.one)();else if(r.isNUM()){const s=e.getMultiplier().abs(),a=t.isInteger()||e.isOne()||s.lt("1");!t.isInteger()&&e.isInteger()&&e.isEven()&&!(0,d.stripPower)(n).isComplex()?(n=(0,i.abs)((0,d.stripPower)(n)),n=p.Expression.setPower(n,r)):a?n.isEXP()?n=power(n.getBase(),r).times(n.getMultiplier()):(n.isFunction(h.ABS)&&(0,o.isEven)(r.getMultiplier().numerator)&&(n=n.getArguments()[0].times(n.getMultiplier())),n=p.Expression.setPower(n,r)):n=p.Expression.toEXP(n,t)}else n=n.getPower().isNUM()?p.Expression.toEXP(n,r,!0):p.Expression.toEXP(n,t)}else{n=n.neg();const i=t.isInteger();e.isVAR()&&i?n=p.Expression.setPower(n,t):n.isMinusOne()&&i||(n=p.Expression.toEXP(n,t))}n=n.times(x),n=rationalizeRadical(n)}}}else if(e.isInf()||t.isInf()){const i=e.isInf(),r=t.isInf();if(i&&r)throw new s.UndefinedError((0,s.message)("infinityToInfinity"));if(e.isNUM()){const i=e.getMultiplier();if(i.gt("1")&&t.isPosInf()||e.isPosInf()&&t.isPosInf())n=p.Expression.Inf();else{if(!(i.gt("1")&&t.isNegInf()||i.eq("0")&&t.isPosInf()))throw new s.UndefinedError((0,s.message)("valueToInfinityUndefined",{value:i.lt("0")?`(${e})`:`${e}`}));n=p.Expression.Number("0")}}else if(t.isZero())throw new s.UndefinedError((0,s.message)("infinityToPowerZero"))}else{const r=e.getPower(),s=t.times(r);if(r.isNUM()&&!s.isNUM()){const o=e.getMultiplier(),a=r.getMultiplier().abs(),l=(0,d.stripPower)(e.toUnitMultiplier());!o.isNegative()&&r.isInteger()&&r.isEven()&&!l.isComplex()?(n=(0,i.abs)(l),n=p.Expression.toEXP(n,s),o.isOne()||(n=n.times(p.Expression.toEXP(p.Expression.fromRational(o),t)))):o.isNegative()||!r.isOne()&&!a.lt("1")||(n=p.Expression.toEXP(l,s),o.isOne()||(n=n.times(p.Expression.toEXP(p.Expression.fromRational(o),t))))}}else{const i=e.getMultiplier(),r=i.abs();let s=e.toUnitMultiplier();i.isNegative()&&(s=s.neg()),n=power(s,t).times(power(p.Expression.fromRational(r),t))}else n=(0,g.one)();else n=p.Expression.Number("0")}if(n||(n=setPower(e,t)),n.isI()&&(n=(0,u.simplifyImaginary)(n)),e.hasDecimal()){(n.isEXP()?n.getBase():n).getMultiplier().asDecimal=!0}}return n}function setPower(e,t){let n;if(m.Settings.EVALUATE&&e.isNUM()&&t.isNUM()&&!e.getMultiplier().isNegative()&&!t.getMultiplier().isNegative())n=p.Expression.fromRational(e.getMultiplier().pow(t.getMultiplier()));else if(e.isNUM())n=p.Expression.toEXP(e.getMultiplier(),t);else if(t.isNUM()&&!e.isEXP()){n=e.toUnitMultiplier();const i=t.getMultiplier().sign(),r=t.getMultiplier().abs();let s=e.getMultiplier();s.isNegative()&&(n.power=n.getPower().times(r),n=n.times((0,g.minusOne)().pow(r)),s=s.abs());const o=s.pow(r);n.multiplier=n.getMultiplier().isNegative()?o.neg():o,-1===i&&(n.multiplier=n.getMultiplier().invert()),n=p.Expression.setPower(n,e.getPower().times(t.getMultiplier()))}else{const i=e.getPower().times(t);if(i.isNUM()&&e.isEXP()&&!e.getBase().isComplex()&&e.getBase().gt(0)&&(0,u.imagPart)(e.getPower()).isZero())n=power(e.getBase(),i).times(e.getMultiplier());else{const i=e.getMultiplier(),r=i.abs();let s=e.toUnitMultiplier();i.isNegative()&&(s=s.neg()),n=p.Expression.toEXP(s,t),r.isOne()||(n=n.times(p.Expression.toEXP(r,t)))}}return n}function nthPow(e,t){let n;if(1n===t&&"bigint"==typeof e)n=p.Expression.Number(e);else{let i=1n;const r={},s="bigint"==typeof e?(0,l.primeFactorCounts)(e):e;for(const e in s){const n=s[e],o=n/t,a=n-o*t;i*=BigInt(e)**o,a>0n&&(r[e]=a)}const o={};for(const e in r){const t=String(r[e]);o[t]=o[t]?BigInt(e)*o[t]:BigInt(e)}n=1n===i?(0,g.one)():p.Expression.Number(i);for(const e in o){const i=o[e],r=p.Expression.Number(BigInt(e)).div(p.Expression.Number(t));n=n.times(p.Expression.toEXP(p.Expression.Number(i),r))}}return n}function rationalizeRadical(e,t=!1){if(!e.isEXP()||!e.hasRadical())return e;const n=e.getPower().getMultiplier();if(!n.isNegative())return e;const i=e.getBase(),r=(0,a.abs)(n.numerator),s=(0,a.abs)(n.denominator),o=(r+s-1n)/s,l=o*s-r;if(!t&&l>r)return e;let u;u=0n===l?(0,g.one)():i.pow(p.Expression.Number(l).div(p.Expression.Number(s)));const c=i.pow(p.Expression.Number(-o));return u.times(c).times(e.getMultiplier())}},6910(e,t,n){"use strict";t.subtract=function subtract(e,t){let n;if(r.Settings.DEFER_SIMPLIFICATION)n=(0,o.add)(e,t.neg()),n.deferred=!0;else if(n=e.isNUM()&&t.isNUM()?s.Expression.fromRational(e.getMultiplier().minus(t.getMultiplier())):!e.isInf()&&t.isInf()?s.Expression.Inf().neg():(0,o.add)(e,t.neg()),!n)throw new Error((0,i.message)("subtractionNotDefined",{leftType:String(e.type),rightType:String(t.type),left:String(e),right:String(t)}));return n},t.subtractPrefix=function subtractPrefix(e){return e.neg()};const i=n(4703),r=n(5817),s=n(296),o=n(6255)},5823(e,t,n){"use strict";t.preprocess=function preprocess(e,t){let n=function normalizeComments(e){let t="",n=0;for(;n<e.length;){const r=e.indexOf("#",n);if(-1===r){t+=e.slice(n);break}t+=e.slice(n,r);const s=e.startsWith("##",r)?"##":"#",o=e.indexOf(s,r+s.length);if(-1===o)throw new i.ParserError((0,i.message)("missingCommentDelimiter",{delimiter:s}));t+=" ",n=o+s.length}return t}(e);n=function normalizeStatementSeparators(e){const t=[];let n="",i=!1;for(let s=0;s<e.length;s++){const o=e[s];if("("===o||"["===o||"{"===o){const i="("===o?")":"["===o?"]":"}";n+=o,t.push({argumentStart:n.length,closingBracket:i,functionName:"("===o?getPreviousIdentifier(e,s):void 0});continue}if(")"===o||"]"===o||"}"===o){const e=t[t.length-1];e?.closingBracket===o&&(e.statementBlockOpened&&(n+=")"),t.pop()),n+=o;continue}if(","===o){n+=o;const e=t[t.length-1];e&&!e.statementBlockOpened&&(e.argumentStart=n.length);continue}if(";"===o){const a=getNextSignificantCharacter(e,s+1),l=t[t.length-1],u=void 0===a||","===a||a===l?.closingBracket;if(0===t.length)u||(n+=",",i=!0);else{if(u)continue;l?.functionName===r?n+=",":"let"===l?.functionName?(l.statementBlockOpened||(n=n.slice(0,l.argumentStart)+`${r}(`+n.slice(l.argumentStart),l.statementBlockOpened=!0),n+=","):n+=o}continue}n+=o}i&&(n=`${r}(${n})`);return n}(n);let s=findBracketlessFunction(n,t);for(;s;){const e=findArgumentEnd(n,s.argumentStart,s.maxArgs,s.consumeStatement),i=n.slice(s.nameStart,s.nameEnd),r=n.slice(s.argumentStart,e);n=n.slice(0,s.nameStart)+`${i}(${r})`+n.slice(e),s=findBracketlessFunction(n,t)}return n};const i=n(4703),r="block";function isIdentifierStart(e){return/[a-z_]/i.test(e)}function isIdentifierPart(e){return/[a-z0-9_]/i.test(e)}function getPreviousIdentifier(e,t){let n=t;for(;n>0&&/\s/.test(e[n-1]);)n--;let i=n;for(;i>0&&isIdentifierPart(e[i-1]);)i--;const r=e.slice(i,n);return r&&isIdentifierStart(r[0])?r:void 0}function getNextSignificantCharacter(e,t){let n=t;for(;n<e.length&&/\s/.test(e[n]);)n++;return e[n]}function findBracketlessFunction(e,t){let n,i=0;for(;i<e.length;){if(!isIdentifierStart(e[i])){i++;continue}const r=i;for(i++;i<e.length&&isIdentifierPart(e[i]);)i++;const s=i,o=e.slice(r,s);if(o in t&&/\s/.test(e[i]??"")){for(;i<e.length&&/\s/.test(e[i]);)i++;if(i<e.length){const a=e[i],l=e[i+1]??"";/[*/=<>:&|]/.test(a)||("+"===a||"-"===a)&&/\s/.test(l)||(n={argumentStart:i,consumeStatement:!0===t[o].bracketlessStatement,maxArgs:t[o].maxArgs,nameEnd:s,nameStart:r})}}}return n}function isOpeningBracket(e){return"("===e||"["===e||"{"===e}function isClosingBracket(e){return")"===e||"]"===e||"}"===e}function findArgumentEnd(e,t,n,i=!1){let r=0,s=t,o="";const a=1!==n;for(;s<e.length;s++){const n=e[s];if(isOpeningBracket(n)){r++,o=n;continue}if(isClosingBracket(n)){if(0===r)break;r--,o=n;continue}if(r>0){/\s/.test(n)||(o=n);continue}if(i){if(","===n)break;/\s/.test(n)||(o=n);continue}if(/\s/.test(n)){if(a&&","===o)continue;break}if(","===n){if(!a)break;o=n;continue}const l=!("+"!==n&&"-"!==n||s!==t&&","!==o&&"^"!==o);if(/[+\-*/=<>:&|]/.test(n)&&!l)break;o=n}return s}},294(e,t,n){"use strict";t.ReturnSignal=void 0,t.isInsideSymbolicFunction=function isInsideSymbolicFunction(){return h>0},t.shouldConsumeLocalReturn=function shouldConsumeLocalReturn(){return 0===h&&0===d},t.withReturnPropagation=function withReturnPropagation(e){d++;try{return e()}finally{d--}},t.functionBoundary=function functionBoundary(e){let t;h++;try{t=e()}catch(e){if(!l.ReturnSignal.isReturnSignal(e))throw l.BreakSignal.isBreakSignal(e)?new i.ParserError((0,i.message)("breakOutsideLoop")):l.ContinueSignal.isContinueSignal(e)?new i.ParserError((0,i.message)("continueOutsideLoop")):e;t=e.value}finally{h--}return t},t.RETURN=function RETURN(e){throw new l.ReturnSignal(e)},t.BREAK=function BREAK(){if(0===p)throw new i.ParserError((0,i.message)("breakOutsideLoop"));throw c},t.CONTINUE=function CONTINUE(){if(0===p)throw new i.ParserError((0,i.message)("continueOutsideLoop"));throw m},t.AND=function AND(...e){let t=(0,o.one)();for(const n of e)if(!isTruthy(n())){t=(0,o.zero)();break}return t},t.OR=function OR(...e){let t=(0,o.zero)();for(const n of e)if(isTruthy(n())){t=(0,o.one)();break}return t},t.NOT=function NOT(e){return isTruthy(e)?(0,o.zero)():(0,o.one)()},t.XOR=function XOR(...e){let t=!1;for(const n of e)isTruthy(n)&&(t=!t);return t?(0,o.one)():(0,o.zero)()},t.IFERROR=function IFERROR(e,t){let n;try{n=e()}catch(e){if(e instanceof l.ControlFlowSignal)throw e;n=t()}return n},t.ISERROR=function ISERROR(e){let t=(0,o.zero)();try{e()}catch(e){if(e instanceof l.ControlFlowSignal)throw e;t=(0,o.one)()}return t},t.IF=function IF(e,t,n){return controlFlowReturnBoundary(()=>{let i;if(isTruthy(e()))i=t();else{if(!n)return throwNullSignal();i=n()}return i})},t.WHILE=WHILE,t.FOR=function FOR(e,t,n,i){return controlFlowReturnBoundary(()=>(e(),WHILE(t,()=>{let e;try{e=i()}catch(e){throw(l.ContinueSignal.isContinueSignal(e)||l.NullSignal.isNullSignal(e))&&n(),e}return n(),e})))},t.BLOCK=BLOCK,t.parserReturnBoundary=parserReturnBoundary;const i=n(4703),r=n(5817),s=n(296),o=n(6099),a=n(8300),l=n(567);var u=n(567);Object.defineProperty(t,"ReturnSignal",{enumerable:!0,get:function(){return u.ReturnSignal}});const c=new l.BreakSignal,m=new l.ContinueSignal;let p=0,g=0,d=0,h=0;function throwNullSignal(){throw new l.NullSignal}function isTruthy(e){if(!s.Expression.isExpression(e))throw new i.UnexpectedDataType((0,i.message)("expressionExpected",{type:a.dataTypes[e.dataType]}));return!e.isZero()}function controlFlowReturnBoundary(e){let t;try{t=e()}catch(e){if(!(g>0&&0===h&&l.ReturnSignal.isReturnSignal(e)))throw e;t=e.value}return t}function WHILE(e,t){return controlFlowReturnBoundary(()=>{let n,s=!0,o=0;for(;s;){if(isTruthy(e())){if(o>=r.Settings.MAX_LOOP_ITERATIONS)throw new i.ParserError((0,i.message)("loopIterationLimitExceeded",{max:String(r.Settings.MAX_LOOP_ITERATIONS)}));p++;try{n=t()}catch(e){if(l.NullSignal.isNullSignal(e));else if(l.BreakSignal.isBreakSignal(e))s=!1;else if(!l.ContinueSignal.isContinueSignal(e))throw e}finally{p--}o++}else s=!1}return void 0===n?throwNullSignal():n})}function BLOCK(...e){if(0===e.length)return throwNullSignal();let t;for(const n of e)try{t=n()}catch(e){if(!l.NullSignal.isNullSignal(e))throw e}return void 0===t?throwNullSignal():t}function parserReturnBoundary(e){const t=0===h&&0===g;let n;g++;try{n=e()}catch(e){if(!t||!l.ReturnSignal.isReturnSignal(e))throw e;n=e.value}finally{g--}return n}},3812(e,t,n){"use strict";t.each=function each(e,t,n,d){const h=e(),x=[],E=[];if(d){if(!r.Dictionary.isDictionary(h))throw new c.UnexpectedDataType((0,c.message)("unsupportedType",{type:m.dataTypes[h.dataType]}));for(const[e,t]of h.entries())E.push(s.Expression.create(e)),x.push(t.copy())}else if(u.Vector.isVector(h)||i.Collection.isCollection(h)||l.ValuesSet.isValuesSet(h))h.forEach(e=>x.push(e.copy()));else if(a.Matrix.isMatrix(h))h.forEach(e=>x.push(e.copy()));else{if(!r.Dictionary.isDictionary(h))throw new c.UnexpectedDataType((0,c.message)("unsupportedType",{type:m.dataTypes[h.dataType]}));h.forEach(e=>x.push(e.copy()))}let y,v=0;try{y=(0,p.withReturnPropagation)(()=>(0,p.FOR)(()=>(0,o.zero)(),()=>v<x.length?(0,o.one)():(0,o.zero)(),()=>(v++,(0,o.zero)()),()=>d?(0,g.LET)(t,()=>E[v],()=>(0,g.LET)(n,()=>x[v],d)):(0,g.LET)(t,()=>x[v],n)))}catch(e){if((0,p.isInsideSymbolicFunction)()||!p.ReturnSignal.isReturnSignal(e))throw e;y=e.value}return y};const i=n(6284),r=n(6528),s=n(296),o=n(6099),a=n(4462),l=n(5598),u=n(3982),c=n(4703),m=n(8300),p=n(294),g=n(2707)},1929(e,t,n){"use strict";t.loadScriptingFunctions=function loadScriptingFunctions(){Object.assign(i.mathFunctionRegistry,{unassign:(0,i.systemFunction)({fn:a.unassign,minArgs:1,maxArgs:1,distElWise:!1,deferArguments:!0}),evaluate:(0,i.systemFunction)({fn:o.evaluate,minArgs:1,maxArgs:3,equationArgs:[0],distElWise:!1,deferArguments:!0,usage:"scripting"}),return:(0,i.systemFunction)({fn:r.RETURN,minArgs:1,maxArgs:1,equationArgs:[0],distElWise:!1,bracketlessStatement:!0,usage:"scripting"}),break:(0,i.systemFunction)({fn:r.BREAK,minArgs:0,maxArgs:0,distElWise:!1,usage:"scripting"}),continue:(0,i.systemFunction)({fn:r.CONTINUE,minArgs:0,maxArgs:0,distElWise:!1,usage:"scripting"}),and:(0,i.systemFunction)({fn:r.AND,minArgs:2,maxArgs:-1,distElWise:!1,deferArguments:!0,usage:"scripting"}),or:(0,i.systemFunction)({fn:r.OR,minArgs:2,maxArgs:-1,distElWise:!1,deferArguments:!0,usage:"scripting"}),not:(0,i.systemFunction)({fn:r.NOT,minArgs:1,maxArgs:1,distElWise:!1,usage:"scripting"}),xor:(0,i.systemFunction)({fn:r.XOR,minArgs:2,maxArgs:-1,distElWise:!1,usage:"scripting"}),iferror:(0,i.systemFunction)({fn:r.IFERROR,minArgs:2,maxArgs:2,distElWise:!1,deferArguments:!0,usage:"scripting"}),iserror:(0,i.systemFunction)({fn:r.ISERROR,minArgs:1,maxArgs:1,distElWise:!1,deferArguments:!0,usage:"scripting"}),if:(0,i.systemFunction)({fn:r.IF,minArgs:2,maxArgs:3,distElWise:!1,deferArguments:!0,returnBoundary:!0,usage:"scripting"}),while:(0,i.systemFunction)({fn:r.WHILE,minArgs:2,maxArgs:2,distElWise:!1,deferArguments:!0,returnBoundary:!0,usage:"scripting"}),for:(0,i.systemFunction)({fn:r.FOR,minArgs:4,maxArgs:4,distElWise:!1,deferArguments:!0,returnBoundary:!0,usage:"scripting"}),each:(0,i.systemFunction)({fn:s.each,minArgs:3,maxArgs:4,distElWise:!1,deferArguments:!0,usage:"scripting"}),let:(0,i.systemFunction)({fn:a.LET,minArgs:3,maxArgs:-1,distElWise:!1,deferArguments:!0,normalizeDeferredArguments:a.normalizeLetArguments,returnBoundary:!0,usage:"scripting"}),block:(0,i.systemFunction)({fn:r.BLOCK,minArgs:-1,maxArgs:-1,distElWise:!1,deferArguments:!0,returnBoundary:!0,usage:"scripting"})})};const i=n(9426),r=n(294),s=n(3812),o=n(1668),a=n(2707)},1668(e,t,n){"use strict";t.evaluate=function evaluate(e,t,n){const i=e();let s;if(t){const e=t();if(s={},n){const t=n();if(!p.Vector.isVector(e))throw new r.UnexpectedDataType((0,r.message)("vectorExpected",{type:g.dataTypes[e.dataType]}));if(!p.Vector.isVector(t))throw new r.UnexpectedDataType((0,r.message)("vectorExpected",{type:g.dataTypes[t.dataType]}));if(e.count()!==t.count())throw new r.DimensionError((0,r.message)("mismatchedDimensions",{function:"evaluate"}));for(let n=0;n<e.count();n++){const i=e.elements[n];if(!l.Expression.isExpression(i))throw new r.UnexpectedDataType((0,r.message)("expressionExpected",{type:g.dataTypes[i.dataType]}));s[(0,u.assertPlainVariableAndGetString)(i)]=t.elements[n]}}else{if(!o.Dictionary.isDictionary(e))throw new r.UnexpectedDataType((0,r.message)("unsupportedType",{type:g.dataTypes[e.dataType]}));for(const[t,n]of e)s[t]=n}}let a=i;try{a=s&&(l.Expression.isExpression(i)||p.Vector.isVector(i)||c.Matrix.isMatrix(i)||m.ValuesSet.isValuesSet(i))?i.evaluate(s):i.evaluate()}catch{a=i}return a},t.numeric=function numeric(e,t){const n=e();let i;if(t){const e=t();if(!l.Expression.isExpression(e))throw new r.UnexpectedDataType((0,r.message)("expressionExpected",{type:g.dataTypes[e.dataType]}));i=e}return applyNumeric(n,i)};const i=n(8533),r=n(4703),s=n(6284),o=n(6528),a=n(6184),l=n(296),u=n(1897),c=n(4462),m=n(5598),p=n(3982),g=n(8300);function applyNumeric(e,t){let n;return n=l.Expression.isExpression(e)?(0,i.numeric)(e,t):a.Equation.isEquation(e)?e.copy().each(e=>l.Expression.isExpression(e)?(0,i.numeric)(e,t):e):p.Vector.isVector(e)?e.copy().each(e=>applyNumeric(e,t)):c.Matrix.isMatrix(e)?e.copy().each(e=>(0,i.numeric)(e,t)):s.Collection.isCollection(e)||o.Dictionary.isDictionary(e)||m.ValuesSet.isValuesSet(e)?e.copy().each(e=>applyNumeric(e,t)):e,n}},266(e,t,n){"use strict";t.wrappedFunction=function wrappedFunction(e,t){return(...n)=>{const s=new Map,o=new Set;for(let e=0;e<t.length;e++){const r=t[e];s.has(r)||o.has(r)||(Object.prototype.hasOwnProperty.call(i.Parser.KNOWN_VALUES,r)?s.set(r,i.Parser.KNOWN_VALUES[r]):o.add(r)),i.Parser.KNOWN_VALUES[r]=n[e]}let a;try{a=(0,r.functionBoundary)(()=>{let t;return t="string"==typeof e?i.Parser.parse(e):e({inheritValues:!1}),t})}finally{for(const[e,t]of s)i.Parser.KNOWN_VALUES[e]=t;for(const e of o)delete i.Parser.KNOWN_VALUES[e]}return a}};const i=n(238),r=n(294)},2707(e,t,n){"use strict";t.assign=assign,t.normalizeLetArguments=function normalizeLetArguments(e){const t=[];for(let n=0;n<e.length;n++){const r=e[n];let s=-1;if(n<e.length-1)for(let e=0;e<r.length;e++){const t=r[e];if(m.Token.isToken(t)&&t.type===m.Token.OPERATOR&&t.value===l.ASSIGN){s=e;break}}if(s>0&&s<r.length-1){const e=new i.Scope(r.type,r.column),n=new i.Scope(r.type,r.column);for(let t=0;t<s;t++)e.push(r[t]);for(let e=s+1;e<r.length;e++)n.push(r[e]);t.push(e,n)}else t.push(r)}return t},t.LET=function LET(...e){if(e.length<3||e.length%2==0)throw new r.ParserError((0,r.message)("letRequiresBindingsAndBody"));const t=new Map,n=new Set,i=[];let s;try{for(let s=0;s<e.length-1;s+=2){const l=e[s]({inheritValues:!1,substitute:!1});if(!o.Expression.isExpression(l))throw new r.UnexpectedInputError((0,r.message)("plainVariableExpected",{input:l.text()}));const u=(0,a.assertPlainVariableAndGetString)(l),m=e[s+1]({excludeValues:i});t.has(u)||n.has(u)||(Object.prototype.hasOwnProperty.call(c.Parser.KNOWN_VALUES,u)?t.set(u,c.Parser.KNOWN_VALUES[u]):n.add(u)),assign(l,m),i.includes(u)||i.push(u)}try{s=e[e.length-1]({excludeValues:i})}catch(e){if(!(0,p.shouldConsumeLocalReturn)()||!p.ReturnSignal.isReturnSignal(e))throw e;s=e.value}}finally{for(const[e,n]of t)c.Parser.KNOWN_VALUES[e]=n;for(const e of n)delete c.Parser.KNOWN_VALUES[e]}return s},t.unassign=function unassign(e){let t,n;if("function"==typeof e){const n=e({inheritValues:!1,substitute:!1});if(!o.Expression.isExpression(n))throw new r.UnexpectedInputError((0,r.message)("plainVariableExpected",{input:n.text()}));t=n}else t=e;n=o.Expression.isExpression(t)?(0,a.assertPlainVariableAndGetString)(t):t;return delete c.Parser.KNOWN_VALUES[n],o.Expression.create(t)};const i=n(2809),r=n(4703),s=n(5817),o=n(296),a=n(1897),l=n(8300),u=n(567),c=n(238),m=n(12),p=n(294);function assign(e,t){if(e=o.Expression.create(e),o.Expression.isExpression(e)&&!e.isPlainVariable())throw new r.UnexpectedInputError((0,r.message)("plainVariableExpected",{input:String(e)}));if(s.RESTRICTED.includes(e.value))throw new r.AssignmentError((0,r.message)("restrictedVariableName",{name:e.value}));let n;try{n="function"==typeof t?t():"string"==typeof t?c.Parser.parse(t):t}catch(t){if(u.NullSignal.isNullSignal(t))return c.Parser.KNOWN_VALUES[e.value]?.copy()??e;throw t}return c.Parser.KNOWN_VALUES[e.value]=n,n}},8054(e,t,n){"use strict";t.IndexedReference=void 0;const i=n(6441),r=n(8300);t.IndexedReference=class IndexedReference{target;indices;targetName;_resolved=null;dataType=r.INDEXED_REFERENCE;isEnumerable=!1;constructor(e,t,n){this.target=e,this.indices=t,this.targetName=n}static isIndexedReference(e){return(0,i.isNerdamerNativeType)(e,r.INDEXED_REFERENCE)}copy(){return this.resolve().copy()}eq(e){return this.resolve().eq(e)}evaluate(){return this.resolve().evaluate()}expand(){return this.resolve().expand()}gt(e){return this.resolve().gt(e)}gte(e){return this.resolve().gte(e)}lt(e){return this.resolve().lt(e)}lte(e){return this.resolve().lte(e)}resolve(){return null===this._resolved&&(this.indices,this._resolved=this.target.__get__(this.indices)),this._resolved}text(){return this.resolve().text()}}},8584(e,t,n){"use strict";t.KeyValuePair=void 0;const i=n(6441),r=n(8300);class KeyValuePair{key;value;dataType=r.KEY_VALUE_PAIR;isEnumerable=!1;constructor(e,t){this.key=e,this.value=t}static isKeyValuePair(e){return(0,i.isNerdamerNativeType)(e,r.KEY_VALUE_PAIR)}copy(){return new KeyValuePair(this.key,this.value.copy())}eq(){return!1}evaluate(){return this.value.evaluate()}expand(){return this.value.expand()}gt(){return!1}gte(){return!1}lt(){return!1}lte(){return!1}text(){return`${this.key} => ${this.value.text()}`}}t.KeyValuePair=KeyValuePair},2116(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Polynomial=void 0;const r=i(n(3110)),s=n(8891),o=n(8015),a=n(6441),l=n(4703),u=n(7741),c=n(5869),m=n(6056),p=n(296),g=n(6099),d=n(8300),h=n(5584),x=n(6105),E=n(5640),y=n(9565);class Polynomial{static defaultOrdering="lex";dataType=d.POLYNOMIAL;expression;isMultivariate;ordering="none";terms;variables;constructor(e,t,n){if(Polynomial.isPolynomial(e))this.expression=e.expression.copy(),this.variables=[...e.variables],this.ordering=e.ordering,this.isMultivariate=e.isMultivariate,this.terms=e.terms.map(e=>e.copy());else{n??=Polynomial.defaultOrdering;let i=p.Expression.create(e);if(!p.Expression.isExpression(i))throw new l.UnsupportedOperationError((0,l.message)("unsupportedType",{type:typeof i}));if(!i.isPolynomialLike())throw new l.PolynomialError((0,l.message)("notAPolynomial"));let r,s=!1;(i.value.includes("(")||i.isSum()&&i.getPower().gt("1"))&&(i=(0,u.expand)(i),s=!0),this.expression=i,t?r=t:(r=i.variables(),(0,c.isSorted)(r)||r.sort()),this.variables=r,this.isMultivariate=this.variables.length>1,this.terms=[],(0,m.coeffs)(i,this.variables,void 0,!s).each((e,t)=>{this.terms.push(new E.Term(e,t,this.variables))}),this.variables=this.variables||[],this.order(n)}}static fromArray(e,t){const n=[];let i,r=!1;for(const i of e){const e=p.Expression.isExpression(i)?i:p.Expression.create(String(i));n.push(e),t.some(t=>e.hasVariable(t))&&(r=!0)}if(r)i=Polynomial.fromArrayCanonicalized(n,t);else{i=new Polynomial((0,g.zero)(),t),i.terms=[];for(let e=0;e<n.length;e++){const r=n[e];if(!r.isZero()){const n={};for(const i of t)n[i]=e;i.terms.push(new E.Term(r.copy(),n,t))}}i.order(),i.updateExpression()}return i}static fromArrayCanonicalized(e,t){let n=(0,g.one)();for(const e of t)n=n.times(p.Expression.Variable(e));let i=(0,g.zero)();for(let t=0;t<e.length;t++)i=i.plus(e[t].times(n.pow(t)));return new Polynomial(i,t)}static grevlex(e,t){return e.getTotalPower()===t.getTotalPower()?Polynomial.revlex(e,t):e.getTotalPower()>t.getTotalPower()?-1:1}static grlex(e,t){return e.getTotalPower()===t.getTotalPower()?Polynomial.lex(e,t):e.getTotalPower()>t.getTotalPower()?-1:1}static isPolynomial(e){return(0,a.isNerdamerNativeType)(e,d.POLYNOMIAL)}static lex(e,t){const n=e.difference(t);for(let e=0;e<n.length;e++)if(0!==n[e])return-1===Math.sign(n[e])?1:-1;return 1}static polyArraySort(e,t){let n;switch(t??=Polynomial.defaultOrdering,e=e.map(e=>e.order(t)),t){case"lex":n=Polynomial.lex;break;case"grevlex":n=Polynomial.grevlex;break;case"revlex":n=Polynomial.revlex;break;default:n=Polynomial.grlex}return e=e.sort((e,t)=>n(e.LT(),t.LT()))}static rationalToString(e){return 1n===e.denominator?e.numerator.toString():`(${e.numerator}/${e.denominator})`}static revlex(e,t){const n=e.difference(t);for(let e=n.length-1;e>=0;e--)if(0!==n[e])return Math.sign(n[e]);return-1}static toExpression(e){return Polynomial.isPolynomial(e)?e.getExpression():p.Expression.create(e)}static toPolynomial(e,t,n){return Polynomial.isPolynomial(e)?e.ordering!==t&&e.order(t):e=new Polynomial(e,n,t||Polynomial.defaultOrdering),e}append(e,t){const n=new Polynomial(this);if(n.variables=(0,c.arrayAddUnique)(e.variables,n.variables),n.variables&&e.variables&&n.variables.length>e.variables.length&&n.variables.sort(),n.isMultivariate=n.variables.length>1,Polynomial.isPolynomial(e))for(const i of e.terms)n.appendTerm(i,t);else n.appendTerm(e,t);return 0!==n.terms.length&&n.updateExpression(),0===n.terms.length?new Polynomial("0"):n}appendTerm(e,t){for(let n=0;n<this.terms.length;n++){const i=this.terms[n];if(i.canAddOrSubtract(e))return i.coeff=i.coeff[t](e.coeff),void(i.coeff.isZero()&&(0,s.remove)(this.terms,i))}const n=e.copy();"minus"===t&&(n.coeff=n.coeff.neg()),this.terms.push(n),this.order()}monomialGCDTerm(e){const t=[...new Set([...this.variables,...e.variables])].sort(),n=this.commonTermVariables(),i=e.commonTermVariables(),r={};for(const e of t){const t=n[e]??0,s=i[e]??0,o=Math.min(t,s);o>0&&(r[e]=o)}return new E.Term("1",r,t)}updateExpression(){let e=(0,g.zero)();for(const t of this.terms)e=e.plus(t.copy().getExpression());this.expression=e}at(e){if(this.variables.length>1)throw new l.UnsupportedOperationError((0,l.message)("univariatePolynomialOnly"));let t=0;const n=this.variables[0];for(let i=0;i<this.terms.length;i++){const r=this.terms[i],s=r.powers[n];t+=Math.pow(e,s)*Number(r.coeff)}return t}coeffs(e){return(0,m.coeffs)(this.getExpression(),e?[e]:this.variables)}commonTermVariables(){const e={};for(const t of this.variables){let n;for(const e of this.terms){const i=e.deg(t);if(0===i){n=void 0;break}n=void 0===n?i:Math.min(n,i)}n&&(e[t]=n)}return e}constantTerm(){const e=this.terms.at(-1);return e&&e.isConstant()?e.coeff:(0,g.zero)()}content(){const e=this.numericCoeffs();return 0===e.length?h.Rational.create("1"):h.Rational.GCD(...e)}deg(e){let t=0;for(const n of this.terms){const i=void 0===e?n.getTotalPower():n.deg(e);t=Math.max(t,i)}return t}diff(e,t=1){if(e=e||this.variables[0],0===t)return new Polynomial(this);if(!e)return new Polynomial("0");const n=[];for(const i of this.terms){const r=i.diff(e,t);r.isZero()||(r.variables=[...this.variables],n.push(r))}if(0===n.length)return new Polynomial("0");const i=new Polynomial("0",this.variables,this.ordering);i.terms=[];for(const e of n)i.terms.push(e);return i.order(this.ordering),i.updateExpression(),i}div(e){return(0,y.divide)(this,e).map(e=>new Polynomial(e))}divides(e){return this.LT().divides(e.LT())}eq(e){return this.minus(e).isZero()}evaluate(e){const t=this.variables.filter(t=>!(t in e)),n={};for(const t in e){const i=e[t];h.Rational.isRational(i)?n[t]=i:n[t]=h.Rational.create(i.toString())}const i=new Map;for(const e of this.terms){let r=e.coeff.getMultiplier();const s={};for(const t of this.variables){const i=e.deg(t);if(t in n){if(0!==i){const e=n[t].pow(i.toString());r=r.times(e)}}else 0!==i&&(s[t]=i)}if(r.isZero())continue;const o=t.length>0?t.map(e=>`${e}:${s[e]||0}`).join(","):"constant",a=i.get(o);a?a.coefficient=a.coefficient.plus(r):i.set(o,{coefficient:r,powers:s})}let r;if(0===i.size)r=new Polynomial((0,g.zero)());else if(0===t.length){const e=i.get("constant"),t=e?e.coefficient:h.Rational.create("0");r=new Polynomial(p.Expression.Number(t.value))}else{r=new Polynomial((0,g.zero)(),t,this.ordering),r.terms=[];for(const e of i.values())e.coefficient.isZero()||r.terms.push(new E.Term(p.Expression.Number(e.coefficient.value),{...e.powers},t));r.order(this.ordering),r.updateExpression()}return r}evaluateToRational(e){for(const t of this.variables)if(!(t in e))throw new l.UnsupportedOperationError((0,l.message)("unknownVariable",{variable:t}));const t={};for(const n in e){const i=e[n];h.Rational.isRational(i)?t[n]=i:t[n]=h.Rational.create(i.toString())}let n=h.Rational.create("0");for(const e of this.terms){let i=e.coeff.getMultiplier();for(const n of this.variables){const r=e.deg(n);0!==r&&(i=i.times(t[n].pow(r.toString())))}n=n.plus(i)}return n}gcdFree(e=!1,t=!1){const n=t?this:new Polynomial(this);if(n.isConstant())return n;let i,r=n.content();-1===n.LC().sign()&&(r=r.neg()),e&&(i=n.commonTermVariables());for(let e=0;e<n.terms.length;e++){const t=n.terms[e];if(i)for(const e in i)t.powers[e]-=i[e];const s=t.coeff.getMultiplier().div(r);t.coeff=p.Expression.fromRational(s)}return n.updateExpression(),n}getExpression(){return this.expression}grevlexSort(){return this.terms.sort((e,t)=>Polynomial.grevlex(e,t)),this.ordering="grevlex",this}grlexSort(){return this.terms.sort((e,t)=>Polynomial.grlex(e,t)),this.ordering="grlex",this}isConstant(){return 1===this.terms.length&&this.terms[0].isConstant()}isZero(){return 0===this.terms.length||this.LT().isZero()}LC(){return this.LT().coeff}lexSort(){return this.terms.sort((e,t)=>Polynomial.lex(e,t)),this.ordering="lex",this}LM(){const e=this.LT();return new E.Term("1",{...e.powers},[...e.variables])}LT(){return this.terms[0]}maxVariableFrequency(){const e=this.variableFrequency();let t=[];for(const n in e){const i=e[n].count;!t[0]||t[0].count<i?t=[e[n]]:t[0].count===i&&t.push(e[n])}return(0,o.arrayToObject)(t,e=>e.variable)}minus(e){return this.append(e,"minus")}mod(e){e=p.Expression.create(e);const t=this.coeffs();return t.each((n,i)=>{t.coeffs[i]=n.mod(e)}),t}monic(){const e=new Polynomial(this),t=this.LT();if(t&&!t.isConstant()){const n=t.coeff;for(const t of e.terms)t.coeff=t.coeff.div(n);e.updateExpression()}return e}multideg(){return this.terms[0].multidegArray}numericCoeffs(){return this.terms.map(e=>e.coeff.getMultiplier())}order(e){if(this.variables.length<2)this.sort(),this.ordering="deg";else switch(e&&(this.ordering=e),this.ordering){case"lex":this.lexSort();break;case"grevlex":this.grevlexSort();break;case"revlex":this.revlexSort();break;default:this.grlexSort()}return this}plus(e){return this.append(e,"plus")}pow(e){const t=p.Expression.create(e),n=this.getExpression();let i;if(t.isNUM()&&t.isInteger()&&t.sign()>=0&&!n.hasDecimal())try{const e=t.getMultiplier().numerator,r=[...this.variables],s=(0,x.expressionToIntegerSparsePolynomial)(n,r),o=s.denominator**e;let a=(0,x.sparsePolynomialToExpression)(s.polynomial.pow(e),r);1n!==o&&(a=a.div(p.Expression.Number(o))),i=new Polynomial(a,void 0,this.ordering)}catch{}return i??new Polynomial(n.pow(t),void 0,this.ordering)}revlexSort(){return this.terms.sort((e,t)=>Polynomial.revlex(e,t)),this.ordering="revlex",this}sort(){return this.terms.sort((e,t)=>t.getTotalPower()>e.getTotalPower()?1:-1),this}stripMonomialGCD(e){const t=this.monomialGCDTerm(e),n=new Polynomial(this),i=new Polynomial(e);for(let e=0;e<n.terms.length;e++)n.terms[e]=n.terms[e].div(t);for(let e=0;e<i.terms.length;e++)i.terms[e]=i.terms[e].div(t);const r=new Polynomial(t.getExpression());return n.updateExpression(),i.updateExpression(),{mGCD:r,p:n,q:i}}text(){if(0===this.terms.length||1===this.terms.length&&this.terms[0].isZero())return"0";const e=[];for(const t of this.terms){const n=t.text(this.variables);"0"!==n&&e.push(n)}return e.join("+").replace(/\+-/g,"-")}times(e){let t;if(E.Term.isTerm(e)){t=new Polynomial(this),t.variables=(0,c.arrayAddUnique)(t.variables,e.variables),(0,c.isSorted)(this.variables)&&t.variables.sort(),t.isMultivariate=t.variables.length>1;for(let n=0;n<t.terms.length;n++)t.terms[n]=t.terms[n].times(e);t.updateExpression()}else{const n=this.getExpression(),i=e.getExpression();let r;if(!n.hasDecimal()&&!i.hasDecimal())try{const t=[...new Set([...this.variables,...e.variables])].sort(),s=(0,x.expressionToIntegerSparsePolynomial)(n,t),o=(0,x.expressionToIntegerSparsePolynomial)(i,t),a=s.denominator*o.denominator;let l=(0,x.sparsePolynomialToExpression)(s.polynomial.multiply(o.polynomial),t);1n!==a&&(l=l.div(p.Expression.Number(a))),r=new Polynomial(l,void 0,this.ordering)}catch{}t=r??new Polynomial(n.times(i),void 0,this.ordering)}return t}toArray(e=!1,t){const n=[],i=Number(this.deg(t)),r=this.coeffs(t);for(let e=0;e<=i;e++)n.push(r.hasPower(e)?r.getPower(e):(0,g.zero)());return e?n.map(e=>Number(e)):n}toBigIntArray(e=!0,t){return this.toArray(!1,t).map(t=>{if(e&&!t.isInteger())throw new Error((0,l.message)("integerRequired"));return t.getMultiplier().numerator})}toDecimalArray(){return this.toArray().map(e=>new r.default(e.text()))}toString(){return this.text()}variableFrequency(){const e={};for(const t of this.terms)for(const n in t.powers){let i=e[n];i||(e[n]=i={variable:n,count:0,deg:0});const r=t.powers[n];0!==r&&(i.count++,i.deg+=r)}return e}}t.Polynomial=Polynomial},7248(e,t,n){"use strict";t.SparsePolynomial=void 0;const i=n(4703),r=n(551);class SparsePolynomial{termsByKey;variableCount;constructor(e,t=[]){if(!Number.isSafeInteger(e)||e<0)throw new RangeError((0,i.message)("sparseVariableCountInvalid"));this.variableCount=e,this.termsByKey=new Map;for(const n of t){SparsePolynomial.assertExponents(e,n.exponents);const t=n.exponents.map(e=>e),i=Object.freeze(t),r=SparsePolynomial.keyOf(i),s=(this.termsByKey.get(r)?.coefficient??0n)+n.coefficient;0n===s?this.termsByKey.delete(r):this.termsByKey.set(r,Object.freeze({coefficient:s,exponents:i}))}}static assertExponents(e,t){if(t.length!==e)throw new RangeError((0,i.message)("sparseExponentVectorLengthMismatch"));for(const e of t)if("bigint"!=typeof e||e<0n)throw new RangeError((0,i.message)("sparseExponentsNonNegativeBigInt"))}static compareMonomials(e,t,n){if("lex"===n){for(let n=0;n<e.length;n++)if(e[n]!==t[n])return e[n]>t[n]?1:-1;return 0}let i=0n,r=0n;for(let n=0;n<e.length;n++)i+=e[n],r+=t[n];if(i!==r)return i>r?1:-1;if("grlex"===n){for(let n=0;n<e.length;n++)if(e[n]!==t[n])return e[n]>t[n]?1:-1;return 0}for(let n=e.length-1;n>=0;n--)if(e[n]!==t[n])return e[n]<t[n]?1:-1;return 0}static constant(e,t){return new SparsePolynomial(e,[{coefficient:t,exponents:new Array(e).fill(0n)}])}static keyOf(e){return e.join(",")}static monomial(e,t,n){return new SparsePolynomial(e,[{coefficient:t,exponents:n}])}static variable(e,t){if(!Number.isSafeInteger(t)||t<0||t>=e)throw new RangeError((0,i.message)("sparseVariableIndexOutOfRing"));const n=new Array(e).fill(0n);return n[t]=1n,new SparsePolynomial(e,[{coefficient:1n,exponents:n}])}static zero(e){return new SparsePolynomial(e)}add(e){if(this.variableCount!==e.variableCount)throw new RangeError((0,i.message)("sparseAdditionRingMismatch"));const t=SparsePolynomial.zero(this.variableCount);for(const[e,n]of this.termsByKey)t.termsByKey.set(e,n);for(const[n,i]of e.termsByKey){const e=t.termsByKey.get(n),r=(e?.coefficient??0n)+i.coefficient;0n===r?t.termsByKey.delete(n):void 0!==e&&r===e.coefficient||t.termsByKey.set(n,Object.freeze({coefficient:r,exponents:e?.exponents??i.exponents}))}return t}coefficient(e){return SparsePolynomial.assertExponents(this.variableCount,e),this.termsByKey.get(SparsePolynomial.keyOf(e))?.coefficient??0n}coefficientIn(e,t){if(this.degree(e),t<0n)throw new RangeError((0,i.message)("sparseCoefficientExponentNonNegative"));const n=[];for(const i of this.termsByKey.values()){if(i.exponents[e]!==t)continue;const r=[...i.exponents];r[e]=0n,n.push({coefficient:i.coefficient,exponents:r})}return new SparsePolynomial(this.variableCount,n)}constantTerm(){const e=new Array(this.variableCount).fill(0n);return this.termsByKey.get(SparsePolynomial.keyOf(e))?.coefficient??0n}content(){let e=0n;for(const t of this.termsByKey.values())if(e=(0,r.GCD)(e,t.coefficient),1n===e)break;return e}degree(e){if(!Number.isSafeInteger(e)||e<0||e>=this.variableCount)throw new RangeError((0,i.message)("sparseVariableIndexOutOfRing"));if(this.isZero())return null;let t=0n;for(const n of this.termsByKey.values())n.exponents[e]>t&&(t=n.exponents[e]);return t}derivative(e){this.degree(e);const t=[];for(const n of this.termsByKey.values()){const i=n.exponents[e];if(0n===i)continue;const r=n.exponents.map(e=>e);r[e]=i-1n,t.push({coefficient:n.coefficient*i,exponents:r})}return new SparsePolynomial(this.variableCount,t)}divideByMonomial(e){if(0n===e.coefficient)throw new RangeError((0,i.message)("sparseZeroMonomialDivision"));SparsePolynomial.assertExponents(this.variableCount,e.exponents);const t=[];for(const n of this.termsByKey.values()){if(n.coefficient%e.coefficient!==0n)return null;const i=new Array(this.variableCount);for(let t=0;t<this.variableCount;t++){if(n.exponents[t]<e.exponents[t])return null;i[t]=n.exponents[t]-e.exponents[t]}t.push({coefficient:n.coefficient/e.coefficient,exponents:i})}return new SparsePolynomial(this.variableCount,t)}divideByScalarExact(e){if(0n===e)throw new RangeError((0,i.message)("sparseZeroScalarDivision"));const t=SparsePolynomial.zero(this.variableCount);for(const[n,r]of this.termsByKey){if(r.coefficient%e!==0n)throw new RangeError((0,i.message)("sparseScalarDivisionExact"));t.termsByKey.set(n,Object.freeze({coefficient:r.coefficient/e,exponents:r.exponents}))}return t}divideExact(e,t="lex"){if(this.variableCount!==e.variableCount)throw new RangeError((0,i.message)("sparseDivisionRingMismatch"));const n=e.leadingTerm(t);if(null===n)throw new RangeError((0,i.message)("sparseZeroPolynomialDivision"));let r=SparsePolynomial.zero(this.variableCount),s=new SparsePolynomial(this.variableCount,this.termsByKey.values());for(;!s.isZero();){const i=s.leadingTerm(t);if(null===i)break;const o=SparsePolynomial.monomial(this.variableCount,i.coefficient,i.exponents).divideByMonomial(n);if(null===o)return null;r=r.add(o),s=s.subtract(e.multiply(o))}return r}equals(e){if(this.variableCount!==e.variableCount||this.termCount!==e.termCount)return!1;for(const[t,n]of this.termsByKey)if(e.termsByKey.get(t)?.coefficient!==n.coefficient)return!1;return!0}evaluateVariable(e,t){this.degree(e);const n=SparsePolynomial.zero(this.variableCount);for(const[i,r]of this.termsByKey){const s=r.exponents[e];let o=0;for(let t=0;t<e;t++)o=i.indexOf(",",o)+1;const a=i.indexOf(",",o),l=-1===a?i.length:a,u=i.slice(0,o)+"0"+i.slice(l),c=n.termsByKey.get(u),m=r.coefficient*t**s,p=(c?.coefficient??0n)+m;if(0n===p)n.termsByKey.delete(u);else if(void 0!==c)p!==c.coefficient&&n.termsByKey.set(u,Object.freeze({coefficient:p,exponents:c.exponents}));else if(0n!==m)if(0n===s)n.termsByKey.set(u,r);else{const t=[...r.exponents];t[e]=0n,n.termsByKey.set(u,Object.freeze({coefficient:p,exponents:Object.freeze(t)}))}}return n}evaluateVariables(e,t){if(e.length!==t.length)throw new RangeError((0,i.message)("wrongInput",{expected:`${e.length} evaluation values`,received:`${t.length}`}));if(0===e.length)return this;const n=new Set;for(const t of e){if(this.degree(t),n.has(t))throw new RangeError((0,i.message)("wrongInput",{expected:"unique evaluation variables",received:"duplicate variable index"}));n.add(t)}const r=SparsePolynomial.zero(this.variableCount);for(const[n,i]of this.termsByKey){let s=i.coefficient,o=!1;for(let n=0;n<e.length;n++){const r=e[n],a=i.exponents[r];if(0n===a)continue;o=!0;const l=t[n];if(0n===l){s=0n;break}1n!==l&&(-1n!==l?s*=l**a:1n==(1n&a)&&(s=-s))}if(0n===s)continue;let a=n,l=i.exponents;if(o){const t=[...i.exponents];for(const n of e)t[n]=0n;l=Object.freeze(t),a=SparsePolynomial.keyOf(l)}const u=r.termsByKey.get(a),c=(u?.coefficient??0n)+s;0n===c?r.termsByKey.delete(a):void 0===u?r.termsByKey.set(a,o||s!==i.coefficient?Object.freeze({coefficient:s,exponents:l}):i):c!==u.coefficient&&r.termsByKey.set(a,Object.freeze({coefficient:c,exponents:u.exponents}))}return r}isConstant(){if(this.isZero())return!0;if(1!==this.termsByKey.size)return!1;const e=this.termsByKey.values().next().value;return void 0!==e&&e.exponents.every(e=>0n===e)}isZero(){return 0===this.termsByKey.size}leadingCoefficientIn(e){const t=this.degree(e);return null===t?null:this.coefficientIn(e,t)}leadingTerm(e="lex"){if("lex"!==e&&"grlex"!==e&&"grevlex"!==e)throw new RangeError((0,i.message)("sparseMonomialOrderUnsupported"));let t=null;for(const n of this.termsByKey.values())(null===t||SparsePolynomial.compareMonomials(n.exponents,t.exponents,e)>0)&&(t=n);return t}mapCoefficients(e){const t=SparsePolynomial.zero(this.variableCount);for(const[n,i]of this.termsByKey){const r=e(i.coefficient);0n!==r&&t.termsByKey.set(n,r===i.coefficient?i:Object.freeze({coefficient:r,exponents:i.exponents}))}return t}maxAbsoluteCoefficient(){let e=0n;for(const t of this.termsByKey.values()){const n=t.coefficient<0n?-t.coefficient:t.coefficient;n>e&&(e=n)}return e}multiply(e){if(this.variableCount!==e.variableCount)throw new RangeError((0,i.message)("sparseMultiplicationRingMismatch"));if(this.isZero()||e.isZero())return SparsePolynomial.zero(this.variableCount);const t=[];for(const n of this.termsByKey.values())for(const i of e.termsByKey.values()){const e=new Array(this.variableCount);for(let t=0;t<this.variableCount;t++)e[t]=n.exponents[t]+i.exponents[t];t.push({coefficient:n.coefficient*i.coefficient,exponents:e})}return new SparsePolynomial(this.variableCount,t)}monomialScaleSubtract(e,t,n,r,s){if(this.variableCount!==n.variableCount)throw new RangeError((0,i.message)("sparseSubtractionRingMismatch"));SparsePolynomial.assertExponents(this.variableCount,t),SparsePolynomial.assertExponents(this.variableCount,s);const o=SparsePolynomial.zero(this.variableCount),accumulate=(e,t,n)=>{if(0n!==t)for(const i of e.termsByKey.values()){const e=new Array(this.variableCount);for(let t=0;t<this.variableCount;t++)e[t]=i.exponents[t]+n[t];const r=Object.freeze(e),s=SparsePolynomial.keyOf(r),a=o.termsByKey.get(s),l=(a?.coefficient??0n)+i.coefficient*t;0n===l?o.termsByKey.delete(s):o.termsByKey.set(s,Object.freeze({coefficient:l,exponents:a?.exponents??r}))}};return accumulate(this,e,t),accumulate(n,-r,s),o}scaleSubtractMonomial(e,t,n,r){if(this.variableCount!==t.variableCount)throw new RangeError((0,i.message)("sparseSubtractionRingMismatch"));SparsePolynomial.assertExponents(this.variableCount,r);const s=SparsePolynomial.zero(this.variableCount);if(0n!==e)for(const[t,n]of this.termsByKey){const i=n.coefficient*e;0n!==i&&s.termsByKey.set(t,Object.freeze({coefficient:i,exponents:n.exponents}))}if(0n===n)return s;for(const e of t.termsByKey.values()){const t=new Array(this.variableCount);for(let n=0;n<this.variableCount;n++)t[n]=e.exponents[n]+r[n];const i=Object.freeze(t),o=SparsePolynomial.keyOf(i),a=s.termsByKey.get(o),l=(a?.coefficient??0n)-e.coefficient*n;0n===l?s.termsByKey.delete(o):s.termsByKey.set(o,Object.freeze({coefficient:l,exponents:a?.exponents??i}))}return s}negate(){return this.scale(-1n)}normalizeLeadingSign(e="lex"){const t=this.leadingTerm(e);return null!==t&&t.coefficient<0n?this.negate():this}pow(e){if(e<0n)throw new RangeError((0,i.message)("sparseExponentNonNegative"));let t=SparsePolynomial.constant(this.variableCount,1n),n=e;if(0n===n)return t;if(1n==(1n&n)&&(t=t.multiply(this)),n>>=1n,0n===n)return t;let r=this.multiply(this);for(;n>0n;)1n==(1n&n)&&(t=t.multiply(r)),n>>=1n,n>0n&&(r=r.multiply(r));return t}primitivePart(){const e=this.content();return 0n===e||1n===e?this:this.divideByScalarExact(e)}scale(e){if(0n===e||this.isZero())return SparsePolynomial.zero(this.variableCount);const t=SparsePolynomial.zero(this.variableCount);for(const[n,i]of this.termsByKey)t.termsByKey.set(n,Object.freeze({coefficient:i.coefficient*e,exponents:i.exponents}));return t}subtract(e){if(this.variableCount!==e.variableCount)throw new RangeError((0,i.message)("sparseSubtractionRingMismatch"));const t=SparsePolynomial.zero(this.variableCount);for(const[e,n]of this.termsByKey)t.termsByKey.set(e,n);for(const[n,i]of e.termsByKey){const e=t.termsByKey.get(n),r=(e?.coefficient??0n)-i.coefficient;0n===r?t.termsByKey.delete(n):void 0!==e&&r===e.coefficient||t.termsByKey.set(n,Object.freeze({coefficient:r,exponents:e?.exponents??i.exponents}))}return t}get termCount(){return this.termsByKey.size}terms(){return Array.from(this.termsByKey.values())}totalDegree(){if(this.isZero())return null;let e=0n;for(const t of this.termsByKey.values()){let n=0n;for(const e of t.exponents)n+=e;n>e&&(e=n)}return e}variables(){const e=new Set;for(const t of this.termsByKey.values())for(let n=0;n<this.variableCount;n++)0n!==t.exponents[n]&&e.add(n);return Array.from(e).sort((e,t)=>e-t)}}t.SparsePolynomial=SparsePolynomial},6105(e,t,n){"use strict";t.expressionToSparsePolynomial=function expressionToSparsePolynomial(e){const t=e.variables().sort(),n=new Map(t.map((e,t)=>[e,t]));function powerOf(e){const t=e.getPower();if(!t.isInteger()||t.sign()<0)throw new i.PolynomialError((0,i.message)("notAPolynomial"));return t.getMultiplier().numerator}function integerMultiplier(e){const t=e.getMultiplier();if(1n!==t.denominator)throw new Error((0,i.message)("integerRequired"));return t.numerator}const r=function convert(e){const r=t.length;if(e.isNUM())return a.SparsePolynomial.constant(r,integerMultiplier(e));if(e.isVAR()){const t=n.get(e.value);if(void 0===t)throw new i.PolynomialError((0,i.message)("notAPolynomial"));const s=new Array(r).fill(0n);return s[t]=powerOf(e),a.SparsePolynomial.monomial(r,integerMultiplier(e),s)}if(e.isSum()){let t=a.SparsePolynomial.zero(r);for(const n of e.elementsArray())t=t.add(convert(n));return t.pow(powerOf(e)).scale(integerMultiplier(e))}if(e.isProduct()){let t=a.SparsePolynomial.constant(r,1n);for(const n of e.elementsArray())t=t.multiply(convert(n));return t.pow(powerOf(e)).scale(integerMultiplier(e))}throw new i.PolynomialError((0,i.message)("notAPolynomial"))}(e),s=t.map((e,t)=>({variable:e,index:t,degree:r.degree(t)??0n})).sort((e,t)=>e.degree<t.degree?-1:e.degree>t.degree?1:e.variable.localeCompare(t.variable)),o=s.map(e=>e.variable);if(s.every((e,t)=>e.index===t))return{polynomial:r,variables:o};const l=r.terms().map(e=>({coefficient:e.coefficient,exponents:s.map(t=>e.exponents[t.index])}));return{polynomial:new a.SparsePolynomial(r.variableCount,l),variables:o}},t.expressionToIntegerSparsePolynomial=expressionToIntegerSparsePolynomial,t.sparsePolynomialToExpression=function sparsePolynomialToExpression(e,t){if(t.length!==e.variableCount)throw new RangeError((0,i.message)("sparseExpressionConversionNameCount"));let n=(0,o.zero)();for(const i of e.terms()){let e=s.Expression.Number(i.coefficient);for(let n=0;n<t.length;n++){const r=i.exponents[n];if(0n===r)continue;const o=s.Expression.Variable(t[n]);e=e.times(1n===r?o:o.pow(s.Expression.Number(r)))}n=n.plus(e)}return n};const i=n(4703),r=n(551),s=n(296),o=n(6099),a=n(7248);function expressionToIntegerSparsePolynomial(e,t){const n=new Set;for(const e of t){if(n.has(e))throw new RangeError((0,i.message)("sparseAdapterVariablesUnique"));n.add(e)}for(const t of e.variables())if(!n.has(t))throw new RangeError((0,i.message)("sparseAdapterVariablesIncludeEvery"));const s=t.length,o=new Map(t.map((e,t)=>[e,t]));function powerOf(e){const t=e.getPower();if(!t.isInteger()||t.sign()<0)throw new i.PolynomialError((0,i.message)("notAPolynomial"));return t.getMultiplier().numerator}function normalize(e,t){if(e.isZero())return{polynomial:e,denominator:1n};const n=(0,r.GCD)(e.content(),t);return 1n===n?{polynomial:e,denominator:t}:{polynomial:e.divideByScalarExact(n),denominator:t/n}}function applyPowerAndMultiplier(e,t,n){const i=powerOf(e),r=e.getMultiplier();return normalize(t.pow(i).scale(r.numerator),n**i*r.denominator)}const l=function convert(e){const t=e.getMultiplier();if(e.isNUM())return normalize(a.SparsePolynomial.constant(s,t.numerator),t.denominator);if(e.isVAR()){const n=o.get(e.value);if(void 0===n)throw new i.PolynomialError((0,i.message)("notAPolynomial"));const r=new Array(s).fill(0n);return r[n]=powerOf(e),normalize(a.SparsePolynomial.monomial(s,t.numerator,r),t.denominator)}if(e.isSum()){let t=a.SparsePolynomial.zero(s),n=1n;for(const i of e.elementsArray()){const e=convert(i),s=(0,r.LCM)(n,e.denominator);t=t.scale(s/n).add(e.polynomial.scale(s/e.denominator)),n=s}return applyPowerAndMultiplier(e,t,n)}if(e.isProduct()){let t=a.SparsePolynomial.constant(s,1n),n=1n;for(const i of e.elementsArray()){const e=convert(i);t=t.multiply(e.polynomial),n*=e.denominator}return applyPowerAndMultiplier(e,t,n)}throw new i.PolynomialError((0,i.message)("notAPolynomial"))}(e),u=[...l.polynomial.terms()].sort((e,t)=>-a.SparsePolynomial.compareMonomials(e.exponents,t.exponents,"lex"));return{polynomial:new a.SparsePolynomial(s,u),denominator:l.denominator}}function polynomialToIntegerSparsePolynomial(e,t){return expressionToIntegerSparsePolynomial(e.getExpression(),t)}},5640(e,t,n){"use strict";t.Term=void 0;const i=n(6441),r=n(551),s=n(3703),o=n(5869),a=n(296),l=n(8300);class Term{coeff;dataType=l.TERM;expression;length;multidegArray;powers;totalPower;valueString;variables;constructor(e,t,n){"string"==typeof t?(this.powers={},t.split(",").forEach((e,t)=>{this.powers[n[t]]=Number(e)})):this.powers=t,this.coeff="string"==typeof e?a.Expression.create(e):e,this.length=this.getLength(),this.variables=[...n].sort()}static isTerm(e){return(0,i.isNerdamerNativeType)(e,l.TERM)}getLength(){let e=0;for(const t in this.powers)this.powers[t]>0&&e++;return e}update(){return this.updateMultiDegArray(),this.updateTotalPower(),this.length=this.getLength(),this}updateMultiDegArray(){const e=this.multideg(this.variables);return this.multidegArray=e,e}updateTotalPower(){let e=0;for(const t in this.powers)e+=this.deg(t);return this.totalPower=e,e}canAddOrSubtract(e){return this.getValueString()===e.getValueString()}copy(){return new Term(this.coeff.copy(),{...this.powers},this.variables)}deg(e,t){return void 0!==t?(this.powers[e]=t,this):this.powers[e]||0}diff(e,t=1){const n=this.deg(e);let i;if(t>n)i=new Term("0","0",[]);else{i=this.copy(),i.powers[e]=n-t;const s=t-1,o=(0,r.productInRange)(n-s,n);i.coeff=i.coeff.times(BigInt(o))}return i}difference(e){const t=this.getMultidegArray(),n=e.getMultidegArray(),i=[];for(let e=0;e<t.length;e++)i[e]=t[e]-n[e];return i}div(e){const t=this.copy();t.coeff=t.coeff.div(e.coeff);for(const n in e.powers)t.variables.includes(n)||t.variables.push(n),t.deg(n,t.deg(n)-e.deg(n));return t.update()}divides(e){if(0===this.getTotalPower())return!0;for(const t in this.powers)if(this.deg(t)>e.deg(t))return!1;return!0}eq(e){return this.div(e).eqNumber(1)}eqNumber(e){return 0===(0,s.sum)(...Object.values(this.powers))&&this.coeff.eq(e)}getExpression(){if(void 0===this.expression){let e=this.coeff.copy();for(const t of this.variables){const n=this.deg(t);0!==n&&(e=e.times(a.Expression.Variable(t).pow(n)))}this.expression=e}return this.expression}getMultidegArray(){let e=this.multidegArray;return void 0===e&&(e=this.updateMultiDegArray()),e}getTotalPower(){let e=this.totalPower;return void 0===e&&(e=this.updateTotalPower()),e}getValueString(e){if(void 0===this.valueString||void 0!==e)if(0===this.getTotalPower())this.valueString="1";else{const t=e||[...this.variables].sort(),n=[];for(const e of t){const t=this.deg(e),i=1===t?"":a.Expression.POW_OPR+t;0!==t&&n.push(`${e}${i}`)}this.valueString=n.join("*")}return this.valueString}isConstant(){for(const e in this.powers)if(0!==this.powers[e])return!1;return!0}isZero(){return this.coeff.isZero()}LCM(e,t=!1){const n=(0,o.arrayAddUnique)([...this.variables],e.variables),i={};for(const t of n)i[t]=Math.max(this.deg(t),e.deg(t));const r=t?a.Expression.fromRational(this.coeff.getMultiplier().LCM(e.coeff.getMultiplier())):"1";return new Term(r,i,n)}max(){return Object.keys(this.powers).reduce((e,t)=>this.powers[e]>this.powers[t]?e:t)}min(){return Object.keys(this.powers).reduce((e,t)=>this.powers[e]<this.powers[t]?e:t)}multideg(e){const t=[];for(const n of e)t.push(this.deg(n));return t}text(e){let t,n=this.coeff.text();if(this.coeff.isSum()&&(n=`(${n})`),"0"===n)t=n;else{let i=this.getValueString(e);"1"===i&&(i=""),i&&("1"===n?n="":"-1"===n?n="-":n+="*"),t=`${n}${i}`}return t}times(e){const t=this.copy();t.coeff=t.coeff.times(e.coeff);for(const n in e.powers)t.variables.includes(n)||t.variables.push(n),t.deg(n,t.deg(n)+e.deg(n));return t.update()}toString(){return this.text()}}t.Term=Term},1808(e,t,n){"use strict";t.loadPolynomialFunctions=function loadPolynomialFunctions(){Object.assign(i.mathFunctionRegistry,{deg:(0,i.systemFunction)({fn:r.deg,minArgs:1,maxArgs:2,distElWise:!0}),content:(0,i.systemFunction)({fn:r.content,minArgs:1,maxArgs:1,distElWise:!0}),coeffs:(0,i.systemFunction)({fn:r.coeffs,minArgs:1,maxArgs:2,distElWise:!1}),div:(0,i.systemFunction)({fn:r.div,minArgs:2,maxArgs:2,distElWise:!1}),divide:(0,i.systemFunction)({fn:r.divide,minArgs:2,maxArgs:2,distElWise:!1})})};const i=n(9426),r=n(6913)},6913(e,t,n){"use strict";t.deg=function deg(e,t){let n,r;void 0!==t&&(n=i.Expression.create(t),r=(0,s.assertPlainVariableAndGetString)(n));let a;if(l.Polynomial.isPolynomial(e))a=i.Expression.create(e.deg(r));else{const t=i.Expression.create(e);try{const e=t.variables().sort(),n=(0,u.expressionToIntegerSparsePolynomial)(t,e);let s;if(void 0===r)s=n.polynomial.totalDegree()??0n;else{const t=e.indexOf(r);s=-1===t?0n:n.polynomial.degree(t)??0n}a=i.Expression.Number(s)}catch{try{a=i.Expression.create(new l.Polynomial(t).deg(r))}catch{}}}const c=l.Polynomial.isPolynomial(e)?e.getExpression():e,m=void 0===n?[c]:[c,n];return a??i.Expression.toFunction(o.DEG,m)},t.content=function content(e){let t;if(l.Polynomial.isPolynomial(e))t=i.Expression.create(e.content());else{const n=i.Expression.create(e);try{if(n.isZero())t=i.Expression.create(new l.Polynomial(n).content());else{const e=n.variables().sort(),r=(0,u.expressionToIntegerSparsePolynomial)(n,e);t=i.Expression.Number(r.polynomial.content()).div(i.Expression.Number(r.denominator)),t.getMultiplier().asDecimal=n.hasDecimal()}}catch{try{t=i.Expression.create(new l.Polynomial(n).content())}catch{}}}return t??i.Expression.toFunction(o.CONTENT,[l.Polynomial.isPolynomial(e)?e.getExpression():e])},t.coeffs=function coeffs(e,t){const n=i.Expression.create(e);let r;r=void 0!==t?(0,s.assertPlainVariableAndGetString)(i.Expression.create(t)):n.variables()[0];return void 0===r?new a.Vector([n.copy()]):n.coeffs(r).toVector()},t.div=function div(e,t){const n=i.Expression.create(e),s=i.Expression.create(t);let o;if(n.isPolynomialLike()&&s.isPolynomialLike()){const[e,t]=(0,c.divide)(n,s);o=new a.Vector([e,t])}else o=new a.Vector([(0,r.zero)(),n]);return o},t.divide=function divide(e,t){const n=i.Expression.create(e),r=i.Expression.create(t);let s;if(n.isPolynomialLike()&&r.isPolynomialLike()){const[e,t]=(0,c.divide)(n,r);s=e.plus(t.div(r))}else s=n.div(r);return s};const i=n(296),r=n(6099),s=n(1897),o=n(8300),a=n(3982),l=n(2116),u=n(6105),c=n(9565)},9565(e,t,n){"use strict";t.divide=divide,t.polyMod=function polyMod(e,t,n,i){const{variables:r}=normalizePolynomialInputs([e,t],n,i),[,s]=divide(e,t,n,r);return o.Polynomial.toPolynomial(s,n,r).order(n)},t.maxCommonVariableOccurrence=function maxCommonVariableOccurrence(e,t){const n=o.Polynomial.toPolynomial(e).maxVariableFrequency(),i=o.Polynomial.toPolynomial(t).maxVariableFrequency();for(const e in n)if(e in i)return e};const i=n(4703),r=n(5869),s=n(6099),o=n(2116);function normalizePolynomialInputs(e,t,n){const i=e.map(e=>o.Polynomial.toPolynomial(e,t,n));if(void 0!==n)return{polynomials:i,variables:n};const r=combinePolynomialVariables(i);return 0===r.length?{polynomials:i,variables:void 0}:{polynomials:e.map(e=>o.Polynomial.toPolynomial(e,t,r)),variables:r}}function polyDiv(e,t,n,r){const{polynomials:o}=normalizePolynomialInputs([...e,t],n,r),a=o.slice(0,e.length);let l=o[e.length].order(n);const u=e.map(()=>(0,s.zero)());let c=(0,s.zero)(),m=0;const p=1e3*e.length;for(;!l.isZero();){if(m++>p)throw new Error((0,i.message)("polynomialMaximumIterations"));let e=!1;const t=a.length;let r=0;for(;r<t&&!e;){const t=a[r],i=t.LT(),s=l.LT();if(i.divides(s)){const o=s.div(i);u[r]=u[r].plus(o.getExpression()),l=l.minus(t.times(o)).order(n),e=!0}else r++}const s=l.LT();e||(c=c.plus(s.getExpression()),l=l.minus(s).order(n))}return[u,c]}function divide(e,t,n,i){const[r,s]=polyDiv([t],e,n,i);return[r[0],s]}function combinePolynomialVariables(e){let t=[];return e.forEach(e=>{t=(0,r.arrayAddUnique)(t,e.variables)}),t.sort(),t}},5584(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Rational=t.MAX_SCIENTIFIC_SIGNIFICANT_DIGITS=void 0,t.validateScientificSignificantDigits=validateScientificSignificantDigits;const r=i(n(3110)),s=n(6441),o=n(4703),a=n(551),l=n(551),u=n(7103),c=n(296),m=n(8300);function validateScientificSignificantDigits(e,n=String(e)){if("number"!=typeof e||!Number.isInteger(e)||e<1||e>t.MAX_SCIENTIFIC_SIGNIFICANT_DIGITS)throw new o.UnexpectedInputError((0,o.message)("wrongInput",{expected:`an integer from 1 to ${t.MAX_SCIENTIFIC_SIGNIFICANT_DIGITS}`,received:n}));return e}t.MAX_SCIENTIFIC_SIGNIFICANT_DIGITS=1e9;class Rational{static E=Rational.create(m.PARSER_CONSTANTS.e());static PI=Rational.create(m.PARSER_CONSTANTS.pi());static precision=r.default.precision;asDecimal=!1;dataType=m.RATIONAL;denominator;numerator;value;constructor(e,t){this.numerator=e,this.denominator=t,this.value=1n===t?String(e):`${e}/${t}`}static allNegative(...e){for(const t of e)if(-1!==t.sign())return!1;return!0}static create(e){let t,n,i=!1;if("bigint"==typeof e)t=e,n=1n,e=String(t);else if(/^[+-]?\d+$/.test(e))t=BigInt(e),n=1n;else if(e.includes("/")){if([t,n]=e.split("/").map(e=>BigInt(e)),0n===n)throw new o.DivisionByZeroError((0,o.message)("divisionByZero"));n<0n&&(t=-t,n=-n),[t,n]=(0,a.simplifyRatio)(t,n),e=1n===n?String(t):`${t}/${n}`}else{const r=e.toLocaleLowerCase().includes("e");i=r||e.includes(m.DOT),r&&(e=(0,u.scientificToDecimal)(e),i=!0),[t,n]=(0,a.convert)(e)}const r=new Rational(t,n);return r.value=e,r.asDecimal=i,r}static GCD(...e){let t=e[0];for(let n=1;n<e.length;n++)t=t.GCD(e[n]);return t}static getPrecision(){return Rational.precision}static hook(e){return e}static isRational(e){return(0,s.isNerdamerNativeType)(e,m.RATIONAL)}static LCM(...e){let t=e[0];for(let n=1;n<e.length;n++)t=t.LCM(e[n]);return t}static set(e){if("precision"in e){const t=Number(e.precision);r.default.set({precision:t}),Rational.precision=t,Rational.PI=Rational.create(m.PARSER_CONSTANTS.pi()),Rational.E=Rational.create(m.PARSER_CONSTANTS.e())}}static toRational(e,t=!1){return"string"==typeof e?Rational.create(e):t?e.copy():e}abs(){const e=this.copy();return e.numerator=(0,a.abs)(e.numerator),e.updateValue(),e}copy(){const e=new Rational(this.numerator,this.denominator);return e.value=this.value,e.asDecimal=this.asDecimal,e}div(e){let t;return c.Expression.isExpression(e)?t=c.Expression.create(this).div(e):(e=Rational.toRational(e,!0),t=this.times(e.invert())),t}eq(e){return c.Expression.isExpression(e)?c.Expression.create(this).eq(e):(e=Rational.toRational(e),this.numerator*e.denominator===e.numerator*this.denominator)}evenDenominator(){return(0,a.isEven)(this.denominator)}evenNumerator(){return(0,a.isEven)(this.numerator)}GCD(e){e=Rational.toRational(e);const[t,n]=(0,a.simplifyRatio)((0,l.GCD)(this.numerator*e.denominator,this.denominator*e.numerator),this.denominator*e.denominator),i=new Rational(t,n);return i.asDecimal=this.asDecimal||e.asDecimal,i}gt(e){return c.Expression.isExpression(e)?c.Expression.create(this).gt(e):(e=Rational.toRational(e),this.numerator*e.denominator>e.numerator*this.denominator)}gte(e){return e=Rational.toRational(e),this.numerator*e.denominator>=e.numerator*this.denominator}invert(){if(this.isZero())throw new o.DivisionByZeroError((0,o.message)("divisionByZero"));const e=this.copy(),t=e.sign();return e.numerator=(0,a.abs)(e.numerator),[e.numerator,e.denominator]=[e.denominator,e.numerator],-1===t?e.neg():e.updateValue()}isEven(){return this.isInteger()&&this.evenNumerator()}isInteger(){return 1n===this.denominator}isMinusOne(){return-1n===this.numerator&&1n===this.denominator}isNegative(){return this.numerator<0n}isOne(){return 1n===this.numerator&&1n===this.denominator}isZero(){return 0n===this.numerator}LCM(e){e=Rational.toRational(e);let t=0n,n=1n;this.isZero()||e.isZero()||([t,n]=(0,a.simplifyRatio)((0,a.abs)(this.numerator*e.numerator),(0,l.GCD)(this.numerator*e.denominator,this.denominator*e.numerator)));const i=new Rational(t,n);return i.asDecimal=this.asDecimal||e.asDecimal,i}lt(e){return e=Rational.toRational(e),this.numerator*e.denominator<e.numerator*this.denominator}lte(e){return e=Rational.toRational(e),this.numerator*e.denominator<=e.numerator*this.denominator}minus(e){let t;return c.Expression.isExpression(e)?t=c.Expression.create(this).minus(e):(e=Rational.toRational(e,!0),t=this.plus(e.neg())),t}mod(e){e=Rational.toRational(e);const t=(0,l.mod)(this.numerator*e.denominator,e.numerator*this.denominator),n=this.denominator*e.denominator,i=new Rational(...(0,a.simplifyRatio)(t,n));return i.asDecimal=this.asDecimal||e.asDecimal,i}neg(){const e=this.copy();return e.numerator*=-1n,e.updateValue(),e}plus(e){let t;if(c.Expression.isExpression(e))t=c.Expression.create(this).plus(e);else{let n,i;(e=Rational.toRational(e)).denominator===this.denominator?(n=e.numerator+this.numerator,i=e.denominator):(n=this.numerator*e.denominator+e.numerator*this.denominator,i=this.denominator*e.denominator),[n,i]=(0,a.simplifyRatio)(n,i),t=new Rational(n,i),t.asDecimal=this.asDecimal||e.asDecimal}return t}pow(e){let t;if(c.Expression.isExpression(e))t=c.Expression.create(this).pow(e);else{if(e=Rational.toRational(e),this.isZero()&&e.isZero())throw new o.ZeroToZeroPowerError((0,o.message)("zeroToZeroPower"));if(e.isInteger()){let n=e.numerator,i=this.numerator,r=this.denominator;if(n<0n){const e=this.invert();i=e.numerator,r=e.denominator,n=(0,a.abs)(n)}const[s,o]=(0,a.simplifyRatio)(i**n,r**n);t=new Rational(s,o),t.asDecimal=this.asDecimal}else{const n=this.toDecimal().toPower(e.toDecimal()).toString();t=Rational.create(n),t.asDecimal=this.asDecimal||t.asDecimal}}return t}sign(){return(0,a.sign)(this.numerator)}text(e){let t,n;const i=this.isInteger(),s=i?(this.numerator<0n?-this.numerator:this.numerator).toString().length:0,o=!0===e?.exactScientific,a=e&&"scientific"in e&&void 0!==e.scientific?validateScientificSignificantDigits(e.scientific):void 0;if(void 0!==a)if(this.isZero())n="0";else{const e=r.default.precision,t=Math.max(e,a);try{t!==e&&r.default.set({precision:t});const l=this.toDecimal().toExponential(a-1),[u,c]=l.split("e"),m=BigInt(c),p=0n===m?u:`${u}e${m}`;(!o||i&&s>a&&0n!==m&&Rational.create(p).eq(this))&&(n=p)}finally{r.default.precision!==e&&r.default.set({precision:e})}}if(void 0!==n)t=n;else if(this.asDecimal||e?.decimal)if(i)t=`${this.numerator}.0`;else{const n=r.default.precision,i=Number(e?.precision)||n;if(i===n)t=this.toDecimal().toString();else try{r.default.set({precision:i}),t=this.toDecimal().toString()}finally{r.default.set({precision:n})}t.includes(".")||/[eE]/.test(t)||(t+=".0")}else t=i?`${this.numerator}`:`${this.numerator}/${this.denominator}`;return t}times(e){let t;if(c.Expression.isExpression(e))t=e.times(this);else{e=Rational.toRational(e);const[n,i]=(0,a.simplifyRatio)(this.numerator*e.numerator,this.denominator*e.denominator);t=new Rational(n,i),t.asDecimal=this.asDecimal||e.asDecimal}return t}toDecimal(){let e=new r.default(String(this.numerator));return 1n!==this.denominator&&(e=e.div(String(this.denominator))),e}toDecimalString(e){const t=(0,a.sign)(this.numerator),n=(0,a.abs)(this.numerator),i=this.denominator,r=n/i,s=n%i,o=e??Rational.precision,l=(10n**BigInt(o)*s/i).toString();return`${t<0?"-":""}${r}.${"0".repeat(Math.max(0,o-l.length))}${l}`.replace(/0+$/g,"").replace(/\.$/g,"")}toString(e){return this.text(e)}updateValue(){return this.value=1n===this.denominator?String(this.numerator):`${this.numerator}/${this.denominator}`,this}valueOf(){const e=Number(this.numerator),t=Number(this.denominator);let n;return n=Number.isSafeInteger(e)&&Number.isSafeInteger(t)?e/t:Number(this.toDecimal()),n}}t.Rational=Rational},5598(e,t,n){"use strict";t.ValuesSet=void 0;const i=n(6746),r=n(6441),s=n(4703),o=n(296),a=n(8300);class ValuesSet extends i.MathematicalAggregate{_elements=[];dataType=a.SET;isEnumerable=!0;precision;constructor(e){if(super(),e)for(const t of e)this.add(t)}static isValuesSet(e){return(0,r.isNerdamerNativeType)(e,a.SET)||(0,r.isNerdamerNativeType)(e,a.SOLUTIONS_SET)}addKnownUnique(e){this._elements.push(e.copy())}getValuesArray(){return this.elements}setValuesArray(e){this.clear();for(const t of e)this.add(t)}indexOf(e){for(let t=0;t<this._elements.length;t++)if(this.membersEqual(this._elements[t],e))return t;return-1}membersEqual(e,t){let n=!1;try{n=e.eq(t)&&t.eq(e)}catch(e){if(!(e instanceof s.UnexpectedDataType))throw e}return n}__get__(e){const t=e[0];if(t<0||t>=this._elements.length)throw new RangeError((0,s.message)("indexOutOfBounds",{index:String(t),type:String(this.dataType),length:String(this._elements.length)}));return this._elements[t].copy()}__set__(e,t){const n=e[0];if(n<0||n>=this._elements.length)throw new RangeError((0,s.message)("indexOutOfBounds",{index:String(n),type:String(this.dataType),length:String(this._elements.length)}));const i=t.copy(),r=this.indexOf(i);-1!==r&&r!==n?this._elements.splice(n,1):this._elements[n]=i}add(e){return this.has(e)||this._elements.push(e.copy()),this}addMany(e){for(const t of e)this.add(t);return this}at(e){const t=this._elements[e];return t?t.copy():void 0}clear(){return this._elements.length=0,this}copy(){return new ValuesSet(this._elements)}count(){return this._elements.length}delete(e){const t=this.indexOf(e);return-1!==t&&(this._elements.splice(t,1),!0)}difference(e){const t=new ValuesSet;for(const n of this._elements)e.has(n)||t.add(n);return t}dimensions(){return[this._elements.length]}div(e){throw new s.UnsupportedOperationError((0,s.message)("unsupportedOperation"))}each(e){const t=[];for(let n=0;n<this._elements.length;n++){const i=e(this._elements[n].copy(),n),r=void 0===i?this._elements[n]:i;let s=!1;for(let e=0;e<t.length;e++)if(this.membersEqual(t[e],r)){s=!0;break}s||t.push(r.copy())}return this._elements=t,this}get elements(){return this._elements.map(e=>e.copy())}eq(e){return!!ValuesSet.isValuesSet(e)&&(e.count()===this.count()&&this.isSubsetOf(e))}evaluate(e){return this.copy().each(t=>o.Expression.isExpression(t)?t.evaluate(e):t.evaluate())}expand(){return this.copy().each(e=>e.expand())}gt(e){return ValuesSet.isValuesSet(e)&&this.isProperSupersetOf(e)}gte(e){return ValuesSet.isValuesSet(e)&&this.isSupersetOf(e)}has(e){return-1!==this.indexOf(e)}intersection(e){const t=new ValuesSet;for(const n of this._elements)e.has(n)&&t.add(n);return t}isDisjointFrom(e){for(const t of this._elements)if(e.has(t))return!1;return!0}isProperSubsetOf(e){return this.count()<e.count()&&this.isSubsetOf(e)}isProperSupersetOf(e){return this.count()>e.count()&&this.isSupersetOf(e)}isSubsetOf(e){for(const t of this._elements)if(!e.has(t))return!1;return!0}isSupersetOf(e){return e.isSubsetOf(this)}lt(e){return ValuesSet.isValuesSet(e)&&this.isProperSubsetOf(e)}lte(e){return ValuesSet.isValuesSet(e)&&this.isSubsetOf(e)}minus(e){throw new s.UnsupportedOperationError((0,s.message)("unsupportedOperation"))}plus(e){throw new s.UnsupportedOperationError((0,s.message)("unsupportedOperation"))}pow(e){throw new s.UnsupportedOperationError((0,s.message)("unsupportedOperation"))}sort(e){return e?this._elements.sort((t,n)=>e(t.copy(),n.copy())):this._elements.sort((e,t)=>{const n=e&&"function"==typeof e.text?e.text():String(e),i=t&&"function"==typeof t.text?t.text():String(t);return n<i?-1:n>i?1:0}),this}symmetricDifference(e){const t=this.difference(e);return t.addMany(e.difference(this)._elements),t}text(){return`{${this._elements.map(e=>e.text()).join(", ")}}`}times(e){throw new s.UnsupportedOperationError((0,s.message)("unsupportedOperation"))}union(e){const t=new ValuesSet(this._elements);return t.addMany(e._elements),t}}t.ValuesSet=ValuesSet},3982(e,t,n){"use strict";t.Vector=void 0;const i=n(6746),r=n(6441),s=n(4861),o=n(4703),a=n(6284),l=n(296),u=n(6099),c=n(8300),m=n(2116);class Vector extends i.MathematicalAggregate{dataType=c.VECTOR;elements;isEnumerable=!0;precision;constructor(e){super(),a.Collection.isCollection(e)?this.elements=e.elements.map(e=>e.copy()):this.elements=e?(0,s.toParserEntities)(e):[]}static create(e){return new Vector(e.map(e=>l.Expression.create(e)))}static isVector(e){return(0,r.isNerdamerNativeType)(e,c.VECTOR)}getValuesArray(){return[...this.elements]}setValuesArray(e){this.elements=e}__get__(e){const t=e[0];if(t<0||t>=this.elements.length)throw new o.UnexpectedDataType((0,o.message)("indexOutOfBounds",{index:String(t),type:"Vector",length:String(this.elements.length)}));return this.elements[t]}add(e){return this.append(e)}append(e){return this.elements.push(e),this}arrayMap(e){const t=[];for(let n=0;n<this.elements.length;n++)t.push(e(this.elements[n]));return t}at(e){return this.elements[e]}clear(){return this.elements=[],this}copy(){const e=new Vector;return this.each((t,n)=>(e.elements[n]=t.copy(),t)),this.copySymbolicAccessTo(e)}count(){return this.elements.length}cross(e){if(3!==this.elements.length||3!==e.elements.length)throw new o.DimensionError((0,o.message)("incorrectCrossDimension"));const t=this.getExpressionAt(0),n=this.getExpressionAt(1),i=this.getExpressionAt(2),r=e.getExpressionAt(0),s=e.getExpressionAt(1),a=e.getExpressionAt(2);return Vector.create([n.times(a).minus(i.times(s)),i.times(r).minus(t.times(a)),t.times(s).minus(n.times(r))])}delete(e){const t=this.indexOf(e);return-1!==t&&(this.elements.splice(t,1),!0)}dimensions(){return[this.elements.length]}div(e){if(Vector.isVector(e)&&!this.dimensionsMatch(e))throw new o.DimensionError((0,o.message)("mismatchedDimensions",{function:"Vector.div"}));return super.div(e)}dot(e){if(this.elements.length!==e.elements.length)throw new o.DimensionError((0,o.message)("mismatchedDimensions",{function:"Vector.dot"}));let t=(0,u.zero)();for(let n=0;n<this.elements.length;n++)t=t.plus(this.getExpressionAt(n).times(e.getExpressionAt(n)));return t}each(e){for(let t=0;t<this.elements.length;t++){const n=e(this.elements[t],t);void 0!==n&&(this.elements[t]=n)}return this}eq(e){if(!Vector.isVector(e)||e.elements.length!==this.elements.length)return!1;for(let t=0;t<this.elements.length;t++)if(!this.elements[t].eq(e.elements[t]))return!1;return!0}evaluate(e){let t;const n=l.Expression.fromSymbolicAccess(this);if(n&&e)t=n.evaluate(e);else{const n=this.copy();n.each(t=>l.Expression.isExpression(t)?t.evaluate(e):t.evaluate()),t=n}return t}expand(){const e=this.copy();return e.each(e=>e.expand()),e}extend(e){if(!Vector.isVector(e))throw new o.UnexpectedDataType((0,o.message)("vectorExpected",{type:c.dataTypes[e.dataType]}));return this.elements.push(...e.elements),this}getExpressionAt(e){const t=this.elements[e];if(!l.Expression.isExpression(t))throw new o.UnexpectedDataType((0,o.message)("expressionExpected",{type:c.dataTypes[t.dataType]}));return t}gt(e){if(!Vector.isVector(e)||e.elements.length!==this.elements.length)return!1;for(let t=0;t<this.elements.length;t++)if(!this.elements[t].gt(e.elements[t]))return!1;return!0}gte(e){if(!Vector.isVector(e)||e.elements.length!==this.elements.length)return!1;for(let t=0;t<this.elements.length;t++)if(!this.elements[t].gte(e.elements[t]))return!1;return!0}indexOf(e){for(let t=0;t<this.elements.length;t++){if(this.elements[t].eq(e))return t}return-1}insert(e,t){return this.elements.splice(e,0,t),this}lt(e){if(!Vector.isVector(e)||e.elements.length!==this.elements.length)return!1;for(let t=0;t<this.elements.length;t++)if(!this.elements[t].lt(e.elements[t]))return!1;return!0}lte(e){if(!Vector.isVector(e)||e.elements.length!==this.elements.length)return!1;for(let t=0;t<this.elements.length;t++)if(!this.elements[t].lte(e.elements[t]))return!1;return!0}minus(e){if(Vector.isVector(e)&&!this.dimensionsMatch(e))throw new o.DimensionError((0,o.message)("mismatchedDimensions",{function:"Vector.minus"}));return super.minus(e)}norm(){let e=(0,u.zero)();for(let t=0;t<this.elements.length;t++)e=e.plus(this.getExpressionAt(t).abs().sq());return e.pow("1/2")}plus(e){if(Vector.isVector(e)&&!this.dimensionsMatch(e))throw new o.DimensionError((0,o.message)("mismatchedDimensions",{function:"Vector.plus"}));return super.plus(e)}pop(e){let t;return t=void 0!==e?this.elements.splice(e,1)[0]:this.elements.pop(),t}pow(e){if(Vector.isVector(e)&&!this.dimensionsMatch(e))throw new o.DimensionError((0,o.message)("mismatchedDimensions",{function:"Vector.pow"}));return super.pow(e)}prod(){let e=(0,u.one)();return this.each(t=>{e=e.times(l.Expression.create(t))}),e}remove(e){const t=this.indexOf(e);return-1!==t&&this.elements.splice(t,1),this}reverse(){return this.elements.reverse(),this}sum(){let e=(0,u.zero)();return this.each(t=>{e=e.plus(l.Expression.create(t))}),e}text(){const e=`[${this.elements.map(e=>e.text()).join(", ")}]`;return this.formatSymbolicAccess(e)}times(e){let t;if((0,r.isNerdamerNativeType)(e,c.MATRIX)){const n=e;if(0===n.cols()){if(this.count()!==n.rows())throw new o.MathError((0,o.message)("mismatchedDimensions",{function:"Matrix.times"}));t=new Vector}else t=n.transpose().times(this)}else{if(Vector.isVector(e)&&!this.dimensionsMatch(e))throw new o.DimensionError((0,o.message)("mismatchedDimensions",{function:"Vector.times"}));t=super.times(e)}return t}toPolynomial(e=["x"]){return m.Polynomial.fromArray(this.elements,e)}trim(){const e=[];for(const t of this.elements)t.eq((0,u.zero)())||e.push(t);return this.elements=e,this}}t.Vector=Vector},1027(e,t,n){"use strict";t.loadVectorFunctions=function loadVectorFunctions(){Object.assign(i.mathFunctionRegistry,{dot:(0,i.systemFunction)({fn:r.dot,minArgs:2,maxArgs:2,distElWise:!1}),cross:(0,i.systemFunction)({fn:r.cross,minArgs:2,maxArgs:2,distElWise:!1})})};const i=n(9426),r=n(3552)},3552(e,t,n){"use strict";t.dot=function dot(e,t){let n;if(o.Vector.isVector(e)&&o.Vector.isVector(t))n=e.dot(t);else{if(!r.Expression.isExpression(e)||!r.Expression.isExpression(t)){const n=o.Vector.isVector(e)?t:e;throw new i.UnexpectedDataType((0,i.message)("vectorExpected",{type:s.dataTypes[n.dataType]}))}n=r.Expression.toFunction(s.DOT_PRODUCT,[e,t])}return n},t.cross=function cross(e,t){let n;if(o.Vector.isVector(e)&&o.Vector.isVector(t))n=e.cross(t);else{if(!r.Expression.isExpression(e)||!r.Expression.isExpression(t)){const n=o.Vector.isVector(e)?t:e;throw new i.UnexpectedDataType((0,i.message)("vectorExpected",{type:s.dataTypes[n.dataType]}))}n=r.Expression.toFunction(s.CROSS,[e,t])}return n};const i=n(4703),r=n(296),s=n(8300),o=n(3982)},6746(e,t,n){"use strict";t.MathematicalAggregate=void 0;const i=n(4703),r=n(8505);class MathematicalAggregate extends r.StructuredEntity{__get__(e){const t=e[0];if(t<0||t>=this.elements.length)throw new RangeError((0,i.message)("indexOutOfBounds",{index:String(t),type:String(this.dataType),length:String(this.elements.length)}));return this.elements[t]}__set__(e,t){const n=e[0];if(n<0||n>=this.elements.length)throw new RangeError((0,i.message)("indexOutOfBounds",{index:String(n),type:String(this.dataType),length:String(this.elements.length)}));this.elements[n]=t}clear(){return this.elements.length=0,this}count(){return this.elements.length}dimensions(){return[this.elements.length]}each(e){for(let t=0;t<this.elements.length;t++){const n=e(this.elements[t],t);void 0!==n&&(this.elements[t]=n)}return this}eq(e){if(!this.dimensionsMatch(e))return!1;const t=e.elements;for(let e=0;e<this.elements.length;e++)if(!this.elements[e].eq(t[e]))return!1;return!0}forEach(e){const t=this.elements;for(let n=0;n<t.length;n++)e(t[n],n)}gt(e){if(!this.dimensionsMatch(e))return!1;const t=e.elements;for(let e=0;e<this.elements.length;e++)if(!this.elements[e].gt(t[e]))return!1;return!0}gte(e){return this.gt(e)||this.eq(e)}lt(e){if(!this.dimensionsMatch(e))return!1;const t=e.elements;for(let e=0;e<this.elements.length;e++)if(!this.elements[e].lt(t[e]))return!1;return!0}lte(e){return this.lt(e)||this.eq(e)}sort(e){return e?(this.elements.sort(e),this):(this.elements.sort((e,t)=>{const n=e&&"function"==typeof e.text?e.text():String(e),i=t&&"function"==typeof t.text?t.text():String(t);return n<i?-1:n>i?1:0}),this)}[Symbol.iterator](){return this.elements[Symbol.iterator]()}toArray(){return[...this.elements]}}t.MathematicalAggregate=MathematicalAggregate},2809(e,t,n){"use strict";t.Scope=void 0;const i=n(8300),r=n(6441);class Scope extends Array{column;dataType;deferLHSResolution=!1;deferRHSResolution=!1;depth=0;implicitMultiply=!1;isOpen=!1;parent;type;constructor(e,t,n){super(),this.dataType=i.SCOPE,this.column=t,this.type=e,this.parent=n}static isScope(e){return(0,r.isNerdamerNativeType)(e,i.SCOPE)}addScope(e,t){const n=new Scope(e,t,this);return n.depth=this.depth+1,n.isOpen=!0,this.push(n),n}text(e=!0){return this.map(t=>{if(!Scope.isScope(t))return e?t.toString():`<${t.toString()}, ${t.type}>`;{const n=t.text(e);switch(t.type){case"parenthesis":return`( ${n} )`;case"square":return`[ ${n} ]`;case"curly":return`{ ${n} }`;case"pipe":return`| ${n} |`;default:return n}}}).join(e?" ":", ").replace(/\s+/gi," ")}upperScope(){this.isOpen=!1;const e=this.parent;return delete this.parent,e}}t.Scope=Scope},8505(e,t){"use strict";function isEnumerableLike(e){if("object"!=typeof e||null===e)return!1;const t=e;return!0===t.isEnumerable&&"string"==typeof t.dataType&&Array.isArray(t.elements)}t.StructuredEntity=void 0;t.StructuredEntity=class StructuredEntity{symbolicAccessor;symbolicTarget;copySymbolicAccessTo(e){return this.symbolicTarget&&(e.symbolicTarget=this.symbolicTarget.copy()),this.symbolicAccessor&&(e.symbolicAccessor=this.symbolicAccessor.map(e=>e.copy())),e}formatSymbolicAccess(e){let t=e;if(this.symbolicAccessor&&this.symbolicAccessor.length>0){t=`${this.symbolicTarget?this.symbolicTarget.text():e}[${this.symbolicAccessor.map(e=>e.text()).join(", ")}]`}return t}binaryOp(e,t){const n=isEnumerableLike(t)&&t.dataType===this.dataType?t:void 0;return this.copy().each((i,r,s)=>{const o=n?function getAggregateElement(e,t,n){if(void 0===t)return;const i="number"==typeof t?t:Number(t);if(!Number.isFinite(i))return;const r=e.elements[i];if(void 0!==r){if(Array.isArray(r)){if(void 0===n)return;const e="number"==typeof n?n:Number(n);if(!Number.isFinite(e))return;return r[e]}return r}}(n,r,s)??t:t;return function applyBinaryOp(e,t,n){switch(e){case"plus":return t.plus(n);case"minus":return t.minus(n);case"times":return t.times(n);case"div":return t.div(n);case"pow":return t.pow(n)}}(e,i,o)})}abs(){return this.copy().each(e=>e.abs())}dimensionsMatch(e){return!(!isEnumerableLike(e)||this.dataType!==e.dataType)&&e.elements.length===this.elements.length}div(e){return this.binaryOp("div",e)}minus(e){return this.binaryOp("minus",e)}plus(e){return this.binaryOp("plus",e)}pow(e){return this.binaryOp("pow",e)}times(e){return this.binaryOp("times",e)}toString(){return this.text()}withSymbolicAccessor(e,t){const n=this.copy();return n.symbolicTarget||(n.symbolicTarget=e.copy()),n.symbolicAccessor=[...n.symbolicAccessor??[],...t.map(e=>e.copy())],n}}},6441(e,t){"use strict";t.ASSERTIVE_FUNCTIONS=t.operators=t.brackets=void 0,t.isNerdamerNativeType=function isNerdamerNativeType(e,t){let n=!1;"object"==typeof e&&null!==e&&"dataType"in e&&(n=e.dataType===t);return n},t.brackets={"(":{type:"parenthesis",id:1,isOpen:!0,isClose:!1,matches:")"},")":{type:"parenthesis",id:2,isOpen:!1,isClose:!0,matches:"("},"[":{type:"square",id:3,isOpen:!0,isClose:!1,matches:"]"},"]":{type:"square",id:4,isOpen:!1,isClose:!0,matches:"["},"{":{type:"curly",id:5,isOpen:!0,isClose:!1,matches:"}"},"}":{type:"curly",id:6,isOpen:!1,isClose:!0,matches:"{"},"|":{type:"pipe",id:7,isOpen:!0,isClose:!0,matches:"|"}},t.operators={".":{precedence:9,operator:".",action:"dot",isPrefix:!1,isPostfix:!1,leftAssoc:!1,iterates:!1},"!!":{precedence:7,operator:"!!",action:"doubleFactorial",isPrefix:!1,isPostfix:!0,leftAssoc:!1,iterates:!0},"!":{precedence:7,operator:"!",action:"factorial",isPrefix:!1,isPostfix:!0,leftAssoc:!1,iterates:!0},"^":{precedence:6,operator:"^",action:"pow",isPrefix:!1,isPostfix:!1,leftAssoc:!1,iterates:!0},"**":{precedence:6,operator:"**",action:"pow",isPrefix:!1,isPostfix:!1,leftAssoc:!1,iterates:!0},"%":{precedence:4,operator:"%",action:"mod",isPrefix:!1,isPostfix:!1,leftAssoc:!0,iterates:!0,postfixVariant:{precedence:7,operator:"%",action:"percent",isPrefix:!1,isPostfix:!0,leftAssoc:!1,iterates:!0}},"*":{precedence:4,operator:"*",action:"times",isPrefix:!1,isPostfix:!1,leftAssoc:!0,iterates:!0},"/":{precedence:4,operator:"/",action:"div",isPrefix:!1,isPostfix:!1,leftAssoc:!0,iterates:!0},"+":{precedence:3,operator:"+",action:"plus",isPrefix:!0,isPostfix:!1,leftAssoc:!0,iterates:!0},"-":{precedence:3,operator:"-",action:"minus",isPrefix:!0,isPostfix:!1,leftAssoc:!0,iterates:!0},"=":{precedence:2,operator:"=",action:"setEqual",assertiveAction:"assertEQ",isPrefix:!1,isPostfix:!1,leftAssoc:!0,iterates:!1},"==":{precedence:1,operator:"==",action:"eq",assertiveAction:"assertEQ",isPrefix:!1,isPostfix:!1,leftAssoc:!0,iterates:!1},"<":{precedence:1,operator:"<",action:"lt",assertiveAction:"assertLT",isPrefix:!1,isPostfix:!1,leftAssoc:!0,iterates:!1},"<=":{precedence:1,operator:"<=",action:"lte",assertiveAction:"assertLTE",isPrefix:!1,isPostfix:!1,leftAssoc:!0,iterates:!1},">":{precedence:1,operator:">",action:"gt",assertiveAction:"assertGT",isPrefix:!1,isPostfix:!1,leftAssoc:!0,iterates:!1},">=":{precedence:1,operator:">=",action:"gte",assertiveAction:"assertGTE",isPrefix:!1,isPostfix:!1,leftAssoc:!0,iterates:!1},"=>":{precedence:0,operator:"=>",action:"mapTo",isPrefix:!1,isPostfix:!1,leftAssoc:!0,iterates:!1},",":{precedence:0,operator:",",action:"comma",isPrefix:!1,isPostfix:!1,leftAssoc:!0,iterates:!1},":":{precedence:0,operator:":",action:"assign",isPrefix:!1,isPostfix:!1,leftAssoc:!0,iterates:!1,deferLHSResolution:!0,deferRHSResolution:!0},":=":{precedence:0,operator:":=",action:"functionAssign",isPrefix:!1,isPostfix:!1,leftAssoc:!1,iterates:!1,deferLHSResolution:!0,deferRHSResolution:!0},in:{precedence:0,operator:"in",action:"in",isPrefix:!1,isPostfix:!1,leftAssoc:!0,iterates:!1}},t.ASSERTIVE_FUNCTIONS=["assume"]},9725(e,t,n){"use strict";t.getOperatorSymbolArray=function getOperatorSymbolArray(){const e=new Set(Object.keys(i.operators).join("").split(""));return[...e].filter(e=>!/[a-z]/i.test(e))},t.getOperators=function getOperators(){return i.operators};const i=n(6441)},4861(e,t,n){"use strict";t.isEnumerable=isEnumerable,t.toParserEntities=function toParserEntities(e){const t=[];for(let n=0;n<e.length;n++){const r=e[n];t.push(isEnumerable(r)?r:i.Expression.create(r))}return t};const i=n(296);function isEnumerable(e){return void 0!==e&&!!e.isEnumerable}},5190(e,t,n){"use strict";t.BaseConverter=void 0;const i=n(296),r=n(8300),s=n(4703),o={TeX:"TeX",TEXT:"text"};class BaseConverter{static GREEK_LETTERS=["alpha","beta","gamma","delta","epsilon","zeta","eta","theta","iota","kappa","lambda","mu","nu","xi","omnikron","pi","rho","sigma","tau","upsilon","phi","chi","psi","omega","Gamma","Delta","Epsilon","Theta","Lambda","Xi","Pi","Sigma","Phi","Psi","Omega"];static modes=o;greek=BaseConverter.GREEK_LETTERS;modes=[o.TeX,o.TEXT];mode=this.modes[0];static convertNtRoot(e,t){return i.Expression.toFunction(r.NTHROOT,[BaseConverter.strip(e),t])}static convertSQRT(e){return i.Expression.toFunction(r.SQRT,[BaseConverter.strip(e)])}static join(e,t,n){return e||t?e&&!t?e:t&&!e?t:e+n+t:""}static merge(e,t){return[e[0]+t[0],e[1]+t[1]]}static strip(e){const t=e.copy();return delete t.power,delete t.multiplier,t}cleanup(){}convertPower(e,t,n){return t.isOne()||e.isNUM()&&t.isZero()?"":this.convert(t,n)}finalizePowerAndInput(e,t,n){return[e,t]}formatPowerOutput(e,t){const n=["",""];for(let i=0;i<e.length;i++){const r=e[i];if(""===r){n[i]="";continue}const s=this.mode===BaseConverter.modes.TEXT&&t?this.inBrackets(r):this.inBraces(r);n[i]="^"+s}return n}formatSubscripts(e){const t=e.split("_");let n="";for(;t.length>1;)n="_"+this.inBraces(t.pop()+n);return t[0]+n}getMultiplicationSymbol(){return"TeX"===this.mode?" \\cdot ":"*"}inBraces(e){return this.mode===BaseConverter.modes.TEXT?e:`{${e}}`}inBrackets(e,t="parens"){const[n,i]={parens:["(",")"],square:["[","]"],brace:["{","}"],abs:["|","|"]}[t];return this.mode===BaseConverter.modes.TEXT?`${n}${e}${i}`:"brace"===t?`\\left\\{${e}\\right\\}`:`\\left${n}${e}\\right${i}`}initInput(e){return e}isBracketed(e){return/^\\left\(.+\\right\)$/.test(e)}requiresMultiplicationSymbol(e){return e.isSum()}set(e,t,n,i){const r=this.getMultiplicationSymbol(),s=i.isProduct();let o;if(n){const e=i.getPower(),t=(e.isSum()||e.isProduct())&&e.isLinear()||e.isNUM()&&!e.isInteger()||-1===e.getPower().sign();n=this.formatPowerOutput(n,t)}s&&(o=n[0],n[0]=""),t=BaseConverter.merge(t,n);let[a,l]=e;const[u,c]=t;u&&1===Number(a)&&(a=""),1===Number(l)&&(l="");const m=this.requiresMultiplicationSymbol(i),p=this.mode===BaseConverter.modes.TeX,g=BaseConverter.join(a,u,p||!this.isBracketed(u)||m?r:"");let d=BaseConverter.join(l,c,p||!this.isBracketed(c)||m?r:"");if(l&&c&&this.mode===BaseConverter.modes.TEXT&&(d=this.inBrackets(d)),g&&d){let e=this.toFraction(g,d);return s&&o&&(e=this.inBrackets(e)+o),e}return g}setMultiplier(e,t,n,i){i?.decimal?t[0]=e.isInteger()?String(e.numerator):e.text(i):(t[0]=String(e.numerator),t[1]=String(e.denominator))}toFraction(e,t){return"TeX"===this.mode?"\\frac"+this.inBraces(this.stripOuterBrackets(e))+this.inBraces(this.stripOuterBrackets(t)):`${e}/${t}`}value(e,t,n,i){return["",""]}convertCollection(e,t){const n=e.elements.map(e=>this.convert(e,t)).join(this.mode===BaseConverter.modes.TeX?", \\, ":", ");return this.inBrackets(n)}convertDictionary(e,t){const n=e.entries().map(([e,n])=>{const i=this.convert(n,t);return this.mode===BaseConverter.modes.TeX?`${e} \\mapsto ${i}`:`${e} => ${i}`}).join(this.mode===BaseConverter.modes.TeX?", \\, ":", ");return this.mode===BaseConverter.modes.TeX?`\\left\\{${n}\\right\\}`:`{${n}}`}convertEquation(e,t){return`${this.convert(e.LHS,t)}=${this.convert(e.RHS,t)}`}convertExpression(e,t){const n=(e=this.initInput(e)).getPower(),i=n.isComplex(),r=i?n:n.signFree(),s=!i&&(n.lt(0)||-1===n.sign()),o=e.getMultiplier().isNegative(),a=e.getMultiplier().abs(),l=["",""];t.ignoreMultiplier||this.setMultiplier(a,l,e,t);const[u,c]=this.finalizePowerAndInput(r,e,t),m=this.value(c,s,o,t),p=this.convertPower(c,u,t),g=["",""];g[s?1:0]=p;const d=(o?"-":"")+this.set(l,m,g,c);return this.cleanup(),d.replace(/\+-/g,"-")}convertMatrix(e,t){let n;if(this.mode===BaseConverter.modes.TEXT){n=`matrix(${e.elements.map(e=>`[${e.map(e=>this.convert(e,t)).join(", ")}]`).join(", ")})`}else{const i=t.matrixStyle||"",r={...t,insideMatrix:!0};n=`\\begin{${i}matrix} ${e.elements.map(e=>e.map(e=>this.convert(e,r)).join(" & ")).join(" \\\\ ")} \\end{${i}matrix}`}return n}convertValuesSet(e,t){const n=e.elements.map(e=>this.convert(e,t)).join(this.mode===BaseConverter.modes.TeX?", \\, ":", ");return this.mode===BaseConverter.modes.TeX?`\\left\\{${n}\\right\\}`:`{${n}}`}stripOuterBrackets(e){const t="\\left(",n="\\right)";let i=e;if(e.startsWith(t)&&e.endsWith(n)){let r=0,s=!0;for(let i=0;i<e.length&&s;)e.startsWith(t,i)?(r++,i+=6):e.startsWith(n,i)?(r--,i+=7,(0===r&&i<e.length||r<0)&&(s=!1)):i++;s&&0===r&&(i=e.slice(6,-7))}return i}convert(e,t){if(t={convertRoots:!0,...t},"number"==typeof e)return String(e);if("string"==typeof e||i.Expression.isExpression(e))return this.convertExpression(i.Expression.create(e),t);if(e.dataType===r.COLLECTION)return this.convertCollection(e,t);if(e.dataType===r.EQUATION)return this.convertEquation(e,t);if(e.dataType===r.VECTOR){const n=e,i=t.insideMatrix?" & ":this.mode===BaseConverter.modes.TeX?", \\, ":", ",r=n.arrayMap(e=>this.convert(e,t)).join(i);return t.insideMatrix?r:this.inBrackets(r,"square")}if(e.dataType===r.MATRIX)return this.convertMatrix(e,t);if(e.dataType===r.SOLUTIONS_SET)return this.convertValuesSet(e,t);if(e.dataType===r.SET)return this.convertValuesSet(e,t);if(e.dataType===r.DICTIONARY)return this.convertDictionary(e,t);throw new Error((0,s.message)("unsupportedType",{type:r.dataTypes[e.dataType]||typeof e}))}setMode(e){if(!this.modes.includes(e))throw new Error((0,s.message)("unrecognizedMode",{mode:e}));this.mode=e}}t.BaseConverter=BaseConverter},7130(e,t,n){"use strict";t.Converter=void 0;const i=n(6528),r=n(296),s=n(6099),o=n(4462),a=n(8300),l=n(238),u=n(12),c=n(5598),m=n(3982),p=n(2809),g=n(9426),d=n(4703),h=n(5190),{TeX:x,TEXT:E}=h.BaseConverter.modes;class Converter extends h.BaseConverter{static TEX_FUNCTION_MAP={acos:"arccos",asin:"arcsin",atan:"arctan",asec:"operatorname{arcsec}",acsc:"operatorname{arccsc}",acot:"operatorname{arccot}",acosh:"operatorname{arcosh}",asinh:"operatorname{arsinh}",atanh:"operatorname{artanh}",asech:"operatorname{arsech}",acsch:"operatorname{arcsch}",acoth:"operatorname{arcoth}",sech:"operatorname{sech}",csch:"operatorname{csch}",coth:"operatorname{coth}",realpart:"Re",imagpart:"Im",sign:"operatorname{sgn}",sinc:"operatorname{sinc}",erf:"operatorname{erf}",erfc:"operatorname{erfc}",determinant:"det"};static TEX_REVERSE_MAP={arccos:"acos",arcsin:"asin",arctan:"atan",arcsec:"asec",arccsc:"acsc",arccot:"acot",arcosh:"acosh",arsinh:"asinh",artanh:"atanh",arsech:"asech",arcsch:"acsch",arcoth:"acoth",det:"determinant",deg:a.DEG,sgn:"sign",operatorname:"",Gamma:"gamma",delta:a.DIRAC,Re:"realpart",Im:"imagpart"};constructor(e){super(),e&&this.setMode(e)}static clearOnes(e,t){for(let n=0;n<2;n++)t[n]&&1===Number(e[n])&&(e[n]="");return[e,t]}static wrapRoot(e,t){return"2"===t?`\\sqrt{${e}}`:`\\sqrt[${t}]{${e}}`}finalizePowerAndInput(e,t,n){if(!n?.convertRoots)return[e,t];const i=e.getNumerator(),r=e.getDenominator();if(i.isOne()&&!e.isOne()){if(this.mode===h.BaseConverter.modes.TEXT&&r.eq((0,s.two)()))return[(0,s.one)(),h.BaseConverter.convertSQRT(t)];if(this.mode===h.BaseConverter.modes.TeX)return[(0,s.one)(),h.BaseConverter.convertNtRoot(t,r)]}return[e,t]}functionString(e,t){const n=this.getFunctionName(e.name||""),i=e.getArguments(),r=i.map(e=>this.convert(e,t));return this.mode===E?`${n}(${r.join(",")})`:this.formatTeXFunction(e.name||"",n,r,i)}value(e,t,n,i){const r=["",""],s=t?1:0;if(e.isNUM())return r;if(e.isEXP())r[s]=this.handleExp(e,i);else if(e.isInf())r[s]="text"===this.mode?a.INFINITY[0]:"\\infty";else if(e.elements||e.args){if(e.isFunction())r[s]=this.functionString(e,i);else if(e.isSum())r[s]=this.handleSum(e,n,i);else if(e.isProduct())return this.handleProduct(e,t,i)}else r[s]=this.formatVariable(e.value);return r}convertSourceRPN(e,t){const n=[];for(let i=0;i<e.length;i++){const s=e[i];if(p.Scope.isScope(s)){const e=this.convertSourceRPN(s,t),i=e.args?e.args.map(e=>e.text).join(","):e.text,r=e.args?e.args.map(e=>e.source).join(","):e.source;let o=i,a=r;switch(s.type){case"parenthesis":o=this.inBrackets(i),a=`(${r})`;break;case"square":o=this.inBrackets(i,"square"),a=`[${r}]`;break;case"curly":o=this.inBrackets(i,"brace"),a=`{${r}}`;break;case"pipe":o=this.inBrackets(i,"abs"),a=`|${r}|`}n.push({text:o,source:a})}else if(s.type===u.Token.FUNCTION){const o=e[++i];if(!p.Scope.isScope(o))throw new Error((0,d.message)("converterMissingArgumentScope",{function:s.value}));let u=[];if(o.length>0){const e=g.mathFunctionRegistry[s.value]?.deferArguments?l.Parser.toRPN(o):o,n=this.convertSourceRPN(e,t);u=n.args??[n]}const c=u.map(e=>e.text),m=u.map((e,t)=>r.Expression.create(`zzsourcearg${t}`)),h=this.getFunctionName(s.value);let x;if(s.value===r.Expression.LOG&&2===u.length){const e=this.formatTeXFunction(r.Expression.LOG,h,[c[0]],[m[0]]),t=this.formatTeXFunction(r.Expression.LOG,h,[c[1]],[m[1]]);x=this.toFraction(e,t)}else x="sqrt"===s.value&&1===u.length?Converter.wrapRoot(c[0],"2"):1!==u.length||s.value!==a.FACTORIAL&&"factorial"!==s.value&&s.value!==a.DOUBLE_FACTORIAL?this.formatTeXFunction(s.value,h,c,m):this.formatTeXFunction(s.value,h,c,[r.Expression.create(u[0].source)]);n.push({text:x,source:`${s.value}(${u.map(e=>e.source).join(",")})`})}else if(s.type===u.Token.PREFIX){const e=n.pop();if(!e)throw new Error((0,d.message)("converterMissingPrefixOperand",{operator:s.value}));n.push({text:s.value+e.text,source:s.value+e.source})}else if(s.type===u.Token.OPERATOR){const e=s.resolvedOperator??l.Parser.getOperator(s.value),i=n.pop();if(!e||!i)throw new Error((0,d.message)("converterMissingOperandMetadata",{operator:s.value}));if(e.isPostfix){const e="%"===s.value?"\\%":s.value;n.push({text:i.text+e,source:i.source+s.value});continue}const o=n.pop();if(!o)throw new Error((0,d.message)("converterMissingLeftOperand",{operator:s.value}));if("comma"===e.action){const e=[...o.args??[o],...i.args??[i]];n.push({text:e.map(e=>e.text).join(","),source:e.map(e=>e.source).join(","),args:e});continue}let a;if("times"===e.action)a=o.text+(-1===s.position?"":this.getMultiplicationSymbol())+i.text;else if("div"===e.action)a=this.toFraction(o.text,i.text);else if("pow"===e.action){const e=r.Expression.create(i.source);if(-1===e.sign()){const n=e.signFree(),i=n.isOne()?o.text:o.text+"^"+this.inBraces(super.convert(n,t));a=this.toFraction("1",i)}else a=o.text+"^"+this.inBraces(i.text)}else a="mod"===e.action?this.formatTeXFunction("mod",this.getFunctionName("mod"),[o.text,i.text],[r.Expression.create("zzsourcearg0"),r.Expression.create("zzsourcearg1")]):"mapTo"===e.action?`${o.text} \\mapsto ${i.text}`:o.text+s.value+i.text;n.push({text:a,source:`(${o.source})${s.value}(${i.source})`})}else{let e=s.value;s.type===u.Token.VARIABLE&&(e=a.INFINITY.includes(s.value)?"\\infty":this.formatVariable(s.value)),n.push({text:e,source:s.value})}}if(1!==n.length)throw new Error((0,d.message)("converterTexConversionFailed"));return n[0]}formatFactorial(e,t,n){return e.isLinear()&&(e.isSum()||e.isProduct())&&(t=this.inBrackets(t)),t+n}formatSumOrProduct(e,t){const[n,i,r,s]=t;return`${e}_{${this.inBraces(i)}=${this.inBraces(r)}}^${this.inBraces(s)} ${this.inBraces(n)}`}formatTeXFunction(e,t,n,i){const std=()=>t+this.inBrackets(n[0]),generic=()=>"\\operatorname"+this.inBraces(e.replace(/_/g,"\\_"))+this.inBrackets(n.join(","),"parens"),s={sqrt:std,abs:()=>this.inBrackets(n[0],"abs"),cbrt:()=>`\\sqrt[3]${this.inBraces(n[0])}`,max:()=>`\\max${this.inBrackets(n.join(","),"parens")}`,min:()=>`\\min${this.inBrackets(n.join(","),"parens")}`,round:()=>1===n.length?`\\left\\lfloor ${n[0]} \\right\\rceil`:generic(),mod:()=>`${n[0]} \\bmod ${n[1]}`,[a.FACTORIAL]:()=>this.formatFactorial(i[0],n[0],"!"),factorial:()=>this.formatFactorial(i[0],n[0],"!"),[a.DOUBLE_FACTORIAL]:()=>this.formatFactorial(i[0],n[0],"!!"),parens:()=>this.inBrackets(n[0],"parens"),cos:std,sin:std,tan:std,sec:std,csc:std,cot:std,acos:std,asin:std,atan:std,asec:std,acsc:std,acot:std,atan2:()=>t+this.inBrackets(n.join(","),"parens"),sinh:std,cosh:std,tanh:std,sech:std,csch:std,coth:std,acosh:std,asinh:std,atanh:std,asech:std,acsch:std,acoth:std,floor:()=>`\\left\\lfloor ${n[0]} \\right\\rfloor`,ceil:()=>`\\left\\lceil ${n[0]} \\right\\rceil`,ceiling:()=>`\\left\\lceil ${n[0]} \\right\\rceil`,[r.Expression.LOG]:()=>{const e=n[1],t=void 0===e?"":`_${this.inBraces(e)}`;return`\\mathrm${this.inBraces(r.Expression.LOG)}${t}${this.inBrackets(n[0])}`},[r.Expression.LOG10]:()=>`\\mathrm${this.inBraces(r.Expression.LOG)}_${this.inBraces("10")}${this.inBrackets(n[0])}`,log10:()=>`\\mathrm${this.inBraces(r.Expression.LOG)}_${this.inBraces("10")}${this.inBrackets(n[0])}`,exp:std,gamma:()=>`\\Gamma${this.inBrackets(n[0])}`,gamma_incomplete:()=>`\\Gamma${this.inBrackets(n.join(","),"parens")}`,gamma_incomplete_lower:()=>`\\gamma${this.inBrackets(n.join(","),"parens")}`,erf:std,erfc:std,sinc:std,Si:()=>`\\operatorname{Si}${this.inBrackets(n[0])}`,Shi:()=>`\\operatorname{Shi}${this.inBrackets(n[0])}`,Ci:()=>`\\operatorname{Ci}${this.inBrackets(n[0])}`,Chi:()=>`\\operatorname{Chi}${this.inBrackets(n[0])}`,Ei:()=>`\\operatorname{Ei}${this.inBrackets(n[0])}`,[a.LI]:()=>`\\operatorname{Li}${this.inBrackets(n[0])}`,[a.HEAVISIDE]:()=>`H${this.inBrackets(n[0])}`,[a.DIRAC]:()=>`\\delta${this.inBrackets(n[0])}`,dirac:()=>`\\delta${this.inBrackets(n[0])}`,sign:std,realpart:()=>`\\Re${this.inBrackets(n[0])}`,imagpart:()=>`\\Im${this.inBrackets(n[0])}`,arg:std,[a.CONJUGATE]:()=>`\\overline${this.inBraces(n[0])}`,determinant:std,[a.DEG]:std,limit:()=>`\\lim_${this.inBraces(n[1]+" \\to "+n[2])} ${n[0]}`,integrate:()=>2===n.length?`\\int ${n[0]}\\, d${n[1]}`:generic(),defint:()=>`\\int_${this.inBraces(n[1])}^${this.inBraces(n[2])} ${n[0]}\\, d${n[3]}`,diff:()=>{let e;return e=1===n.length?generic():3===n.length?`\\frac${this.inBraces("d^"+n[2])}${this.inBraces("d"+n[1]+"^"+n[2])} ${n[0]}`:`\\frac${this.inBraces("d")}${this.inBraces("d"+n[1])} ${n[0]}`,e},laplace:()=>`\\mathcal{L}_${this.inBraces(n[1]+" \\to "+n[2])}\\left\\{${n[0]}\\right\\}`,ilaplace:()=>`\\mathcal{L}^{-1}_${this.inBraces(n[1]+" \\to "+n[2])}\\left\\{${n[0]}\\right\\}`,partfrac:()=>`\\operatorname{partfrac}${this.inBrackets(n.join(","),"parens")}`,sum:()=>this.formatSumOrProduct("\\sum",n),product:()=>this.formatSumOrProduct("\\prod",n),nthroot:()=>"2"===n[1]?`\\sqrt${this.inBraces(n[0])}`:`\\sqrt[${n[1]}]${this.inBraces(n[0])}`,gcd:()=>t+this.inBrackets(n.join(","),"parens"),lcm:()=>`\\operatorname{lcm}${this.inBrackets(n.join(","),"parens")}`,[a.WRAP]:()=>n[0]}[e];return s?s():generic()}formatVariable(e){return this.formatSubscripts(e).split("_").map((e,t)=>(this.mode===h.BaseConverter.modes.TeX&&this.greek.includes(e)&&(e=`\\${e}`),t>0?this.inBraces(e):e)).join("_")}getFunctionName(e){if(this.mode!==x)return e;return`\\${Converter.TEX_FUNCTION_MAP[e]||e}`}handleExp(e,t){const n=e.getBase();let i=this.convert(n,t);return n.isInteger()||n.isVAR()||(i=this.inBrackets(i)),i}handleProduct(e,t,n){const i=this.getMultiplicationSymbol(),r=[],s=[];for(let i of e.elementsArray()){i.isFunction(a.WRAP)&&(i=i.getArguments()[0]);const e=-1===i.getPower().sign(),o=(t?!e:e)?s:r;e&&(i=i.invert());let l=this.convert(i,n);i.isSum()&&i.isLinear()&&(l=this.inBrackets(l)),o.push(l)}return[r.join(i),s.join(i)]}handleSum(e,t,n){const i=e.elementsArray().map(e=>this.convert(e,n)).join("+");return!(e.isLinear()&&e.getMultiplier().isOne())||t?this.inBrackets(i,"parens"):i}parseTeXMatrix(e){const t=e.match(/^\\begin\{([pbBvV]?matrix)\}\s*([\s\S]*?)\s*\\end\{\1\}$/);let n;if(t){const e=t[2].split(/\\\\/).map(e=>e.trim()).filter(e=>e.length>0).map(e=>e.split("&").map(e=>r.Expression.create(this.fromTeX(e.trim()))));n=new o.Matrix(...e)}return n}parseTeXSetOrDictionary(e){const t=this.splitTeXTopLevel(e,","),n=t.map(e=>this.splitTeXTopLevel(e,"\\mapsto"));if(n.some(e=>2===e.length)){const e=new Map;for(const t of n)if(2===t.length){const n=t[0].trim(),i=this.fromTeX(t[1].trim());e.set(n,i)}return new i.Dictionary(e)}const r=new c.ValuesSet;for(const e of t)e.trim()&&r.add(this.fromTeX(e.trim()));return r}parseTeXVector(e){const t=e.match(/^\\left\s*\[([\s\S]*)\\right\s*\]$/)||e.match(/^\[([\s\S]*)\]$/);let n;if(t){const e=this.splitTeXTopLevel(t[1],",").map(e=>e.trim()).filter(e=>e.length>0).map(e=>this.fromTeX(e));n=new m.Vector(e)}return n}preprocessTeXClean(e){let t=e;t=t.replace(/\\frac\s*\{([^{}]+)\}\s*([a-zA-Z0-9.])/g,"\\frac{$1}{$2}"),t=t.replace(/\\frac\s*([a-zA-Z0-9.])\s*\{([^{}]+)\}/g,"\\frac{$1}{$2}"),t=t.replace(/\\frac\s*([a-zA-Z0-9.])\s*([a-zA-Z0-9.])/g,"\\frac{$1}{$2}"),t=t.replace(/(\d+)\s*\\frac\s*\{(\d+)\}\s*\{(\d+)\}/g,"($1+\\frac{$2}{$3})"),t=t.replace(/\\mathcal\s*\{L\}\s*\^\s*\{-1\}\s*_\s*\{([^{}]+?)\s*\\to\s*([^{}]+?)\}\s*(?:\\left\s*)?\\{(.+?)\\}\s*(?:\\right\s*)?/g,(e,t,n,i)=>`ilaplace(${i},${String(t).trim()},${String(n).trim()})`),t=t.replace(/\\mathcal\s*\{L\}\s*_\s*\{([^{}]+?)\s*\\to\s*([^{}]+?)\}\s*(?:\\left\s*)?\\{(.+?)\\}\s*(?:\\right\s*)?/g,(e,t,n,i)=>`laplace(${i},${String(t).trim()},${String(n).trim()})`),t=t.replace(/\\mathcal\s*\{L\}\s*\^\s*\{-1\}\s*(?:\\left\s*)?\\{(.+?)\\}\s*(?:\\right\s*)?/g,"ilaplace($1)"),t=t.replace(/\\mathcal\s*\{L\}\s*(?:\\left\s*)?\\{(.+?)\\}\s*(?:\\right\s*)?/g,"laplace($1)"),t=t.replace(/\\frac\s*\{d\^(\w+)\}\s*\{d(\w+)\^\1\}\s*(.+)/g,(e,t,n,i)=>`diff(${i},${n},${t})`),t=t.replace(/\\frac\s*\{d\}\s*\{d(\w+)\}\s*(.+)/g,(e,t,n)=>`diff(${n},${t})`),t=t.replace(/\\int\s*_\s*\{([^}]+)\}\s*\^\s*\{([^}]+)\}\s*(.+?)\\?,?\s*d(\w+)/g,(e,t,n,i,r)=>`defint(${i},${t},${n},${r})`),t=t.replace(/\\int\s+(.+?)\\?,?\s*d(\w+)/g,(e,t,n)=>`integrate(${t},${n})`),t=t.replace(/\\lim\s*_\s*\{(\w+)\s*\\to\s*([^}]+)\}\s*(.+)/g,(e,t,n,i)=>`limit(${i},${t},${n})`),t=t.replace(/\\sum\s*_\s*\{(\w+)=([^}]+)\}\s*\^\s*\{([^}]+)\}\s*(.+)/g,(e,t,n,i,r)=>`sum(${r},${t},${n},${i})`),t=t.replace(/\\prod\s*_\s*\{(\w+)=([^}]+)\}\s*\^\s*\{([^}]+)\}\s*(.+)/g,(e,t,n,i,r)=>`product(${r},${t},${n},${i})`),t=t.replace(/(?:\\left\s*)?\\lfloor\s*(.+?)\s*(?:\\right\s*)?\\rceil/g,"round($1)"),t=t.replace(/(?:\\left\s*)?\\lfloor\s*/g,"floor("),t=t.replace(/\\rfloor\s*(?:\\right\s*)?/g,")"),t=t.replace(/(?:\\left\s*)?\\lceil\s*/g,"ceil("),t=t.replace(/\\rceil\s*(?:\\right\s*)?/g,")"),t=t.replace(/\\log\s*_\s*\{([^}]+)\}\s*\{([^}]+)\}/g,"log($2,$1)"),t=t.replace(/\\log\s*_\s*\{([^}]+)\}\s*([a-zA-Z0-9_.]+)/g,"log($2,$1)"),t=this.replaceBracedTeXCommand(t,"overline",a.CONJUGATE),t=t.replace(/\\Gamma\s*/g,"gamma"),t=t.replace(/\\delta\s*/g,a.DIRAC),t=t.replace(/(?<![a-zA-Z])H\s*(?=(?:\\left\s*)?\()/g,a.HEAVISIDE),t=t.replace(/\\Re\s*/g,"realpart"),t=t.replace(/\\Im\s*/g,"imagpart"),t=t.replace(/\\operatorname\s*\{([^}]+)\}/g,"$1");for(const[e,n]of Object.entries(Converter.TEX_REVERSE_MAP))"operatorname"!==e&&"Gamma"!==e&&"delta"!==e&&"Re"!==e&&"Im"!==e&&(t=t.replace(new RegExp(`\\\\${e}\\b`,"g"),n));return t=t.replace(/(.+?)\s*\\bmod\s*(.+)/g,"mod($1,$2)"),t=t.replace(/\\sqrt\s*\[([^\]]+)\]\s*\{([^}]+)\}/g,"nthroot($2,$1)"),t=t.replace(/\\sqrt\s*\{([^}]+)\}/g,"sqrt($1)"),t=t.replace(/\\,/g,""),t=t.replace(/\s*\\cdot\s*/g,"*"),t=t.replace(/\s*(?:\\left|\\right)\s*/g,""),t=t.replace(/\\infty/g,"Infinity"),t=t.replace(/\s*[{(]/g,"("),t=t.replace(/}/g,")"),t=t.replace(/\s+|\\/g," "),t}replaceBracedTeXCommand(e,t,n){const i=`\\${t}`;let r="",s=0;for(;s<e.length;){const o=e.indexOf(i,s);if(-1===o)r+=e.slice(s),s=e.length;else{r+=e.slice(s,o);let a=o+i.length;for(;a<e.length&&/\s/.test(e[a]);)a++;if("{"!==e[a])r+=i,s=o+i.length;else{let i=1,l=a+1;for(;l<e.length&&i>0;)"{"===e[l]?i++:"}"===e[l]&&i--,l++;if(0!==i)r+=e.slice(o),s=e.length;else{const i=e.slice(a+1,l-1);r+=`${n}(${this.replaceBracedTeXCommand(i,t,n)})`,s=l}}}}return r}splitTeXTopLevel(e,t){const n=[];let i=0,r="";for(let s=0;s<e.length;s++){const o=e[s];","!==t||"\\"!==o||","!==e[s+1]?("{"===o||"["===o||"("===o?i++:"}"!==o&&"]"!==o&&")"!==o||i--,0===i&&e.startsWith(t,s)?(n.push(r),r="",s+=t.length-1):r+=o):s++}return r.trim()&&n.push(r),n}convert(e,t){let n;if("string"==typeof e&&this.mode===x&&!0===t?.preserveSource&&!0!==t.decimal){const i=l.Parser.toRPN(l.Parser.tokenize(e)),r=this.convertSourceRPN(i,t);n=r.args?r.args.map(e=>e.text).join(","):r.text}else n=super.convert(e,t);return n}fromTeX(e){const t=e.trim(),n=this.parseTeXMatrix(t);if(n)return n;const i=this.parseTeXVector(t);if(i)return i;const r=t.match(/^\\left\s*\\{(.*)\\right\s*\\}$/)||t.match(/^\\{(.*)\\}$/);if(r)return this.parseTeXSetOrDictionary(r[1]);const s=this.preprocessTeXClean(e),o=l.Parser.tokenize(s,{pure:!0});return l.Parser.parse(l.Parser.parseTeXRPN(o))}}t.Converter=Converter},2292(e,t,n){"use strict";t.Pattern=void 0;const i=n(8891),r=n(296),s=n(6099),o=n(8300),a=n(4703),l=n(5190);class Pattern extends l.BaseConverter{allEqualArguments=void 0;args=[];c;constCount=0;expression;multiplier="";p;powerCount=0;referenceMap={};reuseReferences;v;variables={};patternString="";references={};stack=[];constructor(e,t=[],n){super(),this.setMode("text"),this.expression=r.Expression.create(e);const i={constantSymbol:"a",powerSymbol:"n",variableSymbol:"x",reuseReferences:!1,...n};this.v=i.variableSymbol,this.p=i.powerSymbol,this.c=i.constantSymbol,this.reuseReferences=i.reuseReferences,this.initializeVariables(t),this.patternString=this.convert(this.expression,i)}static showStructure(e,t="x"){let n=`Input: ${e}\n`;const i=new Pattern(e,[t]);n+=`patternString: ${i.patternString}\n`,n+="references: {\n";for(const e in i.references)n+=`\t${e}: ${i.references[e]}\n`;return n+="}",n}convertPower(e,t,n){return e.isEXP()?this.inBrackets(this.convert(t,{...n,ignoreMultiplier:!1})):!this.hasAsVariable(e)||e.isProduct()?"":this.createConstantReference(t,!0)}createConstantReference(e,t=!1){const n=e.isNUM(),i=`${t?"pow":"cnt"}_${e.text()}`;if(!n){const e=this.referenceMap[i];if(e)return e}const r=t?this.nextPower(e):this.nextConstant(e);return this.addReference(r,e),n||(this.referenceMap[i]=r),r}createVariableReference(e,t){const n=this.variables[e.value];return this.addReference(n,e),n}finalizePowerAndInput(e,t,n){let i=t.toLinearAndUnitMultiplier();return t.isEXP()&&!i.isEXP()&&this.hasAsVariable(e)&&(i=r.Expression.toEXP(i,(0,s.one)())),[e,i]}hasAsVariable(e){return e.isVAR()?!!this.variables[e.value]:Object.keys(this.variables).some(t=>e.hasVariable(t))}isBracketed(e){return/^\(.+\)$/.test(e)}multiplyToMultiplier(e){this.references[this.multiplier]=this.references[this.multiplier].times(e)}requiresMultiplicationSymbol(e){return!0}setMultiplier(e,t,n,i){const s=this.createConstantReference(r.Expression.create(e));this.multiplier=s,t[0]=s}toFraction(e,t){const wrapIfNeeded=e=>/[*+]/.test(e)&&!this.isBracketed(e)?this.inBrackets(e):e;return`${wrapIfNeeded(e)}/${wrapIfNeeded(t)}`}value(e,t,n,i){const r=["",""],s=t?1:0;if(e.isNUM())return r;if(!this.hasAsVariable(e)&&!e.isEXP())return this.multiplyToMultiplier(e),r;if(e.isEXP()){const t=e.getBase();r[s]=this.inBrackets(this.convert(t,{...i,ignoreMultiplier:!1}))}else if(e.isInf())r[s]=o.INFINITY[0];else if(e.elements||e.args){if(e.isFunction())r[s]=this.formatFunctionCall(e,i);else if(e.isSum())r[s]=this.handlePatternSum(e,i);else if(e.isProduct())return this.handlePatternProduct(e,t,i)}else r[s]=this.createVariableReference(e,i);return r}addReference(e,t){this.references[e]||(this.references[e]=t)}formatFunctionCall(e,t){const n=e.getArguments();this.args.push(n.map(e=>e.text()).join(","));const i=n.map(e=>this.convert(e,{...t,ignoreMultiplier:!1})).join(", ");return`${e.name}${this.inBrackets(i)}`}getReferenceFromMap(e,t=!1){if(e&&!e.isNUM()){const n=`${t?"pow":"cnt"}_${e.text()}`;return this.referenceMap[n]}}handlePatternProduct(e,t,n){const i=this.getMultiplicationSymbol(),r=[],s=[];for(let i of e.elementsArray()){if(!this.hasAsVariable(i)){this.multiplyToMultiplier(i);continue}i.isFunction(o.WRAP)&&(i=i.getArguments()[0]);const e=i.getPower().sign(),a=t?-1!==e:-1===e,l=a?s:r;a&&!t&&(i=i.invert());let u=this.convert(i,{...n,ignoreMultiplier:!0});i.isSum()&&i.isLinear()&&"text"===this.mode&&(u=this.inBrackets(u)),l.push(u)}return[r.join(i),s.join(i)]}handlePatternSum(e,t){let n=(0,s.zero)();const i=e.elementsArray(),r=[];for(const e of i)this.hasAsVariable(e)?r.push(this.convert(e,{...t,ignoreMultiplier:!1})):n=n.plus(e);return n.isZero()||r.push(this.createConstantReference(n)),this.inBrackets(r.join("+"))}initializeVariables(e){let t=1;e.slice().sort().forEach(e=>{this.variables[e]=this.v+t++})}nextConstant(e){const t=this.getReferenceFromMap(e,!1);return this.reuseReferences&&t?t:`${this.c}${++this.constCount}`}nextPower(e){const t=this.getReferenceFromMap(e,!0);return this.reuseReferences&&t?t:`${this.p}${++this.powerCount}`}argumentsMatch(){return void 0===this.allEqualArguments&&(this.allEqualArguments=(0,i.allEqual)(this.args)),this.allEqualArguments}equal(e,t){if("string"==typeof e)return this.get(e).eq(t);if(0==e.length)return!1;for(let n=0;n<e.length;n++)if(!this.get(e[n]).eq(t))return!1;return!0}fromPattern(e){return r.Expression.create(e,this.references)}get(e){const t=this.references[e];if(!t)throw new a.MissingReferenceError((0,a.message)("missingReference",{ref:e}));return t}}t.Pattern=Pattern},9426(e,t){"use strict";t.mathFunctionRegistry=void 0,t.systemFunction=function systemFunction(e){return{fn:e.fn,minArgs:e.minArgs,maxArgs:e.maxArgs,maxPrecision:e.maxPrecision,equationArgs:e.equationArgs,distElWise:e.distElWise,deferArguments:e.deferArguments,normalizeDeferredArguments:e.normalizeDeferredArguments,bracketlessStatement:e.bracketlessStatement,returnBoundary:e.returnBoundary,usage:e.usage??"notation",level:"system"}},t.mathFunctionRegistry={}},4703(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ErrorMessages=t.EnglishErrorMessages=t.AssignmentError=t.ZeroToZeroPowerError=t.MissingReferenceError=t.NotImplementedError=t.DimensionError=t.NaNError=t.MathError=t.ParserSyntaxError=t.UnsupportedOperationError=t.PolynomialError=t.UndefinedError=t.NullError=t.ParserError=t.OperatorError=t.DivisionByZeroError=t.UnexpectedInputError=t.UnexpectedDataType=t.UnexpectedTokenError=void 0,t.registerLanguage=function registerLanguage(e,n){t.ErrorMessages[e]=n},t.message=function message(e,n){const s=t.ErrorMessages[r.Settings.LANGUAGE]??t.ErrorMessages.eng;return(0,i.format)(s[e],n||{})};const i=n(7103),r=n(5817);class UnexpectedTokenError extends Error{}t.UnexpectedTokenError=UnexpectedTokenError;class UnexpectedDataType extends Error{}t.UnexpectedDataType=UnexpectedDataType;class UnexpectedInputError extends Error{}t.UnexpectedInputError=UnexpectedInputError;class DivisionByZeroError extends Error{}t.DivisionByZeroError=DivisionByZeroError;class OperatorError extends Error{}t.OperatorError=OperatorError;class ParserError extends Error{}t.ParserError=ParserError;class NullError extends Error{}t.NullError=NullError;class UndefinedError extends Error{}t.UndefinedError=UndefinedError;class PolynomialError extends Error{}t.PolynomialError=PolynomialError;class UnsupportedOperationError extends Error{}t.UnsupportedOperationError=UnsupportedOperationError;class ParserSyntaxError extends Error{}t.ParserSyntaxError=ParserSyntaxError;class MathError extends Error{}t.MathError=MathError;class NaNError extends Error{}t.NaNError=NaNError;class DimensionError extends Error{}t.DimensionError=DimensionError;class NotImplementedError extends Error{}t.NotImplementedError=NotImplementedError;class MissingReferenceError extends Error{}t.MissingReferenceError=MissingReferenceError;class ZeroToZeroPowerError extends Error{}t.ZeroToZeroPowerError=ZeroToZeroPowerError;class AssignmentError extends Error{}t.AssignmentError=AssignmentError,t.EnglishErrorMessages={notImplemented:"This method has not yet been implemented.",noInverse:"Unable to calculate inverse!",undefinedValue:"The requested value is undefined!",nullValue:"Value expected but received null.",univariateInputOnly:"The input for this function must be univariate!",differentSignsAtEndPointsRequired:"Function must have opposite signs at endpoints a and b!",integerRequired:"This function requires the coefficient to be an integer!",plainVariableExpected:"Expected plain variable! Received {{input}}.",missingReference:'The reference "{{ref}}" does not exist on this pattern!!',undefinedDivision:"Division not defined expression of this type! {{type}}",restrictedVariableName:'Cannot assign the requested value to the reserved name "{{name}}"!',noVariableInExpression:"No variable found in expression!",quadraticExpressionExpected:"Expression must be quadratic!",wrongInput:"Wrong input! Expected {{expected}} but received {{received}}.",unsupportedFunction:"Unsupported function {{function}}",functionMinArgs:"{{function}} requires a minimum of {{min}} arguments but {{actual}} provided!",functionMaxArgs:"{{function}} allows a maximum of {{max}} arguments but {{actual}} provided!",invalidFunctionDeclaration:"Invalid function declaration {{declaration}}.",indexOutOfBounds:"Index {{index}} out of bounds for {{type}} of length {{length}}",matrixRowIndexOutOfBounds:"Row index {{index}} out of bounds for Matrix with {{length}} rows",matrixColumnIndexOutOfBounds:"Column index {{index}} out of bounds for Matrix with {{length}} columns",dictionaryKeyNotFound:'Key "{{key}}" not found in Dictionary. Available keys: {{keys}}',rangeValuesFinite:"Range values must be finite.",rangeStepNonzero:"Step cannot be zero",rangeStepNoAdvance:"Step does not advance range at current precision",sparseVariableCountInvalid:"SparsePolynomial variableCount must be a non-negative safe integer.",sparseExponentVectorLengthMismatch:"SparsePolynomial exponent vector length must equal variableCount.",sparseExponentsNonNegativeBigInt:"SparsePolynomial exponents must be non-negative bigints.",sparseVariableIndexOutOfRing:"SparsePolynomial variable index is outside the polynomial ring.",sparseAdditionRingMismatch:"SparsePolynomial addition requires the same polynomial ring.",sparseCoefficientExponentNonNegative:"SparsePolynomial coefficient exponent must be non-negative.",sparseZeroMonomialDivision:"SparsePolynomial cannot divide by a zero monomial.",sparseZeroScalarDivision:"SparsePolynomial cannot divide by zero.",sparseScalarDivisionExact:"SparsePolynomial scalar division must be exact for every coefficient.",sparseDivisionRingMismatch:"SparsePolynomial division requires the same polynomial ring.",sparseZeroPolynomialDivision:"SparsePolynomial cannot divide by the zero polynomial.",sparseMonomialOrderUnsupported:"SparsePolynomial monomial order is not supported.",sparseMultiplicationRingMismatch:"SparsePolynomial multiplication requires the same polynomial ring.",sparseExponentNonNegative:"SparsePolynomial exponent must be non-negative.",sparseSubtractionRingMismatch:"SparsePolynomial subtraction requires the same polynomial ring.",invalidDecimal:'Invalid Decimal: "{{value}}"',invalidInterval:"Invalid interval: ({{start}}, {{end}})",invalidAssumption:'Invalid assumption: "{{input}}"',assumptionIdentifierExpected:"Expected identifier",assumptionOperatorMissing:"Missing operator",assumptionValueMissing:"Missing value",assumptionOperatorUnsupported:'Unsupported operator "{{operator}}"',matrixStringKeyUnsupported:"Matrix does not support string key access",matrixTraceUnavailable:"Unable to calculate trace for the matrix",defintMaxEvals:"defint: maxEvals exceeded ({{max}}).",defintNonFiniteValue:"defint: non-finite f(x) at x={{x}}",defintEndpointSingularity:"defint: endpoint singularity could not be regularized near x={{x}}",defintSingularity:"defint: singular/non-finite encountered near [{{a}}, {{b}}]",defintInfiniteBounds:"defint: infinite bounds require allowInfinite: true",defintUnsupportedInfiniteBounds:"defint: unsupported infinite bound configuration",symbolicAccessNamedTargetRequired:"Symbolic indexed access requires a named Vector or Matrix target.",symbolicVectorIndexCount:"Symbolic Vector access requires exactly one index.",symbolicMatrixRowNonScalar:"Symbolic Matrix row access is not scalar and cannot be deferred as an Expression.",symbolicMatrixCellIndexCount:"Symbolic Matrix cell access requires exactly two indices.",symbolicAccessMaxIndices:"Symbolic indexed access supports at most two unresolved indices.",symbolicAccessIndexScalar:"Symbolic accessor indices must evaluate to scalar expressions.",symbolicAccessTargetType:"Symbolic indexed access target must resolve to a Vector or Matrix.",expectedOperatorOrFunction:'Expected operator or function name but "{{value}}" found!',missingOpeningBracket:'Missing opening bracket for "{{bracket}}":{{position}}',missingClosingBracket:'Missing closing bracket for "{{bracket}}":{{position}}',prefixOperatorExpected:"Prefix operator expected but {{operator}} encountered.",groebnerBasisSizeBudgetExceeded:"Groebner budget exceeded: basis size > {{max}}",groebnerPairsBudgetExceeded:"Groebner budget exceeded: pairsPopped > {{max}}",unsupportedParserEntity:"Unsupported parser entity",factorialNegativeUndefined:"Factorial is undefined for negative integers.",erfConvergenceFailed:"erf not converging. Exiting!",defintInfiniteBoundsDecimal:"defint: infinite bounds require allowInfinite:true",seqStartsAtInteger:"startsAt must be an integer",seqPolynomialOrMaxPower:"Sequence is not a polynomial or exceeds maxPower",seqInsufficientData:"Insufficient data points for detected degree",arithPowNegativeExponent:"pow: negative exponent",arithPowNNonnegativeInteger:"powN: exponent must be a nonnegative integer",arithBigIntSqrtNegative:"bigIntSqrt: negative input",arithNthRootPositiveInteger:"intNthRootExact: n must be a positive integer",arithDivisorsPositive:"getDivisors: n must be positive",arithModNormNonzeroModulus:"modNorm: modulus must be nonzero",arithModSymmetricNonzeroModulus:"modSymmetric: modulus must be nonzero",arithModInvZeroNoninvertible:"modInv: non-invertible (0)",arithModInvNoninvertible:"modInv: non-invertible",integerSqrtNonnegative:"Integer square root requires a non-negative value.",modularExponentiationPositiveModulus:"Modular exponentiation requires a positive modulus.",modularExponentiationNonnegativeExponent:"Modular exponentiation requires a non-negative exponent.",maxBigIntRequiresArgument:"maxBigInt() requires at least one argument",minBigIntEmpty:"Min of empty list is not defined for BigInt.",binomBigIntNonnegativeN:"binomBigInt: n must be non-negative",invalidDecimalValue:"Invalid decimal value: {{value}}",subtractionNotDefined:"Subtraction not defined for {{leftType}}-{{rightType}} | {{left}}-{{right}}",sparseAdapterVariablesUnique:"Sparse polynomial adapter variables must be unique.",sparseAdapterVariablesIncludeEvery:"Sparse polynomial adapter variables must include every polynomial variable.",sparseExpressionConversionNameCount:"Sparse polynomial expression conversion requires one name per ring variable.",converterMissingArgumentScope:"Missing argument scope for function {{function}}",converterMissingPrefixOperand:"Missing operand for prefix operator {{operator}}",converterMissingOperandMetadata:"Missing operand or metadata for operator {{operator}}",converterMissingLeftOperand:"Missing left operand for operator {{operator}}",converterTexConversionFailed:"Unable to convert source expression to TeX",unknownOperator:"Unknown operator {{operator}}",polynomialMaximumIterations:"Maximum iterations reached",polyRequires:"{{operation}} requires {{requirement}}.",polyVariablesUnique:"{{operation}} variables must be unique.",polyVariablesRingOrder:"{{operation}} variables must follow polynomial-ring order.",polyVariablesIncludeActive:"{{operation}} variables must include every active variable.",polyInputsSelectedOnly:"{{operation}} inputs may use only the selected variables.",polyCannotFactorZeroPolynomial:"{{operation}} cannot factor the zero polynomial.",polyCannotFactorZero:"{{operation}} cannot factor zero.",polyModulusGreaterThanOne:"ModularSparsePolynomial modulus must be greater than one.",polyVariableCountMatch:"ModularSparsePolynomial variableCount must match the supplied sparse polynomial.",polyInterpolationCannotDepend:"ModularSparsePolynomial interpolation samples cannot depend on the interpolated variable.",polyInterpolationInvertibleDifferences:"ModularSparsePolynomial interpolation points must have invertible pairwise differences.",polyCoefficientExponentNonnegative:"ModularSparsePolynomial coefficient exponent must be non-negative.",polyCannotDivideZero:"ModularSparsePolynomial cannot divide by the zero polynomial.",polyDivisorLeadingCoefficientInvertible:"ModularSparsePolynomial divisor leading coefficient is not invertible.",polyLeadingCoefficientInvertible:"ModularSparsePolynomial leading coefficient is not invertible.",polyExponentNonnegative:"ModularSparsePolynomial exponent must be non-negative.",polyDegreeMatrixLimit:"Modular factorization degree exceeds the supported matrix dimension.",polyExtendedGcdTwoZeroUndefined:"Modular extended GCD is undefined for two zero polynomials.",polyHenselPrimeExceedsTailDegree:"Multivariate Hensel lifting prime must exceed every tail-variable degree.",polyHenselTargetNotSmaller:"Hensel lifting target modulus cannot be smaller than the base prime.",polyHenselTargetRepeatedSquaring:"Hensel lifting target modulus must be obtained by repeated squaring of the base prime.",polyHenselFactorsReconstructModuloBase:"Hensel lifting factors do not reconstruct the integer polynomial modulo the base prime.",polyZassenhausFactorsReconstructModuloLift:"Zassenhaus recombination factors do not reconstruct the input modulo the lift modulus.",polyWangCannotSpecializeZero:"Wang evaluation search cannot specialize zero.",polyModularContentExactDivision:"Modular polynomial content must divide the polynomial exactly.",factorizationNoFactors:"Nonconstant factorization returned no factors.",polyCrtModuliInvertible:"Polynomial CRT moduli must be invertible.",polyIntegerFactorPrimeZero:"Integer factorization cannot choose a prime for zero.",polySquareFreeNonExactDivision:"Square-free factorization encountered a non-exact polynomial division.",polyZassenhausLostRemaining:"Zassenhaus recombination lost the remaining polynomial.",polyZassenhausReconstructionFailed:"Zassenhaus recombination factors do not reconstruct the integer polynomial.",polyIntegerFactorLostLeading:"Integer factorization lost the leading term.",parserMalformedSymbolicAccessor:"Malformed internal symbolic accessor.",parserMalformedSymbolicAccessorIndex:"Malformed internal symbolic accessor index.",unknownOperatorAction:"Unknown operator action {{action}}",parserBracketTokenMissingCharacter:"Bracket token is missing its character.",polyWangLeadingEvaluationInteger:"Wang leading-coefficient evaluation did not produce an integer.",polyWangSpecializedLeadingInteger:"Wang specialized factor did not have an integer leading coefficient.",polyMultivariateContentDivisionFailed:"Multivariate factorization could not divide a square-free block by its main-variable content.",polyMultivariateContentVariableMissing:"Multivariate main-variable content did not retain an active coefficient variable.",polyMultivariateReconstructionFailed:"Complete multivariate factorization does not reconstruct the input polynomial.",polyBerlekampNoninvertiblePivot:"Berlekamp elimination encountered a noninvertible pivot.",polyHenselZeroFactorGroup:"Hensel lifting cannot lift a zero factor group.",polyHenselCannotLiftZero:"Hensel lifting cannot lift the zero polynomial.",polyHenselModulusExceeded:"Hensel lifting exceeded the requested prime-power modulus.",polyHenselLeadingLost:"Hensel lifting lost the target leading coefficient.",polyHenselReconstructionFailed:"Hensel-lifted factors do not reconstruct the target polynomial.",polyBerlekampNonExactSplit:"Berlekamp splitting produced a non-exact factor division.",polyBerlekampIncompleteSplit:"Berlekamp factorization did not fully split the polynomial.",polyBerlekampReconstructionFailed:"Berlekamp factors do not reconstruct the input polynomial.",expressionKeyValueUnsupported:"The function 'keyValue' is not implemented for type {{type}}.",solveLinearNonlinearDegree:"Nonlinear term detected in equation {{equation}}: degree {{degree}} term found. solveLinearSystem only handles linear systems.",solveLinearNonPolynomialVariable:'Nonlinear term detected in equation {{equation}}: variable "{{variable}}" appears in a non-polynomial position. solveLinearSystem only handles linear systems.',polyReqPrimeModulus:"a prime modulus",polyReqUnivariatePolynomial:"a univariate polynomial",polyReqSquareFreeInput:"square-free input",polyReqSamePolynomialRing:"the same polynomial ring",polyReqAtLeastOneVariable:"at least one variable",polyReqAtLeastTwoSelectedVariables:"at least two selected variables",polyReqOneEvaluationPerTailVariable:"one evaluation value per tail variable",polyReqMatchingFactorLeadingLists:"matching factor and leading-coefficient lists",polyReqPairwiseCoprimeModularFactors:"pairwise coprime modular factors",polyReqPrimeBaseModulus:"a prime base modulus",polyReqAtLeastOneModularFactor:"at least one modular factor",polyReqUnivariateIntegerPolynomial:"a univariate integer polynomial",polyReqFactorsSameRingAndPrime:"factors from the same integer polynomial ring and base prime",polyReqUnivariateFactors:"univariate factors",polyReqMonicModularFactors:"monic modular factors",polyReqPrimitiveIntegerPolynomial:"a primitive integer polynomial",polyReqPositiveLeadingCoefficient:"a positive leading coefficient",polyReqLiftedModularFactors:"lifted modular factors",polyReqLiftedFactorsSameRing:"lifted factors from one polynomial ring",polyReqUnivariateLiftedFactors:"univariate lifted factors",polyReqMonicLiftedFactors:"monic lifted factors",polyReqLargerHenselModulus:"a larger Hensel lifting modulus",polyReqPrimitivePolynomial:"a primitive polynomial",polyReqPositiveLexLeadingSign:"positive lexicographic leading sign",polyReqSquareFreeMainVariable:"square-free input in the main variable",polyReqExactlyTwoSelectedVariables:"exactly two selected variables",polyReqExactlyTwoVariables:"exactly two variables",polyReqOneValuePerNonMainVariable:"one value for every non-main selected variable",polyReqOneValuePerTailVariable:"one value for every tail variable",polyReqPositiveDegreeMainVariable:"positive degree in the main variable",polyReqAllOtherVariablesDormant:"all other variables to be dormant",polyReqPositiveModuli:"positive moduli",polyReqCoprimeModuli:"coprime moduli",polyReqAtLeastOneSample:"at least one sample",polyReqInvertibleLeadingCoefficient:"an invertible leading coefficient",polyReqIntegerLeadingCoefficientInvertible:"the integer leading coefficient to be invertible modulo the base prime",infinityMinusInfinityUndefined:"Infinity-Infinity is undefined!",inconsistentAssumptions:"Assumptions are inconsistent (empty intersection)!",unsupportedType:"The provided type ({{type}}) is not supported for this function!",unsupportedOperation:"This operation is currently not supported!",buildFunctionUnsupportedFunction:'buildFunction cannot compile the function "{{function}}" to JavaScript number arithmetic!',buildFunctionComplexUnsupported:"buildFunction cannot compile expressions containing the imaginary unit to JavaScript number arithmetic!",nonMatchingDimensions:"This operation cannot be completed because the dimensions don't match!",malformedExpression:"Unable to parse malformed expression!",unsupportedCharacter:'Unsupported character "{{character}}" at position {{position}}.',missingCommentDelimiter:'Missing closing comment delimiter "{{delimiter}}".',divisionByZero:"Division by zero is not defined!",zeroToZeroPower:"0^0 is undefined!",infinityToPowerZero:"Infinity^0 is not defined!",infinityTimesZero:"0*Infinity is not defined!",infinityToInfinity:"Infinity^Infinity is not defined!",valueToInfinityUndefined:"{{value}}^Infinity is not defined!",atan2Undefined:"atan2 is undefined for 0, 0!",tanUndefined:"tan is undefined for multiples of pi/2!",loopIterationLimitExceeded:"Loop exceeded the maximum of {{max}} iterations.",breakOutsideLoop:"break can only be used inside a loop.",continueOutsideLoop:"continue can only be used inside a loop.",letRequiresBindingsAndBody:"let requires one or more name/value pairs followed by a body expression.",secUndefined:"sec is undefined for odd multiples of pi/2!",cscUndefined:"csc is undefined for multiples of pi!",cotUndefined:"cot is undefined for multiples of pi!",cothUndefined:"coth is undefined for 0!",cschUndefined:"csch is undefined for 0!",atanhUndefined:"atanh is undefined for 0!",cannotCreateArrayFromNaN:"Cannot create array from NaN!",expressionExpected:"Expression expected!. Received {{type}}!",unrecognizedMode:'"{{mode}}" is is not a valid mode!',notAPolynomial:"The expression is not a valid polynomial!",multidegreeMismatch:"The number of variables must match the multidegree of the polynomial!",cannotCreateMatrix:"Unable to create Matrix. Row dimensions do not match!",cannotMultiplyMatrix:"Cannot multiply matrix!",squareMatrixRequired:"The matrix must be square!",rowsMustMatch:"The rows of the matrices must match!",columnsMustMatch:"The columns of the matrices must match!",singularMatrix:"The provided matrix is singular!",matrixExpected:"Matrix expected! Received {{type}}.",mismatchedDimensions:'The dimensions must match for the function "{{function}}"!',incorrectCrossDimension:"The cross product is only defined for vectors of dimension 3!",vectorExpected:"Expected Vector! Received {{type}}.",univariatePolynomialOnly:"This function is only supported for univariate polynomials!",unknownVariable:'Unknown variable! "{{variable}}"',convergenceFailed:"Failed to converge! {{iters}} iterations were tried.",endPointIsRoot:"End point is root.",zeroDerivative:"The derivative is zero at x = {{x}}. Cannot continue.",tooManyUnknowns:"Too many unknowns!",solveSystemInfiniteSolutions:"This system does not have a finite isolated solution set!",solveSystemPolynomialOnly:"solveSystem currently supports only linear or polynomial systems!",solveSystemNonRationalUnsupported:"This nonlinear polynomial system requires non-rational or non-symbolic solving, which is not yet supported!",setJSFunctionExpectsFunction:"The function parameter when setting a JS function must be of type function!",functionRequiresMinAndMaxArgs:"You must provide a min and max arg when setting the function!"},t.ErrorMessages={eng:t.EnglishErrorMessages}},492(e,t,n){"use strict";t.registerNerdamerFunctions=function registerNerdamerFunctions(){(0,l.loadScriptingFunctions)(),(0,s.loadAssumptionFunctions)(),(0,o.loadMatrixFunctions)(),(0,u.loadVectorFunctions)(),(0,c.loadComplexFunctions)(),(0,a.loadPolynomialFunctions)(),(0,m.loadMathFunctions)(),(0,i.loadAlgebraFunctions)(),(0,r.loadCalculusFunctions)(),(0,p.loadSolveFunctions)()};const i=n(193),r=n(1039),s=n(3263),o=n(981),a=n(1808),l=n(1929),u=n(1027),c=n(8522),m=n(6953),p=n(7328)},551(e,t,n){"use strict";t.factorial=void 0,t.abs=abs,t.GCD=GCD,t.LCM=function LCM(...e){let t=(e=uniqueSortedArray(e))[0];for(let n=1;n<e.length;n++){const i=e[n];t=t*i/GCD(t,i)}return t},t.simplifyRatio=simplifyRatio,t.convert=function convert(e){const[t,n]=(0,r.decimalSplit)(e),i=10n**BigInt(n.length);return simplifyRatio(BigInt(t+n),i)},t.sign=sign,t.isEven=isEven,t.ceilIntegerSquareRoot=function ceilIntegerSquareRoot(e){const t=integerSquareRoot(e);return t*t===e?t:t+1n},t.fibonacci=function fibonacci(e){const t=e<0n,n=t?-e:e;let i=0n,r=1n;for(const e of n.toString(2)){const t=i*(2n*r-i),n=i*i+r*r;"0"===e?(i=t,r=n):(i=n,r=t+n)}let s=i;t&&isEven(n)&&(s=-s);return s},t.mod=mod,t.powMod=function powMod(e,t,n){if(n<=0n)throw new RangeError((0,i.message)("modularExponentiationPositiveModulus"));if(t<0n)throw new RangeError((0,i.message)("modularExponentiationNonnegativeExponent"));let r=1n%n,s=mod(e,n),o=t;for(;o>0n;)o%2n==1n&&(r=r*s%n),s=s*s%n,o/=2n;return r},t.invMod=function invMod(e,t){let n=-1n;const i=abs(t);if(0n!==i){let t=0n,r=1n,s=i,o=mod(e,i);for(;0n!==o;){const e=s/o;[t,r]=[r,t-e*r],[s,o]=[o,s-e*o]}1n===s&&(n=mod(t,i))}return n},t.productInRange=function productInRange(e,t,n=1){let i=BigInt(e),r=BigInt(e);const s=BigInt(n);for(;r<t;)r+=s,i*=r;return i},t.bigintLCM=function bigintLCM(e){if(0===e.length)return 1n;function lcm(e,t){return e/function gcd(e,t){for(e=e<0n?-e:e,t=t<0n?-t:t;0n!==t;)[e,t]=[t,e%t];return e}(e,t)*t}let t=e[0];for(let n=1;n<e.length;n++)t=lcm(t,e[n]);return t};const i=n(4703),r=n(7103),s=n(5869);function abs(e){return e<0n?-e:e}function uniqueSortedArray(e){return(0,s.arrayUnique)([].slice.call(e).map(function(e){return abs(e)})).sort()}function GCD(...e){let t=(e=uniqueSortedArray(e))[0];for(let n=1;n<e.length;n++){let i=e[n];for(;;){if(t%=i,0n===t){t=i;break}if(i%=t,0n===i)break}}return t}function simplifyRatio(e,t){if(1n!==t){const n=GCD(t,e);return[e/n,t/n]}return[e,t]}function sign(e){return 0n===e?0:e<0n?-1:1}function isEven(e){return e%2n==0n}function integerSquareRoot(e){if(e<0n)throw new RangeError((0,i.message)("integerSqrtNonnegative"));if(e<2n)return e;let t=1n<<(BigInt(e.toString(2).length)+1n>>1n);for(;;){const n=t+e/t>>1n;if(n>=t)return t;t=n}}function mod(e,t){let n;return n=sign(e)===sign(t)?e%t:(e%t+t)%t,n}t.factorial=function(){const e=[1n,1n];let t=2;function bigFactorial(n){if("bigint"==typeof n&&(n=Number(n)),n<0)throw new RangeError((0,i.message)("factorialNegativeUndefined"));if(void 0!==e[n])return e[n];let r=e[t-1];for(;t<=n;t++)e[t]=r*=BigInt(t);return r}return bigFactorial(100),bigFactorial}()},982(e,t,n){"use strict";t.isPrimeBig=isPrimeBig,t.nextPrimeBig=function nextPrimeBig(e){let t=e<=2n?2n:e;t>2n&&t%2n==0n&&t++;for(;!isPrimeBig(t);)t+=2n===t?1n:2n;return t},t.primeFactorsBig=primeFactorsBig,t.primeFactorCounts=function primeFactorCounts(e){const t={},n=primeFactorsBig(e).factors;for(const e of n){const n=String(e);n in t?t[n]++:t[n]=1n}return t};const i=n(551);function isPrimeBig(e){if(e<2n)return!1;if(2n===e||3n===e)return!0;if(e%2n==0n)return!1;let t=0n,n=e-1n;for(;n%2n==0n;)t++,n/=2n;const r=e<18446744073709551616n?[2n,325n,9375n,28178n,450775n,9780504n,1795265022n]:[2n,3n,5n,7n,11n,13n,17n,19n,23n,29n,31n,37n];for(const s of r){const r=s%e;if(r<2n)continue;let o=(0,i.powMod)(r,n,e);if(1n===o||o===e-1n)continue;let a=!1;for(let n=0n;n<t-1n;n++)if(o=o*o%e,o===e-1n){a=!0;break}if(!a)return!1}return!0}function trialDivisionBig(e){if(e<=1n)return[];const t=[];for(;e%2n==0n;)t.push(2n),e/=2n;let n=3n;const i=(e=>{if(e<2n)return e;let t=e,n=(t+1n)/2n;for(;n<t;)t=n,n=(t+e/t)/2n;return t})(e);for(;n<=i;){for(;e%n===0n;)t.push(n),e/=n;n+=2n}return e>1n&&t.push(e),t}function pollardRhoBig(e){if(e%2n==0n)return 2n;let t=2n,n=2n,i=1n;const f=t=>(t*t+1n)%e,gcd=(e,t)=>{for(;0n!==t;)[e,t]=[t,e%t];return e};for(;1n===i;)t=f(t),n=f(f(n)),i=gcd(t>n?t-n:n-t,e);return i===e?0n:i}function primeFactorsBig(e,t){const n=(0,i.sign)(e);e=(0,i.abs)(e);const r=[];if(1n===e||2n===e||isPrimeBig(e))r.push(e);else{const factorize=e=>{if(1n===e)return;if(isPrimeBig(e))return void r.push(e);const t=pollardRhoBig(e);if(0n===t){const t=trialDivisionBig(e);return void r.push(...t)}factorize(t),factorize(e/t)};factorize(e)}return r.sort((e,t)=>e<t?-1:1),{sign:n,factors:t?r.map(e=>Number(e)):r}}},417(e,t,n){"use strict";t.definitions=void 0;const i=n(2348),r=n(3703);t.definitions={cos:[e=>Math.cos(e)],sin:[e=>Math.sin(e)],tan:[e=>Math.tan(e)],sec:[e=>1/Math.cos(e)],csc:[e=>0===e?NaN:1/Math.sin(e)],cot:[e=>0===e?NaN:1/Math.tan(e)],acos:[e=>Math.acos(e)],asin:[e=>Math.asin(e)],atan:[e=>Math.atan(e)],asec:[e=>Math.acos(1/e)],acsc:[e=>Math.asin(1/e)],acot:[e=>e<0?Math.PI+Math.atan(1/e):Math.atan(1/e)],atan2:[(e,t)=>0===e&&0===t||!Number.isFinite(e)&&!Number.isFinite(t)?NaN:Math.atan2(e,t)],cosh:[e=>Math.cosh(e)],sinh:[e=>Math.sinh(e)],tanh:[e=>Math.tanh(e)],sech:[e=>1/Math.cosh(e)],csch:[e=>0===e?NaN:1/Math.sinh(e)],coth:[e=>0===e?NaN:1/Math.tanh(e)],acosh:[e=>Math.acosh(e)],asinh:[e=>Math.asinh(e)],atanh:[e=>1===e?NaN:Math.atanh(e)],asech:[e=>0===e?NaN:Math.acosh(1/e)],acsch:[e=>0===e?NaN:Math.asinh(1/e)],acoth:[e=>Math.atanh(1/e)],abs:[e=>Math.abs(e)],sqrt:[e=>Math.sqrt(e)],cbrt:[e=>Math.cbrt(e)],nthroot:[(e,t)=>0===t?NaN:Math.pow(e,1/t)],log:[(e,t)=>void 0===t?Math.log(e):t<=0||1===t?NaN:Math.log(e)/Math.log(t)],exp:[e=>Math.exp(e)],hypot:[(e,t)=>Math.hypot(e,t)],round:[r.round,["isInt"]],sign:[e=>Math.sign(e)],floor:[e=>Math.floor(e)],ceil:[e=>Math.ceil(e)],ceiling:[e=>Math.ceil(e)],trunc:[e=>Math.trunc(e)],mod:[r.mod],modinv:[r.modInv,["mod"]],max:[(...e)=>Math.max(...e)],min:[(...e)=>Math.min(...e)],avg:[(...e)=>e.reduce((e,t)=>e+t,0)/e.length],heaviside:[r.heaviside],step:[e=>Number.isNaN(e)?NaN:e<0?0:1],rect:[e=>{const t=Math.abs(e);return t<.5?1:.5===t?.5:0}],tri:[e=>Math.max(1-Math.abs(e),0)],realpart:[e=>e],imagpart:[()=>0],arg:[e=>Number.isNaN(e)?NaN:e<0?Math.PI:0],conjugate:[e=>e],polarform:[e=>e],rectform:[e=>e],csgn:[e=>Math.sign(e)],isInt:[r.isInt],GCD:[r.GCD],gcd:[r.GCD],LCM:[r.LCM,["GCD"]],lcm:[r.LCM,["GCD"]],modInv:[r.modInv,["mod"]],isPrime:[r.isPrime],isprime:[r.isPrime],fib:[e=>{let t=NaN;if(Number.isSafeInteger(e)){const n=e<0,i=Math.abs(e);let r=0,s=1;for(let e=0;e<i;e++){const e=r+s;if(r=s,s=e,!Number.isSafeInteger(r))break}Number.isSafeInteger(r)&&(t=n&&i%2==0?-r:r)}return t}],fact:[r.factorial,["isInt","gamma"]],factorial:[r.factorial,["isInt","gamma"]],dfact:[r.doubleFactorial,["isInt","gamma"]],erf:[r.erf,["erfc"]],erfc:[r.erfc],gammaLN:[r.gammaLN],gamma:[r.gamma,["gammaLN","isInt","factorial"]],sinc:[r.sinc],Si:[r.Si],Shi:[r.Shi],Ci:[r.Ci],Chi:[r.Chi],Ei:[r.Ei],Li:[r.Li],fresnelIntegral:[i.fresnelIntegral],S:[i.fresnelS,["fresnelIntegral"]],C:[i.fresnelC,["fresnelIntegral"]]}},4895(e,t,n){"use strict";t.build=function build(e,t){if((e=i.Expression.create(e)).hasVariable(i.Expression.imaginary))throw new s.UnsupportedOperationError((0,s.message)("buildFunctionComplexUnsupported"));const n=function collectConstants(e){const t="EULER_GAMMA",n=[],i={[r.PI_NAME]:Math.PI,[r.E]:Math.E};function setConstant(e,t){n.push(`var ${e} = ${t};\n`)}[r.PI_NAME,r.E].forEach(t=>{e.hasVariable(t)&&setConstant(t,i[t])}),[r.CI,r.CHI,r.SI,r.SHI,r.LI,r.EI].some(t=>e.hasFunction(t,!0))&&setConstant(t,o.EULER_GAMMA);return n.join(" ")}(e),a=`${e.text({wrapPow:!0})};`.replace(/\^/g,"**"),l=[[],[]];e.functions().forEach(e=>{importDeps(e,l)});let u="";for(let e=0;e<l[0].length;e++)u+=`var ${l[0][e]} = ${l[1][e]};\n`;const c=t||e.variables().sort();return new Function(...c,`${n}${u} return ${a}`)};const i=n(296),r=n(8300),s=n(4703),o=n(3703),a=n(417);function importDeps(e,t,n=new Set){if(""===e)return t;const i=t[0],r=t[1];if(i.includes(e))return t;const o=a.definitions[e];if(void 0===o)throw new s.UnsupportedOperationError((0,s.message)("buildFunctionUnsupportedFunction",{function:e}));if(n.has(e))return t;n.add(e);const[l,u]=o;if(void 0!==u)for(const e of u)importDeps(e,t,n);return n.delete(e),i.includes(e)||(i.push(e),r.push(l)),t}},8522(e,t,n){"use strict";t.loadComplexFunctions=function loadComplexFunctions(){Object.assign(i.mathFunctionRegistry,{imagpart:(0,i.systemFunction)({fn:r.imagPart,minArgs:1,maxArgs:1,distElWise:!0}),realpart:(0,i.systemFunction)({fn:r.realPart,minArgs:1,maxArgs:1,distElWise:!0}),polarform:(0,i.systemFunction)({fn:r.polarForm,minArgs:1,maxArgs:1,distElWise:!0}),rectform:(0,i.systemFunction)({fn:r.rectForm,minArgs:1,maxArgs:1,distElWise:!0}),arg:(0,i.systemFunction)({fn:r.arg,minArgs:1,maxArgs:1,distElWise:!0}),csgn:(0,i.systemFunction)({fn:r.csgn,minArgs:1,maxArgs:1,distElWise:!0}),conjugate:(0,i.systemFunction)({fn:r.conjugate,minArgs:1,maxArgs:1,distElWise:!0})})};const i=n(9426),r=n(4600)},4600(e,t,n){"use strict";t.realPart=realPart,t.imagPart=imagPart,t.simplifyImaginary=function simplifyImaginary(e){const t=e.getPower();if(e.isI()&&t.isInteger()){let n;switch(t.mod("4").abs().text()){case"1":n=s.Expression.Img();break;case"2":n=(0,o.minusOne)();break;case"3":n=s.Expression.Img().neg();break;default:n=(0,o.one)()}return n=(0,c.multiply)(n,s.Expression.fromRational(e.getMultiplier())),n}return e},t.toPolarFormArray=toPolarFormArray,t.polarForm=function polarForm(e){let t;if(e.isNUM()||e.isI()&&e.isLinear())t=e.copy();else{const[n,i]=toPolarFormArray((0,p.expand)(e)),r=(0,c.multiply)(s.Expression.Img(),i),o=(0,m.power)(s.Expression.Variable(a.E),r);t=(0,c.multiply)(o,n)}return t},t.rectForm=function rectForm(e){let t;if((e=s.Expression.create(e)).isE()){const n=e.getPower(),i=e.getMultiplier();if(n.isComplex()){const e=function toTheta(e){const t=e.elementsArray();let n=(0,o.one)(),i=(0,o.one)();for(const e of t)e.isComplex()?n=n.times(e):i=i.times(e);if(n.value===s.Expression.imaginary)return i.isFunction(a.ATAN)?i:i.times(e.getMultiplier());if(n.isFunction(a.ATAN)&&n.getArguments()[0].value===s.Expression.imaginary){const t=n.getArguments()[0];return s.Expression.toFunction(a.ATANH,[s.Expression.fromRational(t.getMultiplier())]).times(e.getMultiplier())}}(n);e&&(t=(0,r.cos)(e).times(i).plus((0,r.sin)(e).times(i).i()))}}else if(e.isProduct()){let n=s.Expression.fromRational(e.getMultiplier());e.each(e=>{n=n.times(rectForm(e))}),t=n}else if(e.isSum()){let n=(0,o.zero)();e.each(e=>{n=n.plus(rectForm(e))}),t=n}return t?t.expand():e.isComplex()?e.evaluate():e},t.arg=function arg(e){e=s.Expression.create(e);const[,t]=toPolarFormArray(e);return t},t.conjugate=function conjugate(e){e=s.Expression.create(e);const t=(0,p.expand)(e);let n;const i=t.getPower();if(t.isEXP()||!t.isNUM()&&!i.isOne()){const e=s.Expression.fromRational(t.getMultiplier()),r=t.getBase(),o=realPart(r),l=imagPart(r),u=o.isConstant()&&l.isConstant()&&(!l.isZero()||!o.isZero()&&o.sign()>0);if(i.isInteger()||u){const t=conjugate(r),s=i.isComplex()?conjugate(i):i;n=e.times(t.pow(s))}else n=s.Expression.toFunction(a.CONJUGATE,[t])}else if(t.isVAR()&&t.isI())n=t.neg();else if(t.isSum()){n=(0,o.zero)();for(const e of t.elementsArray())n=n.plus(conjugate(e))}else if(t.isProduct()){n=s.Expression.fromRational(t.getMultiplier());for(const e of t.elementsArray())n=n.times(conjugate(e))}return n??e},t.csgn=function csgn(e){e=s.Expression.create(e);const t=(0,p.expand)(e),n=realPart(t),i=imagPart(t);let r;n.isZero()&&i.isZero()?r=(0,o.zero)():!n.isZero()&&n.isConstant()?r=n.sign()>0?(0,o.one)():(0,o.minusOne)():n.isZero()&&i.isConstant()&&(r=i.sign()>0?(0,o.one)():(0,o.minusOne)());return r??s.Expression.toFunction(a.CSGN,[t])};const i=n(7867),r=n(1649),s=n(296),o=n(6099),a=n(8300),l=n(6255),u=n(3171),c=n(6498),m=n(3957),p=n(7741);function realPart(e){let t;const n=(0,p.expand)(e);if(n.isVAR()&&n.isI()){const e=n.getPower(),i=(0,u.divide)(s.Expression.Pi(),(0,o.two)()),a=(0,r.cos)((0,c.multiply)(e,i));t=(0,c.multiply)(s.Expression.fromRational(n.getMultiplier()),a)}else if(n.isEXP()){const e=n.getPower(),i=s.Expression.fromRational(n.getMultiplier());if(e.isInteger())t=(0,c.multiply)(i,realPart((0,m.power)(n.getBase(),e)));else{const[s,o]=toPolarFormArray(n.getBase()),a=(0,m.power)(s,e),l=(0,r.cos)((0,c.multiply)(e,o));t=(0,c.multiply)(i,(0,c.multiply)(a,l))}}else if(n.isComplexComponentFunction())t=n.copy();else if(n.isFunction())t=n.isComplex()?s.Expression.toFunction(a.REALPART,[n]):n.copy();else if(n.isProduct()&&n.isComplex()){const e=s.Expression.fromRational(n.getMultiplier());let i,r=(0,o.one)(),a=0;const l=n.getElements();for(const e in l){const t=l[e];t.isComplex()?(i=t,a++):r=(0,c.multiply)(r,t)}if(1===a&&i)t=(0,c.multiply)(e,(0,c.multiply)(r,realPart(i)));else{let n=(0,o.one)(),i=(0,o.zero)();for(const e in l){const t=l[e];if(t.isComplex()){const e=realPart(t),r=imagPart(t),s=n,o=i;n=(0,c.multiply)(s,e).minus((0,c.multiply)(o,r)),i=(0,c.multiply)(s,r).plus((0,c.multiply)(o,e))}}t=(0,c.multiply)(e,(0,c.multiply)(r,n))}}else if(n.isConstant()||n.isVAR()&&!n.isI()||n.isProduct()&&!n.isComplex())t=e.copy();else if(n.isSum())if(n.getPower().isOne()){t=(0,o.zero)();const e=n.getElements();for(const n in e){const i=realPart(e[n]);t=(0,l.add)(t,i)}}else t=e.copy();else t=(0,o.zero)();return t}function imagPart(e){let t;const n=(0,p.expand)(e);if(n.isVAR()&&n.isI()){const e=n.getPower(),i=(0,u.divide)(s.Expression.Pi(),(0,o.two)()),a=(0,r.sin)((0,c.multiply)(e,i));t=(0,c.multiply)(s.Expression.fromRational(n.getMultiplier()),a)}else if(n.isEXP()){const e=n.getPower(),i=s.Expression.fromRational(n.getMultiplier());if(e.isInteger())t=(0,c.multiply)(i,imagPart((0,m.power)(n.getBase(),e)));else{const[s,o]=toPolarFormArray(n.getBase()),a=(0,m.power)(s,e),l=(0,r.sin)((0,c.multiply)(e,o));t=(0,c.multiply)(i,(0,c.multiply)(a,l))}}else if(n.isComplexComponentFunction())t=(0,o.zero)();else if(n.isFunction()&&n.isComplex())t=s.Expression.toFunction(a.IMAGPART,[n]);else if(n.isSum()){t=(0,o.zero)();const e=n.getElements();for(const n in e)t=(0,l.add)(t,imagPart(e[n]))}else if(n.isProduct())if(n.isComplex()){const e=s.Expression.fromRational(n.getMultiplier());let i,r=(0,o.one)(),a=0;const l=n.getElements();for(const e in l){const t=l[e];t.isComplex()?(i=t,a++):r=(0,c.multiply)(r,t)}if(1===a&&i)t=(0,c.multiply)(e,(0,c.multiply)(r,imagPart(i)));else{let n=(0,o.one)(),i=(0,o.zero)();for(const e in l){const t=l[e];if(t.isComplex()){const e=realPart(t),r=imagPart(t),s=n,o=i;n=(0,c.multiply)(s,e).minus((0,c.multiply)(o,r)),i=(0,c.multiply)(s,r).plus((0,c.multiply)(o,e))}}t=(0,c.multiply)(e,(0,c.multiply)(r,i))}}else t=(0,o.zero)();else t=(0,o.zero)();return t}function toPolarFormArray(e){const t=e.realPart(),n=e.imagPart(),a=(0,i.hypot)(t,n);let l;return l=t.isZero()?n.isZero()?(0,o.zero)():n.isConstant()?n.sign()<0?(0,c.multiply)((0,o.minusOne)(),(0,u.divide)(s.Expression.Pi(),(0,o.two)())):(0,u.divide)(s.Expression.Pi(),(0,o.two)()):(0,r.atan2)(n,t):(0,r.atan2)(n,t),[a,l]}},9571(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.EULER_GAMMA=void 0,t.erf=function erf(e){e=new r.default(e);const t=r.default.acos(-1),n=new r.default(2).div(t.sqrt()),i=getSeriesError(),a=r.default.sign(e);if((e=e.abs()).isZero())return new r.default(0);if(e.lt(2)){let t=new r.default(0),l=0,u=e;const c=Math.max(1e3,8*r.default.precision);for(;u.gte(i);){const n=new r.default(-1).pow(l).times(e.pow(2*l+1)),i=new r.default(2*l+1).times(String((0,o.factorial)(l))),a=t.plus(n.div(i));if(u=a.minus(t).abs(),t=a,l++,l>c)throw new Error((0,s.message)("erfConvergenceFailed"))}let m=r.default.min(n.times(t),1);return-1===a&&(m=m.neg()),m}const l=e.mul(e).mul(2);let u=new r.default(1),c=u,m=u.abs();const p=Math.max(1e3,8*r.default.precision);for(let e=1;e<p;e++){u=u.mul(-(2*e-1)).div(l);const t=u.abs();if(t.gt(m))break;if(m=t,c=c.plus(u),t.lt(i))break}const g=e.neg().mul(e).exp().div(t.sqrt().mul(e)).times(c);let d=new r.default(1).minus(g);-1===a&&(d=d.neg());return d},t.gamma=function gamma(e){if((e=new r.default(e)).isInteger())return e.lte(0)?new r.default(1/0):new r.default(String((0,o.factorial)(Number(e.minus(1)))));if(e.lt(0)){const t=r.default.acos(-1);return t.div(t.times(e).sin().times(gammaSpouge(new r.default(1).minus(e))))}return gammaSpouge(e)},t.sinc=function sinc(e){const t=new r.default(e);if(t.isZero())return new r.default(1);if(t.abs().lt("1e-8")){const e=t.mul(t);return new r.default(1).minus(e.div(6)).plus(e.mul(e).div(120)).minus(e.mul(e).mul(e).div(5040))}return t.sin().div(t)},t.Si=function Si(e){let t=new r.default(e);if(t.isZero())return new r.default(0);let n=new r.default(1);t.isNeg()&&(n=new r.default(-1),t=t.neg());function polevl(e,t){let n=t[0];for(let i=1;i<t.length;i++)n=n.mul(e).plus(t[i]);return n}function p1evl(e,t){let n=e.plus(t[0]);for(let i=1;i<t.length;i++)n=n.mul(e).plus(t[i]);return n}if(t.gt(a)){const e=r.default.acos(-1).div(2);return n.mul(e.minus(t.cos().div(t)))}if(t.lte(4)){const e=[new r.default("-8.39167827910303881427e-11"),new r.default("4.62591714427012837309e-8"),new r.default("-9.75759303843632795789e-6"),new r.default("9.76945438170435310816e-4"),new r.default("-4.13470316229406538752e-2"),new r.default("1.00000000000000000302")],i=[new r.default("2.03269266195951942049e-12"),new r.default("1.27997891179943299903e-9"),new r.default("4.41827842801218905784e-7"),new r.default("9.96412122043875552487e-5"),new r.default("1.42085239326149893930e-2"),new r.default("9.99999999999999996984e-1")],s=t.mul(t),o=t.mul(polevl(s,e)).div(polevl(s,i));return n.mul(o)}const i=t.sin(),s=t.cos(),o=new r.default(1).div(t.mul(t));let l,u;if(t.lt(8)){const e=[new r.default("4.23612862892216586994"),new r.default("5.45937717161812843388"),new r.default("1.62083287701538329132"),new r.default("1.67006611831323023771e-1"),new r.default("6.81020132472518137426e-3"),new r.default("1.08936580650328664411e-4"),new r.default("5.48900223421373614008e-7")],n=[new r.default("8.16496634205391016773"),new r.default("7.30828822505564552187"),new r.default("1.86792257950184183883"),new r.default("1.78792052963149907262e-1"),new r.default("7.01710668322789753610e-3"),new r.default("1.10034357153915731354e-4"),new r.default("5.48900252756255700982e-7")],i=[new r.default("8.71001698973114191777e-2"),new r.default("6.11379109952219284151e-1"),new r.default("3.97180296392337498885e-1"),new r.default("7.48527737628469092119e-2"),new r.default("5.38868681462177273157e-3"),new r.default("1.61999794598934024525e-4"),new r.default("1.97963874140963632189e-6"),new r.default("7.82579040744090311069e-9")],s=[new r.default("1.64402202413355338886"),new r.default("6.66296701268987968381e-1"),new r.default("9.88771761277688796203e-2"),new r.default("6.22396345441768420760e-3"),new r.default("1.73221081474177119497e-4"),new r.default("2.02659182086343991969e-6"),new r.default("7.82579218933534490868e-9")];l=polevl(o,e).div(t.mul(p1evl(o,n))),u=o.mul(polevl(o,i)).div(p1evl(o,s))}else{const e=[new r.default("4.55880873470465315206e-1"),new r.default("7.13715274100146711374e-1"),new r.default("1.60300158222319456320e-1"),new r.default("1.16064229408124407915e-2"),new r.default("3.49556442447859055605e-4"),new r.default("4.86215430826454749482e-6"),new r.default("3.20092790091004902806e-8"),new r.default("9.41779576128512936592e-11"),new r.default("9.70507110881952024631e-14")],n=[new r.default("9.17463611873684053703e-1"),new r.default("1.78685545332074536321e-1"),new r.default("1.22253594771971293032e-2"),new r.default("3.58696481881851580297e-4"),new r.default("4.92435064317881464393e-6"),new r.default("3.21956939101046018377e-8"),new r.default("9.43720590350276732376e-11"),new r.default("9.70507110881952025725e-14")],i=[new r.default("6.97359953443276214934e-1"),new r.default("3.30410979305632063225e-1"),new r.default("3.84878767649974295920e-2"),new r.default("1.71718239052347903558e-3"),new r.default("3.48941165502279436777e-5"),new r.default("3.47131167084116673800e-7"),new r.default("1.70404452782044526189e-9"),new r.default("3.85945925430276600453e-12"),new r.default("3.14040098946363334640e-15")],s=[new r.default("1.68548898811011640017"),new r.default("4.87852258695304967486e-1"),new r.default("4.67913194259625806320e-2"),new r.default("1.90284426674399523638e-3"),new r.default("3.68475504442561108162e-5"),new r.default("3.57043223443740838771e-7"),new r.default("1.72693748966316146736e-9"),new r.default("3.87830166023954706752e-12"),new r.default("3.14040098946363335242e-15")];l=polevl(o,e).div(t.mul(p1evl(o,n))),u=o.mul(polevl(o,i)).div(p1evl(o,s))}const c=r.default.acos(-1).div(2);return n.mul(c.minus(l.mul(s)).minus(u.mul(i)))},t.Shi=function Shi(e){const n=new r.default(e);if(n.isZero())return new r.default(0);const i=n.isNeg()?new r.default(-1):new r.default(1),s=n.abs();if(s.lt(8)){let e=s,t=e,n=0;for(let i=0;i<200;i++){const i=2*n+1;if(e=e.mul(s).mul(s).mul(i).div(new r.default(i+2).mul(i+2).mul(i+1)),t=t.plus(e),n++,e.abs().lt(getSeriesError()))break}return i.mul(t)}function EiLocal(e){if(e.isZero())return new r.default(-1/0);if(e.gt(l)||e.lt(-40)){let t=new r.default(1),n=new r.default(1),i=t.abs();for(let r=1;r<u;r++){t=t.mul(r).div(e);const s=t.abs();if(s.gt(i))break;if(i=s,n=n.plus(t),s.lt(getSeriesError()))break}return e.exp().mul(n).div(e)}let n=e,i=n;for(let t=1;t<c&&(n=n.mul(e).mul(t).div(new r.default(t+1).mul(t+1)),i=i.plus(n),!n.abs().lt(getSeriesError()));t++);return t.EULER_GAMMA.plus(e.abs().ln()).plus(i)}return EiLocal(n).minus(EiLocal(n.neg())).div(2)},t.Ci=function Ci(e){let n=new r.default(e);if(n.isZero())return new r.default(-1/0);n.isNeg()&&(n=n.neg());function polevl(e,t){let n=t[0];for(let i=1;i<t.length;i++)n=n.mul(e).plus(t[i]);return n}function p1evl(e,t){let n=e.plus(t[0]);for(let i=1;i<t.length;i++)n=n.mul(e).plus(t[i]);return n}if(n.gt(a))return n.sin().div(n);if(n.lte(4)){const e=[new r.default("2.02524002389102268789e-11"),new r.default("-1.35249504915790756375e-8"),new r.default("3.59325051419993077021e-6"),new r.default("-4.74007206873407909465e-4"),new r.default("2.89159652607555242092e-2"),new r.default("-1.00000000000000000080")],i=[new r.default("4.07746040061880559506e-12"),new r.default("3.06780997581887812692e-9"),new r.default("1.23210355685883423679e-6"),new r.default("3.17442024775032769882e-4"),new r.default("5.10028056236446052392e-2"),new r.default("4.00000000000000000080")],s=n.mul(n),o=s.mul(polevl(s,e)).div(polevl(s,i));return t.EULER_GAMMA.plus(n.ln()).plus(o)}const i=n.sin(),s=n.cos(),o=new r.default(1).div(n.mul(n));let l,u;if(n.lt(8)){const e=[new r.default("4.23612862892216586994"),new r.default("5.45937717161812843388"),new r.default("1.62083287701538329132"),new r.default("1.67006611831323023771e-1"),new r.default("6.81020132472518137426e-3"),new r.default("1.08936580650328664411e-4"),new r.default("5.48900223421373614008e-7")],t=[new r.default("8.16496634205391016773"),new r.default("7.30828822505564552187"),new r.default("1.86792257950184183883"),new r.default("1.78792052963149907262e-1"),new r.default("7.01710668322789753610e-3"),new r.default("1.10034357153915731354e-4"),new r.default("5.48900252756255700982e-7")],i=[new r.default("8.71001698973114191777e-2"),new r.default("6.11379109952219284151e-1"),new r.default("3.97180296392337498885e-1"),new r.default("7.48527737628469092119e-2"),new r.default("5.38868681462177273157e-3"),new r.default("1.61999794598934024525e-4"),new r.default("1.97963874140963632189e-6"),new r.default("7.82579040744090311069e-9")],s=[new r.default("1.64402202413355338886"),new r.default("6.66296701268987968381e-1"),new r.default("9.88771761277688796203e-2"),new r.default("6.22396345441768420760e-3"),new r.default("1.73221081474177119497e-4"),new r.default("2.02659182086343991969e-6"),new r.default("7.82579218933534490868e-9")];l=polevl(o,e).div(n.mul(p1evl(o,t))),u=o.mul(polevl(o,i)).div(p1evl(o,s))}else{const e=[new r.default("4.55880873470465315206e-1"),new r.default("7.13715274100146711374e-1"),new r.default("1.60300158222319456320e-1"),new r.default("1.16064229408124407915e-2"),new r.default("3.49556442447859055605e-4"),new r.default("4.86215430826454749482e-6"),new r.default("3.20092790091004902806e-8"),new r.default("9.41779576128512936592e-11"),new r.default("9.70507110881952024631e-14")],t=[new r.default("9.17463611873684053703e-1"),new r.default("1.78685545332074536321e-1"),new r.default("1.22253594771971293032e-2"),new r.default("3.58696481881851580297e-4"),new r.default("4.92435064317881464393e-6"),new r.default("3.21956939101046018377e-8"),new r.default("9.43720590350276732376e-11"),new r.default("9.70507110881952025725e-14")],i=[new r.default("6.97359953443276214934e-1"),new r.default("3.30410979305632063225e-1"),new r.default("3.84878767649974295920e-2"),new r.default("1.71718239052347903558e-3"),new r.default("3.48941165502279436777e-5"),new r.default("3.47131167084116673800e-7"),new r.default("1.70404452782044526189e-9"),new r.default("3.85945925430276600453e-12"),new r.default("3.14040098946363334640e-15")],s=[new r.default("1.68548898811011640017"),new r.default("4.87852258695304967486e-1"),new r.default("4.67913194259625806320e-2"),new r.default("1.90284426674399523638e-3"),new r.default("3.68475504442561108162e-5"),new r.default("3.57043223443740838771e-7"),new r.default("1.72693748966316146736e-9"),new r.default("3.87830166023954706752e-12"),new r.default("3.14040098946363335242e-15")];l=polevl(o,e).div(n.mul(p1evl(o,t))),u=o.mul(polevl(o,i)).div(p1evl(o,s))}return l.mul(i).minus(u.mul(s))},t.Chi=function Chi(e){const n=new r.default(e),i=n.abs();if(i.isZero())return new r.default(-1/0);if(i.lt(8)){let e=1,n=i.mul(i).div(4),s=n;for(let t=0;t<200&&(n=n.mul(i).mul(i).mul(e).div(new r.default(e+1).mul(2*e+1).mul(2*e+2)),s=s.plus(n),e++,!n.abs().lt(getSeriesError()));t++);return t.EULER_GAMMA.plus(i.ln()).plus(s)}function EiLocal(e){if(e.isZero())return new r.default(-1/0);if(e.gt(l)||e.lt(-40)){let t=new r.default(1),n=new r.default(1),i=t.abs();for(let r=1;r<u;r++){t=t.mul(r).div(e);const s=t.abs();if(s.gt(i))break;if(i=s,n=n.plus(t),s.lt(getSeriesError()))break}return e.exp().mul(n).div(e)}let n=e,i=n;for(let t=1;t<c&&(n=n.mul(e).mul(t).div(new r.default(t+1).mul(t+1)),i=i.plus(n),!n.abs().lt(getSeriesError()));t++);return t.EULER_GAMMA.plus(e.abs().ln()).plus(i)}return EiLocal(n).plus(EiLocal(n.neg())).div(2)},t.Ei=function Ei(e){const n=new r.default(e);if(n.isZero())return new r.default(-1/0);if(n.gt(l)||n.lt(-40)){let e=new r.default(1),t=new r.default(1),i=e.abs();for(let r=1;r<u;r++){e=e.mul(r).div(n);const s=e.abs();if(s.gt(i))break;if(i=s,t=t.plus(e),s.lt(getSeriesError()))break}return n.exp().mul(t).div(n)}let i=n,s=i;for(let e=1;e<c&&(i=i.mul(n).mul(e).div(new r.default(e+1).mul(e+1)),s=s.plus(i),!i.abs().lt(getSeriesError()));e++);return t.EULER_GAMMA.plus(n.abs().ln()).plus(s)},t.Li=function Li(e){const n=new r.default(e);if(n.lte(0))return new r.default(NaN);if(n.eq(1))return new r.default(-1/0);const i=n.ln();if(i.isZero())return new r.default(-1/0);if(i.gt(l)||i.lt(-40)){let e=new r.default(1),t=new r.default(1),n=e.abs();for(let r=1;r<u;r++){e=e.mul(r).div(i);const s=e.abs();if(s.gt(n))break;if(n=s,t=t.plus(e),s.lt(getSeriesError()))break}return i.exp().mul(t).div(i)}let s=i,o=s;for(let e=1;e<c&&(s=s.mul(i).mul(e).div(new r.default(e+1).mul(e+1)),o=o.plus(s),!s.abs().lt(getSeriesError()));e++);return t.EULER_GAMMA.plus(i.abs().ln()).plus(o)};const r=i(n(3110)),s=n(4703),o=n(551);t.EULER_GAMMA=new r.default("0.5772156649015328606065120900824024310421593359399235988057672348848677267776646709369470632917467495");const a=1e9,l=40,u=100,c=500;function getSeriesError(e=8){return new r.default(10).pow(-(r.default.precision+e))}function gammaSpouge(e){const t=r.default.precision;r.default.set({precision:Math.floor(1.45*t)});try{const n=t,i=function calcCoeffs(e){const t=[];let n=new r.default(1);const i=r.default.acos(-1);t[0]=i.times(2).sqrt();for(let i=1;i<e;i++)t[i]=r.default.exp(e-i).times(r.default.pow(e-i,i-.5)).div(n),n=n.times(-i);return t}(n);let s=i[0];for(let t=1;t<n;t++)s=s.plus(i[t].div(e.plus(t)));return s=s.times(r.default.exp(e.plus(n).neg())).times(r.default.pow(e.plus(n),e.plus(.5))),s.div(e)}finally{r.default.set({precision:t})}}},7741(e,t,n){"use strict";t.expand=expand;const i=n(296),r=n(6099),s=n(8300);function powerExpandToArray(e,t){let n=function constructRow(){return e.map((t,n)=>{const i=new Array(e.length).fill(0);return i.push(1),i[n]=1,i})}();for(let i=0;i<t-1;i++){const t=[];for(let i=0;i<n.length;i++)for(let r=0;r<e.length;r++){const e=[...n[i]];e[r]++,t.push(e)}const i=new Map;for(const e of t){const t=e.slice(0,-1).join(","),n=i.get(t);n?n[n.length-1]+=e[e.length-1]:i.set(t,[...e])}n=Array.from(i.values())}return n}function expandArrayToExpression(e,t,n){const i=[],r=n?`${n}*`:"";for(let n=0;n<e.length;n++){const s=e[n],o=[];for(let e=0;e<s.length-1;e++){const n=t[e],i=s[e];1===i?o.push(`(${n})`):0!==i&&o.push(`(${n})^${i}`)}let a=o.join("*");const l=s[s.length-1];1!==l&&(a=`(${l})*${a}`),i.push(r+a)}return i.join("+")}function isExpandable(e){return e.isComplex()||!e.getMultiplier().isOne()||e.value.includes("(")||!e.isLinear()}function powerExpand(e){let t=e;if(e.isSum()&&e.getPower().isInteger()){const n=e.getPower().sign(),r=e.getPower().abs(),s=e.elementsArray().map(e=>e.text()),o=e.getMultiplier().isOne()?void 0:(n<0?e.getMultiplier().invert():e.getMultiplier()).text(),a=expandArrayToExpression(powerExpandToArray(s,Number(r)),s,o);t=i.Expression.create(a),-1===n&&(t=t.invert())}return t}function sumExpandMultiply(e,t){let n;return t.isSum()&&!e.isSum()?n=sumExpandMultiply(t,e):e.isSum()?(e.isLinear()||(e=powerExpand(e)),e.isLinear()?(n=(0,r.zero)(),e.each(e=>{if(isExpandable(e)&&(e=expand(e)),t.isSum()||e.isSum())n=n.plus(sumExpandMultiply(t,e));else{const i=t.times(e);n=n.plus(i)}})):n=t.isSum()&&t.isLinear()?sumExpandMultiply(t,e):e.times(t)):n=expand(e).times(expand(t)),n}function unwrap(e){if(e.isFunction(s.WRAP)){return e.getArguments()[0].pow(e.getPower()).times(e.getMultiplier())}return e}function expand(e){let t;if(isExpandable(e=unwrap(e)))if(e.isNUM()||e.isVAR())t=e.copy();else{if(t=e.distributeMultiplier(),t.isSum()&&(t=powerExpand(t),t.isSum()&&(t=function expandTerms(e){if(!e.isLinear())return e;let t=(0,r.zero)();return e.each(e=>{t=t.plus(expand(e))}),t}(t))),t.isProduct()&&(t=function productExpand(e){let t;t=i.Expression.fromRational(e.getMultiplier());const n=e.getPower(),r=n.isOne();return e.each(e=>{r||(e=e.pow(n));const i=(e=expand(e=unwrap(e))).getPower();e.isProduct()&&i.isInteger()&&!i.isOne()?e.each(e=>{t=t.times(e.pow(i))}):t=t.isSum()||e.isSum()?sumExpandMultiply(t,e):t.times(e)}),t}(t)),t.isFunction()){const e=t.getArguments().map(e=>expand(e));if(t.name===s.FACTORIAL)t=function factorialExpand(e){const t=e.getArguments();let n=e;const r=t[0].elementsArray().sort((e,t)=>e.isNUM()?1:-1);if(2===r.length){const o=r[0],a=r[1];if(o.isVAR()&&o.isLinear()&&a.isInteger()){const t=e.getPower(),r=Number(a.getMultiplier().numerator);n=i.Expression.toFunction(s.FACTORIAL,[o]);for(let e=1;e<=r;e++){const t=o.plus(e);n=n.times(t)}n=n.pow(t)}else{let e=i.Expression.toFunction(n.name,t);e.multiplier=n.multiplier,e=i.Expression.setPower(e,n.getPower()),n=e}}else{let e=i.Expression.toFunction(n.name,t);e.multiplier=n.multiplier,e=i.Expression.setPower(e,n.getPower()),n=e}return n}(t);else{let n=i.Expression.toFunction(t.name,e);n.multiplier=t.multiplier,n=i.Expression.setPower(n,t.getPower()),t=n}}if(t.isEXP()){const e=expand(t.getPower()),n=expand(t.getBase()).pow(e);n.multiplier=n.getMultiplier().times(t.getMultiplier()),t=n}}else t=e.copy();return t}},2348(e,t){"use strict";function fresnelIntegral(e,t){const n=[1,-3,105,-10395],i=[1,-15,945,-135135],r=.5;let s;if(Number.isNaN(e))s=NaN;else if(Number.isFinite(e))if(0===e)s=0;else{const o=e<0?-1:1;e=Math.abs(e);const a=Math.PI*e*e*r,l=0!==t;if(e>=8){const t=1/(Math.PI*Math.PI*e**4),[u,c,m,p]=n,[g,d,h,x]=i,E=(u+c*t+m*t**2+p*t**3)/(Math.PI*e),y=(g+d*t+h*t**2+x*t**3)/(Math.PI**2*e**3);s=o*(l?r-E*Math.cos(a)-y*Math.sin(a):r+E*Math.sin(a)-y*Math.cos(a))}else{const t=l?e=>Math.sin(Math.PI*e*e*r):e=>Math.cos(Math.PI*e*e*r),n=Math.max(1,Math.ceil(2*e));let i=0,a=0;for(let s=0;s<n;s++){const o=e*(s+1)/n,l=(a+o)*r,u=t(a),c=t(l),m=t(o),p=[[a,o,u,c,m,(o-a)/6*(u+4*c+m),0]];for(;p.length>0;){const e=p.pop(),[s,o,a,l,u,c,m]=e,g=(s+o)*r,d=(g+o)*r,h=t((s+g)*r),x=t(d),E=(g-s)/6*(a+4*h+l),y=(o-g)/6*(l+4*x+u),v=E+y;m>=20||Math.abs(v-c)<=15e-13/n?i+=v+(v-c)/15:(p.push([g,o,l,x,u,y,m+1]),p.push([s,g,a,h,l,E,m+1]))}a=o}s=o*i}}else s=Math.sign(e)*r;return s}t.fresnelIntegral=fresnelIntegral,t.fresnelS=function fresnelS(e){return fresnelIntegral(e,1)},t.fresnelC=function fresnelC(e){return fresnelIntegral(e,0)}},3703(e,t){"use strict";t.EULER_GAMMA=void 0,t.factorial=factorial,t.gammaLN=gammaLN,t.gamma=gamma,t.erfc=erfc,t.erf=function erf(e){if(0===e)return 0;return 1-erfc(e)},t.GCD=GCD,t.isInt=isInt,t.doubleFactorial=function doubleFactorial(e){if(isInt(e)){if(!Number.isSafeInteger(e)||e<0)return NaN;let t=1;for(let n=e;n>1&&(t*=n,Number.isFinite(t));n-=2);return t}const t=Math.cos(Math.PI*e);return Math.pow(2,(2*e+1-t)/4)*Math.pow(Math.PI,(t-1)/4)*gamma(e/2+1)},t.LCM=function LCM(...e){let t=1;for(const n of e){if(!Number.isSafeInteger(n)){t=NaN;break}if(0===n){t=0;break}const e=GCD(t,n),i=Math.abs(t/e*n);if(!Number.isSafeInteger(i)){t=NaN;break}t=i}return t},t.modInv=function modInv(e,t){if(!Number.isSafeInteger(e)||!Number.isSafeInteger(t)||0===t)return NaN;let n=0,i=1,r=Math.abs(t),s=mod(e,r);for(;0!==s;){const e=Math.floor(r/s);[n,i]=[i,n-e*i],[r,s]=[s,r-e*s]}return 1===r?mod(n,Math.abs(t)):NaN},t.isPrime=function isPrime(e){if(!Number.isSafeInteger(e)||e<2)return 0;if(2===e)return 1;if(e%2==0)return 0;for(let t=3;t*t<=e;t+=2)if(e%t===0)return 0;return 1},t.heaviside=function heaviside(e){return Number.isNaN(e)?NaN:e<0?0:e>0?1:.5},t.round=function round(e,t=0){let n=e;if(!isInt(e)){const i=Math.pow(10,t),r=e*i;n=(r<0?-Math.round(-r):Math.round(r))/i}return n},t.sum=sum,t.getRandomInt=function getRandomInt(e,t){return e=Math.ceil(e),t=Math.floor(t),Math.floor(Math.random()*(t-e+1))+e},t.mod=mod,t.sinc=function sinc(e){if(0===e)return 1;if(Math.abs(e)<1e-4){const t=e*e;return 1-t/6+t*t/120-t*t*t/5040}return Math.sin(e)/e},t.Si=function Si(e){if(0===e)return 0;let t=1;e<0&&(t=-1,e=-e);function polevl(e,t){let n=t[0];for(let i=1;i<t.length;i++)n=n*e+t[i];return n}function p1evl(e,t){let n=e+t[0];for(let i=1;i<t.length;i++)n=n*e+t[i];return n}if(e>1e9)return t*(Math.PI/2-Math.cos(e)/e);if(e<=4){const n=[20326926619595193e-28,1.279978911799433e-9,4.418278428012189e-7,9964121220438756e-20,.01420852393261499,1],i=e*e;return t*(e*polevl(i,[-8391678279103039e-26,4.625917144270128e-8,-9757593038436328e-21,.0009769454381704354,-.04134703162294066,1])/polevl(i,n))}const n=Math.sin(e),i=Math.cos(e),r=1/(e*e);let s,o;if(e<8){const t=[8.16496634205391,7.308288225055645,1.867922579501842,.1787920529631499,.007017106683227897,.00011003435715391573,5.489002527562557e-7],n=[.08710016989731142,.6113791099522193,.3971802963923375,.07485277376284691,.005388686814621773,.00016199979459893403,19796387414096365e-22,7.825790407440903e-9],i=[1.6440220241335535,.666296701268988,.09887717612776888,.006223963454417684,.0001732210814741771,20265918208634397e-22,7.825792189335346e-9];s=polevl(r,[4.236128628922166,5.4593771716181285,1.6208328770153833,.16700661183132304,.006810201324725182,.00010893658065032867,5.489002234213736e-7])/(e*p1evl(r,t)),o=r*polevl(r,n)/p1evl(r,i)}else{const t=[.9174636118736841,.17868554533207454,.012225359477197129,.00035869648188185157,4924350643178815e-21,3.21956939101046e-8,9437205903502767e-26,970507110881952e-28],n=[.6973599534432762,.33041097930563207,.03848787676499743,.001717182390523479,34894116550227946e-21,3.471311670841167e-7,1.7040445278204452e-9,3859459254302766e-27,31404009894636335e-31],i=[1.6854889881101165,.48785225869530496,.04679131942596258,.0019028442667439953,3684755044425611e-20,3.5704322344374083e-7,1.7269374896631615e-9,3878301660239547e-27,31404009894636335e-31];s=polevl(r,[.4558808734704653,.7137152741001467,.16030015822231947,.01160642294081244,.00034955644244785906,48621543082645475e-22,3.200927900910049e-8,941779576128513e-25,970507110881952e-28])/(e*p1evl(r,t)),o=r*polevl(r,n)/p1evl(r,i)}const a=Math.PI/2-s*i-o*n;return t*a},t.Shi=function Shi(e){const t=1e-16;if(0===e)return 0;const i=e<0?-1:1,r=Math.abs(e);if(r<8){let e=r,n=e,s=0;for(let i=0;i<200;i++){const i=2*s+1;if(e*=r*r*i/((i+2)*(i+2)*(i+1)),n+=e,s++,Math.abs(e)<Math.abs(n)*t)break}return i*n}function Ei(e){if(0===e)return-1/0;if(e>40||e<-40){let n=1,i=1,r=Math.abs(n);for(let s=1;s<100;s++){n*=s/e;const o=Math.abs(n);if(o>r)break;if(r=o,i+=n,o<Math.abs(i)*t)break}return Math.exp(e)*i/e}let i=e,r=i;for(let n=1;n<500&&(i*=e*n/((n+1)*(n+1)),r+=i,!(Math.abs(i)<Math.abs(r)*t));n++);return n+Math.log(Math.abs(e))+r}return.5*(Ei(e)-Ei(-e))},t.Ci=function Ci(e){if(0===e)return-1/0;e<0&&(e=-e);function polevl(e,t){let n=t[0];for(let i=1;i<t.length;i++)n=n*e+t[i];return n}function p1evl(e,t){let n=e+t[0];for(let i=1;i<t.length;i++)n=n*e+t[i];return n}if(e>1e9)return Math.sin(e)/e;if(e<=4){const t=[4077460400618806e-27,3.067809975818878e-9,12321035568588342e-22,.00031744202477503275,.051002805623644606,4],i=e*e,r=i*polevl(i,[20252400238910228e-27,-1.3524950491579076e-8,3593250514199931e-21,-.0004740072068734079,.028915965260755523,-1])/polevl(i,t);return n+Math.log(e)+r}const t=Math.sin(e),i=Math.cos(e),r=1/(e*e);let s,o;if(e<8){const t=[8.16496634205391,7.308288225055645,1.867922579501842,.1787920529631499,.007017106683227897,.00011003435715391573,5.489002527562557e-7],n=[.08710016989731142,.6113791099522193,.3971802963923375,.07485277376284691,.005388686814621773,.00016199979459893403,19796387414096365e-22,7.825790407440903e-9],i=[1.6440220241335535,.666296701268988,.09887717612776888,.006223963454417684,.0001732210814741771,20265918208634397e-22,7.825792189335346e-9];s=polevl(r,[4.236128628922166,5.4593771716181285,1.6208328770153833,.16700661183132304,.006810201324725182,.00010893658065032867,5.489002234213736e-7])/(e*p1evl(r,t)),o=r*polevl(r,n)/p1evl(r,i)}else{const t=[.9174636118736841,.17868554533207454,.012225359477197129,.00035869648188185157,4924350643178815e-21,3.21956939101046e-8,9437205903502767e-26,970507110881952e-28],n=[.6973599534432762,.33041097930563207,.03848787676499743,.001717182390523479,34894116550227946e-21,3.471311670841167e-7,1.7040445278204452e-9,3859459254302766e-27,31404009894636335e-31],i=[1.6854889881101165,.48785225869530496,.04679131942596258,.0019028442667439953,3684755044425611e-20,3.5704322344374083e-7,1.7269374896631615e-9,3878301660239547e-27,31404009894636335e-31];s=polevl(r,[.4558808734704653,.7137152741001467,.16030015822231947,.01160642294081244,.00034955644244785906,48621543082645475e-22,3.200927900910049e-8,941779576128513e-25,970507110881952e-28])/(e*p1evl(r,t)),o=r*polevl(r,n)/p1evl(r,i)}return s*t-o*i},t.Chi=function Chi(e){const t=1e-16,i=Math.abs(e);if(0===i)return-1/0;if(i<8){let e=1,r=i*i/4,s=r;for(let n=0;n<200&&(r*=i*i*e/((e+1)*(2*e+1)*(2*e+2)),s+=r,e++,!(Math.abs(r)<Math.abs(s)*t));n++);return n+Math.log(i)+s}function Ei(e){if(0===e)return-1/0;if(e>40||e<-40){let n=1,i=1,r=Math.abs(n);for(let s=1;s<100;s++){n*=s/e;const o=Math.abs(n);if(o>r)break;if(r=o,i+=n,o<Math.abs(i)*t)break}return Math.exp(e)*i/e}let i=e,r=i;for(let n=1;n<500&&(i*=e*n/((n+1)*(n+1)),r+=i,!(Math.abs(i)<Math.abs(r)*t));n++);return n+Math.log(Math.abs(e))+r}return.5*(Ei(e)+Ei(-e))},t.Ei=function Ei(e){if(0===e)return-1/0;if(e>40||e<-40){let t=1,n=1,i=Math.abs(t);for(let r=1;r<100;r++){t*=r/e;const s=Math.abs(t);if(s>i)break;if(i=s,n+=t,s<1e-16*Math.abs(n))break}return Math.exp(e)*n/e}let t=e,i=t;for(let n=1;n<500&&(t*=e*n/((n+1)*(n+1)),i+=t,!(Math.abs(t)<1e-16*Math.abs(i)));n++);return n+Math.log(Math.abs(e))+i},t.Li=function Li(e){if(e<=0)return NaN;if(1===e)return-1/0;const t=Math.log(e);if(0===t)return-1/0;if(t>40||t<-40){let e=1,n=1,i=Math.abs(e);for(let r=1;r<100;r++){e*=r/t;const s=Math.abs(e);if(s>i)break;if(i=s,n+=e,s<1e-16*Math.abs(n))break}return Math.exp(t)*n/t}let i=t,r=i;for(let e=1;e<500&&(i*=t*e/((e+1)*(e+1)),r+=i,!(Math.abs(i)<1e-16*Math.abs(r)));e++);return n+Math.log(Math.abs(t))+r};const n=.5772156649015329;t.EULER_GAMMA=n;function factorial(e){if(!isInt(e))return gamma(e+1);if(!Number.isSafeInteger(e)||e<0)return NaN;if(e>170)return 1/0;const t=[1,1,2,6,24,120,720,5040,40320,362880,3628800,39916800,479001600,6227020800,87178291200,1307674368e3,20922789888e3,355687428096e3,6402373705728e3,0x1b02b9306890000,243290200817664e4,5109094217170944e4,11240007277776077e5,2585201673888498e7,6204484017332394e8,15511210043330986e9,40329146112660565e10,10888869450418352e12,30488834461171384e13,8.841761993739701e30,26525285981219103e16];if(void 0!==t[e])return t[e];const n=t.length-1;let i=t[n];for(let t=n+1;t<=e;t++)i*=t;return i}function gammaLN(e){const t=[.9999999999999953,57.15623566586292,-59.59796035547549,14.136097974741746,-.4919138160976202,3399464998481189e-20,4652362892704858e-20,-9837447530487956e-20,.0001580887032249125,-.00021026444172410488,.00021743961811521265,-.0001643181065367639,8441822398385275e-20,-26190838401581408e-21,36899182659531625e-22];let n=0;if(e<.5)return Math.log(Math.PI/Math.sin(e*Math.PI))-gammaLN(1-e);const i=(e-=1)+607/128+.5;for(let i=14;i>=1;i--)n+=t[i]/(e+i);return n+=t[0],Math.log(Math.sqrt(2*Math.PI))+Math.log(n)-i+Math.log(i)*(e+.5)}function gamma(e){return isInt(e)&&e>1?factorial(e-1):Math.exp(gammaLN(e))}function erfc(e){if(e<0)return 2-erfc(-e);const t=e**2;return.5641895835477563/(e+2.0695502313291416)*((t+2.710785400451478*e+5.807556131303016)/(t+3.4795405709951894*e+12.061668872862395))*((t+3.474695137774396*e+12.074020364063815)/(t+3.720684439602251*e+8.443197810039685))*((t+4.0056150920225955*e+9.305966594858878)/(t+3.902257040299241*e+6.361616309538805))*((t+5.167227058178126*e+9.126616176736732)/(t+4.032968931092625*e+5.135785305856816))*((t+5.959087954466333*e+9.194356128869693)/(t+4.112409429574509*e+4.486403295234087))*Math.exp(-t)}function GCD(...e){let t=0;const n=[...new Set(e)].map(e=>Math.abs(e));for(const e of n){if(!Number.isSafeInteger(e)){t=NaN;break}let n=e;for(;0!==n;){const e=t%n;t=n,n=e}}return t}function isInt(e){return e%1==0}function sum(...e){let t=0;for(let n=0;n<e.length;n++)t+=e[n];return t}function mod(e,t){return(e%t+t)%t}},5523(e,t,n){"use strict";t.toCommonDenominator=function toCommonDenominator(e){let t=e;if(e.isProduct())t=i.Expression.fromRational(e.getMultiplier()),e.each(n=>{n=n.pow(e.getPower()),t=n.isSum()?t.times(toCommonDenominator(n)):t.times(n)});else if(e.isSum()){if(e=function groupByDenominator(e){let t=e;if(e.isSum()){let n=(0,r.zero)();const s={};e.each(e=>{const t=e.getNumerator(),i=e.getDenominator();if(e.getMultiplier().asDecimal&&(t.getMultiplier().asDecimal=!0),i.isOne())n=n.plus(t);else{const e=i.text();s[e]=s[e]?s[e].plus(t):t}}),t=n;for(const e in s)t=t.plus(s[e].div(i.Expression.create(e)));t=t.pow(e.getPower()).times(e.getMultiplier())}return t}(e),!e.isSum())return e;const n=e.getPower().abs(),s=e.getMultiplier(),o=e.elementsArray();let a=!1,l=!1;for(const e of o){const t=e.getDenominator();t.isOne()||(a=!0,t.isNUM()||(l=!0))}if(!a)return e;if(!l&&!e.isPolynomialLike())return e;let u=(0,r.zero)(),c=(0,r.one)();for(const e of o){const t=toCommonDenominator(e),n=t.getNumerator(),i=t.getDenominator();e.getMultiplier().asDecimal&&(n.getMultiplier().asDecimal=!0),u=u.times(i).plus(c.times(n)),c=c.times(i)}-1===e.getPower().sign()&&([c,u]=[u,c]),t=u.div(c),n.isOne()||(t=t.pow(n)),s.isOne()||(t=t.times(i.Expression.fromRational(s)))}return t};const i=n(296),r=n(6099)},3148(e,t,n){"use strict";t.setFunction=function setFunction(e){const t=s.mathFunctionRegistry[e.name];if("system"===t?.level)throw new o.AssignmentError((0,o.message)("restrictedVariableName",{name:e.name}));if("js"===e.type){const t=e.name;if("function"!=typeof e.fn)throw new o.UnexpectedInputError((0,o.message)("setJSFunctionExpectsFunction"));if(!e.minArgs||!e.maxArgs)throw new o.UnexpectedInputError((0,o.message)("functionRequiresMinAndMaxArgs"));s.mathFunctionRegistry[t]=entry(e.minArgs,e.maxArgs,function jsWrapper(e,t){return(...n)=>{const r=[];for(const t of n){if(!t.isNUM())return i.Expression.toFunction(e,n);r.push(Number(t.getMultiplier().toDecimal()))}return i.Expression.create(Number(t(...r)))}}(t,e.fn),17)}else if("symbolic"===e.type)if("string"==typeof e.fn){const t=e.argsOrder??i.Expression.create(e.fn).variables().sort();s.mathFunctionRegistry[e.name]=entry(e.minArgs??t.length,e.maxArgs??t.length,(0,r.wrappedFunction)(e.fn,t))}else{const t=e.name;if(void 0===e.minArgs||void 0===e.maxArgs)throw new o.UnexpectedInputError((0,o.message)("functionRequiresMinAndMaxArgs"));s.mathFunctionRegistry[t]=entry(e.minArgs,e.maxArgs,e.fn)}};const i=n(296),r=n(266),s=n(9426),o=n(4703);function entry(e,t,n,i){return{minArgs:e,maxArgs:t,fn:n,maxPrecision:i,usage:"notation",level:"user"}}},7103(e,t,n){"use strict";t.scientificToDecimal=function scientificToDecimal(e){let t;[t,e]=function stripSign(e){const t="-"===e.charAt(0);(t||"+"===e.charAt(0))&&(e=e.substring(1));return[t,e]}(e);const[n,i]=e.toLowerCase().split("e");let[r,s]=n.split(".");s=s||"";const o=r.length+(s?s.length:0),a=r+s,l=r.length+Number(i),u=l===o?"":".";let c;c=l<=0?`0${u}${"0".repeat(Math.abs(l))}${a}`:l>o?`${a}${"0".repeat(Math.abs(l-o))}`:`${a.substring(0,l)}${u}${a.substring(l)}`;return t?"-"+c:c},t.decimalSplit=function decimalSplit(e){const t=e.split(".");if(t.length>2)throw new SyntaxError((0,i.message)("invalidDecimalValue",{value:e}));1===t.length&&t.push("");return t},t.format=function format(e,t){const replace=function(e,t,n){return e.replace(new RegExp(`{{${t}}}`,"g"),n)};if(Array.isArray(t))for(let n=0;n<t.length;n++)e=replace(e,String(n),t[n]);else for(const n in t)e=replace(e,n,t[n]);return e};const i=n(4703)},886(e,t,n){"use strict";t.subst=subst,t.getU=getU,t.uSub=uSub,t.rewriteRadicals=rewriteRadicals,t.subRadicals=function subRadicals(e){let t=e.getNumerator(),n=e.getDenominator();const r={},s={},o={};function collectPowers(e){const t=e.elementsArray();for(const e of t)if(e.hasRadical()){if(e.isNUM())continue;const t=e.getPower().getDenominator(),n=e.value,i=r[n];r[n]=i?r[n].times(t):t}}function makeSubstitutions(e){for(const t in r){const n=o[t]?o[t]:getU(e,s);o[t]=n;const a=r[t],l=a.getMultiplier().numerator;s[n]=i.Expression.create(t).pow(a.invert()),e=rewriteRadicals(e,t,i.Expression.create(n),l)}return e}return collectPowers(t),collectPowers(n),t=makeSubstitutions(t),n=makeSubstitutions(n),[t.div(n),s]},t.uUnSub=function uUnSub(e,t){for(const n in t){const i=t[n];e=subst(e,(0,o._)(n),i)}return e},t.uSubConstants=function uSubConstants(e,t){t??={};const n=new Set;!function collectConstants(e){if(e.isVAR()&&(e.isConstant()||e.isI())&&n.add(e.value),e.args)for(const t of e.args)collectConstants(t);if(e.elements)for(const t of Object.values(e.elements))collectConstants(t);e.isEXP()&&(collectConstants(e.getBase()),collectConstants(e.getPower()))}(e);for(const i of n)[e,t]=uSub(e,(0,o._)(i),t);return[e,t]},t.uSubFN=function uSubFN(e,t){return t??={},e.functions(void 0,!0).forEach(n=>{[e,t]=uSub(e,(0,o._)(n),t)}),[e,t]},t.uSubEXP=function uSubEXP(e,t){t??={};const n=new Set;e.forEveryElement(e=>(e.isEXP()&&n.add(e.toUnitMultiplier().text()),e));for(const i of n)[e,t]=uSub(e,(0,o._)(i),t);return[e,t]};const i=n(296),r=n(6099),s=n(1897),o=n(7056),a=n(5817);function prodSubst(e,t,n,i){let r;if(e.isProduct())if(t.isProduct()){const o=e.getMultiplier().div(t.getMultiplier());if(o.isInteger()||a.Settings.ALLOW_RAT_SUBS){let a,l=e.elementsArray();const u=t.elementsArray();let c=!1,m=[],p=u.length;for(;u.length>0;){m=[],c=!1;const e=u[u.length-1];u.pop();for(const r of l)if(r.value===e.value){const t=r.getPower().div(e.getPower());if(void 0===a&&(a=t),!(t.isInteger()&&t.eq(a)||r.isEXP()))break;c=!0,p--}else m.push(subst(r,t,n,i));if(!c)break;l=m}0!==p||void 0===a?r=(0,s.product)(...e.elementsArray(!0).map(e=>subst(e,t,n,i))).pow(e.getPower()):(m.push(n.pow(a)),r=(0,s.product)(...m),r.multiplier=r.getMultiplier().times(o)),r=r.pow(subst(e.getPower(),t,n,i))}else r=e.copy()}else r=(0,s.product)(...e.elementsArray(!0).map(e=>subst(e,t,n,i))).pow(e.getPower());return r||e}function sumSubst(e,t,n,i){let o;if(!e.isSum())return e;const a=e.getPower(),l=e.getMultiplier();if(t.isSum()){const u=e.elementsArray().slice(),c=t.isSum()&&t.isLinear()?t.elementsArray():[t.toUnitMultiplier()],m=[];let p;for(const r of c){const o=u.findIndex(e=>e.value===r.value&&e.getPower().eq(r.getPower()));if(-1===o){return(0,s.sum)(...e.elementsArray().map(e=>subst(e,t,n,i))).pow(a).times(l)}const c=u[o];u.splice(o,1),m.push(c);const g=c.div(r);if(p){if(!g.eq(p)){return(0,s.sum)(...e.elementsArray().map(e=>subst(e,t,n,i))).pow(a).times(l)}}else p=g}const g=n.times(p||(0,r.one)()),d=u.map(e=>subst(e,t,n,i));d.push(g),o=(0,s.sum)(...d).pow(a).times(l)}else o=(0,s.sum)(...e.elementsArray().map(e=>subst(e,t,n,i))).pow(a).times(l);return o||e}function subst(e,t,n,s=!1){let o;if(e=i.Expression.create(e),t=i.Expression.create(t),n=i.Expression.create(n),e.isNUM()&&!s)o=e;else if(e.eq(t))o=n;else if(t.isVAR()&&t.getPower().isOne()&&t.getMultiplier().isOne()&&e.isVAR()&&e.value===t.value){const i=subst(e.getPower(),t,n,s),a=e.getMultiplier();o=i.isNUM()&&i.getMultiplier().isNegative()?(0,r.one)().div(n.copy().pow(i.abs())):n.copy().pow(i),a.isOne()||(o=o.times(a))}else if(e.isProduct())o=prodSubst(e,t,n,s);else if(e.isSum())o=sumSubst(e,t,n,s);else if(e.isFunction())e.value===t.value?o=n.copy():(o=i.Expression.Function(e.name),o.args=e.getArguments().map(e=>subst(e,t,n,s)),o.updateValue()),o=o.pow(e.getPower()).times(e.getMultiplier());else if(e.isEXP()){const i=subst(e.getBase(),t,n,!0),r=subst(e.getPower(),t,n,s);o=i.pow(r).times(e.getMultiplier())}return o||e}function getU(e,t){const n=(e=i.Expression.create(e)).variables();t??={};let r,s=0;do{r=`u${s}`,s++}while(n.includes(r)||r in t);return r}function uSub(e,t,n){n??={},e=i.Expression.create(e),t=i.Expression.create(t);const r=getU(e,n),s=subst(e,t,(0,o._)(r));return s.eq(e)||(n[r]=t),[s,n]}function rewriteRadicals(e,t,n,s){let o=e;if((e.isVAR()||e.isEXP())&&e.value===t){const t=e.getMultiplier(),r=e.getPower();if(r.isNUM()){const e=r.getMultiplier(),a=s*e.numerator,l=e.denominator<0n?-e.denominator:e.denominator;if(a%l!==0n)o=i.Expression.fromRational(t).times(n.pow(`${a}/${l}`));else{const e=a/l;o=i.Expression.fromRational(t).times(n.pow(e.toString()))}}else o=i.Expression.fromRational(t).times(n.pow(r.times(s.toString())))}else if(e.isEXP()){const r=rewriteRadicals(e.getBase(),t,n,s),a=rewriteRadicals(e.getPower(),t,n,s);o=i.Expression.toEXP(r,a),e.getMultiplier().isOne()||(o=o.times(i.Expression.fromRational(e.getMultiplier())))}else if(e.isSum()){const a=e.getMultiplier(),l=e.getPower();o=(0,r.zero)();for(const i of e.elementsArray())o=o.plus(rewriteRadicals(i,t,n,s));l.isOne()||(o=o.pow(l)),a.isOne()||(o=o.times(i.Expression.fromRational(a)))}else if(e.isProduct()){const a=e.getMultiplier(),l=e.getPower();o=(0,r.one)();for(const i of e.elementsArray())o=o.times(rewriteRadicals(i,t,n,s));l.isOne()||(o=o.pow(l)),a.isOne()||(o=o.times(i.Expression.fromRational(a)))}else if(e.isFunction()){const r=e.getArguments();if(r.length>0){const a=r.map(e=>rewriteRadicals(e,t,n,s));o=i.Expression.toFunction(e.name,a),o.multiplier=e.getMultiplier().copy(),o=i.Expression.setPower(o,e.getPower())}}return o}},5869(e,t){"use strict";t.arrayUnique=function arrayUnique(e){return[...new Set(e)]},t.arrayAddUnique=function arrayAddUnique(e,t){for(const n of e)t.includes(n)||t.push(n);return t},t.isSorted=function isSorted(e){if(e.length<=1)return!0;for(let t=1;t<e.length;t++)if(e[t-1]>e[t])return!1;return!0}},1440(e,t,n){"use strict";var i,r=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),s=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||(i=function(e){return i=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},i(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n=i(e),o=0;o<n.length;o++)"default"!==n[o]&&r(t,e,n[o]);return s(t,e),t}),a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const l=a(n(8330)),u=n(2724),c=n(4692),m=n(3725),p=n(2766),g=n(9684),d=n(2634),h=n(2012),x=n(7410),E=n(5530),y=n(7571),v=n(4317),w=n(6082),b=n(6351),P=n(2446),A=n(6284),N=n(6528),M=n(6184),T=n(296),I=n(6099),O=n(6430),R=n(4462),F=n(430),q=n(8300),L=n(238),V=n(2707),U=n(6913),D=n(2116),k=n(5584),B=n(5598),z=n(3552),$=n(3982),Z=n(7130),G=n(9426),H=n(492),W=o(n(4703)),j=n(4895),X=n(4600),K=n(7741),Y=n(3148),Q=n(886),J=n(3394),ee=n(7867),te=n(8533),ne=n(1649),ie=n(6925),re=n(706),se=n(1526),oe=n(2295),ae=n(6950);(0,H.registerNerdamerFunctions)();const le=new Z.Converter,ue=new Z.Converter("text");function normalizeTeXOptions(e){let t;return t="string"==typeof e?{decimal:!0}:!0!==e?.decimals||"decimal"in e?e:{...e,decimal:!0},t}function nerdamer(e,t){return L.Parser.parse(e,t)}T.Expression.prototype.solveFor=function(e){return(0,oe.solve)(this,e)},M.Equation.prototype.solveFor=function(e){return(0,oe.solve)(this,e)},T.Expression.prototype.toTeX=function(e){return le.convert(this,normalizeTeXOptions(e))},T.Expression.prototype.toText=function(){return ue.convert(this)},T.Expression.prototype.latex=function(e){return le.convert(this,normalizeTeXOptions(e))},T.Expression.prototype.isInfinity=function(){return this.isInf()},T.Expression.prototype.isFraction=function(){return!this.getMultiplier().isInteger()},T.Expression.prototype.hasIntegral=function(){return this.hasFunction("integrate",!0)},T.Expression.prototype.equals=function(e){return new M.Equation(this,T.Expression.create(e))},nerdamer.pretty=function(e,t="TeX"){return("TeX"===t?le:ue).convert(e)},nerdamer.convertFromLaTeX=function(e){return le.fromTeX(e)},nerdamer.convertToTeX=function(e,t){let n=normalizeTeXOptions(t);return"string"!=typeof e||n?.decimal||(n={...n??{},preserveSource:!0}),le.convert(e,n)},nerdamer.convertToLaTeX=nerdamer.convertToTeX,nerdamer.setFunction=function(e,t,n){return(0,Y.setFunction)({type:"symbolic",name:e,argsOrder:t,fn:n}),nerdamer},nerdamer.setConstant=function(e,t){let n="delete"===t?"":String(t);if("number"==typeof t){const e=k.Rational.create(String(t));n=1n===e.denominator?String(e.numerator):`${e.numerator}/${e.denominator}`}return L.Parser.setConstants({[e]:n}),nerdamer},nerdamer.getConstant=function(e){const t=q.PARSER_CONSTANTS[e];return String("function"==typeof t?t():t)},nerdamer.set=function(e,t){if("PRECISION"===e)L.Parser.setPrecision(Number(t));else if("object"==typeof e&&"PRECISION"in e){const{PRECISION:t,...n}=e;L.Parser.set(n),L.Parser.setPrecision(Number(t))}else L.Parser.set(e,t);return nerdamer},nerdamer.get=function(e){let t;return t="PRECISION"===e?L.Parser.getPrecision():L.Parser.get(e),t},nerdamer.getOperator=function(e){return L.Parser.getOperator(e)},nerdamer.isReserved=function(e){return L.Parser.isReserved(e)},nerdamer.setOperator=function(e,t){return L.Parser.setOperator(e,t),nerdamer},nerdamer.aliasOperator=function(e,t){return L.Parser.aliasOperator(e,t),nerdamer},nerdamer.setVar=function(e,t){"delete"===t?(0,V.unassign)(e):(0,V.assign)(e,String(t))},nerdamer.clearVars=function(){for(const e of Object.keys(L.Parser.KNOWN_VALUES))(0,V.unassign)(e);return nerdamer},nerdamer.getVars=function(e="text"){const t="LaTeX"===e?le:ue,n={};for(const e of Object.keys(L.Parser.KNOWN_VALUES))n[e]=t.convert(L.Parser.KNOWN_VALUES[e]);return n},nerdamer.functions=function(){const e={user:[],system:[]};for(const t in G.mathFunctionRegistry){e[G.mathFunctionRegistry[t].level].push(t)}return e},nerdamer.symbols=I.symbols,nerdamer.version=function(){return l.default.version},nerdamer.errors=W,nerdamer.buildFunction=j.build,nerdamer.classes={Expression:T.Expression,Rational:k.Rational,Polynomial:D.Polynomial,Matrix:R.Matrix,Vector:$.Vector,Collection:A.Collection,Converter:Z.Converter,Dictionary:N.Dictionary,ValuesSet:B.ValuesSet,SolutionSet:se.SolutionSet,Assumption:P.Assumption,Equation:M.Equation,instance:{Parser:L.Parser}},nerdamer.cos=ne.cos,nerdamer.sin=ne.sin,nerdamer.tan=ne.tan,nerdamer.acos=ne.acos,nerdamer.asin=ne.asin,nerdamer.atan=ne.atan,nerdamer.arccos=ne.acos,nerdamer.arcsin=ne.asin,nerdamer.arctan=ne.atan,nerdamer.atan2=ne.atan2,nerdamer.sec=ne.sec,nerdamer.csc=ne.csc,nerdamer.cot=ne.cot,nerdamer.asec=ne.asec,nerdamer.acsc=ne.acsc,nerdamer.acot=ne.acot,nerdamer.cosh=ne.cosh,nerdamer.sinh=ne.sinh,nerdamer.tanh=ne.tanh,nerdamer.acosh=ne.acosh,nerdamer.asinh=ne.asinh,nerdamer.atanh=ne.atanh,nerdamer.sech=ne.sech,nerdamer.csch=ne.csch,nerdamer.coth=ne.coth,nerdamer.asech=ne.asech,nerdamer.acsch=ne.acsch,nerdamer.acoth=ne.acoth,nerdamer.log=te.log,nerdamer.log10=te.log10,nerdamer.radians=te.radians,nerdamer.degrees=te.degrees,nerdamer.exp=te.exp,nerdamer.sqrt=te.sqrt,nerdamer.cbrt=te.cbrt,nerdamer.nthroot=te.nthroot,nerdamer.numeric=te.numeric,nerdamer.abs=te.abs,nerdamer.sign=te.sign,nerdamer.min=te.min,nerdamer.max=te.max,nerdamer.round=te.round,nerdamer.floor=te.floor,nerdamer.ceil=te.ceiling,nerdamer.trunc=ie.trunc,nerdamer.hypot=ee.hypot,nerdamer.fact=te.factorial,nerdamer.factorial=te.factorial,nerdamer.dfact=te.doubleFactorial,nerdamer.dfactorial=te.doubleFactorial,nerdamer.fib=te.fibonacci,nerdamer.mod=te.mod,nerdamer.modInv=te.modInv,nerdamer.isPrime=re.isprime,nerdamer.imagpart=X.imagPart,nerdamer.realpart=X.realPart,nerdamer.polarform=X.polarForm,nerdamer.rectform=X.rectForm,nerdamer.arg=X.arg,nerdamer.conjugate=X.conjugate,nerdamer.csgn=X.csgn,nerdamer.gamma=te.gamma,nerdamer.gamma_incomplete=te.gammaIncomplete,nerdamer.gamma_incomplete_lower=te.gammaIncompleteLower,nerdamer.erf=te.erf,nerdamer.erfc=te.erfc,nerdamer.heaviside=te.heaviside,nerdamer.step=te.step,nerdamer.rect=te.rect,nerdamer.tri=te.tri,nerdamer.delta=te.dirac,nerdamer.Ci=te.Ci,nerdamer.Chi=te.Chi,nerdamer.Si=te.Si,nerdamer.Shi=te.Shi,nerdamer.Li=te.Li,nerdamer.Ei=te.Ei,nerdamer.sinc=te.sinc,nerdamer.parens=te.parens,nerdamer.continued_fraction=re.continuedFraction,nerdamer.scientific=te.scientific,nerdamer.contains=te.contains,nerdamer.subst=Q.subst,nerdamer.uSub=Q.uSub,nerdamer.uUnSub=Q.uUnSub,nerdamer.expand=K.expand,nerdamer.factor=u.factor,nerdamer.pfactor=u.pfactor,nerdamer.pfactord=u.pfactord,nerdamer.polyFactors=u.polyFactors,nerdamer.completeSquare=d.sqcomp,nerdamer.gcd=c.gcd,nerdamer.lcm=c.lcm,nerdamer.partfrac=p.partfrac,nerdamer.div=U.div,nerdamer.divide=U.divide,nerdamer.simplify=g.simplify,nerdamer.groebner=m.groebner,nerdamer.solve=oe.solve,nerdamer.roots=oe.roots,nerdamer.solveSystem=ae.solveSystem,nerdamer.solveeqs=ae.solveSystem,nerdamer.diff=h.diff,nerdamer.integrate=E.integrate,nerdamer.laplace=v.laplace,nerdamer.ilaplace=y.ilaplace,nerdamer.ilt=y.ilaplace,nerdamer.sum=te.sum,nerdamer.product=te.product,nerdamer.limit=w.limit,nerdamer.defint=J.defint,nerdamer.S=x.S,nerdamer.C=x.C,nerdamer.matrix=te.matrix,nerdamer.imatrix=F.imatrix,nerdamer.determinant=O.determinant,nerdamer.invert=O.invert,nerdamer.nullspace=O.nullspace,nerdamer.dot=z.dot,nerdamer.cross=z.cross,nerdamer.line=ee.line,nerdamer.deg=U.deg,nerdamer.content=U.content,nerdamer.coeffs=U.coeffs,nerdamer.assume=b.assume,nerdamer.updateAPI=function(){const e={diff:nerdamer.diff,expand:nerdamer.expand,factor:nerdamer.factor,integrate:nerdamer.integrate,numeric:nerdamer.numeric,simplify:nerdamer.simplify,subst:nerdamer.subst},t={buildFunction:nerdamer.buildFunction};return function extendApi(e,t,n={}){for(const i of e){const e=i.prototype;for(const n in t)if(!(n in e)){const i=t[n];Object.defineProperty(e,n,{configurable:!0,writable:!0,value:function(...e){const apply=t=>{let n;return n=M.Equation.isEquation(t)?t.each(e=>apply(e)):t.isEnumerable?t.copy().each(e=>apply(e)):i(t,...e),n};return apply(this)}})}for(const t in n)if(!(t in e)){const i=n[t];Object.defineProperty(e,t,{configurable:!0,writable:!0,value:function(...e){if(!T.Expression.isExpression(this))throw new W.UnexpectedDataType(W.message("expressionExpected",{type:q.dataTypes[this.dataType]??this.dataType}));return i(this,...e)}})}}}([T.Expression,R.Matrix,$.Vector,A.Collection,N.Dictionary,B.ValuesSet,M.Equation],e,t),nerdamer},nerdamer.updateAPI(),t.default=nerdamer},3394(e,t,n){"use strict";t.defint=function defint(e,t,n,a){let l;e=i.Expression.create(e),t=i.Expression.create(t),n=i.Expression.create(n),a=i.Expression.create(a);const u=e.variables(),c=(0,r.assertPlainVariableAndGetString)(t);if(u.includes(c)){let r=n,m=a;if(!r.isNUM()&&r.isConstant()&&(r=r.evaluate()),!m.isNUM()&&m.isConstant()&&(m=m.evaluate()),1===u.length&&u[0]===c&&r.isNUM()&&m.isNUM()){const t=Number(r.getMultiplier().toDecimal()),n=Number(m.getMultiplier().toDecimal());l=i.Expression.create((0,o.definiteIntegrateNative)(e.buildFunction(),t,n)),l.precision=17}else l=i.Expression.toFunction(s.DEFINT,[e,t,n,a])}else l=e.times(a.minus(n));return l};const i=n(296),r=n(1897),s=n(8300),o=n(7449)},7449(e,t,n){"use strict";t.definiteIntegrateNative=function definiteIntegrateNative(e,t,n,r={}){if(t===n)return 0;const s=r.tolAbs??1e-12,o=r.tolRel??1e-12,a=r.maxDepth??50,l=r.maxEvals??1e5,u=r.singular??"auto",c=r.allowInfinite??!1,m=!isFinite(t)&&!isNaN(t),p=!isFinite(n)&&!isNaN(n);if((m||p)&&!c)throw new Error((0,i.message)("defintInfiniteBounds"));if(c&&(m||p)){const r=1e-15;if(!m&&p&&n>0){const n=t;return withFiniteBounds(t=>{const i=1-t;return e(n+t/i)/(i*i)},0,1-r,s,o,a,l,u)}if(m&&t<0&&!p){const t=n;return withFiniteBounds(n=>{const i=1-n;return e(t-n/i)/(i*i)},0,1-r,s,o,a,l,u)}if(m&&t<0&&p&&n>0){return withFiniteBounds(t=>{const n=Math.PI*(t-.5),i=Math.cos(n);return e(Math.tan(n))*Math.PI/(i*i)},r,1-r,s,o,a,l,u)}throw new Error((0,i.message)("defintUnsupportedInfiniteBounds"))}const g=Math.min(t,n),d=Math.max(t,n),h=(r.breakpoints??[]).filter(e=>e>g&&e<d).sort((e,t)=>e-t);if(0===h.length)return withFiniteBounds(e,t,n,s,o,a,l,u);const x=h.length+1,E=s/x,y=t<=n?[t,...h,n]:[t,...h.reverse(),n];let v=0;for(let t=0;t<y.length-1;t++)v+=withFiniteBounds(e,y[t],y[t+1],E,o,a,l,u);return v};const i=n(4703);function simpson(e,t,n,i,r){return(t-e)/6*(n+4*i+r)}function withFiniteBounds(e,t,n,r,s,o,a,l){let u=t,c=n;if(u===c)return 0;let m=1;if(c<u){m=-1;const e=u;u=c,c=e}let p=0;const evalF=t=>{if(++p>a)throw new Error((0,i.message)("defintMaxEvals",{max:String(a)}));const n=e(t);if("strict"===l&&!isFinite(n))throw new Error((0,i.message)("defintNonFiniteValue",{x:String(t)}));return n},g=(u+c)/2,d=evalF(u),h=evalF(g),x=evalF(c);if("ignore"===l&&(isNaN(d)||isNaN(h)||isNaN(x)))return NaN;if(!("auto"!==l||isFinite(d)&&isFinite(h)&&isFinite(x))){const t=!isFinite(d)&&isFinite(h)&&isFinite(x),n=isFinite(d)&&isFinite(h)&&!isFinite(x);if(t||n){const n=c-u,p=Math.sqrt(Number.EPSILON),g=t;return m*withFiniteBounds(t=>{const r=Math.max(t,p),s=g?u+n*r*r:c-n*r*r,o=2*e(s)*n*r;if(!isFinite(o))throw new Error((0,i.message)("defintEndpointSingularity",{x:String(s)}));return o},0,1,r,s,o,a,l)}return m*function autoSplitFinite(e,t,n,i,r,s,o,a){const l=(t+n)/2,u=(t+l)/2,c=(l+n)/2,m=i/4;return withFiniteBounds(e,t,u,m,r,s,o,a)+withFiniteBounds(e,u,l,m,r,s,o,a)+withFiniteBounds(e,l,c,m,r,s,o,a)+withFiniteBounds(e,c,n,m,r,s,o,a)}(e,u,c,r,s,o,a,l)}const E=simpson(u,c,d,h,x),y=[{a:u,b:c,m:g,fa:d,fm:h,fb:x,S:E,depth:0,tolAbs:r,tolRel:s,singularTries:0}];let v=0;for(;y.length>0;){const e=y[y.length-1];y.pop();const{a:t,b:n,m:r}=e,s=e.tolRel,a=(t+r)/2,u=(r+n)/2,c=evalF(a),m=evalF(u);if("ignore"===l&&(isNaN(c)||isNaN(m)))return NaN;if(!("auto"!==l||isFinite(c)&&isFinite(m)&&isFinite(e.fa)&&isFinite(e.fm)&&isFinite(e.fb))){if(e.depth>=o||e.singularTries>=8)throw new Error((0,i.message)("defintSingularity",{a:String(t),b:String(n)}));const l=e.depth+1,p=e.tolAbs/2;y.push({a:r,b:n,m:u,fa:e.fm,fm:m,fb:e.fb,S:simpson(r,n,e.fm,m,e.fb),depth:l,tolAbs:p,tolRel:s,singularTries:e.singularTries+1}),y.push({a:t,b:r,m:a,fa:e.fa,fm:c,fb:e.fm,S:simpson(t,r,e.fa,c,e.fm),depth:l,tolAbs:p,tolRel:s,singularTries:e.singularTries+1});continue}const p=simpson(t,r,e.fa,c,e.fm),g=simpson(r,n,e.fm,m,e.fb),d=p+g;if(Math.abs(d-e.S)/15<=e.tolAbs+e.tolRel*Math.abs(d)||e.depth>=o){v+=d+(d-e.S)/15;continue}const h=e.depth+1,x=e.tolAbs/2;y.push({a:r,b:n,m:u,fa:e.fm,fm:m,fb:e.fb,S:g,depth:h,tolAbs:x,tolRel:s,singularTries:e.singularTries}),y.push({a:t,b:r,m:a,fa:e.fa,fm:c,fb:e.fm,S:p,depth:h,tolAbs:x,tolRel:s,singularTries:e.singularTries})}return v*m}},6953(e,t,n){"use strict";t.loadMathFunctions=function loadMathFunctions(){Object.assign(i.mathFunctionRegistry,{cos:(0,i.systemFunction)({fn:c.cos,minArgs:1,maxArgs:1,distElWise:!0}),sin:(0,i.systemFunction)({fn:c.sin,minArgs:1,maxArgs:1,distElWise:!0}),tan:(0,i.systemFunction)({fn:c.tan,minArgs:1,maxArgs:1,distElWise:!0}),sec:(0,i.systemFunction)({fn:c.sec,minArgs:1,maxArgs:1,distElWise:!0}),csc:(0,i.systemFunction)({fn:c.csc,minArgs:1,maxArgs:1,distElWise:!0}),cot:(0,i.systemFunction)({fn:c.cot,minArgs:1,maxArgs:1,distElWise:!0}),acos:(0,i.systemFunction)({fn:c.acos,minArgs:1,maxArgs:1,distElWise:!0}),asin:(0,i.systemFunction)({fn:c.asin,minArgs:1,maxArgs:1,distElWise:!0}),atan:(0,i.systemFunction)({fn:c.atan,minArgs:1,maxArgs:1,distElWise:!0}),asec:(0,i.systemFunction)({fn:c.asec,minArgs:1,maxArgs:1,distElWise:!0}),acsc:(0,i.systemFunction)({fn:c.acsc,minArgs:1,maxArgs:1,distElWise:!0}),acot:(0,i.systemFunction)({fn:c.acot,minArgs:1,maxArgs:1,distElWise:!0}),atan2:(0,i.systemFunction)({fn:c.atan2,minArgs:2,maxArgs:2,distElWise:!0}),cosh:(0,i.systemFunction)({fn:c.cosh,minArgs:1,maxArgs:1,distElWise:!0}),sinh:(0,i.systemFunction)({fn:c.sinh,minArgs:1,maxArgs:1,distElWise:!0}),tanh:(0,i.systemFunction)({fn:c.tanh,minArgs:1,maxArgs:1,distElWise:!0}),sech:(0,i.systemFunction)({fn:c.sech,minArgs:1,maxArgs:1,distElWise:!0}),csch:(0,i.systemFunction)({fn:c.csch,minArgs:1,maxArgs:1,distElWise:!0}),coth:(0,i.systemFunction)({fn:c.coth,minArgs:1,maxArgs:1,distElWise:!0}),acosh:(0,i.systemFunction)({fn:c.acosh,minArgs:1,maxArgs:1,distElWise:!0}),asinh:(0,i.systemFunction)({fn:c.asinh,minArgs:1,maxArgs:1,distElWise:!0}),atanh:(0,i.systemFunction)({fn:c.atanh,minArgs:1,maxArgs:1,distElWise:!0}),asech:(0,i.systemFunction)({fn:c.asech,minArgs:1,maxArgs:1,distElWise:!0}),acsch:(0,i.systemFunction)({fn:c.acsch,minArgs:1,maxArgs:1,distElWise:!0}),acoth:(0,i.systemFunction)({fn:c.acoth,minArgs:1,maxArgs:1,distElWise:!0}),line:(0,i.systemFunction)({fn:l.line,minArgs:2,maxArgs:3,distElWise:!1}),abs:(0,i.systemFunction)({fn:u.abs,minArgs:1,maxArgs:1,distElWise:!0}),sqrt:(0,i.systemFunction)({fn:u.sqrt,minArgs:1,maxArgs:1,distElWise:!0}),nthroot:(0,i.systemFunction)({fn:u.nthroot,minArgs:2,maxArgs:2,distElWise:!0}),cbrt:(0,i.systemFunction)({fn:u.cbrt,minArgs:1,maxArgs:1,distElWise:!0}),subst:(0,i.systemFunction)({fn:a.subst,minArgs:3,maxArgs:3,distElWise:!0}),log:(0,i.systemFunction)({fn:u.log,minArgs:1,maxArgs:2,distElWise:!0}),log10:(0,i.systemFunction)({fn:u.log10,minArgs:1,maxArgs:1,distElWise:!0}),radians:(0,i.systemFunction)({fn:u.radians,minArgs:1,maxArgs:1,distElWise:!0}),degrees:(0,i.systemFunction)({fn:u.degrees,minArgs:1,maxArgs:1,distElWise:!0}),exp:(0,i.systemFunction)({fn:u.exp,minArgs:1,maxArgs:1,distElWise:!0}),erf:(0,i.systemFunction)({fn:u.erf,minArgs:1,maxArgs:1,distElWise:!0}),erfc:(0,i.systemFunction)({fn:u.erfc,minArgs:1,maxArgs:1,distElWise:!0}),gamma:(0,i.systemFunction)({fn:u.gamma,minArgs:1,maxArgs:1,distElWise:!0}),gamma_incomplete:(0,i.systemFunction)({fn:u.gammaIncomplete,minArgs:2,maxArgs:2,distElWise:!0}),gamma_incomplete_lower:(0,i.systemFunction)({fn:u.gammaIncompleteLower,minArgs:2,maxArgs:2,distElWise:!0}),[r.DIRAC]:(0,i.systemFunction)({fn:u.dirac,minArgs:1,maxArgs:1,distElWise:!0}),[r.HEAVISIDE]:(0,i.systemFunction)({fn:u.heaviside,minArgs:1,maxArgs:1,distElWise:!0}),step:(0,i.systemFunction)({fn:u.step,minArgs:1,maxArgs:1,distElWise:!0}),rect:(0,i.systemFunction)({fn:u.rect,minArgs:1,maxArgs:1,distElWise:!0}),tri:(0,i.systemFunction)({fn:u.tri,minArgs:1,maxArgs:1,distElWise:!0}),continued_fraction:(0,i.systemFunction)({fn:p.continuedFraction,minArgs:1,maxArgs:2,distElWise:!1}),scientific:(0,i.systemFunction)({fn:u.scientific,minArgs:1,maxArgs:2,distElWise:!0}),hypot:(0,i.systemFunction)({fn:l.hypot,minArgs:2,maxArgs:2,distElWise:!0}),[r.FACTORIAL]:(0,i.systemFunction)({fn:u.factorial,minArgs:1,maxArgs:1,distElWise:!0}),factorial:(0,i.systemFunction)({fn:u.factorial,minArgs:1,maxArgs:1,distElWise:!0}),[r.DOUBLE_FACTORIAL]:(0,i.systemFunction)({fn:u.doubleFactorial,minArgs:1,maxArgs:1,distElWise:!0}),expand:(0,i.systemFunction)({fn:o.expand,minArgs:1,maxArgs:1,distElWise:!0}),numeric:(0,i.systemFunction)({fn:s.numeric,minArgs:1,maxArgs:2,equationArgs:[0],distElWise:!1,deferArguments:!0}),round:(0,i.systemFunction)({fn:u.round,minArgs:1,maxArgs:2,distElWise:!0}),sign:(0,i.systemFunction)({fn:u.sign,minArgs:1,maxArgs:1,distElWise:!0}),floor:(0,i.systemFunction)({fn:u.floor,minArgs:1,maxArgs:1,distElWise:!0}),ceil:(0,i.systemFunction)({fn:u.ceiling,minArgs:1,maxArgs:1,distElWise:!0}),ceiling:(0,i.systemFunction)({fn:u.ceiling,minArgs:1,maxArgs:1,distElWise:!0}),trunc:(0,i.systemFunction)({fn:m.trunc,minArgs:1,maxArgs:1,distElWise:!0}),mod:(0,i.systemFunction)({fn:u.mod,minArgs:2,maxArgs:2,distElWise:!0}),modinv:(0,i.systemFunction)({fn:u.modInv,minArgs:2,maxArgs:2,distElWise:!0}),parens:(0,i.systemFunction)({fn:u.parens,minArgs:1,maxArgs:1,distElWise:!0}),count:(0,i.systemFunction)({fn:p.count,minArgs:1,maxArgs:1,distElWise:!1}),size:(0,i.systemFunction)({fn:p.size,minArgs:1,maxArgs:1,distElWise:!1}),contains:(0,i.systemFunction)({fn:u.contains,minArgs:2,maxArgs:2,distElWise:!1}),max:(0,i.systemFunction)({fn:u.max,minArgs:2,maxArgs:-1,distElWise:!0}),min:(0,i.systemFunction)({fn:u.min,minArgs:2,maxArgs:-1,distElWise:!0}),isprime:(0,i.systemFunction)({fn:p.isprime,minArgs:1,maxArgs:1,distElWise:!0}),fib:(0,i.systemFunction)({fn:u.fibonacci,minArgs:1,maxArgs:1,distElWise:!0}),sinc:(0,i.systemFunction)({fn:u.sinc,minArgs:1,maxArgs:1,distElWise:!0}),Shi:(0,i.systemFunction)({fn:u.Shi,minArgs:1,maxArgs:1,distElWise:!0}),Si:(0,i.systemFunction)({fn:u.Si,minArgs:1,maxArgs:1,distElWise:!0}),Chi:(0,i.systemFunction)({fn:u.Chi,minArgs:1,maxArgs:1,distElWise:!0}),Ci:(0,i.systemFunction)({fn:u.Ci,minArgs:1,maxArgs:1,distElWise:!0}),Ei:(0,i.systemFunction)({fn:u.Ei,minArgs:1,maxArgs:1,distElWise:!0}),[r.LI]:(0,i.systemFunction)({fn:u.Li,minArgs:1,maxArgs:1,distElWise:!0})})};const i=n(9426),r=n(8300),s=n(1668),o=n(7741),a=n(886),l=n(7867),u=n(8533),c=n(1649),m=n(6925),p=n(706)},7867(e,t,n){"use strict";t.hypot=function hypot(e,t){const n=[s.SIN,s.COS];let l;if(e.isFunction(n)&&t.isFunction(n)&&e.name!==t.name&&e.isLinear()&&t.isLinear()&&e.getMultiplier().eq(t.getMultiplier()))l=i.Expression.fromRational(e.getMultiplier());else{const n=(0,a.power)(e,(0,r.two)()),i=(0,a.power)(t,(0,r.two)());l=(0,a.power)((0,o.add)(n,i),(0,r.half)())}return l},t.line=function line(e,t,n="x"){if(!e||!t||e.dataType!==s.VECTOR||t.dataType!==s.VECTOR||2!==e.count()||2!==t.count())throw new l.DimensionError((0,l.message)("mismatchedDimensions",{function:"line"}));const r=e.elements[0],o=e.elements[1],a=t.elements[0],u=t.elements[1];if(!(i.Expression.isExpression(r)&&i.Expression.isExpression(o)&&i.Expression.isExpression(a)&&i.Expression.isExpression(u)))throw new l.UnexpectedInputError((0,l.message)("wrongInput",{expected:"two-dimensional vectors of scalar expressions",received:`${e.text()}, ${t.text()}`}));const c=i.Expression.create(n);return o.plus(u.minus(o).div(a.minus(r)).times(c.minus(r)))};const i=n(296),r=n(6099),s=n(8300),o=n(6255),a=n(3957),l=n(4703)},8533(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.sqrt=sqrt,t.scientific=function scientific(e,t=10){const n=o.Expression.create(t),i=n.isNUM()&&n.isInteger()?Number(n.getMultiplier().numerator):Number.NaN,r=(0,x.validateScientificSignificantDigits)(i,n.text()),s=o.Expression.create(e,void 0,!0);return s.scientific=r,s},t.nthroot=function nthroot(e,t){return(0,g.power)(o.Expression.create(e),(0,a.one)().div(o.Expression.create(t)))},t.radians=function radians(e){return o.Expression.create(e).times(o.Expression.Pi()).div(180)},t.degrees=function degrees(e){return o.Expression.create(e).times(180).div(o.Expression.Pi())},t.log10=function log10(e){return log(e,10)},t.cbrt=function cbrt(e){if((e=o.Expression.create(e)).isPosInf()||e.isNegInf())return e.isNegInf()?o.Expression.NegInf():o.Expression.Inf();if(e.isOne())return(0,a.one)();if(e.isZero())return(0,a.zero)();if(P.Settings.EVALUATE&&e.isConstant()){const t=e.isNUM()||e.isComplex()?e:e.evaluate();if(t.isNUM()){const e=t.getMultiplier().toDecimal(),n=new r.default(1).div(3),i=e.isNeg()?e.abs().pow(n).neg():e.pow(n);return o.Expression.create(i)}if(t.isComplex()){const e=t.realPart(),n=t.imagPart(),i=Number(e.getMultiplier().toDecimal()),r=Number(n.getMultiplier().toDecimal()),s=Math.hypot(i,r),a=Math.atan2(r,i),l=Math.cbrt(s),u=a/3,c=l*Math.cos(u),m=l*Math.sin(u);return o.Expression.create(c).plus(o.Expression.create(m).times(o.Expression.Img()))}}if(e.isFunction(c.CBRT))return(0,p.multiply)(cbrt(o.Expression.fromRational(e.getMultiplier())),(0,g.power)(e.toUnitMultiplier(),(0,a.third)()));return o.Expression.toFunction(c.CBRT,[e])},t.parens=function parens(e){return o.Expression.toFunction(c.WRAP,[o.Expression.create(e)])},t.fibonacci=function fibonacci(e){let t;t=(e=o.Expression.create(e)).isNUM()&&e.isInteger()?o.Expression.Number((0,y.fibonacci)(e.getMultiplier().numerator)):o.Expression.toFunction(m.FIB,[o.Expression.create(e)]);return t},t.factorial=factorial,t.doubleFactorial=function doubleFactorial(e){let t;if(e.isPosInf()||e.isNegInf()){if(e.isNegInf())throw new E.UndefinedError((0,E.message)("undefinedValue"));return o.Expression.Inf()}if(P.Settings.EVALUATE)if(e.isInteger()){const n=e.isEven(),i=Number(e.getMultiplier().toDecimal()),r=n?i/2:(i+1)/2;let s=(0,a.one)();for(let e=1;e<=r;e++){let t=(0,a.two)().times(e);n||(t=t.minus(1)),s=s.times(t)}t=s}else{const n=o.Expression.Pi(!0),i=(0,a.two)().pow(e.times((0,a.two)()).plus((0,a.one)()).minus((0,N.cos)(n.times(e))).div((0,a.four)())),r=n.pow((0,N.cos)(n.times(e)).minus((0,a.one)()).div((0,a.four)())),s=gamma(e.div((0,a.two)()).plus(1));t=i.times(r).times(s)}else t=o.Expression.toFunction(c.DOUBLE_FACTORIAL,[o.Expression.create(e)]);return t},t.heaviside=function heaviside(e){let t;const n=!e.isConstant()&&!e.isComplex()&&(0,s.hasAssumptions)();if(e.isPosInf()||e.isNegInf())t=e.isNegInf()?(0,a.zero)():(0,a.one)();else if(e.isNUM()){const n=e.sign();t=1===n?(0,a.one)():-1===n?(0,a.zero)():(0,a.half)()}else t=n&&e.gt(0)?(0,a.one)():n&&e.lt(0)?(0,a.zero)():n&&e.gte(0)&&e.lte(0)?(0,a.half)():o.Expression.toFunction(c.HEAVISIDE,[o.Expression.create(e)]);return t},t.step=function step(e){const t=!(e=o.Expression.create(e)).isConstant()&&!e.isComplex()&&(0,s.hasAssumptions)();if(e.isPosInf()||e.isNegInf())return e.isNegInf()?(0,a.zero)():(0,a.one)();if(e.isNUM())return e.sign()<0?(0,a.zero)():(0,a.one)();if(t&&e.lt((0,a.zero)()))return(0,a.zero)();if(t&&e.gte((0,a.zero)()))return(0,a.one)();return o.Expression.toFunction("step",[e])},t.rect=function rect(e){const t=o.Expression.create(e),n=abs(t);if(n.lt((0,a.half)()))return(0,a.one)();if(n.eq((0,a.half)()))return(0,a.half)();if(n.gt((0,a.half)()))return(0,a.zero)();return o.Expression.toFunction("rect",[t])},t.tri=function tri(e){const t=o.Expression.create(e),n=abs(t);if(n.lt((0,a.one)()))return(0,a.one)().minus(n);if(n.gte((0,a.one)()))return(0,a.zero)();return o.Expression.toFunction("tri",[t])},t.dirac=function dirac(e){let t;const n=!e.isConstant()&&!e.isComplex()&&(0,s.hasAssumptions)();t=e.isPosInf()||e.isNegInf()?(0,a.zero)():e.isNUM()?e.isZero()?o.Expression.toFunction(c.DIRAC,[o.Expression.create(e)]):(0,a.zero)():n&&(e.gt(0)||e.lt(0))?(0,a.zero)():o.Expression.toFunction(c.DIRAC,[o.Expression.create(e)]);return t},t.numeric=function numeric(e,t){return e=o.Expression.create(e),(0,P.scopedBlock)("DEFER_SIMPLIFICATION",!1,()=>{let n=x.Rational.getPrecision();if(void 0!==t){const e=o.Expression.create(t).evaluate();if(!e.isNUM()||!e.isInteger())throw new E.UnexpectedInputError((0,E.message)("wrongInput",{expected:T,received:e.text()}));const i=e.getMultiplier();if(i.numerator<=0n||i.numerator>BigInt(Number.MAX_SAFE_INTEGER))throw new E.UnexpectedInputError((0,E.message)("wrongInput",{expected:T,received:e.text()}));n=Number(i.numerator)}const i=x.Rational.getPrecision();let s;try{n!==i&&x.Rational.set({precision:n});const t=e.isNUM()?e:e.evaluate();if(t.variables().length>0)s=t;else if(t.isNUM()){const e=t.getMultiplier(),i=new r.default(e.numerator.toString()).div(e.denominator.toString()).toSignificantDigits(n);s=o.Expression.Number(i),s.getMultiplier().asDecimal=!0,s.precision=n}else if(t.isComplex()){const e=numeric(t.realPart(),n),i=numeric(t.imagPart(),n);s=e.plus(i.times(o.Expression.Img())),s.precision=n}else s=t}finally{n!==i&&x.Rational.set({precision:i})}return s})},t.round=function round(e,t){if((e=o.Expression.create(e)).isPosInf()||e.isNegInf())return e.isNegInf()?o.Expression.NegInf():o.Expression.Inf();let n;if(t=t?o.Expression.create(t):(0,a.zero)(),e.isNUM()&&t.isInteger()){const i=e.getMultiplier().toDecimal(),s=t.getMultiplier().toDecimal(),a=new r.default(10).pow(s);n=o.Expression.create(r.default.round(i.times(a)).div(a))}else n=o.Expression.toFunction(c.ROUND,[e,t]);return n},t.sign=function sign(e){let t;t=(e=o.Expression.create(e)).isComplex()?(0,w.csgn)(e):e.isPosInf()||e.isNegInf()?o.Expression.create(e.isNegInf()?-1:1):e.isConstant()?o.Expression.create((e.isNUM()?e:e.evaluate()).getMultiplier().sign()):(0,s.hasAssumptions)()?e.gt(0)?(0,a.one)():e.lt(0)?(0,a.one)().neg():e.eq(0)?(0,a.zero)():o.Expression.toFunction(c.SGN,[e]):o.Expression.toFunction(c.SGN,[e]);return t},t.floor=floor,t.ceiling=function ceiling(e){let t;if((e=o.Expression.create(e)).isPosInf()||e.isNegInf())t=e.isNegInf()?o.Expression.NegInf():o.Expression.Inf();else if(e.isNUM()){const n=e.getMultiplier().toDecimal();t=o.Expression.create(n.ceil())}else t=o.Expression.toFunction(c.CEIL,[e]);return t},t.abs=abs,t.modInv=function modInv(e,t){let n=(0,a.zero)(),i=(0,a.one)(),r=t,s=mod(e,t);for(;!s.isZero();){const e=floor(r.div(s));[n,i]=[i,n.minus(e.times(i))],[r,s]=[s,r.minus(e.times(s))]}if(r.gt(1))throw new E.MathError((0,E.message)("noInverse"));return mod(n,t)},t.mod=mod,t.gammaIncomplete=gammaIncomplete,t.gammaIncompleteLower=function gammaIncompleteLower(e,t){const n=o.Expression.create(e),i=o.Expression.create(t);if(!n.isNUM()||!n.isInteger()||n.lte((0,a.zero)()))return o.Expression.toFunction("gamma_incomplete_lower",[n,i]);if(n.getMultiplier().numerator>BigInt(P.Settings.MAX_PRODUCT_AND_SUMMATION_ITERATION))return o.Expression.toFunction("gamma_incomplete_lower",[n,i]);return gamma(n).minus(gammaIncomplete(n,i))},t.gamma=gamma,t.erfc=function erfc(e){return(0,d.subtract)((0,a.one)(),erf(e))},t.erf=erf,t.sinc=function sinc(e){let t;t=e.isPosInf()||e.isNegInf()?(0,a.zero)():e.isZero()?(0,a.one)():(0,N.sin)(e).isZero()?(0,a.zero)():-1===e.sign()?sinc(e.neg()):e.isNUM()&&P.Settings.EVALUATE?o.Expression.Number((0,b.sinc)(e.getMultiplier().toDecimal())):P.Settings.EVALUATE?(0,N.sin)(e).div(e):o.Expression.toFunction(c.SINC,[o.Expression.create(e)]);return t},t.Si=function Si(e){let t;e.isPosInf()||e.isNegInf()?(t=o.Expression.Pi().div((0,a.two)()),e.isNegInf()&&(t=t.neg())):t=e.isZero()?(0,a.zero)():-1===e.sign()?Si(e.neg()).neg():e.isNUM()&&P.Settings.EVALUATE?o.Expression.Number((0,b.Si)(e.getMultiplier().toDecimal())):o.Expression.toFunction(c.SI,[o.Expression.create(e)]);return t},t.Shi=function Shi(e){let t;t=e.isPosInf()||e.isNegInf()?e.isNegInf()?o.Expression.NegInf():o.Expression.Inf():e.isZero()?(0,a.zero)():-1===e.sign()?Shi(e.neg()).neg():e.isNUM()&&P.Settings.EVALUATE?o.Expression.Number((0,b.Shi)(e.getMultiplier().toDecimal())):o.Expression.toFunction(c.SHI,[o.Expression.create(e)]);return t},t.Ci=function Ci(e){let t;t=e.isPosInf()||e.isNegInf()?(0,a.zero)():e.isZero()?o.Expression.NegInf():-1===e.sign()?Ci(e.neg()):e.isNUM()&&P.Settings.EVALUATE?o.Expression.Number((0,b.Ci)(e.getMultiplier().toDecimal())):o.Expression.toFunction(c.CI,[o.Expression.create(e)]);return t},t.Chi=function Chi(e){let t;t=e.isPosInf()||e.isNegInf()?o.Expression.Inf():e.isZero()?o.Expression.NegInf():-1===e.sign()?Chi(e.neg()):e.isNUM()&&P.Settings.EVALUATE?o.Expression.Number((0,b.Chi)(e.getMultiplier().toDecimal())):o.Expression.toFunction(c.CHI,[o.Expression.create(e)]);return t},t.Ei=function Ei(e){let t;t=e.isPosInf()||e.isNegInf()?e.isNegInf()?(0,a.zero)():o.Expression.Inf():e.isZero()?o.Expression.NegInf():e.isNUM()&&P.Settings.EVALUATE?o.Expression.Number((0,b.Ei)(e.getMultiplier().toDecimal())):o.Expression.toFunction(c.EI,[o.Expression.create(e)]);return t},t.Li=function Li(e){let t;if(e.isPosInf())t=o.Expression.Inf();else if(e.isOne())t=o.Expression.NegInf();else if(e.isNUM()&&P.Settings.EVALUATE){const n=e.getMultiplier();t=n.isNegative()?o.Expression.toFunction(c.LI,[o.Expression.create(e)]):o.Expression.Number((0,b.Li)(n.toDecimal()))}else t=o.Expression.toFunction(c.LI,[o.Expression.create(e)]);return t},t.log=log,t.max=function max(...e){return aggregator(e,(e,t)=>e.gt(t),(e,t)=>e.gte(t))??o.Expression.toFunction(c.MAX,e)},t.min=function min(...e){return aggregator(e,(e,t)=>e.lt(t),(e,t)=>e.lte(t))??o.Expression.toFunction(c.MIN,e)},t.exp=exp,t.matrix=function matrix(...e){return new u.Matrix(...e)},t.sum=function sum(e,t,n,i){if(!t.isPlainVariable())return o.Expression.toFunction(c.SUM_FUNCTION,[e,t,n,i]);e=o.Expression.create(e),t=o.Expression.create(t),n=o.Expression.create(n),i=o.Expression.create(i);const r=t.text(),s=toIntegerBigint(n),l=toIntegerBigint(i);if(null===s||null===l)return o.Expression.toFunction(c.SUM_FUNCTION,[e,t,n,i]);if(s>l)return(0,a.zero)();const u=l-s+1n;if(u>P.Settings.MAX_PRODUCT_AND_SUMMATION_ITERATION)return o.Expression.toFunction(c.SUM_FUNCTION,[e,t,n,i]);if(!e.hasVariable(r)){const t=o.Expression.create(u);return e.times(t)}let m=(0,a.zero)(),p=s;for(;p<=l;){const t={};t[r]=p;const n=e.evaluate(t);m=m.plus(n),p+=1n}return m},t.product=function product(e,t,n,i){if(!t.isPlainVariable())return o.Expression.toFunction(c.PRODUCT_FUNCTION,[e,t,n,i]);e=o.Expression.create(e),t=o.Expression.create(t),n=o.Expression.create(n),i=o.Expression.create(i);const r=t.text(),s=toIntegerBigint(n),l=toIntegerBigint(i);if(null===s||null===l)return o.Expression.toFunction(c.PRODUCT_FUNCTION,[e,t,n,i]);if(s>l)return(0,a.one)();const u=l-s+1n;if(u>P.Settings.MAX_PRODUCT_AND_SUMMATION_ITERATION)return o.Expression.toFunction(c.PRODUCT_FUNCTION,[e,t,n,i]);if(!e.hasVariable(r)){const t=o.Expression.create(u);return(0,g.power)(e,t)}let m=(0,a.one)(),p=s;for(;p<=l;){const t={};t[r]=p;const n=e.evaluate(t);m=m.times(n),p+=1n}return m},t.contains=function contains(e,t){let n;t=o.Expression.create(t),n=e.dataType===c.VECTOR?o.Expression.create(Number(-1!==e.indexOf(t))):e.dataType===c.SET||e.dataType===c.SOLUTIONS_SET?o.Expression.create(Number(e.has(t))):e.dataType===c.DICTIONARY?o.Expression.create(Number(e.has(t.text()))):o.Expression.toFunction(c.CONTAINS,[e,t]);return n};const r=i(n(3110)),s=n(6351),o=n(296),a=n(6099),l=n(1897),u=n(4462),c=n(8300),m=n(8300),p=n(6498),g=n(3957),d=n(6910),h=n(9565),x=n(5584),E=n(4703),y=n(551),v=n(982),w=n(4600),b=n(9571),P=n(5817),A=n(7867),N=n(1649),M=n(706),T="a positive integer precision";function sqrt(e){let t;if((e=o.Expression.create(e)).isPosInf()||e.isNegInf()){if(e.isNegInf())throw new E.UndefinedError((0,E.message)("undefinedValue"));t=o.Expression.Inf()}else t=e.isOne()?(0,a.one)():e.isZero()?(0,a.zero)():e.isFunction(c.SQRT)?(0,p.multiply)(sqrt(o.Expression.fromRational(e.getMultiplier())),(0,g.power)((0,g.sqrtToPow)(e.toUnitMultiplier()),(0,a.half)())):(0,g.power)(e,(0,a.half)());return t}function factorial(e){let t;if(e.isPosInf()||e.isNegInf()){if(e.isNegInf())throw new E.UndefinedError((0,E.message)("undefinedValue"));return o.Expression.Inf()}if(e.isInteger())t=o.Expression.Number((0,y.factorial)(e.getMultiplier().numerator));else if(P.Settings.EVALUATE)t=gamma(e.plus((0,a.one)()));else{let n=e.getMultiplier();if(e.isNUM()&&2n===n.denominator){const e=n.sign();n=n.abs();const i=o.Expression.create(n.numerator-1n).div((0,a.two)()),r=sqrt(o.Expression.Pi());t=-1===e?(0,a.four)().neg().pow(i).times(factorial(i)).div(factorial(i.times((0,a.two)()))).times(r):factorial(i.times((0,a.two)()).plus((0,a.one)())).div((0,a.four)().pow(i).times(factorial(i)).times((0,a.two)())).times(r)}else t=o.Expression.toFunction(m.FACTORIAL,[o.Expression.create(e)])}return t}function floor(e){let t;if((e=o.Expression.create(e)).isPosInf()||e.isNegInf())t=e.isNegInf()?o.Expression.NegInf():o.Expression.Inf();else if(e.isNUM()){const n=e.getMultiplier().toDecimal();t=o.Expression.create(n.floor())}else t=o.Expression.toFunction(c.FLOOR,[e]);return t}function abs(e){if((e=o.Expression.create(e)).isPosInf()||e.isNegInf())return o.Expression.Inf();let t=e,n=!0;const i=!e.isConstant()&&(0,s.hasAssumptions)();if(!e.isConstant()&&e.getPower().isEven())t=e,-1===t.sign()&&(t=t.neg()),n=!1;else if(e.isComplex())t=(0,A.hypot)(e.realPart(),e.imagPart());else if(i&&e.gte(0))t=e,n=!1;else if(i&&e.lte(0))t=e.neg(),n=!1;else if(e.isSum()){const i=[],r=[],s=e.elementsArray();let o=!0,a=1;for(let l=0;l<s.length;l++){const u=s[l];u.isConstant()?i.push(u):r.push(u),-1!==u.sign()&&(o=!1),(o||1===r.length&&-1===r[0].sign())&&(t=e.neg().expand(),a=-1);const c=s[l+1],m=c&&1===r.length&&c.value===r[0].value;if(1===r.length&&r[0].getPower().isEven()&&!m){n=!1;for(let e=0;e<i.length;e++)if(i[e].sign()*a===-1){n=!0;break}}}}else-1===e.sign()&&(t=e.neg());return t||(t=e),!t.isConstant()&&n&&(t=o.Expression.toFunction(c.ABS,[t])),t}function roundRatioToNearestEven(e,t){const n=e/t,i=e%t,r=2n*(0,y.abs)(i),s=BigInt((0,y.sign)(e));return r<t?n:r>t?n+s:(0,y.isEven)(n)?n:n+s}function mod(e,t){let n;if(e.isPosInf()||e.isNegInf()||t.isPosInf()||t.isNegInf())throw new E.UndefinedError((0,E.message)("undefinedValue"));if(e.isNUM()&&t.isNUM())n=o.Expression.create(e.getMultiplier().mod(t.getMultiplier()));else if(e.isComplex()||t.isComplex()){const i=e.realPart(),r=e.imagPart(),s=t.realPart(),a=t.imagPart();if(i.isNUM()&&i.isInteger()&&r.isNUM()&&r.isInteger()&&s.isNUM()&&s.isInteger()&&a.isNUM()&&a.isInteger()){const l=i.getMultiplier().numerator,u=r.getMultiplier().numerator,m=s.getMultiplier().numerator,p=a.getMultiplier().numerator,g=m*m+p*p;if(0n===g)n=o.Expression.toFunction(c.MOD,[o.Expression.create(e),o.Expression.create(t)]);else{const e=roundRatioToNearestEven(l*m+u*p,g),t=roundRatioToNearestEven(u*m-l*p,g),i=l-m*e+p*t,r=u-m*t-p*e;n=o.Expression.Number(i).plus(o.Expression.Number(r).i())}}else n=o.Expression.toFunction(c.MOD,[o.Expression.create(e),o.Expression.create(t)])}else n=e.isPolynomialLike()&&t.isPolynomialLike()&&(0,h.maxCommonVariableOccurrence)(e,t)?(0,h.polyMod)(e,t).getExpression():o.Expression.toFunction(c.MOD,[o.Expression.create(e),o.Expression.create(t)]);return n}function gammaIncomplete(e,t){const n=o.Expression.create(e),i=o.Expression.create(t);if(!n.isNUM()||!n.isInteger()||n.lte((0,a.zero)()))return o.Expression.toFunction("gamma_incomplete",[n,i]);const r=n.getMultiplier().numerator;if(r>BigInt(P.Settings.MAX_PRODUCT_AND_SUMMATION_ITERATION))return o.Expression.toFunction("gamma_incomplete",[n,i]);let s=(0,a.one)(),l=(0,a.one)(),u=1n;for(;u<r;)s=s.times(i).div(o.Expression.Number(u)),l=l.plus(s),u++;return factorial(o.Expression.Number(r-1n)).times(exp(i.neg())).times(l)}function gamma(e){let t;if(e.isPosInf()||e.isNegInf()){if(e.isNegInf())throw new E.UndefinedError((0,E.message)("undefinedValue"));return o.Expression.Inf()}if(e.isNUM()){const n=e.getMultiplier();if(e.isInteger()&&!e.isNegative())t=e.isZero()?o.Expression.toFunction(c.GAMMA,[e]):factorial(e.minus((0,a.one)()));else if(2n===n.denominator){const i=sqrt(o.Expression.Pi()),r=n.numerator;if(r<=0n&&r%2n==0n)t=o.Expression.toFunction(c.GAMMA,[e]);else if(1n===r)t=i;else if(r>1n){let n=(0,a.half)(),r=i;for(;!n.eq(e);)r=n.times(r),n=n.plus((0,a.one)());t=r}else{let n=(0,a.half)(),r=i;for(;!n.eq(e);)n=n.minus((0,a.one)()),r=r.div(n);t=r}}else t=o.Expression.Number((0,b.gamma)(n.toDecimal()))}else t=o.Expression.toFunction(c.GAMMA,[e]);return t}function erf(e){let t;if(e.isPosInf()||e.isNegInf())t=e.isNegInf()?(0,a.one)().neg():(0,a.one)();else if(e.isNUM()){const n=e.getMultiplier();t=n.gt("6.5")?(0,a.one)():o.Expression.Number((0,b.erf)(n.toDecimal()))}else t=o.Expression.toFunction(c.ERF,[o.Expression.create(e)]);return t}function log(e,t,n=!1){e=o.Expression.create(e);const i=void 0===t?void 0:o.Expression.create(t);let r,s;if(i&&e.isInteger()&&i.isInteger()&&e.gt(0)&&i.gt(1)){const t=e.getMultiplier().numerator,n=i.getMultiplier().numerator;let s=1n,a=0n;for(;s<t;)s*=n,a++;s===t&&(r=o.Expression.Number(a))}if(e.isPosInf()||e.isNegInf()){if(e.isNegInf())throw new E.UndefinedError((0,E.message)("undefinedValue"));s=o.Expression.Inf()}else if(e.isOne())s=(0,a.zero)();else if(r)s=r;else if(e.isE()&&e.getMultiplier().isOne()){const t=e.getPower();s=t.isComplex()?o.Expression.toFunction(o.Expression.LOG,[o.Expression.create(e)]):(0,a.one)().times(t)}else if(!e.isComplex()&&e.lt(0))s=o.Expression.Pi().times(o.Expression.Img()).plus(log(e.abs()));else if(e.isComplex()){const t=e.realPart(),n=e.imagPart();s=log(sqrt(t.sq().plus(n.sq()))).plus((0,N.atan2)(n,t).i())}else if(P.Settings.EVALUATE){if(e.isNUM())if(i&&i.isNUM()){const t=e.getMultiplier().toDecimal().ln(),n=i.getMultiplier().toDecimal().ln();s=o.Expression.Number(t.div(n))}else s=o.Expression.Number(e.getMultiplier().toDecimal().ln())}else if(e.isNUM()){const t=e.getMultiplier(),i=t.numerator<0n?-t.numerator:t.numerator,r=t.denominator<0n?-t.denominator:t.denominator;if(1n!==r)s=log(o.Expression.Number(i)).minus(log(o.Expression.Number(r)));else if(n){const e=(0,v.primeFactorCounts)(i),t=Object.keys(e);if(t.length>0&&(t.length>1||e[t[0]]>1n)){s=(0,a.zero)();for(const t in e){const n=e[t],i=o.Expression.toFunction(o.Expression.LOG,[o.Expression.Number(t)]);s=s.plus(i.times(o.Expression.Number(n)))}}}}else{const t=e.getMultiplier(),n=e.toUnitMultiplier();let i,r=!1;if(n.isProduct()&&n.isLinear()){const e=n.elementsArray();let t=!0;for(const n of e){let e=!1;if(n.isNUM())e=n.gt(0);else{const t=n.getPower(),i=n.isEXP()?n.getBase():(0,M.stripPower)(n);e=!t.isComplex()&&!i.isComplex()&&i.gt(0)}if(!e){t=!1;break}}if(t){let t=(0,a.zero)();for(const n of e)t=t.plus(log(n));i=t,r=!0}}else{const e=n.getPower(),t=n.isEXP()?n.getBase():(0,M.stripPower)(n);e.isOne()?(i=o.Expression.toFunction(o.Expression.LOG,[n]),r=!n.isComplex()&&n.gt(0)):e.isComplex()||t.isComplex()||!t.gt(0)||(i=log(t).times(e),r=!0)}void 0===i||t.isOne()?s=i:t.sign()>0&&r&&(s=i.plus(log(o.Expression.fromRational(t))))}return s=s||o.Expression.toFunction(o.Expression.LOG,[o.Expression.create(e)]),i&&s&&!r&&(s=s.div(log(i))),s}function aggregator(e,t,n){let i;const r=e.map(e=>o.Expression.create(e));let a=!0;const u=r.map(e=>{const t=(0,l.getNumericOrAssumedValue)(e);return void 0===t&&(a=!1),t});if(!0===a&&u.length>0&&u.every(e=>void 0!==e)){let e=u[0];for(let n=1;n<u.length;n++){const i=u[n];t(i,e)&&(e=i)}i=e}else{if((0,s.hasAssumptions)()&&r.every(e=>!e.isComplex())&&r.some(e=>e.variables().some(e=>void 0!==(0,s.getAssumptionFor)(e))))for(const e of r)if(r.every(t=>n(e,t))){i=e;break}void 0===i&&r.length>0&&r.every(e=>e.eq(r[0]))&&(i=r[0])}return i}function exp(e){let t,n,i,r,s,l,u;return(e=o.Expression.create(e)).isPosInf()||e.isNegInf()?e.isNegInf()?(0,a.zero)():o.Expression.Inf():(e.isZero()?t=(0,a.one)():P.Settings.EVALUATE&&(e.isComplex()?(n=e.evaluate(),i=n.realPart(),r=n.imagPart(),i.isNUM()&&r.isNUM()&&(u=o.Expression.Number(i.getMultiplier().toDecimal().exp()),s=(0,N.cos)(r),l=(0,N.sin)(r),t=u.times(s.plus(l.i())))):e.isNUM()&&(t=o.Expression.Number(e.getMultiplier().toDecimal().exp()))),t??o.Expression.create(`e^(${e})`))}function toIntegerBigint(e){if(!e.isInteger())return null;const t=e.getMultiplier();if(1n!==t.denominator)return null;return t.numerator}},1649(e,t,n){"use strict";t.ATANH=t.ASINH=t.ACOSH=t.TANH=t.COSH=t.SINH=t.ASEC=t.ATAN=t.COT=t.ACOS=t.ASIN=t.TAN=t.SIN=t.COS=void 0,t.cos=cos,t.sin=sin,t.tan=function tan(e){let t;if((e=i.Expression.create(e)).isPosInf()||e.isNegInf())throw new a.UndefinedError((0,a.message)("undefinedValue"));if(-1===e.sign()&&!e.isNUM())return tan(e.neg()).neg();const n=Math.abs(+e.getMultiplier());if(1===n&&e.isFunction(s.ATAN))t=e.getArguments()[0].times(e.sign());else if(1===n&&e.isFunction(s.ASIN)){const[n,i]=argNumDen(e);t=n.div((0,m.sqrt)(i.sq().minus(n.sq()))).times(e.sign())}else if(1===n&&e.isFunction(s.ACOS)){const[n,i]=argNumDen(e);t=(0,m.sqrt)(i.sq().minus(n.sq())).div(n).times(e.sign())}else{const n=toPiValue(e).getMultiplier().div(o.Rational.PI).denominator;if(1n===n||e.isZero())t=(0,r.zero)();else{if(2n===n)throw new a.UndefinedError((0,a.message)("tanUndefined"));if(u.Settings.EVALUATE&&e.isNUM())t=i.Expression.Number(e.getMultiplier().toDecimal().tan());else if(u.Settings.EVALUATE&&e.isComplex()){const n=e.realPart().times(2),i=e.imagPart().times(2),r=cos(n).plus(cosh(i));t=sin(n).div(r).plus(sinh(i).div(r).i())}else t=sin(e).div(cos(e)),t.hasFunction(s.COS)&&(t=i.Expression.toFunction(s.TAN,[e]))}}return t},t.sec=function sec(e){if((e=i.Expression.create(e)).isPosInf()||e.isNegInf())throw new a.UndefinedError((0,a.message)("undefinedValue"));let t;if(u.Settings.EVALUATE&&e.isComplex()){const n=e.realPart(),i=e.imagPart(),r=cos(n),s=cosh(i),o=sin(n),a=sinh(i),l=r.sq().times(s.sq()).plus(o.sq().times(a.sq()));t=r.times(s).div(l).plus(o.times(a).div(l).i())}else{const n=cos(e);if(n.isZero())throw new a.UndefinedError((0,a.message)("secUndefined"));t=n.invert(),t.hasFunction(s.COS)&&(t=i.Expression.toFunction(s.SEC,[e]))}return t},t.csc=function csc(e){if((e=i.Expression.create(e)).isPosInf()||e.isNegInf())throw new a.UndefinedError((0,a.message)("undefinedValue"));let t;if(u.Settings.EVALUATE&&e.isComplex()){const n=e.realPart(),i=e.imagPart(),r=sin(n),s=cosh(i),o=cos(n),a=sinh(i),l=r.sq().times(s.sq()).plus(o.sq().times(a.sq()));t=r.times(s).div(l).minus(o.times(a).div(l).i())}else{const n=sin(e);if(n.isZero())throw new a.UndefinedError((0,a.message)("cscUndefined"));t=n.invert(),t.hasFunction(s.SIN)&&(t=i.Expression.toFunction(s.CSC,[e]))}return t},t.cot=function cot(e){if((e=i.Expression.create(e)).isPosInf()||e.isNegInf())throw new a.UndefinedError((0,a.message)("undefinedValue"));let t;if(u.Settings.EVALUATE&&e.isComplex()){const n=e.realPart(),i=e.imagPart(),s=sin(n),o=cos(n),a=sinh(i.times((0,r.two)())),l=cosh(i.times((0,r.two)())),u=cos(n.times((0,r.two)())),c=l.minus(u);t=s.times(o).times((0,r.two)()).div(c).plus(a.neg().div(c).i())}else{const n=sin(e);if(n.isZero())throw new a.UndefinedError((0,a.message)("cotUndefined"));t=cos(e).div(n),t.hasFunction(s.COS)&&(t=i.Expression.toFunction(s.COT,[e]))}return t},t.acos=acos,t.asin=asin,t.atan=atan,t.asec=function asec(e){if((e=i.Expression.create(e)).isPosInf()||e.isNegInf())return i.Expression.Pi().div((0,r.two)());const t=acos(e.invert());if(t.isFunction(s.ACOS)&&t.getArguments()[0].eq(e.invert()))return i.Expression.toFunction(s.ASEC,[e]);return t},t.acsc=function acsc(e){if((e=i.Expression.create(e)).isPosInf()||e.isNegInf())return(0,r.zero)();const t=asin(e.invert());if(t.isFunction(s.ASIN)&&t.getArguments()[0].eq(e.invert()))return i.Expression.toFunction(s.ACSC,[e]);return t},t.acot=function acot(e){let t;(e=i.Expression.create(e)).isPosInf()||e.isNegInf()?t=e.isNegInf()?i.Expression.Pi():(0,r.zero)():e.isZero()?t=i.Expression.Pi().div((0,r.two)()):(t=atan(e.invert()),t.isFunction(s.ATAN)&&t.getArguments()[0].eq(e.invert())?t=i.Expression.toFunction(s.ACOT,[e]):e.isNUM()&&-1===e.sign()&&(t=i.Expression.Pi().plus(t)));return t},t.atan2=function atan2(e,t){if(t=i.Expression.create(t),e=i.Expression.create(e),t.isZero()&&e.isZero())throw new a.UndefinedError((0,a.message)("atan2Undefined"));if((t.isPosInf()||t.isNegInf())&&(e.isPosInf()||e.isNegInf()))throw new a.UndefinedError((0,a.message)("atan2Undefined"));if(t.isPosInf()||t.isNegInf())return t.isNegInf()?-1===e.sign()?i.Expression.Pi().neg():i.Expression.Pi():(0,r.zero)();if(e.isPosInf()||e.isNegInf()){const t=i.Expression.Pi().div((0,r.two)());return e.isNegInf()?t.neg():t}let n;if(t.isNUM()&&e.isNUM()){const s=e.getMultiplier(),o=t.getMultiplier();n=o.gt((0,r.zero)())?atan(e.div(t)):o.lt("0")&&s.gte("0")?atan(e.div(t)).plus(i.Expression.Pi()):o.lt("0")&&s.lt("0")?atan(e.div(t)).plus(i.Expression.Pi().neg()):o.eq("0")&&s.gt((0,r.zero)())?i.Expression.Pi().div((0,r.two)()):i.Expression.Pi().neg().div((0,r.two)())}else n=i.Expression.toFunction(s.ATAN2,[e,t]);return n},t.cosh=cosh,t.sinh=sinh,t.tanh=tanh,t.sech=function sech(e){if((e=i.Expression.create(e)).isPosInf()||e.isNegInf())return(0,r.zero)();let t=(0,r.one)().div(cosh(e));t.hasFunction(s.COSH)&&(t=i.Expression.toFunction(s.SECH,[e]));return t},t.csch=function csch(e){if((e=i.Expression.create(e)).isPosInf()||e.isNegInf())return(0,r.zero)();if(e.isZero())throw new a.UndefinedError((0,a.message)("cschUndefined"));let t=(0,r.one)().div(sinh(e));t.hasFunction(s.SINH)&&(t=i.Expression.toFunction(s.CSCH,[e]));return t},t.coth=function coth(e){if((e=i.Expression.create(e)).isPosInf()||e.isNegInf())return e.isNegInf()?(0,r.one)().neg():(0,r.one)();if(e.isZero())throw new a.UndefinedError((0,a.message)("cothUndefined"));let t=(0,r.one)().div(tanh(e));t.hasFunction(s.TANH)&&(t=i.Expression.toFunction(s.COTH,[e]));return t},t.acosh=acosh,t.asinh=asinh,t.atanh=atanh,t.asech=function asech(e){if((e=i.Expression.create(e)).isPosInf()||e.isNegInf())throw new a.UndefinedError((0,a.message)("undefinedValue"));let t;if(u.Settings.EVALUATE)if(e.isComplex())t=acosh(e.invert());else{const n=(0,r.one)().div(e),i=(0,m.sqrt)((0,r.one)().div(e.sq()).minus((0,r.one)()));t=(0,p.log)(i.plus(n))}t||(t=i.Expression.toFunction(s.ASECH,[e]));return t},t.acsch=function acsch(e){if((e=i.Expression.create(e)).isPosInf()||e.isNegInf())return(0,r.zero)();let t;if(u.Settings.EVALUATE)if(e.isComplex())t=asinh(e.invert());else{const n=(0,r.one)().div(e),i=(0,m.sqrt)((0,r.one)().div(e.sq()).plus((0,r.one)()));t=(0,p.log)(i.plus(n))}t||(t=i.Expression.toFunction(s.ACSCH,[e]));return t},t.acoth=function acoth(e){if((e=i.Expression.create(e)).isPosInf()||e.isNegInf())return(0,r.zero)();let t;u.Settings.EVALUATE&&(t=e.isComplex()?atanh(e.invert()):(0,p.log)(e.plus((0,r.one)()).div(e.minus((0,r.one)()))).div((0,r.two)()).expand());t||(t=i.Expression.toFunction(s.ACOTH,[e]));return t};const i=n(296),r=n(6099),s=n(8300),o=n(5584),a=n(4703),l=n(551),u=n(5817),c=n(7867),m=n(8533),p=n(8533);var g=n(8300);function getQuadrant(e){const t=o.Rational.PI.toDecimal(),n=t.times(2);let i=e.toDecimal().mod(n);i.lt(0)&&(i=i.plus(n));const r=Math.floor(Number(i.div(t.div(2))))+1;return Math.min(r,4)}function toPiValue(e){let t=e;return s.PI.includes(e.value)&&e.isLinear()&&(t=e.evaluate({[e.value]:`${o.Rational.PI}`})),t}function argNumDen(e,t=!1){const n=e.getArguments()[0],i=n.getNumerator(),r=n.getDenominator(),s=[i,r];return t&&s.push((0,c.hypot)(i,r)),s}function cos(e){let t;if((e=i.Expression.create(e)).isPosInf()||e.isNegInf())throw new a.UndefinedError((0,a.message)("undefinedValue"));if(-1===e.sign()&&!e.isNUM())return cos(e.neg());const n=Math.abs(+e.getMultiplier());if(1===n&&e.isFunction(s.ATAN)){const[,n,i]=argNumDen(e,!0);t=n.div(i)}else if(1===n&&e.isFunction(s.ACOS))t=e.getArguments()[0];else if(1===n&&e.isFunction(s.ASIN)){const[n,i]=argNumDen(e);t=(0,m.sqrt)(i.sq().minus(n.sq())).div(i)}else{const n=toPiValue(e);let a=!0;const c=[2,3];if(n.isNUM()){const p=n.getMultiplier(),g=p.div(o.Rational.PI);if(g.isInteger())t=i.Expression.Number((0,l.isEven)(g.numerator)?"1":"-1");else{switch(g.denominator){case 2n:t=(0,r.zero)();break;case 3n:t=(0,r.one)().div((0,r.two)());break;case 4n:t=(0,r.one)().div((0,m.sqrt)((0,r.two)()));break;case 6n:t=(0,m.sqrt)((0,r.three)()).div((0,r.two)());break;default:a=!1,t=u.Settings.EVALUATE?i.Expression.Number(p.toDecimal().cos()):i.Expression.toFunction(s.COS,[e])}a&&2n!==g.denominator&&c.includes(getQuadrant(p))&&(t=t.neg())}}else if(u.Settings.EVALUATE&&e.isComplex()){const n=e.realPart(),i=e.imagPart();t=cos(n).times(cosh(i)).minus(sin(n).times(sinh(i)).i())}else t=i.Expression.toFunction(s.COS,[e])}return t}function sin(e){let t;if((e=i.Expression.create(e)).isPosInf()||e.isNegInf())throw new a.UndefinedError((0,a.message)("undefinedValue"));if(-1===e.sign()&&!e.isNUM())return sin(e.neg()).neg();const n=Math.abs(+e.getMultiplier());if(1===n&&e.isFunction(s.ATAN)){const[n,,i]=argNumDen(e,!0);t=n.div(i).times(e.sign())}else if(1===n&&e.isFunction(s.ASIN))t=e.getArguments()[0].times(e.sign());else if(1===n&&e.isFunction(s.ACOS)){const[n,i]=argNumDen(e);t=(0,m.sqrt)(i.sq().minus(n.sq())).div(i).times(e.sign())}else{const n=toPiValue(e);let a=!0;const l=[3,4];if(n.isNUM()){const c=n.getMultiplier(),p=c.div(o.Rational.PI);if(p.isInteger())t=(0,r.zero)();else{switch(p.denominator){case 2n:t=(0,r.one)();break;case 3n:t=(0,m.sqrt)((0,r.three)()).div((0,r.two)());break;case 4n:t=(0,r.one)().div((0,m.sqrt)((0,r.two)()));break;case 6n:t=(0,r.one)().div((0,r.two)());break;default:a=!1,t=u.Settings.EVALUATE?i.Expression.Number(c.toDecimal().sin()):i.Expression.toFunction(s.SIN,[e])}a&&l.includes(getQuadrant(c))&&(t=t.neg())}}else if(u.Settings.EVALUATE&&e.isComplex()){const n=e.realPart(),i=e.imagPart();t=sin(n).times(cosh(i)).plus(cos(n).times(sinh(i)).i())}else t=i.Expression.toFunction(s.SIN,[e])}return t}function acos(e){if((e=i.Expression.create(e)).isPosInf()||e.isNegInf())throw new a.UndefinedError((0,a.message)("undefinedValue"));let t;if(u.Settings.EVALUATE&&e.isNUM())if(e.lt(-1)||e.gt(1)){const n=e.sign(),s=i.Expression.Pi().div((0,r.two)());let o=asin(e.abs());1===n&&(o=o.neg()),t=s.plus(o)}else t=i.Expression.Number(e.getMultiplier().toDecimal().acos());else if(u.Settings.EVALUATE&&e.isComplex()){const n=i.Expression.Img(),s=(0,m.sqrt)((0,r.one)().minus(e.pow((0,r.two)()))),o=n.times(e);t=i.Expression.Pi().div((0,r.two)()).minus(n.times((0,p.log)(s.minus(o)))).expand()}else if(!e.isComplex()){const n=[[(0,r.zero)(),i.Expression.Pi().div((0,r.two)())],[(0,r.one)().div((0,r.two)()),i.Expression.Pi().div((0,r.three)())],[(0,r.one)().div((0,m.sqrt)((0,r.two)())),i.Expression.Pi().div((0,r.four)())],[(0,m.sqrt)((0,r.three)()).div((0,r.two)()),i.Expression.Pi().div((0,r.six)())],[(0,r.one)(),(0,r.zero)()]],s=e.abs();for(const[r,o]of n)if(s.eq(r)){t=-1===e.sign()?i.Expression.Pi().minus(o):o;break}}return void 0===t&&(t=i.Expression.toFunction(s.ACOS,[e])),t}function asin(e){if((e=i.Expression.create(e)).isPosInf()||e.isNegInf())throw new a.UndefinedError((0,a.message)("undefinedValue"));let t;if(u.Settings.EVALUATE&&e.isNUM())if(e.lt((0,r.minusOne)())||e.gt((0,r.one)())){const n=e.sign();e=e.abs();const s=(0,m.sqrt)(e.sq().minus((0,r.one)()));let o=i.Expression.Pi().div((0,r.two)()),a=i.Expression.Img();-1===n?o=o.neg():a=a.neg(),t=o.plus(a.times((0,p.log)(e.plus(s))))}else t=i.Expression.Number(e.getMultiplier().toDecimal().asin());else if(u.Settings.EVALUATE&&e.isComplex()){const n=i.Expression.Img(),s=(0,m.sqrt)((0,r.one)().minus(e.pow((0,r.two)()))),o=n.times(e);t=n.times((0,p.log)(s.minus(o))).expand()}else if(!e.isComplex()){const n=[[(0,r.zero)(),(0,r.zero)()],[(0,r.one)().div((0,r.two)()),i.Expression.Pi().div((0,r.six)())],[(0,r.one)().div((0,m.sqrt)((0,r.two)())),i.Expression.Pi().div((0,r.four)())],[(0,m.sqrt)((0,r.three)()).div((0,r.two)()),i.Expression.Pi().div((0,r.three)())],[(0,r.one)(),i.Expression.Pi().div((0,r.two)())]],s=e.abs();for(const[i,r]of n)if(s.eq(i)){t=-1===e.sign()?r.neg():r;break}}return void 0===t&&(t=i.Expression.toFunction(s.ASIN,[e])),t}function atan(e){let t;if((e=i.Expression.create(e)).isPosInf()||e.isNegInf()){const t=i.Expression.Pi().div((0,r.two)());return e.isNegInf()?t.neg():t}if(u.Settings.EVALUATE&&e.isNUM())t=i.Expression.Number(e.getMultiplier().toDecimal().atan());else if(u.Settings.EVALUATE&&e.isComplex()){const n=i.Expression.Img(),s=(0,p.log)(n.minus(e).div(n.plus(e)));t=n.neg().div((0,r.two)()).times(s).expand()}else if(!e.isComplex()){const n=[[(0,r.zero)(),(0,r.zero)()],[(0,m.sqrt)((0,r.three)()).invert(),i.Expression.Pi().div((0,r.six)())],[(0,r.one)(),i.Expression.Pi().div((0,r.four)())],[(0,m.sqrt)((0,r.three)()),i.Expression.Pi().div((0,r.three)())]],s=e.abs();for(const[i,r]of n)if(s.eq(i)){t=-1===e.sign()?r.neg():r;break}}return t||(t=i.Expression.toFunction(s.ATAN,[e])),t}function cosh(e){let t;if((e=i.Expression.create(e)).isPosInf()||e.isNegInf())return i.Expression.Inf();if(e.isZero())t=(0,r.one)();else if(u.Settings.EVALUATE&&e.isNUM())t=i.Expression.Number(e.getMultiplier().toDecimal().cosh());else if(u.Settings.EVALUATE&&e.isComplex()){const n=e.realPart(),i=e.imagPart();t=cosh(n).times(cos(i)).plus(sinh(n).times(sin(i)).i())}else t=i.Expression.toFunction(s.COSH,[e]);return t}function sinh(e){let t;if((e=i.Expression.create(e)).isPosInf()||e.isNegInf())return e.isNegInf()?i.Expression.NegInf():i.Expression.Inf();if(e.isZero())t=(0,r.zero)();else if(u.Settings.EVALUATE&&e.isNUM())t=i.Expression.Number(e.getMultiplier().toDecimal().sinh());else if(u.Settings.EVALUATE&&e.isComplex()){const n=e.realPart(),i=e.imagPart();t=sinh(n).times(cos(i)).plus(cosh(n).times(sin(i)).i())}else t=i.Expression.toFunction(s.SINH,[e]);return t}function tanh(e){let t;if((e=i.Expression.create(e)).isPosInf()||e.isNegInf())return e.isNegInf()?(0,r.one)().neg():(0,r.one)();if(e.isZero())t=(0,r.zero)();else if(u.Settings.EVALUATE&&e.isNUM())t=i.Expression.Number(e.getMultiplier().toDecimal().tanh());else if(u.Settings.EVALUATE&&e.isComplex()){const n=e.realPart(),i=e.imagPart(),r=sinh(n).times(cos(i)).plus(cosh(n).times(sin(i)).i()),s=cosh(n).times(cos(i)).plus(sinh(n).times(sin(i)).i());t=r.div(s)}else t=i.Expression.toFunction(s.TANH,[e]);return t}function acosh(e){if((e=i.Expression.create(e)).isPosInf()||e.isNegInf()){if(e.isNegInf())throw new a.UndefinedError((0,a.message)("undefinedValue"));return i.Expression.Inf()}let t;if(e.isOne())t=(0,r.zero)();else if(e.isZero())t=i.Expression.Pi().div((0,r.two)()).times(i.Expression.Img());else if(u.Settings.EVALUATE)if(e.isComplex()||e.lt("1")){const n=(0,m.sqrt)(e.plus((0,r.one)())),i=(0,m.sqrt)(e.minus((0,r.one)())),s=e.plus(n.times(i));t=(0,p.log)(s)}else t=i.Expression.Number(e.getMultiplier().toDecimal().acosh());return t||(t=i.Expression.toFunction(s.ACOSH,[e])),t}function asinh(e){if((e=i.Expression.create(e)).isPosInf()||e.isNegInf())return e.isNegInf()?i.Expression.NegInf():i.Expression.Inf();let t;return e.isZero()?t=(0,r.zero)():u.Settings.EVALUATE&&(t=e.isComplex()?(0,p.log)(e.plus((0,m.sqrt)(e.sq().plus((0,r.one)())))):i.Expression.Number(e.getMultiplier().toDecimal().asinh())),t||(t=i.Expression.toFunction(s.ASINH,[e])),t}function atanh(e){if((e=i.Expression.create(e)).isPosInf()||e.isNegInf())throw new a.UndefinedError((0,a.message)("undefinedValue"));let t;if(e.isZero())t=(0,r.zero)();else{if(e.isOne())throw new a.UndefinedError((0,a.message)("atanhUndefined"));u.Settings.EVALUATE&&(t=e.isComplex()||e.lt((0,r.minusOne)())||e.gt((0,r.one)())?(0,p.log)((0,r.one)().plus(e).div((0,r.one)().minus(e))).div((0,r.two)()).expand():i.Expression.Number(e.getMultiplier().toDecimal().atanh()))}return t||(t=i.Expression.toFunction(s.ATANH,[e])),t}Object.defineProperty(t,"COS",{enumerable:!0,get:function(){return g.COS}}),Object.defineProperty(t,"SIN",{enumerable:!0,get:function(){return g.SIN}}),Object.defineProperty(t,"TAN",{enumerable:!0,get:function(){return g.TAN}}),Object.defineProperty(t,"ASIN",{enumerable:!0,get:function(){return g.ASIN}}),Object.defineProperty(t,"ACOS",{enumerable:!0,get:function(){return g.ACOS}}),Object.defineProperty(t,"COT",{enumerable:!0,get:function(){return g.COT}}),Object.defineProperty(t,"ATAN",{enumerable:!0,get:function(){return g.ATAN}}),Object.defineProperty(t,"ASEC",{enumerable:!0,get:function(){return g.ASEC}}),Object.defineProperty(t,"SINH",{enumerable:!0,get:function(){return g.SINH}}),Object.defineProperty(t,"COSH",{enumerable:!0,get:function(){return g.COSH}}),Object.defineProperty(t,"TANH",{enumerable:!0,get:function(){return g.TANH}}),Object.defineProperty(t,"ACOSH",{enumerable:!0,get:function(){return g.ACOSH}}),Object.defineProperty(t,"ASINH",{enumerable:!0,get:function(){return g.ASINH}}),Object.defineProperty(t,"ATANH",{enumerable:!0,get:function(){return g.ATANH}})},6925(e,t,n){"use strict";t.trunc=function trunc(e){let t;if((e=i.Expression.create(e)).isPosInf()||e.isNegInf())t=e.isNegInf()?i.Expression.NegInf():i.Expression.Inf();else if(e.isNUM()){const n=e.getMultiplier();t=i.Expression.Number(n.numerator/n.denominator)}else t=i.Expression.toFunction(r.TRUNC,[e]);return t};const i=n(296),r=n(8300)},706(e,t,n){"use strict";t.stripPower=t.product=void 0,t.continuedFraction=function continuedFraction(e,t=10){const n=s.Expression.create(e),r=s.Expression.create(t);if(!r.isNUM()||!r.isInteger()||r.lt((0,o.zero)())||r.getMultiplier().numerator>BigInt(Number.MAX_SAFE_INTEGER))throw new p.UnexpectedInputError((0,p.message)("wrongInput",{expected:"a non-negative integer",received:r.text()}));const a=Number(r.getMultiplier().numerator),l=n.isConstant()?n.evaluate():n;if(!l.isNUM())return new i.Collection([(0,o.one)(),n,new m.Vector]);const u=l.getMultiplier(),c=s.Expression.Number(u.sign()),g=u.numerator<0n?-u.numerator:u.numerator;let d=u.denominator;const h=g/d;let x=g%d;const E=[];for(let e=0;e<a&&0n!==x;e++){const e=d/x;E.push(s.Expression.Number(e));const t=d%x;d=x,x=t}return new i.Collection([c,s.Expression.Number(h),new m.Vector(E)])},t.count=function count(e){if(m.Vector.isVector(e)||c.ValuesSet.isValuesSet(e)||r.Dictionary.isDictionary(e))return s.Expression.Number(e.count());return s.Expression.toFunction(u.COUNT,[e])},t.size=function size(e){if(m.Vector.isVector(e)||l.Matrix.isMatrix(e)||i.Collection.isCollection(e)||c.ValuesSet.isValuesSet(e)||r.Dictionary.isDictionary(e))return m.Vector.create(e.dimensions());return s.Expression.toFunction(u.SIZE,[e])},t.isprime=function isprime(e){const t=s.Expression.create(e);let n;n=t.isInteger()?s.Expression.Number(Number((0,g.isPrimeBig)(t.getMultiplier().numerator))):s.Expression.toFunction(u.ISPRIME,[t]);return n};const i=n(6284),r=n(6528),s=n(296),o=n(6099);var a=n(1897);Object.defineProperty(t,"product",{enumerable:!0,get:function(){return a.product}}),Object.defineProperty(t,"stripPower",{enumerable:!0,get:function(){return a.stripPower}});const l=n(4462),u=n(8300),c=n(5598),m=n(3982),p=n(4703),g=n(982)},9009(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.DecimalMatrix=void 0;const r=i(n(3110));t.DecimalMatrix=class DecimalMatrix{cols;data;rows;constructor(e){this.rows=e.length,this.cols=e.length>0?e[0].length:0,this.data=e.map(e=>e.map(e=>new r.default(e)))}static solve(e,t){const n=e.rows;if(n!==e.cols||n!==t.length)return null;const i=[];for(let s=0;s<n;s++){const o=[];for(let t=0;t<n;t++)o.push(new r.default(e.get(s,t)));o.push(new r.default(t[s])),i.push(o)}for(let e=0;e<n;e++){let t=i[e][e].abs(),s=e;for(let r=e+1;r<n;r++){const n=i[r][e].abs();n.greaterThan(t)&&(t=n,s=r)}if(t.lessThan(new r.default("1e-30")))return null;s!==e&&([i[e],i[s]]=[i[s],i[e]]);const o=i[e][e];for(let t=e+1;t<n;t++){const r=i[t][e].div(o);for(let s=e;s<=n;s++)i[t][s]=i[t][s].minus(r.times(i[e][s]))}}const s=new Array(n);for(let e=n-1;e>=0;e--){let t=i[e][n];for(let r=e+1;r<n;r++)t=t.minus(i[e][r].times(s[r]));if(i[e][e].abs().lessThan(new r.default("1e-30")))return null;s[e]=t.div(i[e][e])}return s}get(e,t){return this.data[e][t]}}},7176(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.FunctionSolver=void 0;const r=i(n(3110)),s=n(296),o=n(4703),a="Brent",l=a;t.FunctionSolver=class FunctionSolver{derivativeStep;func;lowerBound;maxIters;maxRoots;method;stepSize;tolerance;upperBound;variable;verbose;constructor(e,t,n={}){this.func="string"==typeof e?s.Expression.create(e):e,this.lowerBound=new r.default(n.lowerBound??-100),this.upperBound=new r.default(n.upperBound??100),this.derivativeStep=new r.default(n.derivativeStep??1e-15),this.maxIters=n.maxIterations??200,this.variable=t??this.getVariable(),this.stepSize=n.stepSize??.1,this.tolerance=new r.default(n.tolerance??1e-14),this.maxRoots=n.maxRoots??20,this.verbose=n.verbose??!1,this.method=n.method??l}calculateIntervals(){const e=this.lowerBound,t=this.upperBound,n=new r.default(this.stepSize),i=t.minus(e),s=e.plus(i.dividedBy(2).floor());let o=s,a=s;const l=[],u=s.minus(e),c=t.minus(s),m=u.greaterThan(c)?u:c;for(let i=new r.default(0);i.lessThan(m);i=i.plus(n)){const i=o.minus(n),r=a.plus(n);i.greaterThanOrEqualTo(e)&&l.push([o,i]),r.lessThanOrEqualTo(t)&&l.push([a,r]),o=i,a=r}return l}getVariable(){const e=this.func.variables();if(e.length>1)throw new o.UnsupportedOperationError((0,o.message)("univariateInputOnly"));return e[0]}Brent(e,t){let n=new r.default(e),i=new r.default(t);const s=this.tolerance;let a=this.evaluate(n),l=this.evaluate(i);const u=new r.default(1/0);if(a.abs().lessThan(s))return{root:n,iterations:0,converged:!1,error:u,errorMsg:(0,o.message)("endPointIsRoot")};if(l.abs().lessThan(s))return{root:i,iterations:0,converged:!0,error:u,errorMsg:(0,o.message)("endPointIsRoot")};const c=a.times(l);if(c.greaterThan(0))return{root:c,iterations:0,converged:!0,error:u,errorMsg:(0,o.message)("differentSignsAtEndPointsRequired")};a.abs().lessThan(l.abs())&&([n,i]=[i,n],[a,l]=[l,a]);let m=n,p=a,g=!0,d=new r.default(0);for(let e=0;e<this.maxIters;e++){let t;t=a.equals(p)||l.equals(p)?i.minus(l.times(i.minus(n)).dividedBy(l.minus(a))):n.times(l).times(p).dividedBy(a.minus(l).times(a.minus(p))).plus(i.times(a).times(p).dividedBy(l.minus(a).times(l.minus(p)))).plus(m.times(a).times(l).dividedBy(p.minus(a).times(p.minus(l))));const o=t.lessThan(new r.default(3).times(n).plus(i).dividedBy(4))||t.greaterThan(i),u=g&&t.minus(i).abs().greaterThanOrEqualTo(i.minus(m).abs().dividedBy(2)),c=!g&&t.minus(i).abs().greaterThanOrEqualTo(m.minus(d).abs().dividedBy(2)),h=g&&i.minus(m).abs().lessThan(s),x=!g&&m.minus(d).abs().lessThan(s);o||u||c||h||x?(t=n.plus(i).dividedBy(2),g=!0):g=!1;const E=this.evaluate(t);d=m,m=i,p=l,a.times(E).lessThan(0)?(i=t,l=E):(n=t,a=E),a.abs().lessThan(l.abs())&&([n,i]=[i,n],[a,l]=[l,a]);const y=l.abs().lessThan(s),v=i.minus(n).abs().lessThan(s);if(y||v)return{root:i,iterations:e,converged:!0,error:y?l.abs().minus(s):i.minus(n).abs()}}return{root:c,iterations:this.maxIters,converged:!1,error:u,errorMsg:(0,o.message)("convergenceFailed",{iter:String(this.maxIters)})}}df(e,t){const n=e.plus(t),i=e.minus(t),r=this.evaluate(n),s=this.evaluate(i);return r.minus(s).dividedBy(t.times(2))}evaluate(e){const t=this.func.evaluate({[this.variable]:e});if(!s.Expression.isExpression(t))throw new o.UnexpectedInputError((0,o.message)("unsupportedType"));if(!t.isNUM())throw new o.UnexpectedInputError((0,o.message)("wrongInput",{expected:"a real numeric value",received:t.text()}));return t.getMultiplier().toDecimal()}NewtonRaphson(e){const t=this.tolerance,n=new r.default(this.derivativeStep);let i=new r.default(e),s=0,a=new r.default(1/0);for(let e=0;e<this.maxIters;e++){const r=this.evaluate(i),l=this.df(i,n);if(l.isZero())return{root:i,iterations:e,converged:!1,error:r.abs(),errorMsg:(0,o.message)("zeroDerivative",{x:i.toString()})};const u=i.minus(r.dividedBy(l));if(a=u.minus(i).abs(),s=e+1,a.lessThanOrEqualTo(t))return{root:u,iterations:s,converged:!0,error:a};i=u}return{root:i,iterations:s,converged:!1,error:a}}roots(){const e=this.upperBound,t=this.tolerance,n=[];let i=!1;const o=new Map,evaluatePoint=e=>{const t=e.toString();let n=o.get(t);return void 0===n&&(n=this.evaluate(e),o.set(t,n)),n},addRoot=e=>{this.evaluate(e).abs().lessThan(t)&&n.push(e),n.length>=this.maxRoots&&(i=!0)},a=this.calculateIntervals();for(const e of a){if(i)return n.sort((e,t)=>e.comparedTo(t)).map(e=>s.Expression.create(e));try{const i=new r.default(e[0]),s=new r.default(e[1]),o=evaluatePoint(i),a=evaluatePoint(s);if(o.abs().lessThan(t)&&(0===n.length||i.minus(n[n.length-1]).abs().greaterThan(t.times(10)))&&addRoot(i),o.times(a).lessThan(0))try{let e;switch(this.method){case"NewtonRaphson":{const t=s.minus(i).div(2).plus(i);e=this.NewtonRaphson(t);break}default:e=this.Brent(i,s)}if(e.converged){const i=e.root;let r=!1;for(const e of n)if(i.minus(e).abs().lessThan(t.times(10))){r=!0;break}r||addRoot(i)}}catch{}}catch{}}try{const i=e;evaluatePoint(i).abs().lessThan(t)&&(0===n.length||i.minus(n[n.length-1]).abs().greaterThan(t.times(10)))&&addRoot(i)}catch{}return n.sort((e,t)=>e.comparedTo(t)).map(e=>s.Expression.create(e))}}},1683(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.MultivariateSolver=void 0;const r=i(n(3110)),s=n(296),o=n(9009);t.MultivariateSolver=class MultivariateSolver{dedupTol;equations;gridPoints;h;lowerBound;maxIterations;tolerance;upperBound;variables;constructor(e,t,n={}){this.equations=e,this.variables=t,this.lowerBound=n.lowerBound??-10,this.upperBound=n.upperBound??10,this.gridPoints=n.gridPoints??5,this.maxIterations=n.maxIterations??100,this.tolerance=new r.default(n.tolerance??1e-12),this.h=new r.default(n.derivativeStep??1e-8),this.dedupTol=new r.default(n.deduplicationTolerance??1e-8)}evaluateSystem(e){const t={};for(let n=0;n<this.variables.length;n++){const i=e[n];t[this.variables[n]]=i.isFinite()?s.Expression.Number(i):i}const n=[];for(const e of this.equations)try{const i=e.evaluate(t);if(!s.Expression.isExpression(i))return null;n.push(i.getMultiplier().toDecimal())}catch{return null}return n}generateStartingPoints(){const e=this.variables.length,t=[],n=(this.upperBound-this.lowerBound)/(this.gridPoints-1),i=new Array(e).fill(0);for(;;){const s=[];for(let t=0;t<e;t++)s.push(new r.default(this.lowerBound+i[t]*n));t.push(s);let o=!0;for(let t=e-1;t>=0&&o;t--)i[t]++,i[t]<this.gridPoints?o=!1:i[t]=0;if(o)break}return t}isDuplicate(e,t){for(const n of t){let t=new r.default(0);for(let i=0;i<e.length;i++){const r=e[i].minus(n[i]).abs();r.greaterThan(t)&&(t=r)}if(t.lessThan(this.dedupTol))return!0}return!1}jacobian(e){const t=this.variables.length,n=this.equations.length,i=new Array(n).fill(null).map(()=>[]),s=this.h.times(2);for(let o=0;o<t;o++){const t=e.map(e=>new r.default(e)),a=e.map(e=>new r.default(e));t[o]=t[o].plus(this.h),a[o]=a[o].minus(this.h);const l=this.evaluateSystem(t),u=this.evaluateSystem(a);if(!l||!u)return null;for(let e=0;e<n;e++)i[e].push(l[e].minus(u[e]).div(s))}return new o.DecimalMatrix(i)}newtonRaphson(e){const t=e.map(e=>new r.default(e));for(let e=0;e<this.maxIterations;e++){const e=this.evaluateSystem(t);if(!e)return null;let n=new r.default(0);for(const t of e)n=n.plus(t.times(t));if(n=n.sqrt(),n.lessThan(this.tolerance))return t;const i=this.jacobian(t);if(!i)return null;const s=e.map(e=>e.neg()),a=o.DecimalMatrix.solve(i,s);if(!a)return null;for(let e=0;e<t.length;e++)t[e]=t[e].plus(a[e])}const n=this.evaluateSystem(t);if(n){let e=new r.default(0);for(const t of n)e=e.plus(t.times(t));if(e.sqrt().lessThan(this.tolerance))return t}return null}roots(){const e=[],t=this.generateStartingPoints();for(const n of t){const t=this.newtonRaphson(n);t&&!this.isDuplicate(t,e)&&e.push(t)}return e.map(e=>{const t=new Map;for(let n=0;n<this.variables.length;n++){const i=e[n];t.set(this.variables[n],i.isFinite()?s.Expression.Number(i):s.Expression.create(i))}return t})}}},2646(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.PolynomialSolver=void 0;const r=i(n(3110)),s=n(3170),o=n(296),a=n(2116),l=n(4703),u=n(551);t.PolynomialSolver=class PolynomialSolver{degree;eps;p;precision;constructor(e,t,n=50,i){let c;if(Array.isArray(e))c=e.map(e=>new s.Complex(e,0));else{const n=a.Polynomial.isPolynomial(e),i=n?e.getExpression():"string"==typeof e?o.Expression.create(e):e,m=n?e.variables:i.variables();if(!i.isPolynomialLike())throw new l.PolynomialError((0,l.message)("notAPolynomial"));if(m.length>1||1===m.length&&t&&m[0]!==t)throw new l.UnexpectedInputError((0,l.message)("tooManyUnknowns"));const p=t??m[0],g=(void 0===p?[i]:i.coeffs(p).toArray()).map(e=>{const t=e.realPart(),n=e.imagPart();if(!t.isNUM()||!n.isNUM())throw new l.UnexpectedInputError((0,l.message)("wrongInput",{expected:"numeric polynomial coefficients",received:e.text()}));return{real:t.getMultiplier(),imaginary:n.getMultiplier()}});if(g.every(e=>!e.real.asDecimal&&!e.imaginary.asDecimal)){const e=(0,u.LCM)(...g.flatMap(e=>[e.real.denominator,e.imaginary.denominator]));c=g.map(t=>{const n=t.real.numerator*(e/t.real.denominator),i=t.imaginary.numerator*(e/t.imaginary.denominator);return new s.Complex(new r.default(String(n)),new r.default(String(i)))})}else c=g.map(e=>new s.Complex(e.real.toDecimal(),e.imaginary.toDecimal()))}this.p=c.slice().reverse(),this.degree=this.p.length-1,this.eps=i||new r.default(1e-14),this.precision=n}aberthMethod(e){const t=e.length-1,n=[],i=this.rootMagnitudeBound(e);for(let e=0;e<t;e++){const o=new r.default(2).mul(Math.PI).mul(e).div(t).plus(.4),a=i.mul(.9).mul(new r.default(1).plus(new r.default(e).mul(.01).div(t)));n.push(new s.Complex(a.mul(r.default.cos(o)),a.mul(r.default.sin(o))))}const o=this.eps.mul(this.eps),a=this.eps.mul(.01),l=a.mul(a);for(let i=0;i<100;i++){let i=new r.default(0);const a=[];for(let r=0;r<t;r++){const l=n[r],[u,c]=this.evaluateWithDerivative(e,l);if(c.absSquared().lessThan(o)){a.push(l);continue}const m=u.div(c);let p=new s.Complex(0,0);for(let e=0;e<t;e++)if(r!==e){const t=l.sub(n[e]);t.absSquared().greaterThan(o)&&(p=p.add(t.reciprocal()))}const g=new s.Complex(1,0).sub(m.mul(p)),d=g.absSquared().lessThan(o)?m:m.div(g),h=l.sub(d);a.push(h);const x=d.absSquared();x.greaterThan(i)&&(i=x)}for(let e=0;e<t;e++)n[e]=a[e];if(i.lessThan(l))break}for(let i=0;i<t;i++)n[i]=this.newtonRefine(e,n[i]);return n}complexSqrt(e){const t=e.abs();if(t.isZero())return new s.Complex(0,0);const n=e.re,i=e.im;if(i.abs().lessThan(this.eps))return n.greaterThanOrEqualTo(0)?new s.Complex(n.sqrt(),0):new s.Complex(0,n.neg().sqrt());const r=t.plus(n.abs()).div(2).sqrt();if(n.greaterThanOrEqualTo(0))return new s.Complex(r,i.div(r.mul(2)));{const e=i.abs(),t=i.greaterThanOrEqualTo(0)?r:r.neg();return new s.Complex(e.div(r.mul(2)),t)}}evaluateWithDerivative(e,t){const n=e.length-1;let i=e[0],r=e[0];for(let s=1;s<n;s++)i=i.mul(t).add(e[s]),r=r.mul(t).add(i);return i=i.mul(t).add(e[n]),[i,r]}finalize(e,t,n,i=!0){return r.default.set({precision:n}),t?e.map(e=>{let t=e.re,n=e.im;if(i){const i=e.abs().mul(this.eps);t=e.re.abs().lt(i)?new r.default(0):e.re,n=e.im.abs().lt(i)?new r.default(0):e.im}return o.Expression.create(t).plus(o.Expression.Img().times(n))}):e}isNumericalRoot(e){let t=this.p[0],n=this.p[0].abs();const i=e.abs();for(let r=1;r<this.p.length;r++)t=t.mul(e).add(this.p[r]),n=n.mul(i).plus(this.p[r].abs());const r=this.eps.mul(n.plus(1));return t.absSquared().lte(r.mul(r))}nativeAberthSeeds(e){const t=e.length-1,n=[];for(const t of e){const e=t.re.toNumber(),i=t.im.toNumber();if(!Number.isFinite(e)||!Number.isFinite(i))return null;n.push({re:e,im:i})}const i=Math.hypot(n[0].re,n[0].im);if(!Number.isFinite(i)||0===i)return null;const o=this.rootMagnitudeBound(e).toNumber();if(!Number.isFinite(o))return null;const a=[];for(let e=0;e<t;e++){const n=2*Math.PI*e/t+.4,i=.9*o*(1+.01*e/t);a.push({re:i*Math.cos(n),im:i*Math.sin(n)})}const l=Math.max(this.eps.toNumber(),16*Number.EPSILON),u=l*l;for(let e=0;e<100;e++){let e=0;const i=[];for(let r=0;r<t;r++){const s=a[r];let o=n[0].re,l=n[0].im,c=n[0].re,m=n[0].im;for(let e=1;e<t;e++){const t=o*s.re-l*s.im+n[e].re,i=o*s.im+l*s.re+n[e].im,r=c*s.re-m*s.im+t,a=c*s.im+m*s.re+i;o=t,l=i,c=r,m=a}const p=o*s.re-l*s.im+n[t].re,g=o*s.im+l*s.re+n[t].im,d=c*c+m*m;if(!Number.isFinite(p)||!Number.isFinite(g)||!Number.isFinite(d))return null;if(d<u){i.push(s);continue}const h=(p*c+g*m)/d,x=(g*c-p*m)/d;let E=0,y=0;for(let e=0;e<t;e++){if(r===e)continue;const t=s.re-a[e].re,n=s.im-a[e].im,i=t*t+n*n;i>u&&(E+=t/i,y-=n/i)}const v=1-(h*E-x*y),w=-(h*y+x*E),b=v*v+w*w;let P=h,A=x;b>=u&&(P=(h*v+x*w)/b,A=(x*v-h*w)/b);const N={re:s.re-P,im:s.im-A},M=P*P+A*A;if(!Number.isFinite(N.re)||!Number.isFinite(N.im)||!Number.isFinite(M))return null;i.push(N),e=Math.max(e,M)}for(let e=0;e<t;e++)a[e]=i[e];if(e<u)break}return a.map(e=>new s.Complex(new r.default(e.re),new r.default(e.im)))}newtonRefine(e,t){const n=this.eps.mul(this.eps),i=this.eps.mul(1e-6),r=i.mul(i);for(let s=0;s<20;s++){const[s,o]=this.evaluateWithDerivative(e,t);if(s.absSquared().lessThan(r))break;if(o.absSquared().lessThan(n))break;const a=s.div(o),l=t.sub(a);if(a.abs().lessThan(i.mul(l.abs().plus(1)))){t=l;break}t=l}return t}rootMagnitudeBound(e){let t=new r.default(0);const n=e[0].abs();for(let i=1;i<e.length;i++){const s=e[i].abs().div(n);if(!s.isZero()){const e=s.pow(new r.default(1).div(i));e.greaterThan(t)&&(t=e)}}return t.mul(2)}solveQuadratic(e){const t=e[0],n=e[1],i=e[2],r=n.mul(n),s=t.mul(i).scale(4),o=r.sub(s),a=this.complexSqrt(o),l=t.scale(2),u=n.neg();return[u.add(a).div(l),u.sub(a).div(l)]}roots(e=!0){const t=r.default.precision;r.default.set({precision:this.precision});let n=[...this.p],i=this.degree;for(;i>0&&n[0].re.isZero()&&n[0].im.isZero();)n.shift(),i--;if(0===i)return this.finalize([],e,t);const s=n[0];if(n=n.map(e=>e.div(s)),1===i)return this.finalize([n[1].neg()],e,t);if(2===i)return this.finalize(this.solveQuadratic(n),e,t,!1);const o=this.nativeAberthSeeds(n);if(o){const r=o.map(e=>this.newtonRefine(n,e));if(r.length===i&&r.every(e=>this.isNumericalRoot(e)))return this.finalize(r,e,t)}const a=this.aberthMethod(n);return this.finalize(a,e,t)}validatedRoots(e=!0){const t=r.default.precision;r.default.set({precision:this.precision});const n=this.roots(!1).filter(e=>this.isNumericalRoot(e));return this.finalize(n,e,t)}}},1526(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.SolutionSet=void 0;const r=i(n(3110)),s=n(296),o=n(8300),a=n(5598),l=n(6441),u=n(4703);class SolutionSet extends a.ValuesSet{excluded=new a.ValuesSet;roots=[];dataType=o.SOLUTIONS_SET;partial=!1;solutionsType=void 0;unsolved;constructor(e){if(super(),e)for(const t of e)this.add(t)}static isSolutionSet(e){return(0,l.isNerdamerNativeType)(e,o.SOLUTIONS_SET)}mergeSolutionsType(e){void 0===this.solutionsType?this.solutionsType=e:void 0!==e&&this.solutionsType!==e&&(this.solutionsType="mixed")}verifyAndAddSolution(e,t,n){let i=!1;try{const r=t.evaluate({[n]:e.evaluate()}).expand(),s=0===r.variables().length;if(s&&r.isNearlyZero()||!s){const t=this.excluded.has(e);this.add(e),i=!t}}catch(t){t instanceof u.DivisionByZeroError&&(this.excluded.add(e),this.delete(e))}return i}__set__(e,t){if(!s.Expression.isExpression(t))throw new u.UnexpectedDataType((0,u.message)("expressionExpected",{type:t.dataType}));if(this.excluded.has(t)){const t=e[0];if(t<0||t>=this.count())throw new RangeError((0,u.message)("indexOutOfBounds",{index:String(t),type:String(this.dataType),length:String(this.count())}));const n=this.at(t);n&&this.delete(n)}else super.__set__(e,t)}add(e){if(!s.Expression.isExpression(e)){const t=e;throw new u.UnexpectedDataType((0,u.message)("expressionExpected",{type:t.dataType}))}return this.excluded.has(e)||super.add(e),this}addMany(e){const t=[...e];for(const e of t)if(!s.Expression.isExpression(e)){const t=e;throw new u.UnexpectedDataType((0,u.message)("expressionExpected",{type:t.dataType}))}for(const e of t)this.add(e);return this}addRawRoot(e){return this.roots.push({root:new r.default(e.root),iterations:e.iterations,converged:e.converged,error:new r.default(e.error),errorMsg:e.errorMsg}),this}addSolution(e,t,n){return this.verifyAndAddSolution(e,t,n),this}addSolutions(e,t,n){let i,r;SolutionSet.isSolutionSet(e)?(i=e,r=e.elements):r=e;let s=!1;for(const e of r)this.verifyAndAddSolution(e,t,n)&&(s=!0);return i&&s&&this.mergeSolutionsType(i.solutionsType),this}addValidatedNumericalSolutions(e){const t=[...e],n=this.elements,i=new Set;for(const e of t){if(!s.Expression.isExpression(e)){const t=e;throw new u.UnexpectedDataType((0,u.message)("expressionExpected",{type:t.dataType}))}const t=e.isComplex()?e.realPart():e,r=e.isComplex()?e.imagPart():s.Expression.Number(0);if(!t.isNUM()||!r.isNUM())throw new u.UnexpectedDataType((0,u.message)("expressionExpected",{type:e.dataType}));const o=t.getMultiplier(),a=r.getMultiplier(),l=`${o.numerator}/${o.denominator}|${a.numerator}/${a.denominator}`;if(i.has(l)||this.excluded.has(e))continue;let c=!1;for(const t of n)if(t.eq(e)&&e.eq(t)){c=!0;break}c||(this.addKnownUnique(e),i.add(l))}return this}append(e){const t=0===this.count()&&0===this.excluded.count();if(this.exclude(e.getExcluded()),t)for(const t of e.elements)this.addKnownUnique(t);else this.addMany(e.elements);for(const t of e.getRawRoots())this.addRawRoot(t);return this.partial=this.partial||e.partial,this.mergeSolutionsType(e.solutionsType),!this.unsolved&&e.unsolved&&(this.unsolved=e.unsolved.copy()),this}appendValidatedNumerical(e){this.exclude(e.getExcluded()),this.addValidatedNumericalSolutions(e.elements);for(const t of e.getRawRoots())this.addRawRoot(t);return this.partial=this.partial||e.partial,this.mergeSolutionsType(e.solutionsType),!this.unsolved&&e.unsolved&&(this.unsolved=e.unsolved.copy()),this}at(e){return super.at(e)}clear(){return super.clear(),this.excluded.clear(),this.roots.length=0,this.partial=!1,this.solutionsType=void 0,this.unsolved=void 0,this}copy(){const e=new SolutionSet(this.elements);return e.excluded=this.excluded.copy(),e.roots=this.getRawRoots(),e.solutionsType=this.solutionsType,e.partial=this.partial,this.unsolved&&(e.unsolved=this.unsolved.copy()),e}each(e){super.each((t,n,i)=>{if(!s.Expression.isExpression(t))throw new u.UnexpectedDataType((0,u.message)("expressionExpected",{type:t.dataType}));const r=e(t,n,i);if(void 0===r)return t;if(!s.Expression.isExpression(r))throw new u.UnexpectedDataType((0,u.message)("expressionExpected",{type:r.dataType}));return r});for(const e of this.excluded.elements)this.delete(e);return this}get elements(){return super.elements}evaluate(e){return this.copy().each(t=>t.evaluate(e))}exclude(e){const t=e.elements;for(const e of t)if(!s.Expression.isExpression(e))throw new u.UnexpectedDataType((0,u.message)("expressionExpected",{type:e.dataType}));for(const e of t)this.excluded.add(e),this.delete(e);return this}expand(){return this.copy().each(e=>e.expand())}forEach(e){const t=this.elements;for(let n=0;n<t.length;n++)e(t[n],n)}getExcluded(){return this.excluded.copy()}getRawRoots(){return this.roots.map(e=>({root:new r.default(e.root),iterations:e.iterations,converged:e.converged,error:new r.default(e.error),errorMsg:e.errorMsg}))}get solutionForm(){let e="finite";for(const t of this.elements){if(t.eq(o.ALL_SYMBOL)){e="all";break}t.hasVariable(o.INDEX_VARIABLE)&&(e="parametric")}return e}[Symbol.iterator](){return this.elements[Symbol.iterator]()}text(){return super.text()}toArray(){return this.elements}}t.SolutionSet=SolutionSet},8520(e,t,n){"use strict";t.SymbolicSolver=void 0;const i=n(296),r=n(6099),s=n(8300),o=n(2116),a=n(4703),l=n(8533),u=n(1649),c=n(706),m=n(2295);class SymbolicSolver{static MAX_FN_SOLVE_STEPS=64;input;x;constructor(e,t){if(t=i.Expression.create(t),this.x=t.value,!t.isPlainVariable())throw new a.UnexpectedInputError((0,a.message)("plainVariableExpected",{input:t.text()}));"string"==typeof e?this.input=i.Expression.create(e):o.Polynomial.isPolynomial(e)?this.input=e.getExpression():this.input=e}static cubic(e){const t=e[0],n=e[1],i=e[2],s=e[3],o=i.div(s),a=n.div(s),u=t.div(s),c=a.minus(o.pow((0,r.two)()).div((0,r.three)())),m=u.minus(o.times(a).div((0,r.three)())).plus((0,r.two)().times(o.pow((0,r.three)())).div((0,r.twentySeven)())),p=m.pow((0,r.two)()).div((0,r.four)()).plus(c.pow((0,r.three)()).div((0,r.twentySeven)())),g=(0,r.zero)().minus(o).div((0,r.three)()),d=(0,l.sqrt)(p),h=(0,r.zero)().minus(m).div((0,r.two)()),x=(0,l.cbrt)(h.plus(d)),E=(0,l.cbrt)(h.minus(d)),y=x.plus(E),v=(0,l.sqrt)((0,r.three)()),w=(0,r.zero)().minus((0,r.half)()),b=(0,l.sqrt)((0,r.zero)().minus((0,r.one)())),P=x.plus(E),A=x.minus(E),N=w.times(P).plus(v.div((0,r.two)()).times(A).times(b)),M=w.times(P).minus(v.div((0,r.two)()).times(A).times(b));return[y.plus(g),N.plus(g),M.plus(g)]}static quadratic(e){const t=e[0],n=e[1],i=e[2],s=n.pow((0,r.two)()).minus((0,r.four)().times(i).times(t)),o=(0,l.sqrt)(s),a=(0,r.two)().times(i),u=(0,r.zero)().minus(n);return[u.plus(o).div(a),u.minus(o).div(a)]}static quartic(e){const t=e[0],n=e[1],s=e[2],o=e[3],a=e[4],u=o.div(a),c=s.div(a),m=n.div(a),p=t.div(a),g=c.minus((0,r.three)().times(u.pow((0,r.two)())).div((0,r.eight)())),d=m.minus(u.times(c).div((0,r.two)())).plus(u.pow((0,r.three)()).div((0,r.eight)())),h=p.minus(u.times(m).div((0,r.four)())).plus(u.pow((0,r.two)()).times(c).div((0,r.sixteen)())).minus((0,r.three)().times(u.pow((0,r.four)())).div((0,r.twoHundredFiftySix)())),x=(0,r.zero)().minus(u).div((0,r.four)());if(d.isZero()){const e=SymbolicSolver.quadratic([h,g,(0,r.one)()]),t=i.Expression.Img(),n=(0,l.sqrt)((0,r.two)()),sqrtSpecial=e=>{if(e.value!==i.Expression.imaginary)return;const s=e.getMultiplier();return s.isOne()?(0,r.one)().plus(t).div(n):s.isMinusOne()?(0,r.one)().minus(t).div(n):s.eq("4")?n.times((0,r.one)().plus(t)):s.eq("-4")?n.times((0,r.one)().minus(t)):void 0},s=sqrtSpecial(e[0])??(0,l.sqrt)(e[0]),o=sqrtSpecial(e[1])??(0,l.sqrt)(e[1]);return[s.plus(x),(0,r.zero)().minus(s).plus(x),o.plus(x),(0,r.zero)().minus(o).plus(x)]}const E=[(0,r.zero)().minus(d.pow((0,r.two)())),g.pow((0,r.two)()).minus((0,r.four)().times(h)),(0,r.two)().times(g),(0,r.one)()],y=SymbolicSolver.cubic(E);let v;for(const e of y)if(!e.isZero()){v=e;break}v=v??y[0];let w=(0,l.sqrt)(v);if(w.isZero())for(const e of y)if(!e.isZero()){const t=(0,l.sqrt)(e);if(!t.isZero()){v=e,w=t;break}}const b=g.plus(v),P=b.div((0,r.two)()).minus(d.div((0,r.two)().times(w))),A=b.div((0,r.two)()).plus(d.div((0,r.two)().times(w))),N=SymbolicSolver.quadratic([P,w,(0,r.one)()]),M=SymbolicSolver.quadratic([A,(0,r.zero)().minus(w),(0,r.one)()]);return[N[0].plus(x),N[1].plus(x),M[0].plus(x),M[1].plus(x)]}fnSolve(){const e=this.input,t=this.x,solveForX=(e,n)=>{const i=e.variables();if(1===i.length&&i[0]===t&&e.text()===t&&!n.hasVariable(t))return[n];const r=e.minus(n),s=new SymbolicSolver(r,t).solve();return s.unsolved?(0,m.solve)(r,t).elements:s.solutions},n=i.Expression.N(),o=i.Expression.Pi(),a=n.times(o),p=(0,r.two)().times(n).plus((0,r.one)()).times(o).div((0,r.two)());if(e.isSum()){const n=e.elementsArray(),o=n.filter(e=>e.isFunction(s.LOG)&&e.isLinear()&&e.getMultiplier().isInteger()&&e.getArguments().length>0);if(o.length===n.length&&o.some(e=>e.hasVariable(t))){let e=(0,r.one)();for(const t of o){const n=i.Expression.fromRational(t.getMultiplier());e=e.times(t.getArguments()[0].pow(n))}return(0,m.solve)(e.minus((0,r.one)()),t).elements}const a=n.filter(e=>e.hasVariable(t)&&e.getPower().eq((0,r.half)()));if(1===a.length){const e=a[0];let i=(0,r.zero)();for(const t of n)t!==e&&(i=i.plus(t));const s=(0,c.stripPower)(e.toUnitMultiplier()),o=i.neg().div(e.getMultiplier());return(0,m.solve)(s.minus(o.sq()),t).elements}const p=(0,r.half)().neg(),g=[];for(const e of n)if(e.hasVariable(t)){const n=(e.isProduct()?e.elementsArray():[e]).filter(e=>e.hasVariable(t));1===n.length&&n[0].getPower().eq(p)&&g.push({term:e,factor:n[0]})}if(1===g.length){const{term:e,factor:i}=g[0];let s=(0,r.zero)();for(const t of n)t!==e&&(s=s.plus(t));const o=i.toUnitMultiplier(),a=e.div(o);if(!a.hasVariable(t)&&!s.hasVariable(t)){return solveForX(i.getBase(),s.neg().div(a).pow((0,r.two)().neg()))}}if(2===n.length){let e,i,r,s,o=!0;for(const a of n){const n=(a.isProduct()?a.elementsArray():[a]).filter(e=>(e.isFunction(u.SIN)||e.isFunction(u.COS))&&e.getPower().isOne());if(1!==n.length){o=!1;break}const l=n[0].toUnitMultiplier(),c=a.div(l);if(c.hasVariable(t)){o=!1;break}n[0].isFunction(u.SIN)?(e=l.getArguments()[0],i=c):(r=l.getArguments()[0],s=c)}if(o&&e&&i&&r&&s&&e.eq(r)&&!i.isZero())return solveForX(e,(0,u.atan)(s.neg().div(i)))}const d=n.filter(e=>e.isFunction()&&e.hasVariable(t));if(1===d.length){const e=d[0];let i=(0,r.zero)();for(const t of n)t!==e&&(i=i.plus(t));if(!i.hasVariable(t)||e.name===s.ABS){const t=e.name,n=e.getArguments()[0],r=e.getMultiplier(),s=e.getPower();let o=i.neg().div(r);s.isOne()||(o=o.pow(s.invert()));const a=this.invertFunction(t,o);if(void 0!==a){const e=[];for(const t of a)e.push(...solveForX(n,t));return e.length>0?e:void 0}}}if(2===n.length){const e=n.findIndex(e=>{let n=!1;if(e.isEXP()){const i=e.getBase();n=e.hasVariable(t)&&!i.hasVariable(t)&&(!i.isNUM()||i.gt((0,r.zero)())&&!i.isOne())}return n});if(-1!==e){const i=n[e],r=n[1-e];if(!r.hasVariable(t)){const e=i.getBase(),t=i.getPower(),n=i.getMultiplier(),s=r.neg().div(n);return solveForX(t,(0,l.log)(s).div((0,l.log)(e)))}}}}if(e.isFunction(u.SIN)){return solveForX(e.getArguments()[0],a)}if(e.isFunction(u.COS)){return solveForX(e.getArguments()[0],p)}if(e.isFunction(u.TAN)){return solveForX(e.getArguments()[0],a)}if(e.isFunction(u.COT)){return solveForX(e.getArguments()[0],p)}if(e.isFunction(s.LOG)){return solveForX(e.getArguments()[0],(0,r.one)())}if(e.isFunction(u.SINH)){return solveForX(e.getArguments()[0],(0,r.zero)())}if(e.isFunction(u.TANH)){return solveForX(e.getArguments()[0],(0,r.zero)())}if(e.isFunction(u.ASIN)){return solveForX(e.getArguments()[0],(0,r.zero)())}if(e.isFunction(u.ACOS)){return solveForX(e.getArguments()[0],(0,r.one)())}if(e.isFunction(u.ATAN)){return solveForX(e.getArguments()[0],(0,r.zero)())}if(e.isFunction(u.ASEC)){return solveForX(e.getArguments()[0],(0,r.one)())}if(e.isFunction(u.ASINH)){return solveForX(e.getArguments()[0],(0,r.zero)())}if(e.isFunction(u.ACOSH)){return solveForX(e.getArguments()[0],(0,r.one)())}if(e.isFunction(u.ATANH)){return solveForX(e.getArguments()[0],(0,r.zero)())}if(e.isFunction(s.ABS)){return solveForX(e.getArguments()[0],(0,r.zero)())}}invertFunction(e,t){switch(e){case u.SIN:return[(0,u.asin)(t)];case u.COS:return[(0,u.acos)(t)];case u.TAN:return[(0,u.atan)(t)];case u.COT:return[(0,u.atan)((0,r.one)().div(t))];case s.LOG:return[(0,l.exp)(t)];case u.SINH:return[(0,u.asinh)(t)];case u.COSH:return[(0,u.acosh)(t)];case u.TANH:return[(0,u.atanh)(t)];case u.ASIN:return[(0,u.sin)(t)];case u.ACOS:return[(0,u.cos)(t)];case u.ATAN:return[(0,u.tan)(t)];case u.ASEC:return[(0,r.one)().div((0,u.cos)(t))];case u.ASINH:return[(0,u.sinh)(t)];case u.ACOSH:return[(0,u.cosh)(t)];case u.ATANH:return[(0,u.tanh)(t)];case s.ABS:return[t,(0,r.zero)().minus(t)];default:return}}inputContainsFunction(){let e=!1;return this.input.forEveryElement(t=>(t.isFunction()&&(e=!0),t)),e}solve(){let e,t;if(this.input.hasVariable(this.x)){let n;const i=(0,r.half)().neg();if(!(this.input.isSum()&&this.input.elementsArray().some(e=>{let t=e.hasVariable(this.x)&&e.getPower().eq((0,r.half)());if(!t&&e.isProduct()&&e.hasVariable(this.x)){const n=e.elementsArray().filter(e=>e.hasVariable(this.x));t=1===n.length&&n[0].getPower().eq(i)}return t})))try{n=this.input.coeffs(this.x).toArray()}catch{}if(n){const t=n.length-1;let i=!0;for(const e of n)if(e.hasVariable(this.x)){i=!1;break}if(i&&t>=1&&t<=4)switch(t){case 1:e=[n[0].neg().div(n[1])];break;case 2:e=SymbolicSolver.quadratic(n);break;case 3:e=SymbolicSolver.cubic(n);break;case 4:e=SymbolicSolver.quartic(n)}}e||(e=this.fnSolve()),e||(t=this.input)}else t=this.input;return e??=[],{solutions:e,unsolved:t}}}t.SymbolicSolver=SymbolicSolver},7328(e,t,n){"use strict";t.loadSolveFunctions=function loadSolveFunctions(){Object.assign(i.mathFunctionRegistry,{solve:(0,i.systemFunction)({fn:r.solve,minArgs:2,maxArgs:2,equationArgs:[0],distElWise:!1}),roots:(0,i.systemFunction)({fn:r.roots,minArgs:1,maxArgs:2,distElWise:!1}),solveeqs:(0,i.systemFunction)({fn:s.solveSystem,minArgs:1,maxArgs:1,distElWise:!1})})};const i=n(9426),r=n(2295),s=n(6950)},1280(e,t,n){"use strict";t.NonlinearSystemError=void 0,t.solveLinearSystem=function solveLinearSystem(e,t){const n=function normalizeEquations(e){if(a.Vector.isVector(e)){const t=[];for(let n=0;n<e.count();n++)t.push(e.getExpressionAt(n));return t}return e.map(e=>r.Expression.isExpression(e)?e:r.Expression.create(e))}(e);if(0===n.length)return{type:"unique",solutions:{}};const u=t??(0,i.collectVariablesSet)(n);if(0===u.length){for(const e of n)if(!e.eq((0,s.zero)()))return{type:"inconsistent"};return{type:"unique",solutions:{}}}const{coeffMatrix:c,constants:m}=function extractCoefficients(e,t){const n=t.length,i=[],r=[];for(let o=0;o<e.length;o++){const a=e[o].coeffs(...t),u=new Array(n).fill(null).map(()=>(0,s.zero)());let c=(0,s.zero)();a.each((e,t)=>{const n=t.split(",").map(Number),i=n.reduce((e,t)=>e+t,0);if(0===i)c=e;else{if(1!==i)throw new NonlinearSystemError((0,l.message)("solveLinearNonlinearDegree",{equation:String(o+1),degree:String(i)}));{const t=n.findIndex(e=>1===e);-1!==t&&(u[t]=e)}}});const m=[...u,c];for(const e of m)for(const n of t)if(e.hasVariable(n))throw new NonlinearSystemError((0,l.message)("solveLinearNonPolynomialVariable",{equation:String(o+1),variable:n}));i.push(u),r.push(c)}return{coeffMatrix:i,constants:r}}(n,u),p=n.length,g=u.length,d=[];for(let e=0;e<p;e++){const t=[];for(let n=0;n<g;n++)t.push(c[e][n]);t.push((0,s.zero)().minus(m[e])),d.push(t)}const h=new o.Matrix(...d).rref(),x=h.rows(),E=(0,s.zero)(),y=[];for(let e=0;e<x;e++){let t=-1;for(let n=0;n<g;n++)if(!h.get(e,n).eq(E)){t=n;break}if(-1===t){if(!h.get(e,g).eq(E))return{type:"inconsistent"};y.push(-1)}else y.push(t)}const v=new Set;for(const e of y)-1!==e&&v.add(e);const w=[];for(let e=0;e<g;e++)v.has(e)||w.push(e);if(0===w.length){const e={};for(let t=0;t<x;t++){const n=y[t];-1!==n&&(e[u[n]]=h.get(t,g))}return{type:"unique",solutions:e}}const b=w.map(e=>u[e]),P={};for(const e of b)P[e]=r.Expression.create(e);for(let e=0;e<x;e++){const t=y[e];if(-1===t)continue;let n=h.get(e,g);for(const t of w){const i=h.get(e,t);i.eq(E)||(n=n.minus(i.times(r.Expression.create(u[t]))))}P[u[t]]=n}return{type:"infinite",solutions:P,freeVariables:b}};const i=n(6338),r=n(296),s=n(6099),o=n(4462),a=n(3982),l=n(4703);class NonlinearSystemError extends Error{}t.NonlinearSystemError=NonlinearSystemError},2295(e,t,n){"use strict";t.roots=function roots(e,t){const n=o.Expression.create(e),i=n.variables();if(0===i.length&&n.isConstant()){const e=n.evaluate();if(e.isNUM()){const t=e.abs().pow((0,a.half)()),n=e.sign()<0?t.times(o.Expression.Img()):t;return new c.Vector([n,n.neg()])}}const r=void 0===t?i[0]:(0,l.assertPlainVariableAndGetString)(o.Expression.create(t));if(void 0===r)return new c.Vector([n]);return new c.Vector(new g.PolynomialSolver(n,r).validatedRoots())},t.solve=function solve(e,t,n){const l=new d.SolutionSet;let c=!1;try{const{expression:n,x:p}=(0,x.prepareSolverInputs)(e,t);c=n.hasDecimal();const g=n.variables();if(n.isZero())l.addSolution((0,a.all)(),n,p),l.solutionsType="symbolic";else if(n.isVAR()||!g.includes(p)&&!n.isNUM())l.addSolution((0,a.zero)(),n,p),l.solutionsType="symbolic";else{const e=n.isSum()&&n.elementsArray().some(e=>{let t=e.hasVariable(p)&&e.getPower().eq((0,a.half)());if(!t&&e.isProduct()&&e.hasVariable(p)){const n=e.elementsArray().filter(e=>e.hasVariable(p));t=1===n.length&&n[0].getPower().eq((0,a.half)().neg())}return t}),t=n.isPolynomialLike()?n.coeffs(p).toArray():void 0,c=void 0!==t&&1===g.length&&g[0]===p&&t.every(e=>e.isNUM());let x;if(t){const e=t.length-1,n=t.some(e=>e.variables().length>0);if(e>4&&n&&!t[0].isZero()&&t.slice(1,e).every(e=>e.isZero())){const n=o.Expression.create(e),i=(0,a.one)().div(n),r=t[0].neg().div(t[e]),s=o.Expression.toEXP(r,i),l=(0,a.two)().times(o.Expression.Variable(u.PI_NAME));x=[];for(let t=0;t<e;t++){let e=(0,a.one)();if(t>0){const i=l.copy().times(o.Expression.create(t)).div(n);e=(0,m.cos)(i).plus((0,m.sin)(i).times(o.Expression.Img()))}x.push(s.copy().times(e))}}}const E=3===t?.length&&t[0].isZero()?(0,r.factorCommonPower)(n):void 0,y=E?.isProduct()?E.elementsArray():void 0,v=e?new h.SymbolicSolver(n,p).solve():void 0;let w,b;if(!n.isPolynomialLike())try{const e=(0,s.toCommonDenominator)(n),t=e.getNumerator().expand(),i=e.getDenominator().expand();!i.isOne()&&t.isPolynomialLike()&&i.isPolynomialLike()&&(w=t,b=i)}catch{}if(x){const e=new d.SolutionSet(x);e.solutionsType="symbolic",l.addSolutions(e,n,p)}else if(y){l.addSolution((0,a.zero)(),n,p),l.solutionsType="symbolic";const e=calculateSolutions(y,p);c&&"numeric"===e.solutionsType?l.appendValidatedNumerical(e):c?l.append(e):l.addSolutions(e,n,p)}else if(v&&!v.unsolved){const e=new d.SolutionSet(v.solutions);e.solutionsType="symbolic",l.addSolutions(e,n,p)}else if(w&&b){const e=calculateSolutions([b],p);l.exclude(e),l.addSolutions(calculateSolutions([w],p),n,p)}else{const e=(0,i.factorExpressionParts)(n),t=c,r=calculateSolutions(e.denominator,p,t);l.exclude(r);const s=calculateSolutions(e.numerator,p,t);c&&"numeric"===s.solutionsType?l.appendValidatedNumerical(s):c?l.append(s):l.addSolutions(s,n,p)}}}catch(e){}c&&l.each(e=>(e.getMultiplier().asDecimal=!0,e));return l};const i=n(2724),r=n(6117),s=n(8989),o=n(296),a=n(6099),l=n(1897),u=n(8300),c=n(3982),m=n(1649),p=n(7176),g=n(2646),d=n(1526),h=n(8520),x=n(205);class FactorRootAccumulator extends d.SolutionSet{appendFactorSolutions(e){for(const t of e.elements)this.addKnownUnique(t);void 0===this.solutionsType?this.solutionsType=e.solutionsType:void 0!==e.solutionsType&&this.solutionsType!==e.solutionsType&&(this.solutionsType="mixed")}}function calculateSolutions(e,t,n=!1){const i=n?new FactorRootAccumulator:new d.SolutionSet,r=e.map(e=>{let r=e;if(e.isEXP()&&e.getBase().isE())r=(0,a.zero)();else if(e.hasVariable(t)){let s=new h.SymbolicSolver(e,t).solve();if(s.unsolved&&e.isPolynomialLike()&&e.getPower().gt(4)){const n=e.toLinearAndUnitMultiplier();s=new h.SymbolicSolver(n,t).solve()}if(!s.unsolved){if(n){const n=new d.SolutionSet;n.addSolutions(s.solutions,e,t),n.count()>0&&(n.solutionsType="symbolic",i.appendFactorSolutions(n))}else{const n=new d.SolutionSet(s.solutions);n.solutionsType="symbolic",i.addSolutions(n,e,t)}r=(0,a.zero)()}}return r}).filter(e=>!e.eq((0,a.zero)())).map(e=>{let r=e;const s=e.variables();if(1===s.length&&s[0]===t&&e.isPolynomialLike()){const s=new g.PolynomialSolver(e,t).validatedRoots();if(s.length>0)if(n){const e=new d.SolutionSet;e.addValidatedNumericalSolutions(s),e.solutionsType="numeric",i.appendFactorSolutions(e)}else i.addValidatedNumericalSolutions(s),i.solutionsType=void 0===i.solutionsType||"numeric"===i.solutionsType?"numeric":"mixed";r=(0,a.zero)()}return r}).filter(e=>!e.eq((0,a.zero)()));for(const e of r){const n=e.variables(),r={method:"Brent"};if(1===n.length&&n[0]===t){const n=new p.FunctionSolver(e,t,r).roots();if(n.length>0){for(const e of n)i.add(e);i.solutionsType=void 0===i.solutionsType||"numeric"===i.solutionsType?"numeric":"mixed"}}}return i}},6950(e,t,n){"use strict";t.solveSystem=function solveSystem(e,t){const n=function normalizeEquations(e){if(u.Vector.isVector(e)){const t=[];for(let n=0;n<e.count();n++)t.push((0,d.normalizeSolverExpression)(e.__get__([n])));return t}return e.map(e=>(0,d.normalizeSolverExpression)(e))}(e);if(0===n.length)return new u.Vector([new s.Dictionary]);const h=t??(0,o.collectVariablesSet)(n);if(0===h.length)return n.every(e=>e.isZero())?new u.Vector([new s.Dictionary]):new u.Vector([]);const x=[],E=[];let y=!1;for(const e of n){let t=e;if(!e.isPolynomialLike()){const n=(0,r.toCommonDenominator)(e),i=n.getNumerator().expand(),s=n.getDenominator().expand();!s.isOne()&&i.isPolynomialLike()&&s.isPolynomialLike()&&(t=i,E.push(s),y=!0)}x.push(t)}try{const e=(0,p.solveLinearSystem)(x,h);if("inconsistent"===e.type)return new u.Vector([]);if("infinite"!==e.type){const t=new s.Dictionary,i=new Map;for(const n of h)if(n in e.solutions){const r=e.solutions[n];t.set(n,r),i.set(n,r)}return!y||isSystemSolution(n,E,i)?new u.Vector([t]):new u.Vector([])}if(!y){const t=new s.Dictionary;for(const n of h)n in e.solutions&&t.set(n,e.solutions[n]);return new u.Vector([t])}}catch(e){if(!(e instanceof p.NonlinearSystemError))throw e}if(x.every(e=>e.isPolynomialLike()))try{const e=x.map(e=>(0,l.expressionToIntegerSparsePolynomial)(e,h).polynomial),t=(0,i.Groebner)(e,"LEX",!0);if(1===t.length&&t[0].isConstant()&&0n!==t[0].constantTerm())return new u.Vector([]);let r=function symbolicBackSubstitution(e,t){let n=[{assignment:new Map,basis:e}];for(let e=t.length-1;e>=0;e--){const i=t[e],r=new Set(t.slice(0,e)),s=[];for(const{assignment:e,basis:t}of n){const n=t.filter(e=>{if(e.isZero())return!1;const t=e.variables();if(!t.includes(i))return!1;for(const e of t)if(r.has(e))return!1;return!0});if(0===n.length){s.push({assignment:new Map(e),basis:t});continue}const o=(0,g.solve)(n[0],i).elements;for(const l of o){let o=!0;for(let e=1;e<n.length;e++){const t=n[e].subst(i,l);if(t.isConstant()&&!t.isNearlyZero()){o=!1;break}}if(!o)continue;const u=t.map(e=>{if(!e.hasVariable(i))return e;const t=e.variables();return t.some(e=>r.has(e))||1!==t.length||t[0]!==i?e.subst(i,l):(0,a.zero)()}),c=new Map(e);c.set(i,l),s.push({assignment:c,basis:u})}}n=s}return n.map(e=>e.assignment)}(t.map(e=>(0,l.sparsePolynomialToExpression)(e,h)),h);if(y&&(r=r.filter(e=>isSystemSolution(n,E,e))),r.length>0)return new u.Vector(solutionsToDictionaries(r,h))}catch{}if(n.length<h.length)throw new c.UnsupportedOperationError((0,c.message)("solveSystemInfiniteSolutions"));const v=new m.MultivariateSolver(n,h).roots();if(0===v.length)return new u.Vector([]);return new u.Vector(solutionsToDictionaries(v,h))};const i=n(6431),r=n(8989),s=n(6528),o=n(6338),a=n(6099),l=n(6105),u=n(3982),c=n(4703),m=n(1683),p=n(1280),g=n(2295),d=n(205);function solutionsToDictionaries(e,t){const n=[];for(const i of e){if(i.size!==t.length)throw new c.UnsupportedOperationError((0,c.message)("solveSystemInfiniteSolutions"));const e=new s.Dictionary;for(const n of t){const t=i.get(n);if(!t)throw new c.UnsupportedOperationError((0,c.message)("solveSystemInfiniteSolutions"));e.set(n,t)}n.push(e)}return n}function isSystemSolution(e,t,n){const i={};for(const[e,t]of n)i[e]=t;let r=!0;try{for(const e of t){const t=e.evaluate(i);if(!t.isConstant()||t.isZero()){r=!1;break}}if(r)for(const t of e){const e=t.evaluate(i);if(!e.isConstant()||!e.isNearlyZero()){r=!1;break}}}catch{r=!1}return r}},205(e,t,n){"use strict";t.normalizeSolverExpression=normalizeSolverExpression,t.prepareSolverInputs=function prepareSolverInputs(e,t){const n=normalizeSolverExpression(e),i=n.variables();let r;if(t){if(r=extractVariable(t),r&&i[0]&&!i.includes(r))throw new a.UnexpectedInputError((0,a.message)("tooManyUnknowns"))}else{if(1!==i.length)throw new a.UnexpectedInputError((0,a.message)("tooManyUnknowns"));r=i[0]}return{expression:n,x:r}};const i=n(6184),r=n(296),s=n(8300),o=n(238),a=n(4703);function normalizeSolverExpression(e){if(i.Equation.isEquation(e))return e.toLHS().LHS;if(r.Expression.isExpression(e))return e;const t=o.Parser.parse(String(e));if(i.Equation.isEquation(t))return t.toLHS().LHS;if(r.Expression.isExpression(t))return t;throw new a.UnexpectedInputError((0,a.message)("expressionExpected",{type:s.dataTypes[t.dataType]}))}function extractVariable(e){if(!(e=r.Expression.create(e)).isPlainVariable())throw new a.UnexpectedInputError((0,a.message)("plainVariableExpected",{input:e.text()}));return e.value}},8891(e,t){"use strict";t.remove=function remove(e,t){const n=e.indexOf(t);n>-1&&e.splice(n,1);return e},t.allEqual=function allEqual(e){if(0===e.length)return!0;const t=e[0];return e.every(e=>e===t)}},8015(e,t,n){"use strict";t.arrayToObject=function arrayToObject(e,t){const n={};for(let i=0;i<e.length;i++){const r=e[i];n[t(r,i)]=r}return n};const i=n(3703)},8330(e){"use strict";e.exports=JSON.parse('{"name":"nerdamer","version":"2.0.0-rc.2","publishConfig":{"tag":"next"},"description":"A symbolic math library and computer algebra system for JavaScript and TypeScript.","directory":{"lib":"./src"},"main":"dist/bundle.js","types":"index.d.ts","files":["dist","output","docs-data","index.d.ts","README.md","BREAKING_CHANGES.md","docs/MIGRATING_FROM_1X.md","docs/RELEASE_NOTES_2.md"],"scripts":{"lint":"eslint ./src/**/*.ts","lint:fix":"eslint ./src/**/*.ts --fix","typecheck":"tsc -p tsconfig.json --noEmit","test":"jest","test:coverage":"jest --coverage --runInBand","build:types":"npm run clean:modules && tsc -p tsconfig.build.json","build:modules":"npm run build:types","build:bundle":"npm run clean:dist && webpack --mode=production --env target=full","build:parser":"webpack --mode=production --env target=parser && node tools/smoke-build.cjs parser","build:full":"npm run build:modules && npm run build:bundle && node tools/smoke-build.cjs full","build":"npm run build:full","docs:parser":"ts-node tools/generate-parser-docs.ts","docs:check":"typedoc --options typedoc.json --emit none","validate:package":"ts-node tools/validate-package.ts","prepublishOnly":"npm run typecheck && npm run test && npm run test:coverage && npm run build && npm run build:parser && npm run docs:parser && npm run docs:check && npm run validate:package","clean:modules":"node -e \\"require(\'node:fs\').rmSync(\'output\', { recursive: true, force: true })\\"","clean:dist":"node -e \\"require(\'node:fs\').rmSync(\'dist\', { recursive: true, force: true })\\""},"repository":{"type":"git","url":"git+https://github.com/jiggzson/nerdamer.git"},"keywords":["math","mathematics","algebra","calculus","symbolic","symbolic math","symbolic computation","computer algebra","computer algebra system","cas","parser","expression parser","equation solver","solve","simplify","factorization","polynomials","derivative","differentiation","integral","integration","limits","laplace transform","linear algebra","matrix","vectors","complex numbers","numeric","javascript","typescript"],"author":"Martin Donk","license":"Apache-2.0","bugs":{"url":"https://github.com/jiggzson/nerdamer/issues"},"homepage":"https://nerdamer.com","engines":{"node":">=18"},"dependencies":{"decimal.js":"^10.4.3"},"devDependencies":{"@eslint/js":"^9.39.3","@types/eslint__js":"^8.42.3","@types/jest":"^30.0.0","@types/node":"^25.0.10","eslint":"^9.39.3","eslint-plugin-import":"^2.32.0","eslint-plugin-perfectionist":"^5.6.0","html-webpack-plugin":"^5.6.4","jest":"^30.2.0","prettier":"^3.8.1","terser-webpack-plugin":"^5.3.14","ts-jest":"^29.4.6","ts-loader":"^9.5.4","ts-node":"^10.9.2","typedoc":"^0.28.17","typescript":"^5.9.3","typescript-eslint":"^8.70.1","webpack":"^5.111.1","webpack-cli":"^7.2.3"},"exports":{".":{"types":"./index.d.ts","require":"./dist/bundle.js","default":"./dist/bundle.js"},"./core":{"types":"./output/api/core.d.ts","require":"./output/api/core.js","default":"./output/api/core.js"},"./algebra":{"types":"./output/api/algebra.d.ts","require":"./output/api/algebra.js","default":"./output/api/algebra.js"},"./calculus":{"types":"./output/api/calculus.d.ts","require":"./output/api/calculus.js","default":"./output/api/calculus.js"},"./solve":{"types":"./output/api/solve.d.ts","require":"./output/api/solve.js","default":"./output/api/solve.js"},"./structures":{"types":"./output/api/structures.d.ts","require":"./output/api/structures.js","default":"./output/api/structures.js"},"./assumptions":{"types":"./output/api/assumptions.d.ts","require":"./output/api/assumptions.js","default":"./output/api/assumptions.js"},"./parser":{"types":"./output/api/parser.d.ts","require":"./output/api/parser.js","default":"./output/api/parser.js"},"./advanced":{"types":"./output/api/advanced.d.ts","require":"./output/api/advanced.js","default":"./output/api/advanced.js"},"./debug":{"types":"./output/api/debug.d.ts","require":"./output/api/debug.js","default":"./output/api/debug.js"},"./docs-data/parser-functions.json":"./docs-data/parser-functions.json","./dist/bundle.js":"./dist/bundle.js","./dist/parser.js":"./dist/parser.js","./package.json":"./package.json"},"typesVersions":{"*":{"core":["output/api/core.d.ts"],"algebra":["output/api/algebra.d.ts"],"calculus":["output/api/calculus.d.ts"],"solve":["output/api/solve.d.ts"],"structures":["output/api/structures.d.ts"],"assumptions":["output/api/assumptions.d.ts"],"parser":["output/api/parser.d.ts"],"advanced":["output/api/advanced.d.ts"],"debug":["output/api/debug.d.ts"]}}}')}};const t={};let n=function __webpack_require__(n){const i=t[n];if(void 0!==i)return i.exports;const r=t[n]={exports:{}};return e[n].call(r.exports,r,r.exports,__webpack_require__),r.exports}(1440);return n=n.default,n})());
|
|
2
|
+
!function webpackUniversalModuleDefinition(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.nerdamer=t():e.nerdamer=t()}(this,()=>(()=>{"use strict";const e={d:(t,n)=>{for(var i in n)e.o(n,i)&&!e.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:n[i]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}};let t={};e.d(t,{default:()=>Wn});var n={};e.r(n),e.d(n,{AssignmentError:()=>AssignmentError,DimensionError:()=>DimensionError,DivisionByZeroError:()=>DivisionByZeroError,EnglishErrorMessages:()=>Ke,ErrorMessages:()=>Qe,MathError:()=>MathError,MissingReferenceError:()=>MissingReferenceError,NaNError:()=>NaNError,NotImplementedError:()=>NotImplementedError,NullError:()=>NullError,OperatorError:()=>OperatorError,ParserError:()=>ParserError,ParserSyntaxError:()=>ParserSyntaxError,PolynomialError:()=>PolynomialError,UndefinedError:()=>UndefinedError,UnexpectedDataType:()=>UnexpectedDataType,UnexpectedInputError:()=>UnexpectedInputError,UnexpectedTokenError:()=>UnexpectedTokenError,UnsupportedOperationError:()=>UnsupportedOperationError,ZeroToZeroPowerError:()=>ZeroToZeroPowerError,message:()=>message,registerLanguage:()=>registerLanguage});const i="2.0.0";function isEnumerableLike(e){if("object"!=typeof e||null===e)return!1;const t=e;return!0===t.isEnumerable&&"string"==typeof t.dataType&&Array.isArray(t.elements)}class StructuredEntity{binaryOp(e,t){const n=isEnumerableLike(t)&&t.dataType===this.dataType?t:void 0;return this.copy().each((i,s,r)=>{const o=n?function getAggregateElement(e,t,n){if(void 0===t)return;const i="number"==typeof t?t:Number(t);if(!Number.isFinite(i))return;const s=e.elements[i];if(void 0!==s){if(Array.isArray(s)){if(void 0===n)return;const e="number"==typeof n?n:Number(n);if(!Number.isFinite(e))return;return s[e]}return s}}(n,s,r)??t:t;return function applyBinaryOp(e,t,n){const i=t;return i[e].call(i,n)}(e,i,o)})}abs(){return this.copy().each(e=>e.abs())}dimensionsMatch(e){return!(!isEnumerableLike(e)||this.dataType!==e.dataType)&&e.elements.length===this.elements.length}div(e){return this.binaryOp("div",e)}minus(e){return this.binaryOp("minus",e)}plus(e){return this.binaryOp("plus",e)}pow(e){return this.binaryOp("pow",e)}times(e){return this.binaryOp("times",e)}toString(){return this.text()}}function isNerdamerNativeType(e,t){let n=!1;return"object"==typeof e&&null!==e&&"dataType"in e&&(n=e.dataType===t),n}const s={"(":{type:"parenthesis",id:1,isOpen:!0,isClose:!1,matches:")"},")":{type:"parenthesis",id:2,isOpen:!1,isClose:!0,matches:"("},"[":{type:"square",id:3,isOpen:!0,isClose:!1,matches:"]"},"]":{type:"square",id:4,isOpen:!1,isClose:!0,matches:"["},"{":{type:"curly",id:5,isOpen:!0,isClose:!1,matches:"}"},"}":{type:"curly",id:6,isOpen:!1,isClose:!0,matches:"{"},"|":{type:"pipe",id:7,isOpen:!0,isClose:!0,matches:"|"}},r={".":{precedence:9,operator:".",action:"dot",isPrefix:!1,isPostfix:!1,leftAssoc:!1,iterates:!1},"!!":{precedence:7,operator:"!!",action:"doubleFactorial",isPrefix:!1,isPostfix:!0,leftAssoc:!1,iterates:!0},"!":{precedence:7,operator:"!",action:"factorial",isPrefix:!1,isPostfix:!0,leftAssoc:!1,iterates:!0},"^":{precedence:6,operator:"^",action:"pow",isPrefix:!1,isPostfix:!1,leftAssoc:!1,iterates:!0},"**":{precedence:6,operator:"**",action:"pow",isPrefix:!1,isPostfix:!1,leftAssoc:!1,iterates:!0},"%":{precedence:4,operator:"%",action:"mod",isPrefix:!1,isPostfix:!1,leftAssoc:!0,iterates:!0,postfixVariant:{precedence:7,operator:"%",action:"percent",isPrefix:!1,isPostfix:!0,leftAssoc:!1,iterates:!0}},"*":{precedence:4,operator:"*",action:"times",isPrefix:!1,isPostfix:!1,leftAssoc:!0,iterates:!0},"/":{precedence:4,operator:"/",action:"div",isPrefix:!1,isPostfix:!1,leftAssoc:!0,iterates:!0},"+":{precedence:3,operator:"+",action:"plus",isPrefix:!0,isPostfix:!1,leftAssoc:!0,iterates:!0},"-":{precedence:3,operator:"-",action:"minus",isPrefix:!0,isPostfix:!1,leftAssoc:!0,iterates:!0},"=":{precedence:2,operator:"=",action:"setEqual",assertiveAction:"assertEQ",isPrefix:!1,isPostfix:!1,leftAssoc:!0,iterates:!1},"==":{precedence:1,operator:"==",action:"eq",assertiveAction:"assertEQ",isPrefix:!1,isPostfix:!1,leftAssoc:!0,iterates:!1},"<":{precedence:1,operator:"<",action:"lt",assertiveAction:"assertLT",isPrefix:!1,isPostfix:!1,leftAssoc:!0,iterates:!1},"<=":{precedence:1,operator:"<=",action:"lte",assertiveAction:"assertLTE",isPrefix:!1,isPostfix:!1,leftAssoc:!0,iterates:!1},">":{precedence:1,operator:">",action:"gt",assertiveAction:"assertGT",isPrefix:!1,isPostfix:!1,leftAssoc:!0,iterates:!1},">=":{precedence:1,operator:">=",action:"gte",assertiveAction:"assertGTE",isPrefix:!1,isPostfix:!1,leftAssoc:!0,iterates:!1},"=>":{precedence:0,operator:"=>",action:"mapTo",isPrefix:!1,isPostfix:!1,leftAssoc:!0,iterates:!1},",":{precedence:0,operator:",",action:"comma",isPrefix:!1,isPostfix:!1,leftAssoc:!0,iterates:!1},":":{precedence:0,operator:":",action:"assign",isPrefix:!1,isPostfix:!1,leftAssoc:!0,iterates:!1,deferLHSResolution:!0,deferRHSResolution:!0},":=":{precedence:0,operator:":=",action:"functionAssign",isPrefix:!1,isPostfix:!1,leftAssoc:!1,iterates:!1,deferLHSResolution:!0,deferRHSResolution:!0},in:{precedence:0,operator:"in",action:"in",isPrefix:!1,isPostfix:!1,leftAssoc:!0,iterates:!1}},o=["assume"];function scientificToDecimal(e){let t;[t,e]=function stripSign(e){const t="-"===e.charAt(0);return(t||"+"===e.charAt(0))&&(e=e.substring(1)),[t,e]}(e);const[n,i]=e.toLowerCase().split("e");let[s,r]=n.split(".");r=r||"";const o=s.length+(r?r.length:0),a=s+r,l=s.length+Number(i),u=l===o?"":".";let c;return c=l<=0?`0${u}${"0".repeat(Math.abs(l))}${a}`:l>o?`${a}${"0".repeat(Math.abs(l-o))}`:`${a.substring(0,l)}${u}${a.substring(l)}`,t?"-"+c:c}var a,l,u=9e15,c=1e9,p="0123456789abcdef",m="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",g="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",h={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-u,maxE:u,crypto:!1},d=!0,x="[DecimalError] ",E=x+"Invalid argument: ",y=x+"Precision limit exceeded",v=x+"crypto unavailable",w="[object Decimal]",b=Math.floor,_=Math.pow,P=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,S=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,M=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,A=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,N=1e7,T=m.length-1,I=g.length-1,R={toStringTag:w};function digitsToString(e){var t,n,i,s=e.length-1,r="",o=e[0];if(s>0){for(r+=o,t=1;t<s;t++)(n=7-(i=e[t]+"").length)&&(r+=getZeroString(n)),r+=i;(n=7-(i=(o=e[t])+"").length)&&(r+=getZeroString(n))}else if(0===o)return"0";for(;o%10==0;)o/=10;return r+o}function checkInt32(e,t,n){if(e!==~~e||e<t||e>n)throw Error(E+e)}function checkRoundingDigits(e,t,n,i){var s,r,o,a;for(r=e[0];r>=10;r/=10)--t;return--t<0?(t+=7,s=0):(s=Math.ceil((t+1)/7),t%=7),r=_(10,7-t),a=e[s]%r|0,null==i?t<3?(0==t?a=a/100|0:1==t&&(a=a/10|0),o=n<4&&99999==a||n>3&&49999==a||5e4==a||0==a):o=(n<4&&a+1==r||n>3&&a+1==r/2)&&(e[s+1]/r/100|0)==_(10,t-2)-1||(a==r/2||0==a)&&!(e[s+1]/r/100|0):t<4?(0==t?a=a/1e3|0:1==t?a=a/100|0:2==t&&(a=a/10|0),o=(i||n<4)&&9999==a||!i&&n>3&&4999==a):o=((i||n<4)&&a+1==r||!i&&n>3&&a+1==r/2)&&(e[s+1]/r/1e3|0)==_(10,t-3)-1,o}function convertBase(e,t,n){for(var i,s,r=[0],o=0,a=e.length;o<a;){for(s=r.length;s--;)r[s]*=t;for(r[0]+=p.indexOf(e.charAt(o++)),i=0;i<r.length;i++)r[i]>n-1&&(void 0===r[i+1]&&(r[i+1]=0),r[i+1]+=r[i]/n|0,r[i]%=n)}return r.reverse()}R.absoluteValue=R.abs=function(){var e=new this.constructor(this);return e.s<0&&(e.s=1),finalise(e)},R.ceil=function(){return finalise(new this.constructor(this),this.e+1,2)},R.clampedTo=R.clamp=function(e,t){var n=this,i=n.constructor;if(e=new i(e),t=new i(t),!e.s||!t.s)return new i(NaN);if(e.gt(t))throw Error(E+t);return n.cmp(e)<0?e:n.cmp(t)>0?t:new i(n)},R.comparedTo=R.cmp=function(e){var t,n,i,s,r=this,o=r.d,a=(e=new r.constructor(e)).d,l=r.s,u=e.s;if(!o||!a)return l&&u?l!==u?l:o===a?0:!o^l<0?1:-1:NaN;if(!o[0]||!a[0])return o[0]?l:a[0]?-u:0;if(l!==u)return l;if(r.e!==e.e)return r.e>e.e^l<0?1:-1;for(t=0,n=(i=o.length)<(s=a.length)?i:s;t<n;++t)if(o[t]!==a[t])return o[t]>a[t]^l<0?1:-1;return i===s?0:i>s^l<0?1:-1},R.cosine=R.cos=function(){var e,t,n=this,i=n.constructor;return n.d?n.d[0]?(e=i.precision,t=i.rounding,i.precision=e+Math.max(n.e,n.sd())+7,i.rounding=1,n=function cosine(e,t){var n,i,s;if(t.isZero())return t;i=t.d.length,i<32?s=(1/tinyPow(4,n=Math.ceil(i/3))).toString():(n=16,s="2.3283064365386962890625e-10");e.precision+=n,t=taylorSeries(e,1,t.times(s),new e(1));for(var r=n;r--;){var o=t.times(t);t=o.times(o).minus(o).times(8).plus(1)}return e.precision-=n,t}(i,toLessThanHalfPi(i,n)),i.precision=e,i.rounding=t,finalise(2==l||3==l?n.neg():n,e,t,!0)):new i(1):new i(NaN)},R.cubeRoot=R.cbrt=function(){var e,t,n,i,s,r,o,a,l,u,c=this,p=c.constructor;if(!c.isFinite()||c.isZero())return new p(c);for(d=!1,(r=c.s*_(c.s*c,1/3))&&Math.abs(r)!=1/0?i=new p(r.toString()):(n=digitsToString(c.d),(r=((e=c.e)-n.length+1)%3)&&(n+=1==r||-2==r?"0":"00"),r=_(n,1/3),e=b((e+1)/3)-(e%3==(e<0?-1:2)),(i=new p(n=r==1/0?"5e"+e:(n=r.toExponential()).slice(0,n.indexOf("e")+1)+e)).s=c.s),o=(e=p.precision)+3;;)if(u=(l=(a=i).times(a).times(a)).plus(c),i=O(u.plus(c).times(a),u.plus(l),o+2,1),digitsToString(a.d).slice(0,o)===(n=digitsToString(i.d)).slice(0,o)){if("9999"!=(n=n.slice(o-3,o+1))&&(s||"4999"!=n)){+n&&(+n.slice(1)||"5"!=n.charAt(0))||(finalise(i,e+1,1),t=!i.times(i).times(i).eq(c));break}if(!s&&(finalise(a,e+1,0),a.times(a).times(a).eq(c))){i=a;break}o+=4,s=1}return d=!0,finalise(i,e,p.rounding,t)},R.decimalPlaces=R.dp=function(){var e,t=this.d,n=NaN;if(t){if(n=7*((e=t.length-1)-b(this.e/7)),e=t[e])for(;e%10==0;e/=10)n--;n<0&&(n=0)}return n},R.dividedBy=R.div=function(e){return O(this,new this.constructor(e))},R.dividedToIntegerBy=R.divToInt=function(e){var t=this.constructor;return finalise(O(this,new t(e),0,1,1),t.precision,t.rounding)},R.equals=R.eq=function(e){return 0===this.cmp(e)},R.floor=function(){return finalise(new this.constructor(this),this.e+1,3)},R.greaterThan=R.gt=function(e){return this.cmp(e)>0},R.greaterThanOrEqualTo=R.gte=function(e){var t=this.cmp(e);return 1==t||0===t},R.hyperbolicCosine=R.cosh=function(){var e,t,n,i,s,r=this,o=r.constructor,a=new o(1);if(!r.isFinite())return new o(r.s?1/0:NaN);if(r.isZero())return a;n=o.precision,i=o.rounding,o.precision=n+Math.max(r.e,r.sd())+4,o.rounding=1,(s=r.d.length)<32?t=(1/tinyPow(4,e=Math.ceil(s/3))).toString():(e=16,t="2.3283064365386962890625e-10"),r=taylorSeries(o,1,r.times(t),new o(1),!0);for(var l,u=e,c=new o(8);u--;)l=r.times(r),r=a.minus(l.times(c.minus(l.times(c))));return finalise(r,o.precision=n,o.rounding=i,!0)},R.hyperbolicSine=R.sinh=function(){var e,t,n,i,s=this,r=s.constructor;if(!s.isFinite()||s.isZero())return new r(s);if(t=r.precision,n=r.rounding,r.precision=t+Math.max(s.e,s.sd())+4,r.rounding=1,(i=s.d.length)<3)s=taylorSeries(r,2,s,s,!0);else{e=(e=1.4*Math.sqrt(i))>16?16:0|e,s=taylorSeries(r,2,s=s.times(1/tinyPow(5,e)),s,!0);for(var o,a=new r(5),l=new r(16),u=new r(20);e--;)o=s.times(s),s=s.times(a.plus(o.times(l.times(o).plus(u))))}return r.precision=t,r.rounding=n,finalise(s,t,n,!0)},R.hyperbolicTangent=R.tanh=function(){var e,t,n=this,i=n.constructor;return n.isFinite()?n.isZero()?new i(n):(e=i.precision,t=i.rounding,i.precision=e+7,i.rounding=1,O(n.sinh(),n.cosh(),i.precision=e,i.rounding=t)):new i(n.s)},R.inverseCosine=R.acos=function(){var e=this,t=e.constructor,n=e.abs().cmp(1),i=t.precision,s=t.rounding;return-1!==n?0===n?e.isNeg()?getPi(t,i,s):new t(0):new t(NaN):e.isZero()?getPi(t,i+4,s).times(.5):(t.precision=i+6,t.rounding=1,e=new t(1).minus(e).div(e.plus(1)).sqrt().atan(),t.precision=i,t.rounding=s,e.times(2))},R.inverseHyperbolicCosine=R.acosh=function(){var e,t,n=this,i=n.constructor;return n.lte(1)?new i(n.eq(1)?0:NaN):n.isFinite()?(e=i.precision,t=i.rounding,i.precision=e+Math.max(Math.abs(n.e),n.sd())+4,i.rounding=1,d=!1,n=n.times(n).minus(1).sqrt().plus(n),d=!0,i.precision=e,i.rounding=t,n.ln()):new i(n)},R.inverseHyperbolicSine=R.asinh=function(){var e,t,n=this,i=n.constructor;return!n.isFinite()||n.isZero()?new i(n):(e=i.precision,t=i.rounding,i.precision=e+2*Math.max(Math.abs(n.e),n.sd())+6,i.rounding=1,d=!1,n=n.times(n).plus(1).sqrt().plus(n),d=!0,i.precision=e,i.rounding=t,n.ln())},R.inverseHyperbolicTangent=R.atanh=function(){var e,t,n,i,s=this,r=s.constructor;return s.isFinite()?s.e>=0?new r(s.abs().eq(1)?s.s/0:s.isZero()?s:NaN):(e=r.precision,t=r.rounding,i=s.sd(),Math.max(i,e)<2*-s.e-1?finalise(new r(s),e,t,!0):(r.precision=n=i-s.e,s=O(s.plus(1),new r(1).minus(s),n+e,1),r.precision=e+4,r.rounding=1,s=s.ln(),r.precision=e,r.rounding=t,s.times(.5))):new r(NaN)},R.inverseSine=R.asin=function(){var e,t,n,i,s=this,r=s.constructor;return s.isZero()?new r(s):(t=s.abs().cmp(1),n=r.precision,i=r.rounding,-1!==t?0===t?((e=getPi(r,n+4,i).times(.5)).s=s.s,e):new r(NaN):(r.precision=n+6,r.rounding=1,s=s.div(new r(1).minus(s.times(s)).sqrt().plus(1)).atan(),r.precision=n,r.rounding=i,s.times(2)))},R.inverseTangent=R.atan=function(){var e,t,n,i,s,r,o,a,l,u=this,c=u.constructor,p=c.precision,m=c.rounding;if(u.isFinite()){if(u.isZero())return new c(u);if(u.abs().eq(1)&&p+4<=I)return(o=getPi(c,p+4,m).times(.25)).s=u.s,o}else{if(!u.s)return new c(NaN);if(p+4<=I)return(o=getPi(c,p+4,m).times(.5)).s=u.s,o}for(c.precision=a=p+10,c.rounding=1,e=n=Math.min(28,a/7+2|0);e;--e)u=u.div(u.times(u).plus(1).sqrt().plus(1));for(d=!1,t=Math.ceil(a/7),i=1,l=u.times(u),o=new c(u),s=u;-1!==e;)if(s=s.times(l),r=o.minus(s.div(i+=2)),s=s.times(l),void 0!==(o=r.plus(s.div(i+=2))).d[t])for(e=t;o.d[e]===r.d[e]&&e--;);return n&&(o=o.times(2<<n-1)),d=!0,finalise(o,c.precision=p,c.rounding=m,!0)},R.isFinite=function(){return!!this.d},R.isInteger=R.isInt=function(){return!!this.d&&b(this.e/7)>this.d.length-2},R.isNaN=function(){return!this.s},R.isNegative=R.isNeg=function(){return this.s<0},R.isPositive=R.isPos=function(){return this.s>0},R.isZero=function(){return!!this.d&&0===this.d[0]},R.lessThan=R.lt=function(e){return this.cmp(e)<0},R.lessThanOrEqualTo=R.lte=function(e){return this.cmp(e)<1},R.logarithm=R.log=function(e){var t,n,i,s,r,o,a,l,u=this,c=u.constructor,p=c.precision,m=c.rounding;if(null==e)e=new c(10),t=!0;else{if(n=(e=new c(e)).d,e.s<0||!n||!n[0]||e.eq(1))return new c(NaN);t=e.eq(10)}if(n=u.d,u.s<0||!n||!n[0]||u.eq(1))return new c(n&&!n[0]?-1/0:1!=u.s?NaN:n?0:1/0);if(t)if(n.length>1)r=!0;else{for(s=n[0];s%10==0;)s/=10;r=1!==s}if(d=!1,o=naturalLogarithm(u,a=p+5),i=t?getLn10(c,a+10):naturalLogarithm(e,a),checkRoundingDigits((l=O(o,i,a,1)).d,s=p,m))do{if(o=naturalLogarithm(u,a+=10),i=t?getLn10(c,a+10):naturalLogarithm(e,a),l=O(o,i,a,1),!r){+digitsToString(l.d).slice(s+1,s+15)+1==1e14&&(l=finalise(l,p+1,0));break}}while(checkRoundingDigits(l.d,s+=10,m));return d=!0,finalise(l,p,m)},R.minus=R.sub=function(e){var t,n,i,s,r,o,a,l,u,c,p,m,g=this,h=g.constructor;if(e=new h(e),!g.d||!e.d)return g.s&&e.s?g.d?e.s=-e.s:e=new h(e.d||g.s!==e.s?g:NaN):e=new h(NaN),e;if(g.s!=e.s)return e.s=-e.s,g.plus(e);if(u=g.d,m=e.d,a=h.precision,l=h.rounding,!u[0]||!m[0]){if(m[0])e.s=-e.s;else{if(!u[0])return new h(3===l?-0:0);e=new h(g)}return d?finalise(e,a,l):e}if(n=b(e.e/7),c=b(g.e/7),u=u.slice(),r=c-n){for((p=r<0)?(t=u,r=-r,o=m.length):(t=m,n=c,o=u.length),r>(i=Math.max(Math.ceil(a/7),o)+2)&&(r=i,t.length=1),t.reverse(),i=r;i--;)t.push(0);t.reverse()}else{for((p=(i=u.length)<(o=m.length))&&(o=i),i=0;i<o;i++)if(u[i]!=m[i]){p=u[i]<m[i];break}r=0}for(p&&(t=u,u=m,m=t,e.s=-e.s),o=u.length,i=m.length-o;i>0;--i)u[o++]=0;for(i=m.length;i>r;){if(u[--i]<m[i]){for(s=i;s&&0===u[--s];)u[s]=N-1;--u[s],u[i]+=N}u[i]-=m[i]}for(;0===u[--o];)u.pop();for(;0===u[0];u.shift())--n;return u[0]?(e.d=u,e.e=getBase10Exponent(u,n),d?finalise(e,a,l):e):new h(3===l?-0:0)},R.modulo=R.mod=function(e){var t,n=this,i=n.constructor;return e=new i(e),!n.d||!e.s||e.d&&!e.d[0]?new i(NaN):!e.d||n.d&&!n.d[0]?finalise(new i(n),i.precision,i.rounding):(d=!1,9==i.modulo?(t=O(n,e.abs(),0,3,1)).s*=e.s:t=O(n,e,0,i.modulo,1),t=t.times(e),d=!0,n.minus(t))},R.naturalExponential=R.exp=function(){return naturalExponential(this)},R.naturalLogarithm=R.ln=function(){return naturalLogarithm(this)},R.negated=R.neg=function(){var e=new this.constructor(this);return e.s=-e.s,finalise(e)},R.plus=R.add=function(e){var t,n,i,s,r,o,a,l,u,c,p=this,m=p.constructor;if(e=new m(e),!p.d||!e.d)return p.s&&e.s?p.d||(e=new m(e.d||p.s===e.s?p:NaN)):e=new m(NaN),e;if(p.s!=e.s)return e.s=-e.s,p.minus(e);if(u=p.d,c=e.d,a=m.precision,l=m.rounding,!u[0]||!c[0])return c[0]||(e=new m(p)),d?finalise(e,a,l):e;if(r=b(p.e/7),i=b(e.e/7),u=u.slice(),s=r-i){for(s<0?(n=u,s=-s,o=c.length):(n=c,i=r,o=u.length),s>(o=(r=Math.ceil(a/7))>o?r+1:o+1)&&(s=o,n.length=1),n.reverse();s--;)n.push(0);n.reverse()}for((o=u.length)-(s=c.length)<0&&(s=o,n=c,c=u,u=n),t=0;s;)t=(u[--s]=u[s]+c[s]+t)/N|0,u[s]%=N;for(t&&(u.unshift(t),++i),o=u.length;0==u[--o];)u.pop();return e.d=u,e.e=getBase10Exponent(u,i),d?finalise(e,a,l):e},R.precision=R.sd=function(e){var t,n=this;if(void 0!==e&&e!==!!e&&1!==e&&0!==e)throw Error(E+e);return n.d?(t=getPrecision(n.d),e&&n.e+1>t&&(t=n.e+1)):t=NaN,t},R.round=function(){var e=this,t=e.constructor;return finalise(new t(e),e.e+1,t.rounding)},R.sine=R.sin=function(){var e,t,n=this,i=n.constructor;return n.isFinite()?n.isZero()?new i(n):(e=i.precision,t=i.rounding,i.precision=e+Math.max(n.e,n.sd())+7,i.rounding=1,n=function sine(e,t){var n,i=t.d.length;if(i<3)return t.isZero()?t:taylorSeries(e,2,t,t);n=(n=1.4*Math.sqrt(i))>16?16:0|n,t=t.times(1/tinyPow(5,n)),t=taylorSeries(e,2,t,t);for(var s,r=new e(5),o=new e(16),a=new e(20);n--;)s=t.times(t),t=t.times(r.plus(s.times(o.times(s).minus(a))));return t}(i,toLessThanHalfPi(i,n)),i.precision=e,i.rounding=t,finalise(l>2?n.neg():n,e,t,!0)):new i(NaN)},R.squareRoot=R.sqrt=function(){var e,t,n,i,s,r,o=this,a=o.d,l=o.e,u=o.s,c=o.constructor;if(1!==u||!a||!a[0])return new c(!u||u<0&&(!a||a[0])?NaN:a?o:1/0);for(d=!1,0==(u=Math.sqrt(+o))||u==1/0?(((t=digitsToString(a)).length+l)%2==0&&(t+="0"),u=Math.sqrt(t),l=b((l+1)/2)-(l<0||l%2),i=new c(t=u==1/0?"5e"+l:(t=u.toExponential()).slice(0,t.indexOf("e")+1)+l)):i=new c(u.toString()),n=(l=c.precision)+3;;)if(i=(r=i).plus(O(o,r,n+2,1)).times(.5),digitsToString(r.d).slice(0,n)===(t=digitsToString(i.d)).slice(0,n)){if("9999"!=(t=t.slice(n-3,n+1))&&(s||"4999"!=t)){+t&&(+t.slice(1)||"5"!=t.charAt(0))||(finalise(i,l+1,1),e=!i.times(i).eq(o));break}if(!s&&(finalise(r,l+1,0),r.times(r).eq(o))){i=r;break}n+=4,s=1}return d=!0,finalise(i,l,c.rounding,e)},R.tangent=R.tan=function(){var e,t,n=this,i=n.constructor;return n.isFinite()?n.isZero()?new i(n):(e=i.precision,t=i.rounding,i.precision=e+10,i.rounding=1,(n=n.sin()).s=1,n=O(n,new i(1).minus(n.times(n)).sqrt(),e+10,0),i.precision=e,i.rounding=t,finalise(2==l||4==l?n.neg():n,e,t,!0)):new i(NaN)},R.times=R.mul=function(e){var t,n,i,s,r,o,a,l,u,c=this,p=c.constructor,m=c.d,g=(e=new p(e)).d;if(e.s*=c.s,!(m&&m[0]&&g&&g[0]))return new p(!e.s||m&&!m[0]&&!g||g&&!g[0]&&!m?NaN:m&&g?0*e.s:e.s/0);for(n=b(c.e/7)+b(e.e/7),(l=m.length)<(u=g.length)&&(r=m,m=g,g=r,o=l,l=u,u=o),r=[],i=o=l+u;i--;)r.push(0);for(i=u;--i>=0;){for(t=0,s=l+i;s>i;)a=r[s]+g[i]*m[s-i-1]+t,r[s--]=a%N|0,t=a/N|0;r[s]=(r[s]+t)%N|0}for(;!r[--o];)r.pop();return t?++n:r.shift(),e.d=r,e.e=getBase10Exponent(r,n),d?finalise(e,p.precision,p.rounding):e},R.toBinary=function(e,t){return toStringBinary(this,2,e,t)},R.toDecimalPlaces=R.toDP=function(e,t){var n=this,i=n.constructor;return n=new i(n),void 0===e?n:(checkInt32(e,0,c),void 0===t?t=i.rounding:checkInt32(t,0,8),finalise(n,e+n.e+1,t))},R.toExponential=function(e,t){var n,i=this,s=i.constructor;return void 0===e?n=finiteToString(i,!0):(checkInt32(e,0,c),void 0===t?t=s.rounding:checkInt32(t,0,8),n=finiteToString(i=finalise(new s(i),e+1,t),!0,e+1)),i.isNeg()&&!i.isZero()?"-"+n:n},R.toFixed=function(e,t){var n,i,s=this,r=s.constructor;return void 0===e?n=finiteToString(s):(checkInt32(e,0,c),void 0===t?t=r.rounding:checkInt32(t,0,8),n=finiteToString(i=finalise(new r(s),e+s.e+1,t),!1,e+i.e+1)),s.isNeg()&&!s.isZero()?"-"+n:n},R.toFraction=function(e){var t,n,i,s,r,o,a,l,u,c,p,m,g=this,h=g.d,x=g.constructor;if(!h)return new x(g);if(u=n=new x(1),i=l=new x(0),o=(r=(t=new x(i)).e=getPrecision(h)-g.e-1)%7,t.d[0]=_(10,o<0?7+o:o),null==e)e=r>0?t:u;else{if(!(a=new x(e)).isInt()||a.lt(u))throw Error(E+a);e=a.gt(t)?r>0?t:u:a}for(d=!1,a=new x(digitsToString(h)),c=x.precision,x.precision=r=7*h.length*2;p=O(a,t,0,1,1),1!=(s=n.plus(p.times(i))).cmp(e);)n=i,i=s,s=u,u=l.plus(p.times(s)),l=s,s=t,t=a.minus(p.times(s)),a=s;return s=O(e.minus(n),i,0,1,1),l=l.plus(s.times(u)),n=n.plus(s.times(i)),l.s=u.s=g.s,m=O(u,i,r,1).minus(g).abs().cmp(O(l,n,r,1).minus(g).abs())<1?[u,i]:[l,n],x.precision=c,d=!0,m},R.toHexadecimal=R.toHex=function(e,t){return toStringBinary(this,16,e,t)},R.toNearest=function(e,t){var n=this,i=n.constructor;if(n=new i(n),null==e){if(!n.d)return n;e=new i(1),t=i.rounding}else{if(e=new i(e),void 0===t?t=i.rounding:checkInt32(t,0,8),!n.d)return e.s?n:e;if(!e.d)return e.s&&(e.s=n.s),e}return e.d[0]?(d=!1,n=O(n,e,0,t,1).times(e),d=!0,finalise(n)):(e.s=n.s,n=e),n},R.toNumber=function(){return+this},R.toOctal=function(e,t){return toStringBinary(this,8,e,t)},R.toPower=R.pow=function(e){var t,n,i,s,r,o,a=this,l=a.constructor,u=+(e=new l(e));if(!(a.d&&e.d&&a.d[0]&&e.d[0]))return new l(_(+a,u));if((a=new l(a)).eq(1))return a;if(i=l.precision,r=l.rounding,e.eq(1))return finalise(a,i,r);if((t=b(e.e/7))>=e.d.length-1&&(n=u<0?-u:u)<=9007199254740991)return s=intPow(l,a,n,i),e.s<0?new l(1).div(s):finalise(s,i,r);if((o=a.s)<0){if(t<e.d.length-1)return new l(NaN);if(1&e.d[t]||(o=1),0==a.e&&1==a.d[0]&&1==a.d.length)return a.s=o,a}return(t=0!=(n=_(+a,u))&&isFinite(n)?new l(n+"").e:b(u*(Math.log("0."+digitsToString(a.d))/Math.LN10+a.e+1)))>l.maxE+1||t<l.minE-1?new l(t>0?o/0:0):(d=!1,l.rounding=a.s=1,n=Math.min(12,(t+"").length),(s=naturalExponential(e.times(naturalLogarithm(a,i+n)),i)).d&&checkRoundingDigits((s=finalise(s,i+5,1)).d,i,r)&&(t=i+10,+digitsToString((s=finalise(naturalExponential(e.times(naturalLogarithm(a,t+n)),t),t+5,1)).d).slice(i+1,i+15)+1==1e14&&(s=finalise(s,i+1,0))),s.s=o,d=!0,l.rounding=r,finalise(s,i,r))},R.toPrecision=function(e,t){var n,i=this,s=i.constructor;return void 0===e?n=finiteToString(i,i.e<=s.toExpNeg||i.e>=s.toExpPos):(checkInt32(e,1,c),void 0===t?t=s.rounding:checkInt32(t,0,8),n=finiteToString(i=finalise(new s(i),e,t),e<=i.e||i.e<=s.toExpNeg,e)),i.isNeg()&&!i.isZero()?"-"+n:n},R.toSignificantDigits=R.toSD=function(e,t){var n=this.constructor;return void 0===e?(e=n.precision,t=n.rounding):(checkInt32(e,1,c),void 0===t?t=n.rounding:checkInt32(t,0,8)),finalise(new n(this),e,t)},R.toString=function(){var e=this,t=e.constructor,n=finiteToString(e,e.e<=t.toExpNeg||e.e>=t.toExpPos);return e.isNeg()&&!e.isZero()?"-"+n:n},R.truncated=R.trunc=function(){return finalise(new this.constructor(this),this.e+1,1)},R.valueOf=R.toJSON=function(){var e=this,t=e.constructor,n=finiteToString(e,e.e<=t.toExpNeg||e.e>=t.toExpPos);return e.isNeg()?"-"+n:n};var O=function(){function multiplyInteger(e,t,n){var i,s=0,r=e.length;for(e=e.slice();r--;)i=e[r]*t+s,e[r]=i%n|0,s=i/n|0;return s&&e.unshift(s),e}function compare(e,t,n,i){var s,r;if(n!=i)r=n>i?1:-1;else for(s=r=0;s<n;s++)if(e[s]!=t[s]){r=e[s]>t[s]?1:-1;break}return r}function subtract(e,t,n,i){for(var s=0;n--;)e[n]-=s,s=e[n]<t[n]?1:0,e[n]=s*i+e[n]-t[n];for(;!e[0]&&e.length>1;)e.shift()}return function(e,t,n,i,s,r){var o,l,u,c,p,m,g,h,d,x,E,y,v,w,_,P,S,M,A,T,I=e.constructor,R=e.s==t.s?1:-1,O=e.d,F=t.d;if(!(O&&O[0]&&F&&F[0]))return new I(e.s&&t.s&&(O?!F||O[0]!=F[0]:F)?O&&0==O[0]||!F?0*R:R/0:NaN);for(r?(p=1,l=e.e-t.e):(r=N,p=7,l=b(e.e/p)-b(t.e/p)),A=F.length,S=O.length,x=(d=new I(R)).d=[],u=0;F[u]==(O[u]||0);u++);if(F[u]>(O[u]||0)&&l--,null==n?(w=n=I.precision,i=I.rounding):w=s?n+(e.e-t.e)+1:n,w<0)x.push(1),m=!0;else{if(w=w/p+2|0,u=0,1==A){for(c=0,F=F[0],w++;(u<S||c)&&w--;u++)_=c*r+(O[u]||0),x[u]=_/F|0,c=_%F|0;m=c||u<S}else{for((c=r/(F[0]+1)|0)>1&&(F=multiplyInteger(F,c,r),O=multiplyInteger(O,c,r),A=F.length,S=O.length),P=A,y=(E=O.slice(0,A)).length;y<A;)E[y++]=0;(T=F.slice()).unshift(0),M=F[0],F[1]>=r/2&&++M;do{c=0,(o=compare(F,E,A,y))<0?(v=E[0],A!=y&&(v=v*r+(E[1]||0)),(c=v/M|0)>1?(c>=r&&(c=r-1),1==(o=compare(g=multiplyInteger(F,c,r),E,h=g.length,y=E.length))&&(c--,subtract(g,A<h?T:F,h,r))):(0==c&&(o=c=1),g=F.slice()),(h=g.length)<y&&g.unshift(0),subtract(E,g,y,r),-1==o&&(o=compare(F,E,A,y=E.length))<1&&(c++,subtract(E,A<y?T:F,y,r)),y=E.length):0===o&&(c++,E=[0]),x[u++]=c,o&&E[0]?E[y++]=O[P]||0:(E=[O[P]],y=1)}while((P++<S||void 0!==E[0])&&w--);m=void 0!==E[0]}x[0]||x.shift()}if(1==p)d.e=l,a=m;else{for(u=1,c=x[0];c>=10;c/=10)u++;d.e=u+l*p-1,finalise(d,s?n+d.e+1:n,i,m)}return d}}();function finalise(e,t,n,i){var s,r,o,a,l,u,c,p,m,g=e.constructor;e:if(null!=t){if(!(p=e.d))return e;for(s=1,a=p[0];a>=10;a/=10)s++;if((r=t-s)<0)r+=7,o=t,l=(c=p[m=0])/_(10,s-o-1)%10|0;else if((m=Math.ceil((r+1)/7))>=(a=p.length)){if(!i)break e;for(;a++<=m;)p.push(0);c=l=0,s=1,o=(r%=7)-7+1}else{for(c=a=p[m],s=1;a>=10;a/=10)s++;l=(o=(r%=7)-7+s)<0?0:c/_(10,s-o-1)%10|0}if(i=i||t<0||void 0!==p[m+1]||(o<0?c:c%_(10,s-o-1)),u=n<4?(l||i)&&(0==n||n==(e.s<0?3:2)):l>5||5==l&&(4==n||i||6==n&&(r>0?o>0?c/_(10,s-o):0:p[m-1])%10&1||n==(e.s<0?8:7)),t<1||!p[0])return p.length=0,u?(t-=e.e+1,p[0]=_(10,(7-t%7)%7),e.e=-t||0):p[0]=e.e=0,e;if(0==r?(p.length=m,a=1,m--):(p.length=m+1,a=_(10,7-r),p[m]=o>0?(c/_(10,s-o)%_(10,o)|0)*a:0),u)for(;;){if(0==m){for(r=1,o=p[0];o>=10;o/=10)r++;for(o=p[0]+=a,a=1;o>=10;o/=10)a++;r!=a&&(e.e++,p[0]==N&&(p[0]=1));break}if(p[m]+=a,p[m]!=N)break;p[m--]=0,a=1}for(r=p.length;0===p[--r];)p.pop()}return d&&(e.e>g.maxE?(e.d=null,e.e=NaN):e.e<g.minE&&(e.e=0,e.d=[0])),e}function finiteToString(e,t,n){if(!e.isFinite())return nonFiniteToString(e);var i,s=e.e,r=digitsToString(e.d),o=r.length;return t?(n&&(i=n-o)>0?r=r.charAt(0)+"."+r.slice(1)+getZeroString(i):o>1&&(r=r.charAt(0)+"."+r.slice(1)),r=r+(e.e<0?"e":"e+")+e.e):s<0?(r="0."+getZeroString(-s-1)+r,n&&(i=n-o)>0&&(r+=getZeroString(i))):s>=o?(r+=getZeroString(s+1-o),n&&(i=n-s-1)>0&&(r=r+"."+getZeroString(i))):((i=s+1)<o&&(r=r.slice(0,i)+"."+r.slice(i)),n&&(i=n-o)>0&&(s+1===o&&(r+="."),r+=getZeroString(i))),r}function getBase10Exponent(e,t){var n=e[0];for(t*=7;n>=10;n/=10)t++;return t}function getLn10(e,t,n){if(t>T)throw d=!0,n&&(e.precision=n),Error(y);return finalise(new e(m),t,1,!0)}function getPi(e,t,n){if(t>I)throw Error(y);return finalise(new e(g),t,n,!0)}function getPrecision(e){var t=e.length-1,n=7*t+1;if(t=e[t]){for(;t%10==0;t/=10)n--;for(t=e[0];t>=10;t/=10)n++}return n}function getZeroString(e){for(var t="";e--;)t+="0";return t}function intPow(e,t,n,i){var s,r=new e(1),o=Math.ceil(i/7+4);for(d=!1;;){if(n%2&&truncate((r=r.times(t)).d,o)&&(s=!0),0===(n=b(n/2))){n=r.d.length-1,s&&0===r.d[n]&&++r.d[n];break}truncate((t=t.times(t)).d,o)}return d=!0,r}function isOdd(e){return 1&e.d[e.d.length-1]}function maxOrMin(e,t,n){for(var i,s,r=new e(t[0]),o=0;++o<t.length;){if(!(s=new e(t[o])).s){r=s;break}((i=r.cmp(s))===n||0===i&&r.s===n)&&(r=s)}return r}function naturalExponential(e,t){var n,i,s,r,o,a,l,u=0,c=0,p=0,m=e.constructor,g=m.rounding,h=m.precision;if(!e.d||!e.d[0]||e.e>17)return new m(e.d?e.d[0]?e.s<0?0:1/0:1:e.s?e.s<0?0:e:NaN);for(null==t?(d=!1,l=h):l=t,a=new m(.03125);e.e>-2;)e=e.times(a),p+=5;for(l+=i=Math.log(_(2,p))/Math.LN10*2+5|0,n=r=o=new m(1),m.precision=l;;){if(r=finalise(r.times(e),l,1),n=n.times(++c),digitsToString((a=o.plus(O(r,n,l,1))).d).slice(0,l)===digitsToString(o.d).slice(0,l)){for(s=p;s--;)o=finalise(o.times(o),l,1);if(null!=t)return m.precision=h,o;if(!(u<3&&checkRoundingDigits(o.d,l-i,g,u)))return finalise(o,m.precision=h,g,d=!0);m.precision=l+=10,n=r=a=new m(1),c=0,u++}o=a}}function naturalLogarithm(e,t){var n,i,s,r,o,a,l,u,c,p,m,g=1,h=e,x=h.d,E=h.constructor,y=E.rounding,v=E.precision;if(h.s<0||!x||!x[0]||!h.e&&1==x[0]&&1==x.length)return new E(x&&!x[0]?-1/0:1!=h.s?NaN:x?0:h);if(null==t?(d=!1,c=v):c=t,E.precision=c+=10,i=(n=digitsToString(x)).charAt(0),!(Math.abs(r=h.e)<15e14))return u=getLn10(E,c+2,v).times(r+""),h=naturalLogarithm(new E(i+"."+n.slice(1)),c-10).plus(u),E.precision=v,null==t?finalise(h,v,y,d=!0):h;for(;i<7&&1!=i||1==i&&n.charAt(1)>3;)i=(n=digitsToString((h=h.times(e)).d)).charAt(0),g++;for(r=h.e,i>1?(h=new E("0."+n),r++):h=new E(i+"."+n.slice(1)),p=h,l=o=h=O(h.minus(1),h.plus(1),c,1),m=finalise(h.times(h),c,1),s=3;;){if(o=finalise(o.times(m),c,1),digitsToString((u=l.plus(O(o,new E(s),c,1))).d).slice(0,c)===digitsToString(l.d).slice(0,c)){if(l=l.times(2),0!==r&&(l=l.plus(getLn10(E,c+2,v).times(r+""))),l=O(l,new E(g),c,1),null!=t)return E.precision=v,l;if(!checkRoundingDigits(l.d,c-10,y,a))return finalise(l,E.precision=v,y,d=!0);E.precision=c+=10,u=o=h=O(p.minus(1),p.plus(1),c,1),m=finalise(h.times(h),c,1),s=a=1}l=u,s+=2}}function nonFiniteToString(e){return String(e.s*e.s/0)}function parseDecimal(e,t){var n,i,s;for((n=t.indexOf("."))>-1&&(t=t.replace(".","")),(i=t.search(/e/i))>0?(n<0&&(n=i),n+=+t.slice(i+1),t=t.substring(0,i)):n<0&&(n=t.length),i=0;48===t.charCodeAt(i);i++);for(s=t.length;48===t.charCodeAt(s-1);--s);if(t=t.slice(i,s)){if(s-=i,e.e=n=n-i-1,e.d=[],i=(n+1)%7,n<0&&(i+=7),i<s){for(i&&e.d.push(+t.slice(0,i)),s-=7;i<s;)e.d.push(+t.slice(i,i+=7));i=7-(t=t.slice(i)).length}else i-=s;for(;i--;)t+="0";e.d.push(+t),d&&(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 parseOther(e,t){var n,i,s,r,o,a,l,u,c;if(t.indexOf("_")>-1){if(t=t.replace(/(\d)_(?=\d)/g,"$1"),A.test(t))return parseDecimal(e,t)}else if("Infinity"===t||"NaN"===t)return+t||(e.s=NaN),e.e=NaN,e.d=null,e;if(S.test(t))n=16,t=t.toLowerCase();else if(P.test(t))n=2;else{if(!M.test(t))throw Error(E+t);n=8}for((r=t.search(/p/i))>0?(l=+t.slice(r+1),t=t.substring(2,r)):t=t.slice(2),o=(r=t.indexOf("."))>=0,i=e.constructor,o&&(r=(a=(t=t.replace(".","")).length)-r,s=intPow(i,new i(n),r,2*r)),r=c=(u=convertBase(t,n,N)).length-1;0===u[r];--r)u.pop();return r<0?new i(0*e.s):(e.e=getBase10Exponent(u,c),e.d=u,d=!1,o&&(e=O(e,s,4*a)),l&&(e=e.times(Math.abs(l)<54?_(2,l):F.pow(2,l))),d=!0,e)}function taylorSeries(e,t,n,i,s){var r,o,a,l,u=e.precision,c=Math.ceil(u/7);for(d=!1,l=n.times(n),a=new e(i);;){if(o=O(a.times(l),new e(t++*t++),u,1),a=s?i.plus(o):i.minus(o),i=O(o.times(l),new e(t++*t++),u,1),void 0!==(o=a.plus(i)).d[c]){for(r=c;o.d[r]===a.d[r]&&r--;);if(-1==r)break}r=a,a=i,i=o,o=r}return d=!0,o.d.length=c+1,o}function tinyPow(e,t){for(var n=e;--t;)n*=e;return n}function toLessThanHalfPi(e,t){var n,i=t.s<0,s=getPi(e,e.precision,1),r=s.times(.5);if((t=t.abs()).lte(r))return l=i?4:1,t;if((n=t.divToInt(s)).isZero())l=i?3:2;else{if((t=t.minus(n.times(s))).lte(r))return l=isOdd(n)?i?2:3:i?4:1,t;l=isOdd(n)?i?1:4:i?3:2}return t.minus(s).abs()}function toStringBinary(e,t,n,i){var s,r,o,l,u,m,g,h,d,x=e.constructor,E=void 0!==n;if(E?(checkInt32(n,1,c),void 0===i?i=x.rounding:checkInt32(i,0,8)):(n=x.precision,i=x.rounding),e.isFinite()){for(E?(s=2,16==t?n=4*n-3:8==t&&(n=3*n-2)):s=t,(o=(g=finiteToString(e)).indexOf("."))>=0&&(g=g.replace(".",""),(d=new x(1)).e=g.length-o,d.d=convertBase(finiteToString(d),10,s),d.e=d.d.length),r=u=(h=convertBase(g,10,s)).length;0==h[--u];)h.pop();if(h[0]){if(o<0?r--:((e=new x(e)).d=h,e.e=r,h=(e=O(e,d,n,i,0,s)).d,r=e.e,m=a),o=h[n],l=s/2,m=m||void 0!==h[n+1],m=i<4?(void 0!==o||m)&&(0===i||i===(e.s<0?3:2)):o>l||o===l&&(4===i||m||6===i&&1&h[n-1]||i===(e.s<0?8:7)),h.length=n,m)for(;++h[--n]>s-1;)h[n]=0,n||(++r,h.unshift(1));for(u=h.length;!h[u-1];--u);for(o=0,g="";o<u;o++)g+=p.charAt(h[o]);if(E){if(u>1)if(16==t||8==t){for(o=16==t?4:3,--u;u%o;u++)g+="0";for(u=(h=convertBase(g,s,t)).length;!h[u-1];--u);for(o=1,g="1.";o<u;o++)g+=p.charAt(h[o])}else g=g.charAt(0)+"."+g.slice(1);g=g+(r<0?"p":"p+")+r}else if(r<0){for(;++r;)g="0"+g;g="0."+g}else if(++r>u)for(r-=u;r--;)g+="0";else r<u&&(g=g.slice(0,r)+"."+g.slice(r))}else g=E?"0p+0":"0";g=(16==t?"0x":2==t?"0b":8==t?"0o":"")+g}else g=nonFiniteToString(e);return e.s<0?"-"+g:g}function truncate(e,t){if(e.length>t)return e.length=t,!0}function abs(e){return new this(e).abs()}function acos(e){return new this(e).acos()}function acosh(e){return new this(e).acosh()}function add(e,t){return new this(e).plus(t)}function asin(e){return new this(e).asin()}function asinh(e){return new this(e).asinh()}function atan(e){return new this(e).atan()}function atanh(e){return new this(e).atanh()}function atan2(e,t){e=new this(e),t=new this(t);var n,i=this.precision,s=this.rounding,r=i+4;return e.s&&t.s?e.d||t.d?!t.d||e.isZero()?(n=t.s<0?getPi(this,i,s):new this(0)).s=e.s:!e.d||t.isZero()?(n=getPi(this,r,1).times(.5)).s=e.s:t.s<0?(this.precision=r,this.rounding=1,n=this.atan(O(e,t,r,1)),t=getPi(this,r,1),this.precision=i,this.rounding=s,n=e.s<0?n.minus(t):n.plus(t)):n=this.atan(O(e,t,r,1)):(n=getPi(this,r,1).times(t.s>0?.25:.75)).s=e.s:n=new this(NaN),n}function cbrt(e){return new this(e).cbrt()}function ceil(e){return finalise(e=new this(e),e.e+1,2)}function clamp(e,t,n){return new this(e).clamp(t,n)}function config(e){if(!e||"object"!=typeof e)throw Error(x+"Object expected");var t,n,i,s=!0===e.defaults,r=["precision",1,c,"rounding",0,8,"toExpNeg",-u,0,"toExpPos",0,u,"maxE",0,u,"minE",-u,0,"modulo",0,9];for(t=0;t<r.length;t+=3)if(n=r[t],s&&(this[n]=h[n]),void 0!==(i=e[n])){if(!(b(i)===i&&i>=r[t+1]&&i<=r[t+2]))throw Error(E+n+": "+i);this[n]=i}if(n="crypto",s&&(this[n]=h[n]),void 0!==(i=e[n])){if(!0!==i&&!1!==i&&0!==i&&1!==i)throw Error(E+n+": "+i);if(i){if("undefined"==typeof crypto||!crypto||!crypto.getRandomValues&&!crypto.randomBytes)throw Error(v);this[n]=!0}else this[n]=!1}return this}function cos(e){return new this(e).cos()}function cosh(e){return new this(e).cosh()}function div(e,t){return new this(e).div(t)}function exp(e){return new this(e).exp()}function floor(e){return finalise(e=new this(e),e.e+1,3)}function hypot(){var e,t,n=new this(0);for(d=!1,e=0;e<arguments.length;)if((t=new this(arguments[e++])).d)n.d&&(n=n.plus(t.times(t)));else{if(t.s)return d=!0,new this(1/0);n=t}return d=!0,n.sqrt()}function isDecimalInstance(e){return e instanceof F||e&&e.toStringTag===w||!1}function ln(e){return new this(e).ln()}function log(e,t){return new this(e).log(t)}function log2(e){return new this(e).log(2)}function log10(e){return new this(e).log(10)}function max(){return maxOrMin(this,arguments,-1)}function min(){return maxOrMin(this,arguments,1)}function mod(e,t){return new this(e).mod(t)}function mul(e,t){return new this(e).mul(t)}function pow(e,t){return new this(e).pow(t)}function random(e){var t,n,i,s,r=0,o=new this(1),a=[];if(void 0===e?e=this.precision:checkInt32(e,1,c),i=Math.ceil(e/7),this.crypto)if(crypto.getRandomValues)for(t=crypto.getRandomValues(new Uint32Array(i));r<i;)(s=t[r])>=429e7?t[r]=crypto.getRandomValues(new Uint32Array(1))[0]:a[r++]=s%1e7;else{if(!crypto.randomBytes)throw Error(v);for(t=crypto.randomBytes(i*=4);r<i;)(s=t[r]+(t[r+1]<<8)+(t[r+2]<<16)+((127&t[r+3])<<24))>=214e7?crypto.randomBytes(4).copy(t,r):(a.push(s%1e7),r+=4);r=i/4}else for(;r<i;)a[r++]=1e7*Math.random()|0;for(e%=7,(i=a[--r])&&e&&(s=_(10,7-e),a[r]=(i/s|0)*s);0===a[r];r--)a.pop();if(r<0)n=0,a=[0];else{for(n=-1;0===a[0];n-=7)a.shift();for(i=1,s=a[0];s>=10;s/=10)i++;i<7&&(n-=7-i)}return o.e=n,o.d=a,o}function round(e){return finalise(e=new this(e),e.e+1,this.rounding)}function sign(e){return(e=new this(e)).d?e.d[0]?e.s:0*e.s:e.s||NaN}function sin(e){return new this(e).sin()}function sinh(e){return new this(e).sinh()}function sqrt(e){return new this(e).sqrt()}function sub(e,t){return new this(e).sub(t)}function sum(){var e=0,t=arguments,n=new this(t[e]);for(d=!1;n.s&&++e<t.length;)n=n.plus(t[e]);return d=!0,finalise(n,this.precision,this.rounding)}function tan(e){return new this(e).tan()}function tanh(e){return new this(e).tanh()}function trunc(e){return finalise(e=new this(e),e.e+1,1)}R[Symbol.for("nodejs.util.inspect.custom")]=R.toString,R[Symbol.toStringTag]="Decimal";var F=R.constructor=function clone(e){var t,n,i;function Decimal(e){var t,n,i,s=this;if(!(s instanceof Decimal))return new Decimal(e);if(s.constructor=Decimal,isDecimalInstance(e))return s.s=e.s,void(d?!e.d||e.e>Decimal.maxE?(s.e=NaN,s.d=null):e.e<Decimal.minE?(s.e=0,s.d=[0]):(s.e=e.e,s.d=e.d.slice()):(s.e=e.e,s.d=e.d?e.d.slice():e.d));if("number"===(i=typeof e)){if(0===e)return s.s=1/e<0?-1:1,s.e=0,void(s.d=[0]);if(e<0?(e=-e,s.s=-1):s.s=1,e===~~e&&e<1e7){for(t=0,n=e;n>=10;n/=10)t++;return void(d?t>Decimal.maxE?(s.e=NaN,s.d=null):t<Decimal.minE?(s.e=0,s.d=[0]):(s.e=t,s.d=[e]):(s.e=t,s.d=[e]))}return 0*e!=0?(e||(s.s=NaN),s.e=NaN,void(s.d=null)):parseDecimal(s,e.toString())}if("string"===i)return 45===(n=e.charCodeAt(0))?(e=e.slice(1),s.s=-1):(43===n&&(e=e.slice(1)),s.s=1),A.test(e)?parseDecimal(s,e):parseOther(s,e);if("bigint"===i)return e<0?(e=-e,s.s=-1):s.s=1,parseDecimal(s,e.toString());throw Error(E+e)}if(Decimal.prototype=R,Decimal.ROUND_UP=0,Decimal.ROUND_DOWN=1,Decimal.ROUND_CEIL=2,Decimal.ROUND_FLOOR=3,Decimal.ROUND_HALF_UP=4,Decimal.ROUND_HALF_DOWN=5,Decimal.ROUND_HALF_EVEN=6,Decimal.ROUND_HALF_CEIL=7,Decimal.ROUND_HALF_FLOOR=8,Decimal.EUCLID=9,Decimal.config=Decimal.set=config,Decimal.clone=clone,Decimal.isDecimal=isDecimalInstance,Decimal.abs=abs,Decimal.acos=acos,Decimal.acosh=acosh,Decimal.add=add,Decimal.asin=asin,Decimal.asinh=asinh,Decimal.atan=atan,Decimal.atanh=atanh,Decimal.atan2=atan2,Decimal.cbrt=cbrt,Decimal.ceil=ceil,Decimal.clamp=clamp,Decimal.cos=cos,Decimal.cosh=cosh,Decimal.div=div,Decimal.exp=exp,Decimal.floor=floor,Decimal.hypot=hypot,Decimal.ln=ln,Decimal.log=log,Decimal.log10=log10,Decimal.log2=log2,Decimal.max=max,Decimal.min=min,Decimal.mod=mod,Decimal.mul=mul,Decimal.pow=pow,Decimal.random=random,Decimal.round=round,Decimal.sign=sign,Decimal.sin=sin,Decimal.sinh=sinh,Decimal.sqrt=sqrt,Decimal.sub=sub,Decimal.sum=sum,Decimal.tan=tan,Decimal.tanh=tanh,Decimal.trunc=trunc,void 0===e&&(e={}),e&&!0!==e.defaults)for(i=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],t=0;t<i.length;)e.hasOwnProperty(n=i[t++])||(e[n]=this[n]);return Decimal.config(e),Decimal}(h);m=new F(m),g=new F(g);const q=F,V="Token",k="INDEXED_REF",U="KEY_VALUE_PAIR",D="RAT",L="SCP",B="EXP",z="COL",$="VEC",Z="MAT",W="EQN",X="POL",j="TRM",G="GFP",H="SET",K="SOL",Q="DIC",J="ASSUMPTION",Y={[V]:"Token",[k]:"IndexedReference",[U]:"KeyValuePair",[D]:"Rational",[L]:"Scope",[B]:"Expression",[z]:"Collection",[$]:"Vector",[Z]:"Matrix",[W]:"Equation",[X]:"Polynomial",[j]:"Term",[G]:"GFPolynomial",[H]:"ValuesSet",[K]:"SolutionSet",[Q]:"Dictionary",[J]:"Assumption"},ee={NUM:6,VAR:2,EXP:1,FUN:3,GRP:4,PRD:7,SUM:5,INF:8,VEC:9,MAT:10},te={[ee.NUM]:1,[ee.VAR]:2,[ee.EXP]:3,[ee.FUN]:4,[ee.GRP]:5,[ee.PRD]:6,[ee.SUM]:7,[ee.INF]:8},ne="e",ie="pi",se="π",re={[se]:ie,"∞":"Inf"},oe=[ie,"π"],ae=["Inf","Infinity","∞"],le={[ie]:()=>q.acos(-1).toString(),[se]:()=>q.acos(-1).toString(),[ne]:()=>q.exp(1).toString()},ue="__accessor__",ce="heaviside",pe="conjugate",fe="pfactor",me="pfactord",ge="ilaplace",he="imagpart",de="integrate",xe="laplace",Ee="product",ye="realpart",{COS:ve,SIN:we,TAN:be,ASIN:_e,ACOS:Pe,SEC:Se,CSC:Me,COT:Ae,ATAN:Ne,ASEC:Te,ACSC:Ie,ACOT:Re,ATAN2:Oe,SINH:Fe,COSH:Ce,TANH:qe,SECH:Ve,CSCH:ke,COTH:Ue,ACOSH:De,ASINH:Le,ATANH:Be,ASECH:ze,ACSCH:$e,ACOTH:Ze}={COS:"cos",SIN:"sin",TAN:"tan",SEC:"sec",CSC:"csc",COT:"cot",ACOS:"acos",ASIN:"asin",ATAN:"atan",ASEC:"asec",ACSC:"acsc",ACOT:"acot",ATAN2:"atan2",SINH:"sinh",COSH:"cosh",TANH:"tanh",SECH:"sech",CSCH:"csch",COTH:"coth",ACOSH:"acosh",ASINH:"asinh",ATANH:"atanh",ASECH:"asech",ACSCH:"acsch",ACOTH:"acoth"},We=[ve,we,be,Se,Me,Ae],Xe=[Pe,_e,Ne,Te,Ie,Re],je=[Ce,Fe,qe,Ve,ke,Ue],Ge={USE_FRACTIONS:!0,ALLOW_BIGINT:!0,EVALUATE:!1,SUBSTITUTE:!0,LANGUAGE:"eng",ALLOW_IMPLICIT_MULTIPLICATION:!0,SORT_TERMS:!1,DEFER_SIMPLIFICATION:!1,REWRITE_SQRT:!0,MAX_FRAC_INT:BigInt(1e60),ALLOW_RAT_SUBS:!1,IMMUTABLE_VALUE_SETS:!0,USE_SINGLE_LETTER_VARIABLES:!1,MAX_PRODUCT_AND_SUMMATION_ITERATION:1e4,MAX_LOOP_ITERATIONS:1e4,INITIALIZE_RULES:!0,INDEX_BASE:0};function scopedBlock(e,t,n){let i;const s=Ge[e];Ge[e]=t;try{i=n()}finally{Ge[e]=s}return i}const He=["e","pi","i","_n","all"];class UnexpectedTokenError extends Error{}class UnexpectedDataType extends Error{}class UnexpectedInputError extends Error{}class DivisionByZeroError extends Error{}class OperatorError extends Error{}class ParserError extends Error{}class NullError extends Error{}class UndefinedError extends Error{}class PolynomialError extends Error{}class UnsupportedOperationError extends Error{}class ParserSyntaxError extends Error{}class MathError extends Error{}class NaNError extends Error{}class DimensionError extends Error{}class NotImplementedError extends Error{}class MissingReferenceError extends Error{}class ZeroToZeroPowerError extends Error{}class AssignmentError extends Error{}const Ke={notImplemented:"This method has not yet been implemented.",noInverse:"Unable to calculate inverse!",undefinedValue:"The requested value is undefined!",nullValue:"Value expected but received null.",univariateInputOnly:"The input for this function must be univariate!",differentSignsAtEndPointsRequired:"Function must have opposite signs at endpoints a and b!",integerRequired:"This function requires the coefficient to be an integer!",plainVariableExpected:"Expected plain variable! Received {{input}}.",missingReference:'The reference "{{ref}}" does not exist on this pattern!!',undefinedDivision:"Division not defined expression of this type! {{type}}",restrictedVariableName:'Cannot assign the requested value to the reserved name "{{name}}"!',noVariableInExpression:"No variable found in expression!",quadraticExpressionExpected:"Expression must be quadratic!",wrongInput:"Wrong input! Expected {{expected}} but received {{received}}.",unsupportedFunction:"Unsupported function {{function}}",functionMinArgs:"{{function}} requires a minimum of {{min}} arguments but {{actual}} provided!",functionMaxArgs:"{{function}} allows a maximum of {{max}} arguments but {{actual}} provided!",invalidFunctionDeclaration:"Invalid function declaration {{declaration}}.",indexOutOfBounds:"Index {{index}} out of bounds for {{type}} of length {{length}}",matrixRowIndexOutOfBounds:"Row index {{index}} out of bounds for Matrix with {{length}} rows",matrixColumnIndexOutOfBounds:"Column index {{index}} out of bounds for Matrix with {{length}} columns",dictionaryKeyNotFound:'Key "{{key}}" not found in Dictionary. Available keys: {{keys}}',rangeValuesFinite:"Range values must be finite.",rangeStepNonzero:"Step cannot be zero",rangeStepNoAdvance:"Step does not advance range at current precision",sparseVariableCountInvalid:"SparsePolynomial variableCount must be a non-negative safe integer.",sparseExponentVectorLengthMismatch:"SparsePolynomial exponent vector length must equal variableCount.",sparseExponentsNonNegativeBigInt:"SparsePolynomial exponents must be non-negative bigints.",sparseVariableIndexOutOfRing:"SparsePolynomial variable index is outside the polynomial ring.",sparseAdditionRingMismatch:"SparsePolynomial addition requires the same polynomial ring.",sparseCoefficientExponentNonNegative:"SparsePolynomial coefficient exponent must be non-negative.",sparseZeroMonomialDivision:"SparsePolynomial cannot divide by a zero monomial.",sparseZeroScalarDivision:"SparsePolynomial cannot divide by zero.",sparseScalarDivisionExact:"SparsePolynomial scalar division must be exact for every coefficient.",sparseDivisionRingMismatch:"SparsePolynomial division requires the same polynomial ring.",sparseZeroPolynomialDivision:"SparsePolynomial cannot divide by the zero polynomial.",sparseMonomialOrderUnsupported:"SparsePolynomial monomial order is not supported.",sparseMultiplicationRingMismatch:"SparsePolynomial multiplication requires the same polynomial ring.",sparseExponentNonNegative:"SparsePolynomial exponent must be non-negative.",sparseSubtractionRingMismatch:"SparsePolynomial subtraction requires the same polynomial ring.",invalidDecimal:'Invalid Decimal: "{{value}}"',invalidInterval:"Invalid interval: ({{start}}, {{end}})",invalidAssumption:'Invalid assumption: "{{input}}"',assumptionIdentifierExpected:"Expected identifier",assumptionOperatorMissing:"Missing operator",assumptionValueMissing:"Missing value",assumptionOperatorUnsupported:'Unsupported operator "{{operator}}"',matrixStringKeyUnsupported:"Matrix does not support string key access",matrixTraceUnavailable:"Unable to calculate trace for the matrix",defintMaxEvals:"defint: maxEvals exceeded ({{max}}).",defintNonFiniteValue:"defint: non-finite f(x) at x={{x}}",defintEndpointSingularity:"defint: endpoint singularity could not be regularized near x={{x}}",defintSingularity:"defint: singular/non-finite encountered near [{{a}}, {{b}}]",defintInfiniteBounds:"defint: infinite bounds require allowInfinite: true",defintUnsupportedInfiniteBounds:"defint: unsupported infinite bound configuration",symbolicAccessNamedTargetRequired:"Symbolic indexed access requires a named Vector or Matrix target.",symbolicVectorIndexCount:"Symbolic Vector access requires exactly one index.",symbolicMatrixRowNonScalar:"Symbolic Matrix row access is not scalar and cannot be deferred as an Expression.",symbolicMatrixCellIndexCount:"Symbolic Matrix cell access requires exactly two indices.",symbolicAccessMaxIndices:"Symbolic indexed access supports at most two unresolved indices.",symbolicAccessIndexScalar:"Symbolic accessor indices must evaluate to scalar expressions.",symbolicAccessTargetType:"Symbolic indexed access target must resolve to a Vector or Matrix.",expectedOperatorOrFunction:'Expected operator or function name but "{{value}}" found!',missingOpeningBracket:'Missing opening bracket for "{{bracket}}":{{position}}',missingClosingBracket:'Missing closing bracket for "{{bracket}}":{{position}}',prefixOperatorExpected:"Prefix operator expected but {{operator}} encountered.",groebnerBasisSizeBudgetExceeded:"Groebner budget exceeded: basis size > {{max}}",groebnerPairsBudgetExceeded:"Groebner budget exceeded: pairsPopped > {{max}}",unsupportedParserEntity:"Unsupported parser entity",factorialNegativeUndefined:"Factorial is undefined for negative integers.",erfConvergenceFailed:"erf not converging. Exiting!",defintInfiniteBoundsDecimal:"defint: infinite bounds require allowInfinite:true",seqStartsAtInteger:"startsAt must be an integer",seqPolynomialOrMaxPower:"Sequence is not a polynomial or exceeds maxPower",seqInsufficientData:"Insufficient data points for detected degree",arithPowNegativeExponent:"pow: negative exponent",arithPowNNonnegativeInteger:"powN: exponent must be a nonnegative integer",arithBigIntSqrtNegative:"bigIntSqrt: negative input",arithNthRootPositiveInteger:"intNthRootExact: n must be a positive integer",arithDivisorsPositive:"getDivisors: n must be positive",arithModNormNonzeroModulus:"modNorm: modulus must be nonzero",arithModSymmetricNonzeroModulus:"modSymmetric: modulus must be nonzero",arithModInvZeroNoninvertible:"modInv: non-invertible (0)",arithModInvNoninvertible:"modInv: non-invertible",integerSqrtNonnegative:"Integer square root requires a non-negative value.",modularExponentiationPositiveModulus:"Modular exponentiation requires a positive modulus.",modularExponentiationNonnegativeExponent:"Modular exponentiation requires a non-negative exponent.",maxBigIntRequiresArgument:"maxBigInt() requires at least one argument",minBigIntEmpty:"Min of empty list is not defined for BigInt.",binomBigIntNonnegativeN:"binomBigInt: n must be non-negative",invalidDecimalValue:"Invalid decimal value: {{value}}",subtractionNotDefined:"Subtraction not defined for {{leftType}}-{{rightType}} | {{left}}-{{right}}",sparseAdapterVariablesUnique:"Sparse polynomial adapter variables must be unique.",sparseAdapterVariablesIncludeEvery:"Sparse polynomial adapter variables must include every polynomial variable.",sparseExpressionConversionNameCount:"Sparse polynomial expression conversion requires one name per ring variable.",converterMissingArgumentScope:"Missing argument scope for function {{function}}",converterMissingPrefixOperand:"Missing operand for prefix operator {{operator}}",converterMissingOperandMetadata:"Missing operand or metadata for operator {{operator}}",converterMissingLeftOperand:"Missing left operand for operator {{operator}}",converterTexConversionFailed:"Unable to convert source expression to TeX",unknownOperator:"Unknown operator {{operator}}",polynomialMaximumIterations:"Maximum iterations reached",polyRequires:"{{operation}} requires {{requirement}}.",polyVariablesUnique:"{{operation}} variables must be unique.",polyVariablesRingOrder:"{{operation}} variables must follow polynomial-ring order.",polyVariablesIncludeActive:"{{operation}} variables must include every active variable.",polyInputsSelectedOnly:"{{operation}} inputs may use only the selected variables.",polyCannotFactorZeroPolynomial:"{{operation}} cannot factor the zero polynomial.",polyCannotFactorZero:"{{operation}} cannot factor zero.",polyModulusGreaterThanOne:"ModularSparsePolynomial modulus must be greater than one.",polyVariableCountMatch:"ModularSparsePolynomial variableCount must match the supplied sparse polynomial.",polyInterpolationCannotDepend:"ModularSparsePolynomial interpolation samples cannot depend on the interpolated variable.",polyInterpolationInvertibleDifferences:"ModularSparsePolynomial interpolation points must have invertible pairwise differences.",polyCoefficientExponentNonnegative:"ModularSparsePolynomial coefficient exponent must be non-negative.",polyCannotDivideZero:"ModularSparsePolynomial cannot divide by the zero polynomial.",polyDivisorLeadingCoefficientInvertible:"ModularSparsePolynomial divisor leading coefficient is not invertible.",polyLeadingCoefficientInvertible:"ModularSparsePolynomial leading coefficient is not invertible.",polyExponentNonnegative:"ModularSparsePolynomial exponent must be non-negative.",polyDegreeMatrixLimit:"Modular factorization degree exceeds the supported matrix dimension.",polyExtendedGcdTwoZeroUndefined:"Modular extended GCD is undefined for two zero polynomials.",polyHenselPrimeExceedsTailDegree:"Multivariate Hensel lifting prime must exceed every tail-variable degree.",polyHenselTargetNotSmaller:"Hensel lifting target modulus cannot be smaller than the base prime.",polyHenselTargetRepeatedSquaring:"Hensel lifting target modulus must be obtained by repeated squaring of the base prime.",polyHenselFactorsReconstructModuloBase:"Hensel lifting factors do not reconstruct the integer polynomial modulo the base prime.",polyZassenhausFactorsReconstructModuloLift:"Zassenhaus recombination factors do not reconstruct the input modulo the lift modulus.",polyWangCannotSpecializeZero:"Wang evaluation search cannot specialize zero.",polyModularContentExactDivision:"Modular polynomial content must divide the polynomial exactly.",factorizationNoFactors:"Nonconstant factorization returned no factors.",polyCrtModuliInvertible:"Polynomial CRT moduli must be invertible.",polyIntegerFactorPrimeZero:"Integer factorization cannot choose a prime for zero.",polySquareFreeNonExactDivision:"Square-free factorization encountered a non-exact polynomial division.",polyZassenhausLostRemaining:"Zassenhaus recombination lost the remaining polynomial.",polyZassenhausReconstructionFailed:"Zassenhaus recombination factors do not reconstruct the integer polynomial.",polyIntegerFactorLostLeading:"Integer factorization lost the leading term.",parserMalformedSymbolicAccessor:"Malformed internal symbolic accessor.",parserMalformedSymbolicAccessorIndex:"Malformed internal symbolic accessor index.",unknownOperatorAction:"Unknown operator action {{action}}",parserBracketTokenMissingCharacter:"Bracket token is missing its character.",polyWangLeadingEvaluationInteger:"Wang leading-coefficient evaluation did not produce an integer.",polyWangSpecializedLeadingInteger:"Wang specialized factor did not have an integer leading coefficient.",polyMultivariateContentDivisionFailed:"Multivariate factorization could not divide a square-free block by its main-variable content.",polyMultivariateContentVariableMissing:"Multivariate main-variable content did not retain an active coefficient variable.",polyMultivariateReconstructionFailed:"Complete multivariate factorization does not reconstruct the input polynomial.",polyBerlekampNoninvertiblePivot:"Berlekamp elimination encountered a noninvertible pivot.",polyHenselZeroFactorGroup:"Hensel lifting cannot lift a zero factor group.",polyHenselCannotLiftZero:"Hensel lifting cannot lift the zero polynomial.",polyHenselModulusExceeded:"Hensel lifting exceeded the requested prime-power modulus.",polyHenselLeadingLost:"Hensel lifting lost the target leading coefficient.",polyHenselReconstructionFailed:"Hensel-lifted factors do not reconstruct the target polynomial.",polyBerlekampNonExactSplit:"Berlekamp splitting produced a non-exact factor division.",polyBerlekampIncompleteSplit:"Berlekamp factorization did not fully split the polynomial.",polyBerlekampReconstructionFailed:"Berlekamp factors do not reconstruct the input polynomial.",expressionKeyValueUnsupported:"The function 'keyValue' is not implemented for type {{type}}.",solveLinearNonlinearDegree:"Nonlinear term detected in equation {{equation}}: degree {{degree}} term found. solveLinearSystem only handles linear systems.",solveLinearNonPolynomialVariable:'Nonlinear term detected in equation {{equation}}: variable "{{variable}}" appears in a non-polynomial position. solveLinearSystem only handles linear systems.',polyReqPrimeModulus:"a prime modulus",polyReqUnivariatePolynomial:"a univariate polynomial",polyReqSquareFreeInput:"square-free input",polyReqSamePolynomialRing:"the same polynomial ring",polyReqAtLeastOneVariable:"at least one variable",polyReqAtLeastTwoSelectedVariables:"at least two selected variables",polyReqOneEvaluationPerTailVariable:"one evaluation value per tail variable",polyReqMatchingFactorLeadingLists:"matching factor and leading-coefficient lists",polyReqPairwiseCoprimeModularFactors:"pairwise coprime modular factors",polyReqPrimeBaseModulus:"a prime base modulus",polyReqAtLeastOneModularFactor:"at least one modular factor",polyReqUnivariateIntegerPolynomial:"a univariate integer polynomial",polyReqFactorsSameRingAndPrime:"factors from the same integer polynomial ring and base prime",polyReqUnivariateFactors:"univariate factors",polyReqMonicModularFactors:"monic modular factors",polyReqPrimitiveIntegerPolynomial:"a primitive integer polynomial",polyReqPositiveLeadingCoefficient:"a positive leading coefficient",polyReqLiftedModularFactors:"lifted modular factors",polyReqLiftedFactorsSameRing:"lifted factors from one polynomial ring",polyReqUnivariateLiftedFactors:"univariate lifted factors",polyReqMonicLiftedFactors:"monic lifted factors",polyReqLargerHenselModulus:"a larger Hensel lifting modulus",polyReqPrimitivePolynomial:"a primitive polynomial",polyReqPositiveLexLeadingSign:"positive lexicographic leading sign",polyReqSquareFreeMainVariable:"square-free input in the main variable",polyReqExactlyTwoSelectedVariables:"exactly two selected variables",polyReqExactlyTwoVariables:"exactly two variables",polyReqOneValuePerNonMainVariable:"one value for every non-main selected variable",polyReqOneValuePerTailVariable:"one value for every tail variable",polyReqPositiveDegreeMainVariable:"positive degree in the main variable",polyReqAllOtherVariablesDormant:"all other variables to be dormant",polyReqPositiveModuli:"positive moduli",polyReqCoprimeModuli:"coprime moduli",polyReqAtLeastOneSample:"at least one sample",polyReqInvertibleLeadingCoefficient:"an invertible leading coefficient",polyReqIntegerLeadingCoefficientInvertible:"the integer leading coefficient to be invertible modulo the base prime",infinityMinusInfinityUndefined:"Infinity-Infinity is undefined!",inconsistentAssumptions:"Assumptions are inconsistent (empty intersection)!",unsupportedType:"The provided type ({{type}}) is not supported for this function!",unsupportedOperation:"This operation is currently not supported!",buildFunctionUnsupportedFunction:'buildFunction cannot compile the function "{{function}}" to JavaScript number arithmetic!',buildFunctionComplexUnsupported:"buildFunction cannot compile expressions containing the imaginary unit to JavaScript number arithmetic!",nonMatchingDimensions:"This operation cannot be completed because the dimensions don't match!",malformedExpression:"Unable to parse malformed expression!",unsupportedCharacter:'Unsupported character "{{character}}" at position {{position}}.',missingCommentDelimiter:'Missing closing comment delimiter "{{delimiter}}".',divisionByZero:"Division by zero is not defined!",zeroToZeroPower:"0^0 is undefined!",infinityToPowerZero:"Infinity^0 is not defined!",infinityTimesZero:"0*Infinity is not defined!",infinityToInfinity:"Infinity^Infinity is not defined!",valueToInfinityUndefined:"{{value}}^Infinity is not defined!",atan2Undefined:"atan2 is undefined for 0, 0!",tanUndefined:"tan is undefined for multiples of pi/2!",loopIterationLimitExceeded:"Loop exceeded the maximum of {{max}} iterations.",breakOutsideLoop:"break can only be used inside a loop.",continueOutsideLoop:"continue can only be used inside a loop.",letRequiresBindingsAndBody:"let requires one or more name/value pairs followed by a body expression.",secUndefined:"sec is undefined for odd multiples of pi/2!",cscUndefined:"csc is undefined for multiples of pi!",cotUndefined:"cot is undefined for multiples of pi!",cothUndefined:"coth is undefined for 0!",cschUndefined:"csch is undefined for 0!",atanhUndefined:"atanh is undefined for 0!",cannotCreateArrayFromNaN:"Cannot create array from NaN!",expressionExpected:"Expression expected!. Received {{type}}!",unrecognizedMode:'"{{mode}}" is is not a valid mode!',notAPolynomial:"The expression is not a valid polynomial!",multidegreeMismatch:"The number of variables must match the multidegree of the polynomial!",cannotCreateMatrix:"Unable to create Matrix. Row dimensions do not match!",cannotMultiplyMatrix:"Cannot multiply matrix!",squareMatrixRequired:"The matrix must be square!",rowsMustMatch:"The rows of the matrices must match!",columnsMustMatch:"The columns of the matrices must match!",singularMatrix:"The provided matrix is singular!",matrixExpected:"Matrix expected! Received {{type}}.",mismatchedDimensions:'The dimensions must match for the function "{{function}}"!',incorrectCrossDimension:"The cross product is only defined for vectors of dimension 3!",vectorExpected:"Expected Vector! Received {{type}}.",univariatePolynomialOnly:"This function is only supported for univariate polynomials!",unknownVariable:'Unknown variable! "{{variable}}"',convergenceFailed:"Failed to converge! {{iters}} iterations were tried.",endPointIsRoot:"End point is root.",zeroDerivative:"The derivative is zero at x = {{x}}. Cannot continue.",tooManyUnknowns:"Too many unknowns!",solveSystemInfiniteSolutions:"This system does not have a finite isolated solution set!",solveSystemPolynomialOnly:"solveSystem currently supports only linear or polynomial systems!",solveSystemNonRationalUnsupported:"This nonlinear polynomial system requires non-rational or non-symbolic solving, which is not yet supported!",setJSFunctionExpectsFunction:"The function parameter when setting a JS function must be of type function!",functionRequiresMinAndMaxArgs:"You must provide a min and max arg when setting the function!"},Qe={eng:Ke};function registerLanguage(e,t){Qe[e]=t}function message(e,t){return function format(e,t){const replace=function(e,t,n){return e.replace(new RegExp(`{{${t}}}`,"g"),n)};if(Array.isArray(t))for(let n=0;n<t.length;n++)e=replace(e,String(n),t[n]);else for(const n in t)e=replace(e,n,t[n]);return e}((Qe[Ge.LANGUAGE]??Qe.eng)[e],t||{})}class Dictionary extends StructuredEntity{_entries=new Map;dataType="DIC";isEnumerable=!0;precision;constructor(e){super(),e&&(this._entries=e)}static isDictionary(e){return isNerdamerNativeType(e,"DIC")}__get__(e){const t="string"==typeof e?e:String(e[0]),n=this._entries.get(t);if(void 0===n)throw new UnexpectedDataType(message("dictionaryKeyNotFound",{key:t,keys:this.keys().join(", ")}));return n}__set__(e,t){const n="string"==typeof e?e:String(e[0]);this._entries.set(n,t)}copy(){const e=new Map;for(const[t,n]of this._entries)e.set(t,n.copy());return new Dictionary(e)}count(){return this._entries.size}delete(e){return this._entries.delete(e)}dimensions(){return[this._entries.size]}each(e){for(const[t,n]of this._entries){const i=e(n,t);void 0!==i&&this._entries.set(t,i)}return this}get elements(){return[...this._entries.values()]}set elements(e){const t=[...this._entries.keys()];this._entries.clear();for(let n=0;n<t.length&&n<e.length;n++)this._entries.set(t[n],e[n])}entries(){return[...this._entries.entries()]}eq(e){if(!Dictionary.isDictionary(e))return!1;if(this._entries.size!==e._entries.size)return!1;for(const[t,n]of this._entries){const i=e._entries.get(t);if(!i||!n.eq(i))return!1}return!0}evaluate(){return this.copy().each(e=>e.evaluate())}expand(){const e=this.copy();return e.each(e=>e.expand()),e}forEach(e){for(const[t,n]of this._entries)e(n,t)}get(e){return this._entries.get(e)}gt(e){return!1}gte(e){return this.eq(e)}has(e){return this._entries.has(e)}keys(){return[...this._entries.keys()]}lt(e){return!1}lte(e){return this.eq(e)}merge(e){for(const[t,n]of e._entries)this._entries.set(t,n);return this}set(e,t){return this._entries.set(e,t),this}[Symbol.iterator](){return this._entries[Symbol.iterator]()}text(){const e=[];for(const[t,n]of this._entries)e.push(`${t} => ${n.text()}`);return`{${e.join(", ")}}`}values(){return[...this._entries.values()]}}function arrayAddUnique(e,t){for(const n of e)t.includes(n)||t.push(n);return t}function isSorted(e){if(e.length<=1)return!0;for(let t=1;t<e.length;t++)if(e[t-1]>e[t])return!1;return!0}function bigint_abs(e){return e<0n?-e:e}function uniqueSortedArray(e){return function arrayUnique(e){return[...new Set(e)]}([].slice.call(e).map(function(e){return bigint_abs(e)})).sort()}function bigint_GCD(...e){let t=(e=uniqueSortedArray(e))[0];for(let n=1;n<e.length;n++){let i=e[n];for(;;){if(t%=i,0n===t){t=i;break}if(i%=t,0n===i)break}}return t}function LCM(...e){let t=(e=uniqueSortedArray(e))[0];for(let n=1;n<e.length;n++){const i=e[n];t=t*i/bigint_GCD(t,i)}return t}function simplifyRatio(e,t){if(1n!==t){const n=bigint_GCD(t,e);return[e/n,t/n]}return[e,t]}function convert(e){const[t,n]=function decimalSplit(e){const t=e.split(".");if(t.length>2)throw new SyntaxError(message("invalidDecimalValue",{value:e}));return 1===t.length&&t.push(""),t}(e),i=10n**BigInt(n.length);return simplifyRatio(BigInt(t+n),i)}function bigint_sign(e){return 0n===e?0:e<0n?-1:1}function isEven(e){return e%2n==0n}function ceilIntegerSquareRoot(e){const t=function integerSquareRoot(e){if(e<0n)throw new RangeError(message("integerSqrtNonnegative"));if(e<2n)return e;let t=1n<<(BigInt(e.toString(2).length)+1n>>1n);for(;;){const n=t+e/t>>1n;if(n>=t)return t;t=n}}(e);return t*t===e?t:t+1n}const Je=function(){const e=[1n,1n];let t=2;function bigFactorial(n){if("bigint"==typeof n&&(n=Number(n)),n<0)throw new RangeError(message("factorialNegativeUndefined"));if(void 0!==e[n])return e[n];let i=e[t-1];for(;t<=n;t++)e[t]=i*=BigInt(t);return i}return bigFactorial(100),bigFactorial}();function bigint_mod(e,t){let n;return n=bigint_sign(e)===bigint_sign(t)?e%t:(e%t+t)%t,n}function powMod(e,t,n){if(n<=0n)throw new RangeError(message("modularExponentiationPositiveModulus"));if(t<0n)throw new RangeError(message("modularExponentiationNonnegativeExponent"));let i=1n%n,s=bigint_mod(e,n),r=t;for(;r>0n;)r%2n==1n&&(i=i*s%n),s=s*s%n,r/=2n;return i}function invMod(e,t){let n=-1n;const i=bigint_abs(t);if(0n!==i){let t=0n,s=1n,r=i,o=bigint_mod(e,i);for(;0n!==o;){const e=r/o;[t,s]=[s,t-e*s],[r,o]=[o,r-e*o]}1n===r&&(n=bigint_mod(t,i))}return n}const Ye=1e9;function validateScientificSignificantDigits(e,t=String(e)){if("number"!=typeof e||!Number.isInteger(e)||e<1||e>Ye)throw new UnexpectedInputError(message("wrongInput",{expected:"an integer from 1 to 1000000000",received:t}));return e}class Rational{static E=Rational.create(le.e());static PI=Rational.create(le.pi());static precision=q.precision;asDecimal=!1;dataType="RAT";denominator;numerator;value;constructor(e,t){this.numerator=e,this.denominator=t,this.value=1n===t?String(e):`${e}/${t}`}static allNegative(...e){for(const t of e)if(-1!==t.sign())return!1;return!0}static create(e){let t,n,i=!1;if("bigint"==typeof e)t=e,n=1n,e=String(t);else if(/^[+-]?\d+$/.test(e))t=BigInt(e),n=1n;else if(e.includes("/")){if([t,n]=e.split("/").map(e=>BigInt(e)),0n===n)throw new DivisionByZeroError(message("divisionByZero"));n<0n&&(t=-t,n=-n),[t,n]=simplifyRatio(t,n),e=1n===n?String(t):`${t}/${n}`}else{const s=e.toLocaleLowerCase().includes("e");i=s||e.includes("."),s&&(e=scientificToDecimal(e),i=!0),[t,n]=convert(e)}const s=new Rational(t,n);return s.value=e,s.asDecimal=i,s}static GCD(...e){let t=e[0];for(let n=1;n<e.length;n++)t=t.GCD(e[n]);return t}static getPrecision(){return Rational.precision}static hook(e){return e}static isRational(e){return isNerdamerNativeType(e,"RAT")}static LCM(...e){let t=e[0];for(let n=1;n<e.length;n++)t=t.LCM(e[n]);return t}static set(e){if("precision"in e){const t=Number(e.precision);q.set({precision:t}),Rational.precision=t,Rational.PI=Rational.create(le.pi()),Rational.E=Rational.create(le.e())}}static toRational(e,t=!1){return"string"==typeof e?Rational.create(e):t?e.copy():e}abs(){const e=this.copy();return e.numerator=bigint_abs(e.numerator),e.updateValue(),e}copy(){const e=new Rational(this.numerator,this.denominator);return e.value=this.value,e.asDecimal=this.asDecimal,e}div(e){let t;return Expression_Expression.isExpression(e)?t=Expression_Expression.create(this).div(e):(e=Rational.toRational(e,!0),t=this.times(e.invert())),t}eq(e){return Expression_Expression.isExpression(e)?Expression_Expression.create(this).eq(e):(e=Rational.toRational(e),this.numerator*e.denominator===e.numerator*this.denominator)}evenDenominator(){return isEven(this.denominator)}evenNumerator(){return isEven(this.numerator)}GCD(e){e=Rational.toRational(e);const[t,n]=simplifyRatio(bigint_GCD(this.numerator*e.denominator,this.denominator*e.numerator),this.denominator*e.denominator),i=new Rational(t,n);return i.asDecimal=this.asDecimal||e.asDecimal,i}gt(e){return Expression_Expression.isExpression(e)?Expression_Expression.create(this).gt(e):(e=Rational.toRational(e),this.numerator*e.denominator>e.numerator*this.denominator)}gte(e){return e=Rational.toRational(e),this.numerator*e.denominator>=e.numerator*this.denominator}invert(){if(this.isZero())throw new DivisionByZeroError(message("divisionByZero"));const e=this.copy(),t=e.sign();return e.numerator=bigint_abs(e.numerator),[e.numerator,e.denominator]=[e.denominator,e.numerator],-1===t?e.neg():e.updateValue()}isEven(){return this.isInteger()&&this.evenNumerator()}isInteger(){return 1n===this.denominator}isMinusOne(){return-1n===this.numerator&&1n===this.denominator}isNegative(){return this.numerator<0n}isOne(){return 1n===this.numerator&&1n===this.denominator}isZero(){return 0n===this.numerator}LCM(e){e=Rational.toRational(e);let t=0n,n=1n;this.isZero()||e.isZero()||([t,n]=simplifyRatio(bigint_abs(this.numerator*e.numerator),bigint_GCD(this.numerator*e.denominator,this.denominator*e.numerator)));const i=new Rational(t,n);return i.asDecimal=this.asDecimal||e.asDecimal,i}lt(e){return e=Rational.toRational(e),this.numerator*e.denominator<e.numerator*this.denominator}lte(e){return e=Rational.toRational(e),this.numerator*e.denominator<=e.numerator*this.denominator}minus(e){let t;return Expression_Expression.isExpression(e)?t=Expression_Expression.create(this).minus(e):(e=Rational.toRational(e,!0),t=this.plus(e.neg())),t}mod(e){e=Rational.toRational(e);const t=bigint_mod(this.numerator*e.denominator,e.numerator*this.denominator),n=this.denominator*e.denominator,i=new Rational(...simplifyRatio(t,n));return i.asDecimal=this.asDecimal||e.asDecimal,i}neg(){const e=this.copy();return e.numerator*=-1n,e.updateValue(),e}plus(e){let t;if(Expression_Expression.isExpression(e))t=Expression_Expression.create(this).plus(e);else{let n,i;(e=Rational.toRational(e)).denominator===this.denominator?(n=e.numerator+this.numerator,i=e.denominator):(n=this.numerator*e.denominator+e.numerator*this.denominator,i=this.denominator*e.denominator),[n,i]=simplifyRatio(n,i),t=new Rational(n,i),t.asDecimal=this.asDecimal||e.asDecimal}return t}pow(e){let t;if(Expression_Expression.isExpression(e))t=Expression_Expression.create(this).pow(e);else{if(e=Rational.toRational(e),this.isZero()&&e.isZero())throw new ZeroToZeroPowerError(message("zeroToZeroPower"));if(e.isInteger()){let n=e.numerator,i=this.numerator,s=this.denominator;if(n<0n){const e=this.invert();i=e.numerator,s=e.denominator,n=bigint_abs(n)}const[r,o]=simplifyRatio(i**n,s**n);t=new Rational(r,o),t.asDecimal=this.asDecimal}else{const n=this.toDecimal().toPower(e.toDecimal()).toString();t=Rational.create(n),t.asDecimal=this.asDecimal||t.asDecimal}}return t}sign(){return bigint_sign(this.numerator)}text(e){let t,n;const i=this.isInteger(),s=i?(this.numerator<0n?-this.numerator:this.numerator).toString().length:0,r=!0===e?.exactScientific,o=e&&"scientific"in e&&void 0!==e.scientific?validateScientificSignificantDigits(e.scientific):void 0;if(void 0!==o)if(this.isZero())n="0";else{const e=q.precision,t=Math.max(e,o);try{t!==e&&q.set({precision:t});const a=this.toDecimal().toExponential(o-1),[l,u]=a.split("e"),c=BigInt(u),p=0n===c?l:`${l}e${c}`;(!r||i&&s>o&&0n!==c&&Rational.create(p).eq(this))&&(n=p)}finally{q.precision!==e&&q.set({precision:e})}}if(void 0!==n)t=n;else if(this.asDecimal||e?.decimal)if(i)t=`${this.numerator}.0`;else{const n=q.precision,i=Number(e?.precision)||n;if(i===n)t=this.toDecimal().toString();else try{q.set({precision:i}),t=this.toDecimal().toString()}finally{q.set({precision:n})}t.includes(".")||/[eE]/.test(t)||(t+=".0")}else t=i?`${this.numerator}`:`${this.numerator}/${this.denominator}`;return t}times(e){let t;if(Expression_Expression.isExpression(e))t=e.times(this);else{e=Rational.toRational(e);const[n,i]=simplifyRatio(this.numerator*e.numerator,this.denominator*e.denominator);t=new Rational(n,i),t.asDecimal=this.asDecimal||e.asDecimal}return t}toDecimal(){let e=new q(String(this.numerator));return 1n!==this.denominator&&(e=e.div(String(this.denominator))),e}toDecimalString(e){const t=bigint_sign(this.numerator),n=bigint_abs(this.numerator),i=this.denominator,s=n/i,r=n%i,o=e??Rational.precision,a=(10n**BigInt(o)*r/i).toString();return`${t<0?"-":""}${s}.${"0".repeat(Math.max(0,o-a.length))}${a}`.replace(/0+$/g,"").replace(/\.$/g,"")}toString(e){return this.text(e)}updateValue(){return this.value=1n===this.denominator?String(this.numerator):`${this.numerator}/${this.denominator}`,this}valueOf(){const e=Number(this.numerator),t=Number(this.denominator);let n;return n=Number.isSafeInteger(e)&&Number.isSafeInteger(t)?e/t:Number(this.toDecimal()),n}}function isIdentChar(e){return/[A-Za-z0-9_]/.test(e)}function normalizeAssumptionValue(e){let t,n;return Rational.isRational(e)?(n=e.copy(),t=n.toDecimal()):(t="number"==typeof e||"string"==typeof e?new q(e):e,t.isFinite()&&(n=Rational.create(t.toString()))),{value:t,exact:n}}function compareBoundValues(e,t,n,i){let s;if(e.isFinite()&&n.isFinite()){const r=t??Rational.create(e.toString()),o=i??Rational.create(n.toString());s=r.lt(o)?-1:r.gt(o)?1:0}else s=e.eq(n)?0:e.lt(n)?-1:1;return s}function compareNumericExpressionToBound(e,t,n){let i;if(e.isNegInf())i=t.eq(-1/0)?0:-1;else if(e.isPosInf())i=t.eq(1/0)?0:1;else if(e.isNUM())if(t.isFinite()){const s=n??Rational.create(t.toString()),r=e.getMultiplier();i=r.lt(s)?-1:r.gt(s)?1:0}else i=t.lt(0)?1:-1;return i}class Assumption{endExact;startExact;dataType=J;end;isSingleton;start;constructor(e,t,n=!0,i=!0){const s=normalizeAssumptionValue(e),r=normalizeAssumptionValue(t),o=s.value,a=r.value,l=o.isFinite()&&!!n,u=a.isFinite()&&!!i,c=o.isNaN()||a.isNaN()?void 0:compareBoundValues(o,s.exact,a,r.exact);if(void 0===c||c>0||0===c&&(!l||!u))throw new Error(message("invalidInterval",{start:o.toString(),end:a.toString()}));this.start=Object.freeze({value:o,inclusive:l}),this.end=Object.freeze({value:a,inclusive:u}),this.startExact=s.exact,this.endExact=r.exact,this.isSingleton=0===c&&this.start.inclusive&&this.end.inclusive,Object.freeze(this)}static atLeast(e,t=!0){return new Assumption(e,1/0,!!t,!1)}static atMost(e,t=!0){return new Assumption(-1/0,e,!1,!!t)}static exactly(e){return new Assumption(e,e,!0,!0)}static isAssumption(e){return isNerdamerNativeType(e,J)}static parse(e){if("string"!=typeof e)throw new Error(message("invalidAssumption",{input:String(e)}));const t=e.replace(/\s+/g,"");if(!t)throw new Error(message("invalidAssumption",{input:e}));if(t.length<3)throw new Error(message("invalidAssumption",{input:e}));let n=0;if(!function isIdentStart(e){return/[A-Za-z_]/.test(e)}(t[n]))throw new Error(message("assumptionIdentifierExpected"));let i=n+1;for(;i<t.length&&isIdentChar(t[i]);)i++;const s=t.slice(n,i);n=i;let r="";for(;n<t.length;){const e=t[n];if("<"!==e&&">"!==e&&"="!==e)break;r+=e,n++}if(!r)throw new Error(message("assumptionOperatorMissing"));const o=t.slice(n);if(!o)throw new Error(message("assumptionValueMissing"));const a=function parseNumber(e){const t=String(e).toLowerCase();if("inf"===t||"infinity"===t||"+inf"===t||"+infinity"===t)return new q(1/0);if("-inf"===t||"-infinity"===t)return new q(-1/0);const n=new q(t);if(n.isNaN())throw new Error(message("invalidDecimal",{value:String(e)}));return n}(o);let l;switch(r){case">":l={symbol:s,assumption:Assumption.atLeast(a,!1)};break;case">=":l={symbol:s,assumption:Assumption.atLeast(a,!0)};break;case"<":l={symbol:s,assumption:Assumption.atMost(a,!1)};break;case"<=":l={symbol:s,assumption:Assumption.atMost(a,!0)};break;case"=":case"==":l={symbol:s,assumption:Assumption.exactly(a)};break;default:throw new Error(message("assumptionOperatorUnsupported",{operator:r}))}return l}contains(e){const t=normalizeAssumptionValue(e);let n=!t.value.isNaN();return(n&&(compareBoundValues(t.value,t.exact,this.start.value,this.startExact)<0||compareBoundValues(t.value,t.exact,this.end.value,this.endExact)>0)||n&&0===compareBoundValues(t.value,t.exact,this.start.value,this.startExact)&&!this.start.inclusive||n&&0===compareBoundValues(t.value,t.exact,this.end.value,this.endExact)&&!this.end.inclusive)&&(n=!1),n}eq(e){let t;if(Expression_Expression.isExpression(e)){const n=compareNumericExpressionToBound(e,this.start.value,this.startExact),i=compareNumericExpressionToBound(e,this.end.value,this.endExact);void 0!==n&&void 0!==i&&(n<0||i>0||0===n&&!this.start.inclusive||0===i&&!this.end.inclusive?t=!1:this.isSingleton&&(t=!0))}else this.isSingleton&&e.isSingleton?t=0===compareBoundValues(this.start.value,this.startExact,e.start.value,e.startExact):this.overlaps(e)||(t=!1);return t}getSingletonValue(){let e;return this.isSingleton&&this.startExact&&(e=Expression_Expression.fromRational(this.startExact)),e}gt(e){let t;if(Expression_Expression.isExpression(e)){const n=compareNumericExpressionToBound(e,this.start.value,this.startExact),i=compareNumericExpressionToBound(e,this.end.value,this.endExact);void 0!==n&&void 0!==i&&(n<0||0===n&&!this.start.inclusive?t=!0:i>=0&&(t=!1))}else{const n=compareBoundValues(this.start.value,this.startExact,e.end.value,e.endExact),i=compareBoundValues(this.end.value,this.endExact,e.start.value,e.startExact);n>0||0===n&&(!this.start.inclusive||!e.end.inclusive)?t=!0:i<=0&&(t=!1)}return t}gte(e){let t;if(Expression_Expression.isExpression(e)){const n=compareNumericExpressionToBound(e,this.start.value,this.startExact),i=compareNumericExpressionToBound(e,this.end.value,this.endExact);void 0!==n&&void 0!==i&&(n<=0?t=!0:(i>0||0===i&&!this.end.inclusive)&&(t=!1))}else{const n=compareBoundValues(this.start.value,this.startExact,e.end.value,e.endExact),i=compareBoundValues(this.end.value,this.endExact,e.start.value,e.startExact);n>=0?t=!0:(i<0||0===i&&(!this.end.inclusive||!e.start.inclusive))&&(t=!1)}return t}intersect(e){const t=compareBoundValues(this.start.value,this.startExact,e.start.value,e.startExact),n=compareBoundValues(this.end.value,this.endExact,e.end.value,e.endExact);let i,s,r,o;t>0?(i=this.startExact??this.start.value,s=this.start.inclusive):t<0?(i=e.startExact??e.start.value,s=e.start.inclusive):(i=this.startExact??this.start.value,s=this.start.inclusive&&e.start.inclusive),n<0?(r=this.endExact??this.end.value,o=this.end.inclusive):n>0?(r=e.endExact??e.end.value,o=e.end.inclusive):(r=this.endExact??this.end.value,o=this.end.inclusive&&e.end.inclusive);const a=normalizeAssumptionValue(i),l=normalizeAssumptionValue(r),u=compareBoundValues(a.value,a.exact,l.value,l.exact);let c;return(u<0||0===u&&s&&o)&&(c=new Assumption(i,r,s,o)),c}lt(e){let t;if(Expression_Expression.isExpression(e)){const n=compareNumericExpressionToBound(e,this.start.value,this.startExact),i=compareNumericExpressionToBound(e,this.end.value,this.endExact);void 0!==n&&void 0!==i&&(i>0||0===i&&!this.end.inclusive?t=!0:n<=0&&(t=!1))}else{const n=compareBoundValues(this.end.value,this.endExact,e.start.value,e.startExact),i=compareBoundValues(this.start.value,this.startExact,e.end.value,e.endExact);n<0||0===n&&(!this.end.inclusive||!e.start.inclusive)?t=!0:i>=0&&(t=!1)}return t}lte(e){let t;if(Expression_Expression.isExpression(e)){const n=compareNumericExpressionToBound(e,this.start.value,this.startExact),i=compareNumericExpressionToBound(e,this.end.value,this.endExact);void 0!==n&&void 0!==i&&(i>=0?t=!0:(n<0||0===n&&!this.start.inclusive)&&(t=!1))}else{const n=compareBoundValues(this.end.value,this.endExact,e.start.value,e.startExact),i=compareBoundValues(this.start.value,this.startExact,e.end.value,e.endExact);n<=0?t=!0:(i>0||0===i&&(!this.start.inclusive||!e.end.inclusive))&&(t=!1)}return t}overlaps(e){const t=compareBoundValues(this.end.value,this.endExact,e.start.value,e.startExact),n=compareBoundValues(this.start.value,this.startExact,e.end.value,e.endExact);let i=!0;return t<0||n>0?i=!1:0===t?i=this.end.inclusive&&e.start.inclusive:0===n&&(i=this.start.inclusive&&e.end.inclusive),i}sameInterval(e){return 0===compareBoundValues(this.start.value,this.startExact,e.start.value,e.startExact)&&0===compareBoundValues(this.end.value,this.endExact,e.end.value,e.endExact)&&this.start.inclusive===e.start.inclusive&&this.end.inclusive===e.end.inclusive}toString(){const e=this.start.inclusive?"[":"(",t=this.end.inclusive?"]":")";return`${e}${this.start.value}, ${this.end.value}${t}`}}const et=new Map;function hasAssumptions(){return 0!==et.size}function setAssumption(e,t){if(Expression_Expression.RESERVED.includes(e)||He.includes(e)||e===Expression_Expression.imaginary)throw new UnexpectedInputError(message("plainVariableExpected",{input:e}));const n=et.get(e);let i=t;if(n){const e=n.intersect(t);if(!e)throw new UnexpectedInputError(message("inconsistentAssumptions"));i=e}return et.set(e,i),i}function assume(e,t){let n;if(1===arguments.length){const t=Assumption.parse(e);n=setAssumption(t.symbol,t.assumption)}else{const i=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(i))throw new UnexpectedInputError(message("plainVariableExpected",{input:i}));if("string"==typeof t){const e=Assumption.parse(t);if(e.symbol!==i)throw new UnexpectedInputError(message("wrongInput",{expected:i,received:e.symbol}));n=setAssumption(i,e.assumption)}else{if(!Assumption.isAssumption(t))throw new UnexpectedInputError(message("wrongInput",{expected:"string or Assumption",received:typeof t}));n=setAssumption(i,t)}}return n}function getAssumptionFor(e){let t;return Expression_Expression.isExpression(e)&&e.isPlainVariable()?t=e.value:"string"==typeof e&&(t=e),void 0===t?void 0:et.get(t)}function assuming(e){return e}function forget(e){return e.eq("all")?function clearAssumptions(){et.clear()}():function forgetAssumptionFor(e){let t;Expression_Expression.isExpression(e)&&e.isPlainVariable()?t=e.value:"string"==typeof e&&(t=e),void 0!==t&&et.delete(t)}(e),e}const tt={};function getFromCacheOrCreate(e){if(void 0===tt[e]){const t=Expression_Expression.Number(e);t.getMultiplier(),t.getPower(),Object.freeze(t),tt[e]=t}return tt[e]}function zero(){return getFromCacheOrCreate("0")}function half(){return getFromCacheOrCreate("1/2")}function one(){return getFromCacheOrCreate("1")}function minusOne(){return getFromCacheOrCreate("-1")}function two(){return getFromCacheOrCreate("2")}function three(){return getFromCacheOrCreate("3")}function four(){return getFromCacheOrCreate("4")}function six(){return getFromCacheOrCreate("6")}function eight(){return getFromCacheOrCreate("8")}function twentySeven(){return getFromCacheOrCreate("27")}function product(...e){let t=one();for(const n of e)t=t.times(n);return t}function utils_sum(...e){let t=zero();for(const n of e)t=t.plus(n);return t}function stripPower(e){const t=e.copy();return delete t.power,t}function cloneExpressionTree(e){const t=Expression_Expression.hook(e);if(!Expression_Expression.isExpression(t))return Expression_Expression.create(t);const n=t,i=Object.create(Expression_Expression.prototype);if(i.dataType=n.dataType,i.deferred=n.deferred,i.isEnumerable=n.isEnumerable,i.type=n.type,i.value=n.value,i.precision=n.precision,i.scientific=n.scientific,n.multiplier&&(i.multiplier=n.multiplier.copy()),void 0!==n.name&&(i.name=n.name),n.power&&(i.power=cloneExpressionTree(n.power)),n.args&&(i.args=n.args.map(cloneExpressionTree)),n.base&&(i.base=cloneExpressionTree(n.base)),n.elements){i.elements={};for(const e in n.elements)i.elements[e]=cloneExpressionTree(n.elements[e])}return i}function assertPlainVariableAndGetString(e){if(!e.isVAR())throw new UnexpectedInputError(message("plainVariableExpected",{input:e.text()}));return e.value}function isEnumerable(e){return void 0!==e&&!!e.isEnumerable}function toParserEntities(e){const t=[];for(let n=0;n<e.length;n++){const i=e[n];t.push(isEnumerable(i)?i:Expression_Expression.create(i))}return t}class MathematicalAggregate extends StructuredEntity{__get__(e){const t=e[0];if(t<0||t>=this.elements.length)throw new RangeError(message("indexOutOfBounds",{index:String(t),type:String(this.dataType),length:String(this.elements.length)}));return this.elements[t]}__set__(e,t){const n=e[0];if(n<0||n>=this.elements.length)throw new RangeError(message("indexOutOfBounds",{index:String(n),type:String(this.dataType),length:String(this.elements.length)}));this.elements[n]=t}clear(){return this.elements.length=0,this}count(){return this.elements.length}dimensions(){return[this.elements.length]}each(e){for(let t=0;t<this.elements.length;t++){const n=e(this.elements[t],t);void 0!==n&&(this.elements[t]=n)}return this}eq(e){if(!this.dimensionsMatch(e))return!1;const t=e.elements;for(let e=0;e<this.elements.length;e++)if(!this.elements[e].eq(t[e]))return!1;return!0}forEach(e){const t=this.elements;for(let n=0;n<t.length;n++)e(t[n],n)}gt(e){if(!this.dimensionsMatch(e))return!1;const t=e.elements;for(let e=0;e<this.elements.length;e++)if(!this.elements[e].gt(t[e]))return!1;return!0}gte(e){return this.gt(e)||this.eq(e)}lt(e){if(!this.dimensionsMatch(e))return!1;const t=e.elements;for(let e=0;e<this.elements.length;e++)if(!this.elements[e].lt(t[e]))return!1;return!0}lte(e){return this.lt(e)||this.eq(e)}sort(e){return e?(this.elements.sort(e),this):(this.elements.sort((e,t)=>{const n=e&&"function"==typeof e.text?e.text():String(e),i=t&&"function"==typeof t.text?t.text():String(t);return n<i?-1:n>i?1:0}),this)}[Symbol.iterator](){return this.elements[Symbol.iterator]()}toArray(){return[...this.elements]}}class Collection extends StructuredEntity{dataType="COL";elements=[];isEnumerable=!0;precision;constructor(e){super(),this.elements=e||[]}static isCollection(e){return isNerdamerNativeType(e,"COL")}__get__(e){const t=e[0];if(t<0||t>=this.elements.length)throw new RangeError(message("indexOutOfBounds",{index:String(t),type:"Collection",length:String(this.elements.length)}));return this.elements[t]}__set__(e,t){const n=e[0];if(n<0||n>=this.elements.length)throw new RangeError(message("indexOutOfBounds",{index:String(n),type:"Collection",length:String(this.elements.length)}));this.elements[n]=t}at(e){return this.elements[e]}copy(){const e=new Collection;return this.each((t,n)=>(e.elements[n]=t.copy(),t)),e}count(){return this.elements.length}dimensions(){return[this.elements.length]}each(e){for(let t=0;t<this.elements.length;t++){const n=e(this.elements[t],t);void 0!==n&&(this.elements[t]=n)}return this}eq(e){if(!Collection.isCollection(e)||e.elements.length!==this.elements.length)return!1;for(let t=0;t<this.elements.length;t++){const n=this.elements[t],i=e.elements[t];if(!n.eq(i))return!1}return!0}evaluate(){const e=this.copy();return e.each(e=>e.evaluate()),e}expand(){const e=this.copy();return e.each(e=>e.expand()),e}forEach(e){for(let t=0;t<this.elements.length;t++)e(this.elements[t],t)}getElements(){return this.elements}gt(e){if(!Collection.isCollection(e)||e.elements.length!==this.elements.length)return!1;for(let t=0;t<this.elements.length;t++){const n=this.elements[t],i=e.elements[t];if(!n.gt(i))return!1}return!0}gte(e){if(!Collection.isCollection(e)||e.elements.length!==this.elements.length)return!1;for(let t=0;t<this.elements.length;t++)if(!this.elements[t].gte(e.elements[t]))return!1;return!0}lt(e){if(!Collection.isCollection(e)||e.elements.length!==this.elements.length)return!1;for(let t=0;t<this.elements.length;t++){const n=this.elements[t],i=e.elements[t];if(!n.lt(i))return!1}return!0}lte(e){if(!Collection.isCollection(e)||e.elements.length!==this.elements.length)return!1;for(let t=0;t<this.elements.length;t++)if(!this.elements[t].lte(e.elements[t]))return!1;return!0}[Symbol.iterator](){return this.elements[Symbol.iterator]()}text(){return`(${this.elements.map(e=>e.text()).join(", ")})`}toArray(){return[...this.elements]}}function remove(e,t){const n=e.indexOf(t);return n>-1&&e.splice(n,1),e}class SparsePolynomial{termsByKey;variableCount;constructor(e,t=[]){if(!Number.isSafeInteger(e)||e<0)throw new RangeError(message("sparseVariableCountInvalid"));this.variableCount=e,this.termsByKey=new Map;for(const n of t){SparsePolynomial.assertExponents(e,n.exponents);const t=n.exponents.map(e=>e),i=Object.freeze(t),s=SparsePolynomial.keyOf(i),r=(this.termsByKey.get(s)?.coefficient??0n)+n.coefficient;0n===r?this.termsByKey.delete(s):this.termsByKey.set(s,Object.freeze({coefficient:r,exponents:i}))}}static assertExponents(e,t){if(t.length!==e)throw new RangeError(message("sparseExponentVectorLengthMismatch"));for(const e of t)if("bigint"!=typeof e||e<0n)throw new RangeError(message("sparseExponentsNonNegativeBigInt"))}static compareMonomials(e,t,n){if("lex"===n){for(let n=0;n<e.length;n++)if(e[n]!==t[n])return e[n]>t[n]?1:-1;return 0}let i=0n,s=0n;for(let n=0;n<e.length;n++)i+=e[n],s+=t[n];if(i!==s)return i>s?1:-1;if("grlex"===n){for(let n=0;n<e.length;n++)if(e[n]!==t[n])return e[n]>t[n]?1:-1;return 0}for(let n=e.length-1;n>=0;n--)if(e[n]!==t[n])return e[n]<t[n]?1:-1;return 0}static constant(e,t){return new SparsePolynomial(e,[{coefficient:t,exponents:new Array(e).fill(0n)}])}static keyOf(e){return e.join(",")}static monomial(e,t,n){return new SparsePolynomial(e,[{coefficient:t,exponents:n}])}static variable(e,t){if(!Number.isSafeInteger(t)||t<0||t>=e)throw new RangeError(message("sparseVariableIndexOutOfRing"));const n=new Array(e).fill(0n);return n[t]=1n,new SparsePolynomial(e,[{coefficient:1n,exponents:n}])}static zero(e){return new SparsePolynomial(e)}add(e){if(this.variableCount!==e.variableCount)throw new RangeError(message("sparseAdditionRingMismatch"));const t=SparsePolynomial.zero(this.variableCount);for(const[e,n]of this.termsByKey)t.termsByKey.set(e,n);for(const[n,i]of e.termsByKey){const e=t.termsByKey.get(n),s=(e?.coefficient??0n)+i.coefficient;0n===s?t.termsByKey.delete(n):void 0!==e&&s===e.coefficient||t.termsByKey.set(n,Object.freeze({coefficient:s,exponents:e?.exponents??i.exponents}))}return t}coefficient(e){return SparsePolynomial.assertExponents(this.variableCount,e),this.termsByKey.get(SparsePolynomial.keyOf(e))?.coefficient??0n}coefficientIn(e,t){if(this.degree(e),t<0n)throw new RangeError(message("sparseCoefficientExponentNonNegative"));const n=[];for(const i of this.termsByKey.values()){if(i.exponents[e]!==t)continue;const s=[...i.exponents];s[e]=0n,n.push({coefficient:i.coefficient,exponents:s})}return new SparsePolynomial(this.variableCount,n)}constantTerm(){const e=new Array(this.variableCount).fill(0n);return this.termsByKey.get(SparsePolynomial.keyOf(e))?.coefficient??0n}content(){let e=0n;for(const t of this.termsByKey.values())if(e=bigint_GCD(e,t.coefficient),1n===e)break;return e}degree(e){if(!Number.isSafeInteger(e)||e<0||e>=this.variableCount)throw new RangeError(message("sparseVariableIndexOutOfRing"));if(this.isZero())return null;let t=0n;for(const n of this.termsByKey.values())n.exponents[e]>t&&(t=n.exponents[e]);return t}derivative(e){this.degree(e);const t=[];for(const n of this.termsByKey.values()){const i=n.exponents[e];if(0n===i)continue;const s=n.exponents.map(e=>e);s[e]=i-1n,t.push({coefficient:n.coefficient*i,exponents:s})}return new SparsePolynomial(this.variableCount,t)}divideByMonomial(e){if(0n===e.coefficient)throw new RangeError(message("sparseZeroMonomialDivision"));SparsePolynomial.assertExponents(this.variableCount,e.exponents);const t=[];for(const n of this.termsByKey.values()){if(n.coefficient%e.coefficient!==0n)return null;const i=new Array(this.variableCount);for(let t=0;t<this.variableCount;t++){if(n.exponents[t]<e.exponents[t])return null;i[t]=n.exponents[t]-e.exponents[t]}t.push({coefficient:n.coefficient/e.coefficient,exponents:i})}return new SparsePolynomial(this.variableCount,t)}divideByScalarExact(e){if(0n===e)throw new RangeError(message("sparseZeroScalarDivision"));const t=SparsePolynomial.zero(this.variableCount);for(const[n,i]of this.termsByKey){if(i.coefficient%e!==0n)throw new RangeError(message("sparseScalarDivisionExact"));t.termsByKey.set(n,Object.freeze({coefficient:i.coefficient/e,exponents:i.exponents}))}return t}divideExact(e,t="lex"){if(this.variableCount!==e.variableCount)throw new RangeError(message("sparseDivisionRingMismatch"));const n=e.leadingTerm(t);if(null===n)throw new RangeError(message("sparseZeroPolynomialDivision"));let i=SparsePolynomial.zero(this.variableCount),s=new SparsePolynomial(this.variableCount,this.termsByKey.values());for(;!s.isZero();){const r=s.leadingTerm(t);if(null===r)break;const o=SparsePolynomial.monomial(this.variableCount,r.coefficient,r.exponents).divideByMonomial(n);if(null===o)return null;i=i.add(o),s=s.subtract(e.multiply(o))}return i}equals(e){if(this.variableCount!==e.variableCount||this.termCount!==e.termCount)return!1;for(const[t,n]of this.termsByKey)if(e.termsByKey.get(t)?.coefficient!==n.coefficient)return!1;return!0}evaluateVariable(e,t){this.degree(e);const n=SparsePolynomial.zero(this.variableCount);for(const[i,s]of this.termsByKey){const r=s.exponents[e];let o=0;for(let t=0;t<e;t++)o=i.indexOf(",",o)+1;const a=i.indexOf(",",o),l=-1===a?i.length:a,u=i.slice(0,o)+"0"+i.slice(l),c=n.termsByKey.get(u),p=s.coefficient*t**r,m=(c?.coefficient??0n)+p;if(0n===m)n.termsByKey.delete(u);else if(void 0!==c)m!==c.coefficient&&n.termsByKey.set(u,Object.freeze({coefficient:m,exponents:c.exponents}));else if(0n!==p)if(0n===r)n.termsByKey.set(u,s);else{const t=[...s.exponents];t[e]=0n,n.termsByKey.set(u,Object.freeze({coefficient:m,exponents:Object.freeze(t)}))}}return n}evaluateVariables(e,t){if(e.length!==t.length)throw new RangeError(message("wrongInput",{expected:`${e.length} evaluation values`,received:`${t.length}`}));if(0===e.length)return this;const n=new Set;for(const t of e){if(this.degree(t),n.has(t))throw new RangeError(message("wrongInput",{expected:"unique evaluation variables",received:"duplicate variable index"}));n.add(t)}const i=SparsePolynomial.zero(this.variableCount);for(const[n,s]of this.termsByKey){let r=s.coefficient,o=!1;for(let n=0;n<e.length;n++){const i=e[n],a=s.exponents[i];if(0n===a)continue;o=!0;const l=t[n];if(0n===l){r=0n;break}1n!==l&&(-1n!==l?r*=l**a:1n==(1n&a)&&(r=-r))}if(0n===r)continue;let a=n,l=s.exponents;if(o){const t=[...s.exponents];for(const n of e)t[n]=0n;l=Object.freeze(t),a=SparsePolynomial.keyOf(l)}const u=i.termsByKey.get(a),c=(u?.coefficient??0n)+r;0n===c?i.termsByKey.delete(a):void 0===u?i.termsByKey.set(a,o||r!==s.coefficient?Object.freeze({coefficient:r,exponents:l}):s):c!==u.coefficient&&i.termsByKey.set(a,Object.freeze({coefficient:c,exponents:u.exponents}))}return i}isConstant(){if(this.isZero())return!0;if(1!==this.termsByKey.size)return!1;const e=this.termsByKey.values().next().value;return void 0!==e&&e.exponents.every(e=>0n===e)}isZero(){return 0===this.termsByKey.size}leadingCoefficientIn(e){const t=this.degree(e);return null===t?null:this.coefficientIn(e,t)}leadingTerm(e="lex"){if("lex"!==e&&"grlex"!==e&&"grevlex"!==e)throw new RangeError(message("sparseMonomialOrderUnsupported"));let t=null;for(const n of this.termsByKey.values())(null===t||SparsePolynomial.compareMonomials(n.exponents,t.exponents,e)>0)&&(t=n);return t}mapCoefficients(e){const t=SparsePolynomial.zero(this.variableCount);for(const[n,i]of this.termsByKey){const s=e(i.coefficient);0n!==s&&t.termsByKey.set(n,s===i.coefficient?i:Object.freeze({coefficient:s,exponents:i.exponents}))}return t}maxAbsoluteCoefficient(){let e=0n;for(const t of this.termsByKey.values()){const n=t.coefficient<0n?-t.coefficient:t.coefficient;n>e&&(e=n)}return e}monomialScaleSubtract(e,t,n,i,s){if(this.variableCount!==n.variableCount)throw new RangeError(message("sparseSubtractionRingMismatch"));SparsePolynomial.assertExponents(this.variableCount,t),SparsePolynomial.assertExponents(this.variableCount,s);const r=SparsePolynomial.zero(this.variableCount),accumulate=(e,t,n)=>{if(0n!==t)for(const i of e.termsByKey.values()){const e=new Array(this.variableCount);for(let t=0;t<this.variableCount;t++)e[t]=i.exponents[t]+n[t];const s=Object.freeze(e),o=SparsePolynomial.keyOf(s),a=r.termsByKey.get(o),l=(a?.coefficient??0n)+i.coefficient*t;0n===l?r.termsByKey.delete(o):r.termsByKey.set(o,Object.freeze({coefficient:l,exponents:a?.exponents??s}))}};return accumulate(this,e,t),accumulate(n,-i,s),r}multiply(e){if(this.variableCount!==e.variableCount)throw new RangeError(message("sparseMultiplicationRingMismatch"));if(this.isZero()||e.isZero())return SparsePolynomial.zero(this.variableCount);const t=[];for(const n of this.termsByKey.values())for(const i of e.termsByKey.values()){const e=new Array(this.variableCount);for(let t=0;t<this.variableCount;t++)e[t]=n.exponents[t]+i.exponents[t];t.push({coefficient:n.coefficient*i.coefficient,exponents:e})}return new SparsePolynomial(this.variableCount,t)}negate(){return this.scale(-1n)}normalizeLeadingSign(e="lex"){const t=this.leadingTerm(e);return null!==t&&t.coefficient<0n?this.negate():this}pow(e){if(e<0n)throw new RangeError(message("sparseExponentNonNegative"));let t=SparsePolynomial.constant(this.variableCount,1n),n=e;if(0n===n)return t;if(1n==(1n&n)&&(t=t.multiply(this)),n>>=1n,0n===n)return t;let i=this.multiply(this);for(;n>0n;)1n==(1n&n)&&(t=t.multiply(i)),n>>=1n,n>0n&&(i=i.multiply(i));return t}primitivePart(){const e=this.content();return 0n===e||1n===e?this:this.divideByScalarExact(e)}scale(e){if(0n===e||this.isZero())return SparsePolynomial.zero(this.variableCount);const t=SparsePolynomial.zero(this.variableCount);for(const[n,i]of this.termsByKey)t.termsByKey.set(n,Object.freeze({coefficient:i.coefficient*e,exponents:i.exponents}));return t}scaleSubtractMonomial(e,t,n,i){if(this.variableCount!==t.variableCount)throw new RangeError(message("sparseSubtractionRingMismatch"));SparsePolynomial.assertExponents(this.variableCount,i);const s=SparsePolynomial.zero(this.variableCount);if(0n!==e)for(const[t,n]of this.termsByKey){const i=n.coefficient*e;0n!==i&&s.termsByKey.set(t,Object.freeze({coefficient:i,exponents:n.exponents}))}if(0n===n)return s;for(const e of t.termsByKey.values()){const t=new Array(this.variableCount);for(let n=0;n<this.variableCount;n++)t[n]=e.exponents[n]+i[n];const r=Object.freeze(t),o=SparsePolynomial.keyOf(r),a=s.termsByKey.get(o),l=(a?.coefficient??0n)-e.coefficient*n;0n===l?s.termsByKey.delete(o):s.termsByKey.set(o,Object.freeze({coefficient:l,exponents:a?.exponents??r}))}return s}subtract(e){if(this.variableCount!==e.variableCount)throw new RangeError(message("sparseSubtractionRingMismatch"));const t=SparsePolynomial.zero(this.variableCount);for(const[e,n]of this.termsByKey)t.termsByKey.set(e,n);for(const[n,i]of e.termsByKey){const e=t.termsByKey.get(n),s=(e?.coefficient??0n)-i.coefficient;0n===s?t.termsByKey.delete(n):void 0!==e&&s===e.coefficient||t.termsByKey.set(n,Object.freeze({coefficient:s,exponents:e?.exponents??i.exponents}))}return t}get termCount(){return this.termsByKey.size}terms(){return Array.from(this.termsByKey.values())}totalDegree(){if(this.isZero())return null;let e=0n;for(const t of this.termsByKey.values()){let n=0n;for(const e of t.exponents)n+=e;n>e&&(e=n)}return e}variables(){const e=new Set;for(const t of this.termsByKey.values())for(let n=0;n<this.variableCount;n++)0n!==t.exponents[n]&&e.add(n);return Array.from(e).sort((e,t)=>e-t)}}function expressionToIntegerSparsePolynomial(e,t){const n=new Set;for(const e of t){if(n.has(e))throw new RangeError(message("sparseAdapterVariablesUnique"));n.add(e)}for(const t of e.variables())if(!n.has(t))throw new RangeError(message("sparseAdapterVariablesIncludeEvery"));const i=t.length,s=new Map(t.map((e,t)=>[e,t]));function powerOf(e){const t=e.getPower();if(!t.isInteger()||t.sign()<0)throw new PolynomialError(message("notAPolynomial"));return t.getMultiplier().numerator}function normalize(e,t){if(e.isZero())return{polynomial:e,denominator:1n};const n=bigint_GCD(e.content(),t);return 1n===n?{polynomial:e,denominator:t}:{polynomial:e.divideByScalarExact(n),denominator:t/n}}function applyPowerAndMultiplier(e,t,n){const i=powerOf(e),s=e.getMultiplier();return normalize(t.pow(i).scale(s.numerator),n**i*s.denominator)}const r=function convert(e){const t=e.getMultiplier();if(e.isNUM())return normalize(SparsePolynomial.constant(i,t.numerator),t.denominator);if(e.isVAR()){const n=s.get(e.value);if(void 0===n)throw new PolynomialError(message("notAPolynomial"));const r=new Array(i).fill(0n);return r[n]=powerOf(e),normalize(SparsePolynomial.monomial(i,t.numerator,r),t.denominator)}if(e.isSum()){let t=SparsePolynomial.zero(i),n=1n;for(const i of e.elementsArray()){const e=convert(i),s=LCM(n,e.denominator);t=t.scale(s/n).add(e.polynomial.scale(s/e.denominator)),n=s}return applyPowerAndMultiplier(e,t,n)}if(e.isProduct()){let t=SparsePolynomial.constant(i,1n),n=1n;for(const i of e.elementsArray()){const e=convert(i);t=t.multiply(e.polynomial),n*=e.denominator}return applyPowerAndMultiplier(e,t,n)}throw new PolynomialError(message("notAPolynomial"))}(e),o=[...r.polynomial.terms()].sort((e,t)=>-SparsePolynomial.compareMonomials(e.exponents,t.exponents,"lex"));return{polynomial:new SparsePolynomial(i,o),denominator:r.denominator}}function sparsePolynomialToExpression(e,t){if(t.length!==e.variableCount)throw new RangeError(message("sparseExpressionConversionNameCount"));let n=zero();for(const i of e.terms()){let e=Expression_Expression.Number(i.coefficient);for(let n=0;n<t.length;n++){const s=i.exponents[n];if(0n===s)continue;const r=Expression_Expression.Variable(t[n]);e=e.times(1n===s?r:r.pow(Expression_Expression.Number(s)))}n=n.plus(e)}return n}const nt=.5772156649015329;function numeric_factorial(e){if(!isInt(e))return gamma(e+1);if(!Number.isSafeInteger(e)||e<0)return NaN;if(e>170)return 1/0;const t=[1,1,2,6,24,120,720,5040,40320,362880,3628800,39916800,479001600,6227020800,87178291200,1307674368e3,20922789888e3,355687428096e3,6402373705728e3,0x1b02b9306890000,243290200817664e4,5109094217170944e4,11240007277776077e5,2585201673888498e7,6204484017332394e8,15511210043330986e9,40329146112660565e10,10888869450418352e12,30488834461171384e13,8.841761993739701e30,26525285981219103e16];if(void 0!==t[e])return t[e];const n=t.length-1;let i=t[n];for(let t=n+1;t<=e;t++)i*=t;return i}function gammaLN(e){const t=[.9999999999999953,57.15623566586292,-59.59796035547549,14.136097974741746,-.4919138160976202,3399464998481189e-20,4652362892704858e-20,-9837447530487956e-20,.0001580887032249125,-.00021026444172410488,.00021743961811521265,-.0001643181065367639,8441822398385275e-20,-26190838401581408e-21,36899182659531625e-22];let n=0;if(e<.5)return Math.log(Math.PI/Math.sin(e*Math.PI))-gammaLN(1-e);const i=(e-=1)+607/128+.5;for(let i=14;i>=1;i--)n+=t[i]/(e+i);return n+=t[0],Math.log(Math.sqrt(2*Math.PI))+Math.log(n)-i+Math.log(i)*(e+.5)}function gamma(e){return isInt(e)&&e>1?numeric_factorial(e-1):Math.exp(gammaLN(e))}function erfc(e){if(e<0)return 2-erfc(-e);const t=e**2;return.5641895835477563/(e+2.0695502313291416)*((t+2.710785400451478*e+5.807556131303016)/(t+3.4795405709951894*e+12.061668872862395))*((t+3.474695137774396*e+12.074020364063815)/(t+3.720684439602251*e+8.443197810039685))*((t+4.0056150920225955*e+9.305966594858878)/(t+3.902257040299241*e+6.361616309538805))*((t+5.167227058178126*e+9.126616176736732)/(t+4.032968931092625*e+5.135785305856816))*((t+5.959087954466333*e+9.194356128869693)/(t+4.112409429574509*e+4.486403295234087))*Math.exp(-t)}function numeric_GCD(...e){let t=0;const n=[...new Set(e)].map(e=>Math.abs(e));for(const e of n){if(!Number.isSafeInteger(e)){t=NaN;break}let n=e;for(;0!==n;){const e=t%n;t=n,n=e}}return t}function isInt(e){return e%1==0}function numeric_LCM(...e){let t=1;for(const n of e){if(!Number.isSafeInteger(n)){t=NaN;break}if(0===n){t=0;break}const e=numeric_GCD(t,n),i=Math.abs(t/e*n);if(!Number.isSafeInteger(i)){t=NaN;break}t=i}return t}function modInv(e,t){if(!Number.isSafeInteger(e)||!Number.isSafeInteger(t)||0===t)return NaN;let n=0,i=1,s=Math.abs(t),r=numeric_mod(e,s);for(;0!==r;){const e=Math.floor(s/r);[n,i]=[i,n-e*i],[s,r]=[r,s-e*r]}return 1===s?numeric_mod(n,Math.abs(t)):NaN}function isPrime(e){if(!Number.isSafeInteger(e)||e<2)return 0;if(2===e)return 1;if(e%2==0)return 0;for(let t=3;t*t<=e;t+=2)if(e%t===0)return 0;return 1}function numeric_sum(...e){let t=0;for(let n=0;n<e.length;n++)t+=e[n];return t}function numeric_mod(e,t){return(e%t+t)%t}class Term{coeff;dataType="TRM";expression;length;multidegArray;powers;totalPower;valueString;variables;constructor(e,t,n){"string"==typeof t?(this.powers={},t.split(",").forEach((e,t)=>{this.powers[n[t]]=Number(e)})):this.powers=t,this.coeff="string"==typeof e?Expression_Expression.create(e):e,this.length=this.getLength(),this.variables=[...n].sort()}static isTerm(e){return isNerdamerNativeType(e,"TRM")}getLength(){let e=0;for(const t in this.powers)this.powers[t]>0&&e++;return e}update(){return this.updateMultiDegArray(),this.updateTotalPower(),this.length=this.getLength(),this}updateMultiDegArray(){const e=this.multideg(this.variables);return this.multidegArray=e,e}updateTotalPower(){let e=0;for(const t in this.powers)e+=this.deg(t);return this.totalPower=e,e}canAddOrSubtract(e){return this.getValueString()===e.getValueString()}copy(){return new Term(this.coeff.copy(),{...this.powers},this.variables)}deg(e,t){return void 0!==t?(this.powers[e]=t,this):this.powers[e]||0}diff(e,t=1){const n=this.deg(e);let i;if(t>n)i=new Term("0","0",[]);else{i=this.copy(),i.powers[e]=n-t;const s=function productInRange(e,t,n=1){let i=BigInt(e),s=BigInt(e);const r=BigInt(n);for(;s<t;)s+=r,i*=s;return i}(n-(t-1),n);i.coeff=i.coeff.times(BigInt(s))}return i}difference(e){const t=this.getMultidegArray(),n=e.getMultidegArray(),i=[];for(let e=0;e<t.length;e++)i[e]=t[e]-n[e];return i}div(e){const t=this.copy();t.coeff=t.coeff.div(e.coeff);for(const n in e.powers)t.variables.includes(n)||t.variables.push(n),t.deg(n,t.deg(n)-e.deg(n));return t.update()}divides(e){if(0===this.getTotalPower())return!0;for(const t in this.powers)if(this.deg(t)>e.deg(t))return!1;return!0}eq(e){return this.div(e).eqNumber(1)}eqNumber(e){return 0===numeric_sum(...Object.values(this.powers))&&this.coeff.eq(e)}getExpression(){if(void 0===this.expression){let e=this.coeff.copy();for(const t of this.variables){const n=this.deg(t);0!==n&&(e=e.times(Expression_Expression.Variable(t).pow(n)))}this.expression=e}return this.expression}getMultidegArray(){let e=this.multidegArray;return void 0===e&&(e=this.updateMultiDegArray()),e}getTotalPower(){let e=this.totalPower;return void 0===e&&(e=this.updateTotalPower()),e}getValueString(e){if(void 0===this.valueString||void 0!==e)if(0===this.getTotalPower())this.valueString="1";else{const t=e||[...this.variables].sort(),n=[];for(const e of t){const t=this.deg(e),i=1===t?"":Expression_Expression.POW_OPR+t;0!==t&&n.push(`${e}${i}`)}this.valueString=n.join("*")}return this.valueString}isConstant(){for(const e in this.powers)if(0!==this.powers[e])return!1;return!0}isZero(){return this.coeff.isZero()}LCM(e,t=!1){const n=arrayAddUnique([...this.variables],e.variables),i={};for(const t of n)i[t]=Math.max(this.deg(t),e.deg(t));const s=t?Expression_Expression.fromRational(this.coeff.getMultiplier().LCM(e.coeff.getMultiplier())):"1";return new Term(s,i,n)}max(){return Object.keys(this.powers).reduce((e,t)=>this.powers[e]>this.powers[t]?e:t)}min(){return Object.keys(this.powers).reduce((e,t)=>this.powers[e]<this.powers[t]?e:t)}multideg(e){const t=[];for(const n of e)t.push(this.deg(n));return t}text(e){let t,n=this.coeff.text();if(this.coeff.isSum()&&(n=`(${n})`),"0"===n)t=n;else{let i=this.getValueString(e);"1"===i&&(i=""),i&&("1"===n?n="":"-1"===n?n="-":n+="*"),t=`${n}${i}`}return t}times(e){const t=this.copy();t.coeff=t.coeff.times(e.coeff);for(const n in e.powers)t.variables.includes(n)||t.variables.push(n),t.deg(n,t.deg(n)+e.deg(n));return t.update()}toString(){return this.text()}}function normalizePolynomialInputs(e,t,n){const i=e.map(e=>Polynomial.toPolynomial(e,t,n));if(void 0!==n)return{polynomials:i,variables:n};const s=function combinePolynomialVariables(e){let t=[];return e.forEach(e=>{t=arrayAddUnique(t,e.variables)}),t.sort(),t}(i);return 0===s.length?{polynomials:i,variables:void 0}:{polynomials:e.map(e=>Polynomial.toPolynomial(e,t,s)),variables:s}}function utils_divide(e,t,n,i){const[s,r]=function polyDiv(e,t,n,i){const{polynomials:s}=normalizePolynomialInputs([...e,t],n,i),r=s.slice(0,e.length);let o=s[e.length].order(n);const a=e.map(()=>zero());let l=zero(),u=0;const c=1e3*e.length;for(;!o.isZero();){if(u++>c)throw new Error(message("polynomialMaximumIterations"));let e=!1;const t=r.length;let i=0;for(;i<t&&!e;){const t=r[i],s=t.LT(),l=o.LT();if(s.divides(l)){const r=l.div(s);a[i]=a[i].plus(r.getExpression()),o=o.minus(t.times(r)).order(n),e=!0}else i++}const s=o.LT();e||(l=l.plus(s.getExpression()),o=o.minus(s).order(n))}return[a,l]}([t],e,n,i);return[s[0],r]}class Polynomial{static defaultOrdering="lex";dataType="POL";expression;isMultivariate;ordering="none";terms;variables;constructor(e,t,n){if(Polynomial.isPolynomial(e))this.expression=e.expression.copy(),this.variables=[...e.variables],this.ordering=e.ordering,this.isMultivariate=e.isMultivariate,this.terms=e.terms.map(e=>e.copy());else{n??=Polynomial.defaultOrdering;let i=Expression_Expression.create(e);if(!Expression_Expression.isExpression(i))throw new UnsupportedOperationError(message("unsupportedType",{type:typeof i}));if(!i.isPolynomialLike())throw new PolynomialError(message("notAPolynomial"));let s,r=!1;(i.value.includes("(")||i.isSum()&&i.getPower().gt(one()))&&(i=expand(i),r=!0),this.expression=i,t?s=t:(s=i.variables(),isSorted(s)||s.sort()),this.variables=s,this.isMultivariate=this.variables.length>1,this.terms=[],coeffs(i,this.variables,void 0,!r).each((e,t)=>{this.terms.push(new Term(e,t,this.variables))}),this.variables=this.variables||[],this.order(n)}}static fromArray(e,t){const n=[];let i,s=!1;for(const i of e){const e=Expression_Expression.isExpression(i)?i:Expression_Expression.create(String(i));n.push(e),t.some(t=>e.hasVariable(t))&&(s=!0)}if(s)i=Polynomial.fromArrayCanonicalized(n,t);else{i=new Polynomial(zero(),t),i.terms=[];for(let e=0;e<n.length;e++){const s=n[e];if(!s.isZero()){const n={};for(const i of t)n[i]=e;i.terms.push(new Term(s.copy(),n,t))}}i.order(),i.updateExpression()}return i}static fromArrayCanonicalized(e,t){let n=one();for(const e of t)n=n.times(Expression_Expression.Variable(e));let i=zero();for(let t=0;t<e.length;t++)i=i.plus(e[t].times(n.pow(t)));return new Polynomial(i,t)}static grevlex(e,t){return e.getTotalPower()===t.getTotalPower()?Polynomial.revlex(e,t):e.getTotalPower()>t.getTotalPower()?-1:1}static grlex(e,t){return e.getTotalPower()===t.getTotalPower()?Polynomial.lex(e,t):e.getTotalPower()>t.getTotalPower()?-1:1}static isPolynomial(e){return isNerdamerNativeType(e,"POL")}static lex(e,t){const n=e.difference(t);for(let e=0;e<n.length;e++)if(0!==n[e])return-1===Math.sign(n[e])?1:-1;return 1}static polyArraySort(e,t){let n;switch(t??=Polynomial.defaultOrdering,e=e.map(e=>e.order(t)),t){case"lex":n=Polynomial.lex;break;case"grevlex":n=Polynomial.grevlex;break;case"revlex":n=Polynomial.revlex;break;default:n=Polynomial.grlex}return e=e.sort((e,t)=>n(e.LT(),t.LT()))}static rationalToString(e){return 1n===e.denominator?e.numerator.toString():`(${e.numerator}/${e.denominator})`}static revlex(e,t){const n=e.difference(t);for(let e=n.length-1;e>=0;e--)if(0!==n[e])return Math.sign(n[e]);return-1}static toExpression(e){return Polynomial.isPolynomial(e)?e.getExpression():Expression_Expression.create(e)}static toPolynomial(e,t,n){return Polynomial.isPolynomial(e)?e.ordering!==t&&e.order(t):e=new Polynomial(e,n,t||Polynomial.defaultOrdering),e}append(e,t){const n=new Polynomial(this);if(n.variables=arrayAddUnique(e.variables,n.variables),n.variables&&e.variables&&n.variables.length>e.variables.length&&n.variables.sort(),n.isMultivariate=n.variables.length>1,Polynomial.isPolynomial(e))for(const i of e.terms)n.appendTerm(i,t);else n.appendTerm(e,t);return 0!==n.terms.length&&n.updateExpression(),0===n.terms.length?new Polynomial("0"):n}appendTerm(e,t){for(let n=0;n<this.terms.length;n++){const i=this.terms[n];if(i.canAddOrSubtract(e))return i.coeff=i.coeff[t](e.coeff),void(i.coeff.isZero()&&remove(this.terms,i))}const n=e.copy();"minus"===t&&(n.coeff=n.coeff.neg()),this.terms.push(n),this.order()}monomialGCDTerm(e){const t=[...new Set([...this.variables,...e.variables])].sort(),n=this.commonTermVariables(),i=e.commonTermVariables(),s={};for(const e of t){const t=n[e]??0,r=i[e]??0,o=Math.min(t,r);o>0&&(s[e]=o)}return new Term("1",s,t)}updateExpression(){let e=zero();for(const t of this.terms)e=e.plus(t.copy().getExpression());this.expression=e}at(e){if(this.variables.length>1)throw new UnsupportedOperationError(message("univariatePolynomialOnly"));let t=0;const n=this.variables[0];for(let i=0;i<this.terms.length;i++){const s=this.terms[i],r=s.powers[n];t+=Math.pow(e,r)*Number(s.coeff)}return t}coeffs(e){return coeffs(this.getExpression(),e?[e]:this.variables)}commonTermVariables(){const e={};for(const t of this.variables){let n;for(const e of this.terms){const i=e.deg(t);if(0===i){n=void 0;break}n=void 0===n?i:Math.min(n,i)}n&&(e[t]=n)}return e}constantTerm(){const e=this.terms.at(-1);return e&&e.isConstant()?e.coeff:zero()}content(){const e=this.numericCoeffs();return 0===e.length?Rational.create("1"):Rational.GCD(...e)}deg(e){let t=0;for(const n of this.terms){const i=void 0===e?n.getTotalPower():n.deg(e);t=Math.max(t,i)}return t}diff(e,t=1){if(e=e||this.variables[0],0===t)return new Polynomial(this);if(!e)return new Polynomial("0");const n=[];for(const i of this.terms){const s=i.diff(e,t);s.isZero()||(s.variables=[...this.variables],n.push(s))}if(0===n.length)return new Polynomial("0");const i=new Polynomial("0",this.variables,this.ordering);i.terms=[];for(const e of n)i.terms.push(e);return i.order(this.ordering),i.updateExpression(),i}div(e){return utils_divide(this,e).map(e=>new Polynomial(e))}divides(e){return this.LT().divides(e.LT())}eq(e){return this.minus(e).isZero()}evaluate(e){const t=this.variables.filter(t=>!(t in e)),n={};for(const t in e){const i=e[t];Rational.isRational(i)?n[t]=i:n[t]=Rational.create(i.toString())}const i=new Map;for(const e of this.terms){let s=e.coeff.getMultiplier();const r={};for(const t of this.variables){const i=e.deg(t);if(t in n){if(0!==i){const e=n[t].pow(i.toString());s=s.times(e)}}else 0!==i&&(r[t]=i)}if(s.isZero())continue;const o=t.length>0?t.map(e=>`${e}:${r[e]||0}`).join(","):"constant",a=i.get(o);a?a.coefficient=a.coefficient.plus(s):i.set(o,{coefficient:s,powers:r})}let s;if(0===i.size)s=new Polynomial(zero());else if(0===t.length){const e=i.get("constant"),t=e?e.coefficient:Rational.create("0");s=new Polynomial(Expression_Expression.Number(t.value))}else{s=new Polynomial(zero(),t,this.ordering),s.terms=[];for(const e of i.values())e.coefficient.isZero()||s.terms.push(new Term(Expression_Expression.Number(e.coefficient.value),{...e.powers},t));s.order(this.ordering),s.updateExpression()}return s}evaluateToRational(e){for(const t of this.variables)if(!(t in e))throw new UnsupportedOperationError(message("unknownVariable",{variable:t}));const t={};for(const n in e){const i=e[n];Rational.isRational(i)?t[n]=i:t[n]=Rational.create(i.toString())}let n=Rational.create("0");for(const e of this.terms){let i=e.coeff.getMultiplier();for(const n of this.variables){const s=e.deg(n);0!==s&&(i=i.times(t[n].pow(s.toString())))}n=n.plus(i)}return n}gcdFree(e=!1,t=!1){const n=t?this:new Polynomial(this);if(n.isConstant())return n;let i,s=n.content();-1===n.LC().sign()&&(s=s.neg()),e&&(i=n.commonTermVariables());for(let e=0;e<n.terms.length;e++){const t=n.terms[e];if(i)for(const e in i)t.powers[e]-=i[e];const r=t.coeff.getMultiplier().div(s);t.coeff=Expression_Expression.fromRational(r)}return n.updateExpression(),n}getExpression(){return this.expression}grevlexSort(){return this.terms.sort((e,t)=>Polynomial.grevlex(e,t)),this.ordering="grevlex",this}grlexSort(){return this.terms.sort((e,t)=>Polynomial.grlex(e,t)),this.ordering="grlex",this}isConstant(){return 1===this.terms.length&&this.terms[0].isConstant()}isZero(){return 0===this.terms.length||this.LT().isZero()}LC(){return this.LT().coeff}lexSort(){return this.terms.sort((e,t)=>Polynomial.lex(e,t)),this.ordering="lex",this}LM(){const e=this.LT();return new Term("1",{...e.powers},[...e.variables])}LT(){return this.terms[0]}maxVariableFrequency(){const e=this.variableFrequency();let t=[];for(const n in e){const i=e[n].count;!t[0]||t[0].count<i?t=[e[n]]:t[0].count===i&&t.push(e[n])}return function arrayToObject(e,t){const n={};for(let i=0;i<e.length;i++){const s=e[i];n[t(s,i)]=s}return n}(t,e=>e.variable)}minus(e){return this.append(e,"minus")}mod(e){e=Expression_Expression.create(e);const t=this.coeffs();return t.each((n,i)=>{t.coeffs[i]=n.mod(e)}),t}monic(){const e=new Polynomial(this),t=this.LT();if(t&&!t.isConstant()){const n=t.coeff;for(const t of e.terms)t.coeff=t.coeff.div(n);e.updateExpression()}return e}multideg(){return this.terms[0].multidegArray}numericCoeffs(){return this.terms.map(e=>e.coeff.getMultiplier())}order(e){if(this.variables.length<2)this.sort(),this.ordering="deg";else switch(e&&(this.ordering=e),this.ordering){case"lex":this.lexSort();break;case"grevlex":this.grevlexSort();break;case"revlex":this.revlexSort();break;default:this.grlexSort()}return this}plus(e){return this.append(e,"plus")}pow(e){const t=Expression_Expression.create(e),n=this.getExpression();let i;if(t.isNUM()&&t.isInteger()&&t.sign()>=0&&!n.hasDecimal())try{const e=t.getMultiplier().numerator,s=[...this.variables],r=expressionToIntegerSparsePolynomial(n,s),o=r.denominator**e;let a=sparsePolynomialToExpression(r.polynomial.pow(e),s);1n!==o&&(a=a.div(Expression_Expression.Number(o))),i=new Polynomial(a,void 0,this.ordering)}catch{}return i??new Polynomial(n.pow(t),void 0,this.ordering)}revlexSort(){return this.terms.sort((e,t)=>Polynomial.revlex(e,t)),this.ordering="revlex",this}sort(){return this.terms.sort((e,t)=>t.getTotalPower()>e.getTotalPower()?1:-1),this}stripMonomialGCD(e){const t=this.monomialGCDTerm(e),n=new Polynomial(this),i=new Polynomial(e);for(let e=0;e<n.terms.length;e++)n.terms[e]=n.terms[e].div(t);for(let e=0;e<i.terms.length;e++)i.terms[e]=i.terms[e].div(t);const s=new Polynomial(t.getExpression());return n.updateExpression(),i.updateExpression(),{mGCD:s,p:n,q:i}}text(){if(0===this.terms.length||1===this.terms.length&&this.terms[0].isZero())return"0";const e=[];for(const t of this.terms){const n=t.text(this.variables);"0"!==n&&e.push(n)}return e.join("+").replace(/\+-/g,"-")}times(e){let t;if(Term.isTerm(e)){t=new Polynomial(this),t.variables=arrayAddUnique(t.variables,e.variables),isSorted(this.variables)&&t.variables.sort(),t.isMultivariate=t.variables.length>1;for(let n=0;n<t.terms.length;n++)t.terms[n]=t.terms[n].times(e);t.updateExpression()}else{const n=this.getExpression(),i=e.getExpression();let s;if(!n.hasDecimal()&&!i.hasDecimal())try{const t=[...new Set([...this.variables,...e.variables])].sort(),r=expressionToIntegerSparsePolynomial(n,t),o=expressionToIntegerSparsePolynomial(i,t),a=r.denominator*o.denominator;let l=sparsePolynomialToExpression(r.polynomial.multiply(o.polynomial),t);1n!==a&&(l=l.div(Expression_Expression.Number(a))),s=new Polynomial(l,void 0,this.ordering)}catch{}t=s??new Polynomial(n.times(i),void 0,this.ordering)}return t}toArray(e=!1,t){const n=[],i=Number(this.deg(t)),s=this.coeffs(t);for(let e=0;e<=i;e++)n.push(s.hasPower(e)?s.getPower(e):zero());return e?n.map(e=>Number(e)):n}toBigIntArray(e=!0,t){return this.toArray(!1,t).map(t=>{if(e&&!t.isInteger())throw new Error(message("integerRequired"));return t.getMultiplier().numerator})}toDecimalArray(){return this.toArray().map(e=>new q(e.text()))}toString(){return this.text()}variableFrequency(){const e={};for(const t of this.terms)for(const n in t.powers){let i=e[n];i||(e[n]=i={variable:n,count:0,deg:0});const s=t.powers[n];0!==s&&(i.count++,i.deg+=s)}return e}}class Vector extends MathematicalAggregate{dataType="VEC";elements;isEnumerable=!0;precision;constructor(e){super(),Collection.isCollection(e)?this.elements=e.elements.map(e=>e.copy()):this.elements=e?toParserEntities(e):[]}static create(e){return new Vector(e.map(e=>Expression_Expression.create(e)))}static isVector(e){return isNerdamerNativeType(e,"VEC")}getValuesArray(){return[...this.elements]}setValuesArray(e){this.elements=e}__get__(e){const t=e[0];if(t<0||t>=this.elements.length)throw new UnexpectedDataType(message("indexOutOfBounds",{index:String(t),type:"Vector",length:String(this.elements.length)}));return this.elements[t]}add(e){return this.append(e)}append(e){return this.elements.push(e),this}arrayMap(e){const t=[];for(let n=0;n<this.elements.length;n++)t.push(e(this.elements[n]));return t}at(e){return this.elements[e]}clear(){return this.elements=[],this}copy(){const e=new Vector;return this.each((t,n)=>(e.elements[n]=t.copy(),t)),e}count(){return this.elements.length}cross(e){if(3!==this.elements.length||3!==e.elements.length)throw new DimensionError(message("incorrectCrossDimension"));const t=this.getExpressionAt(0),n=this.getExpressionAt(1),i=this.getExpressionAt(2),s=e.getExpressionAt(0),r=e.getExpressionAt(1),o=e.getExpressionAt(2);return Vector.create([n.times(o).minus(i.times(r)),i.times(s).minus(t.times(o)),t.times(r).minus(n.times(s))])}delete(e){const t=this.indexOf(e);return-1!==t&&(this.elements.splice(t,1),!0)}dimensions(){return[this.elements.length]}div(e){if(Vector.isVector(e)&&!this.dimensionsMatch(e))throw new DimensionError(message("mismatchedDimensions",{function:"Vector.div"}));return super.div(e)}dot(e){if(this.elements.length!==e.elements.length)throw new DimensionError(message("mismatchedDimensions",{function:"Vector.dot"}));let t=zero();for(let n=0;n<this.elements.length;n++)t=t.plus(this.getExpressionAt(n).times(e.getExpressionAt(n)));return t}each(e){for(let t=0;t<this.elements.length;t++){const n=e(this.elements[t],t);void 0!==n&&(this.elements[t]=n)}return this}eq(e){if(!Vector.isVector(e)||e.elements.length!==this.elements.length)return!1;for(let t=0;t<this.elements.length;t++)if(!this.elements[t].eq(e.elements[t]))return!1;return!0}evaluate(e){const t=this.copy();return t.each(t=>Expression_Expression.isExpression(t)?t.evaluate(e):t.evaluate()),t}expand(){const e=this.copy();return e.each(e=>e.expand()),e}extend(e){if(!Vector.isVector(e))throw new UnexpectedDataType(message("vectorExpected",{type:Y[e.dataType]}));return this.elements.push(...e.elements),this}getExpressionAt(e){const t=this.elements[e];if(!Expression_Expression.isExpression(t))throw new UnexpectedDataType(message("expressionExpected",{type:Y[t.dataType]}));return t}gt(e){if(!Vector.isVector(e)||e.elements.length!==this.elements.length)return!1;for(let t=0;t<this.elements.length;t++)if(!this.elements[t].gt(e.elements[t]))return!1;return!0}gte(e){if(!Vector.isVector(e)||e.elements.length!==this.elements.length)return!1;for(let t=0;t<this.elements.length;t++)if(!this.elements[t].gte(e.elements[t]))return!1;return!0}indexOf(e){for(let t=0;t<this.elements.length;t++){if(this.elements[t].eq(e))return t}return-1}insert(e,t){return this.elements.splice(e,0,t),this}lt(e){if(!Vector.isVector(e)||e.elements.length!==this.elements.length)return!1;for(let t=0;t<this.elements.length;t++)if(!this.elements[t].lt(e.elements[t]))return!1;return!0}lte(e){if(!Vector.isVector(e)||e.elements.length!==this.elements.length)return!1;for(let t=0;t<this.elements.length;t++)if(!this.elements[t].lte(e.elements[t]))return!1;return!0}minus(e){if(Vector.isVector(e)&&!this.dimensionsMatch(e))throw new DimensionError(message("mismatchedDimensions",{function:"Vector.minus"}));return super.minus(e)}norm(){let e=zero();for(let t=0;t<this.elements.length;t++)e=e.plus(this.getExpressionAt(t).abs().sq());return e.pow("1/2")}plus(e){if(Vector.isVector(e)&&!this.dimensionsMatch(e))throw new DimensionError(message("mismatchedDimensions",{function:"Vector.plus"}));return super.plus(e)}pop(e){let t;return t=void 0!==e?this.elements.splice(e,1)[0]:this.elements.pop(),t}pow(e){if(Vector.isVector(e)&&!this.dimensionsMatch(e))throw new DimensionError(message("mismatchedDimensions",{function:"Vector.pow"}));return super.pow(e)}prod(){let e=one();return this.each(t=>{e=e.times(Expression_Expression.create(t))}),e}remove(e){const t=this.indexOf(e);return-1!==t&&this.elements.splice(t,1),this}reverse(){return this.elements.reverse(),this}sum(){let e=zero();return this.each(t=>{e=e.plus(Expression_Expression.create(t))}),e}text(){return`[${this.elements.map(e=>e.text()).join(", ")}]`}times(e){let t;if(isNerdamerNativeType(e,"MAT")){const n=e;if(0===n.cols()){if(this.count()!==n.rows())throw new MathError(message("mismatchedDimensions",{function:"Matrix.times"}));t=new Vector}else t=n.transpose().times(this)}else{if(Vector.isVector(e)&&!this.dimensionsMatch(e))throw new DimensionError(message("mismatchedDimensions",{function:"Vector.times"}));t=super.times(e)}return t}toPolynomial(e=["x"]){return Polynomial.fromArray(this.elements,e)}trim(){const e=[];for(const t of this.elements)t.eq(zero())||e.push(t);return this.elements=e,this}}class Matrix extends StructuredEntity{_rowSwaps=0;dataType="MAT";elements;isEnumerable=!0;precision;constructor(...e){let t;super(),this.elements=[];for(let n=0;n<e.length;n++){const i=e[n],s=(Vector.isVector(i)?i.elements:toParserEntities(i)).map(e=>Expression_Expression.create(e));if(s.length>0){if(void 0!==t&&t!==s.length)throw new MathError(message("cannotCreateMatrix"));this.elements.push(s),t=s.length}}}static fill(e,t,n){const i=new Matrix([]);for(let s=0;s<e;s++){const e=[];for(let i=0;i<t;i++)e.push(n.copy());i.elements.push(e)}return i}static identity(e){const t=new Matrix([]);for(let n=0;n<e;n++){const i=[];for(let t=0;t<e;t++)i.push(n===t?one():zero());t.elements.push(i)}return t}static isMatrix(e){return isNerdamerNativeType(e,"MAT")}static zeroMatrix(e,t){return Matrix.fill(e,t,zero())}__get__(e){const t=e[0];if(t<0||t>=this.elements.length)throw new MathError(message("matrixRowIndexOutOfBounds",{index:String(t),length:String(this.elements.length)}));if(e.length>1){const n=e[1];if(n<0||n>=this.elements[t].length)throw new MathError(message("matrixColumnIndexOutOfBounds",{index:String(n),length:String(this.elements[t].length)}));return this.elements[t][n]}return new Vector(this.elements[t])}__set__(e,t){if("string"==typeof e)throw new MathError(message("matrixStringKeyUnsupported"));const n=e[0],i=e.length>1?e[1]:void 0;if(n<0||n>=this.elements.length)throw new MathError(message("matrixRowIndexOutOfBounds",{index:String(n),length:String(this.elements.length)}));if(void 0!==i){if(i<0||i>=this.elements[n].length)throw new MathError(message("matrixColumnIndexOutOfBounds",{index:String(i),length:String(this.elements[n].length)}));this.elements[n][i]=Expression_Expression.create(t)}else{if(!Vector.isVector(t))throw new UnexpectedDataType(message("vectorExpected",{type:Y[t.dataType]}));if(t.elements.length!==this.cols())throw new MathError(message("mismatchedDimensions",{function:"Matrix.__set__"}));const e=t.elements.map(e=>Expression_Expression.create(e));this.elements[n]=e}}augment(e){const t=this.rows();if(t!==e.rows())throw new MathError(message("rowsMustMatch"));if(0===t)return this.copy();const n=e.copy(),i=this.copy(),s=i.cols();let r=t;const o=n.cols();let a;for(;r--;)for(a=o;a--;)i.elements[r][s+a]=n.elements[r][a];return i}canMultiplyFromLeft(e){return this.cols()===e.rows()}col(e){const t=[],n=this.rows();if(e>0&&e<=this.cols())for(let i=0;i<n;i++)t.push([this.elements[i][e-1]]);return new Matrix(...t)}cols(){return 0===this.elements.length?0:this.elements[0].length}copy(){return this.map(e=>e.copy())}determinant(){if(0===this.rows())return one();if(!this.isSquare())throw new UnsupportedOperationError(message("squareMatrixRequired"));const e=this.toRightTriangular(),t=this.rows();let n=e.elements[0][0];for(let i=1;i<t;i++)n=n.times(e.get(i,i));return e._rowSwaps%2!=0&&(n=n.neg()),n}dimensions(){return[this.rows(),this.cols()]}dimensionsMatch(e){return Matrix.isMatrix(e)&&this.cols()===e.cols()&&this.rows()===e.rows()}div(e){if(Matrix.isMatrix(e)&&!this.dimensionsMatch(e))throw new DimensionError(message("mismatchedDimensions",{function:"Matrix.div"}));return super.div(e)}e(e,t){return this.get(e-1,t-1)}each(e){for(let t=0;t<this.elements.length;t++){const n=this.elements[t];for(let i=0;i<n.length;i++){const s=e(n[i],t,i);void 0!==s&&(n[i]=s)}}return this}eq(e){if(!Matrix.isMatrix(e)||!this.dimensionsMatch(e))return!1;const t=this.rows(),n=this.cols();for(let i=0;i<t;i++)for(let t=0;t<n;t++)if(!this.elements[i][t].eq(e.elements[i][t]))return!1;return!0}evaluate(e){const t=this.copy();return t.each(t=>t.evaluate(e)),t}expand(){const e=this.copy();return e.each(e=>e.expand()),e}forEach(e){for(let t=0;t<this.elements.length;t++)for(let n=0;n<this.elements[t].length;n++)e(this.elements[t][n],t,n)}get(e,t){return this.__get__([e,t])}gt(e){if(!Matrix.isMatrix(e)||!this.dimensionsMatch(e))return!1;const t=this.rows(),n=this.cols();for(let i=0;i<t;i++)for(let t=0;t<n;t++)if(!this.elements[i][t].gt(e.elements[i][t]))return!1;return!0}gte(e){if(!Matrix.isMatrix(e)||!this.dimensionsMatch(e))return!1;const t=this.rows(),n=this.cols();for(let i=0;i<t;i++)for(let t=0;t<n;t++)if(!this.elements[i][t].gte(e.elements[i][t]))return!1;return!0}inspect(){let e="";for(let t=0;t<this.elements.length;t++){e+=`[${this.elements[t].map(e=>e.text()).join(", ")}]\n`}return e}inverse(){if(!this.isSquare())throw new UnsupportedOperationError(message("squareMatrixRequired"));if(0===this.rows())return this.copy();if(this.isSingular())throw new MathError(message("singularMatrix"));const e=this.elements.length;let t=e;const n=this.augment(Matrix.identity(e)).toRightTriangular(),i=[];let s,r,o,a,l;const u=n.elements[0].length,c=zero();for(;t--;){if(o=[],i[t]=[],a=n.elements[t][t],a.eq(c))throw new MathError(message("singularMatrix"));for(r=0;r<u;r++)l=n.elements[t][r].div(a),o.push(l),r>=e&&i[t].push(l);for(n.elements[t]=o,s=t;s--;){for(o=[],r=0;r<u;r++)o.push(n.elements[s][r].minus(n.elements[t][r].times(n.elements[s][t])));n.elements[s]=o}}return new Matrix(...i)}isSingular(){return this.isSquare()&&this.determinant().eq(zero())}isSquare(){return this.rows()===this.cols()}lt(e){if(!Matrix.isMatrix(e)||!this.dimensionsMatch(e))return!1;const t=this.rows(),n=this.cols();for(let i=0;i<t;i++)for(let t=0;t<n;t++)if(!this.elements[i][t].lt(e.elements[i][t]))return!1;return!0}lte(e){if(!Matrix.isMatrix(e)||!this.dimensionsMatch(e))return!1;const t=this.rows(),n=this.cols();for(let i=0;i<t;i++)for(let t=0;t<n;t++)if(!this.elements[i][t].lte(e.elements[i][t]))return!1;return!0}map(e){const t=new Matrix([]);for(let n=0;n<this.elements.length;n++){t.elements[n]=[];for(let i=0;i<this.elements[n].length;i++)t.elements[n][i]=e(this.elements[n][i],n,i)}return t}minus(e){if(Matrix.isMatrix(e)&&!this.dimensionsMatch(e))throw new DimensionError(message("mismatchedDimensions",{function:"Matrix.minus"}));return super.minus(e)}multiply(e){return this.times(e)}nullspace(e){const t=void 0===e?void 0:Expression_Expression.create(e),n=this.rref(e),i=n.rows(),s=n.cols(),r=zero(),o=new Set,a=new Array(i).fill(-1);for(let e=0;e<i;e++)for(let t=0;t<s;t++)if(!n.elements[e][t].eq(r)){o.add(t),a[e]=t;break}const l=[];for(let e=0;e<s;e++)o.has(e)||l.push(e);const u=[];for(const e of l){const r=Array.from({length:s},()=>zero());r[e]=one();for(let s=0;s<i;s++){const i=a[s];if(-1!==i){const o=zero().minus(n.elements[s][e]);r[i]=t?math_mod(o,t):o}}u.push(r)}return u}plus(e){if(Matrix.isMatrix(e)&&!this.dimensionsMatch(e))throw new DimensionError(message("mismatchedDimensions",{function:"Matrix.plus"}));return super.plus(e)}pow(e){const t=Expression_Expression.create(e);if(!t.isNUM()||!t.isInteger())throw new UnsupportedOperationError(message("unsupportedOperation"));const n=t.getMultiplier().numerator;let i;if(1n===n)i=this.copy();else{if(!this.isSquare())throw new UnsupportedOperationError(message("squareMatrixRequired"));if(0n===n)i=Matrix.identity(this.rows());else{let e=n<0n?-n:n,t=n<0n?this.inverse():this.copy();for(i=Matrix.identity(this.rows());e>0n;)e%2n==1n&&(i=i.times(t)),e/=2n,e>0n&&(t=t.times(t))}}return i}rank(){const e=this.toRightTriangular();let t=0,n=e.rows();const i=e.cols(),s=zero();let r;for(;n--;)for(r=i;r--;)if(!e.elements[n][r].eq(s)){t++;break}return t}row(e){let t;return t=e<1||e>this.rows()?new Matrix([]):0===this.cols()?Matrix.zeroMatrix(1,0):new Matrix(this.elements[e-1]),t}rows(){return this.elements.length}rref(e){const t=this.rows(),n=this.cols();let i=0;const s=this.copy(),r=zero(),o=e?Expression_Expression.create(e):void 0;o&&s.each(e=>math_mod(e,o));for(let e=0;e<t&&!(n<=i);e++){let a=e;for(;s.elements[a][i].eq(r);)if(a++,t===a&&(a=e,i++,n===i))return s;if([s.elements[a],s.elements[e]]=[s.elements[e],s.elements[a]],o){const r=math_modInv(s.elements[e][i],o);for(let t=0;t<n;t++)s.elements[e][t]=math_mod(s.elements[e][t].times(r),o);for(let r=0;r<t;r++)if(r!==e){const t=s.elements[r][i];for(let i=0;i<n;i++)s.elements[r][i]=math_mod(s.elements[r][i].minus(t.times(s.elements[e][i])),o)}}else{const o=s.elements[e][i];for(let t=0;t<n;t++)s.elements[e][t]=s.elements[e][t].div(o);for(let o=0;o<t;o++)if(o!==e){const t=s.elements[o][i];if(t.eq(r))continue;for(let i=0;i<n;i++)s.elements[o][i]=s.elements[o][i].minus(t.times(s.elements[e][i]))}}i++}return s.elements.sort((e,t)=>{const n=e.every(e=>e.eq(r)),i=t.every(e=>e.eq(r));return n&&!i?1:!n&&i?-1:0}),s}set(e,t,n){return this.__set__([e,t],n),this}text(){const e=[];for(let t=0;t<this.elements.length;t++){const n=this.elements[t],i=[];for(let e=0;e<n.length;e++)i.push(n[e].text());e.push(`[${i.join(", ")}]`)}return`matrix(${e.join(", ")})`}times(e){let t;if(Expression_Expression.isExpression(e))t=this.map(t=>t.times(e));else if(Vector.isVector(e)){if(this.cols()!==e.count())throw new MathError(message("mismatchedDimensions",{function:"Matrix.times"}));const n=[];for(let t=0;t<this.rows();t++)n.push(new Vector(this.elements[t]).dot(e));t=new Vector(n)}else{if(!Matrix.isMatrix(e))throw new UnsupportedOperationError(message("unsupportedType",{type:Y[e.dataType]}));if(!this.canMultiplyFromLeft(e))throw new MathError(message("mismatchedDimensions",{function:"Matrix.times"}));if(0===this.rows())t=new Matrix([]);else if(0===e.cols())t=Matrix.zeroMatrix(this.rows(),0);else{const n=this.elements,i=n.length,s=n[0].length,r=[];let o=i;const a=e.cols();let l,u,c,p,m;for(;o--;){for(p=[],c=n[o],l=a;l--;){for(m=zero(),u=s;u--;){const t=c[u],n=e.elements[u][l];m=m.plus(t.times(n))}p[l]=m}r[o]=p}t=new Matrix(...r)}}return t}toRightTriangular(){const e=this.copy(),t=e.rows(),n=e.cols(),i=zero();let s=0;e._rowSwaps=0;for(let r=0;r<n&&s<t;r++){let o=s;for(;o<t&&e.elements[o][r].eq(i);)o++;if(o===t)continue;o!==s&&([e.elements[o],e.elements[s]]=[e.elements[s],e.elements[o]],e._rowSwaps++);const a=e.elements[s][r];for(let o=s+1;o<t;o++)if(!e.elements[o][r].eq(i)){const t=e.elements[o][r].div(a),i=[];for(let a=0;a<n;a++)i.push(a<=r?zero():e.elements[o][a].minus(e.elements[s][a].times(t)));e.elements[o]=i}s++}return e}toUpperTriangular(){return this.toRightTriangular()}trace(){if(!this.isSquare())throw new MathError(message("matrixTraceUnavailable"));let e=zero();const t=this.elements.length;for(let n=0;n<t;n++){const t=this.elements[n][n];if(!Expression_Expression.isExpression(t))throw new MathError(message("matrixTraceUnavailable"));e=e.plus(t)}return e}transpose(){const e=this.rows(),t=this.cols();if(e>0&&0===t)throw new UnsupportedOperationError(message("unsupportedOperation"));const n=[];let i=t;for(;i--;){let t=e;for(n[i]=[];t--;)n[i][t]=this.elements[t][i]}return new Matrix(...n)}unroll(){const e=[];for(let t=1;t<=this.cols();t++)for(let n=1;n<=this.rows();n++)e.push(this.e(n,t));return new Vector(e)}}const{NUM:it,VAR:st,EXP:rt,FUN:ot,GRP:at,PRD:ut,SUM:ct,INF:pt}=ee;function add_add(e,t){let n;if(Ge.DEFER_SIMPLIFICATION)n=join(e,t,!1),n.deferred=!0;else{const i=e.keyValue(),s=t.keyValue();Expression_Expression.DISTRIBUTE_MULTIPLIER&&(e.isSum()&&!e.getMultiplier().isOne()&&e.isLinear()&&(e=e.distributeMultiplier()),t.isSum()&&!t.getMultiplier().isOne()&&t.isLinear()&&(t=t.distributeMultiplier()));const r=!e.isNUM()&&i===s;if(e.isNUM()&&t.isNUM())n=Expression_Expression.fromRational(e.getMultiplier().plus(t.getMultiplier()));else if(e.isComplex()&&t.isComplex()){const i=e.realPart().plus(t.realPart()),s=e.imagPart().plus(t.imagPart()).times(Expression_Expression.Img());n=i.isZero()?s:s.isZero()?i:join(i,s)}else if(e.isZero())n=t.copy();else if(e.value===t.value&&e.type===t.type&&e.getPower().eq(t.getPower()))if(e.isInf()){const i=e.getMultiplier(),s=t.getMultiplier();if(i.isNegative()&&!s.isNegative()||s.isNegative()&&!i.isNegative())throw new UndefinedError(message("infinityMinusInfinityUndefined"));n=e.isNegInf()?Expression_Expression.NegInf():Expression_Expression.Inf()}else{const i=e.getMultiplier().plus(t.getMultiplier());i.isZero()?n=Expression_Expression.Number("0"):e.isSum()&&t.isSum()&&e.isLinear()&&t.isLinear()?n=join(e,t):(n=e.copy(),n.multiplier=i)}else if(r)n=join(e,t,r);else if(e.isInf()&&t.isInf()){const n=e.getMultiplier(),i=t.getMultiplier();if(n.isNegative()&&!i.isNegative()||i.isNegative()&&!n.isNegative())throw new UndefinedError(message("infinityMinusInfinityUndefined"))}else te[e.type]>te[t.type]&&(n=add_add(t,e));n=n||join(e,t,r)}return n}function canJoin(e,t){return(e.type===ct||e.type===at&&e.keyValue()===t.keyValue())&&e.isLinear()&&(!e.multiplier||e.multiplier&&e.getMultiplier().isOne())}function join(e,t,n=!1){let i,s=[];const r=n?at:ct;let o=canJoin(e,t),a=canJoin(t,e);if(o&&!a&&([t,e]=[e,t],[a,o]=[o,a]),a)if(!o&&a){i=t.copy();const r=i.getElements();let o=!0,a=e.keyValue(o,!1);if(a in r||(o=!1,a=e.keyValue(o,n)),a in r){const t=add_add(e,r[a]);t.isZero()?delete r[a]:r[a]=t}else r[a]=e.copy();s=Object.values(r)}else{i=e.copy(),i.multiplier=e.getMultiplier().times(t.getMultiplier());const n=i.getElements(),r=t.getElements();for(const e in r){const t=r[e];if(e in n){const i=add_add(t,n[e]);i.isZero()?delete n[e]:n[e]=i}else n[e]=t.copy()}s=Object.values(n)}else{let r=!1,o=e.keyValue(r,n),a=t.keyValue(r,n);o===a&&(r=!0,n=!1,o=e.keyValue(r,n),a=t.keyValue(r,n)),i=Expression_Expression.Number("1"),i.elements={},i.elements[o]=e.copy(),i.elements[a]=t.copy(),s=[e,t]}if((i.isSum()||i.isProduct())&&1===s.length){const e=s[0];(i.multiplier||e.multiplier)&&(e.multiplier=e.getMultiplier().times(i.getMultiplier())),i=e}else 0===s.length?i=Expression_Expression.Number("0"):(i.type=r,i.updateValue(s));return i}function getQuadrant(e){const t=Rational.PI.toDecimal(),n=t.times(2);let i=e.toDecimal().mod(n);i.lt(0)&&(i=i.plus(n));const s=Math.floor(Number(i.div(t.div(2))))+1;return Math.min(s,4)}function toPiValue(e){let t=e;return oe.includes(e.value)&&e.isLinear()&&(t=e.evaluate({[e.value]:`${Rational.PI}`})),t}function argNumDen(e,t=!1){const n=e.getArguments()[0],i=n.getNumerator(),s=n.getDenominator(),r=[i,s];return t&&r.push(geometry_hypot(i,s)),r}function trig_cos(e){let t;if((e=Expression_Expression.create(e)).isPosInf()||e.isNegInf())throw new UndefinedError(message("undefinedValue"));if(-1===e.sign()&&!e.isNUM())return trig_cos(e.neg());const n=Math.abs(+e.getMultiplier());if(1===n&&e.isFunction(Ne)){const[,n,i]=argNumDen(e,!0);t=n.div(i)}else if(1===n&&e.isFunction(Pe))t=e.getArguments()[0];else if(1===n&&e.isFunction(_e)){const[n,i]=argNumDen(e);t=math_sqrt(i.sq().minus(n.sq())).div(i)}else{const n=toPiValue(e);let i=!0;const s=[2,3];if(n.isNUM()){const r=n.getMultiplier(),o=r.div(Rational.PI);if(o.isInteger())t=Expression_Expression.Number(isEven(o.numerator)?"1":"-1");else{switch(o.denominator){case 2n:t=zero();break;case 3n:t=one().div(two());break;case 4n:t=one().div(math_sqrt(two()));break;case 6n:t=math_sqrt(three()).div(two());break;default:i=!1,t=Ge.EVALUATE?Expression_Expression.Number(r.toDecimal().cos()):Expression_Expression.toFunction(ve,[e])}i&&2n!==o.denominator&&s.includes(getQuadrant(r))&&(t=t.neg())}}else if(Ge.EVALUATE&&e.isComplex()){const n=e.realPart(),i=e.imagPart();t=trig_cos(n).times(trig_cosh(i)).minus(trig_sin(n).times(trig_sinh(i)).i())}else t=Expression_Expression.toFunction(ve,[e])}return t}function trig_sin(e){let t;if((e=Expression_Expression.create(e)).isPosInf()||e.isNegInf())throw new UndefinedError(message("undefinedValue"));if(-1===e.sign()&&!e.isNUM())return trig_sin(e.neg()).neg();const n=Math.abs(+e.getMultiplier());if(1===n&&e.isFunction(Ne)){const[n,,i]=argNumDen(e,!0);t=n.div(i).times(e.sign())}else if(1===n&&e.isFunction(_e))t=e.getArguments()[0].times(e.sign());else if(1===n&&e.isFunction(Pe)){const[n,i]=argNumDen(e);t=math_sqrt(i.sq().minus(n.sq())).div(i).times(e.sign())}else{const n=toPiValue(e);let i=!0;const s=[3,4];if(n.isNUM()){const r=n.getMultiplier(),o=r.div(Rational.PI);if(o.isInteger())t=zero();else{switch(o.denominator){case 2n:t=one();break;case 3n:t=math_sqrt(three()).div(two());break;case 4n:t=one().div(math_sqrt(two()));break;case 6n:t=one().div(two());break;default:i=!1,t=Ge.EVALUATE?Expression_Expression.Number(r.toDecimal().sin()):Expression_Expression.toFunction(we,[e])}i&&s.includes(getQuadrant(r))&&(t=t.neg())}}else if(Ge.EVALUATE&&e.isComplex()){const n=e.realPart(),i=e.imagPart();t=trig_sin(n).times(trig_cosh(i)).plus(trig_cos(n).times(trig_sinh(i)).i())}else t=Expression_Expression.toFunction(we,[e])}return t}function trig_tan(e){let t;if((e=Expression_Expression.create(e)).isPosInf()||e.isNegInf())throw new UndefinedError(message("undefinedValue"));if(-1===e.sign()&&!e.isNUM())return trig_tan(e.neg()).neg();const n=Math.abs(+e.getMultiplier());if(1===n&&e.isFunction(Ne))t=e.getArguments()[0].times(e.sign());else if(1===n&&e.isFunction(_e)){const[n,i]=argNumDen(e);t=n.div(math_sqrt(i.sq().minus(n.sq()))).times(e.sign())}else if(1===n&&e.isFunction(Pe)){const[n,i]=argNumDen(e);t=math_sqrt(i.sq().minus(n.sq())).div(n).times(e.sign())}else{const n=toPiValue(e).getMultiplier().div(Rational.PI).denominator;if(1n===n||e.isZero())t=zero();else{if(2n===n)throw new UndefinedError(message("tanUndefined"));if(Ge.EVALUATE&&e.isNUM())t=Expression_Expression.Number(e.getMultiplier().toDecimal().tan());else if(Ge.EVALUATE&&e.isComplex()){const n=e.realPart().times(two()),i=e.imagPart().times(two()),s=trig_cos(n).plus(trig_cosh(i));t=trig_sin(n).div(s).plus(trig_sinh(i).div(s).i())}else t=trig_sin(e).div(trig_cos(e)),t.hasFunction(ve)&&(t=Expression_Expression.toFunction(be,[e]))}}return t}function sec(e){if((e=Expression_Expression.create(e)).isPosInf()||e.isNegInf())throw new UndefinedError(message("undefinedValue"));let t;if(Ge.EVALUATE&&e.isComplex()){const n=e.realPart(),i=e.imagPart(),s=trig_cos(n),r=trig_cosh(i),o=trig_sin(n),a=trig_sinh(i),l=s.sq().times(r.sq()).plus(o.sq().times(a.sq()));t=s.times(r).div(l).plus(o.times(a).div(l).i())}else{const n=trig_cos(e);if(n.isZero())throw new UndefinedError(message("secUndefined"));t=n.invert(),t.hasFunction(ve)&&(t=Expression_Expression.toFunction(Se,[e]))}return t}function csc(e){if((e=Expression_Expression.create(e)).isPosInf()||e.isNegInf())throw new UndefinedError(message("undefinedValue"));let t;if(Ge.EVALUATE&&e.isComplex()){const n=e.realPart(),i=e.imagPart(),s=trig_sin(n),r=trig_cosh(i),o=trig_cos(n),a=trig_sinh(i),l=s.sq().times(r.sq()).plus(o.sq().times(a.sq()));t=s.times(r).div(l).minus(o.times(a).div(l).i())}else{const n=trig_sin(e);if(n.isZero())throw new UndefinedError(message("cscUndefined"));t=n.invert(),t.hasFunction(we)&&(t=Expression_Expression.toFunction(Me,[e]))}return t}function cot(e){if((e=Expression_Expression.create(e)).isPosInf()||e.isNegInf())throw new UndefinedError(message("undefinedValue"));let t;if(Ge.EVALUATE&&e.isComplex()){const n=e.realPart(),i=e.imagPart(),s=trig_sin(n),r=trig_cos(n),o=trig_sinh(i.times(two())),a=trig_cosh(i.times(two())),l=trig_cos(n.times(two())),u=a.minus(l);t=s.times(r).times(two()).div(u).plus(o.neg().div(u).i())}else{const n=trig_sin(e);if(n.isZero())throw new UndefinedError(message("cotUndefined"));t=trig_cos(e).div(n),t.hasFunction(ve)&&(t=Expression_Expression.toFunction(Ae,[e]))}return t}function trig_acos(e){if((e=Expression_Expression.create(e)).isPosInf()||e.isNegInf())throw new UndefinedError(message("undefinedValue"));let t;if(Ge.EVALUATE&&e.isNUM())if(e.lt(minusOne())||e.gt(one())){const n=e.sign(),i=Expression_Expression.Pi().div(two());let s=trig_asin(e.abs());1===n&&(s=s.neg()),t=i.plus(s)}else t=Expression_Expression.Number(e.getMultiplier().toDecimal().acos());else if(Ge.EVALUATE&&e.isComplex()){const n=Expression_Expression.Img(),i=math_sqrt(one().minus(e.pow(two()))),s=n.times(e);t=Expression_Expression.Pi().div(two()).minus(n.times(math_log(i.minus(s)))).expand()}else if(!e.isComplex()){const n=[[zero(),Expression_Expression.Pi().div(two())],[one().div(two()),Expression_Expression.Pi().div(three())],[one().div(math_sqrt(two())),Expression_Expression.Pi().div(four())],[math_sqrt(three()).div(two()),Expression_Expression.Pi().div(six())],[one(),zero()]],i=e.abs();for(const[s,r]of n)if(i.eq(s)){t=-1===e.sign()?Expression_Expression.Pi().minus(r):r;break}}return void 0===t&&(t=Expression_Expression.toFunction(Pe,[e])),t}function trig_asin(e){if((e=Expression_Expression.create(e)).isPosInf()||e.isNegInf())throw new UndefinedError(message("undefinedValue"));let t;if(Ge.EVALUATE&&e.isNUM())if(e.lt(minusOne())||e.gt(one())){const n=e.sign(),i=math_sqrt((e=e.abs()).sq().minus(one()));let s=Expression_Expression.Pi().div(two()),r=Expression_Expression.Img();-1===n?s=s.neg():r=r.neg(),t=s.plus(r.times(math_log(e.plus(i))))}else t=Expression_Expression.Number(e.getMultiplier().toDecimal().asin());else if(Ge.EVALUATE&&e.isComplex()){const n=Expression_Expression.Img(),i=math_sqrt(one().minus(e.pow(two()))),s=n.times(e);t=n.times(math_log(i.minus(s))).expand()}else if(!e.isComplex()){const n=[[zero(),zero()],[one().div(two()),Expression_Expression.Pi().div(six())],[one().div(math_sqrt(two())),Expression_Expression.Pi().div(four())],[math_sqrt(three()).div(two()),Expression_Expression.Pi().div(three())],[one(),Expression_Expression.Pi().div(two())]],i=e.abs();for(const[s,r]of n)if(i.eq(s)){t=-1===e.sign()?r.neg():r;break}}return void 0===t&&(t=Expression_Expression.toFunction(_e,[e])),t}function trig_atan(e){let t;if((e=Expression_Expression.create(e)).isPosInf()||e.isNegInf()){const t=Expression_Expression.Pi().div(two());return e.isNegInf()?t.neg():t}if(Ge.EVALUATE&&e.isNUM())t=Expression_Expression.Number(e.getMultiplier().toDecimal().atan());else if(Ge.EVALUATE&&e.isComplex()){const n=Expression_Expression.Img(),i=math_log(n.minus(e).div(n.plus(e)));t=n.neg().div(two()).times(i).expand()}else if(!e.isComplex()){const n=[[zero(),zero()],[math_sqrt(three()).invert(),Expression_Expression.Pi().div(six())],[one(),Expression_Expression.Pi().div(four())],[math_sqrt(three()),Expression_Expression.Pi().div(three())]],i=e.abs();for(const[s,r]of n)if(i.eq(s)){t=-1===e.sign()?r.neg():r;break}}return t||(t=Expression_Expression.toFunction(Ne,[e])),t}function asec(e){if((e=Expression_Expression.create(e)).isPosInf()||e.isNegInf())return Expression_Expression.Pi().div(two());const t=trig_acos(e.invert());return t.isFunction(Pe)&&t.getArguments()[0].eq(e.invert())?Expression_Expression.toFunction(Te,[e]):t}function acsc(e){if((e=Expression_Expression.create(e)).isPosInf()||e.isNegInf())return zero();const t=trig_asin(e.invert());return t.isFunction(_e)&&t.getArguments()[0].eq(e.invert())?Expression_Expression.toFunction(Ie,[e]):t}function acot(e){let t;return(e=Expression_Expression.create(e)).isPosInf()||e.isNegInf()?t=e.isNegInf()?Expression_Expression.Pi():zero():e.isZero()?t=Expression_Expression.Pi().div(two()):(t=trig_atan(e.invert()),t.isFunction(Ne)&&t.getArguments()[0].eq(e.invert())?t=Expression_Expression.toFunction(Re,[e]):e.isNUM()&&-1===e.sign()&&(t=Expression_Expression.Pi().plus(t))),t}function trig_atan2(e,t){if(t=Expression_Expression.create(t),e=Expression_Expression.create(e),t.isZero()&&e.isZero())throw new UndefinedError(message("atan2Undefined"));if((t.isPosInf()||t.isNegInf())&&(e.isPosInf()||e.isNegInf()))throw new UndefinedError(message("atan2Undefined"));if(t.isPosInf()||t.isNegInf())return t.isNegInf()?-1===e.sign()?Expression_Expression.Pi().neg():Expression_Expression.Pi():zero();if(e.isPosInf()||e.isNegInf()){const t=Expression_Expression.Pi().div(two());return e.isNegInf()?t.neg():t}let n;if(t.isNUM()&&e.isNUM()){const i=e.getMultiplier(),s=t.getMultiplier();n=s.gt(zero())?trig_atan(e.div(t)):s.lt("0")&&i.gte("0")?trig_atan(e.div(t)).plus(Expression_Expression.Pi()):s.lt("0")&&i.lt("0")?trig_atan(e.div(t)).plus(Expression_Expression.Pi().neg()):s.eq("0")&&i.gt(zero())?Expression_Expression.Pi().div(two()):Expression_Expression.Pi().neg().div(two())}else n=Expression_Expression.toFunction(Oe,[e,t]);return n}function trig_cosh(e){let t;if((e=Expression_Expression.create(e)).isPosInf()||e.isNegInf())return Expression_Expression.Inf();if(e.isZero())t=one();else if(Ge.EVALUATE&&e.isNUM())t=Expression_Expression.Number(e.getMultiplier().toDecimal().cosh());else if(Ge.EVALUATE&&e.isComplex()){const n=e.realPart(),i=e.imagPart();t=trig_cosh(n).times(trig_cos(i)).plus(trig_sinh(n).times(trig_sin(i)).i())}else t=Expression_Expression.toFunction(Ce,[e]);return t}function trig_sinh(e){let t;if((e=Expression_Expression.create(e)).isPosInf()||e.isNegInf())return e.isNegInf()?Expression_Expression.NegInf():Expression_Expression.Inf();if(e.isZero())t=zero();else if(Ge.EVALUATE&&e.isNUM())t=Expression_Expression.Number(e.getMultiplier().toDecimal().sinh());else if(Ge.EVALUATE&&e.isComplex()){const n=e.realPart(),i=e.imagPart();t=trig_sinh(n).times(trig_cos(i)).plus(trig_cosh(n).times(trig_sin(i)).i())}else t=Expression_Expression.toFunction(Fe,[e]);return t}function trig_tanh(e){let t;if((e=Expression_Expression.create(e)).isPosInf()||e.isNegInf())return e.isNegInf()?one().neg():one();if(e.isZero())t=zero();else if(Ge.EVALUATE&&e.isNUM())t=Expression_Expression.Number(e.getMultiplier().toDecimal().tanh());else if(Ge.EVALUATE&&e.isComplex()){const n=e.realPart(),i=e.imagPart(),s=trig_sinh(n).times(trig_cos(i)).plus(trig_cosh(n).times(trig_sin(i)).i()),r=trig_cosh(n).times(trig_cos(i)).plus(trig_sinh(n).times(trig_sin(i)).i());t=s.div(r)}else t=Expression_Expression.toFunction(qe,[e]);return t}function sech(e){if((e=Expression_Expression.create(e)).isPosInf()||e.isNegInf())return zero();let t=one().div(trig_cosh(e));return t.hasFunction(Ce)&&(t=Expression_Expression.toFunction(Ve,[e])),t}function csch(e){if((e=Expression_Expression.create(e)).isPosInf()||e.isNegInf())return zero();if(e.isZero())throw new UndefinedError(message("cschUndefined"));let t=one().div(trig_sinh(e));return t.hasFunction(Fe)&&(t=Expression_Expression.toFunction(ke,[e])),t}function coth(e){if((e=Expression_Expression.create(e)).isPosInf()||e.isNegInf())return e.isNegInf()?one().neg():one();if(e.isZero())throw new UndefinedError(message("cothUndefined"));let t=one().div(trig_tanh(e));return t.hasFunction(qe)&&(t=Expression_Expression.toFunction(Ue,[e])),t}function trig_acosh(e){if((e=Expression_Expression.create(e)).isPosInf()||e.isNegInf()){if(e.isNegInf())throw new UndefinedError(message("undefinedValue"));return Expression_Expression.Inf()}let t;if(e.isOne())t=zero();else if(e.isZero())t=Expression_Expression.Pi().div(two()).times(Expression_Expression.Img());else if(Ge.EVALUATE)if(e.isComplex()||e.lt(one())){const n=math_sqrt(e.plus(one())),i=math_sqrt(e.minus(one()));t=math_log(e.plus(n.times(i)))}else t=Expression_Expression.Number(e.getMultiplier().toDecimal().acosh());return t||(t=Expression_Expression.toFunction(De,[e])),t}function trig_asinh(e){if((e=Expression_Expression.create(e)).isPosInf()||e.isNegInf())return e.isNegInf()?Expression_Expression.NegInf():Expression_Expression.Inf();let t;return e.isZero()?t=zero():Ge.EVALUATE&&(t=e.isComplex()?math_log(e.plus(math_sqrt(e.sq().plus(one())))):Expression_Expression.Number(e.getMultiplier().toDecimal().asinh())),t||(t=Expression_Expression.toFunction(Le,[e])),t}function trig_atanh(e){if((e=Expression_Expression.create(e)).isPosInf()||e.isNegInf())throw new UndefinedError(message("undefinedValue"));let t;if(e.isZero())t=zero();else{if(e.isOne())throw new UndefinedError(message("atanhUndefined"));Ge.EVALUATE&&(t=e.isComplex()||e.lt(minusOne())||e.gt(one())?math_log(one().plus(e).div(one().minus(e))).div(two()).expand():Expression_Expression.Number(e.getMultiplier().toDecimal().atanh()))}return t||(t=Expression_Expression.toFunction(Be,[e])),t}function asech(e){if((e=Expression_Expression.create(e)).isPosInf()||e.isNegInf())throw new UndefinedError(message("undefinedValue"));let t;if(Ge.EVALUATE)if(e.isComplex())t=trig_acosh(e.invert());else{const n=one().div(e);t=math_log(math_sqrt(one().div(e.sq()).minus(one())).plus(n))}return t||(t=Expression_Expression.toFunction(ze,[e])),t}function acsch(e){if((e=Expression_Expression.create(e)).isPosInf()||e.isNegInf())return zero();let t;if(Ge.EVALUATE)if(e.isComplex())t=trig_asinh(e.invert());else{const n=one().div(e);t=math_log(math_sqrt(one().div(e.sq()).plus(one())).plus(n))}return t||(t=Expression_Expression.toFunction($e,[e])),t}function acoth(e){if((e=Expression_Expression.create(e)).isPosInf()||e.isNegInf())return zero();let t;return Ge.EVALUATE&&(t=e.isComplex()?trig_atanh(e.invert()):math_log(e.plus(one()).div(e.minus(one()))).div(two()).expand()),t||(t=Expression_Expression.toFunction(Ze,[e])),t}function isPrimeBig(e){if(e<2n)return!1;if(2n===e||3n===e)return!0;if(e%2n==0n)return!1;let t=0n,n=e-1n;for(;n%2n==0n;)t++,n/=2n;const i=e<18446744073709551616n?[2n,325n,9375n,28178n,450775n,9780504n,1795265022n]:[2n,3n,5n,7n,11n,13n,17n,19n,23n,29n,31n,37n];for(const s of i){const i=s%e;if(i<2n)continue;let r=powMod(i,n,e);if(1n===r||r===e-1n)continue;let o=!1;for(let n=0n;n<t-1n;n++)if(r=r*r%e,r===e-1n){o=!0;break}if(!o)return!1}return!0}function nextPrimeBig(e){let t=e<=2n?2n:e;for(t>2n&&t%2n==0n&&t++;!isPrimeBig(t);)t+=2n===t?1n:2n;return t}function primeFactorsBig(e,t){const n=bigint_sign(e);e=bigint_abs(e);const i=[];if(1n===e||2n===e||isPrimeBig(e))i.push(e);else{const factorize=e=>{if(1n===e)return;if(isPrimeBig(e))return void i.push(e);const t=function pollardRhoBig(e){if(e%2n==0n)return 2n;let t=2n,n=2n,i=1n;const f=t=>(t*t+1n)%e,gcd=(e,t)=>{for(;0n!==t;)[e,t]=[t,e%t];return e};for(;1n===i;)t=f(t),n=f(f(n)),i=gcd(t>n?t-n:n-t,e);return i===e?0n:i}(e);if(0n===t){const t=function trialDivisionBig(e){if(e<=1n)return[];const t=[];for(;e%2n==0n;)t.push(2n),e/=2n;let n=3n;const i=(e=>{if(e<2n)return e;let t=e,n=(t+1n)/2n;for(;n<t;)t=n,n=(t+e/t)/2n;return t})(e);for(;n<=i;){for(;e%n===0n;)t.push(n),e/=n;n+=2n}return e>1n&&t.push(e),t}(e);return void i.push(...t)}factorize(t),factorize(e/t)};factorize(e)}return i.sort((e,t)=>e<t?-1:1),{sign:n,factors:t?i.map(e=>Number(e)):i}}function primeFactorCounts(e){const t={},n=primeFactorsBig(e).factors;for(const e of n){const n=String(e);n in t?t[n]++:t[n]=1n}return t}function toCommonDenominator(e){let t=e;if(e.isProduct())t=Expression_Expression.fromRational(e.getMultiplier()),e.each(n=>{n=n.pow(e.getPower()),t=n.isSum()?t.times(toCommonDenominator(n)):t.times(n)});else if(e.isSum()){if(e=function groupByDenominator(e){let t=e;if(e.isSum()){let n=zero();const i={};e.each(e=>{const t=e.getNumerator(),s=e.getDenominator();if(e.getMultiplier().asDecimal&&(t.getMultiplier().asDecimal=!0),s.isOne())n=n.plus(t);else{const e=s.text();i[e]=i[e]?i[e].plus(t):t}}),t=n;for(const e in i)t=t.plus(i[e].div(Expression_Expression.create(e)));t=t.pow(e.getPower()).times(e.getMultiplier())}return t}(e),!e.isSum())return e;const n=e.getPower().abs(),i=e.getMultiplier(),s=e.elementsArray();let r=!1,o=!1;for(const e of s){const t=e.getDenominator();t.isOne()||(r=!0,t.isNUM()||(o=!0))}if(!r)return e;if(!o&&!e.isPolynomialLike())return e;let a=zero(),l=one();for(const e of s){const t=toCommonDenominator(e),n=t.getNumerator(),i=t.getDenominator();e.getMultiplier().asDecimal&&(n.getMultiplier().asDecimal=!0),a=a.times(i).plus(l.times(n)),l=l.times(i)}-1===e.getPower().sign()&&([l,a]=[a,l]),t=a.div(l),n.isOne()||(t=t.pow(n)),i.isOne()||(t=t.times(Expression_Expression.fromRational(i)))}return t}function subtract(e,t){let n;if(Ge.DEFER_SIMPLIFICATION)n=add_add(e,t.neg()),n.deferred=!0;else if(n=e.isNUM()&&t.isNUM()?Expression_Expression.fromRational(e.getMultiplier().minus(t.getMultiplier())):!e.isInf()&&t.isInf()?Expression_Expression.Inf().neg():add_add(e,t.neg()),!n)throw new Error(message("subtractionNotDefined",{leftType:String(e.type),rightType:String(t.type),left:String(e),right:String(t)}));return n}function getAffineForm(e){let t;if(!e.isComplex()&&e.getPower().isOne())if(e.isVAR())getAssumptionFor(e.value)&&(t={coefficient:Expression_Expression.fromRational(e.getMultiplier()),constant:Expression_Expression.Number(0),symbol:e.value});else if(e.isSum()){const n=e.elementsArray();let i,s=!0;for(const e of n)if(!e.isNUM()){if(!e.isVAR()||!e.getPower().isOne()){s=!1;break}if(void 0===i){if(i=e.value,!getAssumptionFor(i)){s=!1;break}}else if(i!==e.value){s=!1;break}}if(s&&void 0!==i){let e=Expression_Expression.Number(0),s=Expression_Expression.Number(0);for(const t of n)t.isNUM()?s=s.plus(t):e=e.plus(Expression_Expression.fromRational(t.getMultiplier()));e.isZero()||(t={coefficient:e,constant:s,symbol:i})}}return t}function compareAffineToValue(e,t,n){const i=getAffineForm(e);let s;if(i){const e=getAssumptionFor(i.symbol);if(e){const r=t.minus(i.constant).div(i.coefficient);let o=n;i.coefficient.getMultiplier().isNegative()&&(o="gt"===n?"lt":"gte"===n?"lte":"lt"===n?"gt":"gte"),s=e[o](r)}}return s}function compareAffineExpressions(e,t,n){let i;const s=e.isSum()||e.isVAR()&&!e.isPlainVariable(),r=t.isSum()||t.isVAR()&&!t.isPlainVariable();if(s&&t.isNUM())i=compareAffineToValue(e,t,n);else if(e.isNUM()&&r){let s;s="gt"===n?"lt":"gte"===n?"lte":"lt"===n?"gt":"gte",i=compareAffineToValue(t,e,s)}return i}function getProvenSign(e){let t;if(!e.isComplex())if(e.isNUM())t=e.getMultiplier().sign();else{const n=e.getMultiplier().sign(),i=e.getPower();if(0===n)t=0;else if(!i.isOne()&&i.isNUM()){const s=getProvenSign(e.toLinearAndUnitMultiplier());let r;1===s?r=1:-1===s&&i.isInteger()?r=i.isEven()?1:-1:0===s&&i.getMultiplier().gt("0")&&(r=0),void 0!==r&&(t=n*r)}else if(e.isProduct()){let i=n,s=!0;for(const t of e.elementsArray()){const e=getProvenSign(t);if(void 0===e){s=!1;break}if(i*=e,0===i)break}s&&(t=i)}if(void 0===t&&i.isOne()){const i=getAssumptionFor(e.toLinearAndUnitMultiplier());if(i){const e=Expression_Expression.Number(0);let s;!0===i.gt(e)?s=1:!0===i.lt(e)?s=-1:!0===i.eq(e)&&(s=0),void 0!==s&&(t=n*s)}else e.isSum()&&hasAssumptions()&&(t=function getAffineSign(e){const t=getAffineForm(e);let n;if(t){const e=getAssumptionFor(t.symbol);if(e){const i=t.constant.neg().div(t.coefficient),s=t.coefficient.getMultiplier().isNegative(),r=s?e.lt(i):e.gt(i),o=s?e.gt(i):e.lt(i);!0===r?n=1:!0===o?n=-1:!0===e.eq(i)&&(n=0)}}return n}(e))}}return t}function equal(e,t){e=Expression_Expression.create(e),t=Expression_Expression.create(t);const n=e.isPlainVariable()&&t.isPlainVariable()&&e.value===t.value,i=getAssumptionFor(e),s=getAssumptionFor(t);let r,o;if(e.isComplex()&&t.isComplex()){const n=e.realPart(),i=e.imagPart(),s=t.realPart(),r=t.imagPart();if(n.isNUM()&&i.isNUM()&&s.isNUM()&&r.isNUM())return n.getMultiplier().eq(s.getMultiplier())&&i.getMultiplier().eq(r.getMultiplier())}if(n)o=!0;else if(i&&s?r=i.eq(s):i?r=i.eq(t):s&&(r=s.eq(e)),void 0!==r)o=r;else{let n;n=e.isNUM()&&t.isNUM()?subtract(e,t):toCommonDenominator(subtract(e=canonicalizeRadicals(e),t=canonicalizeRadicals(t)).expand()).expand(),o=n.isNUM()&&n.getMultiplier().eq("0")}return o}function gt(e,t){if(e=Expression_Expression.create(e),t=Expression_Expression.create(t),e.isComplex()||t.isComplex())throw new UnsupportedOperationError(message("unsupportedOperation"));const n=getAssumptionFor(e),i=getAssumptionFor(t);let s,r;if(n&&i?s=n.gt(i):n?s=n.gt(t):i&&(s=i.lt(e)),void 0!==s)r=s;else{let n;if(t.isZero())n=getProvenSign(e);else if(e.isZero()){const e=getProvenSign(t);void 0!==e&&(n=-e)}if(void 0!==n)r=n>0;else{const n=!hasAssumptions()||e.isZero()||t.isZero()?void 0:compareAffineExpressions(e,t,"gt");if(void 0!==n)r=n;else{const n=subtract(e.evaluate(),t.evaluate()).expand();r=n.isNUM()&&n.getMultiplier().gt("0")}}}return r}function lt(e,t){if(e=Expression_Expression.create(e),t=Expression_Expression.create(t),e.isComplex()||t.isComplex())throw new UnsupportedOperationError(message("unsupportedOperation"));const n=getAssumptionFor(e),i=getAssumptionFor(t);let s,r;if(n&&i?s=n.lt(i):n?s=n.lt(t):i&&(s=i.gt(e)),void 0!==s)r=s;else{let n;if(t.isZero())n=getProvenSign(e);else if(e.isZero()){const e=getProvenSign(t);void 0!==e&&(n=-e)}if(void 0!==n)r=n<0;else{const n=!hasAssumptions()||e.isZero()||t.isZero()?void 0:compareAffineExpressions(e,t,"lt");if(void 0!==n)r=n;else{const n=subtract(e.evaluate(),t.evaluate()).expand();r=n.isNUM()&&n.getMultiplier().lt("0")}}}return r}const ft={[ve]:Se,[Se]:ve,[we]:Me,[Me]:we,[be]:Ae,[Ae]:be,[Ce]:Ve,[Ve]:Ce,[Fe]:ke,[ke]:Fe,[qe]:Ue,[Ue]:qe};function power(e,t){let n;if(e.isZero()&&t.isZero())throw new ZeroToZeroPowerError(message("zeroToZeroPower"));if(Ge.DEFER_SIMPLIFICATION)n=e.copy(),n=Expression_Expression.toEXP(n,t.copy()),n.deferred=!0;else{if(e.isI()&&t.isInteger())n=simplifyImaginary(setPower(e,t));else if(e.isE()&&t.isComplex()){const i=t.copy(),s=i.getMultiplier();if(delete i.multiplier,equal(i,`${Expression_Expression.imaginary}*${oe[0]}`))if(s.isInteger()){const t=Expression_Expression.Number(s.evenNumerator()?"1":"-1");n=multiply(Expression_Expression.fromRational(e.getMultiplier()),t)}else if("2"===s.denominator.toString()){const t=Expression_Expression.Number(1n===s.abs().mod("4").numerator?"1":"-1");n=multiply(multiply(Expression_Expression.fromRational(e.getMultiplier()),Expression_Expression.Img()),t),s.isNegative()&&(n=n.neg())}}else if(Ge.EVALUATE){if(e.isFunction()&&t.isMinusOne()&&e.getMultiplier().isOne()&&e.getPower().isOne()&&ft[e.name])n=Expression_Expression.toFunction(ft[e.name],e.getArguments());else if(e.isNUM()&&t.isNUM()){const i=-1===e.sign(),s=-1===t.sign();let r=e.abs();const o=t.abs();if(i){let e=o.times(Expression_Expression.Pi());s&&(r=r.invert(),e=e.neg());const t=Expression_Expression.Number(r.getMultiplier().toDecimal().pow(o.getMultiplier().toDecimal())),i=trig_cos(e).times(t),a=trig_sin(e).times(t).times(Expression_Expression.Img());n=i.plus(a)}else n=Expression_Expression.fromRational(r.getMultiplier().pow(o.getMultiplier())),s&&(n=n.invert())}else if(e.isComplex())if(t.isComplex()){const[i,s]=toPolarFormArray(e),r=realPart(t),o=imagPart(t),a=r.times(s).plus(o.times(math_log(i)));n=power(i,r).times(Expression_Expression.E().pow(o.neg().times(s))).times(trig_cos(a).plus(Expression_Expression.Img().times(trig_sin(a))))}else{const i=e.distributeMultiplier(),[s,r]=toPolarFormArray(i),o=r.times(t),a=s.pow(t);n=a.times(trig_cos(o)).plus(a.times(Expression_Expression.Img().times(trig_sin(o))))}else if(t.isComplex()){const i=e.pow(t.realPart()),s=e.pow(t.imagPart());n=i.times(trig_cos(math_log(s))).plus(i.times(trig_sin(math_log(s))).times(Expression_Expression.Img()))}}else{const i=t.isInf();if(e.isOne()&&!i)n=one();else if(!e.isZero()||i||t.isZero())if(!t.isZero()||e.isInf()||e.isNUM())if(t.isOne())n=e.copy();else if(e.isInf()||i){const i=e.isInf(),s=t.isInf();if(i&&s)throw new UndefinedError(message("infinityToInfinity"));if(e.isNUM()){const i=e.getMultiplier();if(i.gt("1")&&t.isPosInf()||e.isPosInf()&&t.isPosInf())n=Expression_Expression.Inf();else{if(!(i.gt("1")&&t.isNegInf()||i.eq("0")&&t.isPosInf()))throw new UndefinedError(message("valueToInfinityUndefined",{value:i.lt("0")?`(${e})`:`${e}`}));n=Expression_Expression.Number("0")}}else if(t.isZero())throw new UndefinedError(message("infinityToPowerZero"))}else if(e.isProduct()&&(e.isLinear()&&t.isInteger()||e.isConstant()&&!e.isComplex()&&e.sign()>0)){n=Expression_Expression.fromRational(e.getMultiplier()).pow(t);const i=e.getElements();for(const e in i)n=n.times(i[e].pow(t))}else if(!t.isNUM()||t.isInteger()||e.isNUM()||e.getMultiplier().abs().isOne())if(t.isNUM()&&!t.isInteger()&&e.isProduct()&&e.isLinear()){let i=one(),s=one(),r=!1;for(const n of e.elementsArray())!n.isComplex()&&n.gt(zero())?(i=i.times(power(n,t)),r=!0):s=s.times(n);r&&(n=s.isOne()?i:i.times(power(s,t)))}else if(t.isNUM())if(e.isZero())n=Expression_Expression.Number("0");else if(e.isMinusOne()&&t.isInteger()&&t.isOdd())n=one().neg();else if(t.isZero())n=one();else if(e.isEXP()&&!e.getBase().isNUM()&&t.isInteger()){const i=multiply(e.getPower(),t);i.isOne()?n=e.getBase().times(e.getMultiplier()):(n=e.copy(),n.power=i)}else{const i=t.abs().getMultiplier(),s=i.numerator,r=i.denominator,o=e.getMultiplier().abs(),a=o.numerator**s,l=o.denominator**s;if(a<=Ge.MAX_FRAC_INT&&l<=Ge.MAX_FRAC_INT){const i=nthPow(a,r),o=nthPow(l,r),u=isEven(s);let c;if(c=-1===t.sign()?o.times(i.invert()):i.times(o.invert()),1n!==r&&!e.isNUM()&&e.getMultiplier().isNegative())n=Expression_Expression.toEXP(e.copy(),t),n=n.times(c),n=rationalizeRadical(n);else if(1n!==r&&2n!==r&&e.isNUM()&&-1===e.sign())n=Expression_Expression.toEXP(minusOne(),t).times(c);else{if(n=e.toUnitMultiplier(),n.isOne()&&-1===e.sign()&&2n===r)n=n.times(Expression_Expression.Img()),s%4n==3n&&(n=n.neg()),-1===t.sign()&&(n=n.invert());else if(-1!==e.sign()||u){const e=n.getPower(),i=e.times(t);if(i.isZero())n=one();else if(i.isNUM()){const s=e.getMultiplier().abs(),r=t.isInteger()||e.isOne()||s.lt("1");!t.isInteger()&&e.isInteger()&&e.isEven()&&!stripPower(n).isComplex()?(n=math_abs(stripPower(n)),n=Expression_Expression.setPower(n,i)):r?n.isEXP()?n=power(n.getBase(),i).times(n.getMultiplier()):(n.isFunction("abs")&&isEven(i.getMultiplier().numerator)&&(n=n.getArguments()[0].times(n.getMultiplier())),n=Expression_Expression.setPower(n,i)):n=Expression_Expression.toEXP(n,t)}else n=n.getPower().isNUM()?Expression_Expression.toEXP(n,i,!0):Expression_Expression.toEXP(n,t)}else{n=n.neg();const i=t.isInteger();e.isVAR()&&i?n=Expression_Expression.setPower(n,t):n.isMinusOne()&&i||(n=Expression_Expression.toEXP(n,t))}n=n.times(c),n=rationalizeRadical(n)}}}else if(e.isInf()||t.isInf()){const i=e.isInf(),s=t.isInf();if(i&&s)throw new UndefinedError(message("infinityToInfinity"));if(e.isNUM()){const i=e.getMultiplier();if(i.gt("1")&&t.isPosInf()||e.isPosInf()&&t.isPosInf())n=Expression_Expression.Inf();else{if(!(i.gt("1")&&t.isNegInf()||i.eq("0")&&t.isPosInf()))throw new UndefinedError(message("valueToInfinityUndefined",{value:i.lt("0")?`(${e})`:`${e}`}));n=Expression_Expression.Number("0")}}else if(t.isZero())throw new UndefinedError(message("infinityToPowerZero"))}else{const i=e.getPower(),s=t.times(i);if(i.isNUM()&&!s.isNUM()){const r=e.getMultiplier(),o=i.getMultiplier().abs(),a=stripPower(e.toUnitMultiplier());!r.isNegative()&&i.isInteger()&&i.isEven()&&!a.isComplex()?(n=math_abs(a),n=Expression_Expression.toEXP(n,s),r.isOne()||(n=n.times(Expression_Expression.toEXP(Expression_Expression.fromRational(r),t)))):r.isNegative()||!i.isOne()&&!o.lt("1")||(n=Expression_Expression.toEXP(a,s),r.isOne()||(n=n.times(Expression_Expression.toEXP(Expression_Expression.fromRational(r),t))))}}else{const i=e.getMultiplier(),s=i.abs();let r=e.toUnitMultiplier();i.isNegative()&&(r=r.neg()),n=power(r,t).times(power(Expression_Expression.fromRational(s),t))}else n=one();else n=Expression_Expression.Number("0")}if(n||(n=setPower(e,t)),n.isI()&&(n=simplifyImaginary(n)),e.hasDecimal()){(n.isEXP()?n.getBase():n).getMultiplier().asDecimal=!0}}return n}function setPower(e,t){let n;if(Ge.EVALUATE&&e.isNUM()&&t.isNUM()&&!e.getMultiplier().isNegative()&&!t.getMultiplier().isNegative())n=Expression_Expression.fromRational(e.getMultiplier().pow(t.getMultiplier()));else if(e.isNUM())n=Expression_Expression.toEXP(e.getMultiplier(),t);else if(t.isNUM()&&!e.isEXP()){n=e.toUnitMultiplier();const i=t.getMultiplier().sign(),s=t.getMultiplier().abs();let r=e.getMultiplier();r.isNegative()&&(n.power=n.getPower().times(s),n=n.times(minusOne().pow(s)),r=r.abs());const o=r.pow(s);n.multiplier=n.getMultiplier().isNegative()?o.neg():o,-1===i&&(n.multiplier=n.getMultiplier().invert()),n=Expression_Expression.setPower(n,e.getPower().times(t.getMultiplier()))}else{const i=e.getPower().times(t);if(i.isNUM()&&e.isEXP()&&!e.getBase().isComplex()&&e.getBase().gt(zero())&&imagPart(e.getPower()).isZero())n=power(e.getBase(),i).times(e.getMultiplier());else{const i=e.getMultiplier(),s=i.abs();let r=e.toUnitMultiplier();i.isNegative()&&(r=r.neg()),n=Expression_Expression.toEXP(r,t),s.isOne()||(n=n.times(Expression_Expression.toEXP(s,t)))}}return n}function nthPow(e,t){let n;if(1n===t&&"bigint"==typeof e)n=Expression_Expression.Number(e);else{let i=1n;const s={},r="bigint"==typeof e?primeFactorCounts(e):e;for(const e in r){const n=r[e],o=n/t,a=n-o*t;i*=BigInt(e)**o,a>0n&&(s[e]=a)}const o={};for(const e in s){const t=String(s[e]);o[t]=o[t]?BigInt(e)*o[t]:BigInt(e)}n=1n===i?one():Expression_Expression.Number(i);for(const e in o){const i=o[e],s=Expression_Expression.Number(BigInt(e)).div(Expression_Expression.Number(t));n=n.times(Expression_Expression.toEXP(Expression_Expression.Number(i),s))}}return n}function rationalizeRadical(e,t=!1){if(!e.isEXP()||!e.hasRadical())return e;const n=e.getPower().getMultiplier();if(!n.isNegative())return e;const i=e.getBase(),s=bigint_abs(n.numerator),r=bigint_abs(n.denominator),o=(s+r-1n)/r,a=o*r-s;if(!t&&a>s)return e;let l;l=0n===a?one():i.pow(Expression_Expression.Number(a).div(Expression_Expression.Number(r)));const u=i.pow(Expression_Expression.Number(-o));return l.times(u).times(e.getMultiplier())}function geometry_hypot(e,t){const n=[we,ve];let i;if(e.isFunction(n)&&t.isFunction(n)&&e.name!==t.name&&e.isLinear()&&t.isLinear()&&e.getMultiplier().eq(t.getMultiplier()))i=Expression_Expression.fromRational(e.getMultiplier());else{const n=power(e,two()),s=power(t,two());i=power(add_add(n,s),half())}return i}function line(e,t,n="x"){if(!e||!t||"VEC"!==e.dataType||"VEC"!==t.dataType||2!==e.count()||2!==t.count())throw new DimensionError(message("mismatchedDimensions",{function:"line"}));const i=e.elements[0],s=e.elements[1],r=t.elements[0],o=t.elements[1];if(!(Expression_Expression.isExpression(i)&&Expression_Expression.isExpression(s)&&Expression_Expression.isExpression(r)&&Expression_Expression.isExpression(o)))throw new UnexpectedInputError(message("wrongInput",{expected:"two-dimensional vectors of scalar expressions",received:`${e.text()}, ${t.text()}`}));const a=Expression_Expression.create(n);return s.plus(o.minus(s).div(r.minus(i)).times(a.minus(i)))}function divide_divide(e,t){let n;if(Ge.DEFER_SIMPLIFICATION)t.isNUM()&&(t.power=one()),n=divide_div(e,t),n.deferred=!0;else{if(t.isZero())throw new DivisionByZeroError(message("divisionByZero"));if(e.isZero()&&!t.isInf())n=Expression_Expression.Number("0");else if(e.isNUM()&&t.isNUM())n=Expression_Expression.fromRational(e.getMultiplier().div(t.getMultiplier()));else if(t.isNUM()){n=e.copy();const i=e.getMultiplier().div(t.getMultiplier());n.multiplier=i}else{if(e.isComplex()||t.isComplex()){const n=e.realPart(),i=t.realPart(),s=e.imagPart(),r=t.imagPart(),o=i.sq().plus(r.sq()),a=n.times(i).plus(s.times(r)).div(o),l=s.times(i).minus(n.times(r)).div(o).times(Expression_Expression.Img());return a.plus(l)}t.isInf()&&!e.isZero()?t.getMultiplier().isNegative()||e.isInf()||(n=Expression_Expression.Number("0")):(n=divide_div(e,t),n.isEXP()&&n.hasRadical()&&(n=rationalizeRadical(n)))}if(!n)throw new UndefinedError(message("undefinedDivision",{type:`${e}/${t}`}))}return n}function divide_div(e,t){return(t=t.copy()).power=t.getPower().neg(),t.multiplier=t.getMultiplier().invert(),multiply(e,t)}function realPart(e){let t;const n=expand(e);if(n.isVAR()&&n.isI()){const e=trig_cos(multiply(n.getPower(),divide_divide(Expression_Expression.Pi(),two())));t=multiply(Expression_Expression.fromRational(n.getMultiplier()),e)}else if(n.isEXP()){const e=n.getPower(),i=Expression_Expression.fromRational(n.getMultiplier());if(e.isInteger())t=multiply(i,realPart(power(n.getBase(),e)));else{const[s,r]=toPolarFormArray(n.getBase()),o=power(s,e),a=trig_cos(multiply(e,r));t=multiply(i,multiply(o,a))}}else if(n.isComplexComponentFunction())t=n.copy();else if(n.isFunction())t=n.isComplex()?Expression_Expression.toFunction(ye,[n]):n.copy();else if(n.isProduct()&&n.isComplex()){const e=Expression_Expression.fromRational(n.getMultiplier());let i,s=one(),r=0;const o=n.getElements();for(const e in o){const t=o[e];t.isComplex()?(i=t,r++):s=multiply(s,t)}if(1===r&&i)t=multiply(e,multiply(s,realPart(i)));else{let n=one(),i=zero();for(const e in o){const t=o[e];if(t.isComplex()){const e=realPart(t),s=imagPart(t),r=n,o=i;n=multiply(r,e).minus(multiply(o,s)),i=multiply(r,s).plus(multiply(o,e))}}t=multiply(e,multiply(s,n))}}else if(n.isConstant()||n.isVAR()&&!n.isI()||n.isProduct()&&!n.isComplex())t=e.copy();else if(n.isSum())if(n.getPower().isOne()){t=zero();const e=n.getElements();for(const n in e){t=add_add(t,realPart(e[n]))}}else t=e.copy();else t=zero();return t}function imagPart(e){let t;const n=expand(e);if(n.isVAR()&&n.isI()){const e=trig_sin(multiply(n.getPower(),divide_divide(Expression_Expression.Pi(),two())));t=multiply(Expression_Expression.fromRational(n.getMultiplier()),e)}else if(n.isEXP()){const e=n.getPower(),i=Expression_Expression.fromRational(n.getMultiplier());if(e.isInteger())t=multiply(i,imagPart(power(n.getBase(),e)));else{const[s,r]=toPolarFormArray(n.getBase()),o=power(s,e),a=trig_sin(multiply(e,r));t=multiply(i,multiply(o,a))}}else if(n.isComplexComponentFunction())t=zero();else if(n.isFunction()&&n.isComplex())t=Expression_Expression.toFunction(he,[n]);else if(n.isSum()){t=zero();const e=n.getElements();for(const n in e)t=add_add(t,imagPart(e[n]))}else if(n.isProduct())if(n.isComplex()){const e=Expression_Expression.fromRational(n.getMultiplier());let i,s=one(),r=0;const o=n.getElements();for(const e in o){const t=o[e];t.isComplex()?(i=t,r++):s=multiply(s,t)}if(1===r&&i)t=multiply(e,multiply(s,imagPart(i)));else{let n=one(),i=zero();for(const e in o){const t=o[e];if(t.isComplex()){const e=realPart(t),s=imagPart(t),r=n,o=i;n=multiply(r,e).minus(multiply(o,s)),i=multiply(r,s).plus(multiply(o,e))}}t=multiply(e,multiply(s,i))}}else t=zero();else t=zero();return t}function simplifyImaginary(e){const t=e.getPower();if(e.isI()&&t.isInteger()){let n;switch(t.mod("4").abs().text()){case"1":n=Expression_Expression.Img();break;case"2":n=minusOne();break;case"3":n=Expression_Expression.Img().neg();break;default:n=one()}return n=multiply(n,Expression_Expression.fromRational(e.getMultiplier())),n}return e}function toPolarFormArray(e){const t=e.realPart(),n=e.imagPart(),i=geometry_hypot(t,n);let s;return s=t.isZero()?n.isZero()?zero():n.isConstant()?n.sign()<0?multiply(minusOne(),divide_divide(Expression_Expression.Pi(),two())):divide_divide(Expression_Expression.Pi(),two()):trig_atan2(n,t):trig_atan2(n,t),[i,s]}function polarForm(e){let t;if(e.isNUM()||e.isI()&&e.isLinear())t=e.copy();else{const[n,i]=toPolarFormArray(expand(e)),s=multiply(Expression_Expression.Img(),i);t=multiply(power(Expression_Expression.Variable("e"),s),n)}return t}function rectForm(e){let t;if((e=Expression_Expression.create(e)).isE()){const n=e.getPower(),i=e.getMultiplier();if(n.isComplex()){const e=function toTheta(e){const t=e.elementsArray();let n=one(),i=one();for(const e of t)e.isComplex()?n=n.times(e):i=i.times(e);if(n.value===Expression_Expression.imaginary)return i.isFunction(Ne)?i:i.times(e.getMultiplier());if(n.isFunction(Ne)&&n.getArguments()[0].value===Expression_Expression.imaginary){const t=n.getArguments()[0];return Expression_Expression.toFunction(Be,[Expression_Expression.fromRational(t.getMultiplier())]).times(e.getMultiplier())}}(n);e&&(t=trig_cos(e).times(i).plus(trig_sin(e).times(i).i()))}}else if(e.isProduct()){let n=Expression_Expression.fromRational(e.getMultiplier());e.each(e=>{n=n.times(rectForm(e))}),t=n}else if(e.isSum()){let n=zero();e.each(e=>{n=n.plus(rectForm(e))}),t=n}return t?t.expand():e.isComplex()?e.evaluate():e}function arg(e){e=Expression_Expression.create(e);const[,t]=toPolarFormArray(e);return t}function conjugate(e){const t=expand(e=Expression_Expression.create(e));let n;const i=t.getPower();if(t.isEXP()||!t.isNUM()&&!i.isOne()){const e=Expression_Expression.fromRational(t.getMultiplier()),s=t.getBase(),r=realPart(s),o=imagPart(s),a=r.isConstant()&&o.isConstant()&&(!o.isZero()||!r.isZero()&&r.sign()>0);if(i.isInteger()||a){const t=conjugate(s),r=i.isComplex()?conjugate(i):i;n=e.times(t.pow(r))}else n=Expression_Expression.toFunction(pe,[t])}else if(t.isVAR()&&t.isI())n=t.neg();else if(t.isSum()){n=zero();for(const e of t.elementsArray())n=n.plus(conjugate(e))}else if(t.isProduct()){n=Expression_Expression.fromRational(t.getMultiplier());for(const e of t.elementsArray())n=n.times(conjugate(e))}return n??e}function csgn(e){const t=expand(e=Expression_Expression.create(e)),n=realPart(t),i=imagPart(t);let s;return n.isZero()&&i.isZero()?s=zero():!n.isZero()&&n.isConstant()?s=n.sign()>0?one():minusOne():n.isZero()&&i.isConstant()&&(s=i.sign()>0?one():minusOne()),s??Expression_Expression.toFunction("csgn",[t])}function multiply(e,t){let n;if(Ge.DEFER_SIMPLIFICATION)n=merge(Expression_Expression.toFunction("",[e]),Expression_Expression.toFunction("",[t])),n.deferred=!0;else{if(e.isZero()){if(t.isInf())throw new UndefinedError(message("infinityTimesZero"));n=Expression_Expression.Number("0")}else if(e.isNUM()&&t.isNUM())n=Expression_Expression.fromRational(e.getMultiplier().times(t.getMultiplier()));else if(e.isComplex()&&t.isComplex()&&e.isSum()&&t.isSum()){const i=e.realPart(),s=t.realPart(),r=e.imagPart(),o=t.imagPart();n=i.times(s).minus(r.times(o)).plus(i.times(o).plus(r.times(s)).times(Expression_Expression.Img()))}else if(e.isNUM()&&!t.isInf())n=t.copy(),n.multiplier=e.getMultiplier().times(t.getMultiplier());else if((e.isInf()||e.isNUM())&&t.isInf()){if(n=Expression_Expression.Inf(),e.getMultiplier().times(t.getMultiplier()).isNegative())n=n.neg();else if(e.isZero()||t.isZero())throw new UndefinedError(message("infinityTimesZero"))}else if(e.value===t.value){n=e.copy(),n.multiplier=n.getMultiplier().times(t.getMultiplier());const i=e.getPower().plus(t.getPower());n=i.isZero()?Expression_Expression.fromRational(n.getMultiplier()):Expression_Expression.setPower(n,i);const s=n.getPower();n.isI()?n=simplifyImaginary(n):n.isFunction("abs")&&s.isEven()&&(n=n.getArguments()[0].pow(s).times(n.getMultiplier()))}else te[e.type]>te[t.type]&&(n=multiply(t,e));n=n||merge(e,t),n.isEXP()&&n.isLinear()&&(n=n.getBase().times(n.getMultiplier())),Ge.EVALUATE&&(n=n.distributeMultiplier())}return n}function combine(e,t,n,i){const s=Expression_Expression.Number("1");return s.elements={},s.elements[n]=e.copy(),s.elements[i]=t.copy(),[s,[e,t]]}function canMerge(e){return e.isProduct()&&e.isLinear()}function merge(e,t){let n,i=[];const s=Expression_Expression.TYPES.PRD;let r=canMerge(e),o=canMerge(t),a=!0;const l=void 0!==e.multiplier,u=void 0!==t.multiplier;let c=l||u?e.getMultiplier().times(t.getMultiplier()):void 0;if(c&&(l&&((e=e.copy()).multiplier=void 0),u&&((t=t.copy()).multiplier=void 0)),e.elements&&!t.elements&&([t,e]=[e,t],[o,r]=[r,o]),o)if(!r&&o){const s=e.keyValue();n=t.copy();const r=n.getElements();let o;if(s in r)o=multiply(e,r[s]);else{let t;for(const e in r)if(r[e].isProduct()){t=r[e],delete r[e];break}o=t?multiply(e,t):e.copy()}o.isNUM()?(o.isOne()||(c=c?.times(o.getMultiplier())),delete r[s]):r[s]=o,i=Object.values(r)}else{n=e.copy(),n.multiplier=e.getMultiplier().times(t.getMultiplier());const r=n.getElements(),o=t.getElements();for(const e in o){const t=o[e];if(e in r){const n=multiply(t,r[e]);s===Expression_Expression.TYPES.PRD&&n.isOne()?delete r[e]:r[e]=n}else r[e]=t.copy()}i=Object.values(r)}else{const s=e.type===Expression_Expression.TYPES.GRP?e.value:e.keyValue(),r=t.type===Expression_Expression.TYPES.GRP?t.value:t.keyValue(),o=e.isProduct()&&e.isLinear();if(o&&t.isProduct()&&t.getPower().isMinusOne()){let s=e,r=one();const o=e.getElements(),a=t.getElements();for(const e in a){const t=a[e];e in o?s=multiply(s,power(t,minusOne())):r=multiply(r,t)}[n,i]=combine(s,multiply(power(r,minusOne()),e.getMultiplier(!0)),e.keyValue(),t.keyValue())}else if(o&&e.getElements()[r])n=function transfer(e,t,n){let i=e.getMultiplier(!0);const s=e.getElements();for(const e in s)e!==n&&(i=multiply(i,s[e]));const r=multiply(s[n],t);return multiply(i,r)}(e,t,r),a=!1;else{const o=e.getPower(),a=t.getPower();if(-1===o.sign()&&-1===a.sign()){n=multiply(e.invert(),t.invert()),n=n.invert(),i=Object.values(n.getElements())}else[n,i]=combine(e,t,s,r)}}if(a&&(n.type=s,n.updateValue(i)),c&&!c.isOne()&&(n.multiplier=c),n.isProduct()&&1===Object.keys(n.getElements()).length){const e=Object.values(n.getElements())[0];e.multiplier=e.getMultiplier().times(n.getMultiplier()),n=e}return n}function canonicalizeRadicals(e){let t;if(e.isEXP()&&e.isConstant()&&e.hasRadical())t=rationalizeRadical(e,!0);else if(e.isFunction()){const n=e.getArguments().map(e=>canonicalizeRadicals(e));let i=Expression_Expression.toFunction(e.name,n);i.multiplier=e.multiplier,i=Expression_Expression.setPower(i,e.getPower()),t=i}else if(e.isProduct()){let t=Expression_Expression.fromRational(e.getMultiplier());e.each(e=>{t=t.times(canonicalizeRadicals(e))})}else if(e.isSum()&&e.isLinear()){let t=zero();e.each(e=>{t=t.plus(canonicalizeRadicals(e))})}else if(e.isEXP()){const t=canonicalizeRadicals(e.getBase()),n=canonicalizeRadicals(e.getPower());t.pow(n).multiplier=e.multiplier}return t??e}const mt=new q("0.5772156649015328606065120900824024310421593359399235988057672348848677267776646709369470632917467495"),ht=1e9,dt=40,xt=100,Et=500;function getSeriesError(e=8){return new q(10).pow(-(q.precision+e))}function gammaSpouge(e){const t=q.precision;q.set({precision:Math.floor(1.45*t)});try{const n=t,i=function calcCoeffs(e){const t=[];let n=new q(1);const i=q.acos(-1);t[0]=i.times(2).sqrt();for(let i=1;i<e;i++)t[i]=q.exp(e-i).times(q.pow(e-i,i-.5)).div(n),n=n.times(-i);return t}(n);let s=i[0];for(let t=1;t<n;t++)s=s.plus(i[t].div(e.plus(t)));return s=s.times(q.exp(e.plus(n).neg())).times(q.pow(e.plus(n),e.plus(.5))),s.div(e)}finally{q.set({precision:t})}}class ValuesSet extends MathematicalAggregate{_elements=[];dataType="SET";isEnumerable=!0;precision;constructor(e){if(super(),e)for(const t of e)this.add(t)}static isValuesSet(e){return isNerdamerNativeType(e,"SET")||isNerdamerNativeType(e,"SOL")}addKnownUnique(e){this._elements.push(e.copy())}getValuesArray(){return this.elements}setValuesArray(e){this.clear();for(const t of e)this.add(t)}indexOf(e){for(let t=0;t<this._elements.length;t++)if(this.membersEqual(this._elements[t],e))return t;return-1}membersEqual(e,t){let n=!1;try{n=e.eq(t)&&t.eq(e)}catch(e){if(!(e instanceof UnexpectedDataType))throw e}return n}__get__(e){const t=e[0];if(t<0||t>=this._elements.length)throw new RangeError(message("indexOutOfBounds",{index:String(t),type:String(this.dataType),length:String(this._elements.length)}));return this._elements[t].copy()}__set__(e,t){const n=e[0];if(n<0||n>=this._elements.length)throw new RangeError(message("indexOutOfBounds",{index:String(n),type:String(this.dataType),length:String(this._elements.length)}));const i=t.copy(),s=this.indexOf(i);-1!==s&&s!==n?this._elements.splice(n,1):this._elements[n]=i}add(e){return this.has(e)||this._elements.push(e.copy()),this}addMany(e){for(const t of e)this.add(t);return this}at(e){const t=this._elements[e];return t?t.copy():void 0}clear(){return this._elements.length=0,this}copy(){return new ValuesSet(this._elements)}count(){return this._elements.length}delete(e){const t=this.indexOf(e);return-1!==t&&(this._elements.splice(t,1),!0)}difference(e){const t=new ValuesSet;for(const n of this._elements)e.has(n)||t.add(n);return t}dimensions(){return[this._elements.length]}div(e){throw new UnsupportedOperationError(message("unsupportedOperation"))}each(e){const t=[];for(let n=0;n<this._elements.length;n++){const i=e(this._elements[n].copy(),n),s=void 0===i?this._elements[n]:i;let r=!1;for(let e=0;e<t.length;e++)if(this.membersEqual(t[e],s)){r=!0;break}r||t.push(s.copy())}return this._elements=t,this}get elements(){return this._elements.map(e=>e.copy())}eq(e){return!!ValuesSet.isValuesSet(e)&&(e.count()===this.count()&&this.isSubsetOf(e))}evaluate(e){return this.copy().each(t=>Expression_Expression.isExpression(t)?t.evaluate(e):t.evaluate())}expand(){return this.copy().each(e=>e.expand())}gt(e){return ValuesSet.isValuesSet(e)&&this.isProperSupersetOf(e)}gte(e){return ValuesSet.isValuesSet(e)&&this.isSupersetOf(e)}has(e){return-1!==this.indexOf(e)}intersection(e){const t=new ValuesSet;for(const n of this._elements)e.has(n)&&t.add(n);return t}isDisjointFrom(e){for(const t of this._elements)if(e.has(t))return!1;return!0}isProperSubsetOf(e){return this.count()<e.count()&&this.isSubsetOf(e)}isProperSupersetOf(e){return this.count()>e.count()&&this.isSupersetOf(e)}isSubsetOf(e){for(const t of this._elements)if(!e.has(t))return!1;return!0}isSupersetOf(e){return e.isSubsetOf(this)}lt(e){return ValuesSet.isValuesSet(e)&&this.isProperSubsetOf(e)}lte(e){return ValuesSet.isValuesSet(e)&&this.isSubsetOf(e)}minus(e){throw new UnsupportedOperationError(message("unsupportedOperation"))}plus(e){throw new UnsupportedOperationError(message("unsupportedOperation"))}pow(e){throw new UnsupportedOperationError(message("unsupportedOperation"))}sort(e){return e?this._elements.sort((t,n)=>e(t.copy(),n.copy())):this._elements.sort((e,t)=>{const n=e&&"function"==typeof e.text?e.text():String(e),i=t&&"function"==typeof t.text?t.text():String(t);return n<i?-1:n>i?1:0}),this}symmetricDifference(e){const t=this.difference(e);return t.addMany(e.difference(this)._elements),t}text(){return`{${this._elements.map(e=>e.text()).join(", ")}}`}times(e){throw new UnsupportedOperationError(message("unsupportedOperation"))}union(e){const t=new ValuesSet(this._elements);return t.addMany(e._elements),t}}function continuedFraction(e,t=10){const n=Expression_Expression.create(e),i=Expression_Expression.create(t);if(!i.isNUM()||!i.isInteger()||i.lt(zero())||i.getMultiplier().numerator>BigInt(Number.MAX_SAFE_INTEGER))throw new UnexpectedInputError(message("wrongInput",{expected:"a non-negative integer",received:i.text()}));const s=Number(i.getMultiplier().numerator),r=n.isConstant()?n.evaluate():n;if(!r.isNUM())return new Collection([one(),n,new Vector]);const o=r.getMultiplier(),a=Expression_Expression.Number(o.sign()),l=o.numerator<0n?-o.numerator:o.numerator;let u=o.denominator;const c=l/u;let p=l%u;const m=[];for(let e=0;e<s&&0n!==p;e++){const e=u/p;m.push(Expression_Expression.Number(e));const t=u%p;u=p,p=t}return new Collection([a,Expression_Expression.Number(c),new Vector(m)])}function count(e){return Vector.isVector(e)||ValuesSet.isValuesSet(e)||Dictionary.isDictionary(e)?Expression_Expression.Number(e.count()):Expression_Expression.toFunction("count",[e])}function size(e){return Vector.isVector(e)||Matrix.isMatrix(e)||Collection.isCollection(e)||ValuesSet.isValuesSet(e)||Dictionary.isDictionary(e)?Vector.create(e.dimensions()):Expression_Expression.toFunction("size",[e])}function isprime(e){const t=Expression_Expression.create(e);let n;return n=t.isInteger()?Expression_Expression.Number(Number(isPrimeBig(t.getMultiplier().numerator))):Expression_Expression.toFunction("isprime",[t]),n}const yt="a positive integer precision";function math_sqrt(e){let t;if((e=Expression_Expression.create(e)).isPosInf()||e.isNegInf()){if(e.isNegInf())throw new UndefinedError(message("undefinedValue"));t=Expression_Expression.Inf()}else t=e.isOne()?one():e.isZero()?zero():e.isFunction("sqrt")?multiply(math_sqrt(Expression_Expression.fromRational(e.getMultiplier())),power(function sqrtToPow(e){let t;e.isFunction("sqrt")?(t=e.getArguments()[0].copy(),t=setPower(t,e.getPower().div(two())),t.multiplier=e.getMultiplier().copy()):t=e.copy();return t}(e.toUnitMultiplier()),half())):power(e,half());return t}function scientific(e,t=10){const n=Expression_Expression.create(t),i=validateScientificSignificantDigits(n.isNUM()&&n.isInteger()?Number(n.getMultiplier().numerator):Number.NaN,n.text()),s=Expression_Expression.create(e,void 0,!0);return s.scientific=i,s}function nthroot(e,t){return power(Expression_Expression.create(e),one().div(Expression_Expression.create(t)))}function radians(e){return Expression_Expression.create(e).times(Expression_Expression.Pi()).div(Expression_Expression.create(180))}function degrees(e){return Expression_Expression.create(e).times(Expression_Expression.create(180)).div(Expression_Expression.Pi())}function math_log10(e){return math_log(e,10)}function math_cbrt(e){if((e=Expression_Expression.create(e)).isPosInf()||e.isNegInf())return e.isNegInf()?Expression_Expression.NegInf():Expression_Expression.Inf();if(e.isOne())return one();if(e.isZero())return zero();if(Ge.EVALUATE&&e.isConstant()){const t=e.isNUM()||e.isComplex()?e:e.evaluate();if(t.isNUM()){const e=t.getMultiplier().toDecimal(),n=new q(1).div(3),i=e.isNeg()?e.abs().pow(n).neg():e.pow(n);return Expression_Expression.create(i)}if(t.isComplex()){const e=t.realPart(),n=t.imagPart(),i=Number(e.getMultiplier().toDecimal()),s=Number(n.getMultiplier().toDecimal()),r=Math.hypot(i,s),o=Math.atan2(s,i),a=Math.cbrt(r),l=o/3,u=a*Math.cos(l),c=a*Math.sin(l);return Expression_Expression.create(u).plus(Expression_Expression.create(c).times(Expression_Expression.Img()))}}return e.isFunction("cbrt")?multiply(math_cbrt(Expression_Expression.fromRational(e.getMultiplier())),power(e.toUnitMultiplier(),function third(){return getFromCacheOrCreate("1/3")}())):Expression_Expression.toFunction("cbrt",[e])}function parens(e){return Expression_Expression.toFunction("",[Expression_Expression.create(e)])}function math_fibonacci(e){let t;return t=(e=Expression_Expression.create(e)).isNUM()&&e.isInteger()?Expression_Expression.Number(function fibonacci(e){const t=e<0n,n=t?-e:e;let i=0n,s=1n;for(const e of n.toString(2)){const t=i*(2n*s-i),n=i*i+s*s;"0"===e?(i=t,s=n):(i=n,s=t+n)}let r=i;return t&&isEven(n)&&(r=-r),r}(e.getMultiplier().numerator)):Expression_Expression.toFunction("fib",[Expression_Expression.create(e)]),t}function math_factorial(e){let t;if(e.isPosInf()||e.isNegInf()){if(e.isNegInf())throw new UndefinedError(message("undefinedValue"));return Expression_Expression.Inf()}if(e.isInteger())t=Expression_Expression.Number(Je(e.getMultiplier().numerator));else if(Ge.EVALUATE)t=math_gamma(e.plus(one()));else{let n=e.getMultiplier();if(e.isNUM()&&2n===n.denominator){const e=n.sign();n=n.abs();const i=Expression_Expression.create(n.numerator-1n).div(two()),s=math_sqrt(Expression_Expression.Pi());t=-1===e?four().neg().pow(i).times(math_factorial(i)).div(math_factorial(i.times(two()))).times(s):math_factorial(i.times(two()).plus(one())).div(four().pow(i).times(math_factorial(i)).times(two())).times(s)}else t=Expression_Expression.toFunction("fact",[Expression_Expression.create(e)])}return t}function math_doubleFactorial(e){let t;if(e.isPosInf()||e.isNegInf()){if(e.isNegInf())throw new UndefinedError(message("undefinedValue"));return Expression_Expression.Inf()}if(Ge.EVALUATE)if(e.isInteger()){const n=e.isEven(),i=Number(e.getMultiplier().toDecimal()),s=n?i/2:(i+1)/2;let r=one();for(let e=1;e<=s;e++){let t=two().times(e);n||(t=t.minus(one())),r=r.times(t)}t=r}else{const n=Expression_Expression.Pi(!0),i=two().pow(e.times(two()).plus(one()).minus(trig_cos(n.times(e))).div(four())),s=n.pow(trig_cos(n.times(e)).minus(one()).div(four())),r=math_gamma(e.div(two()).plus(one()));t=i.times(s).times(r)}else t=Expression_Expression.toFunction("dfact",[Expression_Expression.create(e)]);return t}function math_heaviside(e){let t;const n=!e.isConstant()&&!e.isComplex()&&hasAssumptions();if(e.isPosInf()||e.isNegInf())t=e.isNegInf()?zero():one();else if(e.isNUM()){const n=e.sign();t=1===n?one():-1===n?zero():half()}else t=n&&e.gt(zero())?one():n&&e.lt(zero())?zero():n&&e.gte(zero())&&e.lte(zero())?half():Expression_Expression.toFunction(ce,[Expression_Expression.create(e)]);return t}function step(e){const t=!(e=Expression_Expression.create(e)).isConstant()&&!e.isComplex()&&hasAssumptions();return e.isPosInf()||e.isNegInf()?e.isNegInf()?zero():one():e.isNUM()?e.sign()<0?zero():one():t&&e.lt(zero())?zero():t&&e.gte(zero())?one():Expression_Expression.toFunction("step",[e])}function rect(e){const t=Expression_Expression.create(e),n=math_abs(t);return n.lt(half())?one():n.eq(half())?half():n.gt(half())?zero():Expression_Expression.toFunction("rect",[t])}function tri(e){const t=Expression_Expression.create(e),n=math_abs(t);return n.lt(one())?one().minus(n):n.gte(one())?zero():Expression_Expression.toFunction("tri",[t])}function dirac(e){let t;const n=!e.isConstant()&&!e.isComplex()&&hasAssumptions();return t=e.isPosInf()||e.isNegInf()?zero():e.isNUM()?e.isZero()?Expression_Expression.toFunction("delta",[Expression_Expression.create(e)]):zero():n&&(e.gt(zero())||e.lt(zero()))?zero():Expression_Expression.toFunction("delta",[Expression_Expression.create(e)]),t}function numeric(e,t){return e=Expression_Expression.create(e),scopedBlock("DEFER_SIMPLIFICATION",!1,()=>{let n=Rational.getPrecision();if(void 0!==t){const e=Expression_Expression.create(t).evaluate();if(!e.isNUM()||!e.isInteger())throw new UnexpectedInputError(message("wrongInput",{expected:yt,received:e.text()}));const i=e.getMultiplier();if(i.numerator<=0n||i.numerator>BigInt(Number.MAX_SAFE_INTEGER))throw new UnexpectedInputError(message("wrongInput",{expected:yt,received:e.text()}));n=Number(i.numerator)}const i=Rational.getPrecision();let s;try{n!==i&&Rational.set({precision:n});const t=e.isNUM()?e:e.evaluate();if(t.variables().length>0)s=t;else if(t.isNUM()){const e=t.getMultiplier(),i=new q(e.numerator.toString()).div(e.denominator.toString()).toSignificantDigits(n);s=Expression_Expression.Number(i),s.getMultiplier().asDecimal=!0,s.precision=n}else if(t.isComplex()){const e=numeric(t.realPart(),n),i=numeric(t.imagPart(),n);s=e.plus(i.times(Expression_Expression.Img())),s.precision=n}else s=t}finally{n!==i&&Rational.set({precision:i})}return s})}function math_round(e,t){if((e=Expression_Expression.create(e)).isPosInf()||e.isNegInf())return e.isNegInf()?Expression_Expression.NegInf():Expression_Expression.Inf();let n;if(t=t?Expression_Expression.create(t):zero(),e.isNUM()&&t.isInteger()){const i=e.getMultiplier().toDecimal(),s=t.getMultiplier().toDecimal(),r=new q(10).pow(s);n=Expression_Expression.create(q.round(i.times(r)).div(r))}else n=Expression_Expression.toFunction("round",[e,t]);return n}function math_sign(e){let t;return t=(e=Expression_Expression.create(e)).isComplex()?csgn(e):e.isPosInf()||e.isNegInf()?Expression_Expression.create(e.isNegInf()?-1:1):e.isConstant()?Expression_Expression.create((e.isNUM()?e:e.evaluate()).getMultiplier().sign()):hasAssumptions()?e.gt(zero())?one():e.lt(zero())?one().neg():e.eq(zero())?zero():Expression_Expression.toFunction("sign",[e]):Expression_Expression.toFunction("sign",[e]),t}function math_floor(e){let t;if((e=Expression_Expression.create(e)).isPosInf()||e.isNegInf())t=e.isNegInf()?Expression_Expression.NegInf():Expression_Expression.Inf();else if(e.isNUM()){const n=e.getMultiplier().toDecimal();t=Expression_Expression.create(n.floor())}else t=Expression_Expression.toFunction("floor",[e]);return t}function ceiling(e){let t;if((e=Expression_Expression.create(e)).isPosInf()||e.isNegInf())t=e.isNegInf()?Expression_Expression.NegInf():Expression_Expression.Inf();else if(e.isNUM()){const n=e.getMultiplier().toDecimal();t=Expression_Expression.create(n.ceil())}else t=Expression_Expression.toFunction("ceil",[e]);return t}function math_abs(e){if((e=Expression_Expression.create(e)).isPosInf()||e.isNegInf())return Expression_Expression.Inf();let t=e,n=!0;const i=!e.isConstant()&&hasAssumptions();if(!e.isConstant()&&e.getPower().isEven())t=e,-1===t.sign()&&(t=t.neg()),n=!1;else if(e.isComplex())t=geometry_hypot(e.realPart(),e.imagPart());else if(i&&e.gte(zero()))t=e,n=!1;else if(i&&e.lte(zero()))t=e.neg(),n=!1;else if(e.isSum()){const i=[],s=[],r=e.elementsArray();let o=!0,a=1;for(let l=0;l<r.length;l++){const u=r[l];u.isConstant()?i.push(u):s.push(u),-1!==u.sign()&&(o=!1),(o||1===s.length&&-1===s[0].sign())&&(t=e.neg().expand(),a=-1);const c=r[l+1],p=c&&1===s.length&&c.value===s[0].value;if(1===s.length&&s[0].getPower().isEven()&&!p){n=!1;for(let e=0;e<i.length;e++)if(i[e].sign()*a===-1){n=!0;break}}}}else-1===e.sign()&&(t=e.neg());return t||(t=e),!t.isConstant()&&n&&(t=Expression_Expression.toFunction("abs",[t])),t}function math_modInv(e,t){let n=zero(),i=one(),s=t,r=math_mod(e,t);for(;!r.isZero();){const e=math_floor(s.div(r));[n,i]=[i,n.minus(e.times(i))],[s,r]=[r,s.minus(e.times(r))]}if(s.gt(one()))throw new MathError(message("noInverse"));return math_mod(n,t)}function roundRatioToNearestEven(e,t){const n=e/t,i=2n*bigint_abs(e%t),s=BigInt(bigint_sign(e));return i<t?n:i>t?n+s:isEven(n)?n:n+s}function math_mod(e,t){let n;if(e.isPosInf()||e.isNegInf()||t.isPosInf()||t.isNegInf())throw new UndefinedError(message("undefinedValue"));if(e.isNUM()&&t.isNUM())n=Expression_Expression.create(e.getMultiplier().mod(t.getMultiplier()));else if(e.isComplex()||t.isComplex()){const i=e.realPart(),s=e.imagPart(),r=t.realPart(),o=t.imagPart();if(i.isNUM()&&i.isInteger()&&s.isNUM()&&s.isInteger()&&r.isNUM()&&r.isInteger()&&o.isNUM()&&o.isInteger()){const a=i.getMultiplier().numerator,l=s.getMultiplier().numerator,u=r.getMultiplier().numerator,c=o.getMultiplier().numerator,p=u*u+c*c;if(0n===p)n=Expression_Expression.toFunction("mod",[Expression_Expression.create(e),Expression_Expression.create(t)]);else{const e=roundRatioToNearestEven(a*u+l*c,p),t=roundRatioToNearestEven(l*u-a*c,p),i=a-u*e+c*t,s=l-u*t-c*e;n=Expression_Expression.Number(i).plus(Expression_Expression.Number(s).i())}}else n=Expression_Expression.toFunction("mod",[Expression_Expression.create(e),Expression_Expression.create(t)])}else n=e.isPolynomialLike()&&t.isPolynomialLike()&&function maxCommonVariableOccurrence(e,t){const n=Polynomial.toPolynomial(e).maxVariableFrequency(),i=Polynomial.toPolynomial(t).maxVariableFrequency();for(const e in n)if(e in i)return e}(e,t)?function polyMod(e,t,n,i){const{variables:s}=normalizePolynomialInputs([e,t],n,i),[,r]=utils_divide(e,t,n,s);return Polynomial.toPolynomial(r,n,s).order(n)}(e,t).getExpression():Expression_Expression.toFunction("mod",[Expression_Expression.create(e),Expression_Expression.create(t)]);return n}function gammaIncomplete(e,t){const n=Expression_Expression.create(e),i=Expression_Expression.create(t);if(!n.isNUM()||!n.isInteger()||n.lte(zero()))return Expression_Expression.toFunction("gamma_incomplete",[n,i]);const s=n.getMultiplier().numerator;if(s>BigInt(Ge.MAX_PRODUCT_AND_SUMMATION_ITERATION))return Expression_Expression.toFunction("gamma_incomplete",[n,i]);let r=one(),o=one(),a=1n;for(;a<s;)r=r.times(i).div(Expression_Expression.Number(a)),o=o.plus(r),a++;return math_factorial(Expression_Expression.Number(s-1n)).times(math_exp(i.neg())).times(o)}function gammaIncompleteLower(e,t){const n=Expression_Expression.create(e),i=Expression_Expression.create(t);return n.isNUM()&&n.isInteger()&&!n.lte(zero())?n.getMultiplier().numerator>BigInt(Ge.MAX_PRODUCT_AND_SUMMATION_ITERATION)?Expression_Expression.toFunction("gamma_incomplete_lower",[n,i]):math_gamma(n).minus(gammaIncomplete(n,i)):Expression_Expression.toFunction("gamma_incomplete_lower",[n,i])}function math_gamma(e){let t;if(e.isPosInf()||e.isNegInf()){if(e.isNegInf())throw new UndefinedError(message("undefinedValue"));return Expression_Expression.Inf()}if(e.isNUM()){const n=e.getMultiplier();if(e.isInteger()&&!e.isNegative())t=e.isZero()?Expression_Expression.toFunction("gamma",[e]):math_factorial(e.minus(one()));else if(2n===n.denominator){const i=math_sqrt(Expression_Expression.Pi()),s=n.numerator;if(s<=0n&&s%2n==0n)t=Expression_Expression.toFunction("gamma",[e]);else if(1n===s)t=i;else if(s>1n){let n=half(),s=i;for(;!n.eq(e);)s=n.times(s),n=n.plus(one());t=s}else{let n=half(),s=i;for(;!n.eq(e);)n=n.minus(one()),s=s.div(n);t=s}}else t=Expression_Expression.Number(function decimal_gamma(e){if((e=new q(e)).isInteger())return e.lte(0)?new q(1/0):new q(String(Je(Number(e.minus(1)))));if(e.lt(0)){const t=q.acos(-1);return t.div(t.times(e).sin().times(gammaSpouge(new q(1).minus(e))))}return gammaSpouge(e)}(n.toDecimal()))}else t=Expression_Expression.toFunction("gamma",[e]);return t}function math_erfc(e){return subtract(one(),math_erf(e))}function math_erf(e){let t;if(e.isPosInf()||e.isNegInf())t=e.isNegInf()?one().neg():one();else if(e.isNUM()){const n=e.getMultiplier();t=n.gt("6.5")?one():Expression_Expression.Number(function decimal_erf(e){e=new q(e);const t=q.acos(-1),n=new q(2).div(t.sqrt()),i=getSeriesError(),s=q.sign(e);if((e=e.abs()).isZero())return new q(0);if(e.lt(2)){let t=new q(0),r=0,o=e;const a=Math.max(1e3,8*q.precision);for(;o.gte(i);){const n=new q(-1).pow(r).times(e.pow(2*r+1)),i=new q(2*r+1).times(String(Je(r))),s=t.plus(n.div(i));if(o=s.minus(t).abs(),t=s,r++,r>a)throw new Error(message("erfConvergenceFailed"))}let l=q.min(n.times(t),1);return-1===s&&(l=l.neg()),l}const r=e.mul(e).mul(2);let o=new q(1),a=o,l=o.abs();const u=Math.max(1e3,8*q.precision);for(let e=1;e<u;e++){o=o.mul(-(2*e-1)).div(r);const t=o.abs();if(t.gt(l))break;if(l=t,a=a.plus(o),t.lt(i))break}const c=e.neg().mul(e).exp().div(t.sqrt().mul(e)).times(a);let p=new q(1).minus(c);return-1===s&&(p=p.neg()),p}(n.toDecimal()))}else t=Expression_Expression.toFunction("erf",[Expression_Expression.create(e)]);return t}function math_sinc(e){let t;return t=e.isPosInf()||e.isNegInf()?zero():e.isZero()?one():trig_sin(e).isZero()?zero():-1===e.sign()?math_sinc(e.neg()):e.isNUM()&&Ge.EVALUATE?Expression_Expression.Number(function decimal_sinc(e){const t=new q(e);if(t.isZero())return new q(1);if(t.abs().lt("1e-8")){const e=t.mul(t);return new q(1).minus(e.div(6)).plus(e.mul(e).div(120)).minus(e.mul(e).mul(e).div(5040))}return t.sin().div(t)}(e.getMultiplier().toDecimal())):Ge.EVALUATE?trig_sin(e).div(e):Expression_Expression.toFunction("sinc",[Expression_Expression.create(e)]),t}function math_Si(e){let t;return e.isPosInf()||e.isNegInf()?(t=Expression_Expression.Pi().div(two()),e.isNegInf()&&(t=t.neg())):t=e.isZero()?zero():-1===e.sign()?math_Si(e.neg()).neg():e.isNUM()&&Ge.EVALUATE?Expression_Expression.Number(function decimal_Si(e){let t=new q(e);if(t.isZero())return new q(0);let n=new q(1);function polevl(e,t){let n=t[0];for(let i=1;i<t.length;i++)n=n.mul(e).plus(t[i]);return n}function p1evl(e,t){let n=e.plus(t[0]);for(let i=1;i<t.length;i++)n=n.mul(e).plus(t[i]);return n}if(t.isNeg()&&(n=new q(-1),t=t.neg()),t.gt(ht)){const e=q.acos(-1).div(2);return n.mul(e.minus(t.cos().div(t)))}if(t.lte(4)){const e=[new q("-8.39167827910303881427e-11"),new q("4.62591714427012837309e-8"),new q("-9.75759303843632795789e-6"),new q("9.76945438170435310816e-4"),new q("-4.13470316229406538752e-2"),new q("1.00000000000000000302")],i=[new q("2.03269266195951942049e-12"),new q("1.27997891179943299903e-9"),new q("4.41827842801218905784e-7"),new q("9.96412122043875552487e-5"),new q("1.42085239326149893930e-2"),new q("9.99999999999999996984e-1")],s=t.mul(t),r=t.mul(polevl(s,e)).div(polevl(s,i));return n.mul(r)}const i=t.sin(),s=t.cos(),r=new q(1).div(t.mul(t));let o,a;if(t.lt(8)){const e=[new q("4.23612862892216586994"),new q("5.45937717161812843388"),new q("1.62083287701538329132"),new q("1.67006611831323023771e-1"),new q("6.81020132472518137426e-3"),new q("1.08936580650328664411e-4"),new q("5.48900223421373614008e-7")],n=[new q("8.16496634205391016773"),new q("7.30828822505564552187"),new q("1.86792257950184183883"),new q("1.78792052963149907262e-1"),new q("7.01710668322789753610e-3"),new q("1.10034357153915731354e-4"),new q("5.48900252756255700982e-7")],i=[new q("8.71001698973114191777e-2"),new q("6.11379109952219284151e-1"),new q("3.97180296392337498885e-1"),new q("7.48527737628469092119e-2"),new q("5.38868681462177273157e-3"),new q("1.61999794598934024525e-4"),new q("1.97963874140963632189e-6"),new q("7.82579040744090311069e-9")],s=[new q("1.64402202413355338886"),new q("6.66296701268987968381e-1"),new q("9.88771761277688796203e-2"),new q("6.22396345441768420760e-3"),new q("1.73221081474177119497e-4"),new q("2.02659182086343991969e-6"),new q("7.82579218933534490868e-9")];o=polevl(r,e).div(t.mul(p1evl(r,n))),a=r.mul(polevl(r,i)).div(p1evl(r,s))}else{const e=[new q("4.55880873470465315206e-1"),new q("7.13715274100146711374e-1"),new q("1.60300158222319456320e-1"),new q("1.16064229408124407915e-2"),new q("3.49556442447859055605e-4"),new q("4.86215430826454749482e-6"),new q("3.20092790091004902806e-8"),new q("9.41779576128512936592e-11"),new q("9.70507110881952024631e-14")],n=[new q("9.17463611873684053703e-1"),new q("1.78685545332074536321e-1"),new q("1.22253594771971293032e-2"),new q("3.58696481881851580297e-4"),new q("4.92435064317881464393e-6"),new q("3.21956939101046018377e-8"),new q("9.43720590350276732376e-11"),new q("9.70507110881952025725e-14")],i=[new q("6.97359953443276214934e-1"),new q("3.30410979305632063225e-1"),new q("3.84878767649974295920e-2"),new q("1.71718239052347903558e-3"),new q("3.48941165502279436777e-5"),new q("3.47131167084116673800e-7"),new q("1.70404452782044526189e-9"),new q("3.85945925430276600453e-12"),new q("3.14040098946363334640e-15")],s=[new q("1.68548898811011640017"),new q("4.87852258695304967486e-1"),new q("4.67913194259625806320e-2"),new q("1.90284426674399523638e-3"),new q("3.68475504442561108162e-5"),new q("3.57043223443740838771e-7"),new q("1.72693748966316146736e-9"),new q("3.87830166023954706752e-12"),new q("3.14040098946363335242e-15")];o=polevl(r,e).div(t.mul(p1evl(r,n))),a=r.mul(polevl(r,i)).div(p1evl(r,s))}const l=q.acos(-1).div(2);return n.mul(l.minus(o.mul(s)).minus(a.mul(i)))}(e.getMultiplier().toDecimal())):Expression_Expression.toFunction("Si",[Expression_Expression.create(e)]),t}function math_Shi(e){let t;return t=e.isPosInf()||e.isNegInf()?e.isNegInf()?Expression_Expression.NegInf():Expression_Expression.Inf():e.isZero()?zero():-1===e.sign()?math_Shi(e.neg()).neg():e.isNUM()&&Ge.EVALUATE?Expression_Expression.Number(function decimal_Shi(e){const t=new q(e);if(t.isZero())return new q(0);const n=t.isNeg()?new q(-1):new q(1),i=t.abs();if(i.lt(8)){let e=i,t=e,s=0;for(let n=0;n<200;n++){const n=2*s+1;if(e=e.mul(i).mul(i).mul(n).div(new q(n+2).mul(n+2).mul(n+1)),t=t.plus(e),s++,e.abs().lt(getSeriesError()))break}return n.mul(t)}function EiLocal(e){if(e.isZero())return new q(-1/0);if(e.gt(dt)||e.lt(-40)){let t=new q(1),n=new q(1),i=t.abs();for(let s=1;s<xt;s++){t=t.mul(s).div(e);const r=t.abs();if(r.gt(i))break;if(i=r,n=n.plus(t),r.lt(getSeriesError()))break}return e.exp().mul(n).div(e)}let t=e,n=t;for(let i=1;i<Et&&(t=t.mul(e).mul(i).div(new q(i+1).mul(i+1)),n=n.plus(t),!t.abs().lt(getSeriesError()));i++);return mt.plus(e.abs().ln()).plus(n)}return EiLocal(t).minus(EiLocal(t.neg())).div(2)}(e.getMultiplier().toDecimal())):Expression_Expression.toFunction("Shi",[Expression_Expression.create(e)]),t}function math_Ci(e){let t;return t=e.isPosInf()||e.isNegInf()?zero():e.isZero()?Expression_Expression.NegInf():-1===e.sign()?math_Ci(e.neg()):e.isNUM()&&Ge.EVALUATE?Expression_Expression.Number(function decimal_Ci(e){let t=new q(e);if(t.isZero())return new q(-1/0);function polevl(e,t){let n=t[0];for(let i=1;i<t.length;i++)n=n.mul(e).plus(t[i]);return n}function p1evl(e,t){let n=e.plus(t[0]);for(let i=1;i<t.length;i++)n=n.mul(e).plus(t[i]);return n}if(t.isNeg()&&(t=t.neg()),t.gt(ht))return t.sin().div(t);if(t.lte(4)){const e=[new q("2.02524002389102268789e-11"),new q("-1.35249504915790756375e-8"),new q("3.59325051419993077021e-6"),new q("-4.74007206873407909465e-4"),new q("2.89159652607555242092e-2"),new q("-1.00000000000000000080")],n=[new q("4.07746040061880559506e-12"),new q("3.06780997581887812692e-9"),new q("1.23210355685883423679e-6"),new q("3.17442024775032769882e-4"),new q("5.10028056236446052392e-2"),new q("4.00000000000000000080")],i=t.mul(t),s=i.mul(polevl(i,e)).div(polevl(i,n));return mt.plus(t.ln()).plus(s)}const n=t.sin(),i=t.cos(),s=new q(1).div(t.mul(t));let r,o;if(t.lt(8)){const e=[new q("4.23612862892216586994"),new q("5.45937717161812843388"),new q("1.62083287701538329132"),new q("1.67006611831323023771e-1"),new q("6.81020132472518137426e-3"),new q("1.08936580650328664411e-4"),new q("5.48900223421373614008e-7")],n=[new q("8.16496634205391016773"),new q("7.30828822505564552187"),new q("1.86792257950184183883"),new q("1.78792052963149907262e-1"),new q("7.01710668322789753610e-3"),new q("1.10034357153915731354e-4"),new q("5.48900252756255700982e-7")],i=[new q("8.71001698973114191777e-2"),new q("6.11379109952219284151e-1"),new q("3.97180296392337498885e-1"),new q("7.48527737628469092119e-2"),new q("5.38868681462177273157e-3"),new q("1.61999794598934024525e-4"),new q("1.97963874140963632189e-6"),new q("7.82579040744090311069e-9")],a=[new q("1.64402202413355338886"),new q("6.66296701268987968381e-1"),new q("9.88771761277688796203e-2"),new q("6.22396345441768420760e-3"),new q("1.73221081474177119497e-4"),new q("2.02659182086343991969e-6"),new q("7.82579218933534490868e-9")];r=polevl(s,e).div(t.mul(p1evl(s,n))),o=s.mul(polevl(s,i)).div(p1evl(s,a))}else{const e=[new q("4.55880873470465315206e-1"),new q("7.13715274100146711374e-1"),new q("1.60300158222319456320e-1"),new q("1.16064229408124407915e-2"),new q("3.49556442447859055605e-4"),new q("4.86215430826454749482e-6"),new q("3.20092790091004902806e-8"),new q("9.41779576128512936592e-11"),new q("9.70507110881952024631e-14")],n=[new q("9.17463611873684053703e-1"),new q("1.78685545332074536321e-1"),new q("1.22253594771971293032e-2"),new q("3.58696481881851580297e-4"),new q("4.92435064317881464393e-6"),new q("3.21956939101046018377e-8"),new q("9.43720590350276732376e-11"),new q("9.70507110881952025725e-14")],i=[new q("6.97359953443276214934e-1"),new q("3.30410979305632063225e-1"),new q("3.84878767649974295920e-2"),new q("1.71718239052347903558e-3"),new q("3.48941165502279436777e-5"),new q("3.47131167084116673800e-7"),new q("1.70404452782044526189e-9"),new q("3.85945925430276600453e-12"),new q("3.14040098946363334640e-15")],a=[new q("1.68548898811011640017"),new q("4.87852258695304967486e-1"),new q("4.67913194259625806320e-2"),new q("1.90284426674399523638e-3"),new q("3.68475504442561108162e-5"),new q("3.57043223443740838771e-7"),new q("1.72693748966316146736e-9"),new q("3.87830166023954706752e-12"),new q("3.14040098946363335242e-15")];r=polevl(s,e).div(t.mul(p1evl(s,n))),o=s.mul(polevl(s,i)).div(p1evl(s,a))}return r.mul(n).minus(o.mul(i))}(e.getMultiplier().toDecimal())):Expression_Expression.toFunction("Ci",[Expression_Expression.create(e)]),t}function math_Chi(e){let t;return t=e.isPosInf()||e.isNegInf()?Expression_Expression.Inf():e.isZero()?Expression_Expression.NegInf():-1===e.sign()?math_Chi(e.neg()):e.isNUM()&&Ge.EVALUATE?Expression_Expression.Number(function decimal_Chi(e){const t=new q(e),n=t.abs();if(n.isZero())return new q(-1/0);if(n.lt(8)){let e=1,t=n.mul(n).div(4),i=t;for(let s=0;s<200&&(t=t.mul(n).mul(n).mul(e).div(new q(e+1).mul(2*e+1).mul(2*e+2)),i=i.plus(t),e++,!t.abs().lt(getSeriesError()));s++);return mt.plus(n.ln()).plus(i)}function EiLocal(e){if(e.isZero())return new q(-1/0);if(e.gt(dt)||e.lt(-40)){let t=new q(1),n=new q(1),i=t.abs();for(let s=1;s<xt;s++){t=t.mul(s).div(e);const r=t.abs();if(r.gt(i))break;if(i=r,n=n.plus(t),r.lt(getSeriesError()))break}return e.exp().mul(n).div(e)}let t=e,n=t;for(let i=1;i<Et&&(t=t.mul(e).mul(i).div(new q(i+1).mul(i+1)),n=n.plus(t),!t.abs().lt(getSeriesError()));i++);return mt.plus(e.abs().ln()).plus(n)}return EiLocal(t).plus(EiLocal(t.neg())).div(2)}(e.getMultiplier().toDecimal())):Expression_Expression.toFunction("Chi",[Expression_Expression.create(e)]),t}function math_Ei(e){let t;return t=e.isPosInf()||e.isNegInf()?e.isNegInf()?zero():Expression_Expression.Inf():e.isZero()?Expression_Expression.NegInf():e.isNUM()&&Ge.EVALUATE?Expression_Expression.Number(function decimal_Ei(e){const t=new q(e);if(t.isZero())return new q(-1/0);if(t.gt(dt)||t.lt(-40)){let e=new q(1),n=new q(1),i=e.abs();for(let s=1;s<xt;s++){e=e.mul(s).div(t);const r=e.abs();if(r.gt(i))break;if(i=r,n=n.plus(e),r.lt(getSeriesError()))break}return t.exp().mul(n).div(t)}let n=t,i=n;for(let e=1;e<Et&&(n=n.mul(t).mul(e).div(new q(e+1).mul(e+1)),i=i.plus(n),!n.abs().lt(getSeriesError()));e++);return mt.plus(t.abs().ln()).plus(i)}(e.getMultiplier().toDecimal())):Expression_Expression.toFunction("Ei",[Expression_Expression.create(e)]),t}function math_Li(e){let t;if(e.isPosInf())t=Expression_Expression.Inf();else if(e.isOne())t=Expression_Expression.NegInf();else if(e.isNUM()&&Ge.EVALUATE){const n=e.getMultiplier();t=n.isNegative()?Expression_Expression.toFunction("Li",[Expression_Expression.create(e)]):Expression_Expression.Number(function decimal_Li(e){const t=new q(e);if(t.lte(0))return new q(NaN);if(t.eq(1))return new q(-1/0);const n=t.ln();if(n.isZero())return new q(-1/0);if(n.gt(dt)||n.lt(-40)){let e=new q(1),t=new q(1),i=e.abs();for(let s=1;s<xt;s++){e=e.mul(s).div(n);const r=e.abs();if(r.gt(i))break;if(i=r,t=t.plus(e),r.lt(getSeriesError()))break}return n.exp().mul(t).div(n)}let i=n,s=i;for(let e=1;e<Et&&(i=i.mul(n).mul(e).div(new q(e+1).mul(e+1)),s=s.plus(i),!i.abs().lt(getSeriesError()));e++);return mt.plus(n.abs().ln()).plus(s)}(n.toDecimal()))}else t=Expression_Expression.toFunction("Li",[Expression_Expression.create(e)]);return t}function math_log(e,t,n=!1){e=Expression_Expression.create(e);const i=void 0===t?void 0:Expression_Expression.create(t);let s,r;if(i&&e.isInteger()&&i.isInteger()&&e.gt(zero())&&i.gt(one())){const t=e.getMultiplier().numerator,n=i.getMultiplier().numerator;let r=1n,o=0n;for(;r<t;)r*=n,o++;r===t&&(s=Expression_Expression.Number(o))}if(e.isPosInf()||e.isNegInf()){if(e.isNegInf())throw new UndefinedError(message("undefinedValue"));r=Expression_Expression.Inf()}else if(e.isOne())r=zero();else if(s)r=s;else if(e.isE()&&e.getMultiplier().isOne()){const t=e.getPower();r=t.isComplex()?Expression_Expression.toFunction(Expression_Expression.LOG,[Expression_Expression.create(e)]):one().times(t)}else if(!e.isComplex()&&e.lt(zero()))r=Expression_Expression.Pi().times(Expression_Expression.Img()).plus(math_log(e.abs()));else if(e.isComplex()){const t=e.realPart(),n=e.imagPart();r=math_log(math_sqrt(t.sq().plus(n.sq()))).plus(trig_atan2(n,t).i())}else if(Ge.EVALUATE){if(e.isNUM())if(i&&i.isNUM()){const t=e.getMultiplier().toDecimal().ln(),n=i.getMultiplier().toDecimal().ln();r=Expression_Expression.Number(t.div(n))}else r=Expression_Expression.Number(e.getMultiplier().toDecimal().ln())}else if(e.isNUM()){const t=e.getMultiplier(),i=t.numerator<0n?-t.numerator:t.numerator,s=t.denominator<0n?-t.denominator:t.denominator;if(1n!==s)r=math_log(Expression_Expression.Number(i)).minus(math_log(Expression_Expression.Number(s)));else if(n){const e=primeFactorCounts(i),t=Object.keys(e);if(t.length>0&&(t.length>1||e[t[0]]>1n)){r=zero();for(const t in e){const n=e[t],i=Expression_Expression.toFunction(Expression_Expression.LOG,[Expression_Expression.Number(t)]);r=r.plus(i.times(Expression_Expression.Number(n)))}}}}else{const t=e.getMultiplier(),n=e.toUnitMultiplier();let i,s=!1;if(n.isProduct()&&n.isLinear()){const e=n.elementsArray();let t=!0;for(const n of e){let e=!1;if(n.isNUM())e=n.gt(zero());else{const t=n.getPower(),i=n.isEXP()?n.getBase():stripPower(n);e=!t.isComplex()&&!i.isComplex()&&i.gt(zero())}if(!e){t=!1;break}}if(t){let t=zero();for(const n of e)t=t.plus(math_log(n));i=t,s=!0}}else{const e=n.getPower(),t=n.isEXP()?n.getBase():stripPower(n);e.isOne()?(i=Expression_Expression.toFunction(Expression_Expression.LOG,[n]),s=!n.isComplex()&&n.gt(zero())):e.isComplex()||t.isComplex()||!t.gt(zero())||(i=math_log(t).times(e),s=!0)}void 0===i||t.isOne()?r=i:t.sign()>0&&s&&(r=i.plus(math_log(Expression_Expression.fromRational(t))))}return r=r||Expression_Expression.toFunction(Expression_Expression.LOG,[Expression_Expression.create(e)]),i&&r&&!s&&(r=r.div(math_log(i))),r}function aggregator(e,t,n){let i;const s=e.map(e=>Expression_Expression.create(e));let r=!0;const o=s.map(e=>{const t=function getNumericOrAssumedValue(e){let t;if(e.isNUM())t=e;else{const n=getAssumptionFor(e);n&&n.isSingleton&&(t=n.getSingletonValue())}return t}(e);return void 0===t&&(r=!1),t});if(!0===r&&o.length>0&&o.every(e=>void 0!==e)){let e=o[0];for(let n=1;n<o.length;n++){const i=o[n];t(i,e)&&(e=i)}i=e}else{if(hasAssumptions()&&s.every(e=>!e.isComplex())&&s.some(e=>e.variables().some(e=>void 0!==getAssumptionFor(e))))for(const e of s)if(s.every(t=>n(e,t))){i=e;break}void 0===i&&s.length>0&&s.every(e=>e.eq(s[0]))&&(i=s[0])}return i}function math_max(...e){return aggregator(e,(e,t)=>e.gt(t),(e,t)=>e.gte(t))??Expression_Expression.toFunction("max",e)}function math_min(...e){return aggregator(e,(e,t)=>e.lt(t),(e,t)=>e.lte(t))??Expression_Expression.toFunction("min",e)}function math_exp(e){let t,n,i,s,r,o,a;return(e=Expression_Expression.create(e)).isPosInf()||e.isNegInf()?e.isNegInf()?zero():Expression_Expression.Inf():(e.isZero()?t=one():Ge.EVALUATE&&(e.isComplex()?(n=e.evaluate(),i=n.realPart(),s=n.imagPart(),i.isNUM()&&s.isNUM()&&(a=Expression_Expression.Number(i.getMultiplier().toDecimal().exp()),r=trig_cos(s),o=trig_sin(s),t=a.times(r.plus(o.i())))):e.isNUM()&&(t=Expression_Expression.Number(e.getMultiplier().toDecimal().exp()))),t??Expression_Expression.create(`e^(${e})`))}function matrix(...e){return new Matrix(...e)}function toIntegerBigint(e){if(!e.isInteger())return null;const t=e.getMultiplier();if(1n!==t.denominator)return null;return t.numerator}function math_sum(e,t,n,i){if(!t.isPlainVariable())return Expression_Expression.toFunction("sum",[e,t,n,i]);e=Expression_Expression.create(e),t=Expression_Expression.create(t),n=Expression_Expression.create(n),i=Expression_Expression.create(i);const s=t.text(),r=toIntegerBigint(n),o=toIntegerBigint(i);if(null===r||null===o)return Expression_Expression.toFunction("sum",[e,t,n,i]);if(r>o)return zero();const a=o-r+1n;if(a>Ge.MAX_PRODUCT_AND_SUMMATION_ITERATION)return Expression_Expression.toFunction("sum",[e,t,n,i]);if(!e.hasVariable(s)){const t=Expression_Expression.create(a);return e.times(t)}let l=zero(),u=r;for(;u<=o;){const t={};t[s]=u;const n=e.evaluate(t);l=l.plus(n),u+=1n}return l}function math_product(e,t,n,i){if(!t.isPlainVariable())return Expression_Expression.toFunction(Ee,[e,t,n,i]);e=Expression_Expression.create(e),t=Expression_Expression.create(t),n=Expression_Expression.create(n),i=Expression_Expression.create(i);const s=t.text(),r=toIntegerBigint(n),o=toIntegerBigint(i);if(null===r||null===o)return Expression_Expression.toFunction(Ee,[e,t,n,i]);if(r>o)return one();const a=o-r+1n;if(a>Ge.MAX_PRODUCT_AND_SUMMATION_ITERATION)return Expression_Expression.toFunction(Ee,[e,t,n,i]);if(!e.hasVariable(s)){return power(e,Expression_Expression.create(a))}let l=one(),u=r;for(;u<=o;){const t={};t[s]=u;const n=e.evaluate(t);l=l.times(n),u+=1n}return l}function contains(e,t){let n;return t=Expression_Expression.create(t),n="VEC"===e.dataType?Expression_Expression.create(Number(-1!==e.indexOf(t))):"SET"===e.dataType||"SOL"===e.dataType?Expression_Expression.create(Number(e.has(t))):"DIC"===e.dataType?Expression_Expression.create(Number(e.has(t.text()))):Expression_Expression.toFunction("contains",[e,t]),n}function fresnelIntegral(e,t){const n=[1,-3,105,-10395],i=[1,-15,945,-135135],s=.5;let r;if(Number.isNaN(e))r=NaN;else if(Number.isFinite(e))if(0===e)r=0;else{const o=e<0?-1:1;e=Math.abs(e);const a=Math.PI*e*e*s,l=0!==t;if(e>=8){const t=1/(Math.PI*Math.PI*e**4),[u,c,p,m]=n,[g,h,d,x]=i,E=(u+c*t+p*t**2+m*t**3)/(Math.PI*e),y=(g+h*t+d*t**2+x*t**3)/(Math.PI**2*e**3);r=o*(l?s-E*Math.cos(a)-y*Math.sin(a):s+E*Math.sin(a)-y*Math.cos(a))}else{const t=l?e=>Math.sin(Math.PI*e*e*s):e=>Math.cos(Math.PI*e*e*s),n=Math.max(1,Math.ceil(2*e));let i=0,a=0;for(let r=0;r<n;r++){const o=e*(r+1)/n,l=(a+o)*s,u=t(a),c=t(l),p=t(o),m=[[a,o,u,c,p,(o-a)/6*(u+4*c+p),0]];for(;m.length>0;){const e=m.pop(),[r,o,a,l,u,c,p]=e,g=(r+o)*s,h=(g+o)*s,d=t((r+g)*s),x=t(h),E=(g-r)/6*(a+4*d+l),y=(o-g)/6*(l+4*x+u),v=E+y;p>=20||Math.abs(v-c)<=15e-13/n?i+=v+(v-c)/15:(m.push([g,o,l,x,u,y,p+1]),m.push([r,g,a,d,l,E,p+1]))}a=o}r=o*i}}else r=Math.sign(e)*s;return r}function fresnelS(e){return fresnelIntegral(e,1)}function fresnelC(e){return fresnelIntegral(e,0)}const vt={cos:[e=>Math.cos(e)],sin:[e=>Math.sin(e)],tan:[e=>Math.tan(e)],sec:[e=>1/Math.cos(e)],csc:[e=>0===e?NaN:1/Math.sin(e)],cot:[e=>0===e?NaN:1/Math.tan(e)],acos:[e=>Math.acos(e)],asin:[e=>Math.asin(e)],atan:[e=>Math.atan(e)],asec:[e=>Math.acos(1/e)],acsc:[e=>Math.asin(1/e)],acot:[e=>e<0?Math.PI+Math.atan(1/e):Math.atan(1/e)],atan2:[(e,t)=>0===e&&0===t||!Number.isFinite(e)&&!Number.isFinite(t)?NaN:Math.atan2(e,t)],cosh:[e=>Math.cosh(e)],sinh:[e=>Math.sinh(e)],tanh:[e=>Math.tanh(e)],sech:[e=>1/Math.cosh(e)],csch:[e=>0===e?NaN:1/Math.sinh(e)],coth:[e=>0===e?NaN:1/Math.tanh(e)],acosh:[e=>Math.acosh(e)],asinh:[e=>Math.asinh(e)],atanh:[e=>1===e?NaN:Math.atanh(e)],asech:[e=>0===e?NaN:Math.acosh(1/e)],acsch:[e=>0===e?NaN:Math.asinh(1/e)],acoth:[e=>Math.atanh(1/e)],abs:[e=>Math.abs(e)],sqrt:[e=>Math.sqrt(e)],cbrt:[e=>Math.cbrt(e)],nthroot:[(e,t)=>0===t?NaN:Math.pow(e,1/t)],log:[(e,t)=>void 0===t?Math.log(e):t<=0||1===t?NaN:Math.log(e)/Math.log(t)],exp:[e=>Math.exp(e)],hypot:[(e,t)=>Math.hypot(e,t)],round:[function numeric_round(e,t=0){let n=e;if(!isInt(e)){const i=Math.pow(10,t),s=e*i;n=(s<0?-Math.round(-s):Math.round(s))/i}return n},["isInt"]],sign:[e=>Math.sign(e)],floor:[e=>Math.floor(e)],ceil:[e=>Math.ceil(e)],ceiling:[e=>Math.ceil(e)],trunc:[e=>Math.trunc(e)],mod:[numeric_mod],modinv:[modInv,["mod"]],max:[(...e)=>Math.max(...e)],min:[(...e)=>Math.min(...e)],avg:[(...e)=>e.reduce((e,t)=>e+t,0)/e.length],heaviside:[function heaviside(e){return Number.isNaN(e)?NaN:e<0?0:e>0?1:.5}],step:[e=>Number.isNaN(e)?NaN:e<0?0:1],rect:[e=>{const t=Math.abs(e);return t<.5?1:.5===t?.5:0}],tri:[e=>Math.max(1-Math.abs(e),0)],realpart:[e=>e],imagpart:[()=>0],arg:[e=>Number.isNaN(e)?NaN:e<0?Math.PI:0],conjugate:[e=>e],polarform:[e=>e],rectform:[e=>e],csgn:[e=>Math.sign(e)],isInt:[isInt],GCD:[numeric_GCD],gcd:[numeric_GCD],LCM:[numeric_LCM,["GCD"]],lcm:[numeric_LCM,["GCD"]],modInv:[modInv,["mod"]],isPrime:[isPrime],isprime:[isPrime],fib:[e=>{let t=NaN;if(Number.isSafeInteger(e)){const n=e<0,i=Math.abs(e);let s=0,r=1;for(let e=0;e<i;e++){const e=s+r;if(s=r,r=e,!Number.isSafeInteger(s))break}Number.isSafeInteger(s)&&(t=n&&i%2==0?-s:s)}return t}],fact:[numeric_factorial,["isInt","gamma"]],factorial:[numeric_factorial,["isInt","gamma"]],dfact:[function doubleFactorial(e){if(isInt(e)){if(!Number.isSafeInteger(e)||e<0)return NaN;let t=1;for(let n=e;n>1&&(t*=n,Number.isFinite(t));n-=2);return t}const t=Math.cos(Math.PI*e);return Math.pow(2,(2*e+1-t)/4)*Math.pow(Math.PI,(t-1)/4)*gamma(e/2+1)},["isInt","gamma"]],erf:[function erf(e){return 0===e?0:1-erfc(e)},["erfc"]],erfc:[erfc],gammaLN:[gammaLN],gamma:[gamma,["gammaLN","isInt","factorial"]],sinc:[function sinc(e){if(0===e)return 1;if(Math.abs(e)<1e-4){const t=e*e;return 1-t/6+t*t/120-t*t*t/5040}return Math.sin(e)/e}],Si:[function Si(e){if(0===e)return 0;let t=1;function polevl(e,t){let n=t[0];for(let i=1;i<t.length;i++)n=n*e+t[i];return n}function p1evl(e,t){let n=e+t[0];for(let i=1;i<t.length;i++)n=n*e+t[i];return n}if(e<0&&(t=-1,e=-e),e>1e9)return t*(Math.PI/2-Math.cos(e)/e);if(e<=4){const n=[20326926619595193e-28,1.279978911799433e-9,4.418278428012189e-7,9964121220438756e-20,.01420852393261499,1],i=e*e;return t*(e*polevl(i,[-8391678279103039e-26,4.625917144270128e-8,-9757593038436328e-21,.0009769454381704354,-.04134703162294066,1])/polevl(i,n))}const n=Math.sin(e),i=Math.cos(e),s=1/(e*e);let r,o;if(e<8){const t=[8.16496634205391,7.308288225055645,1.867922579501842,.1787920529631499,.007017106683227897,.00011003435715391573,5.489002527562557e-7],n=[.08710016989731142,.6113791099522193,.3971802963923375,.07485277376284691,.005388686814621773,.00016199979459893403,19796387414096365e-22,7.825790407440903e-9],i=[1.6440220241335535,.666296701268988,.09887717612776888,.006223963454417684,.0001732210814741771,20265918208634397e-22,7.825792189335346e-9];r=polevl(s,[4.236128628922166,5.4593771716181285,1.6208328770153833,.16700661183132304,.006810201324725182,.00010893658065032867,5.489002234213736e-7])/(e*p1evl(s,t)),o=s*polevl(s,n)/p1evl(s,i)}else{const t=[.9174636118736841,.17868554533207454,.012225359477197129,.00035869648188185157,4924350643178815e-21,3.21956939101046e-8,9437205903502767e-26,970507110881952e-28],n=[.6973599534432762,.33041097930563207,.03848787676499743,.001717182390523479,34894116550227946e-21,3.471311670841167e-7,1.7040445278204452e-9,3859459254302766e-27,31404009894636335e-31],i=[1.6854889881101165,.48785225869530496,.04679131942596258,.0019028442667439953,3684755044425611e-20,3.5704322344374083e-7,1.7269374896631615e-9,3878301660239547e-27,31404009894636335e-31];r=polevl(s,[.4558808734704653,.7137152741001467,.16030015822231947,.01160642294081244,.00034955644244785906,48621543082645475e-22,3.200927900910049e-8,941779576128513e-25,970507110881952e-28])/(e*p1evl(s,t)),o=s*polevl(s,n)/p1evl(s,i)}return t*(Math.PI/2-r*i-o*n)}],Shi:[function Shi(e){const t=1e-16;if(0===e)return 0;const n=e<0?-1:1,i=Math.abs(e);if(i<8){let e=i,s=e,r=0;for(let n=0;n<200;n++){const n=2*r+1;if(e*=i*i*n/((n+2)*(n+2)*(n+1)),s+=e,r++,Math.abs(e)<Math.abs(s)*t)break}return n*s}function Ei(e){if(0===e)return-1/0;if(e>40||e<-40){let n=1,i=1,s=Math.abs(n);for(let r=1;r<100;r++){n*=r/e;const o=Math.abs(n);if(o>s)break;if(s=o,i+=n,o<Math.abs(i)*t)break}return Math.exp(e)*i/e}let n=e,i=n;for(let s=1;s<500&&(n*=e*s/((s+1)*(s+1)),i+=n,!(Math.abs(n)<Math.abs(i)*t));s++);return nt+Math.log(Math.abs(e))+i}return.5*(Ei(e)-Ei(-e))}],Ci:[function Ci(e){if(0===e)return-1/0;function polevl(e,t){let n=t[0];for(let i=1;i<t.length;i++)n=n*e+t[i];return n}function p1evl(e,t){let n=e+t[0];for(let i=1;i<t.length;i++)n=n*e+t[i];return n}if(e<0&&(e=-e),e>1e9)return Math.sin(e)/e;if(e<=4){const t=[4077460400618806e-27,3.067809975818878e-9,12321035568588342e-22,.00031744202477503275,.051002805623644606,4],n=e*e,i=n*polevl(n,[20252400238910228e-27,-1.3524950491579076e-8,3593250514199931e-21,-.0004740072068734079,.028915965260755523,-1])/polevl(n,t);return nt+Math.log(e)+i}const t=Math.sin(e),n=Math.cos(e),i=1/(e*e);let s,r;if(e<8){const t=[8.16496634205391,7.308288225055645,1.867922579501842,.1787920529631499,.007017106683227897,.00011003435715391573,5.489002527562557e-7],n=[.08710016989731142,.6113791099522193,.3971802963923375,.07485277376284691,.005388686814621773,.00016199979459893403,19796387414096365e-22,7.825790407440903e-9],o=[1.6440220241335535,.666296701268988,.09887717612776888,.006223963454417684,.0001732210814741771,20265918208634397e-22,7.825792189335346e-9];s=polevl(i,[4.236128628922166,5.4593771716181285,1.6208328770153833,.16700661183132304,.006810201324725182,.00010893658065032867,5.489002234213736e-7])/(e*p1evl(i,t)),r=i*polevl(i,n)/p1evl(i,o)}else{const t=[.9174636118736841,.17868554533207454,.012225359477197129,.00035869648188185157,4924350643178815e-21,3.21956939101046e-8,9437205903502767e-26,970507110881952e-28],n=[.6973599534432762,.33041097930563207,.03848787676499743,.001717182390523479,34894116550227946e-21,3.471311670841167e-7,1.7040445278204452e-9,3859459254302766e-27,31404009894636335e-31],o=[1.6854889881101165,.48785225869530496,.04679131942596258,.0019028442667439953,3684755044425611e-20,3.5704322344374083e-7,1.7269374896631615e-9,3878301660239547e-27,31404009894636335e-31];s=polevl(i,[.4558808734704653,.7137152741001467,.16030015822231947,.01160642294081244,.00034955644244785906,48621543082645475e-22,3.200927900910049e-8,941779576128513e-25,970507110881952e-28])/(e*p1evl(i,t)),r=i*polevl(i,n)/p1evl(i,o)}return s*t-r*n}],Chi:[function Chi(e){const t=1e-16,n=Math.abs(e);if(0===n)return-1/0;if(n<8){let e=1,i=n*n/4,s=i;for(let r=0;r<200&&(i*=n*n*e/((e+1)*(2*e+1)*(2*e+2)),s+=i,e++,!(Math.abs(i)<Math.abs(s)*t));r++);return nt+Math.log(n)+s}function Ei(e){if(0===e)return-1/0;if(e>40||e<-40){let n=1,i=1,s=Math.abs(n);for(let r=1;r<100;r++){n*=r/e;const o=Math.abs(n);if(o>s)break;if(s=o,i+=n,o<Math.abs(i)*t)break}return Math.exp(e)*i/e}let n=e,i=n;for(let s=1;s<500&&(n*=e*s/((s+1)*(s+1)),i+=n,!(Math.abs(n)<Math.abs(i)*t));s++);return nt+Math.log(Math.abs(e))+i}return.5*(Ei(e)+Ei(-e))}],Ei:[function Ei(e){if(0===e)return-1/0;if(e>40||e<-40){let t=1,n=1,i=Math.abs(t);for(let s=1;s<100;s++){t*=s/e;const r=Math.abs(t);if(r>i)break;if(i=r,n+=t,r<1e-16*Math.abs(n))break}return Math.exp(e)*n/e}let t=e,n=t;for(let i=1;i<500&&(t*=e*i/((i+1)*(i+1)),n+=t,!(Math.abs(t)<1e-16*Math.abs(n)));i++);return nt+Math.log(Math.abs(e))+n}],Li:[function Li(e){if(e<=0)return NaN;if(1===e)return-1/0;const t=Math.log(e);if(0===t)return-1/0;if(t>40||t<-40){let e=1,n=1,i=Math.abs(e);for(let s=1;s<100;s++){e*=s/t;const r=Math.abs(e);if(r>i)break;if(i=r,n+=e,r<1e-16*Math.abs(n))break}return Math.exp(t)*n/t}let n=t,i=n;for(let e=1;e<500&&(n*=t*e/((e+1)*(e+1)),i+=n,!(Math.abs(n)<1e-16*Math.abs(i)));e++);return nt+Math.log(Math.abs(t))+i}],fresnelIntegral:[fresnelIntegral],S:[fresnelS,["fresnelIntegral"]],C:[fresnelC,["fresnelIntegral"]]};function build(e,t){if((e=Expression_Expression.create(e)).hasVariable(Expression_Expression.imaginary))throw new UnsupportedOperationError(message("buildFunctionComplexUnsupported"));const n=function collectConstants(e){const t="EULER_GAMMA",n=[],i={pi:Math.PI,e:Math.E};function setConstant(e,t){n.push(`var ${e} = ${t};\n`)}["pi","e"].forEach(t=>{e.hasVariable(t)&&setConstant(t,i[t])}),["Ci","Chi","Si","Shi","Li","Ei"].some(t=>e.hasFunction(t,!0))&&setConstant(t,nt);return n.join(" ")}(e),i=`${e.text({wrapPow:!0})};`.replace(/\^/g,"**"),s=[[],[]];e.functions().forEach(e=>{importDeps(e,s)});let r="";for(let e=0;e<s[0].length;e++)r+=`var ${s[0][e]} = ${s[1][e]};\n`;const o=t||e.variables().sort();return new Function(...o,`${n}${r} return ${i}`)}function importDeps(e,t,n=new Set){if(""===e)return t;const i=t[0],s=t[1];if(i.includes(e))return t;const r=vt[e];if(void 0===r)throw new UnsupportedOperationError(message("buildFunctionUnsupportedFunction",{function:e}));if(n.has(e))return t;n.add(e);const[o,a]=r;if(void 0!==a)for(const e of a)importDeps(e,t,n);return n.delete(e),i.includes(e)||(i.push(e),s.push(o)),t}class Scope extends Array{column;dataType;deferLHSResolution=!1;deferRHSResolution=!1;depth=0;implicitMultiply=!1;isOpen=!1;parent;type;constructor(e,t,n){super(),this.dataType="SCP",this.column=t,this.type=e,this.parent=n}static isScope(e){return isNerdamerNativeType(e,"SCP")}addScope(e,t){const n=new Scope(e,t,this);return n.depth=this.depth+1,n.isOpen=!0,this.push(n),n}text(e=!0){return this.map(t=>{if(!Scope.isScope(t))return e?t.toString():`<${t.toString()}, ${t.type}>`;{const n=t.text(e);switch(t.type){case"parenthesis":return`( ${n} )`;case"square":return`[ ${n} ]`;case"curly":return`{ ${n} }`;case"pipe":return`| ${n} |`;default:return n}}}).join(e?" ":", ").replace(/\s+/gi," ")}upperScope(){this.isOpen=!1;const e=this.parent;return delete this.parent,e}}function getOperatorSymbolArray(){return[...new Set(Object.keys(r).join("").split(""))].filter(e=>!/[a-z]/i.test(e))}function systemFunction(e){return{fn:e.fn,minArgs:e.minArgs,maxArgs:e.maxArgs,maxPrecision:e.maxPrecision,equationArgs:e.equationArgs,distElWise:e.distElWise,deferArguments:e.deferArguments,normalizeDeferredArguments:e.normalizeDeferredArguments,bracketlessStatement:e.bracketlessStatement,returnBoundary:e.returnBoundary,usage:e.usage??"notation",level:"system"}}const wt={};class Equation{dataType="EQN";isEnumerable=!1;LHS;precision;RHS;constructor(e,t){this.LHS=e,this.RHS=t}static isEquation(e){return isNerdamerNativeType(e,"EQN")}abs(){throw new UnsupportedOperationError(message("unsupportedOperation"))}add(e){return this.plus(e)}copy(){return new Equation(this.LHS.copy(),this.RHS.copy())}div(e){if(Equation.isEquation(e))throw new UnsupportedOperationError(message("unsupportedOperation"));const t=Expression_Expression.create(e);if(!t.isNUM()||t.isZero())throw new UnsupportedOperationError(message("unsupportedOperation"));return new Equation(this.LHS.div(t),this.RHS.div(t))}each(e){const t=e(this.LHS,0),n=e(this.RHS,1);if(Expression_Expression.isExpression(t)&&Expression_Expression.isExpression(n))return new Equation(t,n);const i=`${Y[t.dataType]||typeof t} & ${Y[n.dataType]||typeof n}`;throw new UnexpectedDataType(message("expressionExpected",{type:i}))}eq(e){return!!Equation.isEquation(e)&&this.toLHS().LHS.eq(e.toLHS().LHS)}evaluate(){return this.copy().each(e=>e.evaluate())}expand(){return this.copy().each(e=>e.expand())}gt(e){return!!Equation.isEquation(e)&&this.toLHS().LHS.gt(e.toLHS().LHS)}gte(e){return this.gt(e)||this.eq(e)}lt(e){return!!Equation.isEquation(e)&&this.toLHS().LHS.lt(e.toLHS().LHS)}lte(e){return this.lt(e)||this.eq(e)}minus(e){if(Equation.isEquation(e))throw new UnsupportedOperationError(message("unsupportedOperation"));const t=Expression_Expression.create(e);return this.each(e=>e.minus(t))}multiply(e){return this.times(e)}plus(e){if(Equation.isEquation(e))throw new UnsupportedOperationError(message("unsupportedOperation"));const t=Expression_Expression.create(e);return this.each(e=>e.plus(t))}subtract(e){return this.minus(e)}text(){return`${this.LHS.text()}=${this.RHS.text()}`}times(e){if(Equation.isEquation(e))throw new UnsupportedOperationError(message("unsupportedOperation"));const t=Expression_Expression.create(e);if(!t.isNUM()||t.isZero())throw new UnsupportedOperationError(message("unsupportedOperation"));return this.LHS=this.LHS.times(t),this.RHS=this.RHS.times(t),this}toLHS(){const e=this.copy();return e.LHS=e.LHS.minus(e.RHS),e.RHS=zero(),e}toString(){return this.text()}}const bt="RETURN_SIGNAL",_t="BREAK_SIGNAL",Pt="CONTINUE_SIGNAL",St="NULL_SIGNAL";class ControlFlowSignal extends Error{constructor(){super(),this.name=new.target.name}}class ReturnSignal extends ControlFlowSignal{value;dataType=bt;constructor(e){super(),this.value=e}static isReturnSignal(e){return isNerdamerNativeType(e,bt)}}class BreakSignal extends ControlFlowSignal{dataType=_t;static isBreakSignal(e){return isNerdamerNativeType(e,_t)}}class ContinueSignal extends ControlFlowSignal{dataType=Pt;static isContinueSignal(e){return isNerdamerNativeType(e,Pt)}}class NullSignal extends ControlFlowSignal{dataType=St;static isNullSignal(e){return isNerdamerNativeType(e,St)}}const Mt=new BreakSignal,At=new ContinueSignal;let Nt=0,Tt=0,It=0,Rt=0;function throwNullSignal(){throw new NullSignal}function shouldConsumeLocalReturn(){return 0===Rt&&0===It}function isTruthy(e){if(!Expression_Expression.isExpression(e))throw new UnexpectedDataType(message("expressionExpected",{type:Y[e.dataType]}));return!e.isZero()}function controlFlow_RETURN(e){throw new ReturnSignal(e)}function BREAK(){if(0===Nt)throw new ParserError(message("breakOutsideLoop"));throw Mt}function CONTINUE(){if(0===Nt)throw new ParserError(message("continueOutsideLoop"));throw At}function AND(...e){let t=one();for(const n of e)if(!isTruthy(n())){t=zero();break}return t}function OR(...e){let t=zero();for(const n of e)if(isTruthy(n())){t=one();break}return t}function NOT(e){return isTruthy(e)?zero():one()}function XOR(...e){let t=!1;for(const n of e)isTruthy(n)&&(t=!t);return t?one():zero()}function IFERROR(e,t){let n;try{n=e()}catch(e){if(e instanceof ControlFlowSignal)throw e;n=t()}return n}function ISERROR(e){let t=zero();try{e()}catch(e){if(e instanceof ControlFlowSignal)throw e;t=one()}return t}function controlFlowReturnBoundary(e){let t;try{t=e()}catch(e){if(!(Tt>0&&shouldConsumeLocalReturn()&&ReturnSignal.isReturnSignal(e)))throw e;t=e.value}return t}function IF(e,t,n){return controlFlowReturnBoundary(()=>{let i;if(isTruthy(e()))i=t();else{if(!n)return throwNullSignal();i=n()}return i})}function WHILE(e,t){return controlFlowReturnBoundary(()=>{let n,i=!0,s=0;for(;i;){if(isTruthy(e())){if(s>=Ge.MAX_LOOP_ITERATIONS)throw new ParserError(message("loopIterationLimitExceeded",{max:String(Ge.MAX_LOOP_ITERATIONS)}));Nt++;try{n=t()}catch(e){if(NullSignal.isNullSignal(e));else if(BreakSignal.isBreakSignal(e))i=!1;else if(!ContinueSignal.isContinueSignal(e))throw e}finally{Nt--}s++}else i=!1}return void 0===n?throwNullSignal():n})}function FOR(e,t,n,i){return controlFlowReturnBoundary(()=>(e(),WHILE(t,()=>{let e;try{e=i()}catch(e){throw(ContinueSignal.isContinueSignal(e)||NullSignal.isNullSignal(e))&&n(),e}return n(),e})))}function BLOCK(...e){if(0===e.length)return throwNullSignal();let t;for(const n of e)try{t=n()}catch(e){if(!NullSignal.isNullSignal(e))throw e}return void 0===t?throwNullSignal():t}function parserReturnBoundary(e){const t=0===Rt&&0===Tt;let n;Tt++;try{n=e()}catch(e){if(!t||!ReturnSignal.isReturnSignal(e))throw e;n=e.value}finally{Tt--}return n}function wrappedFunction(e,t){return(...n)=>{const i=new Map,s=new Set;for(let e=0;e<t.length;e++){const r=t[e];i.has(r)||s.has(r)||(Object.prototype.hasOwnProperty.call(Bt.KNOWN_VALUES,r)?i.set(r,Bt.KNOWN_VALUES[r]):s.add(r)),Bt.KNOWN_VALUES[r]=n[e]}let r;try{r=function functionBoundary(e){let t;Rt++;try{t=e()}catch(e){if(!ReturnSignal.isReturnSignal(e))throw BreakSignal.isBreakSignal(e)?new ParserError(message("breakOutsideLoop")):ContinueSignal.isContinueSignal(e)?new ParserError(message("continueOutsideLoop")):e;t=e.value}finally{Rt--}return t}(()=>{let t;return t="string"==typeof e?Bt.parse(e):e({inheritValues:!1}),t})}finally{for(const[e,t]of i)Bt.KNOWN_VALUES[e]=t;for(const e of s)delete Bt.KNOWN_VALUES[e]}return r}}function entry(e,t,n,i){return{minArgs:e,maxArgs:t,fn:n,maxPrecision:i,usage:"notation",level:"user"}}function setFunction(e){const t=wt[e.name];if("system"===t?.level)throw new AssignmentError(message("restrictedVariableName",{name:e.name}));if("js"===e.type){const t=e.name;if("function"!=typeof e.fn)throw new UnexpectedInputError(message("setJSFunctionExpectsFunction"));if(!e.minArgs||!e.maxArgs)throw new UnexpectedInputError(message("functionRequiresMinAndMaxArgs"));wt[t]=entry(e.minArgs,e.maxArgs,function jsWrapper(e,t){return(...n)=>{const i=[];for(const t of n){if(!t.isNUM())return Expression_Expression.toFunction(e,n);i.push(Number(t.getMultiplier().toDecimal()))}return Expression_Expression.create(Number(t(...i)))}}(t,e.fn),17)}else if("symbolic"===e.type)if("string"==typeof e.fn){const t=e.argsOrder??Expression_Expression.create(e.fn).variables().sort();wt[e.name]=entry(e.minArgs??t.length,e.maxArgs??t.length,wrappedFunction(e.fn,t))}else{const t=e.name;if(void 0===e.minArgs||void 0===e.maxArgs)throw new UnexpectedInputError(message("functionRequiresMinAndMaxArgs"));wt[t]=entry(e.minArgs,e.maxArgs,e.fn)}}function assertRelation(e,t,n){let i,s;if(Expression_Expression.isExpression(t)&&t.isNUM())i=t.getMultiplier();else if(Expression_Expression.isExpression(t)&&t.isPosInf())i=1/0;else{if(!Expression_Expression.isExpression(t)||!t.isNegInf())throw new UnexpectedInputError(message("wrongInput",{expected:"a real numeric value",received:String(t)}));i=-1/0}return s="="===n?Assumption.exactly(i):">"===n?Assumption.atLeast(i,!1):">="===n?Assumption.atLeast(i,!0):"<"===n?Assumption.atMost(i,!1):Assumption.atMost(i,!0),assume(String(e),s),e}const Ot=[],Ft=getOperatorSymbolArray();let Ct=new RegExp(`[${Ft.join("")}]`);function refreshOperatorSymbols(){Ft.splice(0,Ft.length,...getOperatorSymbolArray()),Ct=new RegExp(`[${Ft.join("")}]`)}const qt=new RegExp(`[${Object.keys(s).join("\\")}]`),Vt=/[a-z_αAβBγΓδΔϵEζZηHθΘιIκKλΛμMνNξΞoOπΠρPσΣτTυϒϕΦχXψΨωΩ∞]/i,kt=/\d/,Ut=/\d|\./;class Token{static BRACKET="BKT";static CHARACTER="CHR";static FUNCTION="FUN";static NUMBER="NUM";static OPERATOR="OPR";static PREFIX="PFX";static SPACE="SPC";static UNDEFINED="UND";static VARIABLE="VAR";dataType;position;resolvedOperator;type;value;constructor(e,t,n){this.dataType="Token",this.position=n,this.type=t,this.value=String(e)}static getCharType(e,t,n){if(kt.test(e))return n.tokenType===Token.VARIABLE?Token.VARIABLE:Token.NUMBER;if(" "===e)return Token.SPACE;if("."===e)return n.tokenType===Token.VARIABLE?Token.OPERATOR:Token.NUMBER;if("e"!==e&&"E"!==e||n.tokenType!==Token.NUMBER){if(Vt.test(e)||Ot.includes(e))return Token.VARIABLE;if(qt.test(e))return Token.BRACKET;if(Ct.test(e)){const t=n.last();return n.tokenType!==Token.NUMBER||"+"!==e&&"-"!==e||"e"!==t&&"E"!==t?Token.OPERATOR:Token.NUMBER}return Token.CHARACTER}{const e=n.prev(t),i=n.next(t);return"+"===i||"-"===i||Ut.test(e)&&kt.test(i)?(n.scientificNumber=!0,Token.NUMBER):Token.VARIABLE}}static isToken(e){return isNerdamerNativeType(e,"Token")}static O(e){return new Token(e,Token.OPERATOR,-1)}static V(e){return new Token(e,Token.VARIABLE,-1)}is(e){return this.type===e}text(){return this.value}toString(){return this.type===Token.PREFIX?"`"+this.value:this.value}}function scope_assign(e,t){if(e=Expression_Expression.create(e),Expression_Expression.isExpression(e)&&!e.isPlainVariable())throw new UnexpectedInputError(message("plainVariableExpected",{input:String(e)}));if(He.includes(e.value))throw new AssignmentError(message("restrictedVariableName",{name:e.value}));let n;try{n="function"==typeof t?t():"string"==typeof t?Bt.parse(t):t}catch(t){if(NullSignal.isNullSignal(t))return Bt.KNOWN_VALUES[e.value]?.copy()??e;throw t}return Bt.KNOWN_VALUES[e.value]=n,n}function normalizeLetArguments(e){const t=[];for(let n=0;n<e.length;n++){const i=e[n];let s=-1;if(n<e.length-1)for(let e=0;e<i.length;e++){const t=i[e];if(Token.isToken(t)&&t.type===Token.OPERATOR&&":"===t.value){s=e;break}}if(s>0&&s<i.length-1){const e=new Scope(i.type,i.column),n=new Scope(i.type,i.column);for(let t=0;t<s;t++)e.push(i[t]);for(let e=s+1;e<i.length;e++)n.push(i[e]);t.push(e,n)}else t.push(i)}return t}function LET(...e){if(e.length<3||e.length%2==0)throw new ParserError(message("letRequiresBindingsAndBody"));const t=new Map,n=new Set,i=[];let s;try{for(let s=0;s<e.length-1;s+=2){const r=e[s]({inheritValues:!1,substitute:!1});if(!Expression_Expression.isExpression(r))throw new UnexpectedInputError(message("plainVariableExpected",{input:r.text()}));const o=assertPlainVariableAndGetString(r),a=e[s+1]({excludeValues:i});t.has(o)||n.has(o)||(Object.prototype.hasOwnProperty.call(Bt.KNOWN_VALUES,o)?t.set(o,Bt.KNOWN_VALUES[o]):n.add(o)),scope_assign(r,a),i.includes(o)||i.push(o)}try{s=e[e.length-1]({excludeValues:i})}catch(e){if(!shouldConsumeLocalReturn()||!ReturnSignal.isReturnSignal(e))throw e;s=e.value}}finally{for(const[e,n]of t)Bt.KNOWN_VALUES[e]=n;for(const e of n)delete Bt.KNOWN_VALUES[e]}return s}function unassign(e){let t,n;if("function"==typeof e){const n=e({inheritValues:!1,substitute:!1});if(!Expression_Expression.isExpression(n))throw new UnexpectedInputError(message("plainVariableExpected",{input:n.text()}));t=n}else t=e;return n=Expression_Expression.isExpression(t)?assertPlainVariableAndGetString(t):t,delete Bt.KNOWN_VALUES[n],Expression_Expression.create(t)}function invokeMathFunction(e,t){return e(...t)}function callFunction(e,t){1===t.length&&void 0===t[0]&&(t=[]);const n=wt[e];if(void 0===n)throw new ParserError(message("unsupportedFunction",{function:e}));const{fn:i,minArgs:s,maxArgs:r,maxPrecision:o,equationArgs:a,distElWise:l,deferArguments:u,returnBoundary:c}=n;if(s>-1&&t.length<s)throw new ParserError(message("functionMinArgs",{function:e,min:String(s),actual:String(t.length)}));if(r>-1&&t.length>r)throw new ParserError(message("functionMaxArgs",{function:e,max:String(r),actual:String(t.length)}));let p;if(u){const invoke=()=>invokeMathFunction(i,t);p=c?parserReturnBoundary(invoke):invoke()}else{const s=[];for(const e of t){if("function"==typeof e)throw new ParserError(message("malformedExpression"));s.push(e)}if("system"===n.level)for(let e=0;e<s.length;e++)if(Equation.isEquation(s[e])&&!a?.includes(e))throw new UnexpectedDataType(message("expressionExpected",{type:"Equation"}));const r=l?s.filter(e=>Vector.isVector(e)||Matrix.isMatrix(e)):[];if(r.length>0){const t=r[0];for(const n of r){let i;if(i=Vector.isVector(t)?Vector.isVector(n)&&t.count()===n.count():Matrix.isMatrix(n)&&t.dimensionsMatch(n),!i)throw new DimensionError(message("mismatchedDimensions",{function:e}))}p=distribute((t,n,i)=>{const r=s.map(e=>{let t=e;return Vector.isVector(e)?t=e.__get__([n]):Matrix.isMatrix(e)&&(t=e.get(n,i)),t});return callFunction(e,r)},t)}else p=!i||Ge.DEFER_SIMPLIFICATION?Expression_Expression.toFunction(e,s):invokeMathFunction(i,s);p||(p=Expression_Expression.toFunction(e,s))}return o&&(p.precision=o),p}const Dt={plus:add_add,minus:subtract,times:multiply,div:divide_divide,pow:power,mod:function modulo(e,t){if(!Expression_Expression.isExpression(e)||!Expression_Expression.isExpression(t))throw new UnsupportedOperationError(message("unsupportedOperation"));return e.mod(t)},percent:function percentage(e){if(!Expression_Expression.isExpression(e))throw new UnsupportedOperationError(message("unsupportedOperation"));return e.div(Expression_Expression.create(100))},assertEQ:function assertEQ(e,t){return assertRelation(e,t,"=")},assertGT:function assertGT(e,t){return assertRelation(e,t,">")},assertGTE:function assertGTE(e,t){return assertRelation(e,t,">=")},assertLT:function assertLT(e,t){return assertRelation(e,t,"<")},assertLTE:function assertLTE(e,t){return assertRelation(e,t,"<=")},assign:scope_assign,functionAssign:function functionAssign(e,t){if(!Collection.isCollection(e))throw new UnexpectedInputError(message("invalidFunctionDeclaration",{declaration:e.text()}));const n=[...e.getElements()],i=n.pop();if(!Expression_Expression.isExpression(i))throw new UnexpectedInputError(message("invalidFunctionDeclaration",{declaration:e.text()}));const s=assertPlainVariableAndGetString(i),r=n.map(e=>{if(!Expression_Expression.isExpression(e))throw new UnexpectedInputError(message("plainVariableExpected",{input:e.text()}));return assertPlainVariableAndGetString(e)});return setFunction({type:"symbolic",name:s,minArgs:r.length,maxArgs:r.length,fn:wrappedFunction(t,r)}),Expression_Expression.toFunction(s,r.map(e=>Expression_Expression.Variable(e)))},setEqual:function setEqual(e,t){if(!Expression_Expression.isExpression(e)&&!Expression_Expression.isExpression(t))throw new UnsupportedOperationError(message("unsupportedOperation"));return new Equation(e,t)},lt:function functions_lt(e,t){return Expression_Expression.create(Number(e.lt(t)))},lte:function functions_lte(e,t){return Expression_Expression.create(Number(e.lte(t)))},eq:function eq(e,t){return Expression_Expression.create(Number(e.eq(t)))},gt:function functions_gt(e,t){return Expression_Expression.create(Number(e.gt(t)))},gte:function functions_gte(e,t){return Expression_Expression.create(Number(e.gte(t)))},minusPrefix:function subtractPrefix(e){return e.neg()},plusPrefix:function addPrefix(e){return e},factorial:math_factorial,doubleFactorial:math_doubleFactorial};function distribute(e,t){let n;return n=Vector.isVector(t)?t.copy().each((t,n)=>e(t,n)):t.copy().each((t,n,i)=>{const s=e(t,Number(n),Number(i));if(!Expression_Expression.isExpression(s))throw new UnexpectedDataType(message("expressionExpected",{type:Y[s.dataType]}));return s}),n}function dispatchDynamicOperation(e,t,n){const i=e.isEnumerable||Equation.isEquation(e),s=i?e:t,r=i?t:e,o=s[n];if(!o)throw new UnsupportedOperationError(message("unsupportedOperation"));const a=o.call(s,r);return"boolean"==typeof a?Expression_Expression.create(Number(a)):a}function route(e,t,n){let i;if("assign"===n)i=scope_assign(e,t);else if("in"===n)i=callFunction("contains",[t,e]);else if(e.isEnumerable)i=dispatchDynamicOperation(e,t,n);else if(!Vector.isVector(t)&&!Matrix.isMatrix(t)||"minus"!==n&&"div"!==n&&"pow"!==n)i=dispatchDynamicOperation(e,t,n);else{if(!Expression_Expression.isExpression(e))throw new UnsupportedOperationError(message("unsupportedOperation"));if(Matrix.isMatrix(t)&&"pow"===n)throw new UnsupportedOperationError(message("unsupportedOperation"));i=distribute(t=>{let i;return i=Expression_Expression.isExpression(t)?"minus"===n?subtract(e,t):"div"===n?divide_divide(e,t):power(e,t):route(e,t,n),i},t)}return i}const Lt="block";function isIdentifierStart(e){return/[a-z_]/i.test(e)}function isIdentifierPart(e){return/[a-z0-9_]/i.test(e)}function getPreviousIdentifier(e,t){let n=t;for(;n>0&&/\s/.test(e[n-1]);)n--;let i=n;for(;i>0&&isIdentifierPart(e[i-1]);)i--;const s=e.slice(i,n);return s&&isIdentifierStart(s[0])?s:void 0}function getNextSignificantCharacter(e,t){let n=t;for(;n<e.length&&/\s/.test(e[n]);)n++;return e[n]}function findBracketlessFunction(e,t){let n,i=0;for(;i<e.length;){if(!isIdentifierStart(e[i])){i++;continue}const s=i;for(i++;i<e.length&&isIdentifierPart(e[i]);)i++;const r=i,o=e.slice(s,r);if(o in t&&/\s/.test(e[i]??"")){for(;i<e.length&&/\s/.test(e[i]);)i++;if(i<e.length){const a=e[i],l=e[i+1]??"";/[*/=<>:&|]/.test(a)||("+"===a||"-"===a)&&/\s/.test(l)||(n={argumentStart:i,consumeStatement:!0===t[o].bracketlessStatement,maxArgs:t[o].maxArgs,nameEnd:r,nameStart:s})}}}return n}function isOpeningBracket(e){return"("===e||"["===e||"{"===e}function isClosingBracket(e){return")"===e||"]"===e||"}"===e}function findArgumentEnd(e,t,n,i=!1){let s=0,r=t,o="";const a=1!==n;for(;r<e.length;r++){const n=e[r];if(isOpeningBracket(n)){s++,o=n;continue}if(isClosingBracket(n)){if(0===s)break;s--,o=n;continue}if(s>0){/\s/.test(n)||(o=n);continue}if(i){if(","===n)break;/\s/.test(n)||(o=n);continue}if(/\s/.test(n)){if(a&&","===o)continue;break}if(","===n){if(!a)break;o=n;continue}const l=!("+"!==n&&"-"!==n||r!==t&&","!==o&&"^"!==o);if(/[+\-*/=<>:&|]/.test(n)&&!l)break;o=n}return r}function preprocess(e,t){let n=function normalizeComments(e){let t="",n=0;for(;n<e.length;){const i=e.indexOf("#",n);if(-1===i){t+=e.slice(n);break}t+=e.slice(n,i);const s=e.startsWith("##",i)?"##":"#",r=e.indexOf(s,i+s.length);if(-1===r)throw new ParserError(message("missingCommentDelimiter",{delimiter:s}));t+=" ",n=r+s.length}return t}(e);n=function normalizeStatementSeparators(e){const t=[];let n="",i=!1;for(let s=0;s<e.length;s++){const r=e[s];if("("===r||"["===r||"{"===r){const i="("===r?")":"["===r?"]":"}";n+=r,t.push({argumentStart:n.length,closingBracket:i,functionName:"("===r?getPreviousIdentifier(e,s):void 0});continue}if(")"===r||"]"===r||"}"===r){const e=t[t.length-1];e?.closingBracket===r&&(e.statementBlockOpened&&(n+=")"),t.pop()),n+=r;continue}if(","===r){n+=r;const e=t[t.length-1];e&&!e.statementBlockOpened&&(e.argumentStart=n.length);continue}if(";"===r){const o=getNextSignificantCharacter(e,s+1),a=t[t.length-1],l=void 0===o||","===o||o===a?.closingBracket;if(0===t.length)l||(n+=",",i=!0);else{if(l)continue;a?.functionName===Lt?n+=",":"let"===a?.functionName?(a.statementBlockOpened||(n=n.slice(0,a.argumentStart)+`${Lt}(`+n.slice(a.argumentStart),a.statementBlockOpened=!0),n+=","):n+=r}continue}n+=r}return i&&(n=`${Lt}(${n})`),n}(n);let i=findBracketlessFunction(n,t);for(;i;){const e=findArgumentEnd(n,i.argumentStart,i.maxArgs,i.consumeStatement),s=n.slice(i.nameStart,i.nameEnd),r=n.slice(i.argumentStart,e);n=n.slice(0,i.nameStart)+`${s}(${r})`+n.slice(e),i=findBracketlessFunction(n,t)}return n}class IndexedReference{target;indices;targetName;_resolved=null;dataType=k;isEnumerable=!1;constructor(e,t,n){this.target=e,this.indices=t,this.targetName=n}static isIndexedReference(e){return isNerdamerNativeType(e,k)}copy(){return this.resolve().copy()}eq(e){return this.resolve().eq(e)}evaluate(){return this.resolve().evaluate()}expand(){return this.resolve().expand()}gt(e){return this.resolve().gt(e)}gte(e){return this.resolve().gte(e)}lt(e){return this.resolve().lt(e)}lte(e){return this.resolve().lte(e)}resolve(){return null===this._resolved&&(this.indices,this._resolved=this.target.__get__(this.indices)),this._resolved}set(e){this.indices,this.target.__set__(this.indices,e)}text(){return this.resolve().text()}}class KeyValuePair{key;value;dataType=U;isEnumerable=!1;constructor(e,t){this.key=e,this.value=t}static isKeyValuePair(e){return isNerdamerNativeType(e,U)}copy(){return new KeyValuePair(this.key,this.value.copy())}eq(){return!1}evaluate(){return this.value.evaluate()}expand(){return this.value.expand()}gt(){return!1}gte(){return!1}lt(){return!1}lte(){return!1}text(){return`${this.key} => ${this.value.text()}`}}function shouldPopOperator(e,t){let n=e.precedence>t.precedence;return n||e.precedence!==t.precedence||(n=t.leftAssoc),n}class ExpressionParser{CONSTANTS=le;MAX_COMPOUND_OPERATOR_LENGTH=2;operators=function getOperators(){return r}();VALUE_SETS=["VEC","MAT"];WHITE_SPACE=["\n","\t","\r"];KNOWN_VALUES={};extractDictionaryKey(e,t,n){if(1===e.length&&Token.isToken(e[0])&&e[0].type===Token.VARIABLE){const n=e[0],i=t?.[n.value];return void 0!==i?Expression_Expression.isExpression(i)||Equation.isEquation(i)||isEnumerable(i)?i.text():Expression_Expression.create(i,void 0,!0).text():Ge.SUBSTITUTE&&n.value in this.KNOWN_VALUES?this.KNOWN_VALUES[n.value].text():n.value}const i=this.parseRPN(e,t,n);let s=i;return Vector.isVector(i)&&1===i.elements.length?s=i.elements[0]:Collection.isCollection(i)&&1===i.getElements().length&&(s=i.getElements()[0]),s.text()}extractIndices(e,t,n){const i=[];let s,r=!0;for(let t=0;t<e.length;t++){const n=e[t];if(Scope.isScope(n)){r=!1;break}if(n.type!==Token.OPERATOR){if(n.type!==Token.NUMBER){r=!1;break}i.push(Number(n.value)-Ge.INDEX_BASE)}}if(r&&i.length>0)s=i;else{const i=this.parseRPN(e,t,n),r=[];if(Vector.isVector(i))for(let e=0;e<i.elements.length;e++)r.push(Expression_Expression.create(i.elements[e]));else if(Collection.isCollection(i))for(const e of i.getElements())r.push(Expression_Expression.create(e));else r.push(Expression_Expression.create(i));const o=[];let a=!0;for(let e=0;e<r.length;e++){const t=Number(r[e].evaluate().text());if(!Number.isFinite(t)){a=!1;break}o.push(t-Ge.INDEX_BASE)}s=a?o:r}return s}resolveSymbolicAccess(e,t,n){if(n.length>2)throw new ParserError(message("symbolicAccessMaxIndices"));if(Vector.isVector(t)&&1!==n.length)throw new ParserError(message("symbolicVectorIndexCount"));if(Matrix.isMatrix(t)&&2!==n.length){if(1===n.length)throw new ParserError(message("symbolicMatrixRowNonScalar"));throw new ParserError(message("symbolicMatrixCellIndexCount"))}if(Vector.isVector(t)||Matrix.isMatrix(t)){const i=[];for(const t of n){const s=Number(t.text());if(!Number.isFinite(s))return Expression_Expression.toAccessor(e,n);i.push(s-Ge.INDEX_BASE)}return t.__get__(i)}if(Expression_Expression.isExpression(t)&&t.isPlainVariable())return Expression_Expression.toAccessor(e,n);throw new ParserError(message("symbolicAccessTargetType"))}aliasOperator(e,t){const n=this.operators[e];if(!n)throw new ParserError(message("unknownOperator",{operator:e}));return this.operators[t]={...n,operator:t,postfixVariant:n.postfixVariant?{...n.postfixVariant,operator:t}:void 0},refreshOperatorSymbols(),this}create(){return new ExpressionParser}evaluate(e,t){return scopedBlock("EVALUATE",!0,()=>Bt.parse(e,t))}get(e){return Ge[e]}getI(){return Expression_Expression.imaginary}getOperator(e){const t=this.operators[e];let n;return t&&(n={...t,postfixVariant:t.postfixVariant?{...t.postfixVariant}:void 0}),n}getPrecision(){return Rational.getPrecision()}isReserved(e){return He.includes(e)}parse(e,t){if(t){const e={};for(const n in t){const i=t[n];e[n]=Expression_Expression.isExpression(i)||Equation.isEquation(i)||isEnumerable(i)?i:Expression_Expression.create(i)}t=e}const n=preprocess(String(e),wt),i=this.toRPN(this.tokenize(n));let s;try{s=this.parseRPN(i,t)}catch(e){if(NullSignal.isNullSignal(e))throw new NullError(message("nullValue"));throw e}return s}parseRPN(e,t,n){const i=[],s=this.operators;function addToOutput(e){if(void 0===e)throw new ParserError(message("malformedExpression"));i.push(e)}function resolveStackValue(e){if(IndexedReference.isIndexedReference(e))return e.resolve();if(KeyValuePair.isKeyValuePair(e)||"function"==typeof e)throw new ParserError(message("malformedExpression"));return e}function resolveStackValues(e){const t=[];for(const n of e)t.push(resolveStackValue(n));return t}const parseScope=(e,t,n,i)=>{const parse=()=>this.parseRPN(e,t,n);return"boolean"==typeof i?scopedBlock("SUBSTITUTE",i,parse):parse()},parseArguments=(e,t,n,i)=>{const s=parseScope(e,t,n,i);return Collection.isCollection(s)?s.getElements():[s]},createDeferredArgument=(e,t,n)=>{let i;return s=>{const r=i??e();i=r;let o=!1===s?.inheritValues?void 0:t;if(o&&s?.excludeValues?.length){o={...o};for(const e of s.excludeValues)delete o[e]}return parseScope(r,o,n,s?.substitute)}},handleFunction=(e,i)=>{if(e.value===ue){const e=parseArguments(i,void 0,n,!1),s=parseArguments(i,t,n);if(e.length<2||e.length!==s.length||!Expression_Expression.isExpression(e[0])||!e[0].isPlainVariable())throw new ParserError(message("parserMalformedSymbolicAccessor"));const r=e[0],o=s[0],a=[];for(let t=1;t<e.length;t++){if(!Expression_Expression.isExpression(e[t]))throw new ParserError(message("parserMalformedSymbolicAccessorIndex"));const n=s[t];if(!Expression_Expression.isExpression(n))throw new ParserError(message("symbolicAccessIndexScalar"));a.push(n)}return this.resolveSymbolicAccess(r,o,a)}if(wt[e.value]?.deferArguments){const n=[];if(i.length>0){let e=new Scope(i.type,i.column);for(const t of i)Token.isToken(t)&&t.type===Token.OPERATOR&&","===t.value?(n.push(e),e=new Scope(i.type,i.column)):e.push(t);n.push(e)}const s=wt[e.value].normalizeDeferredArguments,r=s?s(n):n,a=o.includes(e.value),l=r.map(e=>createDeferredArgument(()=>this.toRPN(e),t,a));return callFunction(e.value,l)}if(i.deferLHSResolution){const t=i.length>0?[...parseArguments(i,void 0,n,!1)]:[];return t.push(Expression_Expression.Variable(e.value)),new Collection(t)}return callFunction(e.value,parseArguments(i,t,o.includes(e.value)))},handleOperator=(t,s)=>{const r=t.resolvedOperator??this.operators[t.value];let o=i.pop();if("comma"===r.action)return void addToOutput(o);if(r.isPostfix){o=resolveStackValue(o);return(0,Dt[r.action])(o)}let a=i.pop();const l=e[s-1],u=e[s-2];if(-1===t.position&&"times"===r.action&&Scope.isScope(l)&&Collection.isCollection(o)&&Token.isToken(u)&&u.type===Token.VARIABLE&&Expression_Expression.isExpression(a)&&a.isPlainVariable())throw new ParserError(message("unsupportedFunction",{function:u.value}));if("assign"===r.action&&IndexedReference.isIndexedReference(a)){let e=!0;try{o="function"==typeof o?o():resolveStackValue(o)}catch(t){if(!NullSignal.isNullSignal(t))throw t;e=!1}return e&&(a.set(o),a.targetName&&(this.KNOWN_VALUES[a.targetName]=a.target)),a.target}if(r.deferRHSResolution){if(a=resolveStackValue(a),"function"!=typeof o)throw new ParserError(message("malformedExpression"));return(0,Dt[r.action])(a,o)}if(a=resolveStackValue(a),o=resolveStackValue(o),"mapTo"===r.action)return new KeyValuePair(a.text(),o);const c=n&&r.assertiveAction?r.assertiveAction:r.action,p=Dt[c];return a.isEnumerable||o.isEnumerable||Equation.isEquation(a)||Equation.isEquation(o)?route(a,o,r.action):p(a,o)},handleScope=(s,r)=>{const o=i[i.length-1];if(s.deferRHSResolution)addToOutput(createDeferredArgument(()=>s,t,n));else{if("square"===s.type&&s.implicitMultiply&&o){if(isEnumerable(o)||IndexedReference.isIndexedReference(o)){const a=IndexedReference.isIndexedReference(o)?o.resolve():o,l=e[r-1];let u;!Token.isToken(l)||l.type!==Token.VARIABLE||t&&l.value in t||!(l.value in this.KNOWN_VALUES)||(u=l.value);const c=Dictionary.isDictionary(a)?this.extractDictionaryKey(s,t,n):this.extractIndices(s,t,n);if(i.pop(),Array.isArray(c)&&c.length>0&&Expression_Expression.isExpression(c[0])){const e=c;if(!Token.isToken(l)||l.type!==Token.VARIABLE||!Vector.isVector(a)&&!Matrix.isMatrix(a))throw new ParserError(message("symbolicAccessNamedTargetRequired"));addToOutput(this.resolveSymbolicAccess(Expression_Expression.Variable(l.value),a,e))}else addToOutput(new IndexedReference(a,c,u));return}if(Expression_Expression.isExpression(o)&&o.isPlainVariable()){const e=this.extractIndices(s,t,n);if(e.length>0&&Expression_Expression.isExpression(e[0]))return i.pop(),void addToOutput(this.resolveSymbolicAccess(o,o,e))}const a=parseScope(s,t,n);if(Ge.ALLOW_IMPLICIT_MULTIPLICATION){addToOutput((0,Dt.multiply)(resolveStackValue(i.pop()),a))}else addToOutput(a);return}addToOutput(s.deferLHSResolution?parseScope(s,void 0,n,!1):parseScope(s,t,n))}},resolveToken=e=>{const n=this.CONSTANTS[e.value];if("string"==typeof n)return this.parse(n);if(t&&e.value in t&&!e.is(Token.NUMBER)){const n=t[e.value];return Expression_Expression.isExpression(n)||Equation.isEquation(n)||isEnumerable(n)?n.copy():Expression_Expression.create(n,void 0,!0)}return e.value in this.KNOWN_VALUES&&Ge.SUBSTITUTE?this.KNOWN_VALUES[e.value].copy():Ge.EVALUATE&&"function"==typeof n?this.parse(n(),t):e.type===Token.FUNCTION?Expression_Expression.Function(e.value):e.type===Token.VARIABLE?ae.includes(e.value)?Expression_Expression.Inf():Expression_Expression.Variable(e.value):Expression_Expression.Number(e.value)},handlePrefix=e=>{const t=resolveStackValue(i.pop()),n=`${s[e.value].action}Prefix`;return(0,Dt[n])(t)};for(let t=0;t<e.length;t++){const n=e[t];if(Scope.isScope(n))handleScope(n,t);else if(n.type===Token.OPERATOR){const e=handleOperator(n,t);void 0!==e&&addToOutput(e)}else n.type===Token.FUNCTION?addToOutput(handleFunction(n,e[++t])):n.type===Token.PREFIX?addToOutput(handlePrefix(n)):addToOutput(resolveToken(n))}let r;if("square"===e.type)r=new Vector(resolveStackValues(i));else if("curly"===e.type)if(i.length>0&&KeyValuePair.isKeyValuePair(i[0])){const e=new Dictionary;for(const t of i)e.set(t.key,t.value);r=e}else r=new ValuesSet(resolveStackValues(i));else r=i.length>1?new Collection(resolveStackValues(i)):resolveStackValue(i[0]);return r}parseTeXRPN(e){const t=["int","int_","frac","sum_","prod_","lim_","infty","mathrm"],n={Re:"realpart",Im:"imagpart",arccos:"acos",arcsin:"asin",arctan:"atan"},i=[],{FUNCTION:s,VARIABLE:r}=Token;let o;const integral=()=>{const t=(t=>{const n=new Scope("",-1);for(;o<e.length;o++){const i=e[o];if(n.push(i),t(i))break}return n})(e=>/^d/.test(e.value)),n=Token.V(t.pop().text().substring(1));return","===t.at(-1)?.text()&&t.pop(),[t,n]},getLimits=e=>{const t=new Scope("",-1),n=new Scope("",-1);let i=t;for(let t=0;t<e.length;t++){const s=e[t];"to"!==s.text()?i.push(s):i=n}return[t,n]};for(o=0;o<e.length;o++){const a=e[o];if(Scope.isScope(a)){const e=this.parseTeXRPN(a);i.push(`(${e})`)}else if(a.is(s)||a.is(r)&&t.includes(a.value)){o++;const t=a.text().split("_")[0],s=a.text();switch(a.value){case"cos":case"sin":case"tan":case"sec":case"csc":case"cot":case"acos":case"arccos":case"arcsin":case"arctan":case"asec":case"acsc":case"acot":case"sqrt":case"gcd":case"Re":case"Im":i.push(`${n[s]||s}(${this.parseTeXRPN(e[o])})`);break;case"sum_":case"prod_":{const n=e[o],s=n.shift().text();n.shift();const r=this.parseTeXRPN(n);o+=2;const a=this.parseTeXRPN(e[o]);i.push(`${t}(${this.parseTeXRPN(e[++o])},${s},${r},${a})`);break}case"lim_":{const[n,s]=getLimits(e[o]);i.push(`${t}(${this.parseTeXRPN(e[++o])},${n},${s})`);break}case"int_":{const[e,t]=integral(),n=this.parseTeXRPN(e.shift());e.shift();const s=this.parseTeXRPN(e.shift());i.push(`defint(${this.parseTeXRPN(e)},${n},${s},${t})`);break}case"int":{const[e,n]=integral();i.push(`${t}(${this.parseTeXRPN(e)},${n})`);break}case"frac":{const t=this.parseTeXRPN(e[o]),n=this.parseTeXRPN(e[++o]);i.push(`(${t})/(${n})`);break}case"infty":i.push(ae[0]);break;case"mathrm":i.push(`${this.parseTeXRPN(e[o])}(${this.parseTeXRPN(e[++o])})`);break;default:i.push(`${s}(${this.parseTeXRPN(e[o])})`)}}else/\s+/.test(a.value)||i.push(a.value)}return i.join("")}scopedBlock(e,t,n){return scopedBlock(e,t,n)}set(e,t){if("object"==typeof e)for(const t in e)Ge[t]=e[t];else Ge[e]=t;return this}setConstants(e){for(const t in e){const n=e[t];"string"==typeof n&&""===n&&t in this.CONSTANTS?delete this.CONSTANTS[t]:this.CONSTANTS[t]=n}}setI(e){const t=Expression_Expression.imaginary;return remove(He,t),Expression_Expression.imaginary=e,He.push(e),this}setImaginary(e){return this.setI(e)}setOperator(e,t){const{prefix:n,postfix:i,...s}=e,r={...s,isPostfix:s.isPostfix??i??!1,isPrefix:s.isPrefix??n??!1,iterates:s.iterates??!0};if(t)Dt[r.action]=t;else if(!Dt[r.action])throw new ParserError(message("unknownOperatorAction",{action:r.action}));return this.operators[r.operator]=r,refreshOperatorSymbols(),this}setPrecision(e){Rational.set({precision:e})}tokenize(e,t){t={pure:!1,keepWhiteSpace:!1,...t};let n=String(e)+"\0";t.keepWhiteSpace||(n=n.replace(/\s+/g," ").trim());const i=Object.keys(this.operators).sort(),r=i.filter(e=>this.operators[e].deferLHSResolution).sort((e,t)=>t.length-e.length);let o=0;const a=new Scope("top",0);let l=a;const u={tokenType:Token.UNDEFINED,chars:[],inputString:n,last:function(){return this.chars[this.chars.length-1]},next:function(e){return this.inputString.charAt(e+1)},is(e){return this.tokenType===e},prev:function(e){return this.inputString.charAt(e-1)},scientificNumber:!1};for(;o<n.length;o++){const e=n.charAt(o),a=Token.getCharType(e,o,u);if(a===Token.CHARACTER&&"\0"!==e)throw new UnexpectedTokenError(message("unsupportedCharacter",{character:e,position:String(o)}));if(u.is(Token.BRACKET)){const e=u.last();if(void 0===e)throw new ParserError(message("parserBracketTokenMissingCharacter"));const i=s[e];if(i.isOpen){const e=l[l.length-1];e&&e.type===Token.VARIABLE&&(e.value in wt||e.value===ue)&&(e.type=Token.FUNCTION);let n=!1;if(e&&e.type!==Token.FUNCTION&&e.type!==Token.OPERATOR)if("square"===i.type)n=!0;else{if(!Ge.ALLOW_IMPLICIT_MULTIPLICATION)throw new UnexpectedTokenError(message("expectedOperatorOrFunction",{value:e.value}));"parenthesis"===i.type&&e.type===Token.VARIABLE&&(n=!0),t.pure||l.push(new Token("*",Token.OPERATOR,-1))}l=l.addScope(i.type,o),n&&(l.implicitMultiply=!0)}else{const e=l.type===i.type;if(e&&"parenthesis"===i.type&&l.parent){const e=n.slice(o).trimStart();if(r.find(t=>e.startsWith(t))){const e=l.parent;let t=e.length-2,n=e[t];Token.isToken(n)&&n.type===Token.OPERATOR&&"*"===n.value&&-1===n.position&&(e.splice(t,1),n=e[--t]),!Token.isToken(n)||n.type!==Token.VARIABLE&&n.type!==Token.FUNCTION||(n.type=Token.FUNCTION,l.deferLHSResolution=!0)}}if(l=l.upperScope(),void 0===l||!e)throw new UnexpectedTokenError(message("missingOpeningBracket",{bracket:String(u.last()),position:String(o)}))}u.chars.pop()}if(u.tokenType!==Token.UNDEFINED&&u.tokenType!==a){let n=u.chars.join("");const s=re[n];s&&(n=s);const r=o-u.chars.length;if(i.includes(n)&&u.tokenType!==Token.PREFIX)u.tokenType=Token.OPERATOR;else if(u.is(Token.OPERATOR)&&u.chars.length>1){let e=u.chars[0];for(let t=1;t<u.chars.length+1;t++){const i=e+u.chars[t];i in this.operators?e=i:(l.push(new Token(e,Token.OPERATOR,r+t-e.length)),e=u.chars[t],n="")}u.chars=[],u.scientificNumber=!1}const a=" "===n;if(a&&t.keepWhiteSpace)l.push(new Token(n,Token.SPACE,r));else if(""!==n&&!a){u.scientificNumber&&(n=scientificToDecimal(n),u.scientificNumber=!1);const e=l[l.length-1],i=Token.isToken(e)&&e.type===Token.OPERATOR?this.operators[e.value]:void 0;if(e&&(u.is(Token.VARIABLE)&&e.type!==Token.OPERATOR&&e.type!==Token.PREFIX||(u.is(Token.VARIABLE)||u.is(Token.NUMBER))&&i?.isPostfix)){if(!Ge.ALLOW_IMPLICIT_MULTIPLICATION)throw new UnexpectedTokenError(message("expectedOperatorOrFunction",{value:e.value}));t.pure||l.push(new Token("*",Token.OPERATOR,-1))}Ge.USE_SINGLE_LETTER_VARIABLES&&!(n in wt)?l.push(...n.split("").map(e=>new Token(e,u.tokenType,-1)).flatMap(e=>[new Token("*",Token.OPERATOR,-1),e]).slice(1)):l.push(new Token(n,u.tokenType,r))}u.chars=[e]}else u.chars.push(e);u.tokenType=a}const c=a[a.length-1];if(Scope.isScope(c)&&c.isOpen)throw new UnexpectedTokenError(message("missingClosingBracket",{bracket:n.charAt(c.column-1),position:String(c.column)}));return a}toRPN(e){const t=new Scope(e.type,e.depth),n=[],peek=()=>n[n.length-1],peekOperator=()=>{const e=peek();if(e)return e.resolvedOperator??this.operators[e.value]};for(let i=0;i<e.length;i++){let r=e[i];if(Scope.isScope(r)){const e=t[t.length-1];if(Token.isToken(e)&&e.type===Token.FUNCTION&&wt[e.value]?.deferArguments)t.push(r);else{const e=this.toRPN(r);e.implicitMultiply=r.implicitMultiply,e.deferLHSResolution=r.deferLHSResolution,e.deferRHSResolution=r.deferRHSResolution,t.push(e)}}else{const o=e[i+1],a=e[i+2];switch(r.type===Token.VARIABLE&&Token.isToken(o)&&o.type===Token.OPERATOR&&"*"===o.value&&-1===o.position&&Scope.isScope(a)&&"parenthesis"===a.type&&a.implicitMultiply&&r.value in wt&&(r=new Token(r.value,Token.FUNCTION,r.position),i++),r.type){case Token.OPERATOR:{let s=r.resolvedOperator??this.operators[r.value];if(s.postfixVariant){let t=i+1,n=e[t];for(;Token.isToken(n)&&(n.type===Token.SPACE||n.type===Token.UNDEFINED);)n=e[++t];(void 0===n||Token.isToken(n)&&(n.type===Token.OPERATOR||n.type===Token.PREFIX))&&(s=s.postfixVariant,r.resolvedOperator=s)}let o=peekOperator();for(let t=i+1;t<e.length;t++){const n=e[t];if(!n||n.type!==Token.OPERATOR||s.isPostfix)break;if(!this.operators[n.value].isPrefix)throw new ParserError(message("prefixOperatorExpected",{operator:n.value}));n.type=Token.PREFIX}const a=t[t.length-1];if(s.isPrefix&&(0===t.length||t.length>0&&a&&a.type===Token.PREFIX)){r.type=Token.PREFIX,n.push(r);break}const greaterPrecedence=()=>{let e=!1;if(o){e=shouldPopOperator(o,s);const t=n[n.length-1];!e&&t&&t.type===Token.PREFIX&&s.leftAssoc&&(e=!0)}return e};for(;greaterPrecedence();)t.push(n.pop()),o=peekOperator();if(s.deferLHSResolution){const e=t[t.length-1];if(Token.isToken(e)&&e.type===Token.VARIABLE){const n=new Scope("",e.position);n.deferLHSResolution=!0,n.push(t.pop()),t.push(n)}}if(s.deferRHSResolution){const n=new Scope("",r.position);let o=i+1;for(;o<e.length;o++){const t=e[o];if(Token.isToken(t)&&t.type===Token.OPERATOR){const e=t.resolvedOperator??this.operators[t.value];if(e&&!shouldPopOperator(e,s))break}n.push(t)}if(0===n.length)throw new ParserError(message("malformedExpression"));const a=this.toRPN(n);a.deferRHSResolution=!0,t.push(a),i=o-1}n.push(r);break}case Token.BRACKET:if(s[String(r.value)].isOpen)n.push(r);else{t.push(r);const e=peek();for(;e;){const e=n.pop();if(t.push(e),e.type===Token.BRACKET&&s[r.value].matches===e.value)break}}break;case Token.PREFIX:n.push(r);break;case Token.UNDEFINED:case Token.SPACE:break;default:t.push(r)}}}for(;n.length;){const e=n.pop();t.push(e)}return t}}const Bt=new ExpressionParser;function helpers_(e){return Expression_Expression.create(e)}function subst(e,t,n,i=!1){let s;if(e=Expression_Expression.create(e),t=Expression_Expression.create(t),n=Expression_Expression.create(n),e.isNUM()&&!i)s=e;else if(e.eq(t))s=n;else if(t.isVAR()&&t.getPower().isOne()&&t.getMultiplier().isOne()&&e.isVAR()&&e.value===t.value){const r=subst(e.getPower(),t,n,i),o=e.getMultiplier();s=r.isNUM()&&r.getMultiplier().isNegative()?one().div(n.copy().pow(r.abs())):n.copy().pow(r),o.isOne()||(s=s.times(o))}else if(e.isProduct())s=function prodSubst(e,t,n,i){let s;if(e.isProduct())if(t.isProduct()){const r=e.getMultiplier().div(t.getMultiplier());if(r.isInteger()||Ge.ALLOW_RAT_SUBS){let o,a=e.elementsArray();const l=t.elementsArray();let u=!1,c=[],p=l.length;for(;l.length>0;){c=[],u=!1;const e=l[l.length-1];l.pop();for(const s of a)if(s.value===e.value){const t=s.getPower().div(e.getPower());if(void 0===o&&(o=t),!(t.isInteger()&&t.eq(o)||s.isEXP()))break;u=!0,p--}else c.push(subst(s,t,n,i));if(!u)break;a=c}0!==p||void 0===o?s=product(...e.elementsArray(!0).map(e=>subst(e,t,n,i))).pow(e.getPower()):(c.push(n.pow(o)),s=product(...c),s.multiplier=s.getMultiplier().times(r)),s=s.pow(subst(e.getPower(),t,n,i))}else s=e.copy()}else s=product(...e.elementsArray(!0).map(e=>subst(e,t,n,i))).pow(e.getPower());return s||e}(e,t,n,i);else if(e.isSum())s=function sumSubst(e,t,n,i){let s;if(!e.isSum())return e;const r=e.getPower(),o=e.getMultiplier();if(t.isSum()){const a=e.elementsArray().slice(),l=t.isSum()&&t.isLinear()?t.elementsArray():[t.toUnitMultiplier()],u=[];let c;for(const s of l){const l=a.findIndex(e=>e.value===s.value&&e.getPower().eq(s.getPower()));if(-1===l)return utils_sum(...e.elementsArray().map(e=>subst(e,t,n,i))).pow(r).times(o);const p=a[l];a.splice(l,1),u.push(p);const m=p.div(s);if(c){if(!m.eq(c))return utils_sum(...e.elementsArray().map(e=>subst(e,t,n,i))).pow(r).times(o)}else c=m}const p=n.times(c||one()),m=a.map(e=>subst(e,t,n,i));m.push(p),s=utils_sum(...m).pow(r).times(o)}else s=utils_sum(...e.elementsArray().map(e=>subst(e,t,n,i))).pow(r).times(o);return s||e}(e,t,n,i);else if(e.isFunction())e.value===t.value?s=n.copy():(s=Expression_Expression.Function(e.name),s.args=e.getArguments().map(e=>subst(e,t,n,i)),s.updateValue()),s=s.pow(e.getPower()).times(e.getMultiplier());else if(e.isEXP()){const r=subst(e.getBase(),t,n,!0),o=subst(e.getPower(),t,n,i);s=r.pow(o).times(e.getMultiplier())}return s||e}function getU(e,t){const n=(e=Expression_Expression.create(e)).variables();t??={};let i,s=0;do{i=`u${s}`,s++}while(n.includes(i)||i in t);return i}function uSub(e,t,n){n??={},e=Expression_Expression.create(e),t=Expression_Expression.create(t);const i=getU(e,n),s=subst(e,t,helpers_(i));return s.eq(e)||(n[i]=t),[s,n]}function rewriteRadicals(e,t,n,i){let s=e;if((e.isVAR()||e.isEXP())&&e.value===t){const t=e.getMultiplier(),r=e.getPower();if(r.isNUM()){const e=r.getMultiplier(),o=i*e.numerator,a=e.denominator<0n?-e.denominator:e.denominator;if(o%a!==0n)s=Expression_Expression.fromRational(t).times(n.pow(`${o}/${a}`));else{const e=o/a;s=Expression_Expression.fromRational(t).times(n.pow(e.toString()))}}else s=Expression_Expression.fromRational(t).times(n.pow(r.times(i.toString())))}else if(e.isEXP()){const r=rewriteRadicals(e.getBase(),t,n,i),o=rewriteRadicals(e.getPower(),t,n,i);s=Expression_Expression.toEXP(r,o),e.getMultiplier().isOne()||(s=s.times(Expression_Expression.fromRational(e.getMultiplier())))}else if(e.isSum()){const r=e.getMultiplier(),o=e.getPower();s=zero();for(const r of e.elementsArray())s=s.plus(rewriteRadicals(r,t,n,i));o.isOne()||(s=s.pow(o)),r.isOne()||(s=s.times(Expression_Expression.fromRational(r)))}else if(e.isProduct()){const r=e.getMultiplier(),o=e.getPower();s=one();for(const r of e.elementsArray())s=s.times(rewriteRadicals(r,t,n,i));o.isOne()||(s=s.pow(o)),r.isOne()||(s=s.times(Expression_Expression.fromRational(r)))}else if(e.isFunction()){const r=e.getArguments();if(r.length>0){const o=r.map(e=>rewriteRadicals(e,t,n,i));s=Expression_Expression.toFunction(e.name,o),s.multiplier=e.getMultiplier().copy(),s=Expression_Expression.setPower(s,e.getPower())}}return s}function uUnSub(e,t){for(const n in t){const i=t[n];e=subst(e,helpers_(n),i)}return e}function uSubConstants(e,t){t??={};const n=new Set;!function collectConstants(e){if(e.isVAR()&&(e.isConstant()||e.isI())&&n.add(e.value),e.args)for(const t of e.args)collectConstants(t);if(e.elements)for(const t of Object.values(e.elements))collectConstants(t);e.isEXP()&&(collectConstants(e.getBase()),collectConstants(e.getPower()))}(e);for(const i of n)[e,t]=uSub(e,helpers_(i),t);return[e,t]}const{NUM:zt,FUN:$t,VAR:Zt,INF:Wt,GRP:Xt,EXP:jt,PRD:Gt,SUM:Ht}=ee;function formatMultiplierString(e,t){let n="";const i=e.getMultiplier(),s=i.text(t),r=void 0!==t?.scientific;if(!(r?i.isOne():"1"===s||"1.0"===s)){n=s,i.isInteger()||i.asDecimal||t?.decimal||t?.scientific||(n=`(${n})`);(r?i.isMinusOne():"-1"===s||"-1.0"===s)&&!t?.wrapPow?n="-":n+="*"}return n}function formatDefaultExpressionString(e,t,n){const i=e.type===Gt?"*":"+",s=Object.values(e.getElements());return Ge.SORT_TERMS&&s.sort(n),s.map(i=>{let s=toDefaultText(i,t,n);return e.type===Gt&&i.isSum()&&(s=`(${s})`),s}).join(i).replace("+-","-")}function toDefaultText(e,t,n){let i="";if(e.type===zt)i=e.getMultiplier().text();else{const s=formatMultiplierString(e),r=function formatDefaultPowerString(e,t,n){let i="";const s=e.getPower(),r=toDefaultText(s,t,n);if("1"!==r&&"1.0"!==r){if(i=r,"RAT"!==s.dataType||s.isInteger()){let t=!1;s.type===Ht||s.type===Gt?t=!0:e.type===jt&&(s.isNUM()&&!s.isInteger()?t=!0:s.isNUM()||s.getMultiplier().isOne()||(t=!0)),(t||i.includes("/"))&&(i=`(${i})`)}else i=`(${i})`;i=`${t}${i}`}return i}(e,t,n);let o;switch(e.type){case Zt:case Wt:i=`${s}${e.value}`;break;case $t:if(e.name===ue){const r=e.getArguments(),o=r[0],a=r.slice(1);i=`${s}${toDefaultText(o,t,n)}[${a.map(e=>toDefaultText(e,t,n)).join(", ")}]`}else i=`${s}${e.name||""}(${e.getArguments().map(e=>toDefaultText(e,t,n)).join(", ")})`;break;case Xt:case Ht:o=formatDefaultExpressionString(e,t,n),o=s||r?`(${o})`:o,i=`${s}${o}`;break;case Gt:o=formatDefaultExpressionString(e,t,n),o=r?`(${o})`:o,i=`${s}${o}`;break;case jt:{const r=e.getBase(),a=r.getPower();o=toDefaultText(r,t,n),(r.elements||o.startsWith("-")||o.includes("/")||!a.isOne()&&!a.isZero())&&(o=`(${o})`),i=`${s}${o}`;break}}i+=r}return i.replace(/\+-/g,"-")}function toText(e,t,n,i,s){t={precision:e.precision,scientific:e.scientific,...t};let r="";if(e.type===zt)r=e.getMultiplier().text(t);else{const o=n&&!e.elements?"":formatMultiplierString(e,t),a=function formatPowerString(e,t,n){let i="";const s=e.getPower(),r={...t,exactScientific:!0},o=s.text(r);if("1"!==o&&"1.0"!==o){if(i=o,"RAT"!==s.dataType||s.isInteger()){const t=e.getPower();let n=!1;t.type===Ht||t.type===Gt?n=!0:e.type===jt&&(t.isNUM()&&!t.isInteger()?n=!0:t.isNUM()||t.getMultiplier().isOne()||(n=!0)),(n||i.includes("/"))&&(i=`(${i})`)}else i=`(${i})`;t?.wrapPow&&!i.startsWith("(")&&(i=`(${i})`),i=`${n}${i}`}return i}(e,t,i);let l;switch(e.type){case Zt:case Wt:r=t?.wrapPow&&a?`${o}(${e.value})`:`${o}${e.value}`;break;case $t:if(e.name===ue){const n=e.getArguments();if(t?.internalAccessor)r=`${o}${ue}(${n.map(e=>e.text(t)).join(", ")})`;else{const e=n[0],i=n.slice(1);r=`${o}${e.text(t)}[${i.map(e=>e.text(t)).join(", ")}]`}}else r=`${o}${e.name||""}(${e.getArguments().map(e=>e.text(t)).join(", ")})`;break;case Xt:case Ht:l=formatExpressionString(e,t,s),l=o||a?`(${l})`:l,r=`${o}${l}`;break;case Gt:l=formatExpressionString(e,t,s),l=a?`(${l})`:l,r=`${o}${l}`;break;case jt:{const n=e.getBase(),a=n.getPower();l=toText(n,t,void 0,i,s),(t?.wrapPow||n.elements||l.startsWith("-")||l.includes("/")||!a.isOne()&&!a.isZero())&&(l=`(${l})`),r=`${o}${l}`;break}}r+=a}return r.replace(/\+-/g,"-")}function formatExpressionString(e,t,n){const i=e.type===Gt?"*":"+",s=Object.values(e.getElements());return(Ge.SORT_TERMS||t?.sort)&&s.sort(n),s.map(n=>{let i=n.text(t);return e.type===Gt&&n.isSum()&&(i=`(${i})`),i}).join(i).replace("+-","-")}function collect(e,t,n,i){if(i??=[],t(e,i)&&n(e,i),e.args)for(const s of e.args)collect(s,t,n,i);if(e.elements)for(const s in e.elements)collect(e.elements[s],t,n,i);return e.isEXP()&&(collect(e.getBase(),t,n,i),collect(e.getPower(),t,n,i)),i}function hasFunction(e,t,n=!1){if(e.isFunction()&&e.name===t)return!0;if(n&&e.args)for(const i of e.args)if(hasFunction(i,t,n))return!0;if(e.elements)for(const i in e.elements)if(hasFunction(e.elements[i],t,n))return!0;if(n&&e.isEXP()){if(hasFunction(e.getBase(),t,n))return!0;if(hasFunction(e.getPower(),t,n))return!0}return!1}function hasVariable(e,t){if(e.isVAR()&&e.value===t)return!0;if(e.args)for(const n of e.args)if(hasVariable(n,t))return!0;if(e.elements){const n=e.getElements();for(const e in n)if(hasVariable(n[e],t))return!0}if(e.isEXP()){if(hasVariable(e.getBase(),t))return!0;if(hasVariable(e.getPower(),t))return!0}return!1}function forEveryElement(e,t,n=!1){if(e.isNUM()||e.isVAR())return e;const i=e.getMultiplier();let s=e.getPower();e.isEXP()&&(s=forEveryElement(s,t,!0));const r=t(e.toLinearAndUnitMultiplier());let o;if(r.isFunction())r.args=r.getArguments().map(e=>n?t(e):forEveryElement(e,t,!0)),o=r;else if(r.isProduct()){o=one();for(let e of r.elementsArray())e=t(e),o=o.times(forEveryElement(e,t,!0))}else if(r.isSum()){o=zero();for(let e of r.elementsArray())e=t(e),o=o.plus(forEveryElement(e,t,!0))}else o=t(r);return o.pow(s).times(i)}const{NUM:Kt,VAR:Qt,EXP:Jt,FUN:Yt,GRP:en,PRD:tn,SUM:nn,INF:sn}=ee;class Expression_Expression{static DISTRIBUTE_MULTIPLIER=!0;static imaginary="i";static LOG="log";static LOG10="log_10";static numberHash="#";static POW_OPR="^";static RESERVED=["e"].concat(oe).concat(ae);static sortFunction=(e,t)=>e.isI()?1:e.type===t.type?e.value===t.value?Number(t.getPower())-Number(e.getPower()):e.value>t.value?1:t.value>e.value?-1:0:e.type-t.type;static TYPES=ee;_keyValueCache;args;base;dataType="EXP";deferred=!1;elements=void 0;isEnumerable=!1;multiplier;name;power;precision;scientific;type;value;constructor(e,t){return e=Expression_Expression.hook(e),t&&"string"==typeof e?(this.value=e,this):Expression_Expression.isExpression(e)?void function copyOver(e,t,n){if(n={omitMultiplier:!1,omitPower:!1,...n},e.multiplier&&!n.omitMultiplier&&(t.multiplier=e.multiplier.copy()),void 0!==e.name&&(t.name=e.name),e.power&&!n.omitPower&&(t.power=cloneExpressionTree(e.power)),e.args){t.args=[];for(const n of e.args)t.args.push(cloneExpressionTree(n))}if(e.base&&(t.base=cloneExpressionTree(e.base)),e.elements){t.elements={};for(const n in e.elements)t.elements[n]=cloneExpressionTree(e.elements[n])}return t.type=e.type,t.value=e.value,t.precision=e.precision,t.scientific=e.scientific,t.deferred=e.deferred,t}(e,this):Expression_Expression.create(e)}static create(e,t,n){if(Expression_Expression.isExpression(e)&&!t)return n?e.copy():e;if(Rational.isRational(e))return Expression_Expression.fromRational(e);if(isNerdamerNativeType(e,"EQN"))return e.toLHS().LHS;const i=Bt.parse(String(e),t);if(!Expression_Expression.isExpression(i))throw new UnexpectedDataType(message("expressionExpected",{type:Y[i.dataType]}));return i}static E(e){return Ge.EVALUATE||e?Expression_Expression.fromRational(Rational.E):Expression_Expression.Variable("e")}static fromRational(e){const t=1n===e.denominator?e.numerator.toString():`${e.numerator}/${e.denominator}`,n=Expression_Expression.Number(t);return n.getMultiplier().asDecimal=e.asDecimal,n}static Function(e){const t=Expression_Expression.Type(e,Yt);return t.name=e,t}static getValue(e,t,n){return e.map(e=>{let i=e[t]();return e.type!==nn&&e.type!==en||n!==tn||(i=`(${i})`),i}).sort().join(n===nn||n===en?"+":"*").replace("+-","-")}static hook(e){return e}static Img(){return Expression_Expression.Variable(Expression_Expression.imaginary)}static Inf(){return Expression_Expression.Type(ae[0],sn)}static isExpression(e){return isNerdamerNativeType(e,"EXP")}static isExpressionArray(e){if(!Array.isArray(e))return!1;for(let t=0;t<e.length;t++)if(!Expression_Expression.isExpression(e[t]))return!1;return!0}static N(){return Expression_Expression.Variable("_n")}static NegInf(){return Expression_Expression.Inf().neg()}static Number(e){return Expression_Expression.Type(String(e),Kt)}static Pi(e){return Ge.EVALUATE||e?Expression_Expression.fromRational(Rational.PI):Expression_Expression.Variable(oe[0])}static setPower(e,t){return e.power=t,e}static symbols(...e){return e.map(e=>Expression_Expression.create(e))}static toAccessor(e,t){return Expression_Expression.toFunction(ue,[e,...t])}static toEXP(e,t,n=!1){let i;return e=Expression_Expression.create(e),t=Expression_Expression.create(t),e.isOne()?i=Expression_Expression.create(e):(n&&delete e.power,i=new Expression_Expression(e.idString(),!0),i.base=Expression_Expression.create(e),i.power=t,i.type=Jt),i}static toFunction(e,t){const n=Expression_Expression.Function(e);return n.args=t.filter(e=>void 0!==e).map(e=>Expression_Expression.create(e)),n.name=e,n.updateValue(),n}static Type(e,t){const n=new Expression_Expression(e,!0);return n.type=t,n}static Variable(e){return Expression_Expression.Type(e,Qt)}abs(){return math_abs(this)}add(e){return this.plus(e)}buildFunction(e){return build(this,e)}coeffs(...e){return coeffs(this,e)}copy(){return cloneExpressionTree(this)}denominator(){return this.getDenominator()}distributeMultiplier(){const e=this.copy();if(this.isSum()&&!this.getMultiplier().isOne()&&this.isLinear()){const t=e.getMultiplier();e.multiplier=void 0;const n=e.getElements();for(const e in n){const i=n[e];i.multiplier=i.getMultiplier().times(t),i.isSum()&&(n[e]=i.distributeMultiplier())}e.updateValue()}return e}div(e){return divide_divide(this,Expression_Expression.create(e))}divide(e){return this.div(e)}each(e){if(this.elements){const t=this.getElements();for(const n in t)e(t[n],n)}else e(this.toUnitMultiplier(),this.value);return this}elementsArray(e){const t=[];if(this.isProduct()||this.isSum()){const e=this.getElements();for(const n in e){const i=e[n];if(i.isSum()&&this.isSum()&&i.isLinear()){const e=i.getElements();for(const n in e)t.push(e[n])}else t.push(i)}}else t.push(this.toUnitMultiplier());return e&&this.isProduct()&&t.push(Expression_Expression.fromRational(this.getMultiplier())),t.sort(Expression_Expression.sortFunction)}eq(e){return equal(this,e=Expression_Expression.create(e))}evaluate(e){let t;if(void 0!==this.scientific){const e=this.copy();delete e.scientific,t=e.hasFunction(ue,!0)?toText(e,{internalAccessor:!0},void 0,Expression_Expression.POW_OPR,Expression_Expression.sortFunction):e.text()}else t=this.hasFunction(ue,!0)?toText(this,{internalAccessor:!0},void 0,Expression_Expression.POW_OPR,Expression_Expression.sortFunction):this.text();const n=Bt.evaluate(t,e),i=Expression_Expression.create(n);return void 0!==this.scientific&&(i.scientific=this.scientific),i}expand(){return expand(this)}forEveryElement(e){return forEveryElement(this,e)}functions(e,t){return function functions(e,t,n){return collect(e,(e,t)=>e.isFunction()&&!t.includes(!0===n?e.value:e.name),(e,t)=>{!0===n?t.push(e.value):e.isFunction()&&t.push(e.name)},t)}(this,e,t)}getArguments(){return this.args||(this.args=[]),this.args}getBase(){let e;return this.isEXP()?e=this.base:(e=this.copy(),delete e.multiplier,delete e.power),e}getDenominator(){return getDenominator(this)}getElements(){return this.elements?this.elements:{}}getMultiplier(e){if(void 0===this.multiplier){const e=this.type===Kt?this.value:"1";this.multiplier=Rational.create(e)}return e?Expression_Expression.create(this.multiplier):this.multiplier}getNumerator(){return getNumerator(this)}getPower(){return this.power||(this.isNUM()?this.power=Expression_Expression.Number("0"):this.power=Expression_Expression.Number("1")),this.power}getVariable(e){return function getVariable(e,t){if(e.value===t)return e;if(e.isProduct()){const n=e.getElements();for(const e in n)if(n[e].value===t)return n[e]}return zero()}(this,e)}gt(e){return gt(this,e=Expression_Expression.create(e))}gte(e){return function gte(e,t){if(e=Expression_Expression.create(e),t=Expression_Expression.create(t),e.isComplex()||t.isComplex())throw new UnsupportedOperationError(message("unsupportedOperation"));const n=e.isPlainVariable()&&t.isPlainVariable()&&e.value===t.value,i=getAssumptionFor(e),s=getAssumptionFor(t);let r,o;if(n)o=!0;else if(i&&s?r=i.gte(s):i?r=i.gte(t):s&&(r=s.lte(e)),void 0!==r)o=r;else{const n=hasAssumptions()?compareAffineExpressions(e,t,"gte"):void 0;o=void 0===n?gt(e,t)||equal(e,t):n}return o}(this,e=Expression_Expression.create(e))}hasDecimal(){let e=this.getMultiplier().asDecimal;return!e&&this.power&&(e=this.power.hasDecimal()),!e&&this.base&&(e=this.base.hasDecimal()),!e&&this.args&&(e=this.args.some(e=>e.hasDecimal())),!e&&this.elements&&(e=Object.values(this.elements).some(e=>e.hasDecimal())),e}hasFunction(e,t=!1){return hasFunction(this,e,t)}hasRadical(e){const t=this.getPower(),n=t.getMultiplier(),i=t.isNUM()&&1n!==n.denominator;return e?i&&n.isNegative():i}hasVariable(e){return hasVariable(this,e)}i(){return this.times(Expression_Expression.Img())}idString(){return this.text(void 0,!0)}imagPart(){return imagPart(this)}invert(){let e;return this.isComplex()?e=one().div(this):(e=this.copy(),e.power=e.getPower().neg(),e.multiplier=e.getMultiplier().invert()),e.hasRadical()?rationalizeRadical(e):e}isComplex(){let e=!1;if(this.isFunction(ue))e=!1;else if(!this.isComplexComponentFunction())if(this.isVAR()&&this.isI())e=!0;else if(this.isFunction()){for(const t of this.getArguments())if(t.isComplex()){e=!0;break}}else if(this.isEXP())e=this.getBase().isComplex()||this.getPower().isComplex();else if(this.elements)for(const t of Object.values(this.getElements()))if(t.isComplex()){e=!0;break}return e}isComplexComponentFunction(){return this.isFunction([ye,he])}isConstant(){if(this.isSum()||this.isProduct()){const e=this.getElements();for(const t in e)if(!e[t].isConstant())return!1;return!0}return this.isNUM()||this.value in le&&this.isVAR()||this.isEXP()&&this.getBase().isConstant()&&this.getPower().isConstant()}isE(){return"e"===this.value}isEven(){return this.isNUM()&&this.getMultiplier().isEven()}isEXP(){return this.type===Jt}isFunction(e){let t;return t=void 0===e?this.type===Yt:"string"==typeof e?e===this.name:e.includes(String(this.name)),t}isHalf(){if(this.isNUM()){const e=this.getMultiplier();return 1n===e.numerator&&2n===e.denominator}return!1}isI(){return this.value===Expression_Expression.imaginary}isImaginary(){return this.evaluate().isComplex()}isInf(){return this.type===sn}isInteger(){return!!this.isOne()||this.type===Kt&&this.getMultiplier().isInteger()}isLinear(){return this.getPower().isOne()}isMinusOne(){return!!this.isNUM()&&(void 0===this.multiplier&&-1===Number(this.value)||this.getMultiplier().isMinusOne())}isNearlyZero(e=8){const t=new q(10).pow(-q.precision+e),n=this.realPart(),i=this.imagPart();return n.abs().lte(t)&&i.abs().lte(t)}isNegative(){return this.lt(zero())}isNegInf(){return this.isInf()&&this.getMultiplier().lt("0")}isNUM(){return this.type===Kt}isNumber(){return this.isNUM()}isOdd(){return this.isInteger()&&!this.isEven()}isOne(){if(this.isNUM()){const e=this.getMultiplier();return 1n===e.numerator&&1n===e.denominator}return!1}isPi(){return oe.includes(this.value)}isPlainVariable(){return this.isVAR()&&this.getMultiplier().isOne()&&this.getPower().isOne()}isPolynomialLike(){return isPolynomialLike(this)}isPosInf(){return this.isInf()&&this.getMultiplier().gt(zero())}isProduct(){return this.type===tn}isQuarter(){if(this.isNUM()){const e=this.getMultiplier();return 1n===e.numerator&&4n===e.denominator}return!1}isSum(){return this.type===nn||this.type===en}isVAR(){return this.type===Qt}isZero(){return this.getMultiplier().isZero()}keyValue(e=!1,t=!1){const n=!(e||t||this.type!==nn&&this.type!==tn);if(n&&void 0!==this._keyValueCache)return this._keyValueCache;let i="";if(t)i=this.getPower().text();else switch(this.type){case Kt:i=e?this.value:Expression_Expression.numberHash;break;case Qt:case Yt:case Jt:case sn:i=e?this.idString():this.value;break;case en:i=e?this.text():Object.values(this.getElements())[0].keyValue();break;case nn:case tn:i=Expression_Expression.getValue(Object.values(this.getElements()),"text",this.type)}if(!i)throw new Error(message("expressionKeyValueUnsupported",{type:String(this.type)}));return n&&(this._keyValueCache=i),i}lt(e){return lt(this,e=Expression_Expression.create(e))}lte(e){return function lte(e,t){if(e=Expression_Expression.create(e),t=Expression_Expression.create(t),e.isComplex()||t.isComplex())throw new UnsupportedOperationError(message("unsupportedOperation"));const n=e.isPlainVariable()&&t.isPlainVariable()&&e.value===t.value,i=getAssumptionFor(e),s=getAssumptionFor(t);let r,o;if(n)o=!0;else if(i&&s?r=i.lte(s):i?r=i.lte(t):s&&(r=s.gte(e)),void 0!==r)o=r;else{const n=hasAssumptions()?compareAffineExpressions(e,t,"lte"):void 0;o=void 0===n?lt(e,t)||equal(e,t):n}return o}(this,e=Expression_Expression.create(e))}minus(e){return subtract(this,Expression_Expression.create(e))}mod(e){return math_mod(this,Expression_Expression.create(e))}multiply(e){return this.times(e)}neg(){const e=this.copy();return e.multiplier=e.getMultiplier().neg(),e}numerator(){return this.getNumerator()}parseValue(){return this.toLinearAndUnitMultiplier()}plus(e){return add_add(this,Expression_Expression.create(e))}pow(e){return power(this,Expression_Expression.create(e))}realPart(){return realPart(this)}sign(){return this.type===Jt?this.getBase().sign()*this.getMultiplier().sign():this.getMultiplier().sign()}signFree(){let e;if(this.isComplex())e=this.abs();else{e=this.copy();const t=e.getMultiplier();e.value.startsWith("-")&&(e.value=e.value.substring(1)),t.lt("0")&&(e.multiplier=t.neg())}return e}sptext(e,t){const n=Expression_Expression.POW_OPR;Expression_Expression.POW_OPR="**";const i=toText(this,e,t,Expression_Expression.POW_OPR,Expression_Expression.sortFunction);return Expression_Expression.POW_OPR=n,i}sq(){return this.pow(two())}strictEqual(e){return((e=Expression_Expression.create(e)).isFunction()&&this.isFunction()?e.name===this.name:e.type===this.type)&&equal(this,e)}sub(e,t){return this.subst(e,t)}subst(e,t){return subst(this,e=Expression_Expression.create(e),t=Expression_Expression.create(t))}subtract(e){return this.minus(e)}text(e,t){return void 0===e&&void 0===t&&void 0===this.precision&&void 0===this.scientific?toDefaultText(this,Expression_Expression.POW_OPR,Expression_Expression.sortFunction):toText(this,e,t,Expression_Expression.POW_OPR,Expression_Expression.sortFunction)}times(e){return multiply(this,Expression_Expression.create(e))}toDecimal(e){const t={decimal:!0};return void 0!==e&&(t.precision=e),this.text(t)}toLinearAndUnitMultiplier(){let e=this.getBase();return this.isEXP()&&(e=e.copy()),e}toString(e){return this.text(e)}totalPower(){if(!this.isProduct())return this.getPower();let e=Expression_Expression.Number("0");const t=this.getElements();for(const n in t)e=e.plus(t[n].getPower());return e}toUnitMultiplier(){let e;return this.isNUM()?e=one():(e=this.copy(),delete e.multiplier),e}updateValue(e){if(this._keyValueCache=void 0,this.isFunction())this.value=`${this.name}(${this.getArguments().map(e=>e.text()).join(", ")})`;else if(this.isProduct()||this.isSum()){const t=e??this.elementsArray();this.value=Expression_Expression.getValue(t,"text",this.type),!e||this.type!==nn&&this.type!==tn||(this._keyValueCache=this.value)}return this}valueOf(){let e;return e=this.isNUM()?this.getMultiplier().valueOf():this.text({decimal:!0}),e}variables(e){return function variables(e,t,n){return collect(e,(e,t)=>e.isVAR()&&!e.isI()&&!t.includes(e.value)&&!n.includes(e.value),(e,t)=>{t.push(e.value)},t)}(this,e,Expression_Expression.RESERVED)}}function isExpandable(e){return e.isComplex()||!e.getMultiplier().isOne()||e.value.includes("(")||!e.isLinear()}function powerExpand(e){let t=e;if(e.isSum()&&e.getPower().isInteger()){const n=e.getPower().sign(),i=e.getPower().abs(),s=e.elementsArray().map(e=>e.text()),r=e.getMultiplier().isOne()?void 0:(n<0?e.getMultiplier().invert():e.getMultiplier()).text(),o=function powerExpandToArray(e,t){let n=function constructRow(){return e.map((t,n)=>{const i=new Array(e.length).fill(0);return i.push(1),i[n]=1,i})}();for(let i=0;i<t-1;i++){const t=[];for(let i=0;i<n.length;i++)for(let s=0;s<e.length;s++){const e=[...n[i]];e[s]++,t.push(e)}const i=new Map;for(const e of t){const t=e.slice(0,-1).join(","),n=i.get(t);n?n[n.length-1]+=e[e.length-1]:i.set(t,[...e])}n=Array.from(i.values())}return n}(s,Number(i)),a=function expandArrayToExpression(e,t,n){const i=[],s=n?`${n}*`:"";for(let n=0;n<e.length;n++){const r=e[n],o=[];for(let e=0;e<r.length-1;e++){const n=t[e],i=r[e];1===i?o.push(`(${n})`):0!==i&&o.push(`(${n})^${i}`)}let a=o.join("*");const l=r[r.length-1];1!==l&&(a=`(${l})*${a}`),i.push(s+a)}return i.join("+")}(o,s,r);t=Expression_Expression.create(a),-1===n&&(t=t.invert())}return t}function sumExpandMultiply(e,t){let n;return t.isSum()&&!e.isSum()?n=sumExpandMultiply(t,e):e.isSum()?(e.isLinear()||(e=powerExpand(e)),e.isLinear()?(n=zero(),e.each(e=>{if(isExpandable(e)&&(e=expand(e)),t.isSum()||e.isSum())n=n.plus(sumExpandMultiply(t,e));else{const i=t.times(e);n=n.plus(i)}})):n=t.isSum()&&t.isLinear()?sumExpandMultiply(t,e):e.times(t)):n=expand(e).times(expand(t)),n}function productExpand(e){let t;t=Expression_Expression.fromRational(e.getMultiplier());const n=e.getPower(),i=n.isOne();return e.each(e=>{i||(e=e.pow(n));const s=(e=expand(e=unwrap(e))).getPower();e.isProduct()&&s.isInteger()&&!s.isOne()?e.each(e=>{t=t.times(e.pow(s))}):t=t.isSum()||e.isSum()?sumExpandMultiply(t,e):t.times(e)}),t}function unwrap(e){if(e.isFunction("")){return e.getArguments()[0].pow(e.getPower()).times(e.getMultiplier())}return e}function expand(e){let t;if(isExpandable(e=unwrap(e)))if(e.isNUM()||e.isVAR())t=e.copy();else{if(t=e.distributeMultiplier(),t.isSum()&&(t=powerExpand(t),t.isSum()&&(t=function expandTerms(e){if(!e.isLinear())return e;let t=zero();return e.each(e=>{t=t.plus(expand(e))}),t}(t))),t.isProduct()&&(t=productExpand(t)),t.isFunction()){const e=t.getArguments().map(e=>expand(e));if("fact"===t.name)t=function factorialExpand(e){const t=e.getArguments();let n=e;const i=t[0].elementsArray().sort((e,t)=>e.isNUM()?1:-1);if(2===i.length){const s=i[0],r=i[1];if(s.isVAR()&&s.isLinear()&&r.isInteger()){const t=e.getPower(),i=Number(r.getMultiplier().numerator);n=Expression_Expression.toFunction("fact",[s]);for(let e=1;e<=i;e++){const t=s.plus(e);n=n.times(t)}n=n.pow(t)}else{let e=Expression_Expression.toFunction(n.name,t);e.multiplier=n.multiplier,e=Expression_Expression.setPower(e,n.getPower()),n=e}}else{let e=Expression_Expression.toFunction(n.name,t);e.multiplier=n.multiplier,e=Expression_Expression.setPower(e,n.getPower()),n=e}return n}(t);else{let n=Expression_Expression.toFunction(t.name,e);n.multiplier=t.multiplier,n=Expression_Expression.setPower(n,t.getPower()),t=n}}if(t.isEXP()){const e=expand(t.getPower()),n=expand(t.getBase()).pow(e);n.multiplier=n.getMultiplier().times(t.getMultiplier()),t=n}}else t=e.copy();return t}class CoeffObject{coeffs={};variables;constructor(e){this.variables=e}buildTerms(){const e=[];for(const t in this.coeffs)e.push(new Term(this.coeffs[t].copy(),t,this.variables));return e}add(e,t){const n=this.coeffs[e];this.coeffs[e]=n?n.plus(t):t}each(e){for(const t in this.coeffs)e(this.coeffs[t],t);return this}getPower(e){return this.coeffs[e]}hasPower(e){return e in this.coeffs}max(){const e=Object.keys(this.coeffs).map(e=>Number(e));return Math.max(...e)}text(e=!1){const t=e?"\n":"",n=e?" ":"",i=[],s=", "+t;for(const e in this.coeffs)i.push(`${n}${e}: ${this.coeffs[e]}`);return`{ ${t}${i.join(s)} ${t}}`}toArray(e=!1){const t=this.max(),n=[];if(isNaN(t))throw new NaNError(message("cannotCreateArrayFromNaN"));for(let i=0;i<=t;i++){let t=this.coeffs[i];t||(t=zero()),n[i]=e?Number(t):t}return n}toExpression(){let e=zero();for(const t of this.buildTerms())t.isZero()||(e=e.plus(t.getExpression()));return e}toParsableString(){const e=[];for(const t of this.buildTerms())t.isZero()||e.push(t.text(this.variables));return e.join("+").replace(/\+-/g,"-")}toPolynomial(){const e=this.buildTerms(),t=e.some(e=>this.variables.some(t=>e.coeff.hasVariable(t))),n=this.toExpression();let i;return t?i=new Polynomial(n,this.variables):(i=new Polynomial(zero(),this.variables),i.terms=e.filter(e=>!e.isZero()),i.order(),i.expression=n),i}toString(){return this.text()}toVector(){return new Vector(this.toArray())}}function coeffs(e,t,n,i=!0){const s=n||new CoeffObject(t);if(e.isComplex()&&!t.includes(Expression_Expression.imaginary)){const n=coeffs(e.realPart(),t,void 0,i),r=coeffs(e.imagPart(),t,void 0,i);return n.each((e,t)=>s.add(t,e)),r.each((e,t)=>s.add(t,e.times(Expression_Expression.Img()))),s}if(e.isProduct()){let n=one(),r=Expression_Expression.fromRational(e.getMultiplier()),o=!1;for(const i of e.elementsArray())if(i.isSum()&&i.getPower().sign()<0){if(t.some(e=>i.hasVariable(e)))throw new PolynomialError(message("notAPolynomial"));n=n.times(i),o=!0}else r=r.times(i);if(o){return coeffs(r,t,void 0,i).each((e,t)=>{s.add(t,n.times(e))}),s}e=r}const r=i?expand(e):e;if(r.isSum())r.each(e=>{coeffs(e,t,s,!1)});else{const[n,i]=function separateVar(e,t){const n=t.map(e=>"string"!=typeof e?e.value:e);function isLike(e,t){return t.includes(e.value)}let i;if(e.isProduct()){const t=[Expression_Expression.fromRational(e.getMultiplier())],s=[];e.each(e=>{isLike(e,n)?s.push(e):t.push(e)}),i=[product(...t),product(...s)||one()]}else i=isLike(e,n)?[Expression_Expression.fromRational(e.getMultiplier()),e.toUnitMultiplier()]:[Expression_Expression.create(e),one()];return i}(e,t),r=t.map(e=>i.getVariable(e).getPower().text());s.add(r.join(","),n)}return s}function getDenominator(e){let t=Expression_Expression.Number(e.getMultiplier().denominator);const n=e.isProduct();if(-1===e.getPower().sign())t=t.times(e.toUnitMultiplier().invert());else if(n&&e.isLinear())for(const n of e.elementsArray())n.isProduct()?t=t.times(getDenominator(n)):n.getPower().sign()<0&&(t=t.times(n.invert()));return t}function getNumerator(e){let t=Expression_Expression.Number(e.getMultiplier().numerator);const n=e.isProduct(),i=e.getPower().sign();if(!n&&i>0||n&&i>0&&!e.isLinear())t=t.times(e.toUnitMultiplier());else if(n&&e.isLinear()){const n=e.elementsArray();for(const e of n){const n=getNumerator(e);t=t.times(n)}}return t}function isPolynomialLike(e){const t=e.getPower();if(!t.isInteger()||-1===t.sign()||e.isEXP()||e.isFunction()||e.isInf())return!1;if(e.isSum()||e.isProduct())for(const t of e.elementsArray())if(!isPolynomialLike(t))return!1;return!0}class ModularSparsePolynomial{polynomial;modulus;variableCount;constructor(e,t,n=[]){if(t<=1n)throw new RangeError(message("polyModulusGreaterThanOne"));let i;if(n instanceof SparsePolynomial){if(n.variableCount!==e)throw new RangeError(message("polyVariableCountMatch"));i=n}else i=new SparsePolynomial(e,n);this.modulus=t,this.polynomial=i.mapCoefficients(e=>bigint_mod(e,t)),this.variableCount=this.polynomial.variableCount}static constant(e,t,n){return new ModularSparsePolynomial(e,t,[{coefficient:n,exponents:new Array(e).fill(0n)}])}static interpolateVariable(e,t){if(0===t.length)throw new RangeError(message("polyRequires",{operation:"ModularSparsePolynomial interpolation",requirement:message("polyReqAtLeastOneSample")}));const n=t[0].polynomial;n.degree(e);const i=ModularSparsePolynomial.variable(n.variableCount,n.modulus,e);let s=ModularSparsePolynomial.zero(n.variableCount,n.modulus);for(let r=0;r<t.length;r++){const o=t[r];n.assertCompatible(o.polynomial);const a=o.polynomial.degree(e);if(null!==a&&0n!==a)throw new RangeError(message("polyInterpolationCannotDepend"));const l=bigint_mod(o.value,n.modulus);let u=1n,c=ModularSparsePolynomial.constant(n.variableCount,n.modulus,1n);for(let e=0;e<t.length;e++){if(r===e)continue;const s=bigint_mod(t[e].value,n.modulus);c=c.multiply(i.subtract(ModularSparsePolynomial.constant(n.variableCount,n.modulus,s))),u=bigint_mod(u*bigint_mod(l-s,n.modulus),n.modulus)}const p=invMod(u,n.modulus);if(p<0n)throw new RangeError(message("polyInterpolationInvertibleDifferences"));s=s.add(o.polynomial.multiply(c.scale(p)))}return s}static monomial(e,t,n,i){return new ModularSparsePolynomial(e,t,[{coefficient:n,exponents:i}])}static variable(e,t,n){const i=SparsePolynomial.variable(e,n);return new ModularSparsePolynomial(e,t,i)}static zero(e,t){return new ModularSparsePolynomial(e,t)}assertCompatible(e){if(this.variableCount!==e.variableCount||this.modulus!==e.modulus)throw new RangeError(message("polyRequires",{operation:"ModularSparsePolynomial operations",requirement:message("polyReqSamePolynomialRing")}))}add(e){this.assertCompatible(e);const t=this.polynomial.add(e.polynomial);return new ModularSparsePolynomial(this.variableCount,this.modulus,t)}coefficient(e){return this.polynomial.coefficient(e)}coefficientIn(e,t){if(this.polynomial.degree(e),t<0n)throw new RangeError(message("polyCoefficientExponentNonnegative"));const n=[];for(const i of this.polynomial.terms())if(i.exponents[e]===t){const t=[...i.exponents];t[e]=0n,n.push({coefficient:i.coefficient,exponents:t})}return new ModularSparsePolynomial(this.variableCount,this.modulus,n)}constantTerm(){return this.polynomial.constantTerm()}degree(e){return this.polynomial.degree(e)}derivative(e){this.polynomial.degree(e);const t=[];for(const n of this.polynomial.terms()){const i=n.exponents[e];if(0n===i)continue;const s=[...n.exponents];s[e]=i-1n,t.push({coefficient:bigint_mod(n.coefficient*i,this.modulus),exponents:s})}return new ModularSparsePolynomial(this.variableCount,this.modulus,t)}divideExact(e,t="lex"){const n=this.divideWithRemainder(e,t);return n.remainder.isZero()?n.quotient:null}divideWithRemainder(e,t="lex"){this.assertCompatible(e);const n=e.leadingTerm(t);if(null===n)throw new RangeError(message("polyCannotDivideZero"));const i=invMod(n.coefficient,this.modulus);if(i<0n)throw new RangeError(message("polyDivisorLeadingCoefficientInvertible"));let s=ModularSparsePolynomial.zero(this.variableCount,this.modulus),r=ModularSparsePolynomial.zero(this.variableCount,this.modulus),o=new ModularSparsePolynomial(this.variableCount,this.modulus,this.polynomial);for(;!o.isZero();){const a=o.leadingTerm(t);if(null===a)break;let l=!0;const u=new Array(this.variableCount);for(let e=0;e<this.variableCount;e++){if(a.exponents[e]<n.exponents[e]){l=!1;break}u[e]=a.exponents[e]-n.exponents[e]}if(l){const t=bigint_mod(a.coefficient*i,this.modulus),n=ModularSparsePolynomial.monomial(this.variableCount,this.modulus,t,u);s=s.add(n),o=o.subtract(e.multiply(n))}else{const e=ModularSparsePolynomial.monomial(this.variableCount,this.modulus,a.coefficient,a.exponents);r=r.add(e),o=o.subtract(e)}}return{quotient:s,remainder:r}}equals(e){return this.modulus===e.modulus&&this.polynomial.equals(e.polynomial)}evaluateVariable(e,t){this.polynomial.degree(e);const n=bigint_mod(t,this.modulus),i=[];for(const t of this.polynomial.terms()){const s=t.exponents[e],r=[...t.exponents];r[e]=0n,i.push({coefficient:bigint_mod(t.coefficient*powMod(n,s,this.modulus),this.modulus),exponents:r})}return new ModularSparsePolynomial(this.variableCount,this.modulus,i)}isConstant(){return this.polynomial.isConstant()}isZero(){return this.polynomial.isZero()}leadingCoefficientIn(e){const t=this.degree(e);return null===t?null:this.coefficientIn(e,t)}leadingTerm(e="lex"){return this.polynomial.leadingTerm(e)}monic(e="lex"){const t=this.leadingTerm(e);if(null===t||1n===t.coefficient)return this;const n=invMod(t.coefficient,this.modulus);if(n<0n)throw new RangeError(message("polyLeadingCoefficientInvertible"));return this.scale(n)}multiply(e){this.assertCompatible(e);const t=this.polynomial.multiply(e.polynomial);return new ModularSparsePolynomial(this.variableCount,this.modulus,t)}negate(){const e=this.polynomial.negate();return new ModularSparsePolynomial(this.variableCount,this.modulus,e)}pow(e){if(e<0n)throw new RangeError(message("polyExponentNonnegative"));let t=ModularSparsePolynomial.constant(this.variableCount,this.modulus,1n),n=e;if(0n===n)return t;if(1n==(1n&n)&&(t=t.multiply(this)),n>>=1n,0n===n)return t;let i=this.multiply(this);for(;n>0n;)1n==(1n&n)&&(t=t.multiply(i)),n>>=1n,n>0n&&(i=i.multiply(i));return t}scale(e){const t=this.polynomial.scale(bigint_mod(e,this.modulus));return new ModularSparsePolynomial(this.variableCount,this.modulus,t)}subtract(e){this.assertCompatible(e);const t=this.polynomial.subtract(e.polynomial);return new ModularSparsePolynomial(this.variableCount,this.modulus,t)}get termCount(){return this.polynomial.termCount}terms(){return this.polynomial.terms()}toSymmetricIntegerPolynomial(){const e=this.modulus/2n;return new SparsePolynomial(this.variableCount,this.terms().map(t=>({coefficient:t.coefficient>e?t.coefficient-this.modulus:t.coefficient,exponents:t.exponents})))}totalDegree(){return this.polynomial.totalDegree()}variables(){return this.polynomial.variables()}}function modularPrimitivePartInVariable(e,t){if(e.isZero())return{content:ModularSparsePolynomial.zero(e.variableCount,e.modulus),primitive:e};const n=function modularContentInVariable(e,t){if(e.degree(t),e.isZero())return ModularSparsePolynomial.zero(e.variableCount,e.modulus);const n=new Map;for(const i of e.terms()){const s=[...i.exponents];s[t]=0n;const r=s.join(","),o=new Array(e.variableCount).fill(0n);o[t]=i.exponents[t];const a=n.get(r)??[];a.push({coefficient:i.coefficient,exponents:o}),n.set(r,a)}let i=ModularSparsePolynomial.zero(e.variableCount,e.modulus);for(const s of n.values()){const n=new ModularSparsePolynomial(e.variableCount,e.modulus,s);if(i=i.isZero()?n.monic("lex"):modularGcdUnivariate(i,n,t),i.isConstant())return ModularSparsePolynomial.constant(e.variableCount,e.modulus,1n)}return i.monic("lex")}(e,t),i=e.divideExact(n);if(null===i)throw new RangeError(message("polyModularContentExactDivision"));return{content:n,primitive:i}}function modularLeadingCoefficientInVariables(e,t,n){e.degree(n);for(const n of t)e.degree(n);const i=e.terms();if(0===i.length)return null;let s=i[0];for(let e=1;e<i.length;e++){const n=i[e];for(const e of t)if(n.exponents[e]!==s.exponents[e]){n.exponents[e]>s.exponents[e]&&(s=n);break}}const r=[];for(const o of i){let i=!0;for(const e of t)if(o.exponents[e]!==s.exponents[e]){i=!1;break}if(!i)continue;const a=new Array(e.variableCount).fill(0n);a[n]=o.exponents[n],r.push({coefficient:o.coefficient,exponents:a})}return new ModularSparsePolynomial(e.variableCount,e.modulus,r)}function monomialSupport(e,t){const n=new Set;for(const i of e.terms())n.add(t.map(e=>i.exponents[e]).join(","));return n}function modularGcdUnivariate(e,t,n){if(e.variableCount!==t.variableCount||e.modulus!==t.modulus)throw new RangeError(message("polyRequires",{operation:"Modular polynomial GCD",requirement:message("polyReqSamePolynomialRing")}));e.degree(n),t.degree(n);for(const t of e.variables())if(t!==n)throw new RangeError(message("polyRequires",{operation:"Modular polynomial GCD inputs",requirement:message("polyReqUnivariatePolynomial")}));for(const e of t.variables())if(e!==n)throw new RangeError(message("polyRequires",{operation:"Modular polynomial GCD inputs",requirement:message("polyReqUnivariatePolynomial")}));let i=new ModularSparsePolynomial(e.variableCount,e.modulus,e.terms()),s=new ModularSparsePolynomial(t.variableCount,t.modulus,t.terms());for(;!s.isZero();){const e=i.divideWithRemainder(s,"lex");i=s,s=e.remainder}return i.isZero()?i:i.monic("lex")}function modularGcdRecursive(e,t,n){if(1===n.length)return modularGcdUnivariate(e,t,n[0]);if(e.isZero())return t.isZero()?t:t.monic("lex");if(t.isZero())return e.monic("lex");const i=n[n.length-1],s=n.slice(0,-1),r=modularPrimitivePartInVariable(e,i),o=modularPrimitivePartInVariable(t,i),a=modularGcdUnivariate(r.content,o.content,i),l=modularLeadingCoefficientInVariables(r.primitive,s,i),u=modularLeadingCoefficientInVariables(o.primitive,s,i);if(null===l||null===u)return null;const c=modularGcdUnivariate(l,u,i),p=r.primitive.degree(i)??0n,m=o.primitive.degree(i)??0n,g=(p<m?p:m)+2n,h=(l.degree(i)??0n)+(u.degree(i)??0n)+(c.degree(i)??0n),d=e.modulus-1n,x=3n*g+h,E=d<x?d:x;let y=null,v=null,w=0n,b=0n,_=[];for(let n=1n;n<=E;n++){const p=l.evaluateVariable(i,n),m=u.evaluateVariable(i,n),h=c.evaluateVariable(i,n).constantTerm();if(0n===p.constantTerm()||0n===m.constantTerm()||0n===h)continue;const d=r.primitive.evaluateVariable(i,n),x=o.primitive.evaluateVariable(i,n);if(d.isZero()||x.isZero())continue;const E=modularGcdRecursive(d,x,s);if(null===E)continue;if(E.isConstant()&&!E.isZero())return a;const P=s.map(e=>E.degree(e)??0n);if(null===y)y=P;else{let e=0;for(let t=0;t<P.length;t++){if(P[t]<y[t]){e=-1;break}if(P[t]>y[t]){e=1;break}}if(e<0)y=P,v=null,_=[],w=0n,b=0n;else if(e>0)continue}const S=monomialSupport(E,s);if(null===v)v=S;else{const e=[...v].every(e=>S.has(e)),t=v,n=[...S].every(e=>t.has(e));if(e&&!n)v=S,_=[],w=0n,b=0n;else if(!e)continue}if(_.push({value:n,polynomial:E.scale(h)}),w++,w<g)continue;const M=modularPrimitivePartInVariable(ModularSparsePolynomial.interpolateVariable(i,_),i).primitive.multiply(a).monic("lex");if(null!==e.divideExact(M)&&null!==t.divideExact(M))return M;if(b++,b>=3n)return null;_=[],w=0n}return null}function modularGcdFiniteField(e,t,n){if(e.variableCount!==t.variableCount||e.modulus!==t.modulus)throw new RangeError(message("polyRequires",{operation:"Modular polynomial GCD",requirement:message("polyReqSamePolynomialRing")}));if(0===n.length)throw new RangeError(message("polyRequires",{operation:"Modular polynomial GCD",requirement:message("polyReqAtLeastOneVariable")}));if(!isPrimeBig(e.modulus))throw new RangeError(message("polyRequires",{operation:"Multivariate modular GCD",requirement:message("polyReqPrimeModulus")}));const i=new Set;let s=-1;for(const r of n){if(e.degree(r),t.degree(r),i.has(r))throw new RangeError(message("polyVariablesUnique",{operation:"Modular polynomial GCD"}));if(r<=s)throw new RangeError(message("polyVariablesRingOrder",{operation:"Modular polynomial GCD"}));i.add(r),s=r}for(const n of[...e.variables(),...t.variables()])if(!i.has(n))throw new RangeError(message("polyInputsSelectedOnly",{operation:"Modular polynomial GCD"}));return modularGcdRecursive(e,t,n)}function polynomialRemainder(e,t){return e.divideWithRemainder(t).remainder}function vectorPolynomial(e,t,n,i){const s=[];for(let n=0;n<e.length;n++){const r=e[n];if(0n===r)continue;const o=new Array(t).fill(0n);o[i]=BigInt(n),s.push({coefficient:r,exponents:o})}return new ModularSparsePolynomial(t,n,s)}function changeModulus(e,t){return new ModularSparsePolynomial(e.variableCount,t,e.terms())}function integerPolynomialModulo(e,t){return new ModularSparsePolynomial(e.variableCount,t,e.terms())}function modularExtendedGcdUnivariate(e,t,n){if(e.variableCount!==t.variableCount||e.modulus!==t.modulus)throw new RangeError(message("polyRequires",{operation:"Modular extended GCD",requirement:message("polyReqSamePolynomialRing")}));e.degree(n),t.degree(n);let i=e,s=t,r=ModularSparsePolynomial.constant(e.variableCount,e.modulus,1n),o=ModularSparsePolynomial.zero(e.variableCount,e.modulus),a=ModularSparsePolynomial.zero(e.variableCount,e.modulus),l=ModularSparsePolynomial.constant(e.variableCount,e.modulus,1n);for(;!s.isZero();){const e=i.divideWithRemainder(s),t=e.remainder,n=r.subtract(e.quotient.multiply(o)),u=a.subtract(e.quotient.multiply(l));i=s,s=t,r=o,o=n,a=l,l=u}const u=i.leadingTerm();if(null===u)throw new RangeError(message("polyExtendedGcdTwoZeroUndefined"));const c=invMod(u.coefficient,e.modulus);if(c<0n)throw new RangeError(message("polyRequires",{operation:"Modular extended GCD",requirement:message("polyReqInvertibleLeadingCoefficient")}));return{gcd:i.scale(c),leftCoefficient:r.scale(c),rightCoefficient:a.scale(c)}}function henselPairStep(e,t){const n=t.g.modulus,i=n*n,s=changeModulus(e,i),r=changeModulus(t.g,i),o=changeModulus(t.h,i),a=changeModulus(t.s,i),l=changeModulus(t.t,i),u=s.subtract(r.multiply(o)),c=a.multiply(u).divideWithRemainder(o),p=l.multiply(u).add(c.quotient.multiply(r)),m=r.add(p),g=o.add(c.remainder),h=a.multiply(m).add(l.multiply(g)).subtract(ModularSparsePolynomial.constant(s.variableCount,i,1n)),d=a.multiply(h).divideWithRemainder(g),x=l.multiply(h).add(d.quotient.multiply(m));return{g:m,h:g,s:a.subtract(d.remainder),t:l.subtract(x)}}function productModularFactors(e,t,n){let i=ModularSparsePolynomial.constant(t,n,1n);for(const t of e)i=i.multiply(changeModulus(t,n));return i}function modularDerivativeOrder(e,t,n){let i=e,s=n;for(;s>0n;)i=i.derivative(t),s--;return i}function factorialModulo(e,t){let n=1n,i=2n;for(;i<=e;)n=bigint_mod(n*i,t),i++;return n}function buildMultivariateHenselSeeds(e,t,n,i,s,r){const o=i[0],a=i[s+1],l=[];for(let u=0;u<n.length;u++){const c=n[u],p=c.degree(o);if(null===p)return null;const m=c.terms().filter(e=>e.exponents[o]!==p),g=new ModularSparsePolynomial(c.variableCount,r,m);let h=e[u];for(let e=s+1;e<t.length;e++)h=h.evaluateVariable(i[e+1],t[e]);const d=new ModularSparsePolynomial(h.variableCount,r,h.terms()),x=new Array(c.variableCount).fill(0n);x[o]=p;const E=ModularSparsePolynomial.monomial(c.variableCount,r,1n,x),y=d.multiply(E).add(g);if(!y.evaluateVariable(a,t[s]).equals(c))return null;l.push(y)}return l}function solveMultivariateDiophantine(e,t,n,i,s,r){if(i.length!==s.length)throw new RangeError(message("polyRequires",{operation:"Multivariate Diophantine solving",requirement:message("polyReqOneEvaluationPerTailVariable")}));if(0===i.length)return function solveUnivariateDiophantine(e,t,n){const i=[];for(let s=0;s<e.length;s++){const r=modularExtendedGcdUnivariate(productModularFactors(e.filter((e,t)=>t!==s),e[s].variableCount,e[s].modulus),e[s],n);if(!r.gcd.isConstant())return null;const o=t.multiply(r.leftCoefficient).divideWithRemainder(e[s]).remainder;i.push(o)}let s=ModularSparsePolynomial.zero(t.variableCount,t.modulus);for(let n=0;n<e.length;n++){const r=productModularFactors(e.filter((e,t)=>t!==n),t.variableCount,t.modulus);s=s.add(i[n].multiply(r))}return s.equals(t)?i:null}(e,t,n);const o=i[i.length-1],a=s[s.length-1],l=i.slice(0,-1),u=s.slice(0,-1),c=e.map(e=>e.evaluateVariable(o,a)),p=solveMultivariateDiophantine(c,t.evaluateVariable(o,a),n,l,u,r);if(null===p)return null;const m=e.map((n,i)=>productModularFactors(e.filter((e,t)=>t!==i),t.variableCount,t.modulus));let g=[...p];const h=ModularSparsePolynomial.variable(t.variableCount,t.modulus,o).subtract(ModularSparsePolynomial.constant(t.variableCount,t.modulus,a));function residualFor(e){let n=t;for(let t=0;t<e.length;t++)n=n.subtract(e[t].multiply(m[t]));return n}let d=residualFor(g);for(let e=1n;e<=r&&!d.isZero();e++){const i=modularDerivativeOrder(d,o,e).evaluateVariable(o,a),s=invMod(factorialModulo(e,t.modulus),t.modulus);if(s<0n)return null;const p=i.scale(s);if(p.isZero())continue;const m=solveMultivariateDiophantine(c,p,n,l,u,r);if(null===m)return null;const x=h.pow(e);g=g.map((e,t)=>e.add(m[t].multiply(x))),d=residualFor(g)}return d.isZero()?g:null}function liftFactorGroup(e,t,n,i,s){if(1===n.length){const t=changeModulus(e,s),n=t.leadingTerm();if(null===n)throw new RangeError(message("polyHenselZeroFactorGroup"));const i=invMod(n.coefficient,s);if(i<0n)throw new RangeError(message("polyRequires",{operation:"Hensel lifting",requirement:message("polyReqInvertibleLeadingCoefficient")}));return[t.scale(i)]}const r=Math.floor(n.length/2),o=n.slice(0,r),a=n.slice(r),l=changeModulus(e,t).leadingTerm();if(null===l)throw new RangeError(message("polyHenselCannotLiftZero"));const u=productModularFactors(o,e.variableCount,t).scale(l.coefficient),c=productModularFactors(a,e.variableCount,t),p=modularExtendedGcdUnivariate(u,c,i);if(!p.gcd.isConstant())throw new RangeError(message("polyRequires",{operation:"Hensel lifting",requirement:message("polyReqPairwiseCoprimeModularFactors")}));let m={g:u,h:c,s:p.leftCoefficient,t:p.rightCoefficient};for(;m.g.modulus<s;)m=henselPairStep(e,m);if(m.g.modulus!==s)throw new Error(message("polyHenselModulusExceeded"));return[...liftFactorGroup(m.g,t,o,i,s),...liftFactorGroup(m.h,t,a,i,s)]}function henselLiftUnivariateFactors(e,t,n,i,s){if(!isPrimeBig(t))throw new RangeError(message("polyRequires",{operation:"Hensel lifting",requirement:message("polyReqPrimeBaseModulus")}));if(0===n.length)throw new RangeError(message("polyRequires",{operation:"Hensel lifting",requirement:message("polyReqAtLeastOneModularFactor")}));if(s<t)throw new RangeError(message("polyHenselTargetNotSmaller"));e.degree(i);for(const t of e.variables())if(t!==i)throw new RangeError(message("polyRequires",{operation:"Hensel lifting",requirement:message("polyReqUnivariateIntegerPolynomial")}));for(const s of n){if(s.variableCount!==e.variableCount||s.modulus!==t)throw new RangeError(message("polyRequires",{operation:"Hensel lifting",requirement:message("polyReqFactorsSameRingAndPrime")}));for(const e of s.variables())if(e!==i)throw new RangeError(message("polyRequires",{operation:"Hensel lifting",requirement:message("polyReqUnivariateFactors")}));if(!s.equals(s.monic()))throw new RangeError(message("polyRequires",{operation:"Hensel lifting",requirement:message("polyReqMonicModularFactors")}))}let r=t;for(;r<s;)r*=r;if(r!==s)throw new RangeError(message("polyHenselTargetRepeatedSquaring"));const o=integerPolynomialModulo(e,t),a=o.leadingTerm();if(null===a)throw new RangeError(message("polyCannotFactorZeroPolynomial",{operation:"Hensel lifting"}));if(invMod(a.coefficient,t)<0n)throw new RangeError(message("polyRequires",{operation:"Hensel lifting",requirement:message("polyReqIntegerLeadingCoefficientInvertible")}));if(!productModularFactors(n,e.variableCount,t).scale(a.coefficient).equals(o))throw new RangeError(message("polyHenselFactorsReconstructModuloBase"));const l=integerPolynomialModulo(e,s),u=liftFactorGroup(l,t,n,i,s),c=l.leadingTerm();if(null===c)throw new Error(message("polyHenselLeadingLost"));if(!productModularFactors(u,e.variableCount,s).scale(c.coefficient).equals(l))throw new Error(message("polyHenselReconstructionFailed"));return u}function factorSquareFreeUnivariateFiniteField(e,t){const n=function assertSquareFreeUnivariate(e,t){if(!isPrimeBig(e.modulus))throw new RangeError(message("polyRequires",{operation:"Modular factorization",requirement:message("polyReqPrimeModulus")}));const n=e.degree(t);for(const n of e.variables())if(n!==t)throw new RangeError(message("polyRequires",{operation:"Modular factorization",requirement:message("polyReqUnivariatePolynomial")}));if(null===n||0n===n)return 0;if(n>BigInt(Number.MAX_SAFE_INTEGER))throw new RangeError(message("polyDegreeMatrixLimit"));const i=[];for(const n of e.terms()){const s=n.exponents[t];if(0n===s)continue;const r=[...n.exponents];r[t]=s-1n,i.push({coefficient:bigint_mod(n.coefficient*s,e.modulus),exponents:r})}if(!modularGcdUnivariate(e,new ModularSparsePolynomial(e.variableCount,e.modulus,i),t).isConstant())throw new RangeError(message("polyRequires",{operation:"Berlekamp factorization",requirement:message("polyReqSquareFreeInput")}));return Number(n)}(e,t);if(0===n)return[];const i=e.monic();if(1===n)return[i];const s=function polynomialPowMod(e,t,n){let i=ModularSparsePolynomial.constant(e.variableCount,e.modulus,1n),s=polynomialRemainder(e,n),r=t;for(;r>0n;)1n==(1n&r)&&(i=polynomialRemainder(i.multiply(s),n)),r>>=1n,r>0n&&(s=polynomialRemainder(s.multiply(s),n));return i}(ModularSparsePolynomial.variable(i.variableCount,i.modulus,t),i.modulus,i),r=Array.from({length:n},()=>new Array(n).fill(0n));let o=ModularSparsePolynomial.constant(i.variableCount,i.modulus,1n);for(let e=0;e<n;e++){for(let s=0;s<n;s++){const n=new Array(i.variableCount).fill(0n);n[t]=BigInt(s),r[s][e]=o.coefficient(n)}r[e][e]=bigint_mod(r[e][e]-1n,i.modulus),o=polynomialRemainder(o.multiply(s),i)}const a=function nullspaceModulo(e,t){const n=e.length,i=0===n?0:e[0].length,s=e.map(e=>e.map(e=>bigint_mod(e,t))),r=[];let o=0;for(let e=0;e<i&&o<n;e++){let a=o;for(;a<n&&0n===s[a][e];)a++;if(a===n)continue;if(a!==o){const e=s[o];s[o]=s[a],s[a]=e}const l=invMod(s[o][e],t);if(l<0n)throw new RangeError(message("polyBerlekampNoninvertiblePivot"));for(let n=e;n<i;n++)s[o][n]=bigint_mod(s[o][n]*l,t);for(let r=0;r<n;r++){if(r===o||0n===s[r][e])continue;const n=s[r][e];for(let a=e;a<i;a++)s[r][a]=bigint_mod(s[r][a]-n*s[o][a],t)}r.push(e),o++}const a=new Set(r),l=[];for(let e=0;e<i;e++){if(a.has(e))continue;const n=new Array(i).fill(0n);n[e]=1n;for(let i=0;i<r.length;i++)n[r[i]]=bigint_mod(-s[i][e],t);l.push(n)}return l}(r,i.modulus);if(a.length<=1)return[i];let l=[i];for(const e of a){if(l.length>=a.length)break;const n=vectorPolynomial(e,i.variableCount,i.modulus,t);if(n.isConstant())continue;let s=0n;for(;s<i.modulus&&l.length<a.length;){const e=n.subtract(ModularSparsePolynomial.constant(i.variableCount,i.modulus,s)),r=[];for(const n of l){const i=n.degree(t);if(null===i||i<=1n){r.push(n);continue}const s=modularGcdUnivariate(n,e,t);if(s.isConstant()||s.equals(n)){r.push(n);continue}const o=n.divideExact(s);if(null===o)throw new Error(message("polyBerlekampNonExactSplit"));r.push(s.monic(),o.monic())}l=r,s++}}if(l.length!==a.length)throw new Error(message("polyBerlekampIncompleteSplit"));let u=ModularSparsePolynomial.constant(i.variableCount,i.modulus,1n);for(const e of l)u=u.multiply(e);if(!u.equals(i))throw new Error(message("polyBerlekampReconstructionFailed"));return l.sort((e,n)=>{const i=e.degree(t)??0n,s=n.degree(t)??0n;if(i!==s)return i<s?-1:1;const r=e.terms(),o=n.terms(),a=Math.min(r.length,o.length);for(let e=0;e<a;e++){const n=r[e].exponents[t],i=o[e].exponents[t];if(n!==i)return n<i?-1:1;if(r[e].coefficient!==o[e].coefficient)return r[e].coefficient<o[e].coefficient?-1:1}return r.length-o.length})}function symmetricResidue(e,t){const n=bigint_mod(e,t);return 2n*n>t?n-t:n}function termMap(e){const t=new Map;for(const n of e.terms())t.set(n.exponents.join(","),n);return t}function combinePolynomialCongruences(e,t,n,i){if(e.variableCount!==n.variableCount)throw new RangeError(message("polyRequires",{operation:"Polynomial CRT",requirement:message("polyReqSamePolynomialRing")}));if(t<=0n||i<=0n)throw new RangeError(message("polyRequires",{operation:"Polynomial CRT",requirement:message("polyReqPositiveModuli")}));if(1n!==bigint_GCD(t,i))throw new RangeError(message("polyRequires",{operation:"Polynomial CRT",requirement:message("polyReqCoprimeModuli")}));const s=invMod(t,i);if(s<0n)throw new RangeError(message("polyCrtModuliInvertible"));const r=termMap(e),o=termMap(n),a=new Set([...r.keys(),...o.keys()]),l=t*i,u=[];for(const e of a){const n=r.get(e),a=o.get(e),c=n?.coefficient??0n,p=symmetricResidue(c+t*bigint_mod(((a?.coefficient??0n)-c)*s,i),l);0n!==p&&u.push({coefficient:p,exponents:n?.exponents??a?.exponents??[]})}return{polynomial:new SparsePolynomial(e.variableCount,u),modulus:l}}function leadingCoefficientForVariable(e,t){e.degree(t);const n=e.terms();if(0===n.length)return 0n;let i=n[0];for(let s=1;s<n.length;s++){const r=n[s];if(r.exponents[t]===i.exponents[t]){for(let n=0;n<e.variableCount;n++)if(n!==t&&r.exponents[n]!==i.exponents[n]){r.exponents[n]>i.exponents[n]&&(i=r);break}}else r.exponents[t]>i.exponents[t]&&(i=r)}return i.coefficient}function reduceModulo(e,t){return new ModularSparsePolynomial(e.variableCount,t,e.terms())}function degreeVector(e,t){return t.map(t=>e.degree(t)??0n)}function sparsePolynomialGcd(e,t,n){if(e.variableCount!==t.variableCount)throw new RangeError(message("polyRequires",{operation:"Sparse polynomial GCD",requirement:message("polyReqSamePolynomialRing")}));if(0===n.length)throw new RangeError(message("polyRequires",{operation:"Sparse polynomial GCD",requirement:message("polyReqAtLeastOneVariable")}));const i=new Set;let s=-1;for(const r of n){if(e.degree(r),t.degree(r),i.has(r))throw new RangeError(message("polyVariablesUnique",{operation:"Sparse polynomial GCD"}));if(r<=s)throw new RangeError(message("polyVariablesRingOrder",{operation:"Sparse polynomial GCD"}));i.add(r),s=r}for(const n of[...e.variables(),...t.variables()])if(!i.has(n))throw new RangeError(message("polyInputsSelectedOnly",{operation:"Sparse polynomial GCD"}));if(e.isZero())return t.isZero()?t:t.normalizeLeadingSign("lex");if(t.isZero())return e.normalizeLeadingSign("lex");const r=bigint_GCD(e.content(),t.content()),o=e.primitivePart().normalizeLeadingSign("lex"),a=t.primitivePart().normalizeLeadingSign("lex"),l=o.leadingTerm("lex"),u=a.leadingTerm("lex");if(null===l||null===u)return SparsePolynomial.zero(e.variableCount);if(o.isConstant()||a.isConstant())return SparsePolynomial.constant(e.variableCount,r);if(o.equals(a))return o.scale(r);if(null!==o.divideExact(a))return a.scale(r);if(null!==a.divideExact(o))return o.scale(r);const c=bigint_GCD(l.coefficient,u.coefficient),p=n.map(e=>bigint_GCD(leadingCoefficientForVariable(o,e),leadingCoefficientForVariable(a,e)));let m=nextPrimeBig(1000000007n),g=null,h=1n,d=null;for(;;){for(;p.some(e=>e%m===0n);)m=nextPrimeBig(m+1n);const i=modularGcdFiniteField(reduceModulo(o,m),reduceModulo(a,m),n);if(null===i){m=nextPrimeBig(m+1n);continue}if(i.isConstant()&&!i.isZero())return SparsePolynomial.constant(e.variableCount,r);const s=degreeVector(i,n);if(null!==d){let e=0;for(let t=0;t<s.length;t++){if(s[t]<d[t]){e=-1;break}if(s[t]>d[t]){e=1;break}}if(e>0){m=nextPrimeBig(m+1n);continue}e<0&&(d=s,g=null,h=1n)}else d=s;const l=i.scale(c).toSymmetricIntegerPolynomial();let u,x;if(null===g)u=l,x=m;else{const e=combinePolynomialCongruences(g,h,l,m);u=e.polynomial,x=e.modulus}const E=null!==g&&u.equals(g);if(g=u,h=x,E){const n=u.primitivePart().normalizeLeadingSign("lex").scale(r);if(null!==e.divideExact(n)&&null!==t.divideExact(n))return n}m=nextPrimeBig(m+1n)}}function assertUnivariate(e,t){e.degree(t);for(const n of e.terms())for(let i=0;i<e.variableCount;i++)if(i!==t&&0n!==n.exponents[i])throw new RangeError(message("polyRequires",{operation:"Square-free univariate factorization",requirement:message("polyReqAllOtherVariablesDormant")}))}function contentInVariable(e,t,n){const i=new Map;for(const n of e.terms()){const e=n.exponents[t],s=[...n.exponents];s[t]=0n;const r=i.get(e)??[];r.push({coefficient:n.coefficient,exponents:s}),i.set(e,r)}let s=null;for(const t of i.values()){const i=new SparsePolynomial(e.variableCount,t).primitivePart().normalizeLeadingSign("lex");if(null===s)s=i;else{if(null!==i.divideExact(s))continue;s=null!==s.divideExact(i)?i:sparsePolynomialGcd(s,i,n)}if(s.isConstant())return SparsePolynomial.constant(e.variableCount,1n)}return s??SparsePolynomial.zero(e.variableCount)}function mergeSquareFreeFactor(e,t,n){if(t.isConstant())return;const i=t.primitivePart().normalizeLeadingSign("lex"),s=e.get(n);e.set(n,void 0===s?i:s.multiply(i))}function squareFreeFactorizationRecursive(e,t){if(1===t.length)return squareFreeFactorizationUnivariate(e,t[0]);let n=e.content(),i=e.primitivePart();const s=i.leadingTerm("lex");if(null!==s&&s.coefficient<0n&&(i=i.negate(),n=-n),i.isConstant())return{content:n,factors:[]};const r=t[0],o=t.slice(1),a=contentInVariable(i,r,o),l=divideExactOrThrow(i,a),u=new Map,c=l.degree(r);if(null!==c&&c>0n){const e=l.derivative(r);let n=sparsePolynomialGcd(l,e,t),i=divideExactOrThrow(l,n),s=divideExactOrThrow(e,n),o=1n;for(;;){const e=s.subtract(i.derivative(r));if(e.isZero()){mergeSquareFreeFactor(u,i,o);break}n=sparsePolynomialGcd(i,e,t),i=divideExactOrThrow(i,n),s=divideExactOrThrow(e,n),mergeSquareFreeFactor(u,n,o),o++}}const p=squareFreeFactorizationRecursive(a,o);n*=p.content;for(const e of p.factors)mergeSquareFreeFactor(u,e.factor,e.multiplicity);return{content:n,factors:[...u.entries()].sort(([e],[t])=>e<t?-1:e>t?1:0).map(([e,t])=>({factor:t,multiplicity:e}))}}function divideExactOrThrow(e,t){const n=e.divideExact(t);if(null===n)throw new Error(message("polySquareFreeNonExactDivision"));return n}function zassenhausCoefficientBound(e,t){const n=e.degree(t);if(null===n||0n===n)return e.maxAbsoluteCoefficient();const i=e.leadingTerm("lex");if(null===i)return 0n;const s=i.coefficient<0n?-i.coefficient:i.coefficient,r=e.maxAbsoluteCoefficient();return ceilIntegerSquareRoot(n+1n)*(1n<<n)*r*s}function modularProduct(e,t,n,i){let s=ModularSparsePolynomial.constant(n,i,1n);for(const n of t)s=s.multiply(e[n]);return s}function combinations(e,t){const n=[],i=[];return function choose(s){if(i.length===t)return void n.push([...i]);const r=t-i.length;for(let t=s;t<=e.length-r;t++)i.push(e[t]),choose(t+1),i.pop()}(0),n}function factorSquareFreeUnivariateInteger(e,t){if(assertUnivariate(e,t),e.isZero())throw new RangeError(message("polyCannotFactorZeroPolynomial",{operation:"Integer factorization"}));if(1n!==e.content())throw new RangeError(message("polyRequires",{operation:"Integer square-free factorization",requirement:message("polyReqPrimitivePolynomial")}));const n=e.leadingTerm("lex");if(null===n)throw new Error(message("polyIntegerFactorLostLeading"));const i=n.coefficient<0n?e.negate():e;if(i.isConstant())return[];if(1n===i.degree(t))return[i];const s=function findGoodFactorPrime(e,t){const n=e.leadingTerm("lex");if(null===n)throw new RangeError(message("polyIntegerFactorPrimeZero"));const i=e.derivative(t);let s,r=nextPrimeBig(3n),o=0;for(;;){if(n.coefficient%r!==0n){const n=new ModularSparsePolynomial(e.variableCount,r,e.terms());if(modularGcdUnivariate(n,new ModularSparsePolynomial(e.variableCount,r,i.terms()),t).isConstant()){const e=factorSquareFreeUnivariateFiniteField(n,t),i={prime:r,modularPolynomial:n,modularFactors:e};if(o++,1===e.length)return i;if((void 0===s||e.length<s.modularFactors.length)&&(s=i),o>=4)return s}}r=nextPrimeBig(r+1n)}}(i,t);if(1===s.modularFactors.length)return[i];const r=zassenhausCoefficientBound(i,t);let o=s.prime;for(;o<=2n*r;)o*=o;return function recombineLiftedUnivariateFactors(e,t,n){if(assertUnivariate(e,n),e.isZero())throw new RangeError(message("polyCannotFactorZeroPolynomial",{operation:"Zassenhaus recombination"}));if(1n!==e.content())throw new RangeError(message("polyRequires",{operation:"Zassenhaus recombination",requirement:message("polyReqPrimitiveIntegerPolynomial")}));const i=e.leadingTerm("lex");if(null===i||i.coefficient<=0n)throw new RangeError(message("polyRequires",{operation:"Zassenhaus recombination",requirement:message("polyReqPositiveLeadingCoefficient")}));if(0===t.length)throw new RangeError(message("polyRequires",{operation:"Zassenhaus recombination",requirement:message("polyReqLiftedModularFactors")}));const s=t[0].modulus;for(const i of t){if(i.variableCount!==e.variableCount||i.modulus!==s)throw new RangeError(message("polyRequires",{operation:"Zassenhaus recombination",requirement:message("polyReqLiftedFactorsSameRing")}));for(const e of i.variables())if(e!==n)throw new RangeError(message("polyRequires",{operation:"Zassenhaus recombination",requirement:message("polyReqUnivariateLiftedFactors")}));if(!i.equals(i.monic()))throw new RangeError(message("polyRequires",{operation:"Zassenhaus recombination",requirement:message("polyReqMonicLiftedFactors")}))}if(s<=2n*zassenhausCoefficientBound(e,n))throw new RangeError(message("polyRequires",{operation:"Zassenhaus recombination",requirement:message("polyReqLargerHenselModulus")}));const r=new ModularSparsePolynomial(e.variableCount,s,e.terms()),o=t.map((e,t)=>t);if(!modularProduct(t,o,e.variableCount,s).scale(i.coefficient).equals(r))throw new RangeError(message("polyZassenhausFactorsReconstructModuloLift"));const a=[];let l=e,u=[...o],c=1;for(;2*c<=u.length;){let n=!1;for(const i of combinations(u,c)){const r=l.leadingTerm("lex");if(null===r)throw new Error(message("polyZassenhausLostRemaining"));let o=modularProduct(t,i,e.variableCount,s).scale(r.coefficient).toSymmetricIntegerPolynomial().primitivePart();if(o=o.normalizeLeadingSign("lex"),o.isConstant())continue;const p=l.divideExact(o);if(null===p)continue;a.push(o),l=p.primitivePart().normalizeLeadingSign("lex");const m=new Set(i);u=u.filter(e=>!m.has(e)),c=1,n=!0;break}n||c++}l.isConstant()||a.push(l);let p=SparsePolynomial.constant(e.variableCount,1n);for(const e of a)p=p.multiply(e);if(!p.equals(e))throw new Error(message("polyZassenhausReconstructionFailed"));return a}(i,henselLiftUnivariateFactors(i,s.prime,s.modularFactors,t,o),t)}function squareFreeFactorizationMultivariate(e,t){return function assertFactorVariables(e,t){if(0===t.length)throw new RangeError(message("polyRequires",{operation:"Sparse polynomial factorization",requirement:message("polyReqAtLeastOneVariable")}));const n=new Set;let i=-1;for(const s of t){if(e.degree(s),n.has(s))throw new RangeError(message("polyVariablesUnique",{operation:"Sparse polynomial factorization"}));if(s<=i)throw new RangeError(message("polyVariablesRingOrder",{operation:"Sparse polynomial factorization"}));n.add(s),i=s}for(const t of e.variables())if(!n.has(t))throw new RangeError(message("polyVariablesIncludeActive",{operation:"Sparse polynomial factorization"}))}(e,t),e.isZero()?{content:0n,factors:[]}:squareFreeFactorizationRecursive(e,t)}function factorUnivariateInteger(e,t){const n=squareFreeFactorizationUnivariate(e,t);if(0n===n.content||0===n.factors.length)return n;const i=[];for(const e of n.factors){const n=factorSquareFreeUnivariateInteger(e.factor,t);for(const t of n)i.push({factor:t,multiplicity:e.multiplicity})}return{content:n.content,factors:i}}function squareFreeFactorizationUnivariate(e,t){if(assertUnivariate(e,t),e.isZero())return{content:0n,factors:[]};let n=e.content(),i=e.primitivePart();const s=i.leadingTerm("lex");if(null!==s&&s.coefficient<0n&&(i=i.negate(),n=-n),i.isConstant())return{content:n,factors:[]};const r=[];let o=null;for(const e of i.terms()){const n=e.exponents[t];(null===o||n<o)&&(o=n)}if(null!==o&&o>0n){const e=new Array(i.variableCount).fill(0n);e[t]=o;i=divideExactOrThrow(i,SparsePolynomial.monomial(i.variableCount,1n,e)),r.push({factor:SparsePolynomial.variable(i.variableCount,t),multiplicity:o})}if(i.isConstant())return{content:n,factors:r};const a=i.derivative(t),l=[t];let u=sparsePolynomialGcd(i,a,l),c=divideExactOrThrow(i,u),p=divideExactOrThrow(a,u),m=1n;for(;;){const e=p.subtract(c.derivative(t));if(e.isZero()){c.isConstant()||r.push({factor:c.normalizeLeadingSign("lex"),multiplicity:m});break}u=sparsePolynomialGcd(c,e,l),c=divideExactOrThrow(c,u),p=divideExactOrThrow(e,u),u.isConstant()||r.push({factor:u.normalizeLeadingSign("lex"),multiplicity:m}),m++}return r.sort((e,t)=>e.multiplicity<t.multiplicity?-1:e.multiplicity>t.multiplicity?1:0),{content:n,factors:r}}const rn=1000003n;function assertWangVariables(e,t){if(t.length<2)throw new RangeError(message("polyRequires",{operation:"Wang evaluation",requirement:message("polyReqAtLeastTwoSelectedVariables")}));const n=new Set;let i=-1;for(const s of t){if(e.degree(s),n.has(s))throw new RangeError(message("polyVariablesUnique",{operation:"Wang evaluation"}));if(s<=i)throw new RangeError(message("polyVariablesRingOrder",{operation:"Wang evaluation"}));n.add(s),i=s}for(const t of e.variables())if(!n.has(t))throw new RangeError(message("polyVariablesIncludeActive",{operation:"Wang evaluation"}))}function evaluateTail(e,t,n){return e.evaluateVariables(t.slice(1),n)}function evaluateTailInteger(e,t,n){const i=evaluateTail(e,t,n);if(!i.isConstant())throw new Error(message("polyWangLeadingEvaluationInteger"));return i.constantTerm()}function productPolynomials(e,t){let n=SparsePolynomial.constant(t,1n);for(const t of e)n=n.multiply(t);return n}function multivariateMignotteBound(e,t){let n=0n;for(const i of t)n+=e.degree(i)??0n;const i=e.leadingTerm("lex");if(null===i)return 0n;const s=i.coefficient<0n?-i.coefficient:i.coefficient;return ceilIntegerSquareRoot(n+1n)*(1n<<n)*e.maxAbsoluteCoefficient()*s}function testWangSpecializationPrepared(e,t,n,i,s){const r=evaluateTail(e,t,n);if(r.degree(i)!==s)return null;const o=function normalizeSpecialization(e){let t=e.content(),n=e.primitivePart();const i=n.leadingTerm("lex");return null!==i&&i.coefficient<0n&&(t=-t,n=n.negate()),{content:t,primitive:n}}(r);if(o.primitive.isConstant())return null;const a=o.primitive.derivative(i);return sparsePolynomialGcd(o.primitive,a,[i]).isConstant()?{values:[...n],content:o.content,polynomial:o.primitive}:null}function factorWangSpecialization(e,t){return{...e,factors:factorSquareFreeUnivariateInteger(e.polynomial,t)}}function visitEvaluationShell(e,t,n){const i=new Array(e).fill(0n);return function visit(s,r){if(s===e)return r&&n(i);for(let e=-t;e<=t;e++)if(i[s]=e,visit(s+1,r||e===-t||e===t))return!0;return!1}(0,0n===t)}function factorWangLeadingCoefficient(e,t){const n=t[0],i=t.slice(1),s=e.leadingCoefficientIn(n);if(null===s)return null;const r=i.filter(e=>(s.degree(e)??0n)>0n);return r.length<=1?factorUnivariateInteger(s,r[0]??i[0]):factorMultivariateInteger(s,r)}function testWangConfigurationWithLeadingFactorization(e,t,n,i,s,r){const o=testWangSpecializationPrepared(e,t,n,s,r);if(null===o)return null;const a=i.factors.map(e=>evaluateTailInteger(e.factor,t,n));if(!function wangNonDivisors(e,t,n){const i=[t*n];for(const t of e){let e=t<0n?-t:t;for(let t=i.length-1;t>=0;t--){let n=i[t];for(n<0n&&(n=-n);1n!==n;)n=bigint_GCD(n,e),e/=n}if(1n===e)return!1;i.push(t<0n?-t:t)}return!0}(a,o.content,i.content))return null;const l=factorWangSpecialization(o,s),u=[],c=new Array(i.factors.length).fill(!1);let p=l.content;const m=l.factors.map(e=>e);for(const t of m){const n=t.leadingCoefficientIn(s);if(null===n||!n.isConstant())throw new Error(message("polyWangSpecializedLeadingInteger"));let r=n.constantTerm()*p,o=SparsePolynomial.constant(e.variableCount,1n);for(let e=i.factors.length-1;e>=0;e--){const t=a[e];if(0n===t)return null;let n=0n;for(;r%t===0n;)r/=t,n++;n>0n&&(o=o.multiply(i.factors[e].factor.pow(n)),c[e]=!0)}u.push(o)}if(c.some(e=>!e))return null;const g=[],h=[];for(let e=0;e<u.length;e++){let i=u[e],r=m[e];const o=evaluateTailInteger(i,t,n),a=r.leadingCoefficientIn(s)?.constantTerm();if(void 0===a||0n===o)return null;if(1n===p){if(a%o!==0n)return null;i=i.scale(a/o)}else{const e=bigint_GCD(a,o),t=o/e,n=a/e;if(0n===t||p%t!==0n)return null;r=r.scale(t),p/=t,i=i.scale(n)}g.push(r),h.push(i)}let d=e;1n!==p&&(g.forEach((e,t)=>{g[t]=e.scale(p),h[t]=h[t].scale(p)}),d=d.scale(p**BigInt(g.length-1)));const x=d.leadingCoefficientIn(s);if(null===x||!productPolynomials(h,e.variableCount).equals(x))return null;const E=evaluateTail(d,t,n);if(!productPolynomials(g,e.variableCount).equals(E))return null;for(let e=0;e<g.length;e++){const i=g[e].leadingCoefficientIn(s);if(null===i||!evaluateTail(h[e],t,n).equals(i))return null}return{evaluation:l,polynomial:d,factors:g,leadingCoefficients:h}}function liftWangConfiguration(e,t,n){if(t.length<2)throw new RangeError(message("polyRequires",{operation:"Wang lifting",requirement:message("polyReqAtLeastTwoSelectedVariables")}));return function henselLiftMultivariateFactors(e,t,n,i,s,r){if(i.length<2)throw new RangeError(message("polyRequires",{operation:"Multivariate Hensel lifting",requirement:message("polyReqAtLeastTwoSelectedVariables")}));if(s.length!==i.length-1)throw new RangeError(message("polyRequires",{operation:"Multivariate Hensel lifting",requirement:message("polyReqOneEvaluationPerTailVariable")}));if(0===t.length||t.length!==n.length)throw new RangeError(message("polyRequires",{operation:"Multivariate Hensel lifting",requirement:message("polyReqMatchingFactorLeadingLists")}));if(!isPrimeBig(r))throw new RangeError(message("polyRequires",{operation:"Multivariate Hensel lifting",requirement:message("polyReqPrimeModulus")}));const o=i[0];let a=0n;for(const t of i.slice(1)){const n=e.degree(t)??0n;n>a&&(a=n)}if(r<=a)throw new RangeError(message("polyHenselPrimeExceedsTailDegree"));for(const i of[...t,...n])if(i.variableCount!==e.variableCount)throw new RangeError(message("polyRequires",{operation:"Multivariate Hensel lifting inputs",requirement:message("polyReqSamePolynomialRing")}));const l=new ModularSparsePolynomial(e.variableCount,r,e.terms());let u=t.map(e=>new ModularSparsePolynomial(e.variableCount,r,e.terms())),c=l;for(let e=0;e<s.length;e++)c=c.evaluateVariable(i[e+1],s[e]);if(!productModularFactors(u,l.variableCount,r).equals(c))return null;for(let e=0;e<u.length;e++)for(let t=e+1;t<u.length;t++)if(!modularExtendedGcdUnivariate(u[e],u[t],o).gcd.isConstant())return null;for(let e=0;e<i.length-1;e++){const t=i[e+1];let c=l;for(let t=e+1;t<s.length;t++)c=c.evaluateVariable(i[t+1],s[t]);const p=c.evaluateVariable(t,s[e]);if(!productModularFactors(u,l.variableCount,r).equals(p))return null;const m=buildMultivariateHenselSeeds(n,s,u,i,e,r);if(null===m)return null;u=[...m];const g=ModularSparsePolynomial.variable(l.variableCount,r,t).subtract(ModularSparsePolynomial.constant(l.variableCount,r,s[e])),h=c.degree(t)??0n,d=u.map(n=>n.evaluateVariable(t,s[e]));for(let n=1n;n<=h;n++){const p=c.subtract(productModularFactors(u,l.variableCount,r));if(p.isZero())break;const m=modularDerivativeOrder(p,t,n).evaluateVariable(t,s[e]),h=invMod(factorialModulo(n,r),r);if(h<0n)return null;const x=m.scale(h);if(x.isZero())continue;const E=solveMultivariateDiophantine(d,x,o,i.slice(1,e+1),s.slice(0,e),a);if(null===E)return null;const y=g.pow(n);u=u.map((e,t)=>e.add(E[t].multiply(y)))}if(!productModularFactors(u,l.variableCount,r).equals(c))return null}return productModularFactors(u,l.variableCount,r).equals(l)?u.map(e=>e.toSymmetricIntegerPolynomial().primitivePart().normalizeLeadingSign("lex")):null}(e.polynomial,e.factors,e.leadingCoefficients,t,e.evaluation.values,n)}function factorSquareFreeMultivariateInteger(e,t){if(assertWangVariables(e,t),e.isZero())throw new RangeError(message("polyCannotFactorZero",{operation:"Wang factorization"}));if(1n!==e.content())throw new RangeError(message("polyRequires",{operation:"Wang factorization",requirement:message("polyReqPrimitivePolynomial")}));const n=e.leadingTerm("lex");if(null===n||n.coefficient<0n)throw new RangeError(message("polyRequires",{operation:"Wang factorization",requirement:message("polyReqPositiveLexLeadingSign")}));const i=t[0],s=e.derivative(i);if(!sparsePolynomialGcd(e,s,t).isConstant())throw new RangeError(message("polyRequires",{operation:"Wang factorization",requirement:message("polyReqSquareFreeMainVariable")}));const{originalDegree:r,leadingFactorization:o}=prepareWangConfigurationSearch(e,t);let a=0n,l=null,u=[];for(;;){let n=!1;if(visitEvaluationShell(t.length-1,a,s=>{const a=testWangConfigurationWithLeadingFactorization(e,t,s,o,i,r);if(null===a)return!1;if(1===a.factors.length)return n=!0,!0;if((null===l||a.factors.length<l)&&(l=a.factors.length,u=[]),a.factors.length!==l)return!1;let c=0n;for(const e of t.slice(1)){const t=a.polynomial.degree(e)??0n;t>c&&(c=t)}let p=2n*multivariateMignotteBound(a.polynomial,t)+1n;return p<rn&&(p=rn),p<=c&&(p=c+1n),u.push({configuration:a,prime:nextPrimeBig(p)}),!1}),n)return[e];const s=[];for(const n of u){const i=liftWangConfiguration(n.configuration,t,n.prime);if(null===i){s.push({configuration:n.configuration,prime:nextPrimeBig(n.prime+1n)});continue}if(productPolynomials(i,e.variableCount).equals(e))return i}u=s,a++}}function factorMultivariateInteger(e,t){assertWangVariables(e,t);const n=squareFreeFactorizationMultivariate(e,t);if(0n===n.content||0===n.factors.length)return n;const i=t[0],s=t.slice(1),r=[];for(const e of n.factors){const n=contentInVariable(e.factor,i,s),o=e.factor.divideExact(n);if(null===o)throw new Error(message("polyMultivariateContentDivisionFailed"));if(!n.isConstant()){const t=s.filter(e=>(n.degree(e)??0n)>0n);let i;if(1===t.length)i=factorUnivariateInteger(n,t[0]);else{if(!(t.length>1))throw new Error(message("polyMultivariateContentVariableMissing"));i=factorMultivariateInteger(n,t)}for(const t of i.factors)r.push({factor:t.factor,multiplicity:e.multiplicity*t.multiplicity})}if(!o.isConstant())for(const n of factorSquareFreeMultivariateInteger(o,t))r.push({factor:n,multiplicity:e.multiplicity})}let o=SparsePolynomial.constant(e.variableCount,n.content);for(const e of r)o=o.multiply(e.factor.pow(e.multiplicity));if(!o.equals(e))throw new Error(message("polyMultivariateReconstructionFailed"));return{content:n.content,factors:r}}function prepareWangConfigurationSearch(e,t){if(assertWangVariables(e,t),1n!==e.content())throw new RangeError(message("polyRequires",{operation:"Wang leading-coefficient reconstruction",requirement:message("polyReqPrimitivePolynomial")}));const n=e.leadingTerm("lex");if(null===n||n.coefficient<0n)throw new RangeError(message("polyRequires",{operation:"Wang leading-coefficient reconstruction",requirement:message("polyReqPositiveLexLeadingSign")}));const i=t[0],s=e.degree(i);if(null===s||0n===s)throw new RangeError(message("polyRequires",{operation:"Wang configuration search",requirement:message("polyReqPositiveDegreeMainVariable")}));const r=factorWangLeadingCoefficient(e,t);if(null===r)throw new RangeError(message("polyRequires",{operation:"Wang configuration search",requirement:message("polyReqPositiveDegreeMainVariable")}));return{mainVariable:i,originalDegree:s,leadingFactorization:r}}function extractBasePowers(e){const t=new Map;if(e.isNUM())return t;if(e.isProduct()){for(const n of e.elementsArray())if(!n.isNUM()){const e=n.getBase().text(),i=n.getPower(),s=t.get(e);t.set(e,void 0!==s?s.plus(i):i)}}else{const n=e.getBase().text();t.set(n,e.getPower())}return t}function factorCommonPower(e){if(!e.isSum())return e;const t=e.getMultiplier(),n=e.getPower(),i=e.elementsArray();if(i.length<2)return e;const s=[];let r=!1;for(const e of i){const t=extractBasePowers(e);s.push(t),0===t.size&&(r=!0)}if(r)return e;const o=new Set(s[0].keys());for(let e=1;e<s.length;e++)for(const t of o)s[e].has(t)||o.delete(t);if(0===o.size)return e;const a=new Map;for(const e of o){let t=s[0].get(e);if(void 0!==t){for(let n=1;n<s.length;n++){const i=s[n].get(e);if(void 0===i){t=void 0;break}i.lt(t)&&(t=i)}void 0!==t&&1===t.sign()&&a.set(e,t)}}if(0===a.size)return e;let l=one();for(const[e,t]of a)l=l.times(Expression_Expression.create(e).pow(t));let u=zero();for(const e of i)u=u.plus(e.div(l));let c=l.times(u);return n.isOne()||(c=c.pow(n)),t.isOne()||(c=c.times(t)),c}function diffFactorialArgs(e,t){const n=e.minus(t);if(!n.isNUM())return null;const i=n.getMultiplier();if(!i.isInteger())return null;const s=Number(i.numerator);return Math.abs(s)>100?null:s}function consecutiveProduct(e,t){if(0===t)return one();let n=one();if(t>0)for(let i=1;i<=t;i++)n=n.times(e.plus(Expression_Expression.Number(i)));else{const i=-t;for(let t=0;t<i;t++)n=n.times(e.minus(Expression_Expression.Number(t)))}return n}function simplifyFactorials(e){if(!e.isProduct())return e;const{factorials:t,rest:n}=function extractFactorials(e){const t=[],n=[];if(!e.isProduct())return e.isFunction("fact")?(t.push({arg:e.getArguments()[0],power:e.getPower(),multiplier:Expression_Expression.fromRational(e.getMultiplier()),index:0}),{factorials:t,rest:n}):{factorials:[],rest:[e]};let i=0;for(const s of e.elementsArray())s.isFunction("fact")?t.push({arg:s.getArguments()[0],power:s.getPower(),multiplier:Expression_Expression.fromRational(s.getMultiplier()),index:i}):n.push(s),i++;return{factorials:t,rest:n}}(e);if(t.length<2)return e;const i=[],s=[];for(const e of t)if(1===e.power.sign()&&e.power.isOne())i.push(e);else if(-1===e.power.sign()){const t=e.power.getMultiplier();-1n!==t.numerator||1n!==t.denominator&&-1n!==t.denominator?n.push(e.multiplier.times(Expression_Expression.toFunction("fact",[e.arg]).pow(e.power))):s.push(e)}else n.push(e.multiplier.times(Expression_Expression.toFunction("fact",[e.arg]).pow(e.power)));const r=new Set,o=new Set,a=[];for(let e=0;e<i.length;e++)if(!r.has(e))for(let t=0;t<s.length;t++){if(o.has(t))continue;const n=i[e],l=s[t],u=diffFactorialArgs(n.arg,l.arg);if(null!==u&&0!==u){if(u<0){const e=consecutiveProduct(n.arg,-u);a.push(n.multiplier.times(l.multiplier).times(e.invert()))}else{const e=consecutiveProduct(l.arg,u);a.push(n.multiplier.times(l.multiplier).times(e))}r.add(e),o.add(t);break}if(0===u){a.push(n.multiplier.times(l.multiplier)),r.add(e),o.add(t);break}}let l=Expression_Expression.fromRational(e.getMultiplier());for(let e=0;e<i.length;e++)if(!r.has(e)){const t=i[e];l=l.times(t.multiplier.times(Expression_Expression.toFunction("fact",[t.arg])))}for(let e=0;e<s.length;e++)if(!o.has(e)){const t=s[e];l=l.times(t.multiplier.times(Expression_Expression.toFunction("fact",[t.arg]).invert()))}for(const e of a)l=l.times(e);for(const e of n)l=l.times(e);return l}function extractLogTerm(e){if(e.isFunction("log")&&e.isLinear()){const t=e.getArguments();return 0===t.length?null:{coeff:Expression_Expression.fromRational(e.getMultiplier()),arg:t[0],original:e}}if(e.isProduct()){let t=null,n=one();const i=[];for(const s of e.elementsArray())!t&&s.isFunction("log")&&s.isLinear()?(t=s,n=Expression_Expression.fromRational(s.getMultiplier())):i.push(s);if(t){let s=Expression_Expression.fromRational(e.getMultiplier());for(const e of i)s=s.times(e);return s=s.times(n),{coeff:s,arg:t.getArguments()[0],original:e}}}return null}function shouldLiftCoefficient(e,t){if(!e.isNUM())return!1;const n=e.getMultiplier();if(n.abs().isOne())return!1;return!(1n!==n.denominator&&-1n!==n.denominator)||t}function liftCoefficientIntoPower(e,t){const n=t.abs();return e.pow(n)}function simplifyLogs(e){if(!e.isSum())return e;const t=Expression_Expression.fromRational(e.getMultiplier()),n=e.getPower(),i=[],s=[];for(const t of e.elementsArray()){const e=extractLogTerm(t);e?i.push(e):s.push(t)}const r=i.filter(e=>!e.arg.isComplex()&&e.arg.gt(zero()));if(0===r.length)return e;const o=i.filter(e=>!r.includes(e)).map(e=>e.original),a=[...s,...o],l=r.filter(e=>e.coeff.isNUM()),u=r.filter(e=>!e.coeff.isNUM());if(1===l.length&&0===u.length){const i=l[0];if(shouldLiftCoefficient(i.coeff,!1)){const e=liftCoefficientIntoPower(i.arg,i.coeff);let s=Expression_Expression.toFunction("log",[e]);for(const e of a)s=s.plus(e);return applyOuterMultiplierAndPower(s,t,n)}return e}if(l.length>=2){const i=function combineNumericLogTerms(e,t,n){const i=function findCommonCoeffFactor(e){if(e.length<2)return null;const t=e.map(e=>e.coeff.getMultiplier());let n=t[0].numerator<0n?-t[0].numerator:t[0].numerator,i=t[0].denominator<0n?-t[0].denominator:t[0].denominator;for(let e=1;e<t.length;e++){const s=t[e].numerator<0n?-t[e].numerator:t[e].numerator,r=t[e].denominator<0n?-t[e].denominator:t[e].denominator;n=bigintGCD(n,s),i=funcsimp_bigintLCM(i,r)}if(0n===n)return null;if(1n===n&&1n===i)return null;const s=`${n}/${i}`,r=Expression_Expression.create(s);let o=!1;for(const t of e){if(t.coeff.div(r).abs().isOne()){o=!0;break}}if(!o){if(!e.every(e=>{const t=e.coeff.div(r).getMultiplier();return 1n===t.denominator||-1n===t.denominator}))return null}return r}(e);if(i&&!i.isOne()){let n=one();for(const t of e){const e=t.coeff.div(i),s=e.sign(),r=e.abs();let o=t.arg;r.isOne()||(o=liftCoefficientIntoPower(t.arg,e)),n=s>=0?n.times(o):n.times(o.invert())}const s=Expression_Expression.toFunction("log",[n]),r=[...t,i.times(s)];if(1===r.length)return r[0];let o=zero();for(const e of r)o=o.plus(e);return o}let s=one();for(const t of e){const e=t.coeff.sign(),n=shouldLiftCoefficient(t.coeff,!0);let i=t.arg;n&&(i=liftCoefficientIntoPower(t.arg,t.coeff)),s=e>=0?s.times(i):s.times(i.invert())}const r=Expression_Expression.toFunction("log",[s]),o=[...t,r];if(1===o.length)return o[0];let a=zero();for(const e of o)a=a.plus(e);return a}(l,a);if(i!==e){let e=i;if(u.length>0)for(const t of u)e=e.plus(t.original);return applyOuterMultiplierAndPower(e,t,n)}}if(u.length>=2){const i=[...a];for(const e of l)if(shouldLiftCoefficient(e.coeff,!1)){const t=liftCoefficientIntoPower(e.arg,e.coeff);i.push(Expression_Expression.toFunction("log",[t]))}else i.push(e.original);const s=function combineSymbolicLogTerms(e,t,n){const i=new Map;for(const t of e){const e=t.coeff.abs().text(),n=i.get(e);n?n.push(t):i.set(e,[t])}const s=[...t];let r=!1;for(const[,e]of i){if(e.length<2){for(const t of e)s.push(t.original);continue}r=!0;const t=e.filter(e=>e.coeff.sign()>=0),n=e.filter(e=>e.coeff.sign()<0);let i=one();for(const e of t)i=i.times(e.arg);for(const e of n)i=i.times(e.arg.invert());const o=t.length>0?t[0].coeff:n[0].coeff.neg(),a=Expression_Expression.toFunction("log",[i]);s.push(o.times(a))}if(!r)return n;if(1===s.length)return s[0];let o=zero();for(const e of s)o=o.plus(e);return o}(u,i,e);if(s!==e)return applyOuterMultiplierAndPower(s,t,n)}return e}function applyOuterMultiplierAndPower(e,t,n){return n.isOne()||(e=e.pow(n)),t.isOne()||(e=e.times(t)),e}function bigintGCD(e,t){for(e=e<0n?-e:e,t=t<0n?-t:t;t>0n;)[e,t]=[t,e%t];return e}function funcsimp_bigintLCM(e,t){return t=t<0n?-t:t,0n===(e=e<0n?-e:e)||0n===t?0n:e/bigintGCD(e,t)*t}function rewriteInverseTrig(e){if(e.isFunction(Te)||e.isFunction(Ie)||e.isFunction(Re))return function rewriteInverseTrigElement(e){const t=e.getMultiplier(),n=e.getPower(),i=e.getArguments();if(e.isFunction(Te)&&i.length>0){const e=i[0],s=Expression_Expression.create("acos(x)",{x:one().div(e)});return Expression_Expression.fromRational(t).times(s.pow(n))}if(e.isFunction(Ie)&&i.length>0){const e=i[0],s=Expression_Expression.create("asin(x)",{x:one().div(e)});return Expression_Expression.fromRational(t).times(s.pow(n))}if(e.isFunction(Re)&&i.length>0){const e=i[0],s=Expression_Expression.create("atan(x)",{x:one().div(e)});return Expression_Expression.fromRational(t).times(s.pow(n))}return e}(e);if(e.isSum()){const t=e.getMultiplier(),n=e.getPower();let i=zero();for(const t of e.elementsArray())i=i.plus(rewriteInverseTrig(t));return n.isOne()||(i=i.pow(n)),t.isOne()||(i=i.times(Expression_Expression.fromRational(t))),i}if(e.isProduct()){const t=e.getMultiplier(),n=e.getPower();let i=one();for(const t of e.elementsArray())i=i.times(rewriteInverseTrig(t));return n.isOne()||(i=i.pow(n)),t.isOne()||(i=i.times(Expression_Expression.fromRational(t))),i}return e}function rationalize(e){const t=e.getNumerator(),n=e.getDenominator();if(n.isOne()||!n.isProduct()&&n.isLinear())return e;const i=n.getPower(),s=n.toLinearAndUnitMultiplier();return t.div(s.times(n.getMultiplier())).times(s.pow(one().minus(i)))}function cancelCommonFactors(e){if(!e.isProduct()||!e.isLinear())return e;let t=e;const[n,i]=function subRadicals(e){let t=e.getNumerator(),n=e.getDenominator();const i={},s={},r={};function collectPowers(e){const t=e.elementsArray();for(const e of t)if(e.hasRadical()){if(e.isNUM())continue;const t=e.getPower().getDenominator(),n=e.value,s=i[n];i[n]=s?i[n].times(t):t}}function makeSubstitutions(e){for(const t in i){const n=r[t]?r[t]:getU(e,s);r[t]=n;const o=i[t],a=o.getMultiplier().numerator;s[n]=Expression_Expression.create(t).pow(o.invert()),e=rewriteRadicals(e,t,Expression_Expression.create(n),a)}return e}return collectPowers(t),collectPowers(n),t=makeSubstitutions(t),n=makeSubstitutions(n),[t.div(n),s]}(e),[s,r]=uSubConstants(n,i);let o=s.getNumerator(),a=s.getDenominator();function reduce(e,t){const n=new Polynomial(e);for(const i of polyFactorExpressions(t)){if(i.isNUM())continue;const s=new Polynomial(i),[r,o]=utils_divide(n,s);if(o.isZero()){e=r;const[n,i]=utils_divide(t,s);t=n}}return[e,t]}return o.isPolynomialLike()&&a.isPolynomialLike()&&([o,a]=reduce(o,a),[a,o]=reduce(a,o),t=o.div(a)),uUnSub(t,r)}function hasDerivedTrig(e){let t=!1;return e.forEveryElement(e=>((e.isFunction(be)||e.isFunction(Se)||e.isFunction(Me)||e.isFunction(Ae))&&(t=!0),e)),t}function rewrite(e){if(e.isFunction(be)||e.isFunction(Ae)||e.isFunction(Se)||e.isFunction(Me))return function rewriteTrigElement(e){const t=e.getMultiplier(),n=e.getPower(),i=e.getArguments();if(e.isFunction(be)&&i.length>0){const e=i[0];return Expression_Expression.fromRational(t).times(trig_sin(e).pow(n)).times(trig_cos(e).pow(n.neg()))}if(e.isFunction(Ae)&&i.length>0){const e=i[0];return Expression_Expression.fromRational(t).times(trig_cos(e).pow(n)).times(trig_sin(e).pow(n.neg()))}if(e.isFunction(Se)&&i.length>0){const e=i[0];return Expression_Expression.fromRational(t).times(trig_cos(e).pow(n.neg()))}if(e.isFunction(Me)&&i.length>0){const e=i[0];return Expression_Expression.fromRational(t).times(trig_sin(e).pow(n.neg()))}return e}(e);if(e.isSum()){const t=e.getMultiplier(),n=e.getPower();let i=zero();for(const t of e.elementsArray())i=i.plus(rewrite(t));return n.isOne()||(i=i.pow(n)),t.isOne()||(i=i.times(Expression_Expression.fromRational(t))),i}if(e.isProduct()){const t=e.getMultiplier(),n=e.getPower();let i=one();for(const t of e.elementsArray())i=i.times(rewrite(t));return n.isOne()||(i=i.pow(n)),t.isOne()||(i=i.times(Expression_Expression.fromRational(t))),i}return e.isFunction(),e}function tryRewriteTrig(e){if(!hasDerivedTrig(e))return e;const t=rewrite(e);return complexity(t)<=complexity(e)?t:e}function complexity(e){let t=e.text().length;const n=new Set;return e.forEveryElement(e=>(e.isFunction(we)&&n.add(we),e.isFunction(ve)&&n.add(ve),e.isFunction(be)&&n.add(be),e.isFunction(Se)&&n.add(Se),e.isFunction(Me)&&n.add(Me),e.isFunction(Ae)&&n.add(Ae),e)),t+=10*n.size,t}function extractTrigSquared(e){if((e.isFunction(we)||e.isFunction(ve))&&e.getPower().eq(two()))return{coeff:Expression_Expression.fromRational(e.getMultiplier()),trigFn:e.isFunction(we)?we:ve,arg:e.getArguments()[0],trigPower:e.getPower(),original:e};if(e.isProduct()){let t=null,n=null,i=one();const s=[];for(const r of e.elementsArray())!t&&(r.isFunction(we)||r.isFunction(ve))&&r.getPower().eq(two())?(t=r,n=r.isFunction(we)?we:ve,i=Expression_Expression.fromRational(r.getMultiplier())):s.push(r);if(t&&n){let r=Expression_Expression.fromRational(e.getMultiplier());for(const e of s)r=r.times(e);return r=r.times(i),{coeff:r,trigFn:n,arg:t.getArguments()[0],trigPower:t.getPower(),original:e}}}return null}function extractDerivedTrigSquared(e){const t=[be,Se,Me,Ae];for(const n of t)if(e.isFunction(n)&&e.getPower().eq(two()))return{coeff:Expression_Expression.fromRational(e.getMultiplier()),trigFn:n,arg:e.getArguments()[0],trigPower:e.getPower(),original:e};if(e.isProduct()){let n=null,i=null,s=one();const r=[];for(const o of e.elementsArray())if(n)r.push(o);else{for(const e of t)if(o.isFunction(e)&&o.getPower().eq(two())){n=o,i=e,s=Expression_Expression.fromRational(o.getMultiplier());break}n||r.push(o)}if(n&&i){let t=Expression_Expression.fromRational(e.getMultiplier());for(const e of r)t=t.times(e);return t=t.times(s),{coeff:t,trigFn:i,arg:n.getArguments()[0],trigPower:n.getPower(),original:e}}}return null}function simplifyTrigSum(e){if(!e.isSum())return e;let t=function simplifyPythagorean(e){if(!e.isSum())return e;const t=[],n=[];for(const i of e.elementsArray()){const e=extractTrigSquared(i);e?t.push(e):n.push(i)}const i=t.some(e=>e.trigFn===we),s=t.some(e=>e.trigFn===ve);if(!i||!s)return e;const r=new Map;for(const e of t){const t=e.arg.text();let n=r.get(t);n||(n={sins:[],coss:[]},r.set(t,n)),e.trigFn===we?n.sins.push(e):n.coss.push(e)}const o=[...n];for(const[,e]of r){const{sins:t,coss:n}=e,i=new Set,s=new Set;for(let e=0;e<t.length;e++)for(let r=0;r<n.length;r++)i.has(e)||s.has(r)||t[e].coeff.eq(n[r].coeff)&&(o.push(t[e].coeff),i.add(e),s.add(r));for(let e=0;e<t.length;e++)if(!i.has(e))for(let r=0;r<n.length;r++)if(!s.has(r)&&t[e].arg.eq(n[r].arg)){const a=t[e].coeff,l=n[r].coeff;let u,c,p;1===a.minus(l).sign()?(u=l,c=a,p=trig_sin(t[e].arg).pow(two())):(u=a,c=l,p=trig_cos(n[r].arg).pow(two()));const m=u.getDenominator(),g=u.times(m),h=c.minus(u).times(m),d=g.plus(h.times(p));o.push(one().div(m).times(d)),i.add(e),s.add(r)}for(let e=0;e<t.length;e++)i.has(e)||o.push(t[e].original);for(let e=0;e<n.length;e++)s.has(e)||o.push(n[e].original)}if(1===o.length)return o[0];let a=zero();for(const e of o)a=a.plus(e);return a}(e);return t.isSum()&&(t=function simplifyDerivedPythagorean(e){if(!e.isSum())return e;const t=[],n=[];for(const i of e.elementsArray()){const e=extractDerivedTrigSquared(i);e?t.push(e):n.push(i)}if(t.length<2)return e;const i=new Map;for(const e of t){const t=e.arg.text();let n=i.get(t);n||(n={secs:[],tans:[],cscs:[],cots:[]},i.set(t,n)),e.trigFn===Se?n.secs.push(e):e.trigFn===be?n.tans.push(e):e.trigFn===Me?n.cscs.push(e):e.trigFn===Ae&&n.cots.push(e)}const s=[...n];for(const[,e]of i){const{secs:t,tans:n,cscs:i,cots:r}=e,o=new Set,a=new Set,l=new Set,u=new Set;for(let e=0;e<t.length;e++)for(let i=0;i<n.length;i++){if(o.has(e)||a.has(i))continue;const r=t[e].coeff,l=n[i].coeff;r.eq(l.neg())&&(s.push(r),o.add(e),a.add(i))}for(let e=0;e<i.length;e++)for(let t=0;t<r.length;t++){if(l.has(e)||u.has(t))continue;const n=i[e].coeff,o=r[t].coeff;n.eq(o.neg())&&(s.push(n),l.add(e),u.add(t))}for(let e=0;e<t.length;e++)o.has(e)||s.push(t[e].original);for(let e=0;e<n.length;e++)a.has(e)||s.push(n[e].original);for(let e=0;e<i.length;e++)l.has(e)||s.push(i[e].original);for(let e=0;e<r.length;e++)u.has(e)||s.push(r[e].original)}if(1===s.length)return s[0];let r=zero();for(const e of s)r=r.plus(e);return r}(t)),t}function hasFactorialRatio(e){if(!e.isProduct())return!1;let t=!1,n=!1;for(const i of e.elementsArray())i.isFunction("fact")&&(1===i.getPower().sign()?t=!0:-1===i.getPower().sign()&&(n=!0));return t&&n}function simplify(e,t={}){"string"==typeof e&&(e=Expression_Expression.create(e));const n=e.hasDecimal();(function hasDerivedInverseTrig(e){let t=!1;return e.forEveryElement(e=>((e.isFunction(Te)||e.isFunction(Ie)||e.isFunction(Re))&&(t=!0),e)),t})(e)&&(e=rewriteInverseTrig(e));let i=e=(e=toCommonDenominator(e)).getNumerator().expand().div(e.getDenominator().expand());return t.image===e.text()||(i=simplifyArguments(i),i.isProduct()&&hasFactorialRatio(i)&&(i=simplifyFactorials(i)),!hasFactorialRatio(i)&&e.isProduct()&&hasFactorialRatio(e)||(e.isComplex()?i=function complexSimplify(e){const t=e.getPower();if(!t.isInteger()||!t.isMinusOne())return e;const n=expand(e.invert()),i=n.realPart(),s=n.imagPart(),r=i.pow(two()).plus(s.pow(two()));return i.div(r).minus(s.div(r).times(Expression_Expression.Img()))}(i):!function hasIrrationalDenominator(e){return e.hasRadical(!0)}(i)?i.isSum()?(i=tryRewriteTrig(i),i=simplifyTrigSum(i),i=factorCommonPower(i),i=simplifyLogs(i)):i.isProduct()&&i.isLinear()&&(i=simplifyFactorials(i),i=function simplifyRadicals(e){if(!e.isProduct())return e;const t=e.getMultiplier(),n=e.getPower();let i=one();const s=e.toLinearAndUnitMultiplier(),r=s.getMultiplier(),o=s.elementsArray().map(e=>e.hasRadical()?rationalize(e):e),a=[];for(let e=0;e<o.length;e++){if(a.includes(e))continue;let t=o[e];const n=t.getPower();for(let i=e+1;i<o.length;i++){const e=o[i];if(n.eq(e.getPower())){const s=t.toLinearAndUnitMultiplier(),r=e.toLinearAndUnitMultiplier();if(!s.isComplex()&&!r.isComplex()&&s.gte(zero())&&r.gte(zero())){const o=t.getMultiplier().times(e.getMultiplier());t=s.isNUM()&&r.isNUM()?s.times(r).pow(n).times(o):Expression_Expression.setPower(s.times(r),n).times(o),a.push(i)}}}i=i.times(t)}return i.pow(n).times(t).times(r)}(i),i=function cancelNestedFactors(e){if(!e.isProduct())return e;const t=[],n=[],i=[];let s=0;for(const r of e.elementsArray()){const e=r.getPower();if(-1===e.sign()&&e.isMinusOne?.()){const e=r.invert();e.isProduct()?n.push({base:e,index:s}):i.push(r)}else 1===e.sign()?t.push(r):i.push(r);s++}if(0===n.length||0===t.length)return e;let r=!1;const o=new Set;for(const e of n){const n=e.base.elementsArray(),s=e.base.getMultiplier(),a=[];let l=!1;for(const e of n){let n=!1;for(let i=0;i<t.length;i++){if(o.has(i))continue;const s=t[i].toUnitMultiplier(),a=e.toUnitMultiplier();if(s.eq(a)){const s=t[i].getMultiplier().div(e.getMultiplier());s.isOne()?o.add(i):t[i]=Expression_Expression.fromRational(s),n=!0,l=!0,r=!0;break}}n||a.push(e)}if(l)if(0===a.length)i.push(Expression_Expression.fromRational(s).invert());else{let e=Expression_Expression.fromRational(s);for(const t of a)e=e.times(t);i.push(e.invert())}else i.push(e.base.invert())}if(!r)return e;let a=Expression_Expression.fromRational(e.getMultiplier());for(let e=0;e<t.length;e++)o.has(e)||(a=a.times(t[e]));for(const e of i)a=a.times(e);return a}(i),i=cancelCommonFactors(i),i=tryRewriteTrig(i)):i=rationalize(i))),i=function factorResult(e){if(e.isNUM())return e;function rebuildFactorResult(e,t){let n=product(...t);return e.hasDecimal()&&1===t.length&&t[0].eq(e)&&(n=e),n}const t=e.getNumerator(),n=e.getDenominator(),i=rebuildFactorResult(t,polyFactorExpressions(t)),s=rebuildFactorResult(n,polyFactorExpressions(n));return i.div(s)}(i),n&&(i.getMultiplier().asDecimal=!0),i}function simplifyArguments(e){let t;const n=e.getMultiplier(),i=e.getPower();if(e.isFunction())t=Expression_Expression.toFunction(e.name,e.getArguments().map(e=>simplify(e)));else if(e.isProduct()){t=one();for(const n of e.elementsArray()){const e=simplifyArguments(n);t=t.times(e)}}else if(e.isSum()){t=zero();for(const n of e.elementsArray())t=t.plus(simplifyArguments(n))}return t=t?t.pow(i).times(n):e,t}function polynomialize(e,t,n){t??={};let i=e.isPolynomialLike()?e:simplify(e);[i,t]=function uSubFN(e,t){return t??={},e.functions(void 0,!0).forEach(n=>{[e,t]=uSub(e,helpers_(n),t)}),[e,t]}(i,t),[i,t]=function uSubEXP(e,t){t??={};const n=new Set;e.forEveryElement(e=>(e.isEXP()&&n.add(e.toUnitMultiplier().text()),e));for(const i of n)[e,t]=uSub(e,helpers_(i),t);return[e,t]}(i,t),[i,t]=uSubConstants(i,t);const s=i.getNumerator(),r=i.getDenominator();return{numerator:n?n(s,t):s,denominator:n?n(r,t):r,map:t}}function factor(e){let t;try{if((e=Expression_Expression.create(e)).isZero())t=e;else if(e.isNUM()&&e.isInteger()){let n;const i=primeFactorCounts(e.getMultiplier().numerator);for(const e in i){const t=Expression_Expression.toEXP(e,i[e]);n=n?merge(n,t):t}t=n??Expression_Expression.Number("1"),-1===e.sign()&&(t=t.neg())}else if(e.isVAR())t=e;else if(e.isFunction()){const n=e.getMultiplier(),i=e.getPower();t=Expression_Expression.toFunction(e.name,e.getArguments().map(e=>factor(e))),t=t.pow(i).times(n)}else if(e.isPolynomialLike())t=polyFactors(e).prod();else{const n=function factors(e){const{numerator:t,denominator:n}=factorExpressionParts(e);return{numerator:new Vector(t),denominator:new Vector(n)}}(e);t=n.numerator.prod().div(n.denominator.prod())}}catch{t=Expression_Expression.toFunction("factor",[e])}return t}function pfactor(e){const t=Expression_Expression.create(e);if(!t.isNUM()||!t.isInteger()||t.lte(zero()))throw new UnexpectedInputError(message("wrongInput",{expected:"a positive integer",received:t.text()}));const n=t.getMultiplier().numerator;if(1n===n)return new Vector;const i=primeFactorsBig(n).factors.map(e=>Expression_Expression.Number(e));return new Vector(i)}function pfactord(e){const t=Expression_Expression.create(e);if(!t.isNUM()||!t.isInteger()||t.lte(zero()))throw new UnexpectedInputError(message("wrongInput",{expected:"a positive integer",received:t.text()}));const n=t.getMultiplier().numerator;if(1n===n)return new Dictionary;const i=primeFactorCounts(n),s=new Dictionary;for(const e of Object.keys(i).sort((e,t)=>{const n=BigInt(e),i=BigInt(t);return n<i?-1:n>i?1:0}))s.set(e,Expression_Expression.Number(i[e]));return s}function polyFactorExpressions(e){let t;try{const n=function normalizeMultiplierDenominators(e){let t;if(e.isSum()){const n=e.distributeMultiplier(),i=n.elementsArray(),s=[];for(const e of i)s.push(e.getMultiplier().denominator);const r=LCM(...s);t=n.times(r).distributeMultiplier().div(r)}else t=e;return t}(Expression_Expression.create(e)),i=n.getNumerator(),s=n.getDenominator(),[r,o]=uSubConstants(i),a=function expressionToSparsePolynomial(e){const t=e.variables().sort(),n=new Map(t.map((e,t)=>[e,t]));function powerOf(e){const t=e.getPower();if(!t.isInteger()||t.sign()<0)throw new PolynomialError(message("notAPolynomial"));return t.getMultiplier().numerator}function integerMultiplier(e){const t=e.getMultiplier();if(1n!==t.denominator)throw new Error(message("integerRequired"));return t.numerator}const i=function convert(e){const i=t.length;if(e.isNUM())return SparsePolynomial.constant(i,integerMultiplier(e));if(e.isVAR()){const t=n.get(e.value);if(void 0===t)throw new PolynomialError(message("notAPolynomial"));const s=new Array(i).fill(0n);return s[t]=powerOf(e),SparsePolynomial.monomial(i,integerMultiplier(e),s)}if(e.isSum()){let t=SparsePolynomial.zero(i);for(const n of e.elementsArray())t=t.add(convert(n));return t.pow(powerOf(e)).scale(integerMultiplier(e))}if(e.isProduct()){let t=SparsePolynomial.constant(i,1n);for(const n of e.elementsArray())t=t.multiply(convert(n));return t.pow(powerOf(e)).scale(integerMultiplier(e))}throw new PolynomialError(message("notAPolynomial"))}(e),s=t.map((e,t)=>({variable:e,index:t,degree:i.degree(t)??0n})).sort((e,t)=>e.degree<t.degree?-1:e.degree>t.degree?1:e.variable.localeCompare(t.variable)),r=s.map(e=>e.variable);if(s.every((e,t)=>e.index===t))return{polynomial:i,variables:r};const o=i.terms().map(e=>({coefficient:e.coefficient,exponents:s.map(t=>e.exponents[t.index])}));return{polynomial:new SparsePolynomial(i.variableCount,o),variables:r}}(r),l=a.variables,u=a.polynomial;if(0===l.length)t=[Expression_Expression.Number(u.constantTerm())];else{const e=l.map((e,t)=>t),n=1===l.length?factorUnivariateInteger(u,0):factorMultivariateInteger(u,e);t=[],1n!==n.content&&t.push(Expression_Expression.Number(n.content));for(const e of n.factors){let n=sparsePolynomialToExpression(e.factor,l);e.multiplicity>1n&&(n=n.pow(Expression_Expression.Number(e.multiplicity))),t.push(n)}if(0===t.length)throw new Error(message("factorizationNoFactors"))}t=t.map(e=>uUnSub(e,o)),s.isOne()||(t[0]=t[0].div(s))}catch{t=[Expression_Expression.create(e)]}return t}function polyFactors(e){return new Vector(polyFactorExpressions(e))}function factorExpressionParts(e){const{numerator:t,denominator:n,map:i}=polynomialize(Expression_Expression.create(e));return{numerator:polyFactorExpressions(t).map(e=>uUnSub(e,i)),denominator:polyFactorExpressions(n).map(e=>uUnSub(e,i))}}function collect_collectVariablesSet(e){const t=new Set;for(const n of e){const e=n.variables();for(const n of e)t.add(n)}return Array.from(t).sort()}function gcd(e,t){try{e=Expression_Expression.create(e),t=Expression_Expression.create(t);const n=e.hasDecimal()||t.hasDecimal(),{numerator:i,denominator:s,map:r}=polynomialize(e),{numerator:o,denominator:a,map:l}=polynomialize(t,r),u=collect_collectVariablesSet([i,s,o,a]),c=expressionGCD(i,o,u),p=expressionGCD(s,a,u),m=uUnSub(c.div(p),l);return m.getMultiplier().asDecimal=n,m}catch{}return Expression_Expression.toFunction("gcd",[e,t])}function lcm(e,t){const n=Expression_Expression.create(e),i=Expression_Expression.create(t);let s;return s=n.isZero()||i.isZero()?zero():n.isNUM()&&i.isNUM()?Expression_Expression.fromRational(n.getMultiplier().LCM(i.getMultiplier()).abs()):n.times(i).div(gcd(n,i)),s}function expressionGCD(e,t,n){if(e.isNUM()&&t.isNUM())return Expression_Expression.create(e.getMultiplier().GCD(t.getMultiplier()));if(e.isZero()&&t.isZero())return zero();if(e.isZero())return Expression_Expression.create(t);if(t.isZero())return Expression_Expression.create(e);n??=collect_collectVariablesSet([e,t]);const i=expressionToIntegerSparsePolynomial(e,n),s=expressionToIntegerSparsePolynomial(t,n),r=n.map((e,t)=>t),o=sparsePolynomialGcd(i.polynomial,s.polynomial,r),a=bigint_GCD(i.denominator,s.denominator),l=sparsePolynomialToExpression(o,n);return 1n===a?l:l.div(Expression_Expression.Number(a))}class GroebnerBudgetExceeded extends Error{stats;constructor(e,t){super(e),this.name="GroebnerBudgetExceeded",this.stats=t}}function sparseOrder(e){return"LEX"===e?"lex":"GRLEX"===e?"grlex":"grevlex"}function ltOrNull(e,t){const n=e.leadingTerm(sparseOrder(t));return null===n?null:{exp:n.exponents,coeff:n.coefficient}}function polyKey(e){const t=e.terms().map(e=>`${e.exponents.join(",")}:${e.coefficient.toString()}`);return t.sort(),t.join("|")}function primitiveNormalizeOrder(e,t){if(e.isZero())return SparsePolynomial.zero(e.variableCount);let n=e.primitivePart().normalizeLeadingSign(sparseOrder(t));const i=ltOrNull(n,t);if(i&&0n!==i.coeff&&1n!==i.coeff){let e=!0;for(const t of n.terms())if(t.coefficient%i.coeff!==0n){e=!1;break}e&&(n=n.divideByScalarExact(i.coeff))}return n}function expLcmDense(e,t){if(e.length!==t.length)throw new RangeError(message("multidegreeMismatch"));const n=new Array(e.length);for(let i=0;i<e.length;i++)n[i]=e[i]>t[i]?e[i]:t[i];return n}function monoDividesDense(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]>t[n])return!1;return!0}function monoSubDense(e,t){if(t.length!==e.length)throw new RangeError(message("multidegreeMismatch"));const n=new Array(t.length);for(let i=0;i<t.length;i++)n[i]=e[i]-t[i];return n}function monomialTotalDegreeDense(e){let t=0n;for(const n of e)t+=n;return t}function reducerViews(e,t,n){const i=[];for(const s of e){const e=n?primitiveNormalizeOrder(s,t):s;if(e.isZero())continue;const r=ltOrNull(e,t);null!==r&&i.push({poly:e,lt:r})}return i}function normalFormFractionFree(e,t,n,i=reducerViews(t,n,!1),s){let r=e;if(r.isZero())return r;for(;;){const e=ltOrNull(r,n);if(!e)break;let t=!1;for(let n=0;n<i.length;n++){const{poly:o,lt:a}=i[n];if(!monoDividesDense(a.exp,e.exp))continue;const l=monoSubDense(e.exp,a.exp);if(s){const e=s.reducerSugars[n]+monomialTotalDegreeDense(l);e>s.value&&(s.value=e)}r=r.scaleSubtractMonomial(a.coeff,o,e.coeff,l),t=!0;break}if(!t)break}return r}function normalFormFractionFreeAllTerms(e,t,n,i=reducerViews(t,n,!0),s){let r=primitiveNormalizeOrder(e,n);if(r.isZero()||0===i.length)return r;const o=sparseOrder(n);for(;;){let e=null,t=null,a=-1;for(const n of r.terms()){let s=null,r=-1;for(let e=0;e<i.length;e++){const t=i[e];if(monoDividesDense(t.lt.exp,n.exponents)){s=t,r=e;break}}null!==s&&(null===e||SparsePolynomial.compareMonomials(n.exponents,e.exponents,o)>0)&&(e=n,t=s,a=r)}if(null===e||null===t)break;const l=monoSubDense(e.exponents,t.lt.exp);if(s){const e=s.reducerSugars[a]+monomialTotalDegreeDense(l);e>s.value&&(s.value=e)}r=primitiveNormalizeOrder(r.scaleSubtractMonomial(t.lt.coeff,t.poly,e.coefficient,l),n)}return r}function variablePresence(e){const t=new Array(e.variableCount).fill(!1);for(const n of e.variables())t[n]=!0;return t}function sPairSugar(e,t,n,i,s){const r=e+s-n,o=t+s-i;return r>o?r:o}function insertPairSorted(e,t){let n=0,i=e.length;for(;n<i;){const s=n+i>>>1,r=e[s];r.sugar>t.sugar||r.sugar===t.sugar&&r.lcmDeg>=t.lcmDeg?n=s+1:i=s}e.splice(n,0,t)}function groebnerBasisSparse(e,t="LEX"){const n="string"==typeof t?{order:t}:t??{},i=n.order??"LEX",s=n.reduced??!0,r=n.maxPairsPopped,o=n.maxBasisSize,a=n.strategy??"sugar",l={pairsPopped:0,pairsSkippedProduct:0,pairsSkippedChain:0,pairsReducedToZero:0,basisAppends:0},u=e.filter(e=>!e.isZero());if(0===u.length)return[];const c=u[0].variableCount;for(const e of u)if(e.variableCount!==c)throw new RangeError(message("multidegreeMismatch"));const p=u.slice(),m=reducerViews(p,i,!1),g=reducerViews(p,i,!0),h=m.map(e=>monomialTotalDegreeDense(e.lt.exp)),d=p.map(e=>e.totalDegree()??0n),x=p.map(()=>new Set),markZeroPair=(e,t)=>{x[e].add(t),x[t].add(e)},areCoprimeLM=(e,t)=>{for(let n=0;n<c;n++)if(e[n]>0n&&t[n]>0n)return!1;return!0},chainCriterionApplies=(e,t)=>{const n=expLcmDense(m[e].lt.exp,m[t].lt.exp),i=x[e],s=x[t],r=i.size<=s.size?i:s,o=r===i?s:i;for(const i of r)if(i!==e&&i!==t&&o.has(i)&&monoDividesDense(m[i].lt.exp,n))return!0;return!1},appendBasis=e=>{const t=p.length;p.push(e);const n=reducerViews([e],i,!1)[0],s=reducerViews([e],i,!0)[0];if(m.push(n),g.push(s),h.push(monomialTotalDegreeDense(n.lt.exp)),x.push(new Set),l.basisAppends++,void 0!==o&&p.length>o)throw new GroebnerBudgetExceeded(message("groebnerBasisSizeBudgetExceeded",{max:String(o)}),l);return t},reducePair=(e,t,n)=>{const s=function sPolynomialFF(e,t,n,i){const s=expLcmDense(n.exp,i.exp),r=monoSubDense(s,n.exp),o=monoSubDense(s,i.exp);return e.monomialScaleSubtract(i.coeff,r,t,n.coeff,o)}(p[e],p[t],m[e].lt,m[t].lt),r=void 0===n?void 0:{value:n,reducerSugars:d};return{polynomial:normalFormFractionFreeAllTerms(normalFormFractionFree(s,p,i,m,r),p,i,g,r),sugar:r?.value}};if("sugar"===a){const e=[],makePair=(e,t)=>{const n=monomialTotalDegreeDense(expLcmDense(m[e].lt.exp,m[t].lt.exp));return{i:e,j:t,sugar:sPairSugar(d[e],d[t],h[e],h[t],n),lcmDeg:n}};for(let t=0;t<p.length;t++)for(let n=t+1;n<p.length;n++)insertPairSorted(e,makePair(t,n));for(;e.length>0;){const{i:t,j:n,sugar:i}=e.pop();if(l.pairsPopped++,void 0!==r&&l.pairsPopped>r)throw new GroebnerBudgetExceeded(message("groebnerPairsBudgetExceeded",{max:String(r)}),l);if(areCoprimeLM(m[t].lt.exp,m[n].lt.exp)){l.pairsSkippedProduct++,markZeroPair(t,n);continue}if(chainCriterionApplies(t,n)){l.pairsSkippedChain++,markZeroPair(t,n);continue}const s=reducePair(t,n,i),o=s.polynomial;if(o.isZero()){l.pairsReducedToZero++,markZeroPair(t,n);continue}if(o.isConstant()&&0n!==o.constantTerm())return[SparsePolynomial.constant(c,1n)];const a=appendBasis(o),u=o.totalDegree()??0n,p=s.sugar??i;d.push(p>u?p:u);for(let t=0;t<a;t++)insertPairSorted(e,makePair(t,a))}}else{const e=[];for(let t=0;t<p.length;t++)for(let n=t+1;n<p.length;n++)e.push([t,n]);let t=0;for(;t<e.length;){const[n,i]=e[t++];if(l.pairsPopped++,void 0!==r&&l.pairsPopped>r)throw new GroebnerBudgetExceeded(message("groebnerPairsBudgetExceeded",{max:String(r)}),l);if(areCoprimeLM(m[n].lt.exp,m[i].lt.exp)){l.pairsSkippedProduct++,markZeroPair(n,i);continue}if(chainCriterionApplies(n,i)){l.pairsSkippedChain++,markZeroPair(n,i);continue}const s=reducePair(n,i).polynomial;if(s.isZero()){l.pairsReducedToZero++,markZeroPair(n,i);continue}if(s.isConstant()&&0n!==s.constantTerm())return[SparsePolynomial.constant(c,1n)];const o=appendBasis(s);for(let t=0;t<o;t++)e.push([t,o])}}return s?function canonicalizeBasis(e,t){const n=[],i=[],s=[],r=e.filter(e=>!e.isZero());for(const e of r){const r=normalFormFractionFreeAllTerms(normalFormFractionFree(e,n,t,i),n,t,s);r.isZero()||(n.push(r),i.push(reducerViews([r],t,!1)[0]),s.push(reducerViews([r],t,!0)[0]))}const o=[];for(let e=0;e<n.length;e++){const r=n.filter((t,n)=>n!==e),a=i.filter((t,n)=>n!==e),l=s.filter((t,n)=>n!==e),u=normalFormFractionFreeAllTerms(normalFormFractionFree(n[e],r,t,a),r,t,l);u.isZero()||o.push(u)}const a=new Map;for(const e of o)a.set(polyKey(e),e);const l=Array.from(a.values()),u=sparseOrder(t),c=new Map;for(const e of l)c.set(e,{presence:variablePresence(e),lt:ltOrNull(e,t)});return l.sort((e,t)=>{const n=c.get(e),i=c.get(t);for(let t=0;t<e.variableCount;t++){const e=n.presence[t]?1:0,s=i.presence[t]?1:0;if(e!==s)return e-s}if(n.lt&&i.lt){const e=SparsePolynomial.compareMonomials(n.lt.exp,i.lt.exp,u);if(0!==e)return e}return e.termCount-t.termCount}),l}(p,i):p}function Groebner(e,t="LEX",n=!0){if(0===e.length)return[];const i=groebnerBasisSparse(e,{order:t,reduced:n}),s=i[0]?.variableCount??e[0].variableCount,r=new Map,getInfo=e=>{let n=r.get(e);return n||(n={pv:variablePresence(e),lt:ltOrNull(e,t)},r.set(e,n)),n};return[...i].sort((e,n)=>{const i=getInfo(e),r=getInfo(n);for(let e=0;e<s;e++){const t=i.pv[e]?1:0,n=r.pv[e]?1:0;if(t!==n)return t>n?-1:1}if(i.lt&&r.lt){const e=SparsePolynomial.compareMonomials(i.lt.exp,r.lt.exp,sparseOrder(t));if(0!==e)return e}return e.termCount-n.termCount})}function groebner(e,t){const n=(Vector.isVector(e)?e.elements:e).map(e=>Expression_Expression.create(e));t??=collect_collectVariablesSet(n);const i=n.map(e=>expressionToIntegerSparsePolynomial(e,t).polynomial);return new Vector(Groebner(i).map(e=>sparsePolynomialToExpression(e,t)))}function partfrac(e,t){const n=Expression_Expression.create(e);let i=n;const s=n.variables(),r=t?String(t):s[0];if(r&&s.length>0){const{num:e,den:t}=function extractNumDen(e,t){try{const t=e.getNumerator(),n=e.getDenominator();if(n&&!n.isOne())return{num:t,den:n}}catch{}if(e.isProduct()){let t=one(),n=one();for(const i of e.elementsArray())i.getPower().isNegative()?n=n.times(i.invert()):t=t.times(i);return t=t.times(Expression_Expression.fromRational(e.getMultiplier())),{num:t,den:n}}if(-1===e.getPower().sign())return{num:Expression_Expression.fromRational(e.getMultiplier()),den:e.invert()};return{num:e,den:one()}}(n);if(t.hasVariable(r)){const n=new Polynomial(e,[r]),s=new Polynomial(t,[r]),o=n.deg(),a=s.deg();let l=zero(),u=e;if(o>=a){const[n,i]=utils_divide(e,t);l=n,u=i}if(Expression_Expression.create(u).isZero())i=l;else if(a<=1)l.isZero()||(i=l.plus(u.div(t)));else{const e=function collectFactors(e,t){const n=[],i=new Map;for(const s of e){let e=s;if(!e.hasVariable(t))continue;let r=1;const o=e.getPower();if(o.isInteger()){const t=Number(o.getNumerator());t>1&&(r=t,e=e.getBase())}const a=e.text(),l=new Polynomial(e,[t]).deg();i.has(a)?n[i.get(a)].power+=r:(i.set(a,n.length),n.push({expr:e,power:r,degree:l}))}return n}(polyFactorExpressions(t),r);if(e.length>1||1===e.length&&e[0].power>1){const n=function decompose(e,t,n,i){const s=[];let r=0;for(const e of n)for(let t=1;t<=e.power;t++)s.push({factor:e.expr,power:t,unknownIndex:r,numUnknowns:e.degree}),r+=e.degree;const o=[];for(const e of n)if(1===e.degree){const t=findLinearRoot(e.expr,i);void 0!==t&&o.push(t)}let a=0;for(;o.length<r;){const e=Expression_Expression.Number(a);if(!evaluateAt(t,i,e).isZero()){o.some(t=>t.eq(e))||o.push(e)}a=a<=0?1-a:-a}const l=[],u=[],c=s.map(e=>function computeCofactor(e,t,n){const i=1===n?t:t.pow(Expression_Expression.Number(n)),[s]=utils_divide(e,i);return s}(t,e.factor,e.power));for(let t=0;t<r;t++){const n=o[t],r=evaluateAt(e,i,n);u.push(r);const a=[];for(let e=0;e<s.length;e++){const t=s[e],r=evaluateAt(c[e],i,n);for(let e=t.numUnknowns-1;e>=0;e--){const t=0===e?one():n.pow(Expression_Expression.Number(e));a.push(t.times(r))}}l.push(a)}const p=function solveLinearSystem(e,t){const n=t.length;if(0===n)return[];const i=new Matrix(...e),s=new Matrix(...t.map(e=>[e])),r=i.augment(s).rref(),o=r.rows(),a=r.cols()-1;if(o!==n||a!==n)return;for(let e=0;e<o;e++){let t=!0;for(let n=0;n<a;n++)if(!r.elements[e][n].isZero()){t=!1;break}if(t&&!r.elements[e][a].isZero())return}const l=new Array(n),u=new Set;for(let e=0;e<o;e++){let t=-1;for(let n=0;n<a;n++)if(!r.elements[e][n].isZero()){t=n;break}if(-1!==t){if(!r.elements[e][t].eq(one()))return;if(u.has(t))return;u.add(t),l[t]=r.elements[e][a]}}if(u.size!==n)return;for(let e=0;e<n;e++)if(!l[e])return;return l}(l,u);if(void 0===p)return;let m=zero();const g=Expression_Expression.create(i);for(const e of s){const t=1===e.power?e.factor:e.factor.pow(Expression_Expression.Number(e.power));let n=zero();for(let t=0;t<e.numUnknowns;t++){const i=p[e.unknownIndex+t],s=e.numUnknowns-1-t,r=0===s?one():g.pow(Expression_Expression.Number(s));n=n.plus(i.times(r))}n.isZero()||(m=m.plus(n.div(t)))}return m}(u,t,e,r);void 0!==n&&(i=l.isZero()?n:l.plus(n))}}}}return i.text()===n.text()?n:i}function findLinearRoot(e,t){const n=evaluateAt(e,t,zero()),i=evaluateAt(e,t,one()).plus(n.times(minusOne()));if(!i.isZero())return n.times(minusOne()).div(i)}function evaluateAt(e,t,n){return e.subst(t,n)}function sqcomp(e,t){const n=Expression_Expression.create(e);if(!t){const e=n.variables();if(0===e.length)throw new UnexpectedInputError(message("noVariableInExpression"));t=e[0]}const i=n.coeffs(t);if(2!==i.max())throw new UnexpectedInputError(message("quadraticExpressionExpected"));const s=i.hasPower(2)?i.getPower(2):zero(),r=i.hasPower(1)?i.getPower(1):zero(),o=i.hasPower(0)?i.getPower(0):zero(),a=r.div(s.times(two())),l=o.minus(r.pow(two()).div(s.times(four()))),u=Expression_Expression.create(t),c=s.times(u.plus(a).pow(two())).plus(l);return{a:s,h:a,k:l,variable:t,expression:c}}function deg(e,t){let n,i,s;if(void 0!==t&&(n=Expression_Expression.create(t),i=assertPlainVariableAndGetString(n)),Polynomial.isPolynomial(e))s=Expression_Expression.create(e.deg(i));else{const t=Expression_Expression.create(e);try{const e=t.variables().sort(),n=expressionToIntegerSparsePolynomial(t,e);let r;if(void 0===i)r=n.polynomial.totalDegree()??0n;else{const t=e.indexOf(i);r=-1===t?0n:n.polynomial.degree(t)??0n}s=Expression_Expression.Number(r)}catch{try{s=Expression_Expression.create(new Polynomial(t).deg(i))}catch{}}}const r=Polynomial.isPolynomial(e)?e.getExpression():e,o=void 0===n?[r]:[r,n];return s??Expression_Expression.toFunction("deg",o)}function content(e){let t;if(Polynomial.isPolynomial(e))t=Expression_Expression.create(e.content());else{const n=Expression_Expression.create(e);try{if(n.isZero())t=Expression_Expression.create(new Polynomial(n).content());else{const e=n.variables().sort(),i=expressionToIntegerSparsePolynomial(n,e);t=Expression_Expression.Number(i.polynomial.content()).div(Expression_Expression.Number(i.denominator)),t.getMultiplier().asDecimal=n.hasDecimal()}}catch{try{t=Expression_Expression.create(new Polynomial(n).content())}catch{}}}return t??Expression_Expression.toFunction("content",[Polynomial.isPolynomial(e)?e.getExpression():e])}function functions_coeffs(e,t){const n=Expression_Expression.create(e);let i;return i=void 0!==t?assertPlainVariableAndGetString(Expression_Expression.create(t)):n.variables()[0],void 0===i?new Vector([n.copy()]):n.coeffs(i).toVector()}function functions_div(e,t){const n=Expression_Expression.create(e),i=Expression_Expression.create(t);let s;if(n.isPolynomialLike()&&i.isPolynomialLike()){const[e,t]=utils_divide(n,i);s=new Vector([e,t])}else s=new Vector([zero(),n]);return s}function functions_divide(e,t){const n=Expression_Expression.create(e),i=Expression_Expression.create(t);let s;if(n.isPolynomialLike()&&i.isPolynomialLike()){const[e,t]=utils_divide(n,i);s=e.plus(t.div(i))}else s=n.div(i);return s}const on=sqcomp,an={TeX:"TeX",TEXT:"text"};class BaseConverter{static GREEK_LETTERS=["alpha","beta","gamma","delta","epsilon","zeta","eta","theta","iota","kappa","lambda","mu","nu","xi","omnikron","pi","rho","sigma","tau","upsilon","phi","chi","psi","omega","Gamma","Delta","Epsilon","Theta","Lambda","Xi","Pi","Sigma","Phi","Psi","Omega"];static modes=an;greek=BaseConverter.GREEK_LETTERS;modes=[an.TeX,an.TEXT];mode=this.modes[0];static convertNtRoot(e,t){return Expression_Expression.toFunction("nthroot",[BaseConverter.strip(e),t])}static convertSQRT(e){return Expression_Expression.toFunction("sqrt",[BaseConverter.strip(e)])}static join(e,t,n){return e||t?e&&!t?e:t&&!e?t:e+n+t:""}static merge(e,t){return[e[0]+t[0],e[1]+t[1]]}static strip(e){const t=e.copy();return delete t.power,delete t.multiplier,t}cleanup(){}convertPower(e,t,n){return t.isOne()||e.isNUM()&&t.isZero()?"":this.convert(t,n)}finalizePowerAndInput(e,t,n){return[e,t]}formatPowerOutput(e,t){const n=["",""];for(let i=0;i<e.length;i++){const s=e[i];if(""===s){n[i]="";continue}const r=this.mode===BaseConverter.modes.TEXT&&t?this.inBrackets(s):this.inBraces(s);n[i]="^"+r}return n}formatSubscripts(e){const t=e.split("_");let n="";for(;t.length>1;)n="_"+this.inBraces(t.pop()+n);return t[0]+n}getMultiplicationSymbol(){return"TeX"===this.mode?" \\cdot ":"*"}inBraces(e){return this.mode===BaseConverter.modes.TEXT?e:`{${e}}`}inBrackets(e,t="parens"){const[n,i]={parens:["(",")"],square:["[","]"],brace:["{","}"],abs:["|","|"]}[t];return this.mode===BaseConverter.modes.TEXT?`${n}${e}${i}`:"brace"===t?`\\left\\{${e}\\right\\}`:`\\left${n}${e}\\right${i}`}initInput(e){return e}isBracketed(e){return/^\\left\(.+\\right\)$/.test(e)}requiresMultiplicationSymbol(e){return e.isSum()}set(e,t,n,i){const s=this.getMultiplicationSymbol(),r=i.isProduct();let o;if(n){const e=i.getPower(),t=(e.isSum()||e.isProduct())&&e.isLinear()||e.isNUM()&&!e.isInteger()||-1===e.getPower().sign();n=this.formatPowerOutput(n,t)}r&&(o=n[0],n[0]=""),t=BaseConverter.merge(t,n);let[a,l]=e;const[u,c]=t;u&&1===Number(a)&&(a=""),1===Number(l)&&(l="");const p=this.requiresMultiplicationSymbol(i),m=this.mode===BaseConverter.modes.TeX,g=BaseConverter.join(a,u,m||!this.isBracketed(u)||p?s:"");let h=BaseConverter.join(l,c,m||!this.isBracketed(c)||p?s:"");if(l&&c&&this.mode===BaseConverter.modes.TEXT&&(h=this.inBrackets(h)),g&&h){let e=this.toFraction(g,h);return r&&o&&(e=this.inBrackets(e)+o),e}return g}setMultiplier(e,t,n,i){i?.decimal?t[0]=e.isInteger()?String(e.numerator):e.text(i):(t[0]=String(e.numerator),t[1]=String(e.denominator))}toFraction(e,t){return"TeX"===this.mode?"\\frac"+this.inBraces(this.stripOuterBrackets(e))+this.inBraces(this.stripOuterBrackets(t)):`${e}/${t}`}value(e,t,n,i){return["",""]}convertCollection(e,t){const n=e.elements.map(e=>this.convert(e,t)).join(this.mode===BaseConverter.modes.TeX?", \\, ":", ");return this.inBrackets(n)}convertDictionary(e,t){const n=e.entries().map(([e,n])=>{const i=this.convert(n,t);return this.mode===BaseConverter.modes.TeX?`${e} \\mapsto ${i}`:`${e} => ${i}`}).join(this.mode===BaseConverter.modes.TeX?", \\, ":", ");return this.mode===BaseConverter.modes.TeX?`\\left\\{${n}\\right\\}`:`{${n}}`}convertEquation(e,t){return`${this.convert(e.LHS,t)}=${this.convert(e.RHS,t)}`}convertExpression(e,t){const n=(e=this.initInput(e)).getPower(),i=n.isComplex(),s=i?n:n.signFree(),r=!i&&(n.lt(zero())||-1===n.sign()),o=e.getMultiplier().isNegative(),a=e.getMultiplier().abs(),l=["",""];t.ignoreMultiplier||this.setMultiplier(a,l,e,t);const[u,c]=this.finalizePowerAndInput(s,e,t),p=this.value(c,r,o,t),m=this.convertPower(c,u,t),g=["",""];g[r?1:0]=m;const h=(o?"-":"")+this.set(l,p,g,c);return this.cleanup(),h.replace(/\+-/g,"-")}convertMatrix(e,t){let n;if(this.mode===BaseConverter.modes.TEXT){n=`matrix(${e.elements.map(e=>`[${e.map(e=>this.convert(e,t)).join(", ")}]`).join(", ")})`}else{const i=t.matrixStyle||"",s={...t,insideMatrix:!0};n=`\\begin{${i}matrix} ${e.elements.map(e=>e.map(e=>this.convert(e,s)).join(" & ")).join(" \\\\ ")} \\end{${i}matrix}`}return n}convertValuesSet(e,t){const n=e.elements.map(e=>this.convert(e,t)).join(this.mode===BaseConverter.modes.TeX?", \\, ":", ");return this.mode===BaseConverter.modes.TeX?`\\left\\{${n}\\right\\}`:`{${n}}`}stripOuterBrackets(e){const t="\\left(",n="\\right)";let i=e;if(e.startsWith(t)&&e.endsWith(n)){let s=0,r=!0;for(let i=0;i<e.length&&r;)e.startsWith(t,i)?(s++,i+=6):e.startsWith(n,i)?(s--,i+=7,(0===s&&i<e.length||s<0)&&(r=!1)):i++;r&&0===s&&(i=e.slice(6,-7))}return i}convert(e,t){if(t={convertRoots:!0,...t},"number"==typeof e)return String(e);if("string"==typeof e||Expression_Expression.isExpression(e))return this.convertExpression(Expression_Expression.create(e),t);if("COL"===e.dataType)return this.convertCollection(e,t);if("EQN"===e.dataType)return this.convertEquation(e,t);if("VEC"===e.dataType){const n=e,i=t.insideMatrix?" & ":this.mode===BaseConverter.modes.TeX?", \\, ":", ",s=n.arrayMap(e=>this.convert(e,t)).join(i);return t.insideMatrix?s:this.inBrackets(s,"square")}if("MAT"===e.dataType)return this.convertMatrix(e,t);if("SOL"===e.dataType)return this.convertValuesSet(e,t);if("SET"===e.dataType)return this.convertValuesSet(e,t);if("DIC"===e.dataType)return this.convertDictionary(e,t);throw new Error(message("unsupportedType",{type:Y[e.dataType]||typeof e}))}setMode(e){if(!this.modes.includes(e))throw new Error(message("unrecognizedMode",{mode:e}));this.mode=e}}const{TeX:un,TEXT:cn}=BaseConverter.modes;class Converter extends BaseConverter{static TEX_FUNCTION_MAP={acos:"arccos",asin:"arcsin",atan:"arctan",asec:"operatorname{arcsec}",acsc:"operatorname{arccsc}",acot:"operatorname{arccot}",acosh:"operatorname{arcosh}",asinh:"operatorname{arsinh}",atanh:"operatorname{artanh}",asech:"operatorname{arsech}",acsch:"operatorname{arcsch}",acoth:"operatorname{arcoth}",sech:"operatorname{sech}",csch:"operatorname{csch}",coth:"operatorname{coth}",realpart:"Re",imagpart:"Im",sign:"operatorname{sgn}",sinc:"operatorname{sinc}",erf:"operatorname{erf}",erfc:"operatorname{erfc}",determinant:"det"};static TEX_REVERSE_MAP={arccos:"acos",arcsin:"asin",arctan:"atan",arcsec:"asec",arccsc:"acsc",arccot:"acot",arcosh:"acosh",arsinh:"asinh",artanh:"atanh",arsech:"asech",arcsch:"acsch",arcoth:"acoth",det:"determinant",deg:"deg",sgn:"sign",operatorname:"",Gamma:"gamma",delta:"delta",Re:"realpart",Im:"imagpart"};constructor(e){super(),e&&this.setMode(e)}static clearOnes(e,t){for(let n=0;n<2;n++)t[n]&&1===Number(e[n])&&(e[n]="");return[e,t]}static wrapRoot(e,t){return"2"===t?`\\sqrt{${e}}`:`\\sqrt[${t}]{${e}}`}finalizePowerAndInput(e,t,n){if(!n?.convertRoots)return[e,t];const i=e.getNumerator(),s=e.getDenominator();if(i.isOne()&&!e.isOne()){if(this.mode===BaseConverter.modes.TEXT&&s.eq(two()))return[one(),BaseConverter.convertSQRT(t)];if(this.mode===BaseConverter.modes.TeX)return[one(),BaseConverter.convertNtRoot(t,s)]}return[e,t]}functionString(e,t){const n=this.getFunctionName(e.name||""),i=e.getArguments(),s=i.map(e=>this.convert(e,t));return this.mode===cn?`${n}(${s.join(",")})`:this.formatTeXFunction(e.name||"",n,s,i)}value(e,t,n,i){const s=["",""],r=t?1:0;if(e.isNUM())return s;if(e.isEXP())s[r]=this.handleExp(e,i);else if(e.isInf())s[r]="text"===this.mode?ae[0]:"\\infty";else if(e.elements||e.args){if(e.isFunction())s[r]=this.functionString(e,i);else if(e.isSum())s[r]=this.handleSum(e,n,i);else if(e.isProduct())return this.handleProduct(e,t,i)}else s[r]=this.formatVariable(e.value);return s}convertSourceRPN(e,t){const n=[];for(let i=0;i<e.length;i++){const s=e[i];if(Scope.isScope(s)){const e=this.convertSourceRPN(s,t),i=e.args?e.args.map(e=>e.text).join(","):e.text,r=e.args?e.args.map(e=>e.source).join(","):e.source;let o=i,a=r;switch(s.type){case"parenthesis":o=this.inBrackets(i),a=`(${r})`;break;case"square":o=this.inBrackets(i,"square"),a=`[${r}]`;break;case"curly":o=this.inBrackets(i,"brace"),a=`{${r}}`;break;case"pipe":o=this.inBrackets(i,"abs"),a=`|${r}|`}n.push({text:o,source:a})}else if(s.type===Token.FUNCTION){const r=e[++i];if(!Scope.isScope(r))throw new Error(message("converterMissingArgumentScope",{function:s.value}));let o=[];if(r.length>0){const e=wt[s.value]?.deferArguments?Bt.toRPN(r):r,n=this.convertSourceRPN(e,t);o=n.args??[n]}const a=o.map(e=>e.text),l=o.map((e,t)=>Expression_Expression.create(`zzsourcearg${t}`)),u=this.getFunctionName(s.value);let c;if(s.value===Expression_Expression.LOG&&2===o.length){const e=this.formatTeXFunction(Expression_Expression.LOG,u,[a[0]],[l[0]]),t=this.formatTeXFunction(Expression_Expression.LOG,u,[a[1]],[l[1]]);c=this.toFraction(e,t)}else c="sqrt"===s.value&&1===o.length?Converter.wrapRoot(a[0],"2"):1!==o.length||"fact"!==s.value&&"factorial"!==s.value&&"dfact"!==s.value?this.formatTeXFunction(s.value,u,a,l):this.formatTeXFunction(s.value,u,a,[Expression_Expression.create(o[0].source)]);n.push({text:c,source:`${s.value}(${o.map(e=>e.source).join(",")})`})}else if(s.type===Token.PREFIX){const e=n.pop();if(!e)throw new Error(message("converterMissingPrefixOperand",{operator:s.value}));n.push({text:s.value+e.text,source:s.value+e.source})}else if(s.type===Token.OPERATOR){const e=s.resolvedOperator??Bt.getOperator(s.value),i=n.pop();if(!e||!i)throw new Error(message("converterMissingOperandMetadata",{operator:s.value}));if(e.isPostfix){const e="%"===s.value?"\\%":s.value;n.push({text:i.text+e,source:i.source+s.value});continue}const r=n.pop();if(!r)throw new Error(message("converterMissingLeftOperand",{operator:s.value}));if("comma"===e.action){const e=[...r.args??[r],...i.args??[i]];n.push({text:e.map(e=>e.text).join(","),source:e.map(e=>e.source).join(","),args:e});continue}let o;if("times"===e.action)o=r.text+(-1===s.position?"":this.getMultiplicationSymbol())+i.text;else if("div"===e.action)o=this.toFraction(r.text,i.text);else if("pow"===e.action){const e=Expression_Expression.create(i.source);if(-1===e.sign()){const n=e.signFree(),i=n.isOne()?r.text:r.text+"^"+this.inBraces(super.convert(n,t));o=this.toFraction("1",i)}else o=r.text+"^"+this.inBraces(i.text)}else o="mod"===e.action?this.formatTeXFunction("mod",this.getFunctionName("mod"),[r.text,i.text],[Expression_Expression.create("zzsourcearg0"),Expression_Expression.create("zzsourcearg1")]):"mapTo"===e.action?`${r.text} \\mapsto ${i.text}`:r.text+s.value+i.text;n.push({text:o,source:`(${r.source})${s.value}(${i.source})`})}else{let e=s.value;s.type===Token.VARIABLE&&(e=ae.includes(s.value)?"\\infty":this.formatVariable(s.value)),n.push({text:e,source:s.value})}}if(1!==n.length)throw new Error(message("converterTexConversionFailed"));return n[0]}formatFactorial(e,t,n){return e.isLinear()&&(e.isSum()||e.isProduct())&&(t=this.inBrackets(t)),t+n}formatSumOrProduct(e,t){const[n,i,s,r]=t;return`${e}_{${this.inBraces(i)}=${this.inBraces(s)}}^${this.inBraces(r)} ${this.inBraces(n)}`}formatTeXFunction(e,t,n,i){const std=()=>t+this.inBrackets(n[0]),generic=()=>"\\operatorname"+this.inBraces(e.replace(/_/g,"\\_"))+this.inBrackets(n.join(","),"parens"),s={sqrt:std,abs:()=>this.inBrackets(n[0],"abs"),cbrt:()=>`\\sqrt[3]${this.inBraces(n[0])}`,max:()=>`\\max${this.inBrackets(n.join(","),"parens")}`,min:()=>`\\min${this.inBrackets(n.join(","),"parens")}`,round:()=>1===n.length?`\\left\\lfloor ${n[0]} \\right\\rceil`:generic(),mod:()=>`${n[0]} \\bmod ${n[1]}`,fact:()=>this.formatFactorial(i[0],n[0],"!"),factorial:()=>this.formatFactorial(i[0],n[0],"!"),dfact:()=>this.formatFactorial(i[0],n[0],"!!"),parens:()=>this.inBrackets(n[0],"parens"),cos:std,sin:std,tan:std,sec:std,csc:std,cot:std,acos:std,asin:std,atan:std,asec:std,acsc:std,acot:std,atan2:()=>t+this.inBrackets(n.join(","),"parens"),sinh:std,cosh:std,tanh:std,sech:std,csch:std,coth:std,acosh:std,asinh:std,atanh:std,asech:std,acsch:std,acoth:std,floor:()=>`\\left\\lfloor ${n[0]} \\right\\rfloor`,ceil:()=>`\\left\\lceil ${n[0]} \\right\\rceil`,ceiling:()=>`\\left\\lceil ${n[0]} \\right\\rceil`,[Expression_Expression.LOG]:()=>{const e=n[1],t=void 0===e?"":`_${this.inBraces(e)}`;return`\\mathrm${this.inBraces(Expression_Expression.LOG)}${t}${this.inBrackets(n[0])}`},[Expression_Expression.LOG10]:()=>`\\mathrm${this.inBraces(Expression_Expression.LOG)}_${this.inBraces("10")}${this.inBrackets(n[0])}`,log10:()=>`\\mathrm${this.inBraces(Expression_Expression.LOG)}_${this.inBraces("10")}${this.inBrackets(n[0])}`,exp:std,gamma:()=>`\\Gamma${this.inBrackets(n[0])}`,gamma_incomplete:()=>`\\Gamma${this.inBrackets(n.join(","),"parens")}`,gamma_incomplete_lower:()=>`\\gamma${this.inBrackets(n.join(","),"parens")}`,erf:std,erfc:std,sinc:std,Si:()=>`\\operatorname{Si}${this.inBrackets(n[0])}`,Shi:()=>`\\operatorname{Shi}${this.inBrackets(n[0])}`,Ci:()=>`\\operatorname{Ci}${this.inBrackets(n[0])}`,Chi:()=>`\\operatorname{Chi}${this.inBrackets(n[0])}`,Ei:()=>`\\operatorname{Ei}${this.inBrackets(n[0])}`,Li:()=>`\\operatorname{Li}${this.inBrackets(n[0])}`,[ce]:()=>`H${this.inBrackets(n[0])}`,delta:()=>`\\delta${this.inBrackets(n[0])}`,dirac:()=>`\\delta${this.inBrackets(n[0])}`,sign:std,realpart:()=>`\\Re${this.inBrackets(n[0])}`,imagpart:()=>`\\Im${this.inBrackets(n[0])}`,arg:std,[pe]:()=>`\\overline${this.inBraces(n[0])}`,determinant:std,deg:std,limit:()=>`\\lim_${this.inBraces(n[1]+" \\to "+n[2])} ${n[0]}`,integrate:()=>2===n.length?`\\int ${n[0]}\\, d${n[1]}`:generic(),defint:()=>`\\int_${this.inBraces(n[1])}^${this.inBraces(n[2])} ${n[0]}\\, d${n[3]}`,diff:()=>{let e;return e=1===n.length?generic():3===n.length?`\\frac${this.inBraces("d^"+n[2])}${this.inBraces("d"+n[1]+"^"+n[2])} ${n[0]}`:`\\frac${this.inBraces("d")}${this.inBraces("d"+n[1])} ${n[0]}`,e},laplace:()=>`\\mathcal{L}_${this.inBraces(n[1]+" \\to "+n[2])}\\left\\{${n[0]}\\right\\}`,ilaplace:()=>`\\mathcal{L}^{-1}_${this.inBraces(n[1]+" \\to "+n[2])}\\left\\{${n[0]}\\right\\}`,partfrac:()=>`\\operatorname{partfrac}${this.inBrackets(n.join(","),"parens")}`,sum:()=>this.formatSumOrProduct("\\sum",n),product:()=>this.formatSumOrProduct("\\prod",n),nthroot:()=>"2"===n[1]?`\\sqrt${this.inBraces(n[0])}`:`\\sqrt[${n[1]}]${this.inBraces(n[0])}`,gcd:()=>t+this.inBrackets(n.join(","),"parens"),lcm:()=>`\\operatorname{lcm}${this.inBrackets(n.join(","),"parens")}`,"":()=>n[0]}[e];return s?s():generic()}formatVariable(e){return this.formatSubscripts(e).split("_").map((e,t)=>(this.mode===BaseConverter.modes.TeX&&this.greek.includes(e)&&(e=`\\${e}`),t>0?this.inBraces(e):e)).join("_")}getFunctionName(e){if(this.mode!==un)return e;return`\\${Converter.TEX_FUNCTION_MAP[e]||e}`}handleExp(e,t){const n=e.getBase();let i=this.convert(n,t);return n.isInteger()||n.isVAR()||(i=this.inBrackets(i)),i}handleProduct(e,t,n){const i=this.getMultiplicationSymbol(),s=[],r=[];for(let i of e.elementsArray()){i.isFunction("")&&(i=i.getArguments()[0]);const e=-1===i.getPower().sign(),o=(t?!e:e)?r:s;e&&(i=i.invert());let a=this.convert(i,n);i.isSum()&&i.isLinear()&&(a=this.inBrackets(a)),o.push(a)}return[s.join(i),r.join(i)]}handleSum(e,t,n){const i=e.elementsArray().map(e=>this.convert(e,n)).join("+");return!(e.isLinear()&&e.getMultiplier().isOne())||t?this.inBrackets(i,"parens"):i}parseTeXMatrix(e){const t=e.match(/^\\begin\{([pbBvV]?matrix)\}\s*([\s\S]*?)\s*\\end\{\1\}$/);let n;if(t){const e=t[2].split(/\\\\/).map(e=>e.trim()).filter(e=>e.length>0).map(e=>e.split("&").map(e=>Expression_Expression.create(this.fromTeX(e.trim()))));n=new Matrix(...e)}return n}parseTeXSetOrDictionary(e){const t=this.splitTeXTopLevel(e,","),n=t.map(e=>this.splitTeXTopLevel(e,"\\mapsto"));if(n.some(e=>2===e.length)){const e=new Map;for(const t of n)if(2===t.length){const n=t[0].trim(),i=this.fromTeX(t[1].trim());e.set(n,i)}return new Dictionary(e)}const i=new ValuesSet;for(const e of t)e.trim()&&i.add(this.fromTeX(e.trim()));return i}parseTeXVector(e){const t=e.match(/^\\left\s*\[([\s\S]*)\\right\s*\]$/)||e.match(/^\[([\s\S]*)\]$/);let n;if(t){const e=this.splitTeXTopLevel(t[1],",").map(e=>e.trim()).filter(e=>e.length>0).map(e=>this.fromTeX(e));n=new Vector(e)}return n}preprocessTeXClean(e){let t=e;t=t.replace(/\\frac\s*\{([^{}]+)\}\s*([a-zA-Z0-9.])/g,"\\frac{$1}{$2}"),t=t.replace(/\\frac\s*([a-zA-Z0-9.])\s*\{([^{}]+)\}/g,"\\frac{$1}{$2}"),t=t.replace(/\\frac\s*([a-zA-Z0-9.])\s*([a-zA-Z0-9.])/g,"\\frac{$1}{$2}"),t=t.replace(/(\d+)\s*\\frac\s*\{(\d+)\}\s*\{(\d+)\}/g,"($1+\\frac{$2}{$3})"),t=t.replace(/\\mathcal\s*\{L\}\s*\^\s*\{-1\}\s*_\s*\{([^{}]+?)\s*\\to\s*([^{}]+?)\}\s*(?:\\left\s*)?\\{(.+?)\\}\s*(?:\\right\s*)?/g,(e,t,n,i)=>`ilaplace(${i},${String(t).trim()},${String(n).trim()})`),t=t.replace(/\\mathcal\s*\{L\}\s*_\s*\{([^{}]+?)\s*\\to\s*([^{}]+?)\}\s*(?:\\left\s*)?\\{(.+?)\\}\s*(?:\\right\s*)?/g,(e,t,n,i)=>`laplace(${i},${String(t).trim()},${String(n).trim()})`),t=t.replace(/\\mathcal\s*\{L\}\s*\^\s*\{-1\}\s*(?:\\left\s*)?\\{(.+?)\\}\s*(?:\\right\s*)?/g,"ilaplace($1)"),t=t.replace(/\\mathcal\s*\{L\}\s*(?:\\left\s*)?\\{(.+?)\\}\s*(?:\\right\s*)?/g,"laplace($1)"),t=t.replace(/\\frac\s*\{d\^(\w+)\}\s*\{d(\w+)\^\1\}\s*(.+)/g,(e,t,n,i)=>`diff(${i},${n},${t})`),t=t.replace(/\\frac\s*\{d\}\s*\{d(\w+)\}\s*(.+)/g,(e,t,n)=>`diff(${n},${t})`),t=t.replace(/\\int\s*_\s*\{([^}]+)\}\s*\^\s*\{([^}]+)\}\s*(.+?)\\?,?\s*d(\w+)/g,(e,t,n,i,s)=>`defint(${i},${t},${n},${s})`),t=t.replace(/\\int\s+(.+?)\\?,?\s*d(\w+)/g,(e,t,n)=>`integrate(${t},${n})`),t=t.replace(/\\lim\s*_\s*\{(\w+)\s*\\to\s*([^}]+)\}\s*(.+)/g,(e,t,n,i)=>`limit(${i},${t},${n})`),t=t.replace(/\\sum\s*_\s*\{(\w+)=([^}]+)\}\s*\^\s*\{([^}]+)\}\s*(.+)/g,(e,t,n,i,s)=>`sum(${s},${t},${n},${i})`),t=t.replace(/\\prod\s*_\s*\{(\w+)=([^}]+)\}\s*\^\s*\{([^}]+)\}\s*(.+)/g,(e,t,n,i,s)=>`product(${s},${t},${n},${i})`),t=t.replace(/(?:\\left\s*)?\\lfloor\s*(.+?)\s*(?:\\right\s*)?\\rceil/g,"round($1)"),t=t.replace(/(?:\\left\s*)?\\lfloor\s*/g,"floor("),t=t.replace(/\\rfloor\s*(?:\\right\s*)?/g,")"),t=t.replace(/(?:\\left\s*)?\\lceil\s*/g,"ceil("),t=t.replace(/\\rceil\s*(?:\\right\s*)?/g,")"),t=t.replace(/\\log\s*_\s*\{([^}]+)\}\s*\{([^}]+)\}/g,"log($2,$1)"),t=t.replace(/\\log\s*_\s*\{([^}]+)\}\s*([a-zA-Z0-9_.]+)/g,"log($2,$1)"),t=this.replaceBracedTeXCommand(t,"overline",pe),t=t.replace(/\\Gamma\s*/g,"gamma"),t=t.replace(/\\delta\s*/g,"delta"),t=t.replace(/(?<![a-zA-Z])H\s*(?=(?:\\left\s*)?\()/g,ce),t=t.replace(/\\Re\s*/g,"realpart"),t=t.replace(/\\Im\s*/g,"imagpart"),t=t.replace(/\\operatorname\s*\{([^}]+)\}/g,"$1");for(const[e,n]of Object.entries(Converter.TEX_REVERSE_MAP))"operatorname"!==e&&"Gamma"!==e&&"delta"!==e&&"Re"!==e&&"Im"!==e&&(t=t.replace(new RegExp(`\\\\${e}\\b`,"g"),n));return t=t.replace(/(.+?)\s*\\bmod\s*(.+)/g,"mod($1,$2)"),t=t.replace(/\\sqrt\s*\[([^\]]+)\]\s*\{([^}]+)\}/g,"nthroot($2,$1)"),t=t.replace(/\\sqrt\s*\{([^}]+)\}/g,"sqrt($1)"),t=t.replace(/\\,/g,""),t=t.replace(/\s*\\cdot\s*/g,"*"),t=t.replace(/\s*(?:\\left|\\right)\s*/g,""),t=t.replace(/\\infty/g,"Infinity"),t=t.replace(/\s*[{(]/g,"("),t=t.replace(/}/g,")"),t=t.replace(/\s+|\\/g," "),t}replaceBracedTeXCommand(e,t,n){const i=`\\${t}`;let s="",r=0;for(;r<e.length;){const o=e.indexOf(i,r);if(-1===o)s+=e.slice(r),r=e.length;else{s+=e.slice(r,o);let a=o+i.length;for(;a<e.length&&/\s/.test(e[a]);)a++;if("{"!==e[a])s+=i,r=o+i.length;else{let i=1,l=a+1;for(;l<e.length&&i>0;)"{"===e[l]?i++:"}"===e[l]&&i--,l++;if(0!==i)s+=e.slice(o),r=e.length;else{const i=e.slice(a+1,l-1);s+=`${n}(${this.replaceBracedTeXCommand(i,t,n)})`,r=l}}}}return s}splitTeXTopLevel(e,t){const n=[];let i=0,s="";for(let r=0;r<e.length;r++){const o=e[r];","!==t||"\\"!==o||","!==e[r+1]?("{"===o||"["===o||"("===o?i++:"}"!==o&&"]"!==o&&")"!==o||i--,0===i&&e.startsWith(t,r)?(n.push(s),s="",r+=t.length-1):s+=o):r++}return s.trim()&&n.push(s),n}convert(e,t){let n;if("string"==typeof e&&this.mode===un&&!0===t?.preserveSource&&!0!==t.decimal){const i=Bt.toRPN(Bt.tokenize(e)),s=this.convertSourceRPN(i,t);n=s.args?s.args.map(e=>e.text).join(","):s.text}else n=super.convert(e,t);return n}fromTeX(e){const t=e.trim(),n=this.parseTeXMatrix(t);if(n)return n;const i=this.parseTeXVector(t);if(i)return i;const s=t.match(/^\\left\s*\\{(.*)\\right\s*\\}$/)||t.match(/^\\{(.*)\\}$/);if(s)return this.parseTeXSetOrDictionary(s[1]);const r=this.preprocessTeXClean(e),o=Bt.tokenize(r,{pure:!0});return Bt.parse(Bt.parseTeXRPN(o))}}const pn=build;function diff_diff(e,t,n){const i=(e=Expression_Expression.create(e)).variables();t??=Expression_Expression.Variable(i[0]),t=Expression_Expression.create(t);const s="number"==typeof n?Expression_Expression.create(n):n;if(t?.isNUM())throw new UnsupportedOperationError(message("unsupportedOperation"));let r;if(e.hasFunction(ue,!0))r=Expression_Expression.toFunction("diff",[e,t,s]);else if(0===i.length||!e.hasVariable(t.value)||e.isConstant())r=zero();else if(t&&!t.isVAR()||s&&!s.isInteger())r=Expression_Expression.toFunction("diff",[e,t,s]);else if(e.isEXP()){const n=math_log(e.getBase()),i=e.getPower(),s=diff_diff(n.times(i),t);r=e.times(s)}else{const n=s?Number(s)-1:0,i=e.getMultiplier().times(e.getPower()),o=e.getPower().minus(one()),a=Expression_Expression.create(e.value),l=o.isZero()?i:a.pow(o).times(i);if(a.isVAR())r=one();else if(a.isSum()){let e=zero();a.elementsArray().forEach(n=>{e=e.plus(diff_diff(n,t))}),r=e}else if(a.isProduct())r=function productRule(e,t){const n=e.elementsArray();let i=zero();for(let e=0;e<n.length;e++){let s=diff_diff(n[e],t);for(let t=0;t<n.length;t++)e!==t&&(s=s.times(n[t]));i=i.plus(s)}return i}(a,t);else if(a.isFunction()){const e=a.getArguments()[0],n=a.getMultiplier();switch(a.name){case"log":r=helpers_(`(${n})/(${e})`);break;case ve:r=helpers_(`-sin(${e})`);break;case we:r=helpers_(`cos(${e})`);break;case be:r=helpers_(`sec(${e})^2`);break;case Se:r=helpers_(`tan(${e})*sec(${e})`);break;case Me:r=helpers_(`-cot(${e})*csc(${e})`);break;case Ae:r=helpers_(`-csc(${e})^2`);break;case Pe:r=helpers_(`-1/sqrt(1-(${e})^2)`);break;case _e:r=helpers_(`1/sqrt(1-(${e})^2)`);break;case Ne:r=helpers_(`1/(1+(${e})^2)`);break;case Te:r=helpers_(`1/(sqrt(1-1/(${e})^2)*(${e})^2)`);break;case Ie:r=helpers_(`-1/(sqrt(1-1/(${e})^2)*(${e})^2)`);break;case Re:r=helpers_(`-1/(1+(${e})^2)`);break;case Ce:r=helpers_(`sinh(${e})`);break;case Fe:r=helpers_(`cosh(${e})`);break;case qe:r=helpers_(`sech(${e})^2`);break;case Ve:r=helpers_(`-sech(${e})*tanh(${e})`);break;case ke:r=helpers_(`-coth(${e})*csch(${e})`);break;case Ue:r=helpers_(`-csch(${e})^2`);break;case Le:r=helpers_(`1/sqrt(1+(${e})^2)`);break;case De:r=helpers_(`1/(sqrt(-1+(${e}))*sqrt(1+(${e})))`);break;case Be:r=helpers_(`1/(1-(${e})^2)`);break;case ze:r=helpers_(`-1/(sqrt(-1+1/(${e}))*sqrt(1+1/(${e}))*(${e})^2)`);break;case $e:r=helpers_(`-1/(sqrt(1+1/(${e})^2)*(${e})^2)`);break;case Ze:r=helpers_(`1/(1-(${e})^2)`);break;case"abs":r=helpers_(`sign(${e})`);break;case"Ci":r=helpers_(`cos(${e})/${e}`);break;case"Chi":r=helpers_(`cosh(${e})/${e}`);break;case"Si":r=helpers_(`sin(${e})/${e}`);break;case"Shi":r=helpers_(`sinh(${e})/${e}`);break;case"Ei":r=helpers_(`e^(${e})/${e}`);break;case"Li":r=helpers_(`1/log(${e})`);break;case"erf":r=helpers_(`(2*e^(-(${e})^2))/sqrt(pi)`);break;case"sign":r=zero()}r&&(r=r.times(diff_diff(e,t)))}r&&(r=r.times(l)),n>0&&r&&(r=diff_diff(r,t,Expression_Expression.Number(n)))}return r||Expression_Expression.toFunction("diff",[e,t,s])}function fresnel(e,t){const n=Expression_Expression.create(e),i=n.isNUM()?n:n.evaluate();let s;if(i.isNUM()){const e=Number(i.getMultiplier().toDecimal());s=Expression_Expression.create("S"===t?fresnelS(e):fresnelC(e))}else s=Expression_Expression.toFunction(t,[n]);return s}function fresnel_S(e){return fresnel(e,"S")}function C(e){return fresnel(e,"C")}function constantsFreeProduct(e,t){let n=e.getMultiplier(!0);if((e=e.toUnitMultiplier()).isProduct()&&e.isLinear()){let i=one();e.each(s=>{s.hasVariable(t)?i=i.times(s):n=n.times(s),e=i})}return{constants:n,expression:e}}class Pattern extends BaseConverter{allEqualArguments=void 0;args=[];c;constCount=0;expression;multiplier="";p;powerCount=0;referenceMap={};reuseReferences;v;variables={};patternString="";references={};stack=[];constructor(e,t=[],n){super(),this.setMode("text"),this.expression=Expression_Expression.create(e);const i={constantSymbol:"a",powerSymbol:"n",variableSymbol:"x",reuseReferences:!1,...n};this.v=i.variableSymbol,this.p=i.powerSymbol,this.c=i.constantSymbol,this.reuseReferences=i.reuseReferences,this.initializeVariables(t),this.patternString=this.convert(this.expression,i)}static showStructure(e,t="x"){let n=`Input: ${e}\n`;const i=new Pattern(e,[t]);n+=`patternString: ${i.patternString}\n`,n+="references: {\n";for(const e in i.references)n+=`\t${e}: ${i.references[e]}\n`;return n+="}",n}convertPower(e,t,n){return e.isEXP()?this.inBrackets(this.convert(t,{...n,ignoreMultiplier:!1})):!this.hasAsVariable(e)||e.isProduct()?"":this.createConstantReference(t,!0)}createConstantReference(e,t=!1){const n=e.isNUM(),i=`${t?"pow":"cnt"}_${e.text()}`;if(!n){const e=this.referenceMap[i];if(e)return e}const s=t?this.nextPower(e):this.nextConstant(e);return this.addReference(s,e),n||(this.referenceMap[i]=s),s}createVariableReference(e,t){const n=this.variables[e.value];return this.addReference(n,e),n}finalizePowerAndInput(e,t,n){let i=t.toLinearAndUnitMultiplier();return t.isEXP()&&!i.isEXP()&&this.hasAsVariable(e)&&(i=Expression_Expression.toEXP(i,one())),[e,i]}hasAsVariable(e){return e.isVAR()?!!this.variables[e.value]:Object.keys(this.variables).some(t=>e.hasVariable(t))}isBracketed(e){return/^\(.+\)$/.test(e)}multiplyToMultiplier(e){this.references[this.multiplier]=this.references[this.multiplier].times(e)}requiresMultiplicationSymbol(e){return!0}setMultiplier(e,t,n,i){const s=this.createConstantReference(Expression_Expression.create(e));this.multiplier=s,t[0]=s}toFraction(e,t){const wrapIfNeeded=e=>/[*+]/.test(e)&&!this.isBracketed(e)?this.inBrackets(e):e;return`${wrapIfNeeded(e)}/${wrapIfNeeded(t)}`}value(e,t,n,i){const s=["",""],r=t?1:0;if(e.isNUM())return s;if(!this.hasAsVariable(e)&&!e.isEXP())return this.multiplyToMultiplier(e),s;if(e.isEXP()){const t=e.getBase();s[r]=this.inBrackets(this.convert(t,{...i,ignoreMultiplier:!1}))}else if(e.isInf())s[r]=ae[0];else if(e.elements||e.args){if(e.isFunction())s[r]=this.formatFunctionCall(e,i);else if(e.isSum())s[r]=this.handlePatternSum(e,i);else if(e.isProduct())return this.handlePatternProduct(e,t,i)}else s[r]=this.createVariableReference(e,i);return s}addReference(e,t){this.references[e]||(this.references[e]=t)}formatFunctionCall(e,t){const n=e.getArguments();this.args.push(n.map(e=>e.text()).join(","));const i=n.map(e=>this.convert(e,{...t,ignoreMultiplier:!1})).join(", ");return`${e.name}${this.inBrackets(i)}`}getReferenceFromMap(e,t=!1){if(e&&!e.isNUM()){const n=`${t?"pow":"cnt"}_${e.text()}`;return this.referenceMap[n]}}handlePatternProduct(e,t,n){const i=this.getMultiplicationSymbol(),s=[],r=[];for(let i of e.elementsArray()){if(!this.hasAsVariable(i)){this.multiplyToMultiplier(i);continue}i.isFunction("")&&(i=i.getArguments()[0]);const e=i.getPower().sign(),o=t?-1!==e:-1===e,a=o?r:s;o&&!t&&(i=i.invert());let l=this.convert(i,{...n,ignoreMultiplier:!0});i.isSum()&&i.isLinear()&&"text"===this.mode&&(l=this.inBrackets(l)),a.push(l)}return[s.join(i),r.join(i)]}handlePatternSum(e,t){let n=zero();const i=e.elementsArray(),s=[];for(const e of i)this.hasAsVariable(e)?s.push(this.convert(e,{...t,ignoreMultiplier:!1})):n=n.plus(e);return n.isZero()||s.push(this.createConstantReference(n)),this.inBrackets(s.join("+"))}initializeVariables(e){let t=1;e.slice().sort().forEach(e=>{this.variables[e]=this.v+t++})}nextConstant(e){const t=this.getReferenceFromMap(e,!1);return this.reuseReferences&&t?t:`${this.c}${++this.constCount}`}nextPower(e){const t=this.getReferenceFromMap(e,!0);return this.reuseReferences&&t?t:`${this.p}${++this.powerCount}`}argumentsMatch(){return void 0===this.allEqualArguments&&(this.allEqualArguments=function allEqual(e){if(0===e.length)return!0;const t=e[0];return e.every(e=>e===t)}(this.args)),this.allEqualArguments}equal(e,t){if("string"==typeof e)return this.get(e).eq(t);if(0==e.length)return!1;for(let n=0;n<e.length;n++)if(!this.get(e[n]).eq(t))return!1;return!0}fromPattern(e){return Expression_Expression.create(e,this.references)}get(e){const t=this.references[e];if(!t)throw new MissingReferenceError(message("missingReference",{ref:e}));return t}}const fn=0,mn=1,gn=2,hn=3,dn=4;function maxAlgebraicDegree(e,t){let n;if(e.isVAR()&&e.hasVariable(t))n=e.getPower();else if(e.isProduct()){let i=zero();for(const n of e.elementsArray())if(n.isVAR()&&n.hasVariable(t)){i=math_max(i,n.getPower())}n=i}else if(e.isSum()){let i=zero();e.each(e=>{i=math_max(i,maxAlgebraicDegree(e,t))}),n=i}return n??zero()}function functionCount(e){let t=0;return e.isFunction()&&(t=1),(e.isProduct()||e.isSum())&&e.each(e=>{t+=functionCount(e)}),t}function liatePriority(e){if(e.isVAR())return gn;if(e.isEXP())return fn;if(e.isFunction()){const t=e.name;if("log"===t||"ln"===t)return dn;if(function isInverseTrig(e){return e.isFunction()&&Xe.includes(e.name)}(e))return hn;if(function isTrig(e){return e.isFunction()&&We.includes(e.name)}(e))return mn;if(function isHyperbolicTrig(e){return e.isFunction()&&je.includes(e.name)}(e))return mn}return-1}function tryIntegrationByParts(e,t,n,i=0,s=0){if(!e.isProduct())return;if(s>=4)return;const r=e.elementsArray(),o=[];let a=e.getMultiplier(!0);for(let e of r)if(e.hasVariable(t)){const t=e.getMultiplier(!0);t.isOne()||(a=a.times(t),e=e.div(t)),o.push(e)}else a=a.times(e);if(o.length>2){const e=function tryMergeDerivativePair(e,t){if(e.length<3)return;const n=Expression_Expression.create(t);for(let i=0;i<e.length;i++){const s=e[i],r=diff_diff(s,n);if(!r.isFunction("diff"))for(let n=0;n<e.length;n++){if(n===i)continue;let o;for(let t=0;t<e.length;t++)t!==i&&t!==n&&(o=o?o.times(e[t]):e[t]);if(o&&!r.div(o).hasVariable(t))return[s,e[n]]}}}(o,t);e&&(o.length=0,o.push(...e))}if(2!==o.length)return;const l=liatePriority(o[0]),u=liatePriority(o[1]);if(l<0||u<0)return;let c,p;l>=u?(c=o[0],p=o[1]):(c=o[1],p=o[0]);const m=l>=u?l:u;if(function isCyclicPair(e,t,n,i){if(e===t&&(e===mn||e===fn))return!0;if(e===fn&&t===mn||e===mn&&t===fn){const t=e===mn?n:i;if(t.isFunction()){const e=t.name;if(e!==we&&e!==ve)return!0}}return!1}(l,u,c,p))return;const g=diff_diff(c,Expression_Expression.create(t));if(g.isFunction("diff"))return;const h=n(p,t,i);if(h.isFunction(de))return;const d=a.times(c).times(h),x=a.times(h).times(g);if(!function isProgress(e,t,n,i){if(n===gn){const n=maxAlgebraicDegree(e,i);return maxAlgebraicDegree(t,i)<n}return functionCount(t)<functionCount(e)}(e,x,m,t))return;const E=n(x,t,i);let y;if(E.isFunction(de)){const e=tryIntegrationByParts(x,t,n,i+1,s+1);void 0!==e&&(y=d.plus(e.times(minusOne())))}else y=d.plus(E.times(minusOne()));return y}class LookupTable{_entries=new Map;addEntry(e,t){const n=this._entries.get(e);n?n.push(t):this._entries.set(e,[t])}get(e){return this._entries.get(e)}addEntries(e){for(const t in e){const n=e[t];this.addEntry(t,n)}}lookup(e,t){const n=this.get(e.patternString);if(n)for(const i of n){const n=i(e,t);if(n)return n}}set(e,t){const n=this._entries.get(e);return!!t&&(n?.push(t),!0)}}const xn={"a1*cos(a2*x1^n1)^n2":(e,t)=>{if(e.get("n1").isOne()){const n=e.get("n2");if(n.isOne())return e.fromPattern("(a1*sin(a2*x1))/a2");if(n.isEven()){return integrate(e.fromPattern("a1*((1+cos(2*a2*x1^n1))/2)^(n2/2)").expand(),e.get("x1"),t)}return integrate(e.fromPattern("a1*cos(a2*x1^n1)*((1+cos(2*a2*x1^n1))/2)^((n2-1)/2)").expand(),e.get("x1"),t)}},"a1*sin(a2*x1^n1)^n2":(e,t)=>{if(e.get("n1").isOne()){const n=e.get("n2");if(n.isOne())return e.fromPattern("-((a1*cos(a2*x1))/a2)");if(n.isEven()){return integrate(e.fromPattern("a1*((1-cos(2*a2*x1^n1))/2)^(n2/2)").expand(),e.get("x1"),t)}return integrate(e.fromPattern("a1*sin(a2*x1^n1)*((1-cos(2*a2*x1^n1))/2)^((n2-1)/2)").expand(),e.get("x1"),t)}},"a1*tan(a2*x1^n1)^n2":(e,t)=>{if(e.get("n1").isOne()){const n=e.get("n2");if(n.isOne())return e.fromPattern("(a1*log(sec(a2*x1)))/a2");if(n.isEven()){return integrate(e.fromPattern("a1*tan(a2*x1)^(n2-2)*(sec(a2*x1)^2-1)").expand(),e.get("x1"),t)}{const n=e.fromPattern("(a1*tan(a2*x1)^(n2-1))/(a2*(n2-1))"),i=integrate(e.fromPattern("-a1*tan(a2*x1)^(n2-2)"),e.get("x1"),t);return n.plus(i)}}},"a1*sec(a2*x1^n1)^n2":(e,t)=>{if(e.get("n1").isOne()){if(e.get("n2").isOne())return e.fromPattern("(a1*log(tan(a2*x1)+sec(a2*x1)))/a2");const n=e.fromPattern("(a1*sec(a2*x1)^(n2-2)*tan(a2*x1))/(a2*(n2-1))"),i=integrate(e.fromPattern("a1*((n2-2)/(n2-1))*sec(a2*x1)^(n2-2)"),e.get("x1"),t);return n.plus(i)}},"a1*csc(a2*x1^n1)^n2":(e,t)=>{if(e.get("n1").isOne()){if(e.get("n2").isOne())return e.fromPattern("-(a1*log(csc(a2*x1)+cot(a2*x1)))/a2");const n=e.fromPattern("-(a1*csc(a2*x1)^(n2-2)*cot(a2*x1))/(a2*(n2-1))"),i=integrate(e.fromPattern("-a1*((n2-2)/(n2-1))*csc(a2*x1)^(n2-2)"),e.get("x1"),t);return n.plus(i)}},"a1*cot(a2*x1^n1)^n2":(e,t)=>{if(e.get("n1").isOne()){const n=e.get("n2");if(n.isOne())return e.fromPattern("(a1*log(sin(a2*x1)))/a2");if(n.isEven()){return integrate(e.fromPattern("a1*cot(a2*x1)^(n2-2)*(csc(a2*x1)^2-1)").expand(),e.get("x1"),t)}{const n=e.fromPattern("-(a1*cot(a2*x1)^(n2-1))/(a2*(n2-1))"),i=integrate(e.fromPattern("-a1*cot(a2*x1)^(n2-2)"),e.get("x1"),t);return n.plus(i)}}},"a1*cos(a2*x1^n1)^n2*cos(a3*x1^n3)^n4":(e,t)=>{if(e.get("n1").isOne()&&e.get("n3").isOne()){const n=e.get("n2"),i=e.get("n4");if(!n.isOne()){let i;return i=n.isEven()?e.fromPattern("a1*((1+cos(2*a2*x1))/2)^(n2/2)*cos(a3*x1)^n4").expand():e.fromPattern("a1*cos(a2*x1)*((1+cos(2*a2*x1))/2)^((n2-1)/2)*cos(a3*x1)^n4").expand(),integrate(i,e.get("x1"),t)}if(!i.isOne()){let n;return n=i.isEven()?e.fromPattern("a1*cos(a2*x1)^n2*((1+cos(2*a3*x1))/2)^(n4/2)").expand():e.fromPattern("a1*cos(a2*x1)^n2*cos(a3*x1)*((1+cos(2*a3*x1))/2)^((n4-1)/2)").expand(),integrate(n,e.get("x1"),t)}return e.get("a2").eq(e.get("a3"))?e.fromPattern("(a1*x1)/2+(a1*sin(2*a2*x1))/(4*a2)"):e.fromPattern("a1*(sin((a2+a3)*x1)/(2*(a2+a3))+sin((a2-a3)*x1)/(2*(a2-a3)))")}},"a1*sin(a2*x1^n1)^n2*sin(a3*x1^n3)^n4":(e,t)=>{if(e.get("n1").isOne()&&e.get("n3").isOne()){const n=e.get("n2"),i=e.get("n4");if(!n.isOne()){let i;return i=n.isEven()?e.fromPattern("a1*((1-cos(2*a2*x1))/2)^(n2/2)*sin(a3*x1)^n4").expand():e.fromPattern("a1*sin(a2*x1)*((1-cos(2*a2*x1))/2)^((n2-1)/2)*sin(a3*x1)^n4").expand(),integrate(i,e.get("x1"),t)}if(!i.isOne()){let n;return n=i.isEven()?e.fromPattern("a1*sin(a2*x1)^n2*((1-cos(2*a3*x1))/2)^(n4/2)").expand():e.fromPattern("a1*sin(a2*x1)^n2*sin(a3*x1)*((1-cos(2*a3*x1))/2)^((n4-1)/2)").expand(),integrate(n,e.get("x1"),t)}return e.get("a2").eq(e.get("a3"))?e.fromPattern("(a1*x1)/2-(a1*sin(2*a2*x1))/(4*a2)"):e.fromPattern("a1*(sin((a2-a3)*x1)/(2*(a2-a3))-sin((a2+a3)*x1)/(2*(a2+a3)))")}},"a1*cos(a2*x1^n1)^n2*sin(a3*x1^n3)^n4":(e,t)=>{if(e.get("n1").isOne()&&e.get("n3").isOne()){const n=e.get("n2"),i=e.get("n4");if(!n.isOne()){let i;return i=n.isEven()?e.fromPattern("a1*((1+cos(2*a2*x1))/2)^(n2/2)*sin(a3*x1)^n4").expand():e.fromPattern("a1*cos(a2*x1)*((1+cos(2*a2*x1))/2)^((n2-1)/2)*sin(a3*x1)^n4").expand(),integrate(i,e.get("x1"),t)}if(!i.isOne()){let n;return n=i.isEven()?e.fromPattern("a1*cos(a2*x1)^n2*((1-cos(2*a3*x1))/2)^(n4/2)").expand():e.fromPattern("a1*cos(a2*x1)^n2*sin(a3*x1)*((1-cos(2*a3*x1))/2)^((n4-1)/2)").expand(),integrate(n,e.get("x1"),t)}return e.get("a2").eq(e.get("a3"))?e.fromPattern("-(a1*cos(2*a2*x1))/(4*a2)"):e.fromPattern("a1*(-cos((a2+a3)*x1)/(2*(a2+a3))+cos((a2-a3)*x1)/(2*(a2-a3)))")}},"a1*sec(a2*x1^n1)^n2*tan(a3*x1^n3)^n4":e=>{if(e.get("n1").isOne()&&e.get("n3").isOne()&&e.get("n2").isOne()&&e.get("n4").isOne()&&e.get("a2").eq(e.get("a3")))return e.fromPattern("(a1*sec(a2*x1))/a2")},"a1*cot(a2*x1^n1)^n2*csc(a3*x1^n3)^n4":e=>{if(e.get("n1").isOne()&&e.get("n3").isOne()&&e.get("n2").isOne()&&e.get("n4").isOne()&&e.get("a2").eq(e.get("a3")))return e.fromPattern("-(a1*csc(a2*x1))/a2")},"a1/(cos(a2*x1^n1)^n2)":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne())return e.fromPattern("(a1*log(tan(a2*x1)+sec(a2*x1)))/a2")},"a1/(sin(a2*x1^n1)^n2)":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne())return e.fromPattern("-(a1*log(csc(a2*x1)+cot(a2*x1)))/a2")},"a1/(tan(a2*x1^n1)^n2)":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne())return e.fromPattern("(a1*log(sin(a2*x1)))/a2")},"a1/(sec(a2*x1^n1)^n2)":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne())return e.fromPattern("(a1*sin(a2*x1))/a2")},"a1/(csc(a2*x1^n1)^n2)":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne())return e.fromPattern("-((a1*cos(a2*x1))/a2)")},"a1/(cot(a2*x1^n1)^n2)":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne())return e.fromPattern("(a1*log(sec(a2*x1)))/a2")},"a1*sin(a2*(a3*x1^n1+a4)^n2)^n3":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne()&&e.get("n3").isOne())return e.fromPattern("-((a1*cos(a2*(a3*x1+a4)))/(a2*a3))")},"a1*cos(a2*(a3*x1^n1+a4)^n2)^n3":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne()&&e.get("n3").isOne())return e.fromPattern("(a1*sin(a2*(a3*x1+a4)))/(a2*a3)")},"a1*tan(a2*(a3*x1^n1+a4)^n2)^n3":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne()&&e.get("n3").isOne())return e.fromPattern("(a1*log(sec(a2*(a3*x1+a4))))/(a2*a3)")},"a1*sec(a2*(a3*x1^n1+a4)^n2)^n3":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne()&&e.get("n3").isOne())return e.fromPattern("(a1*log(tan(a2*(a3*x1+a4))+sec(a2*(a3*x1+a4))))/(a2*a3)")},"a1*csc(a2*(a3*x1^n1+a4)^n2)^n3":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne()&&e.get("n3").isOne())return e.fromPattern("-(a1*log(csc(a2*(a3*x1+a4))+cot(a2*(a3*x1+a4))))/(a2*a3)")},"a1*cot(a2*(a3*x1^n1+a4)^n2)^n3":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne()&&e.get("n3").isOne())return e.fromPattern("(a1*log(sin(a2*(a3*x1+a4))))/(a2*a3)")}},En={"a1*cosh(a2*x1^n1)^n2":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne())return e.fromPattern("(a1*sinh(a2*x1))/a2")},"a1*sinh(a2*x1^n1)^n2":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne())return e.fromPattern("(a1*cosh(a2*x1))/a2")},"a1*tanh(a2*x1^n1)^n2":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne())return e.fromPattern("(a1*log(cosh(a2*x1)))/a2")},"a1*sech(a2*x1^n1)^n2":e=>{if(e.get("n1").isOne()){if(e.get("n2").isOne())return e.fromPattern("(a1*atan(sinh(a2*x1)))/a2");if(e.get("n2").eq(two()))return e.fromPattern("(a1*tanh(a2*x1))/a2")}},"a1*csch(a2*x1^n1)^n2":e=>{if(e.get("n1").isOne()){if(e.get("n2").isOne())return e.fromPattern("(a1*log(tanh((a2*x1)/2)))/a2");if(e.get("n2").eq(two()))return e.fromPattern("-(a1*coth(a2*x1))/a2")}},"a1*coth(a2*x1^n1)^n2":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne())return e.fromPattern("(a1*log(sinh(a2*x1)))/a2")},"a1*sinh(a2*(a3*x1^n1+a4)^n2)^n3":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne()&&e.get("n3").isOne())return e.fromPattern("(a1*cosh(a2*(a3*x1+a4)))/(a2*a3)")},"a1*cosh(a2*(a3*x1^n1+a4)^n2)^n3":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne()&&e.get("n3").isOne())return e.fromPattern("(a1*sinh(a2*(a3*x1+a4)))/(a2*a3)")},"a1*tanh(a2*(a3*x1^n1+a4)^n2)^n3":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne()&&e.get("n3").isOne())return e.fromPattern("(a1*log(cosh(a2*(a3*x1+a4))))/(a2*a3)")},"a1*coth(a2*(a3*x1^n1+a4)^n2)^n3":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne()&&e.get("n3").isOne())return e.fromPattern("(a1*log(sinh(a2*(a3*x1+a4))))/(a2*a3)")},"a1*sech(a2*(a3*x1^n1+a4)^n2)^n3":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne()){if(e.get("n3").isOne())return e.fromPattern("(a1*atan(sinh(a2*(a3*x1+a4))))/(a2*a3)");if(e.get("n3").eq(two()))return e.fromPattern("(a1*tanh(a2*(a3*x1+a4)))/(a2*a3)")}},"a1*csch(a2*(a3*x1^n1+a4)^n2)^n3":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne()){if(e.get("n3").isOne())return e.fromPattern("(a1*log(tanh((a2*(a3*x1+a4))/2)))/(a2*a3)");if(e.get("n3").eq(two()))return e.fromPattern("-(a1*coth(a2*(a3*x1+a4)))/(a2*a3)")}},"a1*sech(a2*(a3*x1^n1+a4)^n2)^n3*tanh(a5*(a6*x1^n4+a7)^n5)^n6":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne()&&e.get("n3").isOne()&&e.get("n4").isOne()&&e.get("n5").isOne()&&e.get("n6").isOne()&&e.get("a2").eq(e.get("a5"))&&e.get("a3").eq(e.get("a6"))&&e.get("a4").eq(e.get("a7")))return e.fromPattern("-(a1*sech(a2*(a3*x1+a4)))/(a2*a3)")},"a1*coth(a2*(a3*x1^n1+a4)^n2)^n3*csch(a5*(a6*x1^n4+a7)^n5)^n6":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne()&&e.get("n3").isOne()&&e.get("n4").isOne()&&e.get("n5").isOne()&&e.get("n6").isOne()&&e.get("a2").eq(e.get("a5"))&&e.get("a3").eq(e.get("a6"))&&e.get("a4").eq(e.get("a7")))return e.fromPattern("-(a1*csch(a2*(a3*x1+a4)))/(a2*a3)")},"a1*cosh(a2*x1^n1)^n2*sinh(a3*x1^n3)^n4":(e,t)=>{if(e.get("n1").isOne()&&e.get("n3").isOne()&&e.get("a2").eq(e.get("a3"))){const n=e.get("n2"),i=e.get("n4");if(i.isOne())return e.fromPattern("(a1*cosh(a2*x1)^(n2+1))/(a2*(n2+1))");if(n.isOne())return e.fromPattern("(a1*sinh(a2*x1)^(n4+1))/(a2*(n4+1))");if(i.isOdd()){return integrate(e.fromPattern("a1*cosh(a2*x1)^n2*(cosh(a2*x1)^2-1)^((n4-1)/2)*sinh(a2*x1)").expand(),e.get("x1"),t)}if(n.isOdd()){return integrate(e.fromPattern("a1*(1+sinh(a2*x1)^2)^((n2-1)/2)*sinh(a2*x1)^n4*cosh(a2*x1)").expand(),e.get("x1"),t)}}},"a1*sech(a2*x1^n1)^n2*tanh(a3*x1^n3)^n4":(e,t)=>{if(e.get("n1").isOne()&&e.get("n3").isOne()&&e.get("a2").eq(e.get("a3"))){const n=e.get("n2"),i=e.get("n4");if(i.isOne())return e.fromPattern("-(a1*sech(a2*x1)^n2)/(a2*n2)");if(n.eq(two()))return e.fromPattern("(a1*tanh(a2*x1)^(n4+1))/(a2*(n4+1))");if(i.isOdd()){return integrate(e.fromPattern("a1*sech(a2*x1)^n2*(1-sech(a2*x1)^2)^((n4-1)/2)*tanh(a2*x1)").expand(),e.get("x1"),t)}if(n.isEven()){return integrate(e.fromPattern("a1*(1-tanh(a2*x1)^2)^((n2-2)/2)*sech(a2*x1)^2*tanh(a2*x1)^n4").expand(),e.get("x1"),t)}}},"a1*coth(a2*x1^n1)^n2*csch(a3*x1^n3)^n4":(e,t)=>{if(e.get("n1").isOne()&&e.get("n3").isOne()&&e.get("a2").eq(e.get("a3"))){const n=e.get("n2"),i=e.get("n4");if(n.isOne())return e.fromPattern("-(a1*csch(a2*x1)^n4)/(a2*n4)");if(i.eq(two()))return e.fromPattern("-(a1*coth(a2*x1)^(n2+1))/(a2*(n2+1))");if(n.isOdd()){return integrate(e.fromPattern("a1*(1+csch(a2*x1)^2)^((n2-1)/2)*csch(a2*x1)^n4*coth(a2*x1)").expand(),e.get("x1"),t)}if(i.isEven()){return integrate(e.fromPattern("a1*coth(a2*x1)^n2*(coth(a2*x1)^2-1)^((n4-2)/2)*csch(a2*x1)^2").expand(),e.get("x1"),t)}}}},yn={"a1*log(a2*x1^n1)^n2":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne())return e.fromPattern("(a1*(a2*x1*log(a2*x1)-a2*x1))/a2")},"(a1*log(a2*x1^n2)^n3)/x1^n1":e=>{if(e.get("n2").isOne()&&e.get("n3").isOne())return e.get("n1").isOne()?e.fromPattern("a1*log(x1)*log(a2*x1)-(a1*log(x1)^2)/2"):e.fromPattern("(a1*x1^(1-n1)*log(a2*x1))/(1-n1)-(a1*x1^(1-n1))/(1-n1)^2")},"a1*x1^n1*log(a2*x1^n2)^n3":e=>{if(e.get("n2").isOne()&&e.get("n3").isOne())return e.fromPattern("(a1*x1^(n1+1)*log(a2*x1))/(n1+1)-(a1*x1^(n1+1))/(n1+1)^2")},"a1*x1^n1":e=>e.fromPattern("(a1*x1^(n1+1))/(n1+1)"),"a1/x1^n1":e=>e.get("n1").isOne()?e.fromPattern("a1*log(x1)"):e.fromPattern("(a1*x1^(-n1+1))/(-n1+1)"),"a1*(a2*x1^n1+a3)^n2":e=>{if(e.get("n1").isOne())return e.fromPattern("(a1*(a2*x1+a3)^(n2+1))/(a2*(n2+1))")},"a1/((a2*x1^n1+a3)^n2)":e=>{if(e.get("n1").isOne())return e.get("n2").isOne()?e.fromPattern("(a1*log(a2*x1+a3))/a2"):e.fromPattern("(a1*(a2*x1+a3)^(-n2+1))/(a2*(-n2+1))")},"a1*log(a2*(a3*x1^n1+a4)^n2)^n3":e=>{if(e.get("n3").isOne()&&e.get("n2").isOne()){const t=e.get("n1");if(t.isOne())return e.fromPattern("(a1*(a2*(a3*x1+a4)*log(a2*(a3*x1+a4))-a2*(a3*x1+a4)))/(a2*a3)");if(e.get("a3").times(e.get("a4")).lt(zero())){if(t.eq(two()))return e.fromPattern("a1*(x1*log(a2*(a3*x1^2+a4))-2*a3*(x1/a3-(a4*log((2*a3*x1-2*sqrt(-(a3*a4)))/(2*a3*x1+2*sqrt(-(a3*a4)))))/(2*a3*sqrt(-(a3*a4)))))");if(t.eq(three()))return e.fromPattern(`a1*(x1*log(a2*(a3*x1^3+a4))-3*a3*((${Expression_Expression.Img()}*a4^(1/3)*log((2*a3^(2/3)*x1-sqrt(3)*${Expression_Expression.Img()}*a3^(1/3)*a4^(1/3)-a3^(1/3)*a4^(1/3))/(2*a3^(2/3)*x1+sqrt(3)*${Expression_Expression.Img()}*a3^(1/3)*a4^(1/3)-a3^(1/3)*a4^(1/3))))/(2*sqrt(3)*a3^(4/3))+(a4^(1/3)*log(a3^(2/3)*x1^2-a3^(1/3)*a4^(1/3)*x1+a4^(2/3)))/(6*a3^(4/3))-(a4^(1/3)*log((a3^(1/3)*x1+a4^(1/3))/a3^(1/3)))/(3*a3^(4/3))+x1/a3))`)}else{if(t.eq(two()))return e.fromPattern("a1*(x1*log(a2*(a3*x1^2+a4))-2*a3*(x1/a3-(a4*atan((a3*x1)/sqrt(a3*a4)))/(a3*sqrt(a3*a4))))");if(t.eq(three()))return e.fromPattern(`a1*(x1*log(a2*(a3*x1^3+a4))-3*a3*((${Expression_Expression.Img()}*a4^(1/3)*log((2*a3^(2/3)*x1-sqrt(3)*${Expression_Expression.Img()}*a3^(1/3)*a4^(1/3)-a3^(1/3)*a4^(1/3))/(2*a3^(2/3)*x1+sqrt(3)*${Expression_Expression.Img()}*a3^(1/3)*a4^(1/3)-a3^(1/3)*a4^(1/3))))/(2*sqrt(3)*a3^(4/3))+(a4^(1/3)*log(a3^(2/3)*x1^2-a3^(1/3)*a4^(1/3)*x1+a4^(2/3)))/(6*a3^(4/3))-(a4^(1/3)*log((a3^(1/3)*x1+a4^(1/3))/a3^(1/3)))/(3*a3^(4/3))+x1/a3))`)}}}},vn={"a1*(a2)^(a3*x1^n1)*cos(a4*x1^n2)^n3":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne()&&e.get("n3").isOne())return e.fromPattern("(a1*(e^(log(a2)*a3*x1)*a4*sin(a4*x1)+e^(log(a2)*a3*x1)*log(a2)*a3*cos(a4*x1)))/(a4^2+log(a2)^2*a3^2)")},"a1*(a2)^(a3*x1^n1)*sin(a4*x1^n2)^n3":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne()&&e.get("n3").isOne())return e.fromPattern("(a1*(e^(log(a2)*a3*x1)*log(a2)*a3*sin(a4*x1)-e^(log(a2)*a3*x1)*a4*cos(a4*x1)))/(a4^2+log(a2)^2*a3^2)")},"a1*(a2)^(a3*x1^n1)*cosh(a4*x1^n2)^n3":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne()&&e.get("n3").isOne())return e.fromPattern("(a1*(x1-e^(-((-((log(a2)*a3)/a4)-1)*a4*x1))/((-((log(a2)*a3)/a4)-1)*a4)))/2")},"a1*(a2)^(a3*x1^n1)*sinh(a4*x1^n2)^n3":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne()&&e.get("n3").isOne())return e.fromPattern("(a1*(-x1-e^(-((-((log(a2)*a3)/a4)-1)*a4*x1))/((-((log(a2)*a3)/a4)-1)*a4)))/2")},"a1*(a2)^(a3*x1^n1)*x1^n2":e=>{if(e.get("n1").isOne()){const t=e.get("n2");if(t.isOne())return e.fromPattern("(e^(log(a2)*a3*x1)*a1*(log(a2)*a3*x1-1))/(log(a2)^2*a3^2)");if(t.eq(two()))return e.fromPattern("(e^(log(a2)*a3*x1)*a1*(log(a2)^2*a3^2*x1^2-2*log(a2)*a3*x1+2))/(log(a2)^3*a3^3)");if(t.eq(three()))return e.fromPattern("(e^(log(a2)*a3*x1)*a1*(log(a2)^3*a3^3*x1^3-3*log(a2)^2*a3^2*x1^2+6*log(a2)*a3*x1-6))/(log(a2)^4*a3^4)");if(t.eq(four()))return e.fromPattern("(e^(log(a2)*a3*x1)*a1*(log(a2)^4*a3^4*x1^4-4*log(a2)^3*a3^3*x1^3+12*log(a2)^2*a3^2*x1^2-24*log(a2)*a3*x1+24))/(log(a2)^5*a3^5)");if(t.eq(function five(){return getFromCacheOrCreate("5")}()))return e.fromPattern("(e^(log(a2)*a3*x1)*a1*(log(a2)^5*a3^5*x1^5-5*log(a2)^4*a3^4*x1^4+20*log(a2)^3*a3^3*x1^3-60*log(a2)^2*a3^2*x1^2+120*log(a2)*a3*x1-120))/(log(a2)^6*a3^6)");if(t.eq(six()))return e.fromPattern("(e^(log(a2)*a3*x1)*a1*(log(a2)^6*a3^6*x1^6-6*log(a2)^5*a3^5*x1^5+30*log(a2)^4*a3^4*x1^4-120*log(a2)^3*a3^3*x1^3+360*log(a2)^2*a3^2*x1^2-720*log(a2)*a3*x1+720))/(log(a2)^7*a3^7)")}}},wn={"(a1*sin(a2*x1^n2)^n3)/x1^n1":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne()&&e.get("n3").isOne())return math_Si(e.fromPattern("a2*x1")).times(e.get("a1"))},"(a1*cos(a2*x1^n2)^n3)/x1^n1":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne()&&e.get("n3").isOne())return math_Ci(e.fromPattern("a2*x1")).times(e.get("a1"))},"(a1*(a2)^(a3*x1^n1))/x1^n2":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne())return math_Ei(e.fromPattern("log(a2)*a3*x1")).times(e.get("a1"))}},bn={"a1*(-a2*x1^n1+a3)^n2":e=>{if(e.get("n1").eq(two())&&e.get("n2").isHalf())return e.fromPattern("(a1*x1*(-a2*x1^2+a3)^(1/2))/2+(a1*a3*asin((a2^(1/2)*x1)/(a3^(1/2))))/(2*a2^(1/2))")},"a1/((-a2*x1^n1+a3)^n2)":e=>e.get("n1").eq(two())&&e.get("n2").isOne()?e.fromPattern("(a1/(a2^(1/2)*a3^(1/2)))*atanh((a2^(1/2)*x1)/(a3^(1/2)))"):e.get("n1").eq(two())&&e.get("n2").isHalf()?e.fromPattern("(a1/a2^(1/2))*asin((a2^(1/2)*x1)/(a3^(1/2)))"):void 0,"-a1/((-a2*x1^n1+a3)^n2)":e=>{if(e.get("n1").eq(two())&&e.get("n2").isHalf())return e.fromPattern("(a1/a2^(1/2))*acos((a2^(1/2)*x1)/(a3^(1/2)))")},"a1/((a2*x1^n1+a3)^n2)":e=>e.get("n1").eq(two())&&e.get("n2").isOne()?e.fromPattern("(a1/(a2^(1/2)*a3^(1/2)))*atan((a2^(1/2)*x1)/(a3^(1/2)))"):e.get("n1").eq(two())&&e.get("n2").isHalf()?e.fromPattern("(a1/a2^(1/2))*asinh((a2^(1/2)*x1)/(a3^(1/2)))"):void 0,"-a1/((a2*x1^n1+a3)^n2)":e=>{if(e.get("n1").eq(two())&&e.get("n2").isOne())return e.fromPattern("(a1/(a2^(1/2)*a3^(1/2)))*acot((a2^(1/2)*x1)/(a3^(1/2)))")},"a1/(x1^n1*(-a2/x1^n2+a3)^n3)":e=>{if(e.get("n1").isOne()&&e.get("n2").eq(two())&&e.get("n3").isHalf())return e.fromPattern("(a1/a3^(1/2))*asec((a3^(1/2)*x1)/(a2^(1/2)))")},"-a1/(x1^n1*(-a2/x1^n2+a3)^n3)":e=>{if(e.get("n1").isOne()&&e.get("n2").eq(two())&&e.get("n3").isHalf())return e.fromPattern("(a1/a3^(1/2))*acsc((a3^(1/2)*x1)/(a2^(1/2)))")},"a1/(x1^n1*(a2/x1^n2+a3)^n3)":e=>{if(e.get("n1").isOne()&&e.get("n2").eq(two())&&e.get("n3").eq(half()))return e.fromPattern("a1*acsch((sqrt(a2/a3))/x1)/sqrt(a2*a3)")}},_n=new LookupTable;function hasTranscendental(e,t){if(e.isFunction()&&e.hasVariable(t))return!0;if(e.isEXP()&&e.hasVariable(t))return!0;let n=!1;return(e.isProduct()||e.isSum())&&e.each(e=>{hasTranscendental(e,t)&&(n=!0)}),n}_n.addEntries(xn),_n.addEntries({"a1*acos(a2*x1^n1)^n2":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne())return e.fromPattern("(a1*(a2*x1*acos(a2*x1)-sqrt(1-a2^2*x1^2)))/a2")},"a1*asin(a2*x1^n1)^n2":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne())return e.fromPattern("(a1*(a2*x1*asin(a2*x1)+sqrt(1-a2^2*x1^2)))/a2")},"a1*atan(a2*x1^n1)^n2":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne())return e.fromPattern("(a1*(a2*x1*atan(a2*x1)-log(a2^2*x1^2+1)/2))/a2")},"a1*asec(a2*x1^n1)^n2":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne())return e.fromPattern("(a1*(a2*x1*asec(a2*x1)-log(sqrt(1-1/(a2^2*x1^2))+1)/2+log(1-sqrt(1-1/(a2^2*x1^2)))/2))/a2")},"a1*acsc(a2*x1^n1)^n2":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne())return e.fromPattern("(a1*(a2*x1*acsc(a2*x1)+log(sqrt(1-1/(a2^2*x1^2))+1)/2-log(1-sqrt(1-1/(a2^2*x1^2)))/2))/a2")},"a1*acot(a2*x1^n1)^n2":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne())return e.fromPattern("(a1*(log(a2^2*x1^2+1)/2+a2*x1*acot(a2*x1)))/a2")}}),_n.addEntries(yn),_n.addEntries({"a1*(a2)^(a3*x1^n1)":e=>{if(e.get("n1").isOne())return e.fromPattern("(a1*a2^(a3*x1))/(log(a2)*a3)")},"a1*(a2)^(a3*(a4*x1^n1+a5)^n2)":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne())return e.fromPattern("(a1*a2^(a3*(a4*x1+a5)))/(log(a2)*a3*a4)")}}),_n.addEntries(En),_n.addEntries({"a1*acosh(a2*x1^n1)^n2":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne())return e.fromPattern("(a1*(a2*x1*acosh(a2*x1)-sqrt(a2^2*x1^2-1)))/a2")},"a1*asinh(a2*x1^n1)^n2":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne())return e.fromPattern("(a1*(a2*x1*asinh(a2*x1)-sqrt(a2^2*x1^2+1)))/a2")},"a1*atanh(a2*x1^n1)^n2":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne())return e.fromPattern("(a1*(log(1-a2^2*x1^2)/2+a2*x1*atanh(a2*x1)))/a2")},"a1*asech(a2*x1^n1)^n2":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne())return e.fromPattern("(a1*(a2*x1*asech(a2*x1)-atan(sqrt(1/(a2^2*x1^2)-1))))/a2")},"a1*acsch(a2*x1^n1)^n2":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne())return e.fromPattern("(a1*(a2*x1*acsch(a2*x1)+log(sqrt(1/(a2^2*x1^2)+1)+1)/2-log(sqrt(1/(a2^2*x1^2)+1)-1)/2))/a2")},"a1*acoth(a2*x1^n1)^n2":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne())return e.fromPattern("(a1*(log(1-a2^2*x1^2)/2+a2*x1*acoth(a2*x1)))/a2")}}),_n.addEntries(vn),_n.addEntries(bn),_n.addEntries(wn);const Pn=8;function testProductSides(e,t,n){if(!hasTranscendental(t,n)&&hasTranscendental(e,n))return;const i=diff_diff(e,n);if(i.isZero())return;const s=simplify(t.div(i));if(!s.hasVariable(n))return{fx:e,constant:s,power:one()};if(e.isVAR())return;let r=s,o=0;for(let t=0;t<Pn;t++){const t=simplify(r.div(e));if(!t.hasVariable(n)){const n=Expression_Expression.Number(o+2);if(Expression_Expression.Number(o+3).isZero())return;return{fx:e,constant:t,power:n}}r=t,o++}}function tryIntegrateBySubstitution(e,t){if(e.isProduct()||(e=factor(e)),!e.isProduct())return;const n=e.elementsArray();if(n.length<2)return;const i=function bySubstitution(e,t){const n=e.length;let i=e[0];for(let t=1;t<n;t++)i=i.times(e[t]);for(let i=0;i<n;i++){const s=e[i];let r;for(let t=0;t<n;t++)t!==i&&(r=r?r.times(e[t]):e[t]);r=r??one();const o=testProductSides(s,r,t);if(o)return o;const a=testProductSides(r,s,t);if(a)return a;const l=s.getBase(),u=s.getPower();if(!u.isOne()&&l.hasVariable(t)){const e=l.pow(u.minus(one())).times(r),n=testProductSides(l,e,t);if(n)return n}const c=r.getBase(),p=r.getPower();if(!p.isOne()&&c.hasVariable(t)){const e=c.pow(p.minus(one())).times(s),n=testProductSides(c,e,t);if(n)return n}}}(n,t);return i}function getWrappedInnerCandidates(e,t){const n=[];if(e.isFunction()){const i=e.getArguments();1===i.length&&i[0].hasVariable(t)&&n.push(i[0])}if(e.isEXP()){const i=e.getBase(),s=e.getPower();i.hasVariable(t)&&!i.eq(e)&&n.push(i),i.isE()&&s.hasVariable(t)&&!s.eq(e)&&n.push(s)}if(!e.isFunction()&&!e.isEXP()){const i=e.getBase();e.getPower().isOne()||!i.hasVariable(t)||i.eq(e)||n.push(i)}return n}function tryIntegrateByLogSubstitution(e,t){const n=simplify(e.getNumerator()),i=simplify(e.getDenominator());if(!i.isOne())return function testQuotientSides(e,t,n){const i=diff_diff(t,n),s=simplify(e.div(i));if(!s.hasVariable(n))return{fx:t,constant:s}}(n,i,t)}const Sn=10;function integrate(e,t,n=0){e=Expression_Expression.create(e),t=assertPlainVariableAndGetString(Expression_Expression.create(t));const i=Expression_Expression.create(e);let s;if(n++>Sn)s=Expression_Expression.toFunction(de,[i,t]);else{let i;if(({constants:i,expression:e}=constantsFreeProduct(e,t)),e.hasVariable(t))if(e.isSum()&&e.isLinear()){let i=zero();e.each(e=>{i=i.plus(integrate(e,t,n))}),s=i}else s=_n.lookup(new Pattern(e,[t]),n);else s=e.times(t);if(s||(s=function tryIntegrateLogPower(e,t,n){if(!e.isFunction("log"))return;const i=e.getPower();if(!i.isInteger()||!i.gt(one()))return;const s=e.getArguments();if(1!==s.length)return;let r;try{r=new Polynomial(s[0],[t])}catch{return}if(1!==r.deg())return;const o=r.toArray(!1,t),a=o[1]??zero();if(a.isZero())return;const l=e.getBase().pow(i.minus(one())),u=integrate(l,t,n);if(u.isFunction(de))return;const c=s[0].div(a).times(e);return c.minus(i.times(u))}(e,t,n)),s||(s=function tryIntegrateByRadicalSubstitutionFastPath(e,t,n){const i=getU(e),s=function radicalSubstitution(e,t,n="t"){const i=Expression_Expression.create(e);if(!t){const e=i.variables();if(0===e.length)return null;t=e[0]}const s=function collectPowerDenominators(e,t){const n=[];return function walk(e){if(e.isVAR()&&e.value===t){const t=e.getPower();if(t.isNUM()){const e=t.getMultiplier(),i=e.denominator<0n?-e.denominator:e.denominator;1n!==i&&n.push(i)}return}if(e.isSum()||e.isProduct())for(const t of e.elementsArray())walk(t);else if(e.isFunction())for(const t of e.getArguments())walk(t)}(e),n}(i,t);if(0===s.length)return null;const r=function bigintLCM(e){if(0===e.length)return 1n;function lcm(e,t){return e/function gcd(e,t){for(e=e<0n?-e:e,t=t<0n?-t:t;0n!==t;)[e,t]=[t,e%t];return e}(e,t)*t}let t=e[0];for(let n=1;n<e.length;n++)t=lcm(t,e[n]);return t}(s),o=Number(r),a=Expression_Expression.create(n),l=rewriteRadicals(i,t,a,r),u=Expression_Expression.create(String(o)).times(a.pow(o-1));return{integrand:l.times(u),newVariable:n,originalVariable:t,n:o,backSub:Expression_Expression.create(t).pow(Expression_Expression.create(`1/${o}`))}}(e,t,i);if(!s)return;const r=simplify(s.integrand);if(!isRationalFunctionInVariable(r,s.newVariable))return;const o=tryIntegrateRational(r,s.newVariable,n);if(!o||o.isFunction(de))return;return simplify(subst(o,Expression_Expression.create(s.newVariable),s.backSub))}(e,t,n)),s||(s=function tryIntegrateSqrtQuadratic(e,t){const n=e.getPower();if(!n.eq(half()))return;const i=e.getBase();if(hasTranscendental(i,t))return;let s;try{s=new Polynomial(i,[t])}catch{return}if(2!==s.deg())return;const r=s.toArray(!1,t),o=r[0]??zero(),a=r[1]??zero(),l=r[2]??zero();if(l.isZero())return;const u=Expression_Expression.create(t),c=u.plus(a.div(two().times(l))),p=o.minus(a.pow(two()).div(four().times(l))),m=e,g=half().times(c).times(m);if(p.isZero())return;if(l.gt(zero())){const e=l.pow(half());if(p.gt(zero())){const t=p.pow(half()),n=e.times(c).div(t);return g.plus(p.div(two().times(e)).times(Expression_Expression.toFunction(Le,[n])))}if(p.lt(zero())){const t=e.times(c).plus(m);return g.plus(p.div(two().times(e)).times(math_log(t)))}return}if(l.lt(zero())&&p.gt(zero())){const e=l.times(minusOne()).pow(half()),t=p.pow(half()),n=e.times(c).div(t);return g.plus(p.div(two().times(e)).times(Expression_Expression.toFunction(_e,[n])))}return}(e,t)),!s&&e.isProduct()){const n=function tryIntegrateByWrappedFactorSubstitution(e,t,n){let i=t[0];for(let e=1;e<t.length;e++)i=i.times(t[e]);for(const s of t){const t=simplify(i.div(s));for(const i of getWrappedInnerCandidates(s,n)){const r=diff_diff(i,n);if(r.isZero())continue;const o=simplify(t.div(r));if(o.hasVariable(n))continue;const a=Expression_Expression.create(getU(e)),l=simplify(subst(s,i,a));if(l.hasVariable(n)||!l.hasVariable(a.text()))continue;const u=_n.lookup(new Pattern(l,[a.text()]),0);if(u&&!u.hasFunction(de))return simplify(subst(u,a,i).times(o))}}}(e,e.elementsArray(),t);n&&(s=n)}if(!s&&e.isProduct()){let i=!1;for(const n of e.elementsArray())if(n.isSum()&&hasTranscendental(n,t)){i=!0;break}if(i){const i=e.expand();if(i.isSum()&&i.isLinear()){let e=zero(),r=!0;i.each(i=>{const s=integrate(i,t,n);s.isFunction(de)&&(r=!1),e=e.plus(s)}),r&&(s=e)}}}if(!s){const i=tryIntegrationByParts(e,t,integrate,n);i&&(s=i)}if(!s){const n=tryIntegrateByLogSubstitution(e,t);n&&(s=math_log(n.fx).times(n.constant))}if(!s){const n=tryIntegrateBySubstitution(e,t);if(n){const e=n.power.plus(one());s=n.fx.pow(e).div(e).times(n.constant)}}s||(s=function tryIntegratePolynomial(e,t){if(!e.isPolynomialLike()||hasTranscendental(e,t))return;let n;try{n=new Polynomial(e,[t])}catch{return}const i=n.toArray(!1,t),s=Expression_Expression.create(t);let r=zero();for(let e=0;e<i.length;e++){const t=i[e]??zero();if(!t.isZero()){const n=e+1;r=r.plus(t.times(s.pow(n)).div(n))}}return r}(e,t)),s||(s=function tryIntegratePowerQuotient(e,t,n){const i=function tryIntegrateByPowerSubstitution(e,t){const n=simplify(e.getNumerator()),i=simplify(e.getDenominator());if(i.isOne()||!i.hasVariable(t))return;const s=i.getBase(),r=i.getPower();if(!s.hasVariable(t))return;const o=diff_diff(s,t);if(o.isZero())return;const a=simplify(n.div(o));if(!a.hasVariable(t)){if(simplify(one().plus(r.times(minusOne()))).isZero())return;return{fx:s,constant:a,power:r}}}(e,t);if(i){const e=i.power,t=one().plus(e.times(minusOne()));return i.fx.pow(t).div(t).times(i.constant)}const s=e.getNumerator(),r=e.getDenominator();if(r.isOne()||!r.hasVariable(t))return;const o=r.getBase(),a=r.getPower();if(a.isOne())return;if(hasTranscendental(s,t)||hasTranscendental(o,t))return;let l,u,c;try{l=new Polynomial(s,[t]),new Polynomial(o,[t])}catch{return}if(l.deg()<1)return;try{[u,c]=utils_divide(s,o,void 0,[t])}catch{return}if(Expression_Expression.create(u).isZero())return;const p=Expression_Expression.create(u).times(o.pow(one().plus(a.times(minusOne())))),m=Expression_Expression.create(c),g=m.isZero()?zero():m.div(r),h=integrate(p,t,n);if(h.isFunction(de))return;let d=h;if(!m.isZero()){const e=integrate(g,t,n);if(e.isFunction(de))return;d=d.plus(e)}return d}(e,t,n)),s||(s=tryIntegrateRational(e,t,n)),s||(s=function tryIntegrateByWeierstrass(e,t,n){let i=e;hasDerivedTrig(i)&&(i=rewrite(i));const s=function getTrigArgIfRationalInTrig(e,t){let n,i=!0;function walk(e){if(i){if(e.isFunction(we)||e.isFunction(ve)){const s=e.getArguments();return void(1===s.length&&s[0].hasVariable(t)&&(void 0===n?n=s[0]:n.eq(s[0])||(i=!1)))}if(e.isVAR()&&e.hasVariable(t))i=!1;else{if(e.isSum()||e.isProduct()){for(const t of e.elementsArray())walk(t);return void(e.getPower().hasVariable(t)&&(i=!1))}(e.isFunction()&&e.hasVariable(t)||e.isEXP()&&e.hasVariable(t))&&(i=!1)}}}if(walk(e),i&&void 0!==n)return n;return}(i,t);if(!s)return;const r=function getLinearCoefficient(e,t){try{const n=new Polynomial(e,[t]);if(1!==n.deg())return;return n.toArray(!1,t)[1]??void 0}catch{return}}(s,t);if(!r)return;const o=getU(e),a=Expression_Expression.create(o),l=a.pow(two()),u=one().plus(l),c=two().times(a).div(u),p=one().minus(l).div(u);let m=subst(i,trig_sin(s),c);m=subst(m,trig_cos(s),p);const g=two().div(r.times(u));if(m=m.times(g),m=simplify(m),m.hasVariable(t))return;if(!isRationalFunctionInVariable(m,o))return;const h=integrate(m,o,n);if(h.isFunction(de))return;const d=trig_tan(s.div(two()));return simplify(subst(h,a,d))}(e,t,n)),s&&(s=s.times(i))}return s??Expression_Expression.toFunction(de,[i,t])}function isRationalFunctionInVariable(e,t){try{return new Polynomial(e.getNumerator(),[t]),new Polynomial(e.getDenominator(),[t]),!0}catch{return!1}}function tryIntegrateRational(e,t,n){const i=e.getNumerator(),s=e.getDenominator();if(s.isOne()||!s.hasVariable(t))return;if(hasTranscendental(i,t)||hasTranscendental(s,t))return;let r,o;try{r=new Polynomial(i,[t]),o=new Polynomial(s,[t])}catch{return}const a=r.deg(),l=o.deg();if(l<2)return;let u=zero(),c=i;if(a>=l){try{const[e,r]=utils_divide(i,s,void 0,[t]),o=integrate(e,t,n);if(o.isFunction(de))return;u=u.plus(o),c=r}catch{return}if(Expression_Expression.create(c).isZero())return u}const p=Expression_Expression.create(c).div(s);if(a>=l){const e=integrate(p,t,n);if(!e.isFunction(de))return u=u.plus(e),u}const m=function tryIntegrateLinearOverQuadratic(e,t){const n=e.getNumerator(),i=e.getDenominator();if(i.isOne()||!i.hasVariable(t))return;if(hasTranscendental(n,t)||hasTranscendental(i,t))return;let s,r;try{const e=n.coeffs(t),o=i.coeffs(t);if(2!==o.max()||e.max()>1)return;s=e.toArray(),r=o.toArray()}catch{return}const o=r[2]??zero(),a=r[1]??zero(),l=r[0]??zero(),u=s[1]??zero(),c=s[0]??zero();if(o.isZero())return;const p=Expression_Expression.create(t),m=u.div(two().times(o)),g=c.minus(m.times(a));let h=zero();m.isZero()||(h=h.plus(m.times(math_log(i))));if(g.isZero())return h;const d=two().times(o).times(p).plus(a),x=four().times(o).times(l).minus(a.pow(two()));let E;if(x.isZero())E=two().times(minusOne()).div(d);else if(x.gt(zero())){const e=x.pow(half()),t=d.div(e);E=two().div(e).times(Expression_Expression.toFunction(Ne,[t]))}else{if(!x.lt(zero()))return;{const e=x.times(minusOne()).pow(half());E=math_log(d.minus(e).div(d.plus(e))).div(e)}}return h.plus(g.times(E))}(p,t);if(m)return u.plus(m);let g;try{g=partfrac(p,t)}catch{return}if(g.text()===p.text())return;const h=integrate(g,t,n);return h.isFunction(de)?void 0:u.plus(h)}const Mn={"a1/x1^n1":e=>{const{n1:t}=e.references;if(!t.isZero()&&!t.isNegative())return e.fromPattern("(a1*t^(n1-1))/gamma(n1)")},"a1/((a2*x1^n1+a3)^n2)":e=>{const{n1:t,n2:n}=e.references;return t.isOne()?e.fromPattern("(a1*t^(n2-1)*e^((-a3/a2)*t))/(a2^n2*gamma(n2))"):t.eq(two())&&n.isOne()?e.fromPattern("(a1*sin((a3^(1/2)*t)/(a2^(1/2))))/(a2^(1/2)*a3^(1/2))"):t.eq(two())&&n.eq(two())?e.fromPattern("(a1*sin((a3^(1/2)*t)/(a2^(1/2))))/(2*a2^(1/2)*a3^(3/2))").minus(e.fromPattern("(a1*t*cos((a3^(1/2)*t)/(a2^(1/2))))/(2*a2*a3)")):void 0},"(a1*x1^n1)/((a2*x1^n2+a3)^n3)":e=>{const{n1:t,n2:n,n3:i}=e.references;if(n.eq(two())){if(t.isOne()){if(i.isOne())return e.fromPattern("(a1*cos((a3^(1/2)*t)/(a2^(1/2))))/a2");if(i.eq(two()))return e.fromPattern("(a1*t*sin((a3^(1/2)*t)/(a2^(1/2))))/(2*a2^(3/2)*a3^(1/2))")}return t.eq(two())&&i.eq(two())?e.fromPattern("(a1*sin((a3^(1/2)*t)/(a2^(1/2))))/(2*a2^(1/2)*a3^(1/2))").plus(e.fromPattern("(a1*t*cos((a3^(1/2)*t)/(a2^(1/2))))/(2*a2)")):void 0}},"a1/((a2*(a3*x1^n1+a4)^n2+a5)^n3)":e=>{const{n1:t,n2:n,n3:i,a5:s}=e.references;if(t.isOne()&&n.eq(two()))return s.sign()<0?i.isOne()?e.fromPattern("(a1*e^((-a4/a3)*t)*sinh((((-a5)^(1/2))*t)/(a2^(1/2)*a3)))/(a2^(1/2)*a3*((-a5)^(1/2)))"):i.eq(two())?e.fromPattern("(a1*e^((-a4/a3)*t)*((((-a5)^(1/2))*t*cosh((((-a5)^(1/2))*t)/(a2^(1/2)*a3)))/(a2^(1/2)*a3)-sinh((((-a5)^(1/2))*t)/(a2^(1/2)*a3))))/(2*a2^(1/2)*a3*((-a5)^(3/2)))"):void 0:i.isOne()?e.fromPattern("(a1*e^((-a4/a3)*t)*sin((a5^(1/2)*t)/(a2^(1/2)*a3)))/(a2^(1/2)*a3*a5^(1/2))"):i.eq(two())?e.fromPattern("(a1*e^((-a4/a3)*t)*(sin((a5^(1/2)*t)/(a2^(1/2)*a3))-(a5^(1/2)*t*cos((a5^(1/2)*t)/(a2^(1/2)*a3)))/(a2^(1/2)*a3)))/(2*a2^(1/2)*a3*a5^(3/2))"):void 0},"(a1*((a6*x1^n4+a7)^n5))/((a2*(a3*x1^n1+a4)^n2+a5)^n3)":e=>{const{n1:t,n2:n,n3:i,n4:s,n5:r,a3:o,a4:a,a5:l,a6:u,a7:c}=e.references;if(t.isOne()&&n.eq(two())&&s.isOne()&&r.isOne()&&c.times(o).eq(a.times(u)))return l.sign()<0?i.isOne()?e.fromPattern("(a1*a6*e^((-a4/a3)*t)*cosh((((-a5)^(1/2))*t)/(a2^(1/2)*a3)))/(a2*a3^2)"):i.eq(two())?e.fromPattern("(a1*a6*t*e^((-a4/a3)*t)*sinh((((-a5)^(1/2))*t)/(a2^(1/2)*a3)))/(2*a2^(3/2)*a3^3*((-a5)^(1/2)))"):void 0:i.isOne()?e.fromPattern("(a1*a6*e^((-a4/a3)*t)*cos((a5^(1/2)*t)/(a2^(1/2)*a3)))/(a2*a3^2)"):i.eq(two())?e.fromPattern("(a1*a6*t*e^((-a4/a3)*t)*sin((a5^(1/2)*t)/(a2^(1/2)*a3)))/(2*a2^(3/2)*a3^3*a5^(1/2))"):void 0},"(a1*(a6*x1^n4+a7)^n5)/((a2*(a3*x1^n1+a4)^n2+a5)^n3)":e=>{const{n1:t,n2:n,n3:i,n4:s,n5:r,a3:o,a4:a,a5:l,a6:u,a7:c}=e.references;if(t.isOne()&&n.eq(two())&&i.eq(two())&&s.isOne()&&r.eq(two())&&c.times(o).eq(a.times(u)))return l.sign()<0?e.fromPattern("(a1*a6^2*e^((-a4/a3)*t)*(sinh((((-a5)^(1/2))*t)/(a2^(1/2)*a3))+(((-a5)^(1/2))*t*cosh((((-a5)^(1/2))*t)/(a2^(1/2)*a3)))/(a2^(1/2)*a3)))/(2*a2^(3/2)*a3^3*((-a5)^(1/2)))"):e.fromPattern("(a1*a6^2*e^((-a4/a3)*t)*(sin((a5^(1/2)*t)/(a2^(1/2)*a3))+(a5^(1/2)*t*cos((a5^(1/2)*t)/(a2^(1/2)*a3)))/(a2^(1/2)*a3)))/(2*a2^(3/2)*a3^3*a5^(1/2))")},"a1/(a2*(a3*x1^n1+a4)^n2-a5)":e=>{const{n1:t,n2:n}=e.references;if(t.isOne()&&n.eq(two()))return e.fromPattern("(a1*e^((-a4/a3)*t)*sinh((a5^(1/2)*t)/(a2^(1/2)*a3)))/(a2^(1/2)*a3*a5^(1/2))")},"(a1*(a6*x1^n3+a7)^n4)/(a2*(a3*x1^n1+a4)^n2-a5)":e=>{const{n1:t,n2:n,n3:i,n4:s}=e.references;if(t.isOne()&&n.eq(two())&&i.isOne()&&s.isOne())return e.fromPattern("(a1*e^((-a4/a3)*t)*cosh((a5^(1/2)*t)/(a2^(1/2)*a3)))/(a2*a3^2)")},"a1/((a2*(a3*x1^n1+a4)^n2-a5)^n3)":e=>{const{n1:t,n2:n,n3:i}=e.references;if(t.isOne()&&n.eq(two())&&i.eq(two()))return e.fromPattern("(a1*e^((-a4/a3)*t)*(a5^(1/2)*t*cosh((a5^(1/2)*t)/(a2^(1/2)*a3))-a2^(1/2)*a3*sinh((a5^(1/2)*t)/(a2^(1/2)*a3))))/(2*a2*a3^2*a5^(3/2))")},"(a1*(a6*x1^n3+a7)^n4)/((a2*(a3*x1^n1+a4)^n2-a5)^n5)":e=>{const{n1:t,n2:n,n3:i,n4:s,n5:r}=e.references;if(t.isOne()&&n.eq(two())&&i.isOne()&&s.isOne()&&r.eq(two()))return e.fromPattern("(a1*t*e^((-a4/a3)*t)*sinh((a5^(1/2)*t)/(a2^(1/2)*a3)))/(2*a2^(1/2)*a3*a5^(1/2))")},"(a1*((a2*(a3*x1^n1+a4)^n2+a5)^n3))/((a6*(a7*x1^n4+a8)^n5+a9)^n6)":e=>{const{n1:t,n2:n,n3:i,n4:s,n5:r,n6:o,_a2:a,a3:l,a4:u,_a6:c,a7:p,a8:m,_a9:g}=e.references;if(!(t.isOne()&&n.eq(two())&&i.isOne()&&s.isOne()&&r.eq(two())&&o.eq(two())))return;if(!l.eq(p)||!u.eq(m))return;const h=e.get("x1").text(),d=e.fromPattern("1/(a6*(a7*x1^n4+a8)^n5+a9)"),x=e.fromPattern("1/((a6*(a7*x1^n4+a8)^n5+a9)^2)"),E=An.lookup(new Pattern(d,[h]),0),y=An.lookup(new Pattern(x,[h]),0);return E&&y?e.fromPattern("(a1*a2)/a6").times(E).plus(e.fromPattern("a1*(a5-(a2*a9)/a6)").times(y)):void 0}},An=new LookupTable;function ilaplace(e,t,n){let i;if(e=Expression_Expression.create(e),t=assertPlainVariableAndGetString(Expression_Expression.create(t)),n=assertPlainVariableAndGetString(Expression_Expression.create(n)),e.isSum()&&e.isLinear()){const s=e.elementsArray();i=zero();for(const e of s){const s=ilaplace(e,t,n);if(s.isFunction(ge)){i=void 0;break}i=i.plus(s)}if(i)return i}const s=Expression_Expression.fromRational(e.getMultiplier());if(!s.isOne()){const i=ilaplace(e.toUnitMultiplier(),t,n);if(!i.isFunction(ge))return s.times(i)}if(e.isProduct()){const{constants:i,expression:s}=constantsFreeProduct(e,t);if(!i.isOne()){const e=ilaplace(s,t,n);if(!e.isFunction(ge))return i.times(e)}}if(i=An.lookup(new Pattern(e,[t]),0),i)return"t"!==n&&(i=i.evaluate({t:n})),i;{const i=e.getNumerator(),s=e.getDenominator();if(s.isPolynomialLike()&&i.isPolynomialLike()){const e=s.coeffs(t),r=i.coeffs(t);if(2===e.max()&&r.max()<=1){const{h:e,expression:i}=sqcomp(s,t),o=s.isSum()&&s.elementsArray().some(e=>e.getPower().eq(two())&&e.getBase().isSum());if(!e.isZero()&&!o){const s=r.hasPower(0)?r.getPower(0):zero(),o=r.hasPower(1)?r.getPower(1):zero(),a=Expression_Expression.create(t).plus(e),l=s.minus(o.times(e)),u=o.isZero()?zero():ilaplace(a.div(i),t,n),c=l.isZero()?zero():ilaplace(i.invert(),t,n);if(!u.isFunction(ge)&&!c.isFunction(ge))return o.times(u).plus(l.times(c))}}}}{const i=e.getNumerator(),s=function extractExpShift(e,t){const n=e.isProduct()?e.elementsArray():[e];for(const i of n){if(!i.isEXP())continue;const n=i.getPower();if(!n.hasVariable(t))continue;const{constants:s,expression:r}=constantsFreeProduct(n,t);if(!r.eq(t))continue;if(s.sign()<=0)continue;return{coefficient:s,remainder:e.div(i)}}return}(e.getDenominator(),t);if(s){const e=ilaplace(i.div(s.remainder),t,n);if(!e.isFunction(ge)){const t=s.coefficient,i=Expression_Expression.create(n).minus(t),r=e.subst(n,i);return Expression_Expression.toFunction(ce,[i]).times(r)}}}const r=e.getNumerator(),o=e.getDenominator();if(r.isPolynomialLike()&&o.isPolynomialLike()){const i=partfrac(e,t);if(i!==e){const e=ilaplace(i,t,n);if(!e.isFunction(ge))return e}}return Expression_Expression.toFunction(ge,[e,t,n])}An.addEntries(Mn);const Nn={a1:(e,t)=>e.fromPattern("a1/s"),"a1*x1^n1":e=>{const{n1:t}=e.references;if(!t.isNegative()||!t.plus(one()).isInteger())return e.fromPattern("a1*gamma(n1+1)/s^(n1+1)")},"a1*(a2)^(a3*x1^n1)":e=>{if(e.get("n1").isOne())return e.fromPattern("a1/(s-log(a2)*a3)")},"a1*sin(a2*x1^n1)^n2":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne())return e.fromPattern("(a1*a2)/(s^2+a2^2)")},"a1*cos(a2*x1^n1)^n2":e=>{if(e.get("n1").isOne()&&e.get("n2").isOne())return e.fromPattern("(a1*s)/(s^2+a2^2)")},"a1*(a2)^(a3*x1^n1)*x1^n2":e=>{const{n1:t,n2:n}=e.references;if(t.isOne()&&(!n.isNegative()||!n.plus(one()).isInteger()))return e.fromPattern("a1*gamma(n2+1)/(s-log(a2)*a3)^(n2+1)")},"a1*x1^n1*sin(a2*x1^n2)^n3":e=>{const{_a1:t,n1:n,n2:i,n3:s,_a2:r}=e.references;if(!i.isOne()||!s.isOne())return;if(!n.isInteger()||n.isNegative())return;const o=Number(n.getMultiplier().numerator);let a=e.fromPattern("(a1*a2)/(s^2+a2^2)");for(let e=0;e<o;e++)a=diff_diff(a,"s").neg();return a},"a1*x1^n1*cos(a2*x1^n2)^n3":e=>{const{_a1:t,n1:n,n2:i,n3:s,_a2:r}=e.references;if(!i.isOne()||!s.isOne())return;if(!n.isInteger()||n.isNegative())return;const o=Number(n.getMultiplier().numerator);let a=e.fromPattern("(a1*s)/(s^2+a2^2)");for(let e=0;e<o;e++)a=diff_diff(a,"s").neg();return a},"a1*(a2)^(a3*x1^n1)*sin(a4*x1^n2)^n3":e=>{const{n1:t,n2:n,n3:i}=e.references;if(t.isOne()&&n.isOne()&&i.isOne())return e.fromPattern("(a1*a4)/((s-log(a2)*a3)^2+a4^2)")},"a1*(a2)^(a3*x1^n1)*cos(a4*x1^n2)^n3":e=>{const{n1:t,n2:n,n3:i}=e.references;if(t.isOne()&&n.isOne()&&i.isOne())return e.fromPattern("a1*(s-log(a2)*a3)/((s-log(a2)*a3)^2+a4^2)")},"a1*cos(a2*x1^n1)^n2*sin(a3*x1^n3)^n4":e=>{const{_a1:t,a2:n,a3:i,n1:s,n2:r,n3:o,n4:a}=e.references;if(s.isOne()&&r.isOne()&&o.isOne()&&a.isOne()&&n.eq(i))return e.fromPattern("(a1*a2)/(s^2+4*a2^2)")},"a1*(a2)^(a3*x1^n1)*x1^n2*sin(a4*x1^n3)^n4":e=>{const{n1:t,n2:n,n3:i,n4:s}=e.references;if(t.isOne()&&n.isOne()&&i.isOne()&&s.isOne())return e.fromPattern("(2*a1*a4*(s-a3*log(a2)))/((a4^2+(s-a3*log(a2))^2)^2)")},"a1*(a2)^(a3*x1^n1)*x1^n2*cos(a4*x1^n3)^n4":e=>{const{n1:t,n2:n,n3:i,n4:s}=e.references;if(t.isOne()&&n.isOne()&&i.isOne()&&s.isOne())return e.fromPattern("(a1*((s-a3*log(a2))^2-a4^2))/((a4^2+(s-a3*log(a2))^2)^2)")},"a1*(a2)^(a3*x1^n1)*(a4*sin(a5*x1^n2)^n3-a6*x1^n4*cos(a7*x1^n5)^n6)^n7":e=>{const{n1:t,n2:n,n3:i,n4:s,n5:r,n6:o,n7:a,a5:l,a7:u}=e.references;if(t.isOne()&&n.isOne()&&i.isOne()&&s.isOne()&&r.isOne()&&o.isOne()&&a.isOne()&&l.eq(u))return e.fromPattern("(a1*(a4*a5^2-a6*((s-a3*log(a2))^2-a5^2)))/(((s-a3*log(a2))^2+a5^2)^2)")},"a1*(a2)^(a3*x1^n1)*(a4*sin(a5*x1^n2)^n3+a6*x1^n4*cos(a7*x1^n5)^n6)^n7":e=>{const{n1:t,n2:n,n3:i,n4:s,n5:r,n6:o,n7:a,a5:l,a7:u}=e.references;if(t.isOne()&&n.isOne()&&i.isOne()&&s.isOne()&&r.isOne()&&o.isOne()&&a.isOne()&&l.eq(u))return e.fromPattern("(a1*(a4*a5^2+a6*((s-a3*log(a2))^2-a5^2)))/(((s-a3*log(a2))^2+a5^2)^2)")},"a1*(a2)^(a3*x1^n1)*sinh(a4*x1^n2)^n3":e=>{const{n1:t,n2:n,n3:i}=e.references;if(t.isOne()&&n.isOne()&&i.isOne())return e.fromPattern("(a1*a4)/((s-a3*log(a2))^2-a4^2)")},"a1*(a2)^(a3*x1^n1)*cosh(a4*x1^n2)^n3":e=>{const{n1:t,n2:n,n3:i}=e.references;if(t.isOne()&&n.isOne()&&i.isOne())return e.fromPattern("(a1*(s-a3*log(a2)))/((s-a3*log(a2))^2-a4^2)")},"a1*(a2)^(a3*x1^n1)*x1^n2*sinh(a4*x1^n3)^n4":e=>{const{n1:t,n2:n,n3:i,n4:s}=e.references;if(t.isOne()&&n.isOne()&&i.isOne()&&s.isOne())return e.fromPattern("(2*a1*a4*(s-a3*log(a2)))/(((s-a3*log(a2))^2-a4^2)^2)")},"a1*(a2)^(a3*x1^n1)*x1^n2*cosh(a4*x1^n3)^n4":e=>{const{n1:t,n2:n,n3:i,n4:s}=e.references;if(t.isOne()&&n.isOne()&&i.isOne()&&s.isOne())return e.fromPattern("(a1*((s-a3*log(a2))^2+a4^2))/(((s-a3*log(a2))^2-a4^2)^2)")}},Tn=new LookupTable;function laplace(e,t,n){let i;if(e=Expression_Expression.create(e).expand(),n=assertPlainVariableAndGetString(Expression_Expression.create(n)),t=assertPlainVariableAndGetString(Expression_Expression.create(t)),e.isSum()&&e.isLinear()){const s=e.elementsArray();i=zero();for(const e of s){const s=laplace(e,t,n);if(s.isFunction(xe)){i=void 0;break}i=i.plus(s)}if(i)return i}if(e.isProduct()){const{constants:i,expression:s}=constantsFreeProduct(e,t);if(!i.isOne()){const e=laplace(s,t,n);if(!e.isFunction(xe))return i.times(e)}}const s=e.isProduct()?e.elementsArray():[e];for(let e=0;e<s.length;e++){const i=s[e];if(!i.isEXP())continue;const r=i.getBase(),o=i.getPower();if(r.hasVariable(t)||!o.isPolynomialLike())continue;const a=o.coeffs(t).toArray();if(2!==a.length||!a[0].isZero())continue;const l=a[1];if(-1!==l.sign())continue;let u=one();for(let t=0;t<s.length;t++)t!==e&&(u=u.times(s[t]));const c=laplace(u,t,n);if(!c.isFunction(xe)){const e=r.isE()?one():Expression_Expression.toFunction("log",[r]),t=Expression_Expression.Variable(n).minus(l.copy().times(e));return c.subst(n,t)}}return i=Tn.lookup(new Pattern(e,[t]),0),i?("s"!==n&&(i=i.evaluate({s:n})),i):Expression_Expression.toFunction(xe,[e,t,n])}Tn.addEntries(Nn);const In=new LookupTable;In.addEntries({});function evalCategory(e,t,n){try{const i=simplify(e.subst(t,n));return i.isZero()?"zero":i.isPosInf()?"inf":i.isNegInf()?"neginf":i.eq(one())?"one":"finite"}catch{return}}function tryRewriteIndeterminate(e,t,n,i,s){if(e.getDenominator().isOne()&&e.isProduct()){const r=e.elementsArray().map(e=>Expression_Expression.create(e));let o=-1,a=-1;for(let e=0;e<r.length;e++){const i=evalCategory(r[e],t,n);"zero"===i&&-1===o?o=e:"inf"!==i&&"neginf"!==i||-1!==a||(a=e)}if(-1!==o&&-1!==a){const e=r[o],l=r[a],u=[];for(let e=0;e<r.length;e++)e!==o&&e!==a&&u.push(r[e]);let c=e.div(one().div(l));for(const e of u)c=c.times(e);return limit(simplify(c),t,n,i,s+1)}}if(function isInfMinusInf(e,t,n){if(!e.isSum())return!1;const i=e.elementsArray().map(e=>Expression_Expression.create(e));let s=!1,r=!1;for(const e of i){const i=evalCategory(e,t,n);"inf"===i?s=!0:"neginf"===i&&(r=!0)}return s&&r}(e,t,n)){const r=simplify(e);if(!r.eq(e))return limit(r,t,n,i,s+1);const o=e.elementsArray().map(e=>Expression_Expression.create(e));if(2===o.length){const[r,a]=o,l=r.getNumerator(),u=r.getDenominator(),c=a.getNumerator(),p=a.getDenominator(),m=simplify(l.times(p).plus(c.times(u))),g=simplify(u.times(p)),h=m.div(g);if(!h.eq(e))return limit(h,t,n,i,s+1)}}if(e.isEXP()){const r=e.getBase(),o=e.getPower(),a=function classifyPowerForm(e,t,n,i){const s=evalCategory(e,n,i),r=evalCategory(t,n,i);return s&&r?"one"!==s||"inf"!==r&&"neginf"!==r?"zero"===s&&"zero"===r?"zero_to_zero":"inf"!==s&&"neginf"!==s||"zero"!==r?"none":"inf_to_zero":"one_to_inf":"none"}(r,o,t,n);if("one_to_inf"===a||"zero_to_zero"===a||"inf_to_zero"===a){const e=limit(o.times(Expression_Expression.toFunction("log",[r])),t,n,i,s+1);if(e.isPosInf())return Expression_Expression.Inf();if(e.isNegInf())return zero();if(!e.isFunction("limit"))return math_exp(e)}}}function growthTier(e){switch(e.type){case"bounded":return 0;case"logarithmic":return 1;case"polynomial":return 2;case"exponential":return 3;case"unknown":return-1}}function getInfinityGrowthClassification(e,t){if(!e.hasVariable(t.text()))return{type:"bounded"};if(e.isEXP()&&e.getBase().isE()&&e.getPower().hasVariable(t.text()))return{type:"exponential",exponent:e.getPower()};if(e.isProduct()){const n=e.elementsArray().map(e=>Expression_Expression.create(e));let i={type:"bounded"},s=0,r=!1;for(const e of n){const n=getInfinityGrowthClassification(e,t);if("unknown"===n.type)return{type:"unknown"};"bounded"===n.type&&e.hasVariable(t.text())&&(r=!0);const o=growthTier(n);o>s?(i=n,s=o):o===s&&"polynomial"===n.type&&"polynomial"===i.type&&(i={type:"polynomial",degree:i.degree+n.degree})}return r&&s>0?{type:"unknown"}:i}if(e.isFunction("log")&&e.getArguments()[0]?.hasVariable(t.text())){const n=getInfinityGrowthClassification(e.getArguments()[0],t);return"polynomial"===n.type||"exponential"===n.type||"logarithmic"===n.type?{type:"logarithmic"}:{type:"bounded"}}if(e.isPolynomialLike()){return{type:"polynomial",degree:new Polynomial(e).deg()}}if((e.isVAR()||e.isEXP())&&!e.getPower().hasVariable(t.text()))try{const t=e.getPower(),n=t.getMultiplier(),i=Number(n.numerator)/Number(n.denominator);if(isFinite(i)&&0!==i&&t.isNUM())return{type:"polynomial",degree:i}}catch{}return e.isFunction(we)||e.isFunction(ve)||e.isFunction(Ne)?{type:"bounded"}:{type:"unknown"}}function getDominantAtInfinity(e,t){const n=function getAdditiveTerms(e){const t=e.distributeMultiplier();return t.isSum()?t.elementsArray().map(e=>Expression_Expression.create(e)):[t]}(e);let i=-1,s=-1/0;const r=[];for(const e of n){const n=getInfinityGrowthClassification(e,t);if("unknown"===n.type)return;let o=growthTier(n);"polynomial"===n.type&&n.degree<0&&(o=-1),o>i?(i=o,s="polynomial"===n.type?n.degree:-1/0,r.length=0,r.push(e)):o<i||("polynomial"===n.type?n.degree>s?(s=n.degree,r.length=0,r.push(e)):n.degree===s&&r.push(e):r.push(e))}if(0===r.length)return;let o=r[0];for(let e=1;e<r.length;e++)o=o.plus(r[e]);return simplify(o)}function tryComposition(e,t,n,i,s){if(e.isFunction()&&!e.isFunction("limit")){const r=e.getArguments();if(0===r.length||!r.some(e=>e.hasVariable(t.text())))return;const o=e.name;if("abs"===o||"sign"===o){const e=r[0],a=limit(e,t,n,i,s+1);if(a.isFunction("limit"))return;if(!a.isZero())try{return simplify(Expression_Expression.toFunction(o,[a]))}catch{return}if(a.isZero()){if("abs"===o)return zero();if("sign"===o){if("both"===i)return;try{const s=diff_diff(e,t),r=simplify(s.subst(t,n)).sign();if(0!==r){if("right"===i)return Expression_Expression.create(r>0?1:-1);if("left"===i)return Expression_Expression.create(r>0?-1:1)}}catch{return}return}}return}const a=[];for(const e of r){let r;try{r=limit(e,t,n,i,s+1)}catch{return}if(r.isFunction("limit"))return;a.push(r)}const l=a[0];if(l.isPosInf())switch(o){case"log":return Expression_Expression.Inf();case Ne:return Expression_Expression.Pi().div(two());case"sqrt":return Expression_Expression.Inf();case we:case ve:return}if(l.isNegInf())switch(o){case Ne:return Expression_Expression.Pi().div(function minusTwo(){return getFromCacheOrCreate("-2")}());case"log":case we:case ve:return}try{const e=Expression_Expression.toFunction(o,a),t=simplify(e);if(!t.isFunction(o))return t;const n=Expression_Expression.create(e.evaluate());if(!n.isFunction(o))return n}catch{}return}if(e.isEXP()){const r=e.getBase(),o=e.getPower();if(!r.hasVariable(t.text())&&!o.hasVariable(t.text()))return;let a,l;try{a=limit(r,t,n,i,s+1),l=limit(o,t,n,i,s+1)}catch{return}if(a.isFunction("limit")||l.isFunction("limit"))return;const u=a.isPosInf()||a.isNegInf()?"inf":a.isZero()?"zero":a.eq(one())?"one":"finite",c=l.isPosInf()||l.isNegInf()?"inf":l.isZero()?"zero":"finite";if("one"===u&&"inf"===c)return;if("zero"===u&&"zero"===c)return;if("inf"===u&&"zero"===c)return;if(a.isPosInf()&&l.isPosInf())return Expression_Expression.Inf();if(a.isPosInf()&&l.isNegInf())return zero();if(a.isZero()&&l.isPosInf())return zero();if("finite"===u&&"zero"===c)return one();if(!("finite"!==u&&"one"!==u||"finite"!==c&&"zero"!==c))try{return simplify(a.pow(l))}catch{return}if(a.isE()){if(l.isPosInf())return Expression_Expression.Inf();if(l.isNegInf())return zero()}return}if(e.isSum()){const r=e.elementsArray().map(e=>Expression_Expression.create(e));if(r.length<2)return;const o=[];let a=!1,l=!1;for(const e of r){let r;try{r=limit(e,t,n,i,s+1)}catch{return}if(r.isFunction("limit"))return;r.isPosInf()&&(a=!0),r.isNegInf()&&(l=!0),o.push(r)}if(a&&l)return;if(!a&&!l)try{let e=o[0];for(let t=1;t<o.length;t++)e=e.plus(o[t]);return simplify(e)}catch{return}return a&&!l?Expression_Expression.Inf():l&&!a?Expression_Expression.NegInf():void 0}if(e.isProduct()){const r=e.elementsArray(!0).map(e=>Expression_Expression.create(e));if(r.length<2)return;const o=[];let a=!1,l=!1;for(const e of r){let r;try{r=limit(e,t,n,i,s+1)}catch{return}if(r.isFunction("limit"))return;r.isZero()&&(a=!0),(r.isPosInf()||r.isNegInf())&&(l=!0),o.push(r)}if(a&&l){let e=-1,a=-1;for(let t=0;t<o.length;t++)o[t].isZero()&&-1===e?e=t:(o[t].isPosInf()||o[t].isNegInf())&&-1===a&&(a=t);if(-1!==e&&-1!==a){const o=r[e],l=r[a];try{const u=diff_diff(o,t),c=diff_diff(l,t);if(!c.isZero()){let o=simplify(u.times(l.pow(two())).div(c).neg());for(let t=0;t<r.length;t++)t!==e&&t!==a&&(o=o.times(r[t]));return limit(o,t,n,i,s+1)}}catch{return}}return}if(!l)try{let e=o[0];for(let t=1;t<o.length;t++)e=e.times(o[t]);return simplify(e)}catch{return}if(a&&!l)return zero();if(l&&!a){let e=1;for(const t of o)if(t.isNegInf())e*=-1;else if(t.isPosInf());else{const n=t.sign();if(0===n)return zero();e*=n}return e>0?Expression_Expression.Inf():Expression_Expression.NegInf()}return}}function limit(e,t,n,i="both",s=0){let r;e=Expression_Expression.create(e),t=Expression_Expression.create(t),n=Expression_Expression.create(n);const o=e.hasDecimal();if(s>=12)return Expression_Expression.toFunction("limit",[e,t,n,i]);if(n.isPosInf()||n.isNegInf()){e.isSum()&&(r=tryComposition(e,t,n,i,s));const o=r?void 0:getDominantAtInfinity(e.getNumerator(),t),a=r?void 0:getDominantAtInfinity(e.getDenominator(),t);if(o&&a&&o.isPolynomialLike()&&a.isPolynomialLike()){const e=new Polynomial(o),t=new Polynomial(a),i=e.deg()-t.deg();if(i<0)r=zero();else if(0===i)r=simplify(Expression_Expression.create(e.LC()).div(Expression_Expression.create(t.LC())));else{let s=Expression_Expression.create(e.LC()).div(Expression_Expression.create(t.LC())).sign();n.isNegInf()&&i%2!=0&&(s*=-1),s>0?r=Expression_Expression.Inf():s<0&&(r=Expression_Expression.NegInf())}}if(!r&&o&&a){const e=getInfinityGrowthClassification(o,t),i=getInfinityGrowthClassification(a,t),s="polynomial"===e.type?e.degree:"bounded"===e.type?0:void 0,l="polynomial"===i.type?i.degree:"bounded"===i.type?0:void 0;if(void 0!==s&&void 0!==l){const e=s-l;if(e<0)r=zero();else if(e>0){let t=o.sign()*a.sign();n.isNegInf()&&e%2!=0&&(t*=-1),t>0?r=Expression_Expression.Inf():t<0&&(r=Expression_Expression.NegInf())}}}if(!r&&o&&a&&(r=function tryNonPolynomialInfinityLimit(e,t,n,i,s,r){const o=getInfinityGrowthClassification(e,n),a=getInfinityGrowthClassification(t,n),l=growthTier(o),u=growthTier(a);if(!(l<0||u<0))if(l>u){if("exponential"===o.type){const e=limit(o.exponent,n,i,s,r+1);if(e.isPosInf()){const e=t.sign();if(e>0)return Expression_Expression.Inf();if(e<0)return Expression_Expression.NegInf()}if(e.isNegInf())return zero()}if("polynomial"===o.type&&("logarithmic"===a.type||"bounded"===a.type)){const n=e.sign(),i=t.sign();if(0!==n&&0!==i)return n*i>0?Expression_Expression.Inf():Expression_Expression.NegInf()}}else{if(l<u){if("exponential"===a.type){const e=limit(a.exponent,n,i,s,r+1);if(e.isPosInf())return zero();if(e.isNegInf())return}return zero()}if("exponential"===o.type&&"exponential"===a.type){const l=math_exp(simplify(o.exponent.minus(a.exponent))),u=e.getMultiplier(!0),c=t.getMultiplier(!0),p=simplify(u.div(c));return limit(simplify(p.times(l)),n,i,s,r+1)}if("logarithmic"===o.type&&"logarithmic"===a.type){const o=simplify(e.div(t));return o.eq(e.div(t))?void 0:limit(o,n,i,s,r+1)}}}(o,a,t,n,i,s)),!r&&o&&a){const l=o.div(a);l.eq(e)||(r=limit(l,t,n,i,s))}if(!r){const o=tryRewriteIndeterminate(e,t,n,i,s);o&&(r=o)}r||(r=tryComposition(e,t,n,i,s))}else{if(e.isFunction("sign")||e.isFunction("abs")){const o=tryComposition(e,t,n,i,s);void 0!==o&&(r=o)}if(!r){const o=function classifyAtPoint(e,t,n){const i={[t.text()]:n};try{const t=Expression_Expression.create(e.getNumerator().evaluate(i));return Expression_Expression.create(e.getDenominator().evaluate(i)).isZero()?t.isZero()?"zero_over_zero":"nonzero_over_zero":"regular"}catch{return"unknown"}}(e,t,n);if("regular"===o&&(r=Expression_Expression.create(e.evaluate({[t.text()]:n}))),r||"nonzero_over_zero"!==o||(r=function tryNonzeroOverZero(e,t,n,i){const s=e.getNumerator(),r=e.getDenominator(),o={[t.text()]:n};let a;try{a=Expression_Expression.create(s.evaluate(o)).sign()}catch{return}if(0===a)return;let l=r,u=0;for(let e=0;e<4;e++){let n;l=diff_diff(l,t),u=e+1;try{n=Expression_Expression.create(l.evaluate(o))}catch{return}if(n.isZero())continue;const s=n.sign();if(0===s)return;if(u%2==0&&("both"===i||"left"===i||"right"===i))return a*s>0?Expression_Expression.Inf():Expression_Expression.NegInf();const r=s,c=-s;if("right"===i)return a*r>0?Expression_Expression.Inf():Expression_Expression.NegInf();if("left"===i)return a*c>0?Expression_Expression.Inf():Expression_Expression.NegInf();const p=a*r;return p===a*c?p>0?Expression_Expression.Inf():Expression_Expression.NegInf():void 0}}(e,t,n,i)),!r&&"zero_over_zero"===o){const o=simplify(e);o.eq(e)||(r=limit(o,t,n,i,s))}if(!r){const o=tryRewriteIndeterminate(e,t,n,i,s);o&&(r=o)}if(!r){const o=function tryLHopital(e,t,n,i,s){if(s>=4)return;const r=e.getDenominator();if(r.isOne())return;const o=e.getNumerator(),a={[t.text()]:n};let l,u;try{l=Expression_Expression.create(o.evaluate(a)),u=Expression_Expression.create(r.evaluate(a))}catch{return}const c=l.isZero()&&u.isZero(),p=(l.isPosInf()||l.isNegInf())&&(u.isPosInf()||u.isNegInf());if(!c&&!p)return;const m=diff_diff(o,t),g=diff_diff(r,t);if(g.isZero())return;const h=simplify(m.div(g));return h.eq(e)?void 0:limit(h,t,n,i,s+1)}(e,t,n,i,s);o&&(r=o)}r||(r=tryComposition(e,t,n,i,s))}}return r||(r=In.lookup(new Pattern(e,[t.text()]),0)),r??=Expression_Expression.toFunction("limit",[e,t,n,i]),o&&(r.getMultiplier().asDecimal=!0),r}function determinant(e){return e.copy().determinant()}function invert(e){return e.inverse()}function nullspace(e,t){return new Vector(e.nullspace(t).map(e=>new Vector(e)))}function imatrix(e){let t;return t=e.isInteger()?Matrix.identity(Number(e)):Expression_Expression.toFunction("imatrix",[e]),t}function dot(e,t){let n;if(Vector.isVector(e)&&Vector.isVector(t))n=e.dot(t);else{if(!Expression_Expression.isExpression(e)||!Expression_Expression.isExpression(t)){const n=Vector.isVector(e)?t:e;throw new UnexpectedDataType(message("vectorExpected",{type:Y[n.dataType]}))}n=Expression_Expression.toFunction("dot",[e,t])}return n}function cross(e,t){let n;if(Vector.isVector(e)&&Vector.isVector(t))n=e.cross(t);else{if(!Expression_Expression.isExpression(e)||!Expression_Expression.isExpression(t)){const n=Vector.isVector(e)?t:e;throw new UnexpectedDataType(message("vectorExpected",{type:Y[n.dataType]}))}n=Expression_Expression.toFunction("cross",[e,t])}return n}function adapters_completeSquare(e,t){return sqcomp(e,void 0===t?void 0:assertPlainVariableAndGetString(t)).expression}function simpson(e,t,n,i,s){return(t-e)/6*(n+4*i+s)}function withFiniteBounds(e,t,n,i,s,r,o,a){let l=t,u=n;if(l===u)return 0;let c=1;if(u<l){c=-1;const e=l;l=u,u=e}let p=0;const evalF=t=>{if(++p>o)throw new Error(message("defintMaxEvals",{max:String(o)}));const n=e(t);if("strict"===a&&!isFinite(n))throw new Error(message("defintNonFiniteValue",{x:String(t)}));return n},m=(l+u)/2,g=evalF(l),h=evalF(m),d=evalF(u);if("ignore"===a&&(isNaN(g)||isNaN(h)||isNaN(d)))return NaN;if(!("auto"!==a||isFinite(g)&&isFinite(h)&&isFinite(d))){const t=!isFinite(g)&&isFinite(h)&&isFinite(d),n=isFinite(g)&&isFinite(h)&&!isFinite(d);if(t||n){const n=u-l,p=Math.sqrt(Number.EPSILON),m=t;return c*withFiniteBounds(t=>{const i=Math.max(t,p),s=m?l+n*i*i:u-n*i*i,r=2*e(s)*n*i;if(!isFinite(r))throw new Error(message("defintEndpointSingularity",{x:String(s)}));return r},0,1,i,s,r,o,a)}return c*function autoSplitFinite(e,t,n,i,s,r,o,a){const l=(t+n)/2,u=(t+l)/2,c=(l+n)/2,p=i/4;return withFiniteBounds(e,t,u,p,s,r,o,a)+withFiniteBounds(e,u,l,p,s,r,o,a)+withFiniteBounds(e,l,c,p,s,r,o,a)+withFiniteBounds(e,c,n,p,s,r,o,a)}(e,l,u,i,s,r,o,a)}const x=simpson(l,u,g,h,d),E=[{a:l,b:u,m,fa:g,fm:h,fb:d,S:x,depth:0,tolAbs:i,tolRel:s,singularTries:0}];let y=0;for(;E.length>0;){const e=E[E.length-1];E.pop();const{a:t,b:n,m:i}=e,s=e.tolRel,o=(t+i)/2,l=(i+n)/2,u=evalF(o),c=evalF(l);if("ignore"===a&&(isNaN(u)||isNaN(c)))return NaN;if(!("auto"!==a||isFinite(u)&&isFinite(c)&&isFinite(e.fa)&&isFinite(e.fm)&&isFinite(e.fb))){if(e.depth>=r||e.singularTries>=8)throw new Error(message("defintSingularity",{a:String(t),b:String(n)}));const a=e.depth+1,p=e.tolAbs/2;E.push({a:i,b:n,m:l,fa:e.fm,fm:c,fb:e.fb,S:simpson(i,n,e.fm,c,e.fb),depth:a,tolAbs:p,tolRel:s,singularTries:e.singularTries+1}),E.push({a:t,b:i,m:o,fa:e.fa,fm:u,fb:e.fm,S:simpson(t,i,e.fa,u,e.fm),depth:a,tolAbs:p,tolRel:s,singularTries:e.singularTries+1});continue}const p=simpson(t,i,e.fa,u,e.fm),m=simpson(i,n,e.fm,c,e.fb),g=p+m;if(Math.abs(g-e.S)/15<=e.tolAbs+e.tolRel*Math.abs(g)||e.depth>=r){y+=g+(g-e.S)/15;continue}const h=e.depth+1,d=e.tolAbs/2;E.push({a:i,b:n,m:l,fa:e.fm,fm:c,fb:e.fb,S:m,depth:h,tolAbs:d,tolRel:s,singularTries:e.singularTries}),E.push({a:t,b:i,m:o,fa:e.fa,fm:u,fb:e.fm,S:p,depth:h,tolAbs:d,tolRel:s,singularTries:e.singularTries})}return y*c}function defint(e,t,n,i){let s;e=Expression_Expression.create(e),t=Expression_Expression.create(t),n=Expression_Expression.create(n),i=Expression_Expression.create(i);const r=e.variables(),o=assertPlainVariableAndGetString(t);if(r.includes(o)){let a=n,l=i;if(!a.isNUM()&&a.isConstant()&&(a=a.evaluate()),!l.isNUM()&&l.isConstant()&&(l=l.evaluate()),1===r.length&&r[0]===o&&a.isNUM()&&l.isNUM()){const t=Number(a.getMultiplier().toDecimal()),n=Number(l.getMultiplier().toDecimal());s=Expression_Expression.create(function definiteIntegrateNative(e,t,n,i={}){if(t===n)return 0;const s=i.tolAbs??1e-12,r=i.tolRel??1e-12,o=i.maxDepth??50,a=i.maxEvals??1e5,l=i.singular??"auto",u=i.allowInfinite??!1,c=!isFinite(t)&&!isNaN(t),p=!isFinite(n)&&!isNaN(n);if((c||p)&&!u)throw new Error(message("defintInfiniteBounds"));if(u&&(c||p)){const i=1e-15;if(!c&&p&&n>0){const n=t;return withFiniteBounds(t=>{const i=1-t;return e(n+t/i)/(i*i)},0,1-i,s,r,o,a,l)}if(c&&t<0&&!p){const t=n;return withFiniteBounds(n=>{const i=1-n;return e(t-n/i)/(i*i)},0,1-i,s,r,o,a,l)}if(c&&t<0&&p&&n>0)return withFiniteBounds(t=>{const n=Math.PI*(t-.5),i=Math.cos(n);return e(Math.tan(n))*Math.PI/(i*i)},i,1-i,s,r,o,a,l);throw new Error(message("defintUnsupportedInfiniteBounds"))}const m=Math.min(t,n),g=Math.max(t,n),h=(i.breakpoints??[]).filter(e=>e>m&&e<g).sort((e,t)=>e-t);if(0===h.length)return withFiniteBounds(e,t,n,s,r,o,a,l);const d=s/(h.length+1),x=t<=n?[t,...h,n]:[t,...h.reverse(),n];let E=0;for(let t=0;t<x.length-1;t++)E+=withFiniteBounds(e,x[t],x[t+1],d,r,o,a,l);return E}(e.buildFunction(),t,n)),s.precision=17}else s=Expression_Expression.toFunction("defint",[e,t,n,i])}else s=e.times(i.minus(n));return s}function differentiate(e,t,n){let i;return i=Equation.isEquation(e)?e.each(e=>differentiate(e,t,n)):diff_diff(e,t,n),i}function integrateEquation(e,t){let n;return n=Equation.isEquation(e)?e.each(e=>integrateEquation(e,t)):integrate(e,t),n}function directionalLimit(e,t,n,i){let s="both";i&&(s=assertPlainVariableAndGetString(i));return limit(e,t,n,s)}function evaluate_evaluate(e,t,n){const i=e();let s;if(t){const e=t();if(s={},n){const t=n();if(!Vector.isVector(e))throw new UnexpectedDataType(message("vectorExpected",{type:Y[e.dataType]}));if(!Vector.isVector(t))throw new UnexpectedDataType(message("vectorExpected",{type:Y[t.dataType]}));if(e.count()!==t.count())throw new DimensionError(message("mismatchedDimensions",{function:"evaluate"}));for(let n=0;n<e.count();n++){const i=e.elements[n];if(!Expression_Expression.isExpression(i))throw new UnexpectedDataType(message("expressionExpected",{type:Y[i.dataType]}));s[assertPlainVariableAndGetString(i)]=t.elements[n]}}else{if(!Dictionary.isDictionary(e))throw new UnexpectedDataType(message("unsupportedType",{type:Y[e.dataType]}));for(const[t,n]of e)s[t]=n}}let r=i;try{r=s&&(Expression_Expression.isExpression(i)||Vector.isVector(i)||Matrix.isMatrix(i)||ValuesSet.isValuesSet(i))?i.evaluate(s):i.evaluate()}catch{r=i}return r}function applyNumeric(e,t){let n;return n=Expression_Expression.isExpression(e)?numeric(e,t):Equation.isEquation(e)?e.copy().each(e=>Expression_Expression.isExpression(e)?numeric(e,t):e):Vector.isVector(e)?e.copy().each(e=>applyNumeric(e,t)):Matrix.isMatrix(e)?e.copy().each(e=>numeric(e,t)):Collection.isCollection(e)||Dictionary.isDictionary(e)||ValuesSet.isValuesSet(e)?e.copy().each(e=>applyNumeric(e,t)):e,n}function evaluate_numeric(e,t){const n=e();let i;if(t){const e=t();if(!Expression_Expression.isExpression(e))throw new UnexpectedDataType(message("expressionExpected",{type:Y[e.dataType]}));i=e}return applyNumeric(n,i)}function trunc_trunc(e){let t;if((e=Expression_Expression.create(e)).isPosInf()||e.isNegInf())t=e.isNegInf()?Expression_Expression.NegInf():Expression_Expression.Inf();else if(e.isNUM()){const n=e.getMultiplier();t=Expression_Expression.Number(n.numerator/n.denominator)}else t=Expression_Expression.toFunction("trunc",[e]);return t}const Rn="Brent",On=Rn;class FunctionSolver{derivativeStep;func;lowerBound;maxIters;maxRoots;method;stepSize;tolerance;upperBound;variable;verbose;constructor(e,t,n={}){this.func="string"==typeof e?Expression_Expression.create(e):e,this.lowerBound=new q(n.lowerBound??-100),this.upperBound=new q(n.upperBound??100),this.derivativeStep=new q(n.derivativeStep??1e-15),this.maxIters=n.maxIterations??200,this.variable=t??this.getVariable(),this.stepSize=n.stepSize??.1,this.tolerance=new q(n.tolerance??1e-14),this.maxRoots=n.maxRoots??20,this.verbose=n.verbose??!1,this.method=n.method??On}calculateIntervals(){const e=this.lowerBound,t=this.upperBound,n=new q(this.stepSize),i=t.minus(e),s=e.plus(i.dividedBy(2).floor());let r=s,o=s;const a=[],l=s.minus(e),u=t.minus(s),c=l.greaterThan(u)?l:u;for(let i=new q(0);i.lessThan(c);i=i.plus(n)){const i=r.minus(n),s=o.plus(n);i.greaterThanOrEqualTo(e)&&a.push([r,i]),s.lessThanOrEqualTo(t)&&a.push([o,s]),r=i,o=s}return a}getVariable(){const e=this.func.variables();if(e.length>1)throw new UnsupportedOperationError(message("univariateInputOnly"));return e[0]}Brent(e,t){let n=new q(e),i=new q(t);const s=this.tolerance;let r=this.evaluate(n),o=this.evaluate(i);const a=new q(1/0);if(r.abs().lessThan(s))return{root:n,iterations:0,converged:!1,error:a,errorMsg:message("endPointIsRoot")};if(o.abs().lessThan(s))return{root:i,iterations:0,converged:!0,error:a,errorMsg:message("endPointIsRoot")};const l=r.times(o);if(l.greaterThan(0))return{root:l,iterations:0,converged:!0,error:a,errorMsg:message("differentSignsAtEndPointsRequired")};r.abs().lessThan(o.abs())&&([n,i]=[i,n],[r,o]=[o,r]);let u=n,c=r,p=!0,m=new q(0);for(let e=0;e<this.maxIters;e++){let t;t=r.equals(c)||o.equals(c)?i.minus(o.times(i.minus(n)).dividedBy(o.minus(r))):n.times(o).times(c).dividedBy(r.minus(o).times(r.minus(c))).plus(i.times(r).times(c).dividedBy(o.minus(r).times(o.minus(c)))).plus(u.times(r).times(o).dividedBy(c.minus(r).times(c.minus(o))));const a=t.lessThan(new q(3).times(n).plus(i).dividedBy(4))||t.greaterThan(i),l=p&&t.minus(i).abs().greaterThanOrEqualTo(i.minus(u).abs().dividedBy(2)),g=!p&&t.minus(i).abs().greaterThanOrEqualTo(u.minus(m).abs().dividedBy(2)),h=p&&i.minus(u).abs().lessThan(s),d=!p&&u.minus(m).abs().lessThan(s);a||l||g||h||d?(t=n.plus(i).dividedBy(2),p=!0):p=!1;const x=this.evaluate(t);m=u,u=i,c=o,r.times(x).lessThan(0)?(i=t,o=x):(n=t,r=x),r.abs().lessThan(o.abs())&&([n,i]=[i,n],[r,o]=[o,r]);const E=o.abs().lessThan(s),y=i.minus(n).abs().lessThan(s);if(E||y)return{root:i,iterations:e,converged:!0,error:E?o.abs().minus(s):i.minus(n).abs()}}return{root:l,iterations:this.maxIters,converged:!1,error:a,errorMsg:message("convergenceFailed",{iter:String(this.maxIters)})}}df(e,t){const n=e.plus(t),i=e.minus(t),s=this.evaluate(n),r=this.evaluate(i);return s.minus(r).dividedBy(t.times(2))}evaluate(e){const t=this.func.evaluate({[this.variable]:e});if(!Expression_Expression.isExpression(t))throw new UnexpectedInputError(message("unsupportedType"));if(!t.isNUM())throw new UnexpectedInputError(message("wrongInput",{expected:"a real numeric value",received:t.text()}));return t.getMultiplier().toDecimal()}NewtonRaphson(e){const t=this.tolerance,n=new q(this.derivativeStep);let i=new q(e),s=0,r=new q(1/0);for(let e=0;e<this.maxIters;e++){const o=this.evaluate(i),a=this.df(i,n);if(a.isZero())return{root:i,iterations:e,converged:!1,error:o.abs(),errorMsg:message("zeroDerivative",{x:i.toString()})};const l=i.minus(o.dividedBy(a));if(r=l.minus(i).abs(),s=e+1,r.lessThanOrEqualTo(t))return{root:l,iterations:s,converged:!0,error:r};i=l}return{root:i,iterations:s,converged:!1,error:r}}roots(){const e=this.upperBound,t=this.tolerance,n=[];let i=!1;const s=new Map,evaluatePoint=e=>{const t=e.toString();let n=s.get(t);return void 0===n&&(n=this.evaluate(e),s.set(t,n)),n},addRoot=e=>{this.evaluate(e).abs().lessThan(t)&&n.push(e),n.length>=this.maxRoots&&(i=!0)},r=this.calculateIntervals();for(const e of r){if(i)return n.sort((e,t)=>e.comparedTo(t)).map(e=>Expression_Expression.create(e));try{const i=new q(e[0]),s=new q(e[1]),r=evaluatePoint(i),o=evaluatePoint(s);if(r.abs().lessThan(t)&&(0===n.length||i.minus(n[n.length-1]).abs().greaterThan(t.times(10)))&&addRoot(i),r.times(o).lessThan(0))try{let e;switch(this.method){case"NewtonRaphson":{const t=s.minus(i).div(2).plus(i);e=this.NewtonRaphson(t);break}default:e=this.Brent(i,s)}if(e.converged){const i=e.root;let s=!1;for(const e of n)if(i.minus(e).abs().lessThan(t.times(10))){s=!0;break}s||addRoot(i)}}catch{}}catch{}}try{const i=e;evaluatePoint(i).abs().lessThan(t)&&(0===n.length||i.minus(n[n.length-1]).abs().greaterThan(t.times(10)))&&addRoot(i)}catch{}return n.sort((e,t)=>e.comparedTo(t)).map(e=>Expression_Expression.create(e))}}class Complex{im;re;constructor(e,t=0){this.re="number"==typeof e?new q(e):e,this.im="number"==typeof t?new q(t):t}static create(e,t=0){return new Complex(e instanceof q?e:new q(e),t instanceof q?t:new q(t))}abs(){return this.absSquared().sqrt()}absSquared(){return this.re.mul(this.re).plus(this.im.mul(this.im))}add(e){return new Complex(this.re.plus(e.re),this.im.plus(e.im))}conjugate(){return new Complex(this.re,this.im.neg())}div(e){const t=e.re.mul(e.re).plus(e.im.mul(e.im));if(t.isZero())throw new DivisionByZeroError(message("divisionByZero"));return new Complex(this.re.mul(e.re).plus(this.im.mul(e.im)).div(t),this.im.mul(e.re).minus(this.re.mul(e.im)).div(t))}mul(e){return new Complex(this.re.mul(e.re).minus(this.im.mul(e.im)),this.re.mul(e.im).plus(this.im.mul(e.re)))}neg(){return new Complex(this.re.neg(),this.im.neg())}reciprocal(){const e=this.re.mul(this.re).plus(this.im.mul(this.im));if(e.isZero())throw new DivisionByZeroError(message("divisionByZero"));return new Complex(this.re.div(e),this.im.neg().div(e))}scale(e){const t=e instanceof q?e:new q(e);return new Complex(this.re.mul(t),this.im.mul(t))}sub(e){return new Complex(this.re.minus(e.re),this.im.minus(e.im))}}class PolynomialSolver{degree;eps;p;precision;constructor(e,t,n=50,i){let s;if(Array.isArray(e))s=e.map(e=>new Complex(e,0));else{const n=Polynomial.isPolynomial(e),i=n?e.getExpression():"string"==typeof e?Expression_Expression.create(e):e,r=n?e.variables:i.variables();if(!i.isPolynomialLike())throw new PolynomialError(message("notAPolynomial"));if(r.length>1||1===r.length&&t&&r[0]!==t)throw new UnexpectedInputError(message("tooManyUnknowns"));const o=t??r[0],a=(void 0===o?[i]:i.coeffs(o).toArray()).map(e=>{const t=e.realPart(),n=e.imagPart();if(!t.isNUM()||!n.isNUM())throw new UnexpectedInputError(message("wrongInput",{expected:"numeric polynomial coefficients",received:e.text()}));return{real:t.getMultiplier(),imaginary:n.getMultiplier()}});if(a.every(e=>!e.real.asDecimal&&!e.imaginary.asDecimal)){const e=LCM(...a.flatMap(e=>[e.real.denominator,e.imaginary.denominator]));s=a.map(t=>{const n=t.real.numerator*(e/t.real.denominator),i=t.imaginary.numerator*(e/t.imaginary.denominator);return new Complex(new q(String(n)),new q(String(i)))})}else s=a.map(e=>new Complex(e.real.toDecimal(),e.imaginary.toDecimal()))}this.p=s.slice().reverse(),this.degree=this.p.length-1,this.eps=i||new q(1e-14),this.precision=n}aberthMethod(e){const t=e.length-1,n=[],i=this.rootMagnitudeBound(e);for(let e=0;e<t;e++){const s=new q(2).mul(Math.PI).mul(e).div(t).plus(.4),r=i.mul(.9).mul(new q(1).plus(new q(e).mul(.01).div(t)));n.push(new Complex(r.mul(q.cos(s)),r.mul(q.sin(s))))}const s=this.eps.mul(this.eps),r=this.eps.mul(.01),o=r.mul(r);for(let i=0;i<100;i++){let i=new q(0);const r=[];for(let o=0;o<t;o++){const a=n[o],[l,u]=this.evaluateWithDerivative(e,a);if(u.absSquared().lessThan(s)){r.push(a);continue}const c=l.div(u);let p=new Complex(0,0);for(let e=0;e<t;e++)if(o!==e){const t=a.sub(n[e]);t.absSquared().greaterThan(s)&&(p=p.add(t.reciprocal()))}const m=new Complex(1,0).sub(c.mul(p)),g=m.absSquared().lessThan(s)?c:c.div(m),h=a.sub(g);r.push(h);const d=g.absSquared();d.greaterThan(i)&&(i=d)}for(let e=0;e<t;e++)n[e]=r[e];if(i.lessThan(o))break}for(let i=0;i<t;i++)n[i]=this.newtonRefine(e,n[i]);return n}complexSqrt(e){const t=e.abs();if(t.isZero())return new Complex(0,0);const n=e.re,i=e.im;if(i.abs().lessThan(this.eps))return n.greaterThanOrEqualTo(0)?new Complex(n.sqrt(),0):new Complex(0,n.neg().sqrt());const s=t.plus(n.abs()).div(2).sqrt();if(n.greaterThanOrEqualTo(0))return new Complex(s,i.div(s.mul(2)));{const e=i.abs(),t=i.greaterThanOrEqualTo(0)?s:s.neg();return new Complex(e.div(s.mul(2)),t)}}evaluateWithDerivative(e,t){const n=e.length-1;let i=e[0],s=e[0];for(let r=1;r<n;r++)i=i.mul(t).add(e[r]),s=s.mul(t).add(i);return i=i.mul(t).add(e[n]),[i,s]}finalize(e,t,n,i=!0){return q.set({precision:n}),t?e.map(e=>{let t=e.re,n=e.im;if(i){const i=e.abs().mul(this.eps);t=e.re.abs().lt(i)?new q(0):e.re,n=e.im.abs().lt(i)?new q(0):e.im}return Expression_Expression.create(t).plus(Expression_Expression.Img().times(n))}):e}isNumericalRoot(e){let t=this.p[0],n=this.p[0].abs();const i=e.abs();for(let s=1;s<this.p.length;s++)t=t.mul(e).add(this.p[s]),n=n.mul(i).plus(this.p[s].abs());const s=this.eps.mul(n.plus(1));return t.absSquared().lte(s.mul(s))}nativeAberthSeeds(e){const t=e.length-1,n=[];for(const t of e){const e=t.re.toNumber(),i=t.im.toNumber();if(!Number.isFinite(e)||!Number.isFinite(i))return null;n.push({re:e,im:i})}const i=Math.hypot(n[0].re,n[0].im);if(!Number.isFinite(i)||0===i)return null;const s=this.rootMagnitudeBound(e).toNumber();if(!Number.isFinite(s))return null;const r=[];for(let e=0;e<t;e++){const n=2*Math.PI*e/t+.4,i=.9*s*(1+.01*e/t);r.push({re:i*Math.cos(n),im:i*Math.sin(n)})}const o=Math.max(this.eps.toNumber(),16*Number.EPSILON),a=o*o;for(let e=0;e<100;e++){let e=0;const i=[];for(let s=0;s<t;s++){const o=r[s];let l=n[0].re,u=n[0].im,c=n[0].re,p=n[0].im;for(let e=1;e<t;e++){const t=l*o.re-u*o.im+n[e].re,i=l*o.im+u*o.re+n[e].im,s=c*o.re-p*o.im+t,r=c*o.im+p*o.re+i;l=t,u=i,c=s,p=r}const m=l*o.re-u*o.im+n[t].re,g=l*o.im+u*o.re+n[t].im,h=c*c+p*p;if(!Number.isFinite(m)||!Number.isFinite(g)||!Number.isFinite(h))return null;if(h<a){i.push(o);continue}const d=(m*c+g*p)/h,x=(g*c-m*p)/h;let E=0,y=0;for(let e=0;e<t;e++){if(s===e)continue;const t=o.re-r[e].re,n=o.im-r[e].im,i=t*t+n*n;i>a&&(E+=t/i,y-=n/i)}const v=1-(d*E-x*y),w=-(d*y+x*E),b=v*v+w*w;let _=d,P=x;b>=a&&(_=(d*v+x*w)/b,P=(x*v-d*w)/b);const S={re:o.re-_,im:o.im-P},M=_*_+P*P;if(!Number.isFinite(S.re)||!Number.isFinite(S.im)||!Number.isFinite(M))return null;i.push(S),e=Math.max(e,M)}for(let e=0;e<t;e++)r[e]=i[e];if(e<a)break}return r.map(e=>new Complex(new q(e.re),new q(e.im)))}newtonRefine(e,t){const n=this.eps.mul(this.eps),i=this.eps.mul(1e-6),s=i.mul(i);for(let r=0;r<20;r++){const[r,o]=this.evaluateWithDerivative(e,t);if(r.absSquared().lessThan(s))break;if(o.absSquared().lessThan(n))break;const a=r.div(o),l=t.sub(a);if(a.abs().lessThan(i.mul(l.abs().plus(1)))){t=l;break}t=l}return t}rootMagnitudeBound(e){let t=new q(0);const n=e[0].abs();for(let i=1;i<e.length;i++){const s=e[i].abs().div(n);if(!s.isZero()){const e=s.pow(new q(1).div(i));e.greaterThan(t)&&(t=e)}}return t.mul(2)}solveQuadratic(e){const t=e[0],n=e[1],i=e[2],s=n.mul(n),r=t.mul(i).scale(4),o=s.sub(r),a=this.complexSqrt(o),l=t.scale(2),u=n.neg();return[u.add(a).div(l),u.sub(a).div(l)]}roots(e=!0){const t=q.precision;q.set({precision:this.precision});let n=[...this.p],i=this.degree;for(;i>0&&n[0].re.isZero()&&n[0].im.isZero();)n.shift(),i--;if(0===i)return this.finalize([],e,t);const s=n[0];if(n=n.map(e=>e.div(s)),1===i)return this.finalize([n[1].neg()],e,t);if(2===i)return this.finalize(this.solveQuadratic(n),e,t,!1);const r=this.nativeAberthSeeds(n);if(r){const s=r.map(e=>this.newtonRefine(n,e));if(s.length===i&&s.every(e=>this.isNumericalRoot(e)))return this.finalize(s,e,t)}const o=this.aberthMethod(n);return this.finalize(o,e,t)}validatedRoots(e=!0){const t=q.precision;q.set({precision:this.precision});const n=this.roots(!1).filter(e=>this.isNumericalRoot(e));return this.finalize(n,e,t)}}class SolutionSet extends ValuesSet{excluded=new ValuesSet;roots=[];dataType="SOL";partial=!1;solutionsType=void 0;unsolved;constructor(e){if(super(),e)for(const t of e)this.add(t)}static isSolutionSet(e){return isNerdamerNativeType(e,"SOL")}mergeSolutionsType(e){void 0===this.solutionsType?this.solutionsType=e:void 0!==e&&this.solutionsType!==e&&(this.solutionsType="mixed")}verifyAndAddSolution(e,t,n){let i=!1;try{const s=t.evaluate({[n]:e.evaluate()}).expand(),r=0===s.variables().length;if(r&&s.isNearlyZero()||!r){const t=this.excluded.has(e);this.add(e),i=!t}}catch(t){t instanceof DivisionByZeroError&&(this.excluded.add(e),this.delete(e))}return i}__set__(e,t){if(!Expression_Expression.isExpression(t))throw new UnexpectedDataType(message("expressionExpected",{type:t.dataType}));if(this.excluded.has(t)){const t=e[0];if(t<0||t>=this.count())throw new RangeError(message("indexOutOfBounds",{index:String(t),type:String(this.dataType),length:String(this.count())}));const n=this.at(t);n&&this.delete(n)}else super.__set__(e,t)}add(e){if(!Expression_Expression.isExpression(e)){throw new UnexpectedDataType(message("expressionExpected",{type:e.dataType}))}return this.excluded.has(e)||super.add(e),this}addMany(e){const t=[...e];for(const e of t)if(!Expression_Expression.isExpression(e)){throw new UnexpectedDataType(message("expressionExpected",{type:e.dataType}))}for(const e of t)this.add(e);return this}addRawRoot(e){return this.roots.push({root:new q(e.root),iterations:e.iterations,converged:e.converged,error:new q(e.error),errorMsg:e.errorMsg}),this}addSolution(e,t,n){return this.verifyAndAddSolution(e,t,n),this}addSolutions(e,t,n){let i,s;SolutionSet.isSolutionSet(e)?(i=e,s=e.elements):s=e;let r=!1;for(const e of s)this.verifyAndAddSolution(e,t,n)&&(r=!0);return i&&r&&this.mergeSolutionsType(i.solutionsType),this}addValidatedNumericalSolutions(e){const t=[...e],n=this.elements,i=new Set;for(const e of t){if(!Expression_Expression.isExpression(e)){throw new UnexpectedDataType(message("expressionExpected",{type:e.dataType}))}const t=e.isComplex()?e.realPart():e,s=e.isComplex()?e.imagPart():Expression_Expression.Number(0);if(!t.isNUM()||!s.isNUM())throw new UnexpectedDataType(message("expressionExpected",{type:e.dataType}));const r=t.getMultiplier(),o=s.getMultiplier(),a=`${r.numerator}/${r.denominator}|${o.numerator}/${o.denominator}`;if(i.has(a)||this.excluded.has(e))continue;let l=!1;for(const t of n)if(t.eq(e)&&e.eq(t)){l=!0;break}l||(this.addKnownUnique(e),i.add(a))}return this}append(e){const t=0===this.count()&&0===this.excluded.count();if(this.exclude(e.getExcluded()),t)for(const t of e.elements)this.addKnownUnique(t);else this.addMany(e.elements);for(const t of e.getRawRoots())this.addRawRoot(t);return this.partial=this.partial||e.partial,this.mergeSolutionsType(e.solutionsType),!this.unsolved&&e.unsolved&&(this.unsolved=e.unsolved.copy()),this}appendValidatedNumerical(e){this.exclude(e.getExcluded()),this.addValidatedNumericalSolutions(e.elements);for(const t of e.getRawRoots())this.addRawRoot(t);return this.partial=this.partial||e.partial,this.mergeSolutionsType(e.solutionsType),!this.unsolved&&e.unsolved&&(this.unsolved=e.unsolved.copy()),this}at(e){return super.at(e)}clear(){return super.clear(),this.excluded.clear(),this.roots.length=0,this.partial=!1,this.solutionsType=void 0,this.unsolved=void 0,this}copy(){const e=new SolutionSet(this.elements);return e.excluded=this.excluded.copy(),e.roots=this.getRawRoots(),e.solutionsType=this.solutionsType,e.partial=this.partial,this.unsolved&&(e.unsolved=this.unsolved.copy()),e}each(e){super.each((t,n,i)=>{if(!Expression_Expression.isExpression(t))throw new UnexpectedDataType(message("expressionExpected",{type:t.dataType}));const s=e(t,n,i);if(void 0===s)return t;if(!Expression_Expression.isExpression(s))throw new UnexpectedDataType(message("expressionExpected",{type:s.dataType}));return s});for(const e of this.excluded.elements)this.delete(e);return this}get elements(){return super.elements}evaluate(e){return this.copy().each(t=>t.evaluate(e))}exclude(e){const t=e.elements;for(const e of t)if(!Expression_Expression.isExpression(e))throw new UnexpectedDataType(message("expressionExpected",{type:e.dataType}));for(const e of t)this.excluded.add(e),this.delete(e);return this}expand(){return this.copy().each(e=>e.expand())}forEach(e){const t=this.elements;for(let n=0;n<t.length;n++)e(t[n],n)}getExcluded(){return this.excluded.copy()}getRawRoots(){return this.roots.map(e=>({root:new q(e.root),iterations:e.iterations,converged:e.converged,error:new q(e.error),errorMsg:e.errorMsg}))}get solutionForm(){let e="finite";for(const t of this.elements){if(t.eq("all")){e="all";break}t.hasVariable("_n")&&(e="parametric")}return e}[Symbol.iterator](){return this.elements[Symbol.iterator]()}text(){return super.text()}toArray(){return this.elements}}class SymbolicSolver{static MAX_FN_SOLVE_STEPS=64;input;x;constructor(e,t){if(t=Expression_Expression.create(t),this.x=t.value,!t.isPlainVariable())throw new UnexpectedInputError(message("plainVariableExpected",{input:t.text()}));"string"==typeof e?this.input=Expression_Expression.create(e):Polynomial.isPolynomial(e)?this.input=e.getExpression():this.input=e}static cubic(e){const t=e[0],n=e[1],i=e[2],s=e[3],r=i.div(s),o=n.div(s),a=t.div(s),l=o.minus(r.pow(two()).div(three())),u=a.minus(r.times(o).div(three())).plus(two().times(r.pow(three())).div(twentySeven())),c=u.pow(two()).div(four()).plus(l.pow(three()).div(twentySeven())),p=zero().minus(r).div(three()),m=math_sqrt(c),g=zero().minus(u).div(two()),h=math_cbrt(g.plus(m)),d=math_cbrt(g.minus(m)),x=h.plus(d),E=math_sqrt(three()),y=zero().minus(half()),v=math_sqrt(zero().minus(one())),w=h.plus(d),b=h.minus(d),_=y.times(w).plus(E.div(two()).times(b).times(v)),P=y.times(w).minus(E.div(two()).times(b).times(v));return[x.plus(p),_.plus(p),P.plus(p)]}static quadratic(e){const t=e[0],n=e[1],i=e[2],s=math_sqrt(n.pow(two()).minus(four().times(i).times(t))),r=two().times(i),o=zero().minus(n);return[o.plus(s).div(r),o.minus(s).div(r)]}static quartic(e){const t=e[0],n=e[1],i=e[2],s=e[3],r=e[4],o=s.div(r),a=i.div(r),l=n.div(r),u=t.div(r),c=a.minus(three().times(o.pow(two())).div(eight())),p=l.minus(o.times(a).div(two())).plus(o.pow(three()).div(eight())),m=u.minus(o.times(l).div(four())).plus(o.pow(two()).times(a).div(function sixteen(){return getFromCacheOrCreate("16")}())).minus(three().times(o.pow(four())).div(function twoHundredFiftySix(){return getFromCacheOrCreate("256")}())),g=zero().minus(o).div(four());if(p.isZero()){const e=SymbolicSolver.quadratic([m,c,one()]),t=Expression_Expression.Img(),n=math_sqrt(two()),sqrtSpecial=e=>{if(e.value!==Expression_Expression.imaginary)return;const i=e.getMultiplier();return i.isOne()?one().plus(t).div(n):i.isMinusOne()?one().minus(t).div(n):i.eq("4")?n.times(one().plus(t)):i.eq("-4")?n.times(one().minus(t)):void 0},i=sqrtSpecial(e[0])??math_sqrt(e[0]),s=sqrtSpecial(e[1])??math_sqrt(e[1]);return[i.plus(g),zero().minus(i).plus(g),s.plus(g),zero().minus(s).plus(g)]}const h=[zero().minus(p.pow(two())),c.pow(two()).minus(four().times(m)),two().times(c),one()],d=SymbolicSolver.cubic(h);let x;for(const e of d)if(!e.isZero()){x=e;break}x=x??d[0];let E=math_sqrt(x);if(E.isZero())for(const e of d)if(!e.isZero()){const t=math_sqrt(e);if(!t.isZero()){x=e,E=t;break}}const y=c.plus(x),v=y.div(two()).minus(p.div(two().times(E))),w=y.div(two()).plus(p.div(two().times(E))),b=SymbolicSolver.quadratic([v,E,one()]),_=SymbolicSolver.quadratic([w,zero().minus(E),one()]);return[b[0].plus(g),b[1].plus(g),_[0].plus(g),_[1].plus(g)]}fnSolve(){const e=this.input,t=this.x,solveForX=(e,n)=>{const i=e.variables();if(1===i.length&&i[0]===t&&e.text()===t&&!n.hasVariable(t))return[n];const s=e.minus(n),r=new SymbolicSolver(s,t).solve();return r.unsolved?solve_solve(s,t).elements:r.solutions},n=Expression_Expression.N(),i=Expression_Expression.Pi(),s=n.times(i),r=two().times(n).plus(one()).times(i).div(two());if(e.isSum()){const n=e.elementsArray(),i=n.filter(e=>e.isFunction("log")&&e.isLinear()&&e.getMultiplier().isInteger()&&e.getArguments().length>0);if(i.length===n.length&&i.some(e=>e.hasVariable(t))){let e=one();for(const t of i){const n=Expression_Expression.fromRational(t.getMultiplier());e=e.times(t.getArguments()[0].pow(n))}return solve_solve(e.minus(one()),t).elements}const s=n.filter(e=>e.hasVariable(t)&&e.getPower().eq(half()));if(1===s.length){const e=s[0];let i=zero();for(const t of n)t!==e&&(i=i.plus(t));const r=stripPower(e.toUnitMultiplier()),o=i.neg().div(e.getMultiplier());return solve_solve(r.minus(o.sq()),t).elements}const r=half().neg(),o=[];for(const e of n)if(e.hasVariable(t)){const n=(e.isProduct()?e.elementsArray():[e]).filter(e=>e.hasVariable(t));1===n.length&&n[0].getPower().eq(r)&&o.push({term:e,factor:n[0]})}if(1===o.length){const{term:e,factor:i}=o[0];let s=zero();for(const t of n)t!==e&&(s=s.plus(t));const r=i.toUnitMultiplier(),a=e.div(r);if(!a.hasVariable(t)&&!s.hasVariable(t)){return solveForX(i.getBase(),s.neg().div(a).pow(two().neg()))}}if(2===n.length){let e,i,s,r,o=!0;for(const a of n){const n=(a.isProduct()?a.elementsArray():[a]).filter(e=>(e.isFunction(we)||e.isFunction(ve))&&e.getPower().isOne());if(1!==n.length){o=!1;break}const l=n[0].toUnitMultiplier(),u=a.div(l);if(u.hasVariable(t)){o=!1;break}n[0].isFunction(we)?(e=l.getArguments()[0],i=u):(s=l.getArguments()[0],r=u)}if(o&&e&&i&&s&&r&&e.eq(s)&&!i.isZero())return solveForX(e,trig_atan(r.neg().div(i)))}const a=n.filter(e=>e.isFunction()&&e.hasVariable(t));if(1===a.length){const e=a[0];let i=zero();for(const t of n)t!==e&&(i=i.plus(t));if(!i.hasVariable(t)||"abs"===e.name){const t=e.name,n=e.getArguments()[0],s=e.getMultiplier(),r=e.getPower();let o=i.neg().div(s);r.isOne()||(o=o.pow(r.invert()));const a=this.invertFunction(t,o);if(void 0!==a){const e=[];for(const t of a)e.push(...solveForX(n,t));return e.length>0?e:void 0}}}if(2===n.length){const e=n.findIndex(e=>{let n=!1;if(e.isEXP()){const i=e.getBase();n=e.hasVariable(t)&&!i.hasVariable(t)&&(!i.isNUM()||i.gt(zero())&&!i.isOne())}return n});if(-1!==e){const i=n[e],s=n[1-e];if(!s.hasVariable(t)){const e=i.getBase(),t=i.getPower(),n=i.getMultiplier();return solveForX(t,math_log(s.neg().div(n)).div(math_log(e)))}}}}if(e.isFunction(we)){return solveForX(e.getArguments()[0],s)}if(e.isFunction(ve)){return solveForX(e.getArguments()[0],r)}if(e.isFunction(be)){return solveForX(e.getArguments()[0],s)}if(e.isFunction(Ae)){return solveForX(e.getArguments()[0],r)}if(e.isFunction("log")){return solveForX(e.getArguments()[0],one())}if(e.isFunction(Fe)){return solveForX(e.getArguments()[0],zero())}if(e.isFunction(qe)){return solveForX(e.getArguments()[0],zero())}if(e.isFunction(_e)){return solveForX(e.getArguments()[0],zero())}if(e.isFunction(Pe)){return solveForX(e.getArguments()[0],one())}if(e.isFunction(Ne)){return solveForX(e.getArguments()[0],zero())}if(e.isFunction(Te)){return solveForX(e.getArguments()[0],one())}if(e.isFunction(Le)){return solveForX(e.getArguments()[0],zero())}if(e.isFunction(De)){return solveForX(e.getArguments()[0],one())}if(e.isFunction(Be)){return solveForX(e.getArguments()[0],zero())}if(e.isFunction("abs")){return solveForX(e.getArguments()[0],zero())}}invertFunction(e,t){switch(e){case we:return[trig_asin(t)];case ve:return[trig_acos(t)];case be:return[trig_atan(t)];case Ae:return[trig_atan(one().div(t))];case"log":return[math_exp(t)];case Fe:return[trig_asinh(t)];case Ce:return[trig_acosh(t)];case qe:return[trig_atanh(t)];case _e:return[trig_sin(t)];case Pe:return[trig_cos(t)];case Ne:return[trig_tan(t)];case Te:return[one().div(trig_cos(t))];case Le:return[trig_sinh(t)];case De:return[trig_cosh(t)];case Be:return[trig_tanh(t)];case"abs":return[t,zero().minus(t)];default:return}}inputContainsFunction(){let e=!1;return this.input.forEveryElement(t=>(t.isFunction()&&(e=!0),t)),e}solve(){let e,t;if(this.input.hasVariable(this.x)){let n;const i=half().neg(),s=this.input.isSum()&&this.input.elementsArray().some(e=>{let t=e.hasVariable(this.x)&&e.getPower().eq(half());if(!t&&e.isProduct()&&e.hasVariable(this.x)){const n=e.elementsArray().filter(e=>e.hasVariable(this.x));t=1===n.length&&n[0].getPower().eq(i)}return t});if(!s)try{n=this.input.coeffs(this.x).toArray()}catch{}if(n){const t=n.length-1;let i=!0;for(const e of n)if(e.hasVariable(this.x)){i=!1;break}if(i&&t>=1&&t<=4)switch(t){case 1:e=[n[0].neg().div(n[1])];break;case 2:e=SymbolicSolver.quadratic(n);break;case 3:e=SymbolicSolver.cubic(n);break;case 4:e=SymbolicSolver.quartic(n)}}e||(e=this.fnSolve()),e||(t=this.input)}else t=this.input;return e??=[],{solutions:e,unsolved:t}}}function normalizeSolverExpression(e){if(Equation.isEquation(e))return e.toLHS().LHS;if(Expression_Expression.isExpression(e))return e;const t=Bt.parse(String(e));if(Equation.isEquation(t))return t.toLHS().LHS;if(Expression_Expression.isExpression(t))return t;throw new UnexpectedInputError(message("expressionExpected",{type:Y[t.dataType]}))}function prepareSolverInputs(e,t){const n=normalizeSolverExpression(e),i=n.variables();let s;if(t){if(s=function extractVariable(e){if(!(e=Expression_Expression.create(e)).isPlainVariable())throw new UnexpectedInputError(message("plainVariableExpected",{input:e.text()}));return e.value}(t),s&&i[0]&&!i.includes(s))throw new UnexpectedInputError(message("tooManyUnknowns"))}else{if(1!==i.length)throw new UnexpectedInputError(message("tooManyUnknowns"));s=i[0]}return{expression:n,x:s}}class FactorRootAccumulator extends SolutionSet{appendFactorSolutions(e){for(const t of e.elements)this.addKnownUnique(t);void 0===this.solutionsType?this.solutionsType=e.solutionsType:void 0!==e.solutionsType&&this.solutionsType!==e.solutionsType&&(this.solutionsType="mixed")}}function calculateSolutions(e,t,n=!1){const i=n?new FactorRootAccumulator:new SolutionSet,s=e.map(e=>{let s=e;if(e.isEXP()&&e.getBase().isE())s=zero();else if(e.hasVariable(t)){let r=new SymbolicSolver(e,t).solve();if(r.unsolved&&e.isPolynomialLike()&&e.getPower().gt(four())){const n=e.toLinearAndUnitMultiplier();r=new SymbolicSolver(n,t).solve()}if(!r.unsolved){if(n){const n=new SolutionSet;n.addSolutions(r.solutions,e,t),n.count()>0&&(n.solutionsType="symbolic",i.appendFactorSolutions(n))}else{const n=new SolutionSet(r.solutions);n.solutionsType="symbolic",i.addSolutions(n,e,t)}s=zero()}}return s}).filter(e=>!e.eq(zero())).map(e=>{let s=e;const r=e.variables();if(1===r.length&&r[0]===t&&e.isPolynomialLike()){const r=new PolynomialSolver(e,t).validatedRoots();if(r.length>0)if(n){const e=new SolutionSet;e.addValidatedNumericalSolutions(r),e.solutionsType="numeric",i.appendFactorSolutions(e)}else i.addValidatedNumericalSolutions(r),i.solutionsType=void 0===i.solutionsType||"numeric"===i.solutionsType?"numeric":"mixed";s=zero()}return s}).filter(e=>!e.eq(zero()));for(const e of s){const n=e.variables(),s={method:"Brent"};if(1===n.length&&n[0]===t){const n=new FunctionSolver(e,t,s).roots();if(n.length>0){for(const e of n)i.add(e);i.solutionsType=void 0===i.solutionsType||"numeric"===i.solutionsType?"numeric":"mixed"}}}return i}function solve_roots(e,t){const n=Expression_Expression.create(e),i=n.variables();if(0===i.length&&n.isConstant()){const e=n.evaluate();if(e.isNUM()){const t=e.abs().pow(half()),n=e.sign()<0?t.times(Expression_Expression.Img()):t;return new Vector([n,n.neg()])}}const s=void 0===t?i[0]:assertPlainVariableAndGetString(Expression_Expression.create(t));return new Vector(void 0===s?[n]:new PolynomialSolver(n,s).validatedRoots())}function solve_solve(e,t,n){const i=new SolutionSet;let s=!1;try{const{expression:n,x:r}=prepareSolverInputs(e,t);s=n.hasDecimal();const o=n.variables();if(n.isZero())i.addSolution(function shortcuts_all(){return Expression_Expression.Variable("all")}(),n,r),i.solutionsType="symbolic";else if(n.isVAR()||!o.includes(r)&&!n.isNUM())i.addSolution(zero(),n,r),i.solutionsType="symbolic";else{const e=n.isSum()&&n.elementsArray().some(e=>{let t=e.hasVariable(r)&&e.getPower().eq(half());if(!t&&e.isProduct()&&e.hasVariable(r)){const n=e.elementsArray().filter(e=>e.hasVariable(r));t=1===n.length&&n[0].getPower().eq(half().neg())}return t}),t=n.isPolynomialLike()?n.coeffs(r).toArray():void 0,s=void 0!==t&&1===o.length&&o[0]===r&&t.every(e=>e.isNUM());let a;if(t){const e=t.length-1,n=t.some(e=>e.variables().length>0);if(e>4&&n&&!t[0].isZero()&&t.slice(1,e).every(e=>e.isZero())){const n=Expression_Expression.create(e),i=one().div(n),s=t[0].neg().div(t[e]),r=Expression_Expression.toEXP(s,i),o=two().times(Expression_Expression.Variable("pi"));a=[];for(let t=0;t<e;t++){let e=one();if(t>0){const i=o.copy().times(Expression_Expression.create(t)).div(n);e=trig_cos(i).plus(trig_sin(i).times(Expression_Expression.Img()))}a.push(r.copy().times(e))}}}const l=3===t?.length&&t[0].isZero()?factorCommonPower(n):void 0,u=l?.isProduct()?l.elementsArray():void 0,c=e?new SymbolicSolver(n,r).solve():void 0;let p,m;if(!n.isPolynomialLike())try{const e=toCommonDenominator(n),t=e.getNumerator().expand(),i=e.getDenominator().expand();!i.isOne()&&t.isPolynomialLike()&&i.isPolynomialLike()&&(p=t,m=i)}catch{}if(a){const e=new SolutionSet(a);e.solutionsType="symbolic",i.addSolutions(e,n,r)}else if(u){i.addSolution(zero(),n,r),i.solutionsType="symbolic";const e=calculateSolutions(u,r);s&&"numeric"===e.solutionsType?i.appendValidatedNumerical(e):s?i.append(e):i.addSolutions(e,n,r)}else if(c&&!c.unsolved){const e=new SolutionSet(c.solutions);e.solutionsType="symbolic",i.addSolutions(e,n,r)}else if(p&&m){const e=calculateSolutions([m],r);i.exclude(e),i.addSolutions(calculateSolutions([p],r),n,r)}else{const e=factorExpressionParts(n),t=s,o=calculateSolutions(e.denominator,r,t);i.exclude(o);const a=calculateSolutions(e.numerator,r,t);s&&"numeric"===a.solutionsType?i.appendValidatedNumerical(a):s?i.append(a):i.addSolutions(a,n,r)}}}catch(e){}return s&&i.each(e=>(e.getMultiplier().asDecimal=!0,e)),i}class DecimalMatrix{cols;data;rows;constructor(e){this.rows=e.length,this.cols=e.length>0?e[0].length:0,this.data=e.map(e=>e.map(e=>new q(e)))}static solve(e,t){const n=e.rows;if(n!==e.cols||n!==t.length)return null;const i=[];for(let s=0;s<n;s++){const r=[];for(let t=0;t<n;t++)r.push(new q(e.get(s,t)));r.push(new q(t[s])),i.push(r)}for(let e=0;e<n;e++){let t=i[e][e].abs(),s=e;for(let r=e+1;r<n;r++){const n=i[r][e].abs();n.greaterThan(t)&&(t=n,s=r)}if(t.lessThan(new q("1e-30")))return null;s!==e&&([i[e],i[s]]=[i[s],i[e]]);const r=i[e][e];for(let t=e+1;t<n;t++){const s=i[t][e].div(r);for(let r=e;r<=n;r++)i[t][r]=i[t][r].minus(s.times(i[e][r]))}}const s=new Array(n);for(let e=n-1;e>=0;e--){let t=i[e][n];for(let r=e+1;r<n;r++)t=t.minus(i[e][r].times(s[r]));if(i[e][e].abs().lessThan(new q("1e-30")))return null;s[e]=t.div(i[e][e])}return s}get(e,t){return this.data[e][t]}}class MultivariateSolver{dedupTol;equations;gridPoints;h;lowerBound;maxIterations;tolerance;upperBound;variables;constructor(e,t,n={}){this.equations=e,this.variables=t,this.lowerBound=n.lowerBound??-10,this.upperBound=n.upperBound??10,this.gridPoints=n.gridPoints??5,this.maxIterations=n.maxIterations??100,this.tolerance=new q(n.tolerance??1e-12),this.h=new q(n.derivativeStep??1e-8),this.dedupTol=new q(n.deduplicationTolerance??1e-8)}evaluateSystem(e){const t={};for(let n=0;n<this.variables.length;n++){const i=e[n];t[this.variables[n]]=i.isFinite()?Expression_Expression.Number(i):i}const n=[];for(const e of this.equations)try{const i=e.evaluate(t);if(!Expression_Expression.isExpression(i))return null;n.push(i.getMultiplier().toDecimal())}catch{return null}return n}generateStartingPoints(){const e=this.variables.length,t=[],n=(this.upperBound-this.lowerBound)/(this.gridPoints-1),i=new Array(e).fill(0);for(;;){const s=[];for(let t=0;t<e;t++)s.push(new q(this.lowerBound+i[t]*n));t.push(s);let r=!0;for(let t=e-1;t>=0&&r;t--)i[t]++,i[t]<this.gridPoints?r=!1:i[t]=0;if(r)break}return t}isDuplicate(e,t){for(const n of t){let t=new q(0);for(let i=0;i<e.length;i++){const s=e[i].minus(n[i]).abs();s.greaterThan(t)&&(t=s)}if(t.lessThan(this.dedupTol))return!0}return!1}jacobian(e){const t=this.variables.length,n=this.equations.length,i=new Array(n).fill(null).map(()=>[]),s=this.h.times(2);for(let r=0;r<t;r++){const t=e.map(e=>new q(e)),o=e.map(e=>new q(e));t[r]=t[r].plus(this.h),o[r]=o[r].minus(this.h);const a=this.evaluateSystem(t),l=this.evaluateSystem(o);if(!a||!l)return null;for(let e=0;e<n;e++)i[e].push(a[e].minus(l[e]).div(s))}return new DecimalMatrix(i)}newtonRaphson(e){const t=e.map(e=>new q(e));for(let e=0;e<this.maxIterations;e++){const e=this.evaluateSystem(t);if(!e)return null;let n=new q(0);for(const t of e)n=n.plus(t.times(t));if(n=n.sqrt(),n.lessThan(this.tolerance))return t;const i=this.jacobian(t);if(!i)return null;const s=e.map(e=>e.neg()),r=DecimalMatrix.solve(i,s);if(!r)return null;for(let e=0;e<t.length;e++)t[e]=t[e].plus(r[e])}const n=this.evaluateSystem(t);if(n){let e=new q(0);for(const t of n)e=e.plus(t.times(t));if(e.sqrt().lessThan(this.tolerance))return t}return null}roots(){const e=[],t=this.generateStartingPoints();for(const n of t){const t=this.newtonRaphson(n);t&&!this.isDuplicate(t,e)&&e.push(t)}return e.map(e=>{const t=new Map;for(let n=0;n<this.variables.length;n++){const i=e[n];t.set(this.variables[n],i.isFinite()?Expression_Expression.Number(i):Expression_Expression.create(i))}return t})}}class NonlinearSystemError extends Error{}function linsolve_solveLinearSystem(e,t){const n=function normalizeEquations(e){if(Vector.isVector(e)){const t=[];for(let n=0;n<e.count();n++)t.push(e.getExpressionAt(n));return t}return e.map(e=>Expression_Expression.isExpression(e)?e:Expression_Expression.create(e))}(e);if(0===n.length)return{type:"unique",solutions:{}};const i=t??collect_collectVariablesSet(n);if(0===i.length){for(const e of n)if(!e.eq(zero()))return{type:"inconsistent"};return{type:"unique",solutions:{}}}const{coeffMatrix:s,constants:r}=function extractCoefficients(e,t){const n=t.length,i=[],s=[];for(let r=0;r<e.length;r++){const o=e[r].coeffs(...t),a=new Array(n).fill(null).map(()=>zero());let l=zero();o.each((e,t)=>{const n=t.split(",").map(Number),i=n.reduce((e,t)=>e+t,0);if(0===i)l=e;else{if(1!==i)throw new NonlinearSystemError(message("solveLinearNonlinearDegree",{equation:String(r+1),degree:String(i)}));{const t=n.findIndex(e=>1===e);-1!==t&&(a[t]=e)}}});const u=[...a,l];for(const e of u)for(const n of t)if(e.hasVariable(n))throw new NonlinearSystemError(message("solveLinearNonPolynomialVariable",{equation:String(r+1),variable:n}));i.push(a),s.push(l)}return{coeffMatrix:i,constants:s}}(n,i),o=n.length,a=i.length,l=[];for(let e=0;e<o;e++){const t=[];for(let n=0;n<a;n++)t.push(s[e][n]);t.push(zero().minus(r[e])),l.push(t)}const u=new Matrix(...l).rref(),c=u.rows(),p=zero(),m=[];for(let e=0;e<c;e++){let t=-1;for(let n=0;n<a;n++)if(!u.get(e,n).eq(p)){t=n;break}if(-1===t){if(!u.get(e,a).eq(p))return{type:"inconsistent"};m.push(-1)}else m.push(t)}const g=new Set;for(const e of m)-1!==e&&g.add(e);const h=[];for(let e=0;e<a;e++)g.has(e)||h.push(e);if(0===h.length){const e={};for(let t=0;t<c;t++){const n=m[t];-1!==n&&(e[i[n]]=u.get(t,a))}return{type:"unique",solutions:e}}const d=h.map(e=>i[e]),x={};for(const e of d)x[e]=Expression_Expression.create(e);for(let e=0;e<c;e++){const t=m[e];if(-1===t)continue;let n=u.get(e,a);for(const t of h){const s=u.get(e,t);s.eq(p)||(n=n.minus(s.times(Expression_Expression.create(i[t]))))}x[i[t]]=n}return{type:"infinite",solutions:x,freeVariables:d}}function solutionsToDictionaries(e,t){const n=[];for(const i of e){if(i.size!==t.length)throw new UnsupportedOperationError(message("solveSystemInfiniteSolutions"));const e=new Dictionary;for(const n of t){const t=i.get(n);if(!t)throw new UnsupportedOperationError(message("solveSystemInfiniteSolutions"));e.set(n,t)}n.push(e)}return n}function isSystemSolution(e,t,n){const i={};for(const[e,t]of n)i[e]=t;let s=!0;try{for(const e of t){const t=e.evaluate(i);if(!t.isConstant()||t.isZero()){s=!1;break}}if(s)for(const t of e){const e=t.evaluate(i);if(!e.isConstant()||!e.isNearlyZero()){s=!1;break}}}catch{s=!1}return s}function solveSystem(e,t){const n=function solveSystem_normalizeEquations(e){if(Vector.isVector(e)){const t=[];for(let n=0;n<e.count();n++)t.push(normalizeSolverExpression(e.__get__([n])));return t}return e.map(e=>normalizeSolverExpression(e))}(e);if(0===n.length)return new Vector([new Dictionary]);const i=t??collect_collectVariablesSet(n);if(0===i.length)return n.every(e=>e.isZero())?new Vector([new Dictionary]):new Vector([]);const s=[],r=[];let o=!1;for(const e of n){let t=e;if(!e.isPolynomialLike()){const n=toCommonDenominator(e),i=n.getNumerator().expand(),s=n.getDenominator().expand();!s.isOne()&&i.isPolynomialLike()&&s.isPolynomialLike()&&(t=i,r.push(s),o=!0)}s.push(t)}try{const e=linsolve_solveLinearSystem(s,i);if("inconsistent"===e.type)return new Vector([]);if("infinite"!==e.type){const t=new Dictionary,s=new Map;for(const n of i)if(n in e.solutions){const i=e.solutions[n];t.set(n,i),s.set(n,i)}return!o||isSystemSolution(n,r,s)?new Vector([t]):new Vector([])}if(!o){const t=new Dictionary;for(const n of i)n in e.solutions&&t.set(n,e.solutions[n]);return new Vector([t])}}catch(e){if(!(e instanceof NonlinearSystemError))throw e}if(s.every(e=>e.isPolynomialLike()))try{const e=Groebner(s.map(e=>expressionToIntegerSparsePolynomial(e,i).polynomial),"LEX",!0);if(1===e.length&&e[0].isConstant()&&0n!==e[0].constantTerm())return new Vector([]);let t=function symbolicBackSubstitution(e,t){let n=[{assignment:new Map,basis:e}];for(let e=t.length-1;e>=0;e--){const i=t[e],s=new Set(t.slice(0,e)),r=[];for(const{assignment:e,basis:t}of n){const n=t.filter(e=>{if(e.isZero())return!1;const t=e.variables();if(!t.includes(i))return!1;for(const e of t)if(s.has(e))return!1;return!0});if(0===n.length){r.push({assignment:new Map(e),basis:t});continue}const o=solve_solve(n[0],i).elements;for(const a of o){let o=!0;for(let e=1;e<n.length;e++){const t=n[e].subst(i,a);if(t.isConstant()&&!t.isNearlyZero()){o=!1;break}}if(!o)continue;const l=t.map(e=>{if(!e.hasVariable(i))return e;const t=e.variables();return t.some(e=>s.has(e))||1!==t.length||t[0]!==i?e.subst(i,a):zero()}),u=new Map(e);u.set(i,a),r.push({assignment:u,basis:l})}}n=r}return n.map(e=>e.assignment)}(e.map(e=>sparsePolynomialToExpression(e,i)),i);if(o&&(t=t.filter(e=>isSystemSolution(n,r,e))),t.length>0)return new Vector(solutionsToDictionaries(t,i))}catch{}if(n.length<i.length)throw new UnsupportedOperationError(message("solveSystemInfiniteSolutions"));const a=new MultivariateSolver(n,i).roots();return 0===a.length?new Vector([]):new Vector(solutionsToDictionaries(a,i))}function each(e,t,n,i){const s=e(),r=[],o=[];if(i){if(!Dictionary.isDictionary(s))throw new UnexpectedDataType(message("unsupportedType",{type:Y[s.dataType]}));for(const[e,t]of s.entries())o.push(Expression_Expression.create(e)),r.push(t.copy())}else if(Vector.isVector(s)||Collection.isCollection(s)||ValuesSet.isValuesSet(s))s.forEach(e=>r.push(e.copy()));else if(Matrix.isMatrix(s))s.forEach(e=>r.push(e.copy()));else{if(!Dictionary.isDictionary(s))throw new UnexpectedDataType(message("unsupportedType",{type:Y[s.dataType]}));s.forEach(e=>r.push(e.copy()))}let a,l=0;try{a=function withReturnPropagation(e){It++;try{return e()}finally{It--}}(()=>FOR(()=>zero(),()=>l<r.length?one():zero(),()=>(l++,zero()),()=>i?LET(t,()=>o[l],()=>LET(n,()=>r[l],i)):LET(t,()=>r[l],n)))}catch(e){if(function isInsideSymbolicFunction(){return Rt>0}()||!ReturnSignal.isReturnSignal(e))throw e;a=e.value}return a}!function registerNerdamerFunctions(){!function loadScriptingFunctions(){Object.assign(wt,{unassign:systemFunction({fn:unassign,minArgs:1,maxArgs:1,distElWise:!1,deferArguments:!0}),evaluate:systemFunction({fn:evaluate_evaluate,minArgs:1,maxArgs:3,equationArgs:[0],distElWise:!1,deferArguments:!0,usage:"scripting"}),return:systemFunction({fn:controlFlow_RETURN,minArgs:1,maxArgs:1,equationArgs:[0],distElWise:!1,bracketlessStatement:!0,usage:"scripting"}),break:systemFunction({fn:BREAK,minArgs:0,maxArgs:0,distElWise:!1,usage:"scripting"}),continue:systemFunction({fn:CONTINUE,minArgs:0,maxArgs:0,distElWise:!1,usage:"scripting"}),and:systemFunction({fn:AND,minArgs:2,maxArgs:-1,distElWise:!1,deferArguments:!0,usage:"scripting"}),or:systemFunction({fn:OR,minArgs:2,maxArgs:-1,distElWise:!1,deferArguments:!0,usage:"scripting"}),not:systemFunction({fn:NOT,minArgs:1,maxArgs:1,distElWise:!1,usage:"scripting"}),xor:systemFunction({fn:XOR,minArgs:2,maxArgs:-1,distElWise:!1,usage:"scripting"}),iferror:systemFunction({fn:IFERROR,minArgs:2,maxArgs:2,distElWise:!1,deferArguments:!0,usage:"scripting"}),iserror:systemFunction({fn:ISERROR,minArgs:1,maxArgs:1,distElWise:!1,deferArguments:!0,usage:"scripting"}),if:systemFunction({fn:IF,minArgs:2,maxArgs:3,distElWise:!1,deferArguments:!0,returnBoundary:!0,usage:"scripting"}),while:systemFunction({fn:WHILE,minArgs:2,maxArgs:2,distElWise:!1,deferArguments:!0,returnBoundary:!0,usage:"scripting"}),for:systemFunction({fn:FOR,minArgs:4,maxArgs:4,distElWise:!1,deferArguments:!0,returnBoundary:!0,usage:"scripting"}),each:systemFunction({fn:each,minArgs:3,maxArgs:4,distElWise:!1,deferArguments:!0,usage:"scripting"}),let:systemFunction({fn:LET,minArgs:3,maxArgs:-1,distElWise:!1,deferArguments:!0,normalizeDeferredArguments:normalizeLetArguments,returnBoundary:!0,usage:"scripting"}),block:systemFunction({fn:BLOCK,minArgs:-1,maxArgs:-1,distElWise:!1,deferArguments:!0,returnBoundary:!0,usage:"scripting"})})}(),function loadAssumptionFunctions(){Object.assign(wt,{assume:systemFunction({fn:assuming,minArgs:1,maxArgs:1,distElWise:!1}),forget:systemFunction({fn:forget,minArgs:1,maxArgs:1,distElWise:!1})})}(),function loadMatrixFunctions(){Object.assign(wt,{matrix:systemFunction({fn:matrix,minArgs:1,maxArgs:-1,distElWise:!1}),imatrix:systemFunction({fn:imatrix,minArgs:1,maxArgs:1,distElWise:!1}),determinant:systemFunction({fn:determinant,minArgs:1,maxArgs:1,distElWise:!1}),invert:systemFunction({fn:invert,minArgs:1,maxArgs:1,distElWise:!1}),transpose:systemFunction({fn:e=>e.transpose(),minArgs:1,maxArgs:1,distElWise:!1}),augment:systemFunction({fn:(e,t)=>e.augment(t),minArgs:2,maxArgs:2,distElWise:!1}),rref:systemFunction({fn:(e,t)=>e.rref(t),minArgs:1,maxArgs:2,distElWise:!1}),nullspace:systemFunction({fn:nullspace,minArgs:1,maxArgs:2,distElWise:!1})})}(),function loadVectorFunctions(){Object.assign(wt,{dot:systemFunction({fn:dot,minArgs:2,maxArgs:2,distElWise:!1}),cross:systemFunction({fn:cross,minArgs:2,maxArgs:2,distElWise:!1})})}(),function loadComplexFunctions(){Object.assign(wt,{imagpart:systemFunction({fn:imagPart,minArgs:1,maxArgs:1,distElWise:!0}),realpart:systemFunction({fn:realPart,minArgs:1,maxArgs:1,distElWise:!0}),polarform:systemFunction({fn:polarForm,minArgs:1,maxArgs:1,distElWise:!0}),rectform:systemFunction({fn:rectForm,minArgs:1,maxArgs:1,distElWise:!0}),arg:systemFunction({fn:arg,minArgs:1,maxArgs:1,distElWise:!0}),csgn:systemFunction({fn:csgn,minArgs:1,maxArgs:1,distElWise:!0}),conjugate:systemFunction({fn:conjugate,minArgs:1,maxArgs:1,distElWise:!0})})}(),function loadPolynomialFunctions(){Object.assign(wt,{deg:systemFunction({fn:deg,minArgs:1,maxArgs:2,distElWise:!0}),content:systemFunction({fn:content,minArgs:1,maxArgs:1,distElWise:!0}),coeffs:systemFunction({fn:functions_coeffs,minArgs:1,maxArgs:2,distElWise:!1}),div:systemFunction({fn:functions_div,minArgs:2,maxArgs:2,distElWise:!1}),divide:systemFunction({fn:functions_divide,minArgs:2,maxArgs:2,distElWise:!1})})}(),function loadMathFunctions(){Object.assign(wt,{cos:systemFunction({fn:trig_cos,minArgs:1,maxArgs:1,distElWise:!0}),sin:systemFunction({fn:trig_sin,minArgs:1,maxArgs:1,distElWise:!0}),tan:systemFunction({fn:trig_tan,minArgs:1,maxArgs:1,distElWise:!0}),sec:systemFunction({fn:sec,minArgs:1,maxArgs:1,distElWise:!0}),csc:systemFunction({fn:csc,minArgs:1,maxArgs:1,distElWise:!0}),cot:systemFunction({fn:cot,minArgs:1,maxArgs:1,distElWise:!0}),acos:systemFunction({fn:trig_acos,minArgs:1,maxArgs:1,distElWise:!0}),asin:systemFunction({fn:trig_asin,minArgs:1,maxArgs:1,distElWise:!0}),atan:systemFunction({fn:trig_atan,minArgs:1,maxArgs:1,distElWise:!0}),asec:systemFunction({fn:asec,minArgs:1,maxArgs:1,distElWise:!0}),acsc:systemFunction({fn:acsc,minArgs:1,maxArgs:1,distElWise:!0}),acot:systemFunction({fn:acot,minArgs:1,maxArgs:1,distElWise:!0}),atan2:systemFunction({fn:trig_atan2,minArgs:2,maxArgs:2,distElWise:!0}),cosh:systemFunction({fn:trig_cosh,minArgs:1,maxArgs:1,distElWise:!0}),sinh:systemFunction({fn:trig_sinh,minArgs:1,maxArgs:1,distElWise:!0}),tanh:systemFunction({fn:trig_tanh,minArgs:1,maxArgs:1,distElWise:!0}),sech:systemFunction({fn:sech,minArgs:1,maxArgs:1,distElWise:!0}),csch:systemFunction({fn:csch,minArgs:1,maxArgs:1,distElWise:!0}),coth:systemFunction({fn:coth,minArgs:1,maxArgs:1,distElWise:!0}),acosh:systemFunction({fn:trig_acosh,minArgs:1,maxArgs:1,distElWise:!0}),asinh:systemFunction({fn:trig_asinh,minArgs:1,maxArgs:1,distElWise:!0}),atanh:systemFunction({fn:trig_atanh,minArgs:1,maxArgs:1,distElWise:!0}),asech:systemFunction({fn:asech,minArgs:1,maxArgs:1,distElWise:!0}),acsch:systemFunction({fn:acsch,minArgs:1,maxArgs:1,distElWise:!0}),acoth:systemFunction({fn:acoth,minArgs:1,maxArgs:1,distElWise:!0}),line:systemFunction({fn:line,minArgs:2,maxArgs:3,distElWise:!1}),abs:systemFunction({fn:math_abs,minArgs:1,maxArgs:1,distElWise:!0}),sqrt:systemFunction({fn:math_sqrt,minArgs:1,maxArgs:1,distElWise:!0}),nthroot:systemFunction({fn:nthroot,minArgs:2,maxArgs:2,distElWise:!0}),cbrt:systemFunction({fn:math_cbrt,minArgs:1,maxArgs:1,distElWise:!0}),subst:systemFunction({fn:subst,minArgs:3,maxArgs:3,distElWise:!0}),log:systemFunction({fn:math_log,minArgs:1,maxArgs:2,distElWise:!0}),log10:systemFunction({fn:math_log10,minArgs:1,maxArgs:1,distElWise:!0}),radians:systemFunction({fn:radians,minArgs:1,maxArgs:1,distElWise:!0}),degrees:systemFunction({fn:degrees,minArgs:1,maxArgs:1,distElWise:!0}),exp:systemFunction({fn:math_exp,minArgs:1,maxArgs:1,distElWise:!0}),erf:systemFunction({fn:math_erf,minArgs:1,maxArgs:1,distElWise:!0}),erfc:systemFunction({fn:math_erfc,minArgs:1,maxArgs:1,distElWise:!0}),gamma:systemFunction({fn:math_gamma,minArgs:1,maxArgs:1,distElWise:!0}),gamma_incomplete:systemFunction({fn:gammaIncomplete,minArgs:2,maxArgs:2,distElWise:!0}),gamma_incomplete_lower:systemFunction({fn:gammaIncompleteLower,minArgs:2,maxArgs:2,distElWise:!0}),delta:systemFunction({fn:dirac,minArgs:1,maxArgs:1,distElWise:!0}),[ce]:systemFunction({fn:math_heaviside,minArgs:1,maxArgs:1,distElWise:!0}),step:systemFunction({fn:step,minArgs:1,maxArgs:1,distElWise:!0}),rect:systemFunction({fn:rect,minArgs:1,maxArgs:1,distElWise:!0}),tri:systemFunction({fn:tri,minArgs:1,maxArgs:1,distElWise:!0}),continued_fraction:systemFunction({fn:continuedFraction,minArgs:1,maxArgs:2,distElWise:!1}),scientific:systemFunction({fn:scientific,minArgs:1,maxArgs:2,distElWise:!0}),hypot:systemFunction({fn:geometry_hypot,minArgs:2,maxArgs:2,distElWise:!0}),fact:systemFunction({fn:math_factorial,minArgs:1,maxArgs:1,distElWise:!0}),factorial:systemFunction({fn:math_factorial,minArgs:1,maxArgs:1,distElWise:!0}),dfact:systemFunction({fn:math_doubleFactorial,minArgs:1,maxArgs:1,distElWise:!0}),expand:systemFunction({fn:expand,minArgs:1,maxArgs:1,distElWise:!0}),numeric:systemFunction({fn:evaluate_numeric,minArgs:1,maxArgs:2,equationArgs:[0],distElWise:!1,deferArguments:!0}),round:systemFunction({fn:math_round,minArgs:1,maxArgs:2,distElWise:!0}),sign:systemFunction({fn:math_sign,minArgs:1,maxArgs:1,distElWise:!0}),floor:systemFunction({fn:math_floor,minArgs:1,maxArgs:1,distElWise:!0}),ceil:systemFunction({fn:ceiling,minArgs:1,maxArgs:1,distElWise:!0}),ceiling:systemFunction({fn:ceiling,minArgs:1,maxArgs:1,distElWise:!0}),trunc:systemFunction({fn:trunc_trunc,minArgs:1,maxArgs:1,distElWise:!0}),mod:systemFunction({fn:math_mod,minArgs:2,maxArgs:2,distElWise:!0}),modinv:systemFunction({fn:math_modInv,minArgs:2,maxArgs:2,distElWise:!0}),parens:systemFunction({fn:parens,minArgs:1,maxArgs:1,distElWise:!0}),count:systemFunction({fn:count,minArgs:1,maxArgs:1,distElWise:!1}),size:systemFunction({fn:size,minArgs:1,maxArgs:1,distElWise:!1}),contains:systemFunction({fn:contains,minArgs:2,maxArgs:2,distElWise:!1}),max:systemFunction({fn:math_max,minArgs:2,maxArgs:-1,distElWise:!0}),min:systemFunction({fn:math_min,minArgs:2,maxArgs:-1,distElWise:!0}),isprime:systemFunction({fn:isprime,minArgs:1,maxArgs:1,distElWise:!0}),fib:systemFunction({fn:math_fibonacci,minArgs:1,maxArgs:1,distElWise:!0}),sinc:systemFunction({fn:math_sinc,minArgs:1,maxArgs:1,distElWise:!0}),Shi:systemFunction({fn:math_Shi,minArgs:1,maxArgs:1,distElWise:!0}),Si:systemFunction({fn:math_Si,minArgs:1,maxArgs:1,distElWise:!0}),Chi:systemFunction({fn:math_Chi,minArgs:1,maxArgs:1,distElWise:!0}),Ci:systemFunction({fn:math_Ci,minArgs:1,maxArgs:1,distElWise:!0}),Ei:systemFunction({fn:math_Ei,minArgs:1,maxArgs:1,distElWise:!0}),Li:systemFunction({fn:math_Li,minArgs:1,maxArgs:1,distElWise:!0})})}(),function loadAlgebraFunctions(){Object.assign(wt,{polyfactors:systemFunction({fn:polyFactors,minArgs:1,maxArgs:1,distElWise:!1}),factor:systemFunction({fn:factor,minArgs:1,maxArgs:1,distElWise:!0}),[fe]:systemFunction({fn:pfactor,minArgs:1,maxArgs:1,distElWise:!1}),[me]:systemFunction({fn:pfactord,minArgs:1,maxArgs:1,distElWise:!1}),simplify:systemFunction({fn:simplify,minArgs:1,maxArgs:1,distElWise:!0}),partfrac:systemFunction({fn:partfrac,minArgs:1,maxArgs:2,distElWise:!0}),gcd:systemFunction({fn:gcd,minArgs:2,maxArgs:2,distElWise:!0}),lcm:systemFunction({fn:lcm,minArgs:2,maxArgs:2,distElWise:!0}),groebner:systemFunction({fn:groebner,minArgs:1,maxArgs:2,distElWise:!1}),sqcomp:systemFunction({fn:adapters_completeSquare,minArgs:1,maxArgs:2,distElWise:!0})})}(),function loadCalculusFunctions(){Object.assign(wt,{diff:systemFunction({fn:differentiate,minArgs:1,maxArgs:3,equationArgs:[0],distElWise:!0}),integrate:systemFunction({fn:integrateEquation,minArgs:1,maxArgs:2,equationArgs:[0],distElWise:!0}),limit:systemFunction({fn:directionalLimit,minArgs:3,maxArgs:4,distElWise:!0}),laplace:systemFunction({fn:laplace,minArgs:3,maxArgs:3,distElWise:!0}),ilaplace:systemFunction({fn:ilaplace,minArgs:3,maxArgs:3,distElWise:!0}),sum:systemFunction({fn:math_sum,minArgs:4,maxArgs:4,distElWise:!0}),product:systemFunction({fn:math_product,minArgs:4,maxArgs:4,distElWise:!0}),defint:systemFunction({fn:defint,minArgs:4,maxArgs:4,distElWise:!0}),S:systemFunction({fn:fresnel_S,minArgs:1,maxArgs:1,distElWise:!0}),C:systemFunction({fn:C,minArgs:1,maxArgs:1,distElWise:!0})})}(),function loadSolveFunctions(){Object.assign(wt,{solve:systemFunction({fn:solve_solve,minArgs:2,maxArgs:2,equationArgs:[0],distElWise:!1}),roots:systemFunction({fn:solve_roots,minArgs:1,maxArgs:2,distElWise:!1}),solveeqs:systemFunction({fn:solveSystem,minArgs:1,maxArgs:1,distElWise:!1})})}()}();const Fn=new Converter,Cn=new Converter("text");function normalizeTeXOptions(e){let t;return t="string"==typeof e?{decimal:!0}:!0!==e?.decimals||"decimal"in e?e:{...e,decimal:!0},t}function nerdamer(e,t){return Bt.parse(e,t)}Expression_Expression.prototype.solveFor=function(e){return solve_solve(this,e)},Equation.prototype.solveFor=function(e){return solve_solve(this,e)},Expression_Expression.prototype.toTeX=function(e){return Fn.convert(this,normalizeTeXOptions(e))},Expression_Expression.prototype.toText=function(){return Cn.convert(this)},Expression_Expression.prototype.latex=function(e){return Fn.convert(this,normalizeTeXOptions(e))},Expression_Expression.prototype.isInfinity=function(){return this.isInf()},Expression_Expression.prototype.isFraction=function(){return!this.getMultiplier().isInteger()},Expression_Expression.prototype.hasIntegral=function(){return this.hasFunction("integrate",!0)},Expression_Expression.prototype.equals=function(e){return new Equation(this,Expression_Expression.create(e))},nerdamer.pretty=function(e,t="TeX"){return("TeX"===t?Fn:Cn).convert(e)},nerdamer.convertFromLaTeX=function(e){return Fn.fromTeX(e)},nerdamer.convertToTeX=function(e,t){let n=normalizeTeXOptions(t);return"string"!=typeof e||n?.decimal||(n={...n??{},preserveSource:!0}),Fn.convert(e,n)},nerdamer.convertToLaTeX=nerdamer.convertToTeX,nerdamer.setFunction=function(e,t,n){return setFunction({type:"symbolic",name:e,argsOrder:t,fn:n}),nerdamer},nerdamer.setConstant=function(e,t){let n="delete"===t?"":String(t);if("number"==typeof t){const e=Rational.create(String(t));n=1n===e.denominator?String(e.numerator):`${e.numerator}/${e.denominator}`}return Bt.setConstants({[e]:n}),nerdamer},nerdamer.getConstant=function(e){const t=le[e];return String("function"==typeof t?t():t)},nerdamer.set=function(e,t){if("PRECISION"===e)Bt.setPrecision(Number(t));else if("object"==typeof e&&"PRECISION"in e){const{PRECISION:t,...n}=e;Bt.set(n),Bt.setPrecision(Number(t))}else Bt.set(e,t);return nerdamer},nerdamer.get=function(e){let t;return t="PRECISION"===e?Bt.getPrecision():Bt.get(e),t},nerdamer.getOperator=function(e){return Bt.getOperator(e)},nerdamer.isReserved=function(e){return Bt.isReserved(e)},nerdamer.setOperator=function(e,t){return Bt.setOperator(e,t),nerdamer},nerdamer.aliasOperator=function(e,t){return Bt.aliasOperator(e,t),nerdamer},nerdamer.setVar=function(e,t){"delete"===t?unassign(e):scope_assign(e,String(t))},nerdamer.clearVars=function(){for(const e of Object.keys(Bt.KNOWN_VALUES))unassign(e);return nerdamer},nerdamer.getVars=function(e="text"){const t="LaTeX"===e?Fn:Cn,n={};for(const e of Object.keys(Bt.KNOWN_VALUES))n[e]=t.convert(Bt.KNOWN_VALUES[e]);return n},nerdamer.functions=function(){const e={user:[],system:[]};for(const t in wt){e[wt[t].level].push(t)}return e},nerdamer.symbols=function symbols(...e){const t={};for(const n of e){const e=Expression_Expression.create(n);if(e.getMultiplier(),e.getPower(),!e.isVAR())throw new UnexpectedInputError(message("plainVariableExpected"));Object.freeze(e),t[n]=e}return t},nerdamer.version=function(){return i},nerdamer.errors=n,nerdamer.buildFunction=pn,nerdamer.classes={Expression:Expression_Expression,Rational,Polynomial,Matrix,Vector,Collection,Converter,Dictionary,ValuesSet,SolutionSet,Assumption,Equation,instance:{Parser:Bt}},nerdamer.cos=trig_cos,nerdamer.sin=trig_sin,nerdamer.tan=trig_tan,nerdamer.acos=trig_acos,nerdamer.asin=trig_asin,nerdamer.atan=trig_atan;const qn=trig_acos;nerdamer.arccos=qn;const Vn=trig_asin;nerdamer.arcsin=Vn;const kn=trig_atan;nerdamer.arctan=kn,nerdamer.atan2=trig_atan2,nerdamer.sec=sec,nerdamer.csc=csc,nerdamer.cot=cot,nerdamer.asec=asec,nerdamer.acsc=acsc,nerdamer.acot=acot,nerdamer.cosh=trig_cosh,nerdamer.sinh=trig_sinh,nerdamer.tanh=trig_tanh,nerdamer.acosh=trig_acosh,nerdamer.asinh=trig_asinh,nerdamer.atanh=trig_atanh,nerdamer.sech=sech,nerdamer.csch=csch,nerdamer.coth=coth,nerdamer.asech=asech,nerdamer.acsch=acsch,nerdamer.acoth=acoth,nerdamer.log=math_log,nerdamer.log10=math_log10,nerdamer.radians=radians,nerdamer.degrees=degrees,nerdamer.exp=math_exp,nerdamer.sqrt=math_sqrt,nerdamer.cbrt=math_cbrt,nerdamer.nthroot=nthroot,nerdamer.numeric=numeric,nerdamer.abs=math_abs,nerdamer.sign=math_sign,nerdamer.min=math_min,nerdamer.max=math_max,nerdamer.round=math_round,nerdamer.floor=math_floor;const Un=ceiling;nerdamer.ceil=Un,nerdamer.trunc=trunc_trunc,nerdamer.hypot=geometry_hypot;const Dn=math_factorial;nerdamer.fact=Dn,nerdamer.factorial=math_factorial;const Ln=math_doubleFactorial;nerdamer.dfact=Ln;const Bn=math_doubleFactorial;nerdamer.dfactorial=Bn;const zn=math_fibonacci;nerdamer.fib=zn,nerdamer.mod=math_mod,nerdamer.modInv=math_modInv,nerdamer.isPrime=isprime,nerdamer.imagpart=imagPart,nerdamer.realpart=realPart,nerdamer.polarform=polarForm,nerdamer.rectform=rectForm,nerdamer.arg=arg,nerdamer.conjugate=conjugate,nerdamer.csgn=csgn,nerdamer.gamma=math_gamma,nerdamer.gamma_incomplete=gammaIncomplete,nerdamer.gamma_incomplete_lower=gammaIncompleteLower,nerdamer.erf=math_erf,nerdamer.erfc=math_erfc,nerdamer.heaviside=math_heaviside,nerdamer.step=step,nerdamer.rect=rect,nerdamer.tri=tri;const $n=dirac;nerdamer.delta=$n,nerdamer.Ci=math_Ci,nerdamer.Chi=math_Chi,nerdamer.Si=math_Si,nerdamer.Shi=math_Shi,nerdamer.Li=math_Li,nerdamer.Ei=math_Ei,nerdamer.sinc=math_sinc,nerdamer.parens=parens,nerdamer.continued_fraction=continuedFraction,nerdamer.scientific=scientific,nerdamer.contains=contains,nerdamer.subst=subst,nerdamer.uSub=uSub,nerdamer.uUnSub=uUnSub,nerdamer.expand=expand,nerdamer.factor=factor,nerdamer.pfactor=pfactor,nerdamer.pfactord=pfactord,nerdamer.polyFactors=polyFactors,nerdamer.completeSquare=on,nerdamer.gcd=gcd,nerdamer.lcm=lcm,nerdamer.partfrac=partfrac,nerdamer.div=functions_div,nerdamer.divide=functions_divide,nerdamer.simplify=simplify,nerdamer.groebner=groebner,nerdamer.solve=solve_solve,nerdamer.roots=solve_roots,nerdamer.solveSystem=solveSystem,nerdamer.solveeqs=solveSystem,nerdamer.diff=diff_diff,nerdamer.integrate=integrate,nerdamer.laplace=laplace,nerdamer.ilaplace=ilaplace;const Zn=ilaplace;nerdamer.ilt=Zn,nerdamer.sum=math_sum,nerdamer.product=math_product,nerdamer.limit=limit,nerdamer.defint=defint,nerdamer.S=fresnel_S,nerdamer.C=C,nerdamer.matrix=matrix,nerdamer.imatrix=imatrix,nerdamer.determinant=determinant,nerdamer.invert=invert,nerdamer.nullspace=nullspace,nerdamer.dot=dot,nerdamer.cross=cross,nerdamer.line=line,nerdamer.deg=deg,nerdamer.content=content,nerdamer.coeffs=functions_coeffs,nerdamer.assume=assume,nerdamer.getAssumptions=function getAssumptions(){return new Map(et)},nerdamer.updateAPI=function(){const e={diff:nerdamer.diff,expand:nerdamer.expand,factor:nerdamer.factor,integrate:nerdamer.integrate,numeric:nerdamer.numeric,simplify:nerdamer.simplify,subst:nerdamer.subst},t={buildFunction:nerdamer.buildFunction};return function extendApi(e,t,n={}){for(const i of e){const e=i.prototype;for(const n in t)if(!(n in e)){const i=t[n];Object.defineProperty(e,n,{configurable:!0,writable:!0,value:function(...e){const apply=t=>{let n;return n=Equation.isEquation(t)?t.each(e=>apply(e)):t.isEnumerable?t.copy().each(e=>apply(e)):i(t,...e),n};return apply(this)}})}for(const t in n)if(!(t in e)){const i=n[t];Object.defineProperty(e,t,{configurable:!0,writable:!0,value:function(...e){if(!Expression_Expression.isExpression(this))throw new UnexpectedDataType(message("expressionExpected",{type:Y[this.dataType]??this.dataType}));return i(this,...e)}})}}}([Expression_Expression,Matrix,Vector,Collection,Dictionary,ValuesSet,Equation],e,t),nerdamer},nerdamer.updateAPI();const Wn=nerdamer;return t=t.default,t})());
|