nerdamer 2.0.0-rc.1 → 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/BREAKING_CHANGES.md +244 -0
- package/README.md +168 -229
- package/dist/bundle.js +1 -1
- package/dist/bundle.js.LICENSE.txt +6 -6
- package/output/algebra/adapters.d.ts +3 -33
- package/output/algebra/adapters.js +7 -105
- package/output/algebra/algorithms/arith.js +10 -9
- package/output/algebra/algorithms/groebnerBase.d.ts +24 -20
- package/output/algebra/algorithms/groebnerBase.js +486 -723
- package/output/algebra/dispatch.d.ts +1 -0
- package/output/algebra/dispatch.js +25 -0
- package/output/algebra/factor/factor.d.ts +15 -0
- package/output/algebra/factor/factor.js +99 -12
- package/output/algebra/gcd/gcd.d.ts +8 -7
- package/output/algebra/gcd/gcd.js +32 -78
- package/output/algebra/groebner.d.ts +2 -2
- package/output/algebra/groebner.js +6 -12
- package/output/algebra/partfrac.d.ts +3 -3
- package/output/algebra/partfrac.js +28 -61
- package/output/algebra/polynomial/ModularSparsePolynomial.d.ts +131 -0
- package/output/algebra/polynomial/ModularSparsePolynomial.js +378 -0
- package/output/algebra/polynomial/ModularSparsePolynomialFactor.d.ts +40 -0
- package/output/algebra/polynomial/ModularSparsePolynomialFactor.js +661 -0
- package/output/algebra/polynomial/SparsePolynomialFactor.d.ts +64 -0
- package/output/algebra/polynomial/SparsePolynomialFactor.js +492 -0
- package/output/algebra/polynomial/SparsePolynomialGcd.d.ts +29 -0
- package/output/algebra/polynomial/SparsePolynomialGcd.js +259 -0
- package/output/algebra/polynomial/SparsePolynomialMultivariateFactor.d.ts +82 -0
- package/output/algebra/polynomial/SparsePolynomialMultivariateFactor.js +604 -0
- package/output/algebra/polynomial/modularGcd.d.ts +40 -0
- package/output/algebra/polynomial/modularGcd.js +365 -0
- package/output/algebra/polynomialize.js +4 -2
- package/output/algebra/simplify/funcsimp.js +1 -1
- package/output/algebra/simplify/ratsimp.js +1 -1
- package/output/algebra/simplify/simplify.js +11 -2
- package/output/algebra/utils.d.ts +1 -1
- package/output/algebra/utils.js +3 -3
- package/output/api/advanced.d.ts +2 -1
- package/output/api/advanced.js +3 -3
- package/output/api/algebra.d.ts +21 -4
- package/output/api/algebra.js +22 -3
- package/output/api/assumptions.d.ts +1 -1
- package/output/api/assumptions.js +2 -1
- package/output/api/calculus.d.ts +2 -1
- package/output/api/calculus.js +2 -1
- package/output/api/core.d.ts +28 -7
- package/output/api/core.js +28 -2
- package/output/api/languages/deu.d.ts +3 -0
- package/output/api/languages/deu.js +266 -0
- package/output/api/languages/fra.d.ts +3 -0
- package/output/api/languages/fra.js +266 -0
- package/output/api/languages/ita.d.ts +3 -0
- package/output/api/languages/ita.js +266 -0
- package/output/api/languages/nld.d.ts +3 -0
- package/output/api/languages/nld.js +266 -0
- package/output/api/languages/por.d.ts +3 -0
- package/output/api/languages/por.js +266 -0
- package/output/api/languages/spa.d.ts +3 -0
- package/output/api/languages/spa.js +266 -0
- package/output/api/parser.d.ts +10 -2
- package/output/api/parser.js +2 -0
- package/output/api/solve.d.ts +1 -1
- package/output/api/solve.js +2 -1
- package/output/api/structures.d.ts +1 -1
- package/output/api/structures.js +2 -1
- package/output/calculus/adapters.d.ts +8 -0
- package/output/calculus/adapters.js +41 -0
- package/output/calculus/derivative/diff.js +6 -3
- package/output/calculus/dispatch.d.ts +1 -0
- package/output/calculus/dispatch.js +25 -0
- 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/Assumption.js +14 -10
- package/output/core/classes/assumption/assume.d.ts +6 -0
- package/output/core/classes/assumption/assume.js +9 -0
- package/output/core/classes/assumption/dispatch.d.ts +1 -0
- package/output/core/classes/assumption/dispatch.js +11 -0
- package/output/core/classes/collection/Collection.js +11 -2
- package/output/core/classes/complex/Complex.d.ts +10 -0
- package/output/core/classes/complex/Complex.js +19 -1
- package/output/core/classes/decimalSet/DecimalSet.js +5 -4
- package/output/core/classes/dictionary/Dictionary.js +4 -1
- package/output/core/classes/expression/CoeffObject.d.ts +1 -1
- package/output/core/classes/expression/CoeffObject.js +1 -2
- package/output/core/classes/expression/Expression.d.ts +35 -26
- package/output/core/classes/expression/Expression.js +77 -50
- package/output/core/classes/expression/analysis.d.ts +1 -1
- package/output/core/classes/expression/analysis.js +7 -7
- package/output/core/classes/expression/format.d.ts +9 -0
- package/output/core/classes/expression/format.js +130 -7
- package/output/core/classes/expression/utils.d.ts +9 -0
- package/output/core/classes/expression/utils.js +52 -6
- package/output/core/classes/matrix/Matrix.d.ts +2 -3
- package/output/core/classes/matrix/Matrix.js +26 -23
- package/output/core/classes/matrix/dispatch.d.ts +1 -0
- package/output/core/classes/matrix/dispatch.js +19 -0
- package/output/core/classes/matrix/functions.d.ts +2 -0
- package/output/core/classes/matrix/functions.js +5 -0
- package/output/core/classes/parser/Parser.d.ts +31 -5
- package/output/core/classes/parser/Parser.js +357 -444
- package/output/core/classes/parser/constants.d.ts +2 -0
- package/output/core/classes/parser/constants.js +4 -2
- package/output/core/classes/parser/controlFlowSignals.d.ts +38 -0
- package/output/core/classes/parser/controlFlowSignals.js +60 -0
- package/output/core/classes/parser/operations/add.js +14 -16
- package/output/core/classes/parser/operations/compare.js +13 -0
- package/output/core/classes/parser/operations/functions.d.ts +3 -4
- package/output/core/classes/parser/operations/functions.js +48 -102
- package/output/core/classes/parser/operations/multiply.js +22 -15
- package/output/core/classes/parser/operations/power.js +11 -11
- package/output/core/classes/parser/operations/subtract.js +2 -1
- package/output/core/classes/parser/preprocess.d.ts +0 -7
- package/output/core/classes/parser/preprocess.js +33 -39
- package/output/core/classes/parser/scripting/controlFlow.d.ts +4 -102
- package/output/core/classes/parser/scripting/controlFlow.js +134 -186
- package/output/core/classes/parser/scripting/deferred.d.ts +4 -0
- package/output/core/classes/parser/scripting/deferred.js +65 -0
- package/output/core/classes/parser/scripting/dispatch.d.ts +1 -0
- package/output/core/classes/parser/scripting/dispatch.js +62 -0
- package/output/core/classes/parser/scripting/evaluate.d.ts +13 -0
- package/output/core/classes/parser/scripting/evaluate.js +17 -1
- package/output/core/classes/parser/scripting/scope.d.ts +1 -28
- package/output/core/classes/parser/scripting/scope.js +36 -40
- package/output/core/classes/parser/types.d.ts +5 -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.d.ts +5 -1
- package/output/core/classes/polynomial/Polynomial.js +53 -7
- package/output/core/classes/polynomial/SparsePolynomial.d.ts +221 -0
- package/output/core/classes/polynomial/SparsePolynomial.js +824 -0
- package/output/core/classes/polynomial/SparsePolynomialAdapter.d.ts +56 -0
- package/output/core/classes/polynomial/SparsePolynomialAdapter.js +241 -0
- package/output/core/classes/polynomial/Term.js +2 -2
- package/output/core/{adapters.d.ts → classes/polynomial/adapters.d.ts} +2 -2
- package/output/core/classes/polynomial/adapters.js +33 -0
- package/output/core/classes/polynomial/dispatch.d.ts +1 -0
- package/output/core/classes/polynomial/dispatch.js +14 -0
- package/output/core/classes/polynomial/functions.d.ts +8 -0
- package/output/core/classes/polynomial/functions.js +71 -8
- package/output/core/classes/polynomial/utils.js +2 -1
- package/output/core/classes/rational/Rational.d.ts +8 -11
- package/output/core/classes/rational/Rational.js +70 -20
- package/output/core/classes/seq/SEQ.js +4 -4
- package/output/core/classes/valuesSet/ValuesSet.d.ts +9 -1
- package/output/core/classes/valuesSet/ValuesSet.js +22 -4
- package/output/core/classes/vector/Vector.d.ts +2 -3
- package/output/core/classes/vector/Vector.js +11 -15
- package/output/core/classes/vector/dispatch.d.ts +1 -0
- package/output/core/classes/vector/dispatch.js +11 -0
- package/output/core/common/classes/MathematicalAggregate.js +11 -2
- package/output/core/common/classes/StructuredEntity.d.ts +0 -17
- package/output/core/common/classes/StructuredEntity.js +3 -64
- package/output/core/common/common.d.ts +0 -1
- package/output/core/common/common.js +29 -234
- package/output/core/converters/BaseConverter.js +3 -2
- package/output/core/converters/Converter.js +9 -5
- package/output/core/converters/Pattern.js +1 -1
- package/output/core/dispatch.d.ts +18 -0
- package/output/core/dispatch.js +3 -281
- package/output/core/errors.d.ts +259 -474
- package/output/core/errors.js +270 -542
- package/output/core/fullFunctions.d.ts +7 -0
- package/output/core/fullFunctions.js +31 -0
- package/output/core/functions/bigint/bigint.d.ts +13 -1
- package/output/core/functions/bigint/bigint.js +56 -4
- package/output/core/functions/bigint/primeFactor.d.ts +2 -0
- package/output/core/functions/bigint/primeFactor.js +13 -13
- package/output/core/functions/build/definitions.js +6 -0
- package/output/core/functions/complex.d.ts +2 -2
- package/output/core/functions/complex.dispatch.d.ts +1 -0
- package/output/core/functions/complex.dispatch.js +16 -0
- package/output/core/functions/complex.js +7 -7
- package/output/core/functions/decimal.js +2 -1
- package/output/core/functions/expand/expand.js +2 -2
- package/output/core/functions/numeric.d.ts +1 -1
- package/output/core/functions/string.js +2 -1
- package/output/core/functions/subst.js +21 -13
- package/output/core/parserFunctions.d.ts +7 -0
- package/output/core/parserFunctions.js +25 -0
- package/output/index.d.ts +50 -30
- package/output/index.js +147 -19
- package/output/math/defint/defint.d.ts +18 -0
- package/output/math/defint/defint.js +60 -0
- package/output/math/defint/defintDecimal.js +6 -5
- package/output/math/defint/defintNative.js +7 -18
- package/output/math/dispatch.d.ts +1 -0
- package/output/math/dispatch.js +101 -0
- package/output/math/geometry.d.ts +4 -0
- package/output/math/geometry.js +23 -0
- package/output/math/math.d.ts +59 -19
- package/output/math/math.js +244 -100
- package/output/math/trig.js +4 -4
- package/output/math/utils.d.ts +6 -0
- package/output/math/utils.js +39 -0
- package/output/solve/classes/PolynomialSolver.d.ts +33 -14
- package/output/solve/classes/PolynomialSolver.js +267 -67
- package/output/solve/classes/SolutionSet.d.ts +20 -1
- package/output/solve/classes/SolutionSet.js +82 -5
- package/output/solve/dispatch.d.ts +1 -0
- package/output/solve/dispatch.js +13 -0
- package/output/solve/linsolve.d.ts +2 -0
- package/output/solve/linsolve.js +13 -5
- package/output/solve/solve.d.ts +10 -0
- package/output/solve/solve.js +128 -20
- package/output/solve/solveSystem.d.ts +1 -1
- package/output/solve/solveSystem.js +8 -32
- package/output/solve/utils.d.ts +2 -1
- package/output/solve/utils.js +18 -22
- package/output/utils/array.d.ts +1 -1
- package/output/utils/debug.js +2 -1
- package/package.json +22 -38
- package/dist/parser.js +0 -2
- package/dist/parser.js.LICENSE.txt +0 -7
- package/docs-data/parser-functions.json +0 -1960
- package/output/algebra/algorithms/factor.d.ts +0 -3
- package/output/algebra/algorithms/factor.js +0 -5
- package/output/algebra/algorithms/factorMultivariate.d.ts +0 -23
- package/output/algebra/algorithms/factorMultivariate.js +0 -2393
- package/output/algebra/algorithms/factorUnivariate.d.ts +0 -72
- package/output/algebra/algorithms/factorUnivariate.js +0 -1072
- package/output/algebra/algorithms/gcd.d.ts +0 -22
- package/output/algebra/algorithms/gcd.js +0 -690
- package/output/algebra/algorithms/multiPoly/MultiPoly.d.ts +0 -137
- package/output/algebra/algorithms/multiPoly/MultiPoly.js +0 -346
- package/output/algebra/algorithms/poly.d.ts +0 -228
- package/output/algebra/algorithms/poly.js +0 -1299
- package/output/algebra/algorithms/rational.d.ts +0 -17
- package/output/algebra/algorithms/rational.js +0 -115
- package/output/core/adapters.js +0 -40
- 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,()=>{return e={12(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Token=t.dotOrDigitRegex=t.digitRegex=t.variableRegex=t.bracketRegex=t.operatorRegex=t.operatorArray=t.ALLOWED_CHARACTERS=void 0,t.refreshOperatorSymbols=function refreshOperatorSymbols(){t.operatorArray.splice(0,t.operatorArray.length,...(0,r.getOperatorSymbolArray)()),t.operatorRegex=new RegExp(`[${t.operatorArray.join("")}]`)};const i=n(6441),r=n(9725),s=n(8300);t.ALLOWED_CHARACTERS=[],t.operatorArray=(0,r.getOperatorSymbolArray)(),t.operatorRegex=new RegExp(`[${t.operatorArray.join("")}]`),t.bracketRegex=new RegExp(`[${Object.keys(i.brackets).join("\\")}]`),t.variableRegex=/[a-z_αAβBγΓδΔϵEζZηHθΘιIκKλΛμMνNξΞoOπΠρPσΣτTυϒϕΦχXψΨωΩ∞]/i,t.digitRegex=/\d/,t.dotOrDigitRegex=/\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.digitRegex.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.variableRegex.test(e)||t.ALLOWED_CHARACTERS.includes(e))return Token.VARIABLE;if(t.bracketRegex.test(e))return Token.BRACKET;if(t.operatorRegex.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.dotOrDigitRegex.test(e)&&t.digitRegex.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},205(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.extractVariable=extractVariable,t.prepareSolverInputs=function prepareSolverInputs(e,t){let n;if(i.Equation.isEquation(e))n=e.toLHS().LHS;else if(r.Expression.isExpression(e))n=e;else{const t=o.Parser.parse(String(e));if(i.Equation.isEquation(t))n=t.toLHS().LHS;else{if(!r.Expression.isExpression(t))throw new a.UnexpectedInputError((0,a.message)("expressionExpected",{type:s.dataTypes[t.dataType]}));n=t}}const l=n.variables();let u;if(t){if(u=extractVariable(t),u&&l[0]&&!l.includes(u))throw new a.UnexpectedInputError((0,a.message)("tooManyUnknowns"))}else{if(1!==l.length)throw new a.UnexpectedInputError((0,a.message)("tooManyUnknowns"));u=l[0]}return{expression:n,x:u}};const i=n(6184),r=n(296),s=n(8300),o=n(238),a=n(4703);function extractVariable(e){if(!(e=r.Expression.create(e)).isPlainVariable())throw new a.UnexpectedInputError((0,a.message)("plainVariableExpected",{input:e.text()}));return e.value}},238(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),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),d=n(6528),g=n(6184),h=n(296),x=n(4462),E=n(5584),y=n(5598),v=n(3982),P=n(8300),w=n(8801),b=n(5823),M=n(12),A=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=P.PARSER_CONSTANTS;MAX_COMPOUND_OPERATOR_LENGTH=2;operators=(0,o.getOperators)();VALUE_SETS=[P.VECTOR,P.MATRIX];WHITE_SPACE=[P.NEWLINE,P.TAB,P.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!==M.Token.OPERATOR){if(n.type!==M.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!==M.Token.OPERATOR&&t.push(i.value)}return t}aliasOperator(e,t){const n=this.operators[e];if(!n)throw new u.ParserError(`Unknown operator ${e}`);return this.operators[t]={...n,operator:t,postfixVariant:n.postfixVariant?{...n.postfixVariant,operator:t}:void 0},(0,M.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()}parse(e,t){if(t){const e={};for(const n in t){const i=t[n];e[n]=h.Expression.isExpression(i)||g.Equation.isEquation(i)||(0,a.isEnumerable)(i)?i:h.Expression.create(i)}t=e}const n=(0,b.preprocess)(String(e),l.mathFunctionRegistry),i=this.toRPN(this.tokenize(n));return this.parseRPN(i,t)}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(A.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)||A.IndexedReference.isIndexedReference(r)){const s=A.IndexedReference.isIndexedReference(r)?r.resolve():r,o=e[c-1];let a,l;if(!M.Token.isToken(o)||o.type!==M.Token.VARIABLE||t&&o.value in t||!(o.value in this.KNOWN_VALUES)||(a=o.value),l=d.Dictionary.isDictionary(s)?this.extractStringKeys(E)[0]:this.extractIndices(E,t,n),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:M.Token.isToken(o)&&o.type===M.Token.VARIABLE&&(t=h.Expression.Variable(o.value)),!t||!v.Vector.isVector(s)&&!x.Matrix.isMatrix(s))throw new u.ParserError("Symbolic indexed access requires a named Vector or Matrix target.");if(v.Vector.isVector(s)&&1!==e.length)throw new u.ParserError("Symbolic Vector access requires exactly one index.");if(x.Matrix.isMatrix(s)&&2!==e.length){if(1===e.length)throw new u.ParserError("Symbolic Matrix row access is not scalar and cannot be deferred as an Expression.");throw new u.ParserError("Symbolic Matrix cell access requires exactly two indices.")}addToOutput(s.withSymbolicAccessor(t,e))}else addToOutput(new A.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("Symbolic indexed access supports at most two unresolved indices.");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,w._.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,w._.multiply)(resolveStackValue(i.pop()),e))}else addToOutput(this.parseRPN(E,t,n));else addToOutput(this.parseRPN(E,t,n))}else if(E.type===M.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,w._[t.action])(e,o)}else if(t.isPostfix)o=resolveStackValue(o),o=h.Expression.fromSymbolicAccess(o)??o,s=(0,w._[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)&&M.Token.isToken(m)&&m.type===M.Token.VARIABLE&&h.Expression.isExpression(a)&&a.isPlainVariable())throw new u.ParserError(`Unsupported function ${m.value}`);if("assign"===t.action&&A.IndexedReference.isIndexedReference(a))o=resolveStackValue(o),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,w._[t.action])(a,o)}else if(t.deferLHSResolution)a=resolveStackValue(a),o=resolveStackValue(o),s=(0,w._[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=w._[e];s=a.isEnumerable||o.isEnumerable||g.Equation.isEquation(a)||g.Equation.isEquation(o)?(0,w.route)(a,o,t.action):i(a,o)}}Array.isArray(s)?(addToOutput(s[0]),addToOutput(s[1])):addToOutput(s)}else if(E.type===M.Token.FUNCTION){const i=e[++c];if(E.value===P.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("Malformed internal symbolic accessor.");const a=r[0],l=o[0],c=[],d=[];let g,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("Malformed internal symbolic accessor index.");if(!h.Expression.isExpression(n))throw new u.ParserError("Symbolic accessor indices must evaluate to scalar expressions.");c.push(n);const i=Number(n.text());Number.isFinite(i)?d.push(i-m.Settings.INDEX_BASE):E=!1}if(c.length>2)throw new u.ParserError("Symbolic indexed access supports at most two unresolved indices.");if(v.Vector.isVector(l)&&1!==c.length)throw new u.ParserError("Symbolic Vector access requires exactly one index.");if(x.Matrix.isMatrix(l)&&2!==c.length){if(1===c.length)throw new u.ParserError("Symbolic Matrix row access is not scalar and cannot be deferred as an Expression.");throw new u.ParserError("Symbolic Matrix cell access requires exactly two indices.")}if((v.Vector.isVector(l)||x.Matrix.isMatrix(l))&&E)g=l.__get__(d);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("Symbolic indexed access target must resolve to a Vector or Matrix.");e=2===c.length?new x.Matrix([]):new v.Vector}g=e.withSymbolicAccessor(a,c)}addToOutput(g)}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)M.Token.isToken(n)&&n.type===M.Token.OPERATOR&&n.value===P.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,w.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,w.callFunction)(E.value,n))}}else if(E.type===M.Token.PREFIX){const e=resolveStackValue(i.pop()),t=h.Expression.fromSymbolicAccess(e)??e,n=`${o[E.value].action}Prefix`;addToOutput((0,w._[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(M.Token.NUMBER)){const n=t[E.value];e=h.Expression.isExpression(n)||g.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 M.Token.FUNCTION:e=h.Expression.Function(E.value);break;case M.Token.VARIABLE:e=P.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 d.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}=M.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=M.Token.V(t.pop().text().substring(1));return t.at(-1)?.text()===P.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(P.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)w._[s.action]=t;else if(!w._[s.action])throw new u.ParserError(`Unknown operator action ${s.action}`);return this.operators[s.operator]=s,(0,M.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 d=p;const g={tokenType:M.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=M.Token.getCharType(e,a,g);if(g.is(M.Token.BRACKET)){const e=g.last();if(void 0===e)throw new u.ParserError("Bracket token is missing its character.");const i=s.brackets[e];if(i.isOpen){const e=d[d.length-1];e&&e.type===M.Token.VARIABLE&&(e.value in l.mathFunctionRegistry||e.value===P.SYMBOLIC_ACCESSOR)&&(e.type=M.Token.FUNCTION);let n=!1;if(e&&e.type!==M.Token.FUNCTION&&e.type!==M.Token.OPERATOR)if("square"===i.type)n=!0;else{if(!m.Settings.ALLOW_IMPLICIT_MULTIPLICATION)throw new u.UnexpectedTokenError(`Expected operator or function name but "${e.value}" found!`);"parenthesis"===i.type&&e.type===M.Token.VARIABLE&&(n=!0),t.pure||d.push(new M.Token("*",M.Token.OPERATOR,-1))}d=d.addScope(i.type,a),n&&(d.implicitMultiply=!0)}else{const e=d.type===i.type;if(e&&"parenthesis"===i.type&&d.parent){const e=n.slice(a).trimStart();if(o.find(t=>e.startsWith(t))){const e=d.parent;let t=e.length-2,n=e[t];M.Token.isToken(n)&&n.type===M.Token.OPERATOR&&"*"===n.value&&-1===n.position&&(e.splice(t,1),n=e[--t]),!M.Token.isToken(n)||n.type!==M.Token.VARIABLE&&n.type!==M.Token.FUNCTION||(n.type=M.Token.FUNCTION,d.deferLHSResolution=!0)}}if(d=d.upperScope(),void 0===d||!e)throw new u.UnexpectedTokenError(`Missing opening bracket for "${g.last()}":${a}`)}g.chars.pop()}if(g.tokenType!==M.Token.UNDEFINED&&g.tokenType!==r){let n=g.chars.join(P.BLANK);const r=P.ALIASES[n];r&&(n=r);const s=a-g.chars.length;if(i.includes(n)&&g.tokenType!==M.Token.PREFIX)g.tokenType=M.Token.OPERATOR;else if(g.is(M.Token.OPERATOR)&&g.chars.length>1){let e=g.chars[0];for(let t=1;t<g.chars.length+1;t++){const i=e+g.chars[t];i in this.operators?e=i:(d.push(new M.Token(e,M.Token.OPERATOR,s+t-e.length)),e=g.chars[t],n=P.BLANK)}g.chars=[],g.scientificNumber=!1}const o=n===P.SPACE;if(o&&t.keepWhiteSpace)d.push(new M.Token(n,M.Token.SPACE,s));else if(n!==P.BLANK&&!o){g.scientificNumber&&(n=(0,c.scientificToDecimal)(n),g.scientificNumber=!1);const e=d[d.length-1],i=M.Token.isToken(e)&&e.type===M.Token.OPERATOR?this.operators[e.value]:void 0;if(e&&(g.is(M.Token.VARIABLE)&&e.type!==M.Token.OPERATOR&&e.type!==M.Token.PREFIX||(g.is(M.Token.VARIABLE)||g.is(M.Token.NUMBER))&&i?.isPostfix)){if(!m.Settings.ALLOW_IMPLICIT_MULTIPLICATION)throw new u.UnexpectedTokenError(`Expected operator or function name but "${e.value}" found!`);t.pure||d.push(new M.Token("*",M.Token.OPERATOR,-1))}m.Settings.USE_SINGLE_LETTER_VARIABLES&&!(n in l.mathFunctionRegistry)?d.push(...n.split("").map(e=>new M.Token(e,g.tokenType,-1)).flatMap(e=>[new M.Token("*",M.Token.OPERATOR,-1),e]).slice(1)):d.push(new M.Token(n,g.tokenType,s))}g.chars=[e]}else g.chars.push(e);g.tokenType=r}const h=p[p.length-1];if(r.Scope.isScope(h)&&h.isOpen)throw new u.UnexpectedTokenError(`Missing closing bracket for "${n.charAt(h.column-1)}":${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(M.Token.isToken(e)&&e.type===M.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===M.Token.VARIABLE&&M.Token.isToken(a)&&a.type===M.Token.OPERATOR&&"*"===a.value&&-1===a.position&&r.Scope.isScope(c)&&"parenthesis"===c.type&&c.implicitMultiply&&o.value in l.mathFunctionRegistry&&(o=new M.Token(o.value,M.Token.FUNCTION,o.position),i++),o.type){case M.Token.OPERATOR:{let s=o.resolvedOperator??this.operators[o.value];if(s.postfixVariant){let t=i+1,n=e[t];for(;M.Token.isToken(n)&&(n.type===M.Token.SPACE||n.type===M.Token.UNDEFINED);)n=e[++t];(void 0===n||M.Token.isToken(n)&&(n.type===M.Token.OPERATOR||n.type===M.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!==M.Token.OPERATOR||s.isPostfix)break;if(!this.operators[n.value].isPrefix)throw new u.ParserError(`Prefix operator expected but ${n.value} encountered.`);n.type=M.Token.PREFIX}const l=t[t.length-1];if(s.isPrefix&&(0===t.length||t.length>0&&l&&l.type===M.Token.PREFIX)){o.type=M.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===M.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(M.Token.isToken(e)&&e.type===M.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(M.Token.isToken(t)&&t.type===M.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 M.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===M.Token.BRACKET&&s.brackets[o.value].matches===e.value)break}}break;case M.Token.PREFIX:n.push(o);break;case M.Token.UNDEFINED:case M.Token.SPACE:break;default:t.push(o)}}}for(;n.length;){const e=n.pop();t.push(e)}return t}}t.Parser=new ExpressionParser},266(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),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)},294(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ContinueSignal=t.BreakSignal=t.ReturnSignal=t.ControlFlowSignal=t.CONTINUE_SIGNAL=t.BREAK_SIGNAL=t.RETURN_SIGNAL=void 0,t.functionBoundary=function functionBoundary(e){let t;g++;try{t=e()}catch(e){if(!ReturnSignal.isReturnSignal(e))throw BreakSignal.isBreakSignal(e)?new r.ParserError((0,r.message)("breakOutsideLoop")):ContinueSignal.isContinueSignal(e)?new r.ParserError((0,r.message)("continueOutsideLoop")):e;t=e.value}finally{g--}return t},t.RETURN=function RETURN(e){throw new ReturnSignal(e)},t.BREAK=function BREAK(){if(0===p)throw new r.ParserError((0,r.message)("breakOutsideLoop"));throw c},t.CONTINUE=function CONTINUE(){if(0===p)throw new r.ParserError((0,r.message)("continueOutsideLoop"));throw m},t.AND=function AND(...e){let t=(0,a.one)();for(const n of e)if(!isTruthy(n())){t=(0,a.zero)();break}return t},t.OR=function OR(...e){let t=(0,a.zero)();for(const n of e)if(isTruthy(n())){t=(0,a.one)();break}return t},t.NOT=function NOT(e){return isTruthy(e)?(0,a.zero)():(0,a.one)()},t.XOR=function XOR(...e){let t=!1;for(const n of e)isTruthy(n)&&(t=!t);return t?(0,a.one)():(0,a.zero)()},t.IFERROR=function IFERROR(e,t){let n;try{n=e()}catch(e){if(e instanceof ControlFlowSignal)throw e;n=t()}return n},t.ISERROR=function ISERROR(e){let t=(0,a.zero)();try{e()}catch(e){if(e instanceof ControlFlowSignal)throw e;t=(0,a.one)()}return t},t.IF=function IF(e,t,n){let i;return i=isTruthy(e())?t():n?n():new l.Vector,i},t.WHILE=WHILE,t.FOR=function FOR(e,t,n,i){return e(),WHILE(t,()=>{let e;try{e=i()}catch(e){throw ContinueSignal.isContinueSignal(e)&&n(),e}return n(),e})},t.BLOCK=BLOCK,t.parserReturnBoundary=parserReturnBoundary,t.parserBlock=function parserBlock(...e){return parserReturnBoundary(()=>BLOCK(...e))};const i=n(6441),r=n(4703),s=n(5817),o=n(296),a=n(6099),l=n(3982),u=n(8300);t.RETURN_SIGNAL="RETURN_SIGNAL",t.BREAK_SIGNAL="BREAK_SIGNAL",t.CONTINUE_SIGNAL="CONTINUE_SIGNAL";class ControlFlowSignal extends Error{constructor(){super(),this.name=new.target.name}}t.ControlFlowSignal=ControlFlowSignal;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.ReturnSignal=ReturnSignal;class BreakSignal extends ControlFlowSignal{dataType=t.BREAK_SIGNAL;static isBreakSignal(e){return(0,i.isNerdamerNativeType)(e,t.BREAK_SIGNAL)}}t.BreakSignal=BreakSignal;class ContinueSignal extends ControlFlowSignal{dataType=t.CONTINUE_SIGNAL;static isContinueSignal(e){return(0,i.isNerdamerNativeType)(e,t.CONTINUE_SIGNAL)}}t.ContinueSignal=ContinueSignal;const c=new BreakSignal,m=new ContinueSignal;let p=0,d=0,g=0;function isTruthy(e){if(!o.Expression.isExpression(e))throw new r.UnexpectedDataType((0,r.message)("expressionExpected",{type:u.dataTypes[e.dataType]}));return!e.isZero()}function WHILE(e,t){let n=new l.Vector,i=!0,o=0;for(;i;)if(isTruthy(e())){if(o>=s.Settings.MAX_LOOP_ITERATIONS)throw new r.ParserError((0,r.message)("loopIterationLimitExceeded",{max:String(s.Settings.MAX_LOOP_ITERATIONS)}));p++;try{n=t()}catch(e){if(BreakSignal.isBreakSignal(e))i=!1;else if(!ContinueSignal.isContinueSignal(e))throw e}finally{p--}o++}else i=!1;return n}function BLOCK(...e){let t=new l.Vector;for(const n of e)t=n();return t}function parserReturnBoundary(e){const t=0===g&&0===d;let n;d++;try{n=e()}catch(e){if(!t||!ReturnSignal.isReturnSignal(e))throw e;n=e.value}finally{d--}return n}},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),d=n(8300),g=n(6255),h=n(619),x=n(3171),E=n(6498),y=n(3957),v=n(3957),P=n(6910),w=n(238),b=n(5584),M=n(6056),A=n(6056),T=n(6056),N=n(8137),O=n(6099),R=n(5118),F=n(5118),D=n(5118),k=n(1897),{NUM:z,VAR:L,EXP:V,FUN:U,GRP:q,PRD:B,SUM:$,INF:Z}=d.EXPRESSION_TYPES;class Expression{static DISTRIBUTE_MULTIPLIER=!0;static imaginary=d.DEFAULT_IMAGINARY;static LOG=d.LOG;static LOG10="log_10";static numberHash="#";static POW_OPR="^";static RESERVED=[d.E].concat(d.PI).concat(d.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=d.EXPRESSION_TYPES;args;base;dataType=d.EXPRESSION;deferred=!1;elements=void 0;isEnumerable=!1;multiplier;name;power;precision;type;value;constructor(e,t){return e=Expression.hook(e),t&&"string"==typeof e?(this.value=e,this):Expression.isExpression(e)?void(0,k.copyOver)(e,this):Expression.create(e)}static create(e,t,n){if(Expression.isExpression(e)&&!t)return n?e.copy():e;if(b.Rational.isRational(e))return Expression.fromRational(e);if((0,o.isNerdamerNativeType)(e,d.EQUATION))return e.toLHS().LHS;const i=w.Parser.parse(String(e),t);if(!Expression.isExpression(i))throw new a.UnexpectedDataType((0,a.message)("expressionExpected",{type:d.dataTypes[i.dataType]}));return i}static E(e){return p.Settings.EVALUATE||e?Expression.fromRational(b.Rational.E):Expression.Variable(d.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,U);return t.name=e,t}static getValue(e,t,n){return e.map(e=>{let i=e[t]();return e.type!==$&&e.type!==q||n!==B||(i=`(${i})`),i}).sort().join(n===$||n===q?"+":"*").replace("+-","-")}static hook(e){return e}static Img(){return Expression.Variable(Expression.imaginary)}static Inf(){return Expression.Type(d.INFINITY[0],Z)}static isExpression(e){return(0,o.isNerdamerNativeType)(e,d.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(d.INDEX_VARIABLE)}static NegInf(){return Expression.Inf().neg()}static Number(e){return Expression.Type(String(e),z)}static Pi(e){return p.Settings.EVALUATE||e?Expression.fromRational(b.Rational.PI):Expression.Variable(d.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(d.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=V),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,L)}abs(){return(0,s.abs)(this)}add(e){return this.plus(e)}buildFunction(e){return(0,l.build)(this,e)}coeffs(...e){return(0,M.coeffs)(this,e)}copy(){return new Expression(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())}}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){const t=this.hasFunction(d.SYMBOLIC_ACCESSOR,!0)?(0,N.toText)(this,{internalAccessor:!0},void 0,Expression.POW_OPR,Expression.sortFunction):this.text(),n=w.Parser.evaluate(t,e);return Expression.fromSymbolicAccess(n)??Expression.create(n)}expand(){return(0,c.expand)(this)}forEveryElement(e){return(0,D.forEveryElement)(this,e)}functions(e,t){return(0,F.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,T.getDenominator)(this)}getElements(){return this.elements?this.elements:{}}getMultiplier(e){if(void 0===this.multiplier){const e=this.type===z?this.value:"1";this.multiplier=b.Rational.create(e)}return e?Expression.create(this.multiplier):this.multiplier}getNumerator(){return(0,T.getNumerator)(this)}getPower(){return this.power||(this.isNUM()?this.power=Expression.Number("0"):this.power=Expression.Number("1")),this.power}getVariable(e){return(0,A.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,R.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,R.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,O.one)().div(this):(e=new Expression(this),e.power=e.getPower().neg(),e.multiplier=e.getMultiplier().invert()),e.hasRadical()?(0,v.rationalizeRadical)(e):e}isComplex(){let e=!1;if(this.isFunction(d.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([d.REALPART,d.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 d.PARSER_CONSTANTS&&this.isVAR()||this.isEXP()&&this.getBase().isConstant()&&this.getPower().isConstant()}isE(){return this.value===d.E}isEven(){return this.isNUM()&&this.getMultiplier().isEven()}isEXP(){return this.type===V}isFunction(e){let t;return t=void 0===e?this.type===U:"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===Z}isInteger(){return!!this.isOne()||this.type===z&&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,O.zero)())}isNegInf(){return this.isInf()&&this.getMultiplier().lt("0")}isNUM(){return this.type===z}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 d.PI.includes(this.value)}isPlainVariable(){return this.isVAR()&&this.getMultiplier().isOne()&&this.getPower().isOne()}isPolynomialLike(){return(0,A.isPolynomialLike)(this)}isPosInf(){return this.isInf()&&this.getMultiplier().gt((0,O.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===$||this.type===q}isVAR(){return this.type===L}isZero(){return this.getMultiplier().isZero()}keyValue(e=!1,t=!1){let n="";if(t)n=this.getPower().text();else switch(this.type){case z:n=e?this.value:Expression.numberHash;break;case L:case U:case V:case Z:n=e?this.idString():this.value;break;case q:n=e?this.text():Object.values(this.getElements())[0].keyValue();break;case $:case B:n=Expression.getValue(Object.values(this.getElements()),"text",this.type)}if(!n)throw new Error(`The function 'keyValue' not yet implemented for type ${this.type}`);return n}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,P.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,g.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===V?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,N.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(0,N.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,O.one)():(e=this.copy(),delete e.multiplier),e}updateValue(){return this.isFunction()?this.value=`${this.name}(${this.getArguments().map(e=>e.text()).join(", ")})`:(this.isProduct()||this.isSum())&&(this.value=Expression.getValue(this.elementsArray(),"text",this.type)),this}valueOf(){let e;return e=this.isNUM()?this.getMultiplier().valueOf():this.text({decimal:!0}),e}variables(e){return(0,F.variables)(this,e,Expression.RESERVED)}}t.Expression=Expression},388(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),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)),d=m.times(p),g=i.Expression.create(t).pow(i.Expression.create(`1/${u}`));return{integrand:d,newVariable:n,originalVariable:t,n:u,backSub:g}},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;return(e.isProduct()||e.isSum())&&e.each(e=>{hasTranscendental(e,t)&&(n=!0)}),n};const i=n(296),r=n(551),s=n(886)},417(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),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],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"]]}},430(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.imatrix=function imatrix(e){let t;return t=e.isInteger()?s.Matrix.identity(Number(e)):i.Expression.toFunction(r.IMATRIX,[e]),t};const i=n(296),r=n(8300),s=n(4462)},542(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.contains=function contains(e,t){let n=!1;const r=e.getMultiplier().abs(),s=t.getMultiplier().abs();if(r.isInteger()&&s.isInteger()&&r.gte(s))if(t.isNUM())n=!0;else if(e.isProduct())if(t.isVAR())n=e.hasVariable(t.value);else if(t.isProduct()){const r=t.elementsArray();for(let t=0;t<r.length;t++){const s=r[t],o=s.getPower();if(!(s.isVAR()&&e.hasVariable(s.value)&&o.isInteger()&&o.gt((0,i.zero)()))){n=!1;break}n=!0}}return n},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}},t.splitProductFactors=function splitProductFactors(e,t){return e.isProduct()?(t??=[],e.each(e=>{const n=e.getPower(),r=n.getMultiplier();if(r.isInteger()&&r.gt((0,i.one)())){const i=n.toUnitMultiplier(),s=e.toLinearAndUnitMultiplier();for(let e=0;e<Number(r.numerator);e++)t.push(s.pow(i))}else e.isProduct()?splitProductFactors(e,t):t.push(e)}),t):[e]};const i=n(6099)},551(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.factorial=void 0,t.abs=abs,t.uniqueSortedArray=uniqueSortedArray,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,i.decimalSplit)(e),r=10n**BigInt(n.length);return simplifyRatio(BigInt(t+n),r)},t.sign=sign,t.isEven=isEven,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;return t&&isEven(n)&&(s=-s),s},t.mod=mod,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.max=function max(...e){if(e.length<1)throw new Error("maxBigInt() requires at least one argument");let t=e[0];for(let n=1;n<e.length;n++)e[n]>t&&(t=e[n]);return t},t.min=function min(...e){if(0===e.length)throw new Error("Min of empty list is not defined for BigInt.");let t=e[0];for(let n=1;n<e.length;n++)e[n]<t&&(t=e[n]);return t},t.recoverCoeffsZ=function recoverCoeffsZ(e,t){const n=Object.keys(t).sort((e,t)=>/\w+[-+]\w+/.test(e)?1:e.localeCompare(t)),i={};for(const r of n){const n=t[r];let s=0,o=!0;do{const t=e/n;if(0n===t)break;0n===e%t?(s++,e=t):o=!1}while(o);i[r]=s}return i.coeff=e,i},t.binom=function binom(e,t){if(e<0n)throw new RangeError("binomBigInt: n must be non-negative");if(t<0n||t>e)return 0n;if(0n===t||t===e)return 1n;let n=t;const i=e-t;i<n&&(n=i);let r=1n;for(let t=1n;t<=n;t++)r=r*(e-n+t)/t;return r},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(7103),r=n(5869);function abs(e){return e<0n?-e:e}function uniqueSortedArray(e){return(0,r.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 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("Factorial is undefined for negative integers.");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}()},619(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.assume=void 0,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(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}Object.defineProperty(t,"assume",{enumerable:!0,get:function(){return u.assume}})},652(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),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)},t.isInverseHyperbolicTrig=function isInverseHyperbolicTrig(e){return e.isFunction()&&i.INVERSE_HYPERBOLIC_TRIG.includes(e.name)};const i=n(8300)},706(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.sum=t.stripPower=t.product=void 0,t.toFactor=function toFactor(e){return s.Expression.toEXP(e,(0,o.one)())},t.roots=function roots(e,t,n){const i=(e+t+Math.sqrt((e+t)**2-4*n))/2,r=(e+t-Math.sqrt((e+t)**2-4*n))/2;return[Math.min(i,r),Math.max(i,r)]},t.getCombinations=function getCombinations(e,t,n=1,i){i??=[e[0]],t=t||e[0];for(let r=n;r<e.length;r++){const s=t*e[r];i.push(s);for(let t=n+1;t<e.length;t++)i.push(e[n]*e[t]);getCombinations(e,s,r+1,i)}return i=[...new Set(i)].sort((e,t)=>e-t)},t.findMatches=function findMatches(e,t){const n=[];for(let i=0;i<e.length;i++){const r=e[i];for(let s=e.length-1;s>i;s--){const i=e[s],o=r*i;if(o<t)break;o===t&&n.push([Math.min(r,i),Math.max(r,i)])}}return n},t.polynomialStringFromArray=function polynomialStringFromArray(e,t="x"){const n=[],i=[...e].reverse();for(let e=0;e<i.length;e++){const r=i[e];if(0!==r)if(0===e)n.push(String(r));else{const i=1===r?"":-1===r?"-":`${r}*`,s=1===e?"":"^"+e;n.push(`${i}${t}${s}`)}}return n.reverse().join("+").replace(/\+-/g,"-")},t.trimZeros=function trimZeros(e){let t=e.length-1;for(;t>0&&e[t].isZero();)t--;return e.slice(0,t+1)},t.indexOf=function indexOf(e,t){for(let n=0;n<e.length;n++)if(e[n].eq(t))return n;return-1},t.count=function count(e){return m.Vector.isVector(e)||c.ValuesSet.isValuesSet(e)||r.Dictionary.isDictionary(e)?s.Expression.Number(e.count()):s.Expression.toFunction(u.COUNT,[e])},t.size=function size(e){return m.Vector.isVector(e)||l.Matrix.isMatrix(e)||i.Collection.isCollection(e)||c.ValuesSet.isValuesSet(e)||r.Dictionary.isDictionary(e)?m.Vector.create(e.dimensions()):s.Expression.toFunction(u.SIZE,[e])},t.isprime=function isprime(e){const t=s.Expression.create(e);let n;return n=t.isInteger()?s.Expression.Number(Number((0,p.isPrimeBig)(t.getMultiplier().numerator))):s.Expression.toFunction(u.ISPRIME,[t]),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}}),Object.defineProperty(t,"sum",{enumerable:!0,get:function(){return a.sum}});const l=n(4462),u=n(8300),c=n(5598),m=n(3982),p=n(982)},886(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.prodSubst=prodSubst,t.sumSubst=sumSubst,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;e.isVAR()&&(e.isConstant()||e.isI())&&n.add(e.value),e.forEveryElement(e=>(e.isVAR()&&(e.isConstant()||e.isI())&&n.add(e.value),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,r){let o;if(e.isProduct())if(t.isProduct()){const l=e.getMultiplier().div(t.getMultiplier());if(l.isInteger()||a.Settings.ALLOW_RAT_SUBS){let i,a=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 s of a)if(s.value===e.value){const t=s.getPower().div(e.getPower());if(void 0===i&&(i=t),!(t.isInteger()&&t.eq(i)||s.isEXP()))break;c=!0,p--}else m.push(subst(s,t,n,r));if(!c)break;a=m}0!==p||void 0===i?o=(0,s.product)(...e.elementsArray(!0).map(e=>subst(e,t,n,r))).pow(e.getPower()):(m.push(n.pow(i)),o=(0,s.product)(...m),o.multiplier=o.getMultiplier().times(l)),o=o.pow(subst(e.getPower(),t,n,r))}else o=new i.Expression(e)}else o=(0,s.product)(...e.elementsArray(!0).map(e=>subst(e,t,n,r))).pow(e.getPower());return o||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 d=c.div(r);if(p){if(!d.eq(p))return(0,s.sum)(...e.elementsArray().map(e=>subst(e,t,n,i))).pow(a).times(l)}else p=d}const d=n.times(p||(0,r.one)()),g=u.map(e=>subst(e,t,n,i));g.push(d),o=(0,s.sum)(...g).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=new i.Expression(n):(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}},959(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),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)},982(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isPrimeBig=isPrimeBig,t.trialDivisionBig=trialDivisionBig,t.pollardRhoBig=pollardRhoBig,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},t.mergeFactors=function mergeFactors(e,t){const n=Object.assign(e,{});for(const e in t)n[e]=e in n?n[e]+t[e]:t[e];return n},t.getFactors=function getFactors(e){const{sign:t,factors:n}=primeFactorsBig(BigInt(e),!0);if(n.unshift(1),-1===t){const e=n.length;for(let t=0;t<e;t++)n.push(-n[t])}return n};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 modPow=(e,t,n)=>{let i=1n;for(e%=n;t>0n;)t%2n==1n&&(i=i*e%n),e=e*e%n,t/=2n;return i},i=e<18446744073709551616n?[2n,325n,9375n,28178n,450775n,9780504n,1795265022n]:[2n,3n,5n,7n,11n,13n,17n,19n,23n,29n,31n,37n];for(const r of i){const i=r%e;if(i<2n)continue;let s=modPow(i,n,e);if(1n===s||s===e-1n)continue;let o=!1;for(let n=0n;n<t-1n;n++)if(s=s*s%e,s===e-1n){o=!0;break}if(!o)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}}},1024(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),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)},1097(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.bySubstitution=bySubstitution,t.tryIntegrateBySubstitution=function tryIntegrateBySubstitution(e,t){if(e.isProduct()||(e=(0,i.factor)(e)),!e.isProduct())return;const n=e.elementsArray();return n.length<2?void 0: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 d=(0,r.simplify)(t.div(p));if(d.hasVariable(n))continue;const g=s.Expression.create((0,u.getU)(e)),h=(0,r.simplify)((0,u.subst)(o,i,g));if(h.hasVariable(n)||!h.hasVariable(g.text()))continue;const x=m.tableOfIntegrals.lookup(new l.Pattern(h,[g.text()]),0);if(x&&!x.hasFunction(a.INTEGRATE))return(0,r.simplify)((0,u.subst)(x,g,i).times(d))}}},t.tryIntegrateByLogSubstitution=function tryIntegrateByLogSubstitution(e,t){const n=(0,r.simplify)(e.getNumerator()),i=(0,r.simplify)(e.getDenominator());if(!i.isOne())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}}(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}}};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}},1280(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!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 l=t??(0,i.collectVariablesSet)(n);if(0===l.length){for(const e of n)if(!e.eq((0,s.zero)()))return{type:"inconsistent"};return{type:"unique",solutions:{}}}const{coeffMatrix:u,constants:c}=function extractCoefficients(e,t){const n=t.length,i=[],r=[];for(let o=0;o<e.length;o++){const a=e[o].coeffs(...t),l=new Array(n).fill(null).map(()=>(0,s.zero)());let u=(0,s.zero)();a.each((e,t)=>{const n=t.split(",").map(Number),i=n.reduce((e,t)=>e+t,0);if(0===i)u=e;else{if(1!==i)throw new Error(`Nonlinear term detected in equation ${o+1}: degree ${i} term found. solveLinearSystem only handles linear systems.`);{const t=n.findIndex(e=>1===e);-1!==t&&(l[t]=e)}}});const c=[...l,u];for(const e of c)for(const n of t)if(e.hasVariable(n))throw new Error(`Nonlinear term detected in equation ${o+1}: variable "${n}" appears in a non-polynomial position. solveLinearSystem only handles linear systems.`);i.push(l),r.push(u)}return{coeffMatrix:i,constants:r}}(n,l),m=n.length,p=l.length,d=[];for(let e=0;e<m;e++){const t=[];for(let n=0;n<p;n++)t.push(u[e][n]);t.push((0,s.zero)().minus(c[e])),d.push(t)}const g=new o.Matrix(...d).rref(),h=g.rows(),x=(0,s.zero)(),E=[];for(let e=0;e<h;e++){let t=-1;for(let n=0;n<p;n++)if(!g.get(e,n).eq(x)){t=n;break}if(-1===t){if(!g.get(e,p).eq(x))return{type:"inconsistent"};E.push(-1)}else E.push(t)}const y=new Set;for(const e of E)-1!==e&&y.add(e);const v=[];for(let e=0;e<p;e++)y.has(e)||v.push(e);if(0===v.length){const e={};for(let t=0;t<h;t++){const n=E[t];-1!==n&&(e[l[n]]=g.get(t,p))}return{type:"unique",solutions:e}}const P=v.map(e=>l[e]),w={};for(const e of P)w[e]=r.Expression.create(e);for(let e=0;e<h;e++){const t=E[e];if(-1===t)continue;let n=g.get(e,p);for(const t of v){const i=g.get(e,t);i.eq(x)||(n=n.minus(i.times(r.Expression.create(l[t]))))}w[l[t]]=n}return{type:"infinite",solutions:w,freeVariables:P}};const i=n(6338),r=n(296),s=n(6099),o=n(4462),a=n(3982)},1339(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.polynomialToMultiPoly=function polynomialToMultiPoly(e,t){e=s.Polynomial.toPolynomial(e);const n=new o.MultiPoly;t=t??e.variables;for(const i of e.terms){const e=[];for(let n=0;n<t.length;n++){const r=i.powers[t[n]];r&&e.push(`${n}:${r}`)}const r=e.join(",");n.terms.set(r,i.coeff.getMultiplier().numerator)}return{poly:n,variables:t}},t.multiPolyToExpression=multiPolyToExpression,t.factorsToExpressions=factorsToExpressions,t.factorsToPolynomials=function factorsToPolynomials(e,t){return factorsToExpressions(e,t).map(e=>new s.Polynomial(e))};const i=n(296),r=n(6099),s=n(2116),o=n(4737);function multiPolyToExpression(e,t){let n;if(0===e.terms.size)n=(0,r.zero)();else{let s;for(const[n,r]of e.terms){let e=i.Expression.Number(r);if(""!==n)for(const r of n.split(",")){const[n,s]=r.split(":"),o=i.Expression.Variable(t[+n]);e=e.times("1"===s?o:o.pow(i.Expression.Number(s)))}s=void 0===s?e:s.plus(e)}n=s??(0,r.zero)()}return n}function makeExpression(e,t){let n=multiPolyToExpression(e.poly,t);return e.multiplicity>1n&&(n=n.pow(i.Expression.Number(e.multiplicity))),n}function factorsToExpressions(e,t){const n=[];1n!==e.content&&n.push(i.Expression.Number(e.content));for(const i of e.factors){const e=makeExpression(i,t);n.push(e)}return n}},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),d=n(9684),g=n(2634),h=n(2012),x=n(7410),E=n(5530),y=n(7571),v=n(6698),P=n(6082),w=n(6351),b=n(2446),M=n(6284),A=n(6528),T=n(6184),N=n(296),O=n(6099),R=n(6430),F=n(4462),D=n(430),k=n(8300),z=n(238),L=n(2707),V=n(6913),U=n(2116),q=n(5584),B=n(5598),$=n(3552),Z=n(3982),j=n(7130),G=n(9426),H=o(n(4703)),X=n(4895),W=n(4600),K=n(7741),Y=n(3148),Q=n(886),J=n(7867),ee=n(8533),te=n(1649),ne=n(6925),ie=n(706),re=n(1526),se=n(2295),oe=n(6950),ae=new j.Converter,le=new j.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 z.Parser.parse(e,t)}N.Expression.prototype.solveFor=function(e){return(0,se.solve)(this,e)},T.Equation.prototype.solveFor=function(e){return(0,se.solve)(this,e)},N.Expression.prototype.toTeX=function(e){return ae.convert(this,normalizeTeXOptions(e))},N.Expression.prototype.toText=function(){return le.convert(this)},N.Expression.prototype.latex=function(e){return ae.convert(this,normalizeTeXOptions(e))},N.Expression.prototype.isInfinity=function(){return this.isInf()},N.Expression.prototype.isFraction=function(){return!this.getMultiplier().isInteger()},N.Expression.prototype.hasIntegral=function(){return this.hasFunction("integrate",!0)},N.Expression.prototype.equals=function(e){return new T.Equation(this,N.Expression.create(e))},nerdamer.pretty=function(e,t="TeX"){return("TeX"===t?ae:le).convert(e)},nerdamer.convertFromLaTeX=function(e){return ae.fromTeX(e)},nerdamer.convertToTeX=function(e,t){let n=normalizeTeXOptions(t);return"string"!=typeof e||n?.decimal||(n={...n??{},preserveSource:!0}),ae.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=q.Rational.create(String(t));n=1n===e.denominator?String(e.numerator):`${e.numerator}/${e.denominator}`}return z.Parser.setConstants({[e]:n}),nerdamer},nerdamer.getConstant=function(e){const t=k.PARSER_CONSTANTS[e];return String("function"==typeof t?t():t)},nerdamer.set=function(e,t){if("PRECISION"===e)z.Parser.setPrecision(Number(t));else if("object"==typeof e&&"PRECISION"in e){const{PRECISION:t,...n}=e;z.Parser.set(n),z.Parser.setPrecision(Number(t))}else z.Parser.set(e,t);return nerdamer},nerdamer.get=function(e){let t;return t="PRECISION"===e?z.Parser.getPrecision():z.Parser.get(e),t},nerdamer.getOperator=function(e){return z.Parser.getOperator(e)},nerdamer.setOperator=function(e,t){return z.Parser.setOperator(e,t),nerdamer},nerdamer.aliasOperator=function(e,t){return z.Parser.aliasOperator(e,t),nerdamer},nerdamer.setVar=function(e,t){"delete"===t?(0,L.unassign)(e):(0,L.assign)(e,String(t))},nerdamer.clearVars=function(){for(const e of Object.keys(z.Parser.KNOWN_VALUES))(0,L.unassign)(e);return nerdamer},nerdamer.getVars=function(e="text"){const t="LaTeX"===e?ae:le,n={};for(const e of Object.keys(z.Parser.KNOWN_VALUES))n[e]=t.convert(z.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=O.symbols,nerdamer.version=function(){return l.default.version},nerdamer.errors=H,nerdamer.buildFunction=X.build,nerdamer.classes={Expression:N.Expression,Rational:q.Rational,Polynomial:U.Polynomial,Matrix:F.Matrix,Vector:Z.Vector,Collection:M.Collection,Converter:j.Converter,Dictionary:A.Dictionary,ValuesSet:B.ValuesSet,SolutionSet:re.SolutionSet,Assumption:b.Assumption,Equation:T.Equation,instance:{Parser:z.Parser}},nerdamer.cos=te.cos,nerdamer.sin=te.sin,nerdamer.tan=te.tan,nerdamer.acos=te.acos,nerdamer.asin=te.asin,nerdamer.atan=te.atan,nerdamer.arccos=te.acos,nerdamer.arcsin=te.asin,nerdamer.arctan=te.atan,nerdamer.atan2=te.atan2,nerdamer.sec=te.sec,nerdamer.csc=te.csc,nerdamer.cot=te.cot,nerdamer.asec=te.asec,nerdamer.acsc=te.acsc,nerdamer.acot=te.acot,nerdamer.cosh=te.cosh,nerdamer.sinh=te.sinh,nerdamer.tanh=te.tanh,nerdamer.acosh=te.acosh,nerdamer.asinh=te.asinh,nerdamer.atanh=te.atanh,nerdamer.sech=te.sech,nerdamer.csch=te.csch,nerdamer.coth=te.coth,nerdamer.asech=te.asech,nerdamer.acsch=te.acsch,nerdamer.acoth=te.acoth,nerdamer.log=ee.log,nerdamer.exp=ee.exp,nerdamer.sqrt=ee.sqrt,nerdamer.cbrt=ee.cbrt,nerdamer.nthroot=ee.nthroot,nerdamer.numeric=ee.numeric,nerdamer.abs=ee.abs,nerdamer.sign=ee.sign,nerdamer.min=ee.min,nerdamer.max=ee.max,nerdamer.round=ee.round,nerdamer.floor=ee.floor,nerdamer.ceil=ee.ceiling,nerdamer.trunc=ne.trunc,nerdamer.hypot=J.hypot,nerdamer.fact=ee.factorial,nerdamer.factorial=ee.factorial,nerdamer.dfact=ee.doubleFactorial,nerdamer.dfactorial=ee.doubleFactorial,nerdamer.fib=ee.fibonacci,nerdamer.mod=ee.mod,nerdamer.modInv=ee.modInv,nerdamer.isPrime=ie.isprime,nerdamer.imagpart=W.imagPart,nerdamer.realpart=W.realPart,nerdamer.polarform=W.polarForm,nerdamer.rectform=W.rectForm,nerdamer.arg=W.arg,nerdamer.conjugate=W.conjugate,nerdamer.csgn=W.csgn,nerdamer.gamma=ee.gamma,nerdamer.erf=ee.erf,nerdamer.erfc=ee.erfc,nerdamer.heaviside=ee.heaviside,nerdamer.delta=ee.dirac,nerdamer.Ci=ee.Ci,nerdamer.Chi=ee.Chi,nerdamer.Si=ee.Si,nerdamer.Shi=ee.Shi,nerdamer.Li=ee.Li,nerdamer.Ei=ee.Ei,nerdamer.sinc=ee.sinc,nerdamer.contains=ee.contains,nerdamer.subst=Q.subst,nerdamer.uSub=Q.uSub,nerdamer.uUnSub=Q.uUnSub,nerdamer.expand=K.expand,nerdamer.factor=u.factor,nerdamer.polyFactors=u.polyFactors,nerdamer.completeSquare=g.sqcomp,nerdamer.gcd=c.gcd,nerdamer.lcm=c.lcm,nerdamer.partfrac=p.partfrac,nerdamer.div=V.div,nerdamer.divide=V.divide,nerdamer.simplify=d.simplify,nerdamer.groebner=m.groebner,nerdamer.solve=se.solve,nerdamer.solveSystem=oe.solveSystem,nerdamer.solveeqs=oe.solveSystem,nerdamer.diff=h.diff,nerdamer.integrate=E.integrate,nerdamer.laplace=v.laplace,nerdamer.ilaplace=y.ilaplace,nerdamer.ilt=y.ilaplace,nerdamer.sum=ee.sum,nerdamer.product=ee.product,nerdamer.limit=P.limit,nerdamer.defint=ee.defint,nerdamer.S=x.S,nerdamer.C=x.C,nerdamer.matrix=ee.matrix,nerdamer.imatrix=D.imatrix,nerdamer.determinant=R.determinant,nerdamer.nullspace=R.nullspace,nerdamer.dot=$.dot,nerdamer.cross=$.cross,nerdamer.deg=V.deg,nerdamer.content=V.content,nerdamer.assume=w.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=T.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(!N.Expression.isExpression(this))throw new H.UnexpectedDataType(H.message("expressionExpected",{type:k.dataTypes[this.dataType]??this.dataType}));return i(this,...e)}})}}}([N.Expression,F.Matrix,Z.Vector,M.Collection,A.Dictionary,B.ValuesSet,T.Equation],e,t),nerdamer},nerdamer.updateAPI(),t.default=nerdamer},1458(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ratNorm=ratNorm,t.rat=rat,t.ratAdd=ratAdd,t.ratSub=ratSub,t.ratMul=ratMul,t.ratDiv=ratDiv,t.ratToInt=function ratToInt(e){return 1n===e.d?e.n:null},t.uniAddRat=uniAddRat,t.uniMulRat=uniMulRat,t.interpolateUnivariateRat=function interpolateUnivariateRat(e){if(0===e.length)return[rat(0n)];const t=new Map;for(const n of e){const e=t.get(n.x);if(e){if(0n!==ratSub(e,n.y).n)throw new Error("interpolateUnivariateRat: duplicate x with conflicting y")}else t.set(n.x,n.y)}const n=[...t.entries()].map(([e,t])=>({x:e,y:t})).sort((e,t)=>e.x<t.x?-1:e.x>t.x?1:0),i=n.length;if(1===i)return[n[0].y];let r=[rat(0n)];for(let e=0;e<i;e++){let t=[rat(1n)],s=rat(1n);for(let r=0;r<i;r++)r!==e&&(t=uniMulRat(t,[rat(-n[r].x),rat(1n)]),s=ratMul(s,rat(n[e].x-n[r].x)));const o=ratDiv(n[e].y,s);r=uniAddRat(r,t.map(e=>ratMul(e,o)))}for(;r.length>1&&0n===r[r.length-1].n;)r.pop();return r};const i=n(4988);function ratNorm(e){if(0n===e.d)throw new Error("Rat: division by zero");if(0n===e.n)return{n:0n,d:1n};let t=e.n,n=e.d;n<0n&&(t=-t,n=-n);const r=(0,i.gcd)(t,n);return{n:t/r,d:n/r}}function rat(e,t=1n){return ratNorm({n:e,d:t})}function ratAdd(e,t){return ratNorm({n:e.n*t.d+t.n*e.d,d:e.d*t.d})}function ratSub(e,t){return ratNorm({n:e.n*t.d-t.n*e.d,d:e.d*t.d})}function ratMul(e,t){return ratNorm({n:e.n*t.n,d:e.d*t.d})}function ratDiv(e,t){if(0n===t.n)throw new Error("Rat: divide by zero");return ratNorm({n:e.n*t.d,d:e.d*t.n})}function uniAddRat(e,t){const n=Math.max(e.length,t.length),i=new Array(n).fill(0).map(()=>rat(0n));for(let r=0;r<n;r++)i[r]=ratAdd(e[r]??rat(0n),t[r]??rat(0n));for(;i.length>1&&0n===i[i.length-1].n;)i.pop();return i}function uniMulRat(e,t){const n=new Array(e.length+t.length-1).fill(0).map(()=>rat(0n));for(let i=0;i<e.length;i++)for(let r=0;r<t.length;r++)n[i+r]=ratAdd(n[i+r],ratMul(e[i],t[r]));for(;n.length>1&&0n===n[n.length-1].n;)n.pop();return n}},1508(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.factorPoly=function factorPoly(e,t){if(e.isZero())return{content:0n,factors:[]};const[n,i]=makePrimitiveZ(e),r=factorMultivariate(i),s=new Map;for(const e of r){const n=e.text(t),i=s.get(n);i?i.multiplicity++:s.set(n,{poly:e,multiplicity:1})}return{content:n,factors:Array.from(s.values())}};const i=n(4988),r=n(5141),s=n(4737),o=n(9350),a=n(1458);function makePrimitiveZ(e){if(e.isZero())return[1n,e];const{content:t,primitive:n}=(0,o.mvNormalizePrimitiveSignLex)(e);return[0n===t?1n:t,n]}function filterUnitConstants(e){return e.filter(e=>!function isUnitConstant(e){return e.isConstant()&&(1n===e.constantTerm()||-1n===e.constantTerm())}(e))}function factorsReconstruct(e,t){const n=(0,o.mvNormalize)(function multiplyFactors(e){let t=s.MultiPoly.constant(1n);for(const n of e)t=(0,o.mulPoly)(t,n);return t}(t)),i=(0,o.mvNormalize)(e);return(0,o.equalPoly)(n,i)}function tryFactorLinearInVar(e,t){const n=new s.MultiPoly,i=new s.MultiPoly;for(const[r,o]of e.terms){const e=(0,s.keyToExp)(r),a=e.get(t)??0;if(a>1)return null;e.delete(t);const l=(0,s.expToKey)(e);1===a?n.terms.set(l,(n.terms.get(l)??0n)+o):i.terms.set(l,(i.terms.get(l)??0n)+o)}if(n.trim(),i.trim(),n.isZero())return null;if(i.isZero())return[s.MultiPoly.variable(t),n];const r=Array.from(n.variables()),a=Array.from(i.variables());if(0===r.filter(e=>a.includes(e)).length&&1===n.terms.size&&1===i.terms.size)return null;const l=factorMultivariate(n);for(const r of l){if(r.isConstant())continue;const a=(0,o.mvExactDiv)(i,r);if(null===a)continue;const l=(0,o.mvExactDiv)(n,r);if(null===l)continue;const u=(0,o.addPoly)((0,o.mulPoly)(l,s.MultiPoly.variable(t)),a);if((0,o.equalPoly)((0,o.mulPoly)(r,u),e))return[r,u]}const u=factorMultivariate(i);for(const r of u){if(r.isConstant())continue;const a=(0,o.mvExactDiv)(n,r);if(null===a)continue;const l=(0,o.mvExactDiv)(i,r);if(null===l)continue;const u=(0,o.addPoly)((0,o.mulPoly)(a,s.MultiPoly.variable(t)),l);if((0,o.equalPoly)((0,o.mulPoly)(r,u),e))return[r,u]}return null}function tryFactorBinomialInVar(e,t){const n=new Map;for(const[i,r]of e.terms){const e=(0,s.keyToExp)(i),o=e.get(t)??0;e.delete(t);const a=(0,s.expToKey)(e);let l=n.get(o);void 0===l&&(l=new s.MultiPoly,n.set(o,l)),l.terms.set(a,(l.terms.get(a)??0n)+r)}for(const[e,t]of n)t.trim(),t.isZero()&&n.delete(e);if(2!==n.size)return null;const i=Array.from(n.entries()).sort(([e],[t])=>e-t),[r,a]=i[0],[l,u]=i[1];if(l<2)return null;if(u.isZero()||a.isZero())return null;const buildVPower=e=>{if(0===e)return s.MultiPoly.constant(1n);const n=new Map;n.set(t,e);const i=new s.MultiPoly;return i.terms.set((0,s.expToKey)(n),1n),i},c=factorMultivariate(u);for(const t of c){if(t.isConstant())continue;const n=(0,o.mvExactDiv)(a,t);if(null===n)continue;const i=(0,o.mvExactDiv)(u,t);if(null===i)continue;const s=(0,o.addPoly)((0,o.mulPoly)(i,buildVPower(l)),(0,o.mulPoly)(n,buildVPower(r)));if((0,o.equalPoly)((0,o.mulPoly)(t,s),e))return[t,s]}const m=factorMultivariate(a);for(const t of m){if(t.isConstant())continue;const n=(0,o.mvExactDiv)(u,t);if(null===n)continue;const i=(0,o.mvExactDiv)(a,t);if(null===i)continue;const s=(0,o.addPoly)((0,o.mulPoly)(n,buildVPower(l)),(0,o.mulPoly)(i,buildVPower(r)));if((0,o.equalPoly)((0,o.mulPoly)(t,s),e))return[t,s]}return null}function tryFactorQuadraticInVar(e,t){const{A:n,B:i,C:r}=(0,o.quadraticCoeffsInVar)(e,t);if(n.isZero()||0===n.terms.size)return null;if(1===n.terms.size){const[[a,l]]=[...n.terms.entries()],u=(0,s.keyToExp)(a),c=[];for(const[e,t]of i.terms){if(0n===l)continue;if(t%l!==0n)continue;const n=(0,s.keyToExp)(e);let i=!0;for(const[e,t]of u)if((n.get(e)??0)<t){i=!1;break}if(!i)continue;const r=new Map(n);for(const[e,t]of u){const n=(r.get(e)??0)-t;0===n?r.delete(e):r.set(e,n)}const o=new s.MultiPoly;o.terms.set((0,s.expToKey)(r),-t/l),o.trim(),c.push(o)}if(0===c.length&&(i.isZero()||0===i.terms.size)&&1===r.terms.size){const[[e,t]]=[...r.terms.entries()];if(0n!==l&&-t%l===0n&&1n===-t/l){const t=(0,s.keyToExp)(e);let n=!0;for(const[e,i]of u)if((t.get(e)??0)<i){n=!1;break}if(n){const e=new Map(t);for(const[t,n]of u){const i=(e.get(t)??0)-n;0===i?e.delete(t):e.set(t,i)}let n=!0;for(const t of e.values())if(t%2!=0){n=!1;break}if(n){const t=new Map;for(const[n,i]of e)t.set(n,i/2);const n=new s.MultiPoly;n.terms.set((0,s.expToKey)(t),1n),n.trim(),c.push(n),c.push((0,o.scalePoly)(n,-1n))}}}}for(const a of c){const l=(0,o.mulPoly)(a,a),u=(0,o.mulPoly)(n,l),c=(0,o.mulPoly)(i,a);if(!(0,o.addPoly)((0,o.addPoly)(u,c),r).isZero())continue;const m=(0,o.addPoly)(i,(0,o.mulPoly)(n,a)),p=s.MultiPoly.variable(t),d=(0,o.subPoly)(p,a),g=(0,o.addPoly)((0,o.mulPoly)(n,p),m),h=(0,o.mulPoly)(d,g);if((0,o.subPoly)(h,e).isZero())return[d,g]}}const a=(0,o.mulPoly)(i,i),l=(0,o.mulPoly)(n,r),u=(0,o.mulPoly)(l,s.MultiPoly.constant(4n)),c=(0,o.subPoly)(a,u);c.isZero();const m=tryPolynomialSquareRoot(c);if(null!==m){const r=(0,o.negPoly)(i),a=(0,o.addPoly)(r,m),l=(0,o.subPoly)(r,m),u=(0,o.mulPoly)(n,s.MultiPoly.constant(2n)),c=(0,o.mvExactDiv)(a,u),p=(0,o.mvExactDiv)(l,u);for(const r of[c,p]){if(null===r)continue;const a=s.MultiPoly.variable(t),l=(0,o.subPoly)(a,r),u=(0,o.addPoly)(i,(0,o.mulPoly)(n,r)),c=(0,o.addPoly)((0,o.mulPoly)(n,a),u),m=(0,o.mulPoly)(l,c);if((0,o.subPoly)(m,e).isZero())return[l,c]}}{const a=decomposeMonomialFactors(factorMultivariate(n));if(a.length>=2){const n=a.length;for(let l=1;l<(1<<n)-1;l++){let u=s.MultiPoly.constant(1n),c=s.MultiPoly.constant(1n);for(let e=0;e<n;e++)l&1<<e?u=(0,o.mulPoly)(u,a[e]):c=(0,o.mulPoly)(c,a[e]);if(r.isZero()){const n=(0,o.mvExactDiv)(i,u);if(null!==n){const i=(0,o.mulPoly)(u,s.MultiPoly.variable(t)),r=(0,o.addPoly)((0,o.mulPoly)(c,s.MultiPoly.variable(t)),n),a=(0,o.mulPoly)(i,r);if((0,o.equalPoly)(a,e))return[i,r]}const r=(0,o.mvExactDiv)(i,c);if(null!==r){const n=(0,o.addPoly)((0,o.mulPoly)(u,s.MultiPoly.variable(t)),r),i=(0,o.mulPoly)(c,s.MultiPoly.variable(t)),a=(0,o.mulPoly)(n,i);if((0,o.equalPoly)(a,e))return[n,i]}continue}const m=decomposeMonomialFactors(factorMultivariate(r)),p=m.length;if(!(p>12)){for(let n=0;n<1<<p;n++){let r=s.MultiPoly.constant(1n),a=s.MultiPoly.constant(1n);for(let e=0;e<p;e++)n&1<<e?r=(0,o.mulPoly)(r,m[e]):a=(0,o.mulPoly)(a,m[e]);const l=(0,o.addPoly)((0,o.mulPoly)(u,a),(0,o.mulPoly)(c,r));if((0,o.equalPoly)(l,i)){const n=s.MultiPoly.variable(t),i=(0,o.addPoly)((0,o.mulPoly)(u,n),r),l=(0,o.addPoly)((0,o.mulPoly)(c,n),a),m=(0,o.mulPoly)(i,l);if((0,o.equalPoly)(m,e))return[i,l]}const d=(0,o.negPoly)(r),g=(0,o.negPoly)(a);for(const[n,l]of[[r,g],[d,a],[d,g]]){const r=(0,o.addPoly)((0,o.mulPoly)(u,l),(0,o.mulPoly)(c,n));if((0,o.equalPoly)(r,i)){const i=s.MultiPoly.variable(t),r=(0,o.addPoly)((0,o.mulPoly)(u,i),n),a=(0,o.addPoly)((0,o.mulPoly)(c,i),l),m=(0,o.mulPoly)(r,a);if((0,o.equalPoly)(m,e))return[r,a]}}}for(const n of[1n,-1n]){const a=s.MultiPoly.constant(n),l=1n===n?r:(0,o.negPoly)(r),m=(0,o.addPoly)((0,o.mulPoly)(u,l),(0,o.mulPoly)(c,a));if((0,o.equalPoly)(m,i)){const n=s.MultiPoly.variable(t),i=(0,o.addPoly)((0,o.mulPoly)(u,n),a),r=(0,o.addPoly)((0,o.mulPoly)(c,n),l),m=(0,o.mulPoly)(i,r);if((0,o.equalPoly)(m,e))return[i,r]}const p=1n===n?r:(0,o.negPoly)(r),d=s.MultiPoly.constant(n),g=(0,o.addPoly)((0,o.mulPoly)(u,d),(0,o.mulPoly)(c,p));if((0,o.equalPoly)(g,i)){const n=s.MultiPoly.variable(t),i=(0,o.addPoly)((0,o.mulPoly)(u,n),p),r=(0,o.addPoly)((0,o.mulPoly)(c,n),d),a=(0,o.mulPoly)(i,r);if((0,o.equalPoly)(a,e))return[i,r]}}}}}}return null}function decomposeMonomialFactors(e){const t=[];for(const n of e)if(1===n.terms.size){const e=n.terms.entries().next();if(e.done)continue;const[i,r]=e.value,o=(0,s.keyToExp)(i);1n!==r&&-1n!==r&&t.push(s.MultiPoly.constant(r));for(const[e,n]of o)for(let i=0;i<n;i++)t.push(s.MultiPoly.variable(e))}else t.push(n);return t}function tryPolynomialSquareRoot(e){if(e.isZero())return s.MultiPoly.zero();if(e.isConstant()){const t=e.constantTerm(),n=(0,i.intNthRootExact)(t,2);return null!==n?s.MultiPoly.constant(n):null}const t=[];for(const[n,i]of e.terms){const e=(0,s.keyToExp)(n);let r=0;for(const t of e.values())r+=t;t.push({key:n,exp:e,coeff:i,totalDeg:r})}t.sort((e,t)=>t.totalDeg-e.totalDeg);const n=t[0],r=(0,i.intNthRootExact)(n.coeff,2);if(null===r)return null;for(const[,e]of n.exp)if(e%2!=0)return null;const a=new Map;for(const[e,t]of n.exp)a.set(e,t/2);const l=new s.MultiPoly;l.terms.set((0,s.expToKey)(a),r);let u=(0,o.subPoly)(e,(0,o.mulPoly)(l,l));const c=2*t.length;for(let t=0;t<c&&!u.isZero();t++){let t=-1,n="",i=0n;for(const[e,r]of u.terms){const o=(0,s.keyToExp)(e);let a=0;for(const e of o.values())a+=e;a>t&&(t=a,n=e,i=r)}if(t<0)break;if(2n*r==0n)return null;if(i%(2n*r)!=0n)return null;const c=i/(2n*r),m=(0,s.keyToExp)(n),p=new Map;for(const[e,t]of m){const n=a.get(e)??0;if(t<n)return null;const i=t-n;i>0&&p.set(e,i)}l.terms.set((0,s.expToKey)(p),c),u=(0,o.subPoly)(e,(0,o.mulPoly)(l,l))}return u.isZero()?l:null}function tryRationalRootFactorization(e,t){const n=e.degree(t);if(n<=1)return[e];const r=new Array(n+1).fill(0n);for(const[n,i]of e.terms)r[(0,s.keyToExp)(n).get(t)??0]=i;const a=r[0],l=r[n];if(0n===a){const n=s.MultiPoly.variable(t),[i,r]=(0,o.pseudoDivide)(e,n,t);if(r.isZero())return[n,...tryRationalRootFactorization(i,t)]}const u=(0,i.getDivisors)(a<0n?-a:a),c=(0,i.getDivisors)(l<0n?-l:l);for(const i of u)for(const a of c)for(const l of[1n,-1n]){const u=l*i;let c=0n;const m=[1n];for(let e=1;e<=n;e++)m.push(m[e-1]*u);for(let e=0;e<=n;e++){const t=n-e;let i=1n;for(let e=0;e<t;e++)i*=a;c+=r[e]*m[e]*i}if(0n===c){const n=(0,o.addPoly)((0,o.mulPoly)(s.MultiPoly.constant(a),s.MultiPoly.variable(t)),s.MultiPoly.constant(-u)),[i,r]=(0,o.pseudoDivide)(e,n,t);if(r.isZero()){const[e,r]=makePrimitiveZ(i);return[n,...tryRationalRootFactorization(r,t)]}}}return[e]}function tryFactorMonomialGcdFast(e){const t=function monomialGCD(e){if(e.isZero()||0===e.terms.size)return s.MultiPoly.constant(1n);let t=null;const n=new Map;for(const[r,o]of e.terms){const e=o<0n?-o:o;t=null===t?e:(0,i.gcd)(t,e);const a=(0,s.keyToExp)(r),l=new Set([...n.keys(),...a.keys()]);for(const e of l){const t=a.get(e)??0,i=n.get(e);void 0===i?n.set(e,t):n.set(e,Math.min(i,t))}}if(null===t||0n===t)return s.MultiPoly.constant(1n);const r=new s.MultiPoly,o=new Map;for(const[e,t]of n)t>0&&o.set(e,t);return r.terms.set((0,s.expToKey)(o),t),r.trim(),r.isConstant()&&1n===t?s.MultiPoly.constant(1n):r}(e);if((0,o.isOnePoly)(t))return null;const n=(0,o.mvExactDivByMonomial)(e,t);return n?[t,...factorMultivariate(n)]:null}function buildLinearInTwoVars(e,t,n,i){const r=new s.MultiPoly;return 0n!==e&&r.terms.set((0,s.expToKey)(new Map([[n,1]])),e),0n!==t&&r.terms.set((0,s.expToKey)(new Map([[i,1]])),(r.terms.get((0,s.expToKey)(new Map([[i,1]])))??0n)+t),r.trim(),r}function tryFactorEvenQuarticInVar(e,t){let n=null;const i=new s.MultiPoly,r=new s.MultiPoly;for(const[o,a]of e.terms){const e=(0,s.keyToExp)(o),l=e.get(t)??0;if(1===l||3===l)return null;if(0!==l&&2!==l&&4!==l)return null;e.delete(t);const u=(0,s.expToKey)(e);4===l?(null===n&&(n=new s.MultiPoly),n.terms.set(u,(n.terms.get(u)??0n)+a)):2===l?i.terms.set(u,(i.terms.get(u)??0n)+a):r.terms.set(u,(r.terms.get(u)??0n)+a)}if(null===n)return null;if(n.trim(),i.trim(),r.trim(),!n.isConstant()||1n!==n.constantTerm())return null;const a=tryPolynomialSquareRoot(r);if(null===a)return null;const l=tryPolynomialSquareRoot((0,o.subPoly)((0,o.mulPoly)(a,s.MultiPoly.constant(2n)),i));if(null===l)return null;const u=s.MultiPoly.variable(t),c=(0,o.mulPoly)(u,u),m=(0,o.addPoly)((0,o.addPoly)(c,(0,o.mulPoly)(l,u)),a),p=(0,o.addPoly)((0,o.addPoly)(c,(0,o.mulPoly)((0,o.scalePoly)(l,-1n),u)),a);return(0,o.equalPoly)((0,o.mulPoly)(m,p),e)?[m,p]:null}function tryFactorBinomialPowerFast(e){const t=function tryBinomialPower(e){const t=e.terms.size;if(t<3)return null;const n=t-1;if(n<2)return null;const r=[];let a=-1;for(const[t,n]of e.terms){const e=(0,s.keyToExp)(t);for(const[t]of e)t>a&&(a=t);r.push({key:t,exp:e,coeff:n})}const l=Math.max(1,a+1);function expToDense(e){const t=new Array(l).fill(0);for(const[n,i]of e)t[n]=i;return t}const u=r.map(e=>({...e,dense:expToDense(e.exp)}));u.sort((e,t)=>function cmpExp(e,t){for(let n=0;n<e.length;n++)if(e[n]!==t[n])return e[n]-t[n];return 0}(e.dense,t.dense));const c=u[0],m=u[u.length-1];function divisibleByN(e){for(const t of e)if(t%n!==0)return!1;return!0}if(!divisibleByN(c.dense)||!divisibleByN(m.dense))return null;const p=c.dense.map(e=>e/n),d=m.dense.map(e=>e/n),g=d.map((e,t)=>e-p[t]),h=new Map;for(let e=0;e<=n;e++){const t=p.map((t,i)=>n*t+e*g[i]),i=new Map;for(let e=0;e<t.length;e++)0!==t[e]&&i.set(e,t[e]);h.set((0,s.expToKey)(i),0n)}for(const e of r){if(!h.has(e.key))return null;h.set(e.key,e.coeff)}for(const[,e]of h)if(0n===e)return null;const x=(0,i.intNthRootExact)(c.coeff,n),E=(0,i.intNthRootExact)(m.coeff,n);if(null===E||null===x)return null;function binom(e,t){let n=t;if(n<0||n>e)return 0n;n=Math.min(n,e-n);let i=1n,r=1n;for(let t=1;t<=n;t++)i*=BigInt(e-(n-t)),r*=BigInt(t);return i/r}for(let e=0;e<=n;e++){const t=(()=>{const t=p.map((t,i)=>n*t+e*g[i]),i=new Map;for(let e=0;e<t.length;e++)0!==t[e]&&i.set(e,t[e]);return(0,s.expToKey)(i)})();if(h.get(t)!==binom(n,e)*(0,i.powN)(E,e)*(0,i.powN)(x,n-e))return null}const y=s.MultiPoly.monomial(E,d),v=s.MultiPoly.monomial(x,p);return{base:(0,o.addPoly)(y,v),n}}(makePrimitiveZ(e)[1]);if(!t)return null;const{base:n,n:r}=t,a=factorMultivariate(n),l=[];for(let e=0;e<r;e++)l.push(...a);return l}function tryFactorSpecialBivariatePatternsFast(e){const t=(0,o.mvVariablesSorted)(e);if(2!==t.length)return null;const n=e.degree(t[0]),i=e.degree(t[1]);if(!(n>1&&i>1))return null;const a=function trySpecialBivariatePatterns(e,t,n){const i=e.degree(t),a=e.degree(n);if(i===a&&i>=1){const r=s.MultiPoly.monomial(1n,0===t?[i,0]:[0,i]),l=s.MultiPoly.monomial(1n,0===n?[a,0]:[0,a]),u=(0,o.subPoly)(r,l);if((0,o.equalPoly)(e,u)){const e=(0,o.subPoly)(s.MultiPoly.variable(t),s.MultiPoly.variable(n));let r=s.MultiPoly.zero();for(let e=0;e<i;e++){const n=s.MultiPoly.monomial(1n,0===t?[i-1-e,e]:[e,i-1-e]);r=(0,o.addPoly)(r,n)}return[e,r]}const c=(0,o.addPoly)(r,l);if((0,o.equalPoly)(e,c)&&i%2==1){const e=(0,o.addPoly)(s.MultiPoly.variable(t),s.MultiPoly.variable(n));let r=s.MultiPoly.zero();for(let e=0;e<i;e++){const n=e%2==0?1n:-1n,a=s.MultiPoly.monomial(n,0===t?[i-1-e,e]:[e,i-1-e]);r=(0,o.addPoly)(r,a)}return[e,r]}}if(2===i&&2===a){const i=e.getCoeff(0===t?[2,0]:[0,2]),r=e.getCoeff(0===n?[2,0]:[0,2]),a=e.getCoeff([1,1]);if(1n===i&&1n===r&&2n===a&&3===e.terms.size){const e=(0,o.addPoly)(s.MultiPoly.variable(t),s.MultiPoly.variable(n));return[e,e]}if(1n===i&&1n===r&&-2n===a&&3===e.terms.size){const e=(0,o.subPoly)(s.MultiPoly.variable(t),s.MultiPoly.variable(n));return[e,e]}}if(i===a&&i%2==0&&i>=4){const r=i/2,a=s.MultiPoly.monomial(1n,0===t?[2*r,0]:[0,2*r]),l=s.MultiPoly.monomial(1n,0===n?[2*r,0]:[0,2*r]),u=s.MultiPoly.monomial(1n,[r,r]),c=(0,o.addPoly)((0,o.addPoly)(a,u),l);if((0,o.equalPoly)(e,c))if(r%2==0){const i=r/2,a=s.MultiPoly.monomial(1n,0===t?[r,0]:[0,r]),l=s.MultiPoly.monomial(1n,0===n?[r,0]:[0,r]),u=s.MultiPoly.monomial(1n,[i,i]),c=(0,o.addPoly)((0,o.addPoly)(a,u),l),m=(0,o.subPoly)((0,o.addPoly)(a,l),u),p=(0,o.mulPoly)(c,m);if((0,o.equalPoly)(p,e))return[c,m]}else{let n=s.MultiPoly.zero(),i=s.MultiPoly.zero();for(let e=0;e<=r;e++){const a=s.MultiPoly.monomial(1n,0===t?[r-e,e]:[e,r-e]);n=(0,o.addPoly)(n,a);const l=e%2==0?1n:-1n;i=(0,o.addPoly)(i,(0,o.scalePoly)(a,l))}const a=(0,o.mulPoly)(n,i);if((0,o.equalPoly)(a,e))return[n,i]}const m=(0,o.subPoly)((0,o.addPoly)(a,l),u);(0,o.equalPoly)(e,m)}{let i=0n;for(const[t,r]of e.terms)i+=r*(((0,s.keyToExp)(t).get(n)??0)%2==0?1n:-1n);if(0n===i&&e.terms.size>1){const i=(0,o.addPoly)(s.MultiPoly.variable(t),s.MultiPoly.variable(n)),r=(0,o.mvExactDiv)(e,i);if(null!==r&&!r.isConstant())return[i,r]}let r=0n;for(const t of e.terms.values())r+=t;if(0n===r&&e.terms.size>1){const i=(0,o.subPoly)(s.MultiPoly.variable(t),s.MultiPoly.variable(n)),r=(0,o.mvExactDiv)(e,i);if(null!==r&&!r.isConstant())return[i,r]}}{let r=!0;for(const i of e.terms.keys()){const e=(0,s.keyToExp)(i),o=e.get(t)??0,a=e.get(n)??0;if(o%2!=0||a%2!=0){r=!1;break}}if(r&&i>=2&&a>=2){const i=s.MultiPoly.monomial(1n,0===t?[2,0]:[0,2]),r=s.MultiPoly.monomial(1n,0===n?[2,0]:[0,2]),a=(0,o.addPoly)(i,r),l=(0,o.mvExactDiv)(e,a);if(null!==l&&!l.isConstant())return[a,l];const u=(0,o.subPoly)(i,r),c=(0,o.mvExactDiv)(e,u);if(null!==c&&!c.isConstant())return[u,c]}}{const a=i;let l=!0;for(const[i]of e.terms){const e=(0,s.keyToExp)(i);if((e.get(t)??0)+(e.get(n)??0)!==a){l=!1;break}}if(l&&a>=4){const n=new Array(a+1).fill(0n);for(const[i,r]of e.terms){const e=(0,s.keyToExp)(i).get(t)??0;n[e]=(n[e]??0n)+r}const i=(0,r.factorPolynomialBig)(n);if(i.factors&&i.factors.length>=2){const n=[];for(const e of i.factors){const i=e.coefficients,r=i.length-1;let a=s.MultiPoly.zero();for(let e=0;e<=r;e++){const n=i[e]??0n;if(0n!==n){const i=s.MultiPoly.monomial(n,0===t?[e,r-e]:[r-e,e]);a=(0,o.addPoly)(a,i)}}for(let t=0;t<(e.multiplicity??1);t++)n.push(a)}if(1n!==i.content&&0n!==i.content&&(-1n===i.content&&n.length>0?n[0]=(0,o.scalePoly)(n[0],-1n):-1n!==i.content&&n.unshift(s.MultiPoly.constant(i.content))),n.length>=2){let t=n[0];for(let e=1;e<n.length;e++)t=(0,o.mulPoly)(t,n[e]);if((0,o.equalPoly)(t,e))return n}}}}return null}(e,t[0],t[1]);if(!a||a.length<2)return null;const l=[];for(const e of a)l.push(...factorMultivariate(e));return l}function factorMultivariate(e){if(e.isZero())return[];if(e.isConstant()){const t=e.constantTerm();return 1n===t||-1n===t?[]:[e]}const t=tryFactorMonomialGcdFast(e)??function tryFactorPerfectSquareFast(e){if(e.isZero()||e.isConstant())return null;const t=tryPolynomialSquareRoot(e);if(null===t)return null;if(!(0,o.equalPoly)((0,o.mulPoly)(t,t),e))return null;const n=factorMultivariate(t);return[...n,...n]}(e)??function tryFactorPolynomialInMonomialFast(e){if((0,o.mvVariablesSorted)(e).length<2)return null;let t=null;for(const n of e.terms.keys()){const e=(0,s.keyToExp)(n);if(0!==e.size)if(null!==t)for(const[n,i]of t){const r=e.get(n)??0;0!==r?t.set(n,Math.min(i,r)):t.delete(n)}else t=new Map(e)}if(!t||t.size<2)return null;for(const e of t.values())if(e<=0)return null;let n=0;const i=[];for(const[r,o]of e.terms){const e=(0,s.keyToExp)(r);if(0===e.size){i[0]=(i[0]??0n)+o;continue}let a=null;for(const[n,i]of t){const t=e.get(n)??0;if(t%i!==0)return null;const r=t/i;if(null===a)a=r;else if(a!==r)return null}for(const[n,i]of e)if(void 0===t.get(n)&&0!==i)return null;if(null===a)return null;n=Math.max(n,a),i[a]=(i[a]??0n)+o}if(n<2)return null;const a=(0,r.factorPolynomialBig)(i);if(0===(a.factors?.length??0))return null;const l=new s.MultiPoly;function powMV(e,t){let n=s.MultiPoly.constant(1n),i=e,r=t;for(;r>0;)1&r&&(n=(0,o.mulPoly)(n,i)),r>>=1,r&&(i=(0,o.mulPoly)(i,i));return n}function fromTPolyToMV(e){let t=s.MultiPoly.zero();for(let n=0;n<e.length;n++){const i=e[n]??0n;if(0n===i)continue;const r=(0,o.mulPoly)(s.MultiPoly.constant(i),powMV(l,n));t=(0,o.addPoly)(t,r)}return t.trim(),t}l.terms.set((0,s.expToKey)(t),1n),l.trim();const u=[];1n!==a.content&&-1n!==a.content?u.push(s.MultiPoly.constant(a.content)):-1n===a.content&&u.push(s.MultiPoly.constant(-1n));for(const e of a.factors)for(let t=0;t<(e.multiplicity??1);t++)u.push(fromTPolyToMV(e.coefficients));return u.length>=2?u:null}(e)??tryFactorBinomialPowerFast(e)??function tryFactorHomogeneousQuadratic2VarsFast(e){const t=(0,o.mvVariablesSorted)(e);if(2!==t.length)return null;const[n,r]=t;let a=0n,l=0n,u=0n;for(const[t,i]of e.terms){const e=(0,s.keyToExp)(t),o=e.get(n)??0,c=e.get(r)??0;if(e.delete(n),e.delete(r),0!==e.size)return null;if(o+c!==2)return null;if(2===o&&0===c)a+=i;else if(1===o&&1===c)l+=i;else{if(0!==o||2!==c)return null;u+=i}}if(0n===a||0n===u)return null;const c=(0,i.getDivisors)((0,i.abs)(a)),m=(0,i.getDivisors)((0,i.abs)(u));function withSigns(e){return 0n===e||0n===e?[0n]:[e,-e]}for(const t of c)for(const i of withSigns(t)){if(0n===i)continue;if(a%i!==0n)continue;const t=a/i;for(const s of m)for(const a of withSigns(s)){if(0n===a)continue;if(u%a!==0n)continue;const s=u/a;if(i*s+a*t!==l)continue;const c=buildLinearInTwoVars(i,a,n,r),m=buildLinearInTwoVars(t,s,n,r);if(!c.isConstant()&&!m.isConstant()&&(0,o.equalPoly)((0,o.mulPoly)(c,m),e))return[c,m]}}return null}(e)??tryFactorSpecialBivariatePatternsFast(e)??function tryFactorSmallDegreeInVarFast(e){const t=(0,o.mvVariablesSorted)(e);for(const n of t){const t=(0,o.mvContentInVar)(e,n);if(!t.isConstant()||1n!==t.constantTerm()){const i=(0,o.primitivePart)(e,n);if(!(0,o.equalPoly)(i,e)&&!i.isConstant()&&factorsReconstruct(e,[t,i])){const e=factorMultivariate(t),n=factorMultivariate(i);if(e.length+n.length>=2)return[...e,...n]}}}for(const n of t)if(1===e.degree(n)){const t=tryFactorLinearInVar(e,n);if(t){const e=[];for(const n of t)e.push(...factorMultivariate(n));return e}}for(const n of t){const t=tryFactorBinomialInVar(e,n);if(t){const e=[];for(const n of t)e.push(...factorMultivariate(n));return e}}for(const n of t)if(2===e.degree(n)){const t=tryFactorQuadraticInVar(e,n);if(t){const e=[];for(const n of t)e.push(...factorMultivariate(n));return e}}for(const n of t)if(4===e.degree(n)){const t=tryFactorEvenQuarticInVar(e,n);if(t){const e=[];for(const n of t)e.push(...factorMultivariate(n));return e}}return null}(e)??function tryFactorEEZWangMonicLinearFast(e){function varsPresent(e){return(0,o.mvVariablesSorted)(e)}function isMonicLinearInVar(e,t){if(1!==e.degree(t))return{ok:!1};let n=null;const i=new s.MultiPoly;for(const[r,o]of e.terms){const e=(0,s.keyToExp)(r),a=e.get(t)??0;if(0===a){i.terms.set(r,o);continue}if(1!==a)return{ok:!1};e.delete(t);const l=(0,s.expToKey)(e);null===n&&(n=new s.MultiPoly),n.terms.set(l,(n.terms.get(l)??0n)+o)}return null===n?{ok:!1}:(n.trim(),i.trim(),n.isConstant()&&1n===n.constantTerm()?{ok:!0,rest:i}:{ok:!1})}const ratZ=e=>(0,a.rat)(e),toInt=e=>(0,a.ratToInt)(e);function solveDeg2(e,t){const[n,i,r]=e,[s,o,l]=t,u=[[ratZ(1n),ratZ(n),ratZ(n*n),ratZ(s)],[ratZ(1n),ratZ(i),ratZ(i*i),ratZ(o)],[ratZ(1n),ratZ(r),ratZ(r*r),ratZ(l)]];for(let e=0;e<3;e++){let t=e;for(let n=e;n<3;n++)if(0n!==u[n][e].n){t=n;break}if(0n===u[t][e].n)return null;if(t!==e){const n=u[e];u[e]=u[t],u[t]=n}const n=u[e][e];for(let t=e;t<4;t++)u[e][t]=(0,a.ratDiv)(u[e][t],n);for(let t=0;t<3;t++){if(t===e)continue;const n=u[t][e];if(0n!==n.n)for(let i=e;i<4;i++)u[t][i]=(0,a.ratSub)(u[t][i],(0,a.ratMul)(n,u[e][i]))}}const c=toInt(u[0][3]),m=toInt(u[1][3]),p=toInt(u[2][3]);return null===c||null===m||null===p?null:[c,m,p]}const t=varsPresent(e);if(t.length>=2){const n=function tryEEZMonicLinearFactorInY(e,t,n){const i=varsPresent(e);if(!i.includes(t)||!i.includes(n))return null;const r=i.filter(e=>e!==t&&e!==n);if(0===r.length)return null;const a=e.degree(n);if(a<1||a>3)return null;const l=r[0],u=r.slice(1),c=[1n,2n,3n],m=new Map;for(let e=0;e<u.length;e++)m.set(u[e],BigInt(e+1));const p=new Map;for(let i=0;i<c.length;i++){let r=e;for(const[e,t]of m)r=(0,o.substituteVarIndex)(r,e,t);r=(0,o.substituteVarIndex)(r,l,c[i]);const a=filterUnitConstants(factorMultivariate(r));let u=null;for(const e of a){const t=isMonicLinearInVar(e,n);if(t.ok&&t.rest){u=t.rest;break}}if(null===u)return null;for(const[e,r]of u.terms){const o=(0,s.keyToExp)(e);if(0!==(o.get(n)??0))return null;const a=o.get(t)??0;let l=p.get(a);l||(l=Array(c.length).fill(0n),p.set(a,l)),l[i]=r}}const d=new s.MultiPoly;for(const[e,n]of p){const i=solveDeg2(c,n);if(null===i)return null;const[r,o,a]=i,addTerm=(n,i)=>{if(0n===i)return;const r=new Map;0!==e&&r.set(t,e),0!==n&&r.set(l,n);const o=(0,s.expToKey)(r);d.terms.set(o,(d.terms.get(o)??0n)+i)};addTerm(0,r),addTerm(1,o),addTerm(2,a)}d.trim();const g=new s.MultiPoly;g.terms.set((0,s.expToKey)(new Map([[n,1]])),1n);for(const[e,t]of d.terms)g.terms.set(e,(g.terms.get(e)??0n)+t);return g.trim(),(0,o.mvExactDiv)(e,g)?g:null}(e,t[0],t[1]);if(null!==n){const t=(0,o.mvExactDiv)(e,n);if(t)return[n,...factorMultivariate(t)]}}return null}(e);if(t)return t;const n=(0,o.scalePoly)(e,1n),c=Array.from(n.variables()).sort();if(1===c.length)return function factorUnivariateMultiPoly(e,t){function unpackFactorResult(e){const n=[];let i=BigInt(e.content);const r=[];for(const n of e.factors)for(let e=0;e<(n.multiplicity??1);e++)r.push((0,o.fromUnivariate)(n.coefficients,t));return-1n===i&&r.length>0&&(r[0]=(0,o.scalePoly)(r[0],-1n),i=1n),1n!==i&&n.push(s.MultiPoly.constant(i)),n.push(...r),n}function nonConstFactorCount(e){let t=0;for(const n of e.factors)(n.coefficients?.length??0)-1>0&&(t+=n.multiplicity??1);return t}const n=(0,o.toUnivariate)(e,t);if(n){const i=(0,r.factorPolynomial)(n);if(nonConstFactorCount(i)>1){const n=unpackFactorResult(i),r=tryRationalRootFactorization(e,t);if(r.length>1){const e=refineRationalRootFactors(r,t);if(e.length>n.length)return e}return n}}const i=tryRationalRootFactorization(e,t);return i.length>1?refineRationalRootFactors(i,t):[e]}(n,c[0]);const m=c[0],p=c.length>1?c[1]:c[0],d=n.leadingCoeff(m),g=function evalBudgetForMV(e,t){const n=Math.max(0,e.degree(t));let r=0n;for(const t of e.terms.values()){const e=t<0n?-t:t;e>r&&(r=e)}const s=(0,i.bigintBitLength)(r);let o=20+Math.ceil(n/2)+Math.ceil(s/128),a=10+Math.ceil(n/3)+Math.ceil(s/256);return o<20&&(o=20),o>200&&(o=200),a<10&&(a=10),a>80&&(a=80),{maxAttempts:o,maxSetsMultiplier:a}}(n,p),h=void 0,x=function findGenericEvalPoint(e){const{workingPoly:t,mainVar:n,evalVar:i,lcMultivariate:s,maxAttempts:a}=e,l=e.stats;l&&(l.stage="find-generic-eval-point",l.maxAttempts=a,l.attemptsUsed=0);for(let e=0;e<a;e++){l&&(l.attemptsUsed=e+1);const a=0===e?0n:e%2==1?BigInt(Math.floor(e/2)+1):-BigInt(e/2);if((0,o.substituteVarIndex)(s,i,a).isZero())continue;const u=(0,o.substituteVarIndex)(t,i,a),c=(0,o.toUnivariate)(u,n);if(c&&uniSplitSquarefree((0,r.factorPolynomial)(c)).ok)return a}return null}({workingPoly:n,mainVar:m,evalVar:p,lcMultivariate:d,maxAttempts:g.maxAttempts,stats:h});if(null===x)return[n];const fingerprint=e=>function fingerprintUnivariateInVar(e,t){const n=(0,o.mvNormalizeSignUnivariateInVar)(e,t),r=n.degree(t),s=u.map(e=>function evalUnivariateMod(e,t,n,r){let s=0n,o=1n;const a=e.degree(r);for(let r=0;r<=a;r++){const a=e.getCoeff([r]);s=(0,i.modNorm)(s+(0,i.modNorm)(a,n)*o,n),o=(0,i.modNorm)(o*t,n)}return s}(n,e,l,t).toString());return`${r}|${s.join(",")}`}(e,m),E=function collectStableFactorSetsMajority(e){const{workingPoly:t,mainVar:n,evalVar:i,evalPoint:s,lcMultivariate:a,maxSetsMultiplier:l,fingerprint:u}=e,c=e.stats;c&&(c.stage="collect-stable-factor-sets",c.pointsTried=0,c.factorSetsFound=0);const m=t.degree(i),p=m+1;c&&(c.numPointsNeeded=p);const d=[],g=[];g.push(s),g.push(0n);for(let e=1;e<p*l;e++)g.push(BigInt(e)),g.push(-BigInt(e));const h=new Set,x=[];for(const e of g){const t=e.toString();h.has(t)||(h.add(t),x.push(e))}const E=Math.max(p*l,20);c&&(c.maxSets=E);for(const e of x){if(c&&(c.pointsTried=(c.pointsTried??0)+1),d.length>=E)break;if((0,o.substituteVarIndex)(a,i,e).isZero())continue;const s=(0,o.substituteVarIndex)(t,i,e),l=(0,o.toUnivariate)(s,n);if(!l)continue;const u=(0,r.factorPolynomial)(l);if(!uniSplitSquarefree(u).ok)continue;if(0===u.factors.length)continue;const m=[],p=[];for(const e of u.factors)if(!((e.coefficients?.length??0)-1<=0))for(let t=0;t<e.multiplicity;t++){const t=(0,o.fromUnivariate)(e.coefficients,n);m.push(t),p.push(t.degree(n))}if(m.length<2)continue;const g=m.map(e=>(0,o.mvNormalizeSignUnivariateInVar)(e,n)),h=g.map(e=>e.degree(n));d.push({point:e,factors:g,degrees:h}),c&&(c.factorSetsFound=d.length)}if(0===d.length)return null;const sigKey=e=>[...e.degrees].sort((e,t)=>e-t).join(","),y=new Map;for(const e of d){let t=0;for(const n of e.degrees)n>0&&t++;const n=sigKey(e),i=y.get(n)??{count:0,bestNonConst:-1,bestSet:null};i.count+=1,t>i.bestNonConst&&(i.bestNonConst=t,i.bestSet=e),y.set(n,i)}let v=null,P=-1,w=-1,b=null;for(const[e,t]of y.entries())t.bestNonConst<=1||(t.count>P||t.count===P&&t.bestNonConst>w)&&(v=e,P=t.count,w=t.bestNonConst,b=t.bestSet);if(!v||!b)return null;const M=d.filter(e=>sigKey(e)===v);if(c&&(c.numPointsNeeded=p,c.maxSets=E,c.stableSetsFound=M.length),M.length<p)return null;const A=b.factors.length,T=b.factors.map(e=>u(e));return{numPointsNeeded:p,numFactors:A,referenceSet:b,referenceFingerprints:T,stableSets:M}}({workingPoly:n,mainVar:m,evalVar:p,evalPoint:x,lcMultivariate:d,maxSetsMultiplier:g.maxSetsMultiplier,fingerprint,stats:h});if(!E)return[n];const y=function alignFactorsAcrossPoints(e){const{stableSets:t,referenceSet:n,referenceFingerprints:i,numFactors:r,fingerprint:o}=e,a=Array.from({length:r},()=>[]);for(const e of t){const t=new Array(e.factors.length).fill(!1);for(let l=0;l<r;l++){const r=n.degrees[l],u=i[l];let c=-1;for(let n=0;n<e.factors.length;n++)if(!t[n]&&e.degrees[n]===r&&o(e.factors[n])===u){c=n;break}if(-1===c)for(let n=0;n<e.factors.length;n++)if(!t[n]&&e.degrees[n]===r){c=n;break}-1===c?a[l].push(s.MultiPoly.constant(1n)):(t[c]=!0,a[l].push(e.factors[c]))}}return a}({stableSets:E.stableSets.slice(0,E.numPointsNeeded),referenceSet:E.referenceSet,referenceFingerprints:E.referenceFingerprints,numFactors:E.numFactors,fingerprint}),v=function interpolateCandidateFactors(e){const{alignedFactors:t,stableSets:n,mainVar:i}=e,r=[],o=t.length;for(let e=0;e<o;e++){const o=t[e],a=[];for(let e=0;e<Math.min(o.length,n.length);e++)a.push({y:n[e].point,poly:o[e]});let l=0;for(const{poly:e}of a){const t=e.degree(i);t>l&&(l=t)}const u=new s.MultiPoly;for(let e=0;e<=l;e++){const t=[];for(const{y:n,poly:i}of a)t.push({y:Number(n),value:i.getCoeff([e])});const n=lagrangeInterpolation(t);for(const[t,i]of n.entries())0n!==i&&u.setCoeff([e,t],i)}u.isZero()||u.isConstant()||r.push(u)}return r}({alignedFactors:y,stableSets:E.stableSets,mainVar:m,evalVar:p});if(0===v.length)return[n];const P=function divideOutCandidates(e,t){const n=[];let i=e.clone();for(const e of t){const t=(0,o.mvExactDiv)(i,e);if(t&&(n.push(e),i=t,i.isConstant()||i.isZero()))break}return i.isConstant()||i.isZero()||n.push(i),n}(n,v);return P.length>0?P:[n]}function refineRationalRootFactors(e,t){const n=[];for(const i of e){if(i.degree(t)>=2){const e=(0,o.toUnivariate)(i,t);if(e){const i=(0,r.factorPolynomial)(e);if(i.factors.length>1||1===i.factors.length&&(i.factors[0].multiplicity??1)>1){let e=BigInt(i.content);for(const e of i.factors)for(let i=0;i<(e.multiplicity??1);i++)n.push((0,o.fromUnivariate)(e.coefficients,t));-1n===e&&n.length>0&&(n[n.length-1]=(0,o.scalePoly)(n[n.length-1],-1n),e=1n),1n!==e&&0n!==e&&n.push(s.MultiPoly.constant(e));continue}}}n.push(i)}return n}function uniSplitSquarefree(e){if(!e||!e.factors)return{ok:!1,nonConst:0};let t=0;for(const n of e.factors)if(!((n.coefficients?.length??0)-1<=0)&&(t+=1,1!==(n.multiplicity??1)))return{ok:!1,nonConst:t};return{ok:t>=2,nonConst:t}}const l=1000003n,u=[2n,3n,5n];function lagrangeInterpolation(e){const t=e.length;if(0===t)return new Map;if(1===t){const t=new Map;return t.set(0,e[0].value),t}let n=1n;for(let i=0;i<t;i++)for(let r=0;r<t;r++)i!==r&&(n*=BigInt(Math.abs(e[i].y-e[r].y)));const r=new Map;for(let i=0;i<t;i++){let s=new Map([[0,1n]]);for(let n=0;n<t;n++){if(i===n)continue;const t=BigInt(e[n].y),r=new Map;for(const[e,n]of s.entries())r.set(e+1,(r.get(e+1)||0n)+n),r.set(e,(r.get(e)||0n)-n*t);s=r}let o=1n;for(let n=0;n<t;n++)i!==n&&(o*=BigInt(e[i].y-e[n].y));const a=e[i].value*(n/o);for(const[e,t]of s.entries())r.set(e,(r.get(e)||0n)+t*a)}let s=0n;for(const e of r.values())s=(0,i.gcd)(s,e);s=(0,i.gcd)(s,n);const o=new Map;for(const[e,t]of r.entries()){const n=t/s;0n!==n&&o.set(e,n)}return o}},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;(s&&r.isNearlyZero()||!s)&&(this.add(e),i=this.has(e))}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(`Index ${t} out of bounds for ${this.dataType} of length ${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}append(e){this.exclude(e.getExcluded()),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}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(){return this.copy().each(e=>e.evaluate())}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},1649(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!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=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());return t.isFunction(s.ACOS)&&t.getArguments()[0].eq(e.invert())?i.Expression.toFunction(s.ASEC,[e]):t},t.acsc=function acsc(e){if((e=i.Expression.create(e)).isPosInf()||e.isNegInf())return(0,r.zero)();const t=asin(e.invert());return t.isFunction(s.ASIN)&&t.getArguments()[0].eq(e.invert())?i.Expression.toFunction(s.ACSC,[e]):t},t.acot=function acot(e){let t;return(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))),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));return t.hasFunction(s.COSH)&&(t=i.Expression.toFunction(s.SECH,[e])),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));return t.hasFunction(s.SINH)&&(t=i.Expression.toFunction(s.CSCH,[e])),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));return t.hasFunction(s.TANH)&&(t=i.Expression.toFunction(s.COTH,[e])),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))}return t||(t=i.Expression.toFunction(s.ASECH,[e])),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))}return t||(t=i.Expression.toFunction(s.ACSCH,[e])),t},t.acoth=function acoth(e){if((e=i.Expression.create(e)).isPosInf()||e.isNegInf())return(0,r.zero)();let t;return 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])),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 d=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(),d=p.div(o.Rational.PI);if(d.isInteger())t=i.Expression.Number((0,l.isEven)(d.numerator)?"1":"-1");else{switch(d.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!==d.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,"TRIG_FUNCTION_NAMES",{enumerable:!0,get:function(){return d.TRIG_FUNCTION_NAMES}}),Object.defineProperty(t,"COS",{enumerable:!0,get:function(){return d.COS}}),Object.defineProperty(t,"SIN",{enumerable:!0,get:function(){return d.SIN}}),Object.defineProperty(t,"TAN",{enumerable:!0,get:function(){return d.TAN}}),Object.defineProperty(t,"ASIN",{enumerable:!0,get:function(){return d.ASIN}}),Object.defineProperty(t,"ACOS",{enumerable:!0,get:function(){return d.ACOS}}),Object.defineProperty(t,"SEC",{enumerable:!0,get:function(){return d.SEC}}),Object.defineProperty(t,"CSC",{enumerable:!0,get:function(){return d.CSC}}),Object.defineProperty(t,"COT",{enumerable:!0,get:function(){return d.COT}}),Object.defineProperty(t,"ATAN",{enumerable:!0,get:function(){return d.ATAN}}),Object.defineProperty(t,"ASEC",{enumerable:!0,get:function(){return d.ASEC}}),Object.defineProperty(t,"ACSC",{enumerable:!0,get:function(){return d.ACSC}}),Object.defineProperty(t,"ACOT",{enumerable:!0,get:function(){return d.ACOT}}),Object.defineProperty(t,"ATAN2",{enumerable:!0,get:function(){return d.ATAN2}}),Object.defineProperty(t,"SINH",{enumerable:!0,get:function(){return d.SINH}}),Object.defineProperty(t,"COSH",{enumerable:!0,get:function(){return d.COSH}}),Object.defineProperty(t,"TANH",{enumerable:!0,get:function(){return d.TANH}}),Object.defineProperty(t,"SECH",{enumerable:!0,get:function(){return d.SECH}}),Object.defineProperty(t,"CSCH",{enumerable:!0,get:function(){return d.CSCH}}),Object.defineProperty(t,"COTH",{enumerable:!0,get:function(){return d.COTH}}),Object.defineProperty(t,"ACOSH",{enumerable:!0,get:function(){return d.ACOSH}}),Object.defineProperty(t,"ASINH",{enumerable:!0,get:function(){return d.ASINH}}),Object.defineProperty(t,"ATANH",{enumerable:!0,get:function(){return d.ATANH}}),Object.defineProperty(t,"ASECH",{enumerable:!0,get:function(){return d.ASECH}}),Object.defineProperty(t,"ACSCH",{enumerable:!0,get:function(){return d.ACSCH}}),Object.defineProperty(t,"ACOTH",{enumerable:!0,get:function(){return d.ACOTH}}),Object.defineProperty(t,"TRIG",{enumerable:!0,get:function(){return d.TRIG}}),Object.defineProperty(t,"INVERSE_TRIG",{enumerable:!0,get:function(){return d.INVERSE_TRIG}}),Object.defineProperty(t,"HYPERBOLIC_TRIG",{enumerable:!0,get:function(){return d.HYPERBOLIC_TRIG}}),Object.defineProperty(t,"INVERSE_HYPERBOLIC_TRIG",{enumerable:!0,get:function(){return d.INVERSE_HYPERBOLIC_TRIG}})},1668(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),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:d.dataTypes[e.dataType]}));if(!p.Vector.isVector(t))throw new r.UnexpectedDataType((0,r.message)("vectorExpected",{type:d.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:d.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:d.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))?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:d.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),d=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}},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})}}},1897(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.product=function product(...e){let t=(0,a.one)();for(const n of e)t=t.times(n);return t},t.sum=function sum(...e){let t=(0,a.zero)();for(const n of e)t=t.plus(n);return t},t.stripPower=stripPower,t.copyOver=function copyOver(e,t,n){if(n={omitMultiplier:!1,omitPower:!1,...n},e.multiplier&&!n.omitMultiplier&&(t.multiplier=s.Rational.makeCopy(e.multiplier)),void 0!==e.name&&(t.name=e.name),e.power&&!n.omitPower&&(t.power=o.Expression.create(e.power,void 0,!0)),e.args){t.args=[];for(const n of e.args)t.args.push(o.Expression.create(n,void 0,!0))}if(e.base&&(t.base=e.base.copy()),e.elements){t.elements={};for(const n in e.elements)t.elements[n]=o.Expression.create(e.elements[n],void 0,!0)}return t.type=e.type,t.value=e.value,t.precision=e.precision,t.deferred=e.deferred,t},t.toArrays=function toArrays(e,t){const n=t||{num:[],den:[]};function addMultiplier(e){n.num.push(o.Expression.Number(e.numerator)),1n!==e.denominator&&n.den.push(o.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(5584),o=n(296),a=n(6099);function stripPower(e){const t=e.copy();return delete t.power,t}},1997(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),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:d,a8:g,_a9:h}=e.references;if(!(n.isOne()&&i.eq(2)&&s.isOne()&&o.isOne()&&a.eq(2)&&l.eq(2)))return;if(!c.eq(d)||!m.eq(g))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),P=t.tableOfInverseTransforms.lookup(new r.Pattern(y,[x]),0);return v&&P?e.fromPattern("(a1*a2)/a6").times(v).plus(e.fromPattern("a1*(a5-(a2*a9)/a6)").times(P)):void 0}};t.tableOfInverseTransforms=new i.LookupTable,t.tableOfInverseTransforms.addEntries(s)},2012(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),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(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=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])}},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),d=n(6099),g=n(8300),h=n(5584),x=n(5640),E=n(9565);class Polynomial{static defaultOrdering="lex";dataType=g.POLYNOMIAL;expression;isMultivariate;ordering="none";terms;variables;constructor(e,t,n){if(Polynomial.isPolynomial(e))this.expression=new p.Expression(e.expression),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,r=p.Expression.create(e);if(!p.Expression.isExpression(r))throw new l.UnsupportedOperationError((0,l.message)("unsupportedType",{type:typeof r}));if(!r.isPolynomialLike())throw new l.PolynomialError((0,l.message)("notAPolynomial"));(r.value.includes("(")||r.isSum()&&r.getPower().gt("1"))&&(r=(0,u.expand)(r)),this.expression=r,t?i=t:(i=r.variables(),(0,c.isSorted)(i)||i.sort()),this.variables=i,this.isMultivariate=this.variables.length>1,this.terms=[],r.coeffs(...this.variables).each((e,t)=>{this.terms.push(new x.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,d.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 x.Term(new p.Expression(r),n,t))}}i.order(),i.updateExpression()}return i}static fromArrayCanonicalized(e,t){let n=(0,d.one)();for(const e of t)n=n.times(p.Expression.Variable(e));let i=(0,d.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,g.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 x.Term("1",r,t)}updateExpression(){let e=(0,d.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,d.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,E.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,d.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,d.zero)(),t,this.ordering),r.terms=[];for(const e of i.values())e.coefficient.isZero()||r.terms.push(new x.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 x.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){return new Polynomial(this.getExpression().pow(e),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(x.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 t=new Polynomial(this.getExpression().times(e.getExpression()),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,d.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},2178(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),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)}}},2212(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.tryIntegrationByParts=function tryIntegrationByParts(e,t,n,s=0,a=0){if(!e.isProduct())return;if(a>=4)return;const p=e.elementsArray(),d=[];let g=e.getMultiplier(!0);for(let e of p)if(e.hasVariable(t)){const t=e.getMultiplier(!0);t.isOne()||(g=g.times(t),e=e.div(t)),d.push(e)}else g=g.times(e);if(d.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&&!s.div(o).hasVariable(t))return[r,e[n]]}}}(d,t);e&&(d.length=0,d.push(...e))}if(2!==d.length)return;const h=liatePriority(d[0]),x=liatePriority(d[1]);if(h<0||x<0)return;let E,y;h>=x?(E=d[0],y=d[1]):(E=d[1],y=d[0]);const v=h>=x?h:x;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}(h,x,E,y))return;const P=(0,l.diff)(E,i.Expression.create(t));if(P.isFunction(o.DIFF))return;const w=n(y,t,s);if(w.isFunction(o.INTEGRATE))return;const b=g.times(E).times(w),M=g.times(w).times(P);if(!function isProgress(e,t,n,i){if(n===m){const n=maxAlgebraicDegree(e,i);return maxAlgebraicDegree(t,i)<n}return functionCount(t)<functionCount(e)}(e,M,v,t))return;const A=n(M,t,s);let T;if(A.isFunction(o.INTEGRATE)){const e=tryIntegrationByParts(M,t,n,s+1,a+1);void 0!==e&&(T=b.plus(e.times((0,r.minusOne)())))}else T=b.plus(A.times((0,r.minusOne)()));return T};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,d=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 d;if((0,s.isInverseTrig)(e))return p;if((0,s.isTrig)(e))return c;if((0,s.isHyperbolicTrig)(e))return c}return-1}},2292(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),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(new r.Expression(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},2295(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.solve=function solve(e,t,n){const u=new d.SolutionSet;let m=!1;try{const{expression:n,x:p}=(0,h.prepareSolverInputs)(e,t);m=n.hasDecimal();const x=n.variables();if(n.isZero())u.addSolution((0,a.all)(),n,p),u.solutionsType="symbolic";else if(n.isVAR()||!x.includes(p)&&!n.isNUM())u.addSolution((0,a.zero)(),n,p),u.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;let m;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),u=(0,a.two)().times(o.Expression.Variable(l.PI_NAME));m=[];for(let t=0;t<e;t++){let e=(0,a.one)();if(t>0){const i=u.copy().times(o.Expression.create(t)).div(n);e=(0,c.cos)(i).plus((0,c.sin)(i).times(o.Expression.Img()))}m.push(s.copy().times(e))}}}const h=3===t?.length&&t[0].isZero()?(0,r.factorCommonPower)(n):void 0,x=h?.isProduct()?h.elementsArray():void 0,E=e?new g.SymbolicSolver(n,p).solve():void 0;let y,v;if(!n.isPolynomialLike())try{const e=(0,s.toCommonDenominator)(n),t=e.getNumerator().expand(),i=e.getDenominator().expand();!i.isOne()&&t.isPolynomialLike()&&i.isPolynomialLike()&&(y=t,v=i)}catch{}if(m){const e=new d.SolutionSet(m);e.solutionsType="symbolic",u.addSolutions(e,n,p)}else if(x)u.addSolution((0,a.zero)(),n,p),u.solutionsType="symbolic",u.addSolutions(calculateSolutions(x,p),n,p);else if(E&&!E.unsolved){const e=new d.SolutionSet(E.solutions);e.solutionsType="symbolic",u.addSolutions(e,n,p)}else if(y&&v){const e=calculateSolutions([v],p);u.exclude(e),u.addSolutions(calculateSolutions([y],p),n,p)}else{const e=(0,i.factorExpressionParts)(n),t=calculateSolutions(e.denominator,p);u.exclude(t);const r=calculateSolutions(e.numerator,p);u.addSolutions(r,n,p)}}}catch(e){}return m&&u.each(e=>(e.getMultiplier().asDecimal=!0,e)),u};const i=n(2724),r=n(6117),s=n(8989),o=n(296),a=n(6099),l=n(8300),u=n(2116),c=n(1649),m=n(7176),p=n(2646),d=n(1526),g=n(8520),h=n(205);function calculateSolutions(e,t){const n=new d.SolutionSet,i=e.map(e=>{let i=e;if(e.isEXP()&&e.getBase().isE())i=(0,a.zero)();else if(e.hasVariable(t)){let r=new g.SymbolicSolver(e,t).solve();if(r.unsolved&&e.isPolynomialLike()&&e.getPower().gt(4)){const n=e.toLinearAndUnitMultiplier();r=new g.SymbolicSolver(n,t).solve()}if(!r.unsolved){const s=new d.SolutionSet(r.solutions);s.solutionsType="symbolic",n.addSolutions(s,e,t),i=(0,a.zero)()}}return i}).filter(e=>!e.eq((0,a.zero)())).map(e=>{let i=e;const r=e.variables();if(1===r.length&&r[0]===t&&e.isPolynomialLike()){const r=new p.PolynomialSolver(new u.Polynomial(e),t).roots();if(r.length>0){const e=new d.SolutionSet(r.map(e=>e.evaluate()));e.solutionsType="numeric",n.append(e)}i=(0,a.zero)()}return i}).filter(e=>!e.eq((0,a.zero)()));for(const e of i){const i=e.variables(),r={method:"Brent"};if(1===i.length&&i[0]===t){const i=new m.FunctionSolver(e,t,r).roots();if(i.length>0){const e=new d.SolutionSet(i);e.solutionsType="numeric",n.append(e)}}}return n}},2332(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),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}},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,[d,g,h,x]=i,E=(u+c*t+m*t**2+p*t**3)/(Math.PI*e),y=(d+g*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,d=(s+o)*r,g=(d+o)*r,h=t((s+d)*r),x=t(g),E=(d-s)/6*(a+4*h+l),y=(o-d)/6*(l+4*x+u),v=E+y;m>=20||Math.abs(v-c)<=15e-13/n?i+=v+(v-c)/15:(p.push([d,o,l,x,u,y,m+1]),p.push([s,d,a,h,l,E,m+1]))}a=o}s=o*i}}else s=Math.sign(e)*r;return s}Object.defineProperty(t,"__esModule",{value:!0}),t.fresnelIntegral=fresnelIntegral,t.fresnelS=function fresnelS(e){return fresnelIntegral(e,1)},t.fresnelC=function fresnelC(e){return fresnelIntegral(e,0)}},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(296),a=n(8300),l=n(5584);function isIdentChar(e){return/[A-Za-z0-9_]/.test(e)}function normalizeAssumptionValue(e){let t,n;return l.Rational.isRational(e)?(n=l.Rational.makeCopy(e),t=n.toDecimal()):(t="number"==typeof e||"string"==typeof e?new r.default(e):e,t.isFinite()&&(n=l.Rational.create(t.toString()))),{value:t,exact:n}}function compareBoundValues(e,t,n,i){let r;if(e.isFinite()&&n.isFinite()){const s=t??l.Rational.create(e.toString()),o=i??l.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??l.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=a.ASSUMPTION;end;isSingleton;start;constructor(e,t,n=!0,i=!0){const r=normalizeAssumptionValue(e),s=normalizeAssumptionValue(t),o=r.value,a=s.value,l=o.isFinite()&&!!n,u=a.isFinite()&&!!i,c=o.isNaN()||a.isNaN()?void 0:compareBoundValues(o,r.exact,a,s.exact);if(void 0===c||c>0||0===c&&(!l||!u))throw new Error(`Invalid interval: (${o}, ${a})`);this.start=Object.freeze({value:o,inclusive:l}),this.end=Object.freeze({value:a,inclusive:u}),this.startExact=r.exact,this.endExact=s.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(0,s.isNerdamerNativeType)(e,a.ASSUMPTION)}static parse(e){if("string"!=typeof e)throw new Error(`Invalid assumption: "${String(e)}"`);const t=e.replace(/\s+/g,"");if(!t)throw new Error(`Invalid assumption: "${e}"`);if(t.length<3)throw new Error(`Invalid assumption: "${e}"`);let n=0;if(!function isIdentStart(e){return/[A-Za-z_]/.test(e)}(t[n]))throw new Error("Expected identifier");let i=n+1;for(;i<t.length&&isIdentChar(t[i]);)i++;const s=t.slice(n,i);n=i;let o="";for(;n<t.length;){const e=t[n];if("<"!==e&&">"!==e&&"="!==e)break;o+=e,n++}if(!o)throw new Error("Missing operator");const a=t.slice(n);if(!a)throw new Error("Missing value");const l=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(`Invalid Decimal: "${e}"`);return n}(a);let u;switch(o){case">":u={symbol:s,assumption:Assumption.atLeast(l,!1)};break;case">=":u={symbol:s,assumption:Assumption.atLeast(l,!0)};break;case"<":u={symbol:s,assumption:Assumption.atMost(l,!1)};break;case"<=":u={symbol:s,assumption:Assumption.atMost(l,!0)};break;case"=":case"==":u={symbol:s,assumption:Assumption.exactly(l)};break;default:throw new Error(`Unsupported operator "${o}"`)}return u}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(o.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=o.Expression.fromRational(this.startExact)),e}gt(e){let t;if(o.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(o.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(o.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(o.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},2634(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),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),d=a.times(p.plus(c).pow(2)).plus(m);return{a,h:c,k:m,variable:t,expression:d}};const i=n(296),r=n(6099),s=n(4703)},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=1e-6;t.PolynomialSolver=class PolynomialSolver{degree;eps;p;precision;constructor(e,t,n=50,i){if("string"==typeof e&&(e=new a.Polynomial(e)),a.Polynomial.isPolynomial(e)){const n=e.variables;if(n.length>1||1===n.length&&t&&n[0]!==t)throw new l.UnexpectedInputError((0,l.message)("tooManyUnknowns"))}const o=a.Polynomial.isPolynomial(e)?e.toDecimalArray():e;this.p=o.slice().reverse().map(e=>new s.Complex(e,0)),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.cauchyBound(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))))}for(let i=0;i<100;i++){let i=new r.default(0);const o=[];for(let r=0;r<t;r++){const a=n[r],[l,u]=this.syntheticDiv(t,e,a),[c,m]=this.syntheticDiv(t-1,u,a);if(c.abs().lessThan(this.eps)){o.push(a);continue}const p=l.div(c);let d=new s.Complex(0,0);for(let e=0;e<t;e++)if(r!==e){const t=a.sub(n[e]);t.abs().greaterThan(this.eps)&&(d=d.add(new s.Complex(1,0).div(t)))}const g=new s.Complex(1,0).sub(p.mul(d)),h=g.abs().lessThan(this.eps)?p:p.div(g),x=a.sub(h);o.push(x);const E=h.abs();E.greaterThan(i)&&(i=E)}for(let e=0;e<t;e++)n[e]=o[e];if(i.lessThan(this.eps.mul(.01)))break}for(let i=0;i<t;i++)n[i]=this.newtonRefine(e,n[i]);return n}cauchyBound(e){const t=e.length-1;let n=new r.default(0);for(let i=1;i<=t;i++){const t=e[i].abs().div(e[0].abs());t.greaterThan(n)&&(n=t)}return n.plus(1)}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)}}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}newtonRefine(e,t){for(let n=0;n<20;n++){const[n,i]=this.syntheticDiv(e.length-1,e,t);if(n.abs().lessThan(this.eps.mul(u)))break;const[r,s]=this.syntheticDiv(e.length-2,i,t);if(r.abs().lessThan(this.eps))break;const o=n.div(r),a=t.sub(o);if(o.abs().lessThan(this.eps.mul(u).mul(a.abs().plus(1)))){t=a;break}t=a}return t}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)]}syntheticDiv(e,t,n){const i=[];let r=t[0];i[0]=r;for(let s=1;s<=e;s++)r=r.mul(n).add(t[s]),s<e&&(i[s]=r);return[r,i]}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.aberthMethod(n);return this.finalize(o,e,t)}}},2707(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),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(c.Token.isToken(t)&&t.type===c.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 c=(0,a.assertPlainVariableAndGetString)(l),m=e[s+1]({excludeValues:i});t.has(c)||n.has(c)||(Object.prototype.hasOwnProperty.call(u.Parser.KNOWN_VALUES,c)?t.set(c,u.Parser.KNOWN_VALUES[c]):n.add(c)),assign(l,m),i.includes(c)||i.push(c)}s=e[e.length-1]({excludeValues:i})}finally{for(const[e,n]of t)u.Parser.KNOWN_VALUES[e]=n;for(const e of n)delete u.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;return n=o.Expression.isExpression(t)?(0,a.assertPlainVariableAndGetString)(t):t,delete u.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(238),c=n(12);function assign(e,t){if(e=o.Expression.create(e),"string"==typeof t&&(t=u.Parser.parse(t)),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}));return u.Parser.KNOWN_VALUES[e.value]=t,t}},2724(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.factor=function factor(e){let t;try{if((e=r.Expression.create(e)).isZero())t=e;else if(e.isNUM()&&e.isInteger()){let n;const i=(0,u.primeFactorCounts)(e.getMultiplier().numerator);for(const e in i){const t=r.Expression.toEXP(e,i[e]);n=n?(0,o.merge)(n,t):t}t=n??r.Expression.Number("1"),-1===e.sign()&&(t=t.neg())}else if(e.isVAR())t=e;else{const n=factors(e);t=n.numerator.prod().div(n.denominator.prod())}}catch{t=r.Expression.toFunction(s.FACTOR,[e])}return t},t.polyFactorExpressions=polyFactorExpressions,t.polyFactors=function polyFactors(e){return new l.Vector(polyFactorExpressions(e))},t.factorExpressionParts=factorExpressionParts,t.factors=factors,t.numberFactors=function numberFactors(e){const t=(e=r.Expression.create(e)).getNumerator(),n=e.getDenominator();function factorNumber(e){if(!e.isNUM())return new l.Vector([e]);const t=new l.Vector,n=(0,u.primeFactorCounts)(e.getMultiplier().numerator);for(const e in n)t.append(r.Expression.toEXP(e,n[e]));return t}return{numerator:factorNumber(t),denominator:factorNumber(n)}};const i=n(6056),r=n(296),s=n(8300),o=n(6498),a=n(2116),l=n(3982),u=n(982),c=n(886),m=n(1339),p=n(8215),d=n(6827);function polyFactorExpressions(e){let t;try{const n=(0,i.normalizeMultiplierDenominators)(r.Expression.create(e)),s=n.getNumerator(),o=n.getDenominator(),[l,u]=(0,c.uSubConstants)(s),d=new a.Polynomial(l),g=d.variables,{poly:h}=(0,m.polynomialToMultiPoly)(d),x=(0,p.factorPoly)(h,g);t=(0,m.factorsToExpressions)(x,g).map(e=>(0,c.uUnSub)(e,u).div(o))}catch{t=[r.Expression.create(e)]}return t}function factorExpressionParts(e){const{numerator:t,denominator:n,map:i}=(0,d.polynomialize)(r.Expression.create(e));return{numerator:polyFactorExpressions(t).map(e=>(0,c.uUnSub)(e,i)),denominator:polyFactorExpressions(n).map(e=>(0,c.uUnSub)(e,i))}}function factors(e){const{numerator:t,denominator:n}=factorExpressionParts(e);return{numerator:new l.Vector(t),denominator:new l.Vector(n)}}},2766(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),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}}return-1===e.getPower().sign()?{num:i.Expression.fromRational(e.getMultiplier()),den:e.invert()}:{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(),d=c.deg();let g=(0,r.zero)(),h=e;if(p>=d){const[n,i]=(0,a.divide)(e,t);g=n,h=i}if(i.Expression.create(h).isZero())u=g;else if(d<=1)g.isZero()||(u=g.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,c=!0;for(const e of n)for(let t=1;t<=e.power;t++)1===e.degree?(l.push({factor:e.expr,power:t,degree:e.degree,unknownIndex:u,numUnknowns:1}),u+=1):2===e.degree?(l.push({factor:e.expr,power:t,degree:e.degree,unknownIndex:u,numUnknowns:2}),u+=2):c=!1;if(!c)return;const m=[];for(const e of n)if(1===e.degree){const t=findLinearRoot(e.expr,o);void 0!==t&&m.push(t)}let p=0;for(;m.length<u;){const e=i.Expression.Number(p);evaluateAt(t,o,e).isZero()||m.some(t=>t.eq(e))||m.push(e),p=p<=0?1-p:-p}const d=[],g=[],h=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=m[t],i=evaluateAt(e,o,n);g.push(i);const r=[];for(let e=0;e<l.length;e++){const t=l[e],i=evaluateAt(h[e],o,n);1===t.numUnknowns||r.push(n.times(i)),r.push(i)}d.push(r)}const x=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){for(let e=0;e<n;e++)if(!u[e])return;return u}}(d,g);if(void 0===x)return;let E=(0,r.zero)();for(const e of l){const t=1===e.power?e.factor:e.factor.pow(i.Expression.Number(e.power));if(1===e.numUnknowns){const n=x[e.unknownIndex];n.isZero()||(E=E.plus(n.div(t)))}else{const n=x[e.unknownIndex],r=x[e.unknownIndex+1],s=n.times(i.Expression.create(o)).plus(r);s.isZero()||(E=E.plus(s.div(t)))}}return E}(h,t,e,m);void 0!==n&&(u=g.isZero()?n:g.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)}},2809(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),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},2826(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),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)},2992(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.zippelGCDMulti=zippelGCDMulti;const i=n(4988),r=n(4737),s=n(9350),o=n(1458),a=[17n,19n,23n,29n,31n,37n,41n,43n,47n,53n],l=[2n,3n,5n,7n,11n,13n,17n,19n,23n,29n,31n,37n,41n,43n,47n],u=(1n<<64n)-1n;function zippelGCDMulti(e,t,n,i={}){return zippelGCD(e,t,n,i)}function zippelGCD(e,t,n,o={}){if(0===n.length)throw new Error("zippelGCD: no variables");const l=(0,s.mvNormalize)(e),u=(0,s.mvNormalize)(t);if(0===l.terms.size&&0===u.terms.size)return r.MultiPoly.zero();if(0===l.terms.size)return normalizeSignLex(u,n);if(0===u.terms.size)return normalizeSignLex(l,n);const c=(0,s.mvDivideByCoeffContent)(l),m=(0,s.mvDivideByCoeffContent)(u),p=(0,i.gcd)(c.content,m.content);{const e=new r.MultiPoly(c.primitive.terms),t=new r.MultiPoly(m.primitive.terms),i=e.variables(),l=t.variables(),u=[];for(let e=0;e<n.length;e++)i.has(e)!==l.has(e)&&u.push({idx:e,name:n[e]});if(u.length>0){let i=e,l=t;const c=[...n];for(let e=0;e<u.length;e++){const{idx:t}=u[e],n=a[e%a.length];i=(0,s.substituteVarIndex)(i,t,n),l=(0,s.substituteVarIndex)(l,t,n)}const m=[...u].sort((e,t)=>t.idx-e.idx);for(const{idx:e}of m)i=(0,s.removeVarIndex)(i,e),l=(0,s.removeVarIndex)(l,e),c.splice(e,1);if(0===c.length)return r.MultiPoly.constant(0n===p?1n:p);const d=i,g=l;let h=o.mainVar??n[0];c.includes(h)||(h=c[0]);let x=zippelGCD(d,g,c,{...o,mainVar:h}).clone();const E=[...c],y=[...u].sort((e,t)=>e.idx-t.idx);for(const{idx:e,name:t}of y)x=(0,s.addVarIndex)(x,e),E.splice(e,0,t);let v=x;return 1n!==p&&0n!==p&&(v=(0,s.scalePoly)(v,p)),normalizeSignLex((0,s.mvNormalize)(v),n)}}const d=o.mainVar??n[0],g=o.maxTries??32,h=new r.MultiPoly(c.primitive.terms),x=new r.MultiPoly(m.primitive.terms);let E=null,y=null;const v=new Map;let P=-1,w=-1;for(let e=0;e<g;e++){const t=randomEvalPoint(n,d,e),i=evalToUnivariate(h,n,d,t),r=evalToUnivariate(x,n,d,t);if(uniIsZeroBig(i)||uniIsZeroBig(r))continue;const o=i.length-1,a=r.length-1;if(P<0&&(P=o,w=a),o===P&&a===w)try{const e=(0,s.zNormalizePrimitiveSign)((0,s.zGcdFull)(i,r)).primitive,n=e.length-1;if(n<=0)continue;const o=(v.get(n)??0)+1;v.set(n,o),o>=2&&(!y||n>y.length-1)&&(E=t,y=(0,s.zNormalizePrimitiveSign)(e).primitive)}catch{continue}}if(!E||!y){if(o.throwOnBudget){const e={};for(const[t,n]of v.entries())e[String(t)]=n;throw new i.GcdBudgetExceededError("zippelGCD: could not find a good specialization point within budget",{stage:"base-specialization",vars:[...n],mainVar:d,maxTries:g,degFMain:P,degGMain:w,gcdDegreeHistogram:e})}return r.MultiPoly.constant(0n===p?1n:p)}const b=n.indexOf(d),M=n.filter(e=>e!==d),A=y.length-1;function sameUni(e,t){const n=(0,s.zNormalizePrimitiveSign)(e).primitive,i=(0,s.zNormalizePrimitiveSign)(t).primitive;if(n.length!==i.length)return!1;for(let e=0;e<n.length;e++)if(n[e]!==i[e])return!1;return!0}function verifyCandidate(e){for(let t=0;t<6;t++){const i=randomEvalPoint(n,d,9e5+t),r=evalToUnivariate(h,n,d,i),o=evalToUnivariate(x,n,d,i);if(uniIsZeroBig(r)||uniIsZeroBig(o))continue;const a=(0,s.zNormalizePrimitiveSign)((0,s.zGcdFull)(r,o)).primitive;if(a.length-1!==A)return!1;if(!sameUni(evalToUnivariate(e,n,d,i),a))return!1}return!0}let T=null;for(let e=0;e<8;e++){const t=new Array(A+1);for(let e=0;e<=A;e++)t[e]=r.MultiPoly.zero();const i=new Map;for(let r=0;r<=A;r++){let s=null;for(let t=0;t<4&&!s;t++){let a=i.get(t);a||(a=sampleGcdAcrossPoints(c.primitive,m.primitive,n,d,Math.min(g*(t+1),64),1e6*e+1e5*t,o.gridMap),i.set(t,a));const l=a.map(e=>({values:e.values,y:r<e.coefficients.length?e.coefficients[r]:0n}));try{s=interpolateCoeffAsMV(n,M,l)}catch{s=null}}if(!s)throw new Error("zippelGCD: coefficient interpolation failed (non-integer)");t[r]=s.clone()}let a=r.MultiPoly.zero();for(let e=0;e<=A;e++){if(0===t[e].terms.size)continue;if(0===e){a=(0,s.addPoly)(a,t[e]);continue}const i=new Array(n.length).fill(0);i[b]=e;const o=new r.MultiPoly;o.terms.set((0,s.denseToKey)(i),1n),a=(0,s.addPoly)(a,(0,s.mulPoly)(t[e],o))}1n!==p&&0n!==p&&(a=(0,s.scalePoly)(a,p)),a=(0,s.mvNormalize)(a),a=stripParamFactorFromMainVarCoeffsMP(a,n,d);let l=a.clone();if(l=normalizeSignLex(l,n),T=l,verifyCandidate(l))return l}return T||(0,s.mvNormalize)(r.MultiPoly.zero())}function sampleGcdAcrossPoints(e,t,n,i,o,a,u){const c=[],m=n.filter(e=>e!==i);function maxDegInVar(e,t){const i=n.indexOf(t);if(i<0)return 0;let s=0;for(const t of e.terms.keys()){const e=(0,r.keyToExp)(t).get(i)??0;e>s&&(s=e)}return s}let p=-1,d=-1,g=-1;const h={};!function rec(r,o){if(o.n<=0)return;if(r===m.length){const r={...h},a=evalToUnivariate(e,n,i,r),l=evalToUnivariate(t,n,i,r);if(uniIsZeroBig(a)||uniIsZeroBig(l))return;const u=a.length-1,m=l.length-1;if((u>p||m>d)&&(p=Math.max(p,u),d=Math.max(d,m),c.length=0,g=-1),p<0&&(p=u,d=m),u!==p||m!==d)return;const x=(0,s.zGcdFull)(a,l),E=x.length-1;if((g<0||E>g)&&(g=E,c.length=0),E!==g)return;return c.push({values:r,coefficients:x}),void o.n--}const a=m[r];for(const n of function pointsForVar(n){const i=u?.[n];if(i&&i.length)return i.slice();if(m.length&&n===m[0]){const i=Math.min(maxDegInVar(e,n),maxDegInVar(t,n)),r=Math.min(Math.max(i+1,3),15);return l.slice(0,r)}return l.slice(0,3)}(a))if(h[a]=n,rec(r+1,o),o.n<=0)break}(0,{n:o});for(let r=0;c.length<Math.min(6,o)&&r<2*o;r++){const o=randomEvalPoint(n,i,a+5e4+r),l=evalToUnivariate(e,n,i,o),u=evalToUnivariate(t,n,i,o);if(uniIsZeroBig(l)||uniIsZeroBig(u))continue;const m=l.length-1,h=u.length-1;if((m>p||h>d)&&(p=Math.max(p,m),d=Math.max(d,h),c.length=0,g=-1),p<0&&(p=m,d=h),m!==p||h!==d)continue;const x=(0,s.zGcdFull)(l,u),E=x.length-1;(g<0||E>g)&&(g=E,c.length=0),E===g&&c.push({values:o,coefficients:x})}return 0===c.length?[{values:randomEvalPoint(n,i,9999),coefficients:[]}]:c}function interpolateCoeffAsMV(e,t,n){function groupKey(e,t){return e.map(e=>`${e}=${t[e]??0n}`).join("|")}const a=function recInterpolate(t,n){if(0===t.length){const t=zeroMVF(e);return t.terms.set((0,s.denseToKey)(new Array(e.length).fill(0)),n[0]?.y??(0,o.rat)(0n)),t}const i=t[0],r=t.slice(1),a=e.indexOf(i);if(a<0)throw new Error("interpolateCoeffAsMV: missing var index");const l=new Map;for(const e of n){const t=groupKey(r,e.values),n=l.get(t)??[];n.push({x:e.values[i]??0n,y:e.y,values:e.values}),l.set(t,n)}const u=[];let c=0;for(const e of l.values()){e.sort((e,t)=>e.x<t.x?-1:e.x>t.x?1:0);const t=e.map(e=>({x:e.x,y:e.y})),n=(0,o.interpolateUnivariateRat)(t);c=Math.max(c,n.length-1),u.push({values:e[0].values,uni:n})}const m=new Array(c+1);for(let e=0;e<=c;e++)m[e]=[];for(const e of u)for(let t=0;t<=c;t++)m[t].push({values:e.values,y:t<e.uni.length?e.uni[t]:(0,o.rat)(0n)});let p=zeroMVF(e);for(let e=0;e<m.length;e++)p=addMVF(p,shiftMVF(recInterpolate(r,m[e]),a,e));return p}(t,n.map(e=>({values:e.values,y:(0,o.rat)(e.y)})));return function mvfToInt(e){const t=r.MultiPoly.zero();let n=1n;for(const t of e.terms.values()){if(0n===t.n)continue;const e=t.d<0n?-t.d:t.d;n=n/(0,i.gcd)(n,e)*e}for(const[i,r]of e.terms.entries()){if(0n===r.n)continue;const e=(0,o.ratMul)(r,(0,o.rat)(n));if(1n!==e.d)throw new Error("interpolateCoeffAsMV: failed to clear denominators");t.terms.set(i,e.n)}return(0,s.mvNormalize)(t)}(a)}function zeroMVF(e){return{vars:e,terms:new Map}}function addMVF(e,t){const n={vars:e.vars,terms:new Map(e.terms)};return(0,s.mapCombineInPlace)(n.terms,t.terms,(e,t)=>(0,o.ratAdd)(e,t),e=>0n===e.n,()=>(0,o.rat)(0n)),n}function shiftMVF(e,t,n){const i=zeroMVF(e.vars);for(const[s,o]of e.terms.entries()){const e=(0,r.keyToExp)(s);e.set(t,(e.get(t)??0)+n),i.terms.set((0,r.expToKey)(e),o)}return i}function randomEvalPoint(e,t,n){const i={};let r=11400714819323198485n^BigInt(n);function nextU32(){return r=6364136223846793005n*r+1442695040888963407n&u,r>>32n&4294967295n}function hashVar(e){let t=1469598103934665603n;for(let n=0;n<e.length;n++)t^=BigInt(e.charCodeAt(n)),t*=1099511628211n,t&=u;return t}for(const n of e){if(n===t)continue;r^=hashVar(n);const e=nextU32();i[n]=2n+e%96n}return i}function stripParamFactorFromMainVarCoeffsMP(e,t,n){const i=t.indexOf(n);if(i<0)return e;const o=t.filter(e=>e!==n);if(0===o.length)return e;let a=0;for(const t of e.terms.keys()){const e=(0,r.keyToExp)(t).get(i)??0;e>a&&(a=e)}const l=new Array(a+1);for(let e=0;e<=a;e++)l[e]=r.MultiPoly.zero();for(const[t,n]of e.terms.entries()){const e=(0,r.keyToExp)(t),s=e.get(i)??0,o=new Map(e);o.delete(i);const a=(0,r.expToKey)(o);l[s].terms.set(a,(l[s].terms.get(a)??0n)+n)}for(const e of l)e.trim();let u=null;for(const e of l)if(0!==e.terms.size&&(u=u?zippelGCDMulti(u,e,t,{mainVar:o[0],maxTries:24}):e,0!==u.terms.size)){const e=(0,s.mvNormalizePrimitiveSignLex)(u).primitive;if(1===e.terms.size&&1n===(e.terms.get("")??0n)){u=e;break}}if(!u)return e;if(u=(0,s.mvNormalizePrimitiveSignLex)(u).primitive,0===u.terms.size)return e;if(1===u.terms.size&&1n===(u.terms.get("")??0n))return e;const c=[];for(const t of l){if(0===t.terms.size){c.push(t);continue}const n=(0,s.mvExactDiv)(t,u);if(!n)return e;c.push(n)}const m=r.MultiPoly.zero();for(let e=0;e<c.length;e++){const t=c[e];if(0!==t.terms.size)for(const[n,s]of t.terms.entries()){const t=(0,r.keyToExp)(n),o=new Map(t);0!==e&&o.set(i,e);const a=(0,r.expToKey)(o);m.terms.set(a,(m.terms.get(a)??0n)+s)}}return m.trim(),m}function evalToUnivariate(e,t,n,s){const o=t.indexOf(n);if(o<0)throw new Error(`evalToUnivariate: main var ${n} not in vars`);let a=0;for(const t of e.terms.keys()){const e=(0,r.keyToExp)(t);a=Math.max(a,e.get(o)??0)}const l=new Array(a+1).fill(0n);for(const[n,a]of e.terms.entries()){const e=(0,r.keyToExp)(n),u=e.get(o)??0;let c=1n;for(let n=0;n<t.length;n++){if(n===o)continue;const r=t[n],a=s[r];if(void 0===a)throw new Error(`evalToUnivariate: missing value for ${r}`);c*=(0,i.pow)(a,BigInt(e.get(n)??0))}l[u]+=a*c}for(;l.length>1&&0n===l[l.length-1];)l.pop();return l}function uniIsZeroBig(e){return 0===e.length||1===e.length&&0n===e[0]}function normalizeSignLex(e,t){if(0===e.terms.size)return e;const n=(0,s.leadTermLex)(e,t.length);return!n||n.coeff>=0n?e:(0,s.scalePoly)(e,-1n)}},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},d=!0,g="[DecimalError] ",h=g+"Invalid argument: ",x=g+"Precision limit exceeded",E=g+"crypto unavailable",y="[object Decimal]",v=Math.floor,P=Math.pow,w=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,b=/^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,T=1e7,N=c.length-1,O=m.length-1,R={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=P(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)==P(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)==P(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()}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(h+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,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},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,r;if(t.isZero())return t;(i=t.d.length)<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)},R.cubeRoot=R.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(d=!1,(s=c.s*P(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=P(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=F(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 d=!0,finalise(i,e,m.rounding,t)},R.decimalPlaces=R.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},R.dividedBy=R.div=function(e){return F(this,new this.constructor(e))},R.dividedToIntegerBy=R.divToInt=function(e){var t=this.constructor;return finalise(F(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,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)},R.hyperbolicSine=R.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)},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,F(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,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))},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,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=F(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)},R.inverseSine=R.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)))},R.inverseTangent=R.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<=O)return(o=getPi(c,m+4,p).times(.25)).s=u.s,o}else{if(!u.s)return new c(NaN);if(m+4<=O)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(d=!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)),d=!0,finalise(o,c.precision=m,c.rounding=p,!0)},R.isFinite=function(){return!!this.d},R.isInteger=R.isInt=function(){return!!this.d&&v(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,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(d=!1,o=naturalLogarithm(u,a=m+5),i=t?getLn10(c,a+10):naturalLogarithm(e,a),checkRoundingDigits((l=F(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=F(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 d=!0,finalise(l,m,p)},R.minus=R.sub=function(e){var t,n,i,r,s,o,a,l,u,c,m,p,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,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(g)}return d?finalise(e,a,l):e}if(n=v(e.e/7),c=v(g.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]=T-1;--u[r],u[i]+=T}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),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=F(n,e.abs(),0,3,1)).s*=e.s:t=F(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,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)),d?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)/T|0,u[r]%=T;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(h+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 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)},R.squareRoot=R.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(d=!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(F(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 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=F(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)},R.times=R.mul=function(e){var t,n,i,r,s,o,a,l,u,c=this,m=c.constructor,p=c.d,g=(e=new m(e)).d;if(e.s*=c.s,!(p&&p[0]&&g&&g[0]))return new m(!e.s||p&&!p[0]&&!g||g&&!g[0]&&!p?NaN:p&&g?0*e.s:e.s/0);for(n=v(c.e/7)+v(e.e/7),(l=p.length)<(u=g.length)&&(s=p,p=g,g=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]+g[i]*p[r-i-1]+t,s[r--]=a%T|0,t=a/T|0;s[r]=(s[r]+t)%T|0}for(;!s[--o];)s.pop();return t?++n:s.shift(),e.d=s,e.e=getBase10Exponent(s,n),d?finalise(e,m.precision,m.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,l),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,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},R.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},R.toFraction=function(e){var t,n,i,r,s,o,a,l,u,c,m,p,g=this,x=g.d,E=g.constructor;if(!x)return new E(g);if(u=n=new E(1),i=l=new E(0),o=(s=(t=new E(i)).e=getPrecision(x)-g.e-1)%7,t.d[0]=P(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(d=!1,a=new E(digitsToString(x)),c=E.precision,E.precision=s=7*x.length*2;m=F(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=F(e.minus(n),i,0,1,1),l=l.plus(r.times(u)),n=n.plus(r.times(i)),l.s=u.s=g.s,p=F(u,i,s,1).minus(g).abs().cmp(F(l,n,s,1).minus(g).abs())<1?[u,i]:[l,n],E.precision=c,d=!0,p},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=F(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,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(P(+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=P(+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):(d=!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,d=!0,l.rounding=s,finalise(r,i,s))},R.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},R.toSignificantDigits=R.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)},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 F=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,d,g,h,x,E,y,P,w,b,M,A,N,O,R,F=e.constructor,D=e.s==t.s?1:-1,k=e.d,z=t.d;if(!(k&&k[0]&&z&&z[0]))return new F(e.s&&t.s&&(k?!z||k[0]!=z[0]:z)?k&&0==k[0]||!z?0*D:D/0:NaN);for(o?(m=1,l=e.e-t.e):(o=T,m=7,l=v(e.e/m)-v(t.e/m)),O=z.length,A=k.length,x=(h=new F(D)).d=[],u=0;z[u]==(k[u]||0);u++);if(z[u]>(k[u]||0)&&l--,null==n?(w=n=F.precision,i=F.rounding):w=r?n+(e.e-t.e)+1:n,w<0)x.push(1),p=!0;else{if(w=w/m+2|0,u=0,1==O){for(c=0,z=z[0],w++;(u<A||c)&&w--;u++)b=c*o+(k[u]||0),x[u]=b/z|0,c=b%z|0;p=c||u<A}else{for((c=o/(z[0]+1)|0)>1&&(z=multiplyInteger(z,c,o),k=multiplyInteger(k,c,o),O=z.length,A=k.length),M=O,y=(E=k.slice(0,O)).length;y<O;)E[y++]=0;(R=z.slice()).unshift(0),N=z[0],z[1]>=o/2&&++N;do{c=0,(a=compare(z,E,O,y))<0?(P=E[0],O!=y&&(P=P*o+(E[1]||0)),(c=P/N|0)>1?(c>=o&&(c=o-1),1==(a=compare(d=multiplyInteger(z,c,o),E,g=d.length,y=E.length))&&(c--,subtract(d,O<g?R:z,g,o))):(0==c&&(a=c=1),d=z.slice()),(g=d.length)<y&&d.unshift(0),subtract(E,d,y,o),-1==a&&(a=compare(z,E,O,y=E.length))<1&&(c++,subtract(E,O<y?R:z,y,o)),y=E.length):0===a&&(c++,E=[0]),x[u++]=c,a&&E[0]?E[y++]=k[M]||0:(E=[k[M]],y=1)}while((M++<A||void 0!==E[0])&&w--);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,g=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])/P(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/P(10,r-o-1)%10|0}if(i=i||t<0||void 0!==m[p+1]||(o<0?c:c%P(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/P(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]=P(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=P(10,7-s),m[p]=o>0?(c/P(10,r-o)%P(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]==T&&(m[0]=1));break}if(m[p]+=a,m[p]!=T)break;m[p--]=0,a=1}for(s=m.length;0===m[--s];)m.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,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>N)throw d=!0,n&&(e.precision=n),Error(x);return finalise(new e(c),t,1,!0)}function getPi(e,t,n){if(t>O)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(d=!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 d=!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,g=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?(d=!1,l=h):l=t,a=new p(.03125);e.e>-2;)e=e.times(a),m+=5;for(l+=i=Math.log(P(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(F(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,g,u)))return finalise(o,p.precision=h,g,d=!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,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(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,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(s=h.e,i>1?(h=new E("0."+n),s++):h=new E(i+"."+n.slice(1)),m=h,l=o=h=F(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(F(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=F(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=F(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),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,o,a,l,u,c,m;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(b.test(t))n=16,t=t.toLowerCase();else if(w.test(t))n=2;else{if(!M.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,T)).length-1;0===c[o];--o)c.pop();return o<0?new i(0*e.s):(e.e=getBase10Exponent(c,m),e.d=c,d=!1,a&&(e=F(e,s,4*l)),u&&(e=e.times(Math.abs(u)<54?P(2,u):r.pow(2,u))),d=!0,e)}function taylorSeries(e,t,n,i,r){var s,o,a,l,u=e.precision,c=Math.ceil(u/7);for(d=!1,l=n.times(n),a=new e(i);;){if(o=F(a.times(l),new e(t++*t++),u,1),a=r?i.plus(o):i.minus(o),i=F(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 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,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,d,g,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=(d=finiteToString(e)).indexOf("."))>=0&&(d=d.replace(".",""),(h=new x(1)).e=d.length-a,h.d=convertBase(finiteToString(h),10,r),h.e=h.d.length),o=m=(g=convertBase(d,10,r)).length;0==g[--m];)g.pop();if(g[0]){if(a<0?o--:((e=new x(e)).d=g,e.e=o,g=(e=F(e,h,n,i,0,r)).d,o=e.e,p=s),a=g[n],c=r/2,p=p||void 0!==g[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&g[n-1]||i===(e.s<0?8:7)),g.length=n,p)for(;++g[--n]>r-1;)g[n]=0,n||(++o,g.unshift(1));for(m=g.length;!g[m-1];--m);for(a=0,d="";a<m;a++)d+=u.charAt(g[a]);if(E){if(m>1)if(16==t||8==t){for(a=16==t?4:3,--m;m%a;m++)d+="0";for(m=(g=convertBase(d,r,t)).length;!g[m-1];--m);for(a=1,d="1.";a<m;a++)d+=u.charAt(g[a])}else d=d.charAt(0)+"."+d.slice(1);d=d+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)d="0"+d;d="0."+d}else if(++o>m)for(o-=m;o--;)d+="0";else o<m&&(d=d.slice(0,o)+"."+d.slice(o))}else d=E?"0p+0":"0";d=(16==t?"0x":2==t?"0b":8==t?"0o":"")+d}else d=nonFiniteToString(e);return e.s<0?"-"+d:d}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(F(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(F(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(g+"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(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 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=P(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(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=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(d?!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(d?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),A.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=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}(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)}()},3148(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),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"}}},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.re.mul(this.re).plus(this.im.mul(this.im)).sqrt()}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())}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},3171(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),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)}},3552(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),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)},3703(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EULER_GAMMA=void 0,t.factorial=factorial,t.gammaLN=gammaLN,t.gamma=gamma,t.erfc=erfc,t.erf=function erf(e){return 0===e?0: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.product=function product(...e){let t=1;for(let n=0;n<e.length;n++)t*=e[n];return t},t.productInRange=function productInRange(e,t,n=1){let i=e,r=e;for(;r<t;)r+=n,i*=r;return i},t.avg=function avg(...e){return sum(...e)/e.length},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.diff=function diff(e,t=1e-4){return n=>(e(n+t)-e(n-t))/(2*t)},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;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),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;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],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;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}t.EULER_GAMMA=n},3725(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.groebner=function groebner(e,t){const n=(a.Vector.isVector(e)?e.elements:e).map(e=>s.Expression.create(e));t??=(0,r.collectVariablesSet)(n);const c=n.map(e=>{const n=(0,i.normalizeMultiplierDenominators)(e);return(0,l.polynomialToMultiPoly)(new o.Polynomial(n,t),t).poly});return new a.Vector((0,u.Groebner)(c,t).map(e=>(0,l.multiPolyToExpression)(e,t)))};const i=n(6056),r=n(6338),s=n(296),o=n(2116),a=n(3982),l=n(1339),u=n(6431)},3957(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.power=power,t.setPower=setPower,t.sqrtToPow=function sqrtToPow(e){let t;return e.isFunction(h.SQRT)?(t=new p.Expression(e.getArguments()[0]),t=setPower(t,e.getPower().div((0,d.two)())),t.multiplier=e.getMultiplier().copy()):t=new p.Expression(e),t},t.powToSqrt=function powToSqrt(e){let t;if(e.power&&e.power.dataType===h.RATIONAL&&(0,o.isEven)(e.getPower().getMultiplier().denominator)){const n=power(e.toUnitMultiplier(),(0,d.two)());t=p.Expression.toFunction(h.SQRT,[powToSqrt(n)]),t.multiplier=e.getMultiplier().copy()}else t=new p.Expression(e);return t},t.nthPow=nthPow,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),d=n(6099),g=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=new p.Expression(e),n=p.Expression.toEXP(n,new p.Expression(t)),n.deferred=!0;else{if(e.isI()&&t.isInteger())n=(0,u.simplifyImaginary)(setPower(e,t));else if(e.isE()&&t.isComplex()){const i=new p.Expression(t),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,d.one)();else if(!e.isZero()||r||t.isZero())if(!t.isZero()||e.isInf()||e.isNUM())if(t.isOne())n=new p.Expression(e);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,d.one)(),r=(0,d.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,d.one)().neg();else if(t.isZero())n=(0,d.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=new p.Expression(e),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(new p.Expression(e),t),n=n.times(x),n=rationalizeRadical(n);else if(1n!==a&&2n!==a&&e.isNUM()&&-1===e.sign())n=p.Expression.toEXP((0,d.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,d.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,g.stripPower)(n).isComplex()?(n=(0,i.abs)((0,g.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,g.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,d.one)();else n=p.Expression.Number("0")}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,d.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,d.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,d.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())}},3982(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),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(`Index ${t} out of bounds for Vector of length ${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},4091(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.comma=function comma(e,t){return[e,t]}},4166(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),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)},4462(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),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(`Row index ${t} out of bounds for Matrix with ${this.elements.length} rows`);if(e.length>1){const n=e[1];if(n<0||n>=this.elements[t].length)throw new a.MathError(`Column index ${n} out of bounds for Matrix with ${this.elements[t].length} columns`);return this.elements[t][n]}return new m.Vector(this.elements[t])}__set__(e,t){if("string"==typeof e)throw new a.MathError("Matrix does not support string key access");const n=e[0],i=e.length>1?e[1]:void 0;if(n<0||n>=this.elements.length)throw new a.MathError(`Row index ${n} out of bounds for Matrix with ${this.elements.length} rows`);if(void 0!==i){if(i<0||i>=this.elements[n].length)throw new a.MathError(`Column index ${i} out of bounds for Matrix with ${this.elements[n].length} columns`);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,d;for(;o--;){for(p=[],m=n[o],l=a;l--;){for(d=(0,u.zero)(),c=r;c--;){const t=m[c],n=e.elements[c][l];d=d.plus(t.times(n))}p[l]=d}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("Unable to calculate trace for the matrix");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("Unable to calculate trace for the matrix");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},4600(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),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=new s.Expression(e);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;return 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)()),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=new s.Expression(n);else if(n.isFunction())t=n.isComplex()?s.Expression.toFunction(a.REALPART,[n]):new s.Expression(n);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=new s.Expression(e);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=new s.Expression(e);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]}},4692(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.gcd=gcd,t.lcm=function lcm(e,t){const n=r.Expression.create(e),i=r.Expression.create(t);let o;return 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)),o};const i=n(6338),r=n(296),s=n(6099),o=n(8300),a=n(2116),l=n(9565),u=n(886),c=n(1339),m=n(2992),p=n(2724),d=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,d.polynomialize)(e),{numerator:l,denominator:c,map:m}=(0,d.polynomialize)(t,a),p=(0,i.collectVariablesSet)([s,o,l,c]),g=expressionGCD(s,l,p),h=expressionGCD(o,c,p),x=(0,u.uUnSub)(g.div(h),m);return x.getMultiplier().asDecimal=n,x}catch{}return r.Expression.toFunction(o.GCD,[e,t])}function expressionGCD(e,t,n){let i;if(e.isNUM()&&t.isNUM())i=r.Expression.create(e.getMultiplier().GCD(t.getMultiplier()));else{const o=new a.Polynomial(e),u=new a.Polynomial(t);if(o.isZero()&&u.isZero())return(0,s.zero)();if(o.isZero())return r.Expression.create(t);if(u.isZero())return r.Expression.create(e);const{mGCD:d,p:g,q:h}=o.stripMonomialGCD(u);n??=[...new Set(g.variables.concat(h.variables))].sort();const{poly:x}=(0,c.polynomialToMultiPoly)(g,n),{poly:E}=(0,c.polynomialToMultiPoly)(h,n),y=(0,m.zippelGCDMulti)(x,E,n);i=(0,c.multiPolyToExpression)(y,n),(0,l.divide)(g,i)[1].isZero()||(i=(0,s.one)()),i.isOne()&&(i=function gcdByCommonFactors(e,t){let n=(0,s.one)();if(e.isProduct()||(e=(0,p.factor)(e)),t.isProduct()||(t=(0,p.factor)(t)),e.isProduct()&&t.isProduct()){const i=e.elementsArray(),r=t.elementsArray();for(const e of i)for(const t of r)if(e.eq(t))n=n.times(e);else if(e.isProduct()&&t.isProduct())return gcd(e,t)}return n}(g.getExpression(),h.getExpression())),i=i.times(d.getExpression())}return i}},4703(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ErrorMessages=t.AssignmentError=t.ZeroToZeroPowerError=t.MissingReferenceError=t.NotImplementedError=t.DimensionError=t.NaNError=t.MathError=t.ParserSyntaxError=t.UnsupportedOperationError=t.PolynomialError=t.UndefinedError=t.ParserError=t.OperatorError=t.DivisionByZeroError=t.UnexpectedInputError=t.UnexpectedDataType=t.UnexpectedTokenError=void 0,t.message=function message(e,n){const s=t.ErrorMessages[r.Settings.LANGUAGE][e];return(0,i.format)(s,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 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.ErrorMessages={eng:{notImplemented:"This method has not yet been implemented.",noInverse:"Unable to calculate inverse!",undefinedValue:"The requested value is undefined!",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}}.",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!",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!"},spa:{notImplemented:"Este método aún no se ha implementado.",noInverse:"Incapaz de calcular inversa!",undefinedValue:"¡El valor solicitado no está definido!",univariateInputOnly:"¡La entrada para esta función debe ser univariada!",differentSignsAtEndPointsRequired:"¡La función debe tener signos opuestos en los puntos extremos a y b!",integerRequired:"¡Esta función requiere que el coeficiente sea un número entero!",plainVariableExpected:"¡Se esperaba una variable simple! Se recibió {{input}}.",missingReference:'¡La referencia "{{ref}}" no existe en este patrón!',undefinedDivision:"¡División no definida expresión de este tipo! {{type}}",restrictedVariableName:'¡No se puede asignar el valor solicitado al nombre reservado "{{name}}"!',noVariableInExpression:"¡No se encontró ninguna variable en la expresión!",quadraticExpressionExpected:"¡La expresión debe ser cuadrática!",wrongInput:"¡Entrada incorrecta! Se esperaba {{expected}}, pero se recibió {{received}}.",infinityMinusInfinityUndefined:"¡Infinito menos infinito es indefinido!",inconsistentAssumptions:"¡Las suposiciones son inconsistentes (intersección vacía)!",unsupportedType:"¡El tipo ({{type}}) proporcionado no es compatible con esta función!",unsupportedOperation:"¡Esta operación no está soportada actualmente!",buildFunctionUnsupportedFunction:'¡buildFunction no puede compilar la función "{{function}}" a aritmética numérica de JavaScript!',buildFunctionComplexUnsupported:"¡buildFunction no puede compilar expresiones que contienen la unidad imaginaria a aritmética numérica de JavaScript!",nonMatchingDimensions:"¡Esta operación no se puede completar porque las dimensiones no coinciden!",malformedExpression:"¡No se puede analizar la expresión malformada!",divisionByZero:"¡La división por cero no está definida!",zeroToZeroPower:"¡0^0 no está definido!",infinityToPowerZero:"¡Infinito^0 no está definido!",infinityTimesZero:"¡0*Infinito no está definido!",infinityToInfinity:"¡Infinito^Infinito no está definido!",valueToInfinityUndefined:"{{value}}^Infinito no está definido!",atan2Undefined:"¡atan2 no está definida para 0, 0!",tanUndefined:"¡tan no está definida para múltiplos de pi / 2!",loopIterationLimitExceeded:"El bucle superó el máximo de {{max}} iteraciones.",breakOutsideLoop:"break solo se puede usar dentro de un bucle.",continueOutsideLoop:"continue solo se puede usar dentro de un bucle.",letRequiresBindingsAndBody:"let requiere uno o más pares nombre/valor seguidos de una expresión de cuerpo.",secUndefined:"¡sec no está definida para múltiplos impares de pi/2!",cscUndefined:"¡csc no está definida para múltiplos de pi!",cotUndefined:"¡cot no está definida para múltiplos de pi!",cothUndefined:"¡coth no está definida para 0!",cschUndefined:"¡csch no está definida para 0!",atanhUndefined:"¡Atanh no está definida para 0!",cannotCreateArrayFromNaN:"¡No se puede crear una matriz de NaN!",expressionExpected:"¡Se esperaba Expression! ¡Se recibió {{type}}!",unrecognizedMode:"¡{{mode}} no es un modo válido!",notAPolynomial:"¡La expresión no es un polinomio válido!",multidegreeMismatch:"¡El número de variables debe coincidir con el multigrado del polinomio!",unknownVariable:'¡Variable desconocida! "{{variable}}"',cannotCreateMatrix:"No se puede crear la matriz. ¡Las dimensiones de las filas no coinciden!",cannotMultiplyMatrix:"¡No se puede multiplicar la matriz!",squareMatrixRequired:"¡La matriz debe ser cuadrada!",rowsMustMatch:"¡Las filas de las matrices deben coincidir!",columnsMustMatch:"¡Las columnas de las matrices deben coincidir!",singularMatrix:"¡La matriz proporcionada es singular!",matrixExpected:"¡Matriz esperada! Se recibió {{type}}.",mismatchedDimensions:'¡Las dimensiones deben coincidir para la función "{{function}}"!',incorrectCrossDimension:"¡El producto vectorial sólo está definido para vectores de dimensión 3!",vectorExpected:"¡Vector esperado! Recibido. {{type}}.",univariatePolynomialOnly:"¡Esta función solo es compatible con polinomios univariados!",convergenceFailed:"¡No se logró la convergencia! Se intentaron {{iters}} iteraciones.",endPointIsRoot:"El punto final es la raíz.",zeroDerivative:"La derivada es cero en x = {{x}}. No se puede continuar.",tooManyUnknowns:"¡Demasiadas incógnitas!",solveSystemInfiniteSolutions:"¡Este sistema no tiene un conjunto finito de soluciones aisladas!",solveSystemPolynomialOnly:"¡solveSystem actualmente solo admite sistemas lineales o polinómicos!",solveSystemNonRationalUnsupported:"¡Este sistema polinómico no lineal requiere resolución no racional o no simbólica, lo cual aún no está soportado!",setJSFunctionExpectsFunction:"¡El parámetro de la función, al configurar una función JS, debe ser de tipo función!",functionRequiresMinAndMaxArgs:"¡Debes proporcionar los argumentos mínimo y máximo al configurar la función!"},fra:{notImplemented:"Cette méthode n'a pas encore été implémentée.",noInverse:"Impossible de calculer l'inverse !",undefinedValue:"La valeur demandée n'est pas définie !",univariateInputOnly:"L'entrée de cette fonction doit être univariée !",differentSignsAtEndPointsRequired:"La fonction doit avoir des signes opposés aux extrémités a et b !",integerRequired:"Cette fonction exige que le coefficient soit un entier !",plainVariableExpected:"Une variable simple était attendue ! Reçu : {{input}}.",missingReference:"La référence « {{ref}} » n'existe pas dans ce modèle !",undefinedDivision:"La division n'est pas définie pour une expression de ce type ! {{type}}",restrictedVariableName:"Impossible d'affecter la valeur demandée au nom réservé « {{name}} » !",noVariableInExpression:"Aucune variable n'a été trouvée dans l'expression !",quadraticExpressionExpected:"L'expression doit être quadratique !",wrongInput:"Entrée incorrecte ! {{expected}} était attendu, mais {{received}} a été reçu.",infinityMinusInfinityUndefined:"Infini moins infini n'est pas défini !",inconsistentAssumptions:"Les hypothèses sont incohérentes (intersection vide) !",unsupportedType:"Le type fourni ({{type}}) n'est pas pris en charge par cette fonction !",unsupportedOperation:"Cette opération n'est actuellement pas prise en charge !",buildFunctionUnsupportedFunction:"buildFunction ne peut pas compiler la fonction « {{function}} » en arithmétique numérique JavaScript !",buildFunctionComplexUnsupported:"buildFunction ne peut pas compiler les expressions contenant l'unité imaginaire en arithmétique numérique JavaScript !",nonMatchingDimensions:"Cette opération ne peut pas être effectuée car les dimensions ne correspondent pas !",malformedExpression:"Impossible d'analyser l'expression mal formée !",divisionByZero:"La division par zéro n'est pas définie !",zeroToZeroPower:"0^0 n'est pas défini !",infinityToPowerZero:"Infini^0 n'est pas défini !",infinityTimesZero:"0*Infini n'est pas défini !",infinityToInfinity:"Infini^Infini n'est pas défini !",valueToInfinityUndefined:"{{value}}^Infini n'est pas défini !",atan2Undefined:"atan2 n'est pas définie pour 0, 0 !",tanUndefined:"tan n'est pas définie pour les multiples de pi/2 !",loopIterationLimitExceeded:"La boucle a dépassé le maximum de {{max}} itérations.",breakOutsideLoop:"break ne peut être utilisé qu'à l'intérieur d'une boucle.",continueOutsideLoop:"continue ne peut être utilisé qu'à l'intérieur d'une boucle.",letRequiresBindingsAndBody:"let exige une ou plusieurs paires nom/valeur suivies d’une expression de corps.",secUndefined:"sec n'est pas définie pour les multiples impairs de pi/2 !",cscUndefined:"csc n'est pas définie pour les multiples de pi !",cotUndefined:"cot n'est pas définie pour les multiples de pi !",cothUndefined:"coth n'est pas définie pour 0 !",cschUndefined:"csch n'est pas définie pour 0 !",atanhUndefined:"atanh n'est pas définie pour 0 !",cannotCreateArrayFromNaN:"Impossible de créer un tableau à partir de NaN !",expressionExpected:"Une expression était attendue ! Reçu : {{type}} !",unrecognizedMode:"« {{mode}} » n’est pas un mode valide !",notAPolynomial:"L'expression n'est pas un polynôme valide !",multidegreeMismatch:"Le nombre de variables doit correspondre au multidegré du polynôme !",unknownVariable:"Variable inconnue ! « {{variable}} »",cannotCreateMatrix:"Impossible de créer la matrice. Les dimensions des lignes ne correspondent pas !",cannotMultiplyMatrix:"Impossible de multiplier la matrice !",squareMatrixRequired:"La matrice doit être carrée !",rowsMustMatch:"Les lignes des matrices doivent correspondre !",columnsMustMatch:"Les colonnes des matrices doivent correspondre !",singularMatrix:"La matrice fournie est singulière !",matrixExpected:"Une matrice était attendue ! Reçu : {{type}}.",mismatchedDimensions:"Les dimensions doivent correspondre pour la fonction « {{function}} » !",incorrectCrossDimension:"Le produit vectoriel est défini uniquement pour les vecteurs de dimension 3 !",vectorExpected:"Un vecteur était attendu ! Reçu : {{type}}.",univariatePolynomialOnly:"Cette fonction est prise en charge uniquement pour les polynômes univariés !",convergenceFailed:"Échec de la convergence ! {{iters}} itérations ont été tentées.",endPointIsRoot:"Le point d'extrémité est une racine.",zeroDerivative:"La dérivée est nulle en x = {{x}}. Impossible de continuer.",tooManyUnknowns:"Trop d'inconnues !",solveSystemInfiniteSolutions:"Ce système ne possède pas un ensemble fini de solutions isolées !",solveSystemPolynomialOnly:"solveSystem prend actuellement en charge uniquement les systèmes linéaires ou polynomiaux !",solveSystemNonRationalUnsupported:"Ce système polynomial non linéaire nécessite une résolution non rationnelle ou non symbolique, qui n’est pas encore prise en charge !",setJSFunctionExpectsFunction:"Le paramètre function lors de la définition d’une fonction JS doit être de type function !",functionRequiresMinAndMaxArgs:"Vous devez fournir un nombre minimal et maximal d’arguments lors de la définition de la fonction !"},deu:{notImplemented:"Diese Methode wurde noch nicht implementiert.",noInverse:"Die Inverse konnte nicht berechnet werden!",undefinedValue:"Der angeforderte Wert ist nicht definiert!",univariateInputOnly:"Die Eingabe für diese Funktion muss univariat sein!",differentSignsAtEndPointsRequired:"Die Funktion muss an den Endpunkten a und b unterschiedliche Vorzeichen haben!",integerRequired:"Für diese Funktion muss der Koeffizient eine ganze Zahl sein!",plainVariableExpected:"Eine einfache Variable wurde erwartet! Erhalten: {{input}}.",missingReference:"Die Referenz „{{ref}}“ existiert in diesem Muster nicht!",undefinedDivision:"Division ist für einen Ausdruck dieses Typs nicht definiert! {{type}}",restrictedVariableName:"Der angeforderte Wert kann dem reservierten Namen „{{name}}“ nicht zugewiesen werden!",noVariableInExpression:"Im Ausdruck wurde keine Variable gefunden!",quadraticExpressionExpected:"Der Ausdruck muss quadratisch sein!",wrongInput:"Falsche Eingabe! Erwartet wurde {{expected}}, erhalten wurde {{received}}.",infinityMinusInfinityUndefined:"Unendlich minus Unendlich ist nicht definiert!",inconsistentAssumptions:"Die Annahmen sind widersprüchlich (leere Schnittmenge)!",unsupportedType:"Der angegebene Typ ({{type}}) wird von dieser Funktion nicht unterstützt!",unsupportedOperation:"Diese Operation wird derzeit nicht unterstützt!",buildFunctionUnsupportedFunction:"buildFunction kann die Funktion „{{function}}“ nicht in JavaScript-Zahlenarithmetik kompilieren!",buildFunctionComplexUnsupported:"buildFunction kann Ausdrücke mit der imaginären Einheit nicht in JavaScript-Zahlenarithmetik kompilieren!",nonMatchingDimensions:"Diese Operation kann nicht ausgeführt werden, weil die Dimensionen nicht übereinstimmen!",malformedExpression:"Der fehlerhafte Ausdruck konnte nicht geparst werden!",divisionByZero:"Division durch null ist nicht definiert!",zeroToZeroPower:"0^0 ist nicht definiert!",infinityToPowerZero:"Unendlich^0 ist nicht definiert!",infinityTimesZero:"0*Unendlich ist nicht definiert!",infinityToInfinity:"Unendlich^Unendlich ist nicht definiert!",valueToInfinityUndefined:"{{value}}^Unendlich ist nicht definiert!",atan2Undefined:"atan2 ist für 0, 0 nicht definiert!",tanUndefined:"tan ist für Vielfache von pi/2 nicht definiert!",loopIterationLimitExceeded:"Die Schleife hat das Maximum von {{max}} Iterationen überschritten.",breakOutsideLoop:"break kann nur innerhalb einer Schleife verwendet werden.",continueOutsideLoop:"continue kann nur innerhalb einer Schleife verwendet werden.",letRequiresBindingsAndBody:"let benötigt ein oder mehrere Name/Wert-Paare, gefolgt von einem Ausdrucksrumpf.",secUndefined:"sec ist für ungerade Vielfache von pi/2 nicht definiert!",cscUndefined:"csc ist für Vielfache von pi nicht definiert!",cotUndefined:"cot ist für Vielfache von pi nicht definiert!",cothUndefined:"coth ist für 0 nicht definiert!",cschUndefined:"csch ist für 0 nicht definiert!",atanhUndefined:"atanh ist für 0 nicht definiert!",cannotCreateArrayFromNaN:"Aus NaN kann kein Array erstellt werden!",expressionExpected:"Ein Ausdruck wurde erwartet! Erhalten: {{type}}!",unrecognizedMode:"„{{mode}}“ ist kein gültiger Modus!",notAPolynomial:"Der Ausdruck ist kein gültiges Polynom!",multidegreeMismatch:"Die Anzahl der Variablen muss mit dem Multigrad des Polynoms übereinstimmen!",unknownVariable:"Unbekannte Variable! „{{variable}}“",cannotCreateMatrix:"Die Matrix kann nicht erstellt werden. Die Zeilendimensionen stimmen nicht überein!",cannotMultiplyMatrix:"Die Matrix kann nicht multipliziert werden!",squareMatrixRequired:"Die Matrix muss quadratisch sein!",rowsMustMatch:"Die Zeilen der Matrizen müssen übereinstimmen!",columnsMustMatch:"Die Spalten der Matrizen müssen übereinstimmen!",singularMatrix:"Die angegebene Matrix ist singulär!",matrixExpected:"Eine Matrix wurde erwartet! Erhalten: {{type}}.",mismatchedDimensions:"Die Dimensionen müssen für die Funktion „{{function}}“ übereinstimmen!",incorrectCrossDimension:"Das Kreuzprodukt ist nur für Vektoren der Dimension 3 definiert!",vectorExpected:"Ein Vektor wurde erwartet! Erhalten: {{type}}.",univariatePolynomialOnly:"Diese Funktion wird nur für univariate Polynome unterstützt!",convergenceFailed:"Keine Konvergenz! {{iters}} Iterationen wurden versucht.",endPointIsRoot:"Der Endpunkt ist eine Nullstelle.",zeroDerivative:"Die Ableitung ist bei x = {{x}} null. Fortsetzung nicht möglich.",tooManyUnknowns:"Zu viele Unbekannte!",solveSystemInfiniteSolutions:"Dieses System besitzt keine endliche Menge isolierter Lösungen!",solveSystemPolynomialOnly:"solveSystem unterstützt derzeit nur lineare oder polynomielle Systeme!",solveSystemNonRationalUnsupported:"Dieses nichtlineare polynomielle System erfordert eine nicht rationale oder nicht symbolische Lösung, die noch nicht unterstützt wird!",setJSFunctionExpectsFunction:"Der Funktionsparameter muss beim Festlegen einer JS-Funktion vom Typ function sein!",functionRequiresMinAndMaxArgs:"Beim Festlegen der Funktion müssen minimale und maximale Argumentanzahl angegeben werden!"},por:{notImplemented:"Este método ainda não foi implementado.",noInverse:"Não foi possível calcular a inversa!",undefinedValue:"O valor solicitado não está definido!",univariateInputOnly:"A entrada desta função deve ser univariada!",differentSignsAtEndPointsRequired:"A função deve ter sinais opostos nos pontos extremos a e b!",integerRequired:"Esta função exige que o coeficiente seja um número inteiro!",plainVariableExpected:"Era esperada uma variável simples! Recebido: {{input}}.",missingReference:'A referência "{{ref}}" não existe neste padrão!',undefinedDivision:"A divisão não está definida para uma expressão deste tipo! {{type}}",restrictedVariableName:'Não é possível atribuir o valor solicitado ao nome reservado "{{name}}"!',noVariableInExpression:"Nenhuma variável foi encontrada na expressão!",quadraticExpressionExpected:"A expressão deve ser quadrática!",wrongInput:"Entrada incorreta! Esperado {{expected}}, mas recebido {{received}}.",infinityMinusInfinityUndefined:"Infinito menos infinito não está definido!",inconsistentAssumptions:"As suposições são inconsistentes (interseção vazia)!",unsupportedType:"O tipo fornecido ({{type}}) não é compatível com esta função!",unsupportedOperation:"Esta operação não é suportada atualmente!",buildFunctionUnsupportedFunction:'buildFunction não pode compilar a função "{{function}}" para aritmética numérica JavaScript!',buildFunctionComplexUnsupported:"buildFunction não pode compilar expressões que contêm a unidade imaginária para aritmética numérica JavaScript!",nonMatchingDimensions:"Esta operação não pode ser concluída porque as dimensões não correspondem!",malformedExpression:"Não foi possível analisar a expressão malformada!",divisionByZero:"A divisão por zero não está definida!",zeroToZeroPower:"0^0 não está definido!",infinityToPowerZero:"Infinito^0 não está definido!",infinityTimesZero:"0*Infinito não está definido!",infinityToInfinity:"Infinito^Infinito não está definido!",valueToInfinityUndefined:"{{value}}^Infinito não está definido!",atan2Undefined:"atan2 não está definida para 0, 0!",tanUndefined:"tan não está definida para múltiplos de pi/2!",loopIterationLimitExceeded:"O laço excedeu o máximo de {{max}} iterações.",breakOutsideLoop:"break só pode ser usado dentro de um laço.",continueOutsideLoop:"continue só pode ser usado dentro de um laço.",letRequiresBindingsAndBody:"let exige um ou mais pares nome/valor seguidos de uma expressão de corpo.",secUndefined:"sec não está definida para múltiplos ímpares de pi/2!",cscUndefined:"csc não está definida para múltiplos de pi!",cotUndefined:"cot não está definida para múltiplos de pi!",cothUndefined:"coth não está definida para 0!",cschUndefined:"csch não está definida para 0!",atanhUndefined:"atanh não está definida para 0!",cannotCreateArrayFromNaN:"Não é possível criar um array a partir de NaN!",expressionExpected:"Era esperada uma expressão! Recebido: {{type}}!",unrecognizedMode:'"{{mode}}" não é um modo válido!',notAPolynomial:"A expressão não é um polinômio válido!",multidegreeMismatch:"O número de variáveis deve corresponder ao multigrau do polinômio!",unknownVariable:'Variável desconhecida! "{{variable}}"',cannotCreateMatrix:"Não foi possível criar a matriz. As dimensões das linhas não correspondem!",cannotMultiplyMatrix:"Não é possível multiplicar a matriz!",squareMatrixRequired:"A matriz deve ser quadrada!",rowsMustMatch:"As linhas das matrizes devem corresponder!",columnsMustMatch:"As colunas das matrizes devem corresponder!",singularMatrix:"A matriz fornecida é singular!",matrixExpected:"Era esperada uma matriz! Recebido: {{type}}.",mismatchedDimensions:'As dimensões devem corresponder para a função "{{function}}"!',incorrectCrossDimension:"O produto vetorial só é definido para vetores de dimensão 3!",vectorExpected:"Era esperado um vetor! Recebido: {{type}}.",univariatePolynomialOnly:"Esta função é suportada apenas para polinômios univariados!",convergenceFailed:"Falha na convergência! Foram tentadas {{iters}} iterações.",endPointIsRoot:"O ponto extremo é uma raiz.",zeroDerivative:"A derivada é zero em x = {{x}}. Não é possível continuar.",tooManyUnknowns:"Muitas incógnitas!",solveSystemInfiniteSolutions:"Este sistema não possui um conjunto finito de soluções isoladas!",solveSystemPolynomialOnly:"solveSystem atualmente suporta apenas sistemas lineares ou polinomiais!",solveSystemNonRationalUnsupported:"Este sistema polinomial não linear exige resolução não racional ou não simbólica, que ainda não é suportada!",setJSFunctionExpectsFunction:"O parâmetro da função, ao definir uma função JS, deve ser do tipo function!",functionRequiresMinAndMaxArgs:"É necessário fornecer os números mínimo e máximo de argumentos ao definir a função!"},ita:{notImplemented:"Questo metodo non è ancora stato implementato.",noInverse:"Impossibile calcolare l’inversa!",undefinedValue:"Il valore richiesto non è definito!",univariateInputOnly:"L’input di questa funzione deve essere univariato!",differentSignsAtEndPointsRequired:"La funzione deve avere segni opposti agli estremi a e b!",integerRequired:"Questa funzione richiede che il coefficiente sia un numero intero!",plainVariableExpected:"Era attesa una variabile semplice! Ricevuto: {{input}}.",missingReference:'Il riferimento "{{ref}}" non esiste in questo modello!',undefinedDivision:"La divisione non è definita per un’espressione di questo tipo! {{type}}",restrictedVariableName:'Impossibile assegnare il valore richiesto al nome riservato "{{name}}"!',noVariableInExpression:"Nessuna variabile trovata nell’espressione!",quadraticExpressionExpected:"L’espressione deve essere quadratica!",wrongInput:"Input errato! Atteso {{expected}}, ricevuto {{received}}.",infinityMinusInfinityUndefined:"Infinito meno infinito non è definito!",inconsistentAssumptions:"Le ipotesi sono incoerenti (intersezione vuota)!",unsupportedType:"Il tipo fornito ({{type}}) non è supportato da questa funzione!",unsupportedOperation:"Questa operazione non è attualmente supportata!",buildFunctionUnsupportedFunction:'buildFunction non può compilare la funzione "{{function}}" nell’aritmetica numerica JavaScript!',buildFunctionComplexUnsupported:"buildFunction non può compilare espressioni contenenti l’unità immaginaria nell’aritmetica numerica JavaScript!",nonMatchingDimensions:"Questa operazione non può essere completata perché le dimensioni non corrispondono!",malformedExpression:"Impossibile analizzare l’espressione non valida!",divisionByZero:"La divisione per zero non è definita!",zeroToZeroPower:"0^0 non è definito!",infinityToPowerZero:"Infinito^0 non è definito!",infinityTimesZero:"0*Infinito non è definito!",infinityToInfinity:"Infinito^Infinito non è definito!",valueToInfinityUndefined:"{{value}}^Infinito non è definito!",atan2Undefined:"atan2 non è definita per 0, 0!",tanUndefined:"tan non è definita per multipli di pi/2!",loopIterationLimitExceeded:"Il ciclo ha superato il massimo di {{max}} iterazioni.",breakOutsideLoop:"break può essere usato solo all’interno di un ciclo.",continueOutsideLoop:"continue può essere usato solo all’interno di un ciclo.",letRequiresBindingsAndBody:"let richiede una o più coppie nome/valore seguite da un’espressione corpo.",secUndefined:"sec non è definita per multipli dispari di pi/2!",cscUndefined:"csc non è definita per multipli di pi!",cotUndefined:"cot non è definita per multipli di pi!",cothUndefined:"coth non è definita per 0!",cschUndefined:"csch non è definita per 0!",atanhUndefined:"atanh non è definita per 0!",cannotCreateArrayFromNaN:"Impossibile creare un array da NaN!",expressionExpected:"Era attesa un’espressione! Ricevuto: {{type}}!",unrecognizedMode:'"{{mode}}" non è una modalità valida!',notAPolynomial:"L’espressione non è un polinomio valido!",multidegreeMismatch:"Il numero di variabili deve corrispondere al multigrado del polinomio!",unknownVariable:'Variabile sconosciuta! "{{variable}}"',cannotCreateMatrix:"Impossibile creare la matrice. Le dimensioni delle righe non corrispondono!",cannotMultiplyMatrix:"Impossibile moltiplicare la matrice!",squareMatrixRequired:"La matrice deve essere quadrata!",rowsMustMatch:"Le righe delle matrici devono corrispondere!",columnsMustMatch:"Le colonne delle matrici devono corrispondere!",singularMatrix:"La matrice fornita è singolare!",matrixExpected:"Era attesa una matrice! Ricevuto: {{type}}.",mismatchedDimensions:'Le dimensioni devono corrispondere per la funzione "{{function}}"!',incorrectCrossDimension:"Il prodotto vettoriale è definito solo per vettori di dimensione 3!",vectorExpected:"Era atteso un vettore! Ricevuto: {{type}}.",univariatePolynomialOnly:"Questa funzione è supportata solo per polinomi univariati!",convergenceFailed:"Convergenza non riuscita! Sono state tentate {{iters}} iterazioni.",endPointIsRoot:"Il punto estremo è una radice.",zeroDerivative:"La derivata è zero in x = {{x}}. Impossibile continuare.",tooManyUnknowns:"Troppe incognite!",solveSystemInfiniteSolutions:"Questo sistema non ha un insieme finito di soluzioni isolate!",solveSystemPolynomialOnly:"solveSystem attualmente supporta solo sistemi lineari o polinomiali!",solveSystemNonRationalUnsupported:"Questo sistema polinomiale non lineare richiede una risoluzione non razionale o non simbolica, che non è ancora supportata!",setJSFunctionExpectsFunction:"Il parametro della funzione, quando si imposta una funzione JS, deve essere di tipo function!",functionRequiresMinAndMaxArgs:"È necessario fornire il numero minimo e massimo di argomenti quando si imposta la funzione!"},nld:{notImplemented:"Deze methode is nog niet geïmplementeerd.",noInverse:"Kan de inverse niet berekenen!",undefinedValue:"De gevraagde waarde is niet gedefinieerd!",univariateInputOnly:"De invoer voor deze functie moet univariaat zijn!",differentSignsAtEndPointsRequired:"De functie moet tegengestelde tekens hebben bij de eindpunten a en b!",integerRequired:"Deze functie vereist dat de coëfficiënt een geheel getal is!",plainVariableExpected:"Er werd een eenvoudige variabele verwacht! Ontvangen: {{input}}.",missingReference:'De verwijzing "{{ref}}" bestaat niet in dit patroon!',undefinedDivision:"Deling is niet gedefinieerd voor een uitdrukking van dit type! {{type}}",restrictedVariableName:'Kan de gevraagde waarde niet toewijzen aan de gereserveerde naam "{{name}}"!',noVariableInExpression:"Geen variabele gevonden in de uitdrukking!",quadraticExpressionExpected:"De uitdrukking moet kwadratisch zijn!",wrongInput:"Onjuiste invoer! Verwacht: {{expected}}, ontvangen: {{received}}.",infinityMinusInfinityUndefined:"Oneindig min oneindig is niet gedefinieerd!",inconsistentAssumptions:"De aannames zijn inconsistent (lege doorsnede)!",unsupportedType:"Het opgegeven type ({{type}}) wordt niet ondersteund voor deze functie!",unsupportedOperation:"Deze bewerking wordt momenteel niet ondersteund!",buildFunctionUnsupportedFunction:'buildFunction kan de functie "{{function}}" niet compileren naar JavaScript-rekenkunde met getallen!',buildFunctionComplexUnsupported:"buildFunction kan uitdrukkingen met de imaginaire eenheid niet compileren naar JavaScript-rekenkunde met getallen!",nonMatchingDimensions:"Deze bewerking kan niet worden voltooid omdat de dimensies niet overeenkomen!",malformedExpression:"Kan de onjuist gevormde uitdrukking niet parseren!",divisionByZero:"Delen door nul is niet gedefinieerd!",zeroToZeroPower:"0^0 is niet gedefinieerd!",infinityToPowerZero:"Oneindig^0 is niet gedefinieerd!",infinityTimesZero:"0*Oneindig is niet gedefinieerd!",infinityToInfinity:"Oneindig^Oneindig is niet gedefinieerd!",valueToInfinityUndefined:"{{value}}^Oneindig is niet gedefinieerd!",atan2Undefined:"atan2 is niet gedefinieerd voor 0, 0!",tanUndefined:"tan is niet gedefinieerd voor veelvouden van pi/2!",loopIterationLimitExceeded:"De lus heeft het maximum van {{max}} iteraties overschreden.",breakOutsideLoop:"break kan alleen binnen een lus worden gebruikt.",continueOutsideLoop:"continue kan alleen binnen een lus worden gebruikt.",letRequiresBindingsAndBody:"let vereist een of meer naam/waarde-paren gevolgd door een hoofdexpressie.",secUndefined:"sec is niet gedefinieerd voor oneven veelvouden van pi/2!",cscUndefined:"csc is niet gedefinieerd voor veelvouden van pi!",cotUndefined:"cot is niet gedefinieerd voor veelvouden van pi!",cothUndefined:"coth is niet gedefinieerd voor 0!",cschUndefined:"csch is niet gedefinieerd voor 0!",atanhUndefined:"atanh is niet gedefinieerd voor 0!",cannotCreateArrayFromNaN:"Kan geen array maken van NaN!",expressionExpected:"Er werd een uitdrukking verwacht! Ontvangen: {{type}}!",unrecognizedMode:'"{{mode}}" is geen geldige modus!',notAPolynomial:"De uitdrukking is geen geldig polynoom!",multidegreeMismatch:"Het aantal variabelen moet overeenkomen met de multigraad van het polynoom!",unknownVariable:'Onbekende variabele! "{{variable}}"',cannotCreateMatrix:"Kan de matrix niet maken. De rijafmetingen komen niet overeen!",cannotMultiplyMatrix:"Kan de matrix niet vermenigvuldigen!",squareMatrixRequired:"De matrix moet vierkant zijn!",rowsMustMatch:"De rijen van de matrices moeten overeenkomen!",columnsMustMatch:"De kolommen van de matrices moeten overeenkomen!",singularMatrix:"De opgegeven matrix is singulier!",matrixExpected:"Er werd een matrix verwacht! Ontvangen: {{type}}.",mismatchedDimensions:'De dimensies moeten overeenkomen voor de functie "{{function}}"!',incorrectCrossDimension:"Het kruisproduct is alleen gedefinieerd voor vectoren met dimensie 3!",vectorExpected:"Er werd een vector verwacht! Ontvangen: {{type}}.",univariatePolynomialOnly:"Deze functie wordt alleen ondersteund voor univariate polynomen!",convergenceFailed:"Convergentie mislukt! Er zijn {{iters}} iteraties geprobeerd.",endPointIsRoot:"Het eindpunt is een wortel.",zeroDerivative:"De afgeleide is nul bij x = {{x}}. Kan niet doorgaan.",tooManyUnknowns:"Te veel onbekenden!",solveSystemInfiniteSolutions:"Dit stelsel heeft geen eindige verzameling geïsoleerde oplossingen!",solveSystemPolynomialOnly:"solveSystem ondersteunt momenteel alleen lineaire of polynomiale stelsels!",solveSystemNonRationalUnsupported:"Dit niet-lineaire polynomiale stelsel vereist een niet-rationele of niet-symbolische oplossing, die nog niet wordt ondersteund!",setJSFunctionExpectsFunction:"De functieparameter moet bij het instellen van een JS-functie van het type function zijn!",functionRequiresMinAndMaxArgs:"U moet het minimale en maximale aantal argumenten opgeven bij het instellen van de functie!"}}},4737(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MultiPoly=void 0,t.expToKey=expToKey,t.keyToExp=keyToExp;class MultiPoly{terms;constructor(e){this.terms=e?new Map(e):new Map}static constant(e){const t=new MultiPoly;return 0n!==e&&t.terms.set("",e),t}static monomial(e,t){const n=new MultiPoly;if(0n===e)return n;const i=new Map;for(let e=0;e<t.length;e++)0!==t[e]&&i.set(e,t[e]);return n.terms.set(expToKey(i),e),n}static one(){return MultiPoly.constant(1n)}static variable(e){const t=new MultiPoly,n=new Map([[e,1]]);return t.terms.set(expToKey(n),1n),t}static zero(){return new MultiPoly}clone(){return new MultiPoly(new Map(this.terms))}constantTerm(){return this.terms.get("")??0n}degree(e){let t=-1;for(const n of this.terms.keys()){const i=keyToExp(n).get(e)??0;i>t&&(t=i)}return 0===this.terms.size?-1:t}getCoeff(e){const t=new Map;for(let n=0;n<e.length;n++)0!==e[n]&&t.set(n,e[n]);return this.terms.get(expToKey(t))??0n}isConstant(){return 0===this.terms.size||!(1!==this.terms.size||!this.terms.has(""))}isZero(){return 0===this.terms.size}leadingCoeff(e){const t=this.degree(e);if(t<0)return MultiPoly.zero();const n=new MultiPoly;for(const[i,r]of this.terms){const s=keyToExp(i);if((s.get(e)??0)===t){const t=new Map(s);t.delete(e),n.terms.set(expToKey(t),r)}}return n}setCoeff(e,t){const n=new Map;for(let t=0;t<e.length;t++)0!==e[t]&&n.set(t,e[t]);const i=expToKey(n);0n===t?this.terms.delete(i):this.terms.set(i,t)}text(e){if(0===this.terms.size)return"0";const t=e,n=[],i=Array.from(this.terms.entries()).sort(([e],[t])=>function compareKeyTotalDegDescThenLex(e,t){const n=keyTotalDegree(e),i=keyTotalDegree(t);return n!==i?i-n:e.localeCompare(t)}(e,t));for(const[e,r]of i){const i=keyToExp(e);let s="";const o=r<0n?-r:r,a=r<0n?"-":"+";if(0===i.size)s=o.toString();else{1n!==o&&(s=o.toString());for(const[e,n]of Array.from(i.entries()).sort((e,t)=>e[0]-t[0])){const i=e<t.length?t[e]:`x${e}`;s+=1===n?i:`${i}^${n}`}""===s&&(s="1")}n.push((0===n.length?"+"===a?"":"-":` ${a} `)+s)}return n.join("")||"0"}totalDegree(){let e=-1;for(const t of this.terms.keys()){const n=keyToExp(t);let i=0;for(const e of n.values())i+=e;i>e&&(e=i)}return 0===this.terms.size?-1:e}trim(){for(const[e,t]of this.terms.entries())0n===t&&this.terms.delete(e)}variables(){const e=new Set;for(const t of this.terms.keys()){const n=keyToExp(t);for(const t of n.keys())e.add(t)}return e}}function expToKey(e){const t=Array.from(e.entries()).filter(([,e])=>0!==e).sort((e,t)=>e[0]-t[0]);return 0===t.length?"":t.map(([e,t])=>`${e}:${t}`).join(",")}function keyToExp(e){const t=new Map;if(""===e)return t;for(const n of e.split(",")){const[i,r]=n.split(":"),s=Number(i),o=Number(r);if(!Number.isFinite(s)||!Number.isFinite(o))throw new Error(`keyToExpImpl: invalid monomial key '${e}'`);0!==o&&t.set(s,o)}return t}function keyTotalDegree(e){if(""===e)return 0;let t=0;for(const n of e.split(",")){const[,e]=n.split(":");t+=Number(e)}return t}t.MultiPoly=MultiPoly},4861(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),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},t.toExpressions=function toExpressions(e){return e.map(e=>i.Expression.create(e))};const i=n(296);function isEnumerable(e){return void 0!==e&&!!e.isEnumerable}},4895(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),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`)}return[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),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}},4988(e,t){"use strict";function abs(e){return e<0n?-e:e}function gcd(e,t){for(e=abs(e),t=abs(t);0n!==t;)[e,t]=[t,e%t];return e}function pow(e,t){if(t<0n)throw new Error("pow: negative exponent");let n=e,i=t,r=1n;for(;i>0n;)1n&i&&(r*=n),n*=n,i>>=1n;return r}function powN(e,t){if(!Number.isInteger(t)||t<0)throw new Error("powN: exponent must be a nonnegative integer");return pow(e,BigInt(t))}function bigIntSqrt(e){if(e<0n)throw new Error("bigIntSqrt: negative input");if(e<2n)return e;let t=e,n=t+1n>>1n;for(;n<t;)t=n,n=n+e/n>>1n;return t}function modNorm(e,t){if(0n===t)throw new Error("modNorm: modulus must be nonzero");const n=abs(t),i=e%n;return i<0n?i+n:i}function isPrime32(e){if(!Number.isInteger(e)||e<2)return!1;if(2===e||3===e)return!0;if(!(1&e))return!1;if(e%3==0)return!1;const t=Math.floor(Math.sqrt(e));for(let n=5;n<=t;n+=6)if(e%n===0||e%(n+2)===0)return!1;return!0}Object.defineProperty(t,"__esModule",{value:!0}),t.GcdBudgetExceededError=t.PrimeSelectionError=void 0,t.abs=abs,t.gcd=gcd,t.pow=pow,t.powN=powN,t.bigIntSqrt=bigIntSqrt,t.intNthRootExact=function intNthRootExact(e,t){if(!Number.isInteger(t)||t<=0)throw new Error("intNthRootExact: n must be a positive integer");if(e<0n){if(!(1&t))return null;const n=intNthRootExact(-e,t);return null===n?null:-n}if(0n===e)return 0n;if(1n===e)return 1n;let n=0n,i=1n;for(;powN(i,t)<e;)i<<=1n;for(;n+1n<i;){const r=n+i>>1n,s=powN(r,t);if(s===e)return r;s<e?n=r:i=r}return powN(i,t)===e?i:powN(n,t)===e?n:null},t.getDivisors=function getDivisors(e){if(e<=0n)throw new Error("getDivisors: n must be positive");const t=[],n=bigIntSqrt(e);for(let i=1n;i<=n;i++)if(e%i===0n){t.push(i);const n=e/i;n!==i&&t.push(n)}return t.sort((e,t)=>e<t?-1:e>t?1:0),t},t.modNorm=modNorm,t.modSymmetric=function modSymmetric(e,t){if(0n===t)throw new Error("modSymmetric: modulus must be nonzero");const n=abs(t),i=modNorm(e,n);return i>n/2n?i-n:i},t.modInv=function modInv(e,t){const n=modNorm(e,t);if(0n===n)throw new Error("modInv: non-invertible (0)");const{g:i,x:r}=function egcd(e,t){let n=e,i=t,r=1n,s=0n,o=0n,a=1n;for(;0n!==i;){const e=n/i;[n,i]=[i,n-e*i],[r,s]=[s,r-e*s],[o,a]=[a,o-e*a]}return{g:n,x:r,y:o}}(n,t);if(1n!==i&&-1n!==i)throw new Error("modInv: non-invertible");return modNorm(r,t)},t.contentBigint=function contentBigint(e){let t=0n;for(const n of e)if(t=gcd(t,abs(n)),1n===t)return 1n;return t},t.bigintBitLength=function bigintBitLength(e){e<0n&&(e=-e);let t=0;for(;e>0n;)t++,e>>=1n;return t},t.nextPrime32=function nextPrime32(e){let t=e;if(t<=2)return 2;for(1&t||t++;!isPrime32(t);)t+=2;return t};class AlgebraError extends Error{details;phase;constructor(e,t="unknown",n){super(e),this.name=this.constructor.name,this.phase=t,this.details=n??{}}}t.PrimeSelectionError=class PrimeSelectionError extends AlgebraError{constructor(e,t){super(e,"prime-selection",t)}},t.GcdBudgetExceededError=class GcdBudgetExceededError extends AlgebraError{constructor(e,t){super(e,"budget",t)}}},5118(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),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()},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}},5141(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.factorPolynomialBig=factorPolynomialBig,t.factorPolynomial=function factorPolynomial(e){Array.isArray(e)&&function assertSafeIntArray(e,t){if(0===e.length)throw new Error(`${t}: empty coefficient array`);for(let n=0;n<e.length;n++){const i=e[n];if(!Number.isFinite(i)||!Number.isInteger(i)||!Number.isSafeInteger(i))throw new Error(`${t}: coefficient at index ${n} is not a safe integer: ${i}`)}}(e,"factorPolynomial");const t=factorPolynomialBig(function toBigFromNumberPoly(e){return(0,r.zTrim)(e.map(e=>BigInt(e)))}(e)),n=(()=>{if(t.content>BigInt(Number.MAX_SAFE_INTEGER)||t.content<BigInt(Number.MIN_SAFE_INTEGER))throw new Error(`factorPolynomial: content out of safe range: ${t.content.toString()}`);return Number(t.content)})(),i=t.factors.map(e=>({coefficients:toNumberFromBigPoly(e.coefficients),multiplicity:e.multiplicity}));return{content:n,factors:i}};const i=n(4988),r=n(9350);function sqrtExactBigint(e){if(e<0n)return null;const t=(0,i.bigIntSqrt)(e);return t*t===e?t:null}function degZPoly(e){const t=(0,r.zTrim)(e);return 1===t.length&&0n===t[0]?-1:t.length-1}const modP=(e,t)=>(0,i.modNorm)(e,t),invP=(e,t)=>(0,i.modInv)(e,t),asFp=(e,t)=>({p:t,coeffs:e}),addFp=(e,t,n)=>(0,r.fpAdd)(asFp(e,n),asFp(t,n)).coeffs,subFp=(e,t,n)=>(0,r.fpSub)(asFp(e,n),asFp(t,n)).coeffs,mulFp=(e,t,n)=>(0,r.fpMul)(asFp(e,n),asFp(t,n)).coeffs,scalarMulFp=(e,t,n)=>(0,r.fpScale)(asFp(e,n),t).coeffs,divFp=(e,t,n)=>{const{q:i,r:s}=(0,r.fpDivRem)(asFp(e,n),asFp(t,n));return[i.coeffs,s.coeffs]},gcdFp=(e,t,n)=>(0,r.fpGCD)(asFp(e,n),asFp(t,n)).coeffs;function powXModFp(e,t,n){if(0n===e)return[1n];let i=[1n],s=[0n,1n];s=divFp(s,t,n)[1];let o=e;for(;o>0n;)1n&o&&(i=divFp(mulFp(i,s,n),t,n)[1]),s=divFp(mulFp(s,s,n),t,n)[1],o>>=1n;return(0,r.zTrim)(i)}function powPolyModFp(e,t,n,i){if(0n===t)return[1n];let s=[1n],o=divFp(e,n,i)[1],a=t;for(;a>0n;)1n&a&&(s=divFp(mulFp(s,o,i),n,i)[1]),o=divFp(mulFp(o,o,i),n,i)[1],a>>=1n;return(0,r.zTrim)(s)}function berlekampMatrixFp(e,t){const n=degZPoly(e);if(n<=0)return[];const r=[];for(let s=0;s<n;s++){const o=powXModFp((0,i.pow)(t,BigInt(s)),e,t),a=new Array(n).fill(0n);for(let e=0;e<n;e++)a[e]=modP(o[e]??0n,t);a[s]=modP(a[s]-1n,t),r.push(a)}return r}function nullSpaceFp(e,t){const n=e.length;if(0===n)return[];const i=e[0].length,r=e.map(e=>e.map(e=>modP(e,t))),s=[];let o=0;for(let e=0;e<i&&o<n;e++){let a=-1;for(let t=o;t<n;t++)if(0n!==r[t][e]){a=t;break}if(-1===a)continue;[r[o],r[a]]=[r[a],r[o]];const l=invP(r[o][e],t);for(let n=e;n<i;n++)r[o][n]=modP(r[o][n]*l,t);for(let s=0;s<n;s++){if(s===o)continue;const n=r[s][e];if(0n!==n)for(let a=e;a<i;a++)r[s][a]=modP(r[s][a]-n*r[o][a],t)}s.push(e),o++}const a=new Array(i).fill(!1);for(const e of s)a[e]=!0;const l=[];for(let e=0;e<i;e++)a[e]||l.push(e);const u=[];for(const e of l){const n=new Array(i).fill(0n);n[e]=1n;for(let e=s.length-1;e>=0;e--){const o=s[e];let a=0n;for(let s=o+1;s<i;s++)a=modP(a+r[e][s]*n[s],t);n[o]=modP(-a,t)}u.push(n)}if(!u.some(e=>1n===e[0]&&e.slice(1).every(e=>0n===e))){const e=new Array(i).fill(0n);e[0]=1n,u.unshift(e)}return u}function berlekampFactorFp(e,t){let n=(0,r.zTrim)(e.slice());const s=degZPoly(n);if(s<=0)return[n];if(1===s)return[n];const o=invP((0,r.zLC)(n),t);n=scalarMulFp(n,o,t);const a=nullSpaceFp(berlekampMatrixFp(n,t),t);if(a.length<=1)return[n];const l=a.map(e=>function vecToPoly(e,t){return(0,r.zTrim)(e.map(e=>modP(e,t)))}(e,t));let u=[n];for(let e=0;e<l.length;e++){const n=l[e];if(degZPoly(n)<=0)continue;const i=[];let s=!1;for(const e of u){if(degZPoly(e)<=1){i.push(e);continue}let o=!1;for(let a=0n;a<t;a++){const l=n.slice();l[0]=modP((l[0]??0n)-a,t);const u=gcdFp(e,(0,r.zTrim)(l),t);if(degZPoly(u)>0&°ZPoly(u)<degZPoly(e)){const[n]=divFp(e,u,t);i.push(u,n),s=!0,o=!0;break}}o||i.push(e)}u=i}const trySplitCZ=(e,n)=>{const r=degZPoly(e);if(r<=1)return null;const s=new Array(r).fill(0n).map((e,i)=>modP(17n*n+31n*BigInt(i)+n*BigInt(i),t));for(let n=1;n<r;n++){const o=powPolyModFp(s,((0,i.pow)(t,BigInt(n))-1n)/2n,e,t),a=gcdFp(e,subFp(o,[1n],t),t);if(degZPoly(a)>0&°ZPoly(a)<r){const[n]=divFp(e,a,t);return[a,n]}const l=gcdFp(e,addFp(o,[1n],t),t);if(degZPoly(l)>0&°ZPoly(l)<r){const[n]=divFp(e,l,t);return[l,n]}}return null};for(let e=1n;e<=64n;e++){let t=!1;const n=[];for(const i of u){if(degZPoly(i)<=1){n.push(i);continue}const r=trySplitCZ(i,e);r?(n.push(r[0],r[1]),t=!0):n.push(i)}if(u=n,!t)break}return u}function henselLiftMulti(e,t,n,i){if(0===t.length)return[];if(1===t.length)return[(0,r.zPrimitivePart)(e)];const s=BigInt(n);function liftTree(e,t,n){if(!e.left||!e.right)return;const i=function henselStep(e,t,n,i,s,o,a){const l=a*o,u=(0,r.zMulMod)(t,n,l),c=(0,r.zSubMod)((0,r.zTrimMod)(e,l),u,l),m=(0,r.zMulMod)(i,c,l),{q:p,r:d}=(0,r.zDivRemMod)(m,n,l);let g=(0,r.zAddMod)(t,(0,r.zMulMod)(s,c,l),l);g=(0,r.zAddMod)(g,(0,r.zMulMod)(p,t,l),l);const h=(0,r.zAddMod)(n,d,l),x=(0,r.zAddMod)((0,r.zMulMod)(i,g,l),(0,r.zMulMod)(s,h,l),l),E=(0,r.zSubMod)(x,[1n],l),y=(0,r.zMulMod)(i,E,l),{q:v,r:P}=(0,r.zDivRemMod)(y,h,l),w=(0,r.zSubMod)(i,P,l);let b=(0,r.zSubMod)(s,(0,r.zMulMod)(s,E,l),l);return b=(0,r.zSubMod)(b,(0,r.zMulMod)(v,g,l),l),{g:(0,r.zTrimMod)(g,l),h:(0,r.zTrimMod)(h,l),s:(0,r.zTrimMod)(w,l),t:(0,r.zTrimMod)(b,l)}}(t,e.left.poly,e.right.poly,e.s,e.t,s,n);e.left.poly=i.g,e.right.poly=i.h,e.s=i.s,e.t=i.t,liftTree(e.left,i.g,n),liftTree(e.right,i.h,n)}let o=s;const a=function buildTree(e,t){if(1===e.length)return{poly:(0,r.zTrimMod)(e[0],t)};const n=Math.floor(e.length/2),i=buildTree(e.slice(0,n),t),s=buildTree(e.slice(n),t),o=(0,r.zMulMod)(i.poly,s.poly,t),[,a,l]=function extendedGcdMod(e,t,n){let i=(0,r.zTrimMod)(e,n),s=(0,r.zTrimMod)(t,n),o=[1n],a=[0n],l=[0n],u=[1n];for(;!(0,r.zIsZero)(s);){const{q:e,r:t}=(0,r.zDivRemMod)(i,s,n);i=s,s=t,o=(0,r.zSubMod)(o,(0,r.zMulMod)(e,a,n),n),l=(0,r.zSubMod)(l,(0,r.zMulMod)(e,u,n),n),[o,a]=[a,o],[l,u]=[u,l]}if(!(0,r.zIsZero)(i)){const e=invP((0,r.zLC)(i),n);i=(0,r.zScaleMod)(i,e,n),o=(0,r.zScaleMod)(o,e,n),l=(0,r.zScaleMod)(l,e,n)}return[i,o,l]}(i.poly,s.poly,t);return{poly:o,s:a,t:l,left:i,right:s}}(t.map(function toZPolyFromFp(e){return(0,r.zTrim)(e.map(e=>BigInt(e)))}),o);for(let t=1;t<i;t++){const t=o*s;liftTree(a,(0,r.zTrimMod)(e,t),o),o=t}return function collectLeaves(e){return e.left||e.right?[...e.left?collectLeaves(e.left):[],...e.right?collectLeaves(e.right):[]]:[e.poly]}(a).map(e=>(0,r.zTrimMod)(e,o))}function combinations(e,t){const n=[],i=[];return function rec(r){if(i.length!==t)for(let t=r;t<e;t++)i.push(t),rec(t+1),i.pop();else n.push(i.slice())}(0),n}function toFpPolyFromZ(e,t){return(0,r.zTrim)(e.map(e=>modP(e,t)))}function countFactorsModP_Berlekamp(e,t){const n=BigInt(t),i=toFpPolyFromZ(e,n),s=(0,r.zLC)(i);return nullSpaceFp(berlekampMatrixFp(1n===s?i:scalarMulFp(i,invP(s,n),n),n),n).length}function primeBudgetForUniZ(e){const t=Math.max(0,degZPoly(e));let n=0n;for(const t of e){const e=t<0n?-t:t;e>n&&(n=e)}const r=(0,i.bigintBitLength)(n);let s=32+Math.ceil(t/4)+Math.ceil(r/64);return s<32&&(s=32),s>256&&(s=256),s}function factorSquareFreeBig(e){if(degZPoly(e=(0,r.zTrim)(e))<=1)return[(0,r.zPrimitivePart)(e)];const t=function tryFactorQuarticEvenZ(e){if(4!==degZPoly(e=(0,r.zTrim)(e)))return null;const t=e[0]??0n,n=e[1]??0n,i=e[2]??0n,s=e[3]??0n,o=e[4]??0n;if(0n===o)return null;if(1n!==o)return null;if(0n!==n||0n!==s)return null;const a=sqrtExactBigint(t);if(null!==a){const e=sqrtExactBigint(2n*a-i);if(null!==e){const t=[a,e,1n],n=[a,-e,1n];return[(0,r.zPrimitivePart)(t),(0,r.zPrimitivePart)(n)]}}const l=sqrtExactBigint(i*i-4n*t);if(null!==l){const e=-i+l,t=-i-l;if(e%2n==0n&&t%2n==0n){const n=[-e/2n,0n,1n],i=[-t/2n,0n,1n];return[(0,r.zPrimitivePart)(n),(0,r.zPrimitivePart)(i)]}}return null}(e);if(t)return t;const n=function tryFactorStrideSubstitutionZ(e){const t=degZPoly(e=(0,r.zTrim)(e));if(t<4)return null;let n=0;for(let t=1;t<e.length;t++)0n!==(e[t]??0n)&&(n=0===n?t:Number((0,i.gcd)(BigInt(n),BigInt(t))));if(n<2)return null;const s=Math.floor(t/n)+1,o=new Array(s).fill(0n);for(let t=0;t<e.length;t++){const i=e[t]??0n;if(0n!==i){if(t%n!==0)return null;o[t/n]=i}}let a=factorPolynomialBig((0,r.zTrim)(o));if(!a.factors||a.factors.length<=1){const e=(0,r.zTrim)(o),t=degZPoly(e);if(t>=2&&t<=6){const n=e[0]??0n,s=e[t]??1n;if(0n!==n){const o=(0,i.getDivisors)(n<0n?-n:n),l=(0,i.getDivisors)(s<0n?-s:s);for(const n of o){for(const i of l){for(const s of[1n,-1n]){const o=s*n;let l=0n;for(let n=0;n<=t;n++){const r=e[n]??0n;let s=1n;for(let e=0;e<n;e++)s*=o;let a=1n;for(let e=0;e<t-n;e++)a*=i;l+=r*s*a}if(0n===l){const t=[-o,i],n=(0,r.zTryDivExact)(e,t);if(n){const e=factorPolynomialBig(n),i=[{coefficients:(0,r.zTrim)(t),multiplicity:1}];for(const t of e.factors)i.push(t);a={content:e.content,factors:i};break}}}if(a.factors.length>1)break}if(a.factors.length>1)break}}}}if(!a.factors||a.factors.length<=1)return null;const l=[];for(const e of a.factors){const t=e.coefficients,i=e.multiplicity??1,s=new Array((t.length-1)*n+1).fill(0n);for(let e=0;e<t.length;e++)s[e*n]=t[e];const o=factorSquareFreeBig((0,r.zTrim)(s));for(let e=0;e<i;e++)l.push(...o)}return 1n!==a.content&&-1n!==a.content?l.unshift([a.content]):-1n===a.content&&l.length>0&&(l[0]=l[0].map(e=>-e)),l.length>1?l:null}(e);if(n)return n;const s=function coefficientBoundMignotte(e){const t=degZPoly(e);let n=0n;for(const t of e)n+=t*t;const r=(0,i.bigIntSqrt)(n)+((0,i.bigIntSqrt)(n)*(0,i.bigIntSqrt)(n)===n?0n:1n);return(1n<<BigInt(Math.max(0,t)))*r}(e),o=(0,i.abs)((0,r.zLC)(e));let a,l;const u=(0,r.zDerivative)(e),c=primeBudgetForUniZ(e);let m=3;try{m=function findGoodPrimeBig(e,t=3,n){const s=(0,i.abs)((0,r.zLC)(e)),o=(0,r.zDerivative)(e),a=0|(n??primeBudgetForUniZ(e));if(!Number.isFinite(a)||a<=0)throw new i.PrimeSelectionError("findGoodPrimeBig: invalid maxPrimes",{budget:a});let l=0,u=Number.POSITIVE_INFINITY,c=0,m=(0,i.nextPrime32)(Math.max(2,t));for(;c<a;){c++;const t=BigInt(m);if(s%t===0n){m=(0,i.nextPrime32)(m+1);continue}const n=t,r=toFpPolyFromZ(e,n),a=toFpPolyFromZ(o,n);if(0!==degZPoly(gcdFp(r,a,n))){m=(0,i.nextPrime32)(m+1);continue}const p=countFactorsModP_Berlekamp(e,m);if(p<u&&(u=p,l=m,p<=2))break;m=(0,i.nextPrime32)(m+1)}if(0===l)throw new i.PrimeSelectionError(`Could not find suitable prime after trying ${c} primes (budget=${a})`,{tried:c,budget:a,minPrime:t});return{p:l,numFactors:u}}(e).p}catch{m=3}let p,d=0,g=(0,i.nextPrime32)(Math.max(2,m));for(;d<c;){d++;const t=BigInt(g);if(0n===modP((0,r.zLC)(e),t)){g=(0,i.nextPrime32)(g+1);continue}const n=toFpPolyFromZ(e,t),s=toFpPolyFromZ(u,t);if(0!==degZPoly(gcdFp(n,s,t))){g=(0,i.nextPrime32)(g+1);continue}const o=berlekampFactorFp(n,t);if(o.length>1){a=g,l=t,p=o;break}g=(0,i.nextPrime32)(g+1)}if(!a||!l||!p)return[(0,r.zPrimitivePart)(e)];const h=2n*o*s;let x=1,E=l;for(;E<=h;)E*=l,x++;const y=modP((0,r.zLC)(e),l),v=p.map(e=>e.slice());1n!==y&&(v[0]=scalarMulFp(v[0],y,l));const P=function recombineFactorsBig(e,t,n){const i=[];let s=(0,r.zTrim)(e.slice());const o=t.length,a=new Set;for(let e=1;e<o;e++){const l=combinations(o,e);for(const e of l){if(e.some(e=>a.has(e)))continue;let o=[1n];for(const i of e)o=(0,r.zMulMod)(o,t[i],n);const l=(0,r.zToSymmetricMod)(o,n),{primitive:u}=(0,r.zNormalizePrimitiveSign)(l);if(degZPoly(u)<=0)continue;const c=(0,r.zTryDivExact)(s,u);if(c){i.push(u),s=c;for(const t of e)a.add(t);if(degZPoly(s)<=0)return i}}}return degZPoly(s)>0&&i.push((0,r.zPrimitivePart)(s)),i}(e,henselLiftMulti((0,r.zTrim)(e),v,a,x),E);if(1===P.length){const t=(0,r.zPrimitivePart)(e);if(polyEqualsZ(t,(0,r.zPrimitivePart)(P[0])))return[t]}const w=[];for(const t of P)if(degZPoly(t)<=1)w.push((0,r.zPrimitivePart)(t));else{const n=(0,r.zPrimitivePart)(t);polyEqualsZ(n,(0,r.zPrimitivePart)(e))?w.push(n):w.push(...factorSquareFreeBig(n))}return w}function polyEqualsZ(e,t){if(e=(0,r.zTrim)(e),t=(0,r.zTrim)(t),e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function factorPolynomialBig(e){let t=(0,r.zTrim)(e);if((0,r.zIsZero)(t))return{content:0n,factors:[]};if(0===degZPoly(t))return{content:t[0]??0n,factors:[]};const{content:n,primitive:i}=(0,r.zNormalizePrimitiveSign)(t);t=i;const s=function squareFreeFactorizationBig(e){if(degZPoly(e=(0,r.zTrim)(e))<=0)return[];e=(0,r.zPrimitivePart)(e);const t=(0,r.zDerivative)(e);if((0,r.zIsZero)(t))return[[e,1]];let n=(0,r.zGcdPrimitivePRS)(e,t);if(0===degZPoly(n))return[[e,1]];const i=(0,r.zTryDivExact)(e,n);if(!i)return[[e,1]];let s=i,o=1;const a=[];for(;degZPoly(s)>0;){const e=(0,r.zGcdPrimitivePRS)(n,s),t=(0,r.zTryDivExact)(s,e);t&°ZPoly(t)>0&&a.push([(0,r.zPrimitivePart)(t),o]),s=e;const i=(0,r.zTryDivExact)(n,e);if(!i)break;n=i,o++}return a}(t),o=0===s.length?[[t,1]]:s,a={content:n,factors:[]};for(const[e,t]of o){const n=factorSquareFreeBig(e);for(const e of n)a.factors.push({coefficients:(0,r.zPrimitivePart)(e),multiplicity:t})}return a}function toNumberFromBigPoly(e){const t=[];for(const n of e){if(n>BigInt(Number.MAX_SAFE_INTEGER)||n<BigInt(Number.MIN_SAFE_INTEGER))throw new Error(`toNumberFromBigPoly: coefficient out of safe range: ${n.toString()}`);t.push(Number(n))}for(;t.length>1&&0===t[t.length-1];)t.pop();return t}},5190(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),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=new i.Expression(e);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,d=BaseConverter.join(a,u,p||!this.isBracketed(u)||m?r:"");let g=BaseConverter.join(l,c,p||!this.isBracketed(c)||m?r:"");if(l&&c&&this.mode===BaseConverter.modes.TEXT&&(g=this.inBrackets(g)),d&&g){let e=this.toFraction(d,g);return s&&o&&(e=this.inBrackets(e)+o),e}return d}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),d=["",""];d[s?1:0]=p;const g=(o?"-":"")+this.set(l,m,d,c);return this.cleanup(),g.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},5523(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),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)},5530(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),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),d=n(2292),g=n(886),h=n(8533),x=n(1649),E=n(2212),y=n(1097),v=n(959),P=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 w;if(n++>10)w=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))}),w=i}else w=v.tableOfIntegrals.lookup(new d.Pattern(e,[t]),n);else w=e.times(t);if(w||(w=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 d=r[0].div(a).times(e);return d.minus(i.times(p))}(e,t,n)),w||(w=function tryIntegrateByRadicalSubstitutionFastPath(e,t,n){const i=(0,g.getU)(e),s=(0,P.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);return l&&!l.isFunction(c.INTEGRATE)?(0,r.simplify)((0,g.subst)(l,o.Expression.create(s.newVariable),s.backSub)):void 0}(e,t,n)),w||(w=function tryIntegrateSqrtQuadratic(e,t){const n=e.getPower();if(!n.eq((0,l.half)()))return;const i=e.getBase();if((0,P.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 d=o.Expression.create(t),g=d.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(g).times(E);if(!x.isZero()){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(g).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(g).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(g).div(t);return y.plus(x.div((0,l.two)().times(e)).times(o.Expression.toFunction(c.ASIN,[n])))}}}(e,t)),!w&&e.isProduct()){const n=(0,y.tryIntegrateByWrappedFactorSubstitution)(e,e.elementsArray(),t);n&&(w=n)}if(!w&&e.isProduct()){let i=!1;for(const n of e.elementsArray())if(n.isSum()&&(0,P.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&&(w=e)}}}if(!w){const i=(0,E.tryIntegrationByParts)(e,t,integrate,n);i&&(w=i)}if(!w){const n=(0,y.tryIntegrateByLogSubstitution)(e,t);n&&(w=(0,h.log)(n.fx).times(n.constant))}if(!w){const n=(0,y.tryIntegrateBySubstitution)(e,t);if(n){const e=n.power.plus((0,l.one)());w=n.fx.pow(e).div(e).times(n.constant)}}w||(w=function tryIntegratePolynomial(e,t){if(!e.isPolynomialLike()||(0,P.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)),w||(w=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,P.hasTranscendental)(r,t)||(0,P.hasTranscendental)(a,t))return;let d,g,h;try{d=new m.Polynomial(r,[t]),new m.Polynomial(a,[t])}catch{return}if(d.deg()<1)return;try{[g,h]=(0,p.divide)(r,a,void 0,[t])}catch{return}if(o.Expression.create(g).isZero())return;const x=o.Expression.create(g).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),w=integrate(x,t,n);if(w.isFunction(c.INTEGRATE))return;let b=w;if(!E.isZero()){const e=integrate(v,t,n);if(e.isFunction(c.INTEGRATE))return;b=b.plus(e)}return b}(e,t,n)),w||(w=tryIntegrateRational(e,t,n)),w||(w=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}(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,g.getU)(e),d=o.Expression.create(p),h=d.pow((0,l.two)()),E=(0,l.one)().plus(h),y=(0,l.two)().times(d).div(E),v=(0,l.one)().minus(h).div(E);let P=(0,g.subst)(i,(0,x.sin)(a),y);P=(0,g.subst)(P,(0,x.cos)(a),v);const w=(0,l.two)().div(u.times(E));if(P=P.times(w),P=(0,r.simplify)(P),P.hasVariable(t))return;if(!isRationalFunctionInVariable(P,p))return;const b=integrate(P,p,n);if(b.isFunction(c.INTEGRATE))return;const M=(0,x.tan)(a.div((0,l.two)()));return(0,r.simplify)((0,g.subst)(b,d,M))}(e,t,n)),w&&(w=w.times(i))}return w??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,P.hasTranscendental)(r,t)||(0,P.hasTranscendental)(s,t))return;let a,u;try{a=new m.Polynomial(r,[t]),u=new m.Polynomial(s,[t])}catch{return}const d=a.deg(),g=u.deg();if(g<2)return;let x=(0,l.zero)(),E=r;if(d>=g){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(d>=g){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,P.hasTranscendental)(n,t)||(0,P.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)(),d=r[0]??(0,l.zero)();if(a.isZero())return;const g=o.Expression.create(t),x=p.div((0,l.two)().times(a)),E=d.minus(x.times(u));let y=(0,l.zero)();if(x.isZero()||(y=y.plus(x.times((0,h.log)(i)))),E.isZero())return y;const v=(0,l.two)().times(a).times(g).plus(u),w=(0,l.four)().times(a).times(m).minus(u.pow("2"));let b;if(w.isZero())b=(0,l.two)().times("-1").div(v);else if(w.gt((0,l.zero)())){const e=w.pow((0,l.half)()),t=v.div(e);b=(0,l.two)().div(e).times(o.Expression.toFunction(c.ATAN,[t]))}else{if(!w.lt((0,l.zero)()))return;{const e=w.times("-1").pow((0,l.half)()),t=v.minus(e).div(v.plus(e));b=(0,h.log)(t).div(e)}}return y.plus(E.times(b))}(y,t);if(v)return x.plus(v);let w;try{w=(0,i.partfrac)(y,t)}catch{return}if(w.text()===y.text())return;const b=integrate(w,t,n);return b.isFunction(c.INTEGRATE)?void 0:x.plus(b)}},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=void 0;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);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 makeCopy(e){const t=new Rational(e.numerator,e.denominator);return t.value=e.value,t.asDecimal=e.asDecimal,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?Rational.makeCopy(e):e}abs(){const e=this.copy();return e.numerator=(0,a.abs)(e.numerator),e.updateValue(),e}copy(){return Rational.makeCopy(this)}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;const n=this.isInteger();if(this.asDecimal||e?.decimal)if(n)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=n?`${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";Object.defineProperty(t,"__esModule",{value:!0}),t.ValuesSet=void 0;const i=n(6746),r=n(6441),s=n(4703),o=n(8300);class ValuesSet extends i.MathematicalAggregate{_elements=[];dataType=o.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,o.SET)||(0,r.isNerdamerNativeType)(e,o.SOLUTIONS_SET)}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(`Index ${t} out of bounds for ${this.dataType} of length ${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(`Index ${n} out of bounds for ${this.dataType} of length ${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(){return this.copy().each(e=>e.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},5640(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),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(new a.Expression(this.coeff),{...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=new a.Expression(this.coeff);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},5817(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SPECIAL=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],t.SPECIAL=[i.E,i.PI_NAME]},5823(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.preprocess=function preprocess(e,t){let n=function normalizeComments(e){let t="",n=0;for(;n<e.length;){const r=e.indexOf(s,n);if(-1===r){t+=e.slice(n);break}t+=e.slice(n,r);const o=e.indexOf(s,r+2);if(-1===o)throw new i.ParserError(`Missing closing comment delimiter "${s}".`);t+=" ",n=o+2}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?"]":"}";t.push({closingBracket:i,functionName:"("===o?getPreviousIdentifier(e,s):void 0}),n+=o;continue}if(")"===o||"]"===o||"}"===o){const e=t[t.length-1];e?.closingBracket===o&&t.pop(),n+=o;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;n+=l?.functionName===r?",":o}continue}n+=o}return i&&(n=`${r}(${n})`),n}(n);let o=findBracketlessFunction(n,t);for(;o;){const e=findArgumentEnd(n,o.argumentStart,o.maxArgs,o.consumeStatement),i=n.slice(o.nameStart,o.nameEnd),r=n.slice(o.argumentStart,e);n=n.slice(0,o.nameStart)+`${i}(${r})`+n.slice(e),o=findBracketlessFunction(n,t)}return n};const i=n(4703),r="block",s="##";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}},5869(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),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.checkDecimal=function checkDecimal(e,t){return 1/(e%1)<=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}},5894(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CoeffObject=void 0;const i=n(4703),r=n(2116),s=n(5640),o=n(3982),a=n(296),l=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(new a.Expression(this.coeffs[t]),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,l.zero)()),n[i]=e?Number(t):t}return n}toExpression(){let e=(0,l.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,l.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())}}},6056(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.separateVar=separateVar,t.coeffs=function coeffs(e,t,n){const r=n||new o.CoeffObject(t);if(e.isComplex()&&!t.includes(a.Expression.imaginary)){const n=coeffs(e.realPart(),t),i=coeffs(e.imagPart(),t);return n.each((e,t)=>r.add(t,e)),i.each((e,t)=>r.add(t,e.times(a.Expression.Img()))),r}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).each((e,t)=>{r.add(t,n.times(e))}),r;e=s}const u=(0,s.expand)(e);if(u.isSum())u.each(e=>{coeffs(e,t,r)});else{const[n,i]=separateVar(e,t),s=t.map(e=>i.getVariable(e).getPower().text());r.add(s.join(","),n)}return r},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}},6082(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),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(),d=(0,i.simplify)(u.times(p).plus(m.times(c))),g=(0,i.simplify)(c.times(p)),h=d.div(g);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 d=p[0];if(d.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(d.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 d=m.isPosInf()||m.isNegInf()?"inf":m.isZero()?"zero":m.eq((0,s.one)())?"one":"finite",g=p.isPosInf()||p.isNegInf()?"inf":p.isZero()?"zero":"finite";if("one"===d&&"inf"===g)return;if("zero"===d&&"zero"===g)return;if("inf"===d&&"zero"===g)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"===d&&"zero"===g)return(0,s.one)();if(!("finite"!==d&&"one"!==d||"finite"!==g&&"zero"!==g))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,d=!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())&&(d=!0),m.push(i)}if(p&&d){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(!d)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&&!d)return(0,s.zero)();if(d&&!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",d=0){let g;e=r.Expression.create(e),t=r.Expression.create(t),n=r.Expression.create(n);const h=e.hasDecimal();if(d>=12)return r.Expression.toFunction(o.LIMIT,[e,t,n,p]);if(n.isPosInf()||n.isNegInf()){e.isSum()&&(g=tryComposition(e,t,n,p,d));const o=g?void 0:getDominantAtInfinity(e.getNumerator(),t),l=g?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)g=(0,s.zero)();else if(0===u)g=(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?g=r.Expression.Inf():i<0&&(g=r.Expression.NegInf())}}if(!g&&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)g=(0,s.zero)();else if(e>0){let t=o.sign()*l.sign();n.isNegInf()&&e%2!=0&&(t*=-1),t>0?g=r.Expression.Inf():t<0&&(g=r.Expression.NegInf())}}}if(!g&&o&&l&&(g=function tryNonPolynomialInfinityLimit(e,t,n,o,a,l){const c=getInfinityGrowthClassification(e,n),m=getInfinityGrowthClassification(t,n),p=growthTier(c),d=growthTier(m);if(!(p<0||d<0))if(p>d){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<d){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),d=t.getMultiplier(!0),g=(0,i.simplify)(p.div(d));return limit((0,i.simplify)(g.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,d)),!g&&o&&l){const i=o.div(l);i.eq(e)||(g=limit(i,t,n,p,d))}if(!g){const i=tryRewriteIndeterminate(e,t,n,p,d);i&&(g=i)}g||(g=tryComposition(e,t,n,p,d))}else{if(e.isFunction(o.SGN)||e.isFunction(o.ABS)){const i=tryComposition(e,t,n,p,d);void 0!==i&&(g=i)}if(!g){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&&(g=r.Expression.create(e.evaluate({[t.text()]:n}))),g||"nonzero_over_zero"!==s||(g=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 d=l*o;return d===l*p?d>0?r.Expression.Inf():r.Expression.NegInf():void 0}}(e,t,n,p)),!g&&"zero_over_zero"===s){const r=(0,i.simplify)(e);r.eq(e)||(g=limit(r,t,n,p,d))}if(!g){const i=tryRewriteIndeterminate(e,t,n,p,d);i&&(g=i)}if(!g){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 d=m.isZero()&&p.isZero(),g=(m.isPosInf()||m.isNegInf())&&(p.isPosInf()||p.isNegInf());if(!d&&!g)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,d);s&&(g=s)}g||(g=tryComposition(e,t,n,p,d))}}return g||(g=m.tableOfLimits.lookup(new l.Pattern(e,[t.text()]),0)),g??=r.Expression.toFunction(o.LIMIT,[e,t,n,p]),h&&(g.getMultiplier().asDecimal=!0),g}},6099(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.zero=function zero(){return getFromCacheOrCreate("0")},t.quarter=function quarter(){return getFromCacheOrCreate("1/4")},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.minusThree=function minusThree(){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.seven=function seven(){return getFromCacheOrCreate("7")},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.I=function I(){return s.Expression.Img()},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]}},6117(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),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);return n.isOne()||(p=p.pow(n)),t.isOne()||(p=p.times(t)),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}},6184(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),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},6255(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.add=add,t.addPrefix=function addPrefix(e){return e},t.join=join;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:d,INF:g}=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=e.distributeMultiplier(),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=s.Expression.create(t);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{n=s.Expression.create(e);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.multiplier=i,n.power&&(n=s.Expression.setPower(n,e.getPower().copy()))),e.power&&(n=s.Expression.setPower(n,e.getPower().copy()))}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===d||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:d;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.value=s.Expression.getValue(r,"text",o));return i}},6284(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Collection=void 0;const i=n(8505),r=n(6441),s=n(8300);class Collection extends i.StructuredEntity{dataType=s.COLLECTION;elements=[];isEnumerable=!0;precision;constructor(e){super(),this.elements=e||[]}static isCollection(e){return(0,r.isNerdamerNativeType)(e,s.COLLECTION)}__get__(e){const t=e[0];if(t<0||t>=this.elements.length)throw new RangeError(`Index ${t} out of bounds for Collection of length ${this.elements.length}`);return this.elements[t]}__set__(e,t){const n=e[0];if(n<0||n>=this.elements.length)throw new RangeError(`Index ${n} out of bounds for Collection of length ${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},6338(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.collect=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},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()}},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;return s.Expression.isExpression(e)&&e.isPlainVariable()?t=e.value:"string"==typeof e&&(t=e),void 0===t?void 0:l.get(t)},t.assuming=function assuming(e){return e},t.forget=function forget(e){return e.eq(o.ALL_SYMBOL)?clearAssumptions():forgetAssumptionFor(e),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)}},6430(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.determinant=function determinant(e){return e.copy().determinant()},t.nullspace=function nullspace(e,t){return new o.Vector(e.nullspace(t).map(e=>new o.Vector(e)))},t.characteristicPolynomial=function characteristicPolynomial(e,t){if(!e.isSquare())throw new i.UnsupportedOperationError((0,i.message)("squareMatrixRequired"));const n=e.rows(),o=r.Expression.Variable(t),l=a.Matrix.identity(n);let u=l,c=o.pow(n);for(let t=1;t<=n;t++){const i=e.times(u),r=i.trace().neg().div(t);c=c.plus(r.times(o.pow(n-t))),u=i.plus(l.times(r))}return new s.Polynomial(c,[t])};const i=n(4703),r=n(296),s=n(2116),o=n(3982),a=n(4462)},6431(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.GroebnerBudgetExceeded=void 0,t.Groebner=function Groebner(e,t,n="LEX",i=!0){if(0===e.length)return[];const r=t.length,s=groebnerBasis(e,{order:n,reduced:i}),o=new Map,getInfo=e=>{let t=o.get(e);return t||(t={pv:variablePresence(e,r),lt:ltOrNull(e,n,r)},o.set(e,t)),t};return[...s].sort((e,t)=>{const i=getInfo(e),s=getInfo(t);for(let e=0;e<r;e++){const t=i.pv[e]?1:0,n=s.pv[e]?1:0;if(t!==n)return t>n?-1:1}if(i.lt&&s.lt){const e=compareMonomialDense(i.lt.exp,s.lt.exp,n);if(0!==e)return e}const o=e.terms.size,a=t.terms.size;return o!==a?o<a?-1:1:0})},t.groebnerBasisWithOptions=function groebnerBasisWithOptions(e,t){return groebnerBasis(e,t)},t.eliminate=function eliminate(e,t,n,i){if(0===e.length)return[];const r=new Set(n),s=new Set;for(let e=0;e<t.length;e++)r.has(t[e])||s.add(e);const o=groebnerBasis(e,{...i,order:"LEX",reduced:!0}),a=t.length,l=[];for(const e of o){const t=variablePresence(e,a);let n=!0;for(const e of s)if(t[e]){n=!1;break}n&&l.push(e)}return l},t.idealMembership=function idealMembership(e,t,n="LEX",i){if(polyIsZero(e))return!0;if(0===t.length)return!1;const r=groebnerBasis(t,{...i,order:n,reduced:!0});return polyIsZero(reduceByBasis(e,r,n))},t.reduceByBasis=reduceByBasis,t.solve=function solve(e,t,n){if(0===e.length||0===t.length)return[new Map];const i=groebnerBasis(e,{...n,order:"LEX",reduced:!0});if(1===i.length&&i[0].isConstant()&&0n!==i[0].constantTerm())return[];if(0===i.length)return[];const o=t.length;return function backSubstitute(e,t,n){let i=[{assignment:new Map,basis:e.map(e=>(0,s.mvNormalize)(e))}];for(let e=n-1;e>=0;e--){const t=[];for(const{assignment:n,basis:o}of i){const i=o.filter(t=>{if(polyIsZero(t))return!1;for(const n of t.terms.keys()){const t=(0,r.keyToExp)(n);for(const[n,i]of t.entries())if(i>0&&n!==e)return!1}return t.degree(e)>0});if(0===i.length){t.push({assignment:new Map(n),basis:o});continue}const a=rationalRootsUnivariate(i[0],e);for(const r of a){let a=!0;for(let t=1;t<i.length;t++)if(!evaluatesToZero(i[t],e,r)){a=!1;break}if(!a)continue;const l=o.map(t=>{if(t.degree(e)<=0)return t;let n=t;return 1n!==r.d&&(n=scaleByDenomPow(n,e,r.d)),(0,s.mvNormalize)((0,s.substituteVarIndex)(n,e,r.n))}),u=new Map(n);u.set(e,r),t.push({assignment:u,basis:l})}}i=t}return i.map(({assignment:e})=>{const n=new Map;for(const[i,r]of e)i<t.length&&n.set(t[i],r);return n})}(i,t,o)};const i=n(551),r=n(4737),s=n(9350);class GroebnerBudgetExceeded extends Error{stats;constructor(e,t){super(e),this.name="GroebnerBudgetExceeded",this.stats=t}}function ltOrNull(e,t,n){return function mvLeadTermDense(e,t,n){if(0===e.terms.size)return null;let i=null,s=0n;for(const[o,a]of e.terms.entries()){if(0n===a)continue;const e=(0,r.keyToExp)(o),l=new Array(n).fill(0);for(const[t,i]of e.entries())t>=0&&t<n&&(l[t]=i);(!i||compareMonomialDense(l,i,t)>0)&&(i=l,s=a)}return i?{exp:i,coeff:s}:null}(e,t,n)}function polyIsZero(e){return 0===e.terms.size}function numVarsFromPolys(...e){let t=-1;for(const n of e)for(const e of n.terms.keys()){const n=(0,r.keyToExp)(e);for(const[e,i]of n.entries())i>0&&e>t&&(t=e)}return t+1}function polyKey(e){const t=[];for(const[n,i]of e.terms.entries())0n!==i&&t.push(`${n}:${i.toString()}`);return t.sort(),t.join("|")}function primitiveNormalizeOrder(e,t,n){if(polyIsZero(e))return r.MultiPoly.zero();let i=(0,s.mvNormalize)(e);const{primitive:o}=(0,s.mvDivideByCoeffContent)(i);i=(0,s.mvNormalize)(o);const a=ltOrNull(i,t,n);a&&a.coeff<0n&&(i=(0,s.negPoly)(i));const l=ltOrNull(i,t,n);if(l&&0n!==l.coeff&&1n!==l.coeff){const e=l.coeff;let t=!0;for(const n of i.terms.values())if(n%e!==0n){t=!1;break}t&&(i=(0,s.mvNormalize)(function divScalarExact(e,t){if(0n===t)throw new Error("divScalarExact: divide by 0");if(1n===t)return e;const n=new r.MultiPoly;for(const[i,r]of e.terms.entries()){if(r%t!==0n)throw new Error("divScalarExact: non-exact");const e=r/t;0n!==e&&n.terms.set(i,e)}return n.trim(),n}(i,e)))}return i}function sPolynomialFF(e,t,n,i){const o=(0,s.mvNormalize)(e),a=(0,s.mvNormalize)(t),l=ltOrNull(o,n,i),u=ltOrNull(a,n,i);if(!l||!u)return r.MultiPoly.zero();const c=expLcmDense(l.exp,u.exp),m=(0,s.monoSubDense)(c,l.exp),p=(0,s.monoSubDense)(c,u.exp),d=r.MultiPoly.monomial(u.coeff,m),g=r.MultiPoly.monomial(l.coeff,p),h=(0,s.mulPoly)(o,d),x=(0,s.mulPoly)(a,g);return(0,s.mvNormalize)((0,s.subPoly)(h,x))}function normalFormFractionFree(e,t,n,i){let o=(0,s.mvNormalize)(e);if(polyIsZero(o))return o;for(;;){const e=ltOrNull(o,n,i);if(!e)break;let a=!1;for(const l of t){const t=(0,s.mvNormalize)(l);if(polyIsZero(t))continue;const u=ltOrNull(t,n,i);if(!u)continue;if(!(0,s.monoDividesDense)(u.exp,e.exp))continue;const c=(0,s.monoSubDense)(e.exp,u.exp),m=(0,s.scalePoly)(o,u.coeff),p=(0,s.mulPoly)(t,r.MultiPoly.monomial(e.coeff,c));o=(0,s.mvNormalize)((0,s.subPoly)(m,p)),a=!0;break}if(!a)break}return o}function collectDenseTermsDesc(e,t,n){const i=[];for(const[t,s]of e.terms.entries()){if(0n===s)continue;const e=(0,r.keyToExp)(t),o=new Array(n).fill(0);for(const[t,i]of e.entries())t>=0&&t<n&&(o[t]=i);i.push({exp:o,coeff:s})}return i.sort((e,n)=>-compareMonomialDense(e.exp,n.exp,t)),i}function normalFormFractionFreeAllTerms(e,t,n,i){let o=primitiveNormalizeOrder((0,s.mvNormalize)(e),n,i);if(polyIsZero(o)||0===t.length)return o;const a=[];for(const e of t){const t=primitiveNormalizeOrder((0,s.mvNormalize)(e),n,i);if(polyIsZero(t))continue;const r=ltOrNull(t,n,i);r&&0n!==r.coeff&&a.push({poly:t,lt:r})}if(0===a.length)return o;for(;;){let e=!1;const t=collectDenseTermsDesc(o,n,i);if(0===t.length)break;e:for(const l of t)for(const{poly:t,lt:u}of a){if(!(0,s.monoDividesDense)(u.exp,l.exp))continue;const a=(0,s.monoSubDense)(l.exp,u.exp),c=(0,s.scalePoly)(o,u.coeff),m=(0,s.mulPoly)(t,r.MultiPoly.monomial(l.coeff,a));o=primitiveNormalizeOrder((0,s.mvNormalize)((0,s.subPoly)(c,m)),n,i),e=!0;break e}if(!e)break}return o}function variablePresence(e,t){const n=new Array(t).fill(!1);for(const t of e.terms.keys()){const e=(0,r.keyToExp)(t);for(const[t,i]of e.entries())i>0&&(n[t]=!0)}return n}function sugarDegree(e,t,n){const i=ltOrNull(e,t,n);return i?monomialTotalDegreeDense(i.exp):0}function sPairSugar(e,t,n,i){const r=monomialTotalDegreeDense(expLcmDense(n,i)),s=monomialTotalDegreeDense(n),o=monomialTotalDegreeDense(i);return Math.max(e+(r-s),t+(r-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 groebnerBasis(e,t="LEX"){const n="string"==typeof t?{order:t}:t??{},o=n.order??"LEX",a=n.reduced??!0,l=n.maxPairsPopped,u=n.maxBasisSize,c=n.strategy??"sugar",m={pairsPopped:0,pairsSkippedProduct:0,pairsSkippedChain:0,pairsReducedToZero:0,basisAppends:0},p=e.filter(e=>!polyIsZero(e)).map(e=>(0,s.mvNormalize)(e));if(0===p.length)return[];const d=numVarsFromPolys(...p),g=p.slice(),h=g.map(e=>sugarDegree(e,o,d)),x=g.map(e=>{const t=ltOrNull(e,o,d);return t?t.exp:null}),E=new Set,pairKey=(e,t)=>e<t?`${e},${t}`:`${t},${e}`,lmExpCached=e=>{if(e<x.length)return x[e];const t=ltOrNull(g[e],o,d),n=t?t.exp:null;return x[e]=n,n},areCoprimeLM=(e,t)=>{for(let n=0;n<d;n++)if(e[n]>0&&t[n]>0)return!1;return!0},chainCriterionApplies=(e,t)=>{const n=lmExpCached(e),i=lmExpCached(t);if(!n||!i)return!1;const r=expLcmDense(n,i);for(let n=0;n<g.length;n++){if(n===e||n===t)continue;const i=lmExpCached(n);if(i&&(0,s.monoDividesDense)(i,r)&&E.has(pairKey(e,n))&&E.has(pairKey(n,t)))return!0}return!1};if("sugar"===c){const e=[],makePair=(e,t)=>{const n=lmExpCached(e),i=lmExpCached(t);if(!n||!i)return null;const r=expLcmDense(n,i);return{i:e,j:t,sugar:sPairSugar(h[e],h[t],n,i),lcmDeg:monomialTotalDegreeDense(r)}};for(let t=0;t<g.length;t++)for(let n=t+1;n<g.length;n++){const i=makePair(t,n);i&&insertPairSorted(e,i)}for(;e.length>0;){const{i:t,j:n,sugar:i}=e[0];if(e.shift(),m.pairsPopped++,void 0!==l&&m.pairsPopped>l)throw new GroebnerBudgetExceeded(`Groebner budget exceeded: pairsPopped > ${l}`,m);const s=lmExpCached(t),a=lmExpCached(n);if(s&&a&&areCoprimeLM(s,a)){m.pairsSkippedProduct++,E.add(pairKey(t,n));continue}if(chainCriterionApplies(t,n)){m.pairsSkippedChain++,E.add(pairKey(t,n));continue}const c=primitiveNormalizeOrder(normalFormFractionFreeAllTerms(normalFormFractionFree(sPolynomialFF(g[t],g[n],o,d),g,o,d),g,o,d),o,d);if(polyIsZero(c))m.pairsReducedToZero++,E.add(pairKey(t,n));else{if(c.isConstant()&&0n!==c.constantTerm())return[r.MultiPoly.constant(1n)];{const t=g.length;g.push(c);const n=ltOrNull(c,o,d);x.push(n?n.exp:null);const r=sugarDegree(c,o,d);if(h.push(Math.max(i,r)),m.basisAppends++,void 0!==u&&g.length>u)throw new GroebnerBudgetExceeded(`Groebner budget exceeded: basis size > ${u}`,m);for(let n=0;n<t;n++){const i=makePair(n,t);i&&insertPairSorted(e,i)}}}}}else{const e=[];for(let t=0;t<g.length;t++)for(let n=t+1;n<g.length;n++)e.push([t,n]);for(;e.length>0;){const[t,n]=e[0];if(e.shift(),m.pairsPopped++,void 0!==l&&m.pairsPopped>l)throw new GroebnerBudgetExceeded(`Groebner budget exceeded: pairsPopped > ${l}`,m);const i=lmExpCached(t),s=lmExpCached(n);if(i&&s&&areCoprimeLM(i,s)){m.pairsSkippedProduct++,E.add(pairKey(t,n));continue}if(chainCriterionApplies(t,n)){m.pairsSkippedChain++,E.add(pairKey(t,n));continue}const a=primitiveNormalizeOrder(normalFormFractionFreeAllTerms(normalFormFractionFree(sPolynomialFF(g[t],g[n],o,d),g,o,d),g,o,d),o,d);if(polyIsZero(a))m.pairsReducedToZero++,E.add(pairKey(t,n));else{if(a.isConstant()&&0n!==a.constantTerm())return[r.MultiPoly.constant(1n)];{const t=g.length;g.push(a);const n=ltOrNull(a,o,d);if(x.push(n?n.exp:null),m.basisAppends++,void 0!==u&&g.length>u)throw new GroebnerBudgetExceeded(`Groebner budget exceeded: basis size > ${u}`,m);for(let n=0;n<t;n++)e.push([n,t])}}}}return a?function canonicalizeBasis(e,t,n){const r=[],o=e.filter(e=>!polyIsZero(e)).map(e=>(0,s.mvNormalize)(e));for(const e of o){const i=primitiveNormalizeOrder(normalFormFractionFreeAllTerms(normalFormFractionFree(e,r,t,n),r,t,n),t,n);polyIsZero(i)||r.push(i)}const a=[];for(let e=0;e<r.length;e++){const i=r.filter((t,n)=>n!==e),s=primitiveNormalizeOrder(normalFormFractionFreeAllTerms(normalFormFractionFree(r[e],i,t,n),i,t,n),t,n);polyIsZero(s)||a.push(s)}const betterSameLM=(e,r)=>{const s=variablePresence(e,n),o=variablePresence(r,n);let a=0,l=0;for(let e=0;e<n;e++)s[e]&&a++,o[e]&&l++;if(a!==l)return a<l?e:r;if(e.terms.size!==r.terms.size)return e.terms.size<r.terms.size?e:r;const u=ltOrNull(e,t,n),c=ltOrNull(r,t,n);if(u&&c){const t=(0,i.abs)(u.coeff),n=(0,i.abs)(c.coeff);if(t!==n)return t<n?e:r}return e},l=new Map;for(const e of a){const t=polyKey(e),n=l.get(t);n?l.set(t,betterSameLM(n,e)):l.set(t,e)}const u=Array.from(l.values());return u.sort((e,i)=>{const r=variablePresence(e,n),s=variablePresence(i,n);for(let e=0;e<n;e++){const t=r[e]?1:0,n=s[e]?1:0;if(t!==n)return t-n}const o=ltOrNull(e,t,n),a=ltOrNull(i,t,n);if(o&&a){const e=compareMonomialDense(o.exp,a.exp,t);if(0!==e)return e}return e.terms.size-i.terms.size}),u}(g,o,d):g}function reduceByBasis(e,t,n="LEX"){if(polyIsZero(e)||0===t.length)return(0,s.mvNormalize)(e);const i=numVarsFromPolys(e,...t);return primitiveNormalizeOrder(normalFormFractionFreeAllTerms(normalFormFractionFree(e,t,n,i),t,n,i),n,i)}function scaleByDenomPow(e,t,n){const i=e.degree(t);if(i<=0||1n===n)return e;const s=new Array(i+1);s[0]=1n;for(let e=1;e<=i;e++)s[e]=s[e-1]*n;const o=new r.MultiPoly;for(const[n,a]of e.terms){const e=a*s[i-((0,r.keyToExp)(n).get(t)??0)];0n!==e&&o.terms.set(n,e)}return o.trim(),o}function rationalRootsUnivariate(e,t){const n=e.degree(t);if(n<=0)return[];const s=new Array(n+1).fill(0n);for(const[i,o]of e.terms){const e=(0,r.keyToExp)(i).get(t)??0;e<=n&&(s[e]+=o)}let o=n;for(;o>0&&0n===s[o];)o--;if(0===o)return[];const a=s[o],l=s[0];if(0n===l){const e=[{n:0n,d:1n}],n=new r.MultiPoly;for(let e=1;e<=o;e++)if(0n!==s[e]){const i=new Map;e>1&&i.set(t,e-1),n.terms.set((0,r.expToKey)(i),s[e])}const i=rationalRootsUnivariate(n,t);for(const t of i)0n!==t.n&&e.push(t);return e}const u=positiveDivisors((0,i.abs)(l)),c=positiveDivisors((0,i.abs)(a)),m=[],p=new Set;for(const e of u)for(const t of c)for(const n of[1n,-1n]){const r=n*e,a=(0,i.GCD)((0,i.abs)(r),t),l=r/a,u=t/a,c=`${l}/${u}`;p.has(c)||(p.add(c),evaluatesCoeffsToZero(s,o,l,u)&&m.push({n:l,d:u}))}return m}function evaluatesCoeffsToZero(e,t,n,i){let r=0n,s=1n,o=1n;for(let e=0;e<t;e++)o*=i;for(let a=0;a<=t;a++)r+=e[a]*s*o,s*=n,a<t&&0n!==i&&(o/=i);return 0n===r}function evaluatesToZero(e,t,n){if(e.degree(t)<=0)return polyIsZero(e)||0n===e.constantTerm();let i=e;1n!==n.d&&(i=scaleByDenomPow(i,t,n.d));const r=(0,s.substituteVarIndex)(i,t,n.n);return polyIsZero((0,s.mvNormalize)(r))}function positiveDivisors(e){if(0n===e)return[0n];e<0n&&(e=-e);const t=[];let n=1n;for(;n*n<=e;)e%n===0n&&(t.push(n),n!==e/n&&t.push(e/n)),n++;return t}function expLcmDense(e,t){const n=Math.max(e.length,t.length),i=new Array(n).fill(0);for(let r=0;r<n;r++)i[r]=Math.max(e[r]??0,t[r]??0);return i}function compareMonomialDense(e,t,n){const i=Math.max(e.length,t.length);if("LEX"===n){for(let n=0;n<i;n++){const i=e[n]??0,r=t[n]??0;if(i!==r)return i>r?1:-1}return 0}const r=monomialTotalDegreeDense(e),s=monomialTotalDegreeDense(t);if(r!==s)return r>s?1:-1;if("GRLEX"===n){for(let n=0;n<i;n++){const i=e[n]??0,r=t[n]??0;if(i!==r)return i>r?1:-1}return 0}for(let n=i-1;n>=0;n--){const i=e[n]??0,r=t[n]??0;if(i!==r)return i<r?1:-1}return 0}function monomialTotalDegreeDense(e){let t=0;for(let n=0;n<e.length;n++)t+=e[n]??0;return t}t.GroebnerBudgetExceeded=GroebnerBudgetExceeded},6441(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ASSERTIVE_FUNCTIONS=t.operators=t.brackets=void 0,t.isNerdamerNativeType=function isNerdamerNativeType(e,t){let n=!1;return"object"==typeof e&&null!==e&&"dataType"in e&&(n=e.dataType===t),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},":=":{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"]},6498(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.multiply=multiply,t.merge=merge,t.canonicalizeRadicals=function canonicalizeRadicals(e){let t;if(e.isEXP()&&e.isConstant()&&e.hasRadical())t=(0,c.rationalizeRadical)(e,!0);else if(e.isFunction()){const n=e.getArguments().map(e=>canonicalizeRadicals(e));let i=a.Expression.toFunction(e.name,n);i.multiplier=e.multiplier,i=a.Expression.setPower(i,e.getPower()),t=i}else if(e.isProduct()){let t=a.Expression.fromRational(e.getMultiplier());e.each(e=>{t=t.times(canonicalizeRadicals(e))})}else if(e.isSum()&&e.isLinear()){let t=(0,l.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(4703),s=n(4600),o=n(5817),a=n(296),l=n(6099),u=n(8300),c=n(3957);function multiply(e,t){let n;if(o.Settings.DEFER_SIMPLIFICATION)n=merge(a.Expression.toFunction(u.WRAP,[e]),a.Expression.toFunction(u.WRAP,[t])),n.deferred=!0;else{if(e.isZero()){if(t.isInf())throw new i.UndefinedError(r.ErrorMessages[o.Settings.LANGUAGE].infinityTimesZero);n=a.Expression.Number("0")}else if(e.isNUM()&&t.isNUM())n=a.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(),o=t.imagPart();n=i.times(r).minus(s.times(o)).plus(i.times(o).plus(s.times(r)).times(a.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=a.Expression.Inf(),e.getMultiplier().times(t.getMultiplier()).isNegative())n=n.neg();else if(e.isZero()||t.isZero())throw new i.UndefinedError("Infinity times zero is undefined!")}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()?a.Expression.fromRational(n.getMultiplier()):a.Expression.setPower(n,i);const r=n.getPower();n.isI()?n=(0,s.simplifyImaginary)(n):n.isFunction(u.ABS)&&r.isEven()&&(n=n.getArguments()[0].pow(r).times(n.getMultiplier()))}else u.RANK[e.type]>u.RANK[t.type]&&(n=multiply(t,e));n=n||merge(e,t),n.isEXP()&&n.isLinear()&&(n=n.getBase().times(n.getMultiplier())),o.Settings.EVALUATE&&(n=n.distributeMultiplier())}return n}function combine(e,t,n,i){const r=a.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=a.Expression.TYPES.PRD;let s=canMerge(e),o=canMerge(t),u=!0,m=e.multiplier||t.multiplier?e.getMultiplier().times(t.getMultiplier()):void 0;if(m&&(e=new a.Expression(e),t=new a.Expression(t),e.multiplier=void 0,t.multiplier=void 0),e.elements&&!t.elements&&([t,e]=[e,t],[o,s]=[s,o]),o)if(!s&&o){const r=e.keyValue();n=new a.Expression(t);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):new a.Expression(e)}o.isNUM()?(o.isOne()||(m=m?.times(o.getMultiplier())),delete s[r]):s[r]=o,i=Object.values(s)}else{n=new a.Expression(e),n.multiplier=e.getMultiplier().times(t.getMultiplier());const s=n.getElements(),o=t.getElements();for(const e in o){const t=o[e];if(e in s){const n=multiply(t,s[e]);r===a.Expression.TYPES.PRD&&n.isOne()?delete s[e]:s[e]=n}else s[e]=new a.Expression(t)}i=Object.values(s)}else{const r=e.type===a.Expression.TYPES.GRP?e.value:e.keyValue(),s=t.type===a.Expression.TYPES.GRP?t.value:t.keyValue(),o=e.isProduct()&&e.isLinear();if(o&&t.isProduct()&&t.getPower().isMinusOne()){let r=e,s=(0,l.one)();const o=e.getElements(),a=t.getElements();for(const e in a){const t=a[e];e in o?r=multiply(r,(0,c.power)(t,(0,l.minusOne)())):s=multiply(s,t)}[n,i]=combine(r,multiply((0,c.power)(s,(0,l.minusOne)()),e.getMultiplier(!0)),e.keyValue(),t.keyValue())}else if(o&&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),u=!1;else{const o=e.getPower(),l=t.getPower();-1===o.sign()&&-1===l.sign()?(n=multiply(e.invert(),t.invert()),n=n.invert(),i=Object.values(n.getElements())):[n,i]=combine(new a.Expression(e),new a.Expression(t),r,s)}}if(u&&(n.type=r,n.value=a.Expression.getValue(i,"text",r)),m&&!m.isOne()&&(n.multiplier=m),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}},6528(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),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(`Key "${t}" not found in Dictionary. Available 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},6541(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.tableOfLimits=void 0;const i=n(2178);t.tableOfLimits=new i.LookupTable,t.tableOfLimits.addEntries({})},6584(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),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,d;1===l.minus(c).sign()?(m=c,p=l,d=(0,o.sin)(t[e].arg).pow((0,r.two)())):(m=l,p=c,d=(0,o.cos)(n[a].arg).pow((0,r.two)()));const g=m.getDenominator(),h=m.times(g),x=p.minus(m).times(g),E=h.plus(x.times(d));u.push((0,r.one)().div(g).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);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===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)),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}},6698(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),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 d=laplace(p,t,n);if(!d.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 d.subst(n,t)}}return c=u.tableOfTransforms.lookup(new l.Pattern(e,[t]),0),c?("s"!==n&&(c=c.evaluate({s:n})),c):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)},6746(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MathematicalAggregate=void 0;const i=n(8505);class MathematicalAggregate extends i.StructuredEntity{__get__(e){const t=e[0];if(t<0||t>=this.elements.length)throw new RangeError(`Index ${t} out of bounds for ${this.dataType} of length ${this.elements.length}`);return this.elements[t]}__set__(e,t){const n=e[0];if(n<0||n>=this.elements.length)throw new RangeError(`Index ${n} out of bounds for ${this.dataType} of length ${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},6808(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),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}return a||e.every(e=>{const t=e.coeff.div(o).getMultiplier();return 1n===t.denominator||-1n===t.denominator})?o:null}(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();return!n.abs().isOne()&&(!(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}},6827(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.polynomialize=function polynomialize(e,t,n){t??={};let s=(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)},6910(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.subtract=function subtract(e,t){let n;if(i.Settings.DEFER_SIMPLIFICATION)n=(0,s.add)(e,t.neg()),n.deferred=!0;else if(n=e.isNUM()&&t.isNUM()?r.Expression.fromRational(e.getMultiplier().minus(t.getMultiplier())):!e.isInf()&&t.isInf()?r.Expression.Inf().neg():(0,s.add)(e,t.neg()),!n)throw new Error(`Subtraction not defined for ${e.type}-${t.type} | ${e}-${t}`);return n},t.subtractPrefix=function subtractPrefix(e){return e.neg()};const i=n(5817),r=n(296),s=n(6255)},6913(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.deg=function deg(e,t){let n,r,a;void 0!==t&&(n=i.Expression.create(t),r=(0,s.assertPlainVariableAndGetString)(n));try{const t=l.Polynomial.isPolynomial(e)?e:new l.Polynomial(e);a=i.Expression.create(t.deg(r))}catch{}const u=l.Polynomial.isPolynomial(e)?e.getExpression():e,c=void 0===n?[u]:[u,n];return a??i.Expression.toFunction(o.DEG,c)},t.content=function content(e){let t;try{const n=l.Polynomial.isPolynomial(e)?e:new l.Polynomial(e);t=i.Expression.create(n.content())}catch{}return t??i.Expression.toFunction(o.CONTENT,[l.Polynomial.isPolynomial(e)?e.getExpression():e])},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,u.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,u.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(9565)},6925(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),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)},6950(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.solveSystem=function solveSystem(e,t){const n=function normalizeEquations(e){if(h.Vector.isVector(e)){const t=[];for(let n=0;n<e.count();n++)t.push(toExpression(e.__get__([n])));return t}return e.map(e=>toExpression(e))}(e);if(0===n.length)return new h.Vector([new o.Dictionary]);const a=t??(0,u.collectVariablesSet)(n);if(0===a.length)return n.every(e=>e.isZero())?new h.Vector([new o.Dictionary]):new h.Vector([]);const c=[],p=[];let d=!1;for(const e of n){let t=e;if(!e.isPolynomialLike()){const n=(0,s.toCommonDenominator)(e),i=n.getNumerator().expand(),r=n.getDenominator().expand();!r.isOne()&&i.isPolynomialLike()&&r.isPolynomialLike()&&(t=i,p.push(r),d=!0)}c.push(t)}try{const e=(0,y.solveLinearSystem)(c,a);if("inconsistent"===e.type)return new h.Vector([]);if("infinite"!==e.type){const t=new o.Dictionary,i=new Map;for(const n of a)if(n in e.solutions){const r=e.solutions[n];t.set(n,r),i.set(n,r)}return!d||isSystemSolution(n,p,i)?new h.Vector([t]):new h.Vector([])}if(!d){const t=new o.Dictionary;for(const n of a)n in e.solutions&&t.set(n,e.solutions[n]);return new h.Vector([t])}}catch(e){if(!(e instanceof Error&&e.message.includes("Nonlinear term detected")))throw e}if(c.every(e=>e.isPolynomialLike()))try{const e=c.map(e=>{const t=(0,l.normalizeMultiplierDenominators)(e);return(0,i.polynomialToMultiPoly)(new g.Polynomial(t,a),a).poly}),t=(0,r.Groebner)(e,a,"LEX",!0);if(1===t.length&&t[0].isConstant()&&0n!==t[0].constantTerm())return new h.Vector([]);let s=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,v.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=>r.has(e))||1!==t.length||t[0]!==i?e.subst(i,a):(0,m.zero)()}),u=new Map(e);u.set(i,a),s.push({assignment:u,basis:l})}}n=s}return n.map(e=>e.assignment)}(t.map(e=>(0,i.multiPolyToExpression)(e,a)),a);if(d&&(s=s.filter(e=>isSystemSolution(n,p,e))),s.length>0)return new h.Vector(solutionsToDictionaries(s,a))}catch{}if(n.length<a.length)throw new x.UnsupportedOperationError((0,x.message)("solveSystemInfiniteSolutions"));const P=new E.MultivariateSolver(n,a).roots();return 0===P.length?new h.Vector([]):new h.Vector(solutionsToDictionaries(P,a))};const i=n(1339),r=n(6431),s=n(8989),o=n(6528),a=n(6184),l=n(6056),u=n(6338),c=n(296),m=n(6099),p=n(8300),d=n(238),g=n(2116),h=n(3982),x=n(4703),E=n(1683),y=n(1280),v=n(2295);function toExpression(e){if(a.Equation.isEquation(e))return e.toLHS().LHS;if(c.Expression.isExpression(e))return e;const t=d.Parser.parse(String(e));if(a.Equation.isEquation(t))return t.toLHS().LHS;if(c.Expression.isExpression(t))return t;throw new x.UnexpectedInputError((0,x.message)("expressionExpected",{type:p.dataTypes[t.dataType]}))}function solutionsToDictionaries(e,t){const n=[];for(const i of e){if(i.size!==t.length)throw new x.UnsupportedOperationError((0,x.message)("solveSystemInfiniteSolutions"));const e=new o.Dictionary;for(const n of t){const t=i.get(n);if(!t)throw new x.UnsupportedOperationError((0,x.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}},7052(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),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)},7056(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.scopedBlock=void 0,t.evaluate=function evaluate(e,t){return s.Parser.evaluate(e,t)},t.inert=function inert(e){return(0,i.scopedBlock)("EVALUATE",!1,()=>(0,i.scopedBlock)("SUBSTITUTE",!1,()=>s.Parser.parse(e)))},t._=function _(e){return r.Expression.create(e)},t.isStructuredEntity=function isStructuredEntity(e){return void 0!==e&&e.isEnumerable};const i=n(5817);Object.defineProperty(t,"scopedBlock",{enumerable:!0,get:function(){return i.scopedBlock}});const r=n(296),s=n(238)},7103(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.scientificToDecimal=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[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;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},t.decimalSplit=function decimalSplit(e){const t=e.split(".");if(t.length>2)throw new SyntaxError(`Invalid decimal value: ${e}`);return 1===t.length&&t.push(""),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}},7130(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),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),d=n(9426),g=n(5190),{TeX:h,TEXT:x}=g.BaseConverter.modes;class Converter extends g.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===g.BaseConverter.modes.TEXT&&r.eq((0,s.two)()))return[(0,s.one)(),g.BaseConverter.convertSQRT(t)];if(this.mode===g.BaseConverter.modes.TeX)return[(0,s.one)(),g.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===x?`${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(`Missing argument scope for function ${s.value}`);let u=[];if(o.length>0){const e=d.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}`)),g=this.getFunctionName(s.value);let h;if(s.value===r.Expression.LOG&&2===u.length){const e=this.formatTeXFunction(r.Expression.LOG,g,[c[0]],[m[0]]),t=this.formatTeXFunction(r.Expression.LOG,g,[c[1]],[m[1]]);h=this.toFraction(e,t)}else h="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,g,c,m):this.formatTeXFunction(s.value,g,c,[r.Expression.create(u[0].source)]);n.push({text:h,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(`Missing operand for prefix 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(`Missing operand or metadata for 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(`Missing left operand for 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("Unable to convert source expression to TeX");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])}`,exp:std,gamma:()=>`\\Gamma${this.inBrackets(n[0])}`,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===g.BaseConverter.modes.TeX&&this.greek.includes(e)&&(e=`\\${e}`),t>0?this.inBraces(e):e)).join("_")}getFunctionName(e){return this.mode!==h?e:`\\${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?i:this.inBrackets(i,"parens")}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===h&&!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},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,d=!0,g=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=d&&t.minus(i).abs().greaterThanOrEqualTo(i.minus(m).abs().dividedBy(2)),c=!d&&t.minus(i).abs().greaterThanOrEqualTo(m.minus(g).abs().dividedBy(2)),h=d&&i.minus(m).abs().lessThan(s),x=!d&&m.minus(g).abs().lessThan(s);o||u||c||h||x?(t=n.plus(i).dividedBy(2),d=!0):d=!1;const E=this.evaluate(t);g=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))}}},7410(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),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}},7449(e,t){"use strict";function simpson(e,t,n,i,r){return(t-e)/6*(n+4*i+r)}function withFiniteBounds(e,t,n,i,r,s,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 m=0;const evalF=t=>{if(++m>o)throw new Error(`defint: maxEvals exceeded (${o}).`);const n=e(t);if("strict"===a&&!isFinite(n))throw new Error(`defint: non-finite f(x) at x=${t}`);return n},p=(l+u)/2,d=evalF(l),g=evalF(p),h=evalF(u);if("ignore"===a&&(isNaN(d)||isNaN(g)||isNaN(h)))return NaN;if(!("auto"!==a||isFinite(d)&&isFinite(g)&&isFinite(h))){const t=!isFinite(d)&&isFinite(g)&&isFinite(h),n=isFinite(d)&&isFinite(g)&&!isFinite(h);if(t||n){const n=u-l,m=Math.sqrt(Number.EPSILON),p=t;return c*withFiniteBounds(t=>{const i=Math.max(t,m),r=p?l+n*i*i:u-n*i*i,s=2*e(r)*n*i;if(!isFinite(s))throw new Error(`defint: endpoint singularity could not be regularized near x=${r}`);return s},0,1,i,r,s,o,a)}return c*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,l,u,i,r,s,o,a)}const x=simpson(l,u,d,g,h),E=[{a:l,b:u,m:p,fa:d,fm:g,fb:h,S:x,depth:0,tolAbs:i,tolRel:r,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,r=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>=s||e.singularTries>=8)throw new Error(`defint: singular/non-finite encountered near [${t}, ${n}]`);const a=e.depth+1,m=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:m,tolRel:r,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:m,tolRel:r,singularTries:e.singularTries+1});continue}const m=simpson(t,i,e.fa,u,e.fm),p=simpson(i,n,e.fm,c,e.fb),d=m+p;if(Math.abs(d-e.S)/15<=e.tolAbs+e.tolRel*Math.abs(d)||e.depth>=s){y+=d+(d-e.S)/15;continue}const g=e.depth+1,h=e.tolAbs/2;E.push({a:i,b:n,m:l,fa:e.fm,fm:c,fb:e.fb,S:p,depth:g,tolAbs:h,tolRel:r,singularTries:e.singularTries}),E.push({a:t,b:i,m:o,fa:e.fa,fm:u,fb:e.fm,S:m,depth:g,tolAbs:h,tolRel:r,singularTries:e.singularTries})}return y*c}Object.defineProperty(t,"__esModule",{value:!0}),t.definiteIntegrateNative=function definiteIntegrateNative(e,t,n,i={}){if(t===n)return 0;const r=i.tolAbs??1e-12,s=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),m=!isFinite(n)&&!isNaN(n);if((c||m)&&!u)throw new Error("defint: infinite bounds require allowInfinite: true");if(u&&(c||m)){const i=1e-15;if(!c&&m&&n>0){const n=t;return withFiniteBounds(t=>{const i=1-t;return e(n+t/i)/(i*i)},0,1-i,r,s,o,a,l)}if(c&&t<0&&!m){const t=n;return withFiniteBounds(n=>{const i=1-n;return e(t-n/i)/(i*i)},0,1-i,r,s,o,a,l)}if(c&&t<0&&m&&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,r,s,o,a,l);throw new Error("defint: unsupported infinite bound configuration")}const p=Math.min(t,n),d=Math.max(t,n),g=(i.breakpoints??[]).filter(e=>e>p&&e<d).sort((e,t)=>e-t);if(0===g.length)return withFiniteBounds(e,t,n,r,s,o,a,l);const h=g.length+1,x=r/h,E=t<=n?[t,...g,n]:[t,...g.reverse(),n];let y=0;for(let t=0;t<E.length-1;t++)y+=withFiniteBounds(e,E[t],E[t+1],x,s,o,a,l);return y}},7571(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),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 d=s.Expression.fromRational(e.getMultiplier());if(!d.isOne()){const i=ilaplace(e.toUnitMultiplier(),t,n);if(!i.isFunction(u.ILAPLACE))return d.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),d=m.isZero()?(0,a.zero)():ilaplace(i.invert(),t,n);if(!p.isFunction(u.ILAPLACE)&&!d.isFunction(u.ILAPLACE))return o.times(p).plus(m.times(d))}}}}{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)&&!(r.sign()<=0))return{coefficient:r,remainder:e.div(i)}}}(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 g=e.getNumerator(),h=e.getDenominator();if(g.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)},7741(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.powerExpandToArray=powerExpandToArray,t.expandArrayToExpression=expandArrayToExpression,t.isExpandable=isExpandable,t.powerExpand=powerExpand,t.sumExpandMultiply=sumExpandMultiply,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){return e.isFunction(s.WRAP)?e.getArguments()[0].pow(e.getPower()).times(e.getMultiplier()):e}function expand(e){let t;if(isExpandable(e=unwrap(e)))if(e.isNUM()||e.isVAR())t=new i.Expression(e);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=new i.Expression(e);return t}},7867(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),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};const i=n(296),r=n(6099),s=n(8300),o=n(6255),a=n(3957)},8015(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.anyObject=function anyObject(e){for(const t in e)return e[t]},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},t.randomEvalObj=function randomEvalObj(e,t=2,n){const r={};n??=2*(e.length+2);const s=[];for(const o of e){let e=(0,i.getRandomInt)(t,n);for(;s.includes(e);)e=(0,i.getRandomInt)(t,n);s.push(e),r[o]=e}return r};const i=n(3703)},8054(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),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()}}},8125(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.hasDerivedTrig=hasDerivedTrig,t.rewrite=rewrite,t.tryRewriteTrig=function tryRewriteTrig(e){if(!hasDerivedTrig(e))return e;const t=rewrite(e);return complexity(t)<=complexity(e)?t: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}},8137(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.formatMultiplierString=formatMultiplierString,t.formatPowerString=formatPowerString,t.toText=function toText(e,t,n,i,s){t={precision:e.precision,...t};let g="";if(e.type===o)g=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:g=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)g=`${o}${r.SYMBOLIC_ACCESSOR}(${n.map(e=>e.text(t)).join(", ")})`;else{const e=n[0],i=n.slice(1);g=`${o}${e.text(t)}[${i.map(e=>e.text(t)).join(", ")}]`}}else g=`${o}${e.name||""}(${e.getArguments().map(e=>e.text(t)).join(", ")})`;break;case c:case d:x=formatExpressionString(e,t,s),x=o||h?`(${x})`:x,g=`${o}${x}`;break;case p:x=formatExpressionString(e,t,s),x=h?`(${x})`:x,g=`${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})`),g=`${o}${x}`;break}}g+=h}return g.replace(/\+-/g,"-")},t.formatExpressionString=formatExpressionString,t.convertToTitle=function convertToTitle(e){let t="";for(;e>0;)e--,t=String.fromCharCode(65+e%26)+t,e=Math.floor(e/26);return t};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:d}=s.EXPRESSION_TYPES;function formatMultiplierString(e,t){let n="";const i=e.getMultiplier(),r=i.text(t);return"1"!==r&&"1.0"!==r&&(n=r,i.isInteger()||i.asDecimal||t?.decimal||(n=`(${n})`),"-1"!==n||t?.wrapPow?n+="*":n="-"),n}function formatPowerString(e,t,n){let i="";const s=e.getPower(),o=s.text(t);if("1"!==o&&"1.0"!==o){if(i=o,s.dataType!==r.RATIONAL||s.isInteger()){const t=e.getPower();let n=!1;t.type===d||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 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("+-","-")}},8215(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.factorPoly=void 0;var i=n(1508);Object.defineProperty(t,"factorPoly",{enumerable:!0,get:function(){return i.factorPoly}})},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.SUM_FUNCTION=t.SINC=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.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=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.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]},8330(e){"use strict";e.exports=JSON.parse('{"name":"nerdamer","version":"2.0.0-rc.1","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"],"scripts":{"dev":"nodemon ./tools/dev.ts","lint":"eslint ./src/**/*.ts","lint:fix":"eslint ./src/**/*.ts --fix","typecheck":"tsc -p tsconfig.json --noEmit","test":"jest","test:coverage":"jest --coverage --runInBand","test:dump":"npm test -- --json --outputFile=test-results.json --testFailureExitCode=1 --testNamePattern=\\"^(?!.*\\\\[slow\\\\])\\"","test:all":"npm test -- --json --outputFile=test-results.json --testFailureExitCode=1","build:types":"tsc -p tsconfig.build.json","build:modules":"npm run build:types","build:bundle":"webpack --mode=production --node-env=production --env target=full","build:parser":"webpack --mode=production --node-env=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","build:dev":"webpack --mode=development","build:prod":"npm run build","watch":"webpack --watch","serve":"webpack serve","docs:parser":"ts-node tools/generate-parser-docs.ts","docs":"npm run docs:parser && typedoc --options typedoc.json --out docs/api","docs:check":"typedoc --options typedoc.json --emit none","docs:api":"typedoc --options typedoc.json --json generated/typedoc/typedoc.json","docs:all":"npm run docs:parser && typedoc --options typedoc.json --json generated/typedoc/typedoc.json --plugin typedoc-material-theme --themeColor \'#e63420\' --out docs/html","docs:html":"typedoc --options typedoc.json --plugin typedoc-material-theme --themeColor \'#e63420\' --out docs/html","validate:package":"ts-node tools/validate-package.ts","prepublishOnly":"npm run test && npm run build && npm run build:parser && npm run docs:parser && npm run validate:package"},"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.8.0","@types/eslint__js":"^8.42.3","@types/jest":"^30.0.0","@types/node":"^25.0.10","@webpack-cli/generators":"^2.5.0","css-loader":"^7.1.2","eslint":"^9.39.3","eslint-plugin-import":"^2.32.0","eslint-plugin-perfectionist":"^5.6.0","html-webpack-plugin":"^5.6.3","jasmine":"^5.1.0","jest":"^30.2.0","mini-css-extract-plugin":"^2.9.2","nodemon":"^3.1.4","prettier":"^3.8.1","sass":"^1.86.0","sass-loader":"^16.0.5","style-loader":"^4.0.0","terser-webpack-plugin":"^5.3.14","ts-jest":"^29.4.6","ts-loader":"^9.5.2","ts-node":"^10.9.2","typedoc":"^0.28.17","typedoc-material-theme":"^1.4.1","typescript":"^5.9.3","typescript-eslint":"^8.0.0","webpack":"^5.98.0","webpack-cli":"^5.1.4","webpack-dev-server":"^5.2.0","workbox-webpack-plugin":"^7.3.0"},"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"]}}}')},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)}Object.defineProperty(t,"__esModule",{value:!0}),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;return this.symbolicAccessor&&this.symbolicAccessor.length>0&&(t=`${this.symbolicTarget?this.symbolicTarget.text():e}[${this.symbolicAccessor.map(e=>e.text()).join(", ")}]`),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}}},8520(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),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)())),d=(0,r.zero)().minus(o).div((0,r.three)()),g=(0,l.sqrt)(p),h=(0,r.zero)().minus(m).div((0,r.two)()),x=(0,l.cbrt)(h.plus(g)),E=(0,l.cbrt)(h.minus(g)),y=x.plus(E),v=(0,l.sqrt)((0,r.three)()),P=(0,r.zero)().minus((0,r.half)()),w=(0,l.sqrt)((0,r.zero)().minus((0,r.one)())),b=x.plus(E),M=x.minus(E),A=P.times(b).plus(v.div((0,r.two)()).times(M).times(w)),T=P.times(b).minus(v.div((0,r.two)()).times(M).times(w));return[y.plus(d),A.plus(d),T.plus(d)]}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),d=c.minus((0,r.three)().times(u.pow((0,r.two)())).div((0,r.eight)())),g=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(g.isZero()){const e=SymbolicSolver.quadratic([h,d,(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(g.pow((0,r.two)())),d.pow((0,r.two)()).minus((0,r.four)().times(h)),(0,r.two)().times(d),(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 P=(0,l.sqrt)(v);if(P.isZero())for(const e of y)if(!e.isZero()){const t=(0,l.sqrt)(e);if(!t.isZero()){v=e,P=t;break}}const w=d.plus(v),b=w.div((0,r.two)()).minus(g.div((0,r.two)().times(P))),M=w.div((0,r.two)()).plus(g.div((0,r.two)().times(P))),A=SymbolicSolver.quadratic([b,P,(0,r.one)()]),T=SymbolicSolver.quadratic([M,(0,r.zero)().minus(P),(0,r.one)()]);return[A[0].plus(x),A[1].plus(x),T[0].plus(x),T[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(),d=[];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)&&d.push({term:e,factor:n[0]})}if(1===d.length){const{term:e,factor:i}=d[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 g=n.filter(e=>e.isFunction()&&e.hasVariable(t));if(1===g.length){const e=g[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)))}}}}return e.isFunction(u.SIN)?solveForX(e.getArguments()[0],a):e.isFunction(u.COS)?solveForX(e.getArguments()[0],p):e.isFunction(u.TAN)?solveForX(e.getArguments()[0],a):e.isFunction(u.COT)?solveForX(e.getArguments()[0],p):e.isFunction(s.LOG)?solveForX(e.getArguments()[0],(0,r.one)()):e.isFunction(u.SINH)||e.isFunction(u.TANH)||e.isFunction(u.ASIN)?solveForX(e.getArguments()[0],(0,r.zero)()):e.isFunction(u.ACOS)?solveForX(e.getArguments()[0],(0,r.one)()):e.isFunction(u.ATAN)?solveForX(e.getArguments()[0],(0,r.zero)()):e.isFunction(u.ASEC)?solveForX(e.getArguments()[0],(0,r.one)()):e.isFunction(u.ASINH)?solveForX(e.getArguments()[0],(0,r.zero)()):e.isFunction(u.ACOSH)?solveForX(e.getArguments()[0],(0,r.one)()):e.isFunction(u.ATANH)||e.isFunction(s.ABS)?solveForX(e.getArguments()[0],(0,r.zero)()):void 0}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},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.nthroot=function nthroot(e,t){return(0,d.power)(o.Expression.create(e),(0,a.one)().div(o.Expression.create(t)))},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(b.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 new o.Expression(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()))}}return e.isFunction(c.CBRT)?(0,p.multiply)(cbrt(o.Expression.fromRational(e.getMultiplier())),(0,d.power)(e.toUnitMultiplier(),(0,a.third)())):o.Expression.toFunction(c.CBRT,[e])},t.parens=function parens(e){return o.Expression.toFunction(c.WRAP,[e])},t.fibonacci=function fibonacci(e){let t;return t=(e=o.Expression.create(e)).isNUM()&&e.isInteger()?o.Expression.Number((0,y.fibonacci)(e.getMultiplier().numerator)):o.Expression.toFunction(m.FIB,[new o.Expression(e)]),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(b.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,T.cos)(n.times(e))).div((0,a.four)())),r=n.pow((0,T.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,[new o.Expression(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,[new o.Expression(e)]);return t},t.dirac=function dirac(e){let t;const n=!e.isConstant()&&!e.isComplex()&&(0,s.hasAssumptions)();return t=e.isPosInf()||e.isNegInf()?(0,a.zero)():e.isNUM()?e.isZero()?o.Expression.toFunction(c.DIRAC,[new o.Expression(e)]):(0,a.zero)():n&&(e.gt(0)||e.lt(0))?(0,a.zero)():o.Expression.toFunction(c.DIRAC,[new o.Expression(e)]),t},t.numeric=function numeric(e,t){return e=o.Expression.create(e),(0,b.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:O,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:O,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=new o.Expression(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;return t=(e=o.Expression.create(e)).isComplex()?(0,P.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]),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=new o.Expression(n.ceil())}else t=o.Expression.toFunction(c.CEIL,[e]);return t},t.abs=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},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.gamma=gamma,t.erfc=function erfc(e){return(0,g.subtract)((0,a.one)(),erf(e))},t.erf=erf,t.sinc=function sinc(e){let t;return t=e.isPosInf()||e.isNegInf()?(0,a.zero)():e.isZero()?(0,a.one)():(0,T.sin)(e).isZero()?(0,a.zero)():-1===e.sign()?sinc(e.neg()):e.isNUM()&&b.Settings.EVALUATE?o.Expression.Number((0,w.sinc)(e.getMultiplier().toDecimal())):b.Settings.EVALUATE?(0,T.sin)(e).div(e):o.Expression.toFunction(c.SINC,[new o.Expression(e)]),t},t.Si=function Si(e){let t;return 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()&&b.Settings.EVALUATE?o.Expression.Number((0,w.Si)(e.getMultiplier().toDecimal())):o.Expression.toFunction(c.SI,[new o.Expression(e)]),t},t.Shi=function Shi(e){let t;return 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()&&b.Settings.EVALUATE?o.Expression.Number((0,w.Shi)(e.getMultiplier().toDecimal())):o.Expression.toFunction(c.SHI,[new o.Expression(e)]),t},t.Ci=function Ci(e){let t;return t=e.isPosInf()||e.isNegInf()?(0,a.zero)():e.isZero()?o.Expression.NegInf():-1===e.sign()?Ci(e.neg()):e.isNUM()&&b.Settings.EVALUATE?o.Expression.Number((0,w.Ci)(e.getMultiplier().toDecimal())):o.Expression.toFunction(c.CI,[new o.Expression(e)]),t},t.Chi=function Chi(e){let t;return t=e.isPosInf()||e.isNegInf()?o.Expression.Inf():e.isZero()?o.Expression.NegInf():-1===e.sign()?Chi(e.neg()):e.isNUM()&&b.Settings.EVALUATE?o.Expression.Number((0,w.Chi)(e.getMultiplier().toDecimal())):o.Expression.toFunction(c.CHI,[new o.Expression(e)]),t},t.Ei=function Ei(e){let t;return t=e.isPosInf()||e.isNegInf()?e.isNegInf()?(0,a.zero)():o.Expression.Inf():e.isZero()?o.Expression.NegInf():e.isNUM()&&b.Settings.EVALUATE?o.Expression.Number((0,w.Ei)(e.getMultiplier().toDecimal())):o.Expression.toFunction(c.EI,[new o.Expression(e)]),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()&&b.Settings.EVALUATE){const n=e.getMultiplier();t=n.isNegative()?o.Expression.toFunction(c.LI,[new o.Expression(e)]):o.Expression.Number((0,w.Li)(n.toDecimal()))}else t=o.Expression.toFunction(c.LI,[new o.Expression(e)]);return t},t.log=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,[new o.Expression(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(),i=sqrt(t.sq().plus(n.sq()));s=log(i).plus((0,T.atan2)(n,t).i())}else if(b.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,N.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,N.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,[new o.Expression(e)]),i&&s&&!r&&(s=s.div(log(i))),s},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=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)():b.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,T.cos)(r),l=(0,T.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})`))},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>b.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>b.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,d.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.defint=function defint(e,t,n,i){let r;e=o.Expression.create(e),t=o.Expression.create(t),n=o.Expression.create(n),i=o.Expression.create(i);const s=e.variables(),a=(0,l.assertPlainVariableAndGetString)(t);if(s.includes(a)){let l=n,u=i;if(!l.isNUM()&&l.isConstant()&&(l=l.evaluate()),!u.isNUM()&&u.isConstant()&&(u=u.evaluate()),1===s.length&&s[0]===a&&l.isNUM()&&u.isNUM()){const t=Number(l.getMultiplier().toDecimal()),n=Number(u.getMultiplier().toDecimal());r=o.Expression.create((0,M.definiteIntegrateNative)(e.buildFunction(),t,n)),r.precision=17}else r=o.Expression.toFunction(c.DEFINT,[e,t,n,i])}else r=e.times(i.minus(n));return r},t.contains=function contains(e,t){let n;return 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]),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),d=n(3957),g=n(6910),h=n(9565),x=n(5584),E=n(4703),y=n(551),v=n(982),P=n(4600),w=n(9571),b=n(5817),M=n(7449),A=n(7867),T=n(1649),N=n(706),O="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,d.power)((0,d.sqrtToPow)(e.toUnitMultiplier()),(0,a.half)())):(0,d.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(b.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=new o.Expression(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,[new o.Expression(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=new o.Expression(n.floor())}else t=o.Expression.toFunction(c.FLOOR,[e]);return t}function mod(e,t){let n;if(e.isPosInf()||e.isNegInf()||t.isPosInf()||t.isNegInf())throw new E.UndefinedError((0,E.message)("undefinedValue"));return n=e.isNUM()&&t.isNUM()?o.Expression.create(e.getMultiplier().mod(t.getMultiplier())):e.isPolynomialLike()&&t.isPolynomialLike()&&(0,h.maxCommonVariableOccurrence)(e,t)?(0,h.polyMod)(e,t).getExpression():o.Expression.toFunction(c.MOD,[new o.Expression(e),new o.Expression(t)]),n}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,w.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,w.erf)(n.toDecimal()))}else t=o.Expression.toFunction(c.ERF,[new o.Expression(e)]);return t}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 toIntegerBigint(e){if(!e.isInteger())return null;const t=e.getMultiplier();return 1n!==t.denominator?null:t.numerator}},8584(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),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},8801(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t._=void 0,t.callFunction=callFunction,t.distribute=distribute,t.setEqual=setEqual,t.functionAssign=functionAssign,t.route=function route(e,t,n){let i;if("assign"===n)i=(0,v.assign)(e,t);else if("comma"===n)i=(0,w.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)&&!g.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(g.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,T.subtract)(e,t):"div"===n?(0,b.divide)(e,t):(0,A.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),d=n(1897),g=n(4462),h=n(3982),x=n(8300),E=n(294),y=n(266),v=n(2707),P=n(6255),w=n(4091),b=n(3171),M=n(6498),A=n(3957),T=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(`Unsupported function ${e}`);const{fn:i,minArgs:r,maxArgs:a,maxPrecision:u,equationArgs:c,distElWise:d,deferArguments:x,returnBoundary:y}=n;if(r>-1&&t.length<r)throw new o.ParserError(`${e} requires a minimum of ${r} arguments but ${t.length} provided!`);if(a>-1&&t.length>a)throw new o.ParserError(`${e} allows a maximum of ${a} arguments but ${t.length} provided!`);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=d?s.filter(e=>h.Vector.isVector(e)||g.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():g.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]):g.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(`Invalid function declaration ${e.text()}.`);const n=[...e.getElements()],i=n.pop();if(!p.Expression.isExpression(i))throw new o.UnexpectedInputError(`Invalid function declaration ${e.text()}.`);const r=(0,d.assertPlainVariableAndGetString)(i),s=n.map(e=>{if(!p.Expression.isExpression(e))throw new o.UnexpectedInputError((0,o.message)("plainVariableExpected",{input:e.text()}));return(0,d.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:P.add,minus:T.subtract,times:M.multiply,div:b.divide,pow:A.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:w.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:T.subtractPrefix,plusPrefix:P.addPrefix,factorial:i.factorial,doubleFactorial:i.doubleFactorial}},8891(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.remove=function remove(e,t){const n=e.indexOf(t);return n>-1&&e.splice(n,1),e},t.isEqualArray=function isEqualArray(e,t){if(e.length!==t.length)return!1;for(const n of e)if(!t.includes(n))return!1;return!0},t.combinedArray=function combinedArray(e,t){return[...new Set(e.concat(t))].sort()},t.intersection=function intersection(e,t){if(e.length>t.length)return intersection(t,e);const n=[];for(const i of e)t.includes(i)&&n.push(i);return n},t.syncSort=function syncSort(e,t,n){const i=e.map((e,t)=>t);i.sort((t,i)=>n(e[t],e[i]));const r=i.map(t=>e[t]),s=i.map(e=>t[e]);return[r,s]},t.allEqual=function allEqual(e){if(0===e.length)return!0;const t=e[0];return e.every(e=>e===t)}},8989(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),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]}return c.isPolynomialLike()&&m.isPolynomialLike()&&([c,m]=reduce(c,m),[m,c]=reduce(m,c),t=c.div(m)),(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)))}},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]}}},9350(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.zTrim=zTrim,t.zIsZero=zIsZero,t.zLC=zLC,t.zSub=function zSub(e,t){const n=Math.max(e.length,t.length),i=new Array(n).fill(0n);for(let r=0;r<n;r++)i[r]=(e[r]??0n)-(t[r]??0n);return zTrimInPlace(i)},t.zTryDivExact=zTryDivExact,t.zDivExact=zDivExact,t.zScale=function zScale(e,t){return 0n===t?[0n]:1n===t?zTrim(e):zTrimInPlace(e.map(e=>(e??0n)*t))},t.zNormalizePrimitiveSign=zNormalizePrimitiveSign,t.zNormalizeSign=zNormalizeSign,t.zPrimitivePart=zPrimitivePart,t.zPseudoRemainder=zPseudoRemainder,t.zGcdPrimitivePRS=zGcdPrimitivePRS,t.zGcdFull=function zGcdFull(e,t){if(zIsZero(e))return zNormalizeSign(t);if(zIsZero(t))return zNormalizeSign(e);const n=zNormalizePrimitiveSign(e).content,r=zNormalizePrimitiveSign(t).content,s=(0,i.gcd)(n,r),o=0n===n||1n===n?zTrim(e.slice()):zDivExact(e,[n]),a=0n===r||1n===r?zTrim(t.slice()):zDivExact(t,[r]),l=zGcdPrimitivePRS(o,a);return zNormalizeSign(0n===s||1n===s?l:l.map(e=>e*s))},t.zDerivative=function zDerivative(e){const t=zTrimInPlace(e.slice());if(t.length<=1)return[0n];const n=new Array(t.length-1).fill(0n);for(let e=1;e<t.length;e++)n[e-1]=(t[e]??0n)*BigInt(e);return zTrimInPlace(n)},t.zShift=function zShift(e,t){if(t<=0)return zTrim(e);const n=zTrimInPlace(e.slice());if(1===n.length&&0n===n[0])return[0n];const i=new Array(n.length+t).fill(0n);for(let e=0;e<n.length;e++)i[e+t]=n[e]??0n;return i},t.fpAdd=function fpAdd(e,t){if(e.p!==t.p)throw new Error("fpAdd: modulus mismatch");const n=e.p,r=Math.max(e.coeffs.length,t.coeffs.length),s=new Array(r).fill(0n);for(let o=0;o<r;o++)s[o]=(0,i.modNorm)((e.coeffs[o]??0n)+(t.coeffs[o]??0n),n);return{p:n,coeffs:zTrimInPlace(s)}},t.fpSub=function fpSub(e,t){if(e.p!==t.p)throw new Error("fpSub: modulus mismatch");const n=e.p,r=Math.max(e.coeffs.length,t.coeffs.length),s=new Array(r).fill(0n);for(let o=0;o<r;o++)s[o]=(0,i.modNorm)((e.coeffs[o]??0n)-(t.coeffs[o]??0n),n);return{p:n,coeffs:zTrimInPlace(s)}},t.fpScale=fpScale,t.fpMul=function fpMul(e,t){if(e.p!==t.p)throw new Error("fpMul: modulus mismatch");const n=e.p,r=fpTrim(e).coeffs,s=fpTrim(t).coeffs;if(1===r.length&&0n===r[0])return{p:n,coeffs:[0n]};if(1===s.length&&0n===s[0])return{p:n,coeffs:[0n]};const o=new Array(r.length+s.length-1).fill(0n);for(let e=0;e<r.length;e++){const t=r[e]??0n;if(0n!==t)for(let r=0;r<s.length;r++){const a=s[r]??0n;0n!==a&&(o[e+r]=(0,i.modNorm)((o[e+r]??0n)+t*a,n))}}return{p:n,coeffs:zTrimInPlace(o)}},t.fpDivRem=fpDivRem,t.fpGCD=function fpGCD(e,t){if(e.p!==t.p)throw new Error("fpGCD: modulus mismatch");let n=fpTrim(e),r=fpTrim(t);for(;!fpIsZero(r);){const{r:e}=fpDivRem(n,r);n=r,r=fpTrim(e)}return function fpMonic(e){const t=fpTrim(e);if(fpIsZero(t))return t;const n=function fpLC(e){const t=fpTrim(e).coeffs;return t[t.length-1]??0n}(t),r=(0,i.modInv)(n,t.p);return fpScale(t,r)}(n)},t.zTrimMod=zTrimMod,t.zToSymmetricMod=function zToSymmetricMod(e,t){return e.map(e=>(0,i.modSymmetric)(e,t))},t.zAddMod=function zAddMod(e,t,n){const r=Math.max(e.length,t.length),s=new Array(r).fill(0n);for(let o=0;o<r;o++)s[o]=(0,i.modNorm)((e[o]??0n)+(t[o]??0n),n);return zTrimInPlace(s)},t.zSubMod=function zSubMod(e,t,n){const r=Math.max(e.length,t.length),s=new Array(r).fill(0n);for(let o=0;o<r;o++)s[o]=(0,i.modNorm)((e[o]??0n)-(t[o]??0n),n);return zTrimInPlace(s)},t.zScaleMod=function zScaleMod(e,t,n){const r=(0,i.modNorm)(t,n);return 0n===r?[0n]:zTrimInPlace(e.map(e=>(0,i.modNorm)((e??0n)*r,n)))},t.zMulMod=function zMulMod(e,t,n){if(e=zTrimMod(e,n),t=zTrimMod(t,n),zIsZero(e)||zIsZero(t))return[0n];const r=new Array(e.length+t.length-1).fill(0n);for(let s=0;s<e.length;s++){const o=(0,i.modNorm)(e[s]??0n,n);if(0n!==o)for(let e=0;e<t.length;e++){const a=(0,i.modNorm)(t[e]??0n,n);0n!==a&&(r[s+e]=(0,i.modNorm)((r[s+e]??0n)+o*a,n))}}return zTrimInPlace(r)},t.zDivRemMod=function zDivRemMod(e,t,n){const r=zTrimMod(e,n).slice(),s=zTrimMod(t,n).slice();if(zIsZero(s))throw new Error("zDivRemMod: division by zero polynomial");const o=zDeg(r),a=zDeg(s);if(o<a)return{q:[0n],r};const l=(0,i.modInv)(zLC(s),n),u=new Array(o-a+1).fill(0n),c=r;for(;zDeg(c)>=a&&!zIsZero(c);){const e=zDeg(c),t=e-a,r=(0,i.modNorm)((c[e]??0n)*l,n);u[t]=(0,i.modNorm)((u[t]??0n)+r,n);for(let e=0;e<=a;e++)c[e+t]=(0,i.modNorm)((c[e+t]??0n)-r*(s[e]??0n),n);zTrimInPlace(c)}return{q:zTrimInPlace(u),r:zTrimInPlace(c)}},t.isOnePoly=function isOnePoly(e){return e.isConstant()&&1n===e.constantTerm()},t.mvNormalize=function mvNormalize(e){const t=e.clone();return t.trim(),t},t.mvDivideByCoeffContent=mvDivideByCoeffContent,t.mvNormalizePrimitiveSignLex=mvNormalizePrimitiveSignLex,t.mvNormalizeSignUnivariateInVar=function mvNormalizeSignUnivariateInVar(e,t){if(0===e.terms.size)return r.MultiPoly.zero();let n=e;const i=function mvDegree(e,t){if(0===e.terms.size)return-1;let n=0;for(const i of e.terms.keys()){const e=(0,r.keyToExp)(i).get(t)??0;e>n&&(n=e)}return n}(n,t);if(i<=0)return n;let s=0n;for(const[e,o]of n.terms){const n=(0,r.keyToExp)(e);if((n.get(t)??0)!==i)continue;let a=!0;for(const[e,i]of n.entries())if(e!==t&&0!==i){a=!1;break}if(a){s=o;break}}return s<0n&&(n=scalePoly(n,-1n)),n},t.denseToKey=function denseToKey(e){return(0,r.expToKey)(function denseToExponents(e){const t=new Map;for(let n=0;n<e.length;n++){const i=e[n]??0;0!==i&&t.set(n,i)}return t}(e))},t.mvVariablesSorted=function mvVariablesSorted(e){return Array.from(e.variables()).sort((e,t)=>e-t)},t.mapCombineInPlace=mapCombineInPlace,t.addPoly=addPoly,t.subPoly=subPoly,t.negPoly=function negPoly(e){const t=new r.MultiPoly;for(const[n,i]of e.terms)0n!==i&&t.terms.set(n,-i);return t.trim(),t},t.scalePoly=scalePoly,t.mulPoly=mulPoly,t.equalPoly=function equalPoly(e,t){if(e===t)return!0;if(e.terms.size!==t.terms.size)return!1;for(const[n,i]of e.terms)if((t.terms.get(n)??0n)!==i)return!1;return!0},t.leadTermLex=leadTermLex,t.mvNumVars=mvNumVars,t.mvExactDiv=mvExactDiv,t.mvExactDivByMonomial=function mvExactDivByMonomial(e,t){return 1!==t.terms.size?null:mvExactDiv(e,t)},t.monoDividesDense=monoDividesDense,t.monoSubDense=monoSubDense,t.substituteVarIndex=function substituteVarIndex(e,t,n){if(0===e.terms.size)return r.MultiPoly.zero();const i=new r.MultiPoly;for(const[s,o]of e.terms.entries()){const e=(0,r.keyToExp)(s),a=e.get(t)??0;let l=o;if(0!==a){let i=n,r=1n,s=BigInt(a);for(;s>0n;)1n&s&&(r*=i),i*=i,s>>=1n;l*=r,e.delete(t)}const u=(0,r.expToKey)(e),c=(i.terms.get(u)??0n)+l;0n===c?i.terms.delete(u):i.terms.set(u,c)}return i.trim(),i},t.removeVarIndex=function removeVarIndex(e,t){if(0===e.terms.size)return r.MultiPoly.zero();const n=new r.MultiPoly;for(const[i,s]of e.terms.entries()){const e=(0,r.keyToExp)(i),o=new Map;for(const[n,i]of e.entries())n!==t&&o.set(n>t?n-1:n,i);const a=(0,r.expToKey)(o);n.terms.set(a,(n.terms.get(a)??0n)+s),0n===n.terms.get(a)&&n.terms.delete(a)}return n.trim(),n},t.addVarIndex=function addVarIndex(e,t){if(0===e.terms.size)return r.MultiPoly.zero();const n=new r.MultiPoly;for(const[i,s]of e.terms.entries()){const e=(0,r.keyToExp)(i),o=new Map;for(const[n,i]of e.entries())o.set(n>=t?n+1:n,i);const a=(0,r.expToKey)(o);n.terms.set(a,(n.terms.get(a)??0n)+s),0n===n.terms.get(a)&&n.terms.delete(a)}return n.trim(),n},t.fromUnivariate=function fromUnivariate(e,t=0){const n=new r.MultiPoly;for(let i=0;i<e.length;i++){const s=e[i];if(0===s)continue;const o=new Map;i>0&&o.set(t,i),n.terms.set((0,r.expToKey)(o),BigInt(s))}return n},t.toUnivariate=function toUnivariate(e,t=0){for(const n of e.terms.keys()){const e=(0,r.keyToExp)(n);for(const n of e.keys())if(n!==t)return null}const n=e.degree(t);if(n<0)return[0];const i=new Array(n+1).fill(0);for(const[n,s]of e.terms)i[(0,r.keyToExp)(n).get(t)??0]=bigintToSafeNumber(s,"toUnivariate");return function trimTrailingZeros(e){let t=e.length-1;for(;t>0&&0===e[t];)t--;return e.slice(0,t+1)}(i)},t.viewAsUnivariate=viewAsUnivariate,t.fromUnivariateView=fromUnivariateView,t.pseudoDivide=pseudoDivide,t.multiPolyGCD=multiPolyGCD,t.mvContentInVar=mvContentInVar,t.primitivePart=function primitivePart(e,t){const n=mvContentInVar(e,t);if(n.isConstant()&&1n===n.constantTerm())return e;const i=viewAsUnivariate(e,t),s=[];for(const[e,t]of i){const i=n.variables();if(0===i.size){const i=n.constantTerm(),o=new r.MultiPoly;for(const[t,n]of e.terms)o.terms.set(t,n/i);s.push([o,t])}else{const r=Math.min(...i),[o]=pseudoDivide(e,n,r);s.push([mvPrimitiveNormalized(o),t])}}return fromUnivariateView(s,t)},t.quadraticCoeffsInVar=function quadraticCoeffsInVar(e,t){const n=new r.MultiPoly,i=new r.MultiPoly,s=new r.MultiPoly;for(const[o,a]of e.terms){const e=(0,r.keyToExp)(o),l=e.get(t)??0;e.delete(t);const u=(0,r.expToKey)(e);2===l?n.terms.set(u,(n.terms.get(u)??0n)+a):1===l?i.terms.set(u,(i.terms.get(u)??0n)+a):0===l&&s.terms.set(u,(s.terms.get(u)??0n)+a)}return n.trim(),i.trim(),s.trim(),{A:n,B:i,C:s}};const i=n(4988),r=n(4737);function zTrim(e){let t=e.length;for(;t>1&&0n===e[t-1];)t--;return t===e.length?e:e.slice(0,t)}function zTrimInPlace(e){for(;e.length>1&&0n===e[e.length-1];)e.pop();return e}function zIsZero(e){for(let t=e.length-1;t>=0;t--)if(0n!==(e[t]??0n))return!1;return!0}function zDeg(e){for(let t=e.length-1;t>=0;t--)if(0n!==(e[t]??0n))return t;return 0}function zLC(e){for(let t=e.length-1;t>=0;t--){const n=e[t]??0n;if(0n!==n)return n}return 0n}function zTryDivExact(e,t){const{q:n,r:i}=function zDivRem(e,t){if(e=zTrim(e.slice()),zIsZero(t=zTrim(t.slice())))throw new Error("zDivRem: division by zero polynomial");const n=zDeg(e),i=zDeg(t);if(n<i)return{q:[0n],r:e};const r=zLC(t),s=new Array(n-i+1).fill(0n),o=e.slice();for(let e=n;e>=i;e--){const n=e-i,a=o[e]??0n;if(0n===a)continue;if(a%r!==0n)continue;const l=a/r;s[n]+=l;for(let e=0;e<=i;e++)o[n+e]=(o[n+e]??0n)-l*(t[e]??0n)}return{q:zTrimInPlace(s),r:zTrimInPlace(o)}}(e,t);return zIsZero(i)?n:null}function zDivExact(e,t){const n=zTryDivExact(e,t);if(null===n)throw new Error("zDivExact: non-exact division");return n}function zNormalizePrimitiveSign(e){const t=zTrimInPlace(e.slice());if(1===t.length&&0n===t[0])return{content:0n,primitive:[0n]};let n=(0,i.contentBigint)(t);0n===n&&(n=1n);const r=t.map(e=>(e??0n)/n);if((r[r.length-1]??0n)<0n)for(let e=0;e<r.length;e++)r[e]=-r[e];return{content:n,primitive:zTrimInPlace(r)}}function zNormalizeSign(e){let t=zTrim(e.slice());return 0===t.length?[0n]:1===t.length?0n===t[0]?[0n]:[t[0]<0n?-t[0]:t[0]]:((t[t.length-1]??0n)<0n&&(t=t.map(e=>-e)),t)}function zPrimitivePart(e){return zNormalizePrimitiveSign(e).primitive}function zPseudoRemainder(e,t){const n=zTrim(e.slice()),r=zTrim(t.slice());if(zIsZero(r))throw new Error("zPseudoRemainder: divide by zero");const s=r.length-1,o=r[s];let a=n;for(;!zIsZero(a)&&a.length-1>=s;){const e=a.length-1,t=e-s,n=a[e],l=a.map(e=>e*o);for(let e=0;e<=s;e++)l[e+t]-=n*(r[e]??0n);a=zTrimInPlace(l);const u=(0,i.contentBigint)(a);if(u>1n){for(let e=0;e<a.length;e++)a[e]/=u;zTrimInPlace(a)}}return a}function zGcdPrimitivePRS(e,t){let n=zPrimitivePart(e),i=zPrimitivePart(t);if(zIsZero(n)&&zIsZero(i))return[0n];if(zIsZero(n))return zPrimitivePart(i);if(zIsZero(i))return zPrimitivePart(n);for(;!zIsZero(i);){const e=zPseudoRemainder(n,i);n=i,i=zPrimitivePart(e)}return zPrimitivePart(n)}function fpTrim(e){const t=e.coeffs.slice(),n=e.p;for(let e=0;e<t.length;e++)t[e]=(0,i.modNorm)(t[e]??0n,n);return zTrimInPlace(t),{p:n,coeffs:t}}function fpIsZero(e){const t=fpTrim(e);return 1===t.coeffs.length&&0n===t.coeffs[0]}function fpScale(e,t){const n=e.p,r=(0,i.modNorm)(t,n);if(0n===r)return{p:n,coeffs:[0n]};if(1n===r)return fpTrim(e);const s=e.coeffs.map(e=>(0,i.modNorm)((e??0n)*r,n));return{p:n,coeffs:zTrimInPlace(s)}}function fpDivRem(e,t){if(e.p!==t.p)throw new Error("fpDivRem: modulus mismatch");const n=e.p,r=fpTrim(e).coeffs.slice(),s=fpTrim(t).coeffs.slice();if(zTrimInPlace(r),zTrimInPlace(s),1===s.length&&0n===s[0])throw new Error("fpDivRem: division by zero polynomial");if(1===r.length&&0n===r[0])return{q:{p:n,coeffs:[0n]},r:{p:n,coeffs:[0n]}};const o=r.length-1,a=s.length-1;if(o<a)return{q:{p:n,coeffs:[0n]},r:{p:n,coeffs:r}};const l=new Array(o-a+1).fill(0n),u=(0,i.modInv)(s[a]??0n,n);for(let e=o-a;e>=0;e--){const t=(0,i.modNorm)((r[a+e]??0n)*u,n);if(l[e]=t,0n!==t)for(let o=0;o<=a;o++)r[o+e]=(0,i.modNorm)((r[o+e]??0n)-t*(s[o]??0n),n)}const c=r.slice(0,a);return zTrimInPlace(l),zTrimInPlace(c),{q:{p:n,coeffs:l},r:{p:n,coeffs:c.length?c:[0n]}}}function zTrimMod(e,t){return zTrimInPlace(e.map(e=>(0,i.modNorm)(e??0n,t)))}function compareDenseLex(e,t){const n=Math.max(e.length,t.length);for(let i=0;i<n;i++){const n=e[i]??0,r=t[i]??0;if(n!==r)return n>r?1:-1}return 0}function mvDivideByCoeffContent(e){const t=(0,i.contentBigint)(e.terms.values());if(0n===t)return{content:0n,primitive:r.MultiPoly.zero()};if(1n===t)return{content:1n,primitive:e.clone()};const n=new r.MultiPoly;for(const[i,r]of e.terms){if(r%t!==0n)throw new Error("mvDivideByCoeffContent: non-exact division");const e=r/t;0n!==e&&n.terms.set(i,e)}return n.trim(),{content:t,primitive:n}}function mvNormalizePrimitiveSignLex(e){if(0===e.terms.size)return{content:0n,primitive:r.MultiPoly.zero()};const{content:t,primitive:n}=mvDivideByCoeffContent(e);if(0===n.terms.size)return{content:t,primitive:n};const i=leadTermLex(n,mvNumVars(n));return i&&i.coeff<0n?{content:-t,primitive:scalePoly(n,-1n)}:{content:t,primitive:n}}function mapCombineInPlace(e,t,n,i,r){for(const[s,o]of t){const t=n(e.get(s)??r(),o);i(t)?e.delete(s):e.set(s,t)}}function addPoly(e,t){const n=new r.MultiPoly(e.terms);return mapCombineInPlace(n.terms,t.terms,(e,t)=>e+t,e=>0n===e,()=>0n),n.trim(),n}function subPoly(e,t){const n=new r.MultiPoly(e.terms);return mapCombineInPlace(n.terms,t.terms,(e,t)=>e-t,e=>0n===e,()=>0n),n.trim(),n}function scalePoly(e,t){if(0n===t)return r.MultiPoly.zero();if(1n===t)return e.clone();const n=new r.MultiPoly;for(const[i,r]of e.terms){const e=r*t;0n!==e&&n.terms.set(i,e)}return n.trim(),n}function mulPoly(e,t){if(0===e.terms.size||0===t.terms.size)return r.MultiPoly.zero();const n=new r.MultiPoly;for(const[i,s]of e.terms){const e=(0,r.keyToExp)(i);for(const[i,o]of t.terms){const t=(0,r.keyToExp)(i),a=new Map(e);for(const[e,n]of t)a.set(e,(a.get(e)??0)+n);const l=(0,r.expToKey)(a),u=(n.terms.get(l)??0n)+s*o;0n===u?n.terms.delete(l):n.terms.set(l,u)}}return n.trim(),n}function leadTermLex(e,t){let n=null,i=0n;for(const[s,o]of e.terms.entries()){if(0n===o)continue;const e=(0,r.keyToExp)(s),a=new Array(t).fill(0);for(const[n,i]of e.entries())n>=0&&n<t&&(a[n]=i);(!n||compareDenseLex(a,n)>0)&&(n=a,i=o)}return n?{exp:n,coeff:i}:null}function mvNumVars(...e){let t=-1;for(const n of e)for(const e of n.terms.keys()){const n=(0,r.keyToExp)(e);for(const e of n.keys())e>t&&(t=e)}return t+1}function mvExactDiv(e,t){return function exactDivLex(e,t,n){const i=leadTermLex(t,n);if(!i)return null;let s=e.clone();s.trim();const o=r.MultiPoly.zero();for(;!s.isZero();){const e=leadTermLex(s,n);if(!e)break;if(!monoDividesDense(i.exp,e.exp))return null;const a=monoSubDense(e.exp,i.exp);if(0n===i.coeff)return null;if(e.coeff%i.coeff!==0n)return null;const l=e.coeff/i.coeff,u=r.MultiPoly.monomial(l,a),c=addPoly(o,u);o.terms=c.terms,s=subPoly(s,mulPoly(u,t))}return o.trim(),o}(e,t,mvNumVars(e,t))}function monoDividesDense(e,t){const n=Math.max(e.length,t.length);for(let i=0;i<n;i++)if((e[i]??0)>(t[i]??0))return!1;return!0}function monoSubDense(e,t){const n=Math.max(t.length,e.length),i=new Array(n).fill(0);for(let r=0;r<n;r++)i[r]=(e[r]??0)-(t[r]??0);return i}const s=BigInt(Number.MAX_SAFE_INTEGER);function bigintToSafeNumber(e,t){if(e>s||e<-s)throw new Error(`${t}: coefficient ${e.toString()} exceeds Number.MAX_SAFE_INTEGER`);return Number(e)}function viewAsUnivariate(e,t){const n=new Map;for(const[i,s]of e.terms){const e=(0,r.keyToExp)(i),o=e.get(t)??0,a=new Map(e);a.delete(t);const l=(0,r.expToKey)(a);let u=n.get(o);void 0===u&&(u=r.MultiPoly.zero(),n.set(o,u));const c=(u.terms.get(l)??0n)+s;0n===c?u.terms.delete(l):u.terms.set(l,c)}const i=[];for(const[e,t]of n)t.isZero()||i.push([t,e]);return i.sort((e,t)=>e[1]-t[1]),i}function fromUnivariateView(e,t){const n=r.MultiPoly.zero();for(const[i,s]of e)for(const[e,o]of i.terms){const i=(0,r.keyToExp)(e);s>0&&i.set(t,(i.get(t)??0)+s);const a=(0,r.expToKey)(i),l=n.terms.get(a)??0n;n.terms.set(a,l+o)}return n.trim(),n}function mvPrimitiveNormalized(e){return e.isZero()?r.MultiPoly.zero():mvNormalizePrimitiveSignLex(e).primitive}function pseudoDivide(e,t,n){if(t.isZero())throw new Error("Division by zero");const i=t.degree(n),s=e.degree(n);if(s<i)return[r.MultiPoly.zero(),e.clone()];const o=t.leadingCoeff(n);let a=r.MultiPoly.zero(),l=e.clone(),u=s-i+1;for(;!l.isZero()&&l.degree(n)>=i;){const e=l.degree(n),s=l.leadingCoeff(n),c=e-i,m=new r.MultiPoly;for(const[e,t]of s.terms){const i=(0,r.keyToExp)(e);c>0&&i.set(n,(i.get(n)??0)+c),m.terms.set((0,r.expToKey)(i),t)}a=addPoly(mulPoly(a,o),m),l=subPoly(mulPoly(l,o),mulPoly(m,t)),u--}let c=r.MultiPoly.constant(1n);for(let e=0;e<u;e++)c=mulPoly(c,o);return a=mulPoly(a,c),l=mulPoly(l,c),[a,l]}function multiPolyGCD(e,t,n){if(e.isZero())return t.isZero()?r.MultiPoly.constant(1n):mvPrimitiveNormalized(t);if(t.isZero())return mvPrimitiveNormalized(e);let i=mvPrimitiveNormalized(e),s=mvPrimitiveNormalized(t);for(i.degree(n)<s.degree(n)&&([i,s]=[s,i]);!s.isZero();){const[,e]=pseudoDivide(i,s,n);if(e.isZero())break;i=s,s=mvPrimitiveNormalized(e)}return mvPrimitiveNormalized(s)}function mvContentInVar(e,t){const n=viewAsUnivariate(e,t);if(0===n.length)return r.MultiPoly.constant(1n);if(1===n.length)return mvPrimitiveNormalized(n[0][0]);let s=n[0][0];for(let e=1;e<n.length;e++){const t=new Set([...s.variables(),...n[e][0].variables()]);if(0===t.size)s=r.MultiPoly.constant((0,i.gcd)(s.constantTerm(),n[e][0].constantTerm()));else{const i=Math.min(...t);s=multiPolyGCD(s,n[e][0],i)}if(s.isConstant()&&1n===s.constantTerm())return r.MultiPoly.constant(1n)}return mvPrimitiveNormalized(s)}},9426(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.mathFunctionRegistry=void 0;const i=n(2724),r=n(4692),s=n(3725),o=n(2766),a=n(9684),l=n(2634),u=n(2012),c=n(7410),m=n(5530),p=n(7571),d=n(6698),g=n(6082),h=n(7867),x=n(8533),E=n(1649),y=n(6925),v=n(706),P=n(2295),w=n(6950),b=n(6351),M=n(6284),A=n(6528),T=n(6184),N=n(6099),O=n(1897),R=n(6430),F=n(4462),D=n(430),k=n(8300),z=n(294),L=n(1668),V=n(2707),U=n(6913),q=n(5598),B=n(3552),$=n(3982),Z=n(4703),j=n(4600),G=n(7741),H=n(886);function entry(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={cos:entry({fn:E.cos,minArgs:1,maxArgs:1,distElWise:!0}),sin:entry({fn:E.sin,minArgs:1,maxArgs:1,distElWise:!0}),tan:entry({fn:E.tan,minArgs:1,maxArgs:1,distElWise:!0}),sec:entry({fn:E.sec,minArgs:1,maxArgs:1,distElWise:!0}),csc:entry({fn:E.csc,minArgs:1,maxArgs:1,distElWise:!0}),cot:entry({fn:E.cot,minArgs:1,maxArgs:1,distElWise:!0}),acos:entry({fn:E.acos,minArgs:1,maxArgs:1,distElWise:!0}),asin:entry({fn:E.asin,minArgs:1,maxArgs:1,distElWise:!0}),atan:entry({fn:E.atan,minArgs:1,maxArgs:1,distElWise:!0}),asec:entry({fn:E.asec,minArgs:1,maxArgs:1,distElWise:!0}),acsc:entry({fn:E.acsc,minArgs:1,maxArgs:1,distElWise:!0}),acot:entry({fn:E.acot,minArgs:1,maxArgs:1,distElWise:!0}),atan2:entry({fn:E.atan2,minArgs:2,maxArgs:2,distElWise:!0}),cosh:entry({fn:E.cosh,minArgs:1,maxArgs:1,distElWise:!0}),sinh:entry({fn:E.sinh,minArgs:1,maxArgs:1,distElWise:!0}),tanh:entry({fn:E.tanh,minArgs:1,maxArgs:1,distElWise:!0}),sech:entry({fn:E.sech,minArgs:1,maxArgs:1,distElWise:!0}),csch:entry({fn:E.csch,minArgs:1,maxArgs:1,distElWise:!0}),coth:entry({fn:E.coth,minArgs:1,maxArgs:1,distElWise:!0}),acosh:entry({fn:E.acosh,minArgs:1,maxArgs:1,distElWise:!0}),asinh:entry({fn:E.asinh,minArgs:1,maxArgs:1,distElWise:!0}),atanh:entry({fn:E.atanh,minArgs:1,maxArgs:1,distElWise:!0}),asech:entry({fn:E.asech,minArgs:1,maxArgs:1,distElWise:!0}),acsch:entry({fn:E.acsch,minArgs:1,maxArgs:1,distElWise:!0}),acoth:entry({fn:E.acoth,minArgs:1,maxArgs:1,distElWise:!0}),abs:entry({fn:x.abs,minArgs:1,maxArgs:1,distElWise:!0}),sqrt:entry({fn:x.sqrt,minArgs:1,maxArgs:1,distElWise:!0}),nthroot:entry({fn:x.nthroot,minArgs:2,maxArgs:2,distElWise:!0}),cbrt:entry({fn:x.cbrt,minArgs:1,maxArgs:1,distElWise:!0}),subst:entry({fn:H.subst,minArgs:3,maxArgs:3,distElWise:!0}),log:entry({fn:x.log,minArgs:1,maxArgs:2,distElWise:!0}),exp:entry({fn:x.exp,minArgs:1,maxArgs:1,distElWise:!0}),erf:entry({fn:x.erf,minArgs:1,maxArgs:1,distElWise:!0}),erfc:entry({fn:x.erfc,minArgs:1,maxArgs:1,distElWise:!0}),gamma:entry({fn:x.gamma,minArgs:1,maxArgs:1,distElWise:!0}),[k.DIRAC]:entry({fn:x.dirac,minArgs:1,maxArgs:1,distElWise:!0}),[k.HEAVISIDE]:entry({fn:x.heaviside,minArgs:1,maxArgs:1,distElWise:!0}),hypot:entry({fn:h.hypot,minArgs:2,maxArgs:2,distElWise:!0}),[k.FACTORIAL]:entry({fn:x.factorial,minArgs:1,maxArgs:1,distElWise:!0}),factorial:entry({fn:x.factorial,minArgs:1,maxArgs:1,distElWise:!0}),[k.DOUBLE_FACTORIAL]:entry({fn:x.doubleFactorial,minArgs:1,maxArgs:1,distElWise:!0}),expand:entry({fn:G.expand,minArgs:1,maxArgs:1,distElWise:!0}),numeric:entry({fn:L.numeric,minArgs:1,maxArgs:2,equationArgs:[0],distElWise:!1,deferArguments:!0}),round:entry({fn:x.round,minArgs:1,maxArgs:2,distElWise:!0}),sign:entry({fn:x.sign,minArgs:1,maxArgs:1,distElWise:!0}),floor:entry({fn:x.floor,minArgs:1,maxArgs:1,distElWise:!0}),ceil:entry({fn:x.ceiling,minArgs:1,maxArgs:1,distElWise:!0}),ceiling:entry({fn:x.ceiling,minArgs:1,maxArgs:1,distElWise:!0}),trunc:entry({fn:y.trunc,minArgs:1,maxArgs:1,distElWise:!0}),mod:entry({fn:x.mod,minArgs:2,maxArgs:2,distElWise:!0}),modinv:entry({fn:x.modInv,minArgs:2,maxArgs:2,distElWise:!0}),parens:entry({fn:x.parens,minArgs:1,maxArgs:1,distElWise:!0}),count:entry({fn:v.count,minArgs:1,maxArgs:1,distElWise:!1}),size:entry({fn:v.size,minArgs:1,maxArgs:1,distElWise:!1}),contains:entry({fn:x.contains,minArgs:2,maxArgs:2,distElWise:!1}),max:entry({fn:x.max,minArgs:2,maxArgs:-1,distElWise:!0}),min:entry({fn:x.min,minArgs:2,maxArgs:-1,distElWise:!0}),imagpart:entry({fn:j.imagPart,minArgs:1,maxArgs:1,distElWise:!0}),realpart:entry({fn:j.realPart,minArgs:1,maxArgs:1,distElWise:!0}),polarform:entry({fn:j.polarForm,minArgs:1,maxArgs:1,distElWise:!0}),rectform:entry({fn:j.rectForm,minArgs:1,maxArgs:1,distElWise:!0}),arg:entry({fn:j.arg,minArgs:1,maxArgs:1,distElWise:!0}),csgn:entry({fn:j.csgn,minArgs:1,maxArgs:1,distElWise:!0}),conjugate:entry({fn:j.conjugate,minArgs:1,maxArgs:1,distElWise:!0}),matrix:entry({fn:x.matrix,minArgs:1,maxArgs:-1,distElWise:!1}),imatrix:entry({fn:D.imatrix,minArgs:1,maxArgs:1,distElWise:!1}),determinant:entry({fn:R.determinant,minArgs:1,maxArgs:1,distElWise:!1}),transpose:entry({fn:e=>e.transpose(),minArgs:1,maxArgs:1,distElWise:!1}),augment:entry({fn:(e,t)=>e.augment(t),minArgs:2,maxArgs:2,distElWise:!1}),rref:entry({fn:(e,t)=>e.rref(t),minArgs:1,maxArgs:2,distElWise:!1}),nullspace:entry({fn:R.nullspace,minArgs:1,maxArgs:2,distElWise:!1}),dot:entry({fn:B.dot,minArgs:2,maxArgs:2,distElWise:!1}),cross:entry({fn:B.cross,minArgs:2,maxArgs:2,distElWise:!1}),deg:entry({fn:U.deg,minArgs:1,maxArgs:2,distElWise:!0}),content:entry({fn:U.content,minArgs:1,maxArgs:1,distElWise:!0}),div:entry({fn:U.div,minArgs:2,maxArgs:2,distElWise:!1}),divide:entry({fn:U.divide,minArgs:2,maxArgs:2,distElWise:!1}),diff:entry({fn:function parserDiff(e,t,n){let i;return i=T.Equation.isEquation(e)?e.each(e=>parserDiff(e,t,n)):(0,u.diff)(e,t,n),i},minArgs:1,maxArgs:3,equationArgs:[0],distElWise:!0}),integrate:entry({fn:function parserIntegrate(e,t){let n;return n=T.Equation.isEquation(e)?e.each(e=>parserIntegrate(e,t)):(0,m.integrate)(e,t),n},minArgs:1,maxArgs:2,equationArgs:[0],distElWise:!0}),limit:entry({fn:function parserLimit(e,t,n,i){let r="both";return i&&(r=(0,O.assertPlainVariableAndGetString)(i)),(0,g.limit)(e,t,n,r)},minArgs:3,maxArgs:4,distElWise:!0}),laplace:entry({fn:d.laplace,minArgs:3,maxArgs:3,distElWise:!0}),ilaplace:entry({fn:p.ilaplace,minArgs:3,maxArgs:3,distElWise:!0}),sum:entry({fn:x.sum,minArgs:4,maxArgs:4,distElWise:!0}),product:entry({fn:x.product,minArgs:4,maxArgs:4,distElWise:!0}),defint:entry({fn:x.defint,minArgs:4,maxArgs:4,distElWise:!0}),[k.FRESNEL_S]:entry({fn:c.S,minArgs:1,maxArgs:1,distElWise:!0}),[k.FRESNEL_C]:entry({fn:c.C,minArgs:1,maxArgs:1,distElWise:!0}),polyfactors:entry({fn:i.polyFactors,minArgs:1,maxArgs:1,distElWise:!1}),factor:entry({fn:i.factor,minArgs:1,maxArgs:1,distElWise:!0}),simplify:entry({fn:a.simplify,minArgs:1,maxArgs:1,distElWise:!0}),partfrac:entry({fn:o.partfrac,minArgs:1,maxArgs:2,distElWise:!0}),gcd:entry({fn:r.gcd,minArgs:2,maxArgs:2,distElWise:!0}),lcm:entry({fn:r.lcm,minArgs:2,maxArgs:2,distElWise:!0}),groebner:entry({fn:s.groebner,minArgs:1,maxArgs:2,distElWise:!1}),sqcomp:entry({fn:function parserSqcomp(e,t){const n=void 0===t?void 0:(0,O.assertPlainVariableAndGetString)(t);return(0,l.sqcomp)(e,n).expression},minArgs:1,maxArgs:2,distElWise:!0}),solve:entry({fn:P.solve,minArgs:2,maxArgs:2,equationArgs:[0],distElWise:!1}),solveeqs:entry({fn:w.solveSystem,minArgs:1,maxArgs:1,distElWise:!1}),assume:entry({fn:b.assuming,minArgs:1,maxArgs:1,distElWise:!1}),forget:entry({fn:b.forget,minArgs:1,maxArgs:1,distElWise:!1}),unassign:entry({fn:V.unassign,minArgs:1,maxArgs:1,distElWise:!1,deferArguments:!0}),evaluate:entry({fn:L.evaluate,minArgs:1,maxArgs:3,equationArgs:[0],distElWise:!1,deferArguments:!0,usage:"scripting"}),return:entry({fn:z.RETURN,minArgs:1,maxArgs:1,equationArgs:[0],distElWise:!1,bracketlessStatement:!0,usage:"scripting"}),break:entry({fn:z.BREAK,minArgs:0,maxArgs:0,distElWise:!1,usage:"scripting"}),continue:entry({fn:z.CONTINUE,minArgs:0,maxArgs:0,distElWise:!1,usage:"scripting"}),and:entry({fn:z.AND,minArgs:2,maxArgs:-1,distElWise:!1,deferArguments:!0,usage:"scripting"}),or:entry({fn:z.OR,minArgs:2,maxArgs:-1,distElWise:!1,deferArguments:!0,usage:"scripting"}),not:entry({fn:z.NOT,minArgs:1,maxArgs:1,distElWise:!1,usage:"scripting"}),xor:entry({fn:z.XOR,minArgs:2,maxArgs:-1,distElWise:!1,usage:"scripting"}),iferror:entry({fn:z.IFERROR,minArgs:2,maxArgs:2,distElWise:!1,deferArguments:!0,usage:"scripting"}),iserror:entry({fn:z.ISERROR,minArgs:1,maxArgs:1,distElWise:!1,deferArguments:!0,usage:"scripting"}),if:entry({fn:z.IF,minArgs:2,maxArgs:3,distElWise:!1,deferArguments:!0,usage:"scripting"}),while:entry({fn:z.WHILE,minArgs:2,maxArgs:2,distElWise:!1,deferArguments:!0,usage:"scripting"}),for:entry({fn:z.FOR,minArgs:4,maxArgs:4,distElWise:!1,deferArguments:!0,usage:"scripting"}),each:entry({fn:function parserEach(e,t,n){const i=e(),r=[];if($.Vector.isVector(i)||M.Collection.isCollection(i)||q.ValuesSet.isValuesSet(i))i.forEach(e=>r.push(e.copy()));else if(F.Matrix.isMatrix(i))i.forEach(e=>r.push(e.copy()));else{if(!A.Dictionary.isDictionary(i))throw new Z.UnexpectedDataType((0,Z.message)("unsupportedType",{type:k.dataTypes[i.dataType]}));i.forEach(e=>r.push(e.copy()))}let s=0;return(0,z.FOR)(()=>(0,N.zero)(),()=>s<r.length?(0,N.one)():(0,N.zero)(),()=>(s++,(0,N.zero)()),()=>(0,V.LET)(t,()=>r[s],n))},minArgs:3,maxArgs:3,distElWise:!1,deferArguments:!0,usage:"scripting"}),let:entry({fn:V.LET,minArgs:3,maxArgs:-1,distElWise:!1,deferArguments:!0,normalizeDeferredArguments:V.normalizeLetArguments,returnBoundary:!0,usage:"scripting"}),block:entry({fn:z.BLOCK,minArgs:-1,maxArgs:-1,distElWise:!1,deferArguments:!0,returnBoundary:!0,usage:"scripting"}),isprime:entry({fn:v.isprime,minArgs:1,maxArgs:1,distElWise:!0}),fib:entry({fn:x.fibonacci,minArgs:1,maxArgs:1,distElWise:!0}),sinc:entry({fn:x.sinc,minArgs:1,maxArgs:1,distElWise:!0}),Shi:entry({fn:x.Shi,minArgs:1,maxArgs:1,distElWise:!0}),Si:entry({fn:x.Si,minArgs:1,maxArgs:1,distElWise:!0}),Chi:entry({fn:x.Chi,minArgs:1,maxArgs:1,distElWise:!0}),Ci:entry({fn:x.Ci,minArgs:1,maxArgs:1,distElWise:!0}),Ei:entry({fn:x.Ei,minArgs:1,maxArgs:1,distElWise:!0}),[k.LI]:entry({fn:x.Li,minArgs:1,maxArgs:1,distElWise:!0})}},9565(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.polyDiv=polyDiv,t.divide=divide,t.S=function S(e,t,n,i){const{polynomials:[r,s]}=normalizePolynomialInputs([e,t],n,i),o=r.LT(),a=s.LT(),l=o.LCM(a);return r.times(l.div(o)).minus(s.times(l.div(a)))},t.combinePolynomialVariables=combinePolynomialVariables,t.polyMod=function polyMod(e,t,n,i){const{variables:r}=normalizePolynomialInputs([e,t],n,i),[,o]=divide(e,t,n,r);return s.Polynomial.toPolynomial(o,n,r).order(n)},t.maxCommonVariableOccurrence=function maxCommonVariableOccurrence(e,t){const n=s.Polynomial.toPolynomial(e).maxVariableFrequency(),i=s.Polynomial.toPolynomial(t).maxVariableFrequency();for(const e in n)if(e in i)return e},t.polynomialFromNumber=function polynomialFromNumber(e,t,n=10,i,r){const remainder=function(e,t){return 0===e?0:Math.abs(e)<Math.abs(t)?-t%e:e%t},s=[];for(let r=t;r>=0;r--){const o=n**r,a=remainder(e,o),l=e-a,u=l/o;if(r===t&&(u<1||void 0!==i)){const t=i||1;s.push(t),e-=t*o;continue}Math.abs(l)<Math.abs(o)?s.push(0):(s.push(u),e=a)}if(void 0!==r){const e=s.length-1,t=s[e]-r;t%n===0&&(s[e]=r,s[e-1]+=t/n)}return s.reverse()};const i=n(5869),r=n(6099),s=n(2116);function normalizePolynomialInputs(e,t,n){const i=e.map(e=>s.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=>s.Polynomial.toPolynomial(e,t,r)),variables:r}}function polyDiv(e,t,n,i){const{polynomials:s}=normalizePolynomialInputs([...e,t],n,i),o=s.slice(0,e.length);let a=s[e.length].order(n);const l=e.map(()=>(0,r.zero)());let u=(0,r.zero)(),c=0;const m=1e3*e.length;for(;!a.isZero();){if(c++>m)throw new Error("Maximum iterations reached");let e=!1;const t=o.length;let i=0;for(;i<t&&!e;){const t=o[i],r=t.LT(),s=a.LT();if(r.divides(s)){const o=s.div(r);l[i]=l[i].plus(o.getExpression()),a=a.minus(t.times(o)).order(n),e=!0}else i++}const r=a.LT();e||(u=u.plus(r.getExpression()),a=a.minus(r).order(n))}return[l,u]}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,i.arrayAddUnique)(t,e.variables)}),t.sort(),t}},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(),o=r.default.sign(e);if((e=e.abs()).isZero())return new r.default(0);if(e.lt(2)){let t=new r.default(0),a=0,l=e;const u=Math.max(1e3,8*r.default.precision);for(;l.gte(i);){const n=new r.default(-1).pow(a).times(e.pow(2*a+1)),i=new r.default(2*a+1).times(String((0,s.factorial)(a))),o=t.plus(n.div(i));if(l=o.minus(t).abs(),t=o,a++,a>u)throw new Error("erf not converging. Exiting!")}let c=r.default.min(n.times(t),1);return-1===o&&(c=c.neg()),c}const a=e.mul(e).mul(2);let l=new r.default(1),u=l,c=l.abs();const m=Math.max(1e3,8*r.default.precision);for(let e=1;e<m;e++){l=l.mul(-(2*e-1)).div(a);const t=l.abs();if(t.gt(c))break;if(c=t,u=u.plus(l),t.lt(i))break}const p=e.neg().mul(e).exp().div(t.sqrt().mul(e)).times(u);let d=new r.default(1).minus(p);return-1===o&&(d=d.neg()),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,s.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);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 r.default(-1),t=t.neg()),t.gt(o)){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(),a=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(a,e).div(t.mul(p1evl(a,n))),u=a.mul(polevl(a,i)).div(p1evl(a,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(a,e).div(t.mul(p1evl(a,n))),u=a.mul(polevl(a,i)).div(p1evl(a,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(a)||e.lt(-40)){let t=new r.default(1),n=new r.default(1),i=t.abs();for(let r=1;r<l;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<u&&(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);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.isNeg()&&(n=n.neg()),n.gt(o))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(),a=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(a,e).div(n.mul(p1evl(a,t))),u=a.mul(polevl(a,i)).div(p1evl(a,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(a,e).div(n.mul(p1evl(a,t))),u=a.mul(polevl(a,i)).div(p1evl(a,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(a)||e.lt(-40)){let t=new r.default(1),n=new r.default(1),i=t.abs();for(let r=1;r<l;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<u&&(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(a)||n.lt(-40)){let e=new r.default(1),t=new r.default(1),i=e.abs();for(let r=1;r<l;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<u&&(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(a)||i.lt(-40)){let e=new r.default(1),t=new r.default(1),n=e.abs();for(let r=1;r<l;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<u&&(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(551);t.EULER_GAMMA=new r.default("0.5772156649015328606065120900824024310421593359399235988057672348848677267776646709369470632917467495");const o=1e9,a=40,l=100,u=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})}}},9684(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),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),d=n(6584),g=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,g.hasFactorialRatio)(r)&&(r=(0,u.simplifyFactorials)(r)),!(0,g.hasFactorialRatio)(r)&&e.isProduct()&&(0,g.hasFactorialRatio)(e)||(e.isComplex()?r=(0,a.complexSimplify)(r):(0,g.hasIrrationalDenominator)(r)?r=(0,m.rationalize)(r):r.isSum()?(r=(0,p.tryRewriteTrig)(r),r=(0,d.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;const t=(0,s.product)(...(0,o.polyFactorExpressions)(e.getNumerator())),n=(0,s.product)(...(0,o.polyFactorExpressions)(e.getDenominator()));return t.div(n)}(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}},9725(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),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)}},t={},function __webpack_require__(n){var i=t[n];if(void 0!==i)return i.exports;var r=t[n]={exports:{}};return e[n].call(r.exports,r,r.exports,__webpack_require__),r.exports}(1440).default;var e,t});
|
|
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})());
|