{"version":3,"sources":["webpack:///./node_modules/mathjs/lib/esm/expression/transform/utils/errorTransform.js","webpack:///./node_modules/mathjs/lib/esm/function/algebra/derivative.js","webpack:///./node_modules/mathjs/lib/esm/expression/node/ParenthesisNode.js","webpack:///./src/@core/utils/filter.js","webpack:///./node_modules/core-js/modules/es.string.split.js","webpack:///./node_modules/mathjs/lib/esm/expression/transform/apply.transform.js","webpack:///./node_modules/mathjs/lib/esm/utils/scope.js","webpack:///./node_modules/mathjs/lib/esm/expression/transform/diff.transform.js","webpack:///./node_modules/mathjs/lib/esm/expression/node/FunctionAssignmentNode.js","webpack:///./node_modules/mathjs/lib/esm/expression/function/evaluate.js","webpack:///./node_modules/mathjs/lib/esm/expression/node/OperatorNode.js","webpack:///./node_modules/mathjs/lib/esm/expression/transform/std.transform.js","webpack:///./node_modules/escape-latex/dist/index.js","webpack:///./node_modules/mathjs/lib/esm/expression/node/FunctionNode.js","webpack:///./node_modules/mathjs/lib/esm/function/algebra/leafCount.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/e.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/false.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/i.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/Infinity.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/LN10.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/LN2.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/LOG10E.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/LOG2E.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/NaN.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/null.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/phi.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/pi.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/SQRT1_2.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/SQRT2.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/tau.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/true.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/version.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/bignumber.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/boolean.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/complex.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/createUnit.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/fraction.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/index.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/matrix.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/number.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/sparse.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/splitUnit.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/string.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/unit.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/core/config.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/core/import.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/core/typed.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/derivative.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/leafCount.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/lsolve.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/lsolveAll.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/lup.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/lusolve.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/polynomialRoot.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/qr.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/rationalize.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/resolve.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/simplify.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/simplifyConstant.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/simplifyCore.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/slu.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/symbolicEqual.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/usolve.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/usolveAll.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/abs.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/add.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/cbrt.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/ceil.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/cube.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/divide.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/dotDivide.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/dotMultiply.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/dotPow.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/exp.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/expm.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/expm1.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/fix.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/floor.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/gcd.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/hypot.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/invmod.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/lcm.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/log.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/log10.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/log1p.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/log2.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/mod.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/multiply.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/norm.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/nthRoot.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/nthRoots.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/pow.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/round.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/sign.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/sqrt.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/sqrtm.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/sylvester.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/schur.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/lyap.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/square.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/subtract.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/unaryMinus.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/unaryPlus.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/xgcd.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/bitwise/bitAnd.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/bitwise/bitNot.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/bitwise/bitOr.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/bitwise/bitXor.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/bitwise/leftShift.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/bitwise/rightArithShift.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/bitwise/rightLogShift.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/combinatorics/bellNumbers.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/combinatorics/catalan.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/combinatorics/composition.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/combinatorics/stirlingS2.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/complex/arg.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/complex/conj.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/complex/im.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/complex/re.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/expression/evaluate.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/expression/help.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/geometry/distance.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/geometry/intersect.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/logical/and.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/logical/not.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/logical/or.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/logical/xor.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/column.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/concat.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/count.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/cross.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/ctranspose.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/det.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/diag.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/diff.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/dot.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/eigs.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/filter.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/flatten.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/forEach.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/getMatrixDataType.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/identity.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/inv.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/pinv.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/kron.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/map.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/matrixFromColumns.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/matrixFromFunction.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/matrixFromRows.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/ones.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/partitionSelect.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/range.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/reshape.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/resize.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/rotate.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/rotationMatrix.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/row.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/size.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/sort.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/squeeze.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/subset.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/trace.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/transpose.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/zeros.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/fft.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/ifft.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/probability/combinations.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/probability/combinationsWithRep.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/probability/factorial.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/probability/gamma.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/probability/lgamma.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/probability/kldivergence.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/probability/multinomial.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/probability/permutations.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/probability/pickRandom.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/probability/random.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/probability/randomInt.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/relational/compare.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/relational/compareNatural.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/relational/compareText.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/relational/deepEqual.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/relational/equal.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/relational/equalText.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/relational/larger.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/relational/largerEq.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/relational/smaller.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/relational/smallerEq.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/relational/unequal.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/set/setCartesian.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/set/setDifference.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/set/setDistinct.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/set/setIntersect.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/set/setIsSubset.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/set/setMultiplicity.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/set/setPowerset.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/set/setSize.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/set/setSymDifference.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/set/setUnion.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/signal/zpk2tf.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/signal/freqz.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/special/erf.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/special/zeta.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/mad.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/max.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/mean.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/median.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/min.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/mode.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/prod.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/quantileSeq.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/std.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/cumsum.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/sum.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/variance.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/corr.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/acos.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/acosh.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/acot.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/acoth.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/acsc.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/acsch.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/asec.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/asech.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/asin.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/asinh.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/atan.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/atan2.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/atanh.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/cos.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/cosh.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/cot.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/coth.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/csc.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/csch.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/sec.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/sech.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/sin.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/sinh.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/tan.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/tanh.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/units/to.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/bin.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/clone.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/format.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/hasNumericValue.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/hex.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/isInteger.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/isNaN.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/isNegative.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/isNumeric.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/isPositive.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/isPrime.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/isZero.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/numeric.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/oct.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/print.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/typeOf.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/function/numeric/solveODE.js","webpack:///./node_modules/mathjs/lib/esm/expression/embeddedDocs/embeddedDocs.js","webpack:///./node_modules/mathjs/lib/esm/expression/transform/mean.transform.js","webpack:///./node_modules/mathjs/lib/esm/function/algebra/resolve.js","webpack:///./node_modules/mathjs/lib/esm/expression/transform/max.transform.js","webpack:///./node_modules/mathjs/lib/esm/expression/node/AccessorNode.js","webpack:///./node_modules/mathjs/lib/esm/expression/transform/row.transform.js","webpack:///./node_modules/mathjs/lib/esm/expression/Help.js","webpack:///./node_modules/mathjs/lib/esm/expression/node/BlockNode.js","webpack:///./node_modules/mathjs/lib/esm/expression/node/SymbolNode.js","webpack:///./node_modules/mathjs/lib/esm/expression/keywords.js","webpack:///./node_modules/mathjs/lib/esm/expression/node/utils/assign.js","webpack:///./node_modules/mathjs/lib/esm/expression/node/AssignmentNode.js","webpack:///./node_modules/mathjs/lib/esm/expression/node/ConstantNode.js","webpack:///./node_modules/mathjs/lib/esm/expression/transform/concat.transform.js","webpack:///./node_modules/mathjs/lib/esm/expression/transform/forEach.transform.js","webpack:///./node_modules/mathjs/lib/esm/expression/transform/subset.transform.js","webpack:///./node_modules/mathjs/lib/esm/expression/node/ObjectNode.js","webpack:///./node_modules/mathjs/lib/esm/expression/function/compile.js","webpack:///./node_modules/mathjs/lib/esm/expression/transform/cumsum.transform.js","webpack:///./node_modules/mathjs/lib/esm/expression/transform/map.transform.js","webpack:///./node_modules/mathjs/lib/esm/expression/transform/filter.transform.js","webpack:///./node_modules/mathjs/lib/esm/expression/transform/range.transform.js","webpack:///./node_modules/mathjs/lib/esm/expression/node/utils/access.js","webpack:///./node_modules/mathjs/lib/esm/expression/transform/index.transform.js","webpack:///./node_modules/mathjs/lib/esm/function/algebra/simplifyConstant.js","webpack:///./node_modules/mathjs/lib/esm/expression/node/IndexNode.js","webpack:///./node_modules/mathjs/lib/esm/expression/transform/quantileSeq.transform.js","webpack:///./node_modules/mathjs/lib/esm/function/algebra/simplify/util.js","webpack:///./node_modules/mathjs/lib/esm/function/algebra/rationalize.js","webpack:///./src/views/adm.vue?15b5","webpack:///./src/views/components/selecionarInstituto.vue?1e0c","webpack:///src/views/components/selecionarInstituto.vue","webpack:///./src/views/components/selecionarInstituto.vue?4645","webpack:///./src/views/components/selecionarInstituto.vue","webpack:///./src/views/pages/statistic/CardStatistic.vue?2041","webpack:///./src/views/pages/statistic/CardStatisticOrderChart.vue?c11f","webpack:///src/views/pages/statistic/CardStatisticOrderChart.vue","webpack:///./src/views/pages/statistic/CardStatisticOrderChart.vue?cd65","webpack:///./src/views/pages/statistic/CardStatisticOrderChart.vue","webpack:///./src/views/pages/statistic/CardStatisticProfitChart.vue?b2bf","webpack:///src/views/pages/statistic/CardStatisticProfitChart.vue","webpack:///./src/views/pages/statistic/CardStatisticProfitChart.vue?1568","webpack:///./src/views/pages/statistic/CardStatisticProfitChart.vue","webpack:///./src/views/pages/statistic/CardStatisticsGroup.vue?a08b","webpack:///src/views/pages/statistic/CardStatisticsGroup.vue","webpack:///./src/views/pages/statistic/CardStatisticsGroup.vue?3c3b","webpack:///./src/views/pages/statistic/CardStatisticsGroup.vue","webpack:///src/views/pages/statistic/CardStatistic.vue","webpack:///./src/views/pages/statistic/CardStatistic.vue?b69c","webpack:///./src/views/pages/statistic/CardStatistic.vue","webpack:///./src/views/functions/atualizarTaxas.js","webpack:///src/views/adm.vue","webpack:///./src/views/adm.vue?8a17","webpack:///./src/views/adm.vue","webpack:///./node_modules/mathjs/lib/esm/expression/Parser.js","webpack:///./node_modules/mathjs/lib/esm/expression/transform/column.transform.js","webpack:///./node_modules/mathjs/lib/esm/expression/transform/utils/lastDimToZeroBase.js","webpack:///./node_modules/mathjs/lib/esm/function/algebra/simplify/wildcards.js","webpack:///./node_modules/mathjs/lib/esm/function/algebra/simplify.js","webpack:///./src/views/components/selecionarInstituto.vue?e2bb","webpack:///./node_modules/mathjs/lib/esm/expression/node/ConditionalNode.js","webpack:///./node_modules/mathjs/lib/esm/expression/parse.js","webpack:///./node_modules/mathjs/lib/esm/type/chain/Chain.js","webpack:///./node_modules/mathjs/lib/esm/expression/node/RangeNode.js","webpack:///./node_modules/mathjs/lib/esm/expression/function/parser.js","webpack:///./node_modules/mathjs/lib/esm/expression/function/help.js","webpack:///./src/@core/utils/formatar-competencia.js","webpack:///./src/@core/utils/utils.js","webpack:///./node_modules/mathjs/lib/esm/entry/impureFunctionsAny.generated.js","webpack:///./node_modules/mathjs/lib/esm/expression/transform/min.transform.js","webpack:///./node_modules/mathjs/lib/esm/expression/transform/utils/compileInlineExpression.js","webpack:///./node_modules/mathjs/lib/esm/expression/transform/print.transform.js","webpack:///./node_modules/mathjs/lib/esm/expression/transform/sum.transform.js","webpack:///./node_modules/mathjs/lib/esm/expression/node/RelationalNode.js","webpack:///./node_modules/vue-ripple-directive/src/ripple.js","webpack:///./src/views/adm.vue?6c76","webpack:///./node_modules/mathjs/lib/esm/json/reviver.js","webpack:///./node_modules/mathjs/lib/esm/expression/node/ArrayNode.js","webpack:///./node_modules/mathjs/lib/esm/utils/latex.js","webpack:///./node_modules/mathjs/lib/esm/function/algebra/symbolicEqual.js","webpack:///./node_modules/mathjs/lib/esm/type/chain/function/chain.js","webpack:///./node_modules/mathjs/lib/esm/expression/operators.js","webpack:///./node_modules/mathjs/lib/esm/expression/transform/variance.transform.js","webpack:///./node_modules/mathjs/lib/esm/expression/node/Node.js","webpack:///./node_modules/mathjs/lib/esm/function/algebra/simplifyCore.js"],"names":["errorTransform","err","isIndexError","index","min","undefined","max","name","dependencies","createDerivative","_ref","typed","config","parse","simplify","equal","isZero","numeric","ConstantNode","FunctionNode","OperatorNode","ParenthesisNode","SymbolNode","plainDerivative","expr","variable","options","arguments","length","constNodes","constTag","res","_derivative","addConversion","from","to","convert","derivative","removeConversion","_simplify","toTex","deriv","_derivTex","apply","args","x","value","toString","Error","order","d","concat","node","varName","content","params","indexOf","isConst","i","createConstantNode","funcArgsCheck","arg1","funcDerivative","op","func","arg0","div","negative","clone","chainDerivative","fn","map","arg","isUnary","isBinary","constantTerms","filter","nonConstantTerms","nonConstantNode","newArgs","argOuter","argInner","_arg","_arg2","powMinusOne","compile","evaluate","valueType","number","createParenthesisNode","Node","super","TypeError","this","math","argNames","_compile","getContent","callback","parenthesis","mathjs","json","toHTML","isClass","isNode","kFormatter","num","toFixed","title","replacer","str","arr","split","capitalizedArray","forEach","word","capitalized","charAt","toUpperCase","slice","push","join","avatarText","nameArray","call","uncurryThis","fixRegExpWellKnownSymbolLogic","anObject","isNullOrUndefined","isRegExp","requireObjectCoercible","speciesConstructor","advanceStringIndex","toLength","getMethod","arraySlice","callRegExpExec","regexpExec","stickyHelpers","fails","UNSUPPORTED_Y","MAX_UINT32","Math","$push","exec","stringSlice","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","re","originalExec","result","SPLIT","nativeSplit","maybeCallNative","internalSplit","separator","limit","string","lim","match","lastIndex","lastLength","output","flags","ignoreCase","multiline","unicode","sticky","lastLastIndex","separatorCopy","RegExp","source","O","splitter","rx","S","done","C","unicodeMatching","p","q","A","e","z","createApplyTransform","isInteger","dim","minus","isTransformFunction","createSubScope","parentScope","_len","Array","_key","createDiffTransform","matrix","subtract","bignumber","diff","createFunctionAssignmentNode","needParenthesis","implicit","precedence","exprPrecedence","FunctionAssignmentNode","isArray","has","paramNames","Set","param","_name","add","types","type","childArgNames","Object","create","evalExpr","signature","syntax","scope","context","signatures","childArgs","set","_ifNode","createEvaluate","entry","createOperatorNode","startsWithConstant","curNode","calculateNecessaryParentheses","root","latex","associativity","getIdentifier","operandPrecedence","operandIdentifier","rootIdentifier","latexLeftParens","latexParens","lhsParens","rhsParens","lhsPrecedence","assocWithLhs","_rootIdentifier","lhsIdentifier","rhsIdentifier","rhsPrecedence","assocWithRhs","latexRightParens","argPrecedence","assocWithArg","argAssociativity","isPercentage","every","evalArgs","evalArg0","_evalArg","evalArg1","evalArg","parens","assoc","operand","opIsNamed","test","lhs","rhs","stringifiedArgs","lhsTex","rhsTex","texifiedArgs","createStdTransform","sqrt","variance","std","_extends","assign","target","key","prototype","hasOwnProperty","defaultEscapes","$","_","formatEscapes","defaultEscapeMapFn","module","exports","_ref$preserveFormatti","preserveFormatting","_ref$escapeMapFn","escapeMapFn","runningStr","String","escapes","escapeKeys","keys","_loop","specialCharFound","createFunctionNode","_class","strin","entity","truncate","expandTemplate","template","regex","inputPos","substring","property","ReferenceError","isObjectProperty","evalObject","object","prop","getObjectProperty","_rawArgs2","rawArgs","values","fnExpr","evalFn","_rawArgs3","_rawArgs","isRaw","resolveFn","get","onUndefinedFunction","customString","handler","customTex","latexConverter","customToTex","createLeafCount","countLeaves","count","n","eDocs","category","description","examples","seealso","falseDocs","iDocs","InfinityDocs","LN10Docs","LN2Docs","LOG10EDocs","LOG2EDocs","NaNDocs","nullDocs","phiDocs","piDocs","SQRT12Docs","SQRT2Docs","tauDocs","trueDocs","versionDocs","bignumberDocs","booleanDocs","complexDocs","createUnitDocs","fractionDocs","indexDocs","matrixDocs","numberDocs","sparseDocs","splitUnitDocs","stringDocs","unitDocs","configDocs","importDocs","typedDocs","derivativeDocs","leafCountDocs","lsolveDocs","lsolveAllDocs","lupDocs","lusolveDocs","polynomialRootDocs","qrDocs","rationalizeDocs","resolveDocs","mayThrow","simplifyDocs","simplifyConstantDocs","simplifyCoreDocs","sluDocs","symbolicEqualDocs","usolveDocs","usolveAllDocs","absDocs","addDocs","cbrtDocs","ceilDocs","cubeDocs","divideDocs","dotDivideDocs","dotMultiplyDocs","dotPowDocs","expDocs","expmDocs","expm1Docs","fixDocs","floorDocs","gcdDocs","hypotDocs","invmodDocs","lcmDocs","logDocs","log10Docs","log1pDocs","log2Docs","modDocs","multiplyDocs","normDocs","nthRootDocs","nthRootsDocs","powDocs","roundDocs","signDocs","sqrtDocs","sqrtmDocs","sylvesterDocs","schurDocs","lyapDocs","squareDocs","subtractDocs","unaryMinusDocs","unaryPlusDocs","xgcdDocs","bitAndDocs","bitNotDocs","bitOrDocs","bitXorDocs","leftShiftDocs","rightArithShiftDocs","rightLogShiftDocs","bellNumbersDocs","catalanDocs","compositionDocs","stirlingS2Docs","argDocs","conjDocs","imDocs","reDocs","evaluateDocs","helpDocs","distanceDocs","intersectDocs","andDocs","notDocs","orDocs","xorDocs","columnDocs","concatDocs","countDocs","crossDocs","ctransposeDocs","detDocs","diagDocs","diffDocs","dotDocs","eigsDocs","filterDocs","flattenDocs","forEachDocs","getMatrixDataTypeDocs","identityDocs","invDocs","pinvDocs","kronDocs","mapDocs","matrixFromColumnsDocs","matrixFromFunctionDocs","matrixFromRowsDocs","onesDocs","partitionSelectDocs","rangeDocs","reshapeDocs","resizeDocs","rotateDocs","rotationMatrixDocs","rowDocs","sizeDocs","sortDocs","squeezeDocs","subsetDocs","traceDocs","transposeDocs","zerosDocs","fftDocs","ifftDocs","combinationsDocs","combinationsWithRepDocs","factorialDocs","gammaDocs","lgammaDocs","kldivergenceDocs","multinomialDocs","permutationsDocs","pickRandomDocs","randomDocs","randomIntDocs","compareDocs","compareNaturalDocs","compareTextDocs","deepEqualDocs","equalDocs","equalTextDocs","largerDocs","largerEqDocs","smallerDocs","smallerEqDocs","unequalDocs","setCartesianDocs","setDifferenceDocs","setDistinctDocs","setIntersectDocs","setIsSubsetDocs","setMultiplicityDocs","setPowersetDocs","setSizeDocs","setSymDifferenceDocs","setUnionDocs","zpk2tfDocs","freqzDocs","erfDocs","zetaDocs","madDocs","maxDocs","meanDocs","medianDocs","minDocs","modeDocs","prodDocs","quantileSeqDocs","stdDocs","cumSumDocs","sumDocs","varianceDocs","corrDocs","acosDocs","acoshDocs","acotDocs","acothDocs","acscDocs","acschDocs","asecDocs","asechDocs","asinDocs","asinhDocs","atanDocs","atan2Docs","atanhDocs","cosDocs","coshDocs","cotDocs","cothDocs","cscDocs","cschDocs","secDocs","sechDocs","sinDocs","sinhDocs","tanDocs","tanhDocs","toDocs","binDocs","cloneDocs","formatDocs","hasNumericValueDocs","hexDocs","isIntegerDocs","isNaNDocs","isNegativeDocs","isNumericDocs","isPositiveDocs","isPrimeDocs","isZeroDocs","numericDocs","octDocs","printDocs","typeOfDocs","solveODEDocs","embeddedDocs","boolean","complex","createUnit","fraction","sparse","splitUnit","unit","E","false","Infinity","LN2","LN10","LOG2E","LOG10E","NaN","null","pi","PI","phi","SQRT1_2","SQRT2","tau","true","version","speedOfLight","gravitationConstant","planckConstant","reducedPlanckConstant","magneticConstant","electricConstant","vacuumImpedance","coulomb","elementaryCharge","bohrMagneton","conductanceQuantum","inverseConductanceQuantum","magneticFluxQuantum","nuclearMagneton","klitzing","bohrRadius","classicalElectronRadius","electronMass","fermiCoupling","fineStructure","hartreeEnergy","protonMass","deuteronMass","neutronMass","quantumOfCirculation","rydberg","thomsonCrossSection","weakMixingAngle","efimovFactor","atomicMass","avogadro","boltzmann","faraday","firstRadiation","loschmidt","gasConstant","molarPlanckConstant","molarVolume","sackurTetrode","secondRadiation","stefanBoltzmann","wienDisplacement","molarMass","molarMassC12","gravity","planckLength","planckMass","planckTime","planckCharge","planckTemperature","lsolve","lsolveAll","lup","lusolve","leafCount","polynomialRoot","resolve","simplifyConstant","simplifyCore","symbolicEqual","rationalize","slu","usolve","usolveAll","qr","abs","cbrt","ceil","cube","divide","dotDivide","dotMultiply","dotPow","exp","expm","expm1","fix","floor","gcd","hypot","lcm","log","log2","log1p","log10","mod","multiply","norm","nthRoot","nthRoots","pow","round","sign","sqrtm","square","unaryMinus","unaryPlus","xgcd","invmod","bitAnd","bitNot","bitOr","bitXor","leftShift","rightArithShift","rightLogShift","bellNumbers","catalan","composition","stirlingS2","import","conj","im","help","distance","intersect","and","not","or","xor","cross","column","ctranspose","det","diag","dot","getMatrixDataType","identity","flatten","inv","pinv","eigs","kron","matrixFromFunction","matrixFromRows","matrixFromColumns","ones","partitionSelect","range","resize","reshape","rotate","rotationMatrix","row","size","sort","squeeze","subset","trace","transpose","zeros","fft","ifft","sylvester","schur","lyap","solveODE","combinations","combinationsWithRep","factorial","gamma","kldivergence","lgamma","multinomial","permutations","pickRandom","random","randomInt","compare","compareNatural","compareText","deepEqual","equalText","larger","largerEq","smaller","smallerEq","unequal","setCartesian","setDifference","setDistinct","setIntersect","setIsSubset","setMultiplicity","setPowerset","setSize","setSymDifference","setUnion","zpk2tf","freqz","erf","zeta","cumsum","mad","mean","median","mode","prod","quantileSeq","sum","corr","acos","acosh","acot","acoth","acsc","acsch","asec","asech","asin","asinh","atan","atanh","atan2","cos","cosh","cot","coth","csc","csch","sec","sech","sin","sinh","tan","tanh","format","bin","oct","hex","isNaN","isNegative","isNumeric","hasNumericValue","isPositive","isPrime","print","typeOf","createMeanTransform","createResolve","_resolve","within","variables","nextWithin","_args","child","referToSelf","self","referTo","selfAM","selfMM","createMaxTransform","createAccessorNode","access","AccessorNode","evalIndex","createRowTransform","Index","last","createHelpClass","Help","doc","SyntaxError","isHelp","desc","precision","toJSON","obj","fromJSON","valueOf","createBlockNode","ResultSet","BlockNode","blocks","block","visible","evalBlocks","results","createSymbolNode","Unit","isValuelessUnit","isUnit","onUndefinedSymbol","symbol","keywords","assignFactory","item","createAssignmentNode","factory","AssignmentNode","is","evalValue","childObject","evalParentObject","parentProp","parent","evalParentIndex","parentIndex","_toString","isFinite","toLowerCase","toLatex","createConcatTransform","createForEachTransform","forEachTransform","_forEach","array","recurse","createSubsetTransform","createObjectNode","ObjectNode","properties","evalEntries","stringifiedKey","parsedKey","JSON","entries","tex","createCompile","createCumSumTransform","createMapTransform","mapTransform","_map","orig","createFilterTransform","filterTransform","_filter","toArray","createRangeTransform","accessFactory","createIndexTransform","ii","start","end","step","isSet","v","toNumber","createSimplifyConstant","mathWithTransform","ArrayNode","IndexNode","isCommutative","isAssociative","allChildren","createMakeNodeFunction","_ensureNode","foldFraction","_removeFractions","thing","_eval","fnname","ignore","_toNumber","_toNode","Fraction","_fractionToNode","unaryMinusNode","BigNumber","Complex","s","Matrix","m","_exactFraction","exactFractions","f","fractionsLimit","parseFloat","vn","_foldAccessor","remainingDims","dimensions","first","shift","items","second","tryItems","fromItems","splice","foldOp","makeNode","reduction","reduce","sofar","next","pop","ignoreandcontinue","newtree","operatorFunctions","some","sz","section","consts","vars","unshift","foldItems","foldProps","createIndexNode","dotNotation","evalDimensions","dimension","needsEnd","isSymbolNode","_evalDimension","evalDimension","createQuantileSeqTransform","prob","dimToZeroBase","sorted","data","ownKeys","r","t","getOwnPropertySymbols","o","getOwnPropertyDescriptor","enumerable","_objectSpread","getOwnPropertyDescriptors","defineProperties","defineProperty","createUtil","T","F","defaultName","defaultContext","trivial","total","commutative","associative","paren","defaultF","realContext","positiveContext","hasProperty","nodeOrName","_properties","_properties2","mergeContext","primary","secondary","merged","children","findChildren","unflattenr","l","curnode","unflattenl","console","error","createRationalize","_rationalize","detailed","setRules","rulesRationalize","polyRet","polynomial","firstRules","nVars","noExactFractions","withExactFractions","expression","sBefore","rules","expandPower","eDistrDiv","redoInic","distrDivRules","sucDivRules","firstRulesAgain","finalRules","coefficients","retRationalize","polyToCanonical","numerator","denominator","extended","oper","recPoly","retFunc","tp","pos","oldRules","rulesFirst","rulesDistrDiv","rulesSucDiv","indParent","internal","val","does","nEsqTopo","nDirTopo","cloneDeep","maxExpo","varname","recurPol","no","n1","n2","n3","noPai","noFil","fire","_i","cte","valor","_i2","render","_vm","_h","$createElement","_c","_self","attrs","_v","_e","ref","on","selecionarInstitutoMethod","staticRenderFns","scopedSlots","_u","errors","instituto","option","id","carregandoInstituto","model","dados","$$v","$set","staticClass","_s","directives","rawName","modifiers","confirmar","components","ValidationProvider","ValidationObserver","formatarData","Ripple","required","userData","$jwtDecode","localStorage","getItem","mounted","carregarInstituto","carregarGrupoAcessoPorUser","methods","_this$userData$Instit","_this","Instituto","role","useJwt","then","response","grupoAcessoUser","GrupoAcesso","catch","_this$userData$Instit2","_this$userData$instit","_this2","InstitutoUser","institutosVinculados","finally","evento","_this3","_asyncToGenerator","_regeneratorRuntime","mark","_callee2","wrap","_context2","prev","preventDefault","$refs","formSelecioneInstituto","validate","_callee","success","dadosParaAtualizar","updatedUserData","_context","institutoId","grupoAcessoId","post","sent","setItem","$root","$emit","registarLogAcesso","carregaLogoSistema","atualizarInformacoesTelaPrincipal","stop","_x","_this4","_callee3","navegadorUtilizado","dadosLogAcesso","_context3","detectarNavegador","email","ip","window","globalIP","descricao","$router","go","_callee4","_context4","abrupt","stringify","logo","logoMarca","logoRelatorio","logoCalculadora","logos","component","totalizadorContratoPendente","statisticsOrder","chartOptions","series","totalizadorContratoConsolidado","$barColor","BCard","BRow","BCol","VueApexCharts","isBusy","pesquisar","tipoOpcoes","perPage","currentPage","dataInicial","dataFinal","chart","stacked","toolbar","show","grid","padding","left","right","top","bottom","plotOptions","bar","horizontal","columnWidth","startingShape","colors","backgroundBarColors","backgroundBarRadius","legend","dataLabels","enabled","$themeColors","warning","xaxis","labels","axisBorder","axisTicks","yaxis","tooltip","carregarGrid","$on","institutoSelecionado","totalPropostas","statisticsProfit","valorMedio","$trackBgColor","zoom","borderColor","strokeDashArray","lines","stroke","width","info","markers","strokeColors","strokeWidth","strokeOpacity","fillOpacity","discrete","seriesIndex","dataPointIndex","fillColor","strokeColor","shape","radius","hover","style","fontSize","Number","formatarValor","valorTotalPropostas","class","totalUser","totalTomador","totalOrgao","totalSimulacao","BCardHeader","BCardTitle","BCardText","BCardBody","BMedia","BAvatar","BMediaAside","BMediaBody","dadosUser","dadosTomador","dadosOrgao","dadosSimulacao","$message","CardStatisticOrderChart","CardStatisticProfitChart","CardStatisticsGroup","subscribersGained","revenueGenerated","quarterlySales","ordersRecevied","siteTraffic","activeUsers","newsletter","created","atualizarTaxas","_atualizarTaxas","carregaIndice","calcularTaxas","salvarCalculo","t0","_x2","_carregaIndice","tipoIndiceSelecionado","taxaSemFormatar","tipoIndice","taxaAcumulado","replace","taxaIndiceInflacionario","taxaIndiceInflacionarioMensal","taxa","calculaJurosAnual","_x3","_calculaJurosAnual","taxaEmprestimoMensal","formula","escopo","formatarParaNumber","taxaEmprestimoAnual","_x4","_calcularTaxas","jurosAtuarial","taxaAdministrativa","taxaOscilacaoRiscos","taxaFundoGarantia","calculoDaTaxaDeOportunidade","jurosAoAno","B","D","taxaDeOportunidade","_x5","_salvarCalculo","_callee5","_context5","put","CardStatistic","SelecionarInstituto","itensCarregados","sessionStorage","userDataComInstituto","isLoaded","configuraModalSelecionarInstituto","atualizarIndices","hide","createParserClass","Parser","writable","isParser","getAll","getAllAsMap","remove","delete","clear","createColumnTransform","lastDimToZeroBase","isNumericNode","isConstantExpression","createSimplify","removeParens","transform","path","SUPPORTED_CONSTANTS","_canonicalizeRule","ruleObject","newRule","lr","leftExpandsym","nonCommutative","_getExpandPlaceholderSymbol","expandsym","expanded","expandedNC1","expandedNC2","_buildRules","ruleSet","rule","ruleType","assuming","repeat","imposeContext","addition","_lastsym","debug","consoleDebug","visited","laststr","rulestr","applyRule","newstr","mapRule","nodes","resNodes","newNode","mergedContext","newContent","newItems","newObj","newIndex","newDims","changed","newProps","repl","matches","_ruleMatch","placeholders","getSplits","rightArgs","mergeMatch","match1","match2","_exactMatch","combineChildMatches","list1","list2","i1","i2","mergeChildMatches","childMatches","sets","uniqueSets","unique","isSplit","splits","splitMatches","matchSet","childMatch","leftMatch","rightMatch","createConditionalNode","testCondition","condition","ConditionalNode","trueExpr","falseExpr","evalCondition","evalTrueExpr","evalFalseExpr","conditionPrecedence","truePrecedence","falsePrecedence","createParse","RangeNode","RelationalNode","parseStart","expressions","parseMultiple","extraNodes","elem","TOKENTYPE","NULL","DELIMITER","NUMBER","SYMBOL","UNKNOWN","DELIMITERS","'","NAMED_DELIMITERS","in","CONSTANTS","NUMERIC_CONSTANTS","ESCAPE_CHARACTERS","b","initialState","comment","token","tokenType","nestingLevel","conditionalLevel","currentString","state","substr","currentCharacter","prevCharacter","nextCharacter","getToken","isWhitespace","c1","c2","c3","isDigitDot","isHexDigit","isDigit","isDecimalMark","createSyntaxError","isAlpha","getTokenSkipNewline","openParams","closeParams","parseBlock","createError","parseAssignment","valid","parseConditional","parseLogicalOr","parseLogicalXor","parseLogicalAnd","parseBitwiseOr","parseBitwiseXor","parseBitwiseAnd","parseRelational","parseShift","conditionals","operators","cond","c","parseConversion","parseRange","parseAddSubtract","parseMultiplyDivide","rightNode","parseImplicitMultiplication","parseRule2","parsePercentage","tokenStates","parseUnary","parsePow","parseLeftHandOperators","parseCustomNodes","parseAccessors","CustomNode","parseSymbol","parseString","isPropertyName","parseStringToken","parseMatrix","quote","char","escapeChar","fromCharCode","parseInt","rows","cols","parseRow","parseObject","len","parseNumber","numberStr","parseParentheses","parseEnd","col","message","cPrev","cNext","isValidLatinOrGreek","isValidMathSymbol","high","low","createChainClass","Chain","createProxy","chainify","createLazyProxy","resolver","isTypedFunction","sigObject","implementation","isChain","excludedNames","docs","classes","createRangeNode","startPrecedence","stepPrecedence","endPrecedence","endSymbols","evalStart","evalEnd","evalStep","createParser","createHelp","any","search","searchName","searchText","formatarCompetencia","anoMes","ano","mes","mesNome","obterMesNome","isObject","_typeof","isToday","date","today","Date","getDate","getMonth","getFullYear","reviver","chain","parser","addScalar","equalScalar","multiplyScalar","subtractScalar","divideScalar","Range","DenseMatrix","SparseMatrix","ImmutableDenseMatrix","FibonacciHeap","Spa","createMinTransform","compileInlineExpression","subScope","eq","createPrintTransform","_convertTemplateToZeroBasedIndex","parts","part","createSumTransform","createRelationalNode","operatorMap","compiled","evalLhs","evalRhs","condFn","paramStrings","paramPrecedence","ret","bind","el","binding","props","event","transition","setProps","addEventListener","rippler","bg","color","zIndex","targetBorder","getComputedStyle","rect","getBoundingClientRect","offsetWidth","height","offsetHeight","dx","clientX","dy","clientY","maxX","maxY","border","ripple","document","createElement","rippleContainer","className","marginTop","marginLeft","borderRadius","pointerEvents","position","backgroundColor","overflow","storedTargetPosition","clearRipple","setTimeout","parentNode","removeChild","removeEventListener","clearPosition","childNodes","appendChild","borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius","direction","createReviver","constructor","createArrayNode","evalItems","asMatrix","evalItem","itemsToTex","nested","mixedItems","itemsFormRow","itemSep","itemsTex","latexSymbols","Alpha","alpha","Beta","beta","Gamma","Delta","delta","Epsilon","epsilon","varepsilon","Zeta","Eta","eta","Theta","theta","vartheta","Iota","iota","Kappa","kappa","varkappa","Lambda","lambda","Mu","mu","Nu","nu","Xi","xi","Omicron","omicron","Pi","varpi","Rho","rho","varrho","Sigma","sigma","varsigma","Tau","Upsilon","upsilon","Phi","varphi","Chi","chi","Psi","psi","Omega","omega","inf","Inf","infinity","oo","latexOperators","latexFunctions","1","2","0","defaultTemplate","latexUnits","deg","escapeLatex","toSymbol","createSymbolicEqual","_symbolicEqual","e1","e2","simplified","createChain","associativeWith","unwrapParen","_node","getPrecedence","identifier","leftArg","getAssociativity","isAssociativeWith","nodeA","nodeB","a","identifierA","identifierB","getOperator","group","createVarianceTransform","createNode","_validateScope","_traverse","_transform","replacement","traverse","other","_getCustomString","_toTex","createSimplifyCore","node0","node1","nodeT","nodeF","isAlwaysBoolean","includes","_simplifyCore","nodeToSimplify","simpChild","childCount","seclast","a0","finish","_a","a1"],"mappings":"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,aACAn6B,gBACAC,gBACAm6B,aACA/B,cACAn4B,gBACAE,cACAV,OAAA,OACAw6B,qBACAlvB,OAAA,SACAvL,MAAA,WAES0E,GAAU,eAAc,CACjCxE,SACAF,MAAA,WAES01B,GAAO,eAAgB,CAChCx1B,WAES0oB,GAAY,eAAgB,CACrC1oB,SACAF,MAAA,WAESgpB,GAAe,eAAmB,CAC3CoM,gBACAsF,aACAn6B,gBACAC,gBACAm6B,aACA/B,cACAn4B,gBACAC,mBACAC,cACA4L,IAAA,QACAod,OAAA,SACAvpB,MAAA,SACAC,OAAA,SACAuqB,SAAA,SACA1qB,SACA8qB,IAAA,SACAxf,SAAA,SACAxL,MAAA,WAES2E,GAAW,eAAe,CACnCzE,SACAF,MAAA,WAESusB,GAAO,eAAW,CAC3BmJ,QACA+E,qBACAz6B,MAAA,WAES+1C,GAAS,eAAkB,CACpCpxC,cAESxE,GAAW,eAAe,CACnCsL,UAAA,QACAwY,SAAA,SACAmR,gBACAsF,aACAn6B,gBACAC,gBACAm6B,aACA/B,cACAn4B,gBACAC,mBACAC,cACA4L,IAAA,QACAtM,OAAA,OACA0pB,OAAA,SACAvpB,MAAA,SACAC,OAAA,SACAo6B,qBACAlvB,OAAA,SACAqf,SAAA,SACA1qB,SACA8qB,IAAA,SACAlC,WACAC,oBACAC,gBACAxd,SAAA,SACAxL,MAAA,WAESipB,GAAgB,eAAoB,CAC7CxoB,gBACAP,SACAC,YACAH,MAAA,WAESqlD,GAAS,eAAa,CAC/BtP,UACA/1C,MAAA,WAESkpB,GAAc,eAAkB,CACzCzd,UAAA,QACAwY,SAAA,SACAmR,gBACAsF,aACAn6B,gBACAC,gBACAm6B,aACA/B,cACAn4B,gBACAC,mBACAC,cACA4L,IAAA,QACAtM,OAAA,OACA0pB,OAAA,SACAvpB,MAAA,SACAC,OAAA,SACAo6B,qBACAlvB,OAAA,SACAqf,SAAA,SACA1qB,SACA8qB,IAAA,SACA7qB,YACA4oB,oBACAC,gBACAxd,SAAA,SACAxL,MAAA,WAES0B,GAAa,eAAiB,CACvCnB,gBACAC,gBACAC,gBACAC,mBACAC,cACAV,OAAA,OACAG,MAAA,SACAC,OAAA,SACAC,QAAA,SACAJ,SACAC,YACAH,MAAA,WAEF,IAASmF,GAAM,CACbuF,EAAA,SACA4Z,MAAO,QACPmC,cAAA,SACA1jB,EAAA,SACAwhB,SAAU,QACVE,KAAA,QACAE,OAAA,QACAC,IAAK,QACLC,KAAM,QACNG,IAAA,SACAC,QAAA,QACA2C,cAAA,SACAzC,IAAA,SACAC,KAAM,QACN,EAAK,SACLC,QAAA,SACA6B,aAAA,SACA1C,IAAA,QACAM,GAAA,SACA5e,SAAA,SACAi/C,WACAjgC,MAAA,QACAllB,MAAA,SACAsrB,UAAA,SACA,GAAM,SACNrE,gBAAA,SACAsC,IAAA,QACAwI,KAAA,QACAE,KAAA,QACAE,KAAA,QACAmzB,UAAA,QACAzhD,IAAA,QACAyuB,MAAA,QACAE,MAAA,QACAC,KAAA,QACAC,MAAA,QACAjnB,UAAA,QACAigB,OAAA,QACA5H,QAAA,SACArgB,MAAA,SACA0rB,aAAA,SACApL,QAAA,SACAsI,KAAA,SACAuG,IAAA,SACAE,IAAA,SACAE,IAAA,SACAtJ,KAAA,SACA67B,YAAA,SACAn0B,IAAA,SACArH,IAAA,SACAE,MAAA,SACAhmB,OAAA,SACAsC,QAAA,SACAitB,OAAA,SACApG,kBAAA,SACAuG,IAAA,SACArH,GAAA,SACAzhB,UAAA,SACAgpB,WAAA,SACAG,WAAA,SACA3zB,OAAA,SACAqkB,MAAA,QACA8K,OAAA,SACA9E,MAAA,SACAF,KAAA,SACA5mB,IAAA,SACA4hD,eAAA,SACA74B,IAAA,SACA9nB,OAAA,SACA6uB,IAAA,SACA/D,WAAA,SACAuE,MAAA,SACAtE,OAAA,SACApnB,GAAA,SACA0qB,IAAA,SACAhI,KAAA,SACAkI,IAAA,SACAjP,UAAA,SACAiH,OAAA,SACAniB,OAAA,SACAw8C,eAAA,SACAnyB,IAAA,SACAa,OAAA,SACAnC,MAAA,QACAI,MAAA,QACApwB,MAAA,QACAqwB,KAAA,QACAoB,IAAA,QACA2xB,SACAh2B,oBAAA,SACAyD,KAAA,SACAI,KAAA,SACAW,MAAA,SACAK,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","file":"js/chunk-6ecb7e69.0acf7f62.js","sourcesContent":["import { IndexError } from '../../../error/IndexError.js';\n\n/**\n * Transform zero-based indices to one-based indices in errors\n * @param {Error} err\n * @returns {Error | IndexError} Returns the transformed error\n */\nexport function errorTransform(err) {\n if (err && err.isIndexError) {\n return new IndexError(err.index + 1, err.min + 1, err.max !== undefined ? err.max + 1 : undefined);\n }\n return err;\n}","import { isConstantNode, typeOf } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'derivative';\nvar dependencies = ['typed', 'config', 'parse', 'simplify', 'equal', 'isZero', 'numeric', 'ConstantNode', 'FunctionNode', 'OperatorNode', 'ParenthesisNode', 'SymbolNode'];\nexport var createDerivative = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n parse,\n simplify,\n equal,\n isZero,\n numeric,\n ConstantNode,\n FunctionNode,\n OperatorNode,\n ParenthesisNode,\n SymbolNode\n } = _ref;\n /**\n * Takes the derivative of an expression expressed in parser Nodes.\n * The derivative will be taken over the supplied variable in the\n * second parameter. If there are multiple variables in the expression,\n * it will return a partial derivative.\n *\n * This uses rules of differentiation which can be found here:\n *\n * - [Differentiation rules (Wikipedia)](https://en.wikipedia.org/wiki/Differentiation_rules)\n *\n * Syntax:\n *\n * math.derivative(expr, variable)\n * math.derivative(expr, variable, options)\n *\n * Examples:\n *\n * math.derivative('x^2', 'x') // Node '2 * x'\n * math.derivative('x^2', 'x', {simplify: false}) // Node '2 * 1 * x ^ (2 - 1)'\n * math.derivative('sin(2x)', 'x')) // Node '2 * cos(2 * x)'\n * math.derivative('2*x', 'x').evaluate() // number 2\n * math.derivative('x^2', 'x').evaluate({x: 4}) // number 8\n * const f = math.parse('x^2')\n * const x = math.parse('x')\n * math.derivative(f, x) // Node {2 * x}\n *\n * See also:\n *\n * simplify, parse, evaluate\n *\n * @param {Node | string} expr The expression to differentiate\n * @param {SymbolNode | string} variable The variable over which to differentiate\n * @param {{simplify: boolean}} [options]\n * There is one option available, `simplify`, which\n * is true by default. When false, output will not\n * be simplified.\n * @return {ConstantNode | SymbolNode | ParenthesisNode | FunctionNode | OperatorNode} The derivative of `expr`\n */\n function plainDerivative(expr, variable) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n simplify: true\n };\n var constNodes = {};\n constTag(constNodes, expr, variable.name);\n var res = _derivative(expr, constNodes);\n return options.simplify ? simplify(res) : res;\n }\n typed.addConversion({\n from: 'identifier',\n to: 'SymbolNode',\n convert: parse\n });\n var derivative = typed(name, {\n 'Node, SymbolNode': plainDerivative,\n 'Node, SymbolNode, Object': plainDerivative\n\n /* TODO: implement and test syntax with order of derivatives -> implement as an option {order: number}\n 'Node, SymbolNode, ConstantNode': function (expr, variable, {order}) {\n let res = expr\n for (let i = 0; i < order; i++) {\n let constNodes = {}\n constTag(constNodes, expr, variable.name)\n res = _derivative(res, constNodes)\n }\n return res\n }\n */\n });\n\n typed.removeConversion({\n from: 'identifier',\n to: 'SymbolNode',\n convert: parse\n });\n derivative._simplify = true;\n derivative.toTex = function (deriv) {\n return _derivTex.apply(null, deriv.args);\n };\n\n // FIXME: move the toTex method of derivative to latex.js. Difficulty is that it relies on parse.\n // NOTE: the optional \"order\" parameter here is currently unused\n var _derivTex = typed('_derivTex', {\n 'Node, SymbolNode': function NodeSymbolNode(expr, x) {\n if (isConstantNode(expr) && typeOf(expr.value) === 'string') {\n return _derivTex(parse(expr.value).toString(), x.toString(), 1);\n } else {\n return _derivTex(expr.toTex(), x.toString(), 1);\n }\n },\n 'Node, ConstantNode': function NodeConstantNode(expr, x) {\n if (typeOf(x.value) === 'string') {\n return _derivTex(expr, parse(x.value));\n } else {\n throw new Error(\"The second parameter to 'derivative' is a non-string constant\");\n }\n },\n 'Node, SymbolNode, ConstantNode': function NodeSymbolNodeConstantNode(expr, x, order) {\n return _derivTex(expr.toString(), x.name, order.value);\n },\n 'string, string, number': function stringStringNumber(expr, x, order) {\n var d;\n if (order === 1) {\n d = '{d\\\\over d' + x + '}';\n } else {\n d = '{d^{' + order + '}\\\\over d' + x + '^{' + order + '}}';\n }\n return d + \"\\\\left[\".concat(expr, \"\\\\right]\");\n }\n });\n\n /**\n * Does a depth-first search on the expression tree to identify what Nodes\n * are constants (e.g. 2 + 2), and stores the ones that are constants in\n * constNodes. Classification is done as follows:\n *\n * 1. ConstantNodes are constants.\n * 2. If there exists a SymbolNode, of which we are differentiating over,\n * in the subtree it is not constant.\n *\n * @param {Object} constNodes Holds the nodes that are constant\n * @param {ConstantNode | SymbolNode | ParenthesisNode | FunctionNode | OperatorNode} node\n * @param {string} varName Variable that we are differentiating\n * @return {boolean} if node is constant\n */\n // TODO: can we rewrite constTag into a pure function?\n var constTag = typed('constTag', {\n 'Object, ConstantNode, string': function ObjectConstantNodeString(constNodes, node) {\n constNodes[node] = true;\n return true;\n },\n 'Object, SymbolNode, string': function ObjectSymbolNodeString(constNodes, node, varName) {\n // Treat other variables like constants. For reasoning, see:\n // https://en.wikipedia.org/wiki/Partial_derivative\n if (node.name !== varName) {\n constNodes[node] = true;\n return true;\n }\n return false;\n },\n 'Object, ParenthesisNode, string': function ObjectParenthesisNodeString(constNodes, node, varName) {\n return constTag(constNodes, node.content, varName);\n },\n 'Object, FunctionAssignmentNode, string': function ObjectFunctionAssignmentNodeString(constNodes, node, varName) {\n if (node.params.indexOf(varName) === -1) {\n constNodes[node] = true;\n return true;\n }\n return constTag(constNodes, node.expr, varName);\n },\n 'Object, FunctionNode | OperatorNode, string': function ObjectFunctionNodeOperatorNodeString(constNodes, node, varName) {\n if (node.args.length > 0) {\n var isConst = constTag(constNodes, node.args[0], varName);\n for (var i = 1; i < node.args.length; ++i) {\n isConst = constTag(constNodes, node.args[i], varName) && isConst;\n }\n if (isConst) {\n constNodes[node] = true;\n return true;\n }\n }\n return false;\n }\n });\n\n /**\n * Applies differentiation rules.\n *\n * @param {ConstantNode | SymbolNode | ParenthesisNode | FunctionNode | OperatorNode} node\n * @param {Object} constNodes Holds the nodes that are constant\n * @return {ConstantNode | SymbolNode | ParenthesisNode | FunctionNode | OperatorNode} The derivative of `expr`\n */\n var _derivative = typed('_derivative', {\n 'ConstantNode, Object': function ConstantNodeObject(node) {\n return createConstantNode(0);\n },\n 'SymbolNode, Object': function SymbolNodeObject(node, constNodes) {\n if (constNodes[node] !== undefined) {\n return createConstantNode(0);\n }\n return createConstantNode(1);\n },\n 'ParenthesisNode, Object': function ParenthesisNodeObject(node, constNodes) {\n return new ParenthesisNode(_derivative(node.content, constNodes));\n },\n 'FunctionAssignmentNode, Object': function FunctionAssignmentNodeObject(node, constNodes) {\n if (constNodes[node] !== undefined) {\n return createConstantNode(0);\n }\n return _derivative(node.expr, constNodes);\n },\n 'FunctionNode, Object': function FunctionNodeObject(node, constNodes) {\n if (node.args.length !== 1) {\n funcArgsCheck(node);\n }\n if (constNodes[node] !== undefined) {\n return createConstantNode(0);\n }\n var arg0 = node.args[0];\n var arg1;\n var div = false; // is output a fraction?\n var negative = false; // is output negative?\n\n var funcDerivative;\n switch (node.name) {\n case 'cbrt':\n // d/dx(cbrt(x)) = 1 / (3x^(2/3))\n div = true;\n funcDerivative = new OperatorNode('*', 'multiply', [createConstantNode(3), new OperatorNode('^', 'pow', [arg0, new OperatorNode('/', 'divide', [createConstantNode(2), createConstantNode(3)])])]);\n break;\n case 'sqrt':\n case 'nthRoot':\n // d/dx(sqrt(x)) = 1 / (2*sqrt(x))\n if (node.args.length === 1) {\n div = true;\n funcDerivative = new OperatorNode('*', 'multiply', [createConstantNode(2), new FunctionNode('sqrt', [arg0])]);\n } else if (node.args.length === 2) {\n // Rearrange from nthRoot(x, a) -> x^(1/a)\n arg1 = new OperatorNode('/', 'divide', [createConstantNode(1), node.args[1]]);\n\n // Is a variable?\n constNodes[arg1] = constNodes[node.args[1]];\n return _derivative(new OperatorNode('^', 'pow', [arg0, arg1]), constNodes);\n }\n break;\n case 'log10':\n arg1 = createConstantNode(10);\n /* fall through! */\n case 'log':\n if (!arg1 && node.args.length === 1) {\n // d/dx(log(x)) = 1 / x\n funcDerivative = arg0.clone();\n div = true;\n } else if (node.args.length === 1 && arg1 || node.args.length === 2 && constNodes[node.args[1]] !== undefined) {\n // d/dx(log(x, c)) = 1 / (x*ln(c))\n funcDerivative = new OperatorNode('*', 'multiply', [arg0.clone(), new FunctionNode('log', [arg1 || node.args[1]])]);\n div = true;\n } else if (node.args.length === 2) {\n // d/dx(log(f(x), g(x))) = d/dx(log(f(x)) / log(g(x)))\n return _derivative(new OperatorNode('/', 'divide', [new FunctionNode('log', [arg0]), new FunctionNode('log', [node.args[1]])]), constNodes);\n }\n break;\n case 'pow':\n constNodes[arg1] = constNodes[node.args[1]];\n // Pass to pow operator node parser\n return _derivative(new OperatorNode('^', 'pow', [arg0, node.args[1]]), constNodes);\n case 'exp':\n // d/dx(e^x) = e^x\n funcDerivative = new FunctionNode('exp', [arg0.clone()]);\n break;\n case 'sin':\n // d/dx(sin(x)) = cos(x)\n funcDerivative = new FunctionNode('cos', [arg0.clone()]);\n break;\n case 'cos':\n // d/dx(cos(x)) = -sin(x)\n funcDerivative = new OperatorNode('-', 'unaryMinus', [new FunctionNode('sin', [arg0.clone()])]);\n break;\n case 'tan':\n // d/dx(tan(x)) = sec(x)^2\n funcDerivative = new OperatorNode('^', 'pow', [new FunctionNode('sec', [arg0.clone()]), createConstantNode(2)]);\n break;\n case 'sec':\n // d/dx(sec(x)) = sec(x)tan(x)\n funcDerivative = new OperatorNode('*', 'multiply', [node, new FunctionNode('tan', [arg0.clone()])]);\n break;\n case 'csc':\n // d/dx(csc(x)) = -csc(x)cot(x)\n negative = true;\n funcDerivative = new OperatorNode('*', 'multiply', [node, new FunctionNode('cot', [arg0.clone()])]);\n break;\n case 'cot':\n // d/dx(cot(x)) = -csc(x)^2\n negative = true;\n funcDerivative = new OperatorNode('^', 'pow', [new FunctionNode('csc', [arg0.clone()]), createConstantNode(2)]);\n break;\n case 'asin':\n // d/dx(asin(x)) = 1 / sqrt(1 - x^2)\n div = true;\n funcDerivative = new FunctionNode('sqrt', [new OperatorNode('-', 'subtract', [createConstantNode(1), new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)])])]);\n break;\n case 'acos':\n // d/dx(acos(x)) = -1 / sqrt(1 - x^2)\n div = true;\n negative = true;\n funcDerivative = new FunctionNode('sqrt', [new OperatorNode('-', 'subtract', [createConstantNode(1), new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)])])]);\n break;\n case 'atan':\n // d/dx(atan(x)) = 1 / (x^2 + 1)\n div = true;\n funcDerivative = new OperatorNode('+', 'add', [new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)]), createConstantNode(1)]);\n break;\n case 'asec':\n // d/dx(asec(x)) = 1 / (|x|*sqrt(x^2 - 1))\n div = true;\n funcDerivative = new OperatorNode('*', 'multiply', [new FunctionNode('abs', [arg0.clone()]), new FunctionNode('sqrt', [new OperatorNode('-', 'subtract', [new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)]), createConstantNode(1)])])]);\n break;\n case 'acsc':\n // d/dx(acsc(x)) = -1 / (|x|*sqrt(x^2 - 1))\n div = true;\n negative = true;\n funcDerivative = new OperatorNode('*', 'multiply', [new FunctionNode('abs', [arg0.clone()]), new FunctionNode('sqrt', [new OperatorNode('-', 'subtract', [new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)]), createConstantNode(1)])])]);\n break;\n case 'acot':\n // d/dx(acot(x)) = -1 / (x^2 + 1)\n div = true;\n negative = true;\n funcDerivative = new OperatorNode('+', 'add', [new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)]), createConstantNode(1)]);\n break;\n case 'sinh':\n // d/dx(sinh(x)) = cosh(x)\n funcDerivative = new FunctionNode('cosh', [arg0.clone()]);\n break;\n case 'cosh':\n // d/dx(cosh(x)) = sinh(x)\n funcDerivative = new FunctionNode('sinh', [arg0.clone()]);\n break;\n case 'tanh':\n // d/dx(tanh(x)) = sech(x)^2\n funcDerivative = new OperatorNode('^', 'pow', [new FunctionNode('sech', [arg0.clone()]), createConstantNode(2)]);\n break;\n case 'sech':\n // d/dx(sech(x)) = -sech(x)tanh(x)\n negative = true;\n funcDerivative = new OperatorNode('*', 'multiply', [node, new FunctionNode('tanh', [arg0.clone()])]);\n break;\n case 'csch':\n // d/dx(csch(x)) = -csch(x)coth(x)\n negative = true;\n funcDerivative = new OperatorNode('*', 'multiply', [node, new FunctionNode('coth', [arg0.clone()])]);\n break;\n case 'coth':\n // d/dx(coth(x)) = -csch(x)^2\n negative = true;\n funcDerivative = new OperatorNode('^', 'pow', [new FunctionNode('csch', [arg0.clone()]), createConstantNode(2)]);\n break;\n case 'asinh':\n // d/dx(asinh(x)) = 1 / sqrt(x^2 + 1)\n div = true;\n funcDerivative = new FunctionNode('sqrt', [new OperatorNode('+', 'add', [new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)]), createConstantNode(1)])]);\n break;\n case 'acosh':\n // d/dx(acosh(x)) = 1 / sqrt(x^2 - 1); XXX potentially only for x >= 1 (the real spectrum)\n div = true;\n funcDerivative = new FunctionNode('sqrt', [new OperatorNode('-', 'subtract', [new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)]), createConstantNode(1)])]);\n break;\n case 'atanh':\n // d/dx(atanh(x)) = 1 / (1 - x^2)\n div = true;\n funcDerivative = new OperatorNode('-', 'subtract', [createConstantNode(1), new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)])]);\n break;\n case 'asech':\n // d/dx(asech(x)) = -1 / (x*sqrt(1 - x^2))\n div = true;\n negative = true;\n funcDerivative = new OperatorNode('*', 'multiply', [arg0.clone(), new FunctionNode('sqrt', [new OperatorNode('-', 'subtract', [createConstantNode(1), new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)])])])]);\n break;\n case 'acsch':\n // d/dx(acsch(x)) = -1 / (|x|*sqrt(x^2 + 1))\n div = true;\n negative = true;\n funcDerivative = new OperatorNode('*', 'multiply', [new FunctionNode('abs', [arg0.clone()]), new FunctionNode('sqrt', [new OperatorNode('+', 'add', [new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)]), createConstantNode(1)])])]);\n break;\n case 'acoth':\n // d/dx(acoth(x)) = -1 / (1 - x^2)\n div = true;\n negative = true;\n funcDerivative = new OperatorNode('-', 'subtract', [createConstantNode(1), new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)])]);\n break;\n case 'abs':\n // d/dx(abs(x)) = abs(x)/x\n funcDerivative = new OperatorNode('/', 'divide', [new FunctionNode(new SymbolNode('abs'), [arg0.clone()]), arg0.clone()]);\n break;\n case 'gamma': // Needs digamma function, d/dx(gamma(x)) = gamma(x)digamma(x)\n default:\n throw new Error('Function \"' + node.name + '\" is not supported by derivative, or a wrong number of arguments is passed');\n }\n var op, func;\n if (div) {\n op = '/';\n func = 'divide';\n } else {\n op = '*';\n func = 'multiply';\n }\n\n /* Apply chain rule to all functions:\n F(x) = f(g(x))\n F'(x) = g'(x)*f'(g(x)) */\n var chainDerivative = _derivative(arg0, constNodes);\n if (negative) {\n chainDerivative = new OperatorNode('-', 'unaryMinus', [chainDerivative]);\n }\n return new OperatorNode(op, func, [chainDerivative, funcDerivative]);\n },\n 'OperatorNode, Object': function OperatorNodeObject(node, constNodes) {\n if (constNodes[node] !== undefined) {\n return createConstantNode(0);\n }\n if (node.op === '+') {\n // d/dx(sum(f(x)) = sum(f'(x))\n return new OperatorNode(node.op, node.fn, node.args.map(function (arg) {\n return _derivative(arg, constNodes);\n }));\n }\n if (node.op === '-') {\n // d/dx(+/-f(x)) = +/-f'(x)\n if (node.isUnary()) {\n return new OperatorNode(node.op, node.fn, [_derivative(node.args[0], constNodes)]);\n }\n\n // Linearity of differentiation, d/dx(f(x) +/- g(x)) = f'(x) +/- g'(x)\n if (node.isBinary()) {\n return new OperatorNode(node.op, node.fn, [_derivative(node.args[0], constNodes), _derivative(node.args[1], constNodes)]);\n }\n }\n if (node.op === '*') {\n // d/dx(c*f(x)) = c*f'(x)\n var constantTerms = node.args.filter(function (arg) {\n return constNodes[arg] !== undefined;\n });\n if (constantTerms.length > 0) {\n var nonConstantTerms = node.args.filter(function (arg) {\n return constNodes[arg] === undefined;\n });\n var nonConstantNode = nonConstantTerms.length === 1 ? nonConstantTerms[0] : new OperatorNode('*', 'multiply', nonConstantTerms);\n var newArgs = constantTerms.concat(_derivative(nonConstantNode, constNodes));\n return new OperatorNode('*', 'multiply', newArgs);\n }\n\n // Product Rule, d/dx(f(x)*g(x)) = f'(x)*g(x) + f(x)*g'(x)\n return new OperatorNode('+', 'add', node.args.map(function (argOuter) {\n return new OperatorNode('*', 'multiply', node.args.map(function (argInner) {\n return argInner === argOuter ? _derivative(argInner, constNodes) : argInner.clone();\n }));\n }));\n }\n if (node.op === '/' && node.isBinary()) {\n var arg0 = node.args[0];\n var arg1 = node.args[1];\n\n // d/dx(f(x) / c) = f'(x) / c\n if (constNodes[arg1] !== undefined) {\n return new OperatorNode('/', 'divide', [_derivative(arg0, constNodes), arg1]);\n }\n\n // Reciprocal Rule, d/dx(c / f(x)) = -c(f'(x)/f(x)^2)\n if (constNodes[arg0] !== undefined) {\n return new OperatorNode('*', 'multiply', [new OperatorNode('-', 'unaryMinus', [arg0]), new OperatorNode('/', 'divide', [_derivative(arg1, constNodes), new OperatorNode('^', 'pow', [arg1.clone(), createConstantNode(2)])])]);\n }\n\n // Quotient rule, d/dx(f(x) / g(x)) = (f'(x)g(x) - f(x)g'(x)) / g(x)^2\n return new OperatorNode('/', 'divide', [new OperatorNode('-', 'subtract', [new OperatorNode('*', 'multiply', [_derivative(arg0, constNodes), arg1.clone()]), new OperatorNode('*', 'multiply', [arg0.clone(), _derivative(arg1, constNodes)])]), new OperatorNode('^', 'pow', [arg1.clone(), createConstantNode(2)])]);\n }\n if (node.op === '^' && node.isBinary()) {\n var _arg = node.args[0];\n var _arg2 = node.args[1];\n if (constNodes[_arg] !== undefined) {\n // If is secretly constant; 0^f(x) = 1 (in JS), 1^f(x) = 1\n if (isConstantNode(_arg) && (isZero(_arg.value) || equal(_arg.value, 1))) {\n return createConstantNode(0);\n }\n\n // d/dx(c^f(x)) = c^f(x)*ln(c)*f'(x)\n return new OperatorNode('*', 'multiply', [node, new OperatorNode('*', 'multiply', [new FunctionNode('log', [_arg.clone()]), _derivative(_arg2.clone(), constNodes)])]);\n }\n if (constNodes[_arg2] !== undefined) {\n if (isConstantNode(_arg2)) {\n // If is secretly constant; f(x)^0 = 1 -> d/dx(1) = 0\n if (isZero(_arg2.value)) {\n return createConstantNode(0);\n }\n // Ignore exponent; f(x)^1 = f(x)\n if (equal(_arg2.value, 1)) {\n return _derivative(_arg, constNodes);\n }\n }\n\n // Elementary Power Rule, d/dx(f(x)^c) = c*f'(x)*f(x)^(c-1)\n var powMinusOne = new OperatorNode('^', 'pow', [_arg.clone(), new OperatorNode('-', 'subtract', [_arg2, createConstantNode(1)])]);\n return new OperatorNode('*', 'multiply', [_arg2.clone(), new OperatorNode('*', 'multiply', [_derivative(_arg, constNodes), powMinusOne])]);\n }\n\n // Functional Power Rule, d/dx(f^g) = f^g*[f'*(g/f) + g'ln(f)]\n return new OperatorNode('*', 'multiply', [new OperatorNode('^', 'pow', [_arg.clone(), _arg2.clone()]), new OperatorNode('+', 'add', [new OperatorNode('*', 'multiply', [_derivative(_arg, constNodes), new OperatorNode('/', 'divide', [_arg2.clone(), _arg.clone()])]), new OperatorNode('*', 'multiply', [_derivative(_arg2, constNodes), new FunctionNode('log', [_arg.clone()])])])]);\n }\n throw new Error('Operator \"' + node.op + '\" is not supported by derivative, or a wrong number of arguments is passed');\n }\n });\n\n /**\n * Ensures the number of arguments for a function are correct,\n * and will throw an error otherwise.\n *\n * @param {FunctionNode} node\n */\n function funcArgsCheck(node) {\n // TODO add min, max etc\n if ((node.name === 'log' || node.name === 'nthRoot' || node.name === 'pow') && node.args.length === 2) {\n return;\n }\n\n // There should be an incorrect number of arguments if we reach here\n\n // Change all args to constants to avoid unidentified\n // symbol error when compiling function\n for (var i = 0; i < node.args.length; ++i) {\n node.args[i] = createConstantNode(0);\n }\n node.compile().evaluate();\n throw new Error('Function \"' + node.name + '\" is not supported by derivative, or a wrong number of arguments is passed');\n }\n\n /**\n * Helper function to create a constant node with a specific type\n * (number, BigNumber, Fraction)\n * @param {number} value\n * @param {string} [valueType]\n * @return {ConstantNode}\n */\n function createConstantNode(value, valueType) {\n return new ConstantNode(numeric(value, valueType || config.number));\n }\n return derivative;\n});","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { isNode } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'ParenthesisNode';\nvar dependencies = ['Node'];\nexport var createParenthesisNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n Node\n } = _ref;\n class ParenthesisNode extends Node {\n /**\n * @constructor ParenthesisNode\n * @extends {Node}\n * A parenthesis node describes manual parenthesis from the user input\n * @param {Node} content\n * @extends {Node}\n */\n constructor(content) {\n super();\n // validate input\n if (!isNode(content)) {\n throw new TypeError('Node expected for parameter \"content\"');\n }\n this.content = content;\n }\n get type() {\n return name;\n }\n get isParenthesisNode() {\n return true;\n }\n\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n _compile(math, argNames) {\n return this.content._compile(math, argNames);\n }\n\n /**\n * Get the content of the current Node.\n * @return {Node} content\n * @override\n **/\n getContent() {\n return this.content.getContent();\n }\n\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n forEach(callback) {\n callback(this.content, 'content', this);\n }\n\n /**\n * Create a new ParenthesisNode whose child is the result of calling\n * the provided callback function on the child of this node.\n * @param {function(child: Node, path: string, parent: Node) : Node} callback\n * @returns {ParenthesisNode} Returns a clone of the node\n */\n map(callback) {\n var content = callback(this.content, 'content', this);\n return new ParenthesisNode(content);\n }\n\n /**\n * Create a clone of this node, a shallow copy\n * @return {ParenthesisNode}\n */\n clone() {\n return new ParenthesisNode(this.content);\n }\n\n /**\n * Get string representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n _toString(options) {\n if (!options || options && !options.parenthesis || options && options.parenthesis === 'keep') {\n return '(' + this.content.toString(options) + ')';\n }\n return this.content.toString(options);\n }\n\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n toJSON() {\n return {\n mathjs: name,\n content: this.content\n };\n }\n\n /**\n * Instantiate an ParenthesisNode from its JSON representation\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"ParenthesisNode\", \"content\": ...}`,\n * where mathjs is optional\n * @returns {ParenthesisNode}\n */\n static fromJSON(json) {\n return new ParenthesisNode(json.content);\n }\n\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n toHTML(options) {\n if (!options || options && !options.parenthesis || options && options.parenthesis === 'keep') {\n return '(' + this.content.toHTML(options) + ')';\n }\n return this.content.toHTML(options);\n }\n\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n _toTex(options) {\n if (!options || options && !options.parenthesis || options && options.parenthesis === 'keep') {\n return \"\\\\left(\".concat(this.content.toTex(options), \"\\\\right)\");\n }\n return this.content.toTex(options);\n }\n }\n _defineProperty(ParenthesisNode, \"name\", name);\n return ParenthesisNode;\n}, {\n isClass: true,\n isNode: true\n});","import { isToday } from './utils'\r\n\r\nexport const kFormatter = (num) => (num > 999 ? `${(num / 1000).toFixed(1)}k` : num)\r\n\r\nexport const title = (value, replacer = ' ') => {\r\n if (!value) return ''\r\n const str = value.toString()\r\n\r\n const arr = str.split(replacer)\r\n const capitalizedArray = []\r\n arr.forEach((word) => {\r\n const capitalized = word.charAt(0).toUpperCase() + word.slice(1)\r\n capitalizedArray.push(capitalized)\r\n })\r\n return capitalizedArray.join(' ')\r\n}\r\n\r\nexport const avatarText = (value) => {\r\n if (!value) return ''\r\n const nameArray = value.split(' ')\r\n return nameArray.map((word) => word.charAt(0).toUpperCase()).join('')\r\n}\r\n\r\n/**\r\n * Format and return date in Humanize format\r\n * Intl docs: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/format\r\n * Intl Constructor: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat\r\n * @param {String} value date to format\r\n * @param {Object} formatting Intl object to format with\r\n */\r\nexport const formatDate = (value, formatting = { month: 'short', day: 'numeric', year: 'numeric' }) => {\r\n if (!value) return value\r\n return new Intl.DateTimeFormat('en-US', formatting).format(new Date(value))\r\n}\r\n\r\n/**\r\n * Return short human friendly month representation of date\r\n * Can also convert date to only time if date is of today (Better UX)\r\n * @param {String} value date to format\r\n * @param {Boolean} toTimeForCurrentDay Shall convert to time if day is today/current\r\n */\r\nexport const formatDateToMonthShort = (value, toTimeForCurrentDay = true) => {\r\n const date = new Date(value)\r\n let formatting = { month: 'short', day: 'numeric' }\r\n\r\n if (toTimeForCurrentDay && isToday(date)) {\r\n formatting = { hour: 'numeric', minute: 'numeric' }\r\n }\r\n\r\n return new Intl.DateTimeFormat('en-US', formatting).format(new Date(value))\r\n}\r\n\r\n// Strip all the tags from markup and return plain text\r\nexport const filterTags = (value) => value.replace(/<\\/?[^>]+(>|$)/g, '')\r\n","'use strict';\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar isRegExp = require('../internals/is-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar arraySlice = require('../internals/array-slice');\nvar callRegExpExec = require('../internals/regexp-exec-abstract');\nvar regexpExec = require('../internals/regexp-exec');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar fails = require('../internals/fails');\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\nvar MAX_UINT32 = 0xFFFFFFFF;\nvar min = Math.min;\nvar $push = [].push;\nvar exec = uncurryThis(/./.exec);\nvar push = uncurryThis($push);\nvar stringSlice = uncurryThis(''.slice);\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'.split(/(b)*/)[1] === 'c' ||\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n 'test'.split(/(?:)/, -1).length !== 4 ||\n 'ab'.split(/(?:ab)*/).length !== 2 ||\n '.'.split(/(.?)(.?)/).length !== 4 ||\n // eslint-disable-next-line regexp/no-empty-capturing-group, regexp/no-empty-group -- required for testing\n '.'.split(/()()/).length > 1 ||\n ''.split(/.?/).length\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = toString(requireObjectCoercible(this));\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (separator === undefined) return [string];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) {\n return call(nativeSplit, string, separator, lim);\n }\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = call(regexpExec, separatorCopy, string)) {\n lastIndex = separatorCopy.lastIndex;\n if (lastIndex > lastLastIndex) {\n push(output, stringSlice(string, lastLastIndex, match.index));\n if (match.length > 1 && match.index < string.length) apply($push, output, arraySlice(match, 1));\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= lim) break;\n }\n if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n }\n if (lastLastIndex === string.length) {\n if (lastLength || !exec(separatorCopy, '')) push(output, '');\n } else push(output, stringSlice(string, lastLastIndex));\n return output.length > lim ? arraySlice(output, 0, lim) : output;\n };\n // Chakra, V8\n } else if ('0'.split(undefined, 0).length) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : call(nativeSplit, this, separator, limit);\n };\n } else internalSplit = nativeSplit;\n\n return [\n // `String.prototype.split` method\n // https://tc39.es/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = isNullOrUndefined(separator) ? undefined : getMethod(separator, SPLIT);\n return splitter\n ? call(splitter, separator, O, limit)\n : call(internalSplit, toString(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (string, limit) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(internalSplit, rx, S, limit, internalSplit !== nativeSplit);\n\n if (res.done) return res.value;\n\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (UNSUPPORTED_Y ? 'g' : 'y');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = UNSUPPORTED_Y ? 0 : q;\n var z = callRegExpExec(splitter, UNSUPPORTED_Y ? stringSlice(S, q) : S);\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n push(A, stringSlice(S, p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n push(A, z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n push(A, stringSlice(S, p));\n return A;\n }\n ];\n}, !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC, UNSUPPORTED_Y);\n","import { errorTransform } from './utils/errorTransform.js';\nimport { factory } from '../../utils/factory.js';\nimport { createApply } from '../../function/matrix/apply.js';\nimport { isBigNumber, isNumber } from '../../utils/is.js';\nvar name = 'apply';\nvar dependencies = ['typed', 'isInteger'];\n\n/**\n * Attach a transform function to math.apply\n * Adds a property transform containing the transform function.\n *\n * This transform changed the last `dim` parameter of function apply\n * from one-based to zero based\n */\nexport var createApplyTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n isInteger\n } = _ref;\n var apply = createApply({\n typed,\n isInteger\n });\n\n // @see: comment of concat itself\n return typed('apply', {\n '...any': function any(args) {\n // change dim from one-based to zero-based\n var dim = args[1];\n if (isNumber(dim)) {\n args[1] = dim - 1;\n } else if (isBigNumber(dim)) {\n args[1] = dim.minus(1);\n }\n try {\n return apply.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});","import { createEmptyMap, assign } from './map.js';\n\n/**\n * Create a new scope which can access the parent scope,\n * but does not affect it when written. This is suitable for variable definitions\n * within a block node, or function definition.\n *\n * If parent scope has a createSubScope method, it delegates to that. Otherwise,\n * creates an empty map, and copies the parent scope to it, adding in\n * the remaining `args`.\n *\n * @param {Map} parentScope\n * @param {...any} args\n * @returns {Map}\n */\nexport function createSubScope(parentScope) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n if (typeof parentScope.createSubScope === 'function') {\n return assign(parentScope.createSubScope(), ...args);\n }\n return assign(createEmptyMap(), parentScope, ...args);\n}","import { factory } from '../../utils/factory.js';\nimport { errorTransform } from './utils/errorTransform.js';\nimport { createDiff } from '../../function/matrix/diff.js';\nimport { lastDimToZeroBase } from './utils/lastDimToZeroBase.js';\nvar name = 'diff';\nvar dependencies = ['typed', 'matrix', 'subtract', 'number', 'bignumber'];\nexport var createDiffTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n subtract,\n number,\n bignumber\n } = _ref;\n var diff = createDiff({\n typed,\n matrix,\n subtract,\n number,\n bignumber\n });\n\n /**\n * Attach a transform function to math.diff\n * Adds a property transform containing the transform function.\n *\n * This transform creates a range which includes the end value\n */\n return typed(name, {\n '...any': function any(args) {\n args = lastDimToZeroBase(args);\n try {\n return diff.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { isNode } from '../../utils/is.js';\nimport { keywords } from '../keywords.js';\nimport { escape } from '../../utils/string.js';\nimport { forEach, join } from '../../utils/array.js';\nimport { toSymbol } from '../../utils/latex.js';\nimport { getPrecedence } from '../operators.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'FunctionAssignmentNode';\nvar dependencies = ['typed', 'Node'];\nexport var createFunctionAssignmentNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n Node\n } = _ref;\n /**\n * Is parenthesis needed?\n * @param {Node} node\n * @param {Object} parenthesis\n * @param {string} implicit\n * @private\n */\n function needParenthesis(node, parenthesis, implicit) {\n var precedence = getPrecedence(node, parenthesis, implicit);\n var exprPrecedence = getPrecedence(node.expr, parenthesis, implicit);\n return parenthesis === 'all' || exprPrecedence !== null && exprPrecedence <= precedence;\n }\n class FunctionAssignmentNode extends Node {\n /**\n * @constructor FunctionAssignmentNode\n * @extends {Node}\n * Function assignment\n *\n * @param {string} name Function name\n * @param {string[] | Array.<{name: string, type: string}>} params\n * Array with function parameter names, or an\n * array with objects containing the name\n * and type of the parameter\n * @param {Node} expr The function expression\n */\n constructor(name, params, expr) {\n super();\n // validate input\n if (typeof name !== 'string') {\n throw new TypeError('String expected for parameter \"name\"');\n }\n if (!Array.isArray(params)) {\n throw new TypeError('Array containing strings or objects expected for parameter \"params\"');\n }\n if (!isNode(expr)) {\n throw new TypeError('Node expected for parameter \"expr\"');\n }\n if (keywords.has(name)) {\n throw new Error('Illegal function name, \"' + name + '\" is a reserved keyword');\n }\n var paramNames = new Set();\n for (var param of params) {\n var _name = typeof param === 'string' ? param : param.name;\n if (paramNames.has(_name)) {\n throw new Error(\"Duplicate parameter name \\\"\".concat(_name, \"\\\"\"));\n } else {\n paramNames.add(_name);\n }\n }\n this.name = name;\n this.params = params.map(function (param) {\n return param && param.name || param;\n });\n this.types = params.map(function (param) {\n return param && param.type || 'any';\n });\n this.expr = expr;\n }\n get type() {\n return name;\n }\n get isFunctionAssignmentNode() {\n return true;\n }\n\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n _compile(math, argNames) {\n var childArgNames = Object.create(argNames);\n forEach(this.params, function (param) {\n childArgNames[param] = true;\n });\n\n // compile the function expression with the child args\n var evalExpr = this.expr._compile(math, childArgNames);\n var name = this.name;\n var params = this.params;\n var signature = join(this.types, ',');\n var syntax = name + '(' + join(this.params, ', ') + ')';\n return function evalFunctionAssignmentNode(scope, args, context) {\n var signatures = {};\n signatures[signature] = function () {\n var childArgs = Object.create(args);\n for (var i = 0; i < params.length; i++) {\n childArgs[params[i]] = arguments[i];\n }\n return evalExpr(scope, childArgs, context);\n };\n var fn = typed(name, signatures);\n fn.syntax = syntax;\n scope.set(name, fn);\n return fn;\n };\n }\n\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n forEach(callback) {\n callback(this.expr, 'expr', this);\n }\n\n /**\n * Create a new FunctionAssignmentNode whose children are the results of\n * calling the provided callback function for each child of the original\n * node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {FunctionAssignmentNode} Returns a transformed copy of the node\n */\n map(callback) {\n var expr = this._ifNode(callback(this.expr, 'expr', this));\n return new FunctionAssignmentNode(this.name, this.params.slice(0), expr);\n }\n\n /**\n * Create a clone of this node, a shallow copy\n * @return {FunctionAssignmentNode}\n */\n clone() {\n return new FunctionAssignmentNode(this.name, this.params.slice(0), this.expr);\n }\n\n /**\n * get string representation\n * @param {Object} options\n * @return {string} str\n */\n _toString(options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var expr = this.expr.toString(options);\n if (needParenthesis(this, parenthesis, options && options.implicit)) {\n expr = '(' + expr + ')';\n }\n return this.name + '(' + this.params.join(', ') + ') = ' + expr;\n }\n\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n toJSON() {\n var types = this.types;\n return {\n mathjs: name,\n name: this.name,\n params: this.params.map(function (param, index) {\n return {\n name: param,\n type: types[index]\n };\n }),\n expr: this.expr\n };\n }\n\n /**\n * Instantiate an FunctionAssignmentNode from its JSON representation\n * @param {Object} json\n * An object structured like\n * ```\n * {\"mathjs\": \"FunctionAssignmentNode\",\n * name: ..., params: ..., expr: ...}\n * ```\n * where mathjs is optional\n * @returns {FunctionAssignmentNode}\n */\n static fromJSON(json) {\n return new FunctionAssignmentNode(json.name, json.params, json.expr);\n }\n\n /**\n * get HTML representation\n * @param {Object} options\n * @return {string} str\n */\n toHTML(options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var params = [];\n for (var i = 0; i < this.params.length; i++) {\n params.push('' + escape(this.params[i]) + '');\n }\n var expr = this.expr.toHTML(options);\n if (needParenthesis(this, parenthesis, options && options.implicit)) {\n expr = '(' + expr + ')';\n }\n return '' + escape(this.name) + '' + '(' + params.join(',') + ')' + '=' + expr;\n }\n\n /**\n * get LaTeX representation\n * @param {Object} options\n * @return {string} str\n */\n _toTex(options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var expr = this.expr.toTex(options);\n if (needParenthesis(this, parenthesis, options && options.implicit)) {\n expr = \"\\\\left(\".concat(expr, \"\\\\right)\");\n }\n return '\\\\mathrm{' + this.name + '}\\\\left(' + this.params.map(toSymbol).join(',') + '\\\\right):=' + expr;\n }\n }\n _defineProperty(FunctionAssignmentNode, \"name\", name);\n return FunctionAssignmentNode;\n}, {\n isClass: true,\n isNode: true\n});","import { deepMap } from '../../utils/collection.js';\nimport { factory } from '../../utils/factory.js';\nimport { createEmptyMap } from '../../utils/map.js';\nvar name = 'evaluate';\nvar dependencies = ['typed', 'parse'];\nexport var createEvaluate = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n parse\n } = _ref;\n /**\n * Evaluate an expression.\n *\n * Note the evaluating arbitrary expressions may involve security risks,\n * see [https://mathjs.org/docs/expressions/security.html](https://mathjs.org/docs/expressions/security.html) for more information.\n *\n * Syntax:\n *\n * math.evaluate(expr)\n * math.evaluate(expr, scope)\n * math.evaluate([expr1, expr2, expr3, ...])\n * math.evaluate([expr1, expr2, expr3, ...], scope)\n *\n * Example:\n *\n * math.evaluate('(2+3)/4') // 1.25\n * math.evaluate('sqrt(3^2 + 4^2)') // 5\n * math.evaluate('sqrt(-4)') // 2i\n * math.evaluate(['a=3', 'b=4', 'a*b']) // [3, 4, 12]\n *\n * let scope = {a:3, b:4}\n * math.evaluate('a * b', scope) // 12\n *\n * See also:\n *\n * parse, compile\n *\n * @param {string | string[] | Matrix} expr The expression to be evaluated\n * @param {Object} [scope] Scope to read/write variables\n * @return {*} The result of the expression\n * @throws {Error}\n */\n return typed(name, {\n string: function string(expr) {\n var scope = createEmptyMap();\n return parse(expr).compile().evaluate(scope);\n },\n 'string, Map | Object': function stringMapObject(expr, scope) {\n return parse(expr).compile().evaluate(scope);\n },\n 'Array | Matrix': function ArrayMatrix(expr) {\n var scope = createEmptyMap();\n return deepMap(expr, function (entry) {\n return parse(entry).compile().evaluate(scope);\n });\n },\n 'Array | Matrix, Map | Object': function ArrayMatrixMapObject(expr, scope) {\n return deepMap(expr, function (entry) {\n return parse(entry).compile().evaluate(scope);\n });\n }\n });\n});","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { isNode, isConstantNode, isOperatorNode, isParenthesisNode } from '../../utils/is.js';\nimport { map } from '../../utils/array.js';\nimport { escape } from '../../utils/string.js';\nimport { getSafeProperty, isSafeMethod } from '../../utils/customs.js';\nimport { getAssociativity, getPrecedence, isAssociativeWith, properties } from '../operators.js';\nimport { latexOperators } from '../../utils/latex.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'OperatorNode';\nvar dependencies = ['Node'];\nexport var createOperatorNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n Node\n } = _ref;\n /**\n * Returns true if the expression starts with a constant, under\n * the current parenthesization:\n * @param {Node} expression\n * @param {string} parenthesis\n * @return {boolean}\n */\n function startsWithConstant(expr, parenthesis) {\n var curNode = expr;\n if (parenthesis === 'auto') {\n while (isParenthesisNode(curNode)) curNode = curNode.content;\n }\n if (isConstantNode(curNode)) return true;\n if (isOperatorNode(curNode)) {\n return startsWithConstant(curNode.args[0], parenthesis);\n }\n return false;\n }\n\n /**\n * Calculate which parentheses are necessary. Gets an OperatorNode\n * (which is the root of the tree) and an Array of Nodes\n * (this.args) and returns an array where 'true' means that an argument\n * has to be enclosed in parentheses whereas 'false' means the opposite.\n *\n * @param {OperatorNode} root\n * @param {string} parenthesis\n * @param {Node[]} args\n * @param {boolean} latex\n * @return {boolean[]}\n * @private\n */\n function calculateNecessaryParentheses(root, parenthesis, implicit, args, latex) {\n // precedence of the root OperatorNode\n var precedence = getPrecedence(root, parenthesis, implicit);\n var associativity = getAssociativity(root, parenthesis);\n if (parenthesis === 'all' || args.length > 2 && root.getIdentifier() !== 'OperatorNode:add' && root.getIdentifier() !== 'OperatorNode:multiply') {\n return args.map(function (arg) {\n switch (arg.getContent().type) {\n // Nodes that don't need extra parentheses\n case 'ArrayNode':\n case 'ConstantNode':\n case 'SymbolNode':\n case 'ParenthesisNode':\n return false;\n default:\n return true;\n }\n });\n }\n var result;\n switch (args.length) {\n case 0:\n result = [];\n break;\n case 1:\n // unary operators\n {\n // precedence of the operand\n var operandPrecedence = getPrecedence(args[0], parenthesis, implicit, root);\n\n // handle special cases for LaTeX, where some of the parentheses aren't needed\n if (latex && operandPrecedence !== null) {\n var operandIdentifier;\n var rootIdentifier;\n if (parenthesis === 'keep') {\n operandIdentifier = args[0].getIdentifier();\n rootIdentifier = root.getIdentifier();\n } else {\n // Ignore Parenthesis Nodes when not in 'keep' mode\n operandIdentifier = args[0].getContent().getIdentifier();\n rootIdentifier = root.getContent().getIdentifier();\n }\n if (properties[precedence][rootIdentifier].latexLeftParens === false) {\n result = [false];\n break;\n }\n if (properties[operandPrecedence][operandIdentifier].latexParens === false) {\n result = [false];\n break;\n }\n }\n if (operandPrecedence === null) {\n // if the operand has no defined precedence, no parens are needed\n result = [false];\n break;\n }\n if (operandPrecedence <= precedence) {\n // if the operands precedence is lower, parens are needed\n result = [true];\n break;\n }\n\n // otherwise, no parens needed\n result = [false];\n }\n break;\n case 2:\n // binary operators\n {\n var lhsParens; // left hand side needs parenthesis?\n // precedence of the left hand side\n var lhsPrecedence = getPrecedence(args[0], parenthesis, implicit, root);\n // is the root node associative with the left hand side\n var assocWithLhs = isAssociativeWith(root, args[0], parenthesis);\n if (lhsPrecedence === null) {\n // if the left hand side has no defined precedence, no parens are needed\n // FunctionNode for example\n lhsParens = false;\n } else if (lhsPrecedence === precedence && associativity === 'right' && !assocWithLhs) {\n // In case of equal precedence, if the root node is left associative\n // parens are **never** necessary for the left hand side.\n // If it is right associative however, parens are necessary\n // if the root node isn't associative with the left hand side\n lhsParens = true;\n } else if (lhsPrecedence < precedence) {\n lhsParens = true;\n } else {\n lhsParens = false;\n }\n var rhsParens; // right hand side needs parenthesis?\n // precedence of the right hand side\n var rhsPrecedence = getPrecedence(args[1], parenthesis, implicit, root);\n // is the root node associative with the right hand side?\n var assocWithRhs = isAssociativeWith(root, args[1], parenthesis);\n if (rhsPrecedence === null) {\n // if the right hand side has no defined precedence, no parens are needed\n // FunctionNode for example\n rhsParens = false;\n } else if (rhsPrecedence === precedence && associativity === 'left' && !assocWithRhs) {\n // In case of equal precedence, if the root node is right associative\n // parens are **never** necessary for the right hand side.\n // If it is left associative however, parens are necessary\n // if the root node isn't associative with the right hand side\n rhsParens = true;\n } else if (rhsPrecedence < precedence) {\n rhsParens = true;\n } else {\n rhsParens = false;\n }\n\n // handle special cases for LaTeX, where some of the parentheses aren't needed\n if (latex) {\n var _rootIdentifier;\n var lhsIdentifier;\n var rhsIdentifier;\n if (parenthesis === 'keep') {\n _rootIdentifier = root.getIdentifier();\n lhsIdentifier = root.args[0].getIdentifier();\n rhsIdentifier = root.args[1].getIdentifier();\n } else {\n // Ignore ParenthesisNodes when not in 'keep' mode\n _rootIdentifier = root.getContent().getIdentifier();\n lhsIdentifier = root.args[0].getContent().getIdentifier();\n rhsIdentifier = root.args[1].getContent().getIdentifier();\n }\n if (lhsPrecedence !== null) {\n if (properties[precedence][_rootIdentifier].latexLeftParens === false) {\n lhsParens = false;\n }\n if (properties[lhsPrecedence][lhsIdentifier].latexParens === false) {\n lhsParens = false;\n }\n }\n if (rhsPrecedence !== null) {\n if (properties[precedence][_rootIdentifier].latexRightParens === false) {\n rhsParens = false;\n }\n if (properties[rhsPrecedence][rhsIdentifier].latexParens === false) {\n rhsParens = false;\n }\n }\n }\n result = [lhsParens, rhsParens];\n }\n break;\n default:\n if (root.getIdentifier() === 'OperatorNode:add' || root.getIdentifier() === 'OperatorNode:multiply') {\n result = args.map(function (arg) {\n var argPrecedence = getPrecedence(arg, parenthesis, implicit, root);\n var assocWithArg = isAssociativeWith(root, arg, parenthesis);\n var argAssociativity = getAssociativity(arg, parenthesis);\n if (argPrecedence === null) {\n // if the argument has no defined precedence, no parens are needed\n return false;\n } else if (precedence === argPrecedence && associativity === argAssociativity && !assocWithArg) {\n return true;\n } else if (argPrecedence < precedence) {\n return true;\n }\n return false;\n });\n }\n break;\n }\n\n // Handles an edge case of parentheses with implicit multiplication\n // of ConstantNode.\n // In that case, parenthesize ConstantNodes that follow an unparenthesized\n // expression, even though they normally wouldn't be printed.\n if (args.length >= 2 && root.getIdentifier() === 'OperatorNode:multiply' && root.implicit && parenthesis !== 'all' && implicit === 'hide') {\n for (var i = 1; i < result.length; ++i) {\n if (startsWithConstant(args[i], parenthesis) && !result[i - 1] && (parenthesis !== 'keep' || !isParenthesisNode(args[i - 1]))) {\n result[i] = true;\n }\n }\n }\n return result;\n }\n class OperatorNode extends Node {\n /**\n * @constructor OperatorNode\n * @extends {Node}\n * An operator with two arguments, like 2+3\n *\n * @param {string} op Operator name, for example '+'\n * @param {string} fn Function name, for example 'add'\n * @param {Node[]} args Operator arguments\n * @param {boolean} [implicit] Is this an implicit multiplication?\n * @param {boolean} [isPercentage] Is this an percentage Operation?\n */\n constructor(op, fn, args, implicit, isPercentage) {\n super();\n // validate input\n if (typeof op !== 'string') {\n throw new TypeError('string expected for parameter \"op\"');\n }\n if (typeof fn !== 'string') {\n throw new TypeError('string expected for parameter \"fn\"');\n }\n if (!Array.isArray(args) || !args.every(isNode)) {\n throw new TypeError('Array containing Nodes expected for parameter \"args\"');\n }\n this.implicit = implicit === true;\n this.isPercentage = isPercentage === true;\n this.op = op;\n this.fn = fn;\n this.args = args || [];\n }\n get type() {\n return name;\n }\n get isOperatorNode() {\n return true;\n }\n\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n _compile(math, argNames) {\n // validate fn\n if (typeof this.fn !== 'string' || !isSafeMethod(math, this.fn)) {\n if (!math[this.fn]) {\n throw new Error('Function ' + this.fn + ' missing in provided namespace \"math\"');\n } else {\n throw new Error('No access to function \"' + this.fn + '\"');\n }\n }\n var fn = getSafeProperty(math, this.fn);\n var evalArgs = map(this.args, function (arg) {\n return arg._compile(math, argNames);\n });\n if (evalArgs.length === 1) {\n var evalArg0 = evalArgs[0];\n return function evalOperatorNode(scope, args, context) {\n return fn(evalArg0(scope, args, context));\n };\n } else if (evalArgs.length === 2) {\n var _evalArg = evalArgs[0];\n var evalArg1 = evalArgs[1];\n return function evalOperatorNode(scope, args, context) {\n return fn(_evalArg(scope, args, context), evalArg1(scope, args, context));\n };\n } else {\n return function evalOperatorNode(scope, args, context) {\n return fn.apply(null, map(evalArgs, function (evalArg) {\n return evalArg(scope, args, context);\n }));\n };\n }\n }\n\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n forEach(callback) {\n for (var i = 0; i < this.args.length; i++) {\n callback(this.args[i], 'args[' + i + ']', this);\n }\n }\n\n /**\n * Create a new OperatorNode whose children are the results of calling\n * the provided callback function for each child of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {OperatorNode} Returns a transformed copy of the node\n */\n map(callback) {\n var args = [];\n for (var i = 0; i < this.args.length; i++) {\n args[i] = this._ifNode(callback(this.args[i], 'args[' + i + ']', this));\n }\n return new OperatorNode(this.op, this.fn, args, this.implicit, this.isPercentage);\n }\n\n /**\n * Create a clone of this node, a shallow copy\n * @return {OperatorNode}\n */\n clone() {\n return new OperatorNode(this.op, this.fn, this.args.slice(0), this.implicit, this.isPercentage);\n }\n\n /**\n * Check whether this is an unary OperatorNode:\n * has exactly one argument, like `-a`.\n * @return {boolean}\n * Returns true when an unary operator node, false otherwise.\n */\n isUnary() {\n return this.args.length === 1;\n }\n\n /**\n * Check whether this is a binary OperatorNode:\n * has exactly two arguments, like `a + b`.\n * @return {boolean}\n * Returns true when a binary operator node, false otherwise.\n */\n isBinary() {\n return this.args.length === 2;\n }\n\n /**\n * Get string representation.\n * @param {Object} options\n * @return {string} str\n */\n _toString(options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var implicit = options && options.implicit ? options.implicit : 'hide';\n var args = this.args;\n var parens = calculateNecessaryParentheses(this, parenthesis, implicit, args, false);\n if (args.length === 1) {\n // unary operators\n var assoc = getAssociativity(this, parenthesis);\n var operand = args[0].toString(options);\n if (parens[0]) {\n operand = '(' + operand + ')';\n }\n\n // for example for \"not\", we want a space between operand and argument\n var opIsNamed = /[a-zA-Z]+/.test(this.op);\n if (assoc === 'right') {\n // prefix operator\n return this.op + (opIsNamed ? ' ' : '') + operand;\n } else if (assoc === 'left') {\n // postfix\n return operand + (opIsNamed ? ' ' : '') + this.op;\n }\n\n // fall back to postfix\n return operand + this.op;\n } else if (args.length === 2) {\n var lhs = args[0].toString(options); // left hand side\n var rhs = args[1].toString(options); // right hand side\n if (parens[0]) {\n // left hand side in parenthesis?\n lhs = '(' + lhs + ')';\n }\n if (parens[1]) {\n // right hand side in parenthesis?\n rhs = '(' + rhs + ')';\n }\n if (this.implicit && this.getIdentifier() === 'OperatorNode:multiply' && implicit === 'hide') {\n return lhs + ' ' + rhs;\n }\n return lhs + ' ' + this.op + ' ' + rhs;\n } else if (args.length > 2 && (this.getIdentifier() === 'OperatorNode:add' || this.getIdentifier() === 'OperatorNode:multiply')) {\n var stringifiedArgs = args.map(function (arg, index) {\n arg = arg.toString(options);\n if (parens[index]) {\n // put in parenthesis?\n arg = '(' + arg + ')';\n }\n return arg;\n });\n if (this.implicit && this.getIdentifier() === 'OperatorNode:multiply' && implicit === 'hide') {\n return stringifiedArgs.join(' ');\n }\n return stringifiedArgs.join(' ' + this.op + ' ');\n } else {\n // fallback to formatting as a function call\n return this.fn + '(' + this.args.join(', ') + ')';\n }\n }\n\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n toJSON() {\n return {\n mathjs: name,\n op: this.op,\n fn: this.fn,\n args: this.args,\n implicit: this.implicit,\n isPercentage: this.isPercentage\n };\n }\n\n /**\n * Instantiate an OperatorNode from its JSON representation\n * @param {Object} json\n * An object structured like\n * ```\n * {\"mathjs\": \"OperatorNode\",\n * \"op\": \"+\", \"fn\": \"add\", \"args\": [...],\n * \"implicit\": false,\n * \"isPercentage\":false}\n * ```\n * where mathjs is optional\n * @returns {OperatorNode}\n */\n static fromJSON(json) {\n return new OperatorNode(json.op, json.fn, json.args, json.implicit, json.isPercentage);\n }\n\n /**\n * Get HTML representation.\n * @param {Object} options\n * @return {string} str\n */\n toHTML(options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var implicit = options && options.implicit ? options.implicit : 'hide';\n var args = this.args;\n var parens = calculateNecessaryParentheses(this, parenthesis, implicit, args, false);\n if (args.length === 1) {\n // unary operators\n var assoc = getAssociativity(this, parenthesis);\n var operand = args[0].toHTML(options);\n if (parens[0]) {\n operand = '(' + operand + ')';\n }\n if (assoc === 'right') {\n // prefix operator\n return '' + escape(this.op) + '' + operand;\n } else {\n // postfix when assoc === 'left' or undefined\n return operand + '' + escape(this.op) + '';\n }\n } else if (args.length === 2) {\n // binary operatoes\n var lhs = args[0].toHTML(options); // left hand side\n var rhs = args[1].toHTML(options); // right hand side\n if (parens[0]) {\n // left hand side in parenthesis?\n lhs = '(' + lhs + ')';\n }\n if (parens[1]) {\n // right hand side in parenthesis?\n rhs = '(' + rhs + ')';\n }\n if (this.implicit && this.getIdentifier() === 'OperatorNode:multiply' && implicit === 'hide') {\n return lhs + '' + rhs;\n }\n return lhs + '' + escape(this.op) + '' + rhs;\n } else {\n var stringifiedArgs = args.map(function (arg, index) {\n arg = arg.toHTML(options);\n if (parens[index]) {\n // put in parenthesis?\n arg = '(' + arg + ')';\n }\n return arg;\n });\n if (args.length > 2 && (this.getIdentifier() === 'OperatorNode:add' || this.getIdentifier() === 'OperatorNode:multiply')) {\n if (this.implicit && this.getIdentifier() === 'OperatorNode:multiply' && implicit === 'hide') {\n return stringifiedArgs.join('');\n }\n return stringifiedArgs.join('' + escape(this.op) + '');\n } else {\n // fallback to formatting as a function call\n return '' + escape(this.fn) + '' + '(' + stringifiedArgs.join(',') + ')';\n }\n }\n }\n\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string} str\n */\n _toTex(options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var implicit = options && options.implicit ? options.implicit : 'hide';\n var args = this.args;\n var parens = calculateNecessaryParentheses(this, parenthesis, implicit, args, true);\n var op = latexOperators[this.fn];\n op = typeof op === 'undefined' ? this.op : op; // fall back to using this.op\n\n if (args.length === 1) {\n // unary operators\n var assoc = getAssociativity(this, parenthesis);\n var operand = args[0].toTex(options);\n if (parens[0]) {\n operand = \"\\\\left(\".concat(operand, \"\\\\right)\");\n }\n if (assoc === 'right') {\n // prefix operator\n return op + operand;\n } else if (assoc === 'left') {\n // postfix operator\n return operand + op;\n }\n\n // fall back to postfix\n return operand + op;\n } else if (args.length === 2) {\n // binary operators\n var lhs = args[0]; // left hand side\n var lhsTex = lhs.toTex(options);\n if (parens[0]) {\n lhsTex = \"\\\\left(\".concat(lhsTex, \"\\\\right)\");\n }\n var rhs = args[1]; // right hand side\n var rhsTex = rhs.toTex(options);\n if (parens[1]) {\n rhsTex = \"\\\\left(\".concat(rhsTex, \"\\\\right)\");\n }\n\n // handle some exceptions (due to the way LaTeX works)\n var lhsIdentifier;\n if (parenthesis === 'keep') {\n lhsIdentifier = lhs.getIdentifier();\n } else {\n // Ignore ParenthesisNodes if in 'keep' mode\n lhsIdentifier = lhs.getContent().getIdentifier();\n }\n switch (this.getIdentifier()) {\n case 'OperatorNode:divide':\n // op contains '\\\\frac' at this point\n return op + '{' + lhsTex + '}' + '{' + rhsTex + '}';\n case 'OperatorNode:pow':\n lhsTex = '{' + lhsTex + '}';\n rhsTex = '{' + rhsTex + '}';\n switch (lhsIdentifier) {\n case 'ConditionalNode': //\n case 'OperatorNode:divide':\n lhsTex = \"\\\\left(\".concat(lhsTex, \"\\\\right)\");\n }\n break;\n case 'OperatorNode:multiply':\n if (this.implicit && implicit === 'hide') {\n return lhsTex + '~' + rhsTex;\n }\n }\n return lhsTex + op + rhsTex;\n } else if (args.length > 2 && (this.getIdentifier() === 'OperatorNode:add' || this.getIdentifier() === 'OperatorNode:multiply')) {\n var texifiedArgs = args.map(function (arg, index) {\n arg = arg.toTex(options);\n if (parens[index]) {\n arg = \"\\\\left(\".concat(arg, \"\\\\right)\");\n }\n return arg;\n });\n if (this.getIdentifier() === 'OperatorNode:multiply' && this.implicit && implicit === 'hide') {\n return texifiedArgs.join('~');\n }\n return texifiedArgs.join(op);\n } else {\n // fall back to formatting as a function call\n // as this is a fallback, it doesn't use\n // fancy function names\n return '\\\\mathrm{' + this.fn + '}\\\\left(' + args.map(function (arg) {\n return arg.toTex(options);\n }).join(',') + '\\\\right)';\n }\n }\n\n /**\n * Get identifier.\n * @return {string}\n */\n getIdentifier() {\n return this.type + ':' + this.fn;\n }\n }\n _defineProperty(OperatorNode, \"name\", name);\n return OperatorNode;\n}, {\n isClass: true,\n isNode: true\n});","import { factory } from '../../utils/factory.js';\nimport { createStd } from '../../function/statistics/std.js';\nimport { errorTransform } from './utils/errorTransform.js';\nimport { lastDimToZeroBase } from './utils/lastDimToZeroBase.js';\nvar name = 'std';\nvar dependencies = ['typed', 'map', 'sqrt', 'variance'];\n\n/**\n * Attach a transform function to math.std\n * Adds a property transform containing the transform function.\n *\n * This transform changed the `dim` parameter of function std\n * from one-based to zero based\n */\nexport var createStdTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n map,\n sqrt,\n variance\n } = _ref;\n var std = createStd({\n typed,\n map,\n sqrt,\n variance\n });\n return typed('std', {\n '...any': function any(args) {\n args = lastDimToZeroBase(args);\n try {\n return std.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});","\"use strict\";\n\n// Map the characters to escape to their escaped values. The list is derived\n// from http://www.cespedes.org/blog/85/how-to-escape-latex-special-characters\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar defaultEscapes = {\n \"{\": \"\\\\{\",\n \"}\": \"\\\\}\",\n \"\\\\\": \"\\\\textbackslash{}\",\n \"#\": \"\\\\#\",\n $: \"\\\\$\",\n \"%\": \"\\\\%\",\n \"&\": \"\\\\&\",\n \"^\": \"\\\\textasciicircum{}\",\n _: \"\\\\_\",\n \"~\": \"\\\\textasciitilde{}\"\n};\nvar formatEscapes = {\n \"\\u2013\": \"\\\\--\",\n \"\\u2014\": \"\\\\---\",\n \" \": \"~\",\n \"\\t\": \"\\\\qquad{}\",\n \"\\r\\n\": \"\\\\newline{}\",\n \"\\n\": \"\\\\newline{}\"\n};\n\nvar defaultEscapeMapFn = function defaultEscapeMapFn(defaultEscapes, formatEscapes) {\n return _extends({}, defaultEscapes, formatEscapes);\n};\n\n/**\n * Escape a string to be used in LaTeX documents.\n * @param {string} str the string to be escaped.\n * @param {boolean} params.preserveFormatting whether formatting escapes should\n * be performed (default: false).\n * @param {function} params.escapeMapFn the function to modify the escape maps.\n * @return {string} the escaped string, ready to be used in LaTeX.\n */\nmodule.exports = function (str) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref$preserveFormatti = _ref.preserveFormatting,\n preserveFormatting = _ref$preserveFormatti === undefined ? false : _ref$preserveFormatti,\n _ref$escapeMapFn = _ref.escapeMapFn,\n escapeMapFn = _ref$escapeMapFn === undefined ? defaultEscapeMapFn : _ref$escapeMapFn;\n\n var runningStr = String(str);\n var result = \"\";\n\n var escapes = escapeMapFn(_extends({}, defaultEscapes), preserveFormatting ? _extends({}, formatEscapes) : {});\n var escapeKeys = Object.keys(escapes); // as it is reused later on\n\n // Algorithm: Go through the string character by character, if it matches\n // with one of the special characters then we'll replace it with the escaped\n // version.\n\n var _loop = function _loop() {\n var specialCharFound = false;\n escapeKeys.forEach(function (key, index) {\n if (specialCharFound) {\n return;\n }\n if (runningStr.length >= key.length && runningStr.slice(0, key.length) === key) {\n result += escapes[escapeKeys[index]];\n runningStr = runningStr.slice(key.length, runningStr.length);\n specialCharFound = true;\n }\n });\n if (!specialCharFound) {\n result += runningStr.slice(0, 1);\n runningStr = runningStr.slice(1, runningStr.length);\n }\n };\n\n while (runningStr) {\n _loop();\n }\n return result;\n};","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { isAccessorNode, isFunctionAssignmentNode, isIndexNode, isNode, isSymbolNode } from '../../utils/is.js';\nimport { escape, format } from '../../utils/string.js';\nimport { hasOwnProperty } from '../../utils/object.js';\nimport { getSafeProperty, getSafeMethod } from '../../utils/customs.js';\nimport { createSubScope } from '../../utils/scope.js';\nimport { factory } from '../../utils/factory.js';\nimport { defaultTemplate, latexFunctions } from '../../utils/latex.js';\nvar name = 'FunctionNode';\nvar dependencies = ['math', 'Node', 'SymbolNode'];\nexport var createFunctionNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var _class;\n var {\n math,\n Node,\n SymbolNode\n } = _ref;\n /* format to fixed length */\n var strin = entity => format(entity, {\n truncate: 78\n });\n\n /*\n * Expand a LaTeX template\n *\n * @param {string} template\n * @param {Node} node\n * @param {Object} options\n * @private\n **/\n function expandTemplate(template, node, options) {\n var latex = '';\n\n // Match everything of the form ${identifier} or ${identifier[2]} or $$\n // while submatching identifier and 2 (in the second case)\n var regex = /\\$(?:\\{([a-z_][a-z_0-9]*)(?:\\[([0-9]+)\\])?\\}|\\$)/gi;\n var inputPos = 0; // position in the input string\n var match;\n while ((match = regex.exec(template)) !== null) {\n // go through all matches\n // add everything in front of the match to the LaTeX string\n latex += template.substring(inputPos, match.index);\n inputPos = match.index;\n if (match[0] === '$$') {\n // escaped dollar sign\n latex += '$';\n inputPos++;\n } else {\n // template parameter\n inputPos += match[0].length;\n var property = node[match[1]];\n if (!property) {\n throw new ReferenceError('Template: Property ' + match[1] + ' does not exist.');\n }\n if (match[2] === undefined) {\n // no square brackets\n switch (typeof property) {\n case 'string':\n latex += property;\n break;\n case 'object':\n if (isNode(property)) {\n latex += property.toTex(options);\n } else if (Array.isArray(property)) {\n // make array of Nodes into comma separated list\n latex += property.map(function (arg, index) {\n if (isNode(arg)) {\n return arg.toTex(options);\n }\n throw new TypeError('Template: ' + match[1] + '[' + index + '] is not a Node.');\n }).join(',');\n } else {\n throw new TypeError('Template: ' + match[1] + ' has to be a Node, String or array of Nodes');\n }\n break;\n default:\n throw new TypeError('Template: ' + match[1] + ' has to be a Node, String or array of Nodes');\n }\n } else {\n // with square brackets\n if (isNode(property[match[2]] && property[match[2]])) {\n latex += property[match[2]].toTex(options);\n } else {\n throw new TypeError('Template: ' + match[1] + '[' + match[2] + '] is not a Node.');\n }\n }\n }\n }\n latex += template.slice(inputPos); // append rest of the template\n\n return latex;\n }\n class FunctionNode extends Node {\n /**\n * @constructor FunctionNode\n * @extends {./Node}\n * invoke a list with arguments on a node\n * @param {./Node | string} fn\n * Item resolving to a function on which to invoke\n * the arguments, typically a SymboNode or AccessorNode\n * @param {./Node[]} args\n */\n constructor(fn, args) {\n super();\n if (typeof fn === 'string') {\n fn = new SymbolNode(fn);\n }\n\n // validate input\n if (!isNode(fn)) throw new TypeError('Node expected as parameter \"fn\"');\n if (!Array.isArray(args) || !args.every(isNode)) {\n throw new TypeError('Array containing Nodes expected for parameter \"args\"');\n }\n this.fn = fn;\n this.args = args || [];\n }\n\n // readonly property name\n get name() {\n return this.fn.name || '';\n }\n get type() {\n return name;\n }\n get isFunctionNode() {\n return true;\n }\n\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n _compile(math, argNames) {\n // compile arguments\n var evalArgs = this.args.map(arg => arg._compile(math, argNames));\n if (isSymbolNode(this.fn)) {\n var _name = this.fn.name;\n if (!argNames[_name]) {\n // we can statically determine whether the function\n // has the rawArgs property\n var fn = _name in math ? getSafeProperty(math, _name) : undefined;\n var isRaw = typeof fn === 'function' && fn.rawArgs === true;\n var resolveFn = scope => {\n var value;\n if (scope.has(_name)) {\n value = scope.get(_name);\n } else if (_name in math) {\n value = getSafeProperty(math, _name);\n } else {\n return FunctionNode.onUndefinedFunction(_name);\n }\n if (typeof value === 'function') {\n return value;\n }\n throw new TypeError(\"'\".concat(_name, \"' is not a function; its value is:\\n \").concat(strin(value)));\n };\n if (isRaw) {\n // pass unevaluated parameters (nodes) to the function\n // \"raw\" evaluation\n var rawArgs = this.args;\n return function evalFunctionNode(scope, args, context) {\n var fn = resolveFn(scope);\n return fn(rawArgs, math, createSubScope(scope, args), scope);\n };\n } else {\n // \"regular\" evaluation\n switch (evalArgs.length) {\n case 0:\n return function evalFunctionNode(scope, args, context) {\n var fn = resolveFn(scope);\n return fn();\n };\n case 1:\n return function evalFunctionNode(scope, args, context) {\n var fn = resolveFn(scope);\n var evalArg0 = evalArgs[0];\n return fn(evalArg0(scope, args, context));\n };\n case 2:\n return function evalFunctionNode(scope, args, context) {\n var fn = resolveFn(scope);\n var evalArg0 = evalArgs[0];\n var evalArg1 = evalArgs[1];\n return fn(evalArg0(scope, args, context), evalArg1(scope, args, context));\n };\n default:\n return function evalFunctionNode(scope, args, context) {\n var fn = resolveFn(scope);\n var values = evalArgs.map(evalArg => evalArg(scope, args, context));\n return fn(...values);\n };\n }\n }\n } else {\n // the function symbol is an argName\n var _rawArgs = this.args;\n return function evalFunctionNode(scope, args, context) {\n var fn = getSafeProperty(args, _name);\n if (typeof fn !== 'function') {\n throw new TypeError(\"Argument '\".concat(_name, \"' was not a function; received: \").concat(strin(fn)));\n }\n if (fn.rawArgs) {\n // \"Raw\" evaluation\n return fn(_rawArgs, math, createSubScope(scope, args), scope);\n } else {\n var values = evalArgs.map(evalArg => evalArg(scope, args, context));\n return fn.apply(fn, values);\n }\n };\n }\n } else if (isAccessorNode(this.fn) && isIndexNode(this.fn.index) && this.fn.index.isObjectProperty()) {\n // execute the function with the right context:\n // the object of the AccessorNode\n\n var evalObject = this.fn.object._compile(math, argNames);\n var prop = this.fn.index.getObjectProperty();\n var _rawArgs2 = this.args;\n return function evalFunctionNode(scope, args, context) {\n var object = evalObject(scope, args, context);\n var fn = getSafeMethod(object, prop);\n if (fn !== null && fn !== void 0 && fn.rawArgs) {\n // \"Raw\" evaluation\n return fn(_rawArgs2, math, createSubScope(scope, args), scope);\n } else {\n // \"regular\" evaluation\n var values = evalArgs.map(evalArg => evalArg(scope, args, context));\n return fn.apply(object, values);\n }\n };\n } else {\n // node.fn.isAccessorNode && !node.fn.index.isObjectProperty()\n // we have to dynamically determine whether the function has the\n // rawArgs property\n var fnExpr = this.fn.toString();\n var evalFn = this.fn._compile(math, argNames);\n var _rawArgs3 = this.args;\n return function evalFunctionNode(scope, args, context) {\n var fn = evalFn(scope, args, context);\n if (typeof fn !== 'function') {\n throw new TypeError(\"Expression '\".concat(fnExpr, \"' did not evaluate to a function; value is:\") + \"\\n \".concat(strin(fn)));\n }\n if (fn.rawArgs) {\n // \"Raw\" evaluation\n return fn(_rawArgs3, math, createSubScope(scope, args), scope);\n } else {\n // \"regular\" evaluation\n var values = evalArgs.map(evalArg => evalArg(scope, args, context));\n return fn.apply(fn, values);\n }\n };\n }\n }\n\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n forEach(callback) {\n callback(this.fn, 'fn', this);\n for (var i = 0; i < this.args.length; i++) {\n callback(this.args[i], 'args[' + i + ']', this);\n }\n }\n\n /**\n * Create a new FunctionNode whose children are the results of calling\n * the provided callback function for each child of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {FunctionNode} Returns a transformed copy of the node\n */\n map(callback) {\n var fn = this._ifNode(callback(this.fn, 'fn', this));\n var args = [];\n for (var i = 0; i < this.args.length; i++) {\n args[i] = this._ifNode(callback(this.args[i], 'args[' + i + ']', this));\n }\n return new FunctionNode(fn, args);\n }\n\n /**\n * Create a clone of this node, a shallow copy\n * @return {FunctionNode}\n */\n clone() {\n return new FunctionNode(this.fn, this.args.slice(0));\n }\n\n /**\n * Throws an error 'Undefined function {name}'\n * @param {string} name\n */\n\n /**\n * Get string representation. (wrapper function)\n * This overrides parts of Node's toString function.\n * If callback is an object containing callbacks, it\n * calls the correct callback for the current node,\n * otherwise it falls back to calling Node's toString\n * function.\n *\n * @param {Object} options\n * @return {string} str\n * @override\n */\n toString(options) {\n var customString;\n var name = this.fn.toString(options);\n if (options && typeof options.handler === 'object' && hasOwnProperty(options.handler, name)) {\n // callback is a map of callback functions\n customString = options.handler[name](this, options);\n }\n if (typeof customString !== 'undefined') {\n return customString;\n }\n\n // fall back to Node's toString\n return super.toString(options);\n }\n\n /**\n * Get string representation\n * @param {Object} options\n * @return {string} str\n */\n _toString(options) {\n var args = this.args.map(function (arg) {\n return arg.toString(options);\n });\n var fn = isFunctionAssignmentNode(this.fn) ? '(' + this.fn.toString(options) + ')' : this.fn.toString(options);\n\n // format the arguments like \"add(2, 4.2)\"\n return fn + '(' + args.join(', ') + ')';\n }\n\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n toJSON() {\n return {\n mathjs: name,\n fn: this.fn,\n args: this.args\n };\n }\n\n /**\n * Instantiate an AssignmentNode from its JSON representation\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"FunctionNode\", fn: ..., args: ...}`,\n * where mathjs is optional\n * @returns {FunctionNode}\n */\n\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string} str\n */\n toHTML(options) {\n var args = this.args.map(function (arg) {\n return arg.toHTML(options);\n });\n\n // format the arguments like \"add(2, 4.2)\"\n return '' + escape(this.fn) + '(' + args.join(',') + ')';\n }\n\n /**\n * Get LaTeX representation. (wrapper function)\n * This overrides parts of Node's toTex function.\n * If callback is an object containing callbacks, it\n * calls the correct callback for the current node,\n * otherwise it falls back to calling Node's toTex\n * function.\n *\n * @param {Object} options\n * @return {string}\n */\n toTex(options) {\n var customTex;\n if (options && typeof options.handler === 'object' && hasOwnProperty(options.handler, this.name)) {\n // callback is a map of callback functions\n customTex = options.handler[this.name](this, options);\n }\n if (typeof customTex !== 'undefined') {\n return customTex;\n }\n\n // fall back to Node's toTex\n return super.toTex(options);\n }\n\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string} str\n */\n _toTex(options) {\n var args = this.args.map(function (arg) {\n // get LaTeX of the arguments\n return arg.toTex(options);\n });\n var latexConverter;\n if (latexFunctions[this.name]) {\n latexConverter = latexFunctions[this.name];\n }\n\n // toTex property on the function itself\n if (math[this.name] && (typeof math[this.name].toTex === 'function' || typeof math[this.name].toTex === 'object' || typeof math[this.name].toTex === 'string')) {\n // .toTex is a callback function\n latexConverter = math[this.name].toTex;\n }\n var customToTex;\n switch (typeof latexConverter) {\n case 'function':\n // a callback function\n customToTex = latexConverter(this, options);\n break;\n case 'string':\n // a template string\n customToTex = expandTemplate(latexConverter, this, options);\n break;\n case 'object':\n // an object with different \"converters\" for different\n // numbers of arguments\n switch (typeof latexConverter[args.length]) {\n case 'function':\n customToTex = latexConverter[args.length](this, options);\n break;\n case 'string':\n customToTex = expandTemplate(latexConverter[args.length], this, options);\n break;\n }\n }\n if (typeof customToTex !== 'undefined') {\n return customToTex;\n }\n return expandTemplate(defaultTemplate, this, options);\n }\n\n /**\n * Get identifier.\n * @return {string}\n */\n getIdentifier() {\n return this.type + ':' + this.name;\n }\n }\n _class = FunctionNode;\n _defineProperty(FunctionNode, \"name\", name);\n _defineProperty(FunctionNode, \"onUndefinedFunction\", function (name) {\n throw new Error('Undefined function ' + name);\n });\n _defineProperty(FunctionNode, \"fromJSON\", function (json) {\n return new _class(json.fn, json.args);\n });\n return FunctionNode;\n}, {\n isClass: true,\n isNode: true\n});","import { factory } from '../../utils/factory.js';\nvar name = 'leafCount';\nvar dependencies = ['parse', 'typed'];\nexport var createLeafCount = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n parse,\n typed\n } = _ref;\n // This does the real work, but we don't have to recurse through\n // a typed call if we separate it out\n function countLeaves(node) {\n var count = 0;\n node.forEach(n => {\n count += countLeaves(n);\n });\n return count || 1;\n }\n\n /**\n * Gives the number of \"leaf nodes\" in the parse tree of the given expression\n * A leaf node is one that has no subexpressions, essentially either a\n * symbol or a constant. Note that `5!` has just one leaf, the '5'; the\n * unary factorial operator does not add a leaf. On the other hand,\n * function symbols do add leaves, so `sin(x)/cos(x)` has four leaves.\n *\n * The `simplify()` function should generally not increase the `leafCount()`\n * of an expression, although currently there is no guarantee that it never\n * does so. In many cases, `simplify()` reduces the leaf count.\n *\n * Syntax:\n *\n * math.leafCount(expr)\n *\n * Examples:\n *\n * math.leafCount('x') // 1\n * math.leafCount(math.parse('a*d-b*c')) // 4\n * math.leafCount('[a,b;c,d][0,1]') // 6\n *\n * See also:\n *\n * simplify\n *\n * @param {Node|string} expr The expression to count the leaves of\n *\n * @return {number} The number of leaves of `expr`\n *\n */\n return typed(name, {\n Node: function Node(expr) {\n return countLeaves(expr);\n }\n });\n});","export var eDocs = {\n name: 'e',\n category: 'Constants',\n syntax: ['e'],\n description: 'Euler\\'s number, the base of the natural logarithm. Approximately equal to 2.71828',\n examples: ['e', 'e ^ 2', 'exp(2)', 'log(e)'],\n seealso: ['exp']\n};","export var falseDocs = {\n name: 'false',\n category: 'Constants',\n syntax: ['false'],\n description: 'Boolean value false',\n examples: ['false'],\n seealso: ['true']\n};","export var iDocs = {\n name: 'i',\n category: 'Constants',\n syntax: ['i'],\n description: 'Imaginary unit, defined as i*i=-1. A complex number is described as a + b*i, where a is the real part, and b is the imaginary part.',\n examples: ['i', 'i * i', 'sqrt(-1)'],\n seealso: []\n};","export var InfinityDocs = {\n name: 'Infinity',\n category: 'Constants',\n syntax: ['Infinity'],\n description: 'Infinity, a number which is larger than the maximum number that can be handled by a floating point number.',\n examples: ['Infinity', '1 / 0'],\n seealso: []\n};","export var LN10Docs = {\n name: 'LN10',\n category: 'Constants',\n syntax: ['LN10'],\n description: 'Returns the natural logarithm of 10, approximately equal to 2.302',\n examples: ['LN10', 'log(10)'],\n seealso: []\n};","export var LN2Docs = {\n name: 'LN2',\n category: 'Constants',\n syntax: ['LN2'],\n description: 'Returns the natural logarithm of 2, approximately equal to 0.693',\n examples: ['LN2', 'log(2)'],\n seealso: []\n};","export var LOG10EDocs = {\n name: 'LOG10E',\n category: 'Constants',\n syntax: ['LOG10E'],\n description: 'Returns the base-10 logarithm of E, approximately equal to 0.434',\n examples: ['LOG10E', 'log(e, 10)'],\n seealso: []\n};","export var LOG2EDocs = {\n name: 'LOG2E',\n category: 'Constants',\n syntax: ['LOG2E'],\n description: 'Returns the base-2 logarithm of E, approximately equal to 1.442',\n examples: ['LOG2E', 'log(e, 2)'],\n seealso: []\n};","export var NaNDocs = {\n name: 'NaN',\n category: 'Constants',\n syntax: ['NaN'],\n description: 'Not a number',\n examples: ['NaN', '0 / 0'],\n seealso: []\n};","export var nullDocs = {\n name: 'null',\n category: 'Constants',\n syntax: ['null'],\n description: 'Value null',\n examples: ['null'],\n seealso: ['true', 'false']\n};","export var phiDocs = {\n name: 'phi',\n category: 'Constants',\n syntax: ['phi'],\n description: 'Phi is the golden ratio. Two quantities are in the golden ratio if their ratio is the same as the ratio of their sum to the larger of the two quantities. Phi is defined as `(1 + sqrt(5)) / 2` and is approximately 1.618034...',\n examples: ['phi'],\n seealso: []\n};","export var piDocs = {\n name: 'pi',\n category: 'Constants',\n syntax: ['pi'],\n description: 'The number pi is a mathematical constant that is the ratio of a circle\\'s circumference to its diameter, and is approximately equal to 3.14159',\n examples: ['pi', 'sin(pi/2)'],\n seealso: ['tau']\n};","export var SQRT12Docs = {\n name: 'SQRT1_2',\n category: 'Constants',\n syntax: ['SQRT1_2'],\n description: 'Returns the square root of 1/2, approximately equal to 0.707',\n examples: ['SQRT1_2', 'sqrt(1/2)'],\n seealso: []\n};","export var SQRT2Docs = {\n name: 'SQRT2',\n category: 'Constants',\n syntax: ['SQRT2'],\n description: 'Returns the square root of 2, approximately equal to 1.414',\n examples: ['SQRT2', 'sqrt(2)'],\n seealso: []\n};","export var tauDocs = {\n name: 'tau',\n category: 'Constants',\n syntax: ['tau'],\n description: 'Tau is the ratio constant of a circle\\'s circumference to radius, equal to 2 * pi, approximately 6.2832.',\n examples: ['tau', '2 * pi'],\n seealso: ['pi']\n};","export var trueDocs = {\n name: 'true',\n category: 'Constants',\n syntax: ['true'],\n description: 'Boolean value true',\n examples: ['true'],\n seealso: ['false']\n};","export var versionDocs = {\n name: 'version',\n category: 'Constants',\n syntax: ['version'],\n description: 'A string with the version number of math.js',\n examples: ['version'],\n seealso: []\n};","export var bignumberDocs = {\n name: 'bignumber',\n category: 'Construction',\n syntax: ['bignumber(x)'],\n description: 'Create a big number from a number or string.',\n examples: ['0.1 + 0.2', 'bignumber(0.1) + bignumber(0.2)', 'bignumber(\"7.2\")', 'bignumber(\"7.2e500\")', 'bignumber([0.1, 0.2, 0.3])'],\n seealso: ['boolean', 'complex', 'fraction', 'index', 'matrix', 'string', 'unit']\n};","export var booleanDocs = {\n name: 'boolean',\n category: 'Construction',\n syntax: ['x', 'boolean(x)'],\n description: 'Convert a string or number into a boolean.',\n examples: ['boolean(0)', 'boolean(1)', 'boolean(3)', 'boolean(\"true\")', 'boolean(\"false\")', 'boolean([1, 0, 1, 1])'],\n seealso: ['bignumber', 'complex', 'index', 'matrix', 'number', 'string', 'unit']\n};","export var complexDocs = {\n name: 'complex',\n category: 'Construction',\n syntax: ['complex()', 'complex(re, im)', 'complex(string)'],\n description: 'Create a complex number.',\n examples: ['complex()', 'complex(2, 3)', 'complex(\"7 - 2i\")'],\n seealso: ['bignumber', 'boolean', 'index', 'matrix', 'number', 'string', 'unit']\n};","export var createUnitDocs = {\n name: 'createUnit',\n category: 'Construction',\n syntax: ['createUnit(definitions)', 'createUnit(name, definition)'],\n description: 'Create a user-defined unit and register it with the Unit type.',\n examples: ['createUnit(\"foo\")', 'createUnit(\"knot\", {definition: \"0.514444444 m/s\", aliases: [\"knots\", \"kt\", \"kts\"]})', 'createUnit(\"mph\", \"1 mile/hour\")'],\n seealso: ['unit', 'splitUnit']\n};","export var fractionDocs = {\n name: 'fraction',\n category: 'Construction',\n syntax: ['fraction(num)', 'fraction(matrix)', 'fraction(num,den)', 'fraction({n: num, d: den})'],\n description: 'Create a fraction from a number or from integer numerator and denominator.',\n examples: ['fraction(0.125)', 'fraction(1, 3) + fraction(2, 5)', 'fraction({n: 333, d: 53})', 'fraction([sqrt(9), sqrt(10), sqrt(11)])'],\n seealso: ['bignumber', 'boolean', 'complex', 'index', 'matrix', 'string', 'unit']\n};","export var indexDocs = {\n name: 'index',\n category: 'Construction',\n syntax: ['[start]', '[start:end]', '[start:step:end]', '[start1, start 2, ...]', '[start1:end1, start2:end2, ...]', '[start1:step1:end1, start2:step2:end2, ...]'],\n description: 'Create an index to get or replace a subset of a matrix',\n examples: ['A = [1, 2, 3; 4, 5, 6]', 'A[1, :]', 'A[1, 2] = 50', 'A[1:2, 1:2] = 1', 'B = [1, 2, 3]', 'B[B>1 and B<3]'],\n seealso: ['bignumber', 'boolean', 'complex', 'matrix,', 'number', 'range', 'string', 'unit']\n};","export var matrixDocs = {\n name: 'matrix',\n category: 'Construction',\n syntax: ['[]', '[a1, b1, ...; a2, b2, ...]', 'matrix()', 'matrix(\"dense\")', 'matrix([...])'],\n description: 'Create a matrix.',\n examples: ['[]', '[1, 2, 3]', '[1, 2, 3; 4, 5, 6]', 'matrix()', 'matrix([3, 4])', 'matrix([3, 4; 5, 6], \"sparse\")', 'matrix([3, 4; 5, 6], \"sparse\", \"number\")'],\n seealso: ['bignumber', 'boolean', 'complex', 'index', 'number', 'string', 'unit', 'sparse']\n};","export var numberDocs = {\n name: 'number',\n category: 'Construction',\n syntax: ['x', 'number(x)', 'number(unit, valuelessUnit)'],\n description: 'Create a number or convert a string or boolean into a number.',\n examples: ['2', '2e3', '4.05', 'number(2)', 'number(\"7.2\")', 'number(true)', 'number([true, false, true, true])', 'number(unit(\"52cm\"), \"m\")'],\n seealso: ['bignumber', 'boolean', 'complex', 'fraction', 'index', 'matrix', 'string', 'unit']\n};","export var sparseDocs = {\n name: 'sparse',\n category: 'Construction',\n syntax: ['sparse()', 'sparse([a1, b1, ...; a1, b2, ...])', 'sparse([a1, b1, ...; a1, b2, ...], \"number\")'],\n description: 'Create a sparse matrix.',\n examples: ['sparse()', 'sparse([3, 4; 5, 6])', 'sparse([3, 0; 5, 0], \"number\")'],\n seealso: ['bignumber', 'boolean', 'complex', 'index', 'number', 'string', 'unit', 'matrix']\n};","export var splitUnitDocs = {\n name: 'splitUnit',\n category: 'Construction',\n syntax: ['splitUnit(unit: Unit, parts: Unit[])'],\n description: 'Split a unit in an array of units whose sum is equal to the original unit.',\n examples: ['splitUnit(1 m, [\"feet\", \"inch\"])'],\n seealso: ['unit', 'createUnit']\n};","export var stringDocs = {\n name: 'string',\n category: 'Construction',\n syntax: ['\"text\"', 'string(x)'],\n description: 'Create a string or convert a value to a string',\n examples: ['\"Hello World!\"', 'string(4.2)', 'string(3 + 2i)'],\n seealso: ['bignumber', 'boolean', 'complex', 'index', 'matrix', 'number', 'unit']\n};","export var unitDocs = {\n name: 'unit',\n category: 'Construction',\n syntax: ['value unit', 'unit(value, unit)', 'unit(string)'],\n description: 'Create a unit.',\n examples: ['5.5 mm', '3 inch', 'unit(7.1, \"kilogram\")', 'unit(\"23 deg\")'],\n seealso: ['bignumber', 'boolean', 'complex', 'index', 'matrix', 'number', 'string']\n};","export var configDocs = {\n name: 'config',\n category: 'Core',\n syntax: ['config()', 'config(options)'],\n description: 'Get configuration or change configuration.',\n examples: ['config()', '1/3 + 1/4', 'config({number: \"Fraction\"})', '1/3 + 1/4'],\n seealso: []\n};","export var importDocs = {\n name: 'import',\n category: 'Core',\n syntax: ['import(functions)', 'import(functions, options)'],\n description: 'Import functions or constants from an object.',\n examples: ['import({myFn: f(x)=x^2, myConstant: 32 })', 'myFn(2)', 'myConstant'],\n seealso: []\n};","export var typedDocs = {\n name: 'typed',\n category: 'Core',\n syntax: ['typed(signatures)', 'typed(name, signatures)'],\n description: 'Create a typed function.',\n examples: ['double = typed({ \"number\": f(x)=x+x, \"string\": f(x)=concat(x,x) })', 'double(2)', 'double(\"hello\")'],\n seealso: []\n};","export var derivativeDocs = {\n name: 'derivative',\n category: 'Algebra',\n syntax: ['derivative(expr, variable)', 'derivative(expr, variable, {simplify: boolean})'],\n description: 'Takes the derivative of an expression expressed in parser Nodes. The derivative will be taken over the supplied variable in the second parameter. If there are multiple variables in the expression, it will return a partial derivative.',\n examples: ['derivative(\"2x^3\", \"x\")', 'derivative(\"2x^3\", \"x\", {simplify: false})', 'derivative(\"2x^2 + 3x + 4\", \"x\")', 'derivative(\"sin(2x)\", \"x\")', 'f = parse(\"x^2 + x\")', 'x = parse(\"x\")', 'df = derivative(f, x)', 'df.evaluate({x: 3})'],\n seealso: ['simplify', 'parse', 'evaluate']\n};","export var leafCountDocs = {\n name: 'leafCount',\n category: 'Algebra',\n syntax: ['leafCount(expr)'],\n description: 'Computes the number of leaves in the parse tree of the given expression',\n examples: ['leafCount(\"e^(i*pi)-1\")', 'leafCount(parse(\"{a: 22/7, b: 10^(1/2)}\"))'],\n seealso: ['simplify']\n};","export var lsolveDocs = {\n name: 'lsolve',\n category: 'Algebra',\n syntax: ['x=lsolve(L, b)'],\n description: 'Finds one solution of the linear system L * x = b where L is an [n x n] lower triangular matrix and b is a [n] column vector.',\n examples: ['a = [-2, 3; 2, 1]', 'b = [11, 9]', 'x = lsolve(a, b)'],\n seealso: ['lsolveAll', 'lup', 'lusolve', 'usolve', 'matrix', 'sparse']\n};","export var lsolveAllDocs = {\n name: 'lsolveAll',\n category: 'Algebra',\n syntax: ['x=lsolveAll(L, b)'],\n description: 'Finds all solutions of the linear system L * x = b where L is an [n x n] lower triangular matrix and b is a [n] column vector.',\n examples: ['a = [-2, 3; 2, 1]', 'b = [11, 9]', 'x = lsolve(a, b)'],\n seealso: ['lsolve', 'lup', 'lusolve', 'usolve', 'matrix', 'sparse']\n};","export var lupDocs = {\n name: 'lup',\n category: 'Algebra',\n syntax: ['lup(m)'],\n description: 'Calculate the Matrix LU decomposition with partial pivoting. Matrix A is decomposed in three matrices (L, U, P) where P * A = L * U',\n examples: ['lup([[2, 1], [1, 4]])', 'lup(matrix([[2, 1], [1, 4]]))', 'lup(sparse([[2, 1], [1, 4]]))'],\n seealso: ['lusolve', 'lsolve', 'usolve', 'matrix', 'sparse', 'slu', 'qr']\n};","export var lusolveDocs = {\n name: 'lusolve',\n category: 'Algebra',\n syntax: ['x=lusolve(A, b)', 'x=lusolve(lu, b)'],\n description: 'Solves the linear system A * x = b where A is an [n x n] matrix and b is a [n] column vector.',\n examples: ['a = [-2, 3; 2, 1]', 'b = [11, 9]', 'x = lusolve(a, b)'],\n seealso: ['lup', 'slu', 'lsolve', 'usolve', 'matrix', 'sparse']\n};","export var polynomialRootDocs = {\n name: 'polynomialRoot',\n category: 'Algebra',\n syntax: ['x=polynomialRoot(-6, 3)', 'x=polynomialRoot(4, -4, 1)', 'x=polynomialRoot(-8, 12, -6, 1)'],\n description: 'Finds the roots of a univariate polynomial given by its coefficients starting from constant, linear, and so on, increasing in degree.',\n examples: ['a = polynomialRoot(-6, 11, -6, 1)'],\n seealso: ['cbrt', 'sqrt']\n};","export var qrDocs = {\n name: 'qr',\n category: 'Algebra',\n syntax: ['qr(A)'],\n description: 'Calculates the Matrix QR decomposition. Matrix `A` is decomposed in two matrices (`Q`, `R`) where `Q` is an orthogonal matrix and `R` is an upper triangular matrix.',\n examples: ['qr([[1, -1, 4], [1, 4, -2], [1, 4, 2], [1, -1, 0]])'],\n seealso: ['lup', 'slu', 'matrix']\n};","export var rationalizeDocs = {\n name: 'rationalize',\n category: 'Algebra',\n syntax: ['rationalize(expr)', 'rationalize(expr, scope)', 'rationalize(expr, scope, detailed)'],\n description: 'Transform a rationalizable expression in a rational fraction. If rational fraction is one variable polynomial then converts the numerator and denominator in canonical form, with decreasing exponents, returning the coefficients of numerator.',\n examples: ['rationalize(\"2x/y - y/(x+1)\")', 'rationalize(\"2x/y - y/(x+1)\", true)'],\n seealso: ['simplify']\n};","export var resolveDocs = {\n name: 'resolve',\n category: 'Algebra',\n syntax: ['resolve(node, scope)'],\n description: 'Recursively substitute variables in an expression tree.',\n examples: ['resolve(parse(\"1 + x\"), { x: 7 })', 'resolve(parse(\"size(text)\"), { text: \"Hello World\" })', 'resolve(parse(\"x + y\"), { x: parse(\"3z\") })', 'resolve(parse(\"3x\"), { x: parse(\"y+z\"), z: parse(\"w^y\") })'],\n seealso: ['simplify', 'evaluate'],\n mayThrow: ['ReferenceError']\n};","export var simplifyDocs = {\n name: 'simplify',\n category: 'Algebra',\n syntax: ['simplify(expr)', 'simplify(expr, rules)'],\n description: 'Simplify an expression tree.',\n examples: ['simplify(\"3 + 2 / 4\")', 'simplify(\"2x + x\")', 'f = parse(\"x * (x + 2 + x)\")', 'simplified = simplify(f)', 'simplified.evaluate({x: 2})'],\n seealso: ['simplifyCore', 'derivative', 'evaluate', 'parse', 'rationalize', 'resolve']\n};","export var simplifyConstantDocs = {\n name: 'simplifyConstant',\n category: 'Algebra',\n syntax: ['simplifyConstant(expr)', 'simplifyConstant(expr, options)'],\n description: 'Replace constant subexpressions of node with their values.',\n examples: ['simplifyConstant(\"(3-3)*x\")', 'simplifyConstant(parse(\"z-cos(tau/8)\"))'],\n seealso: ['simplify', 'simplifyCore', 'evaluate']\n};","export var simplifyCoreDocs = {\n name: 'simplifyCore',\n category: 'Algebra',\n syntax: ['simplifyCore(node)'],\n description: 'Perform simple one-pass simplifications on an expression tree.',\n examples: ['simplifyCore(parse(\"0*x\"))', 'simplifyCore(parse(\"(x+0)*2\"))'],\n seealso: ['simplify', 'simplifyConstant', 'evaluate']\n};","export var sluDocs = {\n name: 'slu',\n category: 'Algebra',\n syntax: ['slu(A, order, threshold)'],\n description: 'Calculate the Matrix LU decomposition with full pivoting. Matrix A is decomposed in two matrices (L, U) and two permutation vectors (pinv, q) where P * A * Q = L * U',\n examples: ['slu(sparse([4.5, 0, 3.2, 0; 3.1, 2.9, 0, 0.9; 0, 1.7, 3, 0; 3.5, 0.4, 0, 1]), 1, 0.001)'],\n seealso: ['lusolve', 'lsolve', 'usolve', 'matrix', 'sparse', 'lup', 'qr']\n};","export var symbolicEqualDocs = {\n name: 'symbolicEqual',\n category: 'Algebra',\n syntax: ['symbolicEqual(expr1, expr2)', 'symbolicEqual(expr1, expr2, options)'],\n description: 'Returns true if the difference of the expressions simplifies to 0',\n examples: ['symbolicEqual(\"x*y\",\"y*x\")', 'symbolicEqual(\"abs(x^2)\", \"x^2\")', 'symbolicEqual(\"abs(x)\", \"x\", {context: {abs: {trivial: true}}})'],\n seealso: ['simplify', 'evaluate']\n};","export var usolveDocs = {\n name: 'usolve',\n category: 'Algebra',\n syntax: ['x=usolve(U, b)'],\n description: 'Finds one solution of the linear system U * x = b where U is an [n x n] upper triangular matrix and b is a [n] column vector.',\n examples: ['x=usolve(sparse([1, 1, 1, 1; 0, 1, 1, 1; 0, 0, 1, 1; 0, 0, 0, 1]), [1; 2; 3; 4])'],\n seealso: ['usolveAll', 'lup', 'lusolve', 'lsolve', 'matrix', 'sparse']\n};","export var usolveAllDocs = {\n name: 'usolveAll',\n category: 'Algebra',\n syntax: ['x=usolve(U, b)'],\n description: 'Finds all solutions of the linear system U * x = b where U is an [n x n] upper triangular matrix and b is a [n] column vector.',\n examples: ['x=usolve(sparse([1, 1, 1, 1; 0, 1, 1, 1; 0, 0, 1, 1; 0, 0, 0, 1]), [1; 2; 3; 4])'],\n seealso: ['usolve', 'lup', 'lusolve', 'lsolve', 'matrix', 'sparse']\n};","export var absDocs = {\n name: 'abs',\n category: 'Arithmetic',\n syntax: ['abs(x)'],\n description: 'Compute the absolute value.',\n examples: ['abs(3.5)', 'abs(-4.2)'],\n seealso: ['sign']\n};","export var addDocs = {\n name: 'add',\n category: 'Operators',\n syntax: ['x + y', 'add(x, y)'],\n description: 'Add two values.',\n examples: ['a = 2.1 + 3.6', 'a - 3.6', '3 + 2i', '3 cm + 2 inch', '\"2.3\" + \"4\"'],\n seealso: ['subtract']\n};","export var cbrtDocs = {\n name: 'cbrt',\n category: 'Arithmetic',\n syntax: ['cbrt(x)', 'cbrt(x, allRoots)'],\n description: 'Compute the cubic root value. If x = y * y * y, then y is the cubic root of x. When `x` is a number or complex number, an optional second argument `allRoots` can be provided to return all three cubic roots. If not provided, the principal root is returned',\n examples: ['cbrt(64)', 'cube(4)', 'cbrt(-8)', 'cbrt(2 + 3i)', 'cbrt(8i)', 'cbrt(8i, true)', 'cbrt(27 m^3)'],\n seealso: ['square', 'sqrt', 'cube', 'multiply']\n};","export var ceilDocs = {\n name: 'ceil',\n category: 'Arithmetic',\n syntax: ['ceil(x)'],\n description: 'Round a value towards plus infinity. If x is complex, both real and imaginary part are rounded towards plus infinity.',\n examples: ['ceil(3.2)', 'ceil(3.8)', 'ceil(-4.2)'],\n seealso: ['floor', 'fix', 'round']\n};","export var cubeDocs = {\n name: 'cube',\n category: 'Arithmetic',\n syntax: ['cube(x)'],\n description: 'Compute the cube of a value. The cube of x is x * x * x.',\n examples: ['cube(2)', '2^3', '2 * 2 * 2'],\n seealso: ['multiply', 'square', 'pow']\n};","export var divideDocs = {\n name: 'divide',\n category: 'Operators',\n syntax: ['x / y', 'divide(x, y)'],\n description: 'Divide two values.',\n examples: ['a = 2 / 3', 'a * 3', '4.5 / 2', '3 + 4 / 2', '(3 + 4) / 2', '18 km / 4.5'],\n seealso: ['multiply']\n};","export var dotDivideDocs = {\n name: 'dotDivide',\n category: 'Operators',\n syntax: ['x ./ y', 'dotDivide(x, y)'],\n description: 'Divide two values element wise.',\n examples: ['a = [1, 2, 3; 4, 5, 6]', 'b = [2, 1, 1; 3, 2, 5]', 'a ./ b'],\n seealso: ['multiply', 'dotMultiply', 'divide']\n};","export var dotMultiplyDocs = {\n name: 'dotMultiply',\n category: 'Operators',\n syntax: ['x .* y', 'dotMultiply(x, y)'],\n description: 'Multiply two values element wise.',\n examples: ['a = [1, 2, 3; 4, 5, 6]', 'b = [2, 1, 1; 3, 2, 5]', 'a .* b'],\n seealso: ['multiply', 'divide', 'dotDivide']\n};","export var dotPowDocs = {\n name: 'dotPow',\n category: 'Operators',\n syntax: ['x .^ y', 'dotPow(x, y)'],\n description: 'Calculates the power of x to y element wise.',\n examples: ['a = [1, 2, 3; 4, 5, 6]', 'a .^ 2'],\n seealso: ['pow']\n};","export var expDocs = {\n name: 'exp',\n category: 'Arithmetic',\n syntax: ['exp(x)'],\n description: 'Calculate the exponent of a value.',\n examples: ['exp(1.3)', 'e ^ 1.3', 'log(exp(1.3))', 'x = 2.4', '(exp(i*x) == cos(x) + i*sin(x)) # Euler\\'s formula'],\n seealso: ['expm', 'expm1', 'pow', 'log']\n};","export var expmDocs = {\n name: 'expm',\n category: 'Arithmetic',\n syntax: ['exp(x)'],\n description: 'Compute the matrix exponential, expm(A) = e^A. ' + 'The matrix must be square. ' + 'Not to be confused with exp(a), which performs element-wise exponentiation.',\n examples: ['expm([[0,2],[0,0]])'],\n seealso: ['exp']\n};","export var expm1Docs = {\n name: 'expm1',\n category: 'Arithmetic',\n syntax: ['expm1(x)'],\n description: 'Calculate the value of subtracting 1 from the exponential value.',\n examples: ['expm1(2)', 'pow(e, 2) - 1', 'log(expm1(2) + 1)'],\n seealso: ['exp', 'pow', 'log']\n};","export var fixDocs = {\n name: 'fix',\n category: 'Arithmetic',\n syntax: ['fix(x)'],\n description: 'Round a value towards zero. If x is complex, both real and imaginary part are rounded towards zero.',\n examples: ['fix(3.2)', 'fix(3.8)', 'fix(-4.2)', 'fix(-4.8)'],\n seealso: ['ceil', 'floor', 'round']\n};","export var floorDocs = {\n name: 'floor',\n category: 'Arithmetic',\n syntax: ['floor(x)'],\n description: 'Round a value towards minus infinity.If x is complex, both real and imaginary part are rounded towards minus infinity.',\n examples: ['floor(3.2)', 'floor(3.8)', 'floor(-4.2)'],\n seealso: ['ceil', 'fix', 'round']\n};","export var gcdDocs = {\n name: 'gcd',\n category: 'Arithmetic',\n syntax: ['gcd(a, b)', 'gcd(a, b, c, ...)'],\n description: 'Compute the greatest common divisor.',\n examples: ['gcd(8, 12)', 'gcd(-4, 6)', 'gcd(25, 15, -10)'],\n seealso: ['lcm', 'xgcd']\n};","export var hypotDocs = {\n name: 'hypot',\n category: 'Arithmetic',\n syntax: ['hypot(a, b, c, ...)', 'hypot([a, b, c, ...])'],\n description: 'Calculate the hypotenusa of a list with values. ',\n examples: ['hypot(3, 4)', 'sqrt(3^2 + 4^2)', 'hypot(-2)', 'hypot([3, 4, 5])'],\n seealso: ['abs', 'norm']\n};","export var invmodDocs = {\n name: 'invmod',\n category: 'Arithmetic',\n syntax: ['invmod(a, b)'],\n description: 'Calculate the (modular) multiplicative inverse of a modulo b. Solution to the equation ax ≣ 1 (mod b)',\n examples: ['invmod(8, 12)', 'invmod(7, 13)', 'invmod(15151, 15122)'],\n seealso: ['gcd', 'xgcd']\n};","export var lcmDocs = {\n name: 'lcm',\n category: 'Arithmetic',\n syntax: ['lcm(x, y)'],\n description: 'Compute the least common multiple.',\n examples: ['lcm(4, 6)', 'lcm(6, 21)', 'lcm(6, 21, 5)'],\n seealso: ['gcd']\n};","export var logDocs = {\n name: 'log',\n category: 'Arithmetic',\n syntax: ['log(x)', 'log(x, base)'],\n description: 'Compute the logarithm of a value. If no base is provided, the natural logarithm of x is calculated. If base if provided, the logarithm is calculated for the specified base. log(x, base) is defined as log(x) / log(base).',\n examples: ['log(3.5)', 'a = log(2.4)', 'exp(a)', '10 ^ 4', 'log(10000, 10)', 'log(10000) / log(10)', 'b = log(1024, 2)', '2 ^ b'],\n seealso: ['exp', 'log1p', 'log2', 'log10']\n};","export var log10Docs = {\n name: 'log10',\n category: 'Arithmetic',\n syntax: ['log10(x)'],\n description: 'Compute the 10-base logarithm of a value.',\n examples: ['log10(0.00001)', 'log10(10000)', '10 ^ 4', 'log(10000) / log(10)', 'log(10000, 10)'],\n seealso: ['exp', 'log']\n};","export var log1pDocs = {\n name: 'log1p',\n category: 'Arithmetic',\n syntax: ['log1p(x)', 'log1p(x, base)'],\n description: 'Calculate the logarithm of a `value+1`',\n examples: ['log1p(2.5)', 'exp(log1p(1.4))', 'pow(10, 4)', 'log1p(9999, 10)', 'log1p(9999) / log(10)'],\n seealso: ['exp', 'log', 'log2', 'log10']\n};","export var log2Docs = {\n name: 'log2',\n category: 'Arithmetic',\n syntax: ['log2(x)'],\n description: 'Calculate the 2-base of a value. This is the same as calculating `log(x, 2)`.',\n examples: ['log2(0.03125)', 'log2(16)', 'log2(16) / log2(2)', 'pow(2, 4)'],\n seealso: ['exp', 'log1p', 'log', 'log10']\n};","export var modDocs = {\n name: 'mod',\n category: 'Operators',\n syntax: ['x % y', 'x mod y', 'mod(x, y)'],\n description: 'Calculates the modulus, the remainder of an integer division.',\n examples: ['7 % 3', '11 % 2', '10 mod 4', 'isOdd(x) = x % 2', 'isOdd(2)', 'isOdd(3)'],\n seealso: ['divide']\n};","export var multiplyDocs = {\n name: 'multiply',\n category: 'Operators',\n syntax: ['x * y', 'multiply(x, y)'],\n description: 'multiply two values.',\n examples: ['a = 2.1 * 3.4', 'a / 3.4', '2 * 3 + 4', '2 * (3 + 4)', '3 * 2.1 km'],\n seealso: ['divide']\n};","export var normDocs = {\n name: 'norm',\n category: 'Arithmetic',\n syntax: ['norm(x)', 'norm(x, p)'],\n description: 'Calculate the norm of a number, vector or matrix.',\n examples: ['abs(-3.5)', 'norm(-3.5)', 'norm(3 - 4i)', 'norm([1, 2, -3], Infinity)', 'norm([1, 2, -3], -Infinity)', 'norm([3, 4], 2)', 'norm([[1, 2], [3, 4]], 1)', 'norm([[1, 2], [3, 4]], \"inf\")', 'norm([[1, 2], [3, 4]], \"fro\")']\n};","export var nthRootDocs = {\n name: 'nthRoot',\n category: 'Arithmetic',\n syntax: ['nthRoot(a)', 'nthRoot(a, root)'],\n description: 'Calculate the nth root of a value. ' + 'The principal nth root of a positive real number A, ' + 'is the positive real solution of the equation \"x^root = A\".',\n examples: ['4 ^ 3', 'nthRoot(64, 3)', 'nthRoot(9, 2)', 'sqrt(9)'],\n seealso: ['nthRoots', 'pow', 'sqrt']\n};","export var nthRootsDocs = {\n name: 'nthRoots',\n category: 'Arithmetic',\n syntax: ['nthRoots(A)', 'nthRoots(A, root)'],\n description: '' + 'Calculate the nth roots of a value. ' + 'An nth root of a positive real number A, ' + 'is a positive real solution of the equation \"x^root = A\". ' + 'This function returns an array of complex values.',\n examples: ['nthRoots(1)', 'nthRoots(1, 3)'],\n seealso: ['sqrt', 'pow', 'nthRoot']\n};","export var powDocs = {\n name: 'pow',\n category: 'Operators',\n syntax: ['x ^ y', 'pow(x, y)'],\n description: 'Calculates the power of x to y, x^y.',\n examples: ['2^3', '2*2*2', '1 + e ^ (pi * i)', 'pow([[1, 2], [4, 3]], 2)', 'pow([[1, 2], [4, 3]], -1)'],\n seealso: ['multiply', 'nthRoot', 'nthRoots', 'sqrt']\n};","export var roundDocs = {\n name: 'round',\n category: 'Arithmetic',\n syntax: ['round(x)', 'round(x, n)'],\n description: 'round a value towards the nearest integer.If x is complex, both real and imaginary part are rounded towards the nearest integer. When n is specified, the value is rounded to n decimals.',\n examples: ['round(3.2)', 'round(3.8)', 'round(-4.2)', 'round(-4.8)', 'round(pi, 3)', 'round(123.45678, 2)'],\n seealso: ['ceil', 'floor', 'fix']\n};","export var signDocs = {\n name: 'sign',\n category: 'Arithmetic',\n syntax: ['sign(x)'],\n description: 'Compute the sign of a value. The sign of a value x is 1 when x>1, -1 when x<0, and 0 when x=0.',\n examples: ['sign(3.5)', 'sign(-4.2)', 'sign(0)'],\n seealso: ['abs']\n};","export var sqrtDocs = {\n name: 'sqrt',\n category: 'Arithmetic',\n syntax: ['sqrt(x)'],\n description: 'Compute the square root value. If x = y * y, then y is the square root of x.',\n examples: ['sqrt(25)', '5 * 5', 'sqrt(-1)'],\n seealso: ['square', 'sqrtm', 'multiply', 'nthRoot', 'nthRoots', 'pow']\n};","export var sqrtmDocs = {\n name: 'sqrtm',\n category: 'Arithmetic',\n syntax: ['sqrtm(x)'],\n description: 'Calculate the principal square root of a square matrix. The principal square root matrix `X` of another matrix `A` is such that `X * X = A`.',\n examples: ['sqrtm([[33, 24], [48, 57]])'],\n seealso: ['sqrt', 'abs', 'square', 'multiply']\n};","export var sylvesterDocs = {\n name: 'sylvester',\n category: 'Algebra',\n syntax: ['sylvester(A,B,C)'],\n description: 'Solves the real-valued Sylvester equation AX+XB=C for X',\n examples: ['sylvester([[-1, -2], [1, 1]], [[-2, 1], [-1, 2]], [[-3, 2], [3, 0]])', 'A = [[-1, -2], [1, 1]]; B = [[2, -1], [1, -2]]; C = [[-3, 2], [3, 0]]', 'sylvester(A, B, C)'],\n seealso: ['schur', 'lyap']\n};","export var schurDocs = {\n name: 'schur',\n category: 'Algebra',\n syntax: ['schur(A)'],\n description: 'Performs a real Schur decomposition of the real matrix A = UTU\\'',\n examples: ['schur([[1, 0], [-4, 3]])', 'A = [[1, 0], [-4, 3]]', 'schur(A)'],\n seealso: ['lyap', 'sylvester']\n};","export var lyapDocs = {\n name: 'lyap',\n category: 'Algebra',\n syntax: ['lyap(A,Q)'],\n description: 'Solves the Continuous-time Lyapunov equation AP+PA\\'+Q=0 for P',\n examples: ['lyap([[-2, 0], [1, -4]], [[3, 1], [1, 3]])', 'A = [[-2, 0], [1, -4]]', 'Q = [[3, 1], [1, 3]]', 'lyap(A,Q)'],\n seealso: ['schur', 'sylvester']\n};","export var squareDocs = {\n name: 'square',\n category: 'Arithmetic',\n syntax: ['square(x)'],\n description: 'Compute the square of a value. The square of x is x * x.',\n examples: ['square(3)', 'sqrt(9)', '3^2', '3 * 3'],\n seealso: ['multiply', 'pow', 'sqrt', 'cube']\n};","export var subtractDocs = {\n name: 'subtract',\n category: 'Operators',\n syntax: ['x - y', 'subtract(x, y)'],\n description: 'subtract two values.',\n examples: ['a = 5.3 - 2', 'a + 2', '2/3 - 1/6', '2 * 3 - 3', '2.1 km - 500m'],\n seealso: ['add']\n};","export var unaryMinusDocs = {\n name: 'unaryMinus',\n category: 'Operators',\n syntax: ['-x', 'unaryMinus(x)'],\n description: 'Inverse the sign of a value. Converts booleans and strings to numbers.',\n examples: ['-4.5', '-(-5.6)', '-\"22\"'],\n seealso: ['add', 'subtract', 'unaryPlus']\n};","export var unaryPlusDocs = {\n name: 'unaryPlus',\n category: 'Operators',\n syntax: ['+x', 'unaryPlus(x)'],\n description: 'Converts booleans and strings to numbers.',\n examples: ['+true', '+\"2\"'],\n seealso: ['add', 'subtract', 'unaryMinus']\n};","export var xgcdDocs = {\n name: 'xgcd',\n category: 'Arithmetic',\n syntax: ['xgcd(a, b)'],\n description: 'Calculate the extended greatest common divisor for two values. The result is an array [d, x, y] with 3 entries, where d is the greatest common divisor, and d = x * a + y * b.',\n examples: ['xgcd(8, 12)', 'gcd(8, 12)', 'xgcd(36163, 21199)'],\n seealso: ['gcd', 'lcm']\n};","export var bitAndDocs = {\n name: 'bitAnd',\n category: 'Bitwise',\n syntax: ['x & y', 'bitAnd(x, y)'],\n description: 'Bitwise AND operation. Performs the logical AND operation on each pair of the corresponding bits of the two given values by multiplying them. If both bits in the compared position are 1, the bit in the resulting binary representation is 1, otherwise, the result is 0',\n examples: ['5 & 3', 'bitAnd(53, 131)', '[1, 12, 31] & 42'],\n seealso: ['bitNot', 'bitOr', 'bitXor', 'leftShift', 'rightArithShift', 'rightLogShift']\n};","export var bitNotDocs = {\n name: 'bitNot',\n category: 'Bitwise',\n syntax: ['~x', 'bitNot(x)'],\n description: 'Bitwise NOT operation. Performs a logical negation on each bit of the given value. Bits that are 0 become 1, and those that are 1 become 0.',\n examples: ['~1', '~2', 'bitNot([2, -3, 4])'],\n seealso: ['bitAnd', 'bitOr', 'bitXor', 'leftShift', 'rightArithShift', 'rightLogShift']\n};","export var bitOrDocs = {\n name: 'bitOr',\n category: 'Bitwise',\n syntax: ['x | y', 'bitOr(x, y)'],\n description: 'Bitwise OR operation. Performs the logical inclusive OR operation on each pair of corresponding bits of the two given values. The result in each position is 1 if the first bit is 1 or the second bit is 1 or both bits are 1, otherwise, the result is 0.',\n examples: ['5 | 3', 'bitOr([1, 2, 3], 4)'],\n seealso: ['bitAnd', 'bitNot', 'bitXor', 'leftShift', 'rightArithShift', 'rightLogShift']\n};","export var bitXorDocs = {\n name: 'bitXor',\n category: 'Bitwise',\n syntax: ['bitXor(x, y)'],\n description: 'Bitwise XOR operation, exclusive OR. Performs the logical exclusive OR operation on each pair of corresponding bits of the two given values. The result in each position is 1 if only the first bit is 1 or only the second bit is 1, but will be 0 if both are 0 or both are 1.',\n examples: ['bitOr(1, 2)', 'bitXor([2, 3, 4], 4)'],\n seealso: ['bitAnd', 'bitNot', 'bitOr', 'leftShift', 'rightArithShift', 'rightLogShift']\n};","export var leftShiftDocs = {\n name: 'leftShift',\n category: 'Bitwise',\n syntax: ['x << y', 'leftShift(x, y)'],\n description: 'Bitwise left logical shift of a value x by y number of bits.',\n examples: ['4 << 1', '8 >> 1'],\n seealso: ['bitAnd', 'bitNot', 'bitOr', 'bitXor', 'rightArithShift', 'rightLogShift']\n};","export var rightArithShiftDocs = {\n name: 'rightArithShift',\n category: 'Bitwise',\n syntax: ['x >> y', 'rightArithShift(x, y)'],\n description: 'Bitwise right arithmetic shift of a value x by y number of bits.',\n examples: ['8 >> 1', '4 << 1', '-12 >> 2'],\n seealso: ['bitAnd', 'bitNot', 'bitOr', 'bitXor', 'leftShift', 'rightLogShift']\n};","export var rightLogShiftDocs = {\n name: 'rightLogShift',\n category: 'Bitwise',\n syntax: ['x >>> y', 'rightLogShift(x, y)'],\n description: 'Bitwise right logical shift of a value x by y number of bits.',\n examples: ['8 >>> 1', '4 << 1', '-12 >>> 2'],\n seealso: ['bitAnd', 'bitNot', 'bitOr', 'bitXor', 'leftShift', 'rightArithShift']\n};","export var bellNumbersDocs = {\n name: 'bellNumbers',\n category: 'Combinatorics',\n syntax: ['bellNumbers(n)'],\n description: 'The Bell Numbers count the number of partitions of a set. A partition is a pairwise disjoint subset of S whose union is S. `bellNumbers` only takes integer arguments. The following condition must be enforced: n >= 0.',\n examples: ['bellNumbers(3)', 'bellNumbers(8)'],\n seealso: ['stirlingS2']\n};","export var catalanDocs = {\n name: 'catalan',\n category: 'Combinatorics',\n syntax: ['catalan(n)'],\n description: 'The Catalan Numbers enumerate combinatorial structures of many different types. catalan only takes integer arguments. The following condition must be enforced: n >= 0.',\n examples: ['catalan(3)', 'catalan(8)'],\n seealso: ['bellNumbers']\n};","export var compositionDocs = {\n name: 'composition',\n category: 'Combinatorics',\n syntax: ['composition(n, k)'],\n description: 'The composition counts of n into k parts. composition only takes integer arguments. The following condition must be enforced: k <= n.',\n examples: ['composition(5, 3)'],\n seealso: ['combinations']\n};","export var stirlingS2Docs = {\n name: 'stirlingS2',\n category: 'Combinatorics',\n syntax: ['stirlingS2(n, k)'],\n description: 'he Stirling numbers of the second kind, counts the number of ways to partition a set of n labelled objects into k nonempty unlabelled subsets. `stirlingS2` only takes integer arguments. The following condition must be enforced: k <= n. If n = k or k = 1, then s(n,k) = 1.',\n examples: ['stirlingS2(5, 3)'],\n seealso: ['bellNumbers']\n};","export var argDocs = {\n name: 'arg',\n category: 'Complex',\n syntax: ['arg(x)'],\n description: 'Compute the argument of a complex value. If x = a+bi, the argument is computed as atan2(b, a).',\n examples: ['arg(2 + 2i)', 'atan2(3, 2)', 'arg(2 + 3i)'],\n seealso: ['re', 'im', 'conj', 'abs']\n};","export var conjDocs = {\n name: 'conj',\n category: 'Complex',\n syntax: ['conj(x)'],\n description: 'Compute the complex conjugate of a complex value. If x = a+bi, the complex conjugate is a-bi.',\n examples: ['conj(2 + 3i)', 'conj(2 - 3i)', 'conj(-5.2i)'],\n seealso: ['re', 'im', 'abs', 'arg']\n};","export var imDocs = {\n name: 'im',\n category: 'Complex',\n syntax: ['im(x)'],\n description: 'Get the imaginary part of a complex number.',\n examples: ['im(2 + 3i)', 're(2 + 3i)', 'im(-5.2i)', 'im(2.4)'],\n seealso: ['re', 'conj', 'abs', 'arg']\n};","export var reDocs = {\n name: 're',\n category: 'Complex',\n syntax: ['re(x)'],\n description: 'Get the real part of a complex number.',\n examples: ['re(2 + 3i)', 'im(2 + 3i)', 're(-5.2i)', 're(2.4)'],\n seealso: ['im', 'conj', 'abs', 'arg']\n};","export var evaluateDocs = {\n name: 'evaluate',\n category: 'Expression',\n syntax: ['evaluate(expression)', 'evaluate(expression, scope)', 'evaluate([expr1, expr2, expr3, ...])', 'evaluate([expr1, expr2, expr3, ...], scope)'],\n description: 'Evaluate an expression or an array with expressions.',\n examples: ['evaluate(\"2 + 3\")', 'evaluate(\"sqrt(16)\")', 'evaluate(\"2 inch to cm\")', 'evaluate(\"sin(x * pi)\", { \"x\": 1/2 })', 'evaluate([\"width=2\", \"height=4\",\"width*height\"])'],\n seealso: []\n};","export var helpDocs = {\n name: 'help',\n category: 'Expression',\n syntax: ['help(object)', 'help(string)'],\n description: 'Display documentation on a function or data type.',\n examples: ['help(sqrt)', 'help(\"complex\")'],\n seealso: []\n};","export var distanceDocs = {\n name: 'distance',\n category: 'Geometry',\n syntax: ['distance([x1, y1], [x2, y2])', 'distance([[x1, y1], [x2, y2]])'],\n description: 'Calculates the Euclidean distance between two points.',\n examples: ['distance([0,0], [4,4])', 'distance([[0,0], [4,4]])'],\n seealso: []\n};","export var intersectDocs = {\n name: 'intersect',\n category: 'Geometry',\n syntax: ['intersect(expr1, expr2, expr3, expr4)', 'intersect(expr1, expr2, expr3)'],\n description: 'Computes the intersection point of lines and/or planes.',\n examples: ['intersect([0, 0], [10, 10], [10, 0], [0, 10])', 'intersect([1, 0, 1], [4, -2, 2], [1, 1, 1, 6])'],\n seealso: []\n};","export var andDocs = {\n name: 'and',\n category: 'Logical',\n syntax: ['x and y', 'and(x, y)'],\n description: 'Logical and. Test whether two values are both defined with a nonzero/nonempty value.',\n examples: ['true and false', 'true and true', '2 and 4'],\n seealso: ['not', 'or', 'xor']\n};","export var notDocs = {\n name: 'not',\n category: 'Logical',\n syntax: ['not x', 'not(x)'],\n description: 'Logical not. Flips the boolean value of given argument.',\n examples: ['not true', 'not false', 'not 2', 'not 0'],\n seealso: ['and', 'or', 'xor']\n};","export var orDocs = {\n name: 'or',\n category: 'Logical',\n syntax: ['x or y', 'or(x, y)'],\n description: 'Logical or. Test if at least one value is defined with a nonzero/nonempty value.',\n examples: ['true or false', 'false or false', '0 or 4'],\n seealso: ['not', 'and', 'xor']\n};","export var xorDocs = {\n name: 'xor',\n category: 'Logical',\n syntax: ['x xor y', 'xor(x, y)'],\n description: 'Logical exclusive or, xor. Test whether one and only one value is defined with a nonzero/nonempty value.',\n examples: ['true xor false', 'false xor false', 'true xor true', '0 xor 4'],\n seealso: ['not', 'and', 'or']\n};","export var columnDocs = {\n name: 'column',\n category: 'Matrix',\n syntax: ['column(x, index)'],\n description: 'Return a column from a matrix or array.',\n examples: ['A = [[1, 2], [3, 4]]', 'column(A, 1)', 'column(A, 2)'],\n seealso: ['row', 'matrixFromColumns']\n};","export var concatDocs = {\n name: 'concat',\n category: 'Matrix',\n syntax: ['concat(A, B, C, ...)', 'concat(A, B, C, ..., dim)'],\n description: 'Concatenate matrices. By default, the matrices are concatenated by the last dimension. The dimension on which to concatenate can be provided as last argument.',\n examples: ['A = [1, 2; 5, 6]', 'B = [3, 4; 7, 8]', 'concat(A, B)', 'concat(A, B, 1)', 'concat(A, B, 2)'],\n seealso: ['det', 'diag', 'identity', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'trace', 'transpose', 'zeros']\n};","export var countDocs = {\n name: 'count',\n category: 'Matrix',\n syntax: ['count(x)'],\n description: 'Count the number of elements of a matrix, array or string.',\n examples: ['a = [1, 2; 3, 4; 5, 6]', 'count(a)', 'size(a)', 'count(\"hello world\")'],\n seealso: ['size']\n};","export var crossDocs = {\n name: 'cross',\n category: 'Matrix',\n syntax: ['cross(A, B)'],\n description: 'Calculate the cross product for two vectors in three dimensional space.',\n examples: ['cross([1, 1, 0], [0, 1, 1])', 'cross([3, -3, 1], [4, 9, 2])', 'cross([2, 3, 4], [5, 6, 7])'],\n seealso: ['multiply', 'dot']\n};","export var ctransposeDocs = {\n name: 'ctranspose',\n category: 'Matrix',\n syntax: ['x\\'', 'ctranspose(x)'],\n description: 'Complex Conjugate and Transpose a matrix',\n examples: ['a = [1, 2, 3; 4, 5, 6]', 'a\\'', 'ctranspose(a)'],\n seealso: ['concat', 'det', 'diag', 'identity', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'trace', 'zeros']\n};","export var detDocs = {\n name: 'det',\n category: 'Matrix',\n syntax: ['det(x)'],\n description: 'Calculate the determinant of a matrix',\n examples: ['det([1, 2; 3, 4])', 'det([-2, 2, 3; -1, 1, 3; 2, 0, -1])'],\n seealso: ['concat', 'diag', 'identity', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'trace', 'transpose', 'zeros']\n};","export var diagDocs = {\n name: 'diag',\n category: 'Matrix',\n syntax: ['diag(x)', 'diag(x, k)'],\n description: 'Create a diagonal matrix or retrieve the diagonal of a matrix. When x is a vector, a matrix with the vector values on the diagonal will be returned. When x is a matrix, a vector with the diagonal values of the matrix is returned. When k is provided, the k-th diagonal will be filled in or retrieved, if k is positive, the values are placed on the super diagonal. When k is negative, the values are placed on the sub diagonal.',\n examples: ['diag(1:3)', 'diag(1:3, 1)', 'a = [1, 2, 3; 4, 5, 6; 7, 8, 9]', 'diag(a)'],\n seealso: ['concat', 'det', 'identity', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'trace', 'transpose', 'zeros']\n};","export var diffDocs = {\n name: 'diff',\n category: 'Matrix',\n syntax: ['diff(arr)', 'diff(arr, dim)'],\n description: ['Create a new matrix or array with the difference of the passed matrix or array.', 'Dim parameter is optional and used to indicant the dimension of the array/matrix to apply the difference', 'If no dimension parameter is passed it is assumed as dimension 0', 'Dimension is zero-based in javascript and one-based in the parser', 'Arrays must be \\'rectangular\\' meaning arrays like [1, 2]', 'If something is passed as a matrix it will be returned as a matrix but other than that all matrices are converted to arrays'],\n examples: ['A = [1, 2, 4, 7, 0]', 'diff(A)', 'diff(A, 1)', 'B = [[1, 2], [3, 4]]', 'diff(B)', 'diff(B, 1)', 'diff(B, 2)', 'diff(B, bignumber(2))', 'diff([[1, 2], matrix([3, 4])], 2)'],\n seealso: ['subtract', 'partitionSelect']\n};","export var dotDocs = {\n name: 'dot',\n category: 'Matrix',\n syntax: ['dot(A, B)', 'A * B'],\n description: 'Calculate the dot product of two vectors. ' + 'The dot product of A = [a1, a2, a3, ..., an] and B = [b1, b2, b3, ..., bn] ' + 'is defined as dot(A, B) = a1 * b1 + a2 * b2 + a3 * b3 + ... + an * bn',\n examples: ['dot([2, 4, 1], [2, 2, 3])', '[2, 4, 1] * [2, 2, 3]'],\n seealso: ['multiply', 'cross']\n};","export var eigsDocs = {\n name: 'eigs',\n category: 'Matrix',\n syntax: ['eigs(x)'],\n description: 'Calculate the eigenvalues and eigenvectors of a real symmetric matrix',\n examples: ['eigs([[5, 2.3], [2.3, 1]])'],\n seealso: ['inv']\n};","export var filterDocs = {\n name: 'filter',\n category: 'Matrix',\n syntax: ['filter(x, test)'],\n description: 'Filter items in a matrix.',\n examples: ['isPositive(x) = x > 0', 'filter([6, -2, -1, 4, 3], isPositive)', 'filter([6, -2, 0, 1, 0], x != 0)'],\n seealso: ['sort', 'map', 'forEach']\n};","export var flattenDocs = {\n name: 'flatten',\n category: 'Matrix',\n syntax: ['flatten(x)'],\n description: 'Flatten a multi dimensional matrix into a single dimensional matrix.',\n examples: ['a = [1, 2, 3; 4, 5, 6]', 'size(a)', 'b = flatten(a)', 'size(b)'],\n seealso: ['concat', 'resize', 'size', 'squeeze']\n};","export var forEachDocs = {\n name: 'forEach',\n category: 'Matrix',\n syntax: ['forEach(x, callback)'],\n description: 'Iterates over all elements of a matrix/array, and executes the given callback function.',\n examples: ['numberOfPets = {}', 'addPet(n) = numberOfPets[n] = (numberOfPets[n] ? numberOfPets[n]:0 ) + 1;', 'forEach([\"Dog\",\"Cat\",\"Cat\"], addPet)', 'numberOfPets'],\n seealso: ['map', 'sort', 'filter']\n};","export var getMatrixDataTypeDocs = {\n name: 'getMatrixDataType',\n category: 'Matrix',\n syntax: ['getMatrixDataType(x)'],\n description: 'Find the data type of all elements in a matrix or array, ' + 'for example \"number\" if all items are a number ' + 'and \"Complex\" if all values are complex numbers. ' + 'If a matrix contains more than one data type, it will return \"mixed\".',\n examples: ['getMatrixDataType([1, 2, 3])', 'getMatrixDataType([[5 cm], [2 inch]])', 'getMatrixDataType([1, \"text\"])', 'getMatrixDataType([1, bignumber(4)])'],\n seealso: ['matrix', 'sparse', 'typeOf']\n};","export var identityDocs = {\n name: 'identity',\n category: 'Matrix',\n syntax: ['identity(n)', 'identity(m, n)', 'identity([m, n])'],\n description: 'Returns the identity matrix with size m-by-n. The matrix has ones on the diagonal and zeros elsewhere.',\n examples: ['identity(3)', 'identity(3, 5)', 'a = [1, 2, 3; 4, 5, 6]', 'identity(size(a))'],\n seealso: ['concat', 'det', 'diag', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'trace', 'transpose', 'zeros']\n};","export var invDocs = {\n name: 'inv',\n category: 'Matrix',\n syntax: ['inv(x)'],\n description: 'Calculate the inverse of a matrix',\n examples: ['inv([1, 2; 3, 4])', 'inv(4)', '1 / 4'],\n seealso: ['concat', 'det', 'diag', 'identity', 'ones', 'range', 'size', 'squeeze', 'subset', 'trace', 'transpose', 'zeros']\n};","export var pinvDocs = {\n name: 'pinv',\n category: 'Matrix',\n syntax: ['pinv(x)'],\n description: 'Calculate the Moore–Penrose inverse of a matrix',\n examples: ['pinv([1, 2; 3, 4])', 'pinv([[1, 0], [0, 1], [0, 1]])', 'pinv(4)'],\n seealso: ['inv']\n};","export var kronDocs = {\n name: 'kron',\n category: 'Matrix',\n syntax: ['kron(x, y)'],\n description: 'Calculates the kronecker product of 2 matrices or vectors.',\n examples: ['kron([[1, 0], [0, 1]], [[1, 2], [3, 4]])', 'kron([1,1], [2,3,4])'],\n seealso: ['multiply', 'dot', 'cross']\n};","export var mapDocs = {\n name: 'map',\n category: 'Matrix',\n syntax: ['map(x, callback)'],\n description: 'Create a new matrix or array with the results of the callback function executed on each entry of the matrix/array.',\n examples: ['map([1, 2, 3], square)'],\n seealso: ['filter', 'forEach']\n};","export var matrixFromColumnsDocs = {\n name: 'matrixFromColumns',\n category: 'Matrix',\n syntax: ['matrixFromColumns(...arr)', 'matrixFromColumns(row1, row2)', 'matrixFromColumns(row1, row2, row3)'],\n description: 'Create a dense matrix from vectors as individual columns.',\n examples: ['matrixFromColumns([1, 2, 3], [[4],[5],[6]])'],\n seealso: ['matrix', 'matrixFromRows', 'matrixFromFunction', 'zeros']\n};","export var matrixFromFunctionDocs = {\n name: 'matrixFromFunction',\n category: 'Matrix',\n syntax: ['matrixFromFunction(size, fn)', 'matrixFromFunction(size, fn, format)', 'matrixFromFunction(size, fn, format, datatype)', 'matrixFromFunction(size, format, fn)', 'matrixFromFunction(size, format, datatype, fn)'],\n description: 'Create a matrix by evaluating a generating function at each index.',\n examples: ['f(I) = I[1] - I[2]', 'matrixFromFunction([3,3], f)', 'g(I) = I[1] - I[2] == 1 ? 4 : 0', 'matrixFromFunction([100, 100], \"sparse\", g)', 'matrixFromFunction([5], random)'],\n seealso: ['matrix', 'matrixFromRows', 'matrixFromColumns', 'zeros']\n};","export var matrixFromRowsDocs = {\n name: 'matrixFromRows',\n category: 'Matrix',\n syntax: ['matrixFromRows(...arr)', 'matrixFromRows(row1, row2)', 'matrixFromRows(row1, row2, row3)'],\n description: 'Create a dense matrix from vectors as individual rows.',\n examples: ['matrixFromRows([1, 2, 3], [[4],[5],[6]])'],\n seealso: ['matrix', 'matrixFromColumns', 'matrixFromFunction', 'zeros']\n};","export var onesDocs = {\n name: 'ones',\n category: 'Matrix',\n syntax: ['ones(m)', 'ones(m, n)', 'ones(m, n, p, ...)', 'ones([m])', 'ones([m, n])', 'ones([m, n, p, ...])'],\n description: 'Create a matrix containing ones.',\n examples: ['ones(3)', 'ones(3, 5)', 'ones([2,3]) * 4.5', 'a = [1, 2, 3; 4, 5, 6]', 'ones(size(a))'],\n seealso: ['concat', 'det', 'diag', 'identity', 'inv', 'range', 'size', 'squeeze', 'subset', 'trace', 'transpose', 'zeros']\n};","export var partitionSelectDocs = {\n name: 'partitionSelect',\n category: 'Matrix',\n syntax: ['partitionSelect(x, k)', 'partitionSelect(x, k, compare)'],\n description: 'Partition-based selection of an array or 1D matrix. Will find the kth smallest value, and mutates the input array. Uses Quickselect.',\n examples: ['partitionSelect([5, 10, 1], 2)', 'partitionSelect([\"C\", \"B\", \"A\", \"D\"], 1, compareText)', 'arr = [5, 2, 1]', 'partitionSelect(arr, 0) # returns 1, arr is now: [1, 2, 5]', 'arr', 'partitionSelect(arr, 1, \\'desc\\') # returns 2, arr is now: [5, 2, 1]', 'arr'],\n seealso: ['sort']\n};","export var rangeDocs = {\n name: 'range',\n category: 'Type',\n syntax: ['start:end', 'start:step:end', 'range(start, end)', 'range(start, end, step)', 'range(string)'],\n description: 'Create a range. Lower bound of the range is included, upper bound is excluded.',\n examples: ['1:5', '3:-1:-3', 'range(3, 7)', 'range(0, 12, 2)', 'range(\"4:10\")', 'range(1m, 1m, 3m)', 'a = [1, 2, 3, 4; 5, 6, 7, 8]', 'a[1:2, 1:2]'],\n seealso: ['concat', 'det', 'diag', 'identity', 'inv', 'ones', 'size', 'squeeze', 'subset', 'trace', 'transpose', 'zeros']\n};","export var reshapeDocs = {\n name: 'reshape',\n category: 'Matrix',\n syntax: ['reshape(x, sizes)'],\n description: 'Reshape a multi dimensional array to fit the specified dimensions.',\n examples: ['reshape([1, 2, 3, 4, 5, 6], [2, 3])', 'reshape([[1, 2], [3, 4]], [1, 4])', 'reshape([[1, 2], [3, 4]], [4])', 'reshape([1, 2, 3, 4], [-1, 2])'],\n seealso: ['size', 'squeeze', 'resize']\n};","export var resizeDocs = {\n name: 'resize',\n category: 'Matrix',\n syntax: ['resize(x, size)', 'resize(x, size, defaultValue)'],\n description: 'Resize a matrix.',\n examples: ['resize([1,2,3,4,5], [3])', 'resize([1,2,3], [5])', 'resize([1,2,3], [5], -1)', 'resize(2, [2, 3])', 'resize(\"hello\", [8], \"!\")'],\n seealso: ['size', 'subset', 'squeeze', 'reshape']\n};","export var rotateDocs = {\n name: 'rotate',\n category: 'Matrix',\n syntax: ['rotate(w, theta)', 'rotate(w, theta, v)'],\n description: 'Returns a 2-D rotation matrix (2x2) for a given angle (in radians). ' + 'Returns a 2-D rotation matrix (3x3) of a given angle (in radians) around given axis.',\n examples: ['rotate([1, 0], pi / 2)', 'rotate(matrix([1, 0]), unit(\"35deg\"))', 'rotate([1, 0, 0], unit(\"90deg\"), [0, 0, 1])', 'rotate(matrix([1, 0, 0]), unit(\"90deg\"), matrix([0, 0, 1]))'],\n seealso: ['matrix', 'rotationMatrix']\n};","export var rotationMatrixDocs = {\n name: 'rotationMatrix',\n category: 'Matrix',\n syntax: ['rotationMatrix(theta)', 'rotationMatrix(theta, v)', 'rotationMatrix(theta, v, format)'],\n description: 'Returns a 2-D rotation matrix (2x2) for a given angle (in radians). ' + 'Returns a 2-D rotation matrix (3x3) of a given angle (in radians) around given axis.',\n examples: ['rotationMatrix(pi / 2)', 'rotationMatrix(unit(\"45deg\"), [0, 0, 1])', 'rotationMatrix(1, matrix([0, 0, 1]), \"sparse\")'],\n seealso: ['cos', 'sin']\n};","export var rowDocs = {\n name: 'row',\n category: 'Matrix',\n syntax: ['row(x, index)'],\n description: 'Return a row from a matrix or array.',\n examples: ['A = [[1, 2], [3, 4]]', 'row(A, 1)', 'row(A, 2)'],\n seealso: ['column', 'matrixFromRows']\n};","export var sizeDocs = {\n name: 'size',\n category: 'Matrix',\n syntax: ['size(x)'],\n description: 'Calculate the size of a matrix.',\n examples: ['size(2.3)', 'size(\"hello world\")', 'a = [1, 2; 3, 4; 5, 6]', 'size(a)', 'size(1:6)'],\n seealso: ['concat', 'count', 'det', 'diag', 'identity', 'inv', 'ones', 'range', 'squeeze', 'subset', 'trace', 'transpose', 'zeros']\n};","export var sortDocs = {\n name: 'sort',\n category: 'Matrix',\n syntax: ['sort(x)', 'sort(x, compare)'],\n description: 'Sort the items in a matrix. Compare can be a string \"asc\", \"desc\", \"natural\", or a custom sort function.',\n examples: ['sort([5, 10, 1])', 'sort([\"C\", \"B\", \"A\", \"D\"], \"natural\")', 'sortByLength(a, b) = size(a)[1] - size(b)[1]', 'sort([\"Langdon\", \"Tom\", \"Sara\"], sortByLength)', 'sort([\"10\", \"1\", \"2\"], \"natural\")'],\n seealso: ['map', 'filter', 'forEach']\n};","export var squeezeDocs = {\n name: 'squeeze',\n category: 'Matrix',\n syntax: ['squeeze(x)'],\n description: 'Remove inner and outer singleton dimensions from a matrix.',\n examples: ['a = zeros(3,2,1)', 'size(squeeze(a))', 'b = zeros(1,1,3)', 'size(squeeze(b))'],\n seealso: ['concat', 'det', 'diag', 'identity', 'inv', 'ones', 'range', 'size', 'subset', 'trace', 'transpose', 'zeros']\n};","export var subsetDocs = {\n name: 'subset',\n category: 'Matrix',\n syntax: ['value(index)', 'value(index) = replacement', 'subset(value, [index])', 'subset(value, [index], replacement)'],\n description: 'Get or set a subset of the entries of a matrix or ' + 'characters of a string. ' + 'Indexes are one-based. There should be one index specification for ' + 'each dimension of the target. Each specification can be a single ' + 'index, a list of indices, or a range in colon notation `l:u`. ' + 'In a range, both the lower bound l and upper bound u are included; ' + 'and if a bound is omitted it defaults to the most extreme valid value. ' + 'The cartesian product of the indices specified in each dimension ' + 'determines the target of the operation.',\n examples: ['d = [1, 2; 3, 4]', 'e = []', 'e[1, 1:2] = [5, 6]', 'e[2, :] = [7, 8]', 'f = d * e', 'f[2, 1]', 'f[:, 1]', 'f[[1,2], [1,3]] = [9, 10; 11, 12]', 'f'],\n seealso: ['concat', 'det', 'diag', 'identity', 'inv', 'ones', 'range', 'size', 'squeeze', 'trace', 'transpose', 'zeros']\n};","export var traceDocs = {\n name: 'trace',\n category: 'Matrix',\n syntax: ['trace(A)'],\n description: 'Calculate the trace of a matrix: the sum of the elements on the main diagonal of a square matrix.',\n examples: ['A = [1, 2, 3; -1, 2, 3; 2, 0, 3]', 'trace(A)'],\n seealso: ['concat', 'det', 'diag', 'identity', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'transpose', 'zeros']\n};","export var transposeDocs = {\n name: 'transpose',\n category: 'Matrix',\n syntax: ['x\\'', 'transpose(x)'],\n description: 'Transpose a matrix',\n examples: ['a = [1, 2, 3; 4, 5, 6]', 'a\\'', 'transpose(a)'],\n seealso: ['concat', 'det', 'diag', 'identity', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'trace', 'zeros']\n};","export var zerosDocs = {\n name: 'zeros',\n category: 'Matrix',\n syntax: ['zeros(m)', 'zeros(m, n)', 'zeros(m, n, p, ...)', 'zeros([m])', 'zeros([m, n])', 'zeros([m, n, p, ...])'],\n description: 'Create a matrix containing zeros.',\n examples: ['zeros(3)', 'zeros(3, 5)', 'a = [1, 2, 3; 4, 5, 6]', 'zeros(size(a))'],\n seealso: ['concat', 'det', 'diag', 'identity', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'trace', 'transpose']\n};","export var fftDocs = {\n name: 'fft',\n category: 'Matrix',\n syntax: ['fft(x)'],\n description: 'Calculate N-dimensional fourier transform',\n examples: ['fft([[1, 0], [1, 0]])'],\n seealso: ['ifft']\n};","export var ifftDocs = {\n name: 'ifft',\n category: 'Matrix',\n syntax: ['ifft(x)'],\n description: 'Calculate N-dimensional inverse fourier transform',\n examples: ['ifft([[2, 2], [0, 0]])'],\n seealso: ['fft']\n};","export var combinationsDocs = {\n name: 'combinations',\n category: 'Probability',\n syntax: ['combinations(n, k)'],\n description: 'Compute the number of combinations of n items taken k at a time',\n examples: ['combinations(7, 5)'],\n seealso: ['combinationsWithRep', 'permutations', 'factorial']\n};","export var combinationsWithRepDocs = {\n name: 'combinationsWithRep',\n category: 'Probability',\n syntax: ['combinationsWithRep(n, k)'],\n description: 'Compute the number of combinations of n items taken k at a time with replacements.',\n examples: ['combinationsWithRep(7, 5)'],\n seealso: ['combinations', 'permutations', 'factorial']\n};","export var factorialDocs = {\n name: 'factorial',\n category: 'Probability',\n syntax: ['n!', 'factorial(n)'],\n description: 'Compute the factorial of a value',\n examples: ['5!', '5 * 4 * 3 * 2 * 1', '3!'],\n seealso: ['combinations', 'combinationsWithRep', 'permutations', 'gamma']\n};","export var gammaDocs = {\n name: 'gamma',\n category: 'Probability',\n syntax: ['gamma(n)'],\n description: 'Compute the gamma function. For small values, the Lanczos approximation is used, and for large values the extended Stirling approximation.',\n examples: ['gamma(4)', '3!', 'gamma(1/2)', 'sqrt(pi)'],\n seealso: ['factorial']\n};","export var lgammaDocs = {\n name: 'lgamma',\n category: 'Probability',\n syntax: ['lgamma(n)'],\n description: 'Logarithm of the gamma function for real, positive numbers and complex numbers, ' + 'using Lanczos approximation for numbers and Stirling series for complex numbers.',\n examples: ['lgamma(4)', 'lgamma(1/2)', 'lgamma(i)', 'lgamma(complex(1.1, 2))'],\n seealso: ['gamma']\n};","export var kldivergenceDocs = {\n name: 'kldivergence',\n category: 'Probability',\n syntax: ['kldivergence(x, y)'],\n description: 'Calculate the Kullback-Leibler (KL) divergence between two distributions.',\n examples: ['kldivergence([0.7,0.5,0.4], [0.2,0.9,0.5])'],\n seealso: []\n};","export var multinomialDocs = {\n name: 'multinomial',\n category: 'Probability',\n syntax: ['multinomial(A)'],\n description: 'Multinomial Coefficients compute the number of ways of picking a1, a2, ..., ai unordered outcomes from `n` possibilities. multinomial takes one array of integers as an argument. The following condition must be enforced: every ai > 0.',\n examples: ['multinomial([1, 2, 1])'],\n seealso: ['combinations', 'factorial']\n};","export var permutationsDocs = {\n name: 'permutations',\n category: 'Probability',\n syntax: ['permutations(n)', 'permutations(n, k)'],\n description: 'Compute the number of permutations of n items taken k at a time',\n examples: ['permutations(5)', 'permutations(5, 3)'],\n seealso: ['combinations', 'combinationsWithRep', 'factorial']\n};","export var pickRandomDocs = {\n name: 'pickRandom',\n category: 'Probability',\n syntax: ['pickRandom(array)', 'pickRandom(array, number)', 'pickRandom(array, weights)', 'pickRandom(array, number, weights)', 'pickRandom(array, weights, number)'],\n description: 'Pick a random entry from a given array.',\n examples: ['pickRandom(0:10)', 'pickRandom([1, 3, 1, 6])', 'pickRandom([1, 3, 1, 6], 2)', 'pickRandom([1, 3, 1, 6], [2, 3, 2, 1])', 'pickRandom([1, 3, 1, 6], 2, [2, 3, 2, 1])', 'pickRandom([1, 3, 1, 6], [2, 3, 2, 1], 2)'],\n seealso: ['random', 'randomInt']\n};","export var randomDocs = {\n name: 'random',\n category: 'Probability',\n syntax: ['random()', 'random(max)', 'random(min, max)', 'random(size)', 'random(size, max)', 'random(size, min, max)'],\n description: 'Return a random number.',\n examples: ['random()', 'random(10, 20)', 'random([2, 3])'],\n seealso: ['pickRandom', 'randomInt']\n};","export var randomIntDocs = {\n name: 'randomInt',\n category: 'Probability',\n syntax: ['randomInt(max)', 'randomInt(min, max)', 'randomInt(size)', 'randomInt(size, max)', 'randomInt(size, min, max)'],\n description: 'Return a random integer number',\n examples: ['randomInt(10, 20)', 'randomInt([2, 3], 10)'],\n seealso: ['pickRandom', 'random']\n};","export var compareDocs = {\n name: 'compare',\n category: 'Relational',\n syntax: ['compare(x, y)'],\n description: 'Compare two values. ' + 'Returns 1 when x > y, -1 when x < y, and 0 when x == y.',\n examples: ['compare(2, 3)', 'compare(3, 2)', 'compare(2, 2)', 'compare(5cm, 40mm)', 'compare(2, [1, 2, 3])'],\n seealso: ['equal', 'unequal', 'smaller', 'smallerEq', 'largerEq', 'compareNatural', 'compareText']\n};","export var compareNaturalDocs = {\n name: 'compareNatural',\n category: 'Relational',\n syntax: ['compareNatural(x, y)'],\n description: 'Compare two values of any type in a deterministic, natural way. ' + 'Returns 1 when x > y, -1 when x < y, and 0 when x == y.',\n examples: ['compareNatural(2, 3)', 'compareNatural(3, 2)', 'compareNatural(2, 2)', 'compareNatural(5cm, 40mm)', 'compareNatural(\"2\", \"10\")', 'compareNatural(2 + 3i, 2 + 4i)', 'compareNatural([1, 2, 4], [1, 2, 3])', 'compareNatural([1, 5], [1, 2, 3])', 'compareNatural([1, 2], [1, 2])', 'compareNatural({a: 2}, {a: 4})'],\n seealso: ['equal', 'unequal', 'smaller', 'smallerEq', 'largerEq', 'compare', 'compareText']\n};","export var compareTextDocs = {\n name: 'compareText',\n category: 'Relational',\n syntax: ['compareText(x, y)'],\n description: 'Compare two strings lexically. Comparison is case sensitive. ' + 'Returns 1 when x > y, -1 when x < y, and 0 when x == y.',\n examples: ['compareText(\"B\", \"A\")', 'compareText(\"A\", \"B\")', 'compareText(\"A\", \"A\")', 'compareText(\"2\", \"10\")', 'compare(\"2\", \"10\")', 'compare(2, 10)', 'compareNatural(\"2\", \"10\")', 'compareText(\"B\", [\"A\", \"B\", \"C\"])'],\n seealso: ['compare', 'compareNatural']\n};","export var deepEqualDocs = {\n name: 'deepEqual',\n category: 'Relational',\n syntax: ['deepEqual(x, y)'],\n description: 'Check equality of two matrices element wise. Returns true if the size of both matrices is equal and when and each of the elements are equal.',\n examples: ['deepEqual([1,3,4], [1,3,4])', 'deepEqual([1,3,4], [1,3])'],\n seealso: ['equal', 'unequal', 'smaller', 'larger', 'smallerEq', 'largerEq', 'compare']\n};","export var equalDocs = {\n name: 'equal',\n category: 'Relational',\n syntax: ['x == y', 'equal(x, y)'],\n description: 'Check equality of two values. Returns true if the values are equal, and false if not.',\n examples: ['2+2 == 3', '2+2 == 4', 'a = 3.2', 'b = 6-2.8', 'a == b', '50cm == 0.5m'],\n seealso: ['unequal', 'smaller', 'larger', 'smallerEq', 'largerEq', 'compare', 'deepEqual', 'equalText']\n};","export var equalTextDocs = {\n name: 'equalText',\n category: 'Relational',\n syntax: ['equalText(x, y)'],\n description: 'Check equality of two strings. Comparison is case sensitive. Returns true if the values are equal, and false if not.',\n examples: ['equalText(\"Hello\", \"Hello\")', 'equalText(\"a\", \"A\")', 'equal(\"2e3\", \"2000\")', 'equalText(\"2e3\", \"2000\")', 'equalText(\"B\", [\"A\", \"B\", \"C\"])'],\n seealso: ['compare', 'compareNatural', 'compareText', 'equal']\n};","export var largerDocs = {\n name: 'larger',\n category: 'Relational',\n syntax: ['x > y', 'larger(x, y)'],\n description: 'Check if value x is larger than y. Returns true if x is larger than y, and false if not.',\n examples: ['2 > 3', '5 > 2*2', 'a = 3.3', 'b = 6-2.8', '(a > b)', '(b < a)', '5 cm > 2 inch'],\n seealso: ['equal', 'unequal', 'smaller', 'smallerEq', 'largerEq', 'compare']\n};","export var largerEqDocs = {\n name: 'largerEq',\n category: 'Relational',\n syntax: ['x >= y', 'largerEq(x, y)'],\n description: 'Check if value x is larger or equal to y. Returns true if x is larger or equal to y, and false if not.',\n examples: ['2 >= 1+1', '2 > 1+1', 'a = 3.2', 'b = 6-2.8', '(a >= b)'],\n seealso: ['equal', 'unequal', 'smallerEq', 'smaller', 'compare']\n};","export var smallerDocs = {\n name: 'smaller',\n category: 'Relational',\n syntax: ['x < y', 'smaller(x, y)'],\n description: 'Check if value x is smaller than value y. Returns true if x is smaller than y, and false if not.',\n examples: ['2 < 3', '5 < 2*2', 'a = 3.3', 'b = 6-2.8', '(a < b)', '5 cm < 2 inch'],\n seealso: ['equal', 'unequal', 'larger', 'smallerEq', 'largerEq', 'compare']\n};","export var smallerEqDocs = {\n name: 'smallerEq',\n category: 'Relational',\n syntax: ['x <= y', 'smallerEq(x, y)'],\n description: 'Check if value x is smaller or equal to value y. Returns true if x is smaller than y, and false if not.',\n examples: ['2 <= 1+1', '2 < 1+1', 'a = 3.2', 'b = 6-2.8', '(a <= b)'],\n seealso: ['equal', 'unequal', 'larger', 'smaller', 'largerEq', 'compare']\n};","export var unequalDocs = {\n name: 'unequal',\n category: 'Relational',\n syntax: ['x != y', 'unequal(x, y)'],\n description: 'Check unequality of two values. Returns true if the values are unequal, and false if they are equal.',\n examples: ['2+2 != 3', '2+2 != 4', 'a = 3.2', 'b = 6-2.8', 'a != b', '50cm != 0.5m', '5 cm != 2 inch'],\n seealso: ['equal', 'smaller', 'larger', 'smallerEq', 'largerEq', 'compare', 'deepEqual']\n};","export var setCartesianDocs = {\n name: 'setCartesian',\n category: 'Set',\n syntax: ['setCartesian(set1, set2)'],\n description: 'Create the cartesian product of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays and the values will be sorted in ascending order before the operation.',\n examples: ['setCartesian([1, 2], [3, 4])'],\n seealso: ['setUnion', 'setIntersect', 'setDifference', 'setPowerset']\n};","export var setDifferenceDocs = {\n name: 'setDifference',\n category: 'Set',\n syntax: ['setDifference(set1, set2)'],\n description: 'Create the difference of two (multi)sets: every element of set1, that is not the element of set2. Multi-dimension arrays will be converted to single-dimension arrays before the operation.',\n examples: ['setDifference([1, 2, 3, 4], [3, 4, 5, 6])', 'setDifference([[1, 2], [3, 4]], [[3, 4], [5, 6]])'],\n seealso: ['setUnion', 'setIntersect', 'setSymDifference']\n};","export var setDistinctDocs = {\n name: 'setDistinct',\n category: 'Set',\n syntax: ['setDistinct(set)'],\n description: 'Collect the distinct elements of a multiset. A multi-dimension array will be converted to a single-dimension array before the operation.',\n examples: ['setDistinct([1, 1, 1, 2, 2, 3])'],\n seealso: ['setMultiplicity']\n};","export var setIntersectDocs = {\n name: 'setIntersect',\n category: 'Set',\n syntax: ['setIntersect(set1, set2)'],\n description: 'Create the intersection of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays before the operation.',\n examples: ['setIntersect([1, 2, 3, 4], [3, 4, 5, 6])', 'setIntersect([[1, 2], [3, 4]], [[3, 4], [5, 6]])'],\n seealso: ['setUnion', 'setDifference']\n};","export var setIsSubsetDocs = {\n name: 'setIsSubset',\n category: 'Set',\n syntax: ['setIsSubset(set1, set2)'],\n description: 'Check whether a (multi)set is a subset of another (multi)set: every element of set1 is the element of set2. Multi-dimension arrays will be converted to single-dimension arrays before the operation.',\n examples: ['setIsSubset([1, 2], [3, 4, 5, 6])', 'setIsSubset([3, 4], [3, 4, 5, 6])'],\n seealso: ['setUnion', 'setIntersect', 'setDifference']\n};","export var setMultiplicityDocs = {\n name: 'setMultiplicity',\n category: 'Set',\n syntax: ['setMultiplicity(element, set)'],\n description: 'Count the multiplicity of an element in a multiset. A multi-dimension array will be converted to a single-dimension array before the operation.',\n examples: ['setMultiplicity(1, [1, 2, 2, 4])', 'setMultiplicity(2, [1, 2, 2, 4])'],\n seealso: ['setDistinct', 'setSize']\n};","export var setPowersetDocs = {\n name: 'setPowerset',\n category: 'Set',\n syntax: ['setPowerset(set)'],\n description: 'Create the powerset of a (multi)set: the powerset contains very possible subsets of a (multi)set. A multi-dimension array will be converted to a single-dimension array before the operation.',\n examples: ['setPowerset([1, 2, 3])'],\n seealso: ['setCartesian']\n};","export var setSizeDocs = {\n name: 'setSize',\n category: 'Set',\n syntax: ['setSize(set)', 'setSize(set, unique)'],\n description: 'Count the number of elements of a (multi)set. When the second parameter \"unique\" is true, count only the unique values. A multi-dimension array will be converted to a single-dimension array before the operation.',\n examples: ['setSize([1, 2, 2, 4])', 'setSize([1, 2, 2, 4], true)'],\n seealso: ['setUnion', 'setIntersect', 'setDifference']\n};","export var setSymDifferenceDocs = {\n name: 'setSymDifference',\n category: 'Set',\n syntax: ['setSymDifference(set1, set2)'],\n description: 'Create the symmetric difference of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays before the operation.',\n examples: ['setSymDifference([1, 2, 3, 4], [3, 4, 5, 6])', 'setSymDifference([[1, 2], [3, 4]], [[3, 4], [5, 6]])'],\n seealso: ['setUnion', 'setIntersect', 'setDifference']\n};","export var setUnionDocs = {\n name: 'setUnion',\n category: 'Set',\n syntax: ['setUnion(set1, set2)'],\n description: 'Create the union of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays before the operation.',\n examples: ['setUnion([1, 2, 3, 4], [3, 4, 5, 6])', 'setUnion([[1, 2], [3, 4]], [[3, 4], [5, 6]])'],\n seealso: ['setIntersect', 'setDifference']\n};","export var zpk2tfDocs = {\n name: 'zpk2tf',\n category: 'Signal',\n syntax: ['zpk2tf(z, p, k)'],\n description: 'Compute the transfer function of a zero-pole-gain model.',\n examples: ['zpk2tf([1, 2], [-1, -2], 1)', 'zpk2tf([1, 2], [-1, -2])', 'zpk2tf([1 - 3i, 2 + 2i], [-1, -2])'],\n seealso: []\n};","export var freqzDocs = {\n name: 'freqz',\n category: 'Signal',\n syntax: ['freqz(b, a)', 'freqz(b, a, w)'],\n description: 'Calculates the frequency response of a filter given its numerator and denominator coefficients.',\n examples: ['freqz([1, 2], [1, 2, 3])', 'freqz([1, 2], [1, 2, 3], [0, 1])', 'freqz([1, 2], [1, 2, 3], 512)'],\n seealso: []\n};","export var erfDocs = {\n name: 'erf',\n category: 'Special',\n syntax: ['erf(x)'],\n description: 'Compute the erf function of a value using a rational Chebyshev approximations for different intervals of x',\n examples: ['erf(0.2)', 'erf(-0.5)', 'erf(4)'],\n seealso: []\n};","export var zetaDocs = {\n name: 'zeta',\n category: 'Special',\n syntax: ['zeta(s)'],\n description: 'Compute the Riemann Zeta Function using an infinite series and Riemanns Functional Equation for the entire complex plane',\n examples: ['zeta(0.2)', 'zeta(-0.5)', 'zeta(4)'],\n seealso: []\n};","export var madDocs = {\n name: 'mad',\n category: 'Statistics',\n syntax: ['mad(a, b, c, ...)', 'mad(A)'],\n description: 'Compute the median absolute deviation of a matrix or a list with values. The median absolute deviation is defined as the median of the absolute deviations from the median.',\n examples: ['mad(10, 20, 30)', 'mad([1, 2, 3])'],\n seealso: ['mean', 'median', 'std', 'abs']\n};","export var maxDocs = {\n name: 'max',\n category: 'Statistics',\n syntax: ['max(a, b, c, ...)', 'max(A)', 'max(A, dimension)'],\n description: 'Compute the maximum value of a list of values.',\n examples: ['max(2, 3, 4, 1)', 'max([2, 3, 4, 1])', 'max([2, 5; 4, 3])', 'max([2, 5; 4, 3], 1)', 'max([2, 5; 4, 3], 2)', 'max(2.7, 7.1, -4.5, 2.0, 4.1)', 'min(2.7, 7.1, -4.5, 2.0, 4.1)'],\n seealso: ['mean', 'median', 'min', 'prod', 'std', 'sum', 'variance']\n};","export var meanDocs = {\n name: 'mean',\n category: 'Statistics',\n syntax: ['mean(a, b, c, ...)', 'mean(A)', 'mean(A, dimension)'],\n description: 'Compute the arithmetic mean of a list of values.',\n examples: ['mean(2, 3, 4, 1)', 'mean([2, 3, 4, 1])', 'mean([2, 5; 4, 3])', 'mean([2, 5; 4, 3], 1)', 'mean([2, 5; 4, 3], 2)', 'mean([1.0, 2.7, 3.2, 4.0])'],\n seealso: ['max', 'median', 'min', 'prod', 'std', 'sum', 'variance']\n};","export var medianDocs = {\n name: 'median',\n category: 'Statistics',\n syntax: ['median(a, b, c, ...)', 'median(A)'],\n description: 'Compute the median of all values. The values are sorted and the middle value is returned. In case of an even number of values, the average of the two middle values is returned.',\n examples: ['median(5, 2, 7)', 'median([3, -1, 5, 7])'],\n seealso: ['max', 'mean', 'min', 'prod', 'std', 'sum', 'variance', 'quantileSeq']\n};","export var minDocs = {\n name: 'min',\n category: 'Statistics',\n syntax: ['min(a, b, c, ...)', 'min(A)', 'min(A, dimension)'],\n description: 'Compute the minimum value of a list of values.',\n examples: ['min(2, 3, 4, 1)', 'min([2, 3, 4, 1])', 'min([2, 5; 4, 3])', 'min([2, 5; 4, 3], 1)', 'min([2, 5; 4, 3], 2)', 'min(2.7, 7.1, -4.5, 2.0, 4.1)', 'max(2.7, 7.1, -4.5, 2.0, 4.1)'],\n seealso: ['max', 'mean', 'median', 'prod', 'std', 'sum', 'variance']\n};","export var modeDocs = {\n name: 'mode',\n category: 'Statistics',\n syntax: ['mode(a, b, c, ...)', 'mode(A)', 'mode(A, a, b, B, c, ...)'],\n description: 'Computes the mode of all values as an array. In case mode being more than one, multiple values are returned in an array.',\n examples: ['mode(2, 1, 4, 3, 1)', 'mode([1, 2.7, 3.2, 4, 2.7])', 'mode(1, 4, 6, 1, 6)'],\n seealso: ['max', 'mean', 'min', 'median', 'prod', 'std', 'sum', 'variance']\n};","export var prodDocs = {\n name: 'prod',\n category: 'Statistics',\n syntax: ['prod(a, b, c, ...)', 'prod(A)'],\n description: 'Compute the product of all values.',\n examples: ['prod(2, 3, 4)', 'prod([2, 3, 4])', 'prod([2, 5; 4, 3])'],\n seealso: ['max', 'mean', 'min', 'median', 'min', 'std', 'sum', 'variance']\n};","export var quantileSeqDocs = {\n name: 'quantileSeq',\n category: 'Statistics',\n syntax: ['quantileSeq(A, prob[, sorted])', 'quantileSeq(A, [prob1, prob2, ...][, sorted])', 'quantileSeq(A, N[, sorted])'],\n description: 'Compute the prob order quantile of a matrix or a list with values. The sequence is sorted and the middle value is returned. Supported types of sequence values are: Number, BigNumber, Unit Supported types of probablity are: Number, BigNumber. \\n\\nIn case of a (multi dimensional) array or matrix, the prob order quantile of all elements will be calculated.',\n examples: ['quantileSeq([3, -1, 5, 7], 0.5)', 'quantileSeq([3, -1, 5, 7], [1/3, 2/3])', 'quantileSeq([3, -1, 5, 7], 2)', 'quantileSeq([-1, 3, 5, 7], 0.5, true)'],\n seealso: ['mean', 'median', 'min', 'max', 'prod', 'std', 'sum', 'variance']\n};","export var stdDocs = {\n name: 'std',\n category: 'Statistics',\n syntax: ['std(a, b, c, ...)', 'std(A)', 'std(A, dimension)', 'std(A, normalization)', 'std(A, dimension, normalization)'],\n description: 'Compute the standard deviation of all values, defined as std(A) = sqrt(variance(A)). Optional parameter normalization can be \"unbiased\" (default), \"uncorrected\", or \"biased\".',\n examples: ['std(2, 4, 6)', 'std([2, 4, 6, 8])', 'std([2, 4, 6, 8], \"uncorrected\")', 'std([2, 4, 6, 8], \"biased\")', 'std([1, 2, 3; 4, 5, 6])'],\n seealso: ['max', 'mean', 'min', 'median', 'prod', 'sum', 'variance']\n};","export var cumSumDocs = {\n name: 'cumsum',\n category: 'Statistics',\n syntax: ['cumsum(a, b, c, ...)', 'cumsum(A)'],\n description: 'Compute the cumulative sum of all values.',\n examples: ['cumsum(2, 3, 4, 1)', 'cumsum([2, 3, 4, 1])', 'cumsum([1, 2; 3, 4])', 'cumsum([1, 2; 3, 4], 1)', 'cumsum([1, 2; 3, 4], 2)'],\n seealso: ['max', 'mean', 'median', 'min', 'prod', 'std', 'sum', 'variance']\n};","export var sumDocs = {\n name: 'sum',\n category: 'Statistics',\n syntax: ['sum(a, b, c, ...)', 'sum(A)', 'sum(A, dimension)'],\n description: 'Compute the sum of all values.',\n examples: ['sum(2, 3, 4, 1)', 'sum([2, 3, 4, 1])', 'sum([2, 5; 4, 3])'],\n seealso: ['max', 'mean', 'median', 'min', 'prod', 'std', 'sum', 'variance']\n};","export var varianceDocs = {\n name: 'variance',\n category: 'Statistics',\n syntax: ['variance(a, b, c, ...)', 'variance(A)', 'variance(A, dimension)', 'variance(A, normalization)', 'variance(A, dimension, normalization)'],\n description: 'Compute the variance of all values. Optional parameter normalization can be \"unbiased\" (default), \"uncorrected\", or \"biased\".',\n examples: ['variance(2, 4, 6)', 'variance([2, 4, 6, 8])', 'variance([2, 4, 6, 8], \"uncorrected\")', 'variance([2, 4, 6, 8], \"biased\")', 'variance([1, 2, 3; 4, 5, 6])'],\n seealso: ['max', 'mean', 'min', 'median', 'min', 'prod', 'std', 'sum']\n};","export var corrDocs = {\n name: 'corr',\n category: 'Statistics',\n syntax: ['corr(A,B)'],\n description: 'Compute the correlation coefficient of a two list with values, For matrices, the matrix correlation coefficient is calculated.',\n examples: ['corr([2, 4, 6, 8],[1, 2, 3, 6])', 'corr(matrix([[1, 2.2, 3, 4.8, 5], [1, 2, 3, 4, 5]]), matrix([[4, 5.3, 6.6, 7, 8], [1, 2, 3, 4, 5]]))'],\n seealso: ['max', 'mean', 'min', 'median', 'min', 'prod', 'std', 'sum']\n};","export var acosDocs = {\n name: 'acos',\n category: 'Trigonometry',\n syntax: ['acos(x)'],\n description: 'Compute the inverse cosine of a value in radians.',\n examples: ['acos(0.5)', 'acos(cos(2.3))'],\n seealso: ['cos', 'atan', 'asin']\n};","export var acoshDocs = {\n name: 'acosh',\n category: 'Trigonometry',\n syntax: ['acosh(x)'],\n description: 'Calculate the hyperbolic arccos of a value, defined as `acosh(x) = ln(sqrt(x^2 - 1) + x)`.',\n examples: ['acosh(1.5)'],\n seealso: ['cosh', 'asinh', 'atanh']\n};","export var acotDocs = {\n name: 'acot',\n category: 'Trigonometry',\n syntax: ['acot(x)'],\n description: 'Calculate the inverse cotangent of a value.',\n examples: ['acot(0.5)', 'acot(cot(0.5))', 'acot(2)'],\n seealso: ['cot', 'atan']\n};","export var acothDocs = {\n name: 'acoth',\n category: 'Trigonometry',\n syntax: ['acoth(x)'],\n description: 'Calculate the hyperbolic arccotangent of a value, defined as `acoth(x) = (ln((x+1)/x) + ln(x/(x-1))) / 2`.',\n examples: ['acoth(2)', 'acoth(0.5)'],\n seealso: ['acsch', 'asech']\n};","export var acscDocs = {\n name: 'acsc',\n category: 'Trigonometry',\n syntax: ['acsc(x)'],\n description: 'Calculate the inverse cotangent of a value.',\n examples: ['acsc(2)', 'acsc(csc(0.5))', 'acsc(0.5)'],\n seealso: ['csc', 'asin', 'asec']\n};","export var acschDocs = {\n name: 'acsch',\n category: 'Trigonometry',\n syntax: ['acsch(x)'],\n description: 'Calculate the hyperbolic arccosecant of a value, defined as `acsch(x) = ln(1/x + sqrt(1/x^2 + 1))`.',\n examples: ['acsch(0.5)'],\n seealso: ['asech', 'acoth']\n};","export var asecDocs = {\n name: 'asec',\n category: 'Trigonometry',\n syntax: ['asec(x)'],\n description: 'Calculate the inverse secant of a value.',\n examples: ['asec(0.5)', 'asec(sec(0.5))', 'asec(2)'],\n seealso: ['acos', 'acot', 'acsc']\n};","export var asechDocs = {\n name: 'asech',\n category: 'Trigonometry',\n syntax: ['asech(x)'],\n description: 'Calculate the inverse secant of a value.',\n examples: ['asech(0.5)'],\n seealso: ['acsch', 'acoth']\n};","export var asinDocs = {\n name: 'asin',\n category: 'Trigonometry',\n syntax: ['asin(x)'],\n description: 'Compute the inverse sine of a value in radians.',\n examples: ['asin(0.5)', 'asin(sin(0.5))'],\n seealso: ['sin', 'acos', 'atan']\n};","export var asinhDocs = {\n name: 'asinh',\n category: 'Trigonometry',\n syntax: ['asinh(x)'],\n description: 'Calculate the hyperbolic arcsine of a value, defined as `asinh(x) = ln(x + sqrt(x^2 + 1))`.',\n examples: ['asinh(0.5)'],\n seealso: ['acosh', 'atanh']\n};","export var atanDocs = {\n name: 'atan',\n category: 'Trigonometry',\n syntax: ['atan(x)'],\n description: 'Compute the inverse tangent of a value in radians.',\n examples: ['atan(0.5)', 'atan(tan(0.5))'],\n seealso: ['tan', 'acos', 'asin']\n};","export var atan2Docs = {\n name: 'atan2',\n category: 'Trigonometry',\n syntax: ['atan2(y, x)'],\n description: 'Computes the principal value of the arc tangent of y/x in radians.',\n examples: ['atan2(2, 2) / pi', 'angle = 60 deg in rad', 'x = cos(angle)', 'y = sin(angle)', 'atan2(y, x)'],\n seealso: ['sin', 'cos', 'tan']\n};","export var atanhDocs = {\n name: 'atanh',\n category: 'Trigonometry',\n syntax: ['atanh(x)'],\n description: 'Calculate the hyperbolic arctangent of a value, defined as `atanh(x) = ln((1 + x)/(1 - x)) / 2`.',\n examples: ['atanh(0.5)'],\n seealso: ['acosh', 'asinh']\n};","export var cosDocs = {\n name: 'cos',\n category: 'Trigonometry',\n syntax: ['cos(x)'],\n description: 'Compute the cosine of x in radians.',\n examples: ['cos(2)', 'cos(pi / 4) ^ 2', 'cos(180 deg)', 'cos(60 deg)', 'sin(0.2)^2 + cos(0.2)^2'],\n seealso: ['acos', 'sin', 'tan']\n};","export var coshDocs = {\n name: 'cosh',\n category: 'Trigonometry',\n syntax: ['cosh(x)'],\n description: 'Compute the hyperbolic cosine of x in radians.',\n examples: ['cosh(0.5)'],\n seealso: ['sinh', 'tanh', 'coth']\n};","export var cotDocs = {\n name: 'cot',\n category: 'Trigonometry',\n syntax: ['cot(x)'],\n description: 'Compute the cotangent of x in radians. Defined as 1/tan(x)',\n examples: ['cot(2)', '1 / tan(2)'],\n seealso: ['sec', 'csc', 'tan']\n};","export var cothDocs = {\n name: 'coth',\n category: 'Trigonometry',\n syntax: ['coth(x)'],\n description: 'Compute the hyperbolic cotangent of x in radians.',\n examples: ['coth(2)', '1 / tanh(2)'],\n seealso: ['sech', 'csch', 'tanh']\n};","export var cscDocs = {\n name: 'csc',\n category: 'Trigonometry',\n syntax: ['csc(x)'],\n description: 'Compute the cosecant of x in radians. Defined as 1/sin(x)',\n examples: ['csc(2)', '1 / sin(2)'],\n seealso: ['sec', 'cot', 'sin']\n};","export var cschDocs = {\n name: 'csch',\n category: 'Trigonometry',\n syntax: ['csch(x)'],\n description: 'Compute the hyperbolic cosecant of x in radians. Defined as 1/sinh(x)',\n examples: ['csch(2)', '1 / sinh(2)'],\n seealso: ['sech', 'coth', 'sinh']\n};","export var secDocs = {\n name: 'sec',\n category: 'Trigonometry',\n syntax: ['sec(x)'],\n description: 'Compute the secant of x in radians. Defined as 1/cos(x)',\n examples: ['sec(2)', '1 / cos(2)'],\n seealso: ['cot', 'csc', 'cos']\n};","export var sechDocs = {\n name: 'sech',\n category: 'Trigonometry',\n syntax: ['sech(x)'],\n description: 'Compute the hyperbolic secant of x in radians. Defined as 1/cosh(x)',\n examples: ['sech(2)', '1 / cosh(2)'],\n seealso: ['coth', 'csch', 'cosh']\n};","export var sinDocs = {\n name: 'sin',\n category: 'Trigonometry',\n syntax: ['sin(x)'],\n description: 'Compute the sine of x in radians.',\n examples: ['sin(2)', 'sin(pi / 4) ^ 2', 'sin(90 deg)', 'sin(30 deg)', 'sin(0.2)^2 + cos(0.2)^2'],\n seealso: ['asin', 'cos', 'tan']\n};","export var sinhDocs = {\n name: 'sinh',\n category: 'Trigonometry',\n syntax: ['sinh(x)'],\n description: 'Compute the hyperbolic sine of x in radians.',\n examples: ['sinh(0.5)'],\n seealso: ['cosh', 'tanh']\n};","export var tanDocs = {\n name: 'tan',\n category: 'Trigonometry',\n syntax: ['tan(x)'],\n description: 'Compute the tangent of x in radians.',\n examples: ['tan(0.5)', 'sin(0.5) / cos(0.5)', 'tan(pi / 4)', 'tan(45 deg)'],\n seealso: ['atan', 'sin', 'cos']\n};","export var tanhDocs = {\n name: 'tanh',\n category: 'Trigonometry',\n syntax: ['tanh(x)'],\n description: 'Compute the hyperbolic tangent of x in radians.',\n examples: ['tanh(0.5)', 'sinh(0.5) / cosh(0.5)'],\n seealso: ['sinh', 'cosh']\n};","export var toDocs = {\n name: 'to',\n category: 'Units',\n syntax: ['x to unit', 'to(x, unit)'],\n description: 'Change the unit of a value.',\n examples: ['5 inch to cm', '3.2kg to g', '16 bytes in bits'],\n seealso: []\n};","export var binDocs = {\n name: 'bin',\n category: 'Utils',\n syntax: ['bin(value)'],\n description: 'Format a number as binary',\n examples: ['bin(2)'],\n seealso: ['oct', 'hex']\n};","export var cloneDocs = {\n name: 'clone',\n category: 'Utils',\n syntax: ['clone(x)'],\n description: 'Clone a variable. Creates a copy of primitive variables,and a deep copy of matrices',\n examples: ['clone(3.5)', 'clone(2 - 4i)', 'clone(45 deg)', 'clone([1, 2; 3, 4])', 'clone(\"hello world\")'],\n seealso: []\n};","export var formatDocs = {\n name: 'format',\n category: 'Utils',\n syntax: ['format(value)', 'format(value, precision)'],\n description: 'Format a value of any type as string.',\n examples: ['format(2.3)', 'format(3 - 4i)', 'format([])', 'format(pi, 3)'],\n seealso: ['print']\n};","export var hasNumericValueDocs = {\n name: 'hasNumericValue',\n category: 'Utils',\n syntax: ['hasNumericValue(x)'],\n description: 'Test whether a value is an numeric value. ' + 'In case of a string, true is returned if the string contains a numeric value.',\n examples: ['hasNumericValue(2)', 'hasNumericValue(\"2\")', 'isNumeric(\"2\")', 'hasNumericValue(0)', 'hasNumericValue(bignumber(500))', 'hasNumericValue(fraction(0.125))', 'hasNumericValue(2 + 3i)', 'hasNumericValue([2.3, \"foo\", false])'],\n seealso: ['isInteger', 'isZero', 'isNegative', 'isPositive', 'isNaN', 'isNumeric']\n};","export var hexDocs = {\n name: 'hex',\n category: 'Utils',\n syntax: ['hex(value)'],\n description: 'Format a number as hexadecimal',\n examples: ['hex(240)'],\n seealso: ['bin', 'oct']\n};","export var isIntegerDocs = {\n name: 'isInteger',\n category: 'Utils',\n syntax: ['isInteger(x)'],\n description: 'Test whether a value is an integer number.',\n examples: ['isInteger(2)', 'isInteger(3.5)', 'isInteger([3, 0.5, -2])'],\n seealso: ['isNegative', 'isNumeric', 'isPositive', 'isZero']\n};","export var isNaNDocs = {\n name: 'isNaN',\n category: 'Utils',\n syntax: ['isNaN(x)'],\n description: 'Test whether a value is NaN (not a number)',\n examples: ['isNaN(2)', 'isNaN(0 / 0)', 'isNaN(NaN)', 'isNaN(Infinity)'],\n seealso: ['isNegative', 'isNumeric', 'isPositive', 'isZero']\n};","export var isNegativeDocs = {\n name: 'isNegative',\n category: 'Utils',\n syntax: ['isNegative(x)'],\n description: 'Test whether a value is negative: smaller than zero.',\n examples: ['isNegative(2)', 'isNegative(0)', 'isNegative(-4)', 'isNegative([3, 0.5, -2])'],\n seealso: ['isInteger', 'isNumeric', 'isPositive', 'isZero']\n};","export var isNumericDocs = {\n name: 'isNumeric',\n category: 'Utils',\n syntax: ['isNumeric(x)'],\n description: 'Test whether a value is a numeric value. ' + 'Returns true when the input is a number, BigNumber, Fraction, or boolean.',\n examples: ['isNumeric(2)', 'isNumeric(\"2\")', 'hasNumericValue(\"2\")', 'isNumeric(0)', 'isNumeric(bignumber(500))', 'isNumeric(fraction(0.125))', 'isNumeric(2 + 3i)', 'isNumeric([2.3, \"foo\", false])'],\n seealso: ['isInteger', 'isZero', 'isNegative', 'isPositive', 'isNaN', 'hasNumericValue']\n};","export var isPositiveDocs = {\n name: 'isPositive',\n category: 'Utils',\n syntax: ['isPositive(x)'],\n description: 'Test whether a value is positive: larger than zero.',\n examples: ['isPositive(2)', 'isPositive(0)', 'isPositive(-4)', 'isPositive([3, 0.5, -2])'],\n seealso: ['isInteger', 'isNumeric', 'isNegative', 'isZero']\n};","export var isPrimeDocs = {\n name: 'isPrime',\n category: 'Utils',\n syntax: ['isPrime(x)'],\n description: 'Test whether a value is prime: has no divisors other than itself and one.',\n examples: ['isPrime(3)', 'isPrime(-2)', 'isPrime([2, 17, 100])'],\n seealso: ['isInteger', 'isNumeric', 'isNegative', 'isZero']\n};","export var isZeroDocs = {\n name: 'isZero',\n category: 'Utils',\n syntax: ['isZero(x)'],\n description: 'Test whether a value is zero.',\n examples: ['isZero(2)', 'isZero(0)', 'isZero(-4)', 'isZero([3, 0, -2, 0])'],\n seealso: ['isInteger', 'isNumeric', 'isNegative', 'isPositive']\n};","export var numericDocs = {\n name: 'numeric',\n category: 'Utils',\n syntax: ['numeric(x)'],\n description: 'Convert a numeric input to a specific numeric type: number, BigNumber, or Fraction.',\n examples: ['numeric(\"4\")', 'numeric(\"4\", \"number\")', 'numeric(\"4\", \"BigNumber\")', 'numeric(\"4\", \"Fraction\")', 'numeric(4, \"Fraction\")', 'numeric(fraction(2, 5), \"number\")'],\n seealso: ['number', 'fraction', 'bignumber', 'string', 'format']\n};","export var octDocs = {\n name: 'oct',\n category: 'Utils',\n syntax: ['oct(value)'],\n description: 'Format a number as octal',\n examples: ['oct(56)'],\n seealso: ['bin', 'hex']\n};","export var printDocs = {\n name: 'print',\n category: 'Utils',\n syntax: ['print(template, values)', 'print(template, values, precision)'],\n description: 'Interpolate values into a string template.',\n examples: ['print(\"Lucy is $age years old\", {age: 5})', 'print(\"The value of pi is $pi\", {pi: pi}, 3)', 'print(\"Hello, $user.name!\", {user: {name: \"John\"}})', 'print(\"Values: $1, $2, $3\", [6, 9, 4])'],\n seealso: ['format']\n};","export var typeOfDocs = {\n name: 'typeOf',\n category: 'Utils',\n syntax: ['typeOf(x)'],\n description: 'Get the type of a variable.',\n examples: ['typeOf(3.5)', 'typeOf(2 - 4i)', 'typeOf(45 deg)', 'typeOf(\"hello world\")'],\n seealso: ['getMatrixDataType']\n};","export var solveODEDocs = {\n name: 'solveODE',\n category: 'Numeric',\n syntax: ['solveODE(func, tspan, y0)', 'solveODE(func, tspan, y0, options)'],\n description: 'Numerical Integration of Ordinary Differential Equations.',\n examples: ['f(t,y) = y', 'tspan = [0, 4]', 'solveODE(f, tspan, 1)', 'solveODE(f, tspan, [1, 2])', 'solveODE(f, tspan, 1, { method:\"RK23\", maxStep:0.1 })'],\n seealso: ['derivative', 'simplifyCore']\n};","import { eDocs } from './constants/e.js';\nimport { falseDocs } from './constants/false.js';\nimport { iDocs } from './constants/i.js';\nimport { InfinityDocs } from './constants/Infinity.js';\nimport { LN10Docs } from './constants/LN10.js';\nimport { LN2Docs } from './constants/LN2.js';\nimport { LOG10EDocs } from './constants/LOG10E.js';\nimport { LOG2EDocs } from './constants/LOG2E.js';\nimport { NaNDocs } from './constants/NaN.js';\nimport { nullDocs } from './constants/null.js';\nimport { phiDocs } from './constants/phi.js';\nimport { piDocs } from './constants/pi.js';\nimport { SQRT12Docs } from './constants/SQRT1_2.js';\nimport { SQRT2Docs } from './constants/SQRT2.js';\nimport { tauDocs } from './constants/tau.js';\nimport { trueDocs } from './constants/true.js';\nimport { versionDocs } from './constants/version.js';\nimport { bignumberDocs } from './construction/bignumber.js';\nimport { booleanDocs } from './construction/boolean.js';\nimport { complexDocs } from './construction/complex.js';\nimport { createUnitDocs } from './construction/createUnit.js';\nimport { fractionDocs } from './construction/fraction.js';\nimport { indexDocs } from './construction/index.js';\nimport { matrixDocs } from './construction/matrix.js';\nimport { numberDocs } from './construction/number.js';\nimport { sparseDocs } from './construction/sparse.js';\nimport { splitUnitDocs } from './construction/splitUnit.js';\nimport { stringDocs } from './construction/string.js';\nimport { unitDocs } from './construction/unit.js';\nimport { configDocs } from './core/config.js';\nimport { importDocs } from './core/import.js';\nimport { typedDocs } from './core/typed.js';\nimport { derivativeDocs } from './function/algebra/derivative.js';\nimport { leafCountDocs } from './function/algebra/leafCount.js';\nimport { lsolveDocs } from './function/algebra/lsolve.js';\nimport { lsolveAllDocs } from './function/algebra/lsolveAll.js';\nimport { lupDocs } from './function/algebra/lup.js';\nimport { lusolveDocs } from './function/algebra/lusolve.js';\nimport { polynomialRootDocs } from './function/algebra/polynomialRoot.js';\nimport { qrDocs } from './function/algebra/qr.js';\nimport { rationalizeDocs } from './function/algebra/rationalize.js';\nimport { resolveDocs } from './function/algebra/resolve.js';\nimport { simplifyDocs } from './function/algebra/simplify.js';\nimport { simplifyConstantDocs } from './function/algebra/simplifyConstant.js';\nimport { simplifyCoreDocs } from './function/algebra/simplifyCore.js';\nimport { sluDocs } from './function/algebra/slu.js';\nimport { symbolicEqualDocs } from './function/algebra/symbolicEqual.js';\nimport { usolveDocs } from './function/algebra/usolve.js';\nimport { usolveAllDocs } from './function/algebra/usolveAll.js';\nimport { absDocs } from './function/arithmetic/abs.js';\nimport { addDocs } from './function/arithmetic/add.js';\nimport { cbrtDocs } from './function/arithmetic/cbrt.js';\nimport { ceilDocs } from './function/arithmetic/ceil.js';\nimport { cubeDocs } from './function/arithmetic/cube.js';\nimport { divideDocs } from './function/arithmetic/divide.js';\nimport { dotDivideDocs } from './function/arithmetic/dotDivide.js';\nimport { dotMultiplyDocs } from './function/arithmetic/dotMultiply.js';\nimport { dotPowDocs } from './function/arithmetic/dotPow.js';\nimport { expDocs } from './function/arithmetic/exp.js';\nimport { expmDocs } from './function/arithmetic/expm.js';\nimport { expm1Docs } from './function/arithmetic/expm1.js';\nimport { fixDocs } from './function/arithmetic/fix.js';\nimport { floorDocs } from './function/arithmetic/floor.js';\nimport { gcdDocs } from './function/arithmetic/gcd.js';\nimport { hypotDocs } from './function/arithmetic/hypot.js';\nimport { invmodDocs } from './function/arithmetic/invmod.js';\nimport { lcmDocs } from './function/arithmetic/lcm.js';\nimport { logDocs } from './function/arithmetic/log.js';\nimport { log10Docs } from './function/arithmetic/log10.js';\nimport { log1pDocs } from './function/arithmetic/log1p.js';\nimport { log2Docs } from './function/arithmetic/log2.js';\nimport { modDocs } from './function/arithmetic/mod.js';\nimport { multiplyDocs } from './function/arithmetic/multiply.js';\nimport { normDocs } from './function/arithmetic/norm.js';\nimport { nthRootDocs } from './function/arithmetic/nthRoot.js';\nimport { nthRootsDocs } from './function/arithmetic/nthRoots.js';\nimport { powDocs } from './function/arithmetic/pow.js';\nimport { roundDocs } from './function/arithmetic/round.js';\nimport { signDocs } from './function/arithmetic/sign.js';\nimport { sqrtDocs } from './function/arithmetic/sqrt.js';\nimport { sqrtmDocs } from './function/arithmetic/sqrtm.js';\nimport { sylvesterDocs } from './function/algebra/sylvester.js';\nimport { schurDocs } from './function/algebra/schur.js';\nimport { lyapDocs } from './function/algebra/lyap.js';\nimport { squareDocs } from './function/arithmetic/square.js';\nimport { subtractDocs } from './function/arithmetic/subtract.js';\nimport { unaryMinusDocs } from './function/arithmetic/unaryMinus.js';\nimport { unaryPlusDocs } from './function/arithmetic/unaryPlus.js';\nimport { xgcdDocs } from './function/arithmetic/xgcd.js';\nimport { bitAndDocs } from './function/bitwise/bitAnd.js';\nimport { bitNotDocs } from './function/bitwise/bitNot.js';\nimport { bitOrDocs } from './function/bitwise/bitOr.js';\nimport { bitXorDocs } from './function/bitwise/bitXor.js';\nimport { leftShiftDocs } from './function/bitwise/leftShift.js';\nimport { rightArithShiftDocs } from './function/bitwise/rightArithShift.js';\nimport { rightLogShiftDocs } from './function/bitwise/rightLogShift.js';\nimport { bellNumbersDocs } from './function/combinatorics/bellNumbers.js';\nimport { catalanDocs } from './function/combinatorics/catalan.js';\nimport { compositionDocs } from './function/combinatorics/composition.js';\nimport { stirlingS2Docs } from './function/combinatorics/stirlingS2.js';\nimport { argDocs } from './function/complex/arg.js';\nimport { conjDocs } from './function/complex/conj.js';\nimport { imDocs } from './function/complex/im.js';\nimport { reDocs } from './function/complex/re.js';\nimport { evaluateDocs } from './function/expression/evaluate.js';\nimport { helpDocs } from './function/expression/help.js';\nimport { distanceDocs } from './function/geometry/distance.js';\nimport { intersectDocs } from './function/geometry/intersect.js';\nimport { andDocs } from './function/logical/and.js';\nimport { notDocs } from './function/logical/not.js';\nimport { orDocs } from './function/logical/or.js';\nimport { xorDocs } from './function/logical/xor.js';\nimport { columnDocs } from './function/matrix/column.js';\nimport { concatDocs } from './function/matrix/concat.js';\nimport { countDocs } from './function/matrix/count.js';\nimport { crossDocs } from './function/matrix/cross.js';\nimport { ctransposeDocs } from './function/matrix/ctranspose.js';\nimport { detDocs } from './function/matrix/det.js';\nimport { diagDocs } from './function/matrix/diag.js';\nimport { diffDocs } from './function/matrix/diff.js';\nimport { dotDocs } from './function/matrix/dot.js';\nimport { eigsDocs } from './function/matrix/eigs.js';\nimport { filterDocs } from './function/matrix/filter.js';\nimport { flattenDocs } from './function/matrix/flatten.js';\nimport { forEachDocs } from './function/matrix/forEach.js';\nimport { getMatrixDataTypeDocs } from './function/matrix/getMatrixDataType.js';\nimport { identityDocs } from './function/matrix/identity.js';\nimport { invDocs } from './function/matrix/inv.js';\nimport { pinvDocs } from './function/matrix/pinv.js';\nimport { kronDocs } from './function/matrix/kron.js';\nimport { mapDocs } from './function/matrix/map.js';\nimport { matrixFromColumnsDocs } from './function/matrix/matrixFromColumns.js';\nimport { matrixFromFunctionDocs } from './function/matrix/matrixFromFunction.js';\nimport { matrixFromRowsDocs } from './function/matrix/matrixFromRows.js';\nimport { onesDocs } from './function/matrix/ones.js';\nimport { partitionSelectDocs } from './function/matrix/partitionSelect.js';\nimport { rangeDocs } from './function/matrix/range.js';\nimport { reshapeDocs } from './function/matrix/reshape.js';\nimport { resizeDocs } from './function/matrix/resize.js';\nimport { rotateDocs } from './function/matrix/rotate.js';\nimport { rotationMatrixDocs } from './function/matrix/rotationMatrix.js';\nimport { rowDocs } from './function/matrix/row.js';\nimport { sizeDocs } from './function/matrix/size.js';\nimport { sortDocs } from './function/matrix/sort.js';\nimport { squeezeDocs } from './function/matrix/squeeze.js';\nimport { subsetDocs } from './function/matrix/subset.js';\nimport { traceDocs } from './function/matrix/trace.js';\nimport { transposeDocs } from './function/matrix/transpose.js';\nimport { zerosDocs } from './function/matrix/zeros.js';\nimport { fftDocs } from './function/matrix/fft.js';\nimport { ifftDocs } from './function/matrix/ifft.js';\nimport { combinationsDocs } from './function/probability/combinations.js';\nimport { combinationsWithRepDocs } from './function/probability/combinationsWithRep.js';\nimport { factorialDocs } from './function/probability/factorial.js';\nimport { gammaDocs } from './function/probability/gamma.js';\nimport { lgammaDocs } from './function/probability/lgamma.js';\nimport { kldivergenceDocs } from './function/probability/kldivergence.js';\nimport { multinomialDocs } from './function/probability/multinomial.js';\nimport { permutationsDocs } from './function/probability/permutations.js';\nimport { pickRandomDocs } from './function/probability/pickRandom.js';\nimport { randomDocs } from './function/probability/random.js';\nimport { randomIntDocs } from './function/probability/randomInt.js';\nimport { compareDocs } from './function/relational/compare.js';\nimport { compareNaturalDocs } from './function/relational/compareNatural.js';\nimport { compareTextDocs } from './function/relational/compareText.js';\nimport { deepEqualDocs } from './function/relational/deepEqual.js';\nimport { equalDocs } from './function/relational/equal.js';\nimport { equalTextDocs } from './function/relational/equalText.js';\nimport { largerDocs } from './function/relational/larger.js';\nimport { largerEqDocs } from './function/relational/largerEq.js';\nimport { smallerDocs } from './function/relational/smaller.js';\nimport { smallerEqDocs } from './function/relational/smallerEq.js';\nimport { unequalDocs } from './function/relational/unequal.js';\nimport { setCartesianDocs } from './function/set/setCartesian.js';\nimport { setDifferenceDocs } from './function/set/setDifference.js';\nimport { setDistinctDocs } from './function/set/setDistinct.js';\nimport { setIntersectDocs } from './function/set/setIntersect.js';\nimport { setIsSubsetDocs } from './function/set/setIsSubset.js';\nimport { setMultiplicityDocs } from './function/set/setMultiplicity.js';\nimport { setPowersetDocs } from './function/set/setPowerset.js';\nimport { setSizeDocs } from './function/set/setSize.js';\nimport { setSymDifferenceDocs } from './function/set/setSymDifference.js';\nimport { setUnionDocs } from './function/set/setUnion.js';\nimport { zpk2tfDocs } from './function/signal/zpk2tf.js';\nimport { freqzDocs } from './function/signal/freqz.js';\nimport { erfDocs } from './function/special/erf.js';\nimport { zetaDocs } from './function/special/zeta.js';\nimport { madDocs } from './function/statistics/mad.js';\nimport { maxDocs } from './function/statistics/max.js';\nimport { meanDocs } from './function/statistics/mean.js';\nimport { medianDocs } from './function/statistics/median.js';\nimport { minDocs } from './function/statistics/min.js';\nimport { modeDocs } from './function/statistics/mode.js';\nimport { prodDocs } from './function/statistics/prod.js';\nimport { quantileSeqDocs } from './function/statistics/quantileSeq.js';\nimport { stdDocs } from './function/statistics/std.js';\nimport { cumSumDocs } from './function/statistics/cumsum.js';\nimport { sumDocs } from './function/statistics/sum.js';\nimport { varianceDocs } from './function/statistics/variance.js';\nimport { corrDocs } from './function/statistics/corr.js';\nimport { acosDocs } from './function/trigonometry/acos.js';\nimport { acoshDocs } from './function/trigonometry/acosh.js';\nimport { acotDocs } from './function/trigonometry/acot.js';\nimport { acothDocs } from './function/trigonometry/acoth.js';\nimport { acscDocs } from './function/trigonometry/acsc.js';\nimport { acschDocs } from './function/trigonometry/acsch.js';\nimport { asecDocs } from './function/trigonometry/asec.js';\nimport { asechDocs } from './function/trigonometry/asech.js';\nimport { asinDocs } from './function/trigonometry/asin.js';\nimport { asinhDocs } from './function/trigonometry/asinh.js';\nimport { atanDocs } from './function/trigonometry/atan.js';\nimport { atan2Docs } from './function/trigonometry/atan2.js';\nimport { atanhDocs } from './function/trigonometry/atanh.js';\nimport { cosDocs } from './function/trigonometry/cos.js';\nimport { coshDocs } from './function/trigonometry/cosh.js';\nimport { cotDocs } from './function/trigonometry/cot.js';\nimport { cothDocs } from './function/trigonometry/coth.js';\nimport { cscDocs } from './function/trigonometry/csc.js';\nimport { cschDocs } from './function/trigonometry/csch.js';\nimport { secDocs } from './function/trigonometry/sec.js';\nimport { sechDocs } from './function/trigonometry/sech.js';\nimport { sinDocs } from './function/trigonometry/sin.js';\nimport { sinhDocs } from './function/trigonometry/sinh.js';\nimport { tanDocs } from './function/trigonometry/tan.js';\nimport { tanhDocs } from './function/trigonometry/tanh.js';\nimport { toDocs } from './function/units/to.js';\nimport { binDocs } from './function/utils/bin.js';\nimport { cloneDocs } from './function/utils/clone.js';\nimport { formatDocs } from './function/utils/format.js';\nimport { hasNumericValueDocs } from './function/utils/hasNumericValue.js';\nimport { hexDocs } from './function/utils/hex.js';\nimport { isIntegerDocs } from './function/utils/isInteger.js';\nimport { isNaNDocs } from './function/utils/isNaN.js';\nimport { isNegativeDocs } from './function/utils/isNegative.js';\nimport { isNumericDocs } from './function/utils/isNumeric.js';\nimport { isPositiveDocs } from './function/utils/isPositive.js';\nimport { isPrimeDocs } from './function/utils/isPrime.js';\nimport { isZeroDocs } from './function/utils/isZero.js';\nimport { numericDocs } from './function/utils/numeric.js';\nimport { octDocs } from './function/utils/oct.js';\nimport { printDocs } from './function/utils/print.js';\nimport { typeOfDocs } from './function/utils/typeOf.js';\nimport { solveODEDocs } from './function/numeric/solveODE.js';\nexport var embeddedDocs = {\n // construction functions\n bignumber: bignumberDocs,\n boolean: booleanDocs,\n complex: complexDocs,\n createUnit: createUnitDocs,\n fraction: fractionDocs,\n index: indexDocs,\n matrix: matrixDocs,\n number: numberDocs,\n sparse: sparseDocs,\n splitUnit: splitUnitDocs,\n string: stringDocs,\n unit: unitDocs,\n // constants\n e: eDocs,\n E: eDocs,\n false: falseDocs,\n i: iDocs,\n Infinity: InfinityDocs,\n LN2: LN2Docs,\n LN10: LN10Docs,\n LOG2E: LOG2EDocs,\n LOG10E: LOG10EDocs,\n NaN: NaNDocs,\n null: nullDocs,\n pi: piDocs,\n PI: piDocs,\n phi: phiDocs,\n SQRT1_2: SQRT12Docs,\n SQRT2: SQRT2Docs,\n tau: tauDocs,\n true: trueDocs,\n version: versionDocs,\n // physical constants\n // TODO: more detailed docs for physical constants\n speedOfLight: {\n description: 'Speed of light in vacuum',\n examples: ['speedOfLight']\n },\n gravitationConstant: {\n description: 'Newtonian constant of gravitation',\n examples: ['gravitationConstant']\n },\n planckConstant: {\n description: 'Planck constant',\n examples: ['planckConstant']\n },\n reducedPlanckConstant: {\n description: 'Reduced Planck constant',\n examples: ['reducedPlanckConstant']\n },\n magneticConstant: {\n description: 'Magnetic constant (vacuum permeability)',\n examples: ['magneticConstant']\n },\n electricConstant: {\n description: 'Electric constant (vacuum permeability)',\n examples: ['electricConstant']\n },\n vacuumImpedance: {\n description: 'Characteristic impedance of vacuum',\n examples: ['vacuumImpedance']\n },\n coulomb: {\n description: 'Coulomb\\'s constant',\n examples: ['coulomb']\n },\n elementaryCharge: {\n description: 'Elementary charge',\n examples: ['elementaryCharge']\n },\n bohrMagneton: {\n description: 'Borh magneton',\n examples: ['bohrMagneton']\n },\n conductanceQuantum: {\n description: 'Conductance quantum',\n examples: ['conductanceQuantum']\n },\n inverseConductanceQuantum: {\n description: 'Inverse conductance quantum',\n examples: ['inverseConductanceQuantum']\n },\n // josephson: {description: 'Josephson constant', examples: ['josephson']},\n magneticFluxQuantum: {\n description: 'Magnetic flux quantum',\n examples: ['magneticFluxQuantum']\n },\n nuclearMagneton: {\n description: 'Nuclear magneton',\n examples: ['nuclearMagneton']\n },\n klitzing: {\n description: 'Von Klitzing constant',\n examples: ['klitzing']\n },\n bohrRadius: {\n description: 'Borh radius',\n examples: ['bohrRadius']\n },\n classicalElectronRadius: {\n description: 'Classical electron radius',\n examples: ['classicalElectronRadius']\n },\n electronMass: {\n description: 'Electron mass',\n examples: ['electronMass']\n },\n fermiCoupling: {\n description: 'Fermi coupling constant',\n examples: ['fermiCoupling']\n },\n fineStructure: {\n description: 'Fine-structure constant',\n examples: ['fineStructure']\n },\n hartreeEnergy: {\n description: 'Hartree energy',\n examples: ['hartreeEnergy']\n },\n protonMass: {\n description: 'Proton mass',\n examples: ['protonMass']\n },\n deuteronMass: {\n description: 'Deuteron Mass',\n examples: ['deuteronMass']\n },\n neutronMass: {\n description: 'Neutron mass',\n examples: ['neutronMass']\n },\n quantumOfCirculation: {\n description: 'Quantum of circulation',\n examples: ['quantumOfCirculation']\n },\n rydberg: {\n description: 'Rydberg constant',\n examples: ['rydberg']\n },\n thomsonCrossSection: {\n description: 'Thomson cross section',\n examples: ['thomsonCrossSection']\n },\n weakMixingAngle: {\n description: 'Weak mixing angle',\n examples: ['weakMixingAngle']\n },\n efimovFactor: {\n description: 'Efimov factor',\n examples: ['efimovFactor']\n },\n atomicMass: {\n description: 'Atomic mass constant',\n examples: ['atomicMass']\n },\n avogadro: {\n description: 'Avogadro\\'s number',\n examples: ['avogadro']\n },\n boltzmann: {\n description: 'Boltzmann constant',\n examples: ['boltzmann']\n },\n faraday: {\n description: 'Faraday constant',\n examples: ['faraday']\n },\n firstRadiation: {\n description: 'First radiation constant',\n examples: ['firstRadiation']\n },\n loschmidt: {\n description: 'Loschmidt constant at T=273.15 K and p=101.325 kPa',\n examples: ['loschmidt']\n },\n gasConstant: {\n description: 'Gas constant',\n examples: ['gasConstant']\n },\n molarPlanckConstant: {\n description: 'Molar Planck constant',\n examples: ['molarPlanckConstant']\n },\n molarVolume: {\n description: 'Molar volume of an ideal gas at T=273.15 K and p=101.325 kPa',\n examples: ['molarVolume']\n },\n sackurTetrode: {\n description: 'Sackur-Tetrode constant at T=1 K and p=101.325 kPa',\n examples: ['sackurTetrode']\n },\n secondRadiation: {\n description: 'Second radiation constant',\n examples: ['secondRadiation']\n },\n stefanBoltzmann: {\n description: 'Stefan-Boltzmann constant',\n examples: ['stefanBoltzmann']\n },\n wienDisplacement: {\n description: 'Wien displacement law constant',\n examples: ['wienDisplacement']\n },\n // spectralRadiance: {description: 'First radiation constant for spectral radiance', examples: ['spectralRadiance']},\n\n molarMass: {\n description: 'Molar mass constant',\n examples: ['molarMass']\n },\n molarMassC12: {\n description: 'Molar mass constant of carbon-12',\n examples: ['molarMassC12']\n },\n gravity: {\n description: 'Standard acceleration of gravity (standard acceleration of free-fall on Earth)',\n examples: ['gravity']\n },\n planckLength: {\n description: 'Planck length',\n examples: ['planckLength']\n },\n planckMass: {\n description: 'Planck mass',\n examples: ['planckMass']\n },\n planckTime: {\n description: 'Planck time',\n examples: ['planckTime']\n },\n planckCharge: {\n description: 'Planck charge',\n examples: ['planckCharge']\n },\n planckTemperature: {\n description: 'Planck temperature',\n examples: ['planckTemperature']\n },\n // functions - algebra\n derivative: derivativeDocs,\n lsolve: lsolveDocs,\n lsolveAll: lsolveAllDocs,\n lup: lupDocs,\n lusolve: lusolveDocs,\n leafCount: leafCountDocs,\n polynomialRoot: polynomialRootDocs,\n resolve: resolveDocs,\n simplify: simplifyDocs,\n simplifyConstant: simplifyConstantDocs,\n simplifyCore: simplifyCoreDocs,\n symbolicEqual: symbolicEqualDocs,\n rationalize: rationalizeDocs,\n slu: sluDocs,\n usolve: usolveDocs,\n usolveAll: usolveAllDocs,\n qr: qrDocs,\n // functions - arithmetic\n abs: absDocs,\n add: addDocs,\n cbrt: cbrtDocs,\n ceil: ceilDocs,\n cube: cubeDocs,\n divide: divideDocs,\n dotDivide: dotDivideDocs,\n dotMultiply: dotMultiplyDocs,\n dotPow: dotPowDocs,\n exp: expDocs,\n expm: expmDocs,\n expm1: expm1Docs,\n fix: fixDocs,\n floor: floorDocs,\n gcd: gcdDocs,\n hypot: hypotDocs,\n lcm: lcmDocs,\n log: logDocs,\n log2: log2Docs,\n log1p: log1pDocs,\n log10: log10Docs,\n mod: modDocs,\n multiply: multiplyDocs,\n norm: normDocs,\n nthRoot: nthRootDocs,\n nthRoots: nthRootsDocs,\n pow: powDocs,\n round: roundDocs,\n sign: signDocs,\n sqrt: sqrtDocs,\n sqrtm: sqrtmDocs,\n square: squareDocs,\n subtract: subtractDocs,\n unaryMinus: unaryMinusDocs,\n unaryPlus: unaryPlusDocs,\n xgcd: xgcdDocs,\n invmod: invmodDocs,\n // functions - bitwise\n bitAnd: bitAndDocs,\n bitNot: bitNotDocs,\n bitOr: bitOrDocs,\n bitXor: bitXorDocs,\n leftShift: leftShiftDocs,\n rightArithShift: rightArithShiftDocs,\n rightLogShift: rightLogShiftDocs,\n // functions - combinatorics\n bellNumbers: bellNumbersDocs,\n catalan: catalanDocs,\n composition: compositionDocs,\n stirlingS2: stirlingS2Docs,\n // functions - core\n config: configDocs,\n import: importDocs,\n typed: typedDocs,\n // functions - complex\n arg: argDocs,\n conj: conjDocs,\n re: reDocs,\n im: imDocs,\n // functions - expression\n evaluate: evaluateDocs,\n help: helpDocs,\n // functions - geometry\n distance: distanceDocs,\n intersect: intersectDocs,\n // functions - logical\n and: andDocs,\n not: notDocs,\n or: orDocs,\n xor: xorDocs,\n // functions - matrix\n concat: concatDocs,\n count: countDocs,\n cross: crossDocs,\n column: columnDocs,\n ctranspose: ctransposeDocs,\n det: detDocs,\n diag: diagDocs,\n diff: diffDocs,\n dot: dotDocs,\n getMatrixDataType: getMatrixDataTypeDocs,\n identity: identityDocs,\n filter: filterDocs,\n flatten: flattenDocs,\n forEach: forEachDocs,\n inv: invDocs,\n pinv: pinvDocs,\n eigs: eigsDocs,\n kron: kronDocs,\n matrixFromFunction: matrixFromFunctionDocs,\n matrixFromRows: matrixFromRowsDocs,\n matrixFromColumns: matrixFromColumnsDocs,\n map: mapDocs,\n ones: onesDocs,\n partitionSelect: partitionSelectDocs,\n range: rangeDocs,\n resize: resizeDocs,\n reshape: reshapeDocs,\n rotate: rotateDocs,\n rotationMatrix: rotationMatrixDocs,\n row: rowDocs,\n size: sizeDocs,\n sort: sortDocs,\n squeeze: squeezeDocs,\n subset: subsetDocs,\n trace: traceDocs,\n transpose: transposeDocs,\n zeros: zerosDocs,\n fft: fftDocs,\n ifft: ifftDocs,\n sylvester: sylvesterDocs,\n schur: schurDocs,\n lyap: lyapDocs,\n // functions - numeric\n solveODE: solveODEDocs,\n // functions - probability\n combinations: combinationsDocs,\n combinationsWithRep: combinationsWithRepDocs,\n // distribution: distributionDocs,\n factorial: factorialDocs,\n gamma: gammaDocs,\n kldivergence: kldivergenceDocs,\n lgamma: lgammaDocs,\n multinomial: multinomialDocs,\n permutations: permutationsDocs,\n pickRandom: pickRandomDocs,\n random: randomDocs,\n randomInt: randomIntDocs,\n // functions - relational\n compare: compareDocs,\n compareNatural: compareNaturalDocs,\n compareText: compareTextDocs,\n deepEqual: deepEqualDocs,\n equal: equalDocs,\n equalText: equalTextDocs,\n larger: largerDocs,\n largerEq: largerEqDocs,\n smaller: smallerDocs,\n smallerEq: smallerEqDocs,\n unequal: unequalDocs,\n // functions - set\n setCartesian: setCartesianDocs,\n setDifference: setDifferenceDocs,\n setDistinct: setDistinctDocs,\n setIntersect: setIntersectDocs,\n setIsSubset: setIsSubsetDocs,\n setMultiplicity: setMultiplicityDocs,\n setPowerset: setPowersetDocs,\n setSize: setSizeDocs,\n setSymDifference: setSymDifferenceDocs,\n setUnion: setUnionDocs,\n // functions - signal\n zpk2tf: zpk2tfDocs,\n freqz: freqzDocs,\n // functions - special\n erf: erfDocs,\n zeta: zetaDocs,\n // functions - statistics\n cumsum: cumSumDocs,\n mad: madDocs,\n max: maxDocs,\n mean: meanDocs,\n median: medianDocs,\n min: minDocs,\n mode: modeDocs,\n prod: prodDocs,\n quantileSeq: quantileSeqDocs,\n std: stdDocs,\n sum: sumDocs,\n variance: varianceDocs,\n corr: corrDocs,\n // functions - trigonometry\n acos: acosDocs,\n acosh: acoshDocs,\n acot: acotDocs,\n acoth: acothDocs,\n acsc: acscDocs,\n acsch: acschDocs,\n asec: asecDocs,\n asech: asechDocs,\n asin: asinDocs,\n asinh: asinhDocs,\n atan: atanDocs,\n atanh: atanhDocs,\n atan2: atan2Docs,\n cos: cosDocs,\n cosh: coshDocs,\n cot: cotDocs,\n coth: cothDocs,\n csc: cscDocs,\n csch: cschDocs,\n sec: secDocs,\n sech: sechDocs,\n sin: sinDocs,\n sinh: sinhDocs,\n tan: tanDocs,\n tanh: tanhDocs,\n // functions - units\n to: toDocs,\n // functions - utils\n clone: cloneDocs,\n format: formatDocs,\n bin: binDocs,\n oct: octDocs,\n hex: hexDocs,\n isNaN: isNaNDocs,\n isInteger: isIntegerDocs,\n isNegative: isNegativeDocs,\n isNumeric: isNumericDocs,\n hasNumericValue: hasNumericValueDocs,\n isPositive: isPositiveDocs,\n isPrime: isPrimeDocs,\n isZero: isZeroDocs,\n print: printDocs,\n typeOf: typeOfDocs,\n numeric: numericDocs\n};","import { factory } from '../../utils/factory.js';\nimport { errorTransform } from './utils/errorTransform.js';\nimport { createMean } from '../../function/statistics/mean.js';\nimport { lastDimToZeroBase } from './utils/lastDimToZeroBase.js';\nvar name = 'mean';\nvar dependencies = ['typed', 'add', 'divide'];\nexport var createMeanTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n add,\n divide\n } = _ref;\n var mean = createMean({\n typed,\n add,\n divide\n });\n\n /**\n * Attach a transform function to math.mean\n * Adds a property transform containing the transform function.\n *\n * This transform changed the last `dim` parameter of function mean\n * from one-based to zero based\n */\n return typed('mean', {\n '...any': function any(args) {\n args = lastDimToZeroBase(args);\n try {\n return mean.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});","import { createMap } from '../../utils/map.js';\nimport { isFunctionNode, isNode, isOperatorNode, isParenthesisNode, isSymbolNode } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'resolve';\nvar dependencies = ['typed', 'parse', 'ConstantNode', 'FunctionNode', 'OperatorNode', 'ParenthesisNode'];\nexport var createResolve = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n parse,\n ConstantNode,\n FunctionNode,\n OperatorNode,\n ParenthesisNode\n } = _ref;\n /**\n * resolve(expr, scope) replaces variable nodes with their scoped values\n *\n * Syntax:\n *\n * math.resolve(expr, scope)\n *\n * Examples:\n *\n * math.resolve('x + y', {x:1, y:2}) // Node '1 + 2'\n * math.resolve(math.parse('x+y'), {x:1, y:2}) // Node '1 + 2'\n * math.simplify('x+y', {x:2, y: math.parse('x+x')}).toString() // \"6\"\n *\n * See also:\n *\n * simplify, evaluate\n *\n * @param {Node | Node[]} node\n * The expression tree (or trees) to be simplified\n * @param {Object} scope\n * Scope specifying variables to be resolved\n * @return {Node | Node[]} Returns `node` with variables recursively substituted.\n * @throws {ReferenceError}\n * If there is a cyclic dependency among the variables in `scope`,\n * resolution is impossible and a ReferenceError is thrown.\n */\n function _resolve(node, scope) {\n var within = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : new Set();\n // note `within`:\n // `within` is not documented, since it is for internal cycle\n // detection only\n if (!scope) {\n return node;\n }\n if (isSymbolNode(node)) {\n if (within.has(node.name)) {\n var variables = Array.from(within).join(', ');\n throw new ReferenceError(\"recursive loop of variable definitions among {\".concat(variables, \"}\"));\n }\n var value = scope.get(node.name);\n if (isNode(value)) {\n var nextWithin = new Set(within);\n nextWithin.add(node.name);\n return _resolve(value, scope, nextWithin);\n } else if (typeof value === 'number') {\n return parse(String(value));\n } else if (value !== undefined) {\n return new ConstantNode(value);\n } else {\n return node;\n }\n } else if (isOperatorNode(node)) {\n var args = node.args.map(function (arg) {\n return _resolve(arg, scope, within);\n });\n return new OperatorNode(node.op, node.fn, args, node.implicit);\n } else if (isParenthesisNode(node)) {\n return new ParenthesisNode(_resolve(node.content, scope, within));\n } else if (isFunctionNode(node)) {\n var _args = node.args.map(function (arg) {\n return _resolve(arg, scope, within);\n });\n return new FunctionNode(node.name, _args);\n }\n\n // Otherwise just recursively resolve any children (might also work\n // for some of the above special cases)\n return node.map(child => _resolve(child, scope, within));\n }\n return typed('resolve', {\n Node: _resolve,\n 'Node, Map | null | undefined': _resolve,\n 'Node, Object': (n, scope) => _resolve(n, createMap(scope)),\n // For arrays and matrices, we map `self` rather than `_resolve`\n // because resolve is fairly expensive anyway, and this way\n // we get nice error messages if one entry in the array has wrong type.\n 'Array | Matrix': typed.referToSelf(self => A => A.map(n => self(n))),\n 'Array | Matrix, null | undefined': typed.referToSelf(self => A => A.map(n => self(n))),\n 'Array, Object': typed.referTo('Array,Map', selfAM => (A, scope) => selfAM(A, createMap(scope))),\n 'Matrix, Object': typed.referTo('Matrix,Map', selfMM => (A, scope) => selfMM(A, createMap(scope))),\n 'Array | Matrix, Map': typed.referToSelf(self => (A, scope) => A.map(n => self(n, scope)))\n });\n});","import { factory } from '../../utils/factory.js';\nimport { errorTransform } from './utils/errorTransform.js';\nimport { createMax } from '../../function/statistics/max.js';\nimport { lastDimToZeroBase } from './utils/lastDimToZeroBase.js';\nvar name = 'max';\nvar dependencies = ['typed', 'config', 'numeric', 'larger'];\nexport var createMaxTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n numeric,\n larger\n } = _ref;\n var max = createMax({\n typed,\n config,\n numeric,\n larger\n });\n\n /**\n * Attach a transform function to math.max\n * Adds a property transform containing the transform function.\n *\n * This transform changed the last `dim` parameter of function max\n * from one-based to zero based\n */\n return typed('max', {\n '...any': function any(args) {\n args = lastDimToZeroBase(args);\n try {\n return max.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { isAccessorNode, isArrayNode, isConstantNode, isFunctionNode, isIndexNode, isNode, isObjectNode, isParenthesisNode, isSymbolNode } from '../../utils/is.js';\nimport { getSafeProperty } from '../../utils/customs.js';\nimport { factory } from '../../utils/factory.js';\nimport { accessFactory } from './utils/access.js';\nvar name = 'AccessorNode';\nvar dependencies = ['subset', 'Node'];\nexport var createAccessorNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n subset,\n Node\n } = _ref;\n var access = accessFactory({\n subset\n });\n\n /**\n * Are parenthesis needed?\n * @private\n */\n function needParenthesis(node) {\n // TODO: maybe make a method on the nodes which tells whether they need parenthesis?\n return !(isAccessorNode(node) || isArrayNode(node) || isConstantNode(node) || isFunctionNode(node) || isObjectNode(node) || isParenthesisNode(node) || isSymbolNode(node));\n }\n class AccessorNode extends Node {\n /**\n * @constructor AccessorNode\n * @extends {Node}\n * Access an object property or get a matrix subset\n *\n * @param {Node} object The object from which to retrieve\n * a property or subset.\n * @param {IndexNode} index IndexNode containing ranges\n */\n constructor(object, index) {\n super();\n if (!isNode(object)) {\n throw new TypeError('Node expected for parameter \"object\"');\n }\n if (!isIndexNode(index)) {\n throw new TypeError('IndexNode expected for parameter \"index\"');\n }\n this.object = object;\n this.index = index;\n }\n\n // readonly property name\n get name() {\n if (this.index) {\n return this.index.isObjectProperty() ? this.index.getObjectProperty() : '';\n } else {\n return this.object.name || '';\n }\n }\n get type() {\n return name;\n }\n get isAccessorNode() {\n return true;\n }\n\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n _compile(math, argNames) {\n var evalObject = this.object._compile(math, argNames);\n var evalIndex = this.index._compile(math, argNames);\n if (this.index.isObjectProperty()) {\n var prop = this.index.getObjectProperty();\n return function evalAccessorNode(scope, args, context) {\n // get a property from an object evaluated using the scope.\n return getSafeProperty(evalObject(scope, args, context), prop);\n };\n } else {\n return function evalAccessorNode(scope, args, context) {\n var object = evalObject(scope, args, context);\n // we pass just object here instead of context:\n var index = evalIndex(scope, args, object);\n return access(object, index);\n };\n }\n }\n\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n forEach(callback) {\n callback(this.object, 'object', this);\n callback(this.index, 'index', this);\n }\n\n /**\n * Create a new AccessorNode whose children are the results of calling\n * the provided callback function for each child of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {AccessorNode} Returns a transformed copy of the node\n */\n map(callback) {\n return new AccessorNode(this._ifNode(callback(this.object, 'object', this)), this._ifNode(callback(this.index, 'index', this)));\n }\n\n /**\n * Create a clone of this node, a shallow copy\n * @return {AccessorNode}\n */\n clone() {\n return new AccessorNode(this.object, this.index);\n }\n\n /**\n * Get string representation\n * @param {Object} options\n * @return {string}\n */\n _toString(options) {\n var object = this.object.toString(options);\n if (needParenthesis(this.object)) {\n object = '(' + object + ')';\n }\n return object + this.index.toString(options);\n }\n\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string}\n */\n toHTML(options) {\n var object = this.object.toHTML(options);\n if (needParenthesis(this.object)) {\n object = '(' + object + ')';\n }\n return object + this.index.toHTML(options);\n }\n\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string}\n */\n _toTex(options) {\n var object = this.object.toTex(options);\n if (needParenthesis(this.object)) {\n object = '\\\\left(\\' + object + \\'\\\\right)';\n }\n return object + this.index.toTex(options);\n }\n\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n toJSON() {\n return {\n mathjs: name,\n object: this.object,\n index: this.index\n };\n }\n\n /**\n * Instantiate an AccessorNode from its JSON representation\n * @param {Object} json\n * An object structured like\n * `{\"mathjs\": \"AccessorNode\", object: ..., index: ...}`,\n * where mathjs is optional\n * @returns {AccessorNode}\n */\n static fromJSON(json) {\n return new AccessorNode(json.object, json.index);\n }\n }\n _defineProperty(AccessorNode, \"name\", name);\n return AccessorNode;\n}, {\n isClass: true,\n isNode: true\n});","import { factory } from '../../utils/factory.js';\nimport { createRow } from '../../function/matrix/row.js';\nimport { errorTransform } from './utils/errorTransform.js';\nimport { isNumber } from '../../utils/is.js';\nvar name = 'row';\nvar dependencies = ['typed', 'Index', 'matrix', 'range'];\n\n/**\n * Attach a transform function to matrix.column\n * Adds a property transform containing the transform function.\n *\n * This transform changed the last `index` parameter of function column\n * from zero-based to one-based\n */\nexport var createRowTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n Index,\n matrix,\n range\n } = _ref;\n var row = createRow({\n typed,\n Index,\n matrix,\n range\n });\n\n // @see: comment of row itself\n return typed('row', {\n '...any': function any(args) {\n // change last argument from zero-based to one-based\n var lastIndex = args.length - 1;\n var last = args[lastIndex];\n if (isNumber(last)) {\n args[lastIndex] = last - 1;\n }\n try {\n return row.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});","import { isHelp } from '../utils/is.js';\nimport { clone } from '../utils/object.js';\nimport { format } from '../utils/string.js';\nimport { factory } from '../utils/factory.js';\nvar name = 'Help';\nvar dependencies = ['parse'];\nexport var createHelpClass = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n parse\n } = _ref;\n /**\n * Documentation object\n * @param {Object} doc Object containing properties:\n * {string} name\n * {string} category\n * {string} description\n * {string[]} syntax\n * {string[]} examples\n * {string[]} seealso\n * @constructor\n */\n function Help(doc) {\n if (!(this instanceof Help)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n if (!doc) throw new Error('Argument \"doc\" missing');\n this.doc = doc;\n }\n\n /**\n * Attach type information\n */\n Help.prototype.type = 'Help';\n Help.prototype.isHelp = true;\n\n /**\n * Generate a string representation of the Help object\n * @return {string} Returns a string\n * @private\n */\n Help.prototype.toString = function () {\n var doc = this.doc || {};\n var desc = '\\n';\n if (doc.name) {\n desc += 'Name: ' + doc.name + '\\n\\n';\n }\n if (doc.category) {\n desc += 'Category: ' + doc.category + '\\n\\n';\n }\n if (doc.description) {\n desc += 'Description:\\n ' + doc.description + '\\n\\n';\n }\n if (doc.syntax) {\n desc += 'Syntax:\\n ' + doc.syntax.join('\\n ') + '\\n\\n';\n }\n if (doc.examples) {\n desc += 'Examples:\\n';\n var scope = {};\n for (var i = 0; i < doc.examples.length; i++) {\n var expr = doc.examples[i];\n desc += ' ' + expr + '\\n';\n var res = void 0;\n try {\n // note: res can be undefined when `expr` is an empty string\n res = parse(expr).compile().evaluate(scope);\n } catch (e) {\n res = e;\n }\n if (res !== undefined && !isHelp(res)) {\n desc += ' ' + format(res, {\n precision: 14\n }) + '\\n';\n }\n }\n desc += '\\n';\n }\n if (doc.mayThrow && doc.mayThrow.length) {\n desc += 'Throws: ' + doc.mayThrow.join(', ') + '\\n\\n';\n }\n if (doc.seealso && doc.seealso.length) {\n desc += 'See also: ' + doc.seealso.join(', ') + '\\n';\n }\n return desc;\n };\n\n /**\n * Export the help object to JSON\n */\n Help.prototype.toJSON = function () {\n var obj = clone(this.doc);\n obj.mathjs = 'Help';\n return obj;\n };\n\n /**\n * Instantiate a Help object from a JSON object\n * @param {Object} json\n * @returns {Help} Returns a new Help object\n */\n Help.fromJSON = function (json) {\n var doc = {};\n Object.keys(json).filter(prop => prop !== 'mathjs').forEach(prop => {\n doc[prop] = json[prop];\n });\n return new Help(doc);\n };\n\n /**\n * Returns a string representation of the Help object\n */\n Help.prototype.valueOf = Help.prototype.toString;\n return Help;\n}, {\n isClass: true\n});","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { isNode } from '../../utils/is.js';\nimport { forEach, map } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'BlockNode';\nvar dependencies = ['ResultSet', 'Node'];\nexport var createBlockNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n ResultSet,\n Node\n } = _ref;\n class BlockNode extends Node {\n /**\n * @constructor BlockNode\n * @extends {Node}\n * Holds a set with blocks\n * @param {Array.<{node: Node} | {node: Node, visible: boolean}>} blocks\n * An array with blocks, where a block is constructed as an\n * Object with properties block, which is a Node, and visible,\n * which is a boolean. The property visible is optional and\n * is true by default\n */\n constructor(blocks) {\n super();\n // validate input, copy blocks\n if (!Array.isArray(blocks)) throw new Error('Array expected');\n this.blocks = blocks.map(function (block) {\n var node = block && block.node;\n var visible = block && block.visible !== undefined ? block.visible : true;\n if (!isNode(node)) throw new TypeError('Property \"node\" must be a Node');\n if (typeof visible !== 'boolean') {\n throw new TypeError('Property \"visible\" must be a boolean');\n }\n return {\n node,\n visible\n };\n });\n }\n get type() {\n return name;\n }\n get isBlockNode() {\n return true;\n }\n\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n _compile(math, argNames) {\n var evalBlocks = map(this.blocks, function (block) {\n return {\n evaluate: block.node._compile(math, argNames),\n visible: block.visible\n };\n });\n return function evalBlockNodes(scope, args, context) {\n var results = [];\n forEach(evalBlocks, function evalBlockNode(block) {\n var result = block.evaluate(scope, args, context);\n if (block.visible) {\n results.push(result);\n }\n });\n return new ResultSet(results);\n };\n }\n\n /**\n * Execute a callback for each of the child blocks of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n forEach(callback) {\n for (var i = 0; i < this.blocks.length; i++) {\n callback(this.blocks[i].node, 'blocks[' + i + '].node', this);\n }\n }\n\n /**\n * Create a new BlockNode whose children are the results of calling\n * the provided callback function for each child of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {BlockNode} Returns a transformed copy of the node\n */\n map(callback) {\n var blocks = [];\n for (var i = 0; i < this.blocks.length; i++) {\n var block = this.blocks[i];\n var node = this._ifNode(callback(block.node, 'blocks[' + i + '].node', this));\n blocks[i] = {\n node,\n visible: block.visible\n };\n }\n return new BlockNode(blocks);\n }\n\n /**\n * Create a clone of this node, a shallow copy\n * @return {BlockNode}\n */\n clone() {\n var blocks = this.blocks.map(function (block) {\n return {\n node: block.node,\n visible: block.visible\n };\n });\n return new BlockNode(blocks);\n }\n\n /**\n * Get string representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n _toString(options) {\n return this.blocks.map(function (param) {\n return param.node.toString(options) + (param.visible ? '' : ';');\n }).join('\\n');\n }\n\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n toJSON() {\n return {\n mathjs: name,\n blocks: this.blocks\n };\n }\n\n /**\n * Instantiate an BlockNode from its JSON representation\n * @param {Object} json\n * An object structured like\n * `{\"mathjs\": \"BlockNode\", blocks: [{node: ..., visible: false}, ...]}`,\n * where mathjs is optional\n * @returns {BlockNode}\n */\n static fromJSON(json) {\n return new BlockNode(json.blocks);\n }\n\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n toHTML(options) {\n return this.blocks.map(function (param) {\n return param.node.toHTML(options) + (param.visible ? '' : ';');\n }).join('
');\n }\n\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string} str\n */\n _toTex(options) {\n return this.blocks.map(function (param) {\n return param.node.toTex(options) + (param.visible ? '' : ';');\n }).join('\\\\;\\\\;\\n');\n }\n }\n _defineProperty(BlockNode, \"name\", name);\n return BlockNode;\n}, {\n isClass: true,\n isNode: true\n});","import { escape } from '../../utils/string.js';\nimport { getSafeProperty } from '../../utils/customs.js';\nimport { factory } from '../../utils/factory.js';\nimport { toSymbol } from '../../utils/latex.js';\nvar name = 'SymbolNode';\nvar dependencies = ['math', '?Unit', 'Node'];\nexport var createSymbolNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n math,\n Unit,\n Node\n } = _ref;\n /**\n * Check whether some name is a valueless unit like \"inch\".\n * @param {string} name\n * @return {boolean}\n */\n function isValuelessUnit(name) {\n return Unit ? Unit.isValuelessUnit(name) : false;\n }\n class SymbolNode extends Node {\n /**\n * @constructor SymbolNode\n * @extends {Node}\n * A symbol node can hold and resolve a symbol\n * @param {string} name\n * @extends {Node}\n */\n constructor(name) {\n super();\n // validate input\n if (typeof name !== 'string') {\n throw new TypeError('String expected for parameter \"name\"');\n }\n this.name = name;\n }\n get type() {\n return 'SymbolNode';\n }\n get isSymbolNode() {\n return true;\n }\n\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n _compile(math, argNames) {\n var name = this.name;\n if (argNames[name] === true) {\n // this is a FunctionAssignment argument\n // (like an x when inside the expression of a function\n // assignment `f(x) = ...`)\n return function (scope, args, context) {\n return getSafeProperty(args, name);\n };\n } else if (name in math) {\n return function (scope, args, context) {\n return scope.has(name) ? scope.get(name) : getSafeProperty(math, name);\n };\n } else {\n var isUnit = isValuelessUnit(name);\n return function (scope, args, context) {\n return scope.has(name) ? scope.get(name) : isUnit ? new Unit(null, name) : SymbolNode.onUndefinedSymbol(name);\n };\n }\n }\n\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n forEach(callback) {\n // nothing to do, we don't have any children\n }\n\n /**\n * Create a new SymbolNode with children produced by the given callback.\n * Trivial since a SymbolNode has no children\n * @param {function(child: Node, path: string, parent: Node) : Node} callback\n * @returns {SymbolNode} Returns a clone of the node\n */\n map(callback) {\n return this.clone();\n }\n\n /**\n * Throws an error 'Undefined symbol {name}'\n * @param {string} name\n */\n static onUndefinedSymbol(name) {\n throw new Error('Undefined symbol ' + name);\n }\n\n /**\n * Create a clone of this node, a shallow copy\n * @return {SymbolNode}\n */\n clone() {\n return new SymbolNode(this.name);\n }\n\n /**\n * Get string representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n _toString(options) {\n return this.name;\n }\n\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n toHTML(options) {\n var name = escape(this.name);\n if (name === 'true' || name === 'false') {\n return '' + name + '';\n } else if (name === 'i') {\n return '' + name + '';\n } else if (name === 'Infinity') {\n return '' + name + '';\n } else if (name === 'NaN') {\n return '' + name + '';\n } else if (name === 'null') {\n return '' + name + '';\n } else if (name === 'undefined') {\n return '' + name + '';\n }\n return '' + name + '';\n }\n\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n toJSON() {\n return {\n mathjs: 'SymbolNode',\n name: this.name\n };\n }\n\n /**\n * Instantiate a SymbolNode from its JSON representation\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"SymbolNode\", name: \"x\"}`,\n * where mathjs is optional\n * @returns {SymbolNode}\n */\n static fromJSON(json) {\n return new SymbolNode(json.name);\n }\n\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n _toTex(options) {\n var isUnit = false;\n if (typeof math[this.name] === 'undefined' && isValuelessUnit(this.name)) {\n isUnit = true;\n }\n var symbol = toSymbol(this.name, isUnit);\n if (symbol[0] === '\\\\') {\n // no space needed if the symbol starts with '\\'\n return symbol;\n }\n // the space prevents symbols from breaking stuff like '\\cdot'\n // if it's written right before the symbol\n return ' ' + symbol;\n }\n }\n return SymbolNode;\n}, {\n isClass: true,\n isNode: true\n});","// Reserved keywords not allowed to use in the parser\nexport var keywords = new Set(['end']);","import { errorTransform } from '../../transform/utils/errorTransform.js';\nimport { setSafeProperty } from '../../../utils/customs.js';\nexport function assignFactory(_ref) {\n var {\n subset,\n matrix\n } = _ref;\n /**\n * Replace part of an object:\n *\n * - Assign a property to an object\n * - Replace a part of a string\n * - Replace a matrix subset\n *\n * @param {Object | Array | Matrix | string} object\n * @param {Index} index\n * @param {*} value\n * @return {Object | Array | Matrix | string} Returns the original object\n * except in case of a string\n */\n // TODO: change assign to return the value instead of the object\n return function assign(object, index, value) {\n try {\n if (Array.isArray(object)) {\n var result = matrix(object).subset(index, value).valueOf();\n\n // shallow copy all (updated) items into the original array\n result.forEach((item, index) => {\n object[index] = item;\n });\n return object;\n } else if (object && typeof object.subset === 'function') {\n // Matrix\n return object.subset(index, value);\n } else if (typeof object === 'string') {\n // TODO: move setStringSubset into a separate util file, use that\n return subset(object, index, value);\n } else if (typeof object === 'object') {\n if (!index.isObjectProperty()) {\n throw TypeError('Cannot apply a numeric index as object property');\n }\n setSafeProperty(object, index.getObjectProperty(), value);\n return object;\n } else {\n throw new TypeError('Cannot apply index: unsupported type of object');\n }\n } catch (err) {\n throw errorTransform(err);\n }\n };\n}","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { isAccessorNode, isIndexNode, isNode, isSymbolNode } from '../../utils/is.js';\nimport { getSafeProperty, setSafeProperty } from '../../utils/customs.js';\nimport { factory } from '../../utils/factory.js';\nimport { accessFactory } from './utils/access.js';\nimport { assignFactory } from './utils/assign.js';\nimport { getPrecedence } from '../operators.js';\nvar name = 'AssignmentNode';\nvar dependencies = ['subset', '?matrix',\n// FIXME: should not be needed at all, should be handled by subset\n'Node'];\nexport var createAssignmentNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n subset,\n matrix,\n Node\n } = _ref;\n var access = accessFactory({\n subset\n });\n var assign = assignFactory({\n subset,\n matrix\n });\n\n /*\n * Is parenthesis needed?\n * @param {node} node\n * @param {string} [parenthesis='keep']\n * @param {string} implicit\n * @private\n */\n function needParenthesis(node, parenthesis, implicit) {\n if (!parenthesis) {\n parenthesis = 'keep';\n }\n var precedence = getPrecedence(node, parenthesis, implicit);\n var exprPrecedence = getPrecedence(node.value, parenthesis, implicit);\n return parenthesis === 'all' || exprPrecedence !== null && exprPrecedence <= precedence;\n }\n class AssignmentNode extends Node {\n /**\n * @constructor AssignmentNode\n * @extends {Node}\n *\n * Define a symbol, like `a=3.2`, update a property like `a.b=3.2`, or\n * replace a subset of a matrix like `A[2,2]=42`.\n *\n * Syntax:\n *\n * new AssignmentNode(symbol, value)\n * new AssignmentNode(object, index, value)\n *\n * Usage:\n *\n * new AssignmentNode(new SymbolNode('a'), new ConstantNode(2)) // a=2\n * new AssignmentNode(new SymbolNode('a'),\n * new IndexNode('b'),\n * new ConstantNode(2)) // a.b=2\n * new AssignmentNode(new SymbolNode('a'),\n * new IndexNode(1, 2),\n * new ConstantNode(3)) // a[1,2]=3\n *\n * @param {SymbolNode | AccessorNode} object\n * Object on which to assign a value\n * @param {IndexNode} [index=null]\n * Index, property name or matrix index. Optional. If not provided\n * and `object` is a SymbolNode, the property is assigned to the\n * global scope.\n * @param {Node} value\n * The value to be assigned\n */\n constructor(object, index, value) {\n super();\n this.object = object;\n this.index = value ? index : null;\n this.value = value || index;\n\n // validate input\n if (!isSymbolNode(object) && !isAccessorNode(object)) {\n throw new TypeError('SymbolNode or AccessorNode expected as \"object\"');\n }\n if (isSymbolNode(object) && object.name === 'end') {\n throw new Error('Cannot assign to symbol \"end\"');\n }\n if (this.index && !isIndexNode(this.index)) {\n // index is optional\n throw new TypeError('IndexNode expected as \"index\"');\n }\n if (!isNode(this.value)) {\n throw new TypeError('Node expected as \"value\"');\n }\n }\n\n // class name for typing purposes:\n\n // readonly property name\n get name() {\n if (this.index) {\n return this.index.isObjectProperty() ? this.index.getObjectProperty() : '';\n } else {\n return this.object.name || '';\n }\n }\n get type() {\n return name;\n }\n get isAssignmentNode() {\n return true;\n }\n\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n _compile(math, argNames) {\n var evalObject = this.object._compile(math, argNames);\n var evalIndex = this.index ? this.index._compile(math, argNames) : null;\n var evalValue = this.value._compile(math, argNames);\n var name = this.object.name;\n if (!this.index) {\n // apply a variable to the scope, for example `a=2`\n if (!isSymbolNode(this.object)) {\n throw new TypeError('SymbolNode expected as object');\n }\n return function evalAssignmentNode(scope, args, context) {\n var value = evalValue(scope, args, context);\n scope.set(name, value);\n return value;\n };\n } else if (this.index.isObjectProperty()) {\n // apply an object property for example `a.b=2`\n var prop = this.index.getObjectProperty();\n return function evalAssignmentNode(scope, args, context) {\n var object = evalObject(scope, args, context);\n var value = evalValue(scope, args, context);\n setSafeProperty(object, prop, value);\n return value;\n };\n } else if (isSymbolNode(this.object)) {\n // update a matrix subset, for example `a[2]=3`\n return function evalAssignmentNode(scope, args, context) {\n var childObject = evalObject(scope, args, context);\n var value = evalValue(scope, args, context);\n // Important: we pass childObject instead of context:\n var index = evalIndex(scope, args, childObject);\n scope.set(name, assign(childObject, index, value));\n return value;\n };\n } else {\n // isAccessorNode(node.object) === true\n // update a matrix subset, for example `a.b[2]=3`\n\n // we will not use the compile function of the AccessorNode, but\n // compile it ourselves here as we need the parent object of the\n // AccessorNode:\n // wee need to apply the updated object to parent object\n var evalParentObject = this.object.object._compile(math, argNames);\n if (this.object.index.isObjectProperty()) {\n var parentProp = this.object.index.getObjectProperty();\n return function evalAssignmentNode(scope, args, context) {\n var parent = evalParentObject(scope, args, context);\n var childObject = getSafeProperty(parent, parentProp);\n // Important: we pass childObject instead of context:\n var index = evalIndex(scope, args, childObject);\n var value = evalValue(scope, args, context);\n setSafeProperty(parent, parentProp, assign(childObject, index, value));\n return value;\n };\n } else {\n // if some parameters use the 'end' parameter, we need to calculate\n // the size\n var evalParentIndex = this.object.index._compile(math, argNames);\n return function evalAssignmentNode(scope, args, context) {\n var parent = evalParentObject(scope, args, context);\n // Important: we pass parent instead of context:\n var parentIndex = evalParentIndex(scope, args, parent);\n var childObject = access(parent, parentIndex);\n // Important: we pass childObject instead of context\n var index = evalIndex(scope, args, childObject);\n var value = evalValue(scope, args, context);\n assign(parent, parentIndex, assign(childObject, index, value));\n return value;\n };\n }\n }\n }\n\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n forEach(callback) {\n callback(this.object, 'object', this);\n if (this.index) {\n callback(this.index, 'index', this);\n }\n callback(this.value, 'value', this);\n }\n\n /**\n * Create a new AssignmentNode whose children are the results of calling\n * the provided callback function for each child of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {AssignmentNode} Returns a transformed copy of the node\n */\n map(callback) {\n var object = this._ifNode(callback(this.object, 'object', this));\n var index = this.index ? this._ifNode(callback(this.index, 'index', this)) : null;\n var value = this._ifNode(callback(this.value, 'value', this));\n return new AssignmentNode(object, index, value);\n }\n\n /**\n * Create a clone of this node, a shallow copy\n * @return {AssignmentNode}\n */\n clone() {\n return new AssignmentNode(this.object, this.index, this.value);\n }\n\n /**\n * Get string representation\n * @param {Object} options\n * @return {string}\n */\n _toString(options) {\n var object = this.object.toString(options);\n var index = this.index ? this.index.toString(options) : '';\n var value = this.value.toString(options);\n if (needParenthesis(this, options && options.parenthesis, options && options.implicit)) {\n value = '(' + value + ')';\n }\n return object + index + ' = ' + value;\n }\n\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n toJSON() {\n return {\n mathjs: name,\n object: this.object,\n index: this.index,\n value: this.value\n };\n }\n\n /**\n * Instantiate an AssignmentNode from its JSON representation\n * @param {Object} json\n * An object structured like\n * `{\"mathjs\": \"AssignmentNode\", object: ..., index: ..., value: ...}`,\n * where mathjs is optional\n * @returns {AssignmentNode}\n */\n static fromJSON(json) {\n return new AssignmentNode(json.object, json.index, json.value);\n }\n\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string}\n */\n toHTML(options) {\n var object = this.object.toHTML(options);\n var index = this.index ? this.index.toHTML(options) : '';\n var value = this.value.toHTML(options);\n if (needParenthesis(this, options && options.parenthesis, options && options.implicit)) {\n value = '(' + value + ')';\n }\n return object + index + '=' + value;\n }\n\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string}\n */\n _toTex(options) {\n var object = this.object.toTex(options);\n var index = this.index ? this.index.toTex(options) : '';\n var value = this.value.toTex(options);\n if (needParenthesis(this, options && options.parenthesis, options && options.implicit)) {\n value = \"\\\\left(\".concat(value, \"\\\\right)\");\n }\n return object + index + ':=' + value;\n }\n }\n _defineProperty(AssignmentNode, \"name\", name);\n return AssignmentNode;\n}, {\n isClass: true,\n isNode: true\n});","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { format } from '../../utils/string.js';\nimport { typeOf } from '../../utils/is.js';\nimport { escapeLatex } from '../../utils/latex.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'ConstantNode';\nvar dependencies = ['Node'];\nexport var createConstantNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n Node\n } = _ref;\n class ConstantNode extends Node {\n /**\n * A ConstantNode holds a constant value like a number or string.\n *\n * Usage:\n *\n * new ConstantNode(2.3)\n * new ConstantNode('hello')\n *\n * @param {*} value Value can be any type (number, BigNumber, string, ...)\n * @constructor ConstantNode\n * @extends {Node}\n */\n constructor(value) {\n super();\n this.value = value;\n }\n get type() {\n return name;\n }\n get isConstantNode() {\n return true;\n }\n\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n _compile(math, argNames) {\n var value = this.value;\n return function evalConstantNode() {\n return value;\n };\n }\n\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n forEach(callback) {\n // nothing to do, we don't have any children\n }\n\n /**\n * Create a new ConstantNode with children produced by the given callback.\n * Trivial because there are no children.\n * @param {function(child: Node, path: string, parent: Node) : Node} callback\n * @returns {ConstantNode} Returns a clone of the node\n */\n map(callback) {\n return this.clone();\n }\n\n /**\n * Create a clone of this node, a shallow copy\n * @return {ConstantNode}\n */\n clone() {\n return new ConstantNode(this.value);\n }\n\n /**\n * Get string representation\n * @param {Object} options\n * @return {string} str\n */\n _toString(options) {\n return format(this.value, options);\n }\n\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string} str\n */\n toHTML(options) {\n var value = this._toString(options);\n switch (typeOf(this.value)) {\n case 'number':\n case 'BigNumber':\n case 'Fraction':\n return '' + value + '';\n case 'string':\n return '' + value + '';\n case 'boolean':\n return '' + value + '';\n case 'null':\n return '' + value + '';\n case 'undefined':\n return '' + value + '';\n default:\n return '' + value + '';\n }\n }\n\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n toJSON() {\n return {\n mathjs: name,\n value: this.value\n };\n }\n\n /**\n * Instantiate a ConstantNode from its JSON representation\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"SymbolNode\", value: 2.3}`,\n * where mathjs is optional\n * @returns {ConstantNode}\n */\n static fromJSON(json) {\n return new ConstantNode(json.value);\n }\n\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string} str\n */\n _toTex(options) {\n var value = this._toString(options);\n switch (typeOf(this.value)) {\n case 'string':\n return '\\\\mathtt{' + escapeLatex(value) + '}';\n case 'number':\n case 'BigNumber':\n {\n if (!isFinite(this.value)) {\n return this.value.valueOf() < 0 ? '-\\\\infty' : '\\\\infty';\n }\n var index = value.toLowerCase().indexOf('e');\n if (index !== -1) {\n return value.substring(0, index) + '\\\\cdot10^{' + value.substring(index + 1) + '}';\n }\n }\n return value;\n case 'Fraction':\n return this.value.toLatex();\n default:\n return value;\n }\n }\n }\n _defineProperty(ConstantNode, \"name\", name);\n return ConstantNode;\n}, {\n isClass: true,\n isNode: true\n});","import { isBigNumber, isNumber } from '../../utils/is.js';\nimport { errorTransform } from './utils/errorTransform.js';\nimport { factory } from '../../utils/factory.js';\nimport { createConcat } from '../../function/matrix/concat.js';\nvar name = 'concat';\nvar dependencies = ['typed', 'matrix', 'isInteger'];\nexport var createConcatTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n isInteger\n } = _ref;\n var concat = createConcat({\n typed,\n matrix,\n isInteger\n });\n\n /**\n * Attach a transform function to math.range\n * Adds a property transform containing the transform function.\n *\n * This transform changed the last `dim` parameter of function concat\n * from one-based to zero based\n */\n return typed('concat', {\n '...any': function any(args) {\n // change last argument from one-based to zero-based\n var lastIndex = args.length - 1;\n var last = args[lastIndex];\n if (isNumber(last)) {\n args[lastIndex] = last - 1;\n } else if (isBigNumber(last)) {\n args[lastIndex] = last.minus(1);\n }\n try {\n return concat.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});","import { applyCallback } from '../../utils/applyCallback.js';\nimport { forEach } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nimport { isFunctionAssignmentNode, isSymbolNode } from '../../utils/is.js';\nimport { compileInlineExpression } from './utils/compileInlineExpression.js';\nvar name = 'forEach';\nvar dependencies = ['typed'];\nexport var createForEachTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Attach a transform function to math.forEach\n * Adds a property transform containing the transform function.\n *\n * This transform creates a one-based index instead of a zero-based index\n */\n function forEachTransform(args, math, scope) {\n var x, callback;\n if (args[0]) {\n x = args[0].compile().evaluate(scope);\n }\n if (args[1]) {\n if (isSymbolNode(args[1]) || isFunctionAssignmentNode(args[1])) {\n // a function pointer, like forEach([3, -2, 5], myTestFunction)\n callback = args[1].compile().evaluate(scope);\n } else {\n // an expression like forEach([3, -2, 5], x > 0 ? callback1(x) : callback2(x) )\n callback = compileInlineExpression(args[1], math, scope);\n }\n }\n return _forEach(x, callback);\n }\n forEachTransform.rawArgs = true;\n\n // one-based version of forEach\n var _forEach = typed('forEach', {\n 'Array | Matrix, function': function ArrayMatrixFunction(array, callback) {\n var recurse = function recurse(value, index) {\n if (Array.isArray(value)) {\n forEach(value, function (child, i) {\n // we create a copy of the index array and append the new index value\n recurse(child, index.concat(i + 1)); // one based index, hence i+1\n });\n } else {\n // invoke the callback function with the right number of arguments\n return applyCallback(callback, value, index, array, 'forEach');\n }\n };\n recurse(array.valueOf(), []); // pass Array\n }\n });\n\n return forEachTransform;\n}, {\n isTransformFunction: true\n});","import { factory } from '../../utils/factory.js';\nimport { errorTransform } from './utils/errorTransform.js';\nimport { createSubset } from '../../function/matrix/subset.js';\nvar name = 'subset';\nvar dependencies = ['typed', 'matrix', 'zeros', 'add'];\nexport var createSubsetTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n zeros,\n add\n } = _ref;\n var subset = createSubset({\n typed,\n matrix,\n zeros,\n add\n });\n\n /**\n * Attach a transform function to math.subset\n * Adds a property transform containing the transform function.\n *\n * This transform creates a range which includes the end value\n */\n return typed('subset', {\n '...any': function any(args) {\n try {\n return subset.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { getSafeProperty } from '../../utils/customs.js';\nimport { factory } from '../../utils/factory.js';\nimport { isNode } from '../../utils/is.js';\nimport { hasOwnProperty } from '../../utils/object.js';\nimport { escape, stringify } from '../../utils/string.js';\nvar name = 'ObjectNode';\nvar dependencies = ['Node'];\nexport var createObjectNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n Node\n } = _ref;\n class ObjectNode extends Node {\n /**\n * @constructor ObjectNode\n * @extends {Node}\n * Holds an object with keys/values\n * @param {Object.} [properties] object with key/value pairs\n */\n constructor(properties) {\n super();\n this.properties = properties || {};\n\n // validate input\n if (properties) {\n if (!(typeof properties === 'object') || !Object.keys(properties).every(function (key) {\n return isNode(properties[key]);\n })) {\n throw new TypeError('Object containing Nodes expected');\n }\n }\n }\n get type() {\n return name;\n }\n get isObjectNode() {\n return true;\n }\n\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n _compile(math, argNames) {\n var evalEntries = {};\n for (var key in this.properties) {\n if (hasOwnProperty(this.properties, key)) {\n // we stringify/parse the key here to resolve unicode characters,\n // so you cannot create a key like {\"co\\\\u006Estructor\": null}\n var stringifiedKey = stringify(key);\n var parsedKey = JSON.parse(stringifiedKey);\n var prop = getSafeProperty(this.properties, key);\n evalEntries[parsedKey] = prop._compile(math, argNames);\n }\n }\n return function evalObjectNode(scope, args, context) {\n var obj = {};\n for (var _key in evalEntries) {\n if (hasOwnProperty(evalEntries, _key)) {\n obj[_key] = evalEntries[_key](scope, args, context);\n }\n }\n return obj;\n };\n }\n\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n forEach(callback) {\n for (var key in this.properties) {\n if (hasOwnProperty(this.properties, key)) {\n callback(this.properties[key], 'properties[' + stringify(key) + ']', this);\n }\n }\n }\n\n /**\n * Create a new ObjectNode whose children are the results of calling\n * the provided callback function for each child of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {ObjectNode} Returns a transformed copy of the node\n */\n map(callback) {\n var properties = {};\n for (var key in this.properties) {\n if (hasOwnProperty(this.properties, key)) {\n properties[key] = this._ifNode(callback(this.properties[key], 'properties[' + stringify(key) + ']', this));\n }\n }\n return new ObjectNode(properties);\n }\n\n /**\n * Create a clone of this node, a shallow copy\n * @return {ObjectNode}\n */\n clone() {\n var properties = {};\n for (var key in this.properties) {\n if (hasOwnProperty(this.properties, key)) {\n properties[key] = this.properties[key];\n }\n }\n return new ObjectNode(properties);\n }\n\n /**\n * Get string representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n _toString(options) {\n var entries = [];\n for (var key in this.properties) {\n if (hasOwnProperty(this.properties, key)) {\n entries.push(stringify(key) + ': ' + this.properties[key].toString(options));\n }\n }\n return '{' + entries.join(', ') + '}';\n }\n\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n toJSON() {\n return {\n mathjs: name,\n properties: this.properties\n };\n }\n\n /**\n * Instantiate an OperatorNode from its JSON representation\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"ObjectNode\", \"properties\": {...}}`,\n * where mathjs is optional\n * @returns {ObjectNode}\n */\n static fromJSON(json) {\n return new ObjectNode(json.properties);\n }\n\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n toHTML(options) {\n var entries = [];\n for (var key in this.properties) {\n if (hasOwnProperty(this.properties, key)) {\n entries.push('' + escape(key) + '' + '' + ':' + this.properties[key].toHTML(options));\n }\n }\n return '{' + entries.join(',') + '}';\n }\n\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string} str\n */\n _toTex(options) {\n var entries = [];\n for (var key in this.properties) {\n if (hasOwnProperty(this.properties, key)) {\n entries.push('\\\\mathbf{' + key + ':} & ' + this.properties[key].toTex(options) + '\\\\\\\\');\n }\n }\n var tex = '\\\\left\\\\{\\\\begin{array}{ll}' + entries.join('\\n') + '\\\\end{array}\\\\right\\\\}';\n return tex;\n }\n }\n _defineProperty(ObjectNode, \"name\", name);\n return ObjectNode;\n}, {\n isClass: true,\n isNode: true\n});","import { deepMap } from '../../utils/collection.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'compile';\nvar dependencies = ['typed', 'parse'];\nexport var createCompile = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n parse\n } = _ref;\n /**\n * Parse and compile an expression.\n * Returns a an object with a function `evaluate([scope])` to evaluate the\n * compiled expression.\n *\n * Syntax:\n *\n * math.compile(expr) // returns one node\n * math.compile([expr1, expr2, expr3, ...]) // returns an array with nodes\n *\n * Examples:\n *\n * const code1 = math.compile('sqrt(3^2 + 4^2)')\n * code1.evaluate() // 5\n *\n * let scope = {a: 3, b: 4}\n * const code2 = math.compile('a * b') // 12\n * code2.evaluate(scope) // 12\n * scope.a = 5\n * code2.evaluate(scope) // 20\n *\n * const nodes = math.compile(['a = 3', 'b = 4', 'a * b'])\n * nodes[2].evaluate() // 12\n *\n * See also:\n *\n * parse, evaluate\n *\n * @param {string | string[] | Array | Matrix} expr\n * The expression to be compiled\n * @return {{evaluate: Function} | Array.<{evaluate: Function}>} code\n * An object with the compiled expression\n * @throws {Error}\n */\n return typed(name, {\n string: function string(expr) {\n return parse(expr).compile();\n },\n 'Array | Matrix': function ArrayMatrix(expr) {\n return deepMap(expr, function (entry) {\n return parse(entry).compile();\n });\n }\n });\n});","import { isBigNumber, isCollection, isNumber } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nimport { errorTransform } from './utils/errorTransform.js';\nimport { createCumSum } from '../../function/statistics/cumsum.js';\n\n/**\n * Attach a transform function to math.sum\n * Adds a property transform containing the transform function.\n *\n * This transform changed the last `dim` parameter of function sum\n * from one-based to zero based\n */\nvar name = 'cumsum';\nvar dependencies = ['typed', 'add', 'unaryPlus'];\nexport var createCumSumTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n add,\n unaryPlus\n } = _ref;\n var cumsum = createCumSum({\n typed,\n add,\n unaryPlus\n });\n return typed(name, {\n '...any': function any(args) {\n // change last argument dim from one-based to zero-based\n if (args.length === 2 && isCollection(args[0])) {\n var dim = args[1];\n if (isNumber(dim)) {\n args[1] = dim - 1;\n } else if (isBigNumber(dim)) {\n args[1] = dim.minus(1);\n }\n }\n try {\n return cumsum.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});","import { applyCallback } from '../../utils/applyCallback.js';\nimport { map } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nimport { isFunctionAssignmentNode, isSymbolNode } from '../../utils/is.js';\nimport { compileInlineExpression } from './utils/compileInlineExpression.js';\nvar name = 'map';\nvar dependencies = ['typed'];\nexport var createMapTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Attach a transform function to math.map\n * Adds a property transform containing the transform function.\n *\n * This transform creates a one-based index instead of a zero-based index\n */\n function mapTransform(args, math, scope) {\n var x, callback;\n if (args[0]) {\n x = args[0].compile().evaluate(scope);\n }\n if (args[1]) {\n if (isSymbolNode(args[1]) || isFunctionAssignmentNode(args[1])) {\n // a function pointer, like filter([3, -2, 5], myTestFunction)\n callback = args[1].compile().evaluate(scope);\n } else {\n // an expression like filter([3, -2, 5], x > 0)\n callback = compileInlineExpression(args[1], math, scope);\n }\n }\n return map(x, callback);\n }\n mapTransform.rawArgs = true;\n\n // one-based version of map function\n var map = typed('map', {\n 'Array, function': function ArrayFunction(x, callback) {\n return _map(x, callback, x);\n },\n 'Matrix, function': function MatrixFunction(x, callback) {\n return x.create(_map(x.valueOf(), callback, x));\n }\n });\n return mapTransform;\n}, {\n isTransformFunction: true\n});\n\n/**\n * Map for a multidimensional array. One-based indexes\n * @param {Array} array\n * @param {function} callback\n * @param {Array} orig\n * @return {Array}\n * @private\n */\nfunction _map(array, callback, orig) {\n function recurse(value, index) {\n if (Array.isArray(value)) {\n return map(value, function (child, i) {\n // we create a copy of the index array and append the new index value\n return recurse(child, index.concat(i + 1)); // one based index, hence i + 1\n });\n } else {\n // invoke the (typed) callback function with the right number of arguments\n return applyCallback(callback, value, index, orig, 'map');\n }\n }\n return recurse(array, []);\n}","import { applyCallback } from '../../utils/applyCallback.js';\nimport { filter, filterRegExp } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nimport { isFunctionAssignmentNode, isSymbolNode } from '../../utils/is.js';\nimport { compileInlineExpression } from './utils/compileInlineExpression.js';\nvar name = 'filter';\nvar dependencies = ['typed'];\nexport var createFilterTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed\n } = _ref;\n /**\n * Attach a transform function to math.filter\n * Adds a property transform containing the transform function.\n *\n * This transform adds support for equations as test function for math.filter,\n * so you can do something like 'filter([3, -2, 5], x > 0)'.\n */\n function filterTransform(args, math, scope) {\n var x, callback;\n if (args[0]) {\n x = args[0].compile().evaluate(scope);\n }\n if (args[1]) {\n if (isSymbolNode(args[1]) || isFunctionAssignmentNode(args[1])) {\n // a function pointer, like filter([3, -2, 5], myTestFunction)\n callback = args[1].compile().evaluate(scope);\n } else {\n // an expression like filter([3, -2, 5], x > 0)\n callback = compileInlineExpression(args[1], math, scope);\n }\n }\n return filter(x, callback);\n }\n filterTransform.rawArgs = true;\n\n // one based version of function filter\n var filter = typed('filter', {\n 'Array, function': _filter,\n 'Matrix, function': function MatrixFunction(x, test) {\n return x.create(_filter(x.toArray(), test));\n },\n 'Array, RegExp': filterRegExp,\n 'Matrix, RegExp': function MatrixRegExp(x, test) {\n return x.create(filterRegExp(x.toArray(), test));\n }\n });\n return filterTransform;\n}, {\n isTransformFunction: true\n});\n\n/**\n * Filter values in a callback given a callback function\n *\n * !!! Passes a one-based index !!!\n *\n * @param {Array} x\n * @param {Function} callback\n * @return {Array} Returns the filtered array\n * @private\n */\nfunction _filter(x, callback) {\n return filter(x, function (value, index, array) {\n // invoke the callback function with the right number of arguments\n return applyCallback(callback, value, [index + 1], array, 'filter');\n });\n}","import { factory } from '../../utils/factory.js';\nimport { createRange } from '../../function/matrix/range.js';\nvar name = 'range';\nvar dependencies = ['typed', 'config', '?matrix', '?bignumber', 'smaller', 'smallerEq', 'larger', 'largerEq', 'add', 'isPositive'];\nexport var createRangeTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n matrix,\n bignumber,\n smaller,\n smallerEq,\n larger,\n largerEq,\n add,\n isPositive\n } = _ref;\n var range = createRange({\n typed,\n config,\n matrix,\n bignumber,\n smaller,\n smallerEq,\n larger,\n largerEq,\n add,\n isPositive\n });\n\n /**\n * Attach a transform function to math.range\n * Adds a property transform containing the transform function.\n *\n * This transform creates a range which includes the end value\n */\n return typed('range', {\n '...any': function any(args) {\n var lastIndex = args.length - 1;\n var last = args[lastIndex];\n if (typeof last !== 'boolean') {\n // append a parameter includeEnd=true\n args.push(true);\n }\n return range.apply(null, args);\n }\n });\n}, {\n isTransformFunction: true\n});","import { errorTransform } from '../../transform/utils/errorTransform.js';\nimport { getSafeProperty } from '../../../utils/customs.js';\nexport function accessFactory(_ref) {\n var {\n subset\n } = _ref;\n /**\n * Retrieve part of an object:\n *\n * - Retrieve a property from an object\n * - Retrieve a part of a string\n * - Retrieve a matrix subset\n *\n * @param {Object | Array | Matrix | string} object\n * @param {Index} index\n * @return {Object | Array | Matrix | string} Returns the subset\n */\n return function access(object, index) {\n try {\n if (Array.isArray(object)) {\n return subset(object, index);\n } else if (object && typeof object.subset === 'function') {\n // Matrix\n return object.subset(index);\n } else if (typeof object === 'string') {\n // TODO: move getStringSubset into a separate util file, use that\n return subset(object, index);\n } else if (typeof object === 'object') {\n if (!index.isObjectProperty()) {\n throw new TypeError('Cannot apply a numeric index as object property');\n }\n return getSafeProperty(object, index.getObjectProperty());\n } else {\n throw new TypeError('Cannot apply index: unsupported type of object');\n }\n } catch (err) {\n throw errorTransform(err);\n }\n };\n}","import { isArray, isBigNumber, isMatrix, isNumber, isRange } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'index';\nvar dependencies = ['Index', 'getMatrixDataType'];\nexport var createIndexTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n Index,\n getMatrixDataType\n } = _ref;\n /**\n * Attach a transform function to math.index\n * Adds a property transform containing the transform function.\n *\n * This transform creates a one-based index instead of a zero-based index\n */\n return function indexTransform() {\n var args = [];\n for (var i = 0, ii = arguments.length; i < ii; i++) {\n var arg = arguments[i];\n\n // change from one-based to zero based, convert BigNumber to number and leave Array of Booleans as is\n if (isRange(arg)) {\n arg.start--;\n arg.end -= arg.step > 0 ? 0 : 2;\n } else if (arg && arg.isSet === true) {\n arg = arg.map(function (v) {\n return v - 1;\n });\n } else if (isArray(arg) || isMatrix(arg)) {\n if (getMatrixDataType(arg) !== 'boolean') {\n arg = arg.map(function (v) {\n return v - 1;\n });\n }\n } else if (isNumber(arg)) {\n arg--;\n } else if (isBigNumber(arg)) {\n arg = arg.toNumber() - 1;\n } else if (typeof arg === 'string') {\n // leave as is\n } else {\n throw new TypeError('Dimension must be an Array, Matrix, number, string, or Range');\n }\n args[i] = arg;\n }\n var res = new Index();\n Index.apply(res, args);\n return res;\n };\n}, {\n isTransformFunction: true\n});","import { isFraction, isMatrix, isNode, isArrayNode, isConstantNode, isIndexNode, isObjectNode, isOperatorNode } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nimport { createUtil } from './simplify/util.js';\nimport { noBignumber, noFraction } from '../../utils/noop.js';\nvar name = 'simplifyConstant';\nvar dependencies = ['typed', 'config', 'mathWithTransform', 'matrix', '?fraction', '?bignumber', 'AccessorNode', 'ArrayNode', 'ConstantNode', 'FunctionNode', 'IndexNode', 'ObjectNode', 'OperatorNode', 'SymbolNode'];\nexport var createSimplifyConstant = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n mathWithTransform,\n matrix,\n fraction,\n bignumber,\n AccessorNode,\n ArrayNode,\n ConstantNode,\n FunctionNode,\n IndexNode,\n ObjectNode,\n OperatorNode,\n SymbolNode\n } = _ref;\n var {\n isCommutative,\n isAssociative,\n allChildren,\n createMakeNodeFunction\n } = createUtil({\n FunctionNode,\n OperatorNode,\n SymbolNode\n });\n\n /**\n * simplifyConstant() takes a mathjs expression (either a Node representing\n * a parse tree or a string which it parses to produce a node), and replaces\n * any subexpression of it consisting entirely of constants with the computed\n * value of that subexpression.\n *\n * Syntax:\n *\n * math.simplifyConstant(expr)\n * math.simplifyConstant(expr, options)\n *\n * Examples:\n *\n * math.simplifyConstant('x + 4*3/6') // Node \"x + 2\"\n * math.simplifyConstant('z cos(0)') // Node \"z 1\"\n * math.simplifyConstant('(5.2 + 1.08)t', {exactFractions: false}) // Node \"6.28 t\"\n *\n * See also:\n *\n * simplify, simplifyCore, resolve, derivative\n *\n * @param {Node | string} node\n * The expression to be simplified\n * @param {Object} options\n * Simplification options, as per simplify()\n * @return {Node} Returns expression with constant subexpressions evaluated\n */\n var simplifyConstant = typed('simplifyConstant', {\n Node: node => _ensureNode(foldFraction(node, {})),\n 'Node, Object': function NodeObject(expr, options) {\n return _ensureNode(foldFraction(expr, options));\n }\n });\n function _removeFractions(thing) {\n if (isFraction(thing)) {\n return thing.valueOf();\n }\n if (thing instanceof Array) {\n return thing.map(_removeFractions);\n }\n if (isMatrix(thing)) {\n return matrix(_removeFractions(thing.valueOf()));\n }\n return thing;\n }\n function _eval(fnname, args, options) {\n try {\n return mathWithTransform[fnname].apply(null, args);\n } catch (ignore) {\n // sometimes the implicit type conversion causes the evaluation to fail, so we'll try again after removing Fractions\n args = args.map(_removeFractions);\n return _toNumber(mathWithTransform[fnname].apply(null, args), options);\n }\n }\n var _toNode = typed({\n Fraction: _fractionToNode,\n number: function number(n) {\n if (n < 0) {\n return unaryMinusNode(new ConstantNode(-n));\n }\n return new ConstantNode(n);\n },\n BigNumber: function BigNumber(n) {\n if (n < 0) {\n return unaryMinusNode(new ConstantNode(-n));\n }\n return new ConstantNode(n); // old parameters: (n.toString(), 'number')\n },\n\n Complex: function Complex(s) {\n throw new Error('Cannot convert Complex number to Node');\n },\n string: function string(s) {\n return new ConstantNode(s);\n },\n Matrix: function Matrix(m) {\n return new ArrayNode(m.valueOf().map(e => _toNode(e)));\n }\n });\n function _ensureNode(thing) {\n if (isNode(thing)) {\n return thing;\n }\n return _toNode(thing);\n }\n\n // convert a number to a fraction only if it can be expressed exactly,\n // and when both numerator and denominator are small enough\n function _exactFraction(n, options) {\n var exactFractions = options && options.exactFractions !== false;\n if (exactFractions && isFinite(n) && fraction) {\n var f = fraction(n);\n var fractionsLimit = options && typeof options.fractionsLimit === 'number' ? options.fractionsLimit : Infinity; // no limit by default\n\n if (f.valueOf() === n && f.n < fractionsLimit && f.d < fractionsLimit) {\n return f;\n }\n }\n return n;\n }\n\n // Convert numbers to a preferred number type in preference order: Fraction, number, Complex\n // BigNumbers are left alone\n var _toNumber = typed({\n 'string, Object': function stringObject(s, options) {\n if (config.number === 'BigNumber') {\n if (bignumber === undefined) {\n noBignumber();\n }\n return bignumber(s);\n } else if (config.number === 'Fraction') {\n if (fraction === undefined) {\n noFraction();\n }\n return fraction(s);\n } else {\n var n = parseFloat(s);\n return _exactFraction(n, options);\n }\n },\n 'Fraction, Object': function FractionObject(s, options) {\n return s;\n },\n // we don't need options here\n\n 'BigNumber, Object': function BigNumberObject(s, options) {\n return s;\n },\n // we don't need options here\n\n 'number, Object': function numberObject(s, options) {\n return _exactFraction(s, options);\n },\n 'Complex, Object': function ComplexObject(s, options) {\n if (s.im !== 0) {\n return s;\n }\n return _exactFraction(s.re, options);\n },\n 'Matrix, Object': function MatrixObject(s, options) {\n return matrix(_exactFraction(s.valueOf()));\n },\n 'Array, Object': function ArrayObject(s, options) {\n return s.map(_exactFraction);\n }\n });\n function unaryMinusNode(n) {\n return new OperatorNode('-', 'unaryMinus', [n]);\n }\n function _fractionToNode(f) {\n var n;\n var vn = f.s * f.n;\n if (vn < 0) {\n n = new OperatorNode('-', 'unaryMinus', [new ConstantNode(-vn)]);\n } else {\n n = new ConstantNode(vn);\n }\n if (f.d === 1) {\n return n;\n }\n return new OperatorNode('/', 'divide', [n, new ConstantNode(f.d)]);\n }\n\n /* Handles constant indexing of ArrayNodes, matrices, and ObjectNodes */\n function _foldAccessor(obj, index, options) {\n if (!isIndexNode(index)) {\n // don't know what to do with that...\n return new AccessorNode(_ensureNode(obj), _ensureNode(index));\n }\n if (isArrayNode(obj) || isMatrix(obj)) {\n var remainingDims = Array.from(index.dimensions);\n /* We will resolve constant indices one at a time, looking\n * just in the first or second dimensions because (a) arrays\n * of more than two dimensions are likely rare, and (b) pulling\n * out the third or higher dimension would be pretty intricate.\n * The price is that we miss simplifying [..3d array][x,y,1]\n */\n while (remainingDims.length > 0) {\n if (isConstantNode(remainingDims[0]) && typeof remainingDims[0].value !== 'string') {\n var first = _toNumber(remainingDims.shift().value, options);\n if (isArrayNode(obj)) {\n obj = obj.items[first - 1];\n } else {\n // matrix\n obj = obj.valueOf()[first - 1];\n if (obj instanceof Array) {\n obj = matrix(obj);\n }\n }\n } else if (remainingDims.length > 1 && isConstantNode(remainingDims[1]) && typeof remainingDims[1].value !== 'string') {\n var second = _toNumber(remainingDims[1].value, options);\n var tryItems = [];\n var fromItems = isArrayNode(obj) ? obj.items : obj.valueOf();\n for (var item of fromItems) {\n if (isArrayNode(item)) {\n tryItems.push(item.items[second - 1]);\n } else if (isMatrix(obj)) {\n tryItems.push(item[second - 1]);\n } else {\n break;\n }\n }\n if (tryItems.length === fromItems.length) {\n if (isArrayNode(obj)) {\n obj = new ArrayNode(tryItems);\n } else {\n // matrix\n obj = matrix(tryItems);\n }\n remainingDims.splice(1, 1);\n } else {\n // extracting slice along 2nd dimension failed, give up\n break;\n }\n } else {\n // neither 1st or 2nd dimension is constant, give up\n break;\n }\n }\n if (remainingDims.length === index.dimensions.length) {\n /* No successful constant indexing */\n return new AccessorNode(_ensureNode(obj), index);\n }\n if (remainingDims.length > 0) {\n /* Indexed some but not all dimensions */\n index = new IndexNode(remainingDims);\n return new AccessorNode(_ensureNode(obj), index);\n }\n /* All dimensions were constant, access completely resolved */\n return obj;\n }\n if (isObjectNode(obj) && index.dimensions.length === 1 && isConstantNode(index.dimensions[0])) {\n var key = index.dimensions[0].value;\n if (key in obj.properties) {\n return obj.properties[key];\n }\n return new ConstantNode(); // undefined\n }\n /* Don't know how to index this sort of obj, at least not with this index */\n return new AccessorNode(_ensureNode(obj), index);\n }\n\n /*\n * Create a binary tree from a list of Fractions and Nodes.\n * Tries to fold Fractions by evaluating them until the first Node in the list is hit, so\n * `args` should be sorted to have the Fractions at the start (if the operator is commutative).\n * @param args - list of Fractions and Nodes\n * @param fn - evaluator for the binary operation evaluator that accepts two Fractions\n * @param makeNode - creates a binary OperatorNode/FunctionNode from a list of child Nodes\n * if args.length is 1, returns args[0]\n * @return - Either a Node representing a binary expression or Fraction\n */\n function foldOp(fn, args, makeNode, options) {\n var first = args.shift();\n\n // In the following reduction, sofar always has one of the three following\n // forms: [NODE], [CONSTANT], or [NODE, CONSTANT]\n var reduction = args.reduce((sofar, next) => {\n if (!isNode(next)) {\n var last = sofar.pop();\n if (isNode(last)) {\n return [last, next];\n }\n // Two constants in a row, try to fold them into one\n try {\n sofar.push(_eval(fn, [last, next], options));\n return sofar;\n } catch (ignoreandcontinue) {\n sofar.push(last);\n // fall through to Node case\n }\n }\n\n // Encountered a Node, or failed folding --\n // collapse everything so far into a single tree:\n sofar.push(_ensureNode(sofar.pop()));\n var newtree = sofar.length === 1 ? sofar[0] : makeNode(sofar);\n return [makeNode([newtree, _ensureNode(next)])];\n }, [first]);\n if (reduction.length === 1) {\n return reduction[0];\n }\n // Might end up with a tree and a constant at the end:\n return makeNode([reduction[0], _toNode(reduction[1])]);\n }\n\n // destroys the original node and returns a folded one\n function foldFraction(node, options) {\n switch (node.type) {\n case 'SymbolNode':\n return node;\n case 'ConstantNode':\n switch (typeof node.value) {\n case 'number':\n return _toNumber(node.value, options);\n case 'string':\n return node.value;\n default:\n if (!isNaN(node.value)) return _toNumber(node.value, options);\n }\n return node;\n case 'FunctionNode':\n if (mathWithTransform[node.name] && mathWithTransform[node.name].rawArgs) {\n return node;\n }\n {\n // Process operators as OperatorNode\n var operatorFunctions = ['add', 'multiply'];\n if (operatorFunctions.indexOf(node.name) === -1) {\n var args = node.args.map(arg => foldFraction(arg, options));\n\n // If all args are numbers\n if (!args.some(isNode)) {\n try {\n return _eval(node.name, args, options);\n } catch (ignoreandcontinue) {}\n }\n\n // Size of a matrix does not depend on entries\n if (node.name === 'size' && args.length === 1 && isArrayNode(args[0])) {\n var sz = [];\n var section = args[0];\n while (isArrayNode(section)) {\n sz.push(section.items.length);\n section = section.items[0];\n }\n return matrix(sz);\n }\n\n // Convert all args to nodes and construct a symbolic function call\n return new FunctionNode(node.name, args.map(_ensureNode));\n } else {\n // treat as operator\n }\n }\n /* falls through */\n case 'OperatorNode':\n {\n var fn = node.fn.toString();\n var _args;\n var res;\n var makeNode = createMakeNodeFunction(node);\n if (isOperatorNode(node) && node.isUnary()) {\n _args = [foldFraction(node.args[0], options)];\n if (!isNode(_args[0])) {\n res = _eval(fn, _args, options);\n } else {\n res = makeNode(_args);\n }\n } else if (isAssociative(node, options.context)) {\n _args = allChildren(node, options.context);\n _args = _args.map(arg => foldFraction(arg, options));\n if (isCommutative(fn, options.context)) {\n // commutative binary operator\n var consts = [];\n var vars = [];\n for (var i = 0; i < _args.length; i++) {\n if (!isNode(_args[i])) {\n consts.push(_args[i]);\n } else {\n vars.push(_args[i]);\n }\n }\n if (consts.length > 1) {\n res = foldOp(fn, consts, makeNode, options);\n vars.unshift(res);\n res = foldOp(fn, vars, makeNode, options);\n } else {\n // we won't change the children order since it's not neccessary\n res = foldOp(fn, _args, makeNode, options);\n }\n } else {\n // non-commutative binary operator\n res = foldOp(fn, _args, makeNode, options);\n }\n } else {\n // non-associative binary operator\n _args = node.args.map(arg => foldFraction(arg, options));\n res = foldOp(fn, _args, makeNode, options);\n }\n return res;\n }\n case 'ParenthesisNode':\n // remove the uneccessary parenthesis\n return foldFraction(node.content, options);\n case 'AccessorNode':\n return _foldAccessor(foldFraction(node.object, options), foldFraction(node.index, options), options);\n case 'ArrayNode':\n {\n var foldItems = node.items.map(item => foldFraction(item, options));\n if (foldItems.some(isNode)) {\n return new ArrayNode(foldItems.map(_ensureNode));\n }\n /* All literals -- return a Matrix so we can operate on it */\n return matrix(foldItems);\n }\n case 'IndexNode':\n {\n return new IndexNode(node.dimensions.map(n => simplifyConstant(n, options)));\n }\n case 'ObjectNode':\n {\n var foldProps = {};\n for (var prop in node.properties) {\n foldProps[prop] = simplifyConstant(node.properties[prop], options);\n }\n return new ObjectNode(foldProps);\n }\n case 'AssignmentNode':\n /* falls through */\n case 'BlockNode':\n /* falls through */\n case 'FunctionAssignmentNode':\n /* falls through */\n case 'RangeNode':\n /* falls through */\n case 'ConditionalNode':\n /* falls through */\n default:\n throw new Error(\"Unimplemented node type in simplifyConstant: \".concat(node.type));\n }\n }\n return simplifyConstant;\n});","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { map } from '../../utils/array.js';\nimport { getSafeProperty } from '../../utils/customs.js';\nimport { factory } from '../../utils/factory.js';\nimport { isArray, isConstantNode, isMatrix, isNode, isString, typeOf } from '../../utils/is.js';\nimport { escape } from '../../utils/string.js';\nvar name = 'IndexNode';\nvar dependencies = ['Node', 'size'];\nexport var createIndexNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n Node,\n size\n } = _ref;\n class IndexNode extends Node {\n /**\n * @constructor IndexNode\n * @extends Node\n *\n * Describes a subset of a matrix or an object property.\n * Cannot be used on its own, needs to be used within an AccessorNode or\n * AssignmentNode.\n *\n * @param {Node[]} dimensions\n * @param {boolean} [dotNotation=false]\n * Optional property describing whether this index was written using dot\n * notation like `a.b`, or using bracket notation like `a[\"b\"]`\n * (which is the default). This property is used for string conversion.\n */\n constructor(dimensions, dotNotation) {\n super();\n this.dimensions = dimensions;\n this.dotNotation = dotNotation || false;\n\n // validate input\n if (!Array.isArray(dimensions) || !dimensions.every(isNode)) {\n throw new TypeError('Array containing Nodes expected for parameter \"dimensions\"');\n }\n if (this.dotNotation && !this.isObjectProperty()) {\n throw new Error('dotNotation only applicable for object properties');\n }\n }\n get type() {\n return name;\n }\n get isIndexNode() {\n return true;\n }\n\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n _compile(math, argNames) {\n // TODO: implement support for bignumber (currently bignumbers are silently\n // reduced to numbers when changing the value to zero-based)\n\n // TODO: Optimization: when the range values are ConstantNodes,\n // we can beforehand resolve the zero-based value\n\n // optimization for a simple object property\n var evalDimensions = map(this.dimensions, function (dimension, i) {\n var needsEnd = dimension.filter(node => node.isSymbolNode && node.name === 'end').length > 0;\n if (needsEnd) {\n // SymbolNode 'end' is used inside the index,\n // like in `A[end]` or `A[end - 2]`\n var childArgNames = Object.create(argNames);\n childArgNames.end = true;\n var _evalDimension = dimension._compile(math, childArgNames);\n return function evalDimension(scope, args, context) {\n if (!isMatrix(context) && !isArray(context) && !isString(context)) {\n throw new TypeError('Cannot resolve \"end\": ' + 'context must be a Matrix, Array, or string but is ' + typeOf(context));\n }\n var s = size(context).valueOf();\n var childArgs = Object.create(args);\n childArgs.end = s[i];\n return _evalDimension(scope, childArgs, context);\n };\n } else {\n // SymbolNode `end` not used\n return dimension._compile(math, argNames);\n }\n });\n var index = getSafeProperty(math, 'index');\n return function evalIndexNode(scope, args, context) {\n var dimensions = map(evalDimensions, function (evalDimension) {\n return evalDimension(scope, args, context);\n });\n return index(...dimensions);\n };\n }\n\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n forEach(callback) {\n for (var i = 0; i < this.dimensions.length; i++) {\n callback(this.dimensions[i], 'dimensions[' + i + ']', this);\n }\n }\n\n /**\n * Create a new IndexNode whose children are the results of calling\n * the provided callback function for each child of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {IndexNode} Returns a transformed copy of the node\n */\n map(callback) {\n var dimensions = [];\n for (var i = 0; i < this.dimensions.length; i++) {\n dimensions[i] = this._ifNode(callback(this.dimensions[i], 'dimensions[' + i + ']', this));\n }\n return new IndexNode(dimensions, this.dotNotation);\n }\n\n /**\n * Create a clone of this node, a shallow copy\n * @return {IndexNode}\n */\n clone() {\n return new IndexNode(this.dimensions.slice(0), this.dotNotation);\n }\n\n /**\n * Test whether this IndexNode contains a single property name\n * @return {boolean}\n */\n isObjectProperty() {\n return this.dimensions.length === 1 && isConstantNode(this.dimensions[0]) && typeof this.dimensions[0].value === 'string';\n }\n\n /**\n * Returns the property name if IndexNode contains a property.\n * If not, returns null.\n * @return {string | null}\n */\n getObjectProperty() {\n return this.isObjectProperty() ? this.dimensions[0].value : null;\n }\n\n /**\n * Get string representation\n * @param {Object} options\n * @return {string} str\n */\n _toString(options) {\n // format the parameters like \"[1, 0:5]\"\n return this.dotNotation ? '.' + this.getObjectProperty() : '[' + this.dimensions.join(', ') + ']';\n }\n\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n toJSON() {\n return {\n mathjs: name,\n dimensions: this.dimensions,\n dotNotation: this.dotNotation\n };\n }\n\n /**\n * Instantiate an IndexNode from its JSON representation\n * @param {Object} json\n * An object structured like\n * `{\"mathjs\": \"IndexNode\", dimensions: [...], dotNotation: false}`,\n * where mathjs is optional\n * @returns {IndexNode}\n */\n static fromJSON(json) {\n return new IndexNode(json.dimensions, json.dotNotation);\n }\n\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string} str\n */\n toHTML(options) {\n // format the parameters like \"[1, 0:5]\"\n var dimensions = [];\n for (var i = 0; i < this.dimensions.length; i++) {\n dimensions[i] = this.dimensions[i].toHTML();\n }\n if (this.dotNotation) {\n return '.' + '' + escape(this.getObjectProperty()) + '';\n } else {\n return '[' + dimensions.join(',') + ']';\n }\n }\n\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string} str\n */\n _toTex(options) {\n var dimensions = this.dimensions.map(function (range) {\n return range.toTex(options);\n });\n return this.dotNotation ? '.' + this.getObjectProperty() + '' : '_{' + dimensions.join(',') + '}';\n }\n }\n _defineProperty(IndexNode, \"name\", name);\n return IndexNode;\n}, {\n isClass: true,\n isNode: true\n});","import { factory } from '../../utils/factory.js';\nimport { createQuantileSeq } from '../../function/statistics/quantileSeq.js';\nimport { lastDimToZeroBase } from './utils/lastDimToZeroBase.js';\nvar name = 'quantileSeq';\nvar dependencies = ['typed', 'bignumber', 'add', 'subtract', 'divide', 'multiply', 'partitionSelect', 'compare', 'isInteger', 'smaller', 'smallerEq', 'larger'];\n\n/**\n * Attach a transform function to math.quantileSeq\n * Adds a property transform containing the transform function.\n *\n * This transform changed the `dim` parameter of function std\n * from one-based to zero based\n */\nexport var createQuantileSeqTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n bignumber,\n add,\n subtract,\n divide,\n multiply,\n partitionSelect,\n compare,\n isInteger,\n smaller,\n smallerEq,\n larger\n } = _ref;\n var quantileSeq = createQuantileSeq({\n typed,\n bignumber,\n add,\n subtract,\n divide,\n multiply,\n partitionSelect,\n compare,\n isInteger,\n smaller,\n smallerEq,\n larger\n });\n return typed('quantileSeq', {\n 'Array | Matrix, number | BigNumber': quantileSeq,\n 'Array | Matrix, number | BigNumber, number': (arr, prob, dim) => quantileSeq(arr, prob, dimToZeroBase(dim)),\n 'Array | Matrix, number | BigNumber, boolean': quantileSeq,\n 'Array | Matrix, number | BigNumber, boolean, number': (arr, prob, sorted, dim) => quantileSeq(arr, prob, sorted, dimToZeroBase(dim)),\n 'Array | Matrix, Array | Matrix': quantileSeq,\n 'Array | Matrix, Array | Matrix, number': (data, prob, dim) => quantileSeq(data, prob, dimToZeroBase(dim)),\n 'Array | Matrix, Array | Matrix, boolean': quantileSeq,\n 'Array | Matrix, Array | Matrix, boolean, number': (data, prob, sorted, dim) => quantileSeq(data, prob, sorted, dimToZeroBase(dim))\n });\n function dimToZeroBase(dim) {\n // TODO: find a better way, maybe lastDimToZeroBase could apply to more cases.\n return lastDimToZeroBase([[], dim])[1];\n }\n}, {\n isTransformFunction: true\n});","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport { isFunctionNode, isOperatorNode, isParenthesisNode } from '../../../utils/is.js';\nimport { factory } from '../../../utils/factory.js';\nimport { hasOwnProperty } from '../../../utils/object.js';\nvar name = 'simplifyUtil';\nvar dependencies = ['FunctionNode', 'OperatorNode', 'SymbolNode'];\nexport var createUtil = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n FunctionNode,\n OperatorNode,\n SymbolNode\n } = _ref;\n // TODO commutative/associative properties rely on the arguments\n // e.g. multiply is not commutative for matrices\n // The properties should be calculated from an argument to simplify, or possibly something in math.config\n // the other option is for typed() to specify a return type so that we can evaluate the type of arguments\n\n /* So that properties of an operator fit on one line: */\n var T = true;\n var F = false;\n var defaultName = 'defaultF';\n var defaultContext = {\n /* */add: {\n trivial: T,\n total: T,\n commutative: T,\n associative: T\n },\n /**/unaryPlus: {\n trivial: T,\n total: T,\n commutative: T,\n associative: T\n },\n /* */subtract: {\n trivial: F,\n total: T,\n commutative: F,\n associative: F\n },\n /* */multiply: {\n trivial: T,\n total: T,\n commutative: T,\n associative: T\n },\n /* */divide: {\n trivial: F,\n total: T,\n commutative: F,\n associative: F\n },\n /* */paren: {\n trivial: T,\n total: T,\n commutative: T,\n associative: F\n },\n /* */defaultF: {\n trivial: F,\n total: T,\n commutative: F,\n associative: F\n }\n };\n var realContext = {\n divide: {\n total: F\n },\n log: {\n total: F\n }\n };\n var positiveContext = {\n subtract: {\n total: F\n },\n abs: {\n trivial: T\n },\n log: {\n total: T\n }\n };\n function hasProperty(nodeOrName, property) {\n var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : defaultContext;\n var name = defaultName;\n if (typeof nodeOrName === 'string') {\n name = nodeOrName;\n } else if (isOperatorNode(nodeOrName)) {\n name = nodeOrName.fn.toString();\n } else if (isFunctionNode(nodeOrName)) {\n name = nodeOrName.name;\n } else if (isParenthesisNode(nodeOrName)) {\n name = 'paren';\n }\n if (hasOwnProperty(context, name)) {\n var properties = context[name];\n if (hasOwnProperty(properties, property)) {\n return properties[property];\n }\n if (hasOwnProperty(defaultContext, name)) {\n return defaultContext[name][property];\n }\n }\n if (hasOwnProperty(context, defaultName)) {\n var _properties = context[defaultName];\n if (hasOwnProperty(_properties, property)) {\n return _properties[property];\n }\n return defaultContext[defaultName][property];\n }\n /* name not found in context and context has no global default */\n /* So use default context. */\n if (hasOwnProperty(defaultContext, name)) {\n var _properties2 = defaultContext[name];\n if (hasOwnProperty(_properties2, property)) {\n return _properties2[property];\n }\n }\n return defaultContext[defaultName][property];\n }\n function isCommutative(node) {\n var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultContext;\n return hasProperty(node, 'commutative', context);\n }\n function isAssociative(node) {\n var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultContext;\n return hasProperty(node, 'associative', context);\n }\n\n /**\n * Merge the given contexts, with primary overriding secondary\n * wherever they might conflict\n */\n function mergeContext(primary, secondary) {\n var merged = _objectSpread({}, primary);\n for (var prop in secondary) {\n if (hasOwnProperty(primary, prop)) {\n merged[prop] = _objectSpread(_objectSpread({}, secondary[prop]), primary[prop]);\n } else {\n merged[prop] = secondary[prop];\n }\n }\n return merged;\n }\n\n /**\n * Flatten all associative operators in an expression tree.\n * Assumes parentheses have already been removed.\n */\n function flatten(node, context) {\n if (!node.args || node.args.length === 0) {\n return node;\n }\n node.args = allChildren(node, context);\n for (var i = 0; i < node.args.length; i++) {\n flatten(node.args[i], context);\n }\n }\n\n /**\n * Get the children of a node as if it has been flattened.\n * TODO implement for FunctionNodes\n */\n function allChildren(node, context) {\n var op;\n var children = [];\n var findChildren = function findChildren(node) {\n for (var i = 0; i < node.args.length; i++) {\n var child = node.args[i];\n if (isOperatorNode(child) && op === child.op) {\n findChildren(child);\n } else {\n children.push(child);\n }\n }\n };\n if (isAssociative(node, context)) {\n op = node.op;\n findChildren(node);\n return children;\n } else {\n return node.args;\n }\n }\n\n /**\n * Unflatten all flattened operators to a right-heavy binary tree.\n */\n function unflattenr(node, context) {\n if (!node.args || node.args.length === 0) {\n return;\n }\n var makeNode = createMakeNodeFunction(node);\n var l = node.args.length;\n for (var i = 0; i < l; i++) {\n unflattenr(node.args[i], context);\n }\n if (l > 2 && isAssociative(node, context)) {\n var curnode = node.args.pop();\n while (node.args.length > 0) {\n curnode = makeNode([node.args.pop(), curnode]);\n }\n node.args = curnode.args;\n }\n }\n\n /**\n * Unflatten all flattened operators to a left-heavy binary tree.\n */\n function unflattenl(node, context) {\n if (!node.args || node.args.length === 0) {\n return;\n }\n var makeNode = createMakeNodeFunction(node);\n var l = node.args.length;\n for (var i = 0; i < l; i++) {\n unflattenl(node.args[i], context);\n }\n if (l > 2 && isAssociative(node, context)) {\n var curnode = node.args.shift();\n while (node.args.length > 0) {\n curnode = makeNode([curnode, node.args.shift()]);\n }\n node.args = curnode.args;\n }\n }\n function createMakeNodeFunction(node) {\n if (isOperatorNode(node)) {\n return function (args) {\n try {\n return new OperatorNode(node.op, node.fn, args, node.implicit);\n } catch (err) {\n console.error(err);\n return [];\n }\n };\n } else {\n return function (args) {\n return new FunctionNode(new SymbolNode(node.name), args);\n };\n }\n }\n return {\n createMakeNodeFunction,\n hasProperty,\n isCommutative,\n isAssociative,\n mergeContext,\n flatten,\n allChildren,\n unflattenr,\n unflattenl,\n defaultContext,\n realContext,\n positiveContext\n };\n});","import { isInteger } from '../../utils/number.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'rationalize';\nvar dependencies = ['config', 'typed', 'equal', 'isZero', 'add', 'subtract', 'multiply', 'divide', 'pow', 'parse', 'simplifyConstant', 'simplifyCore', 'simplify', '?bignumber', '?fraction', 'mathWithTransform', 'matrix', 'AccessorNode', 'ArrayNode', 'ConstantNode', 'FunctionNode', 'IndexNode', 'ObjectNode', 'OperatorNode', 'SymbolNode', 'ParenthesisNode'];\nexport var createRationalize = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n config,\n typed,\n equal,\n isZero,\n add,\n subtract,\n multiply,\n divide,\n pow,\n parse,\n simplifyConstant,\n simplifyCore,\n simplify,\n fraction,\n bignumber,\n mathWithTransform,\n matrix,\n AccessorNode,\n ArrayNode,\n ConstantNode,\n FunctionNode,\n IndexNode,\n ObjectNode,\n OperatorNode,\n SymbolNode,\n ParenthesisNode\n } = _ref;\n /**\n * Transform a rationalizable expression in a rational fraction.\n * If rational fraction is one variable polynomial then converts\n * the numerator and denominator in canonical form, with decreasing\n * exponents, returning the coefficients of numerator.\n *\n * Syntax:\n *\n * math.rationalize(expr)\n * math.rationalize(expr, detailed)\n * math.rationalize(expr, scope)\n * math.rationalize(expr, scope, detailed)\n *\n * Examples:\n *\n * math.rationalize('sin(x)+y')\n * // Error: There is an unsolved function call\n * math.rationalize('2x/y - y/(x+1)')\n * // (2*x^2-y^2+2*x)/(x*y+y)\n * math.rationalize('(2x+1)^6')\n * // 64*x^6+192*x^5+240*x^4+160*x^3+60*x^2+12*x+1\n * math.rationalize('2x/( (2x-1) / (3x+2) ) - 5x/ ( (3x+4) / (2x^2-5) ) + 3')\n * // -20*x^4+28*x^3+104*x^2+6*x-12)/(6*x^2+5*x-4)\n * math.rationalize('x/(1-x)/(x-2)/(x-3)/(x-4) + 2x/ ( (1-2x)/(2-3x) )/ ((3-4x)/(4-5x) )') =\n * // (-30*x^7+344*x^6-1506*x^5+3200*x^4-3472*x^3+1846*x^2-381*x)/\n * // (-8*x^6+90*x^5-383*x^4+780*x^3-797*x^2+390*x-72)\n *\n * math.rationalize('x+x+x+y',{y:1}) // 3*x+1\n * math.rationalize('x+x+x+y',{}) // 3*x+y\n *\n * const ret = math.rationalize('x+x+x+y',{},true)\n * // ret.expression=3*x+y, ret.variables = [\"x\",\"y\"]\n * const ret = math.rationalize('-2+5x^2',{},true)\n * // ret.expression=5*x^2-2, ret.variables = [\"x\"], ret.coefficients=[-2,0,5]\n *\n * See also:\n *\n * simplify\n *\n * @param {Node|string} expr The expression to check if is a polynomial expression\n * @param {Object|boolean} optional scope of expression or true for already evaluated rational expression at input\n * @param {Boolean} detailed optional True if return an object, false if return expression node (default)\n *\n * @return {Object | Node} The rational polynomial of `expr` or an object\n * `{expression, numerator, denominator, variables, coefficients}`, where\n * `expression` is a `Node` with the node simplified expression,\n * `numerator` is a `Node` with the simplified numerator of expression,\n * `denominator` is a `Node` or `boolean` with the simplified denominator or `false` (if there is no denominator),\n * `variables` is an array with variable names,\n * and `coefficients` is an array with coefficients of numerator sorted by increased exponent\n * {Expression Node} node simplified expression\n *\n */\n function _rationalize(expr) {\n var scope = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var detailed = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var setRules = rulesRationalize(); // Rules for change polynomial in near canonical form\n var polyRet = polynomial(expr, scope, true, setRules.firstRules); // Check if expression is a rationalizable polynomial\n var nVars = polyRet.variables.length;\n var noExactFractions = {\n exactFractions: false\n };\n var withExactFractions = {\n exactFractions: true\n };\n expr = polyRet.expression;\n if (nVars >= 1) {\n // If expression in not a constant\n expr = expandPower(expr); // First expand power of polynomials (cannot be made from rules!)\n var sBefore; // Previous expression\n var rules;\n var eDistrDiv = true;\n var redoInic = false;\n // Apply the initial rules, including succ div rules:\n expr = simplify(expr, setRules.firstRules, {}, noExactFractions);\n var s;\n while (true) {\n // Alternate applying successive division rules and distr.div.rules\n // until there are no more changes:\n rules = eDistrDiv ? setRules.distrDivRules : setRules.sucDivRules;\n expr = simplify(expr, rules, {}, withExactFractions);\n eDistrDiv = !eDistrDiv; // Swap between Distr.Div and Succ. Div. Rules\n\n s = expr.toString();\n if (s === sBefore) {\n break; // No changes : end of the loop\n }\n\n redoInic = true;\n sBefore = s;\n }\n if (redoInic) {\n // Apply first rules again without succ div rules (if there are changes)\n expr = simplify(expr, setRules.firstRulesAgain, {}, noExactFractions);\n }\n // Apply final rules:\n expr = simplify(expr, setRules.finalRules, {}, noExactFractions);\n } // NVars >= 1\n\n var coefficients = [];\n var retRationalize = {};\n if (expr.type === 'OperatorNode' && expr.isBinary() && expr.op === '/') {\n // Separate numerator from denominator\n if (nVars === 1) {\n expr.args[0] = polyToCanonical(expr.args[0], coefficients);\n expr.args[1] = polyToCanonical(expr.args[1]);\n }\n if (detailed) {\n retRationalize.numerator = expr.args[0];\n retRationalize.denominator = expr.args[1];\n }\n } else {\n if (nVars === 1) {\n expr = polyToCanonical(expr, coefficients);\n }\n if (detailed) {\n retRationalize.numerator = expr;\n retRationalize.denominator = null;\n }\n }\n // nVars\n\n if (!detailed) return expr;\n retRationalize.coefficients = coefficients;\n retRationalize.variables = polyRet.variables;\n retRationalize.expression = expr;\n return retRationalize;\n }\n return typed(name, {\n Node: _rationalize,\n 'Node, boolean': (expr, detailed) => _rationalize(expr, {}, detailed),\n 'Node, Object': _rationalize,\n 'Node, Object, boolean': _rationalize\n }); // end of typed rationalize\n\n /**\n * Function to simplify an expression using an optional scope and\n * return it if the expression is a polynomial expression, i.e.\n * an expression with one or more variables and the operators\n * +, -, *, and ^, where the exponent can only be a positive integer.\n *\n * Syntax:\n *\n * polynomial(expr,scope,extended, rules)\n *\n * @param {Node | string} expr The expression to simplify and check if is polynomial expression\n * @param {object} scope Optional scope for expression simplification\n * @param {boolean} extended Optional. Default is false. When true allows divide operator.\n * @param {array} rules Optional. Default is no rule.\n *\n *\n * @return {Object}\n * {Object} node: node simplified expression\n * {Array} variables: variable names\n */\n function polynomial(expr, scope, extended, rules) {\n var variables = [];\n var node = simplify(expr, rules, scope, {\n exactFractions: false\n }); // Resolves any variables and functions with all defined parameters\n extended = !!extended;\n var oper = '+-*' + (extended ? '/' : '');\n recPoly(node);\n var retFunc = {};\n retFunc.expression = node;\n retFunc.variables = variables;\n return retFunc;\n\n // -------------------------------------------------------------------------------------------------------\n\n /**\n * Function to simplify an expression using an optional scope and\n * return it if the expression is a polynomial expression, i.e.\n * an expression with one or more variables and the operators\n * +, -, *, and ^, where the exponent can only be a positive integer.\n *\n * Syntax:\n *\n * recPoly(node)\n *\n *\n * @param {Node} node The current sub tree expression in recursion\n *\n * @return nothing, throw an exception if error\n */\n function recPoly(node) {\n var tp = node.type; // node type\n if (tp === 'FunctionNode') {\n // No function call in polynomial expression\n throw new Error('There is an unsolved function call');\n } else if (tp === 'OperatorNode') {\n if (node.op === '^') {\n // TODO: handle negative exponents like in '1/x^(-2)'\n if (node.args[1].type !== 'ConstantNode' || !isInteger(parseFloat(node.args[1].value))) {\n throw new Error('There is a non-integer exponent');\n } else {\n recPoly(node.args[0]);\n }\n } else {\n if (oper.indexOf(node.op) === -1) {\n throw new Error('Operator ' + node.op + ' invalid in polynomial expression');\n }\n for (var i = 0; i < node.args.length; i++) {\n recPoly(node.args[i]);\n }\n } // type of operator\n } else if (tp === 'SymbolNode') {\n var _name = node.name; // variable name\n var pos = variables.indexOf(_name);\n if (pos === -1) {\n // new variable in expression\n variables.push(_name);\n }\n } else if (tp === 'ParenthesisNode') {\n recPoly(node.content);\n } else if (tp !== 'ConstantNode') {\n throw new Error('type ' + tp + ' is not allowed in polynomial expression');\n }\n } // end of recPoly\n } // end of polynomial\n\n // ---------------------------------------------------------------------------------------\n /**\n * Return a rule set to rationalize an polynomial expression in rationalize\n *\n * Syntax:\n *\n * rulesRationalize()\n *\n * @return {array} rule set to rationalize an polynomial expression\n */\n function rulesRationalize() {\n var oldRules = [simplifyCore,\n // sCore\n {\n l: 'n+n',\n r: '2*n'\n }, {\n l: 'n+-n',\n r: '0'\n }, simplifyConstant,\n // sConstant\n {\n l: 'n*(n1^-1)',\n r: 'n/n1'\n }, {\n l: 'n*n1^-n2',\n r: 'n/n1^n2'\n }, {\n l: 'n1^-1',\n r: '1/n1'\n }, {\n l: 'n*(n1/n2)',\n r: '(n*n1)/n2'\n }, {\n l: '1*n',\n r: 'n'\n }];\n var rulesFirst = [{\n l: '(-n1)/(-n2)',\n r: 'n1/n2'\n },\n // Unary division\n {\n l: '(-n1)*(-n2)',\n r: 'n1*n2'\n },\n // Unary multiplication\n {\n l: 'n1--n2',\n r: 'n1+n2'\n },\n // '--' elimination\n {\n l: 'n1-n2',\n r: 'n1+(-n2)'\n },\n // Subtraction turn into add with un�ry minus\n {\n l: '(n1+n2)*n3',\n r: '(n1*n3 + n2*n3)'\n },\n // Distributive 1\n {\n l: 'n1*(n2+n3)',\n r: '(n1*n2+n1*n3)'\n },\n // Distributive 2\n {\n l: 'c1*n + c2*n',\n r: '(c1+c2)*n'\n },\n // Joining constants\n {\n l: 'c1*n + n',\n r: '(c1+1)*n'\n },\n // Joining constants\n {\n l: 'c1*n - c2*n',\n r: '(c1-c2)*n'\n },\n // Joining constants\n {\n l: 'c1*n - n',\n r: '(c1-1)*n'\n },\n // Joining constants\n {\n l: 'v/c',\n r: '(1/c)*v'\n },\n // variable/constant (new!)\n {\n l: 'v/-c',\n r: '-(1/c)*v'\n },\n // variable/constant (new!)\n {\n l: '-v*-c',\n r: 'c*v'\n },\n // Inversion constant and variable 1\n {\n l: '-v*c',\n r: '-c*v'\n },\n // Inversion constant and variable 2\n {\n l: 'v*-c',\n r: '-c*v'\n },\n // Inversion constant and variable 3\n {\n l: 'v*c',\n r: 'c*v'\n },\n // Inversion constant and variable 4\n {\n l: '-(-n1*n2)',\n r: '(n1*n2)'\n },\n // Unary propagation\n {\n l: '-(n1*n2)',\n r: '(-n1*n2)'\n },\n // Unary propagation\n {\n l: '-(-n1+n2)',\n r: '(n1-n2)'\n },\n // Unary propagation\n {\n l: '-(n1+n2)',\n r: '(-n1-n2)'\n },\n // Unary propagation\n {\n l: '(n1^n2)^n3',\n r: '(n1^(n2*n3))'\n },\n // Power to Power\n {\n l: '-(-n1/n2)',\n r: '(n1/n2)'\n },\n // Division and Unary\n {\n l: '-(n1/n2)',\n r: '(-n1/n2)'\n }]; // Divisao and Unary\n\n var rulesDistrDiv = [{\n l: '(n1/n2 + n3/n4)',\n r: '((n1*n4 + n3*n2)/(n2*n4))'\n },\n // Sum of fractions\n {\n l: '(n1/n2 + n3)',\n r: '((n1 + n3*n2)/n2)'\n },\n // Sum fraction with number 1\n {\n l: '(n1 + n2/n3)',\n r: '((n1*n3 + n2)/n3)'\n }]; // Sum fraction with number 1\n\n var rulesSucDiv = [{\n l: '(n1/(n2/n3))',\n r: '((n1*n3)/n2)'\n },\n // Division simplification\n {\n l: '(n1/n2/n3)',\n r: '(n1/(n2*n3))'\n }];\n var setRules = {}; // rules set in 4 steps.\n\n // All rules => infinite loop\n // setRules.allRules =oldRules.concat(rulesFirst,rulesDistrDiv,rulesSucDiv)\n\n setRules.firstRules = oldRules.concat(rulesFirst, rulesSucDiv); // First rule set\n setRules.distrDivRules = rulesDistrDiv; // Just distr. div. rules\n setRules.sucDivRules = rulesSucDiv; // Jus succ. div. rules\n setRules.firstRulesAgain = oldRules.concat(rulesFirst); // Last rules set without succ. div.\n\n // Division simplification\n\n // Second rule set.\n // There is no aggregate expression with parentesis, but the only variable can be scattered.\n setRules.finalRules = [simplifyCore,\n // simplify.rules[0]\n {\n l: 'n*-n',\n r: '-n^2'\n },\n // Joining multiply with power 1\n {\n l: 'n*n',\n r: 'n^2'\n },\n // Joining multiply with power 2\n simplifyConstant,\n // simplify.rules[14] old 3rd index in oldRules\n {\n l: 'n*-n^n1',\n r: '-n^(n1+1)'\n },\n // Joining multiply with power 3\n {\n l: 'n*n^n1',\n r: 'n^(n1+1)'\n },\n // Joining multiply with power 4\n {\n l: 'n^n1*-n^n2',\n r: '-n^(n1+n2)'\n },\n // Joining multiply with power 5\n {\n l: 'n^n1*n^n2',\n r: 'n^(n1+n2)'\n },\n // Joining multiply with power 6\n {\n l: 'n^n1*-n',\n r: '-n^(n1+1)'\n },\n // Joining multiply with power 7\n {\n l: 'n^n1*n',\n r: 'n^(n1+1)'\n },\n // Joining multiply with power 8\n {\n l: 'n^n1/-n',\n r: '-n^(n1-1)'\n },\n // Joining multiply with power 8\n {\n l: 'n^n1/n',\n r: 'n^(n1-1)'\n },\n // Joining division with power 1\n {\n l: 'n/-n^n1',\n r: '-n^(1-n1)'\n },\n // Joining division with power 2\n {\n l: 'n/n^n1',\n r: 'n^(1-n1)'\n },\n // Joining division with power 3\n {\n l: 'n^n1/-n^n2',\n r: 'n^(n1-n2)'\n },\n // Joining division with power 4\n {\n l: 'n^n1/n^n2',\n r: 'n^(n1-n2)'\n },\n // Joining division with power 5\n {\n l: 'n1+(-n2*n3)',\n r: 'n1-n2*n3'\n },\n // Solving useless parenthesis 1\n {\n l: 'v*(-c)',\n r: '-c*v'\n },\n // Solving useless unary 2\n {\n l: 'n1+-n2',\n r: 'n1-n2'\n },\n // Solving +- together (new!)\n {\n l: 'v*c',\n r: 'c*v'\n },\n // inversion constant with variable\n {\n l: '(n1^n2)^n3',\n r: '(n1^(n2*n3))'\n } // Power to Power\n ];\n\n return setRules;\n } // End rulesRationalize\n\n // ---------------------------------------------------------------------------------------\n /**\n * Expand recursively a tree node for handling with expressions with exponents\n * (it's not for constants, symbols or functions with exponents)\n * PS: The other parameters are internal for recursion\n *\n * Syntax:\n *\n * expandPower(node)\n *\n * @param {Node} node Current expression node\n * @param {node} parent Parent current node inside the recursion\n * @param (int} Parent number of chid inside the rercursion\n *\n * @return {node} node expression with all powers expanded.\n */\n function expandPower(node, parent, indParent) {\n var tp = node.type;\n var internal = arguments.length > 1; // TRUE in internal calls\n\n if (tp === 'OperatorNode' && node.isBinary()) {\n var does = false;\n var val;\n if (node.op === '^') {\n // First operator: Parenthesis or UnaryMinus\n if ((node.args[0].type === 'ParenthesisNode' || node.args[0].type === 'OperatorNode') && node.args[1].type === 'ConstantNode') {\n // Second operator: Constant\n val = parseFloat(node.args[1].value);\n does = val >= 2 && isInteger(val);\n }\n }\n if (does) {\n // Exponent >= 2\n // Before:\n // operator A --> Subtree\n // parent pow\n // constant\n //\n if (val > 2) {\n // Exponent > 2,\n // AFTER: (exponent > 2)\n // operator A --> Subtree\n // parent *\n // deep clone (operator A --> Subtree\n // pow\n // constant - 1\n //\n var nEsqTopo = node.args[0];\n var nDirTopo = new OperatorNode('^', 'pow', [node.args[0].cloneDeep(), new ConstantNode(val - 1)]);\n node = new OperatorNode('*', 'multiply', [nEsqTopo, nDirTopo]);\n } else {\n // Expo = 2 - no power\n // AFTER: (exponent = 2)\n // operator A --> Subtree\n // parent oper\n // deep clone (operator A --> Subtree)\n //\n node = new OperatorNode('*', 'multiply', [node.args[0], node.args[0].cloneDeep()]);\n }\n if (internal) {\n // Change parent references in internal recursive calls\n if (indParent === 'content') {\n parent.content = node;\n } else {\n parent.args[indParent] = node;\n }\n }\n } // does\n } // binary OperatorNode\n\n if (tp === 'ParenthesisNode') {\n // Recursion\n expandPower(node.content, node, 'content');\n } else if (tp !== 'ConstantNode' && tp !== 'SymbolNode') {\n for (var i = 0; i < node.args.length; i++) {\n expandPower(node.args[i], node, i);\n }\n }\n if (!internal) {\n // return the root node\n return node;\n }\n } // End expandPower\n\n // ---------------------------------------------------------------------------------------\n /**\n * Auxilary function for rationalize\n * Convert near canonical polynomial in one variable in a canonical polynomial\n * with one term for each exponent in decreasing order\n *\n * Syntax:\n *\n * polyToCanonical(node [, coefficients])\n *\n * @param {Node | string} expr The near canonical polynomial expression to convert in a a canonical polynomial expression\n *\n * The string or tree expression needs to be at below syntax, with free spaces:\n * ( (^(-)? | [+-]? )cte (*)? var (^expo)? | cte )+\n * Where 'var' is one variable with any valid name\n * 'cte' are real numeric constants with any value. It can be omitted if equal than 1\n * 'expo' are integers greater than 0. It can be omitted if equal than 1.\n *\n * @param {array} coefficients Optional returns coefficients sorted by increased exponent\n *\n *\n * @return {node} new node tree with one variable polynomial or string error.\n */\n function polyToCanonical(node, coefficients) {\n if (coefficients === undefined) {\n coefficients = [];\n } // coefficients.\n\n coefficients[0] = 0; // index is the exponent\n var o = {};\n o.cte = 1;\n o.oper = '+';\n\n // fire: mark with * or ^ when finds * or ^ down tree, reset to \"\" with + and -.\n // It is used to deduce the exponent: 1 for *, 0 for \"\".\n o.fire = '';\n var maxExpo = 0; // maximum exponent\n var varname = ''; // variable name\n\n recurPol(node, null, o);\n maxExpo = coefficients.length - 1;\n var first = true;\n var no;\n for (var i = maxExpo; i >= 0; i--) {\n if (coefficients[i] === 0) continue;\n var n1 = new ConstantNode(first ? coefficients[i] : Math.abs(coefficients[i]));\n var op = coefficients[i] < 0 ? '-' : '+';\n if (i > 0) {\n // Is not a constant without variable\n var n2 = new SymbolNode(varname);\n if (i > 1) {\n var n3 = new ConstantNode(i);\n n2 = new OperatorNode('^', 'pow', [n2, n3]);\n }\n if (coefficients[i] === -1 && first) {\n n1 = new OperatorNode('-', 'unaryMinus', [n2]);\n } else if (Math.abs(coefficients[i]) === 1) {\n n1 = n2;\n } else {\n n1 = new OperatorNode('*', 'multiply', [n1, n2]);\n }\n }\n if (first) {\n no = n1;\n } else if (op === '+') {\n no = new OperatorNode('+', 'add', [no, n1]);\n } else {\n no = new OperatorNode('-', 'subtract', [no, n1]);\n }\n first = false;\n } // for\n\n if (first) {\n return new ConstantNode(0);\n } else {\n return no;\n }\n\n /**\n * Recursive auxilary function inside polyToCanonical for\n * converting expression in canonical form\n *\n * Syntax:\n *\n * recurPol(node, noPai, obj)\n *\n * @param {Node} node The current subpolynomial expression\n * @param {Node | Null} noPai The current parent node\n * @param {object} obj Object with many internal flags\n *\n * @return {} No return. If error, throws an exception\n */\n function recurPol(node, noPai, o) {\n var tp = node.type;\n if (tp === 'FunctionNode') {\n // ***** FunctionName *****\n // No function call in polynomial expression\n throw new Error('There is an unsolved function call');\n } else if (tp === 'OperatorNode') {\n // ***** OperatorName *****\n if ('+-*^'.indexOf(node.op) === -1) throw new Error('Operator ' + node.op + ' invalid');\n if (noPai !== null) {\n // -(unary),^ : children of *,+,-\n if ((node.fn === 'unaryMinus' || node.fn === 'pow') && noPai.fn !== 'add' && noPai.fn !== 'subtract' && noPai.fn !== 'multiply') {\n throw new Error('Invalid ' + node.op + ' placing');\n }\n\n // -,+,* : children of +,-\n if ((node.fn === 'subtract' || node.fn === 'add' || node.fn === 'multiply') && noPai.fn !== 'add' && noPai.fn !== 'subtract') {\n throw new Error('Invalid ' + node.op + ' placing');\n }\n\n // -,+ : first child\n if ((node.fn === 'subtract' || node.fn === 'add' || node.fn === 'unaryMinus') && o.noFil !== 0) {\n throw new Error('Invalid ' + node.op + ' placing');\n }\n } // Has parent\n\n // Firers: ^,* Old: ^,&,-(unary): firers\n if (node.op === '^' || node.op === '*') {\n o.fire = node.op;\n }\n for (var _i = 0; _i < node.args.length; _i++) {\n // +,-: reset fire\n if (node.fn === 'unaryMinus') o.oper = '-';\n if (node.op === '+' || node.fn === 'subtract') {\n o.fire = '';\n o.cte = 1; // default if there is no constant\n o.oper = _i === 0 ? '+' : node.op;\n }\n o.noFil = _i; // number of son\n recurPol(node.args[_i], node, o);\n } // for in children\n } else if (tp === 'SymbolNode') {\n // ***** SymbolName *****\n if (node.name !== varname && varname !== '') {\n throw new Error('There is more than one variable');\n }\n varname = node.name;\n if (noPai === null) {\n coefficients[1] = 1;\n return;\n }\n\n // ^: Symbol is First child\n if (noPai.op === '^' && o.noFil !== 0) {\n throw new Error('In power the variable should be the first parameter');\n }\n\n // *: Symbol is Second child\n if (noPai.op === '*' && o.noFil !== 1) {\n throw new Error('In multiply the variable should be the second parameter');\n }\n\n // Symbol: firers '',* => it means there is no exponent above, so it's 1 (cte * var)\n if (o.fire === '' || o.fire === '*') {\n if (maxExpo < 1) coefficients[1] = 0;\n coefficients[1] += o.cte * (o.oper === '+' ? 1 : -1);\n maxExpo = Math.max(1, maxExpo);\n }\n } else if (tp === 'ConstantNode') {\n var valor = parseFloat(node.value);\n if (noPai === null) {\n coefficients[0] = valor;\n return;\n }\n if (noPai.op === '^') {\n // cte: second child of power\n if (o.noFil !== 1) throw new Error('Constant cannot be powered');\n if (!isInteger(valor) || valor <= 0) {\n throw new Error('Non-integer exponent is not allowed');\n }\n for (var _i2 = maxExpo + 1; _i2 < valor; _i2++) coefficients[_i2] = 0;\n if (valor > maxExpo) coefficients[valor] = 0;\n coefficients[valor] += o.cte * (o.oper === '+' ? 1 : -1);\n maxExpo = Math.max(valor, maxExpo);\n return;\n }\n o.cte = valor;\n\n // Cte: firer '' => There is no exponent and no multiplication, so the exponent is 0.\n if (o.fire === '') {\n coefficients[0] += o.cte * (o.oper === '+' ? 1 : -1);\n }\n } else {\n throw new Error('Type ' + tp + ' is not allowed');\n }\n } // End of recurPol\n } // End of polyToCanonical\n});","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('b-card',{attrs:{\"title\":\"Bem-vindo ao ConsigPrev!\"}},[_c('b-card-text',[_vm._v(\" Projetado pela Agenda Assessoria, nosso sistema de consignação promove praticidade, produtividade e precisão para o progresso do seu negócio. \")]),_c('b-card-text',[_vm._v(\"O manual de introdução ao sistema está disponível em nossa área de apoio. \"),_c('b-link',{attrs:{\"id\":\"linkCentralApoio\",\"to\":{ name: 'centralapoio' }}},[_vm._v(\" Clique aqui. \")])],1)],1),(_vm.show)?_c('CardStatistic'):_vm._e(),_c('b-modal',{ref:\"modal-selecionar-instituto\",attrs:{\"id\":\"modal-selecionar-instituto\",\"centered\":\"\",\"size\":\"sm\",\"title\":\"Unidade Gestora\",\"hide-footer\":\"\",\"no-close-on-backdrop\":\"\",\"hide-header-close\":\"\",\"no-close-on-esc\":\"\"}},[_c('SelecionarInstituto',{on:{\"selecionarInstitutoEvent\":_vm.selecionarInstitutoMethod}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('validation-observer',{ref:\"formSelecioneInstituto\"},[_c('b-form',[_c('b-row',[_c('b-col',{attrs:{\"md\":\"12\"}},[_c('b-form-group',{attrs:{\"label\":\"Selecione a Unidade Gestora\",\"label-for\":\"instituto\"}},[_c('validation-provider',{attrs:{\"name\":\"Unidade Gestora\",\"rules\":\"required\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nreturn [_c('v-select-pt',{attrs:{\"name\":\"instituto\",\"id\":\"componentInstituto\",\"inputId\":\"selectInstituto\",\"options\":_vm.instituto,\"reduce\":function (option) { return option.id; },\"label\":\"sigla\",\"loading\":_vm.carregandoInstituto},model:{value:(_vm.dados.institutoId),callback:function ($$v) {_vm.$set(_vm.dados, \"institutoId\", $$v)},expression:\"dados.institutoId\"}}),_c('small',{staticClass:\"text-danger\"},[_vm._v(_vm._s(errors[0]))])]}}])})],1)],1)],1),_c('b-row',[_c('b-col',{attrs:{\"md\":\"12\",\"align\":\"right\"}},[_c('b-button',{directives:[{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(186, 191, 199, 0.15)'),expression:\"'rgba(186, 191, 199, 0.15)'\",modifiers:{\"400\":true}}],attrs:{\"type\":\"submit\",\"variant\":\"primary\"},on:{\"click\":_vm.confirmar}},[_vm._v(\" Confirmar \")])],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./selecionarInstituto.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./selecionarInstituto.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./selecionarInstituto.vue?vue&type=template&id=51027264\"\nimport script from \"./selecionarInstituto.vue?vue&type=script&lang=js\"\nexport * from \"./selecionarInstituto.vue?vue&type=script&lang=js\"\nimport style0 from \"./selecionarInstituto.vue?vue&type=style&index=0&id=51027264&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('b-row',[_c('b-col',{attrs:{\"lg\":\"12\"}},[_c('card-statistics-group')],1)],1),_c('b-row',[_c('b-col',{attrs:{\"lg\":\"6\"}},[_c('card-statistic-profit-chart')],1),_c('b-col',{attrs:{\"lg\":\"6\"}},[_c('card-statistic-order-chart')],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-card',[_c('b-row',[_c('b-col',{attrs:{\"md\":\"6\"}},[_c('b-card',{attrs:{\"body-class\":\"pb-50\"}},[_c('h6',[_vm._v(\"Contratos Pendentes\")]),_c('h2',{staticClass:\"font-weight-bolder text-center mb-1\"},[_vm._v(\" \"+_vm._s(_vm.totalizadorContratoPendente)+\" \")]),_c('vue-apex-charts',{attrs:{\"height\":\"50\",\"options\":_vm.statisticsOrder.chartOptions,\"series\":_vm.statisticsOrder.series}})],1)],1),_c('b-col',{attrs:{\"md\":\"6\"}},[_c('b-card',{attrs:{\"body-class\":\"pb-50\"}},[_c('h6',[_vm._v(\"Contratos Consolidados\")]),_c('h2',{staticClass:\"font-weight-bolder text-center mb-1\"},[_vm._v(\" \"+_vm._s(_vm.totalizadorContratoConsolidado)+\" \")]),_c('vue-apex-charts',{attrs:{\"height\":\"50\",\"options\":_vm.statisticsOrder.chartOptions,\"series\":_vm.statisticsOrder.series}})],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardStatisticOrderChart.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardStatisticOrderChart.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./CardStatisticOrderChart.vue?vue&type=template&id=1a08ac18\"\nimport script from \"./CardStatisticOrderChart.vue?vue&type=script&lang=js\"\nexport * from \"./CardStatisticOrderChart.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-card',[_c('b-row',[_c('b-col',{attrs:{\"md\":\"6\"}},[_c('b-card',{attrs:{\"body-class\":\"pb-50\"}},[_c('h5',[_vm._v(\"Valor total das propostas\")]),_c('h3',{staticClass:\"font-weight-bolder text-center mb-1\"},[_vm._v(\" \"+_vm._s(_vm.totalPropostas)+\" \")]),_c('vue-apex-charts',{attrs:{\"height\":\"50\",\"options\":_vm.statisticsProfit.chartOptions,\"series\":_vm.statisticsProfit.series}})],1)],1),_c('b-col',{attrs:{\"md\":\"6\"}},[_c('b-card',{attrs:{\"body-class\":\"pb-50\"}},[_c('h5',[_vm._v(\"Valor médio das propostas\")]),_c('h3',{staticClass:\"font-weight-bolder text-center mb-1\"},[_vm._v(\" \"+_vm._s(_vm.valorMedio)+\" \")]),_c('vue-apex-charts',{attrs:{\"height\":\"50\",\"options\":_vm.statisticsProfit.chartOptions,\"series\":_vm.statisticsProfit.series}})],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardStatisticProfitChart.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardStatisticProfitChart.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./CardStatisticProfitChart.vue?vue&type=template&id=85c96da0\"\nimport script from \"./CardStatisticProfitChart.vue?vue&type=script&lang=js\"\nexport * from \"./CardStatisticProfitChart.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-card',{staticClass:\"card-statistics\",attrs:{\"no-body\":\"\"}},[_c('b-card-header',[_c('b-card-title',[_vm._v(\"Estatísticas totais\")])],1),_c('b-card-body',{staticClass:\"statistics-body\"},[_c('b-row',[_c('b-col',{staticClass:\"mb-2 mb-md-0\",class:'mb-2 mb-xl-0',attrs:{\"md\":\"3\",\"sm\":\"6\"}},[_c('b-media',{attrs:{\"no-body\":\"\"}},[_c('b-media-aside',{staticClass:\"mr-2\"},[_c('b-avatar',{attrs:{\"size\":\"48\",\"variant\":'light-primary'}},[_c('feather-icon',{attrs:{\"size\":\"24\",\"icon\":'TrendingUpIcon'}})],1)],1),_c('b-media-body',{staticClass:\"my-auto\"},[_c('h4',{staticClass:\"font-weight-bolder mb-0\"},[_vm._v(\" \"+_vm._s(this.totalUser)+\" \")]),_c('b-card-text',{staticClass:\"font-small-3 mb-0\"},[_vm._v(\" Usuários cadastrados \")])],1)],1)],1),_c('b-col',{staticClass:\"mb-2 mb-md-0\",class:'mb-2 mb-xl-0',attrs:{\"md\":\"3\",\"sm\":\"6\"}},[_c('b-media',{attrs:{\"no-body\":\"\"}},[_c('b-media-aside',{staticClass:\"mr-2\"},[_c('b-avatar',{attrs:{\"size\":\"48\",\"variant\":'light-info'}},[_c('feather-icon',{attrs:{\"size\":\"24\",\"icon\":'UserIcon'}})],1)],1),_c('b-media-body',{staticClass:\"my-auto\"},[_c('h4',{staticClass:\"font-weight-bolder mb-0\"},[_vm._v(\" \"+_vm._s(this.totalTomador)+\" \")]),_c('b-card-text',{staticClass:\"font-small-3 mb-0\"},[_vm._v(\" Tomadores cadastrados \")])],1)],1)],1),_c('b-col',{staticClass:\"mb-2 mb-sm-0\",class:'mb-2 mb-xl-0',attrs:{\"md\":\"3\",\"sm\":\"6\"}},[_c('b-media',{attrs:{\"no-body\":\"\"}},[_c('b-media-aside',{staticClass:\"mr-2\"},[_c('b-avatar',{attrs:{\"size\":\"48\",\"variant\":'light-danger'}},[_c('feather-icon',{attrs:{\"size\":\"24\",\"icon\":'CommandIcon'}})],1)],1),_c('b-media-body',{staticClass:\"my-auto\"},[_c('h4',{staticClass:\"font-weight-bolder mb-0\"},[_vm._v(\" \"+_vm._s(this.totalOrgao)+\" \")]),_c('b-card-text',{staticClass:\"font-small-3 mb-0\"},[_vm._v(\" Órgãos cadastrados \")])],1)],1)],1),_c('b-col',{staticClass:\"mb-2 mb-md-0\",class:'',attrs:{\"md\":\"3\",\"sm\":\"6\"}},[_c('b-media',{attrs:{\"no-body\":\"\"}},[_c('b-media-aside',{staticClass:\"mr-2\"},[_c('b-avatar',{attrs:{\"size\":\"48\",\"variant\":'light-success'}},[_c('feather-icon',{attrs:{\"size\":\"24\",\"icon\":'ArchiveIcon'}})],1)],1),_c('b-media-body',{staticClass:\"my-auto\"},[_c('h4',{staticClass:\"font-weight-bolder mb-0\"},[_vm._v(\" \"+_vm._s(this.totalSimulacao)+\" \")]),_c('b-card-text',{staticClass:\"font-small-3 mb-0\"},[_vm._v(\" Simulações realizadas \")])],1)],1)],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardStatisticsGroup.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardStatisticsGroup.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./CardStatisticsGroup.vue?vue&type=template&id=01420c8e\"\nimport script from \"./CardStatisticsGroup.vue?vue&type=script&lang=js\"\nexport * from \"./CardStatisticsGroup.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardStatistic.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardStatistic.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./CardStatistic.vue?vue&type=template&id=4eba7885\"\nimport script from \"./CardStatistic.vue?vue&type=script&lang=js\"\nexport * from \"./CardStatistic.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import useJwt from '@/auth/jwt/useJwt'\r\nimport { formatarParaNumber, formatarValor } from '@/libs/utils'\r\nimport * as mathjs from 'mathjs'\r\n\r\nexport async function atualizarTaxas(userData) {\r\n try {\r\n userData = await carregaIndice(userData)\r\n\r\n //recalcular\r\n userData = await calcularTaxas(userData)\r\n\r\n //salvar\r\n await salvarCalculo(userData)\r\n } catch (error) {\r\n console.error('Erro ao atualizar taxas:', error)\r\n }\r\n}\r\n\r\nasync function carregaIndice(userData) {\r\n const tipoIndiceSelecionado = userData.Instituto.tipoIndiceSelecionado || 'IPCA'\r\n try {\r\n const response = await useJwt.pesquisar('indices/getPesquisarIndices', { tipoIndice: tipoIndiceSelecionado })\r\n\r\n const taxaSemFormatar = formatarValor(response.data.taxaAcumulado).replace('R$ ', '')\r\n\r\n userData.Instituto.taxaIndiceInflacionario = taxaSemFormatar\r\n userData.Instituto.taxaIndiceInflacionarioMensal = response.data.taxa\r\n\r\n userData = await calculaJurosAnual(userData)\r\n return userData\r\n } catch (error) {\r\n console.error('Erro ao carregar índice:', error)\r\n }\r\n}\r\n\r\nasync function calculaJurosAnual(userData) {\r\n let taxaEmprestimoMensal = formatarParaNumber(userData.Instituto.taxaEmprestimoMensal) / 100\r\n\r\n let formula = '((A + 1) ^ 12 - 1) * 100'\r\n let escopo = {\r\n A: taxaEmprestimoMensal,\r\n }\r\n\r\n userData.Instituto.taxaEmprestimoAnual = Number(mathjs.evaluate(formula, escopo)).toFixed(2)\r\n\r\n return userData\r\n}\r\n\r\nasync function calcularTaxas(userData) {\r\n let taxaIndiceInflacionario = mathjs.bignumber(formatarParaNumber(userData.Instituto.taxaIndiceInflacionario) || 0)\r\n let jurosAtuarial = mathjs.bignumber(formatarParaNumber(userData.Instituto.jurosAtuarial) || 0)\r\n let taxaAdministrativa = mathjs.bignumber(formatarParaNumber(userData.Instituto.taxaAdministrativa) || 0)\r\n let taxaEmprestimoAnual = mathjs.bignumber(formatarParaNumber(userData.Instituto.taxaEmprestimoAnual) || 0)\r\n let taxaOscilacaoRiscos = mathjs.bignumber(formatarParaNumber(userData.Instituto.taxaOscilacaoRiscos) || 0)\r\n let taxaFundoGarantia = mathjs.bignumber(formatarParaNumber(userData.Instituto.taxaFundoGarantia) || 0)\r\n\r\n taxaEmprestimoAnual = formatarParaNumber(taxaEmprestimoAnual)\r\n taxaIndiceInflacionario = formatarParaNumber(taxaIndiceInflacionario)\r\n jurosAtuarial = formatarParaNumber(jurosAtuarial)\r\n taxaAdministrativa = formatarParaNumber(taxaAdministrativa)\r\n taxaOscilacaoRiscos = formatarParaNumber(taxaOscilacaoRiscos)\r\n taxaFundoGarantia = formatarParaNumber(taxaFundoGarantia)\r\n\r\n let calculoDaTaxaDeOportunidade = Number(\r\n mathjs\r\n .evaluate(`( jurosAoAno - ( A + B + C + D + E) )`, {\r\n jurosAoAno: taxaEmprestimoAnual,\r\n\r\n A: taxaAdministrativa,\r\n B: taxaOscilacaoRiscos,\r\n C: taxaFundoGarantia,\r\n D: jurosAtuarial,\r\n E: taxaIndiceInflacionario,\r\n })\r\n .toFixed(4),\r\n )\r\n calculoDaTaxaDeOportunidade = calculoDaTaxaDeOportunidade * 100 <= 0 ? 0 : calculoDaTaxaDeOportunidade\r\n userData.Instituto.taxaDeOportunidade = formatarValor(calculoDaTaxaDeOportunidade)\r\n\r\n return userData\r\n}\r\n\r\nasync function salvarCalculo(userData) {\r\n const dados = {\r\n ...userData.Instituto,\r\n taxaAdministrativa: formatarParaNumber(userData.Instituto.taxaAdministrativa),\r\n taxaOscilacaoRiscos: formatarParaNumber(userData.Instituto.taxaOscilacaoRiscos),\r\n taxaEmprestimoAnual: formatarParaNumber(userData.Instituto.taxaEmprestimoAnual),\r\n taxaFundoGarantia: formatarParaNumber(userData.Instituto.taxaFundoGarantia),\r\n taxaIndiceInflacionario: formatarParaNumber(userData.Instituto.taxaIndiceInflacionario),\r\n taxaEmprestimoMensal: formatarParaNumber(userData.Instituto.taxaEmprestimoMensal),\r\n jurosAtuarial: formatarParaNumber(userData.Instituto.jurosAtuarial),\r\n taxaDeOportunidade: formatarParaNumber(userData.Instituto.taxaDeOportunidade),\r\n institutoId: userData.Instituto.id,\r\n }\r\n\r\n await useJwt.put(`indices/putTaxas/${userData.Instituto.id}`, dados)\r\n}\r\n","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./adm.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./adm.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./adm.vue?vue&type=template&id=8a7fa95c&scoped=true\"\nimport script from \"./adm.vue?vue&type=script&lang=js\"\nexport * from \"./adm.vue?vue&type=script&lang=js\"\nimport style0 from \"./adm.vue?vue&type=style&index=0&id=8a7fa95c&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"8a7fa95c\",\n null\n \n)\n\nexport default component.exports","import { factory } from '../utils/factory.js';\nimport { createEmptyMap, toObject } from '../utils/map.js';\nvar name = 'Parser';\nvar dependencies = ['evaluate'];\nexport var createParserClass = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n evaluate\n } = _ref;\n /**\n * @constructor Parser\n * Parser contains methods to evaluate or parse expressions, and has a number\n * of convenience methods to get, set, and remove variables from memory. Parser\n * keeps a scope containing variables in memory, which is used for all\n * evaluations.\n *\n * Methods:\n * const result = parser.evaluate(expr) // evaluate an expression\n * const value = parser.get(name) // retrieve a variable from the parser\n * const values = parser.getAll() // retrieve all defined variables\n * parser.set(name, value) // set a variable in the parser\n * parser.remove(name) // clear a variable from the\n * // parsers scope\n * parser.clear() // clear the parsers scope\n *\n * Example usage:\n * const parser = new Parser()\n * // Note: there is a convenience method which can be used instead:\n * // const parser = new math.parser()\n *\n * // evaluate expressions\n * parser.evaluate('sqrt(3^2 + 4^2)') // 5\n * parser.evaluate('sqrt(-4)') // 2i\n * parser.evaluate('2 inch in cm') // 5.08 cm\n * parser.evaluate('cos(45 deg)') // 0.7071067811865476\n *\n * // define variables and functions\n * parser.evaluate('x = 7 / 2') // 3.5\n * parser.evaluate('x + 3') // 6.5\n * parser.evaluate('f(x, y) = x^y') // f(x, y)\n * parser.evaluate('f(2, 3)') // 8\n *\n * // get and set variables and functions\n * const x = parser.get('x') // 3.5\n * const f = parser.get('f') // function\n * const g = f(3, 2) // 9\n * parser.set('h', 500)\n * const i = parser.evaluate('h / 2') // 250\n * parser.set('hello', function (name) {\n * return 'hello, ' + name + '!'\n * })\n * parser.evaluate('hello(\"user\")') // \"hello, user!\"\n *\n * // clear defined functions and variables\n * parser.clear()\n *\n */\n function Parser() {\n if (!(this instanceof Parser)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n Object.defineProperty(this, 'scope', {\n value: createEmptyMap(),\n writable: false\n });\n }\n\n /**\n * Attach type information\n */\n Parser.prototype.type = 'Parser';\n Parser.prototype.isParser = true;\n\n /**\n * Parse and evaluate the given expression\n * @param {string | string[]} expr A string containing an expression,\n * for example \"2+3\", or a list with expressions\n * @return {*} result The result, or undefined when the expression was empty\n * @throws {Error}\n */\n Parser.prototype.evaluate = function (expr) {\n // TODO: validate arguments\n return evaluate(expr, this.scope);\n };\n\n /**\n * Get a variable (a function or variable) by name from the parsers scope.\n * Returns undefined when not found\n * @param {string} name\n * @return {* | undefined} value\n */\n Parser.prototype.get = function (name) {\n // TODO: validate arguments\n if (this.scope.has(name)) {\n return this.scope.get(name);\n }\n };\n\n /**\n * Get a map with all defined variables\n * @return {Object} values\n */\n Parser.prototype.getAll = function () {\n return toObject(this.scope);\n };\n\n /**\n * Get a map with all defined variables\n * @return {Map} values\n */\n Parser.prototype.getAllAsMap = function () {\n return this.scope;\n };\n\n /**\n * Set a symbol (a function or variable) by name from the parsers scope.\n * @param {string} name\n * @param {* | undefined} value\n */\n Parser.prototype.set = function (name, value) {\n this.scope.set(name, value);\n return value;\n };\n\n /**\n * Remove a variable from the parsers scope\n * @param {string} name\n */\n Parser.prototype.remove = function (name) {\n this.scope.delete(name);\n };\n\n /**\n * Clear the scope with variables and functions\n */\n Parser.prototype.clear = function () {\n this.scope.clear();\n };\n return Parser;\n}, {\n isClass: true\n});","import { errorTransform } from './utils/errorTransform.js';\nimport { factory } from '../../utils/factory.js';\nimport { createColumn } from '../../function/matrix/column.js';\nimport { isNumber } from '../../utils/is.js';\nvar name = 'column';\nvar dependencies = ['typed', 'Index', 'matrix', 'range'];\n\n/**\n * Attach a transform function to matrix.column\n * Adds a property transform containing the transform function.\n *\n * This transform changed the last `index` parameter of function column\n * from zero-based to one-based\n */\nexport var createColumnTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n Index,\n matrix,\n range\n } = _ref;\n var column = createColumn({\n typed,\n Index,\n matrix,\n range\n });\n\n // @see: comment of column itself\n return typed('column', {\n '...any': function any(args) {\n // change last argument from zero-based to one-based\n var lastIndex = args.length - 1;\n var last = args[lastIndex];\n if (isNumber(last)) {\n args[lastIndex] = last - 1;\n }\n try {\n return column.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});","import { isBigNumber, isCollection, isNumber } from '../../../utils/is.js';\n\n/**\n * Change last argument dim from one-based to zero-based.\n */\nexport function lastDimToZeroBase(args) {\n if (args.length === 2 && isCollection(args[0])) {\n args = args.slice();\n var dim = args[1];\n if (isNumber(dim)) {\n args[1] = dim - 1;\n } else if (isBigNumber(dim)) {\n args[1] = dim.minus(1);\n }\n }\n return args;\n}","import { isConstantNode, isFunctionNode, isOperatorNode, isParenthesisNode } from '../../../utils/is.js';\nexport { isConstantNode, isSymbolNode as isVariableNode } from '../../../utils/is.js';\nexport function isNumericNode(x) {\n return isConstantNode(x) || isOperatorNode(x) && x.isUnary() && isConstantNode(x.args[0]);\n}\nexport function isConstantExpression(x) {\n if (isConstantNode(x)) {\n // Basic Constant types\n return true;\n }\n if ((isFunctionNode(x) || isOperatorNode(x)) && x.args.every(isConstantExpression)) {\n // Can be constant depending on arguments\n return true;\n }\n if (isParenthesisNode(x) && isConstantExpression(x.content)) {\n // Parenthesis are transparent\n return true;\n }\n return false; // Probably missing some edge cases\n}","import { isParenthesisNode } from '../../utils/is.js';\nimport { isConstantNode, isVariableNode, isNumericNode, isConstantExpression } from './simplify/wildcards.js';\nimport { factory } from '../../utils/factory.js';\nimport { createUtil } from './simplify/util.js';\nimport { hasOwnProperty } from '../../utils/object.js';\nimport { createEmptyMap, createMap } from '../../utils/map.js';\nvar name = 'simplify';\nvar dependencies = ['config', 'typed', 'parse', 'add', 'subtract', 'multiply', 'divide', 'pow', 'isZero', 'equal', 'resolve', 'simplifyConstant', 'simplifyCore', '?fraction', '?bignumber', 'mathWithTransform', 'matrix', 'AccessorNode', 'ArrayNode', 'ConstantNode', 'FunctionNode', 'IndexNode', 'ObjectNode', 'OperatorNode', 'ParenthesisNode', 'SymbolNode'];\nexport var createSimplify = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n config,\n typed,\n parse,\n add,\n subtract,\n multiply,\n divide,\n pow,\n isZero,\n equal,\n resolve,\n simplifyConstant,\n simplifyCore,\n fraction,\n bignumber,\n mathWithTransform,\n matrix,\n AccessorNode,\n ArrayNode,\n ConstantNode,\n FunctionNode,\n IndexNode,\n ObjectNode,\n OperatorNode,\n ParenthesisNode,\n SymbolNode\n } = _ref;\n var {\n hasProperty,\n isCommutative,\n isAssociative,\n mergeContext,\n flatten,\n unflattenr,\n unflattenl,\n createMakeNodeFunction,\n defaultContext,\n realContext,\n positiveContext\n } = createUtil({\n FunctionNode,\n OperatorNode,\n SymbolNode\n });\n\n /**\n * Simplify an expression tree.\n *\n * A list of rules are applied to an expression, repeating over the list until\n * no further changes are made.\n * It's possible to pass a custom set of rules to the function as second\n * argument. A rule can be specified as an object, string, or function:\n *\n * const rules = [\n * { l: 'n1*n3 + n2*n3', r: '(n1+n2)*n3' },\n * 'n1*n3 + n2*n3 -> (n1+n2)*n3',\n * function (node) {\n * // ... return a new node or return the node unchanged\n * return node\n * }\n * ]\n *\n * String and object rules consist of a left and right pattern. The left is\n * used to match against the expression and the right determines what matches\n * are replaced with. The main difference between a pattern and a normal\n * expression is that variables starting with the following characters are\n * interpreted as wildcards:\n *\n * - 'n' - Matches any node [Node]\n * - 'c' - Matches a constant literal (5 or 3.2) [ConstantNode]\n * - 'cl' - Matches a constant literal; same as c [ConstantNode]\n * - 'cd' - Matches a decimal literal (5 or -3.2) [ConstantNode or unaryMinus wrapping a ConstantNode]\n * - 'ce' - Matches a constant expression (-5 or √3) [Expressions consisting of only ConstantNodes, functions, and operators]\n * - 'v' - Matches a variable; anything not matched by c (-5 or x) [Node that is not a ConstantNode]\n * - 'vl' - Matches a variable literal (x or y) [SymbolNode]\n * - 'vd' - Matches a non-decimal expression; anything not matched by cd (x or √3) [Node that is not a ConstantNode or unaryMinus that is wrapping a ConstantNode]\n * - 've' - Matches a variable expression; anything not matched by ce (x or 2x) [Expressions that contain a SymbolNode or other non-constant term]\n *\n * The default list of rules is exposed on the function as `simplify.rules`\n * and can be used as a basis to built a set of custom rules. Note that since\n * the `simplifyCore` function is in the default list of rules, by default\n * simplify will convert any function calls in the expression that have\n * operator equivalents to their operator forms.\n *\n * To specify a rule as a string, separate the left and right pattern by '->'\n * When specifying a rule as an object, the following keys are meaningful:\n * - l - the left pattern\n * - r - the right pattern\n * - s - in lieu of l and r, the string form that is broken at -> to give them\n * - repeat - whether to repeat this rule until the expression stabilizes\n * - assuming - gives a context object, as in the 'context' option to\n * simplify. Every property in the context object must match the current\n * context in order, or else the rule will not be applied.\n * - imposeContext - gives a context object, as in the 'context' option to\n * simplify. Any settings specified will override the incoming context\n * for all matches of this rule.\n *\n * For more details on the theory, see:\n *\n * - [Strategies for simplifying math expressions (Stackoverflow)](https://stackoverflow.com/questions/7540227/strategies-for-simplifying-math-expressions)\n * - [Symbolic computation - Simplification (Wikipedia)](https://en.wikipedia.org/wiki/Symbolic_computation#Simplification)\n *\n * An optional `options` argument can be passed as last argument of `simplify`.\n * Currently available options (defaults in parentheses):\n * - `consoleDebug` (false): whether to write the expression being simplified\n * and any changes to it, along with the rule responsible, to console\n * - `context` (simplify.defaultContext): an object giving properties of\n * each operator, which determine what simplifications are allowed. The\n * currently meaningful properties are commutative, associative,\n * total (whether the operation is defined for all arguments), and\n * trivial (whether the operation applied to a single argument leaves\n * that argument unchanged). The default context is very permissive and\n * allows almost all simplifications. Only properties differing from\n * the default need to be specified; the default context is used as a\n * fallback. Additional contexts `simplify.realContext` and\n * `simplify.positiveContext` are supplied to cause simplify to perform\n * just simplifications guaranteed to preserve all values of the expression\n * assuming all variables and subexpressions are real numbers or\n * positive real numbers, respectively. (Note that these are in some cases\n * more restrictive than the default context; for example, the default\n * context will allow `x/x` to simplify to 1, whereas\n * `simplify.realContext` will not, as `0/0` is not equal to 1.)\n * - `exactFractions` (true): whether to try to convert all constants to\n * exact rational numbers.\n * - `fractionsLimit` (10000): when `exactFractions` is true, constants will\n * be expressed as fractions only when both numerator and denominator\n * are smaller than `fractionsLimit`.\n *\n * Syntax:\n *\n * math.simplify(expr)\n * math.simplify(expr, rules)\n * math.simplify(expr, rules)\n * math.simplify(expr, rules, scope)\n * math.simplify(expr, rules, scope, options)\n * math.simplify(expr, scope)\n * math.simplify(expr, scope, options)\n *\n * Examples:\n *\n * math.simplify('2 * 1 * x ^ (2 - 1)') // Node \"2 * x\"\n * math.simplify('2 * 3 * x', {x: 4}) // Node \"24\"\n * const f = math.parse('2 * 1 * x ^ (2 - 1)')\n * math.simplify(f) // Node \"2 * x\"\n * math.simplify('0.4 * x', {}, {exactFractions: true}) // Node \"x * 2 / 5\"\n * math.simplify('0.4 * x', {}, {exactFractions: false}) // Node \"0.4 * x\"\n *\n * See also:\n *\n * simplifyCore, derivative, evaluate, parse, rationalize, resolve\n *\n * @param {Node | string} expr\n * The expression to be simplified\n * @param {SimplifyRule[]} [rules]\n * Optional list with custom rules\n * @param {Object} [scope] Optional scope with variables\n * @param {SimplifyOptions} [options] Optional configuration settings\n * @return {Node} Returns the simplified form of `expr`\n */\n typed.addConversion({\n from: 'Object',\n to: 'Map',\n convert: createMap\n });\n var simplify = typed('simplify', {\n Node: _simplify,\n 'Node, Map': (expr, scope) => _simplify(expr, false, scope),\n 'Node, Map, Object': (expr, scope, options) => _simplify(expr, false, scope, options),\n 'Node, Array': _simplify,\n 'Node, Array, Map': _simplify,\n 'Node, Array, Map, Object': _simplify\n });\n typed.removeConversion({\n from: 'Object',\n to: 'Map',\n convert: createMap\n });\n simplify.defaultContext = defaultContext;\n simplify.realContext = realContext;\n simplify.positiveContext = positiveContext;\n function removeParens(node) {\n return node.transform(function (node, path, parent) {\n return isParenthesisNode(node) ? removeParens(node.content) : node;\n });\n }\n\n // All constants that are allowed in rules\n var SUPPORTED_CONSTANTS = {\n true: true,\n false: true,\n e: true,\n i: true,\n Infinity: true,\n LN2: true,\n LN10: true,\n LOG2E: true,\n LOG10E: true,\n NaN: true,\n phi: true,\n pi: true,\n SQRT1_2: true,\n SQRT2: true,\n tau: true\n // null: false,\n // undefined: false,\n // version: false,\n };\n\n // Array of strings, used to build the ruleSet.\n // Each l (left side) and r (right side) are parsed by\n // the expression parser into a node tree.\n // Left hand sides are matched to subtrees within the\n // expression to be parsed and replaced with the right\n // hand side.\n // TODO: Add support for constraints on constants (either in the form of a '=' expression or a callback [callback allows things like comparing symbols alphabetically])\n // To evaluate lhs constants for rhs constants, use: { l: 'c1+c2', r: 'c3', evaluate: 'c3 = c1 + c2' }. Multiple assignments are separated by ';' in block format.\n // It is possible to get into an infinite loop with conflicting rules\n simplify.rules = [simplifyCore,\n // { l: 'n+0', r: 'n' }, // simplifyCore\n // { l: 'n^0', r: '1' }, // simplifyCore\n // { l: '0*n', r: '0' }, // simplifyCore\n // { l: 'n/n', r: '1'}, // simplifyCore\n // { l: 'n^1', r: 'n' }, // simplifyCore\n // { l: '+n1', r:'n1' }, // simplifyCore\n // { l: 'n--n1', r:'n+n1' }, // simplifyCore\n {\n l: 'log(e)',\n r: '1'\n },\n // temporary rules\n // Note initially we tend constants to the right because like-term\n // collection prefers the left, and we would rather collect nonconstants\n {\n s: 'n-n1 -> n+-n1',\n // temporarily replace 'subtract' so we can further flatten the 'add' operator\n assuming: {\n subtract: {\n total: true\n }\n }\n }, {\n s: 'n-n -> 0',\n // partial alternative when we can't always subtract\n assuming: {\n subtract: {\n total: false\n }\n }\n }, {\n s: '-(cl*v) -> v * (-cl)',\n // make non-constant terms positive\n assuming: {\n multiply: {\n commutative: true\n },\n subtract: {\n total: true\n }\n }\n }, {\n s: '-(cl*v) -> (-cl) * v',\n // non-commutative version, part 1\n assuming: {\n multiply: {\n commutative: false\n },\n subtract: {\n total: true\n }\n }\n }, {\n s: '-(v*cl) -> v * (-cl)',\n // non-commutative version, part 2\n assuming: {\n multiply: {\n commutative: false\n },\n subtract: {\n total: true\n }\n }\n }, {\n l: '-(n1/n2)',\n r: '-n1/n2'\n }, {\n l: '-v',\n r: 'v * (-1)'\n },\n // finish making non-constant terms positive\n {\n l: '(n1 + n2)*(-1)',\n r: 'n1*(-1) + n2*(-1)',\n repeat: true\n },\n // expand negations to achieve as much sign cancellation as possible\n {\n l: 'n/n1^n2',\n r: 'n*n1^-n2'\n },\n // temporarily replace 'divide' so we can further flatten the 'multiply' operator\n {\n l: 'n/n1',\n r: 'n*n1^-1'\n }, {\n s: '(n1*n2)^n3 -> n1^n3 * n2^n3',\n assuming: {\n multiply: {\n commutative: true\n }\n }\n }, {\n s: '(n1*n2)^(-1) -> n2^(-1) * n1^(-1)',\n assuming: {\n multiply: {\n commutative: false\n }\n }\n },\n // expand nested exponentiation\n {\n s: '(n ^ n1) ^ n2 -> n ^ (n1 * n2)',\n assuming: {\n divide: {\n total: true\n }\n } // 1/(1/n) = n needs 1/n to exist\n },\n // collect like factors; into a sum, only do this for nonconstants\n {\n l: ' vd * ( vd * n1 + n2)',\n r: 'vd^2 * n1 + vd * n2'\n }, {\n s: ' vd * (vd^n4 * n1 + n2) -> vd^(1+n4) * n1 + vd * n2',\n assuming: {\n divide: {\n total: true\n }\n } // v*1/v = v^(1+-1) needs 1/v\n }, {\n s: 'vd^n3 * ( vd * n1 + n2) -> vd^(n3+1) * n1 + vd^n3 * n2',\n assuming: {\n divide: {\n total: true\n }\n }\n }, {\n s: 'vd^n3 * (vd^n4 * n1 + n2) -> vd^(n3+n4) * n1 + vd^n3 * n2',\n assuming: {\n divide: {\n total: true\n }\n }\n }, {\n l: 'n*n',\n r: 'n^2'\n }, {\n s: 'n * n^n1 -> n^(n1+1)',\n assuming: {\n divide: {\n total: true\n }\n } // n*1/n = n^(-1+1) needs 1/n\n }, {\n s: 'n^n1 * n^n2 -> n^(n1+n2)',\n assuming: {\n divide: {\n total: true\n }\n } // ditto for n^2*1/n^2\n },\n // Unfortunately, to deal with more complicated cancellations, it\n // becomes necessary to simplify constants twice per pass. It's not\n // terribly expensive compared to matching rules, so this should not\n // pose a performance problem.\n simplifyConstant,\n // First: before collecting like terms\n\n // collect like terms\n {\n s: 'n+n -> 2*n',\n assuming: {\n add: {\n total: true\n }\n } // 2 = 1 + 1 needs to exist\n }, {\n l: 'n+-n',\n r: '0'\n }, {\n l: 'vd*n + vd',\n r: 'vd*(n+1)'\n },\n // NOTE: leftmost position is special:\n {\n l: 'n3*n1 + n3*n2',\n r: 'n3*(n1+n2)'\n },\n // All sub-monomials tried there.\n {\n l: 'n3^(-n4)*n1 + n3 * n2',\n r: 'n3^(-n4)*(n1 + n3^(n4+1) *n2)'\n }, {\n l: 'n3^(-n4)*n1 + n3^n5 * n2',\n r: 'n3^(-n4)*(n1 + n3^(n4+n5)*n2)'\n },\n // noncommutative additional cases (term collection & factoring)\n {\n s: 'n*vd + vd -> (n+1)*vd',\n assuming: {\n multiply: {\n commutative: false\n }\n }\n }, {\n s: 'vd + n*vd -> (1+n)*vd',\n assuming: {\n multiply: {\n commutative: false\n }\n }\n }, {\n s: 'n1*n3 + n2*n3 -> (n1+n2)*n3',\n assuming: {\n multiply: {\n commutative: false\n }\n }\n }, {\n s: 'n^n1 * n -> n^(n1+1)',\n assuming: {\n divide: {\n total: true\n },\n multiply: {\n commutative: false\n }\n }\n }, {\n s: 'n1*n3^(-n4) + n2 * n3 -> (n1 + n2*n3^(n4 + 1))*n3^(-n4)',\n assuming: {\n multiply: {\n commutative: false\n }\n }\n }, {\n s: 'n1*n3^(-n4) + n2 * n3^n5 -> (n1 + n2*n3^(n4 + n5))*n3^(-n4)',\n assuming: {\n multiply: {\n commutative: false\n }\n }\n }, {\n l: 'n*cd + cd',\n r: '(n+1)*cd'\n }, {\n s: 'cd*n + cd -> cd*(n+1)',\n assuming: {\n multiply: {\n commutative: false\n }\n }\n }, {\n s: 'cd + cd*n -> cd*(1+n)',\n assuming: {\n multiply: {\n commutative: false\n }\n }\n }, simplifyConstant,\n // Second: before returning expressions to \"standard form\"\n\n // make factors positive (and undo 'make non-constant terms positive')\n {\n s: '(-n)*n1 -> -(n*n1)',\n assuming: {\n subtract: {\n total: true\n }\n }\n }, {\n s: 'n1*(-n) -> -(n1*n)',\n // in case * non-commutative\n assuming: {\n subtract: {\n total: true\n },\n multiply: {\n commutative: false\n }\n }\n },\n // final ordering of constants\n {\n s: 'ce+ve -> ve+ce',\n assuming: {\n add: {\n commutative: true\n }\n },\n imposeContext: {\n add: {\n commutative: false\n }\n }\n }, {\n s: 'vd*cd -> cd*vd',\n assuming: {\n multiply: {\n commutative: true\n }\n },\n imposeContext: {\n multiply: {\n commutative: false\n }\n }\n },\n // undo temporary rules\n // { l: '(-1) * n', r: '-n' }, // #811 added test which proved this is redundant\n {\n l: 'n+-n1',\n r: 'n-n1'\n },\n // undo replace 'subtract'\n {\n l: 'n+-(n1)',\n r: 'n-(n1)'\n }, {\n s: 'n*(n1^-1) -> n/n1',\n // undo replace 'divide'; for * commutative\n assuming: {\n multiply: {\n commutative: true\n }\n } // o.w. / not conventional\n }, {\n s: 'n*n1^-n2 -> n/n1^n2',\n assuming: {\n multiply: {\n commutative: true\n }\n } // o.w. / not conventional\n }, {\n s: 'n^-1 -> 1/n',\n assuming: {\n multiply: {\n commutative: true\n }\n } // o.w. / not conventional\n }, {\n l: 'n^1',\n r: 'n'\n },\n // can be produced by power cancellation\n {\n s: 'n*(n1/n2) -> (n*n1)/n2',\n // '*' before '/'\n assuming: {\n multiply: {\n associative: true\n }\n }\n }, {\n s: 'n-(n1+n2) -> n-n1-n2',\n // '-' before '+'\n assuming: {\n addition: {\n associative: true,\n commutative: true\n }\n }\n },\n // { l: '(n1/n2)/n3', r: 'n1/(n2*n3)' },\n // { l: '(n*n1)/(n*n2)', r: 'n1/n2' },\n\n // simplifyConstant can leave an extra factor of 1, which can always\n // be eliminated, since the identity always commutes\n {\n l: '1*n',\n r: 'n',\n imposeContext: {\n multiply: {\n commutative: true\n }\n }\n }, {\n s: 'n1/(n2/n3) -> (n1*n3)/n2',\n assuming: {\n multiply: {\n associative: true\n }\n }\n }, {\n l: 'n1/(-n2)',\n r: '-n1/n2'\n }];\n\n /**\n * Takes any rule object as allowed by the specification in simplify\n * and puts it in a standard form used by applyRule\n */\n function _canonicalizeRule(ruleObject, context) {\n var newRule = {};\n if (ruleObject.s) {\n var lr = ruleObject.s.split('->');\n if (lr.length === 2) {\n newRule.l = lr[0];\n newRule.r = lr[1];\n } else {\n throw SyntaxError('Could not parse rule: ' + ruleObject.s);\n }\n } else {\n newRule.l = ruleObject.l;\n newRule.r = ruleObject.r;\n }\n newRule.l = removeParens(parse(newRule.l));\n newRule.r = removeParens(parse(newRule.r));\n for (var prop of ['imposeContext', 'repeat', 'assuming']) {\n if (prop in ruleObject) {\n newRule[prop] = ruleObject[prop];\n }\n }\n if (ruleObject.evaluate) {\n newRule.evaluate = parse(ruleObject.evaluate);\n }\n if (isAssociative(newRule.l, context)) {\n var nonCommutative = !isCommutative(newRule.l, context);\n var leftExpandsym;\n // Gen. the LHS placeholder used in this NC-context specific expansion rules\n if (nonCommutative) leftExpandsym = _getExpandPlaceholderSymbol();\n var makeNode = createMakeNodeFunction(newRule.l);\n var expandsym = _getExpandPlaceholderSymbol();\n newRule.expanded = {};\n newRule.expanded.l = makeNode([newRule.l, expandsym]);\n // Push the expandsym into the deepest possible branch.\n // This helps to match the newRule against nodes returned from getSplits() later on.\n flatten(newRule.expanded.l, context);\n unflattenr(newRule.expanded.l, context);\n newRule.expanded.r = makeNode([newRule.r, expandsym]);\n\n // In and for a non-commutative context, attempting with yet additional expansion rules makes\n // way for more matches cases of multi-arg expressions; such that associative rules (such as\n // 'n*n -> n^2') can be applied to exprs. such as 'a * b * b' and 'a * b * b * a'.\n if (nonCommutative) {\n // 'Non-commutative' 1: LHS (placeholder) only\n newRule.expandedNC1 = {};\n newRule.expandedNC1.l = makeNode([leftExpandsym, newRule.l]);\n newRule.expandedNC1.r = makeNode([leftExpandsym, newRule.r]);\n // 'Non-commutative' 2: farmost LHS and RHS placeholders\n newRule.expandedNC2 = {};\n newRule.expandedNC2.l = makeNode([leftExpandsym, newRule.expanded.l]);\n newRule.expandedNC2.r = makeNode([leftExpandsym, newRule.expanded.r]);\n }\n }\n return newRule;\n }\n\n /**\n * Parse the string array of rules into nodes\n *\n * Example syntax for rules:\n *\n * Position constants to the left in a product:\n * { l: 'n1 * c1', r: 'c1 * n1' }\n * n1 is any Node, and c1 is a ConstantNode.\n *\n * Apply difference of squares formula:\n * { l: '(n1 - n2) * (n1 + n2)', r: 'n1^2 - n2^2' }\n * n1, n2 mean any Node.\n *\n * Short hand notation:\n * 'n1 * c1 -> c1 * n1'\n */\n function _buildRules(rules, context) {\n // Array of rules to be used to simplify expressions\n var ruleSet = [];\n for (var i = 0; i < rules.length; i++) {\n var rule = rules[i];\n var newRule = void 0;\n var ruleType = typeof rule;\n switch (ruleType) {\n case 'string':\n rule = {\n s: rule\n };\n /* falls through */\n case 'object':\n newRule = _canonicalizeRule(rule, context);\n break;\n case 'function':\n newRule = rule;\n break;\n default:\n throw TypeError('Unsupported type of rule: ' + ruleType);\n }\n // console.log('Adding rule: ' + rules[i])\n // console.log(newRule)\n ruleSet.push(newRule);\n }\n return ruleSet;\n }\n var _lastsym = 0;\n function _getExpandPlaceholderSymbol() {\n return new SymbolNode('_p' + _lastsym++);\n }\n function _simplify(expr, rules) {\n var scope = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : createEmptyMap();\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var debug = options.consoleDebug;\n rules = _buildRules(rules || simplify.rules, options.context);\n var res = resolve(expr, scope);\n res = removeParens(res);\n var visited = {};\n var str = res.toString({\n parenthesis: 'all'\n });\n while (!visited[str]) {\n visited[str] = true;\n _lastsym = 0; // counter for placeholder symbols\n var laststr = str;\n if (debug) console.log('Working on: ', str);\n for (var i = 0; i < rules.length; i++) {\n var rulestr = '';\n if (typeof rules[i] === 'function') {\n res = rules[i](res, options);\n if (debug) rulestr = rules[i].name;\n } else {\n flatten(res, options.context);\n res = applyRule(res, rules[i], options.context);\n if (debug) {\n rulestr = \"\".concat(rules[i].l.toString(), \" -> \").concat(rules[i].r.toString());\n }\n }\n if (debug) {\n var newstr = res.toString({\n parenthesis: 'all'\n });\n if (newstr !== laststr) {\n console.log('Applying', rulestr, 'produced', newstr);\n laststr = newstr;\n }\n }\n /* Use left-heavy binary tree internally,\n * since custom rule functions may expect it\n */\n unflattenl(res, options.context);\n }\n str = res.toString({\n parenthesis: 'all'\n });\n }\n return res;\n }\n function mapRule(nodes, rule, context) {\n var resNodes = nodes;\n if (nodes) {\n for (var i = 0; i < nodes.length; ++i) {\n var newNode = applyRule(nodes[i], rule, context);\n if (newNode !== nodes[i]) {\n if (resNodes === nodes) {\n resNodes = nodes.slice();\n }\n resNodes[i] = newNode;\n }\n }\n }\n return resNodes;\n }\n\n /**\n * Returns a simplfied form of node, or the original node if no simplification was possible.\n *\n * @param {ConstantNode | SymbolNode | ParenthesisNode | FunctionNode | OperatorNode} node\n * @param {Object | Function} rule\n * @param {Object} context -- information about assumed properties of operators\n * @return {ConstantNode | SymbolNode | ParenthesisNode | FunctionNode | OperatorNode} The simplified form of `expr`, or the original node if no simplification was possible.\n */\n function applyRule(node, rule, context) {\n // console.log('Entering applyRule(\"', rule.l.toString({parenthesis:'all'}), '->', rule.r.toString({parenthesis:'all'}), '\",', node.toString({parenthesis:'all'}),')')\n\n // check that the assumptions for this rule are satisfied by the current\n // context:\n if (rule.assuming) {\n for (var symbol in rule.assuming) {\n for (var property in rule.assuming[symbol]) {\n if (hasProperty(symbol, property, context) !== rule.assuming[symbol][property]) {\n return node;\n }\n }\n }\n }\n var mergedContext = mergeContext(rule.imposeContext, context);\n\n // Do not clone node unless we find a match\n var res = node;\n\n // First replace our child nodes with their simplified versions\n // If a child could not be simplified, applying the rule to it\n // will have no effect since the node is returned unchanged\n if (res instanceof OperatorNode || res instanceof FunctionNode) {\n var newArgs = mapRule(res.args, rule, context);\n if (newArgs !== res.args) {\n res = res.clone();\n res.args = newArgs;\n }\n } else if (res instanceof ParenthesisNode) {\n if (res.content) {\n var newContent = applyRule(res.content, rule, context);\n if (newContent !== res.content) {\n res = new ParenthesisNode(newContent);\n }\n }\n } else if (res instanceof ArrayNode) {\n var newItems = mapRule(res.items, rule, context);\n if (newItems !== res.items) {\n res = new ArrayNode(newItems);\n }\n } else if (res instanceof AccessorNode) {\n var newObj = res.object;\n if (res.object) {\n newObj = applyRule(res.object, rule, context);\n }\n var newIndex = res.index;\n if (res.index) {\n newIndex = applyRule(res.index, rule, context);\n }\n if (newObj !== res.object || newIndex !== res.index) {\n res = new AccessorNode(newObj, newIndex);\n }\n } else if (res instanceof IndexNode) {\n var newDims = mapRule(res.dimensions, rule, context);\n if (newDims !== res.dimensions) {\n res = new IndexNode(newDims);\n }\n } else if (res instanceof ObjectNode) {\n var changed = false;\n var newProps = {};\n for (var prop in res.properties) {\n newProps[prop] = applyRule(res.properties[prop], rule, context);\n if (newProps[prop] !== res.properties[prop]) {\n changed = true;\n }\n }\n if (changed) {\n res = new ObjectNode(newProps);\n }\n }\n\n // Try to match a rule against this node\n var repl = rule.r;\n var matches = _ruleMatch(rule.l, res, mergedContext)[0];\n\n // If the rule is associative operator, we can try matching it while allowing additional terms.\n // This allows us to match rules like 'n+n' to the expression '(1+x)+x' or even 'x+1+x' if the operator is commutative.\n if (!matches && rule.expanded) {\n repl = rule.expanded.r;\n matches = _ruleMatch(rule.expanded.l, res, mergedContext)[0];\n }\n // Additional, non-commutative context expansion-rules\n if (!matches && rule.expandedNC1) {\n repl = rule.expandedNC1.r;\n matches = _ruleMatch(rule.expandedNC1.l, res, mergedContext)[0];\n if (!matches) {\n // Existence of NC1 implies NC2\n repl = rule.expandedNC2.r;\n matches = _ruleMatch(rule.expandedNC2.l, res, mergedContext)[0];\n }\n }\n if (matches) {\n // const before = res.toString({parenthesis: 'all'})\n\n // Create a new node by cloning the rhs of the matched rule\n // we keep any implicit multiplication state if relevant\n var implicit = res.implicit;\n res = repl.clone();\n if (implicit && 'implicit' in repl) {\n res.implicit = true;\n }\n\n // Replace placeholders with their respective nodes without traversing deeper into the replaced nodes\n res = res.transform(function (node) {\n if (node.isSymbolNode && hasOwnProperty(matches.placeholders, node.name)) {\n return matches.placeholders[node.name].clone();\n } else {\n return node;\n }\n });\n\n // const after = res.toString({parenthesis: 'all'})\n // console.log('Simplified ' + before + ' to ' + after)\n }\n\n if (rule.repeat && res !== node) {\n res = applyRule(res, rule, context);\n }\n return res;\n }\n\n /**\n * Get (binary) combinations of a flattened binary node\n * e.g. +(node1, node2, node3) -> [\n * +(node1, +(node2, node3)),\n * +(node2, +(node1, node3)),\n * +(node3, +(node1, node2))]\n *\n */\n function getSplits(node, context) {\n var res = [];\n var right, rightArgs;\n var makeNode = createMakeNodeFunction(node);\n if (isCommutative(node, context)) {\n for (var i = 0; i < node.args.length; i++) {\n rightArgs = node.args.slice(0);\n rightArgs.splice(i, 1);\n right = rightArgs.length === 1 ? rightArgs[0] : makeNode(rightArgs);\n res.push(makeNode([node.args[i], right]));\n }\n } else {\n // Keep order, but try all parenthesizations\n for (var _i = 1; _i < node.args.length; _i++) {\n var left = node.args[0];\n if (_i > 1) {\n left = makeNode(node.args.slice(0, _i));\n }\n rightArgs = node.args.slice(_i);\n right = rightArgs.length === 1 ? rightArgs[0] : makeNode(rightArgs);\n res.push(makeNode([left, right]));\n }\n }\n return res;\n }\n\n /**\n * Returns the set union of two match-placeholders or null if there is a conflict.\n */\n function mergeMatch(match1, match2) {\n var res = {\n placeholders: {}\n };\n\n // Some matches may not have placeholders; this is OK\n if (!match1.placeholders && !match2.placeholders) {\n return res;\n } else if (!match1.placeholders) {\n return match2;\n } else if (!match2.placeholders) {\n return match1;\n }\n\n // Placeholders with the same key must match exactly\n for (var key in match1.placeholders) {\n if (hasOwnProperty(match1.placeholders, key)) {\n res.placeholders[key] = match1.placeholders[key];\n if (hasOwnProperty(match2.placeholders, key)) {\n if (!_exactMatch(match1.placeholders[key], match2.placeholders[key])) {\n return null;\n }\n }\n }\n }\n for (var _key in match2.placeholders) {\n if (hasOwnProperty(match2.placeholders, _key)) {\n res.placeholders[_key] = match2.placeholders[_key];\n }\n }\n return res;\n }\n\n /**\n * Combine two lists of matches by applying mergeMatch to the cartesian product of two lists of matches.\n * Each list represents matches found in one child of a node.\n */\n function combineChildMatches(list1, list2) {\n var res = [];\n if (list1.length === 0 || list2.length === 0) {\n return res;\n }\n var merged;\n for (var i1 = 0; i1 < list1.length; i1++) {\n for (var i2 = 0; i2 < list2.length; i2++) {\n merged = mergeMatch(list1[i1], list2[i2]);\n if (merged) {\n res.push(merged);\n }\n }\n }\n return res;\n }\n\n /**\n * Combine multiple lists of matches by applying mergeMatch to the cartesian product of two lists of matches.\n * Each list represents matches found in one child of a node.\n * Returns a list of unique matches.\n */\n function mergeChildMatches(childMatches) {\n if (childMatches.length === 0) {\n return childMatches;\n }\n var sets = childMatches.reduce(combineChildMatches);\n var uniqueSets = [];\n var unique = {};\n for (var i = 0; i < sets.length; i++) {\n var s = JSON.stringify(sets[i]);\n if (!unique[s]) {\n unique[s] = true;\n uniqueSets.push(sets[i]);\n }\n }\n return uniqueSets;\n }\n\n /**\n * Determines whether node matches rule.\n *\n * @param {ConstantNode | SymbolNode | ParenthesisNode | FunctionNode | OperatorNode} rule\n * @param {ConstantNode | SymbolNode | ParenthesisNode | FunctionNode | OperatorNode} node\n * @param {Object} context -- provides assumed properties of operators\n * @param {Boolean} isSplit -- whether we are in process of splitting an\n * n-ary operator node into possible binary combinations.\n * Defaults to false.\n * @return {Object} Information about the match, if it exists.\n */\n function _ruleMatch(rule, node, context, isSplit) {\n // console.log('Entering _ruleMatch(' + JSON.stringify(rule) + ', ' + JSON.stringify(node) + ')')\n // console.log('rule = ' + rule)\n // console.log('node = ' + node)\n\n // console.log('Entering _ruleMatch(', rule.toString({parenthesis:'all'}), ', ', node.toString({parenthesis:'all'}), ', ', context, ')')\n var res = [{\n placeholders: {}\n }];\n if (rule instanceof OperatorNode && node instanceof OperatorNode || rule instanceof FunctionNode && node instanceof FunctionNode) {\n // If the rule is an OperatorNode or a FunctionNode, then node must match exactly\n if (rule instanceof OperatorNode) {\n if (rule.op !== node.op || rule.fn !== node.fn) {\n return [];\n }\n } else if (rule instanceof FunctionNode) {\n if (rule.name !== node.name) {\n return [];\n }\n }\n\n // rule and node match. Search the children of rule and node.\n if (node.args.length === 1 && rule.args.length === 1 || !isAssociative(node, context) && node.args.length === rule.args.length || isSplit) {\n // Expect non-associative operators to match exactly,\n // except in any order if operator is commutative\n var childMatches = [];\n for (var i = 0; i < rule.args.length; i++) {\n var childMatch = _ruleMatch(rule.args[i], node.args[i], context);\n if (childMatch.length === 0) {\n // Child did not match, so stop searching immediately\n break;\n }\n // The child matched, so add the information returned from the child to our result\n childMatches.push(childMatch);\n }\n if (childMatches.length !== rule.args.length) {\n if (!isCommutative(node, context) ||\n // exact match in order needed\n rule.args.length === 1) {\n // nothing to commute\n return [];\n }\n if (rule.args.length > 2) {\n /* Need to generate all permutations and try them.\n * It's a bit complicated, and unlikely to come up since there\n * are very few ternary or higher operators. So punt for now.\n */\n throw new Error('permuting >2 commutative non-associative rule arguments not yet implemented');\n }\n /* Exactly two arguments, try them reversed */\n var leftMatch = _ruleMatch(rule.args[0], node.args[1], context);\n if (leftMatch.length === 0) {\n return [];\n }\n var rightMatch = _ruleMatch(rule.args[1], node.args[0], context);\n if (rightMatch.length === 0) {\n return [];\n }\n childMatches = [leftMatch, rightMatch];\n }\n res = mergeChildMatches(childMatches);\n } else if (node.args.length >= 2 && rule.args.length === 2) {\n // node is flattened, rule is not\n // Associative operators/functions can be split in different ways so we check if the rule\n // matches for each of them and return their union.\n var splits = getSplits(node, context);\n var splitMatches = [];\n for (var _i2 = 0; _i2 < splits.length; _i2++) {\n var matchSet = _ruleMatch(rule, splits[_i2], context, true); // recursing at the same tree depth here\n splitMatches = splitMatches.concat(matchSet);\n }\n return splitMatches;\n } else if (rule.args.length > 2) {\n throw Error('Unexpected non-binary associative function: ' + rule.toString());\n } else {\n // Incorrect number of arguments in rule and node, so no match\n return [];\n }\n } else if (rule instanceof SymbolNode) {\n // If the rule is a SymbolNode, then it carries a special meaning\n // according to the first one or two characters of the symbol node name.\n // These meanings are expalined in the documentation for simplify()\n if (rule.name.length === 0) {\n throw new Error('Symbol in rule has 0 length...!?');\n }\n if (SUPPORTED_CONSTANTS[rule.name]) {\n // built-in constant must match exactly\n if (rule.name !== node.name) {\n return [];\n }\n } else {\n // wildcards are composed of up to two alphabetic or underscore characters\n switch (rule.name[1] >= 'a' && rule.name[1] <= 'z' ? rule.name.substring(0, 2) : rule.name[0]) {\n case 'n':\n case '_p':\n // rule matches _anything_, so assign this node to the rule.name placeholder\n // Assign node to the rule.name placeholder.\n // Our parent will check for matches among placeholders.\n res[0].placeholders[rule.name] = node;\n break;\n case 'c':\n case 'cl':\n // rule matches a ConstantNode\n if (isConstantNode(node)) {\n res[0].placeholders[rule.name] = node;\n } else {\n // mis-match: rule does not encompass current node\n return [];\n }\n break;\n case 'v':\n // rule matches anything other than a ConstantNode\n if (!isConstantNode(node)) {\n res[0].placeholders[rule.name] = node;\n } else {\n // mis-match: rule does not encompass current node\n return [];\n }\n break;\n case 'vl':\n // rule matches VariableNode\n if (isVariableNode(node)) {\n res[0].placeholders[rule.name] = node;\n } else {\n // mis-match: rule does not encompass current node\n return [];\n }\n break;\n case 'cd':\n // rule matches a ConstantNode or unaryMinus-wrapped ConstantNode\n if (isNumericNode(node)) {\n res[0].placeholders[rule.name] = node;\n } else {\n // mis-match: rule does not encompass current node\n return [];\n }\n break;\n case 'vd':\n // rule matches anything other than a ConstantNode or unaryMinus-wrapped ConstantNode\n if (!isNumericNode(node)) {\n res[0].placeholders[rule.name] = node;\n } else {\n // mis-match: rule does not encompass current node\n return [];\n }\n break;\n case 'ce':\n // rule matches expressions that have a constant value\n if (isConstantExpression(node)) {\n res[0].placeholders[rule.name] = node;\n } else {\n // mis-match: rule does not encompass current node\n return [];\n }\n break;\n case 've':\n // rule matches expressions that do not have a constant value\n if (!isConstantExpression(node)) {\n res[0].placeholders[rule.name] = node;\n } else {\n // mis-match: rule does not encompass current node\n return [];\n }\n break;\n default:\n throw new Error('Invalid symbol in rule: ' + rule.name);\n }\n }\n } else if (rule instanceof ConstantNode) {\n // Literal constant must match exactly\n if (!equal(rule.value, node.value)) {\n return [];\n }\n } else {\n // Some other node was encountered which we aren't prepared for, so no match\n return [];\n }\n\n // It's a match!\n\n // console.log('_ruleMatch(' + rule.toString() + ', ' + node.toString() + ') found a match')\n return res;\n }\n\n /**\n * Determines whether p and q (and all their children nodes) are identical.\n *\n * @param {ConstantNode | SymbolNode | ParenthesisNode | FunctionNode | OperatorNode} p\n * @param {ConstantNode | SymbolNode | ParenthesisNode | FunctionNode | OperatorNode} q\n * @return {Object} Information about the match, if it exists.\n */\n function _exactMatch(p, q) {\n if (p instanceof ConstantNode && q instanceof ConstantNode) {\n if (!equal(p.value, q.value)) {\n return false;\n }\n } else if (p instanceof SymbolNode && q instanceof SymbolNode) {\n if (p.name !== q.name) {\n return false;\n }\n } else if (p instanceof OperatorNode && q instanceof OperatorNode || p instanceof FunctionNode && q instanceof FunctionNode) {\n if (p instanceof OperatorNode) {\n if (p.op !== q.op || p.fn !== q.fn) {\n return false;\n }\n } else if (p instanceof FunctionNode) {\n if (p.name !== q.name) {\n return false;\n }\n }\n if (p.args.length !== q.args.length) {\n return false;\n }\n for (var i = 0; i < p.args.length; i++) {\n if (!_exactMatch(p.args[i], q.args[i])) {\n return false;\n }\n }\n } else {\n return false;\n }\n return true;\n }\n return simplify;\n});","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./selecionarInstituto.vue?vue&type=style&index=0&id=51027264&prod&lang=scss\"","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { isBigNumber, isComplex, isNode, isUnit, typeOf } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nimport { getPrecedence } from '../operators.js';\nvar name = 'ConditionalNode';\nvar dependencies = ['Node'];\nexport var createConditionalNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n Node\n } = _ref;\n /**\n * Test whether a condition is met\n * @param {*} condition\n * @returns {boolean} true if condition is true or non-zero, else false\n */\n function testCondition(condition) {\n if (typeof condition === 'number' || typeof condition === 'boolean' || typeof condition === 'string') {\n return !!condition;\n }\n if (condition) {\n if (isBigNumber(condition)) {\n return !condition.isZero();\n }\n if (isComplex(condition)) {\n return !!(condition.re || condition.im);\n }\n if (isUnit(condition)) {\n return !!condition.value;\n }\n }\n if (condition === null || condition === undefined) {\n return false;\n }\n throw new TypeError('Unsupported type of condition \"' + typeOf(condition) + '\"');\n }\n class ConditionalNode extends Node {\n /**\n * A lazy evaluating conditional operator: 'condition ? trueExpr : falseExpr'\n *\n * @param {Node} condition Condition, must result in a boolean\n * @param {Node} trueExpr Expression evaluated when condition is true\n * @param {Node} falseExpr Expression evaluated when condition is true\n *\n * @constructor ConditionalNode\n * @extends {Node}\n */\n constructor(condition, trueExpr, falseExpr) {\n super();\n if (!isNode(condition)) {\n throw new TypeError('Parameter condition must be a Node');\n }\n if (!isNode(trueExpr)) {\n throw new TypeError('Parameter trueExpr must be a Node');\n }\n if (!isNode(falseExpr)) {\n throw new TypeError('Parameter falseExpr must be a Node');\n }\n this.condition = condition;\n this.trueExpr = trueExpr;\n this.falseExpr = falseExpr;\n }\n get type() {\n return name;\n }\n get isConditionalNode() {\n return true;\n }\n\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n _compile(math, argNames) {\n var evalCondition = this.condition._compile(math, argNames);\n var evalTrueExpr = this.trueExpr._compile(math, argNames);\n var evalFalseExpr = this.falseExpr._compile(math, argNames);\n return function evalConditionalNode(scope, args, context) {\n return testCondition(evalCondition(scope, args, context)) ? evalTrueExpr(scope, args, context) : evalFalseExpr(scope, args, context);\n };\n }\n\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n forEach(callback) {\n callback(this.condition, 'condition', this);\n callback(this.trueExpr, 'trueExpr', this);\n callback(this.falseExpr, 'falseExpr', this);\n }\n\n /**\n * Create a new ConditionalNode whose children are the results of calling\n * the provided callback function for each child of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {ConditionalNode} Returns a transformed copy of the node\n */\n map(callback) {\n return new ConditionalNode(this._ifNode(callback(this.condition, 'condition', this)), this._ifNode(callback(this.trueExpr, 'trueExpr', this)), this._ifNode(callback(this.falseExpr, 'falseExpr', this)));\n }\n\n /**\n * Create a clone of this node, a shallow copy\n * @return {ConditionalNode}\n */\n clone() {\n return new ConditionalNode(this.condition, this.trueExpr, this.falseExpr);\n }\n\n /**\n * Get string representation\n * @param {Object} options\n * @return {string} str\n */\n _toString(options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var precedence = getPrecedence(this, parenthesis, options && options.implicit);\n\n // Enclose Arguments in parentheses if they are an OperatorNode\n // or have lower or equal precedence\n // NOTE: enclosing all OperatorNodes in parentheses is a decision\n // purely based on aesthetics and readability\n var condition = this.condition.toString(options);\n var conditionPrecedence = getPrecedence(this.condition, parenthesis, options && options.implicit);\n if (parenthesis === 'all' || this.condition.type === 'OperatorNode' || conditionPrecedence !== null && conditionPrecedence <= precedence) {\n condition = '(' + condition + ')';\n }\n var trueExpr = this.trueExpr.toString(options);\n var truePrecedence = getPrecedence(this.trueExpr, parenthesis, options && options.implicit);\n if (parenthesis === 'all' || this.trueExpr.type === 'OperatorNode' || truePrecedence !== null && truePrecedence <= precedence) {\n trueExpr = '(' + trueExpr + ')';\n }\n var falseExpr = this.falseExpr.toString(options);\n var falsePrecedence = getPrecedence(this.falseExpr, parenthesis, options && options.implicit);\n if (parenthesis === 'all' || this.falseExpr.type === 'OperatorNode' || falsePrecedence !== null && falsePrecedence <= precedence) {\n falseExpr = '(' + falseExpr + ')';\n }\n return condition + ' ? ' + trueExpr + ' : ' + falseExpr;\n }\n\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n toJSON() {\n return {\n mathjs: name,\n condition: this.condition,\n trueExpr: this.trueExpr,\n falseExpr: this.falseExpr\n };\n }\n\n /**\n * Instantiate an ConditionalNode from its JSON representation\n * @param {Object} json\n * An object structured like\n * ```\n * {\"mathjs\": \"ConditionalNode\",\n * \"condition\": ...,\n * \"trueExpr\": ...,\n * \"falseExpr\": ...}\n * ```\n * where mathjs is optional\n * @returns {ConditionalNode}\n */\n static fromJSON(json) {\n return new ConditionalNode(json.condition, json.trueExpr, json.falseExpr);\n }\n\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string} str\n */\n toHTML(options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var precedence = getPrecedence(this, parenthesis, options && options.implicit);\n\n // Enclose Arguments in parentheses if they are an OperatorNode\n // or have lower or equal precedence\n // NOTE: enclosing all OperatorNodes in parentheses is a decision\n // purely based on aesthetics and readability\n var condition = this.condition.toHTML(options);\n var conditionPrecedence = getPrecedence(this.condition, parenthesis, options && options.implicit);\n if (parenthesis === 'all' || this.condition.type === 'OperatorNode' || conditionPrecedence !== null && conditionPrecedence <= precedence) {\n condition = '(' + condition + ')';\n }\n var trueExpr = this.trueExpr.toHTML(options);\n var truePrecedence = getPrecedence(this.trueExpr, parenthesis, options && options.implicit);\n if (parenthesis === 'all' || this.trueExpr.type === 'OperatorNode' || truePrecedence !== null && truePrecedence <= precedence) {\n trueExpr = '(' + trueExpr + ')';\n }\n var falseExpr = this.falseExpr.toHTML(options);\n var falsePrecedence = getPrecedence(this.falseExpr, parenthesis, options && options.implicit);\n if (parenthesis === 'all' || this.falseExpr.type === 'OperatorNode' || falsePrecedence !== null && falsePrecedence <= precedence) {\n falseExpr = '(' + falseExpr + ')';\n }\n return condition + '?' + trueExpr + ':' + falseExpr;\n }\n\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string} str\n */\n _toTex(options) {\n return '\\\\begin{cases} {' + this.trueExpr.toTex(options) + '}, &\\\\quad{\\\\text{if }\\\\;' + this.condition.toTex(options) + '}\\\\\\\\{' + this.falseExpr.toTex(options) + '}, &\\\\quad{\\\\text{otherwise}}\\\\end{cases}';\n }\n }\n _defineProperty(ConditionalNode, \"name\", name);\n return ConditionalNode;\n}, {\n isClass: true,\n isNode: true\n});","import _extends from \"@babel/runtime/helpers/extends\";\nimport { factory } from '../utils/factory.js';\nimport { isAccessorNode, isConstantNode, isFunctionNode, isOperatorNode, isSymbolNode, rule2Node } from '../utils/is.js';\nimport { deepMap } from '../utils/collection.js';\nimport { hasOwnProperty } from '../utils/object.js';\nvar name = 'parse';\nvar dependencies = ['typed', 'numeric', 'config', 'AccessorNode', 'ArrayNode', 'AssignmentNode', 'BlockNode', 'ConditionalNode', 'ConstantNode', 'FunctionAssignmentNode', 'FunctionNode', 'IndexNode', 'ObjectNode', 'OperatorNode', 'ParenthesisNode', 'RangeNode', 'RelationalNode', 'SymbolNode'];\nexport var createParse = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n numeric,\n config,\n AccessorNode,\n ArrayNode,\n AssignmentNode,\n BlockNode,\n ConditionalNode,\n ConstantNode,\n FunctionAssignmentNode,\n FunctionNode,\n IndexNode,\n ObjectNode,\n OperatorNode,\n ParenthesisNode,\n RangeNode,\n RelationalNode,\n SymbolNode\n } = _ref;\n /**\n * Parse an expression. Returns a node tree, which can be evaluated by\n * invoking node.evaluate().\n *\n * Note the evaluating arbitrary expressions may involve security risks,\n * see [https://mathjs.org/docs/expressions/security.html](https://mathjs.org/docs/expressions/security.html) for more information.\n *\n * Syntax:\n *\n * math.parse(expr)\n * math.parse(expr, options)\n * math.parse([expr1, expr2, expr3, ...])\n * math.parse([expr1, expr2, expr3, ...], options)\n *\n * Example:\n *\n * const node1 = math.parse('sqrt(3^2 + 4^2)')\n * node1.compile().evaluate() // 5\n *\n * let scope = {a:3, b:4}\n * const node2 = math.parse('a * b') // 12\n * const code2 = node2.compile()\n * code2.evaluate(scope) // 12\n * scope.a = 5\n * code2.evaluate(scope) // 20\n *\n * const nodes = math.parse(['a = 3', 'b = 4', 'a * b'])\n * nodes[2].compile().evaluate() // 12\n *\n * See also:\n *\n * evaluate, compile\n *\n * @param {string | string[] | Matrix} expr Expression to be parsed\n * @param {{nodes: Object}} [options] Available options:\n * - `nodes` a set of custom nodes\n * @return {Node | Node[]} node\n * @throws {Error}\n */\n var parse = typed(name, {\n string: function string(expression) {\n return parseStart(expression, {});\n },\n 'Array | Matrix': function ArrayMatrix(expressions) {\n return parseMultiple(expressions, {});\n },\n 'string, Object': function stringObject(expression, options) {\n var extraNodes = options.nodes !== undefined ? options.nodes : {};\n return parseStart(expression, extraNodes);\n },\n 'Array | Matrix, Object': parseMultiple\n });\n function parseMultiple(expressions) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var extraNodes = options.nodes !== undefined ? options.nodes : {};\n\n // parse an array or matrix with expressions\n return deepMap(expressions, function (elem) {\n if (typeof elem !== 'string') throw new TypeError('String expected');\n return parseStart(elem, extraNodes);\n });\n }\n\n // token types enumeration\n var TOKENTYPE = {\n NULL: 0,\n DELIMITER: 1,\n NUMBER: 2,\n SYMBOL: 3,\n UNKNOWN: 4\n };\n\n // map with all delimiters\n var DELIMITERS = {\n ',': true,\n '(': true,\n ')': true,\n '[': true,\n ']': true,\n '{': true,\n '}': true,\n '\"': true,\n '\\'': true,\n ';': true,\n '+': true,\n '-': true,\n '*': true,\n '.*': true,\n '/': true,\n './': true,\n '%': true,\n '^': true,\n '.^': true,\n '~': true,\n '!': true,\n '&': true,\n '|': true,\n '^|': true,\n '=': true,\n ':': true,\n '?': true,\n '==': true,\n '!=': true,\n '<': true,\n '>': true,\n '<=': true,\n '>=': true,\n '<<': true,\n '>>': true,\n '>>>': true\n };\n\n // map with all named delimiters\n var NAMED_DELIMITERS = {\n mod: true,\n to: true,\n in: true,\n and: true,\n xor: true,\n or: true,\n not: true\n };\n var CONSTANTS = {\n true: true,\n false: false,\n null: null,\n undefined\n };\n var NUMERIC_CONSTANTS = ['NaN', 'Infinity'];\n var ESCAPE_CHARACTERS = {\n '\"': '\"',\n \"'\": \"'\",\n '\\\\': '\\\\',\n '/': '/',\n b: '\\b',\n f: '\\f',\n n: '\\n',\n r: '\\r',\n t: '\\t'\n // note that \\u is handled separately in parseStringToken()\n };\n\n function initialState() {\n return {\n extraNodes: {},\n // current extra nodes, must be careful not to mutate\n expression: '',\n // current expression\n comment: '',\n // last parsed comment\n index: 0,\n // current index in expr\n token: '',\n // current token\n tokenType: TOKENTYPE.NULL,\n // type of the token\n nestingLevel: 0,\n // level of nesting inside parameters, used to ignore newline characters\n conditionalLevel: null // when a conditional is being parsed, the level of the conditional is stored here\n };\n }\n\n /**\n * View upto `length` characters of the expression starting at the current character.\n *\n * @param {Object} state\n * @param {number} [length=1] Number of characters to view\n * @returns {string}\n * @private\n */\n function currentString(state, length) {\n return state.expression.substr(state.index, length);\n }\n\n /**\n * View the current character. Returns '' if end of expression is reached.\n *\n * @param {Object} state\n * @returns {string}\n * @private\n */\n function currentCharacter(state) {\n return currentString(state, 1);\n }\n\n /**\n * Get the next character from the expression.\n * The character is stored into the char c. If the end of the expression is\n * reached, the function puts an empty string in c.\n * @private\n */\n function next(state) {\n state.index++;\n }\n\n /**\n * Preview the previous character from the expression.\n * @return {string} cNext\n * @private\n */\n function prevCharacter(state) {\n return state.expression.charAt(state.index - 1);\n }\n\n /**\n * Preview the next character from the expression.\n * @return {string} cNext\n * @private\n */\n function nextCharacter(state) {\n return state.expression.charAt(state.index + 1);\n }\n\n /**\n * Get next token in the current string expr.\n * The token and token type are available as token and tokenType\n * @private\n */\n function getToken(state) {\n state.tokenType = TOKENTYPE.NULL;\n state.token = '';\n state.comment = '';\n\n // skip over ignored characters:\n while (true) {\n // comments:\n if (currentCharacter(state) === '#') {\n while (currentCharacter(state) !== '\\n' && currentCharacter(state) !== '') {\n state.comment += currentCharacter(state);\n next(state);\n }\n }\n // whitespace: space, tab, and newline when inside parameters\n if (parse.isWhitespace(currentCharacter(state), state.nestingLevel)) {\n next(state);\n } else {\n break;\n }\n }\n\n // check for end of expression\n if (currentCharacter(state) === '') {\n // token is still empty\n state.tokenType = TOKENTYPE.DELIMITER;\n return;\n }\n\n // check for new line character\n if (currentCharacter(state) === '\\n' && !state.nestingLevel) {\n state.tokenType = TOKENTYPE.DELIMITER;\n state.token = currentCharacter(state);\n next(state);\n return;\n }\n var c1 = currentCharacter(state);\n var c2 = currentString(state, 2);\n var c3 = currentString(state, 3);\n if (c3.length === 3 && DELIMITERS[c3]) {\n state.tokenType = TOKENTYPE.DELIMITER;\n state.token = c3;\n next(state);\n next(state);\n next(state);\n return;\n }\n\n // check for delimiters consisting of 2 characters\n if (c2.length === 2 && DELIMITERS[c2]) {\n state.tokenType = TOKENTYPE.DELIMITER;\n state.token = c2;\n next(state);\n next(state);\n return;\n }\n\n // check for delimiters consisting of 1 character\n if (DELIMITERS[c1]) {\n state.tokenType = TOKENTYPE.DELIMITER;\n state.token = c1;\n next(state);\n return;\n }\n\n // check for a number\n if (parse.isDigitDot(c1)) {\n state.tokenType = TOKENTYPE.NUMBER;\n\n // check for binary, octal, or hex\n var _c = currentString(state, 2);\n if (_c === '0b' || _c === '0o' || _c === '0x') {\n state.token += currentCharacter(state);\n next(state);\n state.token += currentCharacter(state);\n next(state);\n while (parse.isHexDigit(currentCharacter(state))) {\n state.token += currentCharacter(state);\n next(state);\n }\n if (currentCharacter(state) === '.') {\n // this number has a radix point\n state.token += '.';\n next(state);\n // get the digits after the radix\n while (parse.isHexDigit(currentCharacter(state))) {\n state.token += currentCharacter(state);\n next(state);\n }\n } else if (currentCharacter(state) === 'i') {\n // this number has a word size suffix\n state.token += 'i';\n next(state);\n // get the word size\n while (parse.isDigit(currentCharacter(state))) {\n state.token += currentCharacter(state);\n next(state);\n }\n }\n return;\n }\n\n // get number, can have a single dot\n if (currentCharacter(state) === '.') {\n state.token += currentCharacter(state);\n next(state);\n if (!parse.isDigit(currentCharacter(state))) {\n // this is no number, it is just a dot (can be dot notation)\n state.tokenType = TOKENTYPE.DELIMITER;\n return;\n }\n } else {\n while (parse.isDigit(currentCharacter(state))) {\n state.token += currentCharacter(state);\n next(state);\n }\n if (parse.isDecimalMark(currentCharacter(state), nextCharacter(state))) {\n state.token += currentCharacter(state);\n next(state);\n }\n }\n while (parse.isDigit(currentCharacter(state))) {\n state.token += currentCharacter(state);\n next(state);\n }\n // check for exponential notation like \"2.3e-4\", \"1.23e50\" or \"2e+4\"\n if (currentCharacter(state) === 'E' || currentCharacter(state) === 'e') {\n if (parse.isDigit(nextCharacter(state)) || nextCharacter(state) === '-' || nextCharacter(state) === '+') {\n state.token += currentCharacter(state);\n next(state);\n if (currentCharacter(state) === '+' || currentCharacter(state) === '-') {\n state.token += currentCharacter(state);\n next(state);\n }\n // Scientific notation MUST be followed by an exponent\n if (!parse.isDigit(currentCharacter(state))) {\n throw createSyntaxError(state, 'Digit expected, got \"' + currentCharacter(state) + '\"');\n }\n while (parse.isDigit(currentCharacter(state))) {\n state.token += currentCharacter(state);\n next(state);\n }\n if (parse.isDecimalMark(currentCharacter(state), nextCharacter(state))) {\n throw createSyntaxError(state, 'Digit expected, got \"' + currentCharacter(state) + '\"');\n }\n } else if (nextCharacter(state) === '.') {\n next(state);\n throw createSyntaxError(state, 'Digit expected, got \"' + currentCharacter(state) + '\"');\n }\n }\n return;\n }\n\n // check for variables, functions, named operators\n if (parse.isAlpha(currentCharacter(state), prevCharacter(state), nextCharacter(state))) {\n while (parse.isAlpha(currentCharacter(state), prevCharacter(state), nextCharacter(state)) || parse.isDigit(currentCharacter(state))) {\n state.token += currentCharacter(state);\n next(state);\n }\n if (hasOwnProperty(NAMED_DELIMITERS, state.token)) {\n state.tokenType = TOKENTYPE.DELIMITER;\n } else {\n state.tokenType = TOKENTYPE.SYMBOL;\n }\n return;\n }\n\n // something unknown is found, wrong characters -> a syntax error\n state.tokenType = TOKENTYPE.UNKNOWN;\n while (currentCharacter(state) !== '') {\n state.token += currentCharacter(state);\n next(state);\n }\n throw createSyntaxError(state, 'Syntax error in part \"' + state.token + '\"');\n }\n\n /**\n * Get next token and skip newline tokens\n */\n function getTokenSkipNewline(state) {\n do {\n getToken(state);\n } while (state.token === '\\n'); // eslint-disable-line no-unmodified-loop-condition\n }\n\n /**\n * Open parameters.\n * New line characters will be ignored until closeParams(state) is called\n */\n function openParams(state) {\n state.nestingLevel++;\n }\n\n /**\n * Close parameters.\n * New line characters will no longer be ignored\n */\n function closeParams(state) {\n state.nestingLevel--;\n }\n\n /**\n * Checks whether the current character `c` is a valid alpha character:\n *\n * - A latin letter (upper or lower case) Ascii: a-z, A-Z\n * - An underscore Ascii: _\n * - A dollar sign Ascii: $\n * - A latin letter with accents Unicode: \\u00C0 - \\u02AF\n * - A greek letter Unicode: \\u0370 - \\u03FF\n * - A mathematical alphanumeric symbol Unicode: \\u{1D400} - \\u{1D7FF} excluding invalid code points\n *\n * The previous and next characters are needed to determine whether\n * this character is part of a unicode surrogate pair.\n *\n * @param {string} c Current character in the expression\n * @param {string} cPrev Previous character\n * @param {string} cNext Next character\n * @return {boolean}\n */\n parse.isAlpha = function isAlpha(c, cPrev, cNext) {\n return parse.isValidLatinOrGreek(c) || parse.isValidMathSymbol(c, cNext) || parse.isValidMathSymbol(cPrev, c);\n };\n\n /**\n * Test whether a character is a valid latin, greek, or letter-like character\n * @param {string} c\n * @return {boolean}\n */\n parse.isValidLatinOrGreek = function isValidLatinOrGreek(c) {\n return /^[a-zA-Z_$\\u00C0-\\u02AF\\u0370-\\u03FF\\u2100-\\u214F]$/.test(c);\n };\n\n /**\n * Test whether two given 16 bit characters form a surrogate pair of a\n * unicode math symbol.\n *\n * https://unicode-table.com/en/\n * https://www.wikiwand.com/en/Mathematical_operators_and_symbols_in_Unicode\n *\n * Note: In ES6 will be unicode aware:\n * https://stackoverflow.com/questions/280712/javascript-unicode-regexes\n * https://mathiasbynens.be/notes/es6-unicode-regex\n *\n * @param {string} high\n * @param {string} low\n * @return {boolean}\n */\n parse.isValidMathSymbol = function isValidMathSymbol(high, low) {\n return /^[\\uD835]$/.test(high) && /^[\\uDC00-\\uDFFF]$/.test(low) && /^[^\\uDC55\\uDC9D\\uDCA0\\uDCA1\\uDCA3\\uDCA4\\uDCA7\\uDCA8\\uDCAD\\uDCBA\\uDCBC\\uDCC4\\uDD06\\uDD0B\\uDD0C\\uDD15\\uDD1D\\uDD3A\\uDD3F\\uDD45\\uDD47-\\uDD49\\uDD51\\uDEA6\\uDEA7\\uDFCC\\uDFCD]$/.test(low);\n };\n\n /**\n * Check whether given character c is a white space character: space, tab, or enter\n * @param {string} c\n * @param {number} nestingLevel\n * @return {boolean}\n */\n parse.isWhitespace = function isWhitespace(c, nestingLevel) {\n // TODO: also take '\\r' carriage return as newline? Or does that give problems on mac?\n return c === ' ' || c === '\\t' || c === '\\n' && nestingLevel > 0;\n };\n\n /**\n * Test whether the character c is a decimal mark (dot).\n * This is the case when it's not the start of a delimiter '.*', './', or '.^'\n * @param {string} c\n * @param {string} cNext\n * @return {boolean}\n */\n parse.isDecimalMark = function isDecimalMark(c, cNext) {\n return c === '.' && cNext !== '/' && cNext !== '*' && cNext !== '^';\n };\n\n /**\n * checks if the given char c is a digit or dot\n * @param {string} c a string with one character\n * @return {boolean}\n */\n parse.isDigitDot = function isDigitDot(c) {\n return c >= '0' && c <= '9' || c === '.';\n };\n\n /**\n * checks if the given char c is a digit\n * @param {string} c a string with one character\n * @return {boolean}\n */\n parse.isDigit = function isDigit(c) {\n return c >= '0' && c <= '9';\n };\n\n /**\n * checks if the given char c is a hex digit\n * @param {string} c a string with one character\n * @return {boolean}\n */\n parse.isHexDigit = function isHexDigit(c) {\n return c >= '0' && c <= '9' || c >= 'a' && c <= 'f' || c >= 'A' && c <= 'F';\n };\n\n /**\n * Start of the parse levels below, in order of precedence\n * @return {Node} node\n * @private\n */\n function parseStart(expression, extraNodes) {\n var state = initialState();\n _extends(state, {\n expression,\n extraNodes\n });\n getToken(state);\n var node = parseBlock(state);\n\n // check for garbage at the end of the expression\n // an expression ends with a empty character '' and tokenType DELIMITER\n if (state.token !== '') {\n if (state.tokenType === TOKENTYPE.DELIMITER) {\n // user entered a not existing operator like \"//\"\n\n // TODO: give hints for aliases, for example with \"<>\" give as hint \" did you mean !== ?\"\n throw createError(state, 'Unexpected operator ' + state.token);\n } else {\n throw createSyntaxError(state, 'Unexpected part \"' + state.token + '\"');\n }\n }\n return node;\n }\n\n /**\n * Parse a block with expressions. Expressions can be separated by a newline\n * character '\\n', or by a semicolon ';'. In case of a semicolon, no output\n * of the preceding line is returned.\n * @return {Node} node\n * @private\n */\n function parseBlock(state) {\n var node;\n var blocks = [];\n var visible;\n if (state.token !== '' && state.token !== '\\n' && state.token !== ';') {\n node = parseAssignment(state);\n if (state.comment) {\n node.comment = state.comment;\n }\n }\n\n // TODO: simplify this loop\n while (state.token === '\\n' || state.token === ';') {\n // eslint-disable-line no-unmodified-loop-condition\n if (blocks.length === 0 && node) {\n visible = state.token !== ';';\n blocks.push({\n node,\n visible\n });\n }\n getToken(state);\n if (state.token !== '\\n' && state.token !== ';' && state.token !== '') {\n node = parseAssignment(state);\n if (state.comment) {\n node.comment = state.comment;\n }\n visible = state.token !== ';';\n blocks.push({\n node,\n visible\n });\n }\n }\n if (blocks.length > 0) {\n return new BlockNode(blocks);\n } else {\n if (!node) {\n node = new ConstantNode(undefined);\n if (state.comment) {\n node.comment = state.comment;\n }\n }\n return node;\n }\n }\n\n /**\n * Assignment of a function or variable,\n * - can be a variable like 'a=2.3'\n * - or a updating an existing variable like 'matrix(2,3:5)=[6,7,8]'\n * - defining a function like 'f(x) = x^2'\n * @return {Node} node\n * @private\n */\n function parseAssignment(state) {\n var name, args, value, valid;\n var node = parseConditional(state);\n if (state.token === '=') {\n if (isSymbolNode(node)) {\n // parse a variable assignment like 'a = 2/3'\n name = node.name;\n getTokenSkipNewline(state);\n value = parseAssignment(state);\n return new AssignmentNode(new SymbolNode(name), value);\n } else if (isAccessorNode(node)) {\n // parse a matrix subset assignment like 'A[1,2] = 4'\n getTokenSkipNewline(state);\n value = parseAssignment(state);\n return new AssignmentNode(node.object, node.index, value);\n } else if (isFunctionNode(node) && isSymbolNode(node.fn)) {\n // parse function assignment like 'f(x) = x^2'\n valid = true;\n args = [];\n name = node.name;\n node.args.forEach(function (arg, index) {\n if (isSymbolNode(arg)) {\n args[index] = arg.name;\n } else {\n valid = false;\n }\n });\n if (valid) {\n getTokenSkipNewline(state);\n value = parseAssignment(state);\n return new FunctionAssignmentNode(name, args, value);\n }\n }\n throw createSyntaxError(state, 'Invalid left hand side of assignment operator =');\n }\n return node;\n }\n\n /**\n * conditional operation\n *\n * condition ? truePart : falsePart\n *\n * Note: conditional operator is right-associative\n *\n * @return {Node} node\n * @private\n */\n function parseConditional(state) {\n var node = parseLogicalOr(state);\n while (state.token === '?') {\n // eslint-disable-line no-unmodified-loop-condition\n // set a conditional level, the range operator will be ignored as long\n // as conditionalLevel === state.nestingLevel.\n var prev = state.conditionalLevel;\n state.conditionalLevel = state.nestingLevel;\n getTokenSkipNewline(state);\n var condition = node;\n var trueExpr = parseAssignment(state);\n if (state.token !== ':') throw createSyntaxError(state, 'False part of conditional expression expected');\n state.conditionalLevel = null;\n getTokenSkipNewline(state);\n var falseExpr = parseAssignment(state); // Note: check for conditional operator again, right associativity\n\n node = new ConditionalNode(condition, trueExpr, falseExpr);\n\n // restore the previous conditional level\n state.conditionalLevel = prev;\n }\n return node;\n }\n\n /**\n * logical or, 'x or y'\n * @return {Node} node\n * @private\n */\n function parseLogicalOr(state) {\n var node = parseLogicalXor(state);\n while (state.token === 'or') {\n // eslint-disable-line no-unmodified-loop-condition\n getTokenSkipNewline(state);\n node = new OperatorNode('or', 'or', [node, parseLogicalXor(state)]);\n }\n return node;\n }\n\n /**\n * logical exclusive or, 'x xor y'\n * @return {Node} node\n * @private\n */\n function parseLogicalXor(state) {\n var node = parseLogicalAnd(state);\n while (state.token === 'xor') {\n // eslint-disable-line no-unmodified-loop-condition\n getTokenSkipNewline(state);\n node = new OperatorNode('xor', 'xor', [node, parseLogicalAnd(state)]);\n }\n return node;\n }\n\n /**\n * logical and, 'x and y'\n * @return {Node} node\n * @private\n */\n function parseLogicalAnd(state) {\n var node = parseBitwiseOr(state);\n while (state.token === 'and') {\n // eslint-disable-line no-unmodified-loop-condition\n getTokenSkipNewline(state);\n node = new OperatorNode('and', 'and', [node, parseBitwiseOr(state)]);\n }\n return node;\n }\n\n /**\n * bitwise or, 'x | y'\n * @return {Node} node\n * @private\n */\n function parseBitwiseOr(state) {\n var node = parseBitwiseXor(state);\n while (state.token === '|') {\n // eslint-disable-line no-unmodified-loop-condition\n getTokenSkipNewline(state);\n node = new OperatorNode('|', 'bitOr', [node, parseBitwiseXor(state)]);\n }\n return node;\n }\n\n /**\n * bitwise exclusive or (xor), 'x ^| y'\n * @return {Node} node\n * @private\n */\n function parseBitwiseXor(state) {\n var node = parseBitwiseAnd(state);\n while (state.token === '^|') {\n // eslint-disable-line no-unmodified-loop-condition\n getTokenSkipNewline(state);\n node = new OperatorNode('^|', 'bitXor', [node, parseBitwiseAnd(state)]);\n }\n return node;\n }\n\n /**\n * bitwise and, 'x & y'\n * @return {Node} node\n * @private\n */\n function parseBitwiseAnd(state) {\n var node = parseRelational(state);\n while (state.token === '&') {\n // eslint-disable-line no-unmodified-loop-condition\n getTokenSkipNewline(state);\n node = new OperatorNode('&', 'bitAnd', [node, parseRelational(state)]);\n }\n return node;\n }\n\n /**\n * Parse a chained conditional, like 'a > b >= c'\n * @return {Node} node\n */\n function parseRelational(state) {\n var params = [parseShift(state)];\n var conditionals = [];\n var operators = {\n '==': 'equal',\n '!=': 'unequal',\n '<': 'smaller',\n '>': 'larger',\n '<=': 'smallerEq',\n '>=': 'largerEq'\n };\n while (hasOwnProperty(operators, state.token)) {\n // eslint-disable-line no-unmodified-loop-condition\n var cond = {\n name: state.token,\n fn: operators[state.token]\n };\n conditionals.push(cond);\n getTokenSkipNewline(state);\n params.push(parseShift(state));\n }\n if (params.length === 1) {\n return params[0];\n } else if (params.length === 2) {\n return new OperatorNode(conditionals[0].name, conditionals[0].fn, params);\n } else {\n return new RelationalNode(conditionals.map(c => c.fn), params);\n }\n }\n\n /**\n * Bitwise left shift, bitwise right arithmetic shift, bitwise right logical shift\n * @return {Node} node\n * @private\n */\n function parseShift(state) {\n var node, name, fn, params;\n node = parseConversion(state);\n var operators = {\n '<<': 'leftShift',\n '>>': 'rightArithShift',\n '>>>': 'rightLogShift'\n };\n while (hasOwnProperty(operators, state.token)) {\n name = state.token;\n fn = operators[name];\n getTokenSkipNewline(state);\n params = [node, parseConversion(state)];\n node = new OperatorNode(name, fn, params);\n }\n return node;\n }\n\n /**\n * conversion operators 'to' and 'in'\n * @return {Node} node\n * @private\n */\n function parseConversion(state) {\n var node, name, fn, params;\n node = parseRange(state);\n var operators = {\n to: 'to',\n in: 'to' // alias of 'to'\n };\n\n while (hasOwnProperty(operators, state.token)) {\n name = state.token;\n fn = operators[name];\n getTokenSkipNewline(state);\n if (name === 'in' && state.token === '') {\n // end of expression -> this is the unit 'in' ('inch')\n node = new OperatorNode('*', 'multiply', [node, new SymbolNode('in')], true);\n } else {\n // operator 'a to b' or 'a in b'\n params = [node, parseRange(state)];\n node = new OperatorNode(name, fn, params);\n }\n }\n return node;\n }\n\n /**\n * parse range, \"start:end\", \"start:step:end\", \":\", \"start:\", \":end\", etc\n * @return {Node} node\n * @private\n */\n function parseRange(state) {\n var node;\n var params = [];\n if (state.token === ':') {\n // implicit start=1 (one-based)\n node = new ConstantNode(1);\n } else {\n // explicit start\n node = parseAddSubtract(state);\n }\n if (state.token === ':' && state.conditionalLevel !== state.nestingLevel) {\n // we ignore the range operator when a conditional operator is being processed on the same level\n params.push(node);\n\n // parse step and end\n while (state.token === ':' && params.length < 3) {\n // eslint-disable-line no-unmodified-loop-condition\n getTokenSkipNewline(state);\n if (state.token === ')' || state.token === ']' || state.token === ',' || state.token === '') {\n // implicit end\n params.push(new SymbolNode('end'));\n } else {\n // explicit end\n params.push(parseAddSubtract(state));\n }\n }\n if (params.length === 3) {\n // params = [start, step, end]\n node = new RangeNode(params[0], params[2], params[1]); // start, end, step\n } else {\n // length === 2\n // params = [start, end]\n node = new RangeNode(params[0], params[1]); // start, end\n }\n }\n\n return node;\n }\n\n /**\n * add or subtract\n * @return {Node} node\n * @private\n */\n function parseAddSubtract(state) {\n var node, name, fn, params;\n node = parseMultiplyDivide(state);\n var operators = {\n '+': 'add',\n '-': 'subtract'\n };\n while (hasOwnProperty(operators, state.token)) {\n name = state.token;\n fn = operators[name];\n getTokenSkipNewline(state);\n var rightNode = parseMultiplyDivide(state);\n if (rightNode.isPercentage) {\n params = [node, new OperatorNode('*', 'multiply', [node, rightNode])];\n } else {\n params = [node, rightNode];\n }\n node = new OperatorNode(name, fn, params);\n }\n return node;\n }\n\n /**\n * multiply, divide, modulus\n * @return {Node} node\n * @private\n */\n function parseMultiplyDivide(state) {\n var node, last, name, fn;\n node = parseImplicitMultiplication(state);\n last = node;\n var operators = {\n '*': 'multiply',\n '.*': 'dotMultiply',\n '/': 'divide',\n './': 'dotDivide'\n };\n while (true) {\n if (hasOwnProperty(operators, state.token)) {\n // explicit operators\n name = state.token;\n fn = operators[name];\n getTokenSkipNewline(state);\n last = parseImplicitMultiplication(state);\n node = new OperatorNode(name, fn, [node, last]);\n } else {\n break;\n }\n }\n return node;\n }\n\n /**\n * implicit multiplication\n * @return {Node} node\n * @private\n */\n function parseImplicitMultiplication(state) {\n var node, last;\n node = parseRule2(state);\n last = node;\n while (true) {\n if (state.tokenType === TOKENTYPE.SYMBOL || state.token === 'in' && isConstantNode(node) || state.tokenType === TOKENTYPE.NUMBER && !isConstantNode(last) && (!isOperatorNode(last) || last.op === '!') || state.token === '(') {\n // parse implicit multiplication\n //\n // symbol: implicit multiplication like '2a', '(2+3)a', 'a b'\n // number: implicit multiplication like '(2+3)2'\n // parenthesis: implicit multiplication like '2(3+4)', '(3+4)(1+2)'\n last = parseRule2(state);\n node = new OperatorNode('*', 'multiply', [node, last], true /* implicit */);\n } else {\n break;\n }\n }\n return node;\n }\n\n /**\n * Infamous \"rule 2\" as described in https://github.com/josdejong/mathjs/issues/792#issuecomment-361065370\n * And as amended in https://github.com/josdejong/mathjs/issues/2370#issuecomment-1054052164\n * Explicit division gets higher precedence than implicit multiplication\n * when the division matches this pattern:\n * [unaryPrefixOp]?[number] / [number] [symbol]\n * @return {Node} node\n * @private\n */\n function parseRule2(state) {\n var node = parsePercentage(state);\n var last = node;\n var tokenStates = [];\n while (true) {\n // Match the \"number /\" part of the pattern \"number / number symbol\"\n if (state.token === '/' && rule2Node(last)) {\n // Look ahead to see if the next token is a number\n tokenStates.push(_extends({}, state));\n getTokenSkipNewline(state);\n\n // Match the \"number / number\" part of the pattern\n if (state.tokenType === TOKENTYPE.NUMBER) {\n // Look ahead again\n tokenStates.push(_extends({}, state));\n getTokenSkipNewline(state);\n\n // Match the \"symbol\" part of the pattern, or a left parenthesis\n if (state.tokenType === TOKENTYPE.SYMBOL || state.token === '(') {\n // We've matched the pattern \"number / number symbol\".\n // Rewind once and build the \"number / number\" node; the symbol will be consumed later\n _extends(state, tokenStates.pop());\n tokenStates.pop();\n last = parsePercentage(state);\n node = new OperatorNode('/', 'divide', [node, last]);\n } else {\n // Not a match, so rewind\n tokenStates.pop();\n _extends(state, tokenStates.pop());\n break;\n }\n } else {\n // Not a match, so rewind\n _extends(state, tokenStates.pop());\n break;\n }\n } else {\n break;\n }\n }\n return node;\n }\n\n /**\n * percentage or mod\n * @return {Node} node\n * @private\n */\n function parsePercentage(state) {\n var node, name, fn, params;\n node = parseUnary(state);\n var operators = {\n '%': 'mod',\n mod: 'mod'\n };\n while (hasOwnProperty(operators, state.token)) {\n name = state.token;\n fn = operators[name];\n getTokenSkipNewline(state);\n if (name === '%' && state.tokenType === TOKENTYPE.DELIMITER && state.token !== '(') {\n // If the expression contains only %, then treat that as /100\n node = new OperatorNode('/', 'divide', [node, new ConstantNode(100)], false, true);\n } else {\n params = [node, parseUnary(state)];\n node = new OperatorNode(name, fn, params);\n }\n }\n return node;\n }\n\n /**\n * Unary plus and minus, and logical and bitwise not\n * @return {Node} node\n * @private\n */\n function parseUnary(state) {\n var name, params, fn;\n var operators = {\n '-': 'unaryMinus',\n '+': 'unaryPlus',\n '~': 'bitNot',\n not: 'not'\n };\n if (hasOwnProperty(operators, state.token)) {\n fn = operators[state.token];\n name = state.token;\n getTokenSkipNewline(state);\n params = [parseUnary(state)];\n return new OperatorNode(name, fn, params);\n }\n return parsePow(state);\n }\n\n /**\n * power\n * Note: power operator is right associative\n * @return {Node} node\n * @private\n */\n function parsePow(state) {\n var node, name, fn, params;\n node = parseLeftHandOperators(state);\n if (state.token === '^' || state.token === '.^') {\n name = state.token;\n fn = name === '^' ? 'pow' : 'dotPow';\n getTokenSkipNewline(state);\n params = [node, parseUnary(state)]; // Go back to unary, we can have '2^-3'\n node = new OperatorNode(name, fn, params);\n }\n return node;\n }\n\n /**\n * Left hand operators: factorial x!, ctranspose x'\n * @return {Node} node\n * @private\n */\n function parseLeftHandOperators(state) {\n var node, name, fn, params;\n node = parseCustomNodes(state);\n var operators = {\n '!': 'factorial',\n '\\'': 'ctranspose'\n };\n while (hasOwnProperty(operators, state.token)) {\n name = state.token;\n fn = operators[name];\n getToken(state);\n params = [node];\n node = new OperatorNode(name, fn, params);\n node = parseAccessors(state, node);\n }\n return node;\n }\n\n /**\n * Parse a custom node handler. A node handler can be used to process\n * nodes in a custom way, for example for handling a plot.\n *\n * A handler must be passed as second argument of the parse function.\n * - must extend math.Node\n * - must contain a function _compile(defs: Object) : string\n * - must contain a function find(filter: Object) : Node[]\n * - must contain a function toString() : string\n * - the constructor is called with a single argument containing all parameters\n *\n * For example:\n *\n * nodes = {\n * 'plot': PlotHandler\n * }\n *\n * The constructor of the handler is called as:\n *\n * node = new PlotHandler(params)\n *\n * The handler will be invoked when evaluating an expression like:\n *\n * node = math.parse('plot(sin(x), x)', nodes)\n *\n * @return {Node} node\n * @private\n */\n function parseCustomNodes(state) {\n var params = [];\n if (state.tokenType === TOKENTYPE.SYMBOL && hasOwnProperty(state.extraNodes, state.token)) {\n var CustomNode = state.extraNodes[state.token];\n getToken(state);\n\n // parse parameters\n if (state.token === '(') {\n params = [];\n openParams(state);\n getToken(state);\n if (state.token !== ')') {\n params.push(parseAssignment(state));\n\n // parse a list with parameters\n while (state.token === ',') {\n // eslint-disable-line no-unmodified-loop-condition\n getToken(state);\n params.push(parseAssignment(state));\n }\n }\n if (state.token !== ')') {\n throw createSyntaxError(state, 'Parenthesis ) expected');\n }\n closeParams(state);\n getToken(state);\n }\n\n // create a new custom node\n // noinspection JSValidateTypes\n return new CustomNode(params);\n }\n return parseSymbol(state);\n }\n\n /**\n * parse symbols: functions, variables, constants, units\n * @return {Node} node\n * @private\n */\n function parseSymbol(state) {\n var node, name;\n if (state.tokenType === TOKENTYPE.SYMBOL || state.tokenType === TOKENTYPE.DELIMITER && state.token in NAMED_DELIMITERS) {\n name = state.token;\n getToken(state);\n if (hasOwnProperty(CONSTANTS, name)) {\n // true, false, null, ...\n node = new ConstantNode(CONSTANTS[name]);\n } else if (NUMERIC_CONSTANTS.indexOf(name) !== -1) {\n // NaN, Infinity\n node = new ConstantNode(numeric(name, 'number'));\n } else {\n node = new SymbolNode(name);\n }\n\n // parse function parameters and matrix index\n node = parseAccessors(state, node);\n return node;\n }\n return parseString(state);\n }\n\n /**\n * parse accessors:\n * - function invocation in round brackets (...), for example sqrt(2)\n * - index enclosed in square brackets [...], for example A[2,3]\n * - dot notation for properties, like foo.bar\n * @param {Object} state\n * @param {Node} node Node on which to apply the parameters. If there\n * are no parameters in the expression, the node\n * itself is returned\n * @param {string[]} [types] Filter the types of notations\n * can be ['(', '[', '.']\n * @return {Node} node\n * @private\n */\n function parseAccessors(state, node, types) {\n var params;\n while ((state.token === '(' || state.token === '[' || state.token === '.') && (!types || types.indexOf(state.token) !== -1)) {\n // eslint-disable-line no-unmodified-loop-condition\n params = [];\n if (state.token === '(') {\n if (isSymbolNode(node) || isAccessorNode(node)) {\n // function invocation like fn(2, 3) or obj.fn(2, 3)\n openParams(state);\n getToken(state);\n if (state.token !== ')') {\n params.push(parseAssignment(state));\n\n // parse a list with parameters\n while (state.token === ',') {\n // eslint-disable-line no-unmodified-loop-condition\n getToken(state);\n params.push(parseAssignment(state));\n }\n }\n if (state.token !== ')') {\n throw createSyntaxError(state, 'Parenthesis ) expected');\n }\n closeParams(state);\n getToken(state);\n node = new FunctionNode(node, params);\n } else {\n // implicit multiplication like (2+3)(4+5) or sqrt(2)(1+2)\n // don't parse it here but let it be handled by parseImplicitMultiplication\n // with correct precedence\n return node;\n }\n } else if (state.token === '[') {\n // index notation like variable[2, 3]\n openParams(state);\n getToken(state);\n if (state.token !== ']') {\n params.push(parseAssignment(state));\n\n // parse a list with parameters\n while (state.token === ',') {\n // eslint-disable-line no-unmodified-loop-condition\n getToken(state);\n params.push(parseAssignment(state));\n }\n }\n if (state.token !== ']') {\n throw createSyntaxError(state, 'Parenthesis ] expected');\n }\n closeParams(state);\n getToken(state);\n node = new AccessorNode(node, new IndexNode(params));\n } else {\n // dot notation like variable.prop\n getToken(state);\n var isPropertyName = state.tokenType === TOKENTYPE.SYMBOL || state.tokenType === TOKENTYPE.DELIMITER && state.token in NAMED_DELIMITERS;\n if (!isPropertyName) {\n throw createSyntaxError(state, 'Property name expected after dot');\n }\n params.push(new ConstantNode(state.token));\n getToken(state);\n var dotNotation = true;\n node = new AccessorNode(node, new IndexNode(params, dotNotation));\n }\n }\n return node;\n }\n\n /**\n * Parse a single or double quoted string.\n * @return {Node} node\n * @private\n */\n function parseString(state) {\n var node, str;\n if (state.token === '\"' || state.token === \"'\") {\n str = parseStringToken(state, state.token);\n\n // create constant\n node = new ConstantNode(str);\n\n // parse index parameters\n node = parseAccessors(state, node);\n return node;\n }\n return parseMatrix(state);\n }\n\n /**\n * Parse a string surrounded by single or double quotes\n * @param {Object} state\n * @param {\"'\" | \"\\\"\"} quote\n * @return {string}\n */\n function parseStringToken(state, quote) {\n var str = '';\n while (currentCharacter(state) !== '' && currentCharacter(state) !== quote) {\n if (currentCharacter(state) === '\\\\') {\n next(state);\n var char = currentCharacter(state);\n var escapeChar = ESCAPE_CHARACTERS[char];\n if (escapeChar !== undefined) {\n // an escaped control character like \\\" or \\n\n str += escapeChar;\n state.index += 1;\n } else if (char === 'u') {\n // escaped unicode character\n var unicode = state.expression.slice(state.index + 1, state.index + 5);\n if (/^[0-9A-Fa-f]{4}$/.test(unicode)) {\n // test whether the string holds four hexadecimal values\n str += String.fromCharCode(parseInt(unicode, 16));\n state.index += 5;\n } else {\n throw createSyntaxError(state, \"Invalid unicode character \\\\u\".concat(unicode));\n }\n } else {\n throw createSyntaxError(state, \"Bad escape character \\\\\".concat(char));\n }\n } else {\n // any regular character\n str += currentCharacter(state);\n next(state);\n }\n }\n getToken(state);\n if (state.token !== quote) {\n throw createSyntaxError(state, \"End of string \".concat(quote, \" expected\"));\n }\n getToken(state);\n return str;\n }\n\n /**\n * parse the matrix\n * @return {Node} node\n * @private\n */\n function parseMatrix(state) {\n var array, params, rows, cols;\n if (state.token === '[') {\n // matrix [...]\n openParams(state);\n getToken(state);\n if (state.token !== ']') {\n // this is a non-empty matrix\n var row = parseRow(state);\n if (state.token === ';') {\n // 2 dimensional array\n rows = 1;\n params = [row];\n\n // the rows of the matrix are separated by dot-comma's\n while (state.token === ';') {\n // eslint-disable-line no-unmodified-loop-condition\n getToken(state);\n params[rows] = parseRow(state);\n rows++;\n }\n if (state.token !== ']') {\n throw createSyntaxError(state, 'End of matrix ] expected');\n }\n closeParams(state);\n getToken(state);\n\n // check if the number of columns matches in all rows\n cols = params[0].items.length;\n for (var r = 1; r < rows; r++) {\n if (params[r].items.length !== cols) {\n throw createError(state, 'Column dimensions mismatch ' + '(' + params[r].items.length + ' !== ' + cols + ')');\n }\n }\n array = new ArrayNode(params);\n } else {\n // 1 dimensional vector\n if (state.token !== ']') {\n throw createSyntaxError(state, 'End of matrix ] expected');\n }\n closeParams(state);\n getToken(state);\n array = row;\n }\n } else {\n // this is an empty matrix \"[ ]\"\n closeParams(state);\n getToken(state);\n array = new ArrayNode([]);\n }\n return parseAccessors(state, array);\n }\n return parseObject(state);\n }\n\n /**\n * Parse a single comma-separated row from a matrix, like 'a, b, c'\n * @return {ArrayNode} node\n */\n function parseRow(state) {\n var params = [parseAssignment(state)];\n var len = 1;\n while (state.token === ',') {\n // eslint-disable-line no-unmodified-loop-condition\n getToken(state);\n\n // parse expression\n params[len] = parseAssignment(state);\n len++;\n }\n return new ArrayNode(params);\n }\n\n /**\n * parse an object, enclosed in angle brackets{...}, for example {value: 2}\n * @return {Node} node\n * @private\n */\n function parseObject(state) {\n if (state.token === '{') {\n openParams(state);\n var key;\n var properties = {};\n do {\n getToken(state);\n if (state.token !== '}') {\n // parse key\n if (state.token === '\"' || state.token === \"'\") {\n key = parseStringToken(state, state.token);\n } else if (state.tokenType === TOKENTYPE.SYMBOL || state.tokenType === TOKENTYPE.DELIMITER && state.token in NAMED_DELIMITERS) {\n key = state.token;\n getToken(state);\n } else {\n throw createSyntaxError(state, 'Symbol or string expected as object key');\n }\n\n // parse key/value separator\n if (state.token !== ':') {\n throw createSyntaxError(state, 'Colon : expected after object key');\n }\n getToken(state);\n\n // parse key\n properties[key] = parseAssignment(state);\n }\n } while (state.token === ','); // eslint-disable-line no-unmodified-loop-condition\n\n if (state.token !== '}') {\n throw createSyntaxError(state, 'Comma , or bracket } expected after object value');\n }\n closeParams(state);\n getToken(state);\n var node = new ObjectNode(properties);\n\n // parse index parameters\n node = parseAccessors(state, node);\n return node;\n }\n return parseNumber(state);\n }\n\n /**\n * parse a number\n * @return {Node} node\n * @private\n */\n function parseNumber(state) {\n var numberStr;\n if (state.tokenType === TOKENTYPE.NUMBER) {\n // this is a number\n numberStr = state.token;\n getToken(state);\n return new ConstantNode(numeric(numberStr, config.number));\n }\n return parseParentheses(state);\n }\n\n /**\n * parentheses\n * @return {Node} node\n * @private\n */\n function parseParentheses(state) {\n var node;\n\n // check if it is a parenthesized expression\n if (state.token === '(') {\n // parentheses (...)\n openParams(state);\n getToken(state);\n node = parseAssignment(state); // start again\n\n if (state.token !== ')') {\n throw createSyntaxError(state, 'Parenthesis ) expected');\n }\n closeParams(state);\n getToken(state);\n node = new ParenthesisNode(node);\n node = parseAccessors(state, node);\n return node;\n }\n return parseEnd(state);\n }\n\n /**\n * Evaluated when the expression is not yet ended but expected to end\n * @return {Node} res\n * @private\n */\n function parseEnd(state) {\n if (state.token === '') {\n // syntax error or unexpected end of expression\n throw createSyntaxError(state, 'Unexpected end of expression');\n } else {\n throw createSyntaxError(state, 'Value expected');\n }\n }\n\n /**\n * Shortcut for getting the current row value (one based)\n * Returns the line of the currently handled expression\n * @private\n */\n /* TODO: implement keeping track on the row number\n function row () {\n return null\n }\n */\n\n /**\n * Shortcut for getting the current col value (one based)\n * Returns the column (position) where the last state.token starts\n * @private\n */\n function col(state) {\n return state.index - state.token.length + 1;\n }\n\n /**\n * Create an error\n * @param {Object} state\n * @param {string} message\n * @return {SyntaxError} instantiated error\n * @private\n */\n function createSyntaxError(state, message) {\n var c = col(state);\n var error = new SyntaxError(message + ' (char ' + c + ')');\n error.char = c;\n return error;\n }\n\n /**\n * Create an error\n * @param {Object} state\n * @param {string} message\n * @return {Error} instantiated error\n * @private\n */\n function createError(state, message) {\n var c = col(state);\n var error = new SyntaxError(message + ' (char ' + c + ')');\n error.char = c;\n return error;\n }\n\n // Now that we can parse, automatically convert strings to Nodes by parsing\n typed.addConversion({\n from: 'string',\n to: 'Node',\n convert: parse\n });\n return parse;\n});","import { isChain } from '../../utils/is.js';\nimport { format } from '../../utils/string.js';\nimport { hasOwnProperty, lazy } from '../../utils/object.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'Chain';\nvar dependencies = ['?on', 'math', 'typed'];\nexport var createChainClass = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n on,\n math,\n typed\n } = _ref;\n /**\n * @constructor Chain\n * Wrap any value in a chain, allowing to perform chained operations on\n * the value.\n *\n * All methods available in the math.js library can be called upon the chain,\n * and then will be evaluated with the value itself as first argument.\n * The chain can be closed by executing chain.done(), which will return\n * the final value.\n *\n * The Chain has a number of special functions:\n * - done() Finalize the chained operation and return the\n * chain's value.\n * - valueOf() The same as done()\n * - toString() Returns a string representation of the chain's value.\n *\n * @param {*} [value]\n */\n function Chain(value) {\n if (!(this instanceof Chain)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n if (isChain(value)) {\n this.value = value.value;\n } else {\n this.value = value;\n }\n }\n\n /**\n * Attach type information\n */\n Chain.prototype.type = 'Chain';\n Chain.prototype.isChain = true;\n\n /**\n * Close the chain. Returns the final value.\n * Does the same as method valueOf()\n * @returns {*} value\n */\n Chain.prototype.done = function () {\n return this.value;\n };\n\n /**\n * Close the chain. Returns the final value.\n * Does the same as method done()\n * @returns {*} value\n */\n Chain.prototype.valueOf = function () {\n return this.value;\n };\n\n /**\n * Get a string representation of the value in the chain\n * @returns {string}\n */\n Chain.prototype.toString = function () {\n return format(this.value);\n };\n\n /**\n * Get a JSON representation of the chain\n * @returns {Object}\n */\n Chain.prototype.toJSON = function () {\n return {\n mathjs: 'Chain',\n value: this.value\n };\n };\n\n /**\n * Instantiate a Chain from its JSON representation\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"Chain\", value: ...}`,\n * where mathjs is optional\n * @returns {Chain}\n */\n Chain.fromJSON = function (json) {\n return new Chain(json.value);\n };\n\n /**\n * Create a proxy method for the chain\n * @param {string} name\n * @param {Function} fn The function to be proxied\n * If fn is no function, it is silently ignored.\n * @private\n */\n function createProxy(name, fn) {\n if (typeof fn === 'function') {\n Chain.prototype[name] = chainify(fn);\n }\n }\n\n /**\n * Create a proxy method for the chain\n * @param {string} name\n * @param {function} resolver The function resolving with the\n * function to be proxied\n * @private\n */\n function createLazyProxy(name, resolver) {\n lazy(Chain.prototype, name, function outerResolver() {\n var fn = resolver();\n if (typeof fn === 'function') {\n return chainify(fn);\n }\n return undefined; // if not a function, ignore\n });\n }\n\n /**\n * Make a function chainable\n * @param {function} fn\n * @return {Function} chain function\n * @private\n */\n function chainify(fn) {\n return function () {\n // Here, `this` will be the context of a Chain instance\n if (arguments.length === 0) {\n return new Chain(fn(this.value));\n }\n var args = [this.value];\n for (var i = 0; i < arguments.length; i++) {\n args[i + 1] = arguments[i];\n }\n if (typed.isTypedFunction(fn)) {\n var sigObject = typed.resolve(fn, args);\n // We want to detect if a rest parameter has matched across the\n // value in the chain and the current arguments of this call.\n // That is the case if and only if the matching signature has\n // exactly one parameter (which then must be a rest parameter\n // as it is matching at least two actual arguments).\n if (sigObject.params.length === 1) {\n throw new Error('chain function ' + fn.name + ' cannot match rest parameter between chain value and additional arguments.');\n }\n return new Chain(sigObject.implementation.apply(fn, args));\n }\n return new Chain(fn.apply(fn, args));\n };\n }\n\n /**\n * Create a proxy for a single method, or an object with multiple methods.\n * Example usage:\n *\n * Chain.createProxy('add', function add (x, y) {...})\n * Chain.createProxy({\n * add: function add (x, y) {...},\n * subtract: function subtract (x, y) {...}\n * }\n *\n * @param {string | Object} arg0 A name (string), or an object with\n * functions\n * @param {*} [arg1] A function, when arg0 is a name\n */\n Chain.createProxy = function (arg0, arg1) {\n if (typeof arg0 === 'string') {\n // createProxy(name, value)\n createProxy(arg0, arg1);\n } else {\n var _loop = function _loop(_name) {\n if (hasOwnProperty(arg0, _name) && excludedNames[_name] === undefined) {\n createLazyProxy(_name, () => arg0[_name]);\n }\n };\n // createProxy(values)\n for (var _name in arg0) {\n _loop(_name);\n }\n }\n };\n var excludedNames = {\n expression: true,\n docs: true,\n type: true,\n classes: true,\n json: true,\n error: true,\n isChain: true // conflicts with the property isChain of a Chain instance\n };\n\n // create proxy for everything that is in math.js\n Chain.createProxy(math);\n\n // register on the import event, automatically add a proxy for every imported function.\n if (on) {\n on('import', function (name, resolver, path) {\n if (!path) {\n // an imported function (not a data type or something special)\n createLazyProxy(name, resolver);\n }\n });\n }\n return Chain;\n}, {\n isClass: true\n});","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { isNode, isSymbolNode } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nimport { getPrecedence } from '../operators.js';\nvar name = 'RangeNode';\nvar dependencies = ['Node'];\nexport var createRangeNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n Node\n } = _ref;\n /**\n * Calculate the necessary parentheses\n * @param {Node} node\n * @param {string} parenthesis\n * @param {string} implicit\n * @return {Object} parentheses\n * @private\n */\n function calculateNecessaryParentheses(node, parenthesis, implicit) {\n var precedence = getPrecedence(node, parenthesis, implicit);\n var parens = {};\n var startPrecedence = getPrecedence(node.start, parenthesis, implicit);\n parens.start = startPrecedence !== null && startPrecedence <= precedence || parenthesis === 'all';\n if (node.step) {\n var stepPrecedence = getPrecedence(node.step, parenthesis, implicit);\n parens.step = stepPrecedence !== null && stepPrecedence <= precedence || parenthesis === 'all';\n }\n var endPrecedence = getPrecedence(node.end, parenthesis, implicit);\n parens.end = endPrecedence !== null && endPrecedence <= precedence || parenthesis === 'all';\n return parens;\n }\n class RangeNode extends Node {\n /**\n * @constructor RangeNode\n * @extends {Node}\n * create a range\n * @param {Node} start included lower-bound\n * @param {Node} end included upper-bound\n * @param {Node} [step] optional step\n */\n constructor(start, end, step) {\n super();\n // validate inputs\n if (!isNode(start)) throw new TypeError('Node expected');\n if (!isNode(end)) throw new TypeError('Node expected');\n if (step && !isNode(step)) throw new TypeError('Node expected');\n if (arguments.length > 3) throw new Error('Too many arguments');\n this.start = start; // included lower-bound\n this.end = end; // included upper-bound\n this.step = step || null; // optional step\n }\n\n get type() {\n return name;\n }\n get isRangeNode() {\n return true;\n }\n\n /**\n * Check whether the RangeNode needs the `end` symbol to be defined.\n * This end is the size of the Matrix in current dimension.\n * @return {boolean}\n */\n needsEnd() {\n // find all `end` symbols in this RangeNode\n var endSymbols = this.filter(function (node) {\n return isSymbolNode(node) && node.name === 'end';\n });\n return endSymbols.length > 0;\n }\n\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n _compile(math, argNames) {\n var range = math.range;\n var evalStart = this.start._compile(math, argNames);\n var evalEnd = this.end._compile(math, argNames);\n if (this.step) {\n var evalStep = this.step._compile(math, argNames);\n return function evalRangeNode(scope, args, context) {\n return range(evalStart(scope, args, context), evalEnd(scope, args, context), evalStep(scope, args, context));\n };\n } else {\n return function evalRangeNode(scope, args, context) {\n return range(evalStart(scope, args, context), evalEnd(scope, args, context));\n };\n }\n }\n\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n forEach(callback) {\n callback(this.start, 'start', this);\n callback(this.end, 'end', this);\n if (this.step) {\n callback(this.step, 'step', this);\n }\n }\n\n /**\n * Create a new RangeNode whose children are the results of calling\n * the provided callback function for each child of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {RangeNode} Returns a transformed copy of the node\n */\n map(callback) {\n return new RangeNode(this._ifNode(callback(this.start, 'start', this)), this._ifNode(callback(this.end, 'end', this)), this.step && this._ifNode(callback(this.step, 'step', this)));\n }\n\n /**\n * Create a clone of this node, a shallow copy\n * @return {RangeNode}\n */\n clone() {\n return new RangeNode(this.start, this.end, this.step && this.step);\n }\n\n /**\n * Get string representation\n * @param {Object} options\n * @return {string} str\n */\n _toString(options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var parens = calculateNecessaryParentheses(this, parenthesis, options && options.implicit);\n\n // format string as start:step:stop\n var str;\n var start = this.start.toString(options);\n if (parens.start) {\n start = '(' + start + ')';\n }\n str = start;\n if (this.step) {\n var step = this.step.toString(options);\n if (parens.step) {\n step = '(' + step + ')';\n }\n str += ':' + step;\n }\n var end = this.end.toString(options);\n if (parens.end) {\n end = '(' + end + ')';\n }\n str += ':' + end;\n return str;\n }\n\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n toJSON() {\n return {\n mathjs: name,\n start: this.start,\n end: this.end,\n step: this.step\n };\n }\n\n /**\n * Instantiate an RangeNode from its JSON representation\n * @param {Object} json\n * An object structured like\n * `{\"mathjs\": \"RangeNode\", \"start\": ..., \"end\": ..., \"step\": ...}`,\n * where mathjs is optional\n * @returns {RangeNode}\n */\n static fromJSON(json) {\n return new RangeNode(json.start, json.end, json.step);\n }\n\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string} str\n */\n toHTML(options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var parens = calculateNecessaryParentheses(this, parenthesis, options && options.implicit);\n\n // format string as start:step:stop\n var str;\n var start = this.start.toHTML(options);\n if (parens.start) {\n start = '(' + start + ')';\n }\n str = start;\n if (this.step) {\n var step = this.step.toHTML(options);\n if (parens.step) {\n step = '(' + step + ')';\n }\n str += ':' + step;\n }\n var end = this.end.toHTML(options);\n if (parens.end) {\n end = '(' + end + ')';\n }\n str += ':' + end;\n return str;\n }\n\n /**\n * Get LaTeX representation\n * @params {Object} options\n * @return {string} str\n */\n _toTex(options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var parens = calculateNecessaryParentheses(this, parenthesis, options && options.implicit);\n var str = this.start.toTex(options);\n if (parens.start) {\n str = \"\\\\left(\".concat(str, \"\\\\right)\");\n }\n if (this.step) {\n var step = this.step.toTex(options);\n if (parens.step) {\n step = \"\\\\left(\".concat(step, \"\\\\right)\");\n }\n str += ':' + step;\n }\n var end = this.end.toTex(options);\n if (parens.end) {\n end = \"\\\\left(\".concat(end, \"\\\\right)\");\n }\n str += ':' + end;\n return str;\n }\n }\n _defineProperty(RangeNode, \"name\", name);\n return RangeNode;\n}, {\n isClass: true,\n isNode: true\n});","import { factory } from '../../utils/factory.js';\nvar name = 'parser';\nvar dependencies = ['typed', 'Parser'];\nexport var createParser = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n Parser\n } = _ref;\n /**\n * Create a parser. The function creates a new `math.Parser` object.\n *\n * Syntax:\n *\n * math.parser()\n *\n * Examples:\n *\n * const parser = new math.parser()\n *\n * // evaluate expressions\n * const a = parser.evaluate('sqrt(3^2 + 4^2)') // 5\n * const b = parser.evaluate('sqrt(-4)') // 2i\n * const c = parser.evaluate('2 inch in cm') // 5.08 cm\n * const d = parser.evaluate('cos(45 deg)') // 0.7071067811865476\n *\n * // define variables and functions\n * parser.evaluate('x = 7 / 2') // 3.5\n * parser.evaluate('x + 3') // 6.5\n * parser.evaluate('f(x, y) = x^y') // f(x, y)\n * parser.evaluate('f(2, 3)') // 8\n *\n * // get and set variables and functions\n * const x = parser.get('x') // 3.5\n * const f = parser.get('f') // function\n * const g = f(3, 2) // 9\n * parser.set('h', 500)\n * const i = parser.evaluate('h / 2') // 250\n * parser.set('hello', function (name) {\n * return 'hello, ' + name + '!'\n * })\n * parser.evaluate('hello(\"user\")') // \"hello, user!\"\n *\n * // clear defined functions and variables\n * parser.clear()\n *\n * See also:\n *\n * evaluate, compile, parse\n *\n * @return {Parser} Parser\n */\n return typed(name, {\n '': function _() {\n return new Parser();\n }\n });\n});","import { factory } from '../../utils/factory.js';\nimport { getSafeProperty } from '../../utils/customs.js';\nimport { embeddedDocs } from '../embeddedDocs/embeddedDocs.js';\nimport { hasOwnProperty } from '../../utils/object.js';\nvar name = 'help';\nvar dependencies = ['typed', 'mathWithTransform', 'Help'];\nexport var createHelp = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n mathWithTransform,\n Help\n } = _ref;\n /**\n * Retrieve help on a function or data type.\n * Help files are retrieved from the embedded documentation in math.docs.\n *\n * Syntax:\n *\n * math.help(search)\n *\n * Examples:\n *\n * console.log(math.help('sin').toString())\n * console.log(math.help(math.add).toString())\n * console.log(math.help(math.add).toJSON())\n *\n * @param {Function | string | Object} search A function or function name\n * for which to get help\n * @return {Help} A help object\n */\n return typed(name, {\n any: function any(search) {\n var prop;\n var searchName = search;\n if (typeof search !== 'string') {\n for (prop in mathWithTransform) {\n // search in functions and constants\n if (hasOwnProperty(mathWithTransform, prop) && search === mathWithTransform[prop]) {\n searchName = prop;\n break;\n }\n }\n\n /* TODO: implement help for data types\n if (!text) {\n // search data type\n for (prop in math.type) {\n if (hasOwnProperty(math, prop)) {\n if (search === math.type[prop]) {\n text = prop\n break\n }\n }\n }\n }\n */\n }\n\n var doc = getSafeProperty(embeddedDocs, searchName);\n if (!doc) {\n var searchText = typeof searchName === 'function' ? searchName.name : searchName;\n throw new Error('No documentation found on \"' + searchText + '\"');\n }\n return new Help(doc);\n }\n });\n});","// Take as input a year and a number like 202402 and convert it to month name slash year\r\n// Ex: 202402 => fev/2024\r\nexport const formatarCompetencia = (anoMes) => {\r\n const ano = String(anoMes).slice(0, 4)\r\n const mes = String(anoMes).slice(4, 6)\r\n const mesNome = obterMesNome(mes)\r\n return `${mesNome}/${ano}`\r\n}\r\n\r\n// Path: src/%40core/utils/obter-mes-nome.js\r\n// Take as input a number like 2 and convert it to month name\r\n// Ex: 2 => fev\r\nexport const obterMesNome = (mes) => {\r\n const mesNome = [\r\n 'Janeiro',\r\n 'Fevereiro',\r\n 'Março',\r\n 'Abril',\r\n 'Maio',\r\n 'Junho',\r\n 'Julho',\r\n 'Agosto',\r\n 'Setembro',\r\n 'Outubro',\r\n 'Novembro',\r\n 'Dezembro',\r\n ]\r\n return mesNome[mes - 1]\r\n}\r\n","import router from '@/router'\r\n// eslint-disable-next-line object-curly-newline\r\nimport { reactive, getCurrentInstance, watch, toRefs } from '@vue/composition-api'\r\n\r\nexport * from './formatar-competencia'\r\n\r\nexport const isObject = (obj) => typeof obj === 'object' && obj !== null\r\n\r\nexport const isToday = (date) => {\r\n const today = new Date()\r\n return (\r\n /* eslint-disable operator-linebreak */\r\n date.getDate() === today.getDate() && date.getMonth() === today.getMonth() && date.getFullYear() === today.getFullYear()\r\n /* eslint-enable */\r\n )\r\n}\r\n\r\nconst getRandomFromArray = (array) => array[Math.floor(Math.random() * array.length)]\r\n\r\n// ? Light and Dark variant is not included\r\n// prettier-ignore\r\nexport const getRandomBsVariant = () => getRandomFromArray(['primary', 'secondary', 'success', 'warning', 'danger', 'info'])\r\n\r\nexport const isDynamicRouteActive = (route) => {\r\n const { route: resolvedRoute } = router.resolve(route)\r\n return resolvedRoute.path === router.currentRoute.path\r\n}\r\n\r\n// Thanks: https://medium.com/better-programming/reactive-vue-routes-with-the-composition-api-18c1abd878d1\r\nexport const useRouter = () => {\r\n const vm = getCurrentInstance().proxy\r\n const state = reactive({\r\n route: vm.$route,\r\n })\r\n\r\n watch(\r\n () => vm.$route,\r\n (r) => {\r\n state.route = r\r\n },\r\n )\r\n\r\n return { ...toRefs(state), router: vm.$router }\r\n}\r\n\r\n/**\r\n * This is just enhancement over Object.extend [Gives deep extend]\r\n * @param {target} a Object which contains values to be overridden\r\n * @param {source} b Object which contains values to override\r\n */\r\n// export const objectExtend = (a, b) => {\r\n// // Don't touch 'null' or 'undefined' objects.\r\n// if (a == null || b == null) {\r\n// return a\r\n// }\r\n\r\n// Object.keys(b).forEach(key => {\r\n// if (Object.prototype.toString.call(b[key]) === '[object Object]') {\r\n// if (Object.prototype.toString.call(a[key]) !== '[object Object]') {\r\n// // eslint-disable-next-line no-param-reassign\r\n// a[key] = b[key]\r\n// } else {\r\n// // eslint-disable-next-line no-param-reassign\r\n// a[key] = objectExtend(a[key], b[key])\r\n// }\r\n// } else {\r\n// // eslint-disable-next-line no-param-reassign\r\n// a[key] = b[key]\r\n// }\r\n// })\r\n\r\n// return a\r\n// }\r\n","import _extends from \"@babel/runtime/helpers/extends\";\n/**\n * THIS FILE IS AUTO-GENERATED\n * DON'T MAKE CHANGES HERE\n */\nimport { config } from './configReadonly.js';\nimport { createNode, createObjectNode, createOperatorNode, createParenthesisNode, createRelationalNode, createArrayNode, createBlockNode, createConditionalNode, createConstantNode, createRangeNode, createReviver, createChainClass, createFunctionAssignmentNode, createChain, createIndexNode, createAccessorNode, createAssignmentNode, createSymbolNode, createFunctionNode, createParse, createResolve, createSimplifyConstant, createCompile, createHelpClass, createLeafCount, createSimplifyCore, createEvaluate, createHelp, createParserClass, createSimplify, createSymbolicEqual, createParser, createRationalize, createDerivative, createFilterTransform, createForEachTransform, createMapTransform, createApplyTransform, createConcatTransform, createMaxTransform, createPrintTransform, createDiffTransform, createMinTransform, createSubsetTransform, createCumSumTransform, createIndexTransform, createSumTransform, createRangeTransform, createRowTransform, createColumnTransform, createMeanTransform, createQuantileSeqTransform, createVarianceTransform, createStdTransform } from '../factoriesAny.js';\nimport { BigNumber, Complex, e, _false, fineStructure, Fraction, i, _Infinity, LN10, LOG10E, Matrix, _NaN, _null, phi, Range, ResultSet, SQRT1_2,\n// eslint-disable-line camelcase\nsackurTetrode, tau, _true, version, DenseMatrix, efimovFactor, LN2, pi, replacer, SQRT2, typed, unaryPlus, weakMixingAngle, abs, acos, acot, acsc, addScalar, arg, asech, asinh, atan, atanh, bignumber, bitNot, boolean, clone, combinations, complex, conj, cos, cot, csc, cube, equalScalar, erf, exp, expm1, filter, forEach, format, getMatrixDataType, hex, im, isInteger, isNegative, isPositive, isZero, LOG2E, lgamma, log10, log2, map, multiplyScalar, not, number, oct, pickRandom, print, random, re, sec, sign, sin, SparseMatrix, splitUnit, square, string, subtractScalar, tan, typeOf, acosh, acsch, apply, asec, bin, combinationsWithRep, cosh, csch, isNaN, isPrime, randomInt, sech, sinh, sparse, sqrt, tanh, unaryMinus, acoth, coth, fraction, isNumeric, matrix, matrixFromFunction, mode, numeric, prod, reshape, size, squeeze, transpose, xgcd, zeros, asin, cbrt, concat, count, ctranspose, diag, divideScalar, dotDivide, equal, flatten, hasNumericValue, identity, kron, largerEq, leftShift, lsolve, matrixFromColumns, nthRoot, ones, qr, resize, rightArithShift, round, smaller, subtract, to, unequal, usolve, xor, add, atan2, bitAnd, bitXor, catalan, compare, compareText, cumsum, deepEqual, diff, distance, dot, equalText, floor, gcd, hypot, ImmutableDenseMatrix, Index, larger, log, lsolveAll, matrixFromRows, min, mod, multiply, nthRoots, or, partitionSelect, rightLogShift, slu, subset, sum, trace, usolveAll, zpk2tf, bitOr, ceil, compareNatural, composition, cross, det, dotMultiply, FibonacciHeap, fix, index, intersect, invmod, lcm, log1p, max, setCartesian, setDistinct, setIsSubset, setPowerset, smallerEq, sort, and, range, row, setDifference, setMultiplicity, setSymDifference, Spa, column, inv, lup, pinv, pow, setIntersect, setUnion, sqrtm, Unit, vacuumImpedance, wienDisplacement, atomicMass, bohrMagneton, boltzmann, conductanceQuantum, coulomb, deuteronMass, dotPow, electricConstant, elementaryCharge, expm, faraday, fft, gamma, gravitationConstant, hartreeEnergy, ifft, klitzing, loschmidt, magneticConstant, molarMass, molarPlanckConstant, neutronMass, nuclearMagneton, planckCharge, planckLength, planckTemperature, protonMass, quantumOfCirculation, reducedPlanckConstant, rydberg, secondRadiation, speedOfLight, stefanBoltzmann, thomsonCrossSection, avogadro, bohrRadius, createUnit, divide, electronMass, factorial, firstRadiation, gravity, inverseConductanceQuantum, lusolve, magneticFluxQuantum, molarMassC12, multinomial, permutations, planckMass, polynomialRoot, setSize, solveODE, stirlingS2, unit, bellNumbers, eigs, fermiCoupling, gasConstant, mean, molarVolume, planckConstant, quantileSeq, variance, classicalElectronRadius, median, corr, freqz, mad, std, zeta, norm, rotationMatrix, kldivergence, planckTime, schur, rotate, sylvester, lyap } from './pureFunctionsAny.generated.js';\nvar math = {}; // NOT pure!\nvar mathWithTransform = {}; // NOT pure!\nvar classes = {}; // NOT pure!\n\nexport var Node = createNode({\n mathWithTransform\n});\nexport var ObjectNode = createObjectNode({\n Node\n});\nexport var OperatorNode = createOperatorNode({\n Node\n});\nexport var ParenthesisNode = createParenthesisNode({\n Node\n});\nexport var RelationalNode = createRelationalNode({\n Node\n});\nexport var ArrayNode = createArrayNode({\n Node\n});\nexport var BlockNode = createBlockNode({\n Node,\n ResultSet\n});\nexport var ConditionalNode = createConditionalNode({\n Node\n});\nexport var ConstantNode = createConstantNode({\n Node\n});\nexport var RangeNode = createRangeNode({\n Node\n});\nexport var reviver = createReviver({\n classes\n});\nexport var Chain = createChainClass({\n math,\n typed\n});\nexport var FunctionAssignmentNode = createFunctionAssignmentNode({\n Node,\n typed\n});\nexport var chain = createChain({\n Chain,\n typed\n});\nexport var IndexNode = createIndexNode({\n Node,\n size\n});\nexport var AccessorNode = createAccessorNode({\n Node,\n subset\n});\nexport var AssignmentNode = createAssignmentNode({\n matrix,\n Node,\n subset\n});\nexport var SymbolNode = createSymbolNode({\n Unit,\n Node,\n math\n});\nexport var FunctionNode = createFunctionNode({\n Node,\n SymbolNode,\n math\n});\nexport var parse = createParse({\n AccessorNode,\n ArrayNode,\n AssignmentNode,\n BlockNode,\n ConditionalNode,\n ConstantNode,\n FunctionAssignmentNode,\n FunctionNode,\n IndexNode,\n ObjectNode,\n OperatorNode,\n ParenthesisNode,\n RangeNode,\n RelationalNode,\n SymbolNode,\n config,\n numeric,\n typed\n});\nexport var resolve = createResolve({\n ConstantNode,\n FunctionNode,\n OperatorNode,\n ParenthesisNode,\n parse,\n typed\n});\nexport var simplifyConstant = createSimplifyConstant({\n bignumber,\n fraction,\n AccessorNode,\n ArrayNode,\n ConstantNode,\n FunctionNode,\n IndexNode,\n ObjectNode,\n OperatorNode,\n SymbolNode,\n config,\n mathWithTransform,\n matrix,\n typed\n});\nexport var compile = createCompile({\n parse,\n typed\n});\nexport var Help = createHelpClass({\n parse\n});\nexport var leafCount = createLeafCount({\n parse,\n typed\n});\nexport var simplifyCore = createSimplifyCore({\n AccessorNode,\n ArrayNode,\n ConstantNode,\n FunctionNode,\n IndexNode,\n ObjectNode,\n OperatorNode,\n ParenthesisNode,\n SymbolNode,\n add,\n divide,\n equal,\n isZero,\n multiply,\n parse,\n pow,\n subtract,\n typed\n});\nexport var evaluate = createEvaluate({\n parse,\n typed\n});\nexport var help = createHelp({\n Help,\n mathWithTransform,\n typed\n});\nexport var Parser = createParserClass({\n evaluate\n});\nexport var simplify = createSimplify({\n bignumber,\n fraction,\n AccessorNode,\n ArrayNode,\n ConstantNode,\n FunctionNode,\n IndexNode,\n ObjectNode,\n OperatorNode,\n ParenthesisNode,\n SymbolNode,\n add,\n config,\n divide,\n equal,\n isZero,\n mathWithTransform,\n matrix,\n multiply,\n parse,\n pow,\n resolve,\n simplifyConstant,\n simplifyCore,\n subtract,\n typed\n});\nexport var symbolicEqual = createSymbolicEqual({\n OperatorNode,\n parse,\n simplify,\n typed\n});\nexport var parser = createParser({\n Parser,\n typed\n});\nexport var rationalize = createRationalize({\n bignumber,\n fraction,\n AccessorNode,\n ArrayNode,\n ConstantNode,\n FunctionNode,\n IndexNode,\n ObjectNode,\n OperatorNode,\n ParenthesisNode,\n SymbolNode,\n add,\n config,\n divide,\n equal,\n isZero,\n mathWithTransform,\n matrix,\n multiply,\n parse,\n pow,\n simplify,\n simplifyConstant,\n simplifyCore,\n subtract,\n typed\n});\nexport var derivative = createDerivative({\n ConstantNode,\n FunctionNode,\n OperatorNode,\n ParenthesisNode,\n SymbolNode,\n config,\n equal,\n isZero,\n numeric,\n parse,\n simplify,\n typed\n});\n_extends(math, {\n e,\n false: _false,\n fineStructure,\n i,\n Infinity: _Infinity,\n LN10,\n LOG10E,\n NaN: _NaN,\n null: _null,\n phi,\n SQRT1_2,\n sackurTetrode,\n tau,\n true: _true,\n 'E': e,\n version,\n efimovFactor,\n LN2,\n pi,\n replacer,\n reviver,\n SQRT2,\n typed,\n unaryPlus,\n 'PI': pi,\n weakMixingAngle,\n abs,\n acos,\n acot,\n acsc,\n addScalar,\n arg,\n asech,\n asinh,\n atan,\n atanh,\n bignumber,\n bitNot,\n boolean,\n clone,\n combinations,\n complex,\n conj,\n cos,\n cot,\n csc,\n cube,\n equalScalar,\n erf,\n exp,\n expm1,\n filter,\n forEach,\n format,\n getMatrixDataType,\n hex,\n im,\n isInteger,\n isNegative,\n isPositive,\n isZero,\n LOG2E,\n lgamma,\n log10,\n log2,\n map,\n multiplyScalar,\n not,\n number,\n oct,\n pickRandom,\n print,\n random,\n re,\n sec,\n sign,\n sin,\n splitUnit,\n square,\n string,\n subtractScalar,\n tan,\n typeOf,\n acosh,\n acsch,\n apply,\n asec,\n bin,\n chain,\n combinationsWithRep,\n cosh,\n csch,\n isNaN,\n isPrime,\n randomInt,\n sech,\n sinh,\n sparse,\n sqrt,\n tanh,\n unaryMinus,\n acoth,\n coth,\n fraction,\n isNumeric,\n matrix,\n matrixFromFunction,\n mode,\n numeric,\n prod,\n reshape,\n size,\n squeeze,\n transpose,\n xgcd,\n zeros,\n asin,\n cbrt,\n concat,\n count,\n ctranspose,\n diag,\n divideScalar,\n dotDivide,\n equal,\n flatten,\n hasNumericValue,\n identity,\n kron,\n largerEq,\n leftShift,\n lsolve,\n matrixFromColumns,\n nthRoot,\n ones,\n qr,\n resize,\n rightArithShift,\n round,\n smaller,\n subtract,\n to,\n unequal,\n usolve,\n xor,\n add,\n atan2,\n bitAnd,\n bitXor,\n catalan,\n compare,\n compareText,\n cumsum,\n deepEqual,\n diff,\n distance,\n dot,\n equalText,\n floor,\n gcd,\n hypot,\n larger,\n log,\n lsolveAll,\n matrixFromRows,\n min,\n mod,\n multiply,\n nthRoots,\n or,\n partitionSelect,\n rightLogShift,\n slu,\n subset,\n sum,\n trace,\n usolveAll,\n zpk2tf,\n bitOr,\n ceil,\n compareNatural,\n composition,\n cross,\n det,\n dotMultiply,\n fix,\n index,\n intersect,\n invmod,\n lcm,\n log1p,\n max,\n setCartesian,\n setDistinct,\n setIsSubset,\n setPowerset,\n smallerEq,\n sort,\n and,\n range,\n row,\n setDifference,\n setMultiplicity,\n setSymDifference,\n column,\n inv,\n lup,\n pinv,\n pow,\n setIntersect,\n setUnion,\n sqrtm,\n vacuumImpedance,\n wienDisplacement,\n atomicMass,\n bohrMagneton,\n boltzmann,\n conductanceQuantum,\n coulomb,\n deuteronMass,\n dotPow,\n electricConstant,\n elementaryCharge,\n expm,\n faraday,\n fft,\n gamma,\n gravitationConstant,\n hartreeEnergy,\n ifft,\n klitzing,\n loschmidt,\n magneticConstant,\n molarMass,\n molarPlanckConstant,\n neutronMass,\n nuclearMagneton,\n planckCharge,\n planckLength,\n planckTemperature,\n protonMass,\n quantumOfCirculation,\n reducedPlanckConstant,\n rydberg,\n secondRadiation,\n speedOfLight,\n stefanBoltzmann,\n thomsonCrossSection,\n avogadro,\n bohrRadius,\n createUnit,\n divide,\n electronMass,\n factorial,\n firstRadiation,\n gravity,\n inverseConductanceQuantum,\n lusolve,\n magneticFluxQuantum,\n molarMassC12,\n multinomial,\n parse,\n permutations,\n planckMass,\n polynomialRoot,\n resolve,\n setSize,\n simplifyConstant,\n solveODE,\n stirlingS2,\n unit,\n bellNumbers,\n compile,\n eigs,\n fermiCoupling,\n gasConstant,\n leafCount,\n mean,\n molarVolume,\n planckConstant,\n quantileSeq,\n simplifyCore,\n variance,\n classicalElectronRadius,\n evaluate,\n help,\n median,\n simplify,\n symbolicEqual,\n corr,\n freqz,\n mad,\n parser,\n rationalize,\n std,\n zeta,\n derivative,\n norm,\n rotationMatrix,\n kldivergence,\n planckTime,\n schur,\n rotate,\n sylvester,\n lyap,\n config\n});\n_extends(mathWithTransform, math, {\n filter: createFilterTransform({\n typed\n }),\n forEach: createForEachTransform({\n typed\n }),\n map: createMapTransform({\n typed\n }),\n apply: createApplyTransform({\n isInteger,\n typed\n }),\n concat: createConcatTransform({\n isInteger,\n matrix,\n typed\n }),\n max: createMaxTransform({\n config,\n larger,\n numeric,\n typed\n }),\n print: createPrintTransform({\n add,\n matrix,\n typed,\n zeros\n }),\n diff: createDiffTransform({\n bignumber,\n matrix,\n number,\n subtract,\n typed\n }),\n min: createMinTransform({\n config,\n numeric,\n smaller,\n typed\n }),\n subset: createSubsetTransform({\n add,\n matrix,\n typed,\n zeros\n }),\n cumsum: createCumSumTransform({\n add,\n typed,\n unaryPlus\n }),\n index: createIndexTransform({\n Index,\n getMatrixDataType\n }),\n sum: createSumTransform({\n add,\n config,\n numeric,\n typed\n }),\n range: createRangeTransform({\n bignumber,\n matrix,\n add,\n config,\n isPositive,\n larger,\n largerEq,\n smaller,\n smallerEq,\n typed\n }),\n row: createRowTransform({\n Index,\n matrix,\n range,\n typed\n }),\n column: createColumnTransform({\n Index,\n matrix,\n range,\n typed\n }),\n mean: createMeanTransform({\n add,\n divide,\n typed\n }),\n quantileSeq: createQuantileSeqTransform({\n add,\n bignumber,\n compare,\n divide,\n isInteger,\n larger,\n multiply,\n partitionSelect,\n smaller,\n smallerEq,\n subtract,\n typed\n }),\n variance: createVarianceTransform({\n add,\n apply,\n divide,\n isNaN,\n multiply,\n subtract,\n typed\n }),\n std: createStdTransform({\n map,\n sqrt,\n typed,\n variance\n })\n});\n_extends(classes, {\n BigNumber,\n Complex,\n Fraction,\n Matrix,\n Node,\n ObjectNode,\n OperatorNode,\n ParenthesisNode,\n Range,\n RelationalNode,\n ResultSet,\n ArrayNode,\n BlockNode,\n ConditionalNode,\n ConstantNode,\n DenseMatrix,\n RangeNode,\n Chain,\n FunctionAssignmentNode,\n SparseMatrix,\n IndexNode,\n ImmutableDenseMatrix,\n Index,\n AccessorNode,\n AssignmentNode,\n FibonacciHeap,\n Spa,\n Unit,\n SymbolNode,\n FunctionNode,\n Help,\n Parser\n});\nChain.createProxy(math);\nexport { embeddedDocs as docs } from '../expression/embeddedDocs/embeddedDocs.js';","import { factory } from '../../utils/factory.js';\nimport { errorTransform } from './utils/errorTransform.js';\nimport { createMin } from '../../function/statistics/min.js';\nimport { lastDimToZeroBase } from './utils/lastDimToZeroBase.js';\nvar name = 'min';\nvar dependencies = ['typed', 'config', 'numeric', 'smaller'];\nexport var createMinTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n numeric,\n smaller\n } = _ref;\n var min = createMin({\n typed,\n config,\n numeric,\n smaller\n });\n\n /**\n * Attach a transform function to math.min\n * Adds a property transform containing the transform function.\n *\n * This transform changed the last `dim` parameter of function min\n * from one-based to zero based\n */\n return typed('min', {\n '...any': function any(args) {\n args = lastDimToZeroBase(args);\n try {\n return min.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});","import { isSymbolNode } from '../../../utils/is.js';\nimport { createSubScope } from '../../../utils/scope.js';\n\n/**\n * Compile an inline expression like \"x > 0\"\n * @param {Node} expression\n * @param {Object} math\n * @param {Object} scope\n * @return {function} Returns a function with one argument which fills in the\n * undefined variable (like \"x\") and evaluates the expression\n */\nexport function compileInlineExpression(expression, math, scope) {\n // find an undefined symbol\n var symbol = expression.filter(function (node) {\n return isSymbolNode(node) && !(node.name in math) && !scope.has(node.name);\n })[0];\n if (!symbol) {\n throw new Error('No undefined variable found in inline expression \"' + expression + '\"');\n }\n\n // create a test function for this equation\n var name = symbol.name; // variable name\n var subScope = createSubScope(scope);\n var eq = expression.compile();\n return function inlineExpression(x) {\n subScope.set(name, x);\n return eq.evaluate(subScope);\n };\n}","import { createPrint } from '../../function/string/print.js';\nimport { factory } from '../../utils/factory.js';\nimport { printTemplate } from '../../utils/print.js';\nvar name = 'print';\nvar dependencies = ['typed', 'matrix', 'zeros', 'add'];\nexport var createPrintTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n matrix,\n zeros,\n add\n } = _ref;\n var print = createPrint({\n typed,\n matrix,\n zeros,\n add\n });\n return typed(name, {\n 'string, Object | Array': function stringObjectArray(template, values) {\n return print(_convertTemplateToZeroBasedIndex(template), values);\n },\n 'string, Object | Array, number | Object': function stringObjectArrayNumberObject(template, values, options) {\n return print(_convertTemplateToZeroBasedIndex(template), values, options);\n }\n });\n function _convertTemplateToZeroBasedIndex(template) {\n return template.replace(printTemplate, x => {\n var parts = x.slice(1).split('.');\n var result = parts.map(function (part) {\n if (!isNaN(part) && part.length > 0) {\n return parseInt(part) - 1;\n } else {\n return part;\n }\n });\n return '$' + result.join('.');\n });\n }\n}, {\n isTransformFunction: true\n});","import { factory } from '../../utils/factory.js';\nimport { errorTransform } from './utils/errorTransform.js';\nimport { createSum } from '../../function/statistics/sum.js';\nimport { lastDimToZeroBase } from './utils/lastDimToZeroBase.js';\n\n/**\n * Attach a transform function to math.sum\n * Adds a property transform containing the transform function.\n *\n * This transform changed the last `dim` parameter of function sum\n * from one-based to zero based\n */\nvar name = 'sum';\nvar dependencies = ['typed', 'config', 'add', 'numeric'];\nexport var createSumTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n config,\n add,\n numeric\n } = _ref;\n var sum = createSum({\n typed,\n config,\n add,\n numeric\n });\n return typed(name, {\n '...any': function any(args) {\n args = lastDimToZeroBase(args);\n try {\n return sum.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { getPrecedence } from '../operators.js';\nimport { escape } from '../../utils/string.js';\nimport { getSafeProperty } from '../../utils/customs.js';\nimport { latexOperators } from '../../utils/latex.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'RelationalNode';\nvar dependencies = ['Node'];\nexport var createRelationalNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n Node\n } = _ref;\n var operatorMap = {\n equal: '==',\n unequal: '!=',\n smaller: '<',\n larger: '>',\n smallerEq: '<=',\n largerEq: '>='\n };\n class RelationalNode extends Node {\n /**\n * A node representing a chained conditional expression, such as 'x > y > z'\n *\n * @param {String[]} conditionals\n * An array of conditional operators used to compare the parameters\n * @param {Node[]} params\n * The parameters that will be compared\n *\n * @constructor RelationalNode\n * @extends {Node}\n */\n constructor(conditionals, params) {\n super();\n if (!Array.isArray(conditionals)) {\n throw new TypeError('Parameter conditionals must be an array');\n }\n if (!Array.isArray(params)) {\n throw new TypeError('Parameter params must be an array');\n }\n if (conditionals.length !== params.length - 1) {\n throw new TypeError('Parameter params must contain exactly one more element ' + 'than parameter conditionals');\n }\n this.conditionals = conditionals;\n this.params = params;\n }\n get type() {\n return name;\n }\n get isRelationalNode() {\n return true;\n }\n\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n _compile(math, argNames) {\n var self = this;\n var compiled = this.params.map(p => p._compile(math, argNames));\n return function evalRelationalNode(scope, args, context) {\n var evalLhs;\n var evalRhs = compiled[0](scope, args, context);\n for (var i = 0; i < self.conditionals.length; i++) {\n evalLhs = evalRhs;\n evalRhs = compiled[i + 1](scope, args, context);\n var condFn = getSafeProperty(math, self.conditionals[i]);\n if (!condFn(evalLhs, evalRhs)) {\n return false;\n }\n }\n return true;\n };\n }\n\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n forEach(callback) {\n this.params.forEach((n, i) => callback(n, 'params[' + i + ']', this), this);\n }\n\n /**\n * Create a new RelationalNode whose children are the results of calling\n * the provided callback function for each child of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {RelationalNode} Returns a transformed copy of the node\n */\n map(callback) {\n return new RelationalNode(this.conditionals.slice(), this.params.map((n, i) => this._ifNode(callback(n, 'params[' + i + ']', this)), this));\n }\n\n /**\n * Create a clone of this node, a shallow copy\n * @return {RelationalNode}\n */\n clone() {\n return new RelationalNode(this.conditionals, this.params);\n }\n\n /**\n * Get string representation.\n * @param {Object} options\n * @return {string} str\n */\n _toString(options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var precedence = getPrecedence(this, parenthesis, options && options.implicit);\n var paramStrings = this.params.map(function (p, index) {\n var paramPrecedence = getPrecedence(p, parenthesis, options && options.implicit);\n return parenthesis === 'all' || paramPrecedence !== null && paramPrecedence <= precedence ? '(' + p.toString(options) + ')' : p.toString(options);\n });\n var ret = paramStrings[0];\n for (var i = 0; i < this.conditionals.length; i++) {\n ret += ' ' + operatorMap[this.conditionals[i]];\n ret += ' ' + paramStrings[i + 1];\n }\n return ret;\n }\n\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n toJSON() {\n return {\n mathjs: name,\n conditionals: this.conditionals,\n params: this.params\n };\n }\n\n /**\n * Instantiate a RelationalNode from its JSON representation\n * @param {Object} json\n * An object structured like\n * `{\"mathjs\": \"RelationalNode\", \"conditionals\": ..., \"params\": ...}`,\n * where mathjs is optional\n * @returns {RelationalNode}\n */\n static fromJSON(json) {\n return new RelationalNode(json.conditionals, json.params);\n }\n\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string} str\n */\n toHTML(options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var precedence = getPrecedence(this, parenthesis, options && options.implicit);\n var paramStrings = this.params.map(function (p, index) {\n var paramPrecedence = getPrecedence(p, parenthesis, options && options.implicit);\n return parenthesis === 'all' || paramPrecedence !== null && paramPrecedence <= precedence ? '(' + p.toHTML(options) + ')' : p.toHTML(options);\n });\n var ret = paramStrings[0];\n for (var i = 0; i < this.conditionals.length; i++) {\n ret += '' + escape(operatorMap[this.conditionals[i]]) + '' + paramStrings[i + 1];\n }\n return ret;\n }\n\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string} str\n */\n _toTex(options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var precedence = getPrecedence(this, parenthesis, options && options.implicit);\n var paramStrings = this.params.map(function (p, index) {\n var paramPrecedence = getPrecedence(p, parenthesis, options && options.implicit);\n return parenthesis === 'all' || paramPrecedence !== null && paramPrecedence <= precedence ? '\\\\left(' + p.toTex(options) + '\\right)' : p.toTex(options);\n });\n var ret = paramStrings[0];\n for (var i = 0; i < this.conditionals.length; i++) {\n ret += latexOperators[this.conditionals[i]] + paramStrings[i + 1];\n }\n return ret;\n }\n }\n _defineProperty(RelationalNode, \"name\", name);\n return RelationalNode;\n}, {\n isClass: true,\n isNode: true\n});","var Ripple = {\n bind: function(el, binding){\n\n // Default values.\n var props = {\n event: 'mousedown',\n transition: 600\n };\n\n setProps(Object.keys(binding.modifiers),props);\n\n el.addEventListener(props.event, function(event) {\n rippler(event, el, binding.value);\n });\n\n var bg = binding.value || Ripple.color || 'rgba(0, 0, 0, 0.35)';\n var zIndex = Ripple.zIndex || '9999';\n\n function rippler(event, el) {\n var target = el;\n // Get border to avoid offsetting on ripple container position\n var targetBorder = parseInt((getComputedStyle(target).borderWidth).replace('px', ''));\n\n // Get necessary variables\n var rect = target.getBoundingClientRect(),\n left = rect.left,\n top = rect.top,\n width = target.offsetWidth,\n height = target.offsetHeight,\n dx = event.clientX - left,\n dy = event.clientY - top,\n maxX = Math.max(dx, width - dx),\n maxY = Math.max(dy, height - dy),\n style = window.getComputedStyle(target),\n radius = Math.sqrt((maxX * maxX) + (maxY * maxY)),\n border = (targetBorder > 0 ) ? targetBorder : 0;\n\n // Create the ripple and its container\n var ripple = document.createElement(\"div\"),\n rippleContainer = document.createElement(\"div\");\n rippleContainer.className = 'ripple-container';\n ripple.className = 'ripple';\n\n //Styles for ripple\n ripple.style.marginTop= '0px';\n ripple.style.marginLeft= '0px';\n ripple.style.width= '1px';\n ripple.style.height= '1px';\n ripple.style.transition= 'all ' + props.transition + 'ms cubic-bezier(0.4, 0, 0.2, 1)';\n ripple.style.borderRadius= '50%';\n ripple.style.pointerEvents= 'none';\n ripple.style.position= 'relative';\n ripple.style.zIndex= zIndex;\n ripple.style.backgroundColor = bg;\n\n //Styles for rippleContainer\n rippleContainer.style.position= 'absolute';\n rippleContainer.style.left = 0 - border + 'px';\n rippleContainer.style.top = 0 - border + 'px';\n rippleContainer.style.height = '0';\n rippleContainer.style.width = '0';\n rippleContainer.style.pointerEvents = 'none';\n rippleContainer.style.overflow = 'hidden';\n\n // Store target position to change it after\n var storedTargetPosition = ((target.style.position).length > 0) ? target.style.position : getComputedStyle(target).position;\n // Change target position to relative to guarantee ripples correct positioning\n if (storedTargetPosition !== 'relative') {\n target.style.position = 'relative';\n }\n\n rippleContainer.appendChild(ripple);\n target.appendChild(rippleContainer);\n\n ripple.style.marginLeft = dx + \"px\";\n ripple.style.marginTop = dy + \"px\";\n\n // No need to set positioning because ripple should be child of target and to it's relative position.\n // rippleContainer.style.left = left + (((window.pageXOffset || document.scrollLeft) - (document.clientLeft || 0)) || 0) + \"px\";\n // rippleContainer.style.top = top + (((window.pageYOffset || document.scrollTop) - (document.clientTop || 0)) || 0) + \"px\";\n rippleContainer.style.width = width + \"px\";\n rippleContainer.style.height = height + \"px\";\n rippleContainer.style.borderTopLeftRadius = style.borderTopLeftRadius;\n rippleContainer.style.borderTopRightRadius = style.borderTopRightRadius;\n rippleContainer.style.borderBottomLeftRadius = style.borderBottomLeftRadius;\n rippleContainer.style.borderBottomRightRadius = style.borderBottomRightRadius;\n\n rippleContainer.style.direction = 'ltr';\n\n setTimeout(function() {\n ripple.style.width = radius * 2 + \"px\";\n ripple.style.height = radius * 2 + \"px\";\n ripple.style.marginLeft = dx - radius + \"px\";\n ripple.style.marginTop = dy - radius + \"px\";\n }, 0);\n\n function clearRipple() {\n setTimeout(function() {\n ripple.style.backgroundColor = \"rgba(0, 0, 0, 0)\";\n }, 250);\n\n // Timeout set to get a smooth removal of the ripple\n setTimeout(function() {\n rippleContainer.parentNode.removeChild(rippleContainer);\n }, 850);\n\n el.removeEventListener('mouseup', clearRipple, false);\n\n // After removing event set position to target to it's original one\n // Timeout it's needed to avoid jerky effect of ripple jumping out parent target\n setTimeout(function () {\n\n var clearPosition = true;\n for(var i = 0; i < target.childNodes.length; i++) {\n if(target.childNodes[i].className === 'ripple-container') {\n clearPosition = false;\n }\n }\n\n if(clearPosition) {\n if(storedTargetPosition !== 'static') {\n target.style.position = storedTargetPosition;\n } else {\n target.style.position = '';\n }\n }\n\n }, props.transition + 250)\n }\n\n if(event.type === 'mousedown') {\n el.addEventListener('mouseup', clearRipple, false);\n } else {\n clearRipple();\n }\n }\n }\n};\n\nfunction setProps(modifiers,props) {\n modifiers.forEach(function(item) {\n if(isNaN(Number(item)))\n props.event = item;\n else\n props.transition = item;\n });\n}\n\nexport default Ripple;","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./adm.vue?vue&type=style&index=0&id=8a7fa95c&prod&lang=scss&scoped=true\"","import { factory } from '../utils/factory.js';\nvar name = 'reviver';\nvar dependencies = ['classes'];\nexport var createReviver = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n classes\n } = _ref;\n /**\n * Instantiate mathjs data types from their JSON representation\n * @param {string} key\n * @param {*} value\n * @returns {*} Returns the revived object\n */\n return function reviver(key, value) {\n var constructor = classes[value && value.mathjs];\n if (constructor && typeof constructor.fromJSON === 'function') {\n return constructor.fromJSON(value);\n }\n return value;\n };\n});","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { isArrayNode, isNode } from '../../utils/is.js';\nimport { map } from '../../utils/array.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'ArrayNode';\nvar dependencies = ['Node'];\nexport var createArrayNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n Node\n } = _ref;\n class ArrayNode extends Node {\n /**\n * @constructor ArrayNode\n * @extends {Node}\n * Holds an 1-dimensional array with items\n * @param {Node[]} [items] 1 dimensional array with items\n */\n constructor(items) {\n super();\n this.items = items || [];\n\n // validate input\n if (!Array.isArray(this.items) || !this.items.every(isNode)) {\n throw new TypeError('Array containing Nodes expected');\n }\n }\n get type() {\n return name;\n }\n get isArrayNode() {\n return true;\n }\n\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n _compile(math, argNames) {\n var evalItems = map(this.items, function (item) {\n return item._compile(math, argNames);\n });\n var asMatrix = math.config.matrix !== 'Array';\n if (asMatrix) {\n var matrix = math.matrix;\n return function evalArrayNode(scope, args, context) {\n return matrix(map(evalItems, function (evalItem) {\n return evalItem(scope, args, context);\n }));\n };\n } else {\n return function evalArrayNode(scope, args, context) {\n return map(evalItems, function (evalItem) {\n return evalItem(scope, args, context);\n });\n };\n }\n }\n\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n forEach(callback) {\n for (var i = 0; i < this.items.length; i++) {\n var node = this.items[i];\n callback(node, 'items[' + i + ']', this);\n }\n }\n\n /**\n * Create a new ArrayNode whose children are the results of calling\n * the provided callback function for each child of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {ArrayNode} Returns a transformed copy of the node\n */\n map(callback) {\n var items = [];\n for (var i = 0; i < this.items.length; i++) {\n items[i] = this._ifNode(callback(this.items[i], 'items[' + i + ']', this));\n }\n return new ArrayNode(items);\n }\n\n /**\n * Create a clone of this node, a shallow copy\n * @return {ArrayNode}\n */\n clone() {\n return new ArrayNode(this.items.slice(0));\n }\n\n /**\n * Get string representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n _toString(options) {\n var items = this.items.map(function (node) {\n return node.toString(options);\n });\n return '[' + items.join(', ') + ']';\n }\n\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n toJSON() {\n return {\n mathjs: name,\n items: this.items\n };\n }\n\n /**\n * Instantiate an ArrayNode from its JSON representation\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"ArrayNode\", items: [...]}`,\n * where mathjs is optional\n * @returns {ArrayNode}\n */\n static fromJSON(json) {\n return new ArrayNode(json.items);\n }\n\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n toHTML(options) {\n var items = this.items.map(function (node) {\n return node.toHTML(options);\n });\n return '[' + items.join(',') + ']';\n }\n\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string} str\n */\n _toTex(options) {\n function itemsToTex(items, nested) {\n var mixedItems = items.some(isArrayNode) && !items.every(isArrayNode);\n var itemsFormRow = nested || mixedItems;\n var itemSep = itemsFormRow ? '&' : '\\\\\\\\';\n var itemsTex = items.map(function (node) {\n if (node.items) {\n return itemsToTex(node.items, !nested);\n } else {\n return node.toTex(options);\n }\n }).join(itemSep);\n return mixedItems || !itemsFormRow || itemsFormRow && !nested ? '\\\\begin{bmatrix}' + itemsTex + '\\\\end{bmatrix}' : itemsTex;\n }\n return itemsToTex(this.items, false);\n }\n }\n _defineProperty(ArrayNode, \"name\", name);\n return ArrayNode;\n}, {\n isClass: true,\n isNode: true\n});","/* eslint no-template-curly-in-string: \"off\" */\n\nimport escapeLatexLib from 'escape-latex';\nimport { hasOwnProperty } from './object.js';\nexport var latexSymbols = {\n // GREEK LETTERS\n Alpha: 'A',\n alpha: '\\\\alpha',\n Beta: 'B',\n beta: '\\\\beta',\n Gamma: '\\\\Gamma',\n gamma: '\\\\gamma',\n Delta: '\\\\Delta',\n delta: '\\\\delta',\n Epsilon: 'E',\n epsilon: '\\\\epsilon',\n varepsilon: '\\\\varepsilon',\n Zeta: 'Z',\n zeta: '\\\\zeta',\n Eta: 'H',\n eta: '\\\\eta',\n Theta: '\\\\Theta',\n theta: '\\\\theta',\n vartheta: '\\\\vartheta',\n Iota: 'I',\n iota: '\\\\iota',\n Kappa: 'K',\n kappa: '\\\\kappa',\n varkappa: '\\\\varkappa',\n Lambda: '\\\\Lambda',\n lambda: '\\\\lambda',\n Mu: 'M',\n mu: '\\\\mu',\n Nu: 'N',\n nu: '\\\\nu',\n Xi: '\\\\Xi',\n xi: '\\\\xi',\n Omicron: 'O',\n omicron: 'o',\n Pi: '\\\\Pi',\n pi: '\\\\pi',\n varpi: '\\\\varpi',\n Rho: 'P',\n rho: '\\\\rho',\n varrho: '\\\\varrho',\n Sigma: '\\\\Sigma',\n sigma: '\\\\sigma',\n varsigma: '\\\\varsigma',\n Tau: 'T',\n tau: '\\\\tau',\n Upsilon: '\\\\Upsilon',\n upsilon: '\\\\upsilon',\n Phi: '\\\\Phi',\n phi: '\\\\phi',\n varphi: '\\\\varphi',\n Chi: 'X',\n chi: '\\\\chi',\n Psi: '\\\\Psi',\n psi: '\\\\psi',\n Omega: '\\\\Omega',\n omega: '\\\\omega',\n // logic\n true: '\\\\mathrm{True}',\n false: '\\\\mathrm{False}',\n // other\n i: 'i',\n // TODO use \\i ??\n inf: '\\\\infty',\n Inf: '\\\\infty',\n infinity: '\\\\infty',\n Infinity: '\\\\infty',\n oo: '\\\\infty',\n lim: '\\\\lim',\n undefined: '\\\\mathbf{?}'\n};\nexport var latexOperators = {\n transpose: '^\\\\top',\n ctranspose: '^H',\n factorial: '!',\n pow: '^',\n dotPow: '.^\\\\wedge',\n // TODO find ideal solution\n unaryPlus: '+',\n unaryMinus: '-',\n bitNot: '\\\\~',\n // TODO find ideal solution\n not: '\\\\neg',\n multiply: '\\\\cdot',\n divide: '\\\\frac',\n // TODO how to handle that properly?\n dotMultiply: '.\\\\cdot',\n // TODO find ideal solution\n dotDivide: '.:',\n // TODO find ideal solution\n mod: '\\\\mod',\n add: '+',\n subtract: '-',\n to: '\\\\rightarrow',\n leftShift: '<<',\n rightArithShift: '>>',\n rightLogShift: '>>>',\n equal: '=',\n unequal: '\\\\neq',\n smaller: '<',\n larger: '>',\n smallerEq: '\\\\leq',\n largerEq: '\\\\geq',\n bitAnd: '\\\\&',\n bitXor: '\\\\underline{|}',\n bitOr: '|',\n and: '\\\\wedge',\n xor: '\\\\veebar',\n or: '\\\\vee'\n};\nexport var latexFunctions = {\n // arithmetic\n abs: {\n 1: '\\\\left|${args[0]}\\\\right|'\n },\n add: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.add, \"${args[1]}\\\\right)\")\n },\n cbrt: {\n 1: '\\\\sqrt[3]{${args[0]}}'\n },\n ceil: {\n 1: '\\\\left\\\\lceil${args[0]}\\\\right\\\\rceil'\n },\n cube: {\n 1: '\\\\left(${args[0]}\\\\right)^3'\n },\n divide: {\n 2: '\\\\frac{${args[0]}}{${args[1]}}'\n },\n dotDivide: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.dotDivide, \"${args[1]}\\\\right)\")\n },\n dotMultiply: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.dotMultiply, \"${args[1]}\\\\right)\")\n },\n dotPow: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.dotPow, \"${args[1]}\\\\right)\")\n },\n exp: {\n 1: '\\\\exp\\\\left(${args[0]}\\\\right)'\n },\n expm1: \"\\\\left(e\".concat(latexOperators.pow, \"{${args[0]}}-1\\\\right)\"),\n fix: {\n 1: '\\\\mathrm{${name}}\\\\left(${args[0]}\\\\right)'\n },\n floor: {\n 1: '\\\\left\\\\lfloor${args[0]}\\\\right\\\\rfloor'\n },\n gcd: '\\\\gcd\\\\left(${args}\\\\right)',\n hypot: '\\\\hypot\\\\left(${args}\\\\right)',\n log: {\n 1: '\\\\ln\\\\left(${args[0]}\\\\right)',\n 2: '\\\\log_{${args[1]}}\\\\left(${args[0]}\\\\right)'\n },\n log10: {\n 1: '\\\\log_{10}\\\\left(${args[0]}\\\\right)'\n },\n log1p: {\n 1: '\\\\ln\\\\left(${args[0]}+1\\\\right)',\n 2: '\\\\log_{${args[1]}}\\\\left(${args[0]}+1\\\\right)'\n },\n log2: '\\\\log_{2}\\\\left(${args[0]}\\\\right)',\n mod: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.mod, \"${args[1]}\\\\right)\")\n },\n multiply: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.multiply, \"${args[1]}\\\\right)\")\n },\n norm: {\n 1: '\\\\left\\\\|${args[0]}\\\\right\\\\|',\n 2: undefined // use default template\n },\n\n nthRoot: {\n 2: '\\\\sqrt[${args[1]}]{${args[0]}}'\n },\n nthRoots: {\n 2: '\\\\{y : $y^{args[1]} = {${args[0]}}\\\\}'\n },\n pow: {\n 2: \"\\\\left(${args[0]}\\\\right)\".concat(latexOperators.pow, \"{${args[1]}}\")\n },\n round: {\n 1: '\\\\left\\\\lfloor${args[0]}\\\\right\\\\rceil',\n 2: undefined // use default template\n },\n\n sign: {\n 1: '\\\\mathrm{${name}}\\\\left(${args[0]}\\\\right)'\n },\n sqrt: {\n 1: '\\\\sqrt{${args[0]}}'\n },\n square: {\n 1: '\\\\left(${args[0]}\\\\right)^2'\n },\n subtract: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.subtract, \"${args[1]}\\\\right)\")\n },\n unaryMinus: {\n 1: \"\".concat(latexOperators.unaryMinus, \"\\\\left(${args[0]}\\\\right)\")\n },\n unaryPlus: {\n 1: \"\".concat(latexOperators.unaryPlus, \"\\\\left(${args[0]}\\\\right)\")\n },\n // bitwise\n bitAnd: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.bitAnd, \"${args[1]}\\\\right)\")\n },\n bitNot: {\n 1: latexOperators.bitNot + '\\\\left(${args[0]}\\\\right)'\n },\n bitOr: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.bitOr, \"${args[1]}\\\\right)\")\n },\n bitXor: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.bitXor, \"${args[1]}\\\\right)\")\n },\n leftShift: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.leftShift, \"${args[1]}\\\\right)\")\n },\n rightArithShift: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.rightArithShift, \"${args[1]}\\\\right)\")\n },\n rightLogShift: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.rightLogShift, \"${args[1]}\\\\right)\")\n },\n // combinatorics\n bellNumbers: {\n 1: '\\\\mathrm{B}_{${args[0]}}'\n },\n catalan: {\n 1: '\\\\mathrm{C}_{${args[0]}}'\n },\n stirlingS2: {\n 2: '\\\\mathrm{S}\\\\left(${args}\\\\right)'\n },\n // complex\n arg: {\n 1: '\\\\arg\\\\left(${args[0]}\\\\right)'\n },\n conj: {\n 1: '\\\\left(${args[0]}\\\\right)^*'\n },\n im: {\n 1: '\\\\Im\\\\left\\\\lbrace${args[0]}\\\\right\\\\rbrace'\n },\n re: {\n 1: '\\\\Re\\\\left\\\\lbrace${args[0]}\\\\right\\\\rbrace'\n },\n // logical\n and: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.and, \"${args[1]}\\\\right)\")\n },\n not: {\n 1: latexOperators.not + '\\\\left(${args[0]}\\\\right)'\n },\n or: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.or, \"${args[1]}\\\\right)\")\n },\n xor: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.xor, \"${args[1]}\\\\right)\")\n },\n // matrix\n cross: {\n 2: '\\\\left(${args[0]}\\\\right)\\\\times\\\\left(${args[1]}\\\\right)'\n },\n ctranspose: {\n 1: \"\\\\left(${args[0]}\\\\right)\".concat(latexOperators.ctranspose)\n },\n det: {\n 1: '\\\\det\\\\left(${args[0]}\\\\right)'\n },\n dot: {\n 2: '\\\\left(${args[0]}\\\\cdot${args[1]}\\\\right)'\n },\n expm: {\n 1: '\\\\exp\\\\left(${args[0]}\\\\right)'\n },\n inv: {\n 1: '\\\\left(${args[0]}\\\\right)^{-1}'\n },\n pinv: {\n 1: '\\\\left(${args[0]}\\\\right)^{+}'\n },\n sqrtm: {\n 1: \"{${args[0]}}\".concat(latexOperators.pow, \"{\\\\frac{1}{2}}\")\n },\n trace: {\n 1: '\\\\mathrm{tr}\\\\left(${args[0]}\\\\right)'\n },\n transpose: {\n 1: \"\\\\left(${args[0]}\\\\right)\".concat(latexOperators.transpose)\n },\n // probability\n combinations: {\n 2: '\\\\binom{${args[0]}}{${args[1]}}'\n },\n combinationsWithRep: {\n 2: '\\\\left(\\\\!\\\\!{\\\\binom{${args[0]}}{${args[1]}}}\\\\!\\\\!\\\\right)'\n },\n factorial: {\n 1: \"\\\\left(${args[0]}\\\\right)\".concat(latexOperators.factorial)\n },\n gamma: {\n 1: '\\\\Gamma\\\\left(${args[0]}\\\\right)'\n },\n lgamma: {\n 1: '\\\\ln\\\\Gamma\\\\left(${args[0]}\\\\right)'\n },\n // relational\n equal: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.equal, \"${args[1]}\\\\right)\")\n },\n larger: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.larger, \"${args[1]}\\\\right)\")\n },\n largerEq: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.largerEq, \"${args[1]}\\\\right)\")\n },\n smaller: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.smaller, \"${args[1]}\\\\right)\")\n },\n smallerEq: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.smallerEq, \"${args[1]}\\\\right)\")\n },\n unequal: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.unequal, \"${args[1]}\\\\right)\")\n },\n // special\n erf: {\n 1: 'erf\\\\left(${args[0]}\\\\right)'\n },\n // statistics\n max: '\\\\max\\\\left(${args}\\\\right)',\n min: '\\\\min\\\\left(${args}\\\\right)',\n variance: '\\\\mathrm{Var}\\\\left(${args}\\\\right)',\n // trigonometry\n acos: {\n 1: '\\\\cos^{-1}\\\\left(${args[0]}\\\\right)'\n },\n acosh: {\n 1: '\\\\cosh^{-1}\\\\left(${args[0]}\\\\right)'\n },\n acot: {\n 1: '\\\\cot^{-1}\\\\left(${args[0]}\\\\right)'\n },\n acoth: {\n 1: '\\\\coth^{-1}\\\\left(${args[0]}\\\\right)'\n },\n acsc: {\n 1: '\\\\csc^{-1}\\\\left(${args[0]}\\\\right)'\n },\n acsch: {\n 1: '\\\\mathrm{csch}^{-1}\\\\left(${args[0]}\\\\right)'\n },\n asec: {\n 1: '\\\\sec^{-1}\\\\left(${args[0]}\\\\right)'\n },\n asech: {\n 1: '\\\\mathrm{sech}^{-1}\\\\left(${args[0]}\\\\right)'\n },\n asin: {\n 1: '\\\\sin^{-1}\\\\left(${args[0]}\\\\right)'\n },\n asinh: {\n 1: '\\\\sinh^{-1}\\\\left(${args[0]}\\\\right)'\n },\n atan: {\n 1: '\\\\tan^{-1}\\\\left(${args[0]}\\\\right)'\n },\n atan2: {\n 2: '\\\\mathrm{atan2}\\\\left(${args}\\\\right)'\n },\n atanh: {\n 1: '\\\\tanh^{-1}\\\\left(${args[0]}\\\\right)'\n },\n cos: {\n 1: '\\\\cos\\\\left(${args[0]}\\\\right)'\n },\n cosh: {\n 1: '\\\\cosh\\\\left(${args[0]}\\\\right)'\n },\n cot: {\n 1: '\\\\cot\\\\left(${args[0]}\\\\right)'\n },\n coth: {\n 1: '\\\\coth\\\\left(${args[0]}\\\\right)'\n },\n csc: {\n 1: '\\\\csc\\\\left(${args[0]}\\\\right)'\n },\n csch: {\n 1: '\\\\mathrm{csch}\\\\left(${args[0]}\\\\right)'\n },\n sec: {\n 1: '\\\\sec\\\\left(${args[0]}\\\\right)'\n },\n sech: {\n 1: '\\\\mathrm{sech}\\\\left(${args[0]}\\\\right)'\n },\n sin: {\n 1: '\\\\sin\\\\left(${args[0]}\\\\right)'\n },\n sinh: {\n 1: '\\\\sinh\\\\left(${args[0]}\\\\right)'\n },\n tan: {\n 1: '\\\\tan\\\\left(${args[0]}\\\\right)'\n },\n tanh: {\n 1: '\\\\tanh\\\\left(${args[0]}\\\\right)'\n },\n // unit\n to: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.to, \"${args[1]}\\\\right)\")\n },\n // utils\n numeric: function numeric(node, options) {\n // Not sure if this is strictly right but should work correctly for the vast majority of use cases.\n return node.args[0].toTex();\n },\n // type\n number: {\n 0: '0',\n 1: '\\\\left(${args[0]}\\\\right)',\n 2: '\\\\left(\\\\left(${args[0]}\\\\right)${args[1]}\\\\right)'\n },\n string: {\n 0: '\\\\mathtt{\"\"}',\n 1: '\\\\mathrm{string}\\\\left(${args[0]}\\\\right)'\n },\n bignumber: {\n 0: '0',\n 1: '\\\\left(${args[0]}\\\\right)'\n },\n complex: {\n 0: '0',\n 1: '\\\\left(${args[0]}\\\\right)',\n 2: \"\\\\left(\\\\left(${args[0]}\\\\right)+\".concat(latexSymbols.i, \"\\\\cdot\\\\left(${args[1]}\\\\right)\\\\right)\")\n },\n matrix: {\n 0: '\\\\begin{bmatrix}\\\\end{bmatrix}',\n 1: '\\\\left(${args[0]}\\\\right)',\n 2: '\\\\left(${args[0]}\\\\right)'\n },\n sparse: {\n 0: '\\\\begin{bsparse}\\\\end{bsparse}',\n 1: '\\\\left(${args[0]}\\\\right)'\n },\n unit: {\n 1: '\\\\left(${args[0]}\\\\right)',\n 2: '\\\\left(\\\\left(${args[0]}\\\\right)${args[1]}\\\\right)'\n }\n};\nexport var defaultTemplate = '\\\\mathrm{${name}}\\\\left(${args}\\\\right)';\nvar latexUnits = {\n deg: '^\\\\circ'\n};\nexport function escapeLatex(string) {\n return escapeLatexLib(string, {\n preserveFormatting: true\n });\n}\n\n// @param {string} name\n// @param {boolean} isUnit\nexport function toSymbol(name, isUnit) {\n isUnit = typeof isUnit === 'undefined' ? false : isUnit;\n if (isUnit) {\n if (hasOwnProperty(latexUnits, name)) {\n return latexUnits[name];\n }\n return '\\\\mathrm{' + escapeLatex(name) + '}';\n }\n if (hasOwnProperty(latexSymbols, name)) {\n return latexSymbols[name];\n }\n return escapeLatex(name);\n}","import { isConstantNode } from '../../utils/is.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'symbolicEqual';\nvar dependencies = ['parse', 'simplify', 'typed', 'OperatorNode'];\nexport var createSymbolicEqual = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n parse,\n simplify,\n typed,\n OperatorNode\n } = _ref;\n /**\n * Attempts to determine if two expressions are symbolically equal, i.e.\n * one is the result of valid algebraic manipulations on the other.\n * Currently, this simply checks if the difference of the two expressions\n * simplifies down to 0. So there are two important caveats:\n * 1. whether two expressions are symbolically equal depends on the\n * manipulations allowed. Therefore, this function takes an optional\n * third argument, which are the options that control the behavior\n * as documented for the `simplify()` function.\n * 2. it is in general intractable to find the minimal simplification of\n * an arbitrarily complicated expression. So while a `true` value\n * of `symbolicEqual` ensures that the two expressions can be manipulated\n * to match each other, a `false` value does not absolutely rule this out.\n *\n * Syntax:\n *\n * math.symbolicEqual(expr1, expr2)\n * math.symbolicEqual(expr1, expr2, options)\n *\n * Examples:\n *\n * math.symbolicEqual('x*y', 'y*x') // Returns true\n * math.symbolicEqual('x*y', 'y*x', {context: {multiply: {commutative: false}}}) // Returns false\n * math.symbolicEqual('x/y', '(y*x^(-1))^(-1)') // Returns true\n * math.symbolicEqual('abs(x)','x') // Returns false\n * math.symbolicEqual('abs(x)','x', simplify.positiveContext) // Returns true\n *\n * See also:\n *\n * simplify, evaluate\n *\n * @param {Node|string} expr1 The first expression to compare\n * @param {Node|string} expr2 The second expression to compare\n * @param {Object} [options] Optional option object, passed to simplify\n * @returns {boolean}\n * Returns true if a valid manipulation making the expressions equal\n * is found.\n */\n function _symbolicEqual(e1, e2) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var diff = new OperatorNode('-', 'subtract', [e1, e2]);\n var simplified = simplify(diff, {}, options);\n return isConstantNode(simplified) && !simplified.value;\n }\n return typed(name, {\n 'Node, Node': _symbolicEqual,\n 'Node, Node, Object': _symbolicEqual\n });\n});","import { factory } from '../../../utils/factory.js';\nvar name = 'chain';\nvar dependencies = ['typed', 'Chain'];\nexport var createChain = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n Chain\n } = _ref;\n /**\n * Wrap any value in a chain, allowing to perform chained operations on\n * the value.\n *\n * All methods available in the math.js library can be called upon the chain,\n * and then will be evaluated with the value itself as first argument.\n * The chain can be closed by executing `chain.done()`, which returns\n * the final value.\n *\n * The chain has a number of special functions:\n *\n * - `done()` Finalize the chain and return the chain's value.\n * - `valueOf()` The same as `done()`\n * - `toString()` Executes `math.format()` onto the chain's value, returning\n * a string representation of the value.\n *\n * Syntax:\n *\n * math.chain(value)\n *\n * Examples:\n *\n * math.chain(3)\n * .add(4)\n * .subtract(2)\n * .done() // 5\n *\n * math.chain( [[1, 2], [3, 4]] )\n * .subset(math.index(0, 0), 8)\n * .multiply(3)\n * .done() // [[24, 6], [9, 12]]\n *\n * @param {*} [value] A value of any type on which to start a chained operation.\n * @return {math.Chain} The created chain\n */\n return typed(name, {\n '': function _() {\n return new Chain();\n },\n any: function any(value) {\n return new Chain(value);\n }\n });\n});","// list of identifiers of nodes in order of their precedence\n// also contains information about left/right associativity\n// and which other operator the operator is associative with\n// Example:\n// addition is associative with addition and subtraction, because:\n// (a+b)+c=a+(b+c)\n// (a+b)-c=a+(b-c)\n//\n// postfix operators are left associative, prefix operators\n// are right associative\n//\n// It's also possible to set the following properties:\n// latexParens: if set to false, this node doesn't need to be enclosed\n// in parentheses when using LaTeX\n// latexLeftParens: if set to false, this !OperatorNode's!\n// left argument doesn't need to be enclosed\n// in parentheses\n// latexRightParens: the same for the right argument\nimport { hasOwnProperty } from '../utils/object.js';\nimport { isConstantNode, isParenthesisNode, rule2Node } from '../utils/is.js';\nexport var properties = [{\n // assignment\n AssignmentNode: {},\n FunctionAssignmentNode: {}\n}, {\n // conditional expression\n ConditionalNode: {\n latexLeftParens: false,\n latexRightParens: false,\n latexParens: false\n // conditionals don't need parentheses in LaTeX because\n // they are 2 dimensional\n }\n}, {\n // logical or\n 'OperatorNode:or': {\n op: 'or',\n associativity: 'left',\n associativeWith: []\n }\n}, {\n // logical xor\n 'OperatorNode:xor': {\n op: 'xor',\n associativity: 'left',\n associativeWith: []\n }\n}, {\n // logical and\n 'OperatorNode:and': {\n op: 'and',\n associativity: 'left',\n associativeWith: []\n }\n}, {\n // bitwise or\n 'OperatorNode:bitOr': {\n op: '|',\n associativity: 'left',\n associativeWith: []\n }\n}, {\n // bitwise xor\n 'OperatorNode:bitXor': {\n op: '^|',\n associativity: 'left',\n associativeWith: []\n }\n}, {\n // bitwise and\n 'OperatorNode:bitAnd': {\n op: '&',\n associativity: 'left',\n associativeWith: []\n }\n}, {\n // relational operators\n 'OperatorNode:equal': {\n op: '==',\n associativity: 'left',\n associativeWith: []\n },\n 'OperatorNode:unequal': {\n op: '!=',\n associativity: 'left',\n associativeWith: []\n },\n 'OperatorNode:smaller': {\n op: '<',\n associativity: 'left',\n associativeWith: []\n },\n 'OperatorNode:larger': {\n op: '>',\n associativity: 'left',\n associativeWith: []\n },\n 'OperatorNode:smallerEq': {\n op: '<=',\n associativity: 'left',\n associativeWith: []\n },\n 'OperatorNode:largerEq': {\n op: '>=',\n associativity: 'left',\n associativeWith: []\n },\n RelationalNode: {\n associativity: 'left',\n associativeWith: []\n }\n}, {\n // bitshift operators\n 'OperatorNode:leftShift': {\n op: '<<',\n associativity: 'left',\n associativeWith: []\n },\n 'OperatorNode:rightArithShift': {\n op: '>>',\n associativity: 'left',\n associativeWith: []\n },\n 'OperatorNode:rightLogShift': {\n op: '>>>',\n associativity: 'left',\n associativeWith: []\n }\n}, {\n // unit conversion\n 'OperatorNode:to': {\n op: 'to',\n associativity: 'left',\n associativeWith: []\n }\n}, {\n // range\n RangeNode: {}\n}, {\n // addition, subtraction\n 'OperatorNode:add': {\n op: '+',\n associativity: 'left',\n associativeWith: ['OperatorNode:add', 'OperatorNode:subtract']\n },\n 'OperatorNode:subtract': {\n op: '-',\n associativity: 'left',\n associativeWith: []\n }\n}, {\n // multiply, divide, modulus\n 'OperatorNode:multiply': {\n op: '*',\n associativity: 'left',\n associativeWith: ['OperatorNode:multiply', 'OperatorNode:divide', 'Operator:dotMultiply', 'Operator:dotDivide']\n },\n 'OperatorNode:divide': {\n op: '/',\n associativity: 'left',\n associativeWith: [],\n latexLeftParens: false,\n latexRightParens: false,\n latexParens: false\n // fractions don't require parentheses because\n // they're 2 dimensional, so parens aren't needed\n // in LaTeX\n },\n\n 'OperatorNode:dotMultiply': {\n op: '.*',\n associativity: 'left',\n associativeWith: ['OperatorNode:multiply', 'OperatorNode:divide', 'OperatorNode:dotMultiply', 'OperatorNode:doDivide']\n },\n 'OperatorNode:dotDivide': {\n op: './',\n associativity: 'left',\n associativeWith: []\n },\n 'OperatorNode:mod': {\n op: 'mod',\n associativity: 'left',\n associativeWith: []\n }\n}, {\n // Repeat multiplication for implicit multiplication\n 'OperatorNode:multiply': {\n associativity: 'left',\n associativeWith: ['OperatorNode:multiply', 'OperatorNode:divide', 'Operator:dotMultiply', 'Operator:dotDivide']\n }\n}, {\n // unary prefix operators\n 'OperatorNode:unaryPlus': {\n op: '+',\n associativity: 'right'\n },\n 'OperatorNode:unaryMinus': {\n op: '-',\n associativity: 'right'\n },\n 'OperatorNode:bitNot': {\n op: '~',\n associativity: 'right'\n },\n 'OperatorNode:not': {\n op: 'not',\n associativity: 'right'\n }\n}, {\n // exponentiation\n 'OperatorNode:pow': {\n op: '^',\n associativity: 'right',\n associativeWith: [],\n latexRightParens: false\n // the exponent doesn't need parentheses in\n // LaTeX because it's 2 dimensional\n // (it's on top)\n },\n\n 'OperatorNode:dotPow': {\n op: '.^',\n associativity: 'right',\n associativeWith: []\n }\n}, {\n // factorial\n 'OperatorNode:factorial': {\n op: '!',\n associativity: 'left'\n }\n}, {\n // matrix transpose\n 'OperatorNode:ctranspose': {\n op: \"'\",\n associativity: 'left'\n }\n}];\n\n/**\n * Returns the first non-parenthesis internal node, but only\n * when the 'parenthesis' option is unset or auto.\n * @param {Node} _node\n * @param {string} parenthesis\n * @return {Node}\n */\nfunction unwrapParen(_node, parenthesis) {\n if (!parenthesis || parenthesis !== 'auto') return _node;\n var node = _node;\n while (isParenthesisNode(node)) node = node.content;\n return node;\n}\n\n/**\n * Get the precedence of a Node.\n * Higher number for higher precedence, starting with 0.\n * Returns null if the precedence is undefined.\n *\n * @param {Node} _node\n * @param {string} parenthesis\n * @param {string} implicit\n * @param {Node} parent (for determining context for implicit multiplication)\n * @return {number | null}\n */\nexport function getPrecedence(_node, parenthesis, implicit, parent) {\n var node = _node;\n if (parenthesis !== 'keep') {\n // ParenthesisNodes are only ignored when not in 'keep' mode\n node = _node.getContent();\n }\n var identifier = node.getIdentifier();\n var precedence = null;\n for (var i = 0; i < properties.length; i++) {\n if (identifier in properties[i]) {\n precedence = i;\n break;\n }\n }\n // Bump up precedence of implicit multiplication, except when preceded\n // by a \"Rule 2\" fraction ( [unaryOp]constant / constant )\n if (identifier === 'OperatorNode:multiply' && node.implicit && implicit !== 'show') {\n var leftArg = unwrapParen(node.args[0], parenthesis);\n if (!(isConstantNode(leftArg) && parent && parent.getIdentifier() === 'OperatorNode:divide' && rule2Node(unwrapParen(parent.args[0], parenthesis))) && !(leftArg.getIdentifier() === 'OperatorNode:divide' && rule2Node(unwrapParen(leftArg.args[0], parenthesis)) && isConstantNode(unwrapParen(leftArg.args[1])))) {\n precedence += 1;\n }\n }\n return precedence;\n}\n\n/**\n * Get the associativity of an operator (left or right).\n * Returns a string containing 'left' or 'right' or null if\n * the associativity is not defined.\n *\n * @param {Node} _node\n * @param {string} parenthesis\n * @return {string|null}\n * @throws {Error}\n */\nexport function getAssociativity(_node, parenthesis) {\n var node = _node;\n if (parenthesis !== 'keep') {\n // ParenthesisNodes are only ignored when not in 'keep' mode\n node = _node.getContent();\n }\n var identifier = node.getIdentifier();\n var index = getPrecedence(node, parenthesis);\n if (index === null) {\n // node isn't in the list\n return null;\n }\n var property = properties[index][identifier];\n if (hasOwnProperty(property, 'associativity')) {\n if (property.associativity === 'left') {\n return 'left';\n }\n if (property.associativity === 'right') {\n return 'right';\n }\n // associativity is invalid\n throw Error('\\'' + identifier + '\\' has the invalid associativity \\'' + property.associativity + '\\'.');\n }\n\n // associativity is undefined\n return null;\n}\n\n/**\n * Check if an operator is associative with another operator.\n * Returns either true or false or null if not defined.\n *\n * @param {Node} nodeA\n * @param {Node} nodeB\n * @param {string} parenthesis\n * @return {boolean | null}\n */\nexport function isAssociativeWith(nodeA, nodeB, parenthesis) {\n // ParenthesisNodes are only ignored when not in 'keep' mode\n var a = parenthesis !== 'keep' ? nodeA.getContent() : nodeA;\n var b = parenthesis !== 'keep' ? nodeA.getContent() : nodeB;\n var identifierA = a.getIdentifier();\n var identifierB = b.getIdentifier();\n var index = getPrecedence(a, parenthesis);\n if (index === null) {\n // node isn't in the list\n return null;\n }\n var property = properties[index][identifierA];\n if (hasOwnProperty(property, 'associativeWith') && property.associativeWith instanceof Array) {\n for (var i = 0; i < property.associativeWith.length; i++) {\n if (property.associativeWith[i] === identifierB) {\n return true;\n }\n }\n return false;\n }\n\n // associativeWith is not defined\n return null;\n}\n\n/**\n * Get the operator associated with a function name.\n * Returns a string with the operator symbol, or null if the\n * input is not the name of a function associated with an\n * operator.\n *\n * @param {string} Function name\n * @return {string | null} Associated operator symbol, if any\n */\nexport function getOperator(fn) {\n var identifier = 'OperatorNode:' + fn;\n for (var group of properties) {\n if (identifier in group) {\n return group[identifier].op;\n }\n }\n return null;\n}","import { factory } from '../../utils/factory.js';\nimport { errorTransform } from './utils/errorTransform.js';\nimport { createVariance } from '../../function/statistics/variance.js';\nimport { lastDimToZeroBase } from './utils/lastDimToZeroBase.js';\nvar name = 'variance';\nvar dependencies = ['typed', 'add', 'subtract', 'multiply', 'divide', 'apply', 'isNaN'];\n\n/**\n * Attach a transform function to math.var\n * Adds a property transform containing the transform function.\n *\n * This transform changed the `dim` parameter of function var\n * from one-based to zero based\n */\nexport var createVarianceTransform = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n add,\n subtract,\n multiply,\n divide,\n apply,\n isNaN\n } = _ref;\n var variance = createVariance({\n typed,\n add,\n subtract,\n multiply,\n divide,\n apply,\n isNaN\n });\n return typed(name, {\n '...any': function any(args) {\n args = lastDimToZeroBase(args);\n try {\n return variance.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});","import { isNode } from '../../utils/is.js';\nimport { keywords } from '../keywords.js';\nimport { deepStrictEqual } from '../../utils/object.js';\nimport { factory } from '../../utils/factory.js';\nimport { createMap } from '../../utils/map.js';\nvar name = 'Node';\nvar dependencies = ['mathWithTransform'];\nexport var createNode = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n mathWithTransform\n } = _ref;\n /**\n * Validate the symbol names of a scope.\n * Throws an error when the scope contains an illegal symbol.\n * @param {Object} scope\n */\n function _validateScope(scope) {\n for (var symbol of [...keywords]) {\n if (scope.has(symbol)) {\n throw new Error('Scope contains an illegal symbol, \"' + symbol + '\" is a reserved keyword');\n }\n }\n }\n class Node {\n get type() {\n return 'Node';\n }\n get isNode() {\n return true;\n }\n\n /**\n * Evaluate the node\n * @param {Object} [scope] Scope to read/write variables\n * @return {*} Returns the result\n */\n evaluate(scope) {\n return this.compile().evaluate(scope);\n }\n\n /**\n * Compile the node into an optimized, evauatable JavaScript function\n * @return {{evaluate: function([Object])}} object\n * Returns an object with a function 'evaluate',\n * which can be invoked as expr.evaluate([scope: Object]),\n * where scope is an optional object with\n * variables.\n */\n compile() {\n var expr = this._compile(mathWithTransform, {});\n var args = {};\n var context = null;\n function evaluate(scope) {\n var s = createMap(scope);\n _validateScope(s);\n return expr(s, args, context);\n }\n return {\n evaluate\n };\n }\n\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n _compile(math, argNames) {\n throw new Error('Method _compile must be implemented by type ' + this.type);\n }\n\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n forEach(callback) {\n // must be implemented by each of the Node implementations\n throw new Error('Cannot run forEach on a Node interface');\n }\n\n /**\n * Create a new Node whose children are the results of calling the\n * provided callback function for each child of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {OperatorNode} Returns a transformed copy of the node\n */\n map(callback) {\n // must be implemented by each of the Node implementations\n throw new Error('Cannot run map on a Node interface');\n }\n\n /**\n * Validate whether an object is a Node, for use with map\n * @param {Node} node\n * @returns {Node} Returns the input if it's a node, else throws an Error\n * @protected\n */\n _ifNode(node) {\n if (!isNode(node)) {\n throw new TypeError('Callback function must return a Node');\n }\n return node;\n }\n\n /**\n * Recursively traverse all nodes in a node tree. Executes given callback for\n * this node and each of its child nodes.\n * @param {function(node: Node, path: string, parent: Node)} callback\n * A callback called for every node in the node tree.\n */\n traverse(callback) {\n // execute callback for itself\n // eslint-disable-next-line\n callback(this, null, null);\n\n // recursively traverse over all children of a node\n function _traverse(node, callback) {\n node.forEach(function (child, path, parent) {\n callback(child, path, parent);\n _traverse(child, callback);\n });\n }\n _traverse(this, callback);\n }\n\n /**\n * Recursively transform a node tree via a transform function.\n *\n * For example, to replace all nodes of type SymbolNode having name 'x' with\n * a ConstantNode with value 2:\n *\n * const res = Node.transform(function (node, path, parent) {\n * if (node && node.isSymbolNode) && (node.name === 'x')) {\n * return new ConstantNode(2)\n * }\n * else {\n * return node\n * }\n * })\n *\n * @param {function(node: Node, path: string, parent: Node) : Node} callback\n * A mapping function accepting a node, and returning\n * a replacement for the node or the original node. The \"signature\"\n * of the callback must be:\n * callback(node: Node, index: string, parent: Node) : Node\n * @return {Node} Returns the original node or its replacement\n */\n transform(callback) {\n function _transform(child, path, parent) {\n var replacement = callback(child, path, parent);\n if (replacement !== child) {\n // stop iterating when the node is replaced\n return replacement;\n }\n return child.map(_transform);\n }\n return _transform(this, null, null);\n }\n\n /**\n * Find any node in the node tree matching given filter function. For\n * example, to find all nodes of type SymbolNode having name 'x':\n *\n * const results = Node.filter(function (node) {\n * return (node && node.isSymbolNode) && (node.name === 'x')\n * })\n *\n * @param {function(node: Node, path: string, parent: Node) : Node} callback\n * A test function returning true when a node matches, and false\n * otherwise. Function signature:\n * callback(node: Node, index: string, parent: Node) : boolean\n * @return {Node[]} nodes\n * An array with nodes matching given filter criteria\n */\n filter(callback) {\n var nodes = [];\n this.traverse(function (node, path, parent) {\n if (callback(node, path, parent)) {\n nodes.push(node);\n }\n });\n return nodes;\n }\n\n /**\n * Create a shallow clone of this node\n * @return {Node}\n */\n clone() {\n // must be implemented by each of the Node implementations\n throw new Error('Cannot clone a Node interface');\n }\n\n /**\n * Create a deep clone of this node\n * @return {Node}\n */\n cloneDeep() {\n return this.map(function (node) {\n return node.cloneDeep();\n });\n }\n\n /**\n * Deep compare this node with another node.\n * @param {Node} other\n * @return {boolean} Returns true when both nodes are of the same type and\n * contain the same values (as do their childs)\n */\n equals(other) {\n return other ? this.type === other.type && deepStrictEqual(this, other) : false;\n }\n\n /**\n * Get string representation. (wrapper function)\n *\n * This function can get an object of the following form:\n * {\n * handler: //This can be a callback function of the form\n * // \"function callback(node, options)\"or\n * // a map that maps function names (used in FunctionNodes)\n * // to callbacks\n * parenthesis: \"keep\" //the parenthesis option (This is optional)\n * }\n *\n * @param {Object} [options]\n * @return {string}\n */\n toString(options) {\n var customString = this._getCustomString(options);\n if (typeof customString !== 'undefined') {\n return customString;\n }\n return this._toString(options);\n }\n\n /**\n * Get a JSON representation of the node\n * Both .toJSON() and the static .fromJSON(json) should be implemented by all\n * implementations of Node\n * @returns {Object}\n */\n toJSON() {\n throw new Error('Cannot serialize object: toJSON not implemented by ' + this.type);\n }\n\n /**\n * Get HTML representation. (wrapper function)\n *\n * This function can get an object of the following form:\n * {\n * handler: //This can be a callback function of the form\n * // \"function callback(node, options)\" or\n * // a map that maps function names (used in FunctionNodes)\n * // to callbacks\n * parenthesis: \"keep\" //the parenthesis option (This is optional)\n * }\n *\n * @param {Object} [options]\n * @return {string}\n */\n toHTML(options) {\n var customString = this._getCustomString(options);\n if (typeof customString !== 'undefined') {\n return customString;\n }\n return this.toHTML(options);\n }\n\n /**\n * Internal function to generate the string output.\n * This has to be implemented by every Node\n *\n * @throws {Error}\n */\n _toString() {\n // must be implemented by each of the Node implementations\n throw new Error('_toString not implemented for ' + this.type);\n }\n\n /**\n * Get LaTeX representation. (wrapper function)\n *\n * This function can get an object of the following form:\n * {\n * handler: //This can be a callback function of the form\n * // \"function callback(node, options)\"or\n * // a map that maps function names (used in FunctionNodes)\n * // to callbacks\n * parenthesis: \"keep\" //the parenthesis option (This is optional)\n * }\n *\n * @param {Object} [options]\n * @return {string}\n */\n toTex(options) {\n var customString = this._getCustomString(options);\n if (typeof customString !== 'undefined') {\n return customString;\n }\n return this._toTex(options);\n }\n\n /**\n * Internal function to generate the LaTeX output.\n * This has to be implemented by every Node\n *\n * @param {Object} [options]\n * @throws {Error}\n */\n _toTex(options) {\n // must be implemented by each of the Node implementations\n throw new Error('_toTex not implemented for ' + this.type);\n }\n\n /**\n * Helper used by `to...` functions.\n */\n _getCustomString(options) {\n if (options && typeof options === 'object') {\n switch (typeof options.handler) {\n case 'object':\n case 'undefined':\n return;\n case 'function':\n return options.handler(this, options);\n default:\n throw new TypeError('Object or function expected as callback');\n }\n }\n }\n\n /**\n * Get identifier.\n * @return {string}\n */\n getIdentifier() {\n return this.type;\n }\n\n /**\n * Get the content of the current Node.\n * @return {Node} node\n **/\n getContent() {\n return this;\n }\n }\n return Node;\n}, {\n isClass: true,\n isNode: true\n});","import { isAccessorNode, isArrayNode, isConstantNode, isFunctionNode, isIndexNode, isObjectNode, isOperatorNode } from '../../utils/is.js';\nimport { getOperator } from '../../expression/operators.js';\nimport { createUtil } from './simplify/util.js';\nimport { factory } from '../../utils/factory.js';\nvar name = 'simplifyCore';\nvar dependencies = ['typed', 'parse', 'equal', 'isZero', 'add', 'subtract', 'multiply', 'divide', 'pow', 'AccessorNode', 'ArrayNode', 'ConstantNode', 'FunctionNode', 'IndexNode', 'ObjectNode', 'OperatorNode', 'ParenthesisNode', 'SymbolNode'];\nexport var createSimplifyCore = /* #__PURE__ */factory(name, dependencies, _ref => {\n var {\n typed,\n parse,\n equal,\n isZero,\n add,\n subtract,\n multiply,\n divide,\n pow,\n AccessorNode,\n ArrayNode,\n ConstantNode,\n FunctionNode,\n IndexNode,\n ObjectNode,\n OperatorNode,\n ParenthesisNode,\n SymbolNode\n } = _ref;\n var node0 = new ConstantNode(0);\n var node1 = new ConstantNode(1);\n var nodeT = new ConstantNode(true);\n var nodeF = new ConstantNode(false);\n // test if a node will always have a boolean value (true/false)\n // not sure if this list is complete\n function isAlwaysBoolean(node) {\n return isOperatorNode(node) && ['and', 'not', 'or'].includes(node.op);\n }\n var {\n hasProperty,\n isCommutative\n } = createUtil({\n FunctionNode,\n OperatorNode,\n SymbolNode\n });\n /**\n * simplifyCore() performs single pass simplification suitable for\n * applications requiring ultimate performance. To roughly summarize,\n * it handles cases along the lines of simplifyConstant() but where\n * knowledge of a single argument is sufficient to determine the value.\n * In contrast, simplify() extends simplifyCore() with additional passes\n * to provide deeper simplification (such as gathering like terms).\n *\n * Specifically, simplifyCore:\n *\n * * Converts all function calls with operator equivalents to their\n * operator forms.\n * * Removes operators or function calls that are guaranteed to have no\n * effect (such as unary '+').\n * * Removes double unary '-', '~', and 'not'\n * * Eliminates addition/subtraction of 0 and multiplication/division/powers\n * by 1 or 0.\n * * Converts addition of a negation into subtraction.\n * * Eliminates logical operations with constant true or false leading\n * arguments.\n * * Puts constants on the left of a product, if multiplication is\n * considered commutative by the options (which is the default)\n *\n * Syntax:\n *\n * math.simplifyCore(expr)\n * math.simplifyCore(expr, options)\n *\n * Examples:\n *\n * const f = math.parse('2 * 1 * x ^ (1 - 0)')\n * math.simplifyCore(f) // Node \"2 * x\"\n * math.simplify('2 * 1 * x ^ (1 - 0)', [math.simplifyCore]) // Node \"2 * x\"\n *\n * See also:\n *\n * simplify, simplifyConstant, resolve, derivative\n *\n * @param {Node | string} node\n * The expression to be simplified\n * @param {Object} options\n * Simplification options, as per simplify()\n * @return {Node} Returns expression with basic simplifications applied\n */\n function _simplifyCore(nodeToSimplify) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var context = options ? options.context : undefined;\n if (hasProperty(nodeToSimplify, 'trivial', context)) {\n // This node does nothing if it has only one argument, so if so,\n // return that argument simplified\n if (isFunctionNode(nodeToSimplify) && nodeToSimplify.args.length === 1) {\n return _simplifyCore(nodeToSimplify.args[0], options);\n }\n // For other node types, we try the generic methods\n var simpChild = false;\n var childCount = 0;\n nodeToSimplify.forEach(c => {\n ++childCount;\n if (childCount === 1) {\n simpChild = _simplifyCore(c, options);\n }\n });\n if (childCount === 1) {\n return simpChild;\n }\n }\n var node = nodeToSimplify;\n if (isFunctionNode(node)) {\n var op = getOperator(node.name);\n if (op) {\n // Replace FunctionNode with a new OperatorNode\n if (node.args.length > 2 && hasProperty(node, 'associative', context)) {\n // unflatten into binary operations since that's what simplifyCore handles\n while (node.args.length > 2) {\n var last = node.args.pop();\n var seclast = node.args.pop();\n node.args.push(new OperatorNode(op, node.name, [last, seclast]));\n }\n }\n node = new OperatorNode(op, node.name, node.args);\n } else {\n return new FunctionNode(_simplifyCore(node.fn), node.args.map(n => _simplifyCore(n, options)));\n }\n }\n if (isOperatorNode(node) && node.isUnary()) {\n var a0 = _simplifyCore(node.args[0], options);\n if (node.op === '~') {\n // bitwise not\n if (isOperatorNode(a0) && a0.isUnary() && a0.op === '~') {\n return a0.args[0];\n }\n }\n if (node.op === 'not') {\n // logical not\n if (isOperatorNode(a0) && a0.isUnary() && a0.op === 'not') {\n // Has the effect of turning the argument into a boolean\n // So can only eliminate the double negation if\n // the inside is already boolean\n if (isAlwaysBoolean(a0.args[0])) {\n return a0.args[0];\n }\n }\n }\n var finish = true;\n if (node.op === '-') {\n // unary minus\n if (isOperatorNode(a0)) {\n if (a0.isBinary() && a0.fn === 'subtract') {\n node = new OperatorNode('-', 'subtract', [a0.args[1], a0.args[0]]);\n finish = false; // continue to process the new binary node\n }\n\n if (a0.isUnary() && a0.op === '-') {\n return a0.args[0];\n }\n }\n }\n if (finish) return new OperatorNode(node.op, node.fn, [a0]);\n }\n if (isOperatorNode(node) && node.isBinary()) {\n var _a = _simplifyCore(node.args[0], options);\n var a1 = _simplifyCore(node.args[1], options);\n if (node.op === '+') {\n if (isConstantNode(_a) && isZero(_a.value)) {\n return a1;\n }\n if (isConstantNode(a1) && isZero(a1.value)) {\n return _a;\n }\n if (isOperatorNode(a1) && a1.isUnary() && a1.op === '-') {\n a1 = a1.args[0];\n node = new OperatorNode('-', 'subtract', [_a, a1]);\n }\n }\n if (node.op === '-') {\n if (isOperatorNode(a1) && a1.isUnary() && a1.op === '-') {\n return _simplifyCore(new OperatorNode('+', 'add', [_a, a1.args[0]]), options);\n }\n if (isConstantNode(_a) && isZero(_a.value)) {\n return _simplifyCore(new OperatorNode('-', 'unaryMinus', [a1]));\n }\n if (isConstantNode(a1) && isZero(a1.value)) {\n return _a;\n }\n return new OperatorNode(node.op, node.fn, [_a, a1]);\n }\n if (node.op === '*') {\n if (isConstantNode(_a)) {\n if (isZero(_a.value)) {\n return node0;\n } else if (equal(_a.value, 1)) {\n return a1;\n }\n }\n if (isConstantNode(a1)) {\n if (isZero(a1.value)) {\n return node0;\n } else if (equal(a1.value, 1)) {\n return _a;\n }\n if (isCommutative(node, context)) {\n return new OperatorNode(node.op, node.fn, [a1, _a], node.implicit); // constants on left\n }\n }\n\n return new OperatorNode(node.op, node.fn, [_a, a1], node.implicit);\n }\n if (node.op === '/') {\n if (isConstantNode(_a) && isZero(_a.value)) {\n return node0;\n }\n if (isConstantNode(a1) && equal(a1.value, 1)) {\n return _a;\n }\n return new OperatorNode(node.op, node.fn, [_a, a1]);\n }\n if (node.op === '^') {\n if (isConstantNode(a1)) {\n if (isZero(a1.value)) {\n return node1;\n } else if (equal(a1.value, 1)) {\n return _a;\n }\n }\n }\n if (node.op === 'and') {\n if (isConstantNode(_a)) {\n if (_a.value) {\n if (isAlwaysBoolean(a1)) return a1;\n } else {\n return nodeF;\n }\n }\n if (isConstantNode(a1)) {\n if (a1.value) {\n if (isAlwaysBoolean(_a)) return _a;\n } else {\n return nodeF;\n }\n }\n }\n if (node.op === 'or') {\n if (isConstantNode(_a)) {\n if (_a.value) {\n return nodeT;\n } else {\n if (isAlwaysBoolean(a1)) return a1;\n }\n }\n if (isConstantNode(a1)) {\n if (a1.value) {\n return nodeT;\n } else {\n if (isAlwaysBoolean(_a)) return _a;\n }\n }\n }\n return new OperatorNode(node.op, node.fn, [_a, a1]);\n }\n if (isOperatorNode(node)) {\n return new OperatorNode(node.op, node.fn, node.args.map(a => _simplifyCore(a, options)));\n }\n if (isArrayNode(node)) {\n return new ArrayNode(node.items.map(n => _simplifyCore(n, options)));\n }\n if (isAccessorNode(node)) {\n return new AccessorNode(_simplifyCore(node.object, options), _simplifyCore(node.index, options));\n }\n if (isIndexNode(node)) {\n return new IndexNode(node.dimensions.map(n => _simplifyCore(n, options)));\n }\n if (isObjectNode(node)) {\n var newProps = {};\n for (var prop in node.properties) {\n newProps[prop] = _simplifyCore(node.properties[prop], options);\n }\n return new ObjectNode(newProps);\n }\n // cannot simplify\n return node;\n }\n return typed(name, {\n Node: _simplifyCore,\n 'Node,Object': _simplifyCore\n });\n});"],"sourceRoot":""}