3 lines
55 KiB
JavaScript
3 lines
55 KiB
JavaScript
/*! For license information please see 357.a6fa55aea0c38a63.js.LICENSE.txt */
|
|
"use strict";(self.webpackChunkWebComponents=self.webpackChunkWebComponents||[]).push([[357],{15357:(t,e,s)=>{s.r(e),s.d(e,{BTM:()=>R,MENV:()=>N,exprType:()=>S,exprValue:()=>q,opPrec:()=>T,toTeX:()=>E});class i{constructor(t,e,s,i,n){this.refExpr=t,this.eqExpr=e,this.description=s,this.isValid=i,this.isActive=!0,this.idNum=n}}class n{constructor(t,e){var s=t.eqExpr.dependencies(),i=[];for(var n in s)void 0===e[s[n]]&&i.push(s[n]);for(var n in i)e[i[n]]="input"+(+n+1);this.subExpr=t.eqExpr.compose(e),this.subTeX=this.subExpr.toTeX(),this.subStr=this.subExpr.toString(),this.name=t.description,this.subExpr.type==S.binop&&this.subExpr.valueType==q.bool?this.equation=t.refExpr.toTeX()+" \\iff "+t.eqExpr.toTeX():this.equation=t.refExpr.toTeX()+"="+t.eqExpr.toTeX(),this.bindings=e,this.numInputs=i.length,this.ruleID=t.idNum}}function r(t,e,s,n,r,a,h){var u=s.split("==");if(2!=u.length)console.log("Invalid equation in identity list: "+s);else for(var p=0;p<=1&&(1!=p||void 0===a||!a);p++){var o,l=t.parse(u[p],"formula"),c=t.parse(u[1-p],"formula"),v=(l.dependencies().length,[u[p]]),m=[];for(var d in v){var b=t.parse(v[d],"formula"),f=!0;for(var y in m)null!==m[y].match(b,{})&&(f=!1);if(f){var g=e.length+1;o=new i(b,c,n,r,g),e.push(o),m.push(b)}}}}function a(t,e,s){var i,r,a=[];for(i in t){var h=(r=t[i]).refExpr.match(e,{});if(r.isActive&&null!==h){var u=new n(r,h);a.push(u)}}return a}class h{constructor(t){this.menv=t,this.select=!1,this.parent=null,this.inputs=[],this.valueType=q.undef,this.context=void 0}value(t){}setContext(t){for(var e in this.context=t,this.inputs)this.inputs[e].setContext(t)}setParsingError(t){this.parseError=t}hasParsingError(){var t=!1,e=0;for(this.parseError&&(t=!0);!t&&e<this.inputs.length;)t=this.inputs[e].hasParsingError(),e++;return t}getParsingError(){for(var t=this.parseError;!t&&0<this.inputs.length;)t=this.inputs[0].getParsingError();return t}toString(t){return void 0===t&&(t=!1),""}toTeX(t){return void 0===t&&(t=!1),this.toString()}toMathML(){return"<mi>"+this.toString()+"</mi>"}allStringEquivs(){return[]}flatten(){return this.copy()}isConstant(){return!1}isExpression(){return!1}}class u extends h{constructor(t){super(t),this.select=!1,this.parent=null,this.inputs=[],this.valueType=q.numeric}value(t){return this.evaluate(t)}setParsingError(t){this.parseError=t}hasParsingError(){var t=!1,e=0;for(this.parseError&&(t=!0);!t&&e<this.inputs.length;)t=this.inputs[e].hasParsingError(),e++;return t}getParsingError(){for(var t=this.parseError;!t&&0<this.inputs.length;)t=this.inputs[0].getParsingError();return t}toString(t){return void 0===t&&(t=!1),""}toTeX(t){return void 0===t&&(t=!1),this.toString()}toMathML(){return"<mi>"+this.toString()+"</mi>"}operateToTeX(){return this.toTeX()}treeToTeX(t){var e={};if(e.parent=void 0===this.parent||null===this.parent?null:this.parent.operateToTeX(),void 0!==t&&t)for(var s in e.current=this.operateToTeX(),e.inputs=[],this.inputs)e.inputs[s]=this.inputs[s].toTeX();else e.current=this.toTeX(),e.inputs=null;return e}allStringEquivs(){return[]}flatten(){return this.copy()}copy(){var t=new u;for(var e in t.valueType=this.valueType,t.context=this.context,this.inputs)t.inputs[e]=t.inputs[e].copy(),t.inputs[e].parent=t;return t}simplifyConstants(){for(var t in this.inputs)this.inputs[t]=this.inputs[t].simplifyConstants(),this.inputs[t].parent=this;return this}dependencies(t){var e,s,i=new Array,n={};if(null!=t)for(var r=0;r<t.length;r++)i.push(t[r]),n[t[r]]=!0;for(r in this.inputs)for(s in e=this.inputs[r].dependencies())void 0===n[e[s]]&&(i.push(e[s]),n[e[s]]=!0);return i}getInput(t){if(t<0||t>=this.inputs.length)throw"Attempt to get an undefined input expression.";return this.inputs[t]}isConstant(){var t=!0;for(var e in this.inputs)t&=this.inputs[e].isConstant();return t}evaluate(t){return 0}compose(t){return new u}compare(t,e,s){var i,n=!0;null==s&&(s=!1),null==e&&(e=this.menv.options);var r=Object.keys(e),a=[],h=1e-8;void 0!==e.rTol&&(h=e.rTol,i=r.indexOf("rTol"),r.splice(i,1));var u=this.dependencies(),p=t.dependencies();for(i=0;i<u.length;i++)r.indexOf(u[i])<0&&a.indexOf(u[i])<0&&a.push(u[i]);for(i=0;i<p.length;i++)r.indexOf(p[i])<0&&a.indexOf(p[i])<0&&a.push(p[i]);var o,l,c,v,m,d,b,f=[],y=[];for(d=10,i=0;i<r.length;i++){c=(l=e[o=r[i]]).min,m=((v=l.max)-c)/d,b=[];for(var g=0;g<d;g++)b[g]=c+g*m;b[d]=v,f.push(o),y.push(b)}for(i=0;i<a.length;i++){for(o=a[i],m=((v=2)-(c=-2))/d,b=[],g=0;g<d;g++)b[g]=c+g*m;b[d]=v,f.push(o),y.push(b)}var w=[];for(i=0;i<f.length;i++)w[i]=0;for(var k,x,M,T=!1;!T&&n;){var S,q,E={};for(i=0;i<f.length;i++)E[o=f[i]]=y[i][w[i]];for(S=this.evaluate(E),q=t.evaluate(E),isFinite(S)&&isFinite(q)?!(Math.abs(S)<1e-12&&Math.abs(q)<1e-12)&&Math.abs(S-q)/Math.abs(S)>h&&(n=!1):(isFinite(S)&&!isNaN(q)||isFinite(q)&&!isNaN(S))&&(n=!1),g=0,T=!0;g<f.length;){if(w[g]++,!(w[g]>=y[g].length)){T=!1;break}w[g]=0,g++}}if(s&&n&&("+"==this.op||"-"==this.op?k="+":"*"!=this.op&&"/"!=this.op||(k="*"),("+"==k&&"+"!=t.op&&"-"!=t.op||"*"==k&&"*"!=t.op&&"/"!=t.op)&&(n=!1),n))if(x=this.flatten(),M=t.flatten(),x.inputs.length==M.inputs.length){var N=[];for(i=0;i<x.inputs.length;i++)N[i]=!1;for(i=0;i<M.inputs.length&&n;i++){var A=!1;for(g=0;g<x.inputs.length&&!A;g++)!N[g]&&x.inputs[g].compare(M.inputs[i],e)&&(N[g]=!0,A=!0);A||(n=!1)}}else n=!1;return n}reduce(){var t,e=this.copy();for(var s in e.inputs)e.inputs[s]=e.inputs[s].reduce();for(t=a(this.menv.reduceRules,e);t.length>0;)e=t[0].subExpr,t=a(this.menv.reduceRules,e);return e}derivative(t,e){return w(0)}match(t,e){var s=null;if(this.type==t.type&&this.operateToTeX()==t.operateToTeX()){s=e;for(var i=0;i<this.inputs.length;i++)null!==s&&(s=this.inputs[i].match(t.inputs[i],s))}return s}inputSubst(t,e){var s=this.inputs.indexOf(t);s>=0&&(this.inputs[s]=e,void 0!==e&&(e.parent=this))}}class p extends u{constructor(t){super(t),this.type=S.undef,this.valueType=q.undef}value(t){return Number.NaN}compare(t,e,s){return!1}copy(){return new p(this.menv)}compose(t){return new p(this.menv)}derivative(t,e){return new p(this.menv)}match(t,e){return null}}class o{constructor(t){"number"==typeof t||t instanceof Number?this.number=t:t instanceof o&&(this.number=t.number)}value(){return this.number}simplify(){}equal(t){return"number"==typeof t&&(t=new o(t)),this.value()==t.value()}add(t){return"number"==typeof t&&(t=new o(t)),new o(this.number+t.value())}subtract(t){return"number"==typeof t&&(t=new o(t)),new o(this.number-t.value())}multiply(t){return"number"==typeof t&&(t=new o(t)),new o(this.number*t.value())}divide(t){return"number"==typeof t&&(t=new o(t)),0!=t.value?new o(this.number/t.value()):new o(NaN)}addInverse(){return new o(-this.number)}multInverse(){return 0!=this.number?new o(this.number):new o(NaN)}toString(t){void 0===t&&(t=!1);var e=t&&this.number>0?"+":"";return isNaN(this.number)?e="NaN":e+=Number(this.number.toFixed(10)),e}toTeX(t){void 0===t&&(t=!1);var e=t&&this.number>0?"+":"";return isNaN(this.number)?e="\\mathrm{NaN}":e+=Number(this.toString(t)),e}toMathML(t){return"<cn>"+this.toString()+"</cn>"}}function l(t){return void 0===Number.isInteger?t==Math.floor(t):Number.isInteger(t)}class c extends o{constructor(t,e){null==e?(super(t),this.p=t,this.q=1):(super(t/e),0==e?(this.p=Math.sqrt(-1),this.q=1):0==t?(this.p=0,this.q=1):(e<0?(this.p=-t,this.q=-e):(this.p=t,this.q=e),this.simplify()))}value(){return this.p/this.q}simplify(){var t;this.p%1==0&&this.q%1==0&&(t=function(t,e){var s;if((t=Math.abs(t))<(e=Math.abs(e))&&(s=t,t=e,e=s),0==e)return 0;for(;e>0;)s=t%e,t=e,e=s;return t}(this.p,this.q),this.p/=t,this.q/=t)}equal(t){return t instanceof c?this.p.valueOf()==t.p.valueOf()&&this.q.valueOf()==t.q.valueOf():this.value()==t.value()}add(t){return t instanceof c?new c(this.p*t.q+t.p*this.q,this.q*t.q):l(t)?new c(this.p+t*this.q,this.q):new o(this.value()+t)}subtract(t){return t instanceof c?new c(this.p*t.q-t.p*this.q,this.q*t.q):l(t)?new c(this.p-t*this.q,this.q):new o(this.value()-t)}multiply(t){return t instanceof c?new c(this.p*t.p,this.q*t.q):l(t)?new c(this.p*t,this.q):new o(this.value()*t)}divide(t){return t instanceof c?new c(this.p*t.q,this.q*t.p):l(t)?new c(this.p,this.q*t):new o(this.value()/t)}addInverse(){return new c(-this.p,this.q)}multInverse(){return 0!=this.p?new c(this.q,this.p):new o(NaN)}toString(t){void 0===t&&(t=!1);var e=t&&this.p>0?"+":"";return isNaN(this.p)?e="NaN":1==this.q?e+=this.p:e=e+this.p+"/"+this.q,e}toTeX(t){void 0===t&&(t=!1);var e=t&&this.p>0?"+":"";return isNaN(this.p)?e="\\mathrm{NaN}":1==this.q?e+=this.p:e=this.p<0?"-\\frac{"+-this.p+"}{"+this.q+"}":e+"\\frac{"+this.p+"}{"+this.q+"}",e}toMathML(){return"undefined"==typeof leadSign&&(leadSign=!1),this.p,this.q,"<cn>"+this.toString()+"</cn>"}}function v(t,e,s){var i=[];for(let t in s)s[t].type==S.multiop&&s[t].op==e?i.push(...s[t].inputs):i.push(s[t]);return new m(t,e,i)}class m extends u{constructor(t,e,s){for(var i in super(t),this.type=S.multiop,this.op=e,this.inputs=s,s)void 0===s[i]&&(s[i]=new u(t)),s[i].parent=this;switch(e){case"+":this.prec=T.addsub;break;case"*":this.prec=T.multdiv;break;default:alert("Unknown multi-operand operator: '"+e+"'.")}}toString(){var t,e;for(var s in t="",this.inputs)void 0===this.inputs[s]?e="?":(e=this.inputs[s].toString(),(this.inputs[s].type>=S.unop&&this.inputs[s].prec<=this.prec||this.inputs[s].type==S.number&&1!=this.inputs[s].number.q&&T.multdiv<=this.prec)&&(e="("+e+")")),t+=(s>0?this.op:"")+e;return t}allStringEquivs(){var t=[],e=[];for(var s in this.inputs)t[s]=this.inputs[s].allStringEquivs(),e.push(s);var i=permutations(e),n=[],r=this.op;function a(e,s){if(void 0===s?s="":e.length>0&&(s+=r),e.length>0){var i=t[e[0]];for(var h in i)a(e.slice(1),s+"("+i[h]+")")}else n.push(s)}for(var s in"|"==r&&(r=" $ "),i)a(i[s]);return n}toTeX(t){var e,s,i,n,r,a,h;void 0===t&&(t=!1),s=this.op,"*"==this.op&&(s=t&&this.select?"\\times":" "),t&&this.select?(n="{\\color{blue}",r="}",a="{\\color{red}",h="}"):(n="",r="",a="",h=""),e="";var u=this.prec;for(var p in this.inputs)void 0===this.inputs[p]?e+=(p>0?a+s+h:"")+(i="?"):"*"!=this.op||this.inputs[p].type!=S.unop||"/"!=this.inputs[p].op||t&&this.select?"+"!=this.op||this.inputs[p].type!=S.unop||"-"!=this.inputs[p].op||t&&this.select?(i=n+this.inputs[p].toTeX(t)+r,(this.inputs[p].type>=S.unop&&this.inputs[p].prec<=u||p>0&&"*"==this.op&&this.inputs[p].type==S.number)&&(i="\\left("+i+"\\right)"),e+=(p>0?a+s+h:"")+i):e+=i=n+this.inputs[p].toTeX(t)+r:(i=n+this.inputs[p].inputs[0].toTeX(t)+r,this.inputs[p].inputs[0].type>=S.unop&&this.inputs[p].inputs[0].prec<u&&(i="\\left("+i+"\\right)"),""==e&&(e="1"),e="\\frac{"+e+"}{"+i+"}");return e}toMathML(){var t,e;switch(this.op){case"+":e="<plus/>";break;case"*":e="<times/>"}for(var s in t="<apply>"+e,this.inputs)t+=void 0===this.inputs[s]?"?":this.inputs[s].toMathML();return t+"</apply>"}operateToTeX(){var t=this.op;return"*"===t&&(t="\\times"),t}isCommutative(){var t=!1;return"+"!==this.op&&"*"!==this.op||(t=!0),t}evaluate(t){var e,s;switch(this.op){case"+":for(e in s=0,this.inputs)s+=this.inputs[e].evaluate(t);break;case"*":for(e in s=1,this.inputs)s*=this.inputs[e].evaluate(t);break;default:console.log("The binary operator '"+this.op+"' is not defined."),s=void 0}return s}flatten(){var t,e=[];for(var s in this.inputs){var i=this.inputs[s].flatten();if(i.type==S.multiop&&i.op==this.op)for(var n in i.inputs)e.push(i.inputs[n]);else e.push(i)}if(0==e.length)t=w(this.menv,"+"==this.op?0:1);else if(1==e.length)t=e[0];else{var r;if("*"==this.op)for(s=0;s<e.length-1;s++)for(n=s+1;n<e.length;n++)e[s].type>e[n].type&&(r=e[s],e[s]=e[n],e[n]=r);t=v(this.menv,this.op,e)}return t}reduce(){var t=super.reduce(),e=t;return t.type==S.multiop&&t.inputs.length<=1&&((e=0==t.inputs.length?w(this.menv,"+"==t.op?0:1):t.inputs[0]).parent=this.parent,null!==this.parent&&this.parent.inputSubst(this,e)),e}simplifyConstants(){var t=[],e=[];for(let s in this.inputs)this.inputs[s]=this.inputs[s].simplifyConstants(),this.inputs[s].parent=this,this.inputs[s].type==S.number||this.inputs[s].type==S.unop&&this.inputs[s].inputs[0].type==S.number?t.push(s):e.push(this.inputs[s]);var s=this;if(t.length>1){var i,n;switch(this.op){case"+":i=new c(0);for(let e in t)if(this.inputs[t[e]].type==S.number)i=i.add(this.inputs[t[e]].number);else if(this.inputs[t[e]].type==S.unop)switch(this.inputs[t[e]].op){case"+":case"*":i=i.add(this.inputs[t[e]].inputs[0].number);break;case"-":i=i.subtract(this.inputs[t[e]].inputs[0].number);break;case"/":i=i.add(this.inputs[t[e]].inputs[0].number.multInverse())}break;case"*":i=new c(1);for(let e in t)if(this.inputs[t[e]].type==S.number)i=i.multiply(this.inputs[t[e]].number);else if(this.inputs[t[e]].type==S.unop)switch(this.inputs[t[e]].op){case"+":case"*":i=i.multiply(this.inputs[t[e]].inputs[0].number);break;case"-":i=i.multiply(this.inputs[t[e]].inputs[0].number.addInverse());break;case"/":i=i.divide(this.inputs[t[e]].inputs[0].number)}}switch(this.op){case"+":e.push(n=w(this.menv,i));break;case"*":e.splice(0,0,n=w(this.menv,i))}1==e.length?s=e[0]:(n.parent=this,s=v(this.menv,this.op,e))}return s}match(t,e){function s(t){var e={};for(var s in t)e[s]=t[s];return e}var i=null,n=this.inputs.length;if((t.type==S.multiop||t.type==S.binop)&&this.op==t.op&&n<=t.inputs.length){for(var r,a=[],h=0;h<n;h++)if(h<n-1||t.inputs.length==n)a[h]=t.inputs[h].copy();else{for(var p=[],o=0;o<=t.inputs.length-n;o++)p[o]=t.inputs[n+o-1].copy();a[h]=v(this.menv,t.op,p)}if(r=v(this.menv,t.op,a),i=s(e),null==(i=u.prototype.match.call(this,r,i))&&n<t.inputs.length){var l=t.inputs.length-n;for(a=[],h=0;h<n;h++)if(0==h){for(p=[],o=0;o<=l;o++)p[o]=t.inputs[o].copy();a[h]=v(this.menv,t.op,p)}else a[h]=t.inputs[l+h].copy();r=v(this.menv,t.op,a),i=s(e),i=u.prototype.match.call(this,r,i)}}return i}copy(){var t=new Array;for(var e in this.inputs)t.push(this.inputs[e].copy());return v(this.menv,this.op,t)}compose(t){var e=[];for(var s in this.inputs)e.push(this.inputs[s].compose(t));return 0==e.length?w(this.menv,"+"==this.op?0:1):1==e.length?e[0]:v(this.menv,this.op,e)}derivative(t,e){var s,i,n=[];for(s in this.inputs)if(!this.inputs[s].isConstant())switch(i=this.inputs[s].derivative(t,e),this.op){case"+":n.push(i);break;case"*":var r=[];for(let t in this.inputs)s==t?r.push(i):r.push(this.inputs[t].compose({}));n.push(v(this.menv,"*",r))}return 0==n.length?w(this.menv,0):1==n.length?n[0]:v(this.menv,"+",n)}}class d extends u{constructor(t,e){super(t),this.type=S.variable,this.name=e;var s=e.indexOf("'");switch(this.derivs=0,s>0&&(this.derivs=e.slice(s).length),this.isConst=!1,this.isSpecial=!1,this.name){case"e":case"pi":case"dne":case"inf":this.isConst=!0,this.isSpecial=!0}}toString(t){return void 0===t&&(t=!1),this.name}allStringEquivs(){return[this.toString()]}toTeX(t){void 0===t&&(t=!1);var e=this.toString();switch(this.name){case"alpha":case"beta":case"gamma":case"delta":case"epsilon":case"zeta":case"eta":case"theta":case"kappa":case"lambda":case"mu":case"nu":case"xi":case"pi":case"rho":case"sigma":case"tau":case"upsilon":case"phi":case"chi":case"psi":case"omega":case"Gamma":case"Delta":case"Theta":case"Lambda":case"Xi":case"Pi":case"Sigma":case"Upsilon":case"Phi":case"Psi":case"Omega":e="\\"+this.name;break;case"inf":e="\\infty";break;default:this.isSpecial&&(e="\\mathrm{"+this.name+"}")}return 0==this.name.indexOf("input")&&(e="\\boxed{\\dots?^{"+this.name.slice(5)+"}}"),t&&this.select&&(e="{\\color{red}"+e+"}"),e}dependencies(t){var e=new Array;if(null!=t)for(var s=0;s<t.length;s++)e.push(t[s]);return!this.isConst&&e.indexOf(this.name)<0&&e.push(this.name),e}isConstant(){return this.isConst}evaluate(t){var e;if(null==t[this.name])switch(this.name){case"e":e=Math.E;break;case"pi":e=Math.PI;break;case"inf":e=1/0;break;case"dne":e=Number.NaN;break;default:console.log("Variable evaluated without binding.")}else e="function"==typeof t[this.name].value?t[this.name].value():t[this.name];return e}copy(){return new d(this.menv,this.name)}compose(t){return null==t[this.name]?new d(this.menv,this.name):t[this.name]}derivative(t,e){var s="string"==typeof t?t:t.name;return this.name===s?w(this.menv,1):this.isConst||e&&null!=e[this.name]?w(this.menv,0):new d(this.menv,this.name+"'")}match(t,e){var s=null;return this.isConst?t.toString()===this.name&&(s=e):null!=e&&null==e[this.name]&&t.valueType==q.numeric?(s=e)[this.name]=t.copy():null!=e&&e[this.name].toString()===t.toString()&&(s=e),s}}class b{constructor(t,e){this.type=S.variable,this.name=t,this.select=!1,this.boundName="[]"+t,this.parent=null,this.index=e;var s=e.dependencies();s.length>1?alert("An array reference can only have one index variable."):this.k=s[0]}toString(t){return void 0===t&&(t=!1),this.name+"["+this.index.toString()+"]"}toTeX(t){return void 0===t&&(t=!1),word=this.name+"_{"+this.index.toString()+"}",t&&this.select&&(word="{\\color{red}"+word+"}"),word}toMathML(){return'<apply><selector/><ci type="vector">'+this.name+"</ci>"+this.index.toString()+"</apply>"}dependencies(t){var e=new Array;if(null!=t)for(var s=0;s<t.length;s++)e.push(t[s]);return this.name,e.push("row"),e.push(this.boundName),e}evaluate(t){var e;if(null==t[this.boundName])this.name,e=void 0;else{var s={};null!=this.k&&(s[this.k]=t.row);var i=this.index.evaluate(s)-1;i>=0&&i<t[this.boundName].length&&(e=t[this.boundName][i])}return e}}class f extends u{constructor(t,e,s,i){super(t),this.type=S.fcn;var n=e.indexOf("'");switch(this.derivs=0,n>0?(this.name=e.slice(0,n),this.derivs=e.slice(n).length):this.name=e,void 0===s&&(s=new u),this.inputs=[s],s.parent=this,this.domain=i,this.alternate=null,this.builtin=!0,this.name){case"asin":case"acos":case"atan":case"asec":case"acsc":case"acot":this.name="arc"+this.name.slice(1,4);break;case"log":this.name="ln";break;case"sin":case"cos":case"tan":case"csc":case"sec":case"cot":case"arcsin":case"arccos":case"arctan":case"arcsec":case"arccsc":case"arccot":case"sqrt":case"root":case"abs":case"exp":case"expb":case"ln":case"log10":break;default:this.builtin=!1}if(this.builtin&&this.derivs>0){for(var r=new d(this.menv,"x"),a=new f(this.menv,this.name,r),h=0;h<this.derivs;h++)a=a.derivative(r,{x:0});var p={};p.x=s,this.alternate=a.compose(p)}}getName(){return this.name+"'".repeat(this.derivs)}toString(t){var e,s;if(void 0===t&&(t=!1),e=this.getName(),t)s=e;else{var i=[];if(0==this.inputs.length||void 0===this.inputs[0])i.push("?");else for(var n in this.inputs)i.push(this.inputs[n].toString());s=e+"("+i.join(",")+")"}return s}allStringEquivs(){var t=[],e=[];for(var s in this.inputs)e.push(this.inputs[s].allStringEquivs());var i=[],n=this.getName();for(var s in function e(s,i){if(0==i.length)t.push(s);else{var n=s.length,r=[];for(var a in s)r.push(s[a]);for(var a in i[0])r[n]=i[0][a],e(r,i.slice(1))}}([],e),t)i[s]=n+"("+t[s].join("+")+")";return i}toTeX(t){void 0===t&&(t=!1);var e,s="",i=[];if(void 0===this.inputs[0])i.push("?");else for(var n in this.inputs)i.push(this.inputs[n].toTeX(t)),t&&this.select&&(i[n]="{\\color{blue}"+i[n]+"}");switch(this.name){case"sin":e="\\sin";break;case"cos":e="\\cos";break;case"tan":e="\\tan";break;case"csc":e="\\csc";break;case"sec":e="\\sec";break;case"cot":e="\\cot";break;case"arcsin":e="\\sin^{-1}";break;case"arccos":e="\\cos^{-1}";break;case"arctan":e="\\tan^{-1}";break;case"arccsc":e="\\csc^{-1}";break;case"arcsec":e="\\sec^{-1}";break;case"arccot":e="\\cot^{-1}";break;case"sqrt":e="\\mathrm{sqrt}",s="\\sqrt{"+i[0]+"}";break;case"root":e="\\mathrm{root}",s="\\sqrt["+i[1]+"]{"+i[0]+"}";break;case"abs":e="\\abs",s="\\left|"+i[0]+"\\right|";break;case"exp":e="e^",s="e^{"+i[0]+"}";break;case"expb":e="\\exp";break;case"ln":e="\\ln";break;case"log10":e="\\log_{10}";break;default:e=this.name.length>1?"\\mathrm{"+this.name+"}":this.name}return this.derivs>0&&(this.derivs<=3?e+="'".repeat(this.derivs):e=e+"^{("+this.derivs+")}"),t&&this.select&&(e="\\color{red}{"+e+"}",s=""),""==s&&(s=e+" \\mathopen{}\\left("+i.join(",")+"\\right)\\mathclose{}"),s}toMathML(){var t,e;switch(e=void 0===this.inputs[0]?"?":this.inputs[0].toMathML(),this.name){case"sin":case"cos":case"tan":case"csc":case"sec":case"cot":case"arcsin":case"arccos":case"arctan":case"exp":case"expb":case"ln":case"abs":t="<apply><"+this.name+"/>"+e+"</apply>";break;case"sqrt":t="<apply><root/>"+e+"</apply>";break;case"log10":t="<apply><log/><logbase><cn>10</cn></logbase>"+e+"</apply>";break;default:t="<apply><ci>"+this.name+"</ci>"+e+"</apply>"}return t}operateToTeX(){var t;switch(this.name){case"sin":t="\\sin";break;case"cos":t="\\cos";break;case"tan":t="\\tan";break;case"csc":t="\\csc";break;case"sec":t="\\sec";break;case"cot":t="\\cot";break;case"arcsin":t="\\sin^{-1}";break;case"arccos":t="\\cos^{-1}";break;case"arctan":t="\\tan^{-1}";break;case"arccsc":t="\\csc^{-1}";break;case"arcsec":t="\\sec^{-1}";break;case"arccot":t="\\cot^{-1}";break;case"sqrt":t="\\mathrm{sqrt}";break;case"abs":t="\\abs";break;case"exp":case"expb":t="\\exp";break;case"ln":t="\\ln";break;case"log10":t="\\log_{10}";break;default:t=this.name.length>1?"\\mathrm{"+this.name+"}":this.name}return this.derivs>0&&(this.derivs<=3?t+="'".repeat(this.derivs):t=t+"^{("+this.derivs+")}"),t+"(\\Box)"}evaluate(t){var e=this.inputs[0].evaluate(t),s=void 0;if(null!=e){if(this.builtin&&this.derivs>0)null!=this.alternate?s=this.alternate.evaluate(t):console.log("Error: Built-in function called with unspecified derivative formula.");else if(null==t[this.name])switch(this.name){case"sin":s=Math.sin(e);break;case"cos":s=Math.cos(e);break;case"tan":s=Math.tan(e);break;case"csc":s=1/Math.sin(e);break;case"sec":s=1/Math.cos(e);break;case"cot":s=1/Math.tan(e);break;case"arcsin":Math.abs(e)<=1&&(s=Math.asin(e));break;case"arccos":Math.abs(e)<=1&&(s=Math.acos(e));break;case"arctan":s=Math.atan(e);break;case"arccsc":Math.abs(e)>=1&&(s=Math.asin(1/e));break;case"arcsec":Math.abs(e)>=1&&(s=Math.acos(1/e));break;case"arccot":s=0==e?Math.PI/2:Math.PI/2-Math.atan(1/e);break;case"sqrt":e>=0&&(s=Math.sqrt(e));break;case"abs":s=Math.abs(e);break;case"exp":case"expb":s=Math.exp(e);break;case"ln":e>0&&(s=Math.log(e));break;case"log10":e>0&&(s=Math.LOG10E*Math.log(e));break;default:null==(u=this.menv.functions[this.name])&&console.log("Error: A custom function never had a backend definition.");var i={};Object.keys(t).forEach((function(e){i[e]=t[e]}));var n=u.input;if(Array.isArray(n)&&console.log("Error: Function is defined to expect multiple inputs. Not yet implemented."),i[n]=e,this.derivs>=u.value.length){(h={})[a=new d(this.menv,n)]=0;for(var r=u.value.length;r<=this.derivs;r++)u.value[r]=u.value[r-1].derivative(a,h)}s=u.value[this.derivs].evaluate(i)}else{var a,h,u=t[this.name];if(i={},Object.keys(t).forEach((function(e){i[e]=t[e]})),n=u.input,Array.isArray(n)&&console.log("Error: Function is defined to expect multiple inputs. Not yet implemented."),i[n]=e,this.derivs>=u.value.length)for((h={})[a=new d(this.menv,n)]=0,r=u.value.length;r<=this.derivs;r++)u.value[r]=u.value[r-1].derivative(a,h);s=u.value[this.derivs].evaluate(i)}return s}}flatten(){return new f(this.menv,this.getName(),this.inputs[0].flatten())}copy(){return new f(this.menv,this.getName(),this.inputs[0].copy())}compose(t){return new f(this.menv,this.getName(),this.inputs[0].compose(t))}derivative(t,e){for(var s,i=this.inputs[0].dependencies(),n=!0,r="string"==typeof t?t:t.name,a=0;a<i.length;a++)i[a]==r&&(n=!1);if(n)s=w(this.menv,0);else{var h;switch(this.name){case"sin":h=new f(this.menv,"cos",this.inputs[0]);break;case"cos":h=new g(this.menv,"-",new f(this.menv,"sin",this.inputs[0]));break;case"tan":var u=new f(this.menv,"sec",this.inputs[0]);h=new y(this.menv,"^",u,w(this.menv,2));break;case"csc":var p=new f(this.menv,"cot",this.inputs[0]);h=new g(this.menv,"-",new y(this.menv,"*",this,p));break;case"sec":var o=new f(this.menv,"tan",this.inputs[0]);h=new y(this.menv,"*",this,o);break;case"cot":var l=new f(this.menv,"csc",this.inputs[0]);h=new g(this.menv,"-",new y(this.menv,"^",l,w(this.menv,2)));break;case"arcsin":var c=new y(this.menv,"-",w(this.menv,1),new y(this.menv,"^",this.inputs[0],w(this.menv,2)));h=new y(this.menv,"/",w(this.menv,1),new f(this.menv,"sqrt",c));break;case"arccos":var v=new y(this.menv,"-",w(this.menv,1),new y(this.menv,"^",this.inputs[0],w(this.menv,2)));h=new y(this.menv,"/",w(this.menv,-1),new f(this.menv,"sqrt",v));break;case"arctan":var m=new y(this.menv,"^",this.inputs[0],w(this.menv,2));h=new y(this.menv,"/",w(this.menv,1),new y(this.menv,"+",w(this.menv,1),m));break;case"arcsec":var d=new y(this.menv,"^",this.inputs[0],w(this.menv,2)),b=new y(this.menv,"-",d,w(this.menv,1));h=new y(this.menv,"/",w(this.menv,1),new y(this.menv,"*",new f(this.menv,"abs",this.inputs[0]),new f(this.menv,"sqrt",b)));break;case"arccsc":d=new y(this.menv,"^",this.inputs[0],w(this.menv,2)),b=new y(this.menv,"-",d,w(this.menv,1)),h=new y(this.menv,"/",w(this.menv,-1),new y(this.menv,"*",new f(this.menv,"abs",this.inputs[0]),new f(this.menv,"sqrt",b)));break;case"arccot":var k=new y(this.menv,"^",this.inputs[0],w(this.menv,2));h=new y(this.menv,"/",w(this.menv,-1),new y(this.menv,"+",w(this.menv,1),k));break;case"sqrt":h=new y(this.menv,"/",w(this.menv,1),new y(this.menv,"*",w(this.menv,2),this));break;case"abs":h=new y(this.menv,"/",this,this.inputs[0]);break;case"exp":case"expb":h=new f(this.menv,this.name,this.inputs[0]);break;case"ln":h=new y(this.menv,"/",w(this.menv,1),this.inputs[0]);break;case"log10":h=new y(this.menv,"/",w(this.menv,Math.LOG10E),this.inputs[0]);break;default:h=new f(this.menv,this.getName()+"'",this.inputs[0])}if(n||this.inputs[0].type!=S.variable){var x=this.inputs[0].derivative(t,e);s=null==x?void 0:new y(this.menv,"*",h,x)}else s=h}return s}}class y extends u{constructor(t,e,s,i){switch(super(t),this.type=S.binop,this.op=e,void 0===s&&(s=new u(this.menv)),void 0===i&&(i=new u(this.menv)),this.inputs=[s,i],s.parent=this,i.parent=this,e){case"+":case"-":this.prec=T.addsub;break;case"*":case"/":this.prec=T.multdiv;break;case"^":this.prec=T.power;break;case"&":this.prec=T.conj,this.valueType=q.bool;break;case"$":this.prec=T.disj,this.valueType=q.bool;break;case"=":this.prec=T.equal,this.valueType=q.bool;break;default:console.log("Unknown binary operator: '"+e+"'.")}}toString(){var t,e;void 0===this.inputs[0]?t="?":(t=this.inputs[0].toString(),(this.inputs[0].type>=S.unop&&this.inputs[0].prec<this.prec||this.inputs[0].type==S.number&&t.indexOf("/")>=0&&T.multdiv<=this.prec)&&(t="("+t+")")),void 0===this.inputs[1]?e="?":(e=this.inputs[1].toString(),(this.inputs[1].type>=S.unop&&this.inputs[1].prec<=this.prec||this.inputs[1].type==S.number&&e.indexOf("/")>=0&&T.multdiv<=this.prec)&&(e="("+e+")"));var s=this.op;return"|"==s&&(s=" $ "),t+s+e}allStringEquivs(){var t=this.inputs[0].allStringEquivs(),e=this.inputs[1].allStringEquivs(),s=[],i=this.op;for(var n in"|"==i&&(i=" $ "),t)for(var r in e)opAStr=t[n],this.inputs[0].type>=S.unop&&this.inputs[0].prec<this.prec&&(opAStr="("+opAStr+")"),opBStr=e[r],this.inputs[1].type>=S.unop&&this.inputs[1].prec<=this.prec&&(opBStr="("+opBStr+")"),s.push(opAStr+i+opBStr),"+"!=this.op&&"*"!=this.op&&"&"!=this.op&&"$"!=this.op||(opBStr=e[r],this.inputs[1].type>=S.unop&&this.inputs[1].prec<this.prec&&(opBStr="("+opBStr+")"),opAStr=t[n],this.inputs[0].type>=S.unop&&this.inputs[0].prec<=this.prec&&(opAStr="("+opAStr+")"),s.push(opBStr+i+opAStr));return s}toTeX(t){var e,s,i,n;if(void 0===t&&(t=!1),i=void 0===this.inputs[0]?"?":this.inputs[0].toTeX(t),n=void 0===this.inputs[1]?"?":this.inputs[1].toTeX(t),s=this.op,t&&this.select)switch(s){case"*":s="\\cdot ";break;case"/":s="\\div ";break;case"^":s="\\wedge ";break;case"|":case"$":s="\\hbox{ or }";break;case"&":s="\\hbox{ and }"}else switch(s){case"*":s=this.inputs[1]&&this.inputs[1].type==S.number||this.inputs[1]&&this.inputs[1].type==S.binop&&"^"==this.inputs[1].op&&this.inputs[1].inputs[0].type==S.number?"\\cdot ":" ";break;case"|":case"$":s="\\hbox{ or }";break;case"&":s="\\hbox{ and }"}if("/"==s)e="\\frac{"+i+"}{"+n+"}";else if("^"==s)e=this.inputs[0]&&this.inputs[0].type>=S.fcn?"\\left("+i+"\\right)":i,e+=s+"{"+n+"}";else{var r="",a="",h="",u="";t&&this.select&&(r="{\\color{blue}",a="}",h="{\\color{red}",u="}"),e=this.inputs[0]&&this.inputs[0].type>=S.unop&&this.inputs[0].prec<this.prec?"\\left("+r+i+a+"\\right)":r+i+a,e+=h+s+u,this.inputs[1]&&this.inputs[1].type>=S.unop&&this.inputs[1].prec<=this.prec?e+="\\left("+r+n+a+"\\right)":e+=r+n+a}return t&&this.select&&(e="{\\color{red}\\boxed{"+e+"}}"),e.replace(/\+-/g,"-")}toMathML(){var t,e,s;switch(e=void 0===this.inputs[0]?"?":this.inputs[0].toMathML(),s=void 0===this.inputs[1]?"?":this.inputs[1].toMathML(),this.op){case"+":t="<plus/>";break;case"-":t="<minus/>";break;case"*":t="<times/>";break;case"/":t="<divide/>";break;case"^":t="<power/>"}return"<apply>"+t+e+s+"</apply>"}operateToTeX(){var t=this.op;switch(t){case"*":t="\\times ";break;case"/":t="\\div ";break;case"^":t="\\wedge ";break;case"|":case"$":t="\\hbox{ or }";break;case"&":t="\\hbox{ and }"}return t}isCommutative(){var t=!1;return"+"!==this.op&&"*"!==this.op||(t=!0),t}evaluate(t){var e=this.inputs[0].evaluate(t),s=this.inputs[1].evaluate(t);if(null!=e&&null!=s){var i=void 0;switch(this.op){case"+":i=e+s;break;case"-":i=e-s;break;case"*":i=e*s;break;case"/":i=e/s;break;case"^":i=this.inputs[1].isConstant()&&(e>=0||s%1==0)?Math.pow(e,s):Math.exp(s*Math.log(e));break;case"=":i=Math.abs(e-s)<this.menv.options.absTol;break;case"&":i=e&&s;break;case"|":case"$":i=e||s;break;default:console.log("The binary operator '"+this.op+"' is not defined."),i=void 0}return i}}reduce(){var t=super.reduce(),e=t;return t.type==S.binop&&t.inputs.length<=1&&((e=0==t.inputs.length?w(this.menv,"+"==t.op?0:1):t.inputs[0]).parent=this.parent,null!==this.parent&&this.parent.inputSubst(this,e)),e}simplifyConstants(){var t=this;if(this.inputs[0]=this.inputs[0].simplifyConstants(),this.inputs[0].parent=this,this.inputs[1]=this.inputs[1].simplifyConstants(),this.inputs[1].parent=this,(this.inputs[0].type==S.number||this.inputs[0].type==S.unop&&this.inputs[0].inputs[0].type==S.number)&&(this.inputs[1].type==S.number||this.inputs[1].type==S.unop&&this.inputs[1].inputs[0].type==S.number)){var e,s,i;if(this.inputs[0].type==S.number)e=this.inputs[0].number;else switch(this.inputs[0].op){case"-":e=this.inputs[0].inputs[0].number.addInverse();break;case"/":e=this.inputs[0].inputs[0].number.multInverse()}if(this.inputs[1].type==S.number)s=this.inputs[1].number;else switch(this.inputs[1].op){case"-":s=this.inputs[1].inputs[0].number.addInverse();break;case"/":s=this.inputs[1].inputs[0].number.multInverse()}switch(this.op){case"+":i=e.add(s);break;case"-":i=e.subtract(s);break;case"*":i=e.multiply(s);break;case"/":i=e.divide(s);break;case"^":e instanceof c&&s instanceof c&&1==s.q&&s.p%1==0&&s.p>0&&(i=new c(Math.pow(e.p,s.p),Math.pow(e.q,s.p)))}void 0!==i&&(t=!this.menv.options.negativeNumbers&&i.p<0?new g(this.menv,"-",w(this.menv,i.multiply(-1))):w(this.menv,i))}else switch(this.op){case"+":if(this.inputs[0].type==S.number&&0==this.inputs[0].number.value())t=this.inputs[1];else if(this.inputs[1].type==S.number&&0==this.inputs[1].number.value())t=this.inputs[0];else if(this.inputs[1].type==S.number&&this.inputs[0].type==S.binop&&"+"==this.inputs[0].op){let e=this.inputs[0];e.inputs[0].type==S.number?t=new y(this.menv,"+",w(this.menv,e.inputs[0].number.add(this.inputs[1].number)),e.inputs[1].copy()):e.inputs[1].type==S.number&&(t=new y(this.menv,"+",e.inputs[0].copy(),w(this.menv,e.inputs[1].number.add(this.inputs[1].number))))}else if(this.inputs[0].type==S.number&&this.inputs[1].type==S.binop&&"+"==this.inputs[1].op){let e=this.inputs[1];e.inputs[0].type==S.number?t=new y(this.menv,"+",w(this.menv,this.inputs[0].number.add(e.inputs[0].number)),e.inputs[1].copy()):e.inputs[1].type==S.number&&(t=new y(this.menv,"+",w(this.menv,this.inputs[0].number.add(e.inputs[1].number)),e.inputs[0].copy()))}break;case"-":this.inputs[0].type==S.number&&0==this.inputs[0].number.value()?t=new g(this.menv,"-",this.inputs[1]):this.inputs[1].type==S.number&&0==this.inputs[1].number.value()?t=this.inputs[0]:this.inputs[1].type==S.number&&this.inputs[1].number.value()<0&&(t=new y(this.menv,"+",this.inputs[0].copy(),w(this.menv,this.inputs[1].number.addInverse())));break;case"*":if(this.inputs[0].type==S.number&&1==this.inputs[0].number.value())t=this.inputs[1];else if(this.inputs[1].type==S.number&&1==this.inputs[1].number.value())t=this.inputs[0];else if(this.inputs[1].type==S.number&&this.inputs[0].type==S.binop&&"*"==this.inputs[0].op){let e=this.inputs[0];e.inputs[0].type==S.number?t=new y(this.menv,"*",w(this.menv,e.inputs[0].number.multiply(this.inputs[1].number)),e.inputs[1].copy()):e.inputs[1].type==S.number&&(t=new y(this.menv,"*",w(this.menv,e.inputs[1].number.multiply(this.inputs[1].number)),e.inputs[0].copy()))}else if(this.inputs[0].type==S.number&&this.inputs[1].type==S.binop&&"*"==this.inputs[1].op){let e=this.inputs[1];e.inputs[0].type==S.number?t=new y(this.menv,"*",w(this.menv,this.inputs[0].number.multiply(e.inputs[0].number)),e.inputs[1].copy()):e.inputs[1].type==S.number&&(t=new y(this.menv,"*",w(this.menv,this.inputs[0].number.multiply(e.inputs[1].number)),e.inputs[0].copy()))}break;case"/":this.inputs[0].type==S.number&&1==this.inputs[0].number.value()?t=new g(this.menv,"/",this.inputs[1]):this.inputs[1].type==S.number&&1==this.inputs[1].number.value()&&(t=this.inputs[0]);break;case"^":this.inputs[0].type==S.number&&0==this.inputs[0].number.value()?t=w(this.menv,0):this.inputs[0].type==S.number&&1==this.inputs[0].number.value()?t=w(this.menv,1):this.inputs[1].type==S.number&&1==this.inputs[1].number.value()&&(t=this.inputs[0])}return t}flatten(){var t,e=this.inputs[0].flatten(),s=this.inputs[1].flatten();switch(this.op){case"+":case"-":var i=[];if(e.type!=S.multiop&&e.type!=S.binop||"+"!=e.op&&"-"!=e.op)i.push(e);else{var n=e.flatten();for(var r in n.inputs)i.push(n.inputs[r])}if(s.type!=S.multiop&&s.type!=S.binop||"+"!=s.op&&"-"!=s.op)if("-"==this.op)if(s.type!=S.multiop&&s.type!=S.binop||"+"!=s.op&&"-"!=s.op)i.push(new g(this.menv,"-",s));else for(var r in(n=s.flatten()).inputs)i.push(new g(this.menv,"-",n.inputs[r]));else i.push(s);else{n=s.flatten();for(var r in n.inputs)i.push(n.inputs[r])}t=v(this.menv,"+",i);break;case"*":case"/":if(i=[],e.type!=S.multiop&&e.type!=S.binop||"*"!=e.op&&"/"!=e.op)i.push(e);else for(var r in(n=e.flatten()).inputs)i.push(n.inputs[r]);if(s.type!=S.multiop&&s.type!=S.binop||"*"!=s.op&&"/"!=s.op)if("/"==this.op)if(s.type!=S.multiop&&s.type!=S.binop||"*"!=s.op&&"/"!=s.op)i.push(new g(this.menv,"/",s));else for(var r in(n=s.flatten()).inputs)i.push(new g(this.menv,"/",n.inputs[r]));else i.push(s);else for(var r in(n=s.flatten()).inputs)i.push(n.inputs[r]);t=v(this.menv,"*",i);break;default:t=new y(this.menv,this.op,e,s)}return t}match(t,e){function s(t){var e={};for(var s in t)e[s]=t[s];return e}var i=null;if((t.type==S.multiop||t.type==S.binop)&&this.op==t.op&&2<=t.inputs.length){var n,r,a;if(r=t.inputs[0].copy(),t.inputs.length>2){let e=[];for(let s=0;s<t.inputs.length-1;s++)e[s]=t.inputs[s+1].copy();a=v(this.menv,t.op,e)}else a=t.inputs[1].copy();if(n=new y(this.menv,t.op,r,a),i=s(e),null==(i=u.prototype.match.call(this,n,i))&&2<t.inputs.length){var h=[];for(let e=0;e<t.inputs.length-1;e++)h[e]=t.inputs[e].copy();r=v(this.menv,t.op,h),a=t.inputs[t.inputs.length-1],n=new y(this.menv,t.op,r,a),i=s(e),i=u.prototype.match.call(this,n,i)}}return i}copy(){var t=this.inputs[0].copy(),e=this.inputs[1].copy();return new y(this.menv,this.op,t,e)}compose(t){var e,s=this.inputs[0].compose(t),i=this.inputs[1].compose(t);if(e=new y(this.menv,this.op,s,i),s.type==S.number&&i.type==S.number)switch(this.op){case"+":e=w(this.menv,s.number.add(i.number));break;case"-":e=w(this.menv,s.number.subtract(i.number));break;case"*":e=w(this.menv,s.number.multiply(i.number));break;case"/":e=w(this.menv,s.number.divide(i.number))}return e}derivative(t,e){var s,i,n=this.inputs[0].isConstant(),r=this.inputs[1].isConstant();if(n&&r)s=w(this.menv,0);else switch(d=n?w(this.menv,0):this.inputs[0].derivative(t,e),i=r?w(this.menv,0):this.inputs[1].derivative(t,e),this.op){case"+":s=new y(this.menv,"+",d,i);break;case"-":s=new y(this.menv,"-",d,i);break;case"*":var a=new y(this.menv,"*",this.inputs[0],i),h=new y(this.menv,"*",d,this.inputs[1]);s=n?a:r?h:new y(this.menv,"+",h,a);break;case"/":if(r)s=new y(this.menv,"/",d,this.inputs[1]);else if(n){var u=new g(this.menv,"-",new y(this.menv,"*",this.inputs[0],i)),p=new y(this.menv,"^",this.inputs[1],w(this.menv,2));s=new y(this.menv,"/",u,p)}else a=new y(this.menv,"*",this.inputs[0],i),h=new y(this.menv,"*",d,this.inputs[1]),u=new y(this.menv,"-",h,a),p=new y(this.menv,"^",this.inputs[1],w(this.menv,2)),s=new y(this.menv,"/",u,p);break;case"^":var o=this.inputs[1].dependencies(),l="string"==typeof t?t:t.name;if(o.length>0&&o.indexOf(l)>=0){var c=new y(this.menv,"*",this.inputs[1],new f(this.menv,"log",this.inputs[0]));s=new f(this.menv,"exp",c).derivative(t,e)}else if(n)s=w(this.menv,0);else{var v=new y(this.menv,"-",this.inputs[1],w(this.menv,1)),m=new y(this.menv,"*",this.inputs[1],new y(this.menv,"^",this.inputs[0],v));if(this.inputs[0].type==S.variable&&this.inputs[0].name==l)s=m;else{var d=this.inputs[0].derivative(t,e);s=new y(this.menv,"*",m,d)}}break;default:console.log("The binary operator '"+this.op+"' is not defined."),s=void 0}return this.menv.options.doFlatten&&(s=s.flatten()),s}}class g extends u{constructor(t,e,s){switch(super(t),this.type=S.unop,this.op=e,void 0===s&&(s=new u(t)),this.inputs=[s],s.parent=this,e){case"+":case"-":this.prec=T.multdiv;break;case"/":this.prec=T.power;break;default:alert("Unknown unary operator: '"+e+"'.")}}toString(){var t;return t=void 0===this.inputs[0]?"?":this.inputs[0].toString(),this.inputs[0].type>=S.unop&&this.inputs[0].prec<this.prec||this.inputs[0].type==S.number&&t.indexOf("/")>=0&&T.multdiv<=this.prec?this.op+"("+t+")":this.op+t}allStringEquivs(){var t=this.inputs[0].allStringEquivs(),e=[];for(var s in t)this.inputs[0].type>=S.unop&&this.inputs[0].prec<=this.prec?e[s]=this.op+"("+t[s]+")":e[s]=this.op+t[s];return e}toTeX(t){var e,s,i;return void 0===t&&(t=!1),s=void 0===this.inputs[0]?"?":this.inputs[0].toTeX(t),"/"==(i=this.op)?(i="\\div ",e=t&&this.select?"{\\color{red}"+this.op+"}\\left({\\color{blue}"+s+"}\\right)":"\\frac{1}{"+s+"}"):e=t&&this.select?"{\\color{red}"+this.op+"}\\left({\\color{blue}"+s+"}\\right)":this.inputs[0].type>=S.unop&&this.inputs[0].prec<=this.prec&&(this.inputs[0].type!=S.unop||"-"!=this.op||"/"!=this.inputs[0].op)?i+"\\left("+s+"\\right)":i+s,e}toMathML(){var t,e;switch(e=void 0===this.inputs[0]?"?":this.inputs[0].toMathML(),this.op){case"+":t=e;break;case"-":t="<apply><minus/>"+e+"</apply>";break;case"/":t="<apply><divide/><cn>1</cn>"+e+"</apply>"}return t}operateToTeX(){var t=this.op;return"/"===t&&(t="\\div"),t}evaluate(t){var e,s=this.inputs[0].evaluate(t);if(null!=s){switch(this.op){case"+":e=s;break;case"-":e=-1*s;break;case"/":e=1/s;break;default:alert("The unary operator '"+this.op+"' is not defined."),e=void 0}return e}}reduce(){var t=super.reduce(),e=t;return t.type==S.unop&&"-"==t.op&&t.inputs[0].isConstant()&&0==t.value()&&(e=w(this.menv,0)),e}simplifyConstants(){var t;if(this.inputs[0]=this.inputs[0].simplifyConstants(),this.inputs[0].parent=this,this.inputs[0].type==S.number){var e=this.inputs[0].number;switch(this.op){case"-":t=this.menv.options.negativeNumbers?w(this.menv,e.addInverse()):0==e.value()?w(this.menv,0):this;break;case"/":t=w(this.menv,e.multInverse())}}else t=this;return t}flatten(){return new g(this.menv,this.op,this.inputs[0].flatten())}copy(){return new g(this.menv,this.op,this.inputs[0].copy())}compose(t){return new g(this.menv,this.op,this.inputs[0].compose(t))}derivative(t,e){var s;if(this.inputs[0].isConstant())s=w(this.menv,0);else switch(this.op){case"+":s=this.inputs[0].derivative(t,e);break;case"-":(s=new g(this.menv,"-",this.inputs[0].derivative(t,e))).isConstant()&&(s=s.simplifyConstants());break;case"/":var i=new y(this.menv,"*",this.inputs[0],this.inputs[0]);s=new g(this.menv,"-",new y(this.menv,"/",this.inputs[0].derivative(t,e),i));break;default:console.log("The derivative of the unary operator '"+this.op+"' is not defined."),s=void 0}return s}match(t,e){var s=null;if(this.isConstant()&&t.isConstant()){var i=t.simplifyConstants(),n=this.simplifyConstants();(i.toString()===n.toString()||i.type==S.number&&n.type==S.number&&n.number.equal(i.number))&&(s=e)}else s=u.prototype.match.call(this,t,e);return s}}function w(t,e){var s;return"number"==typeof e||e instanceof Number?s=Math.floor(e)==e?new c(e,1):new o(e):e instanceof o?s=e:e instanceof k?s=e.number:console.log("Trying to create a scalar_expr with a non-number object: "+e),t.options.negativeNumbers||s.value()>=0?new k(t,s):new g(t,"-",new k(t,s.multiply(-1)))}class k extends u{constructor(t,e){super(t),this.type=S.number,"number"==typeof e||e instanceof Number?Math.floor(e)==e?this.number=new c(e,1):this.number=new o(e):e instanceof o?this.number=e:e instanceof k?this.number=e.number:console.log("Trying to instantiate a scalar_expr with a non-number object: "+e),this.context="number"}toString(t){return void 0===t&&(t=!1),this.number.toString()}toTeX(t){void 0===t&&(t=!1);var e=this.number.toTeX();return t&&this.select&&(e="{\\color{red}"+e+"}"),e}toMathML(){return"<cn>"+this.toString()+"</cn>"}allStringEquivs(){return[this.toString()]}isConstant(){return!0}simplifyConstants(){var t;if(!this.menv.options.negativeNumbers&&this.number.value()<0){var e=this.number.multiply(-1);t=new g(this.menv,"-",new k(this.menv,e))}else t=this;return t}value(){return this.number.value()}evaluate(t){return this.value()}copy(){return w(this.menv,this.number)}compose(t){return w(this.menv,this.number)}derivative(t,e){return w(this.menv,0)}match(t,e){var s=null,i=t;return t.isConstant()&&t.type!=S.number?(i=t.copy().simplifyConstants(),this.toString()===i.toString()&&(s=e)):i.type==S.number&&this.number.equal(i.number)&&(s=e),s}}class x extends u{constructor(t,e,s,i){super(t),this.type=S.operator,this.op="D",void 0===e&&(e=new u(t)),void 0===s?s=new d(t,"x"):"string"==typeof s&&(s=new d(t,s)),this.ivar=s,this.ivarValue=i,this.inputs=[e],this.isRate=!1,e.parent=this}toString(){var t,e;return e=this.ivar.toString(),t=this.inputs[0].toString(),void 0!==this.ivarValue?"D("+t+","+e+","+this.ivarValue.toString()+")":"D("+t+","+e+")"}toTeX(t){var e,s;return e=this.ivar.toTeX(),s=this.inputs[0].toTeX(),this.isRate&&this.inputs[0].type==S.variable?void 0!==this.ivarValue?"\\left. \\frac{d"+s+"}{d"+e+"} \\right|_{"+e+"="+this.ivarValue.toTeX()+"}":"\\frac{d"+s+"}{d"+e+"}":(void 0!==this.ivarValue?"\\left. \\frac{d}{d"+e+"} \\right|_{"+e+"="+this.ivarValue.toTeX()+"}":"\\frac{d}{d"+e+"}")+"\\Big["+s+"\\Big]"}allStringEquivs(){var t,e,s=this.inputs[0].allStringEquivs(),i=[];for(var n in t=this.ivar.toString(),void 0!==this.ivarValue&&(e=this.ivarValue.toString()),s)void 0!==this.ivarValue?i[n]="D("+s[n]+","+t+","+e+")":i[n]="D("+s[n]+","+t+")";return s}toMathML(){return"<apply><derivative/>"+(void 0===this.inputs[0]?"?":this.inputs[0].toMathML())+"</apply>"}evaluate(t){var e={};return void 0!==this.ivarValue&&(e[this.ivar.name]=this.ivarValue),this.inputs[0].derivative(this.ivar,t).compose(e).evaluate(t)}simplifyConstants(){return this}flatten(){return new x(this.menv,this.inputs[0].flatten(),this.ivar,this.ivarValue)}copy(){return new x(this.menv,this.inputs[0].copy(),this.ivar,this.ivarValue)}compose(t){}derivative(t,e){var s={};void 0!==this.ivarValue&&(s[this.ivar]=this.ivarValue);var i=this.inputs[0].derivative(this.ivar,e);return i.compose(s),i.derivative(t,e)}}class M{constructor(t){if(t.rand)this.rand=t.rand;else{let e;e=null==t.seed?(new Date).getTime().toString():t.seed,this.rand=function(){return function(t){const e="aleaPRNG 1.1.0";var s,i,n,r,a,h=new Uint32Array(3),u="";function p(t){var e=function(){var t=4022871197,e=function(e){for(var s=0,i=(e=e.toString()).length;s<i;s++){var n=.02519603282416938*(t+=e.charCodeAt(s));n-=t=n>>>0,t=(n*=t)>>>0,t+=4294967296*(n-=t)}return 2.3283064365386963e-10*(t>>>0)};return e.version="Mash 0.9",e}();s=e(" "),i=e(" "),n=e(" "),r=1;for(var a=0;a<t.length;a++)(s-=e(t[a]))<0&&(s+=1),(i-=e(t[a]))<0&&(i+=1),(n-=e(t[a]))<0&&(n+=1);u=e.version,e=null}function o(t){return parseInt(t,10)===t}var l=function(){var t=2091639*s+2.3283064365386963e-10*r;return s=i,i=n,n=t-(r=0|t)};return l.fract53=function(){return l()+11102230246251565e-32*(2097152*l()|0)},l.int32=function(){return 4294967296*l()},l.cycle=function(t){(t=void 0===t?1:+t)<1&&(t=1);for(var e=0;e<t;e++)l()},l.range=function(){var t,e;return 1===arguments.length?(t=0,e=arguments[0]):(t=arguments[0],e=arguments[1]),arguments[0]>arguments[1]&&(t=arguments[1],e=arguments[0]),o(t)&&o(e)?Math.floor(l()*(e-t+1))+t:l()*(e-t)+t},l.restart=function(){p(a)},l.seed=function(){p(Array.prototype.slice.call(arguments))},l.version=function(){return e},l.versions=function(){return e+", "+u},0===t.length&&(window.crypto.getRandomValues(h),t=[h[0],h[1],h[2]]),a=t,p(t),l}(Array.prototype.slice.call(arguments))}(e)}}setSeed(t){this.alea.seed(t.toString())}random(){return this.rand()}randSign(){return 2*Math.floor(2*this.random())-1}randInt(t,e){return t+Math.floor((e-t+1)*this.random())}randUniform(t,e){return t+(e-t)*this.random()}randDiscrete(t,e,s,i){var n;(arguments.length<3||0==s)&&(s=1),arguments.length<4&&(i=!1);let r=Math.floor((e-t)/s)+1;do{n=t+s*this.randInt(0,r-1)}while(i&&Math.abs(n)<1e-16);return n}randChoice(t,e,s){var i,n,r=new Array,a=new Array;for(i=0;i<=e-t;i++)r[i]=t+i;for(i=0;i<s;i++)n=Math.floor((e-t+1-i)*this.random()),a[i]=r.splice(n,1)[0];return a}randRational(t,e){var s,i;return s=this.randInt(t[0],t[1]),i=this.randInt(e[0],e[1]),new c(s,i)}randHexHash(t){for(var e="",s=0;s<t;s++)e+="0123456789abcdef"[this.randInt(0,15)];return e}}const T={disj:0,conj:1,equal:2,addsub:3,multdiv:4,power:5,fcn:6,fop:7},S={undef:-1,number:0,variable:1,fcn:2,unop:3,binop:4,multiop:5,operator:6,array:7,matrix:8},q={undef:-1,bool:0,numeric:1};function E(t){return"function"==typeof t.toTeX?t.toTeX():t}class N{constructor(t){void 0===t&&((t={}).seed="1234"),this.randomBindings={},this.bindings={},this.functions={},this.opPrec=T,this.exprType=S,this.exprValue=q,this.options={negativeNumbers:!0,absTol:1e-8,relTol:1e-4,useRelErr:!0,doFlatten:!1},this.setReductionRules(),this.multiop_expr=m,this.binop_expr=y;let e={};void 0!==t.rand&&(e.rand=t.rand),void 0!==t.seed&&(e.seed=t.seed),e.absTol=this.options.absTol,this.rng=new M(e)}numberCmp(t,e,s){var i,n,r=this.options.useRelErr,a=this.options.relTol,h=this.options.absTol;return i="number"==typeof t||"Number"==typeof t?t:t.value(),n="number"==typeof e||"Number"==typeof e?e:e.value(),void 0!==s&&(void 0!==s.useRelErr&&(r=s.useRelErr),void 0!==s.relTol&&(a=s.relTol),void 0!==s.absTol&&(h=s.absTol)),!r||Math.abs(i)<h?Math.abs(n-i)<h?0:i<n?-1:1:Math.abs(n-i)/Math.abs(i)<a?0:i<n?-1:1}setReductionRules(){var t,e;this.reduceRules=(r(t=this,e=new Array,"0+x==x","Additive Identity",!0,!0),r(t,e,"x+0==x","Additive Identity",!0,!0),r(t,e,"0-x==-x","Additive Inverse",!0,!0),r(t,e,"x-0==x","Additive Identity",!0,!0),r(t,e,"x+-(0)==x","Additive Identity",!0,!0),r(t,e,"0*x==0","Multiply by Zero",!0,!0),r(t,e,"x*0==0","Multiply by Zero",!0,!0),r(t,e,"1*x==x","Multiplicative Identity",!0,!0),r(t,e,"x*1==x","Multiplicative Identity",!0,!0),r(t,e,"0/x==0","Multiply by Zero",!0,!0),r(t,e,"x/1==x","Divide by One",!0,!0),r(t,e,"x^1==x","First Power",!0,!0),r(t,e,"x^0==1","Zero Power",!0,!0),r(t,e,"x^(-a)==1/(x^a)","Negative Power",!0,!0),r(t,e,"1^x==1","One to a Power",!0,!0),r(t,e,"-1*x==-x","Multiplicative Identity",!0,!0),r(t,e,"x*-1==-x","Multiplicative Identity",!0,!0),r(t,e,"x-x==0","Additive Inverses Cancel",!0,!0),r(t,e,"x+-x==0","Additive Inverses Cancel",!0,!0),r(t,e,"-x+x==0","Additive Inverses Cancel",!0,!0),r(t,e,"x+(-y)==x-y","Subtraction",!0,!0),r(t,e,"(-x)+(-y)==-(x+y)","Factor Negation from Addition",!0,!0),r(t,e,"x-(-y)==x+y","Additive Inverse's Inverse",!0,!0),r(t,e,"x*(-y)==(-x)*y","Factor Negation from Multiplication",!0,!0),r(t,e,"(-x)/y==-(x/y)","Factor Negation from Multiplication",!0,!0),r(t,e,"x/(-y)==-(x/y)","Factor Negation from Multiplication",!0,!0),r(t,e,"-(-x)==x","Additive Inverse's Inverse",!0,!0),r(t,e,"/(/x)==x","Multiplicative Inverse's Inverse",!0,!0),e)}addReductionRule(t,e,s){r(this,this.reduceRules,t,e,!0,s)}disableReductionRule(t){!function(t,e,s){var i,n=s.split("==");if(n.length>2)console.log("Invalid equation in identity list: "+s);else for(var r in i=t.parse(n[0],"formula"),e)null!==e[r].refExpr.match(i,{})&&(e[r].isActive=!1)}(this,this.reduceRules,t)}addRule(t,e,s,i){r(this,t,e,s,!0,i)}findMatchRules(t,e,s){return a(t,e)}generateRandom(t,e){var s,i,n,r,a;switch(t){case"uniform":"function"==typeof(i=e.min).value&&(i=i.value()),null==i&&(i=0),"function"==typeof(n=e.max).value&&(n=n.value()),null==n&&(n=1),s=this.rng.randUniform(i,n);break;case"sign":s=this.rng.randSign();break;case"integer":"function"==typeof(i=e.min).value&&(i=i.value()),null==i&&(i=0),i=Math.floor(i),"function"==typeof(n=e.max).value&&(n=n.value()),null==n&&(n=1),n=Math.floor(n),s=this.rng.randInt(i,n);break;case"discrete":"function"==typeof(i=e.min).value&&(i=i.value()),"function"==typeof(n=e.max).value&&(n=n.value()),"function"==typeof(r=e.by).value&&(r=r.value()),a=!!e.nonzero,s=this.rng.randDiscrete(i,n,r,a)}return w(this,s)}addFunction(t,e,s){if(arguments.length<2&&(e="x"),arguments.length<3){for(var i,n=w(this,this.rng.randRational([-20,20],[1,15])),r=1;r<=6;r++){if(Array.isArray(e)){i=this.parse("sin("+r+"*"+e[0]+")","formula");for(var a=1;a<e.length;a++)i=new y(this,"*",this.parse("sin("+r+"*"+e[a]+")","formula"),i)}else i=this.parse("sin("+r+"*"+e+")","formula");i=new y(this,"*",w(this,this.rng.randRational([-20,20],[1,10])),i),n=new y(this,"+",n,i)}s=n}var h={};h.input=e,h.value=s,this.functions[t]=h}compareMathObjects(t,e){return"string"==typeof t&&(t=this.parse(t,"formula")),"string"==typeof e&&(e=this.parse(e,"formula")),t.compare(e)}getParser(t){var e=this,s=t;return function(t){return e.parse(t,s)}}parse(t,e,s,i){arguments.length<2&&(e="formula"),arguments.length<3&&(s={}),arguments.length<4&&(i={});const n=/\d|(\.\d)/,r=/[a-zA-Z]/,a=/[\+\-*/^=\$&]/;var h,o,l=0,c="";o=t.trim();for(var v=!0;v;)v=!1,"("==o.charAt(0)&&I(o,0)+1>=o.length&&(v=!0,o=o.slice(1,-1));var m=new Array,k=new Array;function M(t,e,s,i){for(var n=0;e.length>0&&(n=e.pop(),!i||!(i.type==S.unop||n.prec<i.prec));){var r;if(n.type==S.unop)if(s.length>0){var a=s.pop();r=t.options.negativeNumbers&&a.type==S.number&&"-"==n.op?w(t,a.number.multiply(-1)):new g(t,n.op,a)}else(r=new u(t)).setParsingError("Incomplete formula: missing value for "+n.op);else if(s.length>1){var h=s.pop(),p=s.pop();r=new y(t,n.op,p,h)}else(r=new u(t)).setParsingError("Incomplete formula: missing value for "+n.op);s.push(r),n=0}0!=n&&e.push(n),i&&e.push(i)}var q,E,N=-1;for(l=0;l<o.length;l++)if(" "!=o.charAt(l)){if(")"==o.charAt(l))M(this,k,m),q=0,N=-1;else if("("==o.charAt(l)){h=I(o,l);var R=o.slice(l+1,h),j=this.parse(R,e,s);m.push(j),q=0,l=h}else if("|"==o.charAt(l)){h=C(o,l),R=o.slice(l+1,h),j=this.parse(R,e,s);var F=new f(this,"abs",j);m.push(F),q=0,l=h}else if(0==o.substr(l).search(n))h=O(o,l,i),F=w(this,new Number(o.slice(l,h))),i&&i.noDecimals&&"."==o.charAt(l)&&F.setParsingError("Whole numbers only. No decimal values are allowed."),m.push(F),q=0,l=h-1;else if(0==o.substr(l).search(r)){h=V(o,l);var L=o.slice(l,h);if(void 0===s[L]){var B=P(L,s);B.isComposite&&(h=l+(L=B.name).length)}if("("==o.charAt(h)&&void 0===s[L]){var D=I(o,h);if("D"==L){var $,_,U,Z=o.slice(h+1,D).split(",");$=this.parse(Z[0],e,s),1==Z.length?F=new x(this,$,"x"):(_=this.parse(Z[1],e,s),Z.length>2&&(U=this.parse(Z[2],e,s)),F=new x(this,$,_,U))}else j=this.parse(o.slice(h+1,D),e,s),F=new f(this,L,j);m.push(F),q=0,l=D}else if("["==o.charAt(h)){var z=!1;try{D=X(o,h,!0)}catch(t){c=t,z=!0,D=h+1}var G=this.parse(o.slice(h+1,D),e,s);F=new b(this,L,G),z&&(F.setParsingError(c),c=""),m.push(F),q=0,l=D}else F=new d(this,L),m.push(F),q=0,l=h-1}else if(0==o.substr(l).search(a)){q=1;var W=o.charAt(l),H=new A(W);0!=N&&("-"==W||"/"==W?(H.type=S.unop,H.prec=T.multdiv):c="Error: consecutive operators"),M(this,k,m,H)}if(0==N&&0==q){var J=m.pop();M(this,k,m,H=new A("*")),m.push(J)}N=q}if(M(this,k,m),E=m.length>0?m.pop():new p(this),c.length>0)E.setParsingError(c);else{if(E=E.compose(s),"number"===e){if(!E.isConstant())throw new TypeError(`The expression ${t} is expected to be a constant but depends on variables.`);E.simplifyConstants()}E.setContext(e)}return i.doFlatten&&E.flatten(),E}}function A(t){switch(this.op=t,t){case"+":case"-":this.prec=T.addsub,this.type=S.binop,this.valueType=q.numeric;break;case"*":case"/":this.prec=T.multdiv,this.type=S.binop,this.valueType=q.numeric;break;case"^":this.prec=T.power,this.type=S.binop,this.valueType=q.numeric;break;case"&":this.prec=T.conj,this.type=S.binop,this.valueType=q.bool;break;case"$":this.prec=T.disj,this.type=S.binop,this.valueType=q.bool;break;case"=":this.prec=T.equal,this.type=S.binop,this.valueType=q.bool;break;case",":this.prec=T.fop,this.type=S.array,this.valueType=q.vector;break;default:this.prec=T.fcn,this.type=S.fcn}}function C(t,e){for(var s=1,i=e,n=!0;s>0&&i<t.length;)i++,"|"==t.charAt(i)?n?s++:s--:"+-*/([".search(t.charAt(i))>=0?n=!0:" "!=t.charAt(i)&&(n=!1);return i}function I(t,e){for(var s=1,i=e;s>0&&i<t.length;)i++,")"==t.charAt(i)?s--:"("==t.charAt(i)&&s++;return i}function X(t,e,s){for(var i=1,n=e,r=!1;i>0&&n<t.length;)n++,"]"==t.charAt(n)?i--:"["==t.charAt(n)&&(s&&(r=!0),i++);if(s&&r)throw"Nested brackets used for subscripts are not supported.";return n}function V(t,e){return e+t.substr(e).match(/[A-Za-z]\w*'*/)[0].length}function O(t,e,s){var i;return i=s&&s.noDecimals?/[0-9]*/:/[0-9]*(\.[0-9]*)?(e-?[0-9]+)?/,e+t.substr(e).match(i)[0].length}function P(t,e){var s,i=new Object;if(i.isComposite=!1,void 0!==e)if(void 0!==e[t])i.isComposite=!0,i.name=t;else{var n=Object.keys(e);for(var r in n)if(s=n[r],0==t.search(s)&&P(t.slice(s.length),e).isComposite){i.isComposite=!0,i.name=s;break}}return i}class R{constructor(t){this.menv=new N(t),this.data={},this.data.allValues={},this.data.params={},this.data.variables={},this.data.expressions={}}addMathObject(t,e,s){switch(e){case"number":if(!s.isConstant())throw`Attempt to add math object '${t}' with context '${e}' that does not match.`;this.data.params[t]=s,this.data.allValues[t]=s;break;case"formula":this.data.allValues[t]=s}return s}generateRandom(t,e){return this.menv.generateRandom(t,e)}addVariable(t,e){var s=new d(this.menv,t);return this.data.variables[t]=s,this.data.allValues[t]=s,s}parseExpression(t,e){var s;if("string"==typeof t){var i=this.decodeFormula(t);s=this.menv.parse(i,e,this.data.allValues).compose(this.data.allValues)}else"object"==typeof t&&(s=t);return s}evaluateExpression(t,e,s){var i,n;if("string"==typeof t){var r=this.decodeFormula(t);i=this.menv.parse(r,"formula")}else"object"==typeof t&&(i=t);return n=i.evaluate(s),w(this.menv,n)}composeExpression(t,e){var s;if("string"==typeof t){var i=this.decodeFormula(t);s=this.menv.parse(i,"formula")}else"object"==typeof t&&(s=t);var n,r,a=Object.entries(e);[n,r]=a[0],"string"==typeof r&&(r=this.menv.parse(r,"formula"));var h={};return h[n]=r,s.compose(h)}addExpression(t,e){var s=this.parseExpression(e,"formula");return this.data.expressions[t]=s,this.data.allValues[t]=s,s}addFunction(t,e,s){this.menv.addFunction(t,e,s)}decodeFormula(t,e){var s={},i=t.match(/\{\{[A-Za-z]\w*\}\}/g);if(null!=i)for(var n=0;n<i.length;n++){var r=i[n];r=r.substr(2,r.length-4),null!=this.data.allValues[r]&&(s[r]=null!=e&&e?"{"+this.data.allValues[r].toTeX()+"}":"("+this.data.allValues[r].toString()+")")}var a=t;for(var h in s){var u=new RegExp("{{"+h+"}}","g"),p=s[h];a=a.replace(u,p)}return a}compareExpressions(t,e){var s,i;if("string"==typeof t){var n=this.decodeFormula(t);s=this.menv.parse(n,"formula")}else"object"==typeof t&&(s=t);if("string"==typeof e){var r=this.decodeFormula(e);i=this.menv.parse(r,"formula")}else"object"==typeof e&&(i=e);return this.menv.compareMathObjects(s,i)}getParser(t){return this.menv.getParser(t)}}}}]);
|
|
//# sourceMappingURL=357.a6fa55aea0c38a63.js.map
|