From f7c5381a135b498995ddd84ace2a7abe13294a2b Mon Sep 17 00:00:00 2001 From: jos Date: Sat, 2 May 2015 17:27:14 +0200 Subject: [PATCH] Fixed `Node.transform` not recursing over replaced parts of the node tree (see #349). --- HISTORY.md | 2 + dist/math.js | 1853 +++++++++-------- dist/math.map | 2 +- dist/math.min.js | 23 +- lib/expression/node/Node.js | 12 +- test/expression/node/ArrayNode.test.js | 4 +- test/expression/node/AssignmentNode.test.js | 3 +- test/expression/node/BlockNode.test.js | 4 +- test/expression/node/ConditionalNode.test.js | 17 +- test/expression/node/ConstantNode.test.js | 4 +- .../node/FunctionAssignmentNode.test.js | 3 +- test/expression/node/FunctionNode.test.js | 2 +- test/expression/node/IndexNode.test.js | 3 +- test/expression/node/Node.test.js | 26 +- test/expression/node/OperatorNode.test.js | 4 - test/expression/node/RangeNode.test.js | 2 +- test/expression/node/UpdateNode.test.js | 2 +- 17 files changed, 1040 insertions(+), 926 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index 97f4c9444..d541f59d0 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -7,6 +7,8 @@ the expressions result, string representation, or tex representation. Thanks @FSMaxB. - Fixed #309: Function median mutating the input matrix. Thanks @FSMaxB. +- Fixed `Node.transform` not recursing over replaced parts of the + node tree (see #349). ## 2015-04-22, version 1.6.0 diff --git a/dist/math.js b/dist/math.js index 7ed8d1a44..074047732 100644 --- a/dist/math.js +++ b/dist/math.js @@ -7,7 +7,7 @@ * mathematical functions, and a flexible expression parser. * * @version 1.6.1-SNAPSHOT - * @date 2015-04-22 + * @date 2015-05-02 * * @license * Copyright (C) 2013-2015 Jos de Jong @@ -299,7 +299,7 @@ return /******/ (function(modules) { // webpackBootstrap math.json = { reviver: __webpack_require__(22)(math, _config) }; - + // functions - construction (must be defined before the rest of functions) __webpack_require__(34)(math, _config); __webpack_require__(35)(math, _config); @@ -358,20 +358,22 @@ return /******/ (function(modules) { // webpackBootstrap __webpack_require__(82)(math, _config); __webpack_require__(83)(math, _config); - // functions - complex + //functions - combinatorics __webpack_require__(84)(math, _config); + + // functions - complex __webpack_require__(85)(math, _config); __webpack_require__(86)(math, _config); __webpack_require__(87)(math, _config); + __webpack_require__(88)(math, _config); // functions - logical - __webpack_require__(88)(math, _config); __webpack_require__(89)(math, _config); __webpack_require__(90)(math, _config); __webpack_require__(91)(math, _config); + __webpack_require__(92)(math, _config); // functions - matrix - __webpack_require__(92)(math, _config); __webpack_require__(93)(math, _config); __webpack_require__(94)(math, _config); __webpack_require__(95)(math, _config); @@ -388,19 +390,19 @@ return /******/ (function(modules) { // webpackBootstrap __webpack_require__(106)(math, _config); __webpack_require__(107)(math, _config); __webpack_require__(108)(math, _config); + __webpack_require__(109)(math, _config); // functions - probability //require('./function/probability/distribution')(math, _config); // TODO: rethink math.distribution - __webpack_require__(109)(math, _config); __webpack_require__(110)(math, _config); __webpack_require__(111)(math, _config); __webpack_require__(112)(math, _config); __webpack_require__(113)(math, _config); __webpack_require__(114)(math, _config); __webpack_require__(115)(math, _config); + __webpack_require__(116)(math, _config); // functions - relational - __webpack_require__(116)(math, _config); __webpack_require__(117)(math, _config); __webpack_require__(118)(math, _config); __webpack_require__(119)(math, _config); @@ -408,9 +410,9 @@ return /******/ (function(modules) { // webpackBootstrap __webpack_require__(121)(math, _config); __webpack_require__(122)(math, _config); __webpack_require__(123)(math, _config); + __webpack_require__(124)(math, _config); // functions - statistics - __webpack_require__(124)(math, _config); __webpack_require__(125)(math, _config); __webpack_require__(126)(math, _config); __webpack_require__(127)(math, _config); @@ -418,9 +420,9 @@ return /******/ (function(modules) { // webpackBootstrap __webpack_require__(129)(math, _config); __webpack_require__(130)(math, _config); __webpack_require__(131)(math, _config); + __webpack_require__(132)(math, _config); // functions - trigonometry - __webpack_require__(132)(math, _config); __webpack_require__(133)(math, _config); __webpack_require__(134)(math, _config); __webpack_require__(135)(math, _config); @@ -445,12 +447,12 @@ return /******/ (function(modules) { // webpackBootstrap __webpack_require__(154)(math, _config); __webpack_require__(155)(math, _config); __webpack_require__(156)(math, _config); - - // functions - units __webpack_require__(157)(math, _config); - // functions - utils + // functions - units __webpack_require__(158)(math, _config); + + // functions - utils __webpack_require__(159)(math, _config); __webpack_require__(160)(math, _config); __webpack_require__(161)(math, _config); @@ -459,6 +461,7 @@ return /******/ (function(modules) { // webpackBootstrap __webpack_require__(164)(math, _config); __webpack_require__(165)(math, _config); __webpack_require__(166)(math, _config); + __webpack_require__(167)(math, _config); // TODO: deprecated since version 0.25.0, remove some day. math.ifElse = function () { @@ -718,7 +721,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var NumberFormatter = __webpack_require__(167); + var NumberFormatter = __webpack_require__(175); /** * Test whether value is a Number @@ -1045,7 +1048,7 @@ return /******/ (function(modules) { // webpackBootstrap /* 5 */ /***/ function(module, exports, __webpack_require__) { - var BigNumber = __webpack_require__(340); + var BigNumber = __webpack_require__(341); // FIXME: replace all require('decimal.js') with require('./BigNumber'). @@ -1072,7 +1075,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var util = __webpack_require__(175), + var util = __webpack_require__(176), Unit = __webpack_require__(11), number = util.number, @@ -1551,7 +1554,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var util = __webpack_require__(175); + var util = __webpack_require__(176); var number = util.number; var string = util.string; @@ -1850,7 +1853,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var util = __webpack_require__(175), + var util = __webpack_require__(176), Range = __webpack_require__(8), @@ -2147,7 +2150,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var string = __webpack_require__(176), + var string = __webpack_require__(177), isString = string.isString; @@ -2416,7 +2419,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var util = __webpack_require__(175), + var util = __webpack_require__(176), number = util.number, string = util.string, @@ -3315,7 +3318,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var util = __webpack_require__(175); + var util = __webpack_require__(176); var object = util.object; var string = util.string; @@ -3509,7 +3512,7 @@ return /******/ (function(modules) { // webpackBootstrap // utility methods for arrays and matrices 'use strict'; - var util = __webpack_require__(175), + var util = __webpack_require__(176), IndexError = __webpack_require__(173), DimensionError = __webpack_require__(172), @@ -3782,7 +3785,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var util = __webpack_require__(175); + var util = __webpack_require__(176); var DimensionError = __webpack_require__(172); var array = util.array; @@ -4997,7 +5000,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var util = __webpack_require__(175); + var util = __webpack_require__(176); var DimensionError = __webpack_require__(172); var array = util.array; @@ -6199,7 +6202,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var util = __webpack_require__(175); + var util = __webpack_require__(176); var DimensionError = __webpack_require__(172); var string = util.string; @@ -7261,19 +7264,19 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - exports.ArrayNode = __webpack_require__(177); - exports.AssignmentNode = __webpack_require__(178); - exports.BlockNode = __webpack_require__(179); - exports.ConditionalNode = __webpack_require__(180); - exports.ConstantNode = __webpack_require__(181); - exports.IndexNode = __webpack_require__(182); - exports.FunctionAssignmentNode = __webpack_require__(183); - exports.FunctionNode = __webpack_require__(184); - exports.Node = __webpack_require__(185); - exports.OperatorNode = __webpack_require__(186); - exports.RangeNode = __webpack_require__(187); - exports.SymbolNode = __webpack_require__(188); - exports.UpdateNode = __webpack_require__(189); + exports.ArrayNode = __webpack_require__(178); + exports.AssignmentNode = __webpack_require__(179); + exports.BlockNode = __webpack_require__(180); + exports.ConditionalNode = __webpack_require__(181); + exports.ConstantNode = __webpack_require__(182); + exports.IndexNode = __webpack_require__(183); + exports.FunctionAssignmentNode = __webpack_require__(184); + exports.FunctionNode = __webpack_require__(185); + exports.Node = __webpack_require__(186); + exports.OperatorNode = __webpack_require__(187); + exports.RangeNode = __webpack_require__(188); + exports.SymbolNode = __webpack_require__(189); + exports.UpdateNode = __webpack_require__(190); /***/ }, @@ -7282,7 +7285,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var util = __webpack_require__(175), + var util = __webpack_require__(176), ArgumentsError = __webpack_require__(171), @@ -7290,18 +7293,18 @@ return /******/ (function(modules) { // webpackBootstrap isArray = Array.isArray, // scope and nodes - ArrayNode = __webpack_require__(177), - AssignmentNode = __webpack_require__(178), - BlockNode = __webpack_require__(179), - ConditionalNode = __webpack_require__(180), - ConstantNode = __webpack_require__(181), - FunctionAssignmentNode = __webpack_require__(183), - IndexNode = __webpack_require__(182), - OperatorNode = __webpack_require__(186), - FunctionNode = __webpack_require__(184), - RangeNode = __webpack_require__(187), - SymbolNode = __webpack_require__(188), - UpdateNode = __webpack_require__(189); + ArrayNode = __webpack_require__(178), + AssignmentNode = __webpack_require__(179), + BlockNode = __webpack_require__(180), + ConditionalNode = __webpack_require__(181), + ConstantNode = __webpack_require__(182), + FunctionAssignmentNode = __webpack_require__(184), + IndexNode = __webpack_require__(183), + OperatorNode = __webpack_require__(187), + FunctionNode = __webpack_require__(185), + RangeNode = __webpack_require__(188), + SymbolNode = __webpack_require__(189), + UpdateNode = __webpack_require__(190); module.exports = function (math) { @@ -8811,180 +8814,180 @@ return /******/ (function(modules) { // webpackBootstrap /***/ function(module, exports, __webpack_require__) { // constants - exports.e = __webpack_require__(190); - exports.E = __webpack_require__(190); - exports['false'] = __webpack_require__(191); - exports.i = __webpack_require__(192); - exports['Infinity'] = __webpack_require__(193); - exports.LN2 = __webpack_require__(194); - exports.LN10 = __webpack_require__(195); - exports.LOG2E = __webpack_require__(196); - exports.LOG10E = __webpack_require__(197); - exports.NaN = __webpack_require__(198); - exports['null'] = __webpack_require__(199); - exports.pi = __webpack_require__(200); - exports.PI = __webpack_require__(200); - exports.phi = __webpack_require__(201); - exports.SQRT1_2 = __webpack_require__(202); - exports.SQRT2 = __webpack_require__(203); - exports.tau = __webpack_require__(204); - exports['true'] = __webpack_require__(205); - exports.version = __webpack_require__(206); + exports.e = __webpack_require__(191); + exports.E = __webpack_require__(191); + exports['false'] = __webpack_require__(192); + exports.i = __webpack_require__(193); + exports['Infinity'] = __webpack_require__(194); + exports.LN2 = __webpack_require__(195); + exports.LN10 = __webpack_require__(196); + exports.LOG2E = __webpack_require__(197); + exports.LOG10E = __webpack_require__(198); + exports.NaN = __webpack_require__(199); + exports['null'] = __webpack_require__(200); + exports.pi = __webpack_require__(201); + exports.PI = __webpack_require__(201); + exports.phi = __webpack_require__(202); + exports.SQRT1_2 = __webpack_require__(203); + exports.SQRT2 = __webpack_require__(204); + exports.tau = __webpack_require__(205); + exports['true'] = __webpack_require__(206); + exports.version = __webpack_require__(207); // functions - arithmetic - exports.abs = __webpack_require__(210); - exports.add = __webpack_require__(211); - exports.ceil = __webpack_require__(212); - exports.cube = __webpack_require__(213); - exports.divide = __webpack_require__(214); - exports.dotDivide = __webpack_require__(215); - exports.dotMultiply = __webpack_require__(216); - exports.dotPow = __webpack_require__(217); - exports.exp = __webpack_require__(218); - exports.fix = __webpack_require__(219); - exports.floor = __webpack_require__(220); - exports.gcd = __webpack_require__(221); - exports.lcm = __webpack_require__(222); - exports.log = __webpack_require__(223); - exports.log10 = __webpack_require__(224); - exports.mod = __webpack_require__(225); - exports.multiply = __webpack_require__(226); - exports.norm = __webpack_require__(227); - exports.nthRoot = __webpack_require__(228); - exports.pow = __webpack_require__(229); - exports.round = __webpack_require__(230); - exports.sign = __webpack_require__(231); - exports.sqrt = __webpack_require__(232); - exports.square = __webpack_require__(233); - exports.subtract = __webpack_require__(234); - exports.unaryMinus = __webpack_require__(235); - exports.unaryPlus = __webpack_require__(236); - exports.xgcd = __webpack_require__(237); + exports.abs = __webpack_require__(211); + exports.add = __webpack_require__(212); + exports.ceil = __webpack_require__(213); + exports.cube = __webpack_require__(214); + exports.divide = __webpack_require__(215); + exports.dotDivide = __webpack_require__(216); + exports.dotMultiply = __webpack_require__(217); + exports.dotPow = __webpack_require__(218); + exports.exp = __webpack_require__(219); + exports.fix = __webpack_require__(220); + exports.floor = __webpack_require__(221); + exports.gcd = __webpack_require__(222); + exports.lcm = __webpack_require__(223); + exports.log = __webpack_require__(224); + exports.log10 = __webpack_require__(225); + exports.mod = __webpack_require__(226); + exports.multiply = __webpack_require__(227); + exports.norm = __webpack_require__(228); + exports.nthRoot = __webpack_require__(229); + exports.pow = __webpack_require__(230); + exports.round = __webpack_require__(231); + exports.sign = __webpack_require__(232); + exports.sqrt = __webpack_require__(233); + exports.square = __webpack_require__(234); + exports.subtract = __webpack_require__(235); + exports.unaryMinus = __webpack_require__(236); + exports.unaryPlus = __webpack_require__(237); + exports.xgcd = __webpack_require__(238); // functions - bitwise - exports.bitAnd = __webpack_require__(238); - exports.bitNot = __webpack_require__(239); - exports.bitOr = __webpack_require__(240); - exports.bitXor = __webpack_require__(241); - exports.leftShift = __webpack_require__(242); - exports.rightArithShift = __webpack_require__(243); - exports.rightLogShift = __webpack_require__(244); + exports.bitAnd = __webpack_require__(239); + exports.bitNot = __webpack_require__(240); + exports.bitOr = __webpack_require__(241); + exports.bitXor = __webpack_require__(242); + exports.leftShift = __webpack_require__(243); + exports.rightArithShift = __webpack_require__(244); + exports.rightLogShift = __webpack_require__(245); // functions - complex - exports.arg = __webpack_require__(245); - exports.conj = __webpack_require__(246); - exports.re = __webpack_require__(247); - exports.im = __webpack_require__(248); + exports.arg = __webpack_require__(246); + exports.conj = __webpack_require__(247); + exports.re = __webpack_require__(248); + exports.im = __webpack_require__(249); // functions - construction - exports.bignumber = __webpack_require__(249); - exports['boolean'] = __webpack_require__(250); - exports.complex = __webpack_require__(251); - exports.index = __webpack_require__(252); - exports.matrix = __webpack_require__(253); - exports.number = __webpack_require__(254); - exports.string = __webpack_require__(255); - exports.unit = __webpack_require__(256); + exports.bignumber = __webpack_require__(250); + exports['boolean'] = __webpack_require__(251); + exports.complex = __webpack_require__(252); + exports.index = __webpack_require__(253); + exports.matrix = __webpack_require__(254); + exports.number = __webpack_require__(255); + exports.string = __webpack_require__(256); + exports.unit = __webpack_require__(257); // functions - expression - exports['eval'] = __webpack_require__(257); - exports.help = __webpack_require__(258); + exports['eval'] = __webpack_require__(258); + exports.help = __webpack_require__(259); // functions - logical - exports['and'] = __webpack_require__(259); - exports['not'] = __webpack_require__(260); - exports['or'] = __webpack_require__(261); - exports['xor'] = __webpack_require__(262); + exports['and'] = __webpack_require__(260); + exports['not'] = __webpack_require__(261); + exports['or'] = __webpack_require__(262); + exports['xor'] = __webpack_require__(263); // functions - matrix - exports['concat'] = __webpack_require__(263); - exports.cross = __webpack_require__(264); - exports.det = __webpack_require__(265); - exports.diag = __webpack_require__(266); - exports.dot = __webpack_require__(267); - exports.eye = __webpack_require__(268); - exports.flatten = __webpack_require__(269); - exports.inv = __webpack_require__(270); - exports.ones = __webpack_require__(271); - exports.range = __webpack_require__(272); - exports.resize = __webpack_require__(273); - exports.size = __webpack_require__(274); - exports.squeeze = __webpack_require__(275); - exports.subset = __webpack_require__(276); - exports.trace = __webpack_require__(277); - exports.transpose = __webpack_require__(278); - exports.zeros = __webpack_require__(279); + exports['concat'] = __webpack_require__(264); + exports.cross = __webpack_require__(265); + exports.det = __webpack_require__(266); + exports.diag = __webpack_require__(267); + exports.dot = __webpack_require__(268); + exports.eye = __webpack_require__(269); + exports.flatten = __webpack_require__(270); + exports.inv = __webpack_require__(271); + exports.ones = __webpack_require__(272); + exports.range = __webpack_require__(273); + exports.resize = __webpack_require__(274); + exports.size = __webpack_require__(275); + exports.squeeze = __webpack_require__(276); + exports.subset = __webpack_require__(277); + exports.trace = __webpack_require__(278); + exports.transpose = __webpack_require__(279); + exports.zeros = __webpack_require__(280); // functions - probability - exports.combinations = __webpack_require__(280); + exports.combinations = __webpack_require__(281); //exports.distribution = require('./function/probability/distribution'); - exports.factorial = __webpack_require__(281); - exports.gamma = __webpack_require__(282); - exports.permutations = __webpack_require__(283); - exports.pickRandom = __webpack_require__(284); - exports.random = __webpack_require__(285); - exports.randomInt = __webpack_require__(286); + exports.factorial = __webpack_require__(282); + exports.gamma = __webpack_require__(283); + exports.permutations = __webpack_require__(284); + exports.pickRandom = __webpack_require__(285); + exports.random = __webpack_require__(286); + exports.randomInt = __webpack_require__(287); // functions - relational - exports.compare = __webpack_require__(287); - exports.deepEqual = __webpack_require__(288); - exports['equal'] = __webpack_require__(289); - exports.larger = __webpack_require__(290); - exports.largerEq = __webpack_require__(291); - exports.smaller = __webpack_require__(292); - exports.smallerEq = __webpack_require__(293); - exports.unequal = __webpack_require__(294); + exports.compare = __webpack_require__(288); + exports.deepEqual = __webpack_require__(289); + exports['equal'] = __webpack_require__(290); + exports.larger = __webpack_require__(291); + exports.largerEq = __webpack_require__(292); + exports.smaller = __webpack_require__(293); + exports.smallerEq = __webpack_require__(294); + exports.unequal = __webpack_require__(295); // functions - statistics - exports.max = __webpack_require__(295); - exports.mean = __webpack_require__(296); - exports.median = __webpack_require__(297); - exports.min = __webpack_require__(298); - exports.prod = __webpack_require__(299); - exports.std = __webpack_require__(300); - exports.sum = __webpack_require__(301); - exports['var'] = __webpack_require__(302); + exports.max = __webpack_require__(296); + exports.mean = __webpack_require__(297); + exports.median = __webpack_require__(298); + exports.min = __webpack_require__(299); + exports.prod = __webpack_require__(300); + exports.std = __webpack_require__(301); + exports.sum = __webpack_require__(302); + exports['var'] = __webpack_require__(303); // functions - trigonometry - exports.acos = __webpack_require__(303); - exports.acosh = __webpack_require__(304); - exports.acot = __webpack_require__(305); - exports.acoth = __webpack_require__(306); - exports.acsc = __webpack_require__(307); - exports.acsch = __webpack_require__(308); - exports.asec = __webpack_require__(309); - exports.asech = __webpack_require__(310); - exports.asin = __webpack_require__(311); - exports.asinh = __webpack_require__(312); - exports.atan = __webpack_require__(313); - exports.atanh = __webpack_require__(314); - exports.atan2 = __webpack_require__(315); - exports.cos = __webpack_require__(316); - exports.cosh = __webpack_require__(317); - exports.cot = __webpack_require__(318); - exports.coth = __webpack_require__(319); - exports.csc = __webpack_require__(320); - exports.csch = __webpack_require__(321); - exports.sec = __webpack_require__(322); - exports.sech = __webpack_require__(323); - exports.sin = __webpack_require__(324); - exports.sinh = __webpack_require__(325); - exports.tan = __webpack_require__(326); - exports.tanh = __webpack_require__(327); + exports.acos = __webpack_require__(304); + exports.acosh = __webpack_require__(305); + exports.acot = __webpack_require__(306); + exports.acoth = __webpack_require__(307); + exports.acsc = __webpack_require__(308); + exports.acsch = __webpack_require__(309); + exports.asec = __webpack_require__(310); + exports.asech = __webpack_require__(311); + exports.asin = __webpack_require__(312); + exports.asinh = __webpack_require__(313); + exports.atan = __webpack_require__(314); + exports.atanh = __webpack_require__(315); + exports.atan2 = __webpack_require__(316); + exports.cos = __webpack_require__(317); + exports.cosh = __webpack_require__(318); + exports.cot = __webpack_require__(319); + exports.coth = __webpack_require__(320); + exports.csc = __webpack_require__(321); + exports.csch = __webpack_require__(322); + exports.sec = __webpack_require__(323); + exports.sech = __webpack_require__(324); + exports.sin = __webpack_require__(325); + exports.sinh = __webpack_require__(326); + exports.tan = __webpack_require__(327); + exports.tanh = __webpack_require__(328); // functions - units - exports.to = __webpack_require__(328); + exports.to = __webpack_require__(329); // functions - utils - exports.clone = __webpack_require__(329); - exports.map = __webpack_require__(330); - exports.filter = __webpack_require__(331); - exports.forEach = __webpack_require__(332); - exports.format = __webpack_require__(333); + exports.clone = __webpack_require__(330); + exports.map = __webpack_require__(331); + exports.filter = __webpack_require__(332); + exports.forEach = __webpack_require__(333); + exports.format = __webpack_require__(334); // exports.print = require('./function/utils/print'); // TODO: add documentation for print as soon as the parser supports objects. - exports['import'] = __webpack_require__(334); - exports.sort = __webpack_require__(335); - exports['typeof'] = __webpack_require__(336); + exports['import'] = __webpack_require__(335); + exports.sort = __webpack_require__(336); + exports['typeof'] = __webpack_require__(337); /***/ }, @@ -9021,7 +9024,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; var BigNumber = __webpack_require__(5); - var errorTransform = __webpack_require__(208).transform; + var errorTransform = __webpack_require__(209).transform; var isNumber = __webpack_require__(3).isNumber; var argsToArray = __webpack_require__(169).argsToArray; @@ -9068,8 +9071,8 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var SymbolNode = __webpack_require__(188); - var isBoolean = __webpack_require__(209).isBoolean; + var SymbolNode = __webpack_require__(189); + var isBoolean = __webpack_require__(210).isBoolean; var argsToArray = __webpack_require__(169).argsToArray; var ArgumentsError = __webpack_require__(171); @@ -9297,7 +9300,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; var BigNumber = __webpack_require__(5); - var errorTransform = __webpack_require__(208).transform; + var errorTransform = __webpack_require__(209).transform; var isNumber = __webpack_require__(3).isNumber; var argsToArray = __webpack_require__(169).argsToArray; @@ -9348,7 +9351,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; var BigNumber = __webpack_require__(5); - var errorTransform = __webpack_require__(208).transform; + var errorTransform = __webpack_require__(209).transform; var isNumber = __webpack_require__(3).isNumber; var argsToArray = __webpack_require__(169).argsToArray; @@ -9399,7 +9402,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; var BigNumber = __webpack_require__(5); - var errorTransform = __webpack_require__(208).transform; + var errorTransform = __webpack_require__(209).transform; var isNumber = __webpack_require__(3).isNumber; var argsToArray = __webpack_require__(169).argsToArray; @@ -9449,7 +9452,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var isBoolean = __webpack_require__(209).isBoolean; + var isBoolean = __webpack_require__(210).isBoolean; var argsToArray = __webpack_require__(169).argsToArray; /** @@ -9484,8 +9487,8 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var errorTransform = __webpack_require__(208).transform; - var isBoolean = __webpack_require__(209).isBoolean; + var errorTransform = __webpack_require__(209).transform; + var isBoolean = __webpack_require__(210).isBoolean; var argsToArray = __webpack_require__(169).argsToArray; /** @@ -9518,7 +9521,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; module.exports = function (math) { - var string = __webpack_require__(176); + var string = __webpack_require__(177); /** * @constructor Chain @@ -9619,7 +9622,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), // take the BigNumber instance the provided math.js instance BigNumber = math.type.BigNumber, @@ -9688,7 +9691,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, collection = math.collection, @@ -9782,7 +9785,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -9915,7 +9918,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Index = __webpack_require__(9); @@ -9988,7 +9991,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var string = __webpack_require__(176); + var string = __webpack_require__(177); var isArray = Array.isArray; var isString = string.isString; @@ -10077,7 +10080,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175); + var util = __webpack_require__(176); var BigNumber = math.type.BigNumber; var Unit = math.type.Unit; @@ -10295,7 +10298,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), collection = math.collection, @@ -10362,7 +10365,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Unit = __webpack_require__(11), @@ -10449,7 +10452,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), _parse = math.expression.parse, collection = math.collection, @@ -10521,7 +10524,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), _parse = math.expression.parse, collection = math.collection, @@ -10715,7 +10718,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -10803,7 +10806,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -10964,7 +10967,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -11044,7 +11047,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -11116,7 +11119,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; module.exports = function(math) { - var util = __webpack_require__(175); + var util = __webpack_require__(176); var BigNumber = math.type.BigNumber; var Complex = __webpack_require__(7); @@ -11370,7 +11373,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), collection = math.collection; /** @@ -11421,7 +11424,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), collection = math.collection; /** @@ -11469,7 +11472,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -11550,7 +11553,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -11629,7 +11632,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -11708,7 +11711,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, collection = math.collection, @@ -11855,7 +11858,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, collection = math.collection, @@ -12017,7 +12020,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -12120,7 +12123,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -12208,7 +12211,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, collection = math.collection, @@ -12347,7 +12350,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; module.exports = function(math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -12601,7 +12604,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -12788,7 +12791,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175); + var util = __webpack_require__(176); var BigNumber = math.type.BigNumber; var collection = math.collection; @@ -12987,7 +12990,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -13170,7 +13173,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -13310,7 +13313,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -13391,7 +13394,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -13498,7 +13501,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -13573,7 +13576,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -13733,7 +13736,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -13823,7 +13826,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -13904,7 +13907,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), Matrix = math.type.Matrix, BigNumber = math.type.BigNumber, @@ -14086,7 +14089,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Matrix = math.type.Matrix, @@ -14185,7 +14188,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Matrix = math.type.Matrix, @@ -14258,7 +14261,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Matrix = math.type.Matrix, @@ -14358,7 +14361,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Matrix = math.type.Matrix, @@ -14457,7 +14460,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Matrix = math.type.Matrix, @@ -14579,7 +14582,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Matrix = math.type.Matrix, @@ -14703,7 +14706,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), Matrix = math.type.Matrix, Unit = __webpack_require__(11), @@ -14773,7 +14776,111 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), + + BigNumber = math.type.BigNumber, + collection = math.collection, + + isNumber = util.number.isNumber, + isInteger = util.number.isInteger; + + /** + * The 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 take integer arguments. + * The following condition must be enforced: k <= n. + * + * Syntax: + * + * math.stirlingS2(n, k) + * + * Examples: + * + * math.stirlingS2(5, 3); //returns 25 + * + * If n = k or k = 1, then s(n,k) = 1 + * + * @param {Number | BigNumber} n Total number of objects in the set + * @param {Number | BigNumber} k Number of objects in the subset + * @return {Number | BigNumber} S(n,k) + */ + + math.stirlingS2 = function stirlingS2 (n, k) { + var result = 0; + var arity = arguments.length; + if (arity != 2) { + throw new math.error.ArgumentsError('stirlingS2', arguments.length, 2); + } + + if (isNumber(n) && isNumber(k)) { + if (!isInteger(n) || n < 0 || !isInteger(k) || k < 0) { + throw new TypeError('Positive integer value expected in function stirlingS2'); + } + if (k > n) { + throw new TypeError('k must be less than or equal to n'); + } + + // 1/k! Sum(i=0 -> k) [(-1)^(k-i)*C(k,j)* i^n] + var kFactorial = math.factorial(k); + var denom = 1/kFactorial; + for(var i = 0; i <= k; i++) { + var negativeOne = Math.pow(-1, k-i); + var kChooseI = math.combinations(k,i); + var iPower = Math.pow(i,n); + result += (negativeOne * kChooseI * iPower); + } + result *= denom; + return result; + } else { + throw new TypeError('Integer values are expected in stirlingS2') + } + + // if (n instanceof BigNumber) { + // // make sure k is a BigNumber as well + // // not all numbers can be converted to BigNumber + // k = BigNumber.convert(k); + + // if (!(k instanceof BigNumber) || !isPositiveInteger(k)) { + // throw new TypeError('Positive integer value expected in function stirlingS2'); + // } + // if (k.gt(n)) { + // throw new TypeError('k must be less than n in function stirlingS2'); + // } + + // result = new BigNumber(1); + // result = result.dividedBy(math.factorial(k)); + // for (var i = new BigNumber(1); i.lte(k); i = i.plus(1)) { + // var negativeOne = Math.pow(-1, k-i); + // var kChooseI = math.combinations(k,i); + // var iPower = Math.pow(i,n); + // result += (negativeOne * kChooseI * iPower); + // } + // return result; + // } + // throw new math.error.UnsupportedTypeError('stirlingS2g', math['typeof'](n)); + }; + + + + /** + * Test whether BigNumber n is a positive integer + * @param {BigNumber} n + * @returns {boolean} isPositiveInteger + */ + var isPositiveInteger = function(n) { + return n.isInteger() && n.gte(0); + }; + }; + + +/***/ }, +/* 85 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + module.exports = function (math) { + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -14844,13 +14951,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 85 */ +/* 86 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -14919,13 +15026,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 86 */ +/* 87 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -14996,13 +15103,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 87 */ +/* 88 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -15072,13 +15179,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 88 */ +/* 89 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -15184,13 +15291,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 89 */ +/* 90 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -15259,13 +15366,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 90 */ +/* 91 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -15365,13 +15472,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 91 */ +/* 92 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -15453,13 +15560,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 92 */ +/* 93 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175); + var util = __webpack_require__(176); var BigNumber = __webpack_require__(5); var Matrix = math.type.Matrix; @@ -15595,7 +15702,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 93 */ +/* 94 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -15680,13 +15787,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 94 */ +/* 95 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), Matrix = math.type.Matrix, @@ -15841,13 +15948,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 95 */ +/* 96 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Matrix = math.type.Matrix, @@ -16017,7 +16124,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 96 */ +/* 97 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -16098,13 +16205,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 97 */ +/* 98 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Matrix = math.type.Matrix, @@ -16232,13 +16339,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 98 */ +/* 99 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(175); + var util = __webpack_require__(176); var Matrix = math.type.Matrix; @@ -16285,13 +16392,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 99 */ +/* 100 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175); + var util = __webpack_require__(176); var Matrix = math.type.Matrix; /** @@ -16484,13 +16591,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 100 */ +/* 101 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Matrix = math.type.Matrix, @@ -16601,13 +16708,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 101 */ +/* 102 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Matrix = math.type.Matrix, @@ -16927,13 +17034,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 102 */ +/* 103 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Matrix = math.type.Matrix, @@ -17066,13 +17173,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 103 */ +/* 104 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -17139,13 +17246,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 104 */ +/* 105 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), Matrix = math.type.Matrix, @@ -17203,14 +17310,14 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 105 */ +/* 106 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), Matrix = math.type.Matrix, Index = __webpack_require__(9), @@ -17421,13 +17528,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 106 */ +/* 107 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), Matrix = math.type.Matrix, @@ -17523,13 +17630,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 107 */ +/* 108 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), Matrix = math.type.Matrix, @@ -17610,13 +17717,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 108 */ +/* 109 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Matrix = math.type.Matrix, @@ -17693,7 +17800,7 @@ return /******/ (function(modules) { // webpackBootstrap } // validate arguments if (!isNumber(value) || !isInteger(value) || value < 0) { - throw new Error('Parameters in function eye must be positive integers'); + throw new Error('Parameters in function zeros must be positive integers'); } return value; }); @@ -17725,13 +17832,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 109 */ +/* 110 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, collection = math.collection, @@ -17867,13 +17974,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 110 */ +/* 111 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -18061,13 +18168,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 111 */ +/* 112 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var distribution = __webpack_require__(337)(math); + var distribution = __webpack_require__(338)(math); /** * Return a random number larger or equal to `min` and smaller than `max` @@ -18104,13 +18211,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 112 */ +/* 113 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var distribution = __webpack_require__(337)(math); + var distribution = __webpack_require__(338)(math); /** * Return a random integer number larger or equal to `min` and smaller than `max` @@ -18147,13 +18254,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 113 */ +/* 114 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var distribution = __webpack_require__(337)(math); + var distribution = __webpack_require__(338)(math); /** * Random pick a value from a one dimensional array. @@ -18179,13 +18286,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 114 */ +/* 115 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, @@ -18292,13 +18399,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 115 */ +/* 116 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, collection = math.collection, @@ -18389,13 +18496,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 116 */ +/* 117 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -18519,7 +18626,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 117 */ +/* 118 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -18604,13 +18711,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 118 */ +/* 119 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -18768,13 +18875,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 119 */ +/* 120 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -18895,13 +19002,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 120 */ +/* 121 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -19023,13 +19130,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 121 */ +/* 122 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -19150,13 +19257,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 122 */ +/* 123 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -19277,13 +19384,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 123 */ +/* 124 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -19440,7 +19547,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 124 */ +/* 125 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -19535,7 +19642,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 125 */ +/* 126 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -19630,7 +19737,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 126 */ +/* 127 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -19734,7 +19841,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 127 */ +/* 128 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -19848,7 +19955,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 128 */ +/* 129 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -19933,7 +20040,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 129 */ +/* 130 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -19993,7 +20100,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 130 */ +/* 131 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -20076,7 +20183,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 131 */ +/* 132 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -20087,7 +20194,7 @@ return /******/ (function(modules) { // webpackBootstrap collection = math.collection, isCollection = collection.isCollection, - isString = __webpack_require__(176).isString, + isString = __webpack_require__(177).isString, DEFAULT_NORMALIZATION = 'unbiased'; @@ -20220,13 +20327,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 132 */ +/* 133 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -20314,13 +20421,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 133 */ +/* 134 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -20407,13 +20514,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 134 */ +/* 135 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -20495,13 +20602,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 135 */ +/* 136 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -20589,13 +20696,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 136 */ +/* 137 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -20680,13 +20787,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 137 */ +/* 138 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -20773,13 +20880,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 138 */ +/* 139 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -20862,13 +20969,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 139 */ +/* 140 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -20962,13 +21069,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 140 */ +/* 141 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -21055,13 +21162,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 141 */ +/* 142 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -21144,13 +21251,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 142 */ +/* 143 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -21241,13 +21348,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 143 */ +/* 144 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -21342,13 +21449,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 144 */ +/* 145 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -21442,13 +21549,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 145 */ +/* 146 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -21531,13 +21638,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 146 */ +/* 147 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -21613,13 +21720,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 147 */ +/* 148 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -21699,13 +21806,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 148 */ +/* 149 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -21789,13 +21896,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 149 */ +/* 150 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -21876,13 +21983,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 150 */ +/* 151 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -21967,13 +22074,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 151 */ +/* 152 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -22054,13 +22161,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 152 */ +/* 153 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -22141,13 +22248,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 153 */ +/* 154 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -22230,13 +22337,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 154 */ +/* 155 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -22319,13 +22426,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 155 */ +/* 156 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -22409,13 +22516,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 156 */ +/* 157 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), BigNumber = math.type.BigNumber, Complex = __webpack_require__(7), @@ -22501,13 +22608,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 157 */ +/* 158 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), Unit = __webpack_require__(11), collection = math.collection, @@ -22563,13 +22670,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 158 */ +/* 159 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), object = util.object; /** @@ -22601,7 +22708,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 159 */ +/* 160 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -22681,13 +22788,13 @@ return /******/ (function(modules) { // webpackBootstrap }; /***/ }, -/* 160 */ +/* 161 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), string = util.string; /** @@ -22766,13 +22873,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 161 */ +/* 162 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), Complex = __webpack_require__(7), Unit = __webpack_require__(11), @@ -22845,7 +22952,7 @@ return /******/ (function(modules) { // webpackBootstrap // istanbul ignore else (we cannot unit test the else case in a node.js environment) if (true) { // load the file using require - var _module = __webpack_require__(207)(object); + var _module = __webpack_require__(208)(object); math_import(_module, options); } else { @@ -22926,7 +23033,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 162 */ +/* 163 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -22992,13 +23099,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 163 */ +/* 164 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(175), + var util = __webpack_require__(176), isString = util.string.isString; @@ -23076,7 +23183,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 164 */ +/* 165 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -23156,13 +23263,13 @@ return /******/ (function(modules) { // webpackBootstrap }; /***/ }, -/* 165 */ +/* 166 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var types = __webpack_require__(338), + var types = __webpack_require__(339), Complex = __webpack_require__(7), Matrix = math.type.Matrix, @@ -23238,7 +23345,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 166 */ +/* 167 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -23299,219 +23406,6 @@ return /******/ (function(modules) { // webpackBootstrap } }; -/***/ }, -/* 167 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - /** - * Format a number using methods toPrecision, toFixed, toExponential. - * @param {number | string} value - * @constructor - */ - function NumberFormatter (value) { - // parse the input value - var match = String(value).toLowerCase().match(/^0*?(-?)(\d+\.?\d*)(e([+-]?\d+))?$/); - if (!match) { - throw new SyntaxError('Invalid number'); - } - - var sign = match[1]; - var coefficients = match[2]; - var exponent = parseFloat(match[4] || '0'); - - var dot = coefficients.indexOf('.'); - exponent += (dot !== -1) ? (dot - 1) : (coefficients.length - 1); - - this.sign = sign; - this.coefficients = coefficients - .replace('.', '') // remove the dot (must be removed before removing leading zeros) - .replace(/^0*/, function (zeros) { - // remove leading zeros, add their count to the exponent - exponent -= zeros.length; - return ''; - }) - .replace(/0*$/, '') // remove trailing zeros - .split('') - .map(function (d) { - return parseInt(d); - }); - - if (this.coefficients.length === 0) { - this.coefficients.push(0); - exponent++; - } - - this.exponent = exponent; - } - - /** - * Format a number with fixed notation. - * @param {Number} [precision=0] Optional number of decimals after the - * decimal point. Zero by default. - */ - NumberFormatter.prototype.toFixed = function (precision) { - var rounded = this.roundDigits(this.exponent + 1 + (precision || 0)); - var c = rounded.coefficients; - var p = rounded.exponent + 1; // exponent may have changed - - // append zeros if needed - var pp = p + (precision || 0); - if (c.length < pp) { - c = c.concat(zeros(pp - c.length)); - } - - // prepend zeros if needed - if (p < 0) { - c = zeros(-p + 1).concat(c); - p = 1; - } - - // insert a dot if needed - if (precision) { - c.splice(p, 0, (p === 0) ? '0.' : '.'); - } - - return this.sign + c.join(''); - }; - - /** - * Format a number in exponential notation. Like '1.23e+5', '2.3e+0', '3.500e-3' - * @param {Number} [precision] Number of digits in formatted output. - * If not provided, the maximum available digits - * is used. - */ - NumberFormatter.prototype.toExponential = function (precision) { - // round if needed, else create a clone - var rounded = precision ? this.roundDigits(precision) : this.clone(); - var c = rounded.coefficients; - var e = rounded.exponent; - - // append zeros if needed - if (c.length < precision) { - c = c.concat(zeros(precision - c.length)); - } - - // format as `C.CCCe+EEE` or `C.CCCe-EEE` - var first = c.shift(); - return this.sign + first + (c.length > 0 ? ('.' + c.join('')) : '') + - 'e' + (e >= 0 ? '+' : '') + e; - }; - - /** - * Format a number with a certain precision - * @param {Number} [precision=undefined] Optional number of digits. - * @param {{lower: number | undefined, upper: number | undefined}} [options] - * By default: - * lower = 1e-3 (excl) - * upper = 1e+5 (incl) - * @return {string} - */ - NumberFormatter.prototype.toPrecision = function(precision, options) { - // determine lower and upper bound for exponential notation. - var lower = (options && options.lower !== undefined) ? options.lower : 1e-3; - var upper = (options && options.upper !== undefined) ? options.upper : 1e+5; - - var abs = Math.abs(Math.pow(10, this.exponent)); - if (abs < lower || abs >= upper) { - // exponential notation - return this.toExponential(precision); - } - else { - var rounded = precision ? this.roundDigits(precision) : this.clone(); - var c = rounded.coefficients; - var e = rounded.exponent; - - // append trailing zeros - if (c.length < precision) { - c = c.concat(zeros(precision - c.length)); - } - - // append trailing zeros - // TODO: simplify the next statement - c = c.concat(zeros(e - c.length + 1 + - (c.length < precision ? precision - c.length : 0))); - - // prepend zeros - c = zeros(-e).concat(c); - - var dot = e > 0 ? e : 0; - if (dot < c.length - 1) { - c.splice(dot + 1, 0, '.'); - } - - return this.sign + c.join(''); - } - }; - - /** - * Crete a clone of the NumberFormatter - * @return {NumberFormatter} Returns a clone of the NumberFormatter - */ - NumberFormatter.prototype.clone = function () { - var clone = new NumberFormatter('0'); - clone.sign = this.sign; - clone.coefficients = this.coefficients.slice(0); - clone.exponent = this.exponent; - return clone; - }; - - /** - * Round the number of digits of a number * - * @param {number} precision A positive integer - * @return {NumberFormatter} Returns a new NumberFormatter with the rounded - * digits - */ - NumberFormatter.prototype.roundDigits = function (precision) { - var rounded = this.clone(); - var c = rounded.coefficients; - - // prepend zeros if needed - while (precision <= 0) { - c.unshift(0); - rounded.exponent++; - precision++; - } - - if (c.length > precision) { - var removed = c.splice(precision); - - if (removed[0] >= 5) { - var i = precision - 1; - c[i]++; - while (c[i] === 10) { - c.pop(); - if (i === 0) { - c.unshift(0); - rounded.exponent++; - i++; - } - i--; - c[i]++; - } - } - } - - return rounded; - }; - - /** - * Create an array filled with zeros. - * @param {number} length - * @return {Array} - */ - function zeros(length) { - var arr = []; - for (var i = 0; i < length; i++) { - arr.push(0); - } - return arr; - } - - module.exports = NumberFormatter; - - /***/ }, /* 168 */ /***/ function(module, exports, __webpack_require__) { @@ -23521,7 +23415,7 @@ return /******/ (function(modules) { // webpackBootstrap var BigNumber = __webpack_require__(5); var isNumber = __webpack_require__(3).isNumber; var digits = __webpack_require__(3).digits; - var memoize = __webpack_require__(339).memoize; + var memoize = __webpack_require__(340).memoize; /** * Test whether value is a BigNumber @@ -24933,9 +24827,9 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; var number = __webpack_require__(3), - string = __webpack_require__(176), + string = __webpack_require__(177), object = __webpack_require__(2), - types = __webpack_require__(338), + types = __webpack_require__(339), DimensionError = __webpack_require__(172), IndexError = __webpack_require__(173), @@ -25274,16 +25168,20 @@ return /******/ (function(modules) { // webpackBootstrap * @private */ exports.flatten = function(array) { - var flat = array, - isArray = Array.isArray; - - while (isArray(flat[0])) { - var next = []; - for (var i = 0, ii = flat.length; i < ii; i++) { - next = next.concat.apply(next, flat[i]); - } - flat = next; + if (!Array.isArray(array)) { + //if not an array, return as is + return array; } + var flat = []; + + array.forEach(function callback(value) { + if (Array.isArray(value)) { + value.forEach(callback); //traverse through sub-arrays recursively + } + else { + flat.push(value); + } + }); return flat; }; @@ -25308,6 +25206,7 @@ return /******/ (function(modules) { // webpackBootstrap */ exports.isArray = isArray; + /***/ }, /* 170 */ /***/ function(module, exports, __webpack_require__) { @@ -25496,13 +25395,211 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - exports.array = __webpack_require__(169); - exports['boolean'] = __webpack_require__(209); - exports.number = __webpack_require__(3); - exports.bignumber = __webpack_require__(168); - exports.object = __webpack_require__(2); - exports.string = __webpack_require__(176); - exports.types = __webpack_require__(338); + /** + * Format a number using methods toPrecision, toFixed, toExponential. + * @param {number | string} value + * @constructor + */ + function NumberFormatter (value) { + // parse the input value + var match = String(value).toLowerCase().match(/^0*?(-?)(\d+\.?\d*)(e([+-]?\d+))?$/); + if (!match) { + throw new SyntaxError('Invalid number'); + } + + var sign = match[1]; + var coefficients = match[2]; + var exponent = parseFloat(match[4] || '0'); + + var dot = coefficients.indexOf('.'); + exponent += (dot !== -1) ? (dot - 1) : (coefficients.length - 1); + + this.sign = sign; + this.coefficients = coefficients + .replace('.', '') // remove the dot (must be removed before removing leading zeros) + .replace(/^0*/, function (zeros) { + // remove leading zeros, add their count to the exponent + exponent -= zeros.length; + return ''; + }) + .replace(/0*$/, '') // remove trailing zeros + .split('') + .map(function (d) { + return parseInt(d); + }); + + if (this.coefficients.length === 0) { + this.coefficients.push(0); + exponent++; + } + + this.exponent = exponent; + } + + /** + * Format a number with fixed notation. + * @param {Number} [precision=0] Optional number of decimals after the + * decimal point. Zero by default. + */ + NumberFormatter.prototype.toFixed = function (precision) { + var rounded = this.roundDigits(this.exponent + 1 + (precision || 0)); + var c = rounded.coefficients; + var p = rounded.exponent + 1; // exponent may have changed + + // append zeros if needed + var pp = p + (precision || 0); + if (c.length < pp) { + c = c.concat(zeros(pp - c.length)); + } + + // prepend zeros if needed + if (p < 0) { + c = zeros(-p + 1).concat(c); + p = 1; + } + + // insert a dot if needed + if (precision) { + c.splice(p, 0, (p === 0) ? '0.' : '.'); + } + + return this.sign + c.join(''); + }; + + /** + * Format a number in exponential notation. Like '1.23e+5', '2.3e+0', '3.500e-3' + * @param {Number} [precision] Number of digits in formatted output. + * If not provided, the maximum available digits + * is used. + */ + NumberFormatter.prototype.toExponential = function (precision) { + // round if needed, else create a clone + var rounded = precision ? this.roundDigits(precision) : this.clone(); + var c = rounded.coefficients; + var e = rounded.exponent; + + // append zeros if needed + if (c.length < precision) { + c = c.concat(zeros(precision - c.length)); + } + + // format as `C.CCCe+EEE` or `C.CCCe-EEE` + var first = c.shift(); + return this.sign + first + (c.length > 0 ? ('.' + c.join('')) : '') + + 'e' + (e >= 0 ? '+' : '') + e; + }; + + /** + * Format a number with a certain precision + * @param {Number} [precision=undefined] Optional number of digits. + * @param {{lower: number | undefined, upper: number | undefined}} [options] + * By default: + * lower = 1e-3 (excl) + * upper = 1e+5 (incl) + * @return {string} + */ + NumberFormatter.prototype.toPrecision = function(precision, options) { + // determine lower and upper bound for exponential notation. + var lower = (options && options.lower !== undefined) ? options.lower : 1e-3; + var upper = (options && options.upper !== undefined) ? options.upper : 1e+5; + + var abs = Math.abs(Math.pow(10, this.exponent)); + if (abs < lower || abs >= upper) { + // exponential notation + return this.toExponential(precision); + } + else { + var rounded = precision ? this.roundDigits(precision) : this.clone(); + var c = rounded.coefficients; + var e = rounded.exponent; + + // append trailing zeros + if (c.length < precision) { + c = c.concat(zeros(precision - c.length)); + } + + // append trailing zeros + // TODO: simplify the next statement + c = c.concat(zeros(e - c.length + 1 + + (c.length < precision ? precision - c.length : 0))); + + // prepend zeros + c = zeros(-e).concat(c); + + var dot = e > 0 ? e : 0; + if (dot < c.length - 1) { + c.splice(dot + 1, 0, '.'); + } + + return this.sign + c.join(''); + } + }; + + /** + * Crete a clone of the NumberFormatter + * @return {NumberFormatter} Returns a clone of the NumberFormatter + */ + NumberFormatter.prototype.clone = function () { + var clone = new NumberFormatter('0'); + clone.sign = this.sign; + clone.coefficients = this.coefficients.slice(0); + clone.exponent = this.exponent; + return clone; + }; + + /** + * Round the number of digits of a number * + * @param {number} precision A positive integer + * @return {NumberFormatter} Returns a new NumberFormatter with the rounded + * digits + */ + NumberFormatter.prototype.roundDigits = function (precision) { + var rounded = this.clone(); + var c = rounded.coefficients; + + // prepend zeros if needed + while (precision <= 0) { + c.unshift(0); + rounded.exponent++; + precision++; + } + + if (c.length > precision) { + var removed = c.splice(precision); + + if (removed[0] >= 5) { + var i = precision - 1; + c[i]++; + while (c[i] === 10) { + c.pop(); + if (i === 0) { + c.unshift(0); + rounded.exponent++; + i++; + } + i--; + c[i]++; + } + } + } + + return rounded; + }; + + /** + * Create an array filled with zeros. + * @param {number} length + * @return {Array} + */ + function zeros(length) { + var arr = []; + for (var i = 0; i < length; i++) { + arr.push(0); + } + return arr; + } + + module.exports = NumberFormatter; /***/ }, @@ -25511,6 +25608,21 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; + exports.array = __webpack_require__(169); + exports['boolean'] = __webpack_require__(210); + exports.number = __webpack_require__(3); + exports.bignumber = __webpack_require__(168); + exports.object = __webpack_require__(2); + exports.string = __webpack_require__(177); + exports.types = __webpack_require__(339); + + +/***/ }, +/* 177 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + var number = __webpack_require__(3); var bignumber = __webpack_require__(168); var BigNumber = __webpack_require__(5); @@ -25621,13 +25733,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 177 */ +/* 178 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var Node = __webpack_require__(185), - string = __webpack_require__(176), + var Node = __webpack_require__(186), + string = __webpack_require__(177), isArray = Array.isArray, isNode = Node.isNode; @@ -25747,19 +25859,19 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 178 */ +/* 179 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var Node = __webpack_require__(185), - ArrayNode = __webpack_require__(177), + var Node = __webpack_require__(186), + ArrayNode = __webpack_require__(178), - keywords = __webpack_require__(341), - operators = __webpack_require__(342), + keywords = __webpack_require__(342), + operators = __webpack_require__(343), - latex = __webpack_require__(343), - isString = __webpack_require__(176).isString; + latex = __webpack_require__(344), + isString = __webpack_require__(177).isString; /** * @constructor AssignmentNode @@ -25860,14 +25972,14 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 179 */ +/* 180 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var Node = __webpack_require__(185); + var Node = __webpack_require__(186); var ResultSet = __webpack_require__(13); - var isBoolean = __webpack_require__(209).isBoolean; + var isBoolean = __webpack_require__(210).isBoolean; /** * @constructor BlockNode @@ -26000,18 +26112,18 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 180 */ +/* 181 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var Node = __webpack_require__(185); - var latex = __webpack_require__(343); + var Node = __webpack_require__(186); + var latex = __webpack_require__(344); var BigNumber = __webpack_require__(5); var Complex = __webpack_require__(7); var Unit = __webpack_require__(11); - var util = __webpack_require__(175); - var operators = __webpack_require__(342); + var util = __webpack_require__(176); + var operators = __webpack_require__(343); var isString = util.string.isString; var isNumber = util.number.isNumber; var isBoolean = util['boolean'].isBoolean; @@ -26171,15 +26283,15 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 181 */ +/* 182 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var Node = __webpack_require__(185); + var Node = __webpack_require__(186); var BigNumber = __webpack_require__(5); - var type = __webpack_require__(338).type; - var isString = __webpack_require__(176).isString; + var type = __webpack_require__(339).type; + var isString = __webpack_require__(177).isString; /** * A ConstantNode holds a constant value like a number or string. A ConstantNode @@ -26359,14 +26471,14 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 182 */ +/* 183 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var Node = __webpack_require__(185); - var RangeNode = __webpack_require__(187); - var SymbolNode = __webpack_require__(188); + var Node = __webpack_require__(186); + var RangeNode = __webpack_require__(188); + var SymbolNode = __webpack_require__(189); var BigNumber = __webpack_require__(5); var Range = __webpack_require__(8); @@ -26589,16 +26701,16 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 183 */ +/* 184 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var Node = __webpack_require__(185); - var keywords = __webpack_require__(341); - var latex = __webpack_require__(343); - var operators = __webpack_require__(342); - var isString = __webpack_require__(176).isString; + var Node = __webpack_require__(186); + var keywords = __webpack_require__(342); + var latex = __webpack_require__(344); + var operators = __webpack_require__(343); + var isString = __webpack_require__(177).isString; var isArray = Array.isArray; /** @@ -26725,15 +26837,15 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 184 */ +/* 185 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var Node = __webpack_require__(185); - var SymbolNode = __webpack_require__(188); + var Node = __webpack_require__(186); + var SymbolNode = __webpack_require__(189); - var latex = __webpack_require__(343); + var latex = __webpack_require__(344); var isNode = Node.isNode; var isArray = Array.isArray; @@ -26862,12 +26974,12 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 185 */ +/* 186 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var keywords = __webpack_require__(341); + var keywords = __webpack_require__(342); /** * Node @@ -27019,20 +27131,16 @@ return /******/ (function(modules) { // webpackBootstrap * @return {Node} Returns the original node or its replacement */ Node.prototype.transform = function (callback) { - // check itself - var replacement = callback(this, null, null); - if (replacement !== this) { - return replacement; - } - // traverse over all childs function _transform (node, callback) { return node.map(function(child, path, parent) { var replacement = callback(child, path, parent); - return (replacement !== child) ? replacement : _transform(child, callback); + return _transform(replacement, callback); }); } - return _transform(this, callback); + + var replacement = callback(this, null, null); + return _transform(replacement, callback); }; /** @@ -27204,17 +27312,17 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 186 */ +/* 187 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var Node = __webpack_require__(185), - ConstantNode = __webpack_require__(181), - SymbolNode = __webpack_require__(188), - FunctionNode = __webpack_require__(184), - latex = __webpack_require__(343), - operators = __webpack_require__(342), + var Node = __webpack_require__(186), + ConstantNode = __webpack_require__(182), + SymbolNode = __webpack_require__(189), + FunctionNode = __webpack_require__(185), + latex = __webpack_require__(344), + operators = __webpack_require__(343), isArray = Array.isArray, isNode = Node.isNode; @@ -27567,13 +27675,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 187 */ +/* 188 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var Node = __webpack_require__(185); - var operators = __webpack_require__(342); + var Node = __webpack_require__(186); + var operators = __webpack_require__(343); var isNode = Node.isNode; @@ -27710,16 +27818,16 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 188 */ +/* 189 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var Node = __webpack_require__(185), + var Node = __webpack_require__(186), Unit = __webpack_require__(11), - latex = __webpack_require__(343), - isString = __webpack_require__(176).isString; + latex = __webpack_require__(344), + isString = __webpack_require__(177).isString; /** * @constructor SymbolNode @@ -27837,13 +27945,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 189 */ +/* 190 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var Node = __webpack_require__(185), - IndexNode = __webpack_require__(182); + var Node = __webpack_require__(186), + IndexNode = __webpack_require__(183); /** * @constructor UpdateNode @@ -27942,7 +28050,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 190 */ +/* 191 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -27963,7 +28071,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 191 */ +/* 192 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -27981,7 +28089,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 192 */ +/* 193 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28001,7 +28109,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 193 */ +/* 194 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28020,7 +28128,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 194 */ +/* 195 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28039,7 +28147,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 195 */ +/* 196 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28058,7 +28166,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 196 */ +/* 197 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28077,7 +28185,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 197 */ +/* 198 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28096,7 +28204,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 198 */ +/* 199 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28115,7 +28223,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 199 */ +/* 200 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28133,7 +28241,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 200 */ +/* 201 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28152,7 +28260,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 201 */ +/* 202 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28170,7 +28278,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 202 */ +/* 203 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28189,7 +28297,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 203 */ +/* 204 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28208,7 +28316,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 204 */ +/* 205 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28227,7 +28335,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 205 */ +/* 206 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28245,7 +28353,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 206 */ +/* 207 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28263,28 +28371,28 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 207 */ +/* 208 */ /***/ function(module, exports, __webpack_require__) { var map = { - "./clone": 158, - "./clone.js": 158, - "./filter": 159, - "./filter.js": 159, - "./forEach": 166, - "./forEach.js": 166, - "./format": 160, - "./format.js": 160, - "./import": 161, - "./import.js": 161, - "./map": 162, - "./map.js": 162, - "./print": 163, - "./print.js": 163, - "./sort": 164, - "./sort.js": 164, - "./typeof": 165, - "./typeof.js": 165 + "./clone": 159, + "./clone.js": 159, + "./filter": 160, + "./filter.js": 160, + "./forEach": 167, + "./forEach.js": 167, + "./format": 161, + "./format.js": 161, + "./import": 162, + "./import.js": 162, + "./map": 163, + "./map.js": 163, + "./print": 164, + "./print.js": 164, + "./sort": 165, + "./sort.js": 165, + "./typeof": 166, + "./typeof.js": 166 }; function webpackContext(req) { return __webpack_require__(webpackContextResolve(req)); @@ -28297,11 +28405,11 @@ return /******/ (function(modules) { // webpackBootstrap }; webpackContext.resolve = webpackContextResolve; module.exports = webpackContext; - webpackContext.id = 207; + webpackContext.id = 208; /***/ }, -/* 208 */ +/* 209 */ /***/ function(module, exports, __webpack_require__) { var DimensionError = __webpack_require__(172); @@ -28322,7 +28430,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 209 */ +/* 210 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -28338,7 +28446,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 210 */ +/* 211 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28357,7 +28465,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 211 */ +/* 212 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28382,7 +28490,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 212 */ +/* 213 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28403,7 +28511,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 213 */ +/* 214 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28427,7 +28535,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 214 */ +/* 215 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28453,7 +28561,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 215 */ +/* 216 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28478,7 +28586,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 216 */ +/* 217 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28503,7 +28611,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 217 */ +/* 218 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28526,7 +28634,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 218 */ +/* 219 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28551,7 +28659,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 219 */ +/* 220 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28573,7 +28681,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 220 */ +/* 221 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28594,7 +28702,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 221 */ +/* 222 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28615,7 +28723,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 222 */ +/* 223 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28635,7 +28743,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 223 */ +/* 224 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28663,7 +28771,7 @@ return /******/ (function(modules) { // webpackBootstrap }; /***/ }, -/* 224 */ +/* 225 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28688,7 +28796,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 225 */ +/* 226 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28714,7 +28822,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 226 */ +/* 227 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28739,7 +28847,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 227 */ +/* 228 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28765,7 +28873,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 228 */ +/* 229 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28791,7 +28899,7 @@ return /******/ (function(modules) { // webpackBootstrap }; /***/ }, -/* 229 */ +/* 230 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28813,7 +28921,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 230 */ +/* 231 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28838,7 +28946,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 231 */ +/* 232 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28861,7 +28969,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 232 */ +/* 233 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28885,7 +28993,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 233 */ +/* 234 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28912,7 +29020,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 234 */ +/* 235 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28937,7 +29045,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 235 */ +/* 236 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28961,7 +29069,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 236 */ +/* 237 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28984,7 +29092,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 237 */ +/* 238 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -29004,7 +29112,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 238 */ +/* 239 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -29027,7 +29135,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 239 */ +/* 240 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -29050,7 +29158,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 240 */ +/* 241 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -29072,7 +29180,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 241 */ +/* 242 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -29093,7 +29201,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 242 */ +/* 243 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -29115,7 +29223,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 243 */ +/* 244 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -29138,7 +29246,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 244 */ +/* 245 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -29161,7 +29269,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 245 */ +/* 246 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -29187,7 +29295,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 246 */ +/* 247 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -29213,7 +29321,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 247 */ +/* 248 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -29239,7 +29347,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 248 */ +/* 249 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -29265,7 +29373,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 249 */ +/* 250 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -29290,7 +29398,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 250 */ +/* 251 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -29317,7 +29425,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 251 */ +/* 252 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -29342,7 +29450,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 252 */ +/* 253 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -29373,7 +29481,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 253 */ +/* 254 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -29401,7 +29509,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 254 */ +/* 255 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -29430,7 +29538,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 255 */ +/* 256 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -29454,7 +29562,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 256 */ +/* 257 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -29480,7 +29588,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 257 */ +/* 258 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -29500,7 +29608,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 258 */ +/* 259 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -29520,7 +29628,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 259 */ +/* 260 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -29543,7 +29651,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 260 */ +/* 261 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -29568,7 +29676,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 261 */ +/* 262 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -29591,7 +29699,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 262 */ +/* 263 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -29615,7 +29723,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 263 */ +/* 264 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -29640,7 +29748,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 264 */ +/* 265 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -29663,7 +29771,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 265 */ +/* 266 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -29684,7 +29792,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 266 */ +/* 267 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -29708,7 +29816,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 267 */ +/* 268 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -29732,7 +29840,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 268 */ +/* 269 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -29758,7 +29866,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 269 */ +/* 270 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -29781,7 +29889,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 270 */ +/* 271 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -29803,7 +29911,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 271 */ +/* 272 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -29833,7 +29941,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 272 */ +/* 273 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -29864,7 +29972,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 273 */ +/* 274 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -29889,7 +29997,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 274 */ +/* 275 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -29913,7 +30021,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 275 */ +/* 276 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -29936,7 +30044,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 276 */ +/* 277 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -29967,7 +30075,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 277 */ +/* 278 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -29988,7 +30096,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 278 */ +/* 279 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -30011,7 +30119,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 279 */ +/* 280 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -30040,7 +30148,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 280 */ +/* 281 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -30058,7 +30166,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 281 */ +/* 282 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -30079,7 +30187,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 282 */ +/* 283 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -30100,7 +30208,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 283 */ +/* 284 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -30120,7 +30228,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 284 */ +/* 285 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -30140,7 +30248,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 285 */ +/* 286 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -30166,7 +30274,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 286 */ +/* 287 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -30191,7 +30299,7 @@ return /******/ (function(modules) { // webpackBootstrap }; /***/ }, -/* 287 */ +/* 288 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -30216,7 +30324,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 288 */ +/* 289 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -30238,7 +30346,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 289 */ +/* 290 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -30265,7 +30373,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 290 */ +/* 291 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -30293,7 +30401,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 291 */ +/* 292 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -30319,7 +30427,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 292 */ +/* 293 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -30346,7 +30454,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 293 */ +/* 294 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -30372,7 +30480,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 294 */ +/* 295 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -30400,7 +30508,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 295 */ +/* 296 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -30434,7 +30542,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 296 */ +/* 297 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -30467,7 +30575,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 297 */ +/* 298 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -30495,7 +30603,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 298 */ +/* 299 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -30529,7 +30637,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 299 */ +/* 300 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -30559,7 +30667,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 300 */ +/* 301 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -30592,7 +30700,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 301 */ +/* 302 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -30622,7 +30730,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 302 */ +/* 303 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -30655,7 +30763,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 303 */ +/* 304 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -30678,7 +30786,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 304 */ +/* 305 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -30699,7 +30807,7 @@ return /******/ (function(modules) { // webpackBootstrap }; /***/ }, -/* 305 */ +/* 306 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -30722,7 +30830,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 306 */ +/* 307 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -30742,7 +30850,7 @@ return /******/ (function(modules) { // webpackBootstrap }; /***/ }, -/* 307 */ +/* 308 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -30766,7 +30874,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 308 */ +/* 309 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -30787,7 +30895,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 309 */ +/* 310 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -30811,7 +30919,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 310 */ +/* 311 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -30832,7 +30940,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 311 */ +/* 312 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -30855,7 +30963,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 312 */ +/* 313 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -30876,7 +30984,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 313 */ +/* 314 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -30899,7 +31007,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 314 */ +/* 315 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -30920,7 +31028,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 315 */ +/* 316 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -30947,7 +31055,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 316 */ +/* 317 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -30973,7 +31081,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 317 */ +/* 318 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -30995,7 +31103,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 318 */ +/* 319 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -31018,7 +31126,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 319 */ +/* 320 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -31041,7 +31149,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 320 */ +/* 321 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -31064,7 +31172,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 321 */ +/* 322 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -31087,7 +31195,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 322 */ +/* 323 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -31110,7 +31218,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 323 */ +/* 324 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -31133,7 +31241,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 324 */ +/* 325 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -31159,7 +31267,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 325 */ +/* 326 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -31180,7 +31288,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 326 */ +/* 327 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -31205,7 +31313,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 327 */ +/* 328 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -31227,7 +31335,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 328 */ +/* 329 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -31248,7 +31356,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 329 */ +/* 330 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -31270,7 +31378,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 330 */ +/* 331 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -31288,7 +31396,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 331 */ +/* 332 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -31308,7 +31416,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 332 */ +/* 333 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -31326,7 +31434,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 333 */ +/* 334 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -31348,7 +31456,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 334 */ +/* 335 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -31367,7 +31475,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 335 */ +/* 336 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -31389,7 +31497,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 336 */ +/* 337 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -31410,7 +31518,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 337 */ +/* 338 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -31623,7 +31731,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 338 */ +/* 339 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -31656,7 +31764,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 339 */ +/* 340 */ /***/ function(module, exports, __webpack_require__) { // function utils @@ -31685,7 +31793,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 340 */ +/* 341 */ /***/ function(module, exports, __webpack_require__) { var __WEBPACK_AMD_DEFINE_RESULT__;/*! decimal.js v4.0.2 https://github.com/MikeMcl/decimal.js/LICENCE */ @@ -35751,7 +35859,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 341 */ +/* 342 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -35763,7 +35871,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 342 */ +/* 343 */ /***/ function(module, exports, __webpack_require__) { 'use strict' @@ -36065,7 +36173,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 343 */ +/* 344 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -36237,6 +36345,9 @@ return /******/ (function(modules) { // webpackBootstrap 'im': '\\Im\\left\\lbrace%0%\\right\\rbrace', 're': '\\Re\\left\\lbrace%0%\\right\\rbrace', + //combinatorics + 'stirlingS2': '\\mathrm{S}\\left(%0%,%1%\\right)', + //construction 'bignumber': { 0: '0', diff --git a/dist/math.map b/dist/math.map index 537da701a..69f7fac29 100644 --- a/dist/math.map +++ b/dist/math.map @@ -1 +1 @@ -{"version":3,"file":"math.map","sources":["math.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","create","config","Object","Error","math","_config","matrix","number","precision","epsilon","options","object","deepExtend","type","BigNumber","defaultType","decimals","clone","constructor","prototype","toJSON","mathjs","value","toString","fromJSON","json","convert","digits","error","Complex","Range","Index","Matrix","Unit","Help","ResultSet","collection","CcsMatrix","CrsMatrix","DenseMatrix","_storage","ccs","crs","dense","expression","node","parse","Parser","docs","reviver","ifElse","transform","concat","filter","forEach","index","map","max","mean","min","range","subset","chaining","Chain","Selector","window","x","undefined","Array","isArray","Number","valueOf","String","Boolean","Date","RegExp","TypeError","key","hasOwnProperty","extend","a","b","prop","deepEqual","i","len","length","canDefineProperty","defineProperty","e","lazy","fn","_value","_uninitialized","get","set","configurable","NumberFormatter","isNumber","isInteger","Math","round","sign","format","Infinity","isNaN","notation","toFixed","toExponential","toPrecision","exponential","replace","arguments","DBL_EPSILON","EPSILON","nearlyEqual","y","isFinite","diff","abs","bignumber","UNINITIALIZED","NaN","pi","tau","phi","ln","div","sqrt","PI","E","LN2","LN10","LOG2E","LOG10E","SQRT1_2","SQRT2","version","ArgumentsError","DimensionError","IndexError","UnsupportedTypeError","re","im","SyntaxError","arg","construct","fromPolar","r","skipWhitespace","next","isDigitDot","isDigit","text","charAt","revert","oldIndex","parseNumber","parseComplex","cnext","util","isUnit","isString","string","isComplex","str","first","separator","second","substring","args","hasBase","BASE_UNITS","ANGLE","toNumber","cos","sin","toPolar","atan2","equals","other","strRe","strIm","pow","start","end","step","parseFloat","array","split","nums","invalid","some","num","isRange","size","ceil","callback","obj","toArray","ranges","_ranges","_isScalar","ii","push","_createRange","primitive","isIndex","apply","values","dim","isScalar","row","strings","join","isMatrix","storage","replacement","defaultValue","resize","skipZeros","transpose","trace","multiply","name","res","_findUnit","unit","prefix","UNIT_NONE","PREFIX_NONE","_normalize","fixPrefix","parseUnit","unitName","UNITS","endsWith","prefixLen","prefixName","prefixes","err","offset","_denormalize","prefixValue","isValuelessUnit","base","equalBase","to","valuelessUnit","bestPrefix","_bestPrefix","absValue","bestDiff","log","scientific","PREFIXES","NONE","SHORT","da","h","k","M","G","T","P","Z","Y","d","u","n","f","z","LONG","deca","hecto","kilo","mega","giga","tera","peta","exa","zetta","yotta","deci","centi","milli","micro","nano","pico","femto","atto","zepto","yocto","SQUARED","CUBIC","BINARY_SHORT","Ki","Mi","Gi","Ti","Pi","Ei","Zi","Yi","BINARY_LONG","kibi","mebi","gibi","tebi","pebi","exi","zebi","yobi","LENGTH","MASS","TIME","CURRENT","TEMPERATURE","LUMINOUS_INTENSITY","AMOUNT_OF_SUBSTANCE","FORCE","SURFACE","VOLUME","BIT","BASE_UNIT_NONE","meter","inch","foot","yard","mile","link","rod","chain","angstrom","in","ft","yd","mi","li","rd","ch","mil","m2","sqin","sqft","sqyd","sqmi","sqrd","sqch","sqmil","m3","L","l","litre","cuin","cuft","cuyd","teaspoon","tablespoon","drop","gtt","minim","fluiddram","fluidounce","gill","cc","cup","pint","quart","gallon","beerbarrel","oilbarrel","hogshead","fldr","floz","gi","cp","pt","qt","gal","bbl","obl","g","gram","ton","tonne","grain","dram","ounce","poundmass","hundredweight","stick","stone","gr","dr","oz","lbm","cwt","s","sec","minute","hour","day","rad","deg","grad","cycle","A","ampere","K","degC","degF","degR","kelvin","celsius","fahrenheit","rankine","mol","mole","cd","candela","N","newton","lbf","poundforce","bits","B","bytes","PLURALS","meters","inches","feet","yards","miles","links","rods","chains","angstroms","litres","teaspoons","tablespoons","minims","fluiddrams","fluidounces","gills","cups","pints","quarts","gallons","beerbarrels","oilbarrels","hogsheads","gtts","grams","tons","tonnes","grains","drams","ounces","poundmasses","hundredweights","sticks","seconds","minutes","hours","days","radians","degrees","gradients","cycles","amperes","moles","plural","lt","liter","liters","lb","lbs","doc","isHelp","toText","desc","category","description","syntax","examples","parser","expr","eval","seealso","entries","_reduce","mat","ret","val","tran","_switch","j","I","J","tmp","argsToArray","isCollection","deepMap","deepMap2","array1","array2","reduce","deepForEach","validateIndex","data","_values","_index","_ptr","_size","_createFromArray","ptr","types","rows","columns","v","equal","_getsubset","_setsubset","_map","submatrix","sSize","iSize","outer","unsqueeze","x0","y0","_getValueIndex","_resize","_remove","_insert","top","bottom","splice","copy","ins","k0","k1","me","invoke","minRow","maxRow","minColumn","maxColumn","_toArray","RangeError","diagonal","kSuper","kSub","cv","sum","add","_multiply","left","right","rv","_data","preprocess","_get","_getSubmatrix","dims","last","child","_set","_fit","_setSubmatrix","dataIndex","subIndex","newSize","changed","elem","index_i","recurse","transposedRow","transposed","vector","cols","_multiplyVector","_multiplyMatrix","_multiplyVectorVector","_multiplyVectorMatrix","result","_multiplyMatrixVector","_multiplyMatrixMatrix","ArrayNode","AssignmentNode","BlockNode","ConditionalNode","ConstantNode","IndexNode","FunctionAssignmentNode","FunctionNode","Node","OperatorNode","RangeNode","SymbolNode","UpdateNode","extra_nodes","nodes","parseStart","nesting_level","conditional_level","nextPreview","nextNextPreview","getToken","token_type","TOKENTYPE","NULL","token","DELIMITER","c2","c3","DELIMITERS","isAlpha","NAMED_DELIMITERS","SYMBOL","UNKNOWN","createSyntaxError","NUMBER","getTokenSkipNewline","openParams","closeParams","parseBlock","createError","visible","blocks","parseFunctionAssignment","parseAssignment","valid","parseConditional","parseLogicalOr","prev","condition","trueExpr","falseExpr","parseLogicalXor","parseLogicalAnd","parseBitwiseOr","parseBitwiseXor","parseBitwiseAnd","parseRelational","operators","params","parseShift","==","!=","<",">","<=",">=","parseConversion","<<",">>",">>>","parseRange","parseAddSubtract","parseMultiplyDivide","+","-","parseUnary","*",".*","/","./","%","mod","~","not","parsePow","parseLeftHandOperators","parseCustomNodes","!","'","handler","parseSymbol","parseFunctions","parseIndex","parseString","tPrev","parseMatrix","parseRow","parseParentheses","parseEnd","col","message",",","(",")","[","]","\"",";","^",".^","&","|","^|","=",":","?","and","xor","or","scope","_parse","compile","remove","clear","cube","divide","dotDivide","dotMultiply","dotPow","exp","fix","floor","gcd","lcm","log10","norm","nthRoot","square","subtract","unaryMinus","unaryPlus","xgcd","bitAnd","bitNot","bitOr","bitXor","leftShift","rightArithShift","rightLogShift","conj","complex","help","cross","det","diag","dot","eye","flatten","inv","ones","squeeze","zeros","combinations","factorial","gamma","permutations","pickRandom","random","randomInt","compare","larger","largerEq","smaller","smallerEq","unequal","median","prod","std","acos","acosh","acot","acoth","acsc","acsch","asec","asech","asin","asinh","atan","atanh","cosh","cot","coth","csc","csch","sech","sinh","tan","tanh","sort","errorTransform","lastIndex","minus","isBoolean","_filter","test","_scope","symbol","sub","eq","rawArgs","_forEachArray","arrayOrig","_mapArray","arrayIn","createProxy","slice","done","bool","isZero","lcase","toLowerCase","select","console","search","plus","times","_divideComplex","den","_divide","edivide","emultiply","epow","isNegative","_bigGcd","isInt","zero","neg","_bigLcm","t","_mod","_multiplyComplex","mf","sizeX","POSITIVE_INFINITY","NEGATIVE_INFINITY","_nthRoot","_root","iMax","delta","_nthRootBig","one","negated","xPrev","powComplex","temp1","temp2","px","roundNumber","toDecimalPlaces","cmp","unary","_xgcd","q","lastx","lasty","_bigXgcd","bigBitAnd","bigBitNot","bigBitOr","bigBitXor","bigLeftShift","bigRightShift","rightShift","_concat","concatDim","prevDim","asMatrix","matrices","shift","_cross","xSize","ySize","_det","compute_mu","mu","fa","ms","F","_dot","asBigNumber","minimum","flat","_inv","temp","Ac","Bc","Ar","Br","_range","_rangeInc","_bigRange","gt","_bigRangeInc","lte","gte","includeEnd","pop","_resizeString","defaultChar","asArray","_getSubset","_getSubstring","strLen","substr","_setSubset","_setSubstring","chars","preciseFacs","isNonNegativeInteger","smallBigFacs","toSD","Big","bigBigFacs","twoN","threeN","fourN","fiveN","real","twoPiSqrt","distribution","arity","isPositiveInteger","dividedBy","_deepEqual","largereq","smallereq","_getSmaller","_min","_getLarger","_max","_nmean","_mean","_median","middle","_prod","normalization","variance","_sum","_var","DEFAULT_NORMALIZATION","bigArcCos","arccos_arcsec","temp3","temp4","bigAcosh","acosh_asinh_asech_acsch","bigArcCot","arctan_arccot","halfPi","bigAcoth","atanh_acoth","bigArcCsc","arcsin_arccsc","bigAcsch","bigArcSec","bigAsech","bigArcSin","bigAsinh","bigArcTan","atan2Big","arctan2","bigAtanh","noIM","oneMinus","onePlus","bigCos","cos_sin_sec_csc","bigCosh","cosh_sinh_csch_sech","ep","en","bigCot","tan_cot","bigCoth","tanh_coth","bigCsc","bigCsch","bigSec","bigSech","bigSin","bigSinh","cim","sim","bigTan","bigTanh","entry","_import","override","wrap","isSupportedType","math_import","opts","_module","print","template","original","keys","_compare","match","coefficients","exponent","indexOf","parseInt","arr","rounded","roundDigits","pp","lower","upper","unshift","removed","bitwise","func","xBits","yBits","xSign","ySign","decCoefficientToBinaryString","minBits","maxBits","minSign","shortLen","longLen","expFuncVal","outVal","twoPower","ONE","two","prevPrec","xe","strL","arrL","reverse","arcsin_newton","oldPrecision","tolerance","maxp","localPrecision","maxIter","curr","tmp0","tmp1","sinToCos","tmp2","toDP","arcsin_taylor","yPrev","x2","polyNum","constNum","constDen","bigK","arctan_taylor","cos_sin_taylor","mode","reduceToPeriod","dp","sinVal","memoize","isBigNumber","pi4th","isNegtive","negOne","reciprocal","absX","wasReduced","x2PlusOrMinus","isNeg","precPlusGuardDigits","five","sixteen","twenty","ret2","ret3","ret5","div_factor","loops","eight","ret4","posExp","negExp","toExpNeg","toExpPos","toSignificantDigits","_validate","dimNext","oldLen","newLen","minLen","_squeeze","_unsqueeze","validate","_defaultValue","count","stack","actual","expected","relation","formatArray","every","isNode","_compile","defs","_ifNode","_toTex","callbacks","latexType","childNode","toTex","keywords","latex","precedence","getPrecedence","exprPrecedence","toSymbol","block","param","js","testCondition","conditionPrecedence","truePrecedence","falsePrecedence","valueType","SUPPORTED_TYPES","boolean","null","compileSubset","someUseEnd","rangesUseEnd","useEnd","objectName","variable","isRaw","paramsName","toFunction","getIdentifier","_validateScope","_transform","transformed","code","defsCode","factoryCode","Function","traverse","_traverse","path","parent","find","customTex","op","calculateNecessaryParentheses","associativity","getAssociativity","operandPrecedence","operandIdentifier","rootIdentifier","properties","latexLeftParens","latexParens","lhsParens","lhsPrecedence","assocWithLhs","isAssociativeWith","rhsParens","rhsPrecedence","assocWithRhs","lhsIdentifier","rhsIdentifier","latexRightParens","parens","assoc","operand","lhs","rhs","lhsTex","rhsTex","startPrecedence","stepPrecedence","endPrecedence","undef","webpackContext","req","webpackContextResolve","./clone","./clone.js","./filter","./filter.js","./forEach","./forEach.js","./format","./format.js","./import","./import.js","./map","./map.js","./print","./print.js","./sort","./sort.js","./typeof","./typeof.js","resolve","distributions","randFunctions","arg1","arg2","arg3","_randomDataForMatrix","_random","_randomInt","possibles","randFunc","uniform","normal","u1","u2","picked","cache","hash","JSON","stringify","__WEBPACK_AMD_DEFINE_RESULT__","global","coefficientToString","LOGBASE","charCodeAt","checkRoundingDigits","rm","repeating","ci","mathpow","checkRM","method","Decimal","outOfRange","ifExceptionsThrow","checkArg","MAX_DIGITS","pr","denom","guard","sd","rep","external","rnd","getCoeffLength","more","intPow","c0","x1","xc","xci","out","mathfloor","BASE","convertBase","decimal","crypto","NUMERALS","EXP_LIMIT","INT_POW_LIMIT","yc","base10","inf","sd10","xLTy","half","pos","groupSeparator","g1","g2","intPart","fractionPart","intDigits","maxD","d0","d2","frac","n0","n1","d1","yN","toBaseOut","baseIn","baseOut","multiplyInteger","carry","aL","bL","logbase","prodL","qc","rem","remL","rem0","xi","xL","yc0","yL","yz","maxOrMin","ltgt","rand","Uint32Array","decimalFactory","parseDecimal","decimalSeparator","groupSize","secondaryGroupSize","fractionGroupSeparator","fractionGroupSize","isValid","trim","isNum","orig","identifier","property","nodeA","nodeB","identifierA","identifierB","associativeWith","OperatorNode:or","OperatorNode:xor","OperatorNode:and","OperatorNode:bitOr","OperatorNode:bitXor","OperatorNode:bitAnd","OperatorNode:equal","OperatorNode:unequal","OperatorNode:smaller","OperatorNode:larger","OperatorNode:smallerEq","OperatorNode:largerEq","OperatorNode:leftShift","OperatorNode:rightArithShift","OperatorNode:rightLogShift","OperatorNode:to","OperatorNode:add","OperatorNode:subtract","OperatorNode:multiply","OperatorNode:divide","OperatorNode:dotMultiply","OperatorNode:dotDivide","OperatorNode:mod","OperatorNode:unaryPlus","OperatorNode:unaryMinus","OperatorNode:bitNot","OperatorNode:not","OperatorNode:pow","OperatorNode:dotPow","OperatorNode:factorial","OperatorNode:transpose","expandTemplate","symbols","Alpha","alpha","Beta","beta","Gamma","Delta","Epsilon","varepsilon","Zeta","zeta","Eta","eta","Theta","theta","vartheta","Iota","iota","Kappa","kappa","varkappa","Lambda","lambda","Mu","Nu","nu","Xi","Omicron","omicron","varpi","Rho","rho","varrho","Sigma","sigma","varsigma","Tau","Upsilon","upsilon","Phi","varphi","Chi","chi","Psi","psi","Omega","omega","true","false","Inf","infinity","oo","lim","defaultTemplate","functions",1,2,"var","import","typeof","units","latexConverter"],"mappings":"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,IAAIa,EAAMC,IAIzCd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAG9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAG9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAG9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAG9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAG9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAG9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAI/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAG/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAG/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB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W,SAAU,YAAa,WAAY,UAAW,eAOjE,SAASvf,EAAQD,EAASM,GAE/BL,EAAOD,SACL+O,KAAQ,MACRkQ,SAAY,aACZE,QACE,oBACA,SACA,eAEFD,YAAe,iDACfE,UACE,kBACA,oBACA,oBACA,uBACA,uBACA,gCACA,iCAEFI,SACE,OACA,SACA,MACA,OACA,MACA,MACA,SAOC,SAASvf,EAAQD,EAASM,GAE/BL,EAAOD,SACL+O,KAAQ,OACRkQ,SAAY,aACZE,QACE,qBACA,UACA,gBAEFD,YAAe,mDACfE,UACE,mBACA,qBACA,qBACA,wBACA,wBACA,8BAEFI,SACE,MACA,SACA,MACA,OACA,MACA,MACA,SAOC,SAASvf,EAAQD,EAASM,GAE/BL,EAAOD,SACL+O,KAAQ,SACRkQ,SAAY,aACZE,QACE,uBACA,aAEFD,YAAe,mLACfE,UACE,kBACA,yBAEFI,SACE,MACA,OACA,MACA,OACA,MACA,MACA,SAOC,SAASvf,EAAQD,EAASM,GAE/BL,EAAOD,SACL+O,KAAQ,MACRkQ,SAAY,aACZE,QACE,oBACA,SACA,eAEFD,YAAe,iDACfE,UACE,kBACA,oBACA,oBACA,uBACA,uBACA,gCACA,iCAEFI,SACE,MACA,OACA,SACA,OACA,MACA,MACA,SAOC,SAASvf,EAAQD,EAASM,GAE/BL,EAAOD,SACL+O,KAAQ,OACRkQ,SAAY,aACZE,QACE,qBACA,WAEFD,YAAe,qCACfE,UACE,gBACA,kBACA,sBAEFI,SACE,MACA,OACA,MACA,SACA,MACA,MACA,MACA,SAOC,SAASvf,EAAQD,EAASM,GAE/BL,EAAOD,SACL+O,KAAQ,MACRkQ,SAAY,aACZE,QACE,oBACA,SACA,yBAEFD,YAAe,4KACfE,UACE,eACA,oBACA,mCACA,8BACA,2BAEFI,SACE,MACA,OACA,MACA,SACA,MACA,OACA,MACA,SAOC,SAASvf,EAAQD,EAASM,GAE/BL,EAAOD,SACL+O,KAAQ,MACRkQ,SAAY,aACZE,QACE,oBACA,UAEFD,YAAe,iCACfE,UACE,kBACA,oBACA,qBAEFI,SACE,MACA,OACA,SACA,MACA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"} \ No newline at end of file +{"version":3,"file":"math.map","sources":["math.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","create","config","Object","Error","math","_config","matrix","number","precision","epsilon","options","object","deepExtend","type","BigNumber","defaultType","decimals","clone","constructor","prototype","toJSON","mathjs","value","toString","fromJSON","json","convert","digits","error","Complex","Range","Index","Matrix","Unit","Help","ResultSet","collection","CcsMatrix","CrsMatrix","DenseMatrix","_storage","ccs","crs","dense","expression","node","parse","Parser","docs","reviver","ifElse","transform","concat","filter","forEach","index","map","max","mean","min","range","subset","chaining","Chain","Selector","window","x","undefined","Array","isArray","Number","valueOf","String","Boolean","Date","RegExp","TypeError","key","hasOwnProperty","extend","a","b","prop","deepEqual","i","len","length","canDefineProperty","defineProperty","e","lazy","fn","_value","_uninitialized","get","set","configurable","NumberFormatter","isNumber","isInteger","Math","round","sign","format","Infinity","isNaN","notation","toFixed","toExponential","toPrecision","exponential","replace","arguments","DBL_EPSILON","EPSILON","nearlyEqual","y","isFinite","diff","abs","bignumber","UNINITIALIZED","NaN","pi","tau","phi","ln","div","sqrt","PI","E","LN2","LN10","LOG2E","LOG10E","SQRT1_2","SQRT2","version","ArgumentsError","DimensionError","IndexError","UnsupportedTypeError","re","im","SyntaxError","arg","construct","fromPolar","r","skipWhitespace","next","isDigitDot","isDigit","text","charAt","revert","oldIndex","parseNumber","parseComplex","cnext","util","isUnit","isString","string","isComplex","str","first","separator","second","substring","args","hasBase","BASE_UNITS","ANGLE","toNumber","cos","sin","toPolar","atan2","equals","other","strRe","strIm","pow","start","end","step","parseFloat","array","split","nums","invalid","some","num","isRange","size","ceil","callback","obj","toArray","ranges","_ranges","_isScalar","ii","push","_createRange","primitive","isIndex","apply","values","dim","isScalar","row","strings","join","isMatrix","storage","replacement","defaultValue","resize","skipZeros","transpose","trace","multiply","name","res","_findUnit","unit","prefix","UNIT_NONE","PREFIX_NONE","_normalize","fixPrefix","parseUnit","unitName","UNITS","endsWith","prefixLen","prefixName","prefixes","err","offset","_denormalize","prefixValue","isValuelessUnit","base","equalBase","to","valuelessUnit","bestPrefix","_bestPrefix","absValue","bestDiff","log","scientific","PREFIXES","NONE","SHORT","da","h","k","M","G","T","P","Z","Y","d","u","n","f","z","LONG","deca","hecto","kilo","mega","giga","tera","peta","exa","zetta","yotta","deci","centi","milli","micro","nano","pico","femto","atto","zepto","yocto","SQUARED","CUBIC","BINARY_SHORT","Ki","Mi","Gi","Ti","Pi","Ei","Zi","Yi","BINARY_LONG","kibi","mebi","gibi","tebi","pebi","exi","zebi","yobi","LENGTH","MASS","TIME","CURRENT","TEMPERATURE","LUMINOUS_INTENSITY","AMOUNT_OF_SUBSTANCE","FORCE","SURFACE","VOLUME","BIT","BASE_UNIT_NONE","meter","inch","foot","yard","mile","link","rod","chain","angstrom","in","ft","yd","mi","li","rd","ch","mil","m2","sqin","sqft","sqyd","sqmi","sqrd","sqch","sqmil","m3","L","l","litre","cuin","cuft","cuyd","teaspoon","tablespoon","drop","gtt","minim","fluiddram","fluidounce","gill","cc","cup","pint","quart","gallon","beerbarrel","oilbarrel","hogshead","fldr","floz","gi","cp","pt","qt","gal","bbl","obl","g","gram","ton","tonne","grain","dram","ounce","poundmass","hundredweight","stick","stone","gr","dr","oz","lbm","cwt","s","sec","minute","hour","day","rad","deg","grad","cycle","A","ampere","K","degC","degF","degR","kelvin","celsius","fahrenheit","rankine","mol","mole","cd","candela","N","newton","lbf","poundforce","bits","B","bytes","PLURALS","meters","inches","feet","yards","miles","links","rods","chains","angstroms","litres","teaspoons","tablespoons","minims","fluiddrams","fluidounces","gills","cups","pints","quarts","gallons","beerbarrels","oilbarrels","hogsheads","gtts","grams","tons","tonnes","grains","drams","ounces","poundmasses","hundredweights","sticks","seconds","minutes","hours","days","radians","degrees","gradients","cycles","amperes","moles","plural","lt","liter","liters","lb","lbs","doc","isHelp","toText","desc","category","description","syntax","examples","parser","expr","eval","seealso","entries","_reduce","mat","ret","val","tran","_switch","j","I","J","tmp","argsToArray","isCollection","deepMap","deepMap2","array1","array2","reduce","deepForEach","validateIndex","data","_values","_index","_ptr","_size","_createFromArray","ptr","types","rows","columns","v","equal","_getsubset","_setsubset","_map","submatrix","sSize","iSize","outer","unsqueeze","x0","y0","_getValueIndex","_resize","_remove","_insert","top","bottom","splice","copy","ins","k0","k1","me","invoke","minRow","maxRow","minColumn","maxColumn","_toArray","RangeError","diagonal","kSuper","kSub","cv","sum","add","_multiply","left","right","rv","_data","preprocess","_get","_getSubmatrix","dims","last","child","_set","_fit","_setSubmatrix","dataIndex","subIndex","newSize","changed","elem","index_i","recurse","transposedRow","transposed","vector","cols","_multiplyVector","_multiplyMatrix","_multiplyVectorVector","_multiplyVectorMatrix","result","_multiplyMatrixVector","_multiplyMatrixMatrix","ArrayNode","AssignmentNode","BlockNode","ConditionalNode","ConstantNode","IndexNode","FunctionAssignmentNode","FunctionNode","Node","OperatorNode","RangeNode","SymbolNode","UpdateNode","extra_nodes","nodes","parseStart","nesting_level","conditional_level","nextPreview","nextNextPreview","getToken","token_type","TOKENTYPE","NULL","token","DELIMITER","c2","c3","DELIMITERS","isAlpha","NAMED_DELIMITERS","SYMBOL","UNKNOWN","createSyntaxError","NUMBER","getTokenSkipNewline","openParams","closeParams","parseBlock","createError","visible","blocks","parseFunctionAssignment","parseAssignment","valid","parseConditional","parseLogicalOr","prev","condition","trueExpr","falseExpr","parseLogicalXor","parseLogicalAnd","parseBitwiseOr","parseBitwiseXor","parseBitwiseAnd","parseRelational","operators","params","parseShift","==","!=","<",">","<=",">=","parseConversion","<<",">>",">>>","parseRange","parseAddSubtract","parseMultiplyDivide","+","-","parseUnary","*",".*","/","./","%","mod","~","not","parsePow","parseLeftHandOperators","parseCustomNodes","!","'","handler","parseSymbol","parseFunctions","parseIndex","parseString","tPrev","parseMatrix","parseRow","parseParentheses","parseEnd","col","message",",","(",")","[","]","\"",";","^",".^","&","|","^|","=",":","?","and","xor","or","scope","_parse","compile","remove","clear","cube","divide","dotDivide","dotMultiply","dotPow","exp","fix","floor","gcd","lcm","log10","norm","nthRoot","square","subtract","unaryMinus","unaryPlus","xgcd","bitAnd","bitNot","bitOr","bitXor","leftShift","rightArithShift","rightLogShift","conj","complex","help","cross","det","diag","dot","eye","flatten","inv","ones","squeeze","zeros","combinations","factorial","gamma","permutations","pickRandom","random","randomInt","compare","larger","largerEq","smaller","smallerEq","unequal","median","prod","std","acos","acosh","acot","acoth","acsc","acsch","asec","asech","asin","asinh","atan","atanh","cosh","cot","coth","csc","csch","sech","sinh","tan","tanh","sort","errorTransform","lastIndex","minus","isBoolean","_filter","test","_scope","symbol","sub","eq","rawArgs","_forEachArray","arrayOrig","_mapArray","arrayIn","createProxy","slice","done","bool","isZero","lcase","toLowerCase","select","console","search","plus","times","_divideComplex","den","_divide","edivide","emultiply","epow","isNegative","_bigGcd","isInt","zero","neg","_bigLcm","t","_mod","_multiplyComplex","mf","sizeX","POSITIVE_INFINITY","NEGATIVE_INFINITY","_nthRoot","_root","iMax","delta","_nthRootBig","one","negated","xPrev","powComplex","temp1","temp2","px","roundNumber","toDecimalPlaces","cmp","unary","_xgcd","q","lastx","lasty","_bigXgcd","bigBitAnd","bigBitNot","bigBitOr","bigBitXor","bigLeftShift","bigRightShift","rightShift","stirlingS2","arity","kFactorial","denom","negativeOne","kChooseI","iPower","_concat","concatDim","prevDim","asMatrix","matrices","shift","_cross","xSize","ySize","_det","compute_mu","mu","fa","ms","F","_dot","asBigNumber","minimum","flat","_inv","temp","Ac","Bc","Ar","Br","_range","_rangeInc","_bigRange","gt","_bigRangeInc","lte","gte","includeEnd","pop","_resizeString","defaultChar","asArray","_getSubset","_getSubstring","strLen","substr","_setSubset","_setSubstring","chars","preciseFacs","isNonNegativeInteger","smallBigFacs","toSD","Big","bigBigFacs","twoN","threeN","fourN","fiveN","real","twoPiSqrt","distribution","isPositiveInteger","dividedBy","_deepEqual","largereq","smallereq","_getSmaller","_min","_getLarger","_max","_nmean","_mean","_median","middle","_prod","normalization","variance","_sum","_var","DEFAULT_NORMALIZATION","bigArcCos","arccos_arcsec","temp3","temp4","bigAcosh","acosh_asinh_asech_acsch","bigArcCot","arctan_arccot","halfPi","bigAcoth","atanh_acoth","bigArcCsc","arcsin_arccsc","bigAcsch","bigArcSec","bigAsech","bigArcSin","bigAsinh","bigArcTan","atan2Big","arctan2","bigAtanh","noIM","oneMinus","onePlus","bigCos","cos_sin_sec_csc","bigCosh","cosh_sinh_csch_sech","ep","en","bigCot","tan_cot","bigCoth","tanh_coth","bigCsc","bigCsch","bigSec","bigSech","bigSin","bigSinh","cim","sim","bigTan","bigTanh","entry","_import","override","wrap","isSupportedType","math_import","opts","_module","print","template","original","keys","_compare","bitwise","func","xBits","yBits","xSign","ySign","decCoefficientToBinaryString","minBits","maxBits","minSign","shortLen","longLen","expFuncVal","outVal","twoPower","ONE","two","prevPrec","xe","strL","arr","arrL","reverse","arcsin_newton","oldPrecision","tolerance","maxp","localPrecision","maxIter","curr","tmp0","tmp1","sinToCos","tmp2","toDP","arcsin_taylor","yPrev","x2","polyNum","constNum","constDen","bigK","arctan_taylor","cos_sin_taylor","mode","reduceToPeriod","dp","sinVal","memoize","isBigNumber","pi4th","isNegtive","negOne","reciprocal","absX","wasReduced","x2PlusOrMinus","isNeg","precPlusGuardDigits","five","sixteen","twenty","ret2","ret3","ret5","div_factor","loops","eight","ret4","posExp","negExp","lower","upper","toExpNeg","toExpPos","toSignificantDigits","_validate","dimNext","oldLen","newLen","minLen","_squeeze","_unsqueeze","validate","_defaultValue","unshift","count","stack","actual","expected","relation","match","coefficients","exponent","indexOf","parseInt","rounded","roundDigits","pp","removed","formatArray","every","isNode","_compile","defs","_ifNode","_toTex","callbacks","latexType","childNode","toTex","keywords","latex","precedence","getPrecedence","exprPrecedence","toSymbol","block","param","js","testCondition","conditionPrecedence","truePrecedence","falsePrecedence","valueType","SUPPORTED_TYPES","boolean","null","compileSubset","someUseEnd","rangesUseEnd","useEnd","objectName","variable","isRaw","paramsName","toFunction","getIdentifier","_validateScope","_transform","transformed","code","defsCode","factoryCode","Function","traverse","_traverse","path","parent","find","customTex","op","calculateNecessaryParentheses","associativity","getAssociativity","operandPrecedence","operandIdentifier","rootIdentifier","properties","latexLeftParens","latexParens","lhsParens","lhsPrecedence","assocWithLhs","isAssociativeWith","rhsParens","rhsPrecedence","assocWithRhs","lhsIdentifier","rhsIdentifier","latexRightParens","parens","assoc","operand","lhs","rhs","lhsTex","rhsTex","startPrecedence","stepPrecedence","endPrecedence","undef","webpackContext","req","webpackContextResolve","./clone","./clone.js","./filter","./filter.js","./forEach","./forEach.js","./format","./format.js","./import","./import.js","./map","./map.js","./print","./print.js","./sort","./sort.js","./typeof","./typeof.js","resolve","distributions","randFunctions","arg1","arg2","arg3","_randomDataForMatrix","_random","_randomInt","possibles","randFunc","uniform","normal","u1","u2","picked","cache","hash","JSON","stringify","__WEBPACK_AMD_DEFINE_RESULT__","global","coefficientToString","LOGBASE","charCodeAt","checkRoundingDigits","rm","repeating","ci","mathpow","checkRM","method","Decimal","outOfRange","ifExceptionsThrow","checkArg","MAX_DIGITS","pr","guard","sd","rep","external","rnd","getCoeffLength","more","intPow","c0","x1","xc","xci","out","mathfloor","BASE","convertBase","decimal","crypto","NUMERALS","EXP_LIMIT","INT_POW_LIMIT","yc","base10","inf","sd10","xLTy","half","pos","groupSeparator","g1","g2","intPart","fractionPart","intDigits","maxD","d0","d2","frac","n0","n1","d1","yN","toBaseOut","baseIn","baseOut","multiplyInteger","carry","aL","bL","logbase","prodL","qc","rem","remL","rem0","xi","xL","yc0","yL","yz","maxOrMin","ltgt","rand","Uint32Array","decimalFactory","parseDecimal","decimalSeparator","groupSize","secondaryGroupSize","fractionGroupSeparator","fractionGroupSize","isValid","trim","isNum","orig","identifier","property","nodeA","nodeB","identifierA","identifierB","associativeWith","OperatorNode:or","OperatorNode:xor","OperatorNode:and","OperatorNode:bitOr","OperatorNode:bitXor","OperatorNode:bitAnd","OperatorNode:equal","OperatorNode:unequal","OperatorNode:smaller","OperatorNode:larger","OperatorNode:smallerEq","OperatorNode:largerEq","OperatorNode:leftShift","OperatorNode:rightArithShift","OperatorNode:rightLogShift","OperatorNode:to","OperatorNode:add","OperatorNode:subtract","OperatorNode:multiply","OperatorNode:divide","OperatorNode:dotMultiply","OperatorNode:dotDivide","OperatorNode:mod","OperatorNode:unaryPlus","OperatorNode:unaryMinus","OperatorNode:bitNot","OperatorNode:not","OperatorNode:pow","OperatorNode:dotPow","OperatorNode:factorial","OperatorNode:transpose","expandTemplate","symbols","Alpha","alpha","Beta","beta","Gamma","Delta","Epsilon","varepsilon","Zeta","zeta","Eta","eta","Theta","theta","vartheta","Iota","iota","Kappa","kappa","varkappa","Lambda","lambda","Mu","Nu","nu","Xi","Omicron","omicron","varpi","Rho","rho","varrho","Sigma","sigma","varsigma","Tau","Upsilon","upsilon","Phi","varphi","Chi","chi","Psi","psi","Omega","omega","true","false","Inf","infinity","oo","lim","defaultTemplate","functions",1,2,"var","import","typeof","units","latexConverter"],"mappings":"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,IAAIa,EAAMC,IAIzCd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAG9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAG9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAG9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAG9Bd,EAAoB,IAAIa,EAAMC,GAG9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAG9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAG9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAI/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAG/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAG/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB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,YACI,2FACJE,UACE,QACA,UACA,UACA,YACA,UACA,UACA,iBAEFI,SACE,QAAS,UAAW,UAAW,YAAa,WAAY,aAOvD,SAASvf,EAAQD,EAASM,GAE/BL,EAAOD,SACL+O,KAAQ,WACRkQ,SAAY,aACZE,QACE,SACA,kBAEFD,YACI,yGACJE,UACE,UACA,WACA,UACA,YACA,WAEFI,SACE,QAAS,UAAW,YAAa,UAAW,WAAY,aAOvD,SAASvf,EAAQD,EAASM,GAE/BL,EAAOD,SACL+O,KAAQ,UACRkQ,SAAY,aACZE,QACE,QACA,iBAEFD,YACI,mGACJE,UACE,QACA,UACA,UACA,YACA,UACA,iBAEFI,SACE,QAAS,UAAW,SAAU,YAAa,WAAY,aAOtD,SAASvf,EAAQD,EAASM,GAE/BL,EAAOD,SACL+O,KAAQ,YACRkQ,SAAY,aACZE,QACE,SACA,mBAEFD,YACI,0GACJE,UACE,UACA,WACA,UACA,YACA,WAEFI,SACE,QAAS,UAAW,SAAU,UAAW,WAAY,aAOpD,SAASvf,EAAQD,EAASM,GAE/BL,EAAOD,SACL+O,KAAQ,UACRkQ,SAAY,aACZE,QACE,SACA,iBAEFD,YACI,uGACJE,UACE,WACA,WACA,UACA,YACA,SACA,eACA,kBAEFI,SACE,QAAS,UAAW,SAAU,YAAa,WAAY,UAAW,eAOjE,SAASvf,EAAQD,EAASM,GAE/BL,EAAOD,SACL+O,KAAQ,MACRkQ,SAAY,aACZE,QACE,oBACA,SACA,eAEFD,YAAe,iDACfE,UACE,kBACA,oBACA,oBACA,uBACA,uBACA,gCACA,iCAEFI,SACE,OACA,SACA,MACA,OACA,MACA,MACA,SAOC,SAASvf,EAAQD,EAASM,GAE/BL,EAAOD,SACL+O,KAAQ,OACRkQ,SAAY,aACZE,QACE,qBACA,UACA,gBAEFD,YAAe,mDACfE,UACE,mBACA,qBACA,qBACA,wBACA,wBACA,8BAEFI,SACE,MACA,SACA,MACA,OACA,MACA,MACA,SAOC,SAASvf,EAAQD,EAASM,GAE/BL,EAAOD,SACL+O,KAAQ,SACRkQ,SAAY,aACZE,QACE,uBACA,aAEFD,YAAe,mLACfE,UACE,kBACA,yBAEFI,SACE,MACA,OACA,MACA,OACA,MACA,MACA,SAOC,SAASvf,EAAQD,EAASM,GAE/BL,EAAOD,SACL+O,KAAQ,MACRkQ,SAAY,aACZE,QACE,oBACA,SACA,eAEFD,YAAe,iDACfE,UACE,kBACA,oBACA,oBACA,uBACA,uBACA,gCACA,iCAEFI,SACE,MACA,OACA,SACA,OACA,MACA,MACA,SAOC,SAASvf,EAAQD,EAASM,GAE/BL,EAAOD,SACL+O,KAAQ,OACRkQ,SAAY,aACZE,QACE,qBACA,WAEFD,YAAe,qCACfE,UACE,gBACA,kBACA,sBAEFI,SACE,MACA,OACA,MACA,SACA,MACA,MACA,MACA,SAOC,SAASvf,EAAQD,EAASM,GAE/BL,EAAOD,SACL+O,KAAQ,MACRkQ,SAAY,aACZE,QACE,oBACA,SACA,yBAEFD,YAAe,4KACfE,UACE,eACA,oBACA,mCACA,8BACA,2BAEFI,SACE,MACA,OACA,MACA,SACA,MACA,OACA,MACA,SAOC,SAASvf,EAAQD,EAASM,GAE/BL,EAAOD,SACL+O,KAAQ,MACRkQ,SAAY,aACZE,QACE,oBACA,UAEFD,YAAe,iCACfE,UACE,kBACA,oBACA,qBAEFI,SACE,MACA,OACA,SACA,MACA,OACA,MACA,MACA,SAOC,SAASvf,EAAQD,EAASM,GAE/BL,EAAOD,SACL+O,KAAQ,MACRkQ,SAAY,aACZE,QACE,oBACA,SACA,yBAEFD,YAAe,gIACfE,UACE,eACA,oBACA,mCACA,8BACA,2BAEFI,SACE,MACA,OACA,MACA,SACA,MACA,OACA,MACA,SAOC,SAASvf,EAAQD,EAASM,GAE/BL,EAAOD,SACL+O,KAAQ,OACRkQ,SAAY,eACZE,QACE,WAEFD,YAAe,oDACfE,UACE,YACA,kBAEFI,SACE,MACA,OACA,UAOC,SAASvf,EAAQD,EAASM,GAE/BL,EAAOD,SACL+O,KAAQ,QACRkQ,SAAY,eACZE,QACE,YAEFD,YAAe,6FACfE,UACE,cAEFI,SACE,OACA,QACA,WAMC,SAASvf,EAAQD,EAASM,GAE/BL,EAAOD,SACL+O,KAAQ,OAC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"} \ No newline at end of file diff --git a/dist/math.min.js b/dist/math.min.js index 4653ed763..7dca8af4f 100644 --- a/dist/math.min.js +++ b/dist/math.min.js @@ -7,7 +7,7 @@ * mathematical functions, and a flexible expression parser. * * @version 1.6.1-SNAPSHOT - * @date 2015-04-22 + * @date 2015-05-02 * * @license * Copyright (C) 2013-2015 Jos de Jong @@ -24,20 +24,19 @@ * License for the specific language governing permissions and limitations under * the License. */ -!function(e,r){"object"==typeof exports&&"object"==typeof module?module.exports=r():"function"==typeof define&&define.amd?define(r):"object"==typeof exports?exports.math=r():e.math=r()}(this,function(){return function(e){function r(n){if(t[n])return t[n].exports;var i=t[n]={exports:{},id:n,loaded:!1};return e[n].call(i.exports,i,i.exports,r),i.loaded=!0,i.exports}var t={};return r.m=e,r.c=t,r.p="",r(0)}([function(e,r,t){e.exports=t(1)},function(e,r,t){"use strict";function n(e){if("function"!=typeof Object.create)throw new Error("ES5 not supported by this JavaScript engine. Please load the es5-shim and es5-sham library for compatibility.");var r={},a={matrix:"matrix",number:"number",precision:64,epsilon:1e-14};r.config=function(e){if(e){if(i.deepExtend(a,e),e.precision&&r.type.BigNumber.config({precision:e.precision}),t(4)(r,a),e.number&&e.number.defaultType)throw new Error("setting `number.defaultType` is deprecated. Use `number` instead.");if(e.number&&e.number.precision)throw new Error("setting `number.precision` is deprecated. Use `precision` instead.");if(e.matrix&&e.matrix.defaultType)throw new Error("setting `matrix.defaultType` is deprecated. Use `matrix` instead.");if(e.matrix&&e.matrix["default"])throw new Error("setting `matrix.default` is deprecated. Use `matrix` instead.");if(e.decimals)throw new Error("setting `decimals` is deprecated. Use `precision` instead.")}return i.clone(a)},r.create=n;var s=t(5).constructor();if(s.prototype.toJSON=function(){return{mathjs:"BigNumber",value:this.toString()}},s.fromJSON=function(e){return new s(e.value)},"function"!=typeof s.prototype.clone&&(s.prototype.clone=function(){return this}),"function"==typeof s.convert)throw new Error("Cannot add function convert to BigNumber: function already exists");return s.convert=function(e){return o(e)>15?e:new s(e)},r.error=t(6),r.type={},r.type.Complex=t(7),r.type.Range=t(8),r.type.Index=t(9),r.type.Matrix=t(10)(a),r.type.Unit=t(11),r.type.Help=t(12),r.type.ResultSet=t(13),r.type.BigNumber=s,r.collection=t(14)(r,a),r.type.CcsMatrix=t(15)(r,a),r.type.CrsMatrix=t(16)(r,a),r.type.DenseMatrix=t(17)(r,a),r.type.Matrix._storage.ccs=r.type.CcsMatrix,r.type.Matrix._storage.crs=r.type.CrsMatrix,r.type.Matrix._storage.dense=r.type.DenseMatrix,r.type.Matrix._storage["default"]=r.type.DenseMatrix,r.expression={},r.expression.node=t(18),r.expression.parse=t(19)(r,a),r.expression.Parser=t(20)(r,a),r.expression.docs=t(21),r.json={reviver:t(22)(r,a)},t(34)(r,a),t(35)(r,a),t(36)(r,a),t(37)(r,a),t(38)(r,a),t(39)(r,a),t(40)(r,a),t(41)(r,a),t(42)(r,a),t(43)(r,a),t(44)(r,a),t(45)(r,a),t(46)(r,a),t(47)(r,a),t(48)(r,a),t(49)(r,a),t(50)(r,a),t(51)(r,a),t(52)(r,a),t(53)(r,a),t(54)(r,a),t(55)(r,a),t(56)(r,a),t(57)(r,a),t(58)(r,a),t(59)(r,a),t(60)(r,a),t(61)(r,a),t(62)(r,a),t(63)(r,a),t(64)(r,a),t(65)(r,a),t(66)(r,a),t(67)(r,a),t(68)(r,a),t(69)(r,a),t(70)(r,a),t(71)(r,a),t(72)(r,a),t(73)(r,a),t(74)(r,a),t(75)(r,a),t(76)(r,a),t(77)(r,a),t(78)(r,a),t(79)(r,a),t(80)(r,a),t(81)(r,a),t(82)(r,a),t(83)(r,a),t(84)(r,a),t(85)(r,a),t(86)(r,a),t(87)(r,a),t(88)(r,a),t(89)(r,a),t(90)(r,a),t(91)(r,a),t(92)(r,a),t(93)(r,a),t(94)(r,a),t(95)(r,a),t(96)(r,a),t(97)(r,a),t(98)(r,a),t(99)(r,a),t(100)(r,a),t(101)(r,a),t(102)(r,a),t(103)(r,a),t(104)(r,a),t(105)(r,a),t(106)(r,a),t(107)(r,a),t(108)(r,a),t(109)(r,a),t(110)(r,a),t(111)(r,a),t(112)(r,a),t(113)(r,a),t(114)(r,a),t(115)(r,a),t(116)(r,a),t(117)(r,a),t(118)(r,a),t(119)(r,a),t(120)(r,a),t(121)(r,a),t(122)(r,a),t(123)(r,a),t(124)(r,a),t(125)(r,a),t(126)(r,a),t(127)(r,a),t(128)(r,a),t(129)(r,a),t(130)(r,a),t(131)(r,a),t(132)(r,a),t(133)(r,a),t(134)(r,a),t(135)(r,a),t(136)(r,a),t(137)(r,a),t(138)(r,a),t(139)(r,a),t(140)(r,a),t(141)(r,a),t(142)(r,a),t(143)(r,a),t(144)(r,a),t(145)(r,a),t(146)(r,a),t(147)(r,a),t(148)(r,a),t(149)(r,a),t(150)(r,a),t(151)(r,a),t(152)(r,a),t(153)(r,a),t(154)(r,a),t(155)(r,a),t(156)(r,a),t(157)(r,a),t(158)(r,a),t(159)(r,a),t(160)(r,a),t(161)(r,a),t(162)(r,a),t(163)(r,a),t(164)(r,a),t(165)(r,a),t(166)(r,a),r.ifElse=function(){throw new Error("Function ifElse is deprecated. Use the conditional operator instead.")},t(4)(r,a),r.expression.transform={concat:t(23)(r,a),filter:t(24)(r,a),forEach:t(25)(r,a),index:t(26)(r,a),map:t(27)(r,a),max:t(28)(r,a),mean:t(29)(r,a),min:t(30)(r,a),range:t(31)(r,a),subset:t(32)(r,a)},r.chaining={},r.chaining.Chain=t(33)(r,a),r.chaining.Selector=r.chaining.Chain,r.config(a),r.config(e),r}var i=t(2),o=t(3).digits,a=n();"undefined"!=typeof window&&(window.mathjs=a),e.exports=a},function(e,r,t){"use strict";r.clone=function n(e){var r=typeof e;if("number"===r||"string"===r||"boolean"===r||null===e||void 0===e)return e;if("function"==typeof e.clone)return e.clone();if(Array.isArray(e))return e.map(function(e){return n(e)});if(e instanceof Number)return new Number(e.valueOf());if(e instanceof String)return new String(e.valueOf());if(e instanceof Boolean)return new Boolean(e.valueOf());if(e instanceof Date)return new Date(e.valueOf());if(e instanceof RegExp)throw new TypeError("Cannot clone "+e);var t={};for(var i in e)e.hasOwnProperty(i)&&(t[i]=n(e[i]));return t},r.extend=function(e,r){for(var t in r)r.hasOwnProperty(t)&&(e[t]=r[t]);return e},r.deepExtend=function i(e,r){if(Array.isArray(r))throw new TypeError("Arrays are not supported by deepExtend");for(var t in r)if(r.hasOwnProperty(t))if(r[t]&&r[t].constructor===Object)void 0===e[t]&&(e[t]={}),e[t].constructor===Object?i(e[t],r[t]):e[t]=r[t];else{if(Array.isArray(r[t]))throw new TypeError("Arrays are not supported by deepExtend");e[t]=r[t]}return e},r.deepEqual=function(e,t){var n,i,o;if(Array.isArray(e)){if(!Array.isArray(t))return!1;if(e.length!=t.length)return!1;for(i=0,o=e.length;o>i;i++)if(!r.deepEqual(e[i],t[i]))return!1;return!0}if(e instanceof Object){if(Array.isArray(t)||!(t instanceof Object))return!1;for(n in e)if(!r.deepEqual(e[n],t[n]))return!1;for(n in t)if(!r.deepEqual(e[n],t[n]))return!1;return!0}return typeof e==typeof t&&e==t},r.canDefineProperty=function(){try{if(Object.defineProperty)return Object.defineProperty({},"x",{}),!0}catch(e){}return!1},r.lazy=function(e,t,n){if(r.canDefineProperty()){var i,o=!0;Object.defineProperty(e,t,{get:function(){return o&&(i=n(),o=!1),i},set:function(e){i=e,o=!1},configurable:!0})}else e[t]=n()}},function(e,r,t){"use strict";var n=t(167);r.isNumber=function(e){return e instanceof Number||"number"==typeof e},r.isInteger=function(e){return e==Math.round(e)},r.sign=function(e){return e>0?1:0>e?-1:0},r.format=function(e,t){if("function"==typeof t)return t(e);if(e===1/0)return"Infinity";if(e===-(1/0))return"-Infinity";if(isNaN(e))return"NaN";var n="auto",i=void 0;switch(t&&(t.notation&&(n=t.notation),r.isNumber(t)?i=t:t.precision&&(i=t.precision)),n){case"fixed":return r.toFixed(e,i);case"exponential":return r.toExponential(e,i);case"auto":return r.toPrecision(e,i,t&&t.exponential).replace(/((\.\d*?)(0+))($|e)/,function(){var e=arguments[2],r=arguments[4];return"."!==e?e+r:r});default:throw new Error('Unknown notation "'+n+'". Choose "auto", "exponential", or "fixed".')}},r.toExponential=function(e,r){return new n(e).toExponential(r)},r.toFixed=function(e,r){return new n(e).toFixed(r)},r.toPrecision=function(e,r,t){return new n(e).toPrecision(r,t)},r.digits=function(e){return e.toExponential().replace(/e.*$/,"").replace(/^0\.?0*|\./,"").length},r.DBL_EPSILON=Number.EPSILON||2.220446049250313e-16,r.nearlyEqual=function(e,t,n){if(null==n)return e==t;if(e==t)return!0;if(isNaN(e)||isNaN(t))return!1;if(isFinite(e)&&isFinite(t)){var i=Math.abs(e-t);return i="0"&&"9">=e||"."==e}function a(e){return e>="0"&&"9">=e}function s(){y++,x=v.charAt(y)}function u(e){y=e,x=v.charAt(y)}function c(){var e,r="";if(e=y,"+"==x?s():"-"==x&&(r+=x,s()),!o(x))return u(e),null;if("."==x){if(r+=x,s(),!a(x))return u(e),null}else{for(;a(x);)r+=x,s();"."==x&&(r+=x,s())}for(;a(x);)r+=x,s();if("E"==x||"e"==x){if(r+=x,s(),("+"==x||"-"==x)&&(r+=x,s()),!a(x))return u(e),null;for(;a(x);)r+=x,s()}return r}function f(){var e=v.charAt(y+1);if("I"==x||"i"==x)return s(),"1";if(!("+"!=x&&"-"!=x||"I"!=e&&"i"!=e)){var r="+"==x?"1":"-1";return s(),s(),r}return null}var l=t(175),p=t(11),m=l.number,h=l.number.isNumber,g=p.isUnit,d=l.string.isString;n.isComplex=function(e){return e instanceof n};var v,y,x;n.parse=function(e){if(v=e,y=-1,x="",!d(v))return null;s(),i();var r=c();if(r){if("I"==x||"i"==x)return s(),i(),x?null:new n(0,Number(r));i();var t=x;if("+"!=t&&"-"!=t)return i(),x?null:new n(Number(r),0);s(),i();var o=c();if(o){if("I"!=x&&"i"!=x)return null;s()}else if(o=f(),!o)return null;return"-"==t&&(o="-"==o[0]?"+"+o.substring(1):"-"+o),s(),i(),x?null:new n(Number(r),Number(o))}return(r=f())?(i(),x?null:new n(0,Number(r))):null},n.fromPolar=function(e){switch(arguments.length){case 1:var r=arguments[0];if("object"==typeof r)return n.fromPolar(r.r,r.phi);throw new TypeError("Input has to be an object with r and phi keys.");case 2:var t=arguments[0],i=arguments[1];if(h(t)){if(g(i)&&i.hasBase(p.BASE_UNITS.ANGLE)&&(i=i.toNumber("rad")),h(i))return new n(t*Math.cos(i),t*Math.sin(i));throw new TypeError("Phi is not a number nor an angle unit.")}throw new TypeError("Radius r is not a number.");default:throw new SyntaxError("Wrong number of arguments in function fromPolar")}},n.prototype.toPolar=function(){return{r:Math.sqrt(this.re*this.re+this.im*this.im),phi:Math.atan2(this.im,this.re)}},n.prototype.clone=function(){return new n(this.re,this.im)},n.prototype.equals=function(e){return this.re===e.re&&this.im===e.im},n.prototype.format=function(e){var r="",t=this.im,n=this.re,i=m.format(this.re,e),o=m.format(this.im,e),a=h(e)?e:e?e.precision:null;if(null!==a){var s=Math.pow(10,-a);Math.abs(n/t)0?1==t?i+" + i":i+" + "+o+"i":-1==t?i+" - i":i+" - "+o.substring(1)+"i"},n.prototype.toString=function(){return this.format()},n.prototype.toJSON=function(){return{mathjs:"Complex",re:this.re,im:this.im}},n.fromJSON=function(e){return new n(e)},n.prototype.valueOf=n.prototype.toString,e.exports=n},function(e,r,t){"use strict";function n(e,r,t){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");if(null!=e&&!o.isNumber(e))throw new TypeError("Parameter start must be a number");if(null!=r&&!o.isNumber(r))throw new TypeError("Parameter end must be a number");if(null!=t&&!o.isNumber(t))throw new TypeError("Parameter step must be a number");this.start=null!=e?parseFloat(e):0,this.end=null!=r?parseFloat(r):0,this.step=null!=t?parseFloat(t):1}{var i=t(175),o=i.number,a=i.string;i.array}n.parse=function(e){if(!a.isString(e))return null;var r=e.split(":"),t=r.map(function(e){return parseFloat(e)}),i=t.some(function(e){return isNaN(e)});if(i)return null;switch(t.length){case 2:return new n(t[0],t[1]);case 3:return new n(t[0],t[2],t[1]);default:return null}},n.prototype.clone=function(){return new n(this.start,this.end,this.step)},n.isRange=function(e){return e instanceof n},n.prototype.size=function(){var e=0,r=this.start,t=this.step,n=this.end,i=n-r;return o.sign(t)==o.sign(i)?e=Math.ceil(i/t):0==i&&(e=0),isNaN(e)&&(e=0),[e]},n.prototype.min=function(){var e=this.size()[0];return e>0?this.step>0?this.start:this.start+(e-1)*this.step:void 0},n.prototype.max=function(){var e=this.size()[0];return e>0?this.step>0?this.start+(e-1)*this.step:this.start:void 0},n.prototype.forEach=function(e){var r=this.start,t=this.step,n=this.end,i=0;if(t>0)for(;n>r;)e(r,i,this),r+=t,i++;else if(0>t)for(;r>n;)e(r,i,this),r+=t,i++},n.prototype.map=function(e){var r=[];return this.forEach(function(t,n,i){r[n]=e(t,n,i)}),r},n.prototype.toArray=function(){var e=[];return this.forEach(function(r,t){e[t]=r}),e},n.prototype.valueOf=function(){return this.toArray()},n.prototype.format=function(e){var r=o.format(this.start,e);return 1!=this.step&&(r+=":"+o.format(this.step,e)),r+=":"+o.format(this.end,e)},n.prototype.toString=function(){return this.format()},n.prototype.toJSON=function(){return{mathjs:"Range",start:this.start,end:this.end,step:this.step}},n.fromJSON=function(e){return new n(e.start,e.end,e.step)},e.exports=n},function(e,r,t){"use strict";function n(e){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");this._ranges=[],this._isScalar=!0;for(var r=0,t=arguments.length;t>r;r++){var o=arguments[r];if(o instanceof a)this._ranges.push(o),this._isScalar=!1;else if(f(o))this._ranges.push(i(o)),this._isScalar=!1;else if(u(o))this._ranges.push(i([o,o+1]));else{var s=o.valueOf();if(!f(s))throw new TypeError("Ranges must be an Array, Number, or Range");this._ranges.push(i(s)),this._isScalar=!1}}}function i(e){for(var r=e.length,t=0;r>t;t++)if(!u(e[t])||!c(e[t]))throw new TypeError("Index parameters must be integer numbers");switch(e.length){case 2:return new a(e[0],e[1]);case 3:return new a(e[0],e[1],e[2]);default:throw new SyntaxError("Wrong number of arguments in Index (2 or 3 expected)")}}var o=t(175),a=t(8),s=o.number,u=s.isNumber,c=s.isInteger,f=Array.isArray;n.prototype.clone=function(){var e=new n;return e._ranges=o.object.clone(this._ranges),e._isScalar=this._isScalar,e},n.isIndex=function(e){return e instanceof n},n.create=function(e){var r=new n;return n.apply(r,e),r},n.prototype.size=function(){for(var e=[],r=0,t=this._ranges.length;t>r;r++){var n=this._ranges[r];e[r]=n.size()[0]}return e},n.prototype.max=function(){for(var e=[],r=0,t=this._ranges.length;t>r;r++){var n=this._ranges[r];e[r]=n.max()}return e},n.prototype.min=function(){for(var e=[],r=0,t=this._ranges.length;t>r;r++){var n=this._ranges[r];e[r]=n.min()}return e},n.prototype.forEach=function(e){for(var r=0,t=this._ranges.length;t>r;r++)e(this._ranges[r],r,this)},n.prototype.range=function(e){return this._ranges[e]||null},n.prototype.isScalar=function(){return this._isScalar},n.prototype.toArray=function(){for(var e=[],r=0,t=this._ranges.length;t>r;r++){var n=this._ranges[r],i=[],o=n.start,a=n.end,s=n.step;if(s>0)for(;a>o;)i.push(o),o+=s;else if(0>s)for(;o>a;)i.push(o),o+=s;e.push(i)}return e},n.prototype.valueOf=n.prototype.toArray,n.prototype.toString=function(){for(var e=[],r=0,t=this._ranges.length;t>r;r++){var n=this._ranges[r],i=s.format(n.start);1!=n.step&&(i+=":"+s.format(n.step)),i+=":"+s.format(n.end),e.push(i)}return"["+e.join(", ")+"]"},n.prototype.toJSON=function(){return{mathjs:"Index",ranges:this._ranges}},n.fromJSON=function(e){return n.create(e.ranges)},e.exports=n},function(e,r,t){"use strict";var n=t(176),i=n.isString;e.exports=function(e){function r(){if(!(this instanceof r))throw new SyntaxError("Constructor must be called with the new operator")}return r.isMatrix=function(e){return e instanceof r},r.storage=function(e){if(!i(e))throw new TypeError("format must be a string value");var t=r._storage[e];if(!t)throw new SyntaxError("Unsupported matrix storage format: "+e);return t},r._storage={},r.prototype.storage=function(){throw new Error("Cannot invoke storage on a Matrix interface")},r.prototype.subset=function(e,r,t){throw new Error("Cannot invoke subset on a Matrix interface")},r.prototype.get=function(e){throw new Error("Cannot invoke get on a Matrix interface")},r.prototype.set=function(e,r,t){throw new Error("Cannot invoke set on a Matrix interface")},r.prototype.resize=function(e,r){throw new Error("Cannot invoke resize on a Matrix interface")},r.prototype.clone=function(){throw new Error("Cannot invoke clone on a Matrix interface")},r.prototype.size=function(){throw new Error("Cannot invoke size on a Matrix interface")},r.prototype.map=function(e,r){throw new Error("Cannot invoke map on a Matrix interface")},r.prototype.forEach=function(e){throw new Error("Cannot invoke forEach on a Matrix interface")},r.prototype.toArray=function(){throw new Error("Cannot invoke toArray on a Matrix interface")},r.prototype.valueOf=function(){throw new Error("Cannot invoke valueOf on a Matrix interface")},r.prototype.format=function(e){throw new Error("Cannot invoke format on a Matrix interface")},r.prototype.toString=function(){throw new Error("Cannot invoke toString on a Matrix interface")},r.prototype.transpose=function(){throw new Error("Cannot invoke transpose on a Matrix interface")},r.prototype.trace=function(){throw new Error("Cannot invoke transpose on a Matrix interface")},r.prototype.multiply=function(e){throw new Error("Cannot invoke multiply on a Matrix interface")},r}},function(e,r,t){"use strict";function n(e,r){if(!(this instanceof n))throw new Error("Constructor must be called with the new operator");if(void 0!=e&&!y(e))throw new TypeError("First parameter in Unit constructor must be a number");if(void 0!=r&&(!x(r)||""==r))throw new TypeError("Second parameter in Unit constructor must be a string");if(void 0!=r){var t=l(r);if(!t)throw new SyntaxError('Unknown unit "'+r+'"');this.unit=t.unit,this.prefix=t.prefix}else this.unit=M,this.prefix=b;this.value=void 0!=e?this._normalize(e):null,this.fixPrefix=!1}function i(){for(;" "==h||" "==h;)s()}function o(e){return e>="0"&&"9">=e||"."==e}function a(e){return e>="0"&&"9">=e}function s(){m++,h=p.charAt(m)}function u(e){m=e,h=p.charAt(m)}function c(){var e,r="";if(e=m,"+"==h?s():"-"==h&&(r+=h,s()),!o(h))return u(e),null;if("."==h){if(r+=h,s(),!a(h))return u(e),null}else{for(;a(h);)r+=h,s();"."==h&&(r+=h,s())}for(;a(h);)r+=h,s();if("E"==h||"e"==h){if(r+=h,s(),("+"==h||"-"==h)&&(r+=h,s()),!a(h))return u(e),null;for(;a(h);)r+=h,s()}return r}function f(){var e="";for(i();h&&" "!=h&&" "!=h;)e+=h,s();return e||null}function l(e){for(var r in _)if(_.hasOwnProperty(r)&&v.endsWith(e,r)){var t=_[r],n=e.length-r.length,i=e.substring(0,n),o=t.prefixes[i];if(void 0!==o)return{unit:t,prefix:o}}return null}var p,m,h,g=t(175),d=g.number,v=g.string,y=g.number.isNumber,x=g.string.isString;n.parse=function(e){if(p=e,m=-1,h="",!x(p))return null;s(),i();var r,t=c();if(t){if(r=f(),s(),i(),h)return null;if(t&&r)try{return new n(Number(t),r)}catch(o){}}else{if(r=f(),s(),i(),h)return null;if(r)try{return new n(null,r)}catch(o){}}return null},n.isUnit=function(e){return e instanceof n},n.prototype.clone=function(){var e=new n;for(var r in this)this.hasOwnProperty(r)&&(e[r]=this[r]);return e},n.prototype._normalize=function(e){return(e+this.unit.offset)*this.unit.value*this.prefix.value},n.prototype._denormalize=function(e,r){return void 0==r?e/this.unit.value/this.prefix.value-this.unit.offset:e/this.unit.value/r-this.unit.offset},n.isValuelessUnit=function(e){return null!=l(e)},n.prototype.hasBase=function(e){return this.unit.base===e},n.prototype.equalBase=function(e){return this.unit.base===e.unit.base},n.prototype.equals=function(e){return this.equalBase(e)&&this.value==e.value},n.prototype.to=function(e){var r,t=null==this.value?this._normalize(1):this.value;if(x(e)){if(r=new n(null,e),!this.equalBase(r))throw new Error("Units do not match");return r.value=t,r.fixPrefix=!0,r}if(e instanceof n){if(!this.equalBase(e))throw new Error("Units do not match");if(null!==e.value)throw new Error("Cannot convert to a unit with a value");return r=e.clone(),r.value=t,r.fixPrefix=!0,r}throw new Error("String or Unit expected as parameter")},n.prototype.toNumber=function(e){var r=this.to(e);return r._denormalize(r.value,r.prefix.value)},n.prototype.toString=function(){return this.format()},n.prototype.toJSON=function(){return{mathjs:"Unit",value:this._denormalize(this.value),unit:this.prefix.name+this.unit.name,fixPrefix:this.fixPrefix}},n.fromJSON=function(e){var r=new n(e.value,e.unit);return r.fixPrefix=e.fixPrefix||!1,r},n.prototype.valueOf=n.prototype.toString,n.prototype.format=function(e){var r,t;if(null===this.value||this.fixPrefix)r=this._denormalize(this.value),t=null!==this.value?d.format(r,e)+" ":"",t+=this.prefix.name+this.unit.name;else{var n=this._bestPrefix();r=this._denormalize(this.value,n.value),t=d.format(r,e)+" ",t+=n.name+this.unit.name}return t},n.prototype._bestPrefix=function(){var e=Math.abs(this.value/this.unit.value),r=b,t=Math.abs(Math.log(e/r.value)/Math.LN10-1.2),n=this.unit.prefixes;for(var i in n)if(n.hasOwnProperty(i)){var o=n[i];if(o.scientific){var a=Math.abs(Math.log(e/o.value)/Math.LN10-1.2);t>a&&(r=o,t=a)}}return r};var w={NONE:{"":{name:"",value:1,scientific:!0}},SHORT:{"":{name:"",value:1,scientific:!0},da:{name:"da",value:10,scientific:!1},h:{name:"h",value:100,scientific:!1},k:{name:"k",value:1e3,scientific:!0},M:{name:"M",value:1e6,scientific:!0},G:{name:"G",value:1e9,scientific:!0},T:{name:"T",value:1e12,scientific:!0},P:{name:"P",value:1e15,scientific:!0},E:{name:"E",value:1e18,scientific:!0},Z:{name:"Z",value:1e21,scientific:!0},Y:{name:"Y",value:1e24,scientific:!0},d:{name:"d",value:.1,scientific:!1},c:{name:"c",value:.01,scientific:!1},m:{name:"m",value:.001,scientific:!0},u:{name:"u",value:1e-6,scientific:!0},n:{name:"n",value:1e-9,scientific:!0},p:{name:"p",value:1e-12,scientific:!0},f:{name:"f",value:1e-15,scientific:!0},a:{name:"a",value:1e-18,scientific:!0},z:{name:"z",value:1e-21,scientific:!0},y:{name:"y",value:1e-24,scientific:!0}},LONG:{"":{name:"",value:1,scientific:!0},deca:{name:"deca",value:10,scientific:!1},hecto:{name:"hecto",value:100,scientific:!1},kilo:{name:"kilo",value:1e3,scientific:!0},mega:{name:"mega",value:1e6,scientific:!0},giga:{name:"giga",value:1e9,scientific:!0},tera:{name:"tera",value:1e12,scientific:!0},peta:{name:"peta",value:1e15,scientific:!0},exa:{name:"exa",value:1e18,scientific:!0},zetta:{name:"zetta",value:1e21,scientific:!0},yotta:{name:"yotta",value:1e24,scientific:!0},deci:{name:"deci",value:.1,scientific:!1},centi:{name:"centi",value:.01,scientific:!1},milli:{name:"milli",value:.001,scientific:!0},micro:{name:"micro",value:1e-6,scientific:!0},nano:{name:"nano",value:1e-9,scientific:!0},pico:{name:"pico",value:1e-12,scientific:!0},femto:{name:"femto",value:1e-15,scientific:!0},atto:{name:"atto",value:1e-18,scientific:!0},zepto:{name:"zepto",value:1e-21,scientific:!0},yocto:{name:"yocto",value:1e-24,scientific:!0}},SQUARED:{"":{name:"",value:1,scientific:!0},da:{name:"da",value:100,scientific:!1},h:{name:"h",value:1e4,scientific:!1},k:{name:"k",value:1e6,scientific:!0},M:{name:"M",value:1e12,scientific:!0},G:{name:"G",value:1e18,scientific:!0},T:{name:"T",value:1e24,scientific:!0},P:{name:"P",value:1e30,scientific:!0},E:{name:"E",value:1e36,scientific:!0},Z:{name:"Z",value:1e42,scientific:!0},Y:{name:"Y",value:1e48,scientific:!0},d:{name:"d",value:.01,scientific:!1},c:{name:"c",value:1e-4,scientific:!1},m:{name:"m",value:1e-6,scientific:!0},u:{name:"u",value:1e-12,scientific:!0},n:{name:"n",value:1e-18,scientific:!0},p:{name:"p",value:1e-24,scientific:!0},f:{name:"f",value:1e-30,scientific:!0},a:{name:"a",value:1e-36,scientific:!0},z:{name:"z",value:1e-42,scientific:!0},y:{name:"y",value:1e-42,scientific:!0}},CUBIC:{"":{name:"",value:1,scientific:!0},da:{name:"da",value:1e3,scientific:!1},h:{name:"h",value:1e6,scientific:!1},k:{name:"k",value:1e9,scientific:!0},M:{name:"M",value:1e18,scientific:!0},G:{name:"G",value:1e27,scientific:!0},T:{name:"T",value:1e36,scientific:!0},P:{name:"P",value:1e45,scientific:!0},E:{name:"E",value:1e54,scientific:!0},Z:{name:"Z",value:1e63,scientific:!0},Y:{name:"Y",value:1e72,scientific:!0},d:{name:"d",value:.001,scientific:!1},c:{name:"c",value:1e-6,scientific:!1},m:{name:"m",value:1e-9,scientific:!0},u:{name:"u",value:1e-18,scientific:!0},n:{name:"n",value:1e-27,scientific:!0},p:{name:"p",value:1e-36,scientific:!0},f:{name:"f",value:1e-45,scientific:!0},a:{name:"a",value:1e-54,scientific:!0},z:{name:"z",value:1e-63,scientific:!0},y:{name:"y",value:1e-72,scientific:!0}},BINARY_SHORT:{"":{name:"",value:1,scientific:!0},k:{name:"k",value:1e3,scientific:!0},M:{name:"M",value:1e6,scientific:!0},G:{name:"G",value:1e9,scientific:!0},T:{name:"T",value:1e12,scientific:!0},P:{name:"P",value:1e15,scientific:!0},E:{name:"E",value:1e18,scientific:!0},Z:{name:"Z",value:1e21,scientific:!0},Y:{name:"Y",value:1e24,scientific:!0},Ki:{name:"Ki",value:1024,scientific:!0},Mi:{name:"Mi",value:Math.pow(1024,2),scientific:!0},Gi:{name:"Gi",value:Math.pow(1024,3),scientific:!0},Ti:{name:"Ti",value:Math.pow(1024,4),scientific:!0},Pi:{name:"Pi",value:Math.pow(1024,5),scientific:!0},Ei:{name:"Ei",value:Math.pow(1024,6),scientific:!0},Zi:{name:"Zi",value:Math.pow(1024,7),scientific:!0},Yi:{name:"Yi",value:Math.pow(1024,8),scientific:!0}},BINARY_LONG:{"":{name:"",value:1,scientific:!0},kilo:{name:"kilo",value:1e3,scientific:!0},mega:{name:"mega",value:1e6,scientific:!0},giga:{name:"giga",value:1e9,scientific:!0},tera:{name:"tera",value:1e12,scientific:!0},peta:{name:"peta",value:1e15,scientific:!0},exa:{name:"exa",value:1e18,scientific:!0},zetta:{name:"zetta",value:1e21,scientific:!0},yotta:{name:"yotta",value:1e24,scientific:!0},kibi:{name:"kibi",value:1024,scientific:!0},mebi:{name:"mebi",value:Math.pow(1024,2),scientific:!0},gibi:{name:"gibi",value:Math.pow(1024,3),scientific:!0},tebi:{name:"tebi",value:Math.pow(1024,4),scientific:!0},pebi:{name:"pebi",value:Math.pow(1024,5),scientific:!0},exi:{name:"exi",value:Math.pow(1024,6),scientific:!0},zebi:{name:"zebi",value:Math.pow(1024,7),scientific:!0},yobi:{name:"yobi",value:Math.pow(1024,8),scientific:!0}}},b={name:"",value:1,scientific:!0},E={NONE:{},LENGTH:{},MASS:{},TIME:{},CURRENT:{},TEMPERATURE:{},LUMINOUS_INTENSITY:{},AMOUNT_OF_SUBSTANCE:{},FORCE:{},SURFACE:{},VOLUME:{},ANGLE:{},BIT:{}},N={},M={name:"",base:N,value:1,offset:0},_={meter:{name:"meter",base:E.LENGTH,prefixes:w.LONG,value:1,offset:0},inch:{name:"inch",base:E.LENGTH,prefixes:w.NONE,value:.0254,offset:0},foot:{name:"foot",base:E.LENGTH,prefixes:w.NONE,value:.3048,offset:0},yard:{name:"yard",base:E.LENGTH,prefixes:w.NONE,value:.9144,offset:0},mile:{name:"mile",base:E.LENGTH,prefixes:w.NONE,value:1609.344,offset:0},link:{name:"link",base:E.LENGTH,prefixes:w.NONE,value:.201168,offset:0},rod:{name:"rod",base:E.LENGTH,prefixes:w.NONE,value:5.02921,offset:0},chain:{name:"chain",base:E.LENGTH,prefixes:w.NONE,value:20.1168,offset:0},angstrom:{name:"angstrom",base:E.LENGTH,prefixes:w.NONE,value:1e-10,offset:0},m:{name:"m",base:E.LENGTH,prefixes:w.SHORT,value:1,offset:0},"in":{name:"in",base:E.LENGTH,prefixes:w.NONE,value:.0254,offset:0},ft:{name:"ft",base:E.LENGTH,prefixes:w.NONE,value:.3048,offset:0},yd:{name:"yd",base:E.LENGTH,prefixes:w.NONE,value:.9144,offset:0},mi:{name:"mi",base:E.LENGTH,prefixes:w.NONE,value:1609.344,offset:0},li:{name:"li",base:E.LENGTH,prefixes:w.NONE,value:.201168,offset:0},rd:{name:"rd",base:E.LENGTH,prefixes:w.NONE,value:5.02921,offset:0},ch:{name:"ch",base:E.LENGTH,prefixes:w.NONE,value:20.1168,offset:0},mil:{name:"mil",base:E.LENGTH,prefixes:w.NONE,value:254e-7,offset:0},m2:{name:"m2",base:E.SURFACE,prefixes:w.SQUARED,value:1,offset:0},sqin:{name:"sqin",base:E.SURFACE,prefixes:w.NONE,value:64516e-8,offset:0},sqft:{name:"sqft",base:E.SURFACE,prefixes:w.NONE,value:.09290304,offset:0},sqyd:{name:"sqyd",base:E.SURFACE,prefixes:w.NONE,value:.83612736,offset:0},sqmi:{name:"sqmi",base:E.SURFACE,prefixes:w.NONE,value:2589988.110336,offset:0},sqrd:{name:"sqrd",base:E.SURFACE,prefixes:w.NONE,value:25.29295,offset:0},sqch:{name:"sqch",base:E.SURFACE,prefixes:w.NONE,value:404.6873,offset:0},sqmil:{name:"sqmil",base:E.SURFACE,prefixes:w.NONE,value:6.4516e-10,offset:0},m3:{name:"m3",base:E.VOLUME,prefixes:w.CUBIC,value:1,offset:0},L:{name:"L",base:E.VOLUME,prefixes:w.SHORT,value:.001,offset:0},l:{name:"l",base:E.VOLUME,prefixes:w.SHORT,value:.001,offset:0},litre:{name:"litre",base:E.VOLUME,prefixes:w.LONG,value:.001,offset:0},cuin:{name:"cuin",base:E.VOLUME,prefixes:w.NONE,value:16387064e-12,offset:0},cuft:{name:"cuft",base:E.VOLUME,prefixes:w.NONE,value:.028316846592,offset:0},cuyd:{name:"cuyd",base:E.VOLUME,prefixes:w.NONE,value:.764554857984,offset:0},teaspoon:{name:"teaspoon",base:E.VOLUME,prefixes:w.NONE,value:5e-6,offset:0},tablespoon:{name:"tablespoon",base:E.VOLUME,prefixes:w.NONE,value:15e-6,offset:0},drop:{name:"drop",base:E.VOLUME,prefixes:w.NONE,value:5e-8,offset:0},gtt:{name:"gtt",base:E.VOLUME,prefixes:w.NONE,value:5e-8,offset:0},minim:{name:"minim",base:E.VOLUME,prefixes:w.NONE,value:6.161152e-8,offset:0},fluiddram:{name:"fluiddram",base:E.VOLUME,prefixes:w.NONE,value:36966911e-13,offset:0},fluidounce:{name:"fluidounce",base:E.VOLUME,prefixes:w.NONE,value:2957353e-11,offset:0},gill:{name:"gill",base:E.VOLUME,prefixes:w.NONE,value:.0001182941,offset:0},cc:{name:"cc",base:E.VOLUME,prefixes:w.NONE,value:1e-6,offset:0},cup:{name:"cup",base:E.VOLUME,prefixes:w.NONE,value:.0002365882,offset:0},pint:{name:"pint",base:E.VOLUME,prefixes:w.NONE,value:.0004731765,offset:0},quart:{name:"quart",base:E.VOLUME,prefixes:w.NONE,value:.0009463529,offset:0},gallon:{name:"gallon",base:E.VOLUME,prefixes:w.NONE,value:.003785412,offset:0},beerbarrel:{name:"beerbarrel",base:E.VOLUME,prefixes:w.NONE,value:.1173478,offset:0},oilbarrel:{name:"oilbarrel",base:E.VOLUME,prefixes:w.NONE,value:.1589873,offset:0},hogshead:{name:"hogshead",base:E.VOLUME,prefixes:w.NONE,value:.238481,offset:0},fldr:{name:"fldr",base:E.VOLUME,prefixes:w.NONE,value:36966911e-13,offset:0},floz:{name:"floz",base:E.VOLUME,prefixes:w.NONE,value:2957353e-11,offset:0},gi:{name:"gi",base:E.VOLUME,prefixes:w.NONE,value:.0001182941,offset:0},cp:{name:"cp",base:E.VOLUME,prefixes:w.NONE,value:.0002365882,offset:0},pt:{name:"pt",base:E.VOLUME,prefixes:w.NONE,value:.0004731765,offset:0},qt:{name:"qt",base:E.VOLUME,prefixes:w.NONE,value:.0009463529,offset:0},gal:{name:"gal",base:E.VOLUME,prefixes:w.NONE,value:.003785412,offset:0},bbl:{name:"bbl",base:E.VOLUME,prefixes:w.NONE,value:.1173478,offset:0},obl:{name:"obl",base:E.VOLUME,prefixes:w.NONE,value:.1589873,offset:0},g:{name:"g",base:E.MASS,prefixes:w.SHORT,value:.001,offset:0},gram:{name:"gram",base:E.MASS,prefixes:w.LONG,value:.001,offset:0},ton:{name:"ton",base:E.MASS,prefixes:w.SHORT,value:907.18474,offset:0},tonne:{name:"tonne",base:E.MASS, -prefixes:w.SHORT,value:1e3,offset:0},grain:{name:"grain",base:E.MASS,prefixes:w.NONE,value:6479891e-11,offset:0},dram:{name:"dram",base:E.MASS,prefixes:w.NONE,value:.0017718451953125,offset:0},ounce:{name:"ounce",base:E.MASS,prefixes:w.NONE,value:.028349523125,offset:0},poundmass:{name:"poundmass",base:E.MASS,prefixes:w.NONE,value:.45359237,offset:0},hundredweight:{name:"hundredweight",base:E.MASS,prefixes:w.NONE,value:45.359237,offset:0},stick:{name:"stick",base:E.MASS,prefixes:w.NONE,value:.115,offset:0},stone:{name:"stone",base:E.MASS,prefixes:w.NONE,value:6350,offset:0},gr:{name:"gr",base:E.MASS,prefixes:w.NONE,value:6479891e-11,offset:0},dr:{name:"dr",base:E.MASS,prefixes:w.NONE,value:.0017718451953125,offset:0},oz:{name:"oz",base:E.MASS,prefixes:w.NONE,value:.028349523125,offset:0},lbm:{name:"lbm",base:E.MASS,prefixes:w.NONE,value:.45359237,offset:0},cwt:{name:"cwt",base:E.MASS,prefixes:w.NONE,value:45.359237,offset:0},s:{name:"s",base:E.TIME,prefixes:w.SHORT,value:1,offset:0},min:{name:"min",base:E.TIME,prefixes:w.NONE,value:60,offset:0},h:{name:"h",base:E.TIME,prefixes:w.NONE,value:3600,offset:0},second:{name:"second",base:E.TIME,prefixes:w.LONG,value:1,offset:0},sec:{name:"sec",base:E.TIME,prefixes:w.LONG,value:1,offset:0},minute:{name:"minute",base:E.TIME,prefixes:w.NONE,value:60,offset:0},hour:{name:"hour",base:E.TIME,prefixes:w.NONE,value:3600,offset:0},day:{name:"day",base:E.TIME,prefixes:w.NONE,value:86400,offset:0},rad:{name:"rad",base:E.ANGLE,prefixes:w.NONE,value:1,offset:0},deg:{name:"deg",base:E.ANGLE,prefixes:w.NONE,value:.017453292519943295,offset:0},grad:{name:"grad",base:E.ANGLE,prefixes:w.NONE,value:.015707963267948967,offset:0},cycle:{name:"cycle",base:E.ANGLE,prefixes:w.NONE,value:6.283185307179586,offset:0},A:{name:"A",base:E.CURRENT,prefixes:w.SHORT,value:1,offset:0},ampere:{name:"ampere",base:E.CURRENT,prefixes:w.LONG,value:1,offset:0},K:{name:"K",base:E.TEMPERATURE,prefixes:w.NONE,value:1,offset:0},degC:{name:"degC",base:E.TEMPERATURE,prefixes:w.NONE,value:1,offset:273.15},degF:{name:"degF",base:E.TEMPERATURE,prefixes:w.NONE,value:1/1.8,offset:459.67},degR:{name:"degR",base:E.TEMPERATURE,prefixes:w.NONE,value:1/1.8,offset:0},kelvin:{name:"kelvin",base:E.TEMPERATURE,prefixes:w.NONE,value:1,offset:0},celsius:{name:"celsius",base:E.TEMPERATURE,prefixes:w.NONE,value:1,offset:273.15},fahrenheit:{name:"fahrenheit",base:E.TEMPERATURE,prefixes:w.NONE,value:1/1.8,offset:459.67},rankine:{name:"rankine",base:E.TEMPERATURE,prefixes:w.NONE,value:1/1.8,offset:0},mol:{name:"mol",base:E.AMOUNT_OF_SUBSTANCE,prefixes:w.NONE,value:1,offset:0},mole:{name:"mole",base:E.AMOUNT_OF_SUBSTANCE,prefixes:w.NONE,value:1,offset:0},cd:{name:"cd",base:E.LUMINOUS_INTENSITY,prefixes:w.NONE,value:1,offset:0},candela:{name:"candela",base:E.LUMINOUS_INTENSITY,prefixes:w.NONE,value:1,offset:0},N:{name:"N",base:E.FORCE,prefixes:w.SHORT,value:1,offset:0},newton:{name:"newton",base:E.FORCE,prefixes:w.LONG,value:1,offset:0},lbf:{name:"lbf",base:E.FORCE,prefixes:w.NONE,value:4.4482216152605,offset:0},poundforce:{name:"poundforce",base:E.FORCE,prefixes:w.NONE,value:4.4482216152605,offset:0},b:{name:"b",base:E.BIT,prefixes:w.BINARY_SHORT,value:1,offset:0},bits:{name:"bits",base:E.BIT,prefixes:w.BINARY_LONG,value:1,offset:0},B:{name:"B",base:E.BIT,prefixes:w.BINARY_SHORT,value:8,offset:0},bytes:{name:"bytes",base:E.BIT,prefixes:w.BINARY_LONG,value:8,offset:0}},A={meters:"meter",inches:"inch",feet:"foot",yards:"yard",miles:"mile",links:"link",rods:"rod",chains:"chain",angstroms:"angstrom",litres:"litre",teaspoons:"teaspoon",tablespoons:"tablespoon",minims:"minim",fluiddrams:"fluiddram",fluidounces:"fluidounce",gills:"gill",cups:"cup",pints:"pint",quarts:"quart",gallons:"gallon",beerbarrels:"beerbarrel",oilbarrels:"oilbarrel",hogsheads:"hogshead",gtts:"gtt",grams:"gram",tons:"ton",tonnes:"tonne",grains:"grain",drams:"dram",ounces:"ounce",poundmasses:"poundmass",hundredweights:"hundredweight",sticks:"stick",seconds:"second",minutes:"minute",hours:"hour",days:"day",radians:"rad",degrees:"deg",gradients:"grad",cycles:"cycle",amperes:"ampere",moles:"mole"};for(var T in A)if(A.hasOwnProperty(T)){var S=_[A[T]],O=Object.create(S);O.name=T,_[T]=O}_.lt=_.l,_.liter=_.litre,_.liters=_.litres,_.lb=_.lbm,_.lbs=_.lbm,n.PREFIXES=w,n.BASE_UNITS=E,n.UNITS=_,e.exports=n},function(e,r,t){"use strict";function n(e){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");if(!e)throw new Error('Argument "doc" missing');this.doc=e}var i=t(175),o=i.object,a=i.string;n.isHelp=function(e){return e instanceof n},n.prototype.toText=function(e){var r=this.doc||{},t="\n";if(r.name&&(t+="Name: "+r.name+"\n\n"),r.category&&(t+="Category: "+r.category+"\n\n"),r.description&&(t+="Description:\n "+r.description+"\n\n"),r.syntax&&(t+="Syntax:\n "+r.syntax.join("\n ")+"\n\n"),r.examples){var i=e&&e.parser();t+="Examples:\n";for(var o=0;o=n){if(s(e[0])){for(c=t(e),a=[],o=0;ot;t++){var a=[];for(r=0;n>r;r++)a.push(e[r][t]);o.push(a)}return o}var u=e.type.Matrix,c={};return c.argsToArray=function(e){if(0===e.length)return[];if(1==e.length){var r=e[0];return r instanceof u&&(r=r.valueOf()),s(r)||(r=[r]),r}return n.array.argsToArray(e)},c.isCollection=function(e){return s(e)||e instanceof u},c.deepMap=function f(e,r,t){return e&&"function"==typeof e.map?e.map(function(e){return f(e,r,t)}):r(e)},c.deepMap2=function l(r,t,n){var i,a,c;if(s(r))if(s(t)){if(r.length!=t.length)throw new o(r.length,t.length);for(i=[],a=r.length,c=0;a>c;c++)i[c]=l(r[c],t[c],n)}else{if(t instanceof u)return i=l(r,t.valueOf(),n),e.matrix(i);for(i=[],a=r.length,c=0;a>c;c++)i[c]=l(r[c],t,n)}else{if(r instanceof u)return t instanceof u?(i=l(r.valueOf(),t.valueOf(),n),e.matrix(i)):(i=l(r.valueOf(),t,n),e.matrix(i));if(s(t))for(i=[],a=t.length,c=0;a>c;c++)i[c]=l(r,t[c],n);else{if(t instanceof u)return i=l(r,t.valueOf(),n),e.matrix(i);i=n(r,t)}}return i},c.reduce=function(t,n,o){var c=s(t)?a.size(t):t.size();if(0>n)throw new i(n);if(n>=c.length)throw new i(n,c.length);return t instanceof u?e.matrix(r(t.valueOf(),n,o)):r(t,n,o)},c.deepForEach=function p(e,r){e instanceof u&&(e=e.valueOf());for(var t=0,n=e.length;n>t;t++){var i=e[t];s(i)?p(i,r):r(i)}},c}},function(e,r,t){"use strict";var n=t(175),i=t(172),o=n.array,a=n.object,s=n.string,u=n.number,c=Array.isArray,f=n.number.isNumber,l=n.number.isInteger,p=o.validateIndex;e.exports=function(e){function r(e){if(!(this instanceof r))throw new SyntaxError("Constructor must be called with the new operator");if(e instanceof h)"CcsMatrix"===e.type?(this._values=a.clone(e._values),this._index=a.clone(e._index),this._ptr=a.clone(e._ptr),this._size=a.clone(e._size)):g(this,e.valueOf());else if(e&&c(e.values)&&c(e.index)&&c(e.ptr)&&c(e.size))this._values=e.values,this._index=e.index,this._ptr=e.ptr,this._size=e.size;else if(c(e))g(this,e);else{if(e)throw new TypeError("Unsupported type of data ("+n.types.type(e)+")");this._values=[],this._index=[],this._ptr=[0],this._size=[0]}}var t=e.type.Index,m=e.type.BigNumber,h=e.type.Matrix,g=function(r,t){r._values=[],r._index=[],r._ptr=[];var n=t.length,i=0;if(n>0){var o=0;do{r._ptr.push(r._values.length);for(var a=0;n>a;a++){var s=t[a];if(c(s)){if(0===o&&ii&&(i=1),e.equal(s,0)||(r._values.push(s),r._index.push(a))}o++}while(i>o)}r._ptr.push(r._values.length),r._size=[n,i]};r.prototype=new e.type.Matrix,r.prototype.type="CcsMatrix",r.prototype.storage=function(){return"ccs"},r.prototype.subset=function(e,r,t){switch(arguments.length){case 1:return d(this,e);case 2:case 3:return v(this,e,r,t);default:throw new SyntaxError("Wrong number of arguments")}};var d=function(e,r){if(!(r instanceof t))throw new TypeError("Invalid index");var n=r.isScalar();if(n)return e.get(r.min());var o=r.size();if(o.length!=e._size.length)throw new i(o.length,e._size.length);for(var a=r.min(),s=r.max(),u=0,c=e._size.length;c>u;u++)p(a[u],e._size[u]),p(s[u],e._size[u]);var f=function(e){return e};return E(e,a[0],s[0],a[1],s[1],f,!1)},v=function(e,r,n,s){if(!(r instanceof t))throw new TypeError("Invalid index");var u,c=r.size(),f=r.isScalar();if(n instanceof h?(u=n.size(),n=n.toArray()):u=o.size(n),f){if(0!==u.length)throw new TypeError("Scalar expected");e.set(r.min(),n,s)}else{if(1!==c.length&&2!==c.length)throw new i(c.length,e._size.length,"<");if(u.length");for(var m=r.min()[0],g=r.min()[1],d=u[0],v=u[1],y=0;d>y;y++)for(var x=0;v>x;x++){var w=n[y][x];e.set([y+m,x+g],w,s)}}return e};r.prototype.get=function(e){if(!c(e))throw new TypeError("Array expected");if(e.length!=this._size.length)throw new i(e.length,this._size.length);var r=e[0],t=e[1];p(r,this._size[0]),p(t,this._size[1]);var n=y(r,this._ptr[t],this._ptr[t+1],this._index);return ns-1||a>u-1)&&(b(this,Math.max(o+1,s),Math.max(a+1,u),n),s=this._size[0],u=this._size[1]),p(o,s),p(a,u);var f=y(o,this._ptr[a],this._ptr[a+1],this._index);return fn[t-1])return t;for(;t>r;){var i=~~((r+t)/2),o=n[i];if(o>e)t=i;else{if(!(e>o))return i;r=i+1}}return r},x=function(e,r,t,n,i){t.splice(e,1),n.splice(e,1);for(var o=r+1;or)throw new TypeError("Invalid size, must contain positive integers (size: "+s.format(e)+")")});var n=t?this.clone():this;return b(n,e[0],e[1],r)};var b=function(r,t,n,i){var o,a,s,u=i||0,c=!e.equal(u,0),f=r._size[0],l=r._size[1];if(n>l){for(a=l;n>a;a++)if(r._ptr[a]=r._values.length,c)for(o=0;f>o;o++)r._values.push(u),r._index.push(o);r._ptr[n]=r._values.length}else l>n&&(r._ptr.splice(n+1,l-n),r._values.splice(r._ptr[n],r._values.length),r._index.splice(r._ptr[n],r._index.length));if(l=n,t>f){if(c){var p=0;for(a=0;l>a;a++){r._ptr[a]=r._ptr[a]+p,s=r._ptr[a+1]+p;var m=0;for(o=f;t>o;o++,m++)r._values.splice(s+m,0,u),r._index.splice(s+m,0,o),p++}r._ptr[l]=r._values.length}}else if(f>t){var h=0;for(a=0;l>a;a++){r._ptr[a]=r._ptr[a]-h;var g=r._ptr[a],d=r._ptr[a+1]-h;for(s=g;d>s;s++)o=r._index[s],o>t-1&&(r._values.splice(s,1),r._index.splice(s,1),h++)}r._ptr[a]=r._values.length}return r._size[0]=t,r._size[1]=n,r};r.prototype.clone=function(){var e=new r({values:a.clone(this._values),index:a.clone(this._index),ptr:a.clone(this._ptr),size:a.clone(this._size)});return e},r.prototype.size=function(){return a.clone(this._size)},r.prototype.map=function(e,r){var t=this,n=this._size[0],i=this._size[1],o=function(r,n,i){return e(r,[n,i],t)};return E(this,0,n-1,0,i-1,o,r)};var E=function(t,n,i,o,a,s,u){for(var c=[],f=[],l=[],p=function(r,t,n){r=s(r,t,n),e.equal(r,0)||(c.push(r),f.push(t))},m=o;a>=m;m++){l.push(c.length);for(var h=t._ptr[m],g=t._ptr[m+1],d=n,v=h;g>v;v++){var y=t._index[v];if(y>=n&&i>=y){if(!u)for(var x=d;y>x;x++)p(0,x-n,m-o);p(t._values[v],y-n,m-o)}d=y+1}if(!u)for(var w=d;i>=w;w++)p(0,w-n,m-o)}return l.push(c.length),new r({values:c,index:f,ptr:l,size:[i-n+1,a-o+1]})};r.prototype.forEach=function(e,r){for(var t=this,n=this._size[0],i=this._size[1],o=0;i>o;o++){for(var a=this._ptr[o],s=this._ptr[o+1],u=0,c=a;s>c;c++){var f=this._index[c];if(!r)for(var l=u;f>l;l++)e(0,[l,o],t);e(this._values[c],[f,o],t),u=f+1}if(!r)for(var p=u;n>p;p++)e(0,[p,o],t)}},r.prototype.toArray=function(){return N(this,!0)},r.prototype.valueOf=function(){return N(this,!1)};var N=function(e,r){for(var t=[],n=e._size[0],i=e._size[1],o=0;i>o;o++){for(var s=e._ptr[o],u=e._ptr[o+1],c=0,f=s;u>f;f++){for(var l=e._index[f],p=c;l>p;p++)(t[p]=t[p]||[])[o]=0;(t[l]=t[l]||[])[o]=r?a.clone(e._values[f]):e._values[f],c=l+1}for(var m=c;n>m;m++)(t[m]=t[m]||[])[o]=0}return t};r.prototype.format=function(e){for(var r=this._size[0],t=this._size[1],n="CCS ["+s.format(r,e)+" x "+s.format(t,e)+"] density: "+s.format(this._values.length/(r*t),e)+"\n",i=0;t>i;i++)for(var o=this._ptr[i],a=this._ptr[i+1],u=o;a>u;u++){var c=this._index[u];n+="\n ("+s.format(c,e)+", "+s.format(i,e)+") ==> "+s.format(this._values[u],e)}return n},r.prototype.toString=function(){return s.format(this.toArray())},r.prototype.toJSON=function(){return{mathjs:"CcsMatrix",values:this._values,index:this._index,ptr:this._ptr,size:this._size}},r.prototype.transpose=function(){var r=this._size[0],t=this._size[1];if(0===t)throw new RangeError("Cannot transpose a 2D matrix with no columns (size: "+s.format(this._size)+")");return new e.type.CrsMatrix({values:a.clone(this._values),index:a.clone(this._index),ptr:a.clone(this._ptr),size:[t,r]})},r.prototype.diagonal=function(e){if(e){if(e instanceof m&&(e=e.toNumber()),!f(e)||!l(e))throw new TypeError("The parameter k must be an integer number")}else e=0;for(var r=e>0?e:0,t=0>e?-e:0,n=this._size[0],i=this._size[1],o=Math.min(n-t,i-r),s=[],u=r;i>u&&s.lengthg;g++){var d=this._index[g];if(d===u-r+t){h=!0,s.push(a.clone(this._values[g]));break}if(d>u-r+t)break}!h&&s.lengthe)throw new Error("Size values must be positive integers");return e}),i){if(i instanceof m&&(i=i.toNumber()),!f(i)||!l(i))throw new TypeError("The parameter k must be an integer number")}else i=0;var o,a=i>0?i:0,s=0>i?-i:0,u=t[0],p=t[1],h=Math.min(u-s,p-a);if(c(n)){if(n.length!==h)throw new Error("Invalid value array length");o=function(e){return n[e]}}else o=function(){return n};for(var g=[],d=[],v=[],y=0;p>y;y++){v.push(g.length);var x=y-a;if(x>=0&&h>x){var w=o(x);e.equal(w,0)||(d.push(x+s),g.push(w))}}return v.push(g.length),new r({values:g,index:d,ptr:v,size:[u,p]})},r.prototype.trace=function(){var r=this._size,t=r[0],n=r[1];if(t===n){var i=0;if(this._values.length>0)for(var o=0;n>o;o++)for(var a=this._ptr[o],u=this._ptr[o+1],c=a;u>c;c++){var f=this._index[c];if(f===o){i=e.add(i,this._values[c]);break}if(f>o)break}return i}throw new RangeError("Matrix must be square (size: "+s.format(r)+")")},r.prototype.multiply=function(r){var t=this._size[0],n=this._size[1];if(r instanceof h){var i=r.size();if(1===i.length)return M(this,i[0],1,function(e){return r.get([e])});if(2===i.length)return M(this,i[0],i[1],function(e,t){return r.get([e,t])});throw new Error("Can only multiply a 1 or 2 dimensional matrix (value has "+i.length+" dimensions)")}if(c(r)){var a=o.size(r);if(1===a.length)return M(this,a[0],1,function(e){return r[e]});if(2===a.length)return M(this,a[0],a[1],function(e,t){return r[e][t]});throw new Error("Can only multiply a 1 or 2 dimensional matrix (value has "+a.length+" dimensions)")}var s=function(t){return e.multiply(t,r)};return E(this,0,t-1,0,n-1,s,!1)};var M=function(t,n,i,o){var a=t._size[0],s=t._size[1];if(s!==n)throw new RangeError("Dimension mismatch in multiplication. Columns of A must match length of B (A is "+a+"x"+s+", B is "+n+", "+s+" != "+n+")");for(var u=[],c=[],f=[],l=[],p=0;a>p;p++)l[p]=0;for(var m=0;i>m;m++){f.push(u.length);for(var h=0;s>h;h++)for(var g=t._ptr[h],d=t._ptr[h+1],v=g;d>v;v++){var y=t._index[v];l[y]=e.add(l[y],e.multiply(t._values[v],o(h,m)))}for(var x=0;a>x;x++)e.equal(l[x],0)||(u.push(l[x]),c.push(x)),l[x]=0}return f.push(u.length),1===a&&1===i?1===u.length?u[0]:0:new r({values:u,index:c,ptr:f,size:[a,i]})};return r}},function(e,r,t){"use strict";var n=t(175),i=t(172),o=n.array,a=n.object,s=n.string,u=n.number,c=Array.isArray,f=n.number.isNumber,l=n.number.isInteger,p=o.validateIndex;e.exports=function(e){function r(e){if(!(this instanceof r))throw new SyntaxError("Constructor must be called with the new operator");if(e instanceof h)"CrsMatrix"===e.type?(this._values=a.clone(e._values),this._index=a.clone(e._index),this._ptr=a.clone(e._ptr),this._size=a.clone(e._size)):g(this,e.valueOf());else if(e&&c(e.values)&&c(e.index)&&c(e.ptr)&&c(e.size))this._values=e.values,this._index=e.index,this._ptr=e.ptr,this._size=e.size;else if(c(e))g(this,e);else{if(e)throw new TypeError("Unsupported type of data ("+n.types.type(e)+")");this._values=[],this._index=[],this._ptr=[0],this._size=[0]}}var t=e.type.Index,m=e.type.BigNumber,h=e.type.Matrix,g=function(r,t){r._values=[],r._index=[],r._ptr=[];for(var n=t.length,i=0,o=0;n>o;o++){r._ptr.push(r._values.length);var a=t[o];if(c(a)){a.length>i&&(i=a.length);for(var s=0;si&&(i=1),e.equal(a,0)||(r._values.push(a),r._index.push(0))}r._ptr.push(r._values.length),r._size=[n,i]};r.prototype=new e.type.Matrix,r.prototype.type="CrsMatrix",r.prototype.storage=function(){return"crs"},r.prototype.subset=function(e,r,t){switch(arguments.length){case 1:return d(this,e);case 2:case 3:return v(this,e,r,t);default:throw new SyntaxError("Wrong number of arguments")}};var d=function(e,r){if(!(r instanceof t))throw new TypeError("Invalid index");var n=r.isScalar();if(n)return e.get(r.min());var o=r.size();if(o.length!=e._size.length)throw new i(o.length,e._size.length);for(var a=r.min(),s=r.max(),u=0,c=e._size.length;c>u;u++)p(a[u],e._size[u]),p(s[u],e._size[u]);var f=function(e){return e};return E(e,a[0],s[0],a[1],s[1],f,!1)},v=function(e,r,n,s){if(!(r instanceof t))throw new TypeError("Invalid index");var u,c=r.size(),f=r.isScalar();if(n instanceof h?(u=n.size(),n=n.toArray()):u=o.size(n),f){if(0!==u.length)throw new TypeError("Scalar expected");e.set(r.min(),n,s)}else{if(1!==c.length&&2!==c.length)throw new i(c.length,e._size.length,"<");if(u.length");for(var m=r.min()[0],g=r.min()[1],d=u[0],v=u[1],y=0;d>y;y++)for(var x=0;v>x;x++){var w=n[y][x];e.set([y+m,x+g],w,s)}}return e};r.prototype.get=function(e){if(!c(e))throw new TypeError("Array expected");if(e.length!=this._size.length)throw new i(e.length,this._size.length);var r=e[0],t=e[1];p(r,this._size[0]),p(t,this._size[1]);var n=y(t,this._ptr[r],this._ptr[r+1],this._index);return ns-1||a>u-1)&&(b(this,Math.max(o+1,s),Math.max(a+1,u),n),s=this._size[0],u=this._size[1]),p(o,s),p(a,u);var f=y(a,this._ptr[o],this._ptr[o+1],this._index);return fn[t-1])return t;for(;t>r;){var i=~~((r+t)/2),o=n[i];if(o>e)t=i;else{if(!(e>o))return i;r=i+1}}return r},x=function(e,r,t,n,i){t.splice(e,1),n.splice(e,1);for(var o=r+1;or)throw new TypeError("Invalid size, must contain positive integers (size: "+s.format(e)+")")});var n=t?this.clone():this;return b(n,e[0],e[1],r)};var b=function(r,t,n,i){var o,a,s,u=i||0,c=!e.equal(u,0),f=r._size[0],l=r._size[1];if(t>f){for(o=f;t>o;o++)if(r._ptr[o]=r._values.length,c)for(a=0;l>a;a++)r._values.push(u),r._index.push(a);r._ptr[t]=r._values.length}else f>t&&(r._ptr.splice(t+1,f-t),r._values.splice(r._ptr[t],r._values.length),r._index.splice(r._ptr[t],r._index.length));if(f=t,n>l){if(c){var p=0;for(o=0;f>o;o++){r._ptr[o]=r._ptr[o]+p,s=r._ptr[o+1]+p;var m=0;for(a=l;n>a;a++,m++)r._values.splice(s+m,0,u),r._index.splice(s+m,0,a),p++}r._ptr[f]=r._values.length}}else if(l>n){var h=0;for(o=0;f>o;o++){r._ptr[o]=r._ptr[o]-h;var g=r._ptr[o],d=r._ptr[o+1]-h;for(s=g;d>s;s++)a=r._index[s],a>n-1&&(r._values.splice(s,1),r._index.splice(s,1),h++)}r._ptr[o]=r._values.length}return r._size[0]=t,r._size[1]=n,r};r.prototype.clone=function(){var e=new r({values:a.clone(this._values),index:a.clone(this._index),ptr:a.clone(this._ptr),size:a.clone(this._size)});return e},r.prototype.size=function(){return a.clone(this._size)},r.prototype.map=function(e,r){var t=this,n=this._size[0],i=this._size[1],o=function(r,n,i){return e(r,[n,i],t)};return E(this,0,n-1,0,i-1,o,r)};var E=function(t,n,i,o,a,s,u){for(var c=[],f=[],l=[],p=function(r,t,n){r=s(r,t,n),e.equal(r,0)||(c.push(r),f.push(n))},m=n;i>=m;m++){l.push(c.length);for(var h=t._ptr[m],g=t._ptr[m+1],d=o,v=h;g>v;v++){var y=t._index[v];if(y>=o&&a>=y){if(!u)for(var x=d;y>x;x++)p(0,m-n,x-o);p(t._values[v],m-n,y-o)}d=y+1}if(!u)for(var w=d;a>=w;w++)p(0,m-n,w-o)}return l.push(c.length),new r({values:c,index:f,ptr:l,size:[i-n+1,a-o+1]})};r.prototype.forEach=function(e,r){for(var t=this,n=this._size[0],i=this._size[1],o=0;n>o;o++){for(var a=this._ptr[o],s=this._ptr[o+1],u=0,c=a;s>c;c++){var f=this._index[c];if(!r)for(var l=u;f>l;l++)e(0,[o,l],t);e(this._values[c],[o,f],t),u=f+1}if(!r)for(var p=u;i>p;p++)e(0,[o,p],t)}},r.prototype.toArray=function(){return N(this,!0)},r.prototype.valueOf=function(){return N(this,!1)};var N=function(e,r){for(var t=[],n=e._size[0],i=e._size[1],o=0;n>o;o++){for(var s=t[o]=[],u=e._ptr[o],c=e._ptr[o+1],f=0,l=u;c>l;l++){for(var p=e._index[l],m=f;p>m;m++)s[m]=0;s[p]=r?a.clone(e._values[l]):e._values[l],f=p+1}for(var h=f;i>h;h++)s[h]=0}return t};r.prototype.format=function(e){for(var r=this._size[0],t=this._size[1],n="CRS ["+s.format(r,e)+" x "+s.format(t,e)+"] density: "+s.format(this._values.length/(r*t),e)+"\n",i=0;r>i;i++)for(var o=this._ptr[i],a=this._ptr[i+1],u=o;a>u;u++){var c=this._index[u];n+="\n ("+s.format(i,e)+", "+s.format(c,e)+") ==> "+s.format(this._values[u],e)}return n},r.prototype.toString=function(){return s.format(this.toArray())},r.prototype.toJSON=function(){return{mathjs:"CrsMatrix",values:this._values,index:this._index,ptr:this._ptr,size:this._size}},r.prototype.transpose=function(){var r=this._size[0],t=this._size[1];if(0===t)throw new RangeError("Cannot transpose a 2D matrix with no columns (size: "+s.format(this._size)+")");return new e.type.CcsMatrix({values:a.clone(this._values),index:a.clone(this._index),ptr:a.clone(this._ptr),size:[t,r]})},r.prototype.diagonal=function(e){if(e){if(e instanceof m&&(e=e.toNumber()),!f(e)||!l(e))throw new TypeError("The parameter k must be an integer number")}else e=0;for(var r=e>0?e:0,t=0>e?-e:0,n=this._size[0],i=this._size[1],o=Math.min(n-t,i-r),s=[],u=t;n>u&&s.lengthg;g++){var d=this._index[g];if(d===u+r-t){h=!0,s.push(a.clone(this._values[g]));break}if(d>u+r-t)break}!h&&s.lengthe)throw new Error("Size values must be positive integers");return e}),i){if(i instanceof m&&(i=i.toNumber()),!f(i)||!l(i))throw new TypeError("The parameter k must be an integer number")}else i=0;var o,a=i>0?i:0,s=0>i?-i:0,u=t[0],p=t[1],h=Math.min(u-s,p-a);if(c(n)){if(n.length!==h)throw new Error("Invalid value array length");o=function(e){return n[e]}}else o=function(){return n};for(var g=[],d=[],v=[],y=0;u>y;y++){v.push(g.length);var x=y-s;if(x>=0&&h>x){var w=o(x);e.equal(w,0)||(d.push(x+a),g.push(w))}}return v.push(g.length),new r({values:g,index:d,ptr:v,size:[u,p]})},r.prototype.trace=function(){var r=this._size,t=r[0],n=r[1];if(t===n){var i=0;if(this._values.length>0)for(var o=0;t>o;o++)for(var a=this._ptr[o],u=this._ptr[o+1],c=a;u>c;c++){var f=this._index[c];if(o===f){i=e.add(i,this._values[c]);break}if(f>o)break}return i}throw new RangeError("Matrix must be square (size: "+s.format(r)+")")},r.prototype.multiply=function(r){var t=this._size[0],n=this._size[1];if(r instanceof h){var i=r.size();if(1===i.length)return M(this,i[0],1,function(e){return r.get([e])});if(2===i.length)return M(this,i[0],i[1],function(e,t){return r.get([e,t])});throw new Error("Can only multiply a 1 or 2 dimensional matrix (value has "+i.length+" dimensions)")}if(c(r)){var a=o.size(r);if(1===a.length)return M(this,a[0],1,function(e){return r[e]});if(2===a.length)return M(this,a[0],a[1],function(e,t){return r[e][t]});throw new Error("Can only multiply a 1 or 2 dimensional matrix (value has "+a.length+" dimensions)")}var s=function(t){return e.multiply(t,r)};return E(this,0,t-1,0,n-1,s,!1)};var M=function(t,n,i,o){var a=t._size[0],s=t._size[1];if(s!==n)throw new RangeError("Dimension mismatch in multiplication. Columns of A must match length of B (A is "+a+"x"+s+", B is "+n+", "+s+" != "+n+")");for(var u=[],c=[],f=[],l=0;a>l;l++){f.push(u.length);for(var p=t._ptr[l],m=t._ptr[l+1],h=0;i>h;h++){for(var g=0,d=p;m>d;d++){var v=t._index[d];g=e.add(g,e.multiply(t._values[d],o(v,h)))}e.equal(g,0)||(u.push(g),c.push(h))}}return f.push(u.length),1===a&&1===i?1===u.length?u[0]:0:new r({values:u,index:c,ptr:f,size:[a,i]})};return r}},function(e,r,t){"use strict";var n=t(175),i=t(172),o=n.string,a=n.array,s=n.object,u=Array.isArray,c=n.number.isNumber,f=n.number.isInteger,l=a.validateIndex;e.exports=function(e){function r(e){if(!(this instanceof r))throw new SyntaxError("Constructor must be called with the new operator");if(e instanceof x)"DenseMatrix"===e.type?(this._data=s.clone(e._data),this._size=s.clone(e._size)):(this._data=e.toArray(),this._size=e.size());else if(e&&u(e.data)&&u(e.size))this._data=e.data,this._size=e.size;else if(u(e))this._data=d(e),this._size=a.size(this._data);else{if(e)throw new TypeError("Unsupported type of data ("+n.types.type(e)+")");this._data=[],this._size=[0]}}function t(e,t){if(!(t instanceof v))throw new TypeError("Invalid index");var n=t.isScalar();if(n)return e.get(t.min());var o=t.size();if(o.length!=e._size.length)throw new i(o.length,e._size.length);for(var a=t.min(),s=t.max(),u=0,c=e._size.length;c>u;u++)l(a[u],e._size[u]),l(s[u],e._size[u]);return new r(p(e._data,t,o.length,0))}function p(e,r,t,n){var i=n==t-1,o=r.range(n);return o.map(i?function(r){return e[r]}:function(i){var o=e[i];return p(o,r,t,n+1)})}function m(r,t,n,o){if(!(t instanceof v))throw new TypeError("Invalid index");var u,c=t.size(),f=t.isScalar();if(n instanceof e.type.Matrix?(u=n.size(),n=n.valueOf()):u=a.size(n),f){if(0!==u.length)throw new TypeError("Scalar expected");r.set(t.min(),n,o)}else{if(c.length");var m=t.max().map(function(e){return e+1});g(r,m,o);var d=c.length,y=0;h(r._data,t,n,d,y)}return r}function h(e,r,t,n,i){var o=i==n-1,a=r.range(i);a.forEach(o?function(r,n){l(r),e[r]=t[n]}:function(o,a){l(o),h(e[o],r,t[a],n,i+1)})}function g(e,r,t){for(var n=s.clone(e._size),i=!1;n.lengtho;o++)r[o]>n[o]&&(n[o]=r[o],i=!0);i&&w(e,n,t)}function d(r){for(var t=0,n=r.length;n>t;t++){var i=r[t];u(i)?r[t]=d(i):i instanceof e.type.Matrix&&(r[t]=d(i.valueOf()))}return r}var v=e.type.Index,y=e.type.BigNumber,x=e.type.Matrix;r.prototype=new e.type.Matrix,r.prototype.type="DenseMatrix",r.prototype.storage=function(){return"dense"},r.prototype.subset=function(e,r,n){switch(arguments.length){case 1:return t(this,e);case 2:case 3:return m(this,e,r,n);default:throw new SyntaxError("Wrong number of arguments")}},r.prototype.get=function(e){if(!u(e))throw new TypeError("Array expected");if(e.length!=this._size.length)throw new i(e.length,this._size.length);for(var r=0;rn;n++){var a=e[n];l(a,t.length),t=t[a]}return s.clone(t)},r.prototype.set=function(e,r,t){if(!u(e))throw new TypeError("Array expected");if(e.lengthn;n++)a=e[n],l(a,c.length),c=c[a];return a=e[e.length-1],l(a,c.length),c[a]=r,this},r.prototype.resize=function(e,r,t){if(!u(e))throw new TypeError("Array expected");var n=t?this.clone():this;return w(n,e,r)};var w=function(e,r,t){if(0===r.length){for(var n=e._data;u(n);)n=n[0];return s.clone(n)}return e._size=s.clone(r),e._data=a.resize(e._data,e._size,t),e};r.prototype.clone=function(){var e=new r({data:s.clone(this._data),size:s.clone(this._size)});return e},r.prototype.size=function(){return this._size},r.prototype.map=function(e){var t=this,n=function(r,i){return u(r)?r.map(function(e,r){return n(e,i.concat(r))}):e(r,i,t)};return new r({data:n(this._data,[]),size:s.clone(this._size)})},r.prototype.forEach=function(e){var r=this,t=function(n,i){u(n)?n.forEach(function(e,r){t(e,i.concat(r))}):e(n,i,r)};t(this._data,[])},r.prototype.toArray=function(){return s.clone(this._data)},r.prototype.valueOf=function(){return this._data},r.prototype.format=function(e){return o.format(this._data,e)},r.prototype.toString=function(){return o.format(this._data)},r.prototype.toJSON=function(){return{mathjs:"DenseMatrix",data:this._data,size:this._size}},r.prototype.transpose=function(){switch(this._size.length){case 1:return this.clone();case 2:var e=this._size[0],t=this._size[1];if(0===t)throw new RangeError("Cannot transpose a 2D matrix with no columns (size: "+o.format(this._size)+")");for(var n,i=[],a=0;t>a;a++){n=i[a]=[];for(var u=0;e>u;u++)n[u]=s.clone(this._data[u][a]); +!function(e,r){"object"==typeof exports&&"object"==typeof module?module.exports=r():"function"==typeof define&&define.amd?define(r):"object"==typeof exports?exports.math=r():e.math=r()}(this,function(){return function(e){function r(n){if(t[n])return t[n].exports;var i=t[n]={exports:{},id:n,loaded:!1};return e[n].call(i.exports,i,i.exports,r),i.loaded=!0,i.exports}var t={};return r.m=e,r.c=t,r.p="",r(0)}([function(e,r,t){e.exports=t(1)},function(e,r,t){"use strict";function n(e){if("function"!=typeof Object.create)throw new Error("ES5 not supported by this JavaScript engine. Please load the es5-shim and es5-sham library for compatibility.");var r={},a={matrix:"matrix",number:"number",precision:64,epsilon:1e-14};r.config=function(e){if(e){if(i.deepExtend(a,e),e.precision&&r.type.BigNumber.config({precision:e.precision}),t(4)(r,a),e.number&&e.number.defaultType)throw new Error("setting `number.defaultType` is deprecated. Use `number` instead.");if(e.number&&e.number.precision)throw new Error("setting `number.precision` is deprecated. Use `precision` instead.");if(e.matrix&&e.matrix.defaultType)throw new Error("setting `matrix.defaultType` is deprecated. Use `matrix` instead.");if(e.matrix&&e.matrix["default"])throw new Error("setting `matrix.default` is deprecated. Use `matrix` instead.");if(e.decimals)throw new Error("setting `decimals` is deprecated. Use `precision` instead.")}return i.clone(a)},r.create=n;var s=t(5).constructor();if(s.prototype.toJSON=function(){return{mathjs:"BigNumber",value:this.toString()}},s.fromJSON=function(e){return new s(e.value)},"function"!=typeof s.prototype.clone&&(s.prototype.clone=function(){return this}),"function"==typeof s.convert)throw new Error("Cannot add function convert to BigNumber: function already exists");return s.convert=function(e){return o(e)>15?e:new s(e)},r.error=t(6),r.type={},r.type.Complex=t(7),r.type.Range=t(8),r.type.Index=t(9),r.type.Matrix=t(10)(a),r.type.Unit=t(11),r.type.Help=t(12),r.type.ResultSet=t(13),r.type.BigNumber=s,r.collection=t(14)(r,a),r.type.CcsMatrix=t(15)(r,a),r.type.CrsMatrix=t(16)(r,a),r.type.DenseMatrix=t(17)(r,a),r.type.Matrix._storage.ccs=r.type.CcsMatrix,r.type.Matrix._storage.crs=r.type.CrsMatrix,r.type.Matrix._storage.dense=r.type.DenseMatrix,r.type.Matrix._storage["default"]=r.type.DenseMatrix,r.expression={},r.expression.node=t(18),r.expression.parse=t(19)(r,a),r.expression.Parser=t(20)(r,a),r.expression.docs=t(21),r.json={reviver:t(22)(r,a)},t(34)(r,a),t(35)(r,a),t(36)(r,a),t(37)(r,a),t(38)(r,a),t(39)(r,a),t(40)(r,a),t(41)(r,a),t(42)(r,a),t(43)(r,a),t(44)(r,a),t(45)(r,a),t(46)(r,a),t(47)(r,a),t(48)(r,a),t(49)(r,a),t(50)(r,a),t(51)(r,a),t(52)(r,a),t(53)(r,a),t(54)(r,a),t(55)(r,a),t(56)(r,a),t(57)(r,a),t(58)(r,a),t(59)(r,a),t(60)(r,a),t(61)(r,a),t(62)(r,a),t(63)(r,a),t(64)(r,a),t(65)(r,a),t(66)(r,a),t(67)(r,a),t(68)(r,a),t(69)(r,a),t(70)(r,a),t(71)(r,a),t(72)(r,a),t(73)(r,a),t(74)(r,a),t(75)(r,a),t(76)(r,a),t(77)(r,a),t(78)(r,a),t(79)(r,a),t(80)(r,a),t(81)(r,a),t(82)(r,a),t(83)(r,a),t(84)(r,a),t(85)(r,a),t(86)(r,a),t(87)(r,a),t(88)(r,a),t(89)(r,a),t(90)(r,a),t(91)(r,a),t(92)(r,a),t(93)(r,a),t(94)(r,a),t(95)(r,a),t(96)(r,a),t(97)(r,a),t(98)(r,a),t(99)(r,a),t(100)(r,a),t(101)(r,a),t(102)(r,a),t(103)(r,a),t(104)(r,a),t(105)(r,a),t(106)(r,a),t(107)(r,a),t(108)(r,a),t(109)(r,a),t(110)(r,a),t(111)(r,a),t(112)(r,a),t(113)(r,a),t(114)(r,a),t(115)(r,a),t(116)(r,a),t(117)(r,a),t(118)(r,a),t(119)(r,a),t(120)(r,a),t(121)(r,a),t(122)(r,a),t(123)(r,a),t(124)(r,a),t(125)(r,a),t(126)(r,a),t(127)(r,a),t(128)(r,a),t(129)(r,a),t(130)(r,a),t(131)(r,a),t(132)(r,a),t(133)(r,a),t(134)(r,a),t(135)(r,a),t(136)(r,a),t(137)(r,a),t(138)(r,a),t(139)(r,a),t(140)(r,a),t(141)(r,a),t(142)(r,a),t(143)(r,a),t(144)(r,a),t(145)(r,a),t(146)(r,a),t(147)(r,a),t(148)(r,a),t(149)(r,a),t(150)(r,a),t(151)(r,a),t(152)(r,a),t(153)(r,a),t(154)(r,a),t(155)(r,a),t(156)(r,a),t(157)(r,a),t(158)(r,a),t(159)(r,a),t(160)(r,a),t(161)(r,a),t(162)(r,a),t(163)(r,a),t(164)(r,a),t(165)(r,a),t(166)(r,a),t(167)(r,a),r.ifElse=function(){throw new Error("Function ifElse is deprecated. Use the conditional operator instead.")},t(4)(r,a),r.expression.transform={concat:t(23)(r,a),filter:t(24)(r,a),forEach:t(25)(r,a),index:t(26)(r,a),map:t(27)(r,a),max:t(28)(r,a),mean:t(29)(r,a),min:t(30)(r,a),range:t(31)(r,a),subset:t(32)(r,a)},r.chaining={},r.chaining.Chain=t(33)(r,a),r.chaining.Selector=r.chaining.Chain,r.config(a),r.config(e),r}var i=t(2),o=t(3).digits,a=n();"undefined"!=typeof window&&(window.mathjs=a),e.exports=a},function(e,r,t){"use strict";r.clone=function n(e){var r=typeof e;if("number"===r||"string"===r||"boolean"===r||null===e||void 0===e)return e;if("function"==typeof e.clone)return e.clone();if(Array.isArray(e))return e.map(function(e){return n(e)});if(e instanceof Number)return new Number(e.valueOf());if(e instanceof String)return new String(e.valueOf());if(e instanceof Boolean)return new Boolean(e.valueOf());if(e instanceof Date)return new Date(e.valueOf());if(e instanceof RegExp)throw new TypeError("Cannot clone "+e);var t={};for(var i in e)e.hasOwnProperty(i)&&(t[i]=n(e[i]));return t},r.extend=function(e,r){for(var t in r)r.hasOwnProperty(t)&&(e[t]=r[t]);return e},r.deepExtend=function i(e,r){if(Array.isArray(r))throw new TypeError("Arrays are not supported by deepExtend");for(var t in r)if(r.hasOwnProperty(t))if(r[t]&&r[t].constructor===Object)void 0===e[t]&&(e[t]={}),e[t].constructor===Object?i(e[t],r[t]):e[t]=r[t];else{if(Array.isArray(r[t]))throw new TypeError("Arrays are not supported by deepExtend");e[t]=r[t]}return e},r.deepEqual=function(e,t){var n,i,o;if(Array.isArray(e)){if(!Array.isArray(t))return!1;if(e.length!=t.length)return!1;for(i=0,o=e.length;o>i;i++)if(!r.deepEqual(e[i],t[i]))return!1;return!0}if(e instanceof Object){if(Array.isArray(t)||!(t instanceof Object))return!1;for(n in e)if(!r.deepEqual(e[n],t[n]))return!1;for(n in t)if(!r.deepEqual(e[n],t[n]))return!1;return!0}return typeof e==typeof t&&e==t},r.canDefineProperty=function(){try{if(Object.defineProperty)return Object.defineProperty({},"x",{}),!0}catch(e){}return!1},r.lazy=function(e,t,n){if(r.canDefineProperty()){var i,o=!0;Object.defineProperty(e,t,{get:function(){return o&&(i=n(),o=!1),i},set:function(e){i=e,o=!1},configurable:!0})}else e[t]=n()}},function(e,r,t){"use strict";var n=t(175);r.isNumber=function(e){return e instanceof Number||"number"==typeof e},r.isInteger=function(e){return e==Math.round(e)},r.sign=function(e){return e>0?1:0>e?-1:0},r.format=function(e,t){if("function"==typeof t)return t(e);if(e===1/0)return"Infinity";if(e===-(1/0))return"-Infinity";if(isNaN(e))return"NaN";var n="auto",i=void 0;switch(t&&(t.notation&&(n=t.notation),r.isNumber(t)?i=t:t.precision&&(i=t.precision)),n){case"fixed":return r.toFixed(e,i);case"exponential":return r.toExponential(e,i);case"auto":return r.toPrecision(e,i,t&&t.exponential).replace(/((\.\d*?)(0+))($|e)/,function(){var e=arguments[2],r=arguments[4];return"."!==e?e+r:r});default:throw new Error('Unknown notation "'+n+'". Choose "auto", "exponential", or "fixed".')}},r.toExponential=function(e,r){return new n(e).toExponential(r)},r.toFixed=function(e,r){return new n(e).toFixed(r)},r.toPrecision=function(e,r,t){return new n(e).toPrecision(r,t)},r.digits=function(e){return e.toExponential().replace(/e.*$/,"").replace(/^0\.?0*|\./,"").length},r.DBL_EPSILON=Number.EPSILON||2.220446049250313e-16,r.nearlyEqual=function(e,t,n){if(null==n)return e==t;if(e==t)return!0;if(isNaN(e)||isNaN(t))return!1;if(isFinite(e)&&isFinite(t)){var i=Math.abs(e-t);return i="0"&&"9">=e||"."==e}function a(e){return e>="0"&&"9">=e}function s(){y++,x=v.charAt(y)}function u(e){y=e,x=v.charAt(y)}function c(){var e,r="";if(e=y,"+"==x?s():"-"==x&&(r+=x,s()),!o(x))return u(e),null;if("."==x){if(r+=x,s(),!a(x))return u(e),null}else{for(;a(x);)r+=x,s();"."==x&&(r+=x,s())}for(;a(x);)r+=x,s();if("E"==x||"e"==x){if(r+=x,s(),("+"==x||"-"==x)&&(r+=x,s()),!a(x))return u(e),null;for(;a(x);)r+=x,s()}return r}function f(){var e=v.charAt(y+1);if("I"==x||"i"==x)return s(),"1";if(!("+"!=x&&"-"!=x||"I"!=e&&"i"!=e)){var r="+"==x?"1":"-1";return s(),s(),r}return null}var l=t(176),p=t(11),m=l.number,h=l.number.isNumber,g=p.isUnit,d=l.string.isString;n.isComplex=function(e){return e instanceof n};var v,y,x;n.parse=function(e){if(v=e,y=-1,x="",!d(v))return null;s(),i();var r=c();if(r){if("I"==x||"i"==x)return s(),i(),x?null:new n(0,Number(r));i();var t=x;if("+"!=t&&"-"!=t)return i(),x?null:new n(Number(r),0);s(),i();var o=c();if(o){if("I"!=x&&"i"!=x)return null;s()}else if(o=f(),!o)return null;return"-"==t&&(o="-"==o[0]?"+"+o.substring(1):"-"+o),s(),i(),x?null:new n(Number(r),Number(o))}return(r=f())?(i(),x?null:new n(0,Number(r))):null},n.fromPolar=function(e){switch(arguments.length){case 1:var r=arguments[0];if("object"==typeof r)return n.fromPolar(r.r,r.phi);throw new TypeError("Input has to be an object with r and phi keys.");case 2:var t=arguments[0],i=arguments[1];if(h(t)){if(g(i)&&i.hasBase(p.BASE_UNITS.ANGLE)&&(i=i.toNumber("rad")),h(i))return new n(t*Math.cos(i),t*Math.sin(i));throw new TypeError("Phi is not a number nor an angle unit.")}throw new TypeError("Radius r is not a number.");default:throw new SyntaxError("Wrong number of arguments in function fromPolar")}},n.prototype.toPolar=function(){return{r:Math.sqrt(this.re*this.re+this.im*this.im),phi:Math.atan2(this.im,this.re)}},n.prototype.clone=function(){return new n(this.re,this.im)},n.prototype.equals=function(e){return this.re===e.re&&this.im===e.im},n.prototype.format=function(e){var r="",t=this.im,n=this.re,i=m.format(this.re,e),o=m.format(this.im,e),a=h(e)?e:e?e.precision:null;if(null!==a){var s=Math.pow(10,-a);Math.abs(n/t)0?1==t?i+" + i":i+" + "+o+"i":-1==t?i+" - i":i+" - "+o.substring(1)+"i"},n.prototype.toString=function(){return this.format()},n.prototype.toJSON=function(){return{mathjs:"Complex",re:this.re,im:this.im}},n.fromJSON=function(e){return new n(e)},n.prototype.valueOf=n.prototype.toString,e.exports=n},function(e,r,t){"use strict";function n(e,r,t){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");if(null!=e&&!o.isNumber(e))throw new TypeError("Parameter start must be a number");if(null!=r&&!o.isNumber(r))throw new TypeError("Parameter end must be a number");if(null!=t&&!o.isNumber(t))throw new TypeError("Parameter step must be a number");this.start=null!=e?parseFloat(e):0,this.end=null!=r?parseFloat(r):0,this.step=null!=t?parseFloat(t):1}{var i=t(176),o=i.number,a=i.string;i.array}n.parse=function(e){if(!a.isString(e))return null;var r=e.split(":"),t=r.map(function(e){return parseFloat(e)}),i=t.some(function(e){return isNaN(e)});if(i)return null;switch(t.length){case 2:return new n(t[0],t[1]);case 3:return new n(t[0],t[2],t[1]);default:return null}},n.prototype.clone=function(){return new n(this.start,this.end,this.step)},n.isRange=function(e){return e instanceof n},n.prototype.size=function(){var e=0,r=this.start,t=this.step,n=this.end,i=n-r;return o.sign(t)==o.sign(i)?e=Math.ceil(i/t):0==i&&(e=0),isNaN(e)&&(e=0),[e]},n.prototype.min=function(){var e=this.size()[0];return e>0?this.step>0?this.start:this.start+(e-1)*this.step:void 0},n.prototype.max=function(){var e=this.size()[0];return e>0?this.step>0?this.start+(e-1)*this.step:this.start:void 0},n.prototype.forEach=function(e){var r=this.start,t=this.step,n=this.end,i=0;if(t>0)for(;n>r;)e(r,i,this),r+=t,i++;else if(0>t)for(;r>n;)e(r,i,this),r+=t,i++},n.prototype.map=function(e){var r=[];return this.forEach(function(t,n,i){r[n]=e(t,n,i)}),r},n.prototype.toArray=function(){var e=[];return this.forEach(function(r,t){e[t]=r}),e},n.prototype.valueOf=function(){return this.toArray()},n.prototype.format=function(e){var r=o.format(this.start,e);return 1!=this.step&&(r+=":"+o.format(this.step,e)),r+=":"+o.format(this.end,e)},n.prototype.toString=function(){return this.format()},n.prototype.toJSON=function(){return{mathjs:"Range",start:this.start,end:this.end,step:this.step}},n.fromJSON=function(e){return new n(e.start,e.end,e.step)},e.exports=n},function(e,r,t){"use strict";function n(e){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");this._ranges=[],this._isScalar=!0;for(var r=0,t=arguments.length;t>r;r++){var o=arguments[r];if(o instanceof a)this._ranges.push(o),this._isScalar=!1;else if(f(o))this._ranges.push(i(o)),this._isScalar=!1;else if(u(o))this._ranges.push(i([o,o+1]));else{var s=o.valueOf();if(!f(s))throw new TypeError("Ranges must be an Array, Number, or Range");this._ranges.push(i(s)),this._isScalar=!1}}}function i(e){for(var r=e.length,t=0;r>t;t++)if(!u(e[t])||!c(e[t]))throw new TypeError("Index parameters must be integer numbers");switch(e.length){case 2:return new a(e[0],e[1]);case 3:return new a(e[0],e[1],e[2]);default:throw new SyntaxError("Wrong number of arguments in Index (2 or 3 expected)")}}var o=t(176),a=t(8),s=o.number,u=s.isNumber,c=s.isInteger,f=Array.isArray;n.prototype.clone=function(){var e=new n;return e._ranges=o.object.clone(this._ranges),e._isScalar=this._isScalar,e},n.isIndex=function(e){return e instanceof n},n.create=function(e){var r=new n;return n.apply(r,e),r},n.prototype.size=function(){for(var e=[],r=0,t=this._ranges.length;t>r;r++){var n=this._ranges[r];e[r]=n.size()[0]}return e},n.prototype.max=function(){for(var e=[],r=0,t=this._ranges.length;t>r;r++){var n=this._ranges[r];e[r]=n.max()}return e},n.prototype.min=function(){for(var e=[],r=0,t=this._ranges.length;t>r;r++){var n=this._ranges[r];e[r]=n.min()}return e},n.prototype.forEach=function(e){for(var r=0,t=this._ranges.length;t>r;r++)e(this._ranges[r],r,this)},n.prototype.range=function(e){return this._ranges[e]||null},n.prototype.isScalar=function(){return this._isScalar},n.prototype.toArray=function(){for(var e=[],r=0,t=this._ranges.length;t>r;r++){var n=this._ranges[r],i=[],o=n.start,a=n.end,s=n.step;if(s>0)for(;a>o;)i.push(o),o+=s;else if(0>s)for(;o>a;)i.push(o),o+=s;e.push(i)}return e},n.prototype.valueOf=n.prototype.toArray,n.prototype.toString=function(){for(var e=[],r=0,t=this._ranges.length;t>r;r++){var n=this._ranges[r],i=s.format(n.start);1!=n.step&&(i+=":"+s.format(n.step)),i+=":"+s.format(n.end),e.push(i)}return"["+e.join(", ")+"]"},n.prototype.toJSON=function(){return{mathjs:"Index",ranges:this._ranges}},n.fromJSON=function(e){return n.create(e.ranges)},e.exports=n},function(e,r,t){"use strict";var n=t(177),i=n.isString;e.exports=function(e){function r(){if(!(this instanceof r))throw new SyntaxError("Constructor must be called with the new operator")}return r.isMatrix=function(e){return e instanceof r},r.storage=function(e){if(!i(e))throw new TypeError("format must be a string value");var t=r._storage[e];if(!t)throw new SyntaxError("Unsupported matrix storage format: "+e);return t},r._storage={},r.prototype.storage=function(){throw new Error("Cannot invoke storage on a Matrix interface")},r.prototype.subset=function(e,r,t){throw new Error("Cannot invoke subset on a Matrix interface")},r.prototype.get=function(e){throw new Error("Cannot invoke get on a Matrix interface")},r.prototype.set=function(e,r,t){throw new Error("Cannot invoke set on a Matrix interface")},r.prototype.resize=function(e,r){throw new Error("Cannot invoke resize on a Matrix interface")},r.prototype.clone=function(){throw new Error("Cannot invoke clone on a Matrix interface")},r.prototype.size=function(){throw new Error("Cannot invoke size on a Matrix interface")},r.prototype.map=function(e,r){throw new Error("Cannot invoke map on a Matrix interface")},r.prototype.forEach=function(e){throw new Error("Cannot invoke forEach on a Matrix interface")},r.prototype.toArray=function(){throw new Error("Cannot invoke toArray on a Matrix interface")},r.prototype.valueOf=function(){throw new Error("Cannot invoke valueOf on a Matrix interface")},r.prototype.format=function(e){throw new Error("Cannot invoke format on a Matrix interface")},r.prototype.toString=function(){throw new Error("Cannot invoke toString on a Matrix interface")},r.prototype.transpose=function(){throw new Error("Cannot invoke transpose on a Matrix interface")},r.prototype.trace=function(){throw new Error("Cannot invoke transpose on a Matrix interface")},r.prototype.multiply=function(e){throw new Error("Cannot invoke multiply on a Matrix interface")},r}},function(e,r,t){"use strict";function n(e,r){if(!(this instanceof n))throw new Error("Constructor must be called with the new operator");if(void 0!=e&&!y(e))throw new TypeError("First parameter in Unit constructor must be a number");if(void 0!=r&&(!x(r)||""==r))throw new TypeError("Second parameter in Unit constructor must be a string");if(void 0!=r){var t=l(r);if(!t)throw new SyntaxError('Unknown unit "'+r+'"');this.unit=t.unit,this.prefix=t.prefix}else this.unit=M,this.prefix=b;this.value=void 0!=e?this._normalize(e):null,this.fixPrefix=!1}function i(){for(;" "==h||" "==h;)s()}function o(e){return e>="0"&&"9">=e||"."==e}function a(e){return e>="0"&&"9">=e}function s(){m++,h=p.charAt(m)}function u(e){m=e,h=p.charAt(m)}function c(){var e,r="";if(e=m,"+"==h?s():"-"==h&&(r+=h,s()),!o(h))return u(e),null;if("."==h){if(r+=h,s(),!a(h))return u(e),null}else{for(;a(h);)r+=h,s();"."==h&&(r+=h,s())}for(;a(h);)r+=h,s();if("E"==h||"e"==h){if(r+=h,s(),("+"==h||"-"==h)&&(r+=h,s()),!a(h))return u(e),null;for(;a(h);)r+=h,s()}return r}function f(){var e="";for(i();h&&" "!=h&&" "!=h;)e+=h,s();return e||null}function l(e){for(var r in _)if(_.hasOwnProperty(r)&&v.endsWith(e,r)){var t=_[r],n=e.length-r.length,i=e.substring(0,n),o=t.prefixes[i];if(void 0!==o)return{unit:t,prefix:o}}return null}var p,m,h,g=t(176),d=g.number,v=g.string,y=g.number.isNumber,x=g.string.isString;n.parse=function(e){if(p=e,m=-1,h="",!x(p))return null;s(),i();var r,t=c();if(t){if(r=f(),s(),i(),h)return null;if(t&&r)try{return new n(Number(t),r)}catch(o){}}else{if(r=f(),s(),i(),h)return null;if(r)try{return new n(null,r)}catch(o){}}return null},n.isUnit=function(e){return e instanceof n},n.prototype.clone=function(){var e=new n;for(var r in this)this.hasOwnProperty(r)&&(e[r]=this[r]);return e},n.prototype._normalize=function(e){return(e+this.unit.offset)*this.unit.value*this.prefix.value},n.prototype._denormalize=function(e,r){return void 0==r?e/this.unit.value/this.prefix.value-this.unit.offset:e/this.unit.value/r-this.unit.offset},n.isValuelessUnit=function(e){return null!=l(e)},n.prototype.hasBase=function(e){return this.unit.base===e},n.prototype.equalBase=function(e){return this.unit.base===e.unit.base},n.prototype.equals=function(e){return this.equalBase(e)&&this.value==e.value},n.prototype.to=function(e){var r,t=null==this.value?this._normalize(1):this.value;if(x(e)){if(r=new n(null,e),!this.equalBase(r))throw new Error("Units do not match");return r.value=t,r.fixPrefix=!0,r}if(e instanceof n){if(!this.equalBase(e))throw new Error("Units do not match");if(null!==e.value)throw new Error("Cannot convert to a unit with a value");return r=e.clone(),r.value=t,r.fixPrefix=!0,r}throw new Error("String or Unit expected as parameter")},n.prototype.toNumber=function(e){var r=this.to(e);return r._denormalize(r.value,r.prefix.value)},n.prototype.toString=function(){return this.format()},n.prototype.toJSON=function(){return{mathjs:"Unit",value:this._denormalize(this.value),unit:this.prefix.name+this.unit.name,fixPrefix:this.fixPrefix}},n.fromJSON=function(e){var r=new n(e.value,e.unit);return r.fixPrefix=e.fixPrefix||!1,r},n.prototype.valueOf=n.prototype.toString,n.prototype.format=function(e){var r,t;if(null===this.value||this.fixPrefix)r=this._denormalize(this.value),t=null!==this.value?d.format(r,e)+" ":"",t+=this.prefix.name+this.unit.name;else{var n=this._bestPrefix();r=this._denormalize(this.value,n.value),t=d.format(r,e)+" ",t+=n.name+this.unit.name}return t},n.prototype._bestPrefix=function(){var e=Math.abs(this.value/this.unit.value),r=b,t=Math.abs(Math.log(e/r.value)/Math.LN10-1.2),n=this.unit.prefixes;for(var i in n)if(n.hasOwnProperty(i)){var o=n[i];if(o.scientific){var a=Math.abs(Math.log(e/o.value)/Math.LN10-1.2);t>a&&(r=o,t=a)}}return r};var w={NONE:{"":{name:"",value:1,scientific:!0}},SHORT:{"":{name:"",value:1,scientific:!0},da:{name:"da",value:10,scientific:!1},h:{name:"h",value:100,scientific:!1},k:{name:"k",value:1e3,scientific:!0},M:{name:"M",value:1e6,scientific:!0},G:{name:"G",value:1e9,scientific:!0},T:{name:"T",value:1e12,scientific:!0},P:{name:"P",value:1e15,scientific:!0},E:{name:"E",value:1e18,scientific:!0},Z:{name:"Z",value:1e21,scientific:!0},Y:{name:"Y",value:1e24,scientific:!0},d:{name:"d",value:.1,scientific:!1},c:{name:"c",value:.01,scientific:!1},m:{name:"m",value:.001,scientific:!0},u:{name:"u",value:1e-6,scientific:!0},n:{name:"n",value:1e-9,scientific:!0},p:{name:"p",value:1e-12,scientific:!0},f:{name:"f",value:1e-15,scientific:!0},a:{name:"a",value:1e-18,scientific:!0},z:{name:"z",value:1e-21,scientific:!0},y:{name:"y",value:1e-24,scientific:!0}},LONG:{"":{name:"",value:1,scientific:!0},deca:{name:"deca",value:10,scientific:!1},hecto:{name:"hecto",value:100,scientific:!1},kilo:{name:"kilo",value:1e3,scientific:!0},mega:{name:"mega",value:1e6,scientific:!0},giga:{name:"giga",value:1e9,scientific:!0},tera:{name:"tera",value:1e12,scientific:!0},peta:{name:"peta",value:1e15,scientific:!0},exa:{name:"exa",value:1e18,scientific:!0},zetta:{name:"zetta",value:1e21,scientific:!0},yotta:{name:"yotta",value:1e24,scientific:!0},deci:{name:"deci",value:.1,scientific:!1},centi:{name:"centi",value:.01,scientific:!1},milli:{name:"milli",value:.001,scientific:!0},micro:{name:"micro",value:1e-6,scientific:!0},nano:{name:"nano",value:1e-9,scientific:!0},pico:{name:"pico",value:1e-12,scientific:!0},femto:{name:"femto",value:1e-15,scientific:!0},atto:{name:"atto",value:1e-18,scientific:!0},zepto:{name:"zepto",value:1e-21,scientific:!0},yocto:{name:"yocto",value:1e-24,scientific:!0}},SQUARED:{"":{name:"",value:1,scientific:!0},da:{name:"da",value:100,scientific:!1},h:{name:"h",value:1e4,scientific:!1},k:{name:"k",value:1e6,scientific:!0},M:{name:"M",value:1e12,scientific:!0},G:{name:"G",value:1e18,scientific:!0},T:{name:"T",value:1e24,scientific:!0},P:{name:"P",value:1e30,scientific:!0},E:{name:"E",value:1e36,scientific:!0},Z:{name:"Z",value:1e42,scientific:!0},Y:{name:"Y",value:1e48,scientific:!0},d:{name:"d",value:.01,scientific:!1},c:{name:"c",value:1e-4,scientific:!1},m:{name:"m",value:1e-6,scientific:!0},u:{name:"u",value:1e-12,scientific:!0},n:{name:"n",value:1e-18,scientific:!0},p:{name:"p",value:1e-24,scientific:!0},f:{name:"f",value:1e-30,scientific:!0},a:{name:"a",value:1e-36,scientific:!0},z:{name:"z",value:1e-42,scientific:!0},y:{name:"y",value:1e-42,scientific:!0}},CUBIC:{"":{name:"",value:1,scientific:!0},da:{name:"da",value:1e3,scientific:!1},h:{name:"h",value:1e6,scientific:!1},k:{name:"k",value:1e9,scientific:!0},M:{name:"M",value:1e18,scientific:!0},G:{name:"G",value:1e27,scientific:!0},T:{name:"T",value:1e36,scientific:!0},P:{name:"P",value:1e45,scientific:!0},E:{name:"E",value:1e54,scientific:!0},Z:{name:"Z",value:1e63,scientific:!0},Y:{name:"Y",value:1e72,scientific:!0},d:{name:"d",value:.001,scientific:!1},c:{name:"c",value:1e-6,scientific:!1},m:{name:"m",value:1e-9,scientific:!0},u:{name:"u",value:1e-18,scientific:!0},n:{name:"n",value:1e-27,scientific:!0},p:{name:"p",value:1e-36,scientific:!0},f:{name:"f",value:1e-45,scientific:!0},a:{name:"a",value:1e-54,scientific:!0},z:{name:"z",value:1e-63,scientific:!0},y:{name:"y",value:1e-72,scientific:!0}},BINARY_SHORT:{"":{name:"",value:1,scientific:!0},k:{name:"k",value:1e3,scientific:!0},M:{name:"M",value:1e6,scientific:!0},G:{name:"G",value:1e9,scientific:!0},T:{name:"T",value:1e12,scientific:!0},P:{name:"P",value:1e15,scientific:!0},E:{name:"E",value:1e18,scientific:!0},Z:{name:"Z",value:1e21,scientific:!0},Y:{name:"Y",value:1e24,scientific:!0},Ki:{name:"Ki",value:1024,scientific:!0},Mi:{name:"Mi",value:Math.pow(1024,2),scientific:!0},Gi:{name:"Gi",value:Math.pow(1024,3),scientific:!0},Ti:{name:"Ti",value:Math.pow(1024,4),scientific:!0},Pi:{name:"Pi",value:Math.pow(1024,5),scientific:!0},Ei:{name:"Ei",value:Math.pow(1024,6),scientific:!0},Zi:{name:"Zi",value:Math.pow(1024,7),scientific:!0},Yi:{name:"Yi",value:Math.pow(1024,8),scientific:!0}},BINARY_LONG:{"":{name:"",value:1,scientific:!0},kilo:{name:"kilo",value:1e3,scientific:!0},mega:{name:"mega",value:1e6,scientific:!0},giga:{name:"giga",value:1e9,scientific:!0},tera:{name:"tera",value:1e12,scientific:!0},peta:{name:"peta",value:1e15,scientific:!0},exa:{name:"exa",value:1e18,scientific:!0},zetta:{name:"zetta",value:1e21,scientific:!0},yotta:{name:"yotta",value:1e24,scientific:!0},kibi:{name:"kibi",value:1024,scientific:!0},mebi:{name:"mebi",value:Math.pow(1024,2),scientific:!0},gibi:{name:"gibi",value:Math.pow(1024,3),scientific:!0},tebi:{name:"tebi",value:Math.pow(1024,4),scientific:!0},pebi:{name:"pebi",value:Math.pow(1024,5),scientific:!0},exi:{name:"exi",value:Math.pow(1024,6),scientific:!0},zebi:{name:"zebi",value:Math.pow(1024,7),scientific:!0},yobi:{name:"yobi",value:Math.pow(1024,8),scientific:!0}}},b={name:"",value:1,scientific:!0},E={NONE:{},LENGTH:{},MASS:{},TIME:{},CURRENT:{},TEMPERATURE:{},LUMINOUS_INTENSITY:{},AMOUNT_OF_SUBSTANCE:{},FORCE:{},SURFACE:{},VOLUME:{},ANGLE:{},BIT:{}},N={},M={name:"",base:N,value:1,offset:0},_={meter:{name:"meter",base:E.LENGTH,prefixes:w.LONG,value:1,offset:0},inch:{name:"inch",base:E.LENGTH,prefixes:w.NONE,value:.0254,offset:0},foot:{name:"foot",base:E.LENGTH,prefixes:w.NONE,value:.3048,offset:0},yard:{name:"yard",base:E.LENGTH,prefixes:w.NONE,value:.9144,offset:0},mile:{name:"mile",base:E.LENGTH,prefixes:w.NONE,value:1609.344,offset:0},link:{name:"link",base:E.LENGTH,prefixes:w.NONE,value:.201168,offset:0},rod:{name:"rod",base:E.LENGTH,prefixes:w.NONE,value:5.02921,offset:0},chain:{name:"chain",base:E.LENGTH,prefixes:w.NONE,value:20.1168,offset:0},angstrom:{name:"angstrom",base:E.LENGTH,prefixes:w.NONE,value:1e-10,offset:0},m:{name:"m",base:E.LENGTH,prefixes:w.SHORT,value:1,offset:0},"in":{name:"in",base:E.LENGTH,prefixes:w.NONE,value:.0254,offset:0},ft:{name:"ft",base:E.LENGTH,prefixes:w.NONE,value:.3048,offset:0},yd:{name:"yd",base:E.LENGTH,prefixes:w.NONE,value:.9144,offset:0},mi:{name:"mi",base:E.LENGTH,prefixes:w.NONE,value:1609.344,offset:0},li:{name:"li",base:E.LENGTH,prefixes:w.NONE,value:.201168,offset:0},rd:{name:"rd",base:E.LENGTH,prefixes:w.NONE,value:5.02921,offset:0},ch:{name:"ch",base:E.LENGTH,prefixes:w.NONE,value:20.1168,offset:0},mil:{name:"mil",base:E.LENGTH,prefixes:w.NONE,value:254e-7,offset:0},m2:{name:"m2",base:E.SURFACE,prefixes:w.SQUARED,value:1,offset:0},sqin:{name:"sqin",base:E.SURFACE,prefixes:w.NONE,value:64516e-8,offset:0},sqft:{name:"sqft",base:E.SURFACE,prefixes:w.NONE,value:.09290304,offset:0},sqyd:{name:"sqyd",base:E.SURFACE,prefixes:w.NONE,value:.83612736,offset:0},sqmi:{name:"sqmi",base:E.SURFACE,prefixes:w.NONE,value:2589988.110336,offset:0},sqrd:{name:"sqrd",base:E.SURFACE,prefixes:w.NONE,value:25.29295,offset:0},sqch:{name:"sqch",base:E.SURFACE,prefixes:w.NONE,value:404.6873,offset:0},sqmil:{name:"sqmil",base:E.SURFACE,prefixes:w.NONE,value:6.4516e-10,offset:0},m3:{name:"m3",base:E.VOLUME,prefixes:w.CUBIC,value:1,offset:0},L:{name:"L",base:E.VOLUME,prefixes:w.SHORT,value:.001,offset:0},l:{name:"l",base:E.VOLUME,prefixes:w.SHORT,value:.001,offset:0},litre:{name:"litre",base:E.VOLUME,prefixes:w.LONG,value:.001,offset:0},cuin:{name:"cuin",base:E.VOLUME,prefixes:w.NONE,value:16387064e-12,offset:0},cuft:{name:"cuft",base:E.VOLUME,prefixes:w.NONE,value:.028316846592,offset:0},cuyd:{name:"cuyd",base:E.VOLUME,prefixes:w.NONE,value:.764554857984,offset:0},teaspoon:{name:"teaspoon",base:E.VOLUME,prefixes:w.NONE,value:5e-6,offset:0},tablespoon:{name:"tablespoon",base:E.VOLUME,prefixes:w.NONE,value:15e-6,offset:0},drop:{name:"drop",base:E.VOLUME,prefixes:w.NONE,value:5e-8,offset:0},gtt:{name:"gtt",base:E.VOLUME,prefixes:w.NONE,value:5e-8,offset:0},minim:{name:"minim",base:E.VOLUME,prefixes:w.NONE,value:6.161152e-8,offset:0},fluiddram:{name:"fluiddram",base:E.VOLUME,prefixes:w.NONE,value:36966911e-13,offset:0},fluidounce:{name:"fluidounce",base:E.VOLUME,prefixes:w.NONE,value:2957353e-11,offset:0},gill:{name:"gill",base:E.VOLUME,prefixes:w.NONE,value:.0001182941,offset:0},cc:{name:"cc",base:E.VOLUME,prefixes:w.NONE,value:1e-6,offset:0},cup:{name:"cup",base:E.VOLUME,prefixes:w.NONE,value:.0002365882,offset:0},pint:{name:"pint",base:E.VOLUME,prefixes:w.NONE,value:.0004731765,offset:0},quart:{name:"quart",base:E.VOLUME,prefixes:w.NONE,value:.0009463529,offset:0},gallon:{name:"gallon",base:E.VOLUME,prefixes:w.NONE,value:.003785412,offset:0},beerbarrel:{name:"beerbarrel",base:E.VOLUME,prefixes:w.NONE,value:.1173478,offset:0},oilbarrel:{name:"oilbarrel",base:E.VOLUME,prefixes:w.NONE,value:.1589873,offset:0},hogshead:{name:"hogshead",base:E.VOLUME,prefixes:w.NONE,value:.238481,offset:0},fldr:{name:"fldr",base:E.VOLUME,prefixes:w.NONE,value:36966911e-13,offset:0},floz:{name:"floz",base:E.VOLUME,prefixes:w.NONE,value:2957353e-11,offset:0},gi:{name:"gi",base:E.VOLUME,prefixes:w.NONE,value:.0001182941,offset:0},cp:{name:"cp",base:E.VOLUME,prefixes:w.NONE,value:.0002365882,offset:0},pt:{name:"pt",base:E.VOLUME,prefixes:w.NONE,value:.0004731765,offset:0},qt:{name:"qt",base:E.VOLUME,prefixes:w.NONE,value:.0009463529,offset:0},gal:{name:"gal",base:E.VOLUME,prefixes:w.NONE,value:.003785412,offset:0},bbl:{name:"bbl",base:E.VOLUME,prefixes:w.NONE,value:.1173478,offset:0},obl:{name:"obl",base:E.VOLUME,prefixes:w.NONE,value:.1589873,offset:0},g:{name:"g",base:E.MASS,prefixes:w.SHORT,value:.001,offset:0},gram:{name:"gram",base:E.MASS,prefixes:w.LONG,value:.001,offset:0},ton:{name:"ton",base:E.MASS,prefixes:w.SHORT,value:907.18474,offset:0},tonne:{name:"tonne", +base:E.MASS,prefixes:w.SHORT,value:1e3,offset:0},grain:{name:"grain",base:E.MASS,prefixes:w.NONE,value:6479891e-11,offset:0},dram:{name:"dram",base:E.MASS,prefixes:w.NONE,value:.0017718451953125,offset:0},ounce:{name:"ounce",base:E.MASS,prefixes:w.NONE,value:.028349523125,offset:0},poundmass:{name:"poundmass",base:E.MASS,prefixes:w.NONE,value:.45359237,offset:0},hundredweight:{name:"hundredweight",base:E.MASS,prefixes:w.NONE,value:45.359237,offset:0},stick:{name:"stick",base:E.MASS,prefixes:w.NONE,value:.115,offset:0},stone:{name:"stone",base:E.MASS,prefixes:w.NONE,value:6350,offset:0},gr:{name:"gr",base:E.MASS,prefixes:w.NONE,value:6479891e-11,offset:0},dr:{name:"dr",base:E.MASS,prefixes:w.NONE,value:.0017718451953125,offset:0},oz:{name:"oz",base:E.MASS,prefixes:w.NONE,value:.028349523125,offset:0},lbm:{name:"lbm",base:E.MASS,prefixes:w.NONE,value:.45359237,offset:0},cwt:{name:"cwt",base:E.MASS,prefixes:w.NONE,value:45.359237,offset:0},s:{name:"s",base:E.TIME,prefixes:w.SHORT,value:1,offset:0},min:{name:"min",base:E.TIME,prefixes:w.NONE,value:60,offset:0},h:{name:"h",base:E.TIME,prefixes:w.NONE,value:3600,offset:0},second:{name:"second",base:E.TIME,prefixes:w.LONG,value:1,offset:0},sec:{name:"sec",base:E.TIME,prefixes:w.LONG,value:1,offset:0},minute:{name:"minute",base:E.TIME,prefixes:w.NONE,value:60,offset:0},hour:{name:"hour",base:E.TIME,prefixes:w.NONE,value:3600,offset:0},day:{name:"day",base:E.TIME,prefixes:w.NONE,value:86400,offset:0},rad:{name:"rad",base:E.ANGLE,prefixes:w.NONE,value:1,offset:0},deg:{name:"deg",base:E.ANGLE,prefixes:w.NONE,value:.017453292519943295,offset:0},grad:{name:"grad",base:E.ANGLE,prefixes:w.NONE,value:.015707963267948967,offset:0},cycle:{name:"cycle",base:E.ANGLE,prefixes:w.NONE,value:6.283185307179586,offset:0},A:{name:"A",base:E.CURRENT,prefixes:w.SHORT,value:1,offset:0},ampere:{name:"ampere",base:E.CURRENT,prefixes:w.LONG,value:1,offset:0},K:{name:"K",base:E.TEMPERATURE,prefixes:w.NONE,value:1,offset:0},degC:{name:"degC",base:E.TEMPERATURE,prefixes:w.NONE,value:1,offset:273.15},degF:{name:"degF",base:E.TEMPERATURE,prefixes:w.NONE,value:1/1.8,offset:459.67},degR:{name:"degR",base:E.TEMPERATURE,prefixes:w.NONE,value:1/1.8,offset:0},kelvin:{name:"kelvin",base:E.TEMPERATURE,prefixes:w.NONE,value:1,offset:0},celsius:{name:"celsius",base:E.TEMPERATURE,prefixes:w.NONE,value:1,offset:273.15},fahrenheit:{name:"fahrenheit",base:E.TEMPERATURE,prefixes:w.NONE,value:1/1.8,offset:459.67},rankine:{name:"rankine",base:E.TEMPERATURE,prefixes:w.NONE,value:1/1.8,offset:0},mol:{name:"mol",base:E.AMOUNT_OF_SUBSTANCE,prefixes:w.NONE,value:1,offset:0},mole:{name:"mole",base:E.AMOUNT_OF_SUBSTANCE,prefixes:w.NONE,value:1,offset:0},cd:{name:"cd",base:E.LUMINOUS_INTENSITY,prefixes:w.NONE,value:1,offset:0},candela:{name:"candela",base:E.LUMINOUS_INTENSITY,prefixes:w.NONE,value:1,offset:0},N:{name:"N",base:E.FORCE,prefixes:w.SHORT,value:1,offset:0},newton:{name:"newton",base:E.FORCE,prefixes:w.LONG,value:1,offset:0},lbf:{name:"lbf",base:E.FORCE,prefixes:w.NONE,value:4.4482216152605,offset:0},poundforce:{name:"poundforce",base:E.FORCE,prefixes:w.NONE,value:4.4482216152605,offset:0},b:{name:"b",base:E.BIT,prefixes:w.BINARY_SHORT,value:1,offset:0},bits:{name:"bits",base:E.BIT,prefixes:w.BINARY_LONG,value:1,offset:0},B:{name:"B",base:E.BIT,prefixes:w.BINARY_SHORT,value:8,offset:0},bytes:{name:"bytes",base:E.BIT,prefixes:w.BINARY_LONG,value:8,offset:0}},A={meters:"meter",inches:"inch",feet:"foot",yards:"yard",miles:"mile",links:"link",rods:"rod",chains:"chain",angstroms:"angstrom",litres:"litre",teaspoons:"teaspoon",tablespoons:"tablespoon",minims:"minim",fluiddrams:"fluiddram",fluidounces:"fluidounce",gills:"gill",cups:"cup",pints:"pint",quarts:"quart",gallons:"gallon",beerbarrels:"beerbarrel",oilbarrels:"oilbarrel",hogsheads:"hogshead",gtts:"gtt",grams:"gram",tons:"ton",tonnes:"tonne",grains:"grain",drams:"dram",ounces:"ounce",poundmasses:"poundmass",hundredweights:"hundredweight",sticks:"stick",seconds:"second",minutes:"minute",hours:"hour",days:"day",radians:"rad",degrees:"deg",gradients:"grad",cycles:"cycle",amperes:"ampere",moles:"mole"};for(var T in A)if(A.hasOwnProperty(T)){var S=_[A[T]],O=Object.create(S);O.name=T,_[T]=O}_.lt=_.l,_.liter=_.litre,_.liters=_.litres,_.lb=_.lbm,_.lbs=_.lbm,n.PREFIXES=w,n.BASE_UNITS=E,n.UNITS=_,e.exports=n},function(e,r,t){"use strict";function n(e){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");if(!e)throw new Error('Argument "doc" missing');this.doc=e}var i=t(176),o=i.object,a=i.string;n.isHelp=function(e){return e instanceof n},n.prototype.toText=function(e){var r=this.doc||{},t="\n";if(r.name&&(t+="Name: "+r.name+"\n\n"),r.category&&(t+="Category: "+r.category+"\n\n"),r.description&&(t+="Description:\n "+r.description+"\n\n"),r.syntax&&(t+="Syntax:\n "+r.syntax.join("\n ")+"\n\n"),r.examples){var i=e&&e.parser();t+="Examples:\n";for(var o=0;o=n){if(s(e[0])){for(c=t(e),a=[],o=0;ot;t++){var a=[];for(r=0;n>r;r++)a.push(e[r][t]);o.push(a)}return o}var u=e.type.Matrix,c={};return c.argsToArray=function(e){if(0===e.length)return[];if(1==e.length){var r=e[0];return r instanceof u&&(r=r.valueOf()),s(r)||(r=[r]),r}return n.array.argsToArray(e)},c.isCollection=function(e){return s(e)||e instanceof u},c.deepMap=function f(e,r,t){return e&&"function"==typeof e.map?e.map(function(e){return f(e,r,t)}):r(e)},c.deepMap2=function l(r,t,n){var i,a,c;if(s(r))if(s(t)){if(r.length!=t.length)throw new o(r.length,t.length);for(i=[],a=r.length,c=0;a>c;c++)i[c]=l(r[c],t[c],n)}else{if(t instanceof u)return i=l(r,t.valueOf(),n),e.matrix(i);for(i=[],a=r.length,c=0;a>c;c++)i[c]=l(r[c],t,n)}else{if(r instanceof u)return t instanceof u?(i=l(r.valueOf(),t.valueOf(),n),e.matrix(i)):(i=l(r.valueOf(),t,n),e.matrix(i));if(s(t))for(i=[],a=t.length,c=0;a>c;c++)i[c]=l(r,t[c],n);else{if(t instanceof u)return i=l(r,t.valueOf(),n),e.matrix(i);i=n(r,t)}}return i},c.reduce=function(t,n,o){var c=s(t)?a.size(t):t.size();if(0>n)throw new i(n);if(n>=c.length)throw new i(n,c.length);return t instanceof u?e.matrix(r(t.valueOf(),n,o)):r(t,n,o)},c.deepForEach=function p(e,r){e instanceof u&&(e=e.valueOf());for(var t=0,n=e.length;n>t;t++){var i=e[t];s(i)?p(i,r):r(i)}},c}},function(e,r,t){"use strict";var n=t(176),i=t(172),o=n.array,a=n.object,s=n.string,u=n.number,c=Array.isArray,f=n.number.isNumber,l=n.number.isInteger,p=o.validateIndex;e.exports=function(e){function r(e){if(!(this instanceof r))throw new SyntaxError("Constructor must be called with the new operator");if(e instanceof h)"CcsMatrix"===e.type?(this._values=a.clone(e._values),this._index=a.clone(e._index),this._ptr=a.clone(e._ptr),this._size=a.clone(e._size)):g(this,e.valueOf());else if(e&&c(e.values)&&c(e.index)&&c(e.ptr)&&c(e.size))this._values=e.values,this._index=e.index,this._ptr=e.ptr,this._size=e.size;else if(c(e))g(this,e);else{if(e)throw new TypeError("Unsupported type of data ("+n.types.type(e)+")");this._values=[],this._index=[],this._ptr=[0],this._size=[0]}}var t=e.type.Index,m=e.type.BigNumber,h=e.type.Matrix,g=function(r,t){r._values=[],r._index=[],r._ptr=[];var n=t.length,i=0;if(n>0){var o=0;do{r._ptr.push(r._values.length);for(var a=0;n>a;a++){var s=t[a];if(c(s)){if(0===o&&ii&&(i=1),e.equal(s,0)||(r._values.push(s),r._index.push(a))}o++}while(i>o)}r._ptr.push(r._values.length),r._size=[n,i]};r.prototype=new e.type.Matrix,r.prototype.type="CcsMatrix",r.prototype.storage=function(){return"ccs"},r.prototype.subset=function(e,r,t){switch(arguments.length){case 1:return d(this,e);case 2:case 3:return v(this,e,r,t);default:throw new SyntaxError("Wrong number of arguments")}};var d=function(e,r){if(!(r instanceof t))throw new TypeError("Invalid index");var n=r.isScalar();if(n)return e.get(r.min());var o=r.size();if(o.length!=e._size.length)throw new i(o.length,e._size.length);for(var a=r.min(),s=r.max(),u=0,c=e._size.length;c>u;u++)p(a[u],e._size[u]),p(s[u],e._size[u]);var f=function(e){return e};return E(e,a[0],s[0],a[1],s[1],f,!1)},v=function(e,r,n,s){if(!(r instanceof t))throw new TypeError("Invalid index");var u,c=r.size(),f=r.isScalar();if(n instanceof h?(u=n.size(),n=n.toArray()):u=o.size(n),f){if(0!==u.length)throw new TypeError("Scalar expected");e.set(r.min(),n,s)}else{if(1!==c.length&&2!==c.length)throw new i(c.length,e._size.length,"<");if(u.length");for(var m=r.min()[0],g=r.min()[1],d=u[0],v=u[1],y=0;d>y;y++)for(var x=0;v>x;x++){var w=n[y][x];e.set([y+m,x+g],w,s)}}return e};r.prototype.get=function(e){if(!c(e))throw new TypeError("Array expected");if(e.length!=this._size.length)throw new i(e.length,this._size.length);var r=e[0],t=e[1];p(r,this._size[0]),p(t,this._size[1]);var n=y(r,this._ptr[t],this._ptr[t+1],this._index);return ns-1||a>u-1)&&(b(this,Math.max(o+1,s),Math.max(a+1,u),n),s=this._size[0],u=this._size[1]),p(o,s),p(a,u);var f=y(o,this._ptr[a],this._ptr[a+1],this._index);return fn[t-1])return t;for(;t>r;){var i=~~((r+t)/2),o=n[i];if(o>e)t=i;else{if(!(e>o))return i;r=i+1}}return r},x=function(e,r,t,n,i){t.splice(e,1),n.splice(e,1);for(var o=r+1;or)throw new TypeError("Invalid size, must contain positive integers (size: "+s.format(e)+")")});var n=t?this.clone():this;return b(n,e[0],e[1],r)};var b=function(r,t,n,i){var o,a,s,u=i||0,c=!e.equal(u,0),f=r._size[0],l=r._size[1];if(n>l){for(a=l;n>a;a++)if(r._ptr[a]=r._values.length,c)for(o=0;f>o;o++)r._values.push(u),r._index.push(o);r._ptr[n]=r._values.length}else l>n&&(r._ptr.splice(n+1,l-n),r._values.splice(r._ptr[n],r._values.length),r._index.splice(r._ptr[n],r._index.length));if(l=n,t>f){if(c){var p=0;for(a=0;l>a;a++){r._ptr[a]=r._ptr[a]+p,s=r._ptr[a+1]+p;var m=0;for(o=f;t>o;o++,m++)r._values.splice(s+m,0,u),r._index.splice(s+m,0,o),p++}r._ptr[l]=r._values.length}}else if(f>t){var h=0;for(a=0;l>a;a++){r._ptr[a]=r._ptr[a]-h;var g=r._ptr[a],d=r._ptr[a+1]-h;for(s=g;d>s;s++)o=r._index[s],o>t-1&&(r._values.splice(s,1),r._index.splice(s,1),h++)}r._ptr[a]=r._values.length}return r._size[0]=t,r._size[1]=n,r};r.prototype.clone=function(){var e=new r({values:a.clone(this._values),index:a.clone(this._index),ptr:a.clone(this._ptr),size:a.clone(this._size)});return e},r.prototype.size=function(){return a.clone(this._size)},r.prototype.map=function(e,r){var t=this,n=this._size[0],i=this._size[1],o=function(r,n,i){return e(r,[n,i],t)};return E(this,0,n-1,0,i-1,o,r)};var E=function(t,n,i,o,a,s,u){for(var c=[],f=[],l=[],p=function(r,t,n){r=s(r,t,n),e.equal(r,0)||(c.push(r),f.push(t))},m=o;a>=m;m++){l.push(c.length);for(var h=t._ptr[m],g=t._ptr[m+1],d=n,v=h;g>v;v++){var y=t._index[v];if(y>=n&&i>=y){if(!u)for(var x=d;y>x;x++)p(0,x-n,m-o);p(t._values[v],y-n,m-o)}d=y+1}if(!u)for(var w=d;i>=w;w++)p(0,w-n,m-o)}return l.push(c.length),new r({values:c,index:f,ptr:l,size:[i-n+1,a-o+1]})};r.prototype.forEach=function(e,r){for(var t=this,n=this._size[0],i=this._size[1],o=0;i>o;o++){for(var a=this._ptr[o],s=this._ptr[o+1],u=0,c=a;s>c;c++){var f=this._index[c];if(!r)for(var l=u;f>l;l++)e(0,[l,o],t);e(this._values[c],[f,o],t),u=f+1}if(!r)for(var p=u;n>p;p++)e(0,[p,o],t)}},r.prototype.toArray=function(){return N(this,!0)},r.prototype.valueOf=function(){return N(this,!1)};var N=function(e,r){for(var t=[],n=e._size[0],i=e._size[1],o=0;i>o;o++){for(var s=e._ptr[o],u=e._ptr[o+1],c=0,f=s;u>f;f++){for(var l=e._index[f],p=c;l>p;p++)(t[p]=t[p]||[])[o]=0;(t[l]=t[l]||[])[o]=r?a.clone(e._values[f]):e._values[f],c=l+1}for(var m=c;n>m;m++)(t[m]=t[m]||[])[o]=0}return t};r.prototype.format=function(e){for(var r=this._size[0],t=this._size[1],n="CCS ["+s.format(r,e)+" x "+s.format(t,e)+"] density: "+s.format(this._values.length/(r*t),e)+"\n",i=0;t>i;i++)for(var o=this._ptr[i],a=this._ptr[i+1],u=o;a>u;u++){var c=this._index[u];n+="\n ("+s.format(c,e)+", "+s.format(i,e)+") ==> "+s.format(this._values[u],e)}return n},r.prototype.toString=function(){return s.format(this.toArray())},r.prototype.toJSON=function(){return{mathjs:"CcsMatrix",values:this._values,index:this._index,ptr:this._ptr,size:this._size}},r.prototype.transpose=function(){var r=this._size[0],t=this._size[1];if(0===t)throw new RangeError("Cannot transpose a 2D matrix with no columns (size: "+s.format(this._size)+")");return new e.type.CrsMatrix({values:a.clone(this._values),index:a.clone(this._index),ptr:a.clone(this._ptr),size:[t,r]})},r.prototype.diagonal=function(e){if(e){if(e instanceof m&&(e=e.toNumber()),!f(e)||!l(e))throw new TypeError("The parameter k must be an integer number")}else e=0;for(var r=e>0?e:0,t=0>e?-e:0,n=this._size[0],i=this._size[1],o=Math.min(n-t,i-r),s=[],u=r;i>u&&s.lengthg;g++){var d=this._index[g];if(d===u-r+t){h=!0,s.push(a.clone(this._values[g]));break}if(d>u-r+t)break}!h&&s.lengthe)throw new Error("Size values must be positive integers");return e}),i){if(i instanceof m&&(i=i.toNumber()),!f(i)||!l(i))throw new TypeError("The parameter k must be an integer number")}else i=0;var o,a=i>0?i:0,s=0>i?-i:0,u=t[0],p=t[1],h=Math.min(u-s,p-a);if(c(n)){if(n.length!==h)throw new Error("Invalid value array length");o=function(e){return n[e]}}else o=function(){return n};for(var g=[],d=[],v=[],y=0;p>y;y++){v.push(g.length);var x=y-a;if(x>=0&&h>x){var w=o(x);e.equal(w,0)||(d.push(x+s),g.push(w))}}return v.push(g.length),new r({values:g,index:d,ptr:v,size:[u,p]})},r.prototype.trace=function(){var r=this._size,t=r[0],n=r[1];if(t===n){var i=0;if(this._values.length>0)for(var o=0;n>o;o++)for(var a=this._ptr[o],u=this._ptr[o+1],c=a;u>c;c++){var f=this._index[c];if(f===o){i=e.add(i,this._values[c]);break}if(f>o)break}return i}throw new RangeError("Matrix must be square (size: "+s.format(r)+")")},r.prototype.multiply=function(r){var t=this._size[0],n=this._size[1];if(r instanceof h){var i=r.size();if(1===i.length)return M(this,i[0],1,function(e){return r.get([e])});if(2===i.length)return M(this,i[0],i[1],function(e,t){return r.get([e,t])});throw new Error("Can only multiply a 1 or 2 dimensional matrix (value has "+i.length+" dimensions)")}if(c(r)){var a=o.size(r);if(1===a.length)return M(this,a[0],1,function(e){return r[e]});if(2===a.length)return M(this,a[0],a[1],function(e,t){return r[e][t]});throw new Error("Can only multiply a 1 or 2 dimensional matrix (value has "+a.length+" dimensions)")}var s=function(t){return e.multiply(t,r)};return E(this,0,t-1,0,n-1,s,!1)};var M=function(t,n,i,o){var a=t._size[0],s=t._size[1];if(s!==n)throw new RangeError("Dimension mismatch in multiplication. Columns of A must match length of B (A is "+a+"x"+s+", B is "+n+", "+s+" != "+n+")");for(var u=[],c=[],f=[],l=[],p=0;a>p;p++)l[p]=0;for(var m=0;i>m;m++){f.push(u.length);for(var h=0;s>h;h++)for(var g=t._ptr[h],d=t._ptr[h+1],v=g;d>v;v++){var y=t._index[v];l[y]=e.add(l[y],e.multiply(t._values[v],o(h,m)))}for(var x=0;a>x;x++)e.equal(l[x],0)||(u.push(l[x]),c.push(x)),l[x]=0}return f.push(u.length),1===a&&1===i?1===u.length?u[0]:0:new r({values:u,index:c,ptr:f,size:[a,i]})};return r}},function(e,r,t){"use strict";var n=t(176),i=t(172),o=n.array,a=n.object,s=n.string,u=n.number,c=Array.isArray,f=n.number.isNumber,l=n.number.isInteger,p=o.validateIndex;e.exports=function(e){function r(e){if(!(this instanceof r))throw new SyntaxError("Constructor must be called with the new operator");if(e instanceof h)"CrsMatrix"===e.type?(this._values=a.clone(e._values),this._index=a.clone(e._index),this._ptr=a.clone(e._ptr),this._size=a.clone(e._size)):g(this,e.valueOf());else if(e&&c(e.values)&&c(e.index)&&c(e.ptr)&&c(e.size))this._values=e.values,this._index=e.index,this._ptr=e.ptr,this._size=e.size;else if(c(e))g(this,e);else{if(e)throw new TypeError("Unsupported type of data ("+n.types.type(e)+")");this._values=[],this._index=[],this._ptr=[0],this._size=[0]}}var t=e.type.Index,m=e.type.BigNumber,h=e.type.Matrix,g=function(r,t){r._values=[],r._index=[],r._ptr=[];for(var n=t.length,i=0,o=0;n>o;o++){r._ptr.push(r._values.length);var a=t[o];if(c(a)){a.length>i&&(i=a.length);for(var s=0;si&&(i=1),e.equal(a,0)||(r._values.push(a),r._index.push(0))}r._ptr.push(r._values.length),r._size=[n,i]};r.prototype=new e.type.Matrix,r.prototype.type="CrsMatrix",r.prototype.storage=function(){return"crs"},r.prototype.subset=function(e,r,t){switch(arguments.length){case 1:return d(this,e);case 2:case 3:return v(this,e,r,t);default:throw new SyntaxError("Wrong number of arguments")}};var d=function(e,r){if(!(r instanceof t))throw new TypeError("Invalid index");var n=r.isScalar();if(n)return e.get(r.min());var o=r.size();if(o.length!=e._size.length)throw new i(o.length,e._size.length);for(var a=r.min(),s=r.max(),u=0,c=e._size.length;c>u;u++)p(a[u],e._size[u]),p(s[u],e._size[u]);var f=function(e){return e};return E(e,a[0],s[0],a[1],s[1],f,!1)},v=function(e,r,n,s){if(!(r instanceof t))throw new TypeError("Invalid index");var u,c=r.size(),f=r.isScalar();if(n instanceof h?(u=n.size(),n=n.toArray()):u=o.size(n),f){if(0!==u.length)throw new TypeError("Scalar expected");e.set(r.min(),n,s)}else{if(1!==c.length&&2!==c.length)throw new i(c.length,e._size.length,"<");if(u.length");for(var m=r.min()[0],g=r.min()[1],d=u[0],v=u[1],y=0;d>y;y++)for(var x=0;v>x;x++){var w=n[y][x];e.set([y+m,x+g],w,s)}}return e};r.prototype.get=function(e){if(!c(e))throw new TypeError("Array expected");if(e.length!=this._size.length)throw new i(e.length,this._size.length);var r=e[0],t=e[1];p(r,this._size[0]),p(t,this._size[1]);var n=y(t,this._ptr[r],this._ptr[r+1],this._index);return ns-1||a>u-1)&&(b(this,Math.max(o+1,s),Math.max(a+1,u),n),s=this._size[0],u=this._size[1]),p(o,s),p(a,u);var f=y(a,this._ptr[o],this._ptr[o+1],this._index);return fn[t-1])return t;for(;t>r;){var i=~~((r+t)/2),o=n[i];if(o>e)t=i;else{if(!(e>o))return i;r=i+1}}return r},x=function(e,r,t,n,i){t.splice(e,1),n.splice(e,1);for(var o=r+1;or)throw new TypeError("Invalid size, must contain positive integers (size: "+s.format(e)+")")});var n=t?this.clone():this;return b(n,e[0],e[1],r)};var b=function(r,t,n,i){var o,a,s,u=i||0,c=!e.equal(u,0),f=r._size[0],l=r._size[1];if(t>f){for(o=f;t>o;o++)if(r._ptr[o]=r._values.length,c)for(a=0;l>a;a++)r._values.push(u),r._index.push(a);r._ptr[t]=r._values.length}else f>t&&(r._ptr.splice(t+1,f-t),r._values.splice(r._ptr[t],r._values.length),r._index.splice(r._ptr[t],r._index.length));if(f=t,n>l){if(c){var p=0;for(o=0;f>o;o++){r._ptr[o]=r._ptr[o]+p,s=r._ptr[o+1]+p;var m=0;for(a=l;n>a;a++,m++)r._values.splice(s+m,0,u),r._index.splice(s+m,0,a),p++}r._ptr[f]=r._values.length}}else if(l>n){var h=0;for(o=0;f>o;o++){r._ptr[o]=r._ptr[o]-h;var g=r._ptr[o],d=r._ptr[o+1]-h;for(s=g;d>s;s++)a=r._index[s],a>n-1&&(r._values.splice(s,1),r._index.splice(s,1),h++)}r._ptr[o]=r._values.length}return r._size[0]=t,r._size[1]=n,r};r.prototype.clone=function(){var e=new r({values:a.clone(this._values),index:a.clone(this._index),ptr:a.clone(this._ptr),size:a.clone(this._size)});return e},r.prototype.size=function(){return a.clone(this._size)},r.prototype.map=function(e,r){var t=this,n=this._size[0],i=this._size[1],o=function(r,n,i){return e(r,[n,i],t)};return E(this,0,n-1,0,i-1,o,r)};var E=function(t,n,i,o,a,s,u){for(var c=[],f=[],l=[],p=function(r,t,n){r=s(r,t,n),e.equal(r,0)||(c.push(r),f.push(n))},m=n;i>=m;m++){l.push(c.length);for(var h=t._ptr[m],g=t._ptr[m+1],d=o,v=h;g>v;v++){var y=t._index[v];if(y>=o&&a>=y){if(!u)for(var x=d;y>x;x++)p(0,m-n,x-o);p(t._values[v],m-n,y-o)}d=y+1}if(!u)for(var w=d;a>=w;w++)p(0,m-n,w-o)}return l.push(c.length),new r({values:c,index:f,ptr:l,size:[i-n+1,a-o+1]})};r.prototype.forEach=function(e,r){for(var t=this,n=this._size[0],i=this._size[1],o=0;n>o;o++){for(var a=this._ptr[o],s=this._ptr[o+1],u=0,c=a;s>c;c++){var f=this._index[c];if(!r)for(var l=u;f>l;l++)e(0,[o,l],t);e(this._values[c],[o,f],t),u=f+1}if(!r)for(var p=u;i>p;p++)e(0,[o,p],t)}},r.prototype.toArray=function(){return N(this,!0)},r.prototype.valueOf=function(){return N(this,!1)};var N=function(e,r){for(var t=[],n=e._size[0],i=e._size[1],o=0;n>o;o++){for(var s=t[o]=[],u=e._ptr[o],c=e._ptr[o+1],f=0,l=u;c>l;l++){for(var p=e._index[l],m=f;p>m;m++)s[m]=0;s[p]=r?a.clone(e._values[l]):e._values[l],f=p+1}for(var h=f;i>h;h++)s[h]=0}return t};r.prototype.format=function(e){for(var r=this._size[0],t=this._size[1],n="CRS ["+s.format(r,e)+" x "+s.format(t,e)+"] density: "+s.format(this._values.length/(r*t),e)+"\n",i=0;r>i;i++)for(var o=this._ptr[i],a=this._ptr[i+1],u=o;a>u;u++){var c=this._index[u];n+="\n ("+s.format(i,e)+", "+s.format(c,e)+") ==> "+s.format(this._values[u],e)}return n},r.prototype.toString=function(){return s.format(this.toArray())},r.prototype.toJSON=function(){return{mathjs:"CrsMatrix",values:this._values,index:this._index,ptr:this._ptr,size:this._size}},r.prototype.transpose=function(){var r=this._size[0],t=this._size[1];if(0===t)throw new RangeError("Cannot transpose a 2D matrix with no columns (size: "+s.format(this._size)+")");return new e.type.CcsMatrix({values:a.clone(this._values),index:a.clone(this._index),ptr:a.clone(this._ptr),size:[t,r]})},r.prototype.diagonal=function(e){if(e){if(e instanceof m&&(e=e.toNumber()),!f(e)||!l(e))throw new TypeError("The parameter k must be an integer number")}else e=0;for(var r=e>0?e:0,t=0>e?-e:0,n=this._size[0],i=this._size[1],o=Math.min(n-t,i-r),s=[],u=t;n>u&&s.lengthg;g++){var d=this._index[g];if(d===u+r-t){h=!0,s.push(a.clone(this._values[g]));break}if(d>u+r-t)break}!h&&s.lengthe)throw new Error("Size values must be positive integers");return e}),i){if(i instanceof m&&(i=i.toNumber()),!f(i)||!l(i))throw new TypeError("The parameter k must be an integer number")}else i=0;var o,a=i>0?i:0,s=0>i?-i:0,u=t[0],p=t[1],h=Math.min(u-s,p-a);if(c(n)){if(n.length!==h)throw new Error("Invalid value array length");o=function(e){return n[e]}}else o=function(){return n};for(var g=[],d=[],v=[],y=0;u>y;y++){v.push(g.length);var x=y-s;if(x>=0&&h>x){var w=o(x);e.equal(w,0)||(d.push(x+a),g.push(w))}}return v.push(g.length),new r({values:g,index:d,ptr:v,size:[u,p]})},r.prototype.trace=function(){var r=this._size,t=r[0],n=r[1];if(t===n){var i=0;if(this._values.length>0)for(var o=0;t>o;o++)for(var a=this._ptr[o],u=this._ptr[o+1],c=a;u>c;c++){var f=this._index[c];if(o===f){i=e.add(i,this._values[c]);break}if(f>o)break}return i}throw new RangeError("Matrix must be square (size: "+s.format(r)+")")},r.prototype.multiply=function(r){var t=this._size[0],n=this._size[1];if(r instanceof h){var i=r.size();if(1===i.length)return M(this,i[0],1,function(e){return r.get([e])});if(2===i.length)return M(this,i[0],i[1],function(e,t){return r.get([e,t])});throw new Error("Can only multiply a 1 or 2 dimensional matrix (value has "+i.length+" dimensions)")}if(c(r)){var a=o.size(r);if(1===a.length)return M(this,a[0],1,function(e){return r[e]});if(2===a.length)return M(this,a[0],a[1],function(e,t){return r[e][t]});throw new Error("Can only multiply a 1 or 2 dimensional matrix (value has "+a.length+" dimensions)")}var s=function(t){return e.multiply(t,r)};return E(this,0,t-1,0,n-1,s,!1)};var M=function(t,n,i,o){var a=t._size[0],s=t._size[1];if(s!==n)throw new RangeError("Dimension mismatch in multiplication. Columns of A must match length of B (A is "+a+"x"+s+", B is "+n+", "+s+" != "+n+")");for(var u=[],c=[],f=[],l=0;a>l;l++){f.push(u.length);for(var p=t._ptr[l],m=t._ptr[l+1],h=0;i>h;h++){for(var g=0,d=p;m>d;d++){var v=t._index[d];g=e.add(g,e.multiply(t._values[d],o(v,h)))}e.equal(g,0)||(u.push(g),c.push(h))}}return f.push(u.length),1===a&&1===i?1===u.length?u[0]:0:new r({values:u,index:c,ptr:f,size:[a,i]})};return r}},function(e,r,t){"use strict";var n=t(176),i=t(172),o=n.string,a=n.array,s=n.object,u=Array.isArray,c=n.number.isNumber,f=n.number.isInteger,l=a.validateIndex;e.exports=function(e){function r(e){if(!(this instanceof r))throw new SyntaxError("Constructor must be called with the new operator");if(e instanceof x)"DenseMatrix"===e.type?(this._data=s.clone(e._data),this._size=s.clone(e._size)):(this._data=e.toArray(),this._size=e.size());else if(e&&u(e.data)&&u(e.size))this._data=e.data,this._size=e.size;else if(u(e))this._data=d(e),this._size=a.size(this._data);else{if(e)throw new TypeError("Unsupported type of data ("+n.types.type(e)+")");this._data=[],this._size=[0]}}function t(e,t){if(!(t instanceof v))throw new TypeError("Invalid index");var n=t.isScalar();if(n)return e.get(t.min());var o=t.size();if(o.length!=e._size.length)throw new i(o.length,e._size.length);for(var a=t.min(),s=t.max(),u=0,c=e._size.length;c>u;u++)l(a[u],e._size[u]),l(s[u],e._size[u]);return new r(p(e._data,t,o.length,0))}function p(e,r,t,n){var i=n==t-1,o=r.range(n);return o.map(i?function(r){return e[r]}:function(i){var o=e[i];return p(o,r,t,n+1)})}function m(r,t,n,o){if(!(t instanceof v))throw new TypeError("Invalid index");var u,c=t.size(),f=t.isScalar();if(n instanceof e.type.Matrix?(u=n.size(),n=n.valueOf()):u=a.size(n),f){if(0!==u.length)throw new TypeError("Scalar expected");r.set(t.min(),n,o)}else{if(c.length");var m=t.max().map(function(e){return e+1});g(r,m,o);var d=c.length,y=0;h(r._data,t,n,d,y)}return r}function h(e,r,t,n,i){var o=i==n-1,a=r.range(i);a.forEach(o?function(r,n){l(r),e[r]=t[n]}:function(o,a){l(o),h(e[o],r,t[a],n,i+1)})}function g(e,r,t){for(var n=s.clone(e._size),i=!1;n.lengtho;o++)r[o]>n[o]&&(n[o]=r[o],i=!0);i&&w(e,n,t)}function d(r){for(var t=0,n=r.length;n>t;t++){var i=r[t];u(i)?r[t]=d(i):i instanceof e.type.Matrix&&(r[t]=d(i.valueOf()))}return r}var v=e.type.Index,y=e.type.BigNumber,x=e.type.Matrix;r.prototype=new e.type.Matrix,r.prototype.type="DenseMatrix",r.prototype.storage=function(){return"dense"},r.prototype.subset=function(e,r,n){switch(arguments.length){case 1:return t(this,e);case 2:case 3:return m(this,e,r,n);default:throw new SyntaxError("Wrong number of arguments")}},r.prototype.get=function(e){if(!u(e))throw new TypeError("Array expected");if(e.length!=this._size.length)throw new i(e.length,this._size.length);for(var r=0;rn;n++){var a=e[n];l(a,t.length),t=t[a]}return s.clone(t)},r.prototype.set=function(e,r,t){if(!u(e))throw new TypeError("Array expected");if(e.lengthn;n++)a=e[n],l(a,c.length),c=c[a];return a=e[e.length-1],l(a,c.length),c[a]=r,this},r.prototype.resize=function(e,r,t){if(!u(e))throw new TypeError("Array expected");var n=t?this.clone():this;return w(n,e,r)};var w=function(e,r,t){if(0===r.length){for(var n=e._data;u(n);)n=n[0];return s.clone(n)}return e._size=s.clone(r),e._data=a.resize(e._data,e._size,t),e};r.prototype.clone=function(){var e=new r({data:s.clone(this._data),size:s.clone(this._size)});return e},r.prototype.size=function(){return this._size},r.prototype.map=function(e){var t=this,n=function(r,i){return u(r)?r.map(function(e,r){return n(e,i.concat(r))}):e(r,i,t)};return new r({data:n(this._data,[]),size:s.clone(this._size)})},r.prototype.forEach=function(e){var r=this,t=function(n,i){u(n)?n.forEach(function(e,r){t(e,i.concat(r))}):e(n,i,r)};t(this._data,[])},r.prototype.toArray=function(){return s.clone(this._data)},r.prototype.valueOf=function(){return this._data},r.prototype.format=function(e){return o.format(this._data,e)},r.prototype.toString=function(){return o.format(this._data)},r.prototype.toJSON=function(){return{mathjs:"DenseMatrix",data:this._data,size:this._size}},r.prototype.transpose=function(){switch(this._size.length){case 1:return this.clone();case 2:var e=this._size[0],t=this._size[1];if(0===t)throw new RangeError("Cannot transpose a 2D matrix with no columns (size: "+o.format(this._size)+")");for(var n,i=[],a=0;t>a;a++){n=i[a]=[];for(var u=0;e>u;u++)n[u]=s.clone(this._data[u][a]); -}return new r({data:i,size:[t,e]});default:throw new RangeError("Matrix must be two dimensional (size: "+o.format(this._size)+")")}},r.prototype.diagonal=function(e){if(e){if(e instanceof y&&(e=e.toNumber()),!c(e)||!f(e))throw new TypeError("The parameter k must be an integer number")}else e=0;for(var r=e>0?e:0,t=0>e?-e:0,n=this._size[0],i=this._size[1],o=Math.min(n-t,i-r),a=[],u=0;o>u;u++)a[u]=s.clone(this._data[u+t][u+r]);return a},r.diagonal=function(e,t,n,i){if(!u(e))throw new TypeError("Array expected, size parameter");if(2!==e.length)throw new Error("Only two dimensions matrix are supported");if(e=e.map(function(e){if(e instanceof y&&(e=e.toNumber()),!c(e)||!f(e)||1>e)throw new Error("Size values must be positive integers");return e}),n){if(n instanceof y&&(n=n.toNumber()),!c(n)||!f(n))throw new TypeError("The parameter k must be an integer number")}else n=0;var o,s=n>0?n:0,l=0>n?-n:0,p=e[0],m=e[1],h=Math.min(p-l,m-s);if(u(t)){if(t.length!==h)throw new Error("Invalid value array length");o=function(e){return t[e]}}else o=function(){return t};var g=[];if(e.length>0){g=a.resize(g,e,i);for(var d=0;h>d;d++)g[d+l][d+s]=o(d)}return new r({data:g,size:[p,m]})},r.prototype.trace=function(){var r=this._size,t=this._data;switch(r.length){case 1:if(1==r[0])return s.clone(t[0]);throw new RangeError("Matrix must be square (size: "+o.format(r)+")");case 2:var n=r[0],i=r[1];if(n===i){for(var a=0,u=0;n>u;u++)a=e.add(a,t[u][u]);return a}throw new RangeError("Matrix must be square (size: "+o.format(r)+")");default:throw new RangeError("Matrix must be two dimensional (size: "+o.format(r)+")")}},r.fromJSON=function(e){return new r(e)},r.prototype.multiply=function(e){switch(this._size.length){case 1:return b(this,this._size[0],e);case 2:return M(this,this._size[0],this._size[1],e);default:throw new Error("Can only multiply a 1 or 2 dimensional matrix (matrix has "+this._size.length+" dimensions)")}};var b=function(r,t,n){if(n instanceof x){var i=n.size();if(1===i.length){if(i[0]!==t)throw new RangeError("Dimension mismatch in multiplication. Vectors must have the same length.");return E(r,t,function(e){return n.get([e])})}if(2===i.length){if(i[0]!==t)throw new RangeError("Dimension mismatch in multiplication. Matrix rows and Vector length must be equal.");return N(r,t,i[1],function(e,r){return n.get([e,r])})}throw new Error("Can only multiply a 1 or 2 dimensional matrix (value has "+i.length+" dimensions)")}if(u(n)){var o=a.size(n);if(1===o.length){if(o[0]!==t)throw new RangeError("Dimension mismatch in multiplication. Vectors must have the same length.");return E(r,t,function(e){return n[e]})}if(2===o.length){if(o[0]!==t)throw new RangeError("Dimension mismatch in multiplication. Matrix rows and Vector length must be equal.");return N(r,t,o[1],function(e,r){return n[e][r]})}throw new Error("Can only multiply a 1 or 2 dimensional matrix (value has "+o.length+" dimensions)")}return r.map(function(r){return e.multiply(n,r)})},E=function(r,t,n){if(0===t)throw new Error("Cannot multiply two empty vectors");for(var i=0,o=0;t>o;o++)i=e.add(i,e.multiply(r._data[o],n(o)));return i},N=function(t,n,i,o){for(var a=[],s=0;i>s;s++){for(var u=0,c=0;n>c;c++)u=e.add(u,e.multiply(t._data[c],o(c,s)));a[s]=u}return 1===i?a[0]:new r({data:a,size:[i]})},M=function(r,t,n,i){if(i instanceof x){var o=i.size();if(1===o.length){if(o[0]!==n)throw new RangeError("Dimension mismatch in multiplication. Matrix columns must match vector length.");return _(r,t,n,function(e){return i.get([e])})}if(2===o.length){if(o[0]!==n)throw new RangeError("Dimension mismatch in multiplication. Columns of A must match length of B (A is "+t+"x"+n+", B is "+o[0]+", "+n+" != "+o[0]+")");return A(r,t,n,o[1],function(e,r){return i.get([e,r])})}throw new Error("Can only multiply a 1 or 2 dimensional matrix (value has "+o.length+" dimensions)")}if(u(i)){var s=a.size(i);if(1===s.length){if(s[0]!==n)throw new RangeError("Dimension mismatch in multiplication. Matrix columns must match vector length.");return _(r,t,n,function(e){return i[e]})}if(2===s.length){if(s[0]!==n)throw new RangeError("Dimension mismatch in multiplication. Columns of A must match length of B (A is "+t+"x"+n+", B is "+s[0]+", "+n+" != "+s[0]+")");return A(r,t,n,s[1],function(e,r){return i[e][r]})}throw new Error("Can only multiply a 1 or 2 dimensional matrix (value has "+s.length+" dimensions)")}return r.map(function(r){return e.multiply(i,r)})},_=function(t,n,i,o){for(var a=[],s=0;n>s;s++){for(var u=t._data[s],c=0,f=0;i>f;f++)c=e.add(c,e.multiply(u[f],o(f)));a[s]=c}return 1===n?a[0]:new r({data:a,size:[n]})},A=function(t,n,i,o,a){for(var s=[],u=0;n>u;u++){var c=t._data[u];s[u]=[];for(var f=0;o>f;f++){for(var l=0,p=0;i>p;p++)l=e.add(l,e.multiply(c[p],a(p,f)));s[u][f]=l}}return 1===n&&1===o?s[0][0]:new r({data:s,size:[n,o]})};return r}},function(e,r,t){"use strict";r.ArrayNode=t(177),r.AssignmentNode=t(178),r.BlockNode=t(179),r.ConditionalNode=t(180),r.ConstantNode=t(181),r.IndexNode=t(182),r.FunctionAssignmentNode=t(183),r.FunctionNode=t(184),r.Node=t(185),r.OperatorNode=t(186),r.RangeNode=t(187),r.SymbolNode=t(188),r.UpdateNode=t(189)},function(e,r,t){"use strict";var n=t(175),i=t(171),o=n.string.isString,a=Array.isArray,s=t(177),u=t(178),c=t(179),f=t(180),l=t(181),p=t(183),m=t(182),h=t(186),g=t(184),d=t(187),v=t(188),y=t(189);e.exports=function(e){function r(e,r){if(1!=arguments.length&&2!=arguments.length)throw new i("parse",arguments.length,1,2);if(pe=r&&r.nodes?r.nodes:{},o(e))return me=e,S();if(a(e)||e instanceof se)return ue.deepMap(e,function(e){if(!o(e))throw new TypeError("String expected");return me=e,S()});throw new TypeError("String or matrix expected")}function t(){he=0,ge=me.charAt(0),ye=0,xe=null}function n(){he++,ge=me.charAt(he)}function x(){return me.charAt(he+1)}function w(){return me.charAt(he+2)}function b(){for(ve=ce.NULL,de="";" "==ge||" "==ge||"\n"==ge&&ye;)n();if("#"==ge)for(;"\n"!=ge&&""!=ge;)n();if(""==ge)return void(ve=ce.DELIMITER);if("\n"==ge&&!ye)return ve=ce.DELIMITER,de=ge,void n();var e=ge+x(),r=e+w();if(3==r.length&&fe[r])return ve=ce.DELIMITER,de=r,n(),n(),void n();if(2==e.length&&fe[e])return ve=ce.DELIMITER,de=e,n(),void n();if(fe[ge])return ve=ce.DELIMITER,de=ge,void n();if(!A(ge)){if(_(ge)){for(;_(ge)||T(ge);)de+=ge,n();return void(ve=le[de]?ce.DELIMITER:ce.SYMBOL)}for(ve=ce.UNKNOWN;""!=ge;)de+=ge,n();throw oe('Syntax error in part "'+de+'"')}if(ve=ce.NUMBER,"."==ge)de+=ge,n(),T(ge)||(ve=ce.UNKNOWN);else{for(;T(ge);)de+=ge,n();"."==ge&&(de+=ge,n())}for(;T(ge);)de+=ge,n();if(e=x(),("E"==ge||"e"==ge)&&(T(e)||"-"==e||"+"==e))for(de+=ge,n(),("+"==ge||"-"==ge)&&(de+=ge,n()),T(ge)||(ve=ce.UNKNOWN);T(ge);)de+=ge,n()}function E(){do b();while("\n"==de)}function N(){ye++}function M(){ye--}function _(e){return e>="a"&&"z">=e||e>="A"&&"Z">=e||"_"==e}function A(e){return e>="0"&&"9">=e||"."==e}function T(e){return e>="0"&&"9">=e}function S(){t(),b();var e=O();if(""!=de)throw ve==ce.DELIMITER?ae("Unexpected operator "+de):oe('Unexpected part "'+de+'"');return e}function O(){var e,r,t=[];if(""==de)return new l("undefined","undefined");for("\n"!=de&&";"!=de&&(e=z());"\n"==de||";"==de;)0==t.length&&e&&(r=";"!=de,t.push({node:e,visible:r})),b(),"\n"!=de&&";"!=de&&""!=de&&(e=z(),r=";"!=de,t.push({node:e,visible:r}));return t.length>0?new c(t):e}function z(){if(ve==ce.SYMBOL&&"function"==de)throw oe('Deprecated keyword "function". Functions can now be assigned without it, like "f(x) = x^2".');return C()}function C(){var e,r,t,n,i=q();if("="==de){if(i instanceof v)return e=i.name,E(),t=C(),new u(e,t);if(i instanceof m)return E(),t=C(),new y(i,t);if(i instanceof g&&(n=!0,r=[],e=i.name,i.args.forEach(function(e,t){e instanceof v?r[t]=e.name:n=!1}),n))return E(),t=C(),new p(e,r,t);throw oe("Invalid left hand side of assignment operator =")}return i}function q(){for(var e=U();"?"==de;){var r=xe;xe=ye,E();var t=e,n=U();if(":"!=de)throw oe("False part of conditional expression expected");xe=null,E();var i=q();e=new f(t,n,i),xe=r}return e}function U(){for(var e=B();"or"==de;)E(),e=new h("or","or",[e,B()]);return e}function B(){for(var e=I();"xor"==de;)E(),e=new h("xor","xor",[e,I()]);return e}function I(){for(var e=P();"and"==de;)E(),e=new h("and","and",[e,P()]);return e}function P(){for(var e=R();"|"==de;)E(),e=new h("|","bitOr",[e,R()]);return e}function R(){for(var e=L();"^|"==de;)E(),e=new h("^|","bitXor",[e,L()]);return e}function L(){for(var e=F();"&"==de;)E(),e=new h("&","bitAnd",[e,F()]);return e}function F(){var e,r,t,n,i;for(e=k(),r={"==":"equal","!=":"unequal","<":"smaller",">":"larger","<=":"smallerEq",">=":"largerEq"};de in r;)t=de,n=r[t],E(),i=[e,k()],e=new h(t,n,i);return e}function k(){var e,r,t,n,i;for(e=j(),r={"<<":"leftShift",">>":"rightArithShift",">>>":"rightLogShift"};de in r;)t=de,n=r[t],E(),i=[e,j()],e=new h(t,n,i);return e}function j(){var e,r,t,n,i;for(e=D(),r={to:"to","in":"to"};de in r;)t=de,n=r[t],E(),i=[e,D()],e=new h(t,n,i);return e}function D(){var e,r=[];if(e=":"==de?new l("1","number"):G(),":"==de&&xe!==ye){for(r.push(e);":"==de&&r.length<3;)E(),r.push(")"==de||"]"==de||","==de||""==de?new v("end"):G());e=3==r.length?new d(r[0],r[2],r[1]):new d(r[0],r[1])}return e}function G(){var e,r,t,n,i;for(e=W(),r={"+":"add","-":"subtract"};de in r;)t=de,n=r[t],E(),i=[e,W()],e=new h(t,n,i);return e}function W(){var e,r,t,n,i;if(e=Z(),r={"*":"multiply",".*":"dotMultiply","/":"divide","./":"dotDivide","%":"mod",mod:"mod"},de in r)for(;de in r;)t=de,n=r[t],E(),i=[e,Z()],e=new h(t,n,i);return(ve==ce.SYMBOL||"in"==de&&e instanceof l||ve==ce.NUMBER&&!(e instanceof l)||"("==de||"["==de)&&(e=new h("*","multiply",[e,W()])),e}function Z(){var e,r,t={"-":"unaryMinus","+":"unaryPlus","~":"bitNot",not:"not"}[de];return t?(e=de,E(),r=[Z()],new h(e,t,r)):V()}function V(){var e,r,t,n;return e=H(),("^"==de||".^"==de)&&(r=de,t="^"==r?"pow":"dotPow",E(),n=[e,Z()],e=new h(r,t,n)),e}function H(){var e,r,t,n,i;for(e=Y(),r={"!":"factorial","'":"transpose"};de in r;)t=de,n=r[t],b(),i=[e],e=new h(t,n,i);return e}function Y(){var e,r=[];if(ve==ce.SYMBOL&&pe[de]){if(e=pe[de],b(),"("==de){if(r=[],N(),b(),")"!=de)for(r.push(q());","==de;)b(),r.push(q());if(")"!=de)throw oe("Parenthesis ) expected");M(),b()}return new e(r)}return J()}function J(){var e,r;return ve==ce.SYMBOL||ve==ce.DELIMITER&&de in le?(r=de,b(),e=X(r),e=Q(e)):$()}function X(e){var r;if("("==de){if(r=[],N(),b(),")"!=de)for(r.push(q());","==de;)b(),r.push(q());if(")"!=de)throw oe("Parenthesis ) expected");return M(),b(),new g(e,r)}return new v(e)}function Q(e){for(var r;"["==de;){if(r=[],N(),b(),"]"!=de)for(r.push(q());","==de;)b(),r.push(q());if("]"!=de)throw oe("Parenthesis ] expected");M(),b(),e=new m(e,r)}return e}function $(){var e,r,t;if('"'==de){for(r="",t="";""!=ge&&('"'!=ge||"\\"==t);)r+=ge,t=ge,n();if(b(),'"'!=de)throw oe('End of string " expected');return b(),e=new l(r,"string"),e=Q(e)}return K()}function K(){var e,r,t,n;if("["==de){if(N(),b(),"]"!=de){var i=ee();if(";"==de){for(t=1,r=[i];";"==de;)b(),r[t]=ee(),t++;if("]"!=de)throw oe("End of matrix ] expected");M(),b(),n=r[0].nodes.length;for(var o=1;t>o;o++)if(r[o].nodes.length!=n)throw ae("Column dimensions mismatch ("+r[o].nodes.length+" != "+n+")");e=new s(r)}else{if("]"!=de)throw oe("End of matrix ] expected");M(),b(),e=i}}else M(),b(),e=new s([]);return e}return re()}function ee(){for(var e=[C()],r=1;","==de;)b(),e[r]=C(),r++;return new s(e)}function re(){var e;return ve==ce.NUMBER?(e=de,b(),new l(e,"number")):te()}function te(){var e;if("("==de){if(N(),b(),e=C(),")"!=de)throw oe("Parenthesis ) expected");return M(),b(),e}return ne()}function ne(){throw oe(""==de?"Unexpected end of expression":"Value expected")}function ie(){return he-de.length+1}function oe(e){var r=ie(),t=new SyntaxError(e+" (char "+r+")");return t["char"]=r,t}function ae(e){var r=ie(),t=new Error(e+" (char "+r+")");return t["char"]=r,t}var se=e.type.Matrix,ue=e.collection,ce={NULL:0,DELIMITER:1,NUMBER:2,SYMBOL:3,UNKNOWN:4},fe={",":!0,"(":!0,")":!0,"[":!0,"]":!0,'"':!0,";":!0,"+":!0,"-":!0,"*":!0,".*":!0,"/":!0,"./":!0,"%":!0,"^":!0,".^":!0,"~":!0,"!":!0,"&":!0,"|":!0,"^|":!0,"'":!0,"=":!0,":":!0,"?":!0,"==":!0,"!=":!0,"<":!0,">":!0,"<=":!0,">=":!0,"<<":!0,">>":!0,">>>":!0},le={mod:!0,to:!0,"in":!0,and:!0,xor:!0,or:!0,not:!0},pe={},me="",he=0,ge="",de="",ve=ce.NULL,ye=0,xe=null;return r}},function(e,r,t){"use strict";e.exports=function(e){function r(){if(!(this instanceof r))throw new SyntaxError("Constructor must be called with the new operator");this.scope={}}var t=e.expression.parse;return r.prototype.parse=function(e){throw new Error("Parser.parse is deprecated. Use math.parse instead.")},r.prototype.compile=function(e){throw new Error("Parser.compile is deprecated. Use math.compile instead.")},r.prototype.eval=function(r){return t(r).compile(e).eval(this.scope)},r.prototype.get=function(e){return this.scope[e]},r.prototype.set=function(e,r){return this.scope[e]=r},r.prototype.remove=function(e){delete this.scope[e]},r.prototype.clear=function(){for(var e in this.scope)this.scope.hasOwnProperty(e)&&delete this.scope[e]},r}},function(e,r,t){r.e=t(190),r.E=t(190),r["false"]=t(191),r.i=t(192),r.Infinity=t(193),r.LN2=t(194),r.LN10=t(195),r.LOG2E=t(196),r.LOG10E=t(197),r.NaN=t(198),r["null"]=t(199),r.pi=t(200),r.PI=t(200),r.phi=t(201),r.SQRT1_2=t(202),r.SQRT2=t(203),r.tau=t(204),r["true"]=t(205),r.version=t(206),r.abs=t(210),r.add=t(211),r.ceil=t(212),r.cube=t(213),r.divide=t(214),r.dotDivide=t(215),r.dotMultiply=t(216),r.dotPow=t(217),r.exp=t(218),r.fix=t(219),r.floor=t(220),r.gcd=t(221),r.lcm=t(222),r.log=t(223),r.log10=t(224),r.mod=t(225),r.multiply=t(226),r.norm=t(227),r.nthRoot=t(228),r.pow=t(229),r.round=t(230),r.sign=t(231),r.sqrt=t(232),r.square=t(233),r.subtract=t(234),r.unaryMinus=t(235),r.unaryPlus=t(236),r.xgcd=t(237),r.bitAnd=t(238),r.bitNot=t(239),r.bitOr=t(240),r.bitXor=t(241),r.leftShift=t(242),r.rightArithShift=t(243),r.rightLogShift=t(244),r.arg=t(245),r.conj=t(246),r.re=t(247),r.im=t(248),r.bignumber=t(249),r["boolean"]=t(250),r.complex=t(251),r.index=t(252),r.matrix=t(253),r.number=t(254),r.string=t(255),r.unit=t(256),r.eval=t(257),r.help=t(258),r.and=t(259),r.not=t(260),r.or=t(261),r.xor=t(262),r.concat=t(263),r.cross=t(264),r.det=t(265),r.diag=t(266),r.dot=t(267),r.eye=t(268),r.flatten=t(269),r.inv=t(270),r.ones=t(271),r.range=t(272),r.resize=t(273),r.size=t(274),r.squeeze=t(275),r.subset=t(276),r.trace=t(277),r.transpose=t(278),r.zeros=t(279),r.combinations=t(280),r.factorial=t(281),r.gamma=t(282),r.permutations=t(283),r.pickRandom=t(284),r.random=t(285),r.randomInt=t(286),r.compare=t(287),r.deepEqual=t(288),r.equal=t(289),r.larger=t(290),r.largerEq=t(291),r.smaller=t(292),r.smallerEq=t(293),r.unequal=t(294),r.max=t(295),r.mean=t(296),r.median=t(297),r.min=t(298),r.prod=t(299),r.std=t(300),r.sum=t(301),r["var"]=t(302),r.acos=t(303),r.acosh=t(304),r.acot=t(305),r.acoth=t(306),r.acsc=t(307),r.acsch=t(308),r.asec=t(309),r.asech=t(310),r.asin=t(311),r.asinh=t(312),r.atan=t(313),r.atanh=t(314),r.atan2=t(315),r.cos=t(316),r.cosh=t(317),r.cot=t(318),r.coth=t(319),r.csc=t(320),r.csch=t(321),r.sec=t(322),r.sech=t(323),r.sin=t(324),r.sinh=t(325),r.tan=t(326),r.tanh=t(327),r.to=t(328),r.clone=t(329),r.map=t(330),r.filter=t(331),r.forEach=t(332),r.format=t(333),r["import"]=t(334),r.sort=t(335),r["typeof"]=t(336)},function(e,r,t){"use strict";e.exports=function(e){function r(r,t){var n=t&&t.mathjs,i=e.type[n];return i&&i.fromJSON?i.fromJSON(t):t}return r}},function(e,r,t){"use strict";var n=t(5),i=t(208).transform,o=t(3).isNumber,a=t(169).argsToArray;e.exports=function(e){var r=function(){var r=a(arguments),t=r.length-1,s=r[t];o(s)?r[t]=s-1:s instanceof n&&(r[t]=s.minus(1));try{return e.concat.apply(e,r)}catch(u){throw i(u)}};return e.concat.transform=r,r}},function(e,r,t){"use strict";var n=t(188),i=(t(209).isBoolean,t(169).argsToArray,t(171));e.exports=function(e){var r=e.filter,t=function(e,t,o){if(2!==e.length)throw new i("filter",arguments.length,2);var a,s=e[0].compile(t).eval(o);if(e[1]instanceof n)a=e[1].compile(t).eval(o);else{var u=o||{},c=e[1].filter(function(e){return e instanceof n&&!(e.name in t)&&!(e.name in u)})[0],f=Object.create(u),l=e[1].compile(t);if(!c)throw new Error("No undefined variable found in filter equation");var p=c.name;a=function(e){return f[p]=e,l.eval(f)}}return r(s,a)};return t.rawArgs=!0,e.filter.transform=t,t}},function(e,r,t){"use strict";e.exports=function(e){function r(e,r,t){var n=function(e,i){Array.isArray(e)?e.forEach(function(e,r){n(e,i.concat(r+1))}):r(e,i,t)};n(e,[])}var t=e.type.Matrix,n=function(n,i){if(2!=arguments.length)throw new e.error.ArgumentsError("forEach",arguments.length,2);if(Array.isArray(n))r(n,i,n);else{if(!(n instanceof t))throw new e.error.UnsupportedTypeError("forEach",e["typeof"](n));r(n.valueOf(),i,n)}};return e.forEach.transform=n,n}},function(e,r,t){"use strict";var n=t(5),i=t(8),o=t(9),a=t(3).isNumber;e.exports=function(e){var r=function(){for(var e=[],r=0,t=arguments.length;t>r;r++){var s=arguments[r];if(s instanceof i)s.start--,s.end-=s.step>0?0:2;else if(a(s))s--;else{if(!(s instanceof n))throw new TypeError("Ranges must be a Number or Range");s=s.toNumber()-1}e[r]=s}var u=new o;return o.apply(u,e),u};return e.index.transform=r,r}},function(e,r,t){"use strict";e.exports=function(e){function r(e,r,t){var n=function(e,i){return Array.isArray(e)?e.map(function(e,r){return n(e,i.concat(r+1))}):r(e,i,t)};return n(e,[])}var t=e.type.Matrix,n=function(n,i){if(2!=arguments.length)throw new e.error.ArgumentsError("map",arguments.length,2);if(Array.isArray(n))return r(n,i,n);if(n instanceof t)return e.matrix(r(n.valueOf(),i,n));throw new e.error.UnsupportedTypeError("map",e["typeof"](n))};return e.map.transform=n,n}},function(e,r,t){"use strict";var n=t(5),i=t(208).transform,o=t(3).isNumber,a=t(169).argsToArray;e.exports=function(e){var r=e.collection.isCollection,t=function(){var t=a(arguments);if(2==t.length&&r(t[0])){var s=t[1];o(s)?t[1]=s-1:s instanceof n&&(t[1]=s.minus(1))}try{return e.max.apply(e,t)}catch(u){throw i(u)}};return e.max.transform=t,t}},function(e,r,t){"use strict";var n=t(5),i=t(208).transform,o=t(3).isNumber,a=t(169).argsToArray;e.exports=function(e){var r=e.collection.isCollection,t=function(){var t=a(arguments);if(2==t.length&&r(t[0])){var s=t[1];o(s)?t[1]=s-1:s instanceof n&&(t[1]=s.minus(1))}try{return e.mean.apply(e,t)}catch(u){throw i(u)}};return e.mean.transform=t,t}},function(e,r,t){"use strict";var n=t(5),i=t(208).transform,o=t(3).isNumber,a=t(169).argsToArray;e.exports=function(e){var r=e.collection.isCollection,t=function(){var t=a(arguments);if(2==t.length&&r(t[0])){var s=t[1];o(s)?t[1]=s-1:s instanceof n&&(t[1]=s.minus(1))}try{return e.min.apply(e,t)}catch(u){throw i(u)}};return e.min.transform=t,t}},function(e,r,t){"use strict";var n=t(209).isBoolean,i=t(169).argsToArray;e.exports=function(e){var r=function(){var r=i(arguments),t=r.length-1,o=r[t];return n(o)||r.push(!0),e.range.apply(e,r)};return e.range.transform=r,r}},function(e,r,t){"use strict";var n=t(208).transform,i=(t(209).isBoolean,t(169).argsToArray);e.exports=function(e){var r=function(){try{return e.subset.apply(e,i(arguments))}catch(r){throw n(r)}};return e.subset.transform=r,r}},function(e,r,t){"use strict";e.exports=function(e){function r(e){if(!(this instanceof r))throw new SyntaxError("Constructor must be called with the new operator");e instanceof r?this.value=e.value:this.value=e}function n(e,t){var n=Array.prototype.slice;"function"==typeof t?r.prototype[e]=function(){var e=[this.value].concat(n.call(arguments,0));return new r(t.apply(this,e))}:r.prototype[e]=new r(t)}var i=t(176);r.prototype.done=function(){return this.value},r.prototype.valueOf=function(){return this.value},r.prototype.toString=function(){return i.format(this.value)},r.createProxy=n;for(var o in e)e.hasOwnProperty(o)&&n(o,e[o]);return r}},function(e,r,t){"use strict";e.exports=function(e){var r=t(175),n=e.type.BigNumber,i=e.collection,o=i.isCollection,a=r.number.isNumber,s=r.string.isString,u=r["boolean"].isBoolean;e.bignumber=function c(r){if(arguments.length>1)throw new e.error.ArgumentsError("bignumber",arguments.length,0,1);if(r instanceof n||a(r)||s(r))return new n(r);if(u(r)||null===r)return new n(+r);if(o(r))return i.deepMap(r,c);if(0==arguments.length)return new n(0);throw new e.error.UnsupportedTypeError("bignumber",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(175),n=e.type.BigNumber,i=e.collection,o=i.isCollection,a=r.number.isNumber,s=r.string.isString;e["boolean"]=function u(r){if(1!=arguments.length)throw new e.error.ArgumentsError("boolean",arguments.length,0,1);if("true"===r||r===!0)return!0;if("false"===r||r===!1||null===r)return!1;if(r instanceof Boolean)return 1==r;if(a(r))return 0!==r;if(r instanceof n)return!r.isZero();if(s(r)){var t=r.toLowerCase();if("true"===t)return!0;if("false"===t)return!1;var c=Number(r);if(""!=r&&!isNaN(c))return 0!==c}if(o(r))return i.deepMap(r,u);throw new SyntaxError(r.toString()+" is no valid boolean")}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(175),n=e.type.BigNumber,i=t(7),o=e.collection,a=o.isCollection,s=r.number.isNumber,u=r.string.isString,c=i.isComplex;e.complex=function f(r){switch(arguments.length){case 0:return new i(0,0);case 1:var t=arguments[0];if(s(t))return new i(t,0);if(t instanceof n)return new i(t.toNumber(),0);if(c(t))return t.clone();if(u(t)){var l=i.parse(t);if(l)return l;throw new SyntaxError('String "'+t+'" is no valid complex number')}if(a(t))return o.deepMap(t,f);if("object"==typeof t){if("re"in t&&"im"in t)return new i(t.re,t.im);if("r"in t&&"phi"in t)return i.fromPolar(t.r,t.phi)}throw new TypeError("Two numbers, single string or an fitting object expected in function complex");case 2:var p=arguments[0],m=arguments[1];if(p instanceof n&&(p=p.toNumber()),m instanceof n&&(m=m.toNumber()),s(p)&&s(m))return new i(p,m);throw new TypeError("Two numbers or a single string expected in function complex");default:throw new e.error.ArgumentsError("complex",arguments.length,0,2)}}}},function(e,r,t){"use strict";e.exports=function(e){var r=(t(175),e.type.BigNumber),n=t(9);e.index=function(e){var t=Array.prototype.slice.apply(arguments).map(function(e){return e instanceof r?e.toNumber():Array.isArray(e)?e.map(function(e){return e instanceof r?e.toNumber():e}):e}),i=new n;return n.apply(i,t),i}}},function(e,r,t){"use strict";var n=t(176),i=Array.isArray,o=n.isString;e.exports=function(e){var r=e.type.Matrix;e.matrix=function(t,n){switch(arguments.length){case 0:t=[],n="default";break;case 1:i(t)?n="default":t instanceof r?n=t.storage():o(t)&&(n=t,t=[]);break;case 2:if(!(i(t)||t instanceof r))throw new TypeError("data must be an array value or Matrix instance");break;default:throw new e.error.ArgumentsError("matrix",arguments.length,0,2)}var a=r.storage(n);return new a(t)}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(175),n=e.type.BigNumber,i=e.type.Unit,o=e.collection,a=o.isCollection,s=r.number.isNumber,u=r["boolean"].isBoolean,c=r.string.isString;e.number=function f(r,t){switch(arguments.length){case 0:return 0;case 1:if(a(r))return o.deepMap(r,f);if(r instanceof n)return r.toNumber();if(c(r)){var l=Number(r);if(isNaN(l)&&(l=Number(r.valueOf())),isNaN(l))throw new SyntaxError(r.toString()+" is no valid number");return l}if(u(r)||null===r)return+r;if(s(r))return r;if(r instanceof i)throw new Error("Second argument with valueless unit expected");throw new e.error.UnsupportedTypeError("number",e["typeof"](r));case 2:if(r instanceof i&&c(t)||t instanceof i)return r.toNumber(t);throw new e.error.UnsupportedTypeError("number",e["typeof"](r),e["typeof"](t));default:throw new e.error.ArgumentsError("number",arguments.length,0,1)}}}},function(e,r,t){"use strict";e.exports=function(e){var r=e.expression.Parser;e.parser=function(){return new r}}},function(e,r,t){"use strict";e.exports=function(e){e.chain=function(r){return new e.chaining.Chain(r)},e.select=function(r){return console&&"function"==typeof console.log&&console.log('WARNING: Function "select" is renamed to "chain". It will be deprecated in v2.0.'),e.select=e.chain,e.chaining.Chain.prototype.select=e.select,e.chain(r)}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(175),n=e.collection,i=r.number,o=r.number.isNumber,a=n.isCollection;e.string=function s(r){switch(arguments.length){case 0:return"";case 1:return o(r)?i.format(r):a(r)?n.deepMap(r,s):null===r?"null":r.toString();default:throw new e.error.ArgumentsError("string",arguments.length,0,1)}}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(175),n=e.type.BigNumber,i=t(11),o=e.collection,a=o.isCollection,s=r.string.isString;e.unit=function u(r){switch(arguments.length){case 1:var t=arguments[0];if(t instanceof i)return t.clone();if(s(t)){if(i.isValuelessUnit(t))return new i(null,t);var c=i.parse(t);if(c)return c;throw new SyntaxError('String "'+t+'" is no valid unit')}if(a(r))return o.deepMap(r,u);throw new TypeError("A string or a number and string expected in function unit");case 2:return arguments[0]instanceof n?new i(arguments[0].toNumber(),arguments[1]):new i(arguments[0],arguments[1]);default:throw new e.error.ArgumentsError("unit",arguments.length,1,2)}}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(175),i=e.expression.parse,o=e.collection,a=n.string.isString,s=o.isCollection;e.compile=function(r){if(1!=arguments.length)throw new e.error.ArgumentsError("compile",arguments.length,1);if(a(r))return i(r).compile(e);if(s(r))return o.deepMap(r,function(r){return i(r).compile(e)});throw new TypeError("String, array, or matrix expected")}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(175),n=e.expression.parse,i=e.collection,o=r.string.isString,a=i.isCollection;e.eval=function(r,t){if(1!=arguments.length&&2!=arguments.length)throw new e.error.ArgumentsError("eval",arguments.length,1,2);if(t=t||{},o(r))return n(r).compile(e).eval(t);if(a(r))return i.deepMap(r,function(r){return n(r).compile(e).eval(t)});throw new TypeError("String, array, or matrix expected")}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(12);e.help=function(t){if(1!=arguments.length)throw new SyntaxError("Wrong number of arguments in function help ("+arguments.length+" provided, 1 expected)");var n=null;if(t instanceof String||"string"==typeof t)n=t;else{var i;for(i in e)if(e.hasOwnProperty(i)&&t===e[i]){n=i;break}}var o=e.expression.docs[n];if(!n)throw new Error('Cannot find "'+t+'" in math.js');if(!o)throw new Error('No documentation found on "'+n+'"');return new r(o)}}},function(e,r,t){"use strict";e.exports=function(e,r){var t=e.expression.parse;e.parse=function(e,r){return t.apply(t,arguments)}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(175),n=e.type.BigNumber,i=t(7),o=e.collection,a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,c=o.isCollection;e.abs=function f(r){if(1!=arguments.length)throw new e.error.ArgumentsError("abs",arguments.length,1);if(a(r))return Math.abs(r);if(u(r)){var t=Math.abs(r.re),i=Math.abs(r.im);if(1e3>t&&1e3>i)return Math.sqrt(t*t+i*i);if(t>=i){var l=i/t;return t*Math.sqrt(1+l*l)}var p=t/i;return i*Math.sqrt(1+p*p)}if(r instanceof n)return r.abs();if(c(r))return o.deepMap(r,f,!0);if(s(r)||null===r)return Math.abs(r);throw new e.error.UnsupportedTypeError("abs",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(175),n=e.type.BigNumber,i=t(7),o=t(11),a=e.collection,s=r["boolean"].isBoolean,u=r.number.isNumber,c=r.string.isString,f=i.isComplex,l=o.isUnit,p=a.isCollection;e.add=function m(r,t){if(2!=arguments.length)throw new e.error.ArgumentsError("add",arguments.length,2);if(u(r)){if(u(t))return r+t;if(f(t))return new i(r+t.re,t.im)}if(f(r)){if(f(t))return new i(r.re+t.re,r.im+t.im);if(u(t))return new i(r.re+t,r.im)}if(l(r)&&l(t)){if(null==r.value)throw new Error("Parameter x contains a unit with undefined value");if(null==t.value)throw new Error("Parameter y contains a unit with undefined value");if(!r.equalBase(t))throw new Error("Units do not match");var o=r.clone();return o.value+=t.value,o.fixPrefix=!1,o}if(r instanceof n)return u(t)?t=n.convert(t):(s(t)||null===t)&&(t=new n(t?1:0)),t instanceof n?r.plus(t):m(r.toNumber(),t);if(t instanceof n)return u(r)?r=n.convert(r):(s(r)||null===r)&&(r=new n(r?1:0)),r instanceof n?r.plus(t):m(r,t.toNumber());if(p(r)||p(t))return a.deepMap2(r,t,m);if(c(r)||c(t))return r+t;if(s(r)||null===r)return m(+r,t);if(s(t)||null===t)return m(r,+t);throw new e.error.UnsupportedTypeError("add",e["typeof"](r),e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(175),n=e.type.BigNumber,i=t(7),o=e.collection,a=r.number.isNumber,s=r["boolean"].isBoolean,u=o.isCollection,c=i.isComplex;e.ceil=function f(r){if(1!=arguments.length)throw new e.error.ArgumentsError("ceil",arguments.length,1);if(a(r))return Math.ceil(r);if(c(r))return new i(Math.ceil(r.re),Math.ceil(r.im));if(r instanceof n)return r.ceil();if(u(r))return o.deepMap(r,f,!0);if(s(r)||null===r)return Math.ceil(r);throw new e.error.UnsupportedTypeError("ceil",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(175),n=e.type.BigNumber,i=t(7),o=e.collection,a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,c=o.isCollection;e.cube=function f(r){if(1!=arguments.length)throw new e.error.ArgumentsError("cube",arguments.length,1);if(a(r))return r*r*r;if(u(r))return e.multiply(e.multiply(r,r),r);if(r instanceof n)return r.times(r).times(r);if(c(r))return o.deepMap(r,f);if(s(r)||null===r)return f(+r);throw new e.error.UnsupportedTypeError("cube",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){function r(e,r){var t=r.re*r.re+r.im*r.im;return 0!=t?new o((e.re*r.re+e.im*r.im)/t,(e.im*r.re-e.re*r.im)/t):new o(0!=e.re?e.re/0:0,0!=e.im?e.im/0:0)}var n=t(175),i=e.type.BigNumber,o=t(7),a=(e.type.Matrix,t(11)),s=n.number.isNumber,u=n["boolean"].isBoolean,c=o.isComplex,f=a.isUnit;e._divide=function l(t,n){if(s(t)){if(s(n))return t/n;if(c(n))return r(new o(t,0),n)}if(c(t)){if(c(n))return r(t,n);if(s(n))return r(t,new o(n,0))}if(t instanceof i)return s(n)?n=i.convert(n):(u(n)||null===n)&&(n=new i(n?1:0)),n instanceof i?t.div(n):l(t.toNumber(),n);if(n instanceof i)return s(t)?t=i.convert(t):(u(t)||null===t)&&(t=new i(t?1:0)),t instanceof i?t.div(n):l(t,n.toNumber());if(f(t)&&s(n)){var a=t.clone();return a.value=(null===a.value?a._normalize(1):a.value)/n,a}if(u(t)||null===t)return l(+t,n);if(u(n)||null===n)return l(t,+n);throw new e.error.UnsupportedTypeError("divide",e["typeof"](t),e["typeof"](n))}}},function(e,r,t){"use strict";e.exports=function(e){var r=e.collection,t=r.isCollection;e.divide=function(n,i){if(2!=arguments.length)throw new e.error.ArgumentsError("divide",arguments.length,2);return t(n)?t(i)?e.multiply(n,e.inv(i)):r.deepMap2(n,i,e._divide):t(i)?e.multiply(n,e.inv(i)):e._divide(n,i)}}},function(e,r,t){"use strict";e.exports=function(e){var r=e.collection;e.dotDivide=function(t,n){if(2!=arguments.length)throw new e.error.ArgumentsError("dotDivide",arguments.length,2);return r.deepMap2(t,n,e.divide)},e.edivide=function(){throw new Error("Function edivide is renamed to dotDivide")}}},function(e,r,t){"use strict";e.exports=function(e){var r=(t(175),e.collection);e.dotMultiply=function(t,n){if(2!=arguments.length)throw new e.error.ArgumentsError("dotMultiply",arguments.length,2);return r.deepMap2(t,n,e.multiply)},e.emultiply=function(){throw new Error("Function emultiply is renamed to dotMultiply")}}},function(e,r,t){"use strict";e.exports=function(e){var r=(t(175),e.collection);e.dotPow=function(t,n){if(2!=arguments.length)throw new e.error.ArgumentsError("dotPow",arguments.length,2);return r.deepMap2(t,n,e.pow)},e.epow=function(){throw new Error("Function epow is renamed to dotPow")}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(175),n=e.type.BigNumber,i=t(7),o=(e.type.Matrix,e.collection),a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,c=o.isCollection; +}return new r({data:i,size:[t,e]});default:throw new RangeError("Matrix must be two dimensional (size: "+o.format(this._size)+")")}},r.prototype.diagonal=function(e){if(e){if(e instanceof y&&(e=e.toNumber()),!c(e)||!f(e))throw new TypeError("The parameter k must be an integer number")}else e=0;for(var r=e>0?e:0,t=0>e?-e:0,n=this._size[0],i=this._size[1],o=Math.min(n-t,i-r),a=[],u=0;o>u;u++)a[u]=s.clone(this._data[u+t][u+r]);return a},r.diagonal=function(e,t,n,i){if(!u(e))throw new TypeError("Array expected, size parameter");if(2!==e.length)throw new Error("Only two dimensions matrix are supported");if(e=e.map(function(e){if(e instanceof y&&(e=e.toNumber()),!c(e)||!f(e)||1>e)throw new Error("Size values must be positive integers");return e}),n){if(n instanceof y&&(n=n.toNumber()),!c(n)||!f(n))throw new TypeError("The parameter k must be an integer number")}else n=0;var o,s=n>0?n:0,l=0>n?-n:0,p=e[0],m=e[1],h=Math.min(p-l,m-s);if(u(t)){if(t.length!==h)throw new Error("Invalid value array length");o=function(e){return t[e]}}else o=function(){return t};var g=[];if(e.length>0){g=a.resize(g,e,i);for(var d=0;h>d;d++)g[d+l][d+s]=o(d)}return new r({data:g,size:[p,m]})},r.prototype.trace=function(){var r=this._size,t=this._data;switch(r.length){case 1:if(1==r[0])return s.clone(t[0]);throw new RangeError("Matrix must be square (size: "+o.format(r)+")");case 2:var n=r[0],i=r[1];if(n===i){for(var a=0,u=0;n>u;u++)a=e.add(a,t[u][u]);return a}throw new RangeError("Matrix must be square (size: "+o.format(r)+")");default:throw new RangeError("Matrix must be two dimensional (size: "+o.format(r)+")")}},r.fromJSON=function(e){return new r(e)},r.prototype.multiply=function(e){switch(this._size.length){case 1:return b(this,this._size[0],e);case 2:return M(this,this._size[0],this._size[1],e);default:throw new Error("Can only multiply a 1 or 2 dimensional matrix (matrix has "+this._size.length+" dimensions)")}};var b=function(r,t,n){if(n instanceof x){var i=n.size();if(1===i.length){if(i[0]!==t)throw new RangeError("Dimension mismatch in multiplication. Vectors must have the same length.");return E(r,t,function(e){return n.get([e])})}if(2===i.length){if(i[0]!==t)throw new RangeError("Dimension mismatch in multiplication. Matrix rows and Vector length must be equal.");return N(r,t,i[1],function(e,r){return n.get([e,r])})}throw new Error("Can only multiply a 1 or 2 dimensional matrix (value has "+i.length+" dimensions)")}if(u(n)){var o=a.size(n);if(1===o.length){if(o[0]!==t)throw new RangeError("Dimension mismatch in multiplication. Vectors must have the same length.");return E(r,t,function(e){return n[e]})}if(2===o.length){if(o[0]!==t)throw new RangeError("Dimension mismatch in multiplication. Matrix rows and Vector length must be equal.");return N(r,t,o[1],function(e,r){return n[e][r]})}throw new Error("Can only multiply a 1 or 2 dimensional matrix (value has "+o.length+" dimensions)")}return r.map(function(r){return e.multiply(n,r)})},E=function(r,t,n){if(0===t)throw new Error("Cannot multiply two empty vectors");for(var i=0,o=0;t>o;o++)i=e.add(i,e.multiply(r._data[o],n(o)));return i},N=function(t,n,i,o){for(var a=[],s=0;i>s;s++){for(var u=0,c=0;n>c;c++)u=e.add(u,e.multiply(t._data[c],o(c,s)));a[s]=u}return 1===i?a[0]:new r({data:a,size:[i]})},M=function(r,t,n,i){if(i instanceof x){var o=i.size();if(1===o.length){if(o[0]!==n)throw new RangeError("Dimension mismatch in multiplication. Matrix columns must match vector length.");return _(r,t,n,function(e){return i.get([e])})}if(2===o.length){if(o[0]!==n)throw new RangeError("Dimension mismatch in multiplication. Columns of A must match length of B (A is "+t+"x"+n+", B is "+o[0]+", "+n+" != "+o[0]+")");return A(r,t,n,o[1],function(e,r){return i.get([e,r])})}throw new Error("Can only multiply a 1 or 2 dimensional matrix (value has "+o.length+" dimensions)")}if(u(i)){var s=a.size(i);if(1===s.length){if(s[0]!==n)throw new RangeError("Dimension mismatch in multiplication. Matrix columns must match vector length.");return _(r,t,n,function(e){return i[e]})}if(2===s.length){if(s[0]!==n)throw new RangeError("Dimension mismatch in multiplication. Columns of A must match length of B (A is "+t+"x"+n+", B is "+s[0]+", "+n+" != "+s[0]+")");return A(r,t,n,s[1],function(e,r){return i[e][r]})}throw new Error("Can only multiply a 1 or 2 dimensional matrix (value has "+s.length+" dimensions)")}return r.map(function(r){return e.multiply(i,r)})},_=function(t,n,i,o){for(var a=[],s=0;n>s;s++){for(var u=t._data[s],c=0,f=0;i>f;f++)c=e.add(c,e.multiply(u[f],o(f)));a[s]=c}return 1===n?a[0]:new r({data:a,size:[n]})},A=function(t,n,i,o,a){for(var s=[],u=0;n>u;u++){var c=t._data[u];s[u]=[];for(var f=0;o>f;f++){for(var l=0,p=0;i>p;p++)l=e.add(l,e.multiply(c[p],a(p,f)));s[u][f]=l}}return 1===n&&1===o?s[0][0]:new r({data:s,size:[n,o]})};return r}},function(e,r,t){"use strict";r.ArrayNode=t(178),r.AssignmentNode=t(179),r.BlockNode=t(180),r.ConditionalNode=t(181),r.ConstantNode=t(182),r.IndexNode=t(183),r.FunctionAssignmentNode=t(184),r.FunctionNode=t(185),r.Node=t(186),r.OperatorNode=t(187),r.RangeNode=t(188),r.SymbolNode=t(189),r.UpdateNode=t(190)},function(e,r,t){"use strict";var n=t(176),i=t(171),o=n.string.isString,a=Array.isArray,s=t(178),u=t(179),c=t(180),f=t(181),l=t(182),p=t(184),m=t(183),h=t(187),g=t(185),d=t(188),v=t(189),y=t(190);e.exports=function(e){function r(e,r){if(1!=arguments.length&&2!=arguments.length)throw new i("parse",arguments.length,1,2);if(pe=r&&r.nodes?r.nodes:{},o(e))return me=e,S();if(a(e)||e instanceof se)return ue.deepMap(e,function(e){if(!o(e))throw new TypeError("String expected");return me=e,S()});throw new TypeError("String or matrix expected")}function t(){he=0,ge=me.charAt(0),ye=0,xe=null}function n(){he++,ge=me.charAt(he)}function x(){return me.charAt(he+1)}function w(){return me.charAt(he+2)}function b(){for(ve=ce.NULL,de="";" "==ge||" "==ge||"\n"==ge&&ye;)n();if("#"==ge)for(;"\n"!=ge&&""!=ge;)n();if(""==ge)return void(ve=ce.DELIMITER);if("\n"==ge&&!ye)return ve=ce.DELIMITER,de=ge,void n();var e=ge+x(),r=e+w();if(3==r.length&&fe[r])return ve=ce.DELIMITER,de=r,n(),n(),void n();if(2==e.length&&fe[e])return ve=ce.DELIMITER,de=e,n(),void n();if(fe[ge])return ve=ce.DELIMITER,de=ge,void n();if(!A(ge)){if(_(ge)){for(;_(ge)||T(ge);)de+=ge,n();return void(ve=le[de]?ce.DELIMITER:ce.SYMBOL)}for(ve=ce.UNKNOWN;""!=ge;)de+=ge,n();throw oe('Syntax error in part "'+de+'"')}if(ve=ce.NUMBER,"."==ge)de+=ge,n(),T(ge)||(ve=ce.UNKNOWN);else{for(;T(ge);)de+=ge,n();"."==ge&&(de+=ge,n())}for(;T(ge);)de+=ge,n();if(e=x(),("E"==ge||"e"==ge)&&(T(e)||"-"==e||"+"==e))for(de+=ge,n(),("+"==ge||"-"==ge)&&(de+=ge,n()),T(ge)||(ve=ce.UNKNOWN);T(ge);)de+=ge,n()}function E(){do b();while("\n"==de)}function N(){ye++}function M(){ye--}function _(e){return e>="a"&&"z">=e||e>="A"&&"Z">=e||"_"==e}function A(e){return e>="0"&&"9">=e||"."==e}function T(e){return e>="0"&&"9">=e}function S(){t(),b();var e=O();if(""!=de)throw ve==ce.DELIMITER?ae("Unexpected operator "+de):oe('Unexpected part "'+de+'"');return e}function O(){var e,r,t=[];if(""==de)return new l("undefined","undefined");for("\n"!=de&&";"!=de&&(e=z());"\n"==de||";"==de;)0==t.length&&e&&(r=";"!=de,t.push({node:e,visible:r})),b(),"\n"!=de&&";"!=de&&""!=de&&(e=z(),r=";"!=de,t.push({node:e,visible:r}));return t.length>0?new c(t):e}function z(){if(ve==ce.SYMBOL&&"function"==de)throw oe('Deprecated keyword "function". Functions can now be assigned without it, like "f(x) = x^2".');return C()}function C(){var e,r,t,n,i=q();if("="==de){if(i instanceof v)return e=i.name,E(),t=C(),new u(e,t);if(i instanceof m)return E(),t=C(),new y(i,t);if(i instanceof g&&(n=!0,r=[],e=i.name,i.args.forEach(function(e,t){e instanceof v?r[t]=e.name:n=!1}),n))return E(),t=C(),new p(e,r,t);throw oe("Invalid left hand side of assignment operator =")}return i}function q(){for(var e=U();"?"==de;){var r=xe;xe=ye,E();var t=e,n=U();if(":"!=de)throw oe("False part of conditional expression expected");xe=null,E();var i=q();e=new f(t,n,i),xe=r}return e}function U(){for(var e=I();"or"==de;)E(),e=new h("or","or",[e,I()]);return e}function I(){for(var e=B();"xor"==de;)E(),e=new h("xor","xor",[e,B()]);return e}function B(){for(var e=P();"and"==de;)E(),e=new h("and","and",[e,P()]);return e}function P(){for(var e=R();"|"==de;)E(),e=new h("|","bitOr",[e,R()]);return e}function R(){for(var e=L();"^|"==de;)E(),e=new h("^|","bitXor",[e,L()]);return e}function L(){for(var e=F();"&"==de;)E(),e=new h("&","bitAnd",[e,F()]);return e}function F(){var e,r,t,n,i;for(e=k(),r={"==":"equal","!=":"unequal","<":"smaller",">":"larger","<=":"smallerEq",">=":"largerEq"};de in r;)t=de,n=r[t],E(),i=[e,k()],e=new h(t,n,i);return e}function k(){var e,r,t,n,i;for(e=j(),r={"<<":"leftShift",">>":"rightArithShift",">>>":"rightLogShift"};de in r;)t=de,n=r[t],E(),i=[e,j()],e=new h(t,n,i);return e}function j(){var e,r,t,n,i;for(e=D(),r={to:"to","in":"to"};de in r;)t=de,n=r[t],E(),i=[e,D()],e=new h(t,n,i);return e}function D(){var e,r=[];if(e=":"==de?new l("1","number"):G(),":"==de&&xe!==ye){for(r.push(e);":"==de&&r.length<3;)E(),r.push(")"==de||"]"==de||","==de||""==de?new v("end"):G());e=3==r.length?new d(r[0],r[2],r[1]):new d(r[0],r[1])}return e}function G(){var e,r,t,n,i;for(e=W(),r={"+":"add","-":"subtract"};de in r;)t=de,n=r[t],E(),i=[e,W()],e=new h(t,n,i);return e}function W(){var e,r,t,n,i;if(e=Z(),r={"*":"multiply",".*":"dotMultiply","/":"divide","./":"dotDivide","%":"mod",mod:"mod"},de in r)for(;de in r;)t=de,n=r[t],E(),i=[e,Z()],e=new h(t,n,i);return(ve==ce.SYMBOL||"in"==de&&e instanceof l||ve==ce.NUMBER&&!(e instanceof l)||"("==de||"["==de)&&(e=new h("*","multiply",[e,W()])),e}function Z(){var e,r,t={"-":"unaryMinus","+":"unaryPlus","~":"bitNot",not:"not"}[de];return t?(e=de,E(),r=[Z()],new h(e,t,r)):V()}function V(){var e,r,t,n;return e=H(),("^"==de||".^"==de)&&(r=de,t="^"==r?"pow":"dotPow",E(),n=[e,Z()],e=new h(r,t,n)),e}function H(){var e,r,t,n,i;for(e=Y(),r={"!":"factorial","'":"transpose"};de in r;)t=de,n=r[t],b(),i=[e],e=new h(t,n,i);return e}function Y(){var e,r=[];if(ve==ce.SYMBOL&&pe[de]){if(e=pe[de],b(),"("==de){if(r=[],N(),b(),")"!=de)for(r.push(q());","==de;)b(),r.push(q());if(")"!=de)throw oe("Parenthesis ) expected");M(),b()}return new e(r)}return J()}function J(){var e,r;return ve==ce.SYMBOL||ve==ce.DELIMITER&&de in le?(r=de,b(),e=X(r),e=Q(e)):$()}function X(e){var r;if("("==de){if(r=[],N(),b(),")"!=de)for(r.push(q());","==de;)b(),r.push(q());if(")"!=de)throw oe("Parenthesis ) expected");return M(),b(),new g(e,r)}return new v(e)}function Q(e){for(var r;"["==de;){if(r=[],N(),b(),"]"!=de)for(r.push(q());","==de;)b(),r.push(q());if("]"!=de)throw oe("Parenthesis ] expected");M(),b(),e=new m(e,r)}return e}function $(){var e,r,t;if('"'==de){for(r="",t="";""!=ge&&('"'!=ge||"\\"==t);)r+=ge,t=ge,n();if(b(),'"'!=de)throw oe('End of string " expected');return b(),e=new l(r,"string"),e=Q(e)}return K()}function K(){var e,r,t,n;if("["==de){if(N(),b(),"]"!=de){var i=ee();if(";"==de){for(t=1,r=[i];";"==de;)b(),r[t]=ee(),t++;if("]"!=de)throw oe("End of matrix ] expected");M(),b(),n=r[0].nodes.length;for(var o=1;t>o;o++)if(r[o].nodes.length!=n)throw ae("Column dimensions mismatch ("+r[o].nodes.length+" != "+n+")");e=new s(r)}else{if("]"!=de)throw oe("End of matrix ] expected");M(),b(),e=i}}else M(),b(),e=new s([]);return e}return re()}function ee(){for(var e=[C()],r=1;","==de;)b(),e[r]=C(),r++;return new s(e)}function re(){var e;return ve==ce.NUMBER?(e=de,b(),new l(e,"number")):te()}function te(){var e;if("("==de){if(N(),b(),e=C(),")"!=de)throw oe("Parenthesis ) expected");return M(),b(),e}return ne()}function ne(){throw oe(""==de?"Unexpected end of expression":"Value expected")}function ie(){return he-de.length+1}function oe(e){var r=ie(),t=new SyntaxError(e+" (char "+r+")");return t["char"]=r,t}function ae(e){var r=ie(),t=new Error(e+" (char "+r+")");return t["char"]=r,t}var se=e.type.Matrix,ue=e.collection,ce={NULL:0,DELIMITER:1,NUMBER:2,SYMBOL:3,UNKNOWN:4},fe={",":!0,"(":!0,")":!0,"[":!0,"]":!0,'"':!0,";":!0,"+":!0,"-":!0,"*":!0,".*":!0,"/":!0,"./":!0,"%":!0,"^":!0,".^":!0,"~":!0,"!":!0,"&":!0,"|":!0,"^|":!0,"'":!0,"=":!0,":":!0,"?":!0,"==":!0,"!=":!0,"<":!0,">":!0,"<=":!0,">=":!0,"<<":!0,">>":!0,">>>":!0},le={mod:!0,to:!0,"in":!0,and:!0,xor:!0,or:!0,not:!0},pe={},me="",he=0,ge="",de="",ve=ce.NULL,ye=0,xe=null;return r}},function(e,r,t){"use strict";e.exports=function(e){function r(){if(!(this instanceof r))throw new SyntaxError("Constructor must be called with the new operator");this.scope={}}var t=e.expression.parse;return r.prototype.parse=function(e){throw new Error("Parser.parse is deprecated. Use math.parse instead.")},r.prototype.compile=function(e){throw new Error("Parser.compile is deprecated. Use math.compile instead.")},r.prototype.eval=function(r){return t(r).compile(e).eval(this.scope)},r.prototype.get=function(e){return this.scope[e]},r.prototype.set=function(e,r){return this.scope[e]=r},r.prototype.remove=function(e){delete this.scope[e]},r.prototype.clear=function(){for(var e in this.scope)this.scope.hasOwnProperty(e)&&delete this.scope[e]},r}},function(e,r,t){r.e=t(191),r.E=t(191),r["false"]=t(192),r.i=t(193),r.Infinity=t(194),r.LN2=t(195),r.LN10=t(196),r.LOG2E=t(197),r.LOG10E=t(198),r.NaN=t(199),r["null"]=t(200),r.pi=t(201),r.PI=t(201),r.phi=t(202),r.SQRT1_2=t(203),r.SQRT2=t(204),r.tau=t(205),r["true"]=t(206),r.version=t(207),r.abs=t(211),r.add=t(212),r.ceil=t(213),r.cube=t(214),r.divide=t(215),r.dotDivide=t(216),r.dotMultiply=t(217),r.dotPow=t(218),r.exp=t(219),r.fix=t(220),r.floor=t(221),r.gcd=t(222),r.lcm=t(223),r.log=t(224),r.log10=t(225),r.mod=t(226),r.multiply=t(227),r.norm=t(228),r.nthRoot=t(229),r.pow=t(230),r.round=t(231),r.sign=t(232),r.sqrt=t(233),r.square=t(234),r.subtract=t(235),r.unaryMinus=t(236),r.unaryPlus=t(237),r.xgcd=t(238),r.bitAnd=t(239),r.bitNot=t(240),r.bitOr=t(241),r.bitXor=t(242),r.leftShift=t(243),r.rightArithShift=t(244),r.rightLogShift=t(245),r.arg=t(246),r.conj=t(247),r.re=t(248),r.im=t(249),r.bignumber=t(250),r["boolean"]=t(251),r.complex=t(252),r.index=t(253),r.matrix=t(254),r.number=t(255),r.string=t(256),r.unit=t(257),r.eval=t(258),r.help=t(259),r.and=t(260),r.not=t(261),r.or=t(262),r.xor=t(263),r.concat=t(264),r.cross=t(265),r.det=t(266),r.diag=t(267),r.dot=t(268),r.eye=t(269),r.flatten=t(270),r.inv=t(271),r.ones=t(272),r.range=t(273),r.resize=t(274),r.size=t(275),r.squeeze=t(276),r.subset=t(277),r.trace=t(278),r.transpose=t(279),r.zeros=t(280),r.combinations=t(281),r.factorial=t(282),r.gamma=t(283),r.permutations=t(284),r.pickRandom=t(285),r.random=t(286),r.randomInt=t(287),r.compare=t(288),r.deepEqual=t(289),r.equal=t(290),r.larger=t(291),r.largerEq=t(292),r.smaller=t(293),r.smallerEq=t(294),r.unequal=t(295),r.max=t(296),r.mean=t(297),r.median=t(298),r.min=t(299),r.prod=t(300),r.std=t(301),r.sum=t(302),r["var"]=t(303),r.acos=t(304),r.acosh=t(305),r.acot=t(306),r.acoth=t(307),r.acsc=t(308),r.acsch=t(309),r.asec=t(310),r.asech=t(311),r.asin=t(312),r.asinh=t(313),r.atan=t(314),r.atanh=t(315),r.atan2=t(316),r.cos=t(317),r.cosh=t(318),r.cot=t(319),r.coth=t(320),r.csc=t(321),r.csch=t(322),r.sec=t(323),r.sech=t(324),r.sin=t(325),r.sinh=t(326),r.tan=t(327),r.tanh=t(328),r.to=t(329),r.clone=t(330),r.map=t(331),r.filter=t(332),r.forEach=t(333),r.format=t(334),r["import"]=t(335),r.sort=t(336),r["typeof"]=t(337)},function(e,r,t){"use strict";e.exports=function(e){function r(r,t){var n=t&&t.mathjs,i=e.type[n];return i&&i.fromJSON?i.fromJSON(t):t}return r}},function(e,r,t){"use strict";var n=t(5),i=t(209).transform,o=t(3).isNumber,a=t(169).argsToArray;e.exports=function(e){var r=function(){var r=a(arguments),t=r.length-1,s=r[t];o(s)?r[t]=s-1:s instanceof n&&(r[t]=s.minus(1));try{return e.concat.apply(e,r)}catch(u){throw i(u)}};return e.concat.transform=r,r}},function(e,r,t){"use strict";var n=t(189),i=(t(210).isBoolean,t(169).argsToArray,t(171));e.exports=function(e){var r=e.filter,t=function(e,t,o){if(2!==e.length)throw new i("filter",arguments.length,2);var a,s=e[0].compile(t).eval(o);if(e[1]instanceof n)a=e[1].compile(t).eval(o);else{var u=o||{},c=e[1].filter(function(e){return e instanceof n&&!(e.name in t)&&!(e.name in u)})[0],f=Object.create(u),l=e[1].compile(t);if(!c)throw new Error("No undefined variable found in filter equation");var p=c.name;a=function(e){return f[p]=e,l.eval(f)}}return r(s,a)};return t.rawArgs=!0,e.filter.transform=t,t}},function(e,r,t){"use strict";e.exports=function(e){function r(e,r,t){var n=function(e,i){Array.isArray(e)?e.forEach(function(e,r){n(e,i.concat(r+1))}):r(e,i,t)};n(e,[])}var t=e.type.Matrix,n=function(n,i){if(2!=arguments.length)throw new e.error.ArgumentsError("forEach",arguments.length,2);if(Array.isArray(n))r(n,i,n);else{if(!(n instanceof t))throw new e.error.UnsupportedTypeError("forEach",e["typeof"](n));r(n.valueOf(),i,n)}};return e.forEach.transform=n,n}},function(e,r,t){"use strict";var n=t(5),i=t(8),o=t(9),a=t(3).isNumber;e.exports=function(e){var r=function(){for(var e=[],r=0,t=arguments.length;t>r;r++){var s=arguments[r];if(s instanceof i)s.start--,s.end-=s.step>0?0:2;else if(a(s))s--;else{if(!(s instanceof n))throw new TypeError("Ranges must be a Number or Range");s=s.toNumber()-1}e[r]=s}var u=new o;return o.apply(u,e),u};return e.index.transform=r,r}},function(e,r,t){"use strict";e.exports=function(e){function r(e,r,t){var n=function(e,i){return Array.isArray(e)?e.map(function(e,r){return n(e,i.concat(r+1))}):r(e,i,t)};return n(e,[])}var t=e.type.Matrix,n=function(n,i){if(2!=arguments.length)throw new e.error.ArgumentsError("map",arguments.length,2);if(Array.isArray(n))return r(n,i,n);if(n instanceof t)return e.matrix(r(n.valueOf(),i,n));throw new e.error.UnsupportedTypeError("map",e["typeof"](n))};return e.map.transform=n,n}},function(e,r,t){"use strict";var n=t(5),i=t(209).transform,o=t(3).isNumber,a=t(169).argsToArray;e.exports=function(e){var r=e.collection.isCollection,t=function(){var t=a(arguments);if(2==t.length&&r(t[0])){var s=t[1];o(s)?t[1]=s-1:s instanceof n&&(t[1]=s.minus(1))}try{return e.max.apply(e,t)}catch(u){throw i(u)}};return e.max.transform=t,t}},function(e,r,t){"use strict";var n=t(5),i=t(209).transform,o=t(3).isNumber,a=t(169).argsToArray;e.exports=function(e){var r=e.collection.isCollection,t=function(){var t=a(arguments);if(2==t.length&&r(t[0])){var s=t[1];o(s)?t[1]=s-1:s instanceof n&&(t[1]=s.minus(1))}try{return e.mean.apply(e,t)}catch(u){throw i(u)}};return e.mean.transform=t,t}},function(e,r,t){"use strict";var n=t(5),i=t(209).transform,o=t(3).isNumber,a=t(169).argsToArray;e.exports=function(e){var r=e.collection.isCollection,t=function(){var t=a(arguments);if(2==t.length&&r(t[0])){var s=t[1];o(s)?t[1]=s-1:s instanceof n&&(t[1]=s.minus(1))}try{return e.min.apply(e,t)}catch(u){throw i(u)}};return e.min.transform=t,t}},function(e,r,t){"use strict";var n=t(210).isBoolean,i=t(169).argsToArray;e.exports=function(e){var r=function(){var r=i(arguments),t=r.length-1,o=r[t];return n(o)||r.push(!0),e.range.apply(e,r)};return e.range.transform=r,r}},function(e,r,t){"use strict";var n=t(209).transform,i=(t(210).isBoolean,t(169).argsToArray);e.exports=function(e){var r=function(){try{return e.subset.apply(e,i(arguments))}catch(r){throw n(r)}};return e.subset.transform=r,r}},function(e,r,t){"use strict";e.exports=function(e){function r(e){if(!(this instanceof r))throw new SyntaxError("Constructor must be called with the new operator");e instanceof r?this.value=e.value:this.value=e}function n(e,t){var n=Array.prototype.slice;"function"==typeof t?r.prototype[e]=function(){var e=[this.value].concat(n.call(arguments,0));return new r(t.apply(this,e))}:r.prototype[e]=new r(t)}var i=t(177);r.prototype.done=function(){return this.value},r.prototype.valueOf=function(){return this.value},r.prototype.toString=function(){return i.format(this.value)},r.createProxy=n;for(var o in e)e.hasOwnProperty(o)&&n(o,e[o]);return r}},function(e,r,t){"use strict";e.exports=function(e){var r=t(176),n=e.type.BigNumber,i=e.collection,o=i.isCollection,a=r.number.isNumber,s=r.string.isString,u=r["boolean"].isBoolean;e.bignumber=function c(r){if(arguments.length>1)throw new e.error.ArgumentsError("bignumber",arguments.length,0,1);if(r instanceof n||a(r)||s(r))return new n(r);if(u(r)||null===r)return new n(+r);if(o(r))return i.deepMap(r,c);if(0==arguments.length)return new n(0);throw new e.error.UnsupportedTypeError("bignumber",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(176),n=e.type.BigNumber,i=e.collection,o=i.isCollection,a=r.number.isNumber,s=r.string.isString;e["boolean"]=function u(r){if(1!=arguments.length)throw new e.error.ArgumentsError("boolean",arguments.length,0,1);if("true"===r||r===!0)return!0;if("false"===r||r===!1||null===r)return!1;if(r instanceof Boolean)return 1==r;if(a(r))return 0!==r;if(r instanceof n)return!r.isZero();if(s(r)){var t=r.toLowerCase();if("true"===t)return!0;if("false"===t)return!1;var c=Number(r);if(""!=r&&!isNaN(c))return 0!==c}if(o(r))return i.deepMap(r,u);throw new SyntaxError(r.toString()+" is no valid boolean")}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(176),n=e.type.BigNumber,i=t(7),o=e.collection,a=o.isCollection,s=r.number.isNumber,u=r.string.isString,c=i.isComplex;e.complex=function f(r){switch(arguments.length){case 0:return new i(0,0);case 1:var t=arguments[0];if(s(t))return new i(t,0);if(t instanceof n)return new i(t.toNumber(),0);if(c(t))return t.clone();if(u(t)){var l=i.parse(t);if(l)return l;throw new SyntaxError('String "'+t+'" is no valid complex number')}if(a(t))return o.deepMap(t,f);if("object"==typeof t){if("re"in t&&"im"in t)return new i(t.re,t.im);if("r"in t&&"phi"in t)return i.fromPolar(t.r,t.phi)}throw new TypeError("Two numbers, single string or an fitting object expected in function complex");case 2:var p=arguments[0],m=arguments[1];if(p instanceof n&&(p=p.toNumber()),m instanceof n&&(m=m.toNumber()),s(p)&&s(m))return new i(p,m);throw new TypeError("Two numbers or a single string expected in function complex");default:throw new e.error.ArgumentsError("complex",arguments.length,0,2)}}}},function(e,r,t){"use strict";e.exports=function(e){var r=(t(176),e.type.BigNumber),n=t(9);e.index=function(e){var t=Array.prototype.slice.apply(arguments).map(function(e){return e instanceof r?e.toNumber():Array.isArray(e)?e.map(function(e){return e instanceof r?e.toNumber():e}):e}),i=new n;return n.apply(i,t),i}}},function(e,r,t){"use strict";var n=t(177),i=Array.isArray,o=n.isString;e.exports=function(e){var r=e.type.Matrix;e.matrix=function(t,n){switch(arguments.length){case 0:t=[],n="default";break;case 1:i(t)?n="default":t instanceof r?n=t.storage():o(t)&&(n=t,t=[]);break;case 2:if(!(i(t)||t instanceof r))throw new TypeError("data must be an array value or Matrix instance");break;default:throw new e.error.ArgumentsError("matrix",arguments.length,0,2)}var a=r.storage(n);return new a(t)}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(176),n=e.type.BigNumber,i=e.type.Unit,o=e.collection,a=o.isCollection,s=r.number.isNumber,u=r["boolean"].isBoolean,c=r.string.isString;e.number=function f(r,t){switch(arguments.length){case 0:return 0;case 1:if(a(r))return o.deepMap(r,f);if(r instanceof n)return r.toNumber();if(c(r)){var l=Number(r);if(isNaN(l)&&(l=Number(r.valueOf())),isNaN(l))throw new SyntaxError(r.toString()+" is no valid number");return l}if(u(r)||null===r)return+r;if(s(r))return r;if(r instanceof i)throw new Error("Second argument with valueless unit expected");throw new e.error.UnsupportedTypeError("number",e["typeof"](r));case 2:if(r instanceof i&&c(t)||t instanceof i)return r.toNumber(t);throw new e.error.UnsupportedTypeError("number",e["typeof"](r),e["typeof"](t));default:throw new e.error.ArgumentsError("number",arguments.length,0,1)}}}},function(e,r,t){"use strict";e.exports=function(e){var r=e.expression.Parser;e.parser=function(){return new r}}},function(e,r,t){"use strict";e.exports=function(e){e.chain=function(r){return new e.chaining.Chain(r)},e.select=function(r){return console&&"function"==typeof console.log&&console.log('WARNING: Function "select" is renamed to "chain". It will be deprecated in v2.0.'),e.select=e.chain,e.chaining.Chain.prototype.select=e.select,e.chain(r)}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(176),n=e.collection,i=r.number,o=r.number.isNumber,a=n.isCollection;e.string=function s(r){switch(arguments.length){case 0:return"";case 1:return o(r)?i.format(r):a(r)?n.deepMap(r,s):null===r?"null":r.toString();default:throw new e.error.ArgumentsError("string",arguments.length,0,1)}}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(176),n=e.type.BigNumber,i=t(11),o=e.collection,a=o.isCollection,s=r.string.isString;e.unit=function u(r){switch(arguments.length){case 1:var t=arguments[0];if(t instanceof i)return t.clone();if(s(t)){if(i.isValuelessUnit(t))return new i(null,t);var c=i.parse(t);if(c)return c;throw new SyntaxError('String "'+t+'" is no valid unit')}if(a(r))return o.deepMap(r,u);throw new TypeError("A string or a number and string expected in function unit");case 2:return arguments[0]instanceof n?new i(arguments[0].toNumber(),arguments[1]):new i(arguments[0],arguments[1]);default:throw new e.error.ArgumentsError("unit",arguments.length,1,2)}}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(176),i=e.expression.parse,o=e.collection,a=n.string.isString,s=o.isCollection;e.compile=function(r){if(1!=arguments.length)throw new e.error.ArgumentsError("compile",arguments.length,1);if(a(r))return i(r).compile(e);if(s(r))return o.deepMap(r,function(r){return i(r).compile(e)});throw new TypeError("String, array, or matrix expected")}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(176),n=e.expression.parse,i=e.collection,o=r.string.isString,a=i.isCollection;e.eval=function(r,t){if(1!=arguments.length&&2!=arguments.length)throw new e.error.ArgumentsError("eval",arguments.length,1,2);if(t=t||{},o(r))return n(r).compile(e).eval(t);if(a(r))return i.deepMap(r,function(r){return n(r).compile(e).eval(t)});throw new TypeError("String, array, or matrix expected")}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(12);e.help=function(t){if(1!=arguments.length)throw new SyntaxError("Wrong number of arguments in function help ("+arguments.length+" provided, 1 expected)");var n=null;if(t instanceof String||"string"==typeof t)n=t;else{var i;for(i in e)if(e.hasOwnProperty(i)&&t===e[i]){n=i;break}}var o=e.expression.docs[n];if(!n)throw new Error('Cannot find "'+t+'" in math.js');if(!o)throw new Error('No documentation found on "'+n+'"');return new r(o)}}},function(e,r,t){"use strict";e.exports=function(e,r){var t=e.expression.parse;e.parse=function(e,r){return t.apply(t,arguments)}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(176),n=e.type.BigNumber,i=t(7),o=e.collection,a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,c=o.isCollection;e.abs=function f(r){if(1!=arguments.length)throw new e.error.ArgumentsError("abs",arguments.length,1);if(a(r))return Math.abs(r);if(u(r)){var t=Math.abs(r.re),i=Math.abs(r.im);if(1e3>t&&1e3>i)return Math.sqrt(t*t+i*i);if(t>=i){var l=i/t;return t*Math.sqrt(1+l*l)}var p=t/i;return i*Math.sqrt(1+p*p)}if(r instanceof n)return r.abs();if(c(r))return o.deepMap(r,f,!0);if(s(r)||null===r)return Math.abs(r);throw new e.error.UnsupportedTypeError("abs",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(176),n=e.type.BigNumber,i=t(7),o=t(11),a=e.collection,s=r["boolean"].isBoolean,u=r.number.isNumber,c=r.string.isString,f=i.isComplex,l=o.isUnit,p=a.isCollection;e.add=function m(r,t){if(2!=arguments.length)throw new e.error.ArgumentsError("add",arguments.length,2);if(u(r)){if(u(t))return r+t;if(f(t))return new i(r+t.re,t.im)}if(f(r)){if(f(t))return new i(r.re+t.re,r.im+t.im);if(u(t))return new i(r.re+t,r.im)}if(l(r)&&l(t)){if(null==r.value)throw new Error("Parameter x contains a unit with undefined value");if(null==t.value)throw new Error("Parameter y contains a unit with undefined value");if(!r.equalBase(t))throw new Error("Units do not match");var o=r.clone();return o.value+=t.value,o.fixPrefix=!1,o}if(r instanceof n)return u(t)?t=n.convert(t):(s(t)||null===t)&&(t=new n(t?1:0)),t instanceof n?r.plus(t):m(r.toNumber(),t);if(t instanceof n)return u(r)?r=n.convert(r):(s(r)||null===r)&&(r=new n(r?1:0)),r instanceof n?r.plus(t):m(r,t.toNumber());if(p(r)||p(t))return a.deepMap2(r,t,m);if(c(r)||c(t))return r+t;if(s(r)||null===r)return m(+r,t);if(s(t)||null===t)return m(r,+t);throw new e.error.UnsupportedTypeError("add",e["typeof"](r),e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(176),n=e.type.BigNumber,i=t(7),o=e.collection,a=r.number.isNumber,s=r["boolean"].isBoolean,u=o.isCollection,c=i.isComplex;e.ceil=function f(r){if(1!=arguments.length)throw new e.error.ArgumentsError("ceil",arguments.length,1);if(a(r))return Math.ceil(r);if(c(r))return new i(Math.ceil(r.re),Math.ceil(r.im));if(r instanceof n)return r.ceil();if(u(r))return o.deepMap(r,f,!0);if(s(r)||null===r)return Math.ceil(r);throw new e.error.UnsupportedTypeError("ceil",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(176),n=e.type.BigNumber,i=t(7),o=e.collection,a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,c=o.isCollection;e.cube=function f(r){if(1!=arguments.length)throw new e.error.ArgumentsError("cube",arguments.length,1);if(a(r))return r*r*r;if(u(r))return e.multiply(e.multiply(r,r),r);if(r instanceof n)return r.times(r).times(r);if(c(r))return o.deepMap(r,f);if(s(r)||null===r)return f(+r);throw new e.error.UnsupportedTypeError("cube",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){function r(e,r){var t=r.re*r.re+r.im*r.im;return 0!=t?new o((e.re*r.re+e.im*r.im)/t,(e.im*r.re-e.re*r.im)/t):new o(0!=e.re?e.re/0:0,0!=e.im?e.im/0:0)}var n=t(176),i=e.type.BigNumber,o=t(7),a=(e.type.Matrix,t(11)),s=n.number.isNumber,u=n["boolean"].isBoolean,c=o.isComplex,f=a.isUnit;e._divide=function l(t,n){if(s(t)){if(s(n))return t/n;if(c(n))return r(new o(t,0),n)}if(c(t)){if(c(n))return r(t,n);if(s(n))return r(t,new o(n,0))}if(t instanceof i)return s(n)?n=i.convert(n):(u(n)||null===n)&&(n=new i(n?1:0)),n instanceof i?t.div(n):l(t.toNumber(),n);if(n instanceof i)return s(t)?t=i.convert(t):(u(t)||null===t)&&(t=new i(t?1:0)),t instanceof i?t.div(n):l(t,n.toNumber());if(f(t)&&s(n)){var a=t.clone();return a.value=(null===a.value?a._normalize(1):a.value)/n,a}if(u(t)||null===t)return l(+t,n);if(u(n)||null===n)return l(t,+n);throw new e.error.UnsupportedTypeError("divide",e["typeof"](t),e["typeof"](n))}}},function(e,r,t){"use strict";e.exports=function(e){var r=e.collection,t=r.isCollection;e.divide=function(n,i){if(2!=arguments.length)throw new e.error.ArgumentsError("divide",arguments.length,2);return t(n)?t(i)?e.multiply(n,e.inv(i)):r.deepMap2(n,i,e._divide):t(i)?e.multiply(n,e.inv(i)):e._divide(n,i)}}},function(e,r,t){"use strict";e.exports=function(e){var r=e.collection;e.dotDivide=function(t,n){if(2!=arguments.length)throw new e.error.ArgumentsError("dotDivide",arguments.length,2);return r.deepMap2(t,n,e.divide)},e.edivide=function(){throw new Error("Function edivide is renamed to dotDivide")}}},function(e,r,t){"use strict";e.exports=function(e){var r=(t(176),e.collection);e.dotMultiply=function(t,n){if(2!=arguments.length)throw new e.error.ArgumentsError("dotMultiply",arguments.length,2);return r.deepMap2(t,n,e.multiply)},e.emultiply=function(){throw new Error("Function emultiply is renamed to dotMultiply")}}},function(e,r,t){"use strict";e.exports=function(e){var r=(t(176),e.collection);e.dotPow=function(t,n){if(2!=arguments.length)throw new e.error.ArgumentsError("dotPow",arguments.length,2);return r.deepMap2(t,n,e.pow)},e.epow=function(){throw new Error("Function epow is renamed to dotPow")}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(176),n=e.type.BigNumber,i=t(7),o=(e.type.Matrix,e.collection),a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,c=o.isCollection; -e.exp=function f(r){if(1!=arguments.length)throw new e.error.ArgumentsError("exp",arguments.length,1);if(a(r))return Math.exp(r);if(u(r)){var t=Math.exp(r.re);return new i(t*Math.cos(r.im),t*Math.sin(r.im))}if(r instanceof n)return r.exp();if(c(r))return o.deepMap(r,f);if(s(r)||null===r)return Math.exp(r);throw new e.error.UnsupportedTypeError("exp",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(175),n=e.type.BigNumber,i=t(7),o=e.collection,a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,c=o.isCollection;e.fix=function f(r){if(1!=arguments.length)throw new e.error.ArgumentsError("fix",arguments.length,1);if(a(r))return r>0?Math.floor(r):Math.ceil(r);if(u(r))return new i(r.re>0?Math.floor(r.re):Math.ceil(r.re),r.im>0?Math.floor(r.im):Math.ceil(r.im));if(r instanceof n)return r.isNegative()?r.ceil():r.floor();if(c(r))return o.deepMap(r,f,!0);if(s(r)||null===r)return f(+r);throw new e.error.UnsupportedTypeError("fix",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(175),n=e.type.BigNumber,i=t(7),o=e.collection,a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,c=o.isCollection;e.floor=function f(r){if(1!=arguments.length)throw new e.error.ArgumentsError("floor",arguments.length,1);if(a(r))return Math.floor(r);if(u(r))return new i(Math.floor(r.re),Math.floor(r.im));if(r instanceof n)return r.floor();if(c(r))return o.deepMap(r,f,!0);if(s(r)||null===r)return f(+r);throw new e.error.UnsupportedTypeError("floor",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){function r(e,r){if(!e.isInt()||!r.isInt())throw new Error("Parameters in function gcd must be integer numbers");for(var t=new i(0);!r.isZero();){var n=e.mod(r);e=r,r=n}return e.lt(t)?e.neg():e}var n=t(175),i=e.type.BigNumber,o=e.collection,a=n.number.isNumber,s=n["boolean"].isBoolean,u=n.number.isInteger,c=o.isCollection;e.gcd=function f(t){var n,l=arguments[0],p=arguments[1];if(2==arguments.length){if(a(l)&&a(p)){if(!u(l)||!u(p))throw new Error("Parameters in function gcd must be integer numbers");for(;0!=p;)n=l%p,l=p,p=n;return 0>l?-l:l}if(c(l)||c(p))return o.deepMap2(l,p,f);if(l instanceof i)return a(p)?p=i.convert(p):(s(p)||null===p)&&(p=new i(p?1:0)),p instanceof i?r(l,p):f(l.toNumber(),p);if(p instanceof i)return a(l)?l=i.convert(l):(s(l)||null===l)&&(l=new i(l?1:0)),l instanceof i?r(l,p):f(l.toNumber(),p);if(s(l)||null===l)return f(+l,p);if(s(p)||null===p)return f(l,+p);throw new e.error.UnsupportedTypeError("gcd",e["typeof"](l),e["typeof"](p))}if(arguments.length>2){for(var m=1;m2){for(var h=1;h=0?Math.log(r):f(new i(r,0));if(u(r))return new i(Math.log(Math.sqrt(r.re*r.re+r.im*r.im)),Math.atan2(r.im,r.re));if(r instanceof n)return r.isNegative()?f(r.toNumber()):r.ln();if(c(r))return o.deepMap(r,f);if(s(r)||null===r)return f(+r);throw new e.error.UnsupportedTypeError("log",e["typeof"](r))}if(2==arguments.length)return e.divide(f(r),f(t));throw new e.error.ArgumentsError("log",arguments.length,1,2)}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(175),n=e.type.BigNumber,i=t(7),o=e.collection,a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,c=o.isCollection;e.log10=function f(r){if(1!=arguments.length)throw new e.error.ArgumentsError("log10",arguments.length,1);if(a(r))return r>=0?Math.log(r)/Math.LN10:f(new i(r,0));if(r instanceof n)return r.isNegative()?f(r.toNumber()):r.log();if(u(r))return new i(Math.log(Math.sqrt(r.re*r.re+r.im*r.im))/Math.LN10,Math.atan2(r.im,r.re)/Math.LN10);if(c(r))return o.deepMap(r,f);if(s(r)||null===r)return f(+r);throw new e.error.UnsupportedTypeError("log10",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){function r(e,r){if(r>0)return e-r*Math.floor(e/r);if(0==r)return e;throw new Error("Cannot calculate mod for a negative divisor")}var n=t(175),i=e.type.BigNumber,o=e.collection,a=n.number.isNumber,s=n["boolean"].isBoolean,u=o.isCollection;e.mod=function c(t,n){if(2!=arguments.length)throw new e.error.ArgumentsError("mod",arguments.length,2);if(a(t)&&a(n))return r(t,n);if(t instanceof i)return a(n)?n=i.convert(n):(s(n)||null===n)&&(n=new i(n?1:0)),n instanceof i?n.isZero()?t:t.mod(n):c(t.toNumber(),n);if(n instanceof i)return a(t)?t=i.convert(t):(s(t)||null===t)&&(t=new i(t?1:0)),t instanceof i?n.isZero()?t:t.mod(n):c(t,n.toNumber());if(u(t)||u(n))return o.deepMap2(t,n,c);if(s(t)||null===t)return c(+t,n);if(s(n)||null===n)return c(t,+n);throw new e.error.UnsupportedTypeError("mod",e["typeof"](t),e["typeof"](n))}}},function(e,r,t){"use strict";e.exports=function(e){function r(e,r){return 0==e.im?0==r.im?new o(e.re*r.re,0):0==r.re?new o(0,e.re*r.im):new o(e.re*r.re,e.re*r.im):0==e.re?0==r.im?new o(0,e.im*r.re):0==r.re?new o(-e.im*r.im,0):new o(-e.im*r.im,e.im*r.re):0==r.im?new o(e.re*r.re,e.im*r.re):0==r.re?new o(-e.im*r.im,e.re*r.im):new o(e.re*r.re-e.im*r.im,e.re*r.im+e.im*r.re)}var n=t(175),i=e.type.BigNumber,o=t(7),a=e.type.Matrix,s=t(11),u=e.collection,c=n.number.isNumber,f=n["boolean"].isBoolean,l=o.isComplex,p=Array.isArray,m=s.isUnit;e.multiply=function h(t,n){var s;if(2!=arguments.length)throw new e.error.ArgumentsError("multiply",arguments.length,2);if(c(t)){if(c(n))return t*n;if(l(n))return r(new o(t,0),n);if(m(n))return s=n.clone(),s.value=null===s.value?s._normalize(t):s.value*t,s}if(l(t)){if(c(n))return r(t,new o(n,0));if(l(n))return r(t,n)}if(t instanceof i)return c(n)?n=i.convert(n):(f(n)||null===n)&&(n=new i(n?1:0)),n instanceof i?t.times(n):h(t.toNumber(),n);if(n instanceof i)return c(t)?t=i.convert(t):(f(t)||null===t)&&(t=new i(t?1:0)),t instanceof i?t.times(n):h(t,n.toNumber());if(m(t)&&c(n))return s=t.clone(),s.value=null===s.value?s._normalize(n):s.value*n,s;if(p(t)){var g=e.matrix(t),d=g.multiply(n);return d instanceof a?n instanceof a?d:d.valueOf():d}if(t instanceof a)return t.multiply(n);if(p(n))return u.deepMap2(t,n,h);if(n instanceof a){var v=function(e){return h(t,e)};return u.deepMap(n,v,!0)}if(f(t)||null===t)return h(+t,n);if(f(n)||null===n)return h(t,+n);throw new e.error.UnsupportedTypeError("multiply",e["typeof"](t),e["typeof"](n))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(175),n=e.type.BigNumber,i=t(7),o=e.type.Matrix,a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,c=Array.isArray;e.norm=function f(r,t){if(arguments.length<1||arguments.length>2)throw new e.error.ArgumentsError("abs",arguments.length,1,2);if(a(r))return Math.abs(r);if(u(r)){var i=Math.abs(r.re),l=Math.abs(r.im);if(i>=l){var p=l/i;return i*Math.sqrt(1+p*p)}var m=i/l;return l*Math.sqrt(1+m*m)}if(r instanceof n)return r.abs();if(s(r)||null===r)return Math.abs(r);if(c(r))return f(e.matrix(r),t);if(r instanceof o){var h=r.size();if(null==t&&(t=2),1==h.length){if(t===Number.POSITIVE_INFINITY||"inf"===t){var g;return r.forEach(function(r){var t=e.abs(r);(!g||e.larger(t,g))&&(g=t)},!0),g}if(t===Number.NEGATIVE_INFINITY||"-inf"===t){var g;return r.forEach(function(r){var t=e.abs(r);(!g||e.smaller(t,g))&&(g=t)},!0),g}if("fro"===t)return f(r);if(a(t)&&!isNaN(t)){if(!e.equal(t,0)){var g=0;return r.forEach(function(r){g=e.add(e.pow(e.abs(r),t),g)},!0),e.pow(g,1/t)}return Number.POSITIVE_INFINITY}throw new Error("Unsupported parameter value")}if(2==h.length){if(1==t){var d=[];return r.forEach(function(r,t){var n=t[1];d[n]=e.add(d[n]||0,e.abs(r))},!0),e.max(d)}if(t==Number.POSITIVE_INFINITY||"inf"===t){var v=[];return r.forEach(function(r,t){var n=t[0];v[n]=e.add(v[n]||0,e.abs(r))},!0),e.max(v)}if("fro"===t)return e.sqrt(r.transpose().multiply(r).trace());if(2==t)throw new Error("Unsupported parameter value, missing implementation of matrix singular value decomposition");throw new Error("Unsupported parameter value")}}throw new e.error.UnsupportedTypeError("norm",r)}}},function(e,r,t){"use strict";e.exports=function(e){function r(e,r){var t=void 0!=r?r:2,n=0>t;if(n&&(t=-t),0==t)throw new Error("Root must be non-zero");if(0>e&&Math.abs(t)%2!=1)throw new Error("Root must be odd when a is negative.");if(0==e)return 0;if(!Number.isFinite(e))return n?0:e;var i=1e-16,o=1,a=0,s=100;do{var u=(e/Math.pow(o,t-1)-o)/t;o+=u,a++}while(Math.abs(u)>i&&s>a);return n?1/o:o}function i(e,r){var t=void 0!=r?r:new a(2),n=new a(0),i=new a(1),o=t.isNegative();if(o&&(t=t.negated()),t.isZero())throw new Error("Root must be non-zero");if(e.isNegative()&&!t.abs().mod(2).equals(1))throw new Error("Root must be odd when a is negative.");if(e.isZero())return n;if(!e.isFinite())return o?n:e;var s=i,u=0,c=100;do{var f=s,l=e.div(s.pow(t.minus(1))).minus(s).div(t);s=s.plus(l),u++}while(!s.equals(f)&&c>u);return o?i.div(s):s}var o=t(175),a=e.type.BigNumber,s=e.collection,u=o.number.isNumber,c=o["boolean"].isBoolean,f=s.isCollection;e.nthRoot=function l(t,o){if(1!=arguments.length&&2!=arguments.length)throw new e.error.ArgumentsError("nthRoot",arguments.length,1,2);switch(arguments.length){case 1:if(u(t))return r(t);if(t instanceof a)return i(t);if(f(t))return s.deepMap(x,l);if(c(t)||null===t)return l(+t);break;case 2:if(u(t)){if(u(o))return r(t,o);if(o instanceof a)return t=a.convert(t),t instanceof a?i(t,o):r(t,o.toNumber())}else{if(t instanceof a)return u(o)&&(o=a.convert(o)),o instanceof a?i(t,o):r(t.toNumber(),o);if(f(t)&&!f(o))return s.deepMap2(t,o,l)}if(c(t)||null===t)return l(+t,o);if(c(o)||null===o)return l(t,+o);break;default:throw new e.error.ArgumentsError("nthRoot",arguments.length,1,2)}if(c(x)||null===x)return 2==arguments.length?l(+x,n):l(+x);throw new e.error.UnsupportedTypeError("nthRoot",e["typeof"](t),e["typeof"](o))}}},function(e,r,t){"use strict";e.exports=function(e){function r(r,t){var n=e.log(r),i=e.multiply(n,t);return e.exp(i)}var n=t(175),i=e.type.BigNumber,o=t(7),a=e.type.Matrix,s=n.array,u=n.number.isNumber,c=n["boolean"].isBoolean,f=Array.isArray,l=n.number.isInteger,p=o.isComplex;e.pow=function m(t,n){if(2!=arguments.length)throw new e.error.ArgumentsError("pow",arguments.length,2);if(u(t)){if(u(n))return l(n)||t>=0?Math.pow(t,n):r(new o(t,0),new o(n,0));if(p(n))return r(new o(t,0),n)}if(p(t)){if(u(n))return r(t,new o(n,0));if(p(n))return r(t,n)}if(t instanceof i)return u(n)?n=i.convert(n):(c(n)||null===n)&&(n=new i(n?1:0)),n instanceof i?n.isInteger()||!t.isNegative()?t.pow(n):m(t.toNumber(),n.toNumber()):m(t.toNumber(),n);if(n instanceof i)return u(t)?t=i.convert(t):(c(t)||null===t)&&(t=new i(t?1:0)),t instanceof i?n.isInteger()&&!t.isNegative()?t.pow(n):m(t.toNumber(),n.toNumber()):m(t,n.toNumber());if(f(t)){if(!u(n)||!l(n)||0>n)throw new TypeError("For A^b, b must be a positive integer (value is "+n+")");var h=s.size(t);if(2!=h.length)throw new Error("For A^b, A must be 2 dimensional (A has "+h.length+" dimensions)");if(h[0]!=h[1])throw new Error("For A^b, A must be square (size is "+h[0]+"x"+h[1]+")");for(var g=e.eye(h[0]).valueOf(),d=t;n>=1;)1==(1&n)&&(g=e.multiply(d,g)),n>>=1,d=e.multiply(d,d);return g}if(t instanceof a)return e.matrix(m(t.valueOf(),n));if(c(t)||null===t)return m(+t,n);if(c(n)||null===n)return m(t,+n);throw new e.error.UnsupportedTypeError("pow",e["typeof"](t),e["typeof"](n))}}},function(e,r,t){"use strict";e.exports=function(e){function r(e,r){return parseFloat(p(e,r))}var n=t(175),i=e.type.BigNumber,o=t(7),a=e.collection,s=n.number.isNumber,u=n.number.isInteger,c=n["boolean"].isBoolean,f=o.isComplex,l=a.isCollection,p=n.number.toFixed;e.round=function m(t,n){if(1!=arguments.length&&2!=arguments.length)throw new e.error.ArgumentsError("round",arguments.length,1,2);if(void 0==n){if(s(t))return Math.round(t);if(f(t))return new o(Math.round(t.re),Math.round(t.im));if(t instanceof i)return t.toDecimalPlaces(0);if(l(t))return a.deepMap(t,m);if(c(t)||null===t)return Math.round(t);throw new e.error.UnsupportedTypeError("round",e["typeof"](t))}if(!s(n)||!u(n)){if(!(n instanceof i)){if(c(n)||null===t)return m(t,+n);throw new TypeError("Number of decimals in function round must be an integer")}n=parseFloat(n.valueOf())}if(0>n||n>15)throw new Error("Number of decimals in function round must be in te range of 0-15");if(s(t))return r(t,n);if(f(t))return new o(r(t.re,n),r(t.im,n));if(t instanceof i)return t.toDecimalPlaces(n);if(l(t)||l(n))return a.deepMap2(t,n,m);if(c(t)||null===t)return m(+t,n);throw new e.error.UnsupportedTypeError("round",e["typeof"](t),e["typeof"](n))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(175),n=e.type.BigNumber,i=t(7),o=e.collection,a=r.number,s=r.number.isNumber,u=r["boolean"].isBoolean,c=i.isComplex,f=o.isCollection;e.sign=function l(r){if(1!=arguments.length)throw new e.error.ArgumentsError("sign",arguments.length,1);if(s(r))return a.sign(r);if(c(r)){var t=Math.sqrt(r.re*r.re+r.im*r.im);return new i(r.re/t,r.im/t)}if(r instanceof n)return new n(r.cmp(0));if(f(r))return o.deepMap(r,l,!0);if(u(r)||null===r)return a.sign(r);throw new e.error.UnsupportedTypeError("sign",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(175),n=e.type.BigNumber,i=t(7),o=e.collection,a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,c=o.isCollection;e.sqrt=function f(r){if(1!=arguments.length)throw new e.error.ArgumentsError("sqrt",arguments.length,1);if(a(r))return r>=0?Math.sqrt(r):f(new i(r,0));if(u(r)){var t,l,p=Math.sqrt(r.re*r.re+r.im*r.im);return t=r.re>=0?.5*Math.sqrt(2*(p+r.re)):Math.abs(r.im)/Math.sqrt(2*(p-r.re)),l=r.re<=0?.5*Math.sqrt(2*(p-r.re)):Math.abs(r.im)/Math.sqrt(2*(p+r.re)),r.im>=0?new i(t,l):new i(t,-l)}if(r instanceof n)return r.isNegative()?f(r.toNumber()):r.sqrt();if(c(r))return o.deepMap(r,f,!0);if(s(r)||null===r)return f(+r);throw new e.error.UnsupportedTypeError("sqrt",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(175),n=e.type.BigNumber,i=t(7),o=e.collection,a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,c=o.isCollection;e.square=function f(r){if(1!=arguments.length)throw new e.error.ArgumentsError("square",arguments.length,1);if(a(r))return r*r;if(u(r))return e.multiply(r,r);if(r instanceof n)return r.times(r);if(c(r))return o.deepMap(r,f,!0);if(s(r)||null===r)return r*r;throw new e.error.UnsupportedTypeError("square",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(175),n=e.type.BigNumber,i=t(7),o=(e.type.Matrix,t(11)),a=e.collection,s=r["boolean"].isBoolean,u=r.number.isNumber,c=i.isComplex,f=o.isUnit,l=a.isCollection;e.subtract=function p(r,t){if(2!=arguments.length)throw new e.error.ArgumentsError("subtract",arguments.length,2);if(u(r)){if(u(t))return r-t;if(c(t))return new i(r-t.re,-t.im)}else if(c(r)){if(u(t))return new i(r.re-t,r.im);if(c(t))return new i(r.re-t.re,r.im-t.im)}if(r instanceof n)return u(t)?t=n.convert(t):(s(t)||null===t)&&(t=new n(t?1:0)),t instanceof n?r.minus(t):p(r.toNumber(),t);if(t instanceof n)return u(r)?r=n.convert(r):(s(r)||null===r)&&(r=new n(r?1:0)),r instanceof n?r.minus(t):p(r,t.toNumber());if(f(r)&&f(t)){if(null==r.value)throw new Error("Parameter x contains a unit with undefined value");if(null==t.value)throw new Error("Parameter y contains a unit with undefined value");if(!r.equalBase(t))throw new Error("Units do not match");var o=r.clone();return o.value-=t.value,o.fixPrefix=!1,o}if(l(r)||l(t))return a.deepMap2(r,t,p);if(s(r)||null===r)return p(+r,t);if(s(t)||null===t)return p(r,+t);throw new e.error.UnsupportedTypeError("subtract",e["typeof"](r),e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(175),i=e.type.BigNumber,o=t(7),a=t(11),s=e.collection,u=n.number.isNumber,c=n["boolean"].isBoolean,f=n.string.isString,l=o.isComplex,p=a.isUnit,m=s.isCollection;e.unaryMinus=function h(t){if(1!=arguments.length)throw new e.error.ArgumentsError("unaryMinus",arguments.length,1);if(u(t))return-t;if(l(t))return new o(-t.re,-t.im);if(t instanceof i)return t.neg();if(p(t)){var n=t.clone();return n.value=-t.value,n}if(m(t))return s.deepMap(t,h,!0);if(c(t)||f(t)||null===t)return"bignumber"==r.number?new i(-t):-t;throw new e.error.UnsupportedTypeError("unaryMinus",e["typeof"](t))},e.unary=function(){throw new Error("Function unary is deprecated. Use unaryMinus instead.")}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(175),i=e.type.BigNumber,o=t(7),a=t(11),s=e.collection,u=n.number.isNumber,c=n["boolean"].isBoolean,f=n.string.isString,l=o.isComplex,p=a.isUnit,m=s.isCollection;e.unaryPlus=function h(t){if(1!=arguments.length)throw new e.error.ArgumentsError("unaryPlus",arguments.length,1);if(u(t))return t;if(l(t))return t.clone();if(t instanceof i)return t;if(p(t))return t.clone();if(m(t))return s.deepMap(t,h,!0);if(c(t)||f(t)||null===t)return"bignumber"==r.number?new i(+t):+t;throw new e.error.UnsupportedTypeError("unaryPlus",e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e,r){function n(t,n){for(var i,o,a,s=0,u=1,c=1,f=0;n;)o=Math.floor(t/n),a=t%n,i=s,s=u-o*s,u=i,i=c,c=f-o*c,f=i,t=n,n=a;var l;return l=0>t?[-t,-u,-f]:[t,t?u:0,f],"array"===r.matrix?l:e.matrix(l)}function i(t,n){for(var i,o,s,u=new a(0),c=new a(0),f=new a(1),l=new a(1),p=new a(0);!n.isZero();)o=t.div(n).floor(),s=t.mod(n),i=c,c=f.minus(o.times(c)),f=i,i=l,l=p.minus(o.times(l)),p=i,t=n,n=s;var m;return m=t.lt(u)?[t.neg(),f.neg(),p.neg()]:[t,t.isZero()?0:f,p],"array"===r.matrix?m:e.matrix(m)}var o=t(175),a=(e.type.Matrix,e.type.BigNumber),s=o.number.isNumber,u=o["boolean"].isBoolean,c=o.number.isInteger;e.xgcd=function f(r,t){if(2==arguments.length){if(s(r)&&s(t)){if(!c(r)||!c(t))throw new Error("Parameters in function xgcd must be integer numbers");return n(r,t)}if(r instanceof a)return s(t)?t=a.convert(t):(u(t)||null===t)&&(t=new a(t?1:0)),t instanceof a?i(r,t):f(r.toNumber(),t);if(t instanceof a)return s(r)?r=a.convert(r):(u(r)||null===r)&&(r=new a(r?1:0)),r instanceof a?i(r,t):f(r.toNumber(),t);if(u(r)||null===r)return f(+r,t);if(u(t)||null===t)return f(r,+t);throw new e.error.UnsupportedTypeError("xgcd",e["typeof"](r),e["typeof"](t))}throw new SyntaxError("Function xgcd expects two arguments")}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(175),i=e.type.BigNumber,o=(e.type.Matrix,t(11),e.collection),a=n["boolean"].isBoolean,s=n.number.isInteger,u=n.number.isNumber,c=o.isCollection,f=n.bignumber.and;e.bitAnd=function l(r,t){if(2!=arguments.length)throw new e.error.ArgumentsError("bitAnd",arguments.length,2);if(u(r)&&u(t)){if(!s(r)||!s(t))throw new Error("Parameters in function bitAnd must be integer numbers");return r&t}if(c(r)||c(t))return o.deepMap2(r,t,l);if(a(r)||null===r)return l(+r,t);if(a(t)||null===t)return l(r,+t);if(r instanceof i)return u(t)&&(t=i.convert(t)),t instanceof i?f(r,t):l(r.toNumber(),t);if(t instanceof i)return u(r)&&(r=i.convert(r)),r instanceof i?f(r,t):l(r,t.toNumber());throw new e.error.UnsupportedTypeError("bitAnd",e["typeof"](r),e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(175),i=e.type.BigNumber,o=(e.type.Matrix,t(11),e.collection),a=n["boolean"].isBoolean,s=n.number.isInteger,u=n.number.isNumber,c=o.isCollection,f=n.bignumber.not;e.bitNot=function l(r){if(1!=arguments.length)throw new e.error.ArgumentsError("bitNot",arguments.length,1);if(u(r)){if(!s(r))throw new Error("Parameter in function bitNot must be integer numbers");return~r}if(r instanceof i)return f(r);if(c(r))return o.deepMap(r,l);if(a(r)||null===r)return l(+r);throw new e.error.UnsupportedTypeError("bitNot",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(175),i=e.type.BigNumber,o=(e.type.Matrix,t(11),e.collection),a=n["boolean"].isBoolean,s=n.number.isInteger,u=n.number.isNumber,c=o.isCollection,f=n.bignumber.or;e.bitOr=function l(r,t){if(2!=arguments.length)throw new e.error.ArgumentsError("bitOr",arguments.length,2);if(u(r)&&u(t)){if(!s(r)||!s(t))throw new Error("Parameters in function bitOr must be integer numbers");return r|t}if(c(r)||c(t))return o.deepMap2(r,t,l);if(a(r)||null===r)return l(+r,t);if(a(t)||null===t)return l(r,+t);if(r instanceof i)return u(t)&&(t=i.convert(t)),t instanceof i?f(r,t):l(r.toNumber(),t);if(t instanceof i)return u(r)&&(r=i.convert(r)),r instanceof i?f(r,t):l(r,t.toNumber());throw new e.error.UnsupportedTypeError("bitOr",e["typeof"](r),e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(175),i=e.type.BigNumber,o=(e.type.Matrix,t(11),e.collection),a=n["boolean"].isBoolean,s=n.number.isInteger,u=n.number.isNumber,c=o.isCollection,f=n.bignumber.xor;e.bitXor=function l(r,t){if(2!=arguments.length)throw new e.error.ArgumentsError("bitXor",arguments.length,2);if(u(r)&&u(t)){if(!s(r)||!s(t))throw new Error("Parameters in function bitXor must be integer numbers");return r^t}if(c(r)||c(t))return o.deepMap2(r,t,l);if(a(r)||null===r)return l(+r,t);if(a(t)||null===t)return l(r,+t);if(r instanceof i)return u(t)&&(t=i.convert(t)),t instanceof i?f(r,t):l(r.toNumber(),t);if(t instanceof i)return u(r)&&(r=i.convert(r)),r instanceof i?f(r,t):l(r,t.toNumber());throw new e.error.UnsupportedTypeError("bitXor",e["typeof"](r),e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(175),i=e.type.BigNumber,o=(e.type.Matrix,t(11),e.collection),a=n["boolean"].isBoolean,s=n.number.isInteger,u=n.number.isNumber,c=o.isCollection,f=n.bignumber.leftShift;e.leftShift=function l(r,t){if(2!=arguments.length)throw new e.error.ArgumentsError("leftShift",arguments.length,2);if(u(r)){if(u(t)){if(!s(r)||!s(t))throw new Error("Parameters in function leftShift must be integer numbers");return r<t?new i(0/0):0==t||r.isZero()?r:t!=1/0||r.isFinite()?55>t?r.times(Math.pow(2,t)+""):(t=i.convert(t),f(r,t)):new i(0/0)}}if(c(r)&&u(t))return o.deepMap2(r,t,l);if(a(r)||null===r)return l(+r,t);if(a(t)||null===t)return l(r,+t);if(r instanceof i)return t instanceof i?f(r,t):l(r.toNumber(),t);if(t instanceof i)return l(r,t.toNumber());throw new e.error.UnsupportedTypeError("leftShift",e["typeof"](r),e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(175),i=e.type.BigNumber,o=(e.type.Matrix,t(11),e.collection),a=n["boolean"].isBoolean,s=n.number.isInteger,u=n.number.isNumber,c=o.isCollection,f=n.bignumber.rightShift;e.rightArithShift=function l(r,t){if(2!=arguments.length)throw new e.error.ArgumentsError("rightArithShift",arguments.length,2);if(u(r)){if(u(t)){if(!s(r)||!s(t))throw new Error("Parameters in function rightArithShift must be integer numbers");return r>>t}if(t instanceof i)return f(i.convert(r),t)}if(u(t)){if(isFinite(t)&&!s(t))throw new Error("Parameters in function rightArithShift must be integer numbers");if(r instanceof i){if(r.isFinite()&&!r.isInteger())throw new Error("Parameters in function rightArithShift must be integer numbers");return r.isNaN()||isNaN(t)||0>t?new i(0/0):t==1/0?new i(r.isNegative()?-1:r.isFinite()?0:0/0):55>t?r.div(Math.pow(2,t)+"").floor():(t=i.convert(t),f(r,t))}}if(c(r)&&u(t))return o.deepMap2(r,t,l);if(a(r)||null===r)return l(+r,t);if(a(t)||null===t)return l(r,+t);if(r instanceof i)return t instanceof i?f(r,t):l(r.toNumber(),t);if(t instanceof i)return l(r,t.toNumber());throw new e.error.UnsupportedTypeError("rightArithShift",e["typeof"](r),e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(175),i=(e.type.Matrix,t(11),e.collection),o=n["boolean"].isBoolean,a=n.number.isInteger,s=n.number.isNumber,u=i.isCollection;e.rightLogShift=function c(r,t){if(2!=arguments.length)throw new e.error.ArgumentsError("rightLogShift",arguments.length,2);if(s(r)&&s(t)){if(!a(r)||!a(t))throw new Error("Parameters in function rightLogShift must be integer numbers");return r>>>t}if(u(r)&&s(t))return i.deepMap2(r,t,c);if(o(r)||null===r)return c(+r,t);if(o(t)||null===t)return c(r,+t);throw new e.error.UnsupportedTypeError("rightLogShift",e["typeof"](r),e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(175),n=e.type.BigNumber,i=t(7),o=e.collection,a=r.number.isNumber,s=r["boolean"].isBoolean,u=o.isCollection,c=i.isComplex;e.arg=function f(r){if(1!=arguments.length)throw new e.error.ArgumentsError("arg",arguments.length,1);if(a(r))return Math.atan2(0,r);if(c(r))return Math.atan2(r.im,r.re);if(u(r))return o.deepMap(r,f);if(s(r)||null===r)return f(+r);if(r instanceof n)return f(r.toNumber());throw new e.error.UnsupportedTypeError("arg",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(175),n=e.type.BigNumber,i=t(7),o=e.collection,a=r.object,s=r.number.isNumber,u=r["boolean"].isBoolean,c=o.isCollection,f=i.isComplex;e.conj=function l(r){if(1!=arguments.length)throw new e.error.ArgumentsError("conj",arguments.length,1);return s(r)?r:r instanceof n?new n(r):f(r)?new i(r.re,-r.im):c(r)?o.deepMap(r,l):u(r)||null===r?+r:a.clone(r)}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(175),n=e.type.BigNumber,i=t(7),o=e.collection,a=r.object,s=r.number.isNumber,u=r["boolean"].isBoolean,c=o.isCollection,f=i.isComplex;e.re=function l(r){if(1!=arguments.length)throw new e.error.ArgumentsError("re",arguments.length,1);return s(r)?r:r instanceof n?new n(r):f(r)?r.re:c(r)?o.deepMap(r,l):u(r)||null===r?+r:a.clone(r)}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(175),n=e.type.BigNumber,i=t(7),o=e.collection,a=r.number.isNumber,s=r["boolean"].isBoolean,u=o.isCollection,c=i.isComplex;e.im=function f(r){if(1!=arguments.length)throw new e.error.ArgumentsError("im",arguments.length,1);return a(r)?0:r instanceof n?new n(0):c(r)?r.im:u(r)?o.deepMap(r,f):(s(r)||null===r,0)}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(175),n=e.type.BigNumber,i=t(7),o=t(11),a=e.collection,s=r.number.isNumber,u=r["boolean"].isBoolean,c=i.isComplex,f=o.isUnit,l=a.isCollection;e.and=function p(r,t){if(2!=arguments.length)throw new e.error.ArgumentsError("and",arguments.length,2);if((s(r)||u(r)||null===r)&&(s(t)||u(t)||null===t))return!(!r||!t);if(c(r))return 0==r.re&&0==r.im?!1:p(!0,t);if(c(t))return 0==t.re&&0==t.im?!1:p(r,!0);if(r instanceof n)return r.isZero()||r.isNaN()?!1:p(!0,t);if(t instanceof n)return t.isZero()||t.isNaN()?!1:p(r,!0);if(f(r))return null===r.value||0==r.value?!1:p(!0,t);if(f(t))return null===t.value||0==t.value?!1:p(r,!0);if(l(r)||l(t))return a.deepMap2(r,t,p);throw new e.error.UnsupportedTypeError("and",e["typeof"](r),e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(175),n=e.type.BigNumber,i=t(7),o=t(11),a=e.collection,s=r.number.isNumber,u=r["boolean"].isBoolean,c=i.isComplex,f=o.isUnit,l=a.isCollection;e.not=function p(r){if(1!=arguments.length)throw new e.error.ArgumentsError("not",arguments.length,1);if(s(r)||u(r)||null===r)return!r;if(c(r))return 0==r.re&&0==r.im;if(r instanceof n)return r.isZero()||r.isNaN();if(f(r))return null===r.value||0==r.value;if(l(r))return a.deepMap(r,p);throw new e.error.UnsupportedTypeError("not",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(175),n=e.type.BigNumber,i=t(7),o=t(11),a=e.collection,s=r.number.isNumber,u=r["boolean"].isBoolean,c=i.isComplex,f=o.isUnit,l=a.isCollection;e.or=function p(r,t){if(2!=arguments.length)throw new e.error.ArgumentsError("or",arguments.length,2);if((s(r)||u(r)||null===r)&&(s(t)||u(t)||null===t))return!(!r&&!t);if(c(r))return 0==r.re&&0==r.im?p(!1,t):!0;if(c(t))return 0==t.re&&0==t.im?p(r,!1):!0;if(r instanceof n)return r.isZero()||r.isNaN()?p(!1,t):!0;if(t instanceof n)return t.isZero()||t.isNaN()?p(r,!1):!0;if(f(r))return null===r.value||0==r.value?p(!1,t):!0;if(f(t))return null===t.value||0==t.value?p(r,!1):!0;if(l(r)||l(t))return a.deepMap2(r,t,p);throw new e.error.UnsupportedTypeError("or",e["typeof"](r),e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(175),n=e.type.BigNumber,i=t(7),o=t(11),a=e.collection,s=r.number.isNumber,u=r["boolean"].isBoolean,c=i.isComplex,f=o.isUnit,l=a.isCollection;e.xor=function p(r,t){if(2!=arguments.length)throw new e.error.ArgumentsError("xor",arguments.length,2);if((s(r)||u(r)||null===r)&&(s(t)||u(t)||null===t))return!!(!!r^!!t);if(c(r))return p(!(0==r.re&&0==r.im),t);if(c(t))return p(r,!(0==t.re&&0==t.im));if(r instanceof n)return p(!(r.isZero()||r.isNaN()),t);if(t instanceof n)return p(r,!(t.isZero()||t.isNaN()));if(f(r))return p(!(null===r.value||0==r.value),t);if(f(t))return p(r,!(null===t.value||0==t.value));if(l(r)||l(t))return a.deepMap2(r,t,p);throw new e.error.UnsupportedTypeError("xor",e["typeof"](r),e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e){function r(t,n,i,o){if(i>o){if(t.length!=n.length)throw new e.error.DimensionError(t.length,n.length);for(var a=[],s=0;sn;n++){var d=arguments[n];if(d instanceof o&&(h=!0),n==p-1&&(c(d)||d instanceof i)){if(a=m,m=d.valueOf(),!f(m))throw new TypeError("Integer number expected for dimension");if(0>m)throw new e.error.IndexError(m);if(n>0&&m>a)throw new e.error.IndexError(m,a+1)}else{if(!l(d))throw new e.error.UnsupportedTypeError("concat",e["typeof"](d));var v=s.clone(d).valueOf(),y=u.size(d.valueOf());if(g[n]=v,a=m,m=y.length-1,n>0&&m!=a)throw new e.error.DimensionError(a+1,m+1)}}if(0==g.length)throw new SyntaxError("At least one matrix expected");for(var x=g.shift();g.length;)x=r(x,g.shift(),m,0);return h?e.matrix(x):x}}},function(e,r,t){"use strict";e.exports=function(e){function r(r,t){var i=n.size(r),o=n.size(t);if(1!=i.length||1!=o.length||3!=i[0]||3!=o[0])throw new RangeError("Vectors with length 3 expected (Size A = ["+i.join(", ")+"], B = ["+o.join(", ")+"])");return[e.subtract(e.multiply(r[1],t[2]),e.multiply(r[2],t[1])),e.subtract(e.multiply(r[2],t[0]),e.multiply(r[0],t[2])),e.subtract(e.multiply(r[0],t[1]),e.multiply(r[1],t[0]))]}var n=t(169),i=e.type.Matrix;e.cross=function(t,n){if(t instanceof i){if(n instanceof i)return e.matrix(r(t.toArray(),n.toArray()));if(Array.isArray(n))return e.matrix(r(t.toArray(),n))}else if(Array.isArray(t)){if(n instanceof i)return e.matrix(r(t,n.toArray()));if(Array.isArray(n))return r(t,n)}throw new e.error.UnsupportedTypeError("cross",e["typeof"](t),e["typeof"](n)); +e.exp=function f(r){if(1!=arguments.length)throw new e.error.ArgumentsError("exp",arguments.length,1);if(a(r))return Math.exp(r);if(u(r)){var t=Math.exp(r.re);return new i(t*Math.cos(r.im),t*Math.sin(r.im))}if(r instanceof n)return r.exp();if(c(r))return o.deepMap(r,f);if(s(r)||null===r)return Math.exp(r);throw new e.error.UnsupportedTypeError("exp",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(176),n=e.type.BigNumber,i=t(7),o=e.collection,a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,c=o.isCollection;e.fix=function f(r){if(1!=arguments.length)throw new e.error.ArgumentsError("fix",arguments.length,1);if(a(r))return r>0?Math.floor(r):Math.ceil(r);if(u(r))return new i(r.re>0?Math.floor(r.re):Math.ceil(r.re),r.im>0?Math.floor(r.im):Math.ceil(r.im));if(r instanceof n)return r.isNegative()?r.ceil():r.floor();if(c(r))return o.deepMap(r,f,!0);if(s(r)||null===r)return f(+r);throw new e.error.UnsupportedTypeError("fix",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(176),n=e.type.BigNumber,i=t(7),o=e.collection,a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,c=o.isCollection;e.floor=function f(r){if(1!=arguments.length)throw new e.error.ArgumentsError("floor",arguments.length,1);if(a(r))return Math.floor(r);if(u(r))return new i(Math.floor(r.re),Math.floor(r.im));if(r instanceof n)return r.floor();if(c(r))return o.deepMap(r,f,!0);if(s(r)||null===r)return f(+r);throw new e.error.UnsupportedTypeError("floor",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){function r(e,r){if(!e.isInt()||!r.isInt())throw new Error("Parameters in function gcd must be integer numbers");for(var t=new i(0);!r.isZero();){var n=e.mod(r);e=r,r=n}return e.lt(t)?e.neg():e}var n=t(176),i=e.type.BigNumber,o=e.collection,a=n.number.isNumber,s=n["boolean"].isBoolean,u=n.number.isInteger,c=o.isCollection;e.gcd=function f(t){var n,l=arguments[0],p=arguments[1];if(2==arguments.length){if(a(l)&&a(p)){if(!u(l)||!u(p))throw new Error("Parameters in function gcd must be integer numbers");for(;0!=p;)n=l%p,l=p,p=n;return 0>l?-l:l}if(c(l)||c(p))return o.deepMap2(l,p,f);if(l instanceof i)return a(p)?p=i.convert(p):(s(p)||null===p)&&(p=new i(p?1:0)),p instanceof i?r(l,p):f(l.toNumber(),p);if(p instanceof i)return a(l)?l=i.convert(l):(s(l)||null===l)&&(l=new i(l?1:0)),l instanceof i?r(l,p):f(l.toNumber(),p);if(s(l)||null===l)return f(+l,p);if(s(p)||null===p)return f(l,+p);throw new e.error.UnsupportedTypeError("gcd",e["typeof"](l),e["typeof"](p))}if(arguments.length>2){for(var m=1;m2){for(var h=1;h=0?Math.log(r):f(new i(r,0));if(u(r))return new i(Math.log(Math.sqrt(r.re*r.re+r.im*r.im)),Math.atan2(r.im,r.re));if(r instanceof n)return r.isNegative()?f(r.toNumber()):r.ln();if(c(r))return o.deepMap(r,f);if(s(r)||null===r)return f(+r);throw new e.error.UnsupportedTypeError("log",e["typeof"](r))}if(2==arguments.length)return e.divide(f(r),f(t));throw new e.error.ArgumentsError("log",arguments.length,1,2)}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(176),n=e.type.BigNumber,i=t(7),o=e.collection,a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,c=o.isCollection;e.log10=function f(r){if(1!=arguments.length)throw new e.error.ArgumentsError("log10",arguments.length,1);if(a(r))return r>=0?Math.log(r)/Math.LN10:f(new i(r,0));if(r instanceof n)return r.isNegative()?f(r.toNumber()):r.log();if(u(r))return new i(Math.log(Math.sqrt(r.re*r.re+r.im*r.im))/Math.LN10,Math.atan2(r.im,r.re)/Math.LN10);if(c(r))return o.deepMap(r,f);if(s(r)||null===r)return f(+r);throw new e.error.UnsupportedTypeError("log10",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){function r(e,r){if(r>0)return e-r*Math.floor(e/r);if(0==r)return e;throw new Error("Cannot calculate mod for a negative divisor")}var n=t(176),i=e.type.BigNumber,o=e.collection,a=n.number.isNumber,s=n["boolean"].isBoolean,u=o.isCollection;e.mod=function c(t,n){if(2!=arguments.length)throw new e.error.ArgumentsError("mod",arguments.length,2);if(a(t)&&a(n))return r(t,n);if(t instanceof i)return a(n)?n=i.convert(n):(s(n)||null===n)&&(n=new i(n?1:0)),n instanceof i?n.isZero()?t:t.mod(n):c(t.toNumber(),n);if(n instanceof i)return a(t)?t=i.convert(t):(s(t)||null===t)&&(t=new i(t?1:0)),t instanceof i?n.isZero()?t:t.mod(n):c(t,n.toNumber());if(u(t)||u(n))return o.deepMap2(t,n,c);if(s(t)||null===t)return c(+t,n);if(s(n)||null===n)return c(t,+n);throw new e.error.UnsupportedTypeError("mod",e["typeof"](t),e["typeof"](n))}}},function(e,r,t){"use strict";e.exports=function(e){function r(e,r){return 0==e.im?0==r.im?new o(e.re*r.re,0):0==r.re?new o(0,e.re*r.im):new o(e.re*r.re,e.re*r.im):0==e.re?0==r.im?new o(0,e.im*r.re):0==r.re?new o(-e.im*r.im,0):new o(-e.im*r.im,e.im*r.re):0==r.im?new o(e.re*r.re,e.im*r.re):0==r.re?new o(-e.im*r.im,e.re*r.im):new o(e.re*r.re-e.im*r.im,e.re*r.im+e.im*r.re)}var n=t(176),i=e.type.BigNumber,o=t(7),a=e.type.Matrix,s=t(11),u=e.collection,c=n.number.isNumber,f=n["boolean"].isBoolean,l=o.isComplex,p=Array.isArray,m=s.isUnit;e.multiply=function h(t,n){var s;if(2!=arguments.length)throw new e.error.ArgumentsError("multiply",arguments.length,2);if(c(t)){if(c(n))return t*n;if(l(n))return r(new o(t,0),n);if(m(n))return s=n.clone(),s.value=null===s.value?s._normalize(t):s.value*t,s}if(l(t)){if(c(n))return r(t,new o(n,0));if(l(n))return r(t,n)}if(t instanceof i)return c(n)?n=i.convert(n):(f(n)||null===n)&&(n=new i(n?1:0)),n instanceof i?t.times(n):h(t.toNumber(),n);if(n instanceof i)return c(t)?t=i.convert(t):(f(t)||null===t)&&(t=new i(t?1:0)),t instanceof i?t.times(n):h(t,n.toNumber());if(m(t)&&c(n))return s=t.clone(),s.value=null===s.value?s._normalize(n):s.value*n,s;if(p(t)){var g=e.matrix(t),d=g.multiply(n);return d instanceof a?n instanceof a?d:d.valueOf():d}if(t instanceof a)return t.multiply(n);if(p(n))return u.deepMap2(t,n,h);if(n instanceof a){var v=function(e){return h(t,e)};return u.deepMap(n,v,!0)}if(f(t)||null===t)return h(+t,n);if(f(n)||null===n)return h(t,+n);throw new e.error.UnsupportedTypeError("multiply",e["typeof"](t),e["typeof"](n))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(176),n=e.type.BigNumber,i=t(7),o=e.type.Matrix,a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,c=Array.isArray;e.norm=function f(r,t){if(arguments.length<1||arguments.length>2)throw new e.error.ArgumentsError("abs",arguments.length,1,2);if(a(r))return Math.abs(r);if(u(r)){var i=Math.abs(r.re),l=Math.abs(r.im);if(i>=l){var p=l/i;return i*Math.sqrt(1+p*p)}var m=i/l;return l*Math.sqrt(1+m*m)}if(r instanceof n)return r.abs();if(s(r)||null===r)return Math.abs(r);if(c(r))return f(e.matrix(r),t);if(r instanceof o){var h=r.size();if(null==t&&(t=2),1==h.length){if(t===Number.POSITIVE_INFINITY||"inf"===t){var g;return r.forEach(function(r){var t=e.abs(r);(!g||e.larger(t,g))&&(g=t)},!0),g}if(t===Number.NEGATIVE_INFINITY||"-inf"===t){var g;return r.forEach(function(r){var t=e.abs(r);(!g||e.smaller(t,g))&&(g=t)},!0),g}if("fro"===t)return f(r);if(a(t)&&!isNaN(t)){if(!e.equal(t,0)){var g=0;return r.forEach(function(r){g=e.add(e.pow(e.abs(r),t),g)},!0),e.pow(g,1/t)}return Number.POSITIVE_INFINITY}throw new Error("Unsupported parameter value")}if(2==h.length){if(1==t){var d=[];return r.forEach(function(r,t){var n=t[1];d[n]=e.add(d[n]||0,e.abs(r))},!0),e.max(d)}if(t==Number.POSITIVE_INFINITY||"inf"===t){var v=[];return r.forEach(function(r,t){var n=t[0];v[n]=e.add(v[n]||0,e.abs(r))},!0),e.max(v)}if("fro"===t)return e.sqrt(r.transpose().multiply(r).trace());if(2==t)throw new Error("Unsupported parameter value, missing implementation of matrix singular value decomposition");throw new Error("Unsupported parameter value")}}throw new e.error.UnsupportedTypeError("norm",r)}}},function(e,r,t){"use strict";e.exports=function(e){function r(e,r){var t=void 0!=r?r:2,n=0>t;if(n&&(t=-t),0==t)throw new Error("Root must be non-zero");if(0>e&&Math.abs(t)%2!=1)throw new Error("Root must be odd when a is negative.");if(0==e)return 0;if(!Number.isFinite(e))return n?0:e;var i=1e-16,o=1,a=0,s=100;do{var u=(e/Math.pow(o,t-1)-o)/t;o+=u,a++}while(Math.abs(u)>i&&s>a);return n?1/o:o}function i(e,r){var t=void 0!=r?r:new a(2),n=new a(0),i=new a(1),o=t.isNegative();if(o&&(t=t.negated()),t.isZero())throw new Error("Root must be non-zero");if(e.isNegative()&&!t.abs().mod(2).equals(1))throw new Error("Root must be odd when a is negative.");if(e.isZero())return n;if(!e.isFinite())return o?n:e;var s=i,u=0,c=100;do{var f=s,l=e.div(s.pow(t.minus(1))).minus(s).div(t);s=s.plus(l),u++}while(!s.equals(f)&&c>u);return o?i.div(s):s}var o=t(176),a=e.type.BigNumber,s=e.collection,u=o.number.isNumber,c=o["boolean"].isBoolean,f=s.isCollection;e.nthRoot=function l(t,o){if(1!=arguments.length&&2!=arguments.length)throw new e.error.ArgumentsError("nthRoot",arguments.length,1,2);switch(arguments.length){case 1:if(u(t))return r(t);if(t instanceof a)return i(t);if(f(t))return s.deepMap(x,l);if(c(t)||null===t)return l(+t);break;case 2:if(u(t)){if(u(o))return r(t,o);if(o instanceof a)return t=a.convert(t),t instanceof a?i(t,o):r(t,o.toNumber())}else{if(t instanceof a)return u(o)&&(o=a.convert(o)),o instanceof a?i(t,o):r(t.toNumber(),o);if(f(t)&&!f(o))return s.deepMap2(t,o,l)}if(c(t)||null===t)return l(+t,o);if(c(o)||null===o)return l(t,+o);break;default:throw new e.error.ArgumentsError("nthRoot",arguments.length,1,2)}if(c(x)||null===x)return 2==arguments.length?l(+x,n):l(+x);throw new e.error.UnsupportedTypeError("nthRoot",e["typeof"](t),e["typeof"](o))}}},function(e,r,t){"use strict";e.exports=function(e){function r(r,t){var n=e.log(r),i=e.multiply(n,t);return e.exp(i)}var n=t(176),i=e.type.BigNumber,o=t(7),a=e.type.Matrix,s=n.array,u=n.number.isNumber,c=n["boolean"].isBoolean,f=Array.isArray,l=n.number.isInteger,p=o.isComplex;e.pow=function m(t,n){if(2!=arguments.length)throw new e.error.ArgumentsError("pow",arguments.length,2);if(u(t)){if(u(n))return l(n)||t>=0?Math.pow(t,n):r(new o(t,0),new o(n,0));if(p(n))return r(new o(t,0),n)}if(p(t)){if(u(n))return r(t,new o(n,0));if(p(n))return r(t,n)}if(t instanceof i)return u(n)?n=i.convert(n):(c(n)||null===n)&&(n=new i(n?1:0)),n instanceof i?n.isInteger()||!t.isNegative()?t.pow(n):m(t.toNumber(),n.toNumber()):m(t.toNumber(),n);if(n instanceof i)return u(t)?t=i.convert(t):(c(t)||null===t)&&(t=new i(t?1:0)),t instanceof i?n.isInteger()&&!t.isNegative()?t.pow(n):m(t.toNumber(),n.toNumber()):m(t,n.toNumber());if(f(t)){if(!u(n)||!l(n)||0>n)throw new TypeError("For A^b, b must be a positive integer (value is "+n+")");var h=s.size(t);if(2!=h.length)throw new Error("For A^b, A must be 2 dimensional (A has "+h.length+" dimensions)");if(h[0]!=h[1])throw new Error("For A^b, A must be square (size is "+h[0]+"x"+h[1]+")");for(var g=e.eye(h[0]).valueOf(),d=t;n>=1;)1==(1&n)&&(g=e.multiply(d,g)),n>>=1,d=e.multiply(d,d);return g}if(t instanceof a)return e.matrix(m(t.valueOf(),n));if(c(t)||null===t)return m(+t,n);if(c(n)||null===n)return m(t,+n);throw new e.error.UnsupportedTypeError("pow",e["typeof"](t),e["typeof"](n))}}},function(e,r,t){"use strict";e.exports=function(e){function r(e,r){return parseFloat(p(e,r))}var n=t(176),i=e.type.BigNumber,o=t(7),a=e.collection,s=n.number.isNumber,u=n.number.isInteger,c=n["boolean"].isBoolean,f=o.isComplex,l=a.isCollection,p=n.number.toFixed;e.round=function m(t,n){if(1!=arguments.length&&2!=arguments.length)throw new e.error.ArgumentsError("round",arguments.length,1,2);if(void 0==n){if(s(t))return Math.round(t);if(f(t))return new o(Math.round(t.re),Math.round(t.im));if(t instanceof i)return t.toDecimalPlaces(0);if(l(t))return a.deepMap(t,m);if(c(t)||null===t)return Math.round(t);throw new e.error.UnsupportedTypeError("round",e["typeof"](t))}if(!s(n)||!u(n)){if(!(n instanceof i)){if(c(n)||null===t)return m(t,+n);throw new TypeError("Number of decimals in function round must be an integer")}n=parseFloat(n.valueOf())}if(0>n||n>15)throw new Error("Number of decimals in function round must be in te range of 0-15");if(s(t))return r(t,n);if(f(t))return new o(r(t.re,n),r(t.im,n));if(t instanceof i)return t.toDecimalPlaces(n);if(l(t)||l(n))return a.deepMap2(t,n,m);if(c(t)||null===t)return m(+t,n);throw new e.error.UnsupportedTypeError("round",e["typeof"](t),e["typeof"](n))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(176),n=e.type.BigNumber,i=t(7),o=e.collection,a=r.number,s=r.number.isNumber,u=r["boolean"].isBoolean,c=i.isComplex,f=o.isCollection;e.sign=function l(r){if(1!=arguments.length)throw new e.error.ArgumentsError("sign",arguments.length,1);if(s(r))return a.sign(r);if(c(r)){var t=Math.sqrt(r.re*r.re+r.im*r.im);return new i(r.re/t,r.im/t)}if(r instanceof n)return new n(r.cmp(0));if(f(r))return o.deepMap(r,l,!0);if(u(r)||null===r)return a.sign(r);throw new e.error.UnsupportedTypeError("sign",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(176),n=e.type.BigNumber,i=t(7),o=e.collection,a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,c=o.isCollection;e.sqrt=function f(r){if(1!=arguments.length)throw new e.error.ArgumentsError("sqrt",arguments.length,1);if(a(r))return r>=0?Math.sqrt(r):f(new i(r,0));if(u(r)){var t,l,p=Math.sqrt(r.re*r.re+r.im*r.im);return t=r.re>=0?.5*Math.sqrt(2*(p+r.re)):Math.abs(r.im)/Math.sqrt(2*(p-r.re)),l=r.re<=0?.5*Math.sqrt(2*(p-r.re)):Math.abs(r.im)/Math.sqrt(2*(p+r.re)),r.im>=0?new i(t,l):new i(t,-l)}if(r instanceof n)return r.isNegative()?f(r.toNumber()):r.sqrt();if(c(r))return o.deepMap(r,f,!0);if(s(r)||null===r)return f(+r);throw new e.error.UnsupportedTypeError("sqrt",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(176),n=e.type.BigNumber,i=t(7),o=e.collection,a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,c=o.isCollection;e.square=function f(r){if(1!=arguments.length)throw new e.error.ArgumentsError("square",arguments.length,1);if(a(r))return r*r;if(u(r))return e.multiply(r,r);if(r instanceof n)return r.times(r);if(c(r))return o.deepMap(r,f,!0);if(s(r)||null===r)return r*r;throw new e.error.UnsupportedTypeError("square",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(176),n=e.type.BigNumber,i=t(7),o=(e.type.Matrix,t(11)),a=e.collection,s=r["boolean"].isBoolean,u=r.number.isNumber,c=i.isComplex,f=o.isUnit,l=a.isCollection;e.subtract=function p(r,t){if(2!=arguments.length)throw new e.error.ArgumentsError("subtract",arguments.length,2);if(u(r)){if(u(t))return r-t;if(c(t))return new i(r-t.re,-t.im)}else if(c(r)){if(u(t))return new i(r.re-t,r.im);if(c(t))return new i(r.re-t.re,r.im-t.im)}if(r instanceof n)return u(t)?t=n.convert(t):(s(t)||null===t)&&(t=new n(t?1:0)),t instanceof n?r.minus(t):p(r.toNumber(),t);if(t instanceof n)return u(r)?r=n.convert(r):(s(r)||null===r)&&(r=new n(r?1:0)),r instanceof n?r.minus(t):p(r,t.toNumber());if(f(r)&&f(t)){if(null==r.value)throw new Error("Parameter x contains a unit with undefined value");if(null==t.value)throw new Error("Parameter y contains a unit with undefined value");if(!r.equalBase(t))throw new Error("Units do not match");var o=r.clone();return o.value-=t.value,o.fixPrefix=!1,o}if(l(r)||l(t))return a.deepMap2(r,t,p);if(s(r)||null===r)return p(+r,t);if(s(t)||null===t)return p(r,+t);throw new e.error.UnsupportedTypeError("subtract",e["typeof"](r),e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(176),i=e.type.BigNumber,o=t(7),a=t(11),s=e.collection,u=n.number.isNumber,c=n["boolean"].isBoolean,f=n.string.isString,l=o.isComplex,p=a.isUnit,m=s.isCollection;e.unaryMinus=function h(t){if(1!=arguments.length)throw new e.error.ArgumentsError("unaryMinus",arguments.length,1);if(u(t))return-t;if(l(t))return new o(-t.re,-t.im);if(t instanceof i)return t.neg();if(p(t)){var n=t.clone();return n.value=-t.value,n}if(m(t))return s.deepMap(t,h,!0);if(c(t)||f(t)||null===t)return"bignumber"==r.number?new i(-t):-t;throw new e.error.UnsupportedTypeError("unaryMinus",e["typeof"](t))},e.unary=function(){throw new Error("Function unary is deprecated. Use unaryMinus instead.")}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(176),i=e.type.BigNumber,o=t(7),a=t(11),s=e.collection,u=n.number.isNumber,c=n["boolean"].isBoolean,f=n.string.isString,l=o.isComplex,p=a.isUnit,m=s.isCollection;e.unaryPlus=function h(t){if(1!=arguments.length)throw new e.error.ArgumentsError("unaryPlus",arguments.length,1);if(u(t))return t;if(l(t))return t.clone();if(t instanceof i)return t;if(p(t))return t.clone();if(m(t))return s.deepMap(t,h,!0);if(c(t)||f(t)||null===t)return"bignumber"==r.number?new i(+t):+t;throw new e.error.UnsupportedTypeError("unaryPlus",e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e,r){function n(t,n){for(var i,o,a,s=0,u=1,c=1,f=0;n;)o=Math.floor(t/n),a=t%n,i=s,s=u-o*s,u=i,i=c,c=f-o*c,f=i,t=n,n=a;var l;return l=0>t?[-t,-u,-f]:[t,t?u:0,f],"array"===r.matrix?l:e.matrix(l)}function i(t,n){for(var i,o,s,u=new a(0),c=new a(0),f=new a(1),l=new a(1),p=new a(0);!n.isZero();)o=t.div(n).floor(),s=t.mod(n),i=c,c=f.minus(o.times(c)),f=i,i=l,l=p.minus(o.times(l)),p=i,t=n,n=s;var m;return m=t.lt(u)?[t.neg(),f.neg(),p.neg()]:[t,t.isZero()?0:f,p],"array"===r.matrix?m:e.matrix(m)}var o=t(176),a=(e.type.Matrix,e.type.BigNumber),s=o.number.isNumber,u=o["boolean"].isBoolean,c=o.number.isInteger;e.xgcd=function f(r,t){if(2==arguments.length){if(s(r)&&s(t)){if(!c(r)||!c(t))throw new Error("Parameters in function xgcd must be integer numbers");return n(r,t)}if(r instanceof a)return s(t)?t=a.convert(t):(u(t)||null===t)&&(t=new a(t?1:0)),t instanceof a?i(r,t):f(r.toNumber(),t);if(t instanceof a)return s(r)?r=a.convert(r):(u(r)||null===r)&&(r=new a(r?1:0)),r instanceof a?i(r,t):f(r.toNumber(),t);if(u(r)||null===r)return f(+r,t);if(u(t)||null===t)return f(r,+t);throw new e.error.UnsupportedTypeError("xgcd",e["typeof"](r),e["typeof"](t))}throw new SyntaxError("Function xgcd expects two arguments")}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(176),i=e.type.BigNumber,o=(e.type.Matrix,t(11),e.collection),a=n["boolean"].isBoolean,s=n.number.isInteger,u=n.number.isNumber,c=o.isCollection,f=n.bignumber.and;e.bitAnd=function l(r,t){if(2!=arguments.length)throw new e.error.ArgumentsError("bitAnd",arguments.length,2);if(u(r)&&u(t)){if(!s(r)||!s(t))throw new Error("Parameters in function bitAnd must be integer numbers");return r&t}if(c(r)||c(t))return o.deepMap2(r,t,l);if(a(r)||null===r)return l(+r,t);if(a(t)||null===t)return l(r,+t);if(r instanceof i)return u(t)&&(t=i.convert(t)),t instanceof i?f(r,t):l(r.toNumber(),t);if(t instanceof i)return u(r)&&(r=i.convert(r)),r instanceof i?f(r,t):l(r,t.toNumber());throw new e.error.UnsupportedTypeError("bitAnd",e["typeof"](r),e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(176),i=e.type.BigNumber,o=(e.type.Matrix,t(11),e.collection),a=n["boolean"].isBoolean,s=n.number.isInteger,u=n.number.isNumber,c=o.isCollection,f=n.bignumber.not;e.bitNot=function l(r){if(1!=arguments.length)throw new e.error.ArgumentsError("bitNot",arguments.length,1);if(u(r)){if(!s(r))throw new Error("Parameter in function bitNot must be integer numbers");return~r}if(r instanceof i)return f(r);if(c(r))return o.deepMap(r,l);if(a(r)||null===r)return l(+r);throw new e.error.UnsupportedTypeError("bitNot",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(176),i=e.type.BigNumber,o=(e.type.Matrix,t(11),e.collection),a=n["boolean"].isBoolean,s=n.number.isInteger,u=n.number.isNumber,c=o.isCollection,f=n.bignumber.or;e.bitOr=function l(r,t){if(2!=arguments.length)throw new e.error.ArgumentsError("bitOr",arguments.length,2);if(u(r)&&u(t)){if(!s(r)||!s(t))throw new Error("Parameters in function bitOr must be integer numbers");return r|t}if(c(r)||c(t))return o.deepMap2(r,t,l);if(a(r)||null===r)return l(+r,t);if(a(t)||null===t)return l(r,+t);if(r instanceof i)return u(t)&&(t=i.convert(t)),t instanceof i?f(r,t):l(r.toNumber(),t);if(t instanceof i)return u(r)&&(r=i.convert(r)),r instanceof i?f(r,t):l(r,t.toNumber());throw new e.error.UnsupportedTypeError("bitOr",e["typeof"](r),e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(176),i=e.type.BigNumber,o=(e.type.Matrix,t(11),e.collection),a=n["boolean"].isBoolean,s=n.number.isInteger,u=n.number.isNumber,c=o.isCollection,f=n.bignumber.xor;e.bitXor=function l(r,t){if(2!=arguments.length)throw new e.error.ArgumentsError("bitXor",arguments.length,2);if(u(r)&&u(t)){if(!s(r)||!s(t))throw new Error("Parameters in function bitXor must be integer numbers");return r^t}if(c(r)||c(t))return o.deepMap2(r,t,l);if(a(r)||null===r)return l(+r,t);if(a(t)||null===t)return l(r,+t);if(r instanceof i)return u(t)&&(t=i.convert(t)),t instanceof i?f(r,t):l(r.toNumber(),t);if(t instanceof i)return u(r)&&(r=i.convert(r)),r instanceof i?f(r,t):l(r,t.toNumber());throw new e.error.UnsupportedTypeError("bitXor",e["typeof"](r),e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(176),i=e.type.BigNumber,o=(e.type.Matrix,t(11),e.collection),a=n["boolean"].isBoolean,s=n.number.isInteger,u=n.number.isNumber,c=o.isCollection,f=n.bignumber.leftShift;e.leftShift=function l(r,t){if(2!=arguments.length)throw new e.error.ArgumentsError("leftShift",arguments.length,2);if(u(r)){if(u(t)){if(!s(r)||!s(t))throw new Error("Parameters in function leftShift must be integer numbers");return r<t?new i(0/0):0==t||r.isZero()?r:t!=1/0||r.isFinite()?55>t?r.times(Math.pow(2,t)+""):(t=i.convert(t),f(r,t)):new i(0/0)}}if(c(r)&&u(t))return o.deepMap2(r,t,l);if(a(r)||null===r)return l(+r,t);if(a(t)||null===t)return l(r,+t);if(r instanceof i)return t instanceof i?f(r,t):l(r.toNumber(),t);if(t instanceof i)return l(r,t.toNumber());throw new e.error.UnsupportedTypeError("leftShift",e["typeof"](r),e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(176),i=e.type.BigNumber,o=(e.type.Matrix,t(11),e.collection),a=n["boolean"].isBoolean,s=n.number.isInteger,u=n.number.isNumber,c=o.isCollection,f=n.bignumber.rightShift;e.rightArithShift=function l(r,t){if(2!=arguments.length)throw new e.error.ArgumentsError("rightArithShift",arguments.length,2);if(u(r)){if(u(t)){if(!s(r)||!s(t))throw new Error("Parameters in function rightArithShift must be integer numbers");return r>>t}if(t instanceof i)return f(i.convert(r),t)}if(u(t)){if(isFinite(t)&&!s(t))throw new Error("Parameters in function rightArithShift must be integer numbers");if(r instanceof i){if(r.isFinite()&&!r.isInteger())throw new Error("Parameters in function rightArithShift must be integer numbers");return r.isNaN()||isNaN(t)||0>t?new i(0/0):t==1/0?new i(r.isNegative()?-1:r.isFinite()?0:0/0):55>t?r.div(Math.pow(2,t)+"").floor():(t=i.convert(t),f(r,t))}}if(c(r)&&u(t))return o.deepMap2(r,t,l);if(a(r)||null===r)return l(+r,t);if(a(t)||null===t)return l(r,+t);if(r instanceof i)return t instanceof i?f(r,t):l(r.toNumber(),t);if(t instanceof i)return l(r,t.toNumber());throw new e.error.UnsupportedTypeError("rightArithShift",e["typeof"](r),e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(176),i=(e.type.Matrix,t(11),e.collection),o=n["boolean"].isBoolean,a=n.number.isInteger,s=n.number.isNumber,u=i.isCollection;e.rightLogShift=function c(r,t){if(2!=arguments.length)throw new e.error.ArgumentsError("rightLogShift",arguments.length,2);if(s(r)&&s(t)){if(!a(r)||!a(t))throw new Error("Parameters in function rightLogShift must be integer numbers");return r>>>t}if(u(r)&&s(t))return i.deepMap2(r,t,c);if(o(r)||null===r)return c(+r,t);if(o(t)||null===t)return c(r,+t);throw new e.error.UnsupportedTypeError("rightLogShift",e["typeof"](r),e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(176),n=(e.type.BigNumber,e.collection,r.number.isNumber),i=r.number.isInteger;e.stirlingS2=function(r,t){var o=0,a=arguments.length;if(2!=a)throw new e.error.ArgumentsError("stirlingS2",arguments.length,2);if(n(r)&&n(t)){if(!i(r)||0>r||!i(t)||0>t)throw new TypeError("Positive integer value expected in function stirlingS2");if(t>r)throw new TypeError("k must be less than or equal to n");for(var s=e.factorial(t),u=1/s,c=0;t>=c;c++){var f=Math.pow(-1,t-c),l=e.combinations(t,c),p=Math.pow(c,r);o+=f*l*p}return o*=u}throw new TypeError("Integer values are expected in stirlingS2")}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(176),n=e.type.BigNumber,i=t(7),o=e.collection,a=r.number.isNumber,s=r["boolean"].isBoolean,u=o.isCollection,c=i.isComplex;e.arg=function f(r){if(1!=arguments.length)throw new e.error.ArgumentsError("arg",arguments.length,1);if(a(r))return Math.atan2(0,r);if(c(r))return Math.atan2(r.im,r.re);if(u(r))return o.deepMap(r,f);if(s(r)||null===r)return f(+r);if(r instanceof n)return f(r.toNumber());throw new e.error.UnsupportedTypeError("arg",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(176),n=e.type.BigNumber,i=t(7),o=e.collection,a=r.object,s=r.number.isNumber,u=r["boolean"].isBoolean,c=o.isCollection,f=i.isComplex;e.conj=function l(r){if(1!=arguments.length)throw new e.error.ArgumentsError("conj",arguments.length,1);return s(r)?r:r instanceof n?new n(r):f(r)?new i(r.re,-r.im):c(r)?o.deepMap(r,l):u(r)||null===r?+r:a.clone(r)}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(176),n=e.type.BigNumber,i=t(7),o=e.collection,a=r.object,s=r.number.isNumber,u=r["boolean"].isBoolean,c=o.isCollection,f=i.isComplex;e.re=function l(r){if(1!=arguments.length)throw new e.error.ArgumentsError("re",arguments.length,1);return s(r)?r:r instanceof n?new n(r):f(r)?r.re:c(r)?o.deepMap(r,l):u(r)||null===r?+r:a.clone(r)}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(176),n=e.type.BigNumber,i=t(7),o=e.collection,a=r.number.isNumber,s=r["boolean"].isBoolean,u=o.isCollection,c=i.isComplex;e.im=function f(r){if(1!=arguments.length)throw new e.error.ArgumentsError("im",arguments.length,1);return a(r)?0:r instanceof n?new n(0):c(r)?r.im:u(r)?o.deepMap(r,f):(s(r)||null===r,0)}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(176),n=e.type.BigNumber,i=t(7),o=t(11),a=e.collection,s=r.number.isNumber,u=r["boolean"].isBoolean,c=i.isComplex,f=o.isUnit,l=a.isCollection;e.and=function p(r,t){if(2!=arguments.length)throw new e.error.ArgumentsError("and",arguments.length,2);if((s(r)||u(r)||null===r)&&(s(t)||u(t)||null===t))return!(!r||!t);if(c(r))return 0==r.re&&0==r.im?!1:p(!0,t);if(c(t))return 0==t.re&&0==t.im?!1:p(r,!0);if(r instanceof n)return r.isZero()||r.isNaN()?!1:p(!0,t);if(t instanceof n)return t.isZero()||t.isNaN()?!1:p(r,!0);if(f(r))return null===r.value||0==r.value?!1:p(!0,t);if(f(t))return null===t.value||0==t.value?!1:p(r,!0);if(l(r)||l(t))return a.deepMap2(r,t,p);throw new e.error.UnsupportedTypeError("and",e["typeof"](r),e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(176),n=e.type.BigNumber,i=t(7),o=t(11),a=e.collection,s=r.number.isNumber,u=r["boolean"].isBoolean,c=i.isComplex,f=o.isUnit,l=a.isCollection;e.not=function p(r){if(1!=arguments.length)throw new e.error.ArgumentsError("not",arguments.length,1);if(s(r)||u(r)||null===r)return!r;if(c(r))return 0==r.re&&0==r.im;if(r instanceof n)return r.isZero()||r.isNaN();if(f(r))return null===r.value||0==r.value;if(l(r))return a.deepMap(r,p);throw new e.error.UnsupportedTypeError("not",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(176),n=e.type.BigNumber,i=t(7),o=t(11),a=e.collection,s=r.number.isNumber,u=r["boolean"].isBoolean,c=i.isComplex,f=o.isUnit,l=a.isCollection;e.or=function p(r,t){if(2!=arguments.length)throw new e.error.ArgumentsError("or",arguments.length,2);if((s(r)||u(r)||null===r)&&(s(t)||u(t)||null===t))return!(!r&&!t);if(c(r))return 0==r.re&&0==r.im?p(!1,t):!0;if(c(t))return 0==t.re&&0==t.im?p(r,!1):!0;if(r instanceof n)return r.isZero()||r.isNaN()?p(!1,t):!0;if(t instanceof n)return t.isZero()||t.isNaN()?p(r,!1):!0;if(f(r))return null===r.value||0==r.value?p(!1,t):!0;if(f(t))return null===t.value||0==t.value?p(r,!1):!0;if(l(r)||l(t))return a.deepMap2(r,t,p);throw new e.error.UnsupportedTypeError("or",e["typeof"](r),e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(176),n=e.type.BigNumber,i=t(7),o=t(11),a=e.collection,s=r.number.isNumber,u=r["boolean"].isBoolean,c=i.isComplex,f=o.isUnit,l=a.isCollection;e.xor=function p(r,t){if(2!=arguments.length)throw new e.error.ArgumentsError("xor",arguments.length,2);if((s(r)||u(r)||null===r)&&(s(t)||u(t)||null===t))return!!(!!r^!!t);if(c(r))return p(!(0==r.re&&0==r.im),t);if(c(t))return p(r,!(0==t.re&&0==t.im));if(r instanceof n)return p(!(r.isZero()||r.isNaN()),t);if(t instanceof n)return p(r,!(t.isZero()||t.isNaN()));if(f(r))return p(!(null===r.value||0==r.value),t);if(f(t))return p(r,!(null===t.value||0==t.value));if(l(r)||l(t))return a.deepMap2(r,t,p);throw new e.error.UnsupportedTypeError("xor",e["typeof"](r),e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e){function r(t,n,i,o){if(i>o){if(t.length!=n.length)throw new e.error.DimensionError(t.length,n.length);for(var a=[],s=0;sn;n++){var d=arguments[n];if(d instanceof o&&(h=!0),n==p-1&&(c(d)||d instanceof i)){if(a=m,m=d.valueOf(),!f(m))throw new TypeError("Integer number expected for dimension");if(0>m)throw new e.error.IndexError(m);if(n>0&&m>a)throw new e.error.IndexError(m,a+1)}else{if(!l(d))throw new e.error.UnsupportedTypeError("concat",e["typeof"](d));var v=s.clone(d).valueOf(),y=u.size(d.valueOf());if(g[n]=v,a=m,m=y.length-1,n>0&&m!=a)throw new e.error.DimensionError(a+1,m+1)}}if(0==g.length)throw new SyntaxError("At least one matrix expected");for(var x=g.shift();g.length;)x=r(x,g.shift(),m,0);return h?e.matrix(x):x}}},function(e,r,t){"use strict";e.exports=function(e){function r(r,t){var i=n.size(r),o=n.size(t);if(1!=i.length||1!=o.length||3!=i[0]||3!=o[0])throw new RangeError("Vectors with length 3 expected (Size A = ["+i.join(", ")+"], B = ["+o.join(", ")+"])"); -}}},function(e,r,t){"use strict";e.exports=function(e){function r(r,t,n){if(1==t)return o.clone(r[0][0]);if(2==t)return e.subtract(e.multiply(r[0][0],r[1][1]),e.multiply(r[1][0],r[0][1]));for(var i=function(r){var t,n,i=new Array(r.length),o=0;for(t=1;tn;n++)i[t][n]=0;for(n=t+1;ns;s++)a=e.multiply(i(a),r);return t%2==0?e.unaryMinus(a[0][0]):a[0][0]}var n=t(175),i=e.type.Matrix,o=n.object,a=n.string;e.det=function(t){if(1!=arguments.length)throw new e.error.ArgumentsError("det",arguments.length,1);var n;switch(t instanceof i?n=t.size():t instanceof Array?(t=e.matrix(t),n=t.size()):n=[],n.length){case 0:return o.clone(t);case 1:if(1==n[0])return o.clone(t.valueOf()[0]);throw new RangeError("Matrix must be square (size: "+a.format(n)+")");case 2:var s=n[0],u=n[1];if(s==u)return r(t.clone().valueOf(),s,u);throw new RangeError("Matrix must be square (size: "+a.format(n)+")");default:throw new RangeError("Matrix must be two dimensional (size: "+a.format(n)+")")}}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(175),n=e.type.BigNumber,i=e.type.Matrix,o=r.object,a=r.array,s=a.isArray,u=r.number.isNumber,c=r.string.isString,f=r.number.isInteger;e.diag=function(r,t,l){if(0===arguments.length||arguments.length>3)throw new e.error.ArgumentsError("diag",arguments.length,1,3);switch(arguments.length){case 1:t=0,l=void 0;break;case 2:c(arguments[1])&&(l=arguments[1],t=0)}if(!(r instanceof i||s(r)))throw new TypeError("First parameter in function diag must be a Matrix or Array");if(t instanceof n&&(t=t.toNumber()),!u(t)||!f(t))throw new TypeError("Second parameter in function diag must be an integer");if(l&&!c(l))throw new TypeError("Third parameter in function diag must be a String");var p,m,h,g,d,v,y=t>0?t:0,x=0>t?-t:0;if(r instanceof i?(g=r.valueOf(),l=l||r.storage(),p=r.size()):(g=r,p=a.size(r)),l){if(1===p.length){m=g[0]instanceof n?new n(0):0;var w=[g.length+x,g.length+y],b=i.storage(l);return b.diagonal(w,g,t,m)}if(2===p.length)return h=r.diagonal(t),e.matrix(h,l);throw new RangeError("Matrix for function diag must be 2 dimensional")}switch(p.length){case 1:m=g[0]instanceof n?new n(0):0;var E=[];for(a.resize(E,[g.length+x,g.length+y],m),v=g.length,d=0;v>d;d++)E[d+x][d+y]=o.clone(g[d]);return E;case 2:for(h=[],v=Math.min(p[0]-x,p[1]-y),d=0;v>d;d++)h[d]=o.clone(g[d+x][d+y]);return h;default:throw new RangeError("Matrix for function diag must be 2 dimensional")}}}},function(e,r,t){"use strict";e.exports=function(e){function r(r,t){var i=n.size(r),o=n.size(t),a=i[0];if(1!==i.length||1!==o.length)throw new RangeError("Vector expected");if(i[0]!=o[0])throw new RangeError("Vectors must have equal length ("+i[0]+" != "+o[0]+")");if(0==a)throw new RangeError("Cannot calculate the dot product of empty vectors");for(var s=0,u=0;a>u;u++)s=e.add(s,e.multiply(r[u],t[u]));return s}var n=t(169),i=e.type.Matrix;e.dot=function(t,n){if(t instanceof i){if(n instanceof i)return r(t.toArray(),n.toArray());if(Array.isArray(n))return r(t.toArray(),n)}else if(Array.isArray(t)){if(n instanceof i)return r(t,n.toArray());if(Array.isArray(n))return r(t,n)}throw new e.error.UnsupportedTypeError("dot",e["typeof"](t),e["typeof"](n))}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(175),i=e.type.BigNumber,o=e.type.Matrix,a=e.collection,s=n.array,u=n.number.isNumber,c=n.number.isInteger,f=n.string.isString,l=Array.isArray;e.eye=function(t,n){var p,m=a.argsToArray(arguments);if(m.length>0&&f(m[m.length-1])?(p=m[m.length-1],m=a.argsToArray(m.slice(0,m.length-1))):t instanceof o?p=t.storage():l(t)||"matrix"!==r.matrix||(p="default"),1==m.length)m[1]=m[0];else if(m.length>2)throw new e.error.ArgumentsError("eye",m.length,0,2);var h=!1;m=m.map(function(e){if(e instanceof i&&(h=!0,e=e.toNumber()),!u(e)||!c(e)||0>e)throw new Error("Parameters in function eye must be positive integers");return e});var g=h?new i(1):1,d=h?new i(0):0;if(p){if(0===m.length)return e.matrix(p);var v=o.storage(p);return v.diagonal(m,g,0,d)}var y=[];if(m.length>0){y=s.resize(y,m,d);for(var x=e.min(m),w=0;x>w;w++)y[w][w]=g}return y}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(175),i=e.type.Matrix,o=n.object,a=n.array,s=Array.isArray;e.flatten=function(r){if(1!==arguments.length)throw new e.error.ArgumentsError("flatten",arguments.length,1);if(r instanceof i){var t=o.clone(r.toArray()),n=a.flatten(t);return e.matrix(n)}if(s(r))return a.flatten(o.clone(r));throw new e.error.UnsupportedTypeError("flatten",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){function r(r,t,n){var i,o,a,s,u;if(1==t){if(s=r[0][0],0==s)throw Error("Cannot calculate inverse, determinant is zero");return[[e._divide(1,s)]]}if(2==t){var c=e.det(r);if(0==c)throw Error("Cannot calculate inverse, determinant is zero");return[[e._divide(r[1][1],c),e._divide(e.unaryMinus(r[0][1]),c)],[e._divide(e.unaryMinus(r[1][0]),c),e._divide(r[0][0],c)]]}var f=r.concat();for(i=0;t>i;i++)f[i]=f[i].concat();for(var l=e.eye(t).valueOf(),p=0;n>p;p++){for(i=p;t>i&&0==f[i][p];)i++;if(i==t||0==f[i][p])throw Error("Cannot calculate inverse, determinant is zero");i!=p&&(u=f[p],f[p]=f[i],f[i]=u,u=l[p],l[p]=l[i],l[i]=u);var m=f[p],h=l[p];for(i=0;t>i;i++){var g=f[i],d=l[i];if(i!=p){if(0!=g[p]){for(a=e._divide(e.unaryMinus(g[p]),m[p]),o=p;n>o;o++)g[o]=e.add(g[o],e.multiply(a,m[o]));for(o=0;n>o;o++)d[o]=e.add(d[o],e.multiply(a,h[o]))}}else{for(a=m[p],o=p;n>o;o++)g[o]=e._divide(g[o],a);for(o=0;n>o;o++)d[o]=e._divide(d[o],a)}}}return l}var n=t(175),i=e.type.Matrix;e.inv=function(t){if(1!=arguments.length)throw new e.error.ArgumentsError("inv",arguments.length,1);var o=e.size(t).valueOf();switch(o.length){case 0:return e._divide(1,t);case 1:if(1==o[0])return t instanceof i?e.matrix([e._divide(1,t.valueOf()[0])]):[e._divide(1,t[0])];throw new RangeError("Matrix must be square (size: "+n.string.format(o)+")");case 2:var a=o[0],s=o[1];if(a==s)return t instanceof i?e.matrix(r(t.valueOf(),a,s),t.storage()):r(t,a,s);throw new RangeError("Matrix must be square (size: "+n.string.format(o)+")");default:throw new RangeError("Matrix must be two dimensional (size: "+n.string.format(o)+")")}}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(175),i=e.type.BigNumber,o=e.type.Matrix,a=e.collection,s=n.array,u=n.number.isNumber,c=n.number.isInteger,f=n.string.isString,l=Array.isArray;e.ones=function(t,n){var p,m=a.argsToArray(arguments);m.length>0&&f(m[m.length-1])?(p=m[m.length-1],m=a.argsToArray(m.slice(0,m.length-1))):t instanceof o?p=t.storage():l(t)||"matrix"!==r.matrix||(p="default");var h=!1;m=m.map(function(e){if(e instanceof i&&(h=!0,e=e.toNumber()),!u(e)||!c(e)||0>e)throw new Error("Parameters in function eye must be positive integers");return e});var g=h?new i(1):1;if(p){var d=e.matrix(p);return m.length>0?d.resize(m,g):d}var v=[];return m.length>0?s.resize(v,m,g):v}}},function(e,r,t){"use strict";e.exports=function(e,r){function n(e,r,t){var n=[],i=e;if(t>0)for(;r>i;)n.push(i),i+=t;else if(0>t)for(;i>r;)n.push(i),i+=t;return n}function i(e,r,t){var n=[],i=e;if(t>0)for(;r>=i;)n.push(i),i+=t;else if(0>t)for(;i>=r;)n.push(i),i+=t;return n}function o(e,r,t){var n=[],i=e.clone(),o=new c(0);if(t.gt(o))for(;i.lt(r);)n.push(i),i=i.plus(t);else if(t.lt(o))for(;i.gt(r);)n.push(i),i=i.plus(t);return n}function a(e,r,t){var n=[],i=e.clone(),o=new c(0);if(t.gt(o))for(;i.lte(r);)n.push(i),i=i.plus(t);else if(t.lt(o))for(;i.gte(r);)n.push(i),i=i.plus(t);return n}function s(e){var t=e.split(":"),n=null;if("bignumber"===r.number)try{n=t.map(function(e){return new c(e)})}catch(i){return null}else{n=t.map(function(e){return Number(e)});var o=n.some(function(e){return isNaN(e)});if(o)return null}switch(n.length){case 2:return{start:n[0],end:n[1],step:1};case 3:return{start:n[0],end:n[2],step:n[1]};default:return null}}var u=t(175),c=e.type.BigNumber,f=(e.type.Matrix,e.collection,u["boolean"].isBoolean),l=u.string.isString,p=u.number.isNumber;e.range=function(t){var u,m,h,g=Array.prototype.slice.call(arguments),d=!1;switch(f(g[g.length-1])&&(d=g.pop()?!0:!1),g.length){case 1:if(!l(g[0]))throw new TypeError("Two or three numbers or a single string expected in function range");var v=s(g[0]);if(!v)throw new SyntaxError('String "'+g[0]+'" is no valid range');u=v.start,m=v.end,h=v.step;break;case 2:u=g[0],m=g[1],h=1;break;case 3:u=g[0],m=g[1],h=g[2];break;case 4:throw new TypeError("Parameter includeEnd must be a boolean");default:throw new e.error.ArgumentsError("range",arguments.length,2,4)}if(!(p(u)||u instanceof c))throw new TypeError("Parameter start must be a number");if(!(p(m)||m instanceof c))throw new TypeError("Parameter end must be a number");if(!(p(h)||h instanceof c))throw new TypeError("Parameter step must be a number");if(u instanceof c||m instanceof c||h instanceof c){var y=!0;u instanceof c||(u=c.convert(u)),m instanceof c||(m=c.convert(m)),h instanceof c||(h=c.convert(h)),u instanceof c&&m instanceof c&&h instanceof c||(y=!1,u instanceof c&&(u=u.toNumber()),m instanceof c&&(m=m.toNumber()),h instanceof c&&(h=h.toNumber()))}var x=y?d?a:o:d?i:n,w=x(u,m,h);return"array"===r.matrix?w:e.matrix(w)}}},function(e,r,t){"use strict";e.exports=function(e,r){function n(r,t,n){if(void 0!==n){if(!f(n)||1!==n.length)throw new TypeError("Single character expected as defaultValue")}else n=" ";if(1!==t.length)throw new e.error.DimensionError(t.length,1);var i=t[0];if(!l(i)||!p(i))throw new TypeError("Invalid size, must contain positive integers (size: "+c.format(t)+")");if(r.length>i)return r.substring(0,i);if(r.lengtha;a++)o+=n;return o}return r}var i=t(175),o=e.type.BigNumber,a=e.type.Matrix,s=i.array,u=i.object.clone,c=i.string,f=i.string.isString,l=i.number.isNumber,p=i.number.isInteger,m=s.isArray;e.resize=function(t,i,c){if(2!=arguments.length&&3!=arguments.length)throw new e.error.ArgumentsError("resize",arguments.length,2,3);if(i instanceof a&&(i=i.valueOf()),i.length&&i[0]instanceof o&&(i=i.map(function(e){return e instanceof o?e.toNumber():e})),t instanceof a)return t.resize(i,c,!0);if(f(t))return n(t,i,c);var l=m(t)?!1:"array"!==r.matrix;if(0==i.length){for(;m(t);)t=t[0];return u(t)}m(t)||(t=[t]),t=u(t);var p=s.resize(t,i,c);return l?e.matrix(p):p}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(175),i=e.type.BigNumber,o=t(7),a=t(11),s=e.type.Matrix,u=n.array,c=n.number.isNumber,f=n["boolean"].isBoolean,l=n.string.isString,p=o.isComplex,m=a.isUnit;e.size=function(t){if(1!=arguments.length)throw new e.error.ArgumentsError("size",arguments.length,1);var n="array"===r.matrix;if(c(t)||p(t)||m(t)||f(t)||null==t||t instanceof i)return n?[]:e.matrix([]);if(l(t))return n?[t.length]:e.matrix([t.length]);if(Array.isArray(t))return u.size(t);if(t instanceof s)return e.matrix(t.size());throw new e.error.UnsupportedTypeError("size",e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(175),n=e.type.Matrix,i=r.object,o=r.array,a=Array.isArray;e.squeeze=function(r){if(1!=arguments.length)throw new e.error.ArgumentsError("squeeze",arguments.length,1);if(a(r))return o.squeeze(i.clone(r));if(r instanceof n){var t=o.squeeze(r.toArray());return a(t)?e.matrix(t):t}return i.clone(r)}}},function(e,r,t){"use strict";e.exports=function(e,r){function n(r,t){var n,o;if(p(r))return n=e.matrix(r),o=n.subset(t),o&&o.valueOf();if(r instanceof u)return r.subset(t);if(l(r))return i(r,t);throw new e.error.UnsupportedTypeError("subset",e["typeof"](r))}function i(r,t){if(!(t instanceof c))throw new TypeError("Index expected");if(1!=t.size().length)throw new e.error.DimensionError(t.size().length,1);var n=r.length;f.validateIndex(t.min()[0],n),f.validateIndex(t.max()[0],n);var i=t.range(0),o="";return i.forEach(function(e){o+=r.charAt(e)}),o}function o(r,t,n,i){var o;if(p(r))return o=e.matrix(e.clone(r)),o.subset(t,n,i),o.valueOf();if(r instanceof u)return r.clone().subset(t,n,i);if(l(r))return a(r,t,n,i);throw new e.error.UnsupportedTypeError("subset",e["typeof"](r))}function a(r,t,n,i){if(!(t instanceof c))throw new TypeError("Index expected");if(1!=t.size().length)throw new e.error.DimensionError(t.size().length,1);if(void 0!==i){if(!l(i)||1!==i.length)throw new TypeError("Single character expected as defaultValue")}else i=" ";var o=t.range(0),a=o.size()[0];if(a!=n.length)throw new e.error.DimensionError(o.size()[0],n.length);var s=r.length;f.validateIndex(t.min()[0]),f.validateIndex(t.max()[0]);for(var u=[],p=0;s>p;p++)u[p]=r.charAt(p);if(o.forEach(function(e,r){u[e]=n.charAt(r)}),u.length>s)for(p=s-1,a=u.length;a>p;p++)u[p]||(u[p]=i);return u.join("")}var s=t(175),u=e.type.Matrix,c=t(9),f=s.array,l=s.string.isString,p=Array.isArray;e.subset=function(r,t,i,a){switch(arguments.length){case 2:return n(arguments[0],arguments[1]);case 3:case 4:return o(arguments[0],arguments[1],arguments[2],arguments[3]);default:throw new e.error.ArgumentsError("subset",arguments.length,2,4)}}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(175),n=e.type.Matrix,i=r.object,o=r.array,a=r.string;e.trace=function(r){if(1!=arguments.length)throw new e.error.ArgumentsError("trace",arguments.length,1);if(r instanceof n)return r.trace();var t;switch(t=r instanceof Array?o.size(r):[],t.length){case 0:return i.clone(r);case 1:if(1==t[0])return i.clone(r[0]);throw new RangeError("Array must be square (size: "+a.format(t)+")");case 2:var s=t[0],u=t[1];if(s==u){for(var c=0,f=0;fp;p++){a=f[p]=[];for(var m=0;u>m;m++)a[m]=l(c[m][p])}return f;default:throw new RangeError("Matrix must be two dimensional (size: "+o.format(t)+")")}}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(175),i=e.type.BigNumber,o=e.type.Matrix,a=e.collection,s=n.array,u=n.number.isNumber,c=n.number.isInteger,f=n.string.isString,l=Array.isArray;e.zeros=function(t){var n,p=a.argsToArray(arguments);p.length>0&&f(p[p.length-1])?(n=p[p.length-1],p=a.argsToArray(p.slice(0,p.length-1))):t instanceof o?n=t.storage():l(t)||"matrix"!==r.matrix||(n="default");var m=!1;p=p.map(function(e){if(e instanceof i&&(m=!0,e=e.toNumber()),!u(e)||!c(e)||0>e)throw new Error("Parameters in function eye must be positive integers");return e});var h=m?new i(0):0;if(n){var g=e.matrix(n);return p.length>0?g.resize(p,h):g}var d=[];return p.length>0?s.resize(d,p,h):d}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(175),i=e.type.BigNumber,o=e.collection,a=n.number.isNumber,s=n["boolean"].isBoolean,u=(n.number.isInteger,o.isCollection);e.factorial=function p(t){var m,h,g;if(1!=arguments.length)throw new e.error.ArgumentsError("factorial",arguments.length,1);if(a(t))return t!==Number.POSITIVE_INFINITY?e.gamma(t+1):Math.sqrt(2*Math.PI);if(t instanceof i){if(!c(t))return t.isNegative()||t.isFinite()?e.gamma(t.plus(1)):n.bignumber.tau(r.precision).sqrt();if(t=t.toNumber(),tx;++x)g[x]=h=h.times(m),m=m.plus(y);return g[t]=h.times(m),new i(g[t].toPrecision(r.precision))}if(s(t)||null===t)return 1;if(u(t))return o.deepMap(t,p);throw new e.error.UnsupportedTypeError("factorial",e["typeof"](t))};var c=function(e){return e.isInteger()&&(!e.isNegative()||e.isZero())},f=[],l=[1,1,2,6,24,120,720,5040,40320,362880,3628800,39916800,479001600,6227020800,87178291200,1307674368e3,20922789888e3,355687428096e3,6402373705728e3,0x1b02b9306890000,243290200817664e4]}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(175),i=e.type.BigNumber,o=t(7),a=e.collection,s=n["boolean"].isBoolean,u=o.isComplex,c=n.number.isNumber,f=n.number.isInteger,l=a.isCollection;e.gamma=function m(r){var t,n,h=4.7421875;if(1!=arguments.length)throw new e.error.ArgumentsError("gamma",arguments.length,1);if(c(r)){if(f(r)){if(0>=r)return isFinite(r)?1/0:0/0;if(r>171)return 1/0;for(var g=r-2,d=r-1;g>1;)d*=g,g--;return 0==d&&(d=1),d}if(.5>r)return Math.PI/(Math.sin(Math.PI*r)*m(1-r));if(r>=171.35)return 1/0;if(r>85){var v=r*r,y=v*r,x=y*r,w=x*r;return Math.sqrt(2*Math.PI/r)*Math.pow(r/Math.E,r)*(1+1/(12*r)+1/(288*v)-139/(51840*y)-571/(2488320*x)+163879/(209018880*w)+5246819/(75246796800*w*r))}--r,n=p[0];for(var b=1;b2)throw new e.error.ArgumentsError("permutations",arguments.length,2);if(i(r)){if(!o(r)||0>r)throw new TypeError("Positive integer value expected in function permutations");if(1==c)return e.factorial(r);if(2==c&&i(t)){if(!o(t)||0>t)throw new TypeError("Positive integer value expected in function permutations");if(t>r)throw new TypeError("second argument k must be less than or equal to first argument n");for(s=1,u=r-t+1;r>=u;u++)s*=u;return s}}if(r instanceof n){if(void 0===t&&a(r))return e.factorial(r);if(t=n.convert(t),!(t instanceof n&&a(r)&&a(t)))throw new TypeError("Positive integer value expected in function permutations");if(t.gt(r))throw new TypeError("second argument k must be less than or equal to first argument n");for(s=new n(1),u=r.minus(t).plus(1);u.lte(r);u=u.plus(1))s=s.times(u);return s}throw new e.error.UnsupportedTypeError("permutations",e["typeof"](r))};var a=function(e){return e.isInteger()&&e.gte(0)}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(175),n=e.type.BigNumber,i=(e.collection,r.number.isNumber),o=r.number.isInteger;e.combinations=function(r,t){var s,u,c,f,l=arguments.length;if(2!=l)throw new e.error.ArgumentsError("combinations",arguments.length,2);if(i(r)){if(!o(r)||0>r)throw new TypeError("Positive integer value enpected in function combinations");if(t>r)throw new TypeError("k must be less than or equal to n");for(s=Math.max(t,r-t),u=1,c=1;r-s>=c;c++)u=u*(s+c)/c;return u}if(r instanceof n){if(t=n.convert(t),!(t instanceof n&&a(r)&&a(t)))throw new TypeError("Positive integer value expected in function combinations");if(t.gt(r))throw new TypeError("k must be less than n in function combinations");for(s=r.minus(t),t.lt(s)&&(s=t),u=new n(1),c=new n(1),f=r.minus(s);c.lte(f);c=c.plus(1))u=u.times(s.plus(c)).dividedBy(c);return u}throw new e.error.UnsupportedTypeError("combinations",e["typeof"](r))};var a=function(e){return e.isInteger()&&e.gte(0)}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(175),i=e.type.BigNumber,o=t(7),a=t(11),s=e.collection,u=n.number.isNumber,c=n.number.nearlyEqual,f=n["boolean"].isBoolean,l=n.string.isString,p=o.isComplex,m=a.isUnit,h=s.isCollection;e.compare=function g(t,n){if(2!=arguments.length)throw new e.error.ArgumentsError("compare",arguments.length,2);if(u(t)&&u(n))return c(t,n,r.epsilon)?0:t>n?1:-1;if(t instanceof i)return u(n)?n=i.convert(n):(f(n)||null===n)&&(n=new i(n?1:0)),n instanceof i?new i(t.cmp(n)):g(t.toNumber(),n);if(n instanceof i)return u(t)?t=i.convert(t):(f(t)||null===t)&&(t=new i(t?1:0)),t instanceof i?new i(t.cmp(n)):g(t,n.toNumber());if(m(t)&&m(n)){if(!t.equalBase(n))throw new Error("Cannot compare units with different base");return t.value>n.value?1:t.valuen?1:n>t?-1:0;if(f(t)||null===t)return g(+t,n);if(f(n)||null===n)return g(t,+n);if(p(t)||p(n))throw new TypeError("No ordering relation is defined for complex numbers");throw new e.error.UnsupportedTypeError("compare",e["typeof"](t),e["typeof"](n))}}},function(e,r,t){"use strict";e.exports=function(e){function r(t,n){if(i(t)){if(i(n)){var o=t.length;if(o!==n.length)return!1;for(var a=0;o>a;a++)if(!r(t[a],n[a]))return!1;return!0}return!1}return i(n)?!1:e.equal(t,n)}var t=e.collection,n=t.isCollection,i=Array.isArray;e.deepEqual=function(t,i){if(2!=arguments.length)throw new e.error.ArgumentsError("deepEqual",arguments.length,2);return n(t)||n(i)?r(t.valueOf(),i.valueOf()):e.equal(t,i)}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(175),i=e.type.BigNumber,o=t(7),a=t(11),s=e.collection,u=n.number.isNumber,c=n.number.nearlyEqual,f=n["boolean"].isBoolean,l=n.string.isString,p=o.isComplex,m=a.isUnit,h=s.isCollection;e.equal=function g(t,n){if(2!=arguments.length)throw new e.error.ArgumentsError("equal",arguments.length,2);if(u(t)){if(u(n))return c(t,n,r.epsilon);if(p(n))return c(t,n.re,r.epsilon)&&c(n.im,0,r.epsilon)}if(p(t)){if(u(n))return c(t.re,n,r.epsilon)&&c(t.im,0,r.epsilon);if(p(n))return c(t.re,n.re,r.epsilon)&&c(t.im,n.im,r.epsilon)}if(t instanceof i)return u(n)?n=i.convert(n):f(n)&&(n=new i(n?1:0)),n instanceof i?t.eq(n):g(t.toNumber(),n);if(n instanceof i)return u(t)?t=i.convert(t):f(t)&&(t=new i(t?1:0)),t instanceof i?t.eq(n):g(t,n.toNumber());if(m(t)&&m(n)){if(!t.equalBase(n))throw new Error("Cannot compare units with different base");return t.value==n.value}if(h(t)||h(n))return s.deepMap2(t,n,g);if(l(t)||l(n))return t==n;if(f(t))return g(+t,n);if(f(n))return g(t,+n);if(null===t)return null===n;if(null===n)return null===t;if(void 0===t)return void 0===n;if(void 0===n)return void 0===t;throw new e.error.UnsupportedTypeError("equal",e["typeof"](t),e["typeof"](n))}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(175),i=e.type.BigNumber,o=t(7),a=t(11),s=e.collection,u=n.number.isNumber,c=n.number.nearlyEqual,f=n["boolean"].isBoolean,l=n.string.isString,p=o.isComplex,m=a.isUnit,h=s.isCollection;e.larger=function g(t,n){if(2!=arguments.length)throw new e.error.ArgumentsError("larger",arguments.length,2);if(u(t)&&u(n))return!c(t,n,r.epsilon)&&t>n;if(t instanceof i)return u(n)?n=i.convert(n):(f(n)||null===n)&&(n=new i(n?1:0)),n instanceof i?t.gt(n):g(t.toNumber(),n);if(n instanceof i)return u(t)?t=i.convert(t):(f(t)||null===t)&&(t=new i(t?1:0)),t instanceof i?t.gt(n):g(t,n.toNumber());if(m(t)&&m(n)){if(!t.equalBase(n))throw new Error("Cannot compare units with different base");return t.value>n.value}if(h(t)||h(n))return s.deepMap2(t,n,g);if(l(t)||l(n))return t>n;if(f(t)||null===t)return g(+t,n);if(f(n)||null===n)return g(t,+n);if(p(t)||p(n))throw new TypeError("No ordering relation is defined for complex numbers");throw new e.error.UnsupportedTypeError("larger",e["typeof"](t),e["typeof"](n))}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(175),i=e.type.BigNumber,o=t(7),a=t(11),s=e.collection,u=n.number.isNumber,c=n.number.nearlyEqual,f=n["boolean"].isBoolean,l=n.string.isString,p=o.isComplex,m=a.isUnit,h=s.isCollection;e.largerEq=function g(t,n){if(2!=arguments.length)throw new e.error.ArgumentsError("largerEq",arguments.length,2);if(u(t)&&u(n))return c(t,n,r.epsilon)||t>n;if(t instanceof i)return u(n)?n=i.convert(n):(f(n)||null===n)&&(n=new i(n?1:0)),n instanceof i?t.gte(n):g(t.toNumber(),n);if(n instanceof i)return u(t)?t=i.convert(t):(f(t)||null===t)&&(t=new i(t?1:0)),t instanceof i?t.gte(n):g(t,n.toNumber());if(m(t)&&m(n)){if(!t.equalBase(n))throw new Error("Cannot compare units with different base");return t.value>=n.value}if(h(t)||h(n))return s.deepMap2(t,n,g);if(l(t)||l(n))return t>=n;if(f(t)||null===t)return g(+t,n);if(f(n)||null===n)return g(t,+n);if(p(t)||p(n))throw new TypeError("No ordering relation is defined for complex numbers");throw new e.error.UnsupportedTypeError("largerEq",e["typeof"](t),e["typeof"](n))},e.largereq=function(){throw new Error("Function largereq is renamed to largerEq")}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(175),i=e.type.BigNumber,o=t(7),a=t(11),s=e.collection,u=n.number.isNumber,c=n.number.nearlyEqual,f=n["boolean"].isBoolean,l=n.string.isString,p=o.isComplex,m=a.isUnit,h=s.isCollection;e.smaller=function g(t,n){if(2!=arguments.length)throw new e.error.ArgumentsError("smaller",arguments.length,2);if(u(t)&&u(n))return!c(t,n,r.epsilon)&&n>t;if(t instanceof i)return u(n)?n=i.convert(n):(f(n)||null===n)&&(n=new i(n?1:0)),n instanceof i?t.lt(n):g(t.toNumber(),n);if(n instanceof i)return u(t)?t=i.convert(t):(f(t)||null===t)&&(t=new i(t?1:0)),t instanceof i?t.lt(n):g(t,n.toNumber());if(m(t)&&m(n)){if(!t.equalBase(n))throw new Error("Cannot compare units with different base");return t.valuet;if(f(t)||null===t)return g(+t,n);if(f(n)||null===n)return g(t,+n);if(p(t)||p(n))throw new TypeError("No ordering relation is defined for complex numbers");throw new e.error.UnsupportedTypeError("smaller",e["typeof"](t),e["typeof"](n))}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(175),i=e.type.BigNumber,o=t(7),a=t(11),s=e.collection,u=n.number.isNumber,c=n.number.nearlyEqual,f=n["boolean"].isBoolean,l=n.string.isString,p=o.isComplex,m=a.isUnit,h=s.isCollection;e.smallerEq=function g(t,n){if(2!=arguments.length)throw new e.error.ArgumentsError("smallerEq",arguments.length,2);if(u(t)&&u(n))return c(t,n,r.epsilon)||n>t;if(t instanceof i)return u(n)?n=i.convert(n):(f(n)||null===n)&&(n=new i(n?1:0)),n instanceof i?t.lte(n):g(t.toNumber(),n);if(n instanceof i)return u(t)?t=i.convert(t):(f(t)||null===t)&&(t=new i(t?1:0)),t instanceof i?t.lte(n):g(t,n.toNumber());if(m(t)&&m(n)){if(!t.equalBase(n))throw new Error("Cannot compare units with different base");return t.value<=n.value}if(h(t)||h(n))return s.deepMap2(t,n,g);if(l(t)||l(n))return n>=t;if(f(t)||null===t)return g(+t,n);if(f(n)||null===n)return g(t,+n);if(p(t)||p(n))throw new TypeError("No ordering relation is defined for complex numbers");throw new e.error.UnsupportedTypeError("smallerEq",e["typeof"](t),e["typeof"](n))},e.smallereq=function(){throw new Error("Function smallereq is renamed to smallerEq")}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(175),i=e.type.BigNumber,o=t(7),a=t(11),s=e.collection,u=n.number.isNumber,c=n.number.nearlyEqual,f=n["boolean"].isBoolean,l=n.string.isString,p=o.isComplex,m=a.isUnit,h=s.isCollection;e.unequal=function g(t,n){if(2!=arguments.length)throw new e.error.ArgumentsError("unequal",arguments.length,2);if(u(t)){if(u(n))return!c(t,n,r.epsilon);if(p(n))return!c(t,n.re,r.epsilon)||!c(n.im,0,r.epsilon)}if(p(t)){if(u(n))return!c(t.re,n,r.epsilon)||!c(t.im,0,r.epsilon);if(p(n))return!c(t.re,n.re,r.epsilon)||!c(t.im,n.im,r.epsilon)}if(t instanceof i)return u(n)?n=i.convert(n):f(n)&&(n=new i(n?1:0)),n instanceof i?!t.eq(n):g(t.toNumber(),n);if(n instanceof i)return u(t)?t=i.convert(t):f(t)&&(t=new i(t?1:0)),t instanceof i?!t.eq(n):g(t,n.toNumber());if(m(t)&&m(n)){if(!t.equalBase(n))throw new Error("Cannot compare units with different base");return t.value!=n.value}if(h(t)||h(n))return s.deepMap2(t,n,g);if(l(t)||l(n))return t!=n;if(f(t))return g(+t,n);if(f(n))return g(t,+n);if(null===t)return null!==n;if(null===n)return null!==t;if(void 0===t)return void 0!==n;if(void 0===n)return void 0!==t;throw new e.error.UnsupportedTypeError("unequal",e["typeof"](t),e["typeof"](n))}}},function(e,r,t){"use strict";e.exports=function(e){function r(r,t){return e.smaller(r,t)?r:t}function t(r){var t=void 0;if(n.deepForEach(r,function(r){(void 0===t||e.smaller(r,t))&&(t=r)}),void 0===t)throw new Error("Cannot calculate min of an empty array");return t}var n=(e.type.Matrix,e.collection),i=n.isCollection;e.min=function(e){if(0==arguments.length)throw new SyntaxError("Function min requires one or more parameters (0 provided)");if(i(e)){if(1==arguments.length)return t(e);if(2==arguments.length)return n.reduce(arguments[0],arguments[1],r);throw new SyntaxError("Wrong number of parameters")}return t(arguments)}}},function(e,r,t){"use strict";e.exports=function(e){function r(r,t){return e.larger(r,t)?r:t}function t(r){var t=void 0;if(n.deepForEach(r,function(r){(void 0===t||e.larger(r,t))&&(t=r)}),void 0===t)throw new Error("Cannot calculate max of an empty array");return t}var n=(e.type.Matrix,e.collection),i=n.isCollection;e.max=function(e){if(0==arguments.length)throw new SyntaxError("Function max requires one or more parameters (0 provided)");if(i(e)){if(1==arguments.length)return t(e);if(2==arguments.length)return n.reduce(arguments[0],arguments[1],r);throw new SyntaxError("Wrong number of parameters")}return t(arguments)}}},function(e,r,t){"use strict";e.exports=function(e){function r(r,t){var n=i.reduce(r,t,e.add),o=s(r)?a(r):r.size();return e.divide(n,o[t])}function n(r){var t=0,n=0;if(i.deepForEach(r,function(r){t=e.add(t,r),n++}),0===n)throw new Error("Cannot calculate mean of an empty array");return e.divide(t,n)}var i=(e.type.Matrix,e.collection),o=i.isCollection,a=t(169).size,s=Array.isArray;e.mean=function(e){if(0==arguments.length)throw new SyntaxError("Function mean requires one or more parameters (0 provided)");if(o(e)){if(1==arguments.length)return n(e);if(2==arguments.length)return r(arguments[0],arguments[1]);throw new SyntaxError("Wrong number of parameters")}return n(arguments)}}},function(e,r,t){"use strict";e.exports=function(e){function r(r){var t=u(r);t.sort(e.compare);var o=t.length;if(0==o)throw new Error("Cannot calculate median of an empty array");if(o%2==0){var s=t[o/2-1],c=t[o/2];if(!(a(s)||s instanceof i||s instanceof n))throw new e.error.UnsupportedTypeError("median",e["typeof"](s));if(!(a(c)||c instanceof i||c instanceof n))throw new e.error.UnsupportedTypeError("median",e["typeof"](c));return e.divide(e.add(s,c),2)}var f=t[(o-1)/2];if(!(a(f)||f instanceof i||f instanceof n))throw new e.error.UnsupportedTypeError("median",e["typeof"](f));return f}var n=(e.type.Matrix,t(11)),i=e.type.BigNumber,o=e.collection,a=t(3).isNumber,s=o.isCollection,u=t(169).flatten;e.median=function(e){if(0==arguments.length)throw new SyntaxError("Function median requires one or more parameters (0 provided)"); +return[e.subtract(e.multiply(r[1],t[2]),e.multiply(r[2],t[1])),e.subtract(e.multiply(r[2],t[0]),e.multiply(r[0],t[2])),e.subtract(e.multiply(r[0],t[1]),e.multiply(r[1],t[0]))]}var n=t(169),i=e.type.Matrix;e.cross=function(t,n){if(t instanceof i){if(n instanceof i)return e.matrix(r(t.toArray(),n.toArray()));if(Array.isArray(n))return e.matrix(r(t.toArray(),n))}else if(Array.isArray(t)){if(n instanceof i)return e.matrix(r(t,n.toArray()));if(Array.isArray(n))return r(t,n)}throw new e.error.UnsupportedTypeError("cross",e["typeof"](t),e["typeof"](n))}}},function(e,r,t){"use strict";e.exports=function(e){function r(r,t,n){if(1==t)return o.clone(r[0][0]);if(2==t)return e.subtract(e.multiply(r[0][0],r[1][1]),e.multiply(r[1][0],r[0][1]));for(var i=function(r){var t,n,i=new Array(r.length),o=0;for(t=1;tn;n++)i[t][n]=0;for(n=t+1;ns;s++)a=e.multiply(i(a),r);return t%2==0?e.unaryMinus(a[0][0]):a[0][0]}var n=t(176),i=e.type.Matrix,o=n.object,a=n.string;e.det=function(t){if(1!=arguments.length)throw new e.error.ArgumentsError("det",arguments.length,1);var n;switch(t instanceof i?n=t.size():t instanceof Array?(t=e.matrix(t),n=t.size()):n=[],n.length){case 0:return o.clone(t);case 1:if(1==n[0])return o.clone(t.valueOf()[0]);throw new RangeError("Matrix must be square (size: "+a.format(n)+")");case 2:var s=n[0],u=n[1];if(s==u)return r(t.clone().valueOf(),s,u);throw new RangeError("Matrix must be square (size: "+a.format(n)+")");default:throw new RangeError("Matrix must be two dimensional (size: "+a.format(n)+")")}}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(176),n=e.type.BigNumber,i=e.type.Matrix,o=r.object,a=r.array,s=a.isArray,u=r.number.isNumber,c=r.string.isString,f=r.number.isInteger;e.diag=function(r,t,l){if(0===arguments.length||arguments.length>3)throw new e.error.ArgumentsError("diag",arguments.length,1,3);switch(arguments.length){case 1:t=0,l=void 0;break;case 2:c(arguments[1])&&(l=arguments[1],t=0)}if(!(r instanceof i||s(r)))throw new TypeError("First parameter in function diag must be a Matrix or Array");if(t instanceof n&&(t=t.toNumber()),!u(t)||!f(t))throw new TypeError("Second parameter in function diag must be an integer");if(l&&!c(l))throw new TypeError("Third parameter in function diag must be a String");var p,m,h,g,d,v,y=t>0?t:0,x=0>t?-t:0;if(r instanceof i?(g=r.valueOf(),l=l||r.storage(),p=r.size()):(g=r,p=a.size(r)),l){if(1===p.length){m=g[0]instanceof n?new n(0):0;var w=[g.length+x,g.length+y],b=i.storage(l);return b.diagonal(w,g,t,m)}if(2===p.length)return h=r.diagonal(t),e.matrix(h,l);throw new RangeError("Matrix for function diag must be 2 dimensional")}switch(p.length){case 1:m=g[0]instanceof n?new n(0):0;var E=[];for(a.resize(E,[g.length+x,g.length+y],m),v=g.length,d=0;v>d;d++)E[d+x][d+y]=o.clone(g[d]);return E;case 2:for(h=[],v=Math.min(p[0]-x,p[1]-y),d=0;v>d;d++)h[d]=o.clone(g[d+x][d+y]);return h;default:throw new RangeError("Matrix for function diag must be 2 dimensional")}}}},function(e,r,t){"use strict";e.exports=function(e){function r(r,t){var i=n.size(r),o=n.size(t),a=i[0];if(1!==i.length||1!==o.length)throw new RangeError("Vector expected");if(i[0]!=o[0])throw new RangeError("Vectors must have equal length ("+i[0]+" != "+o[0]+")");if(0==a)throw new RangeError("Cannot calculate the dot product of empty vectors");for(var s=0,u=0;a>u;u++)s=e.add(s,e.multiply(r[u],t[u]));return s}var n=t(169),i=e.type.Matrix;e.dot=function(t,n){if(t instanceof i){if(n instanceof i)return r(t.toArray(),n.toArray());if(Array.isArray(n))return r(t.toArray(),n)}else if(Array.isArray(t)){if(n instanceof i)return r(t,n.toArray());if(Array.isArray(n))return r(t,n)}throw new e.error.UnsupportedTypeError("dot",e["typeof"](t),e["typeof"](n))}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(176),i=e.type.BigNumber,o=e.type.Matrix,a=e.collection,s=n.array,u=n.number.isNumber,c=n.number.isInteger,f=n.string.isString,l=Array.isArray;e.eye=function(t,n){var p,m=a.argsToArray(arguments);if(m.length>0&&f(m[m.length-1])?(p=m[m.length-1],m=a.argsToArray(m.slice(0,m.length-1))):t instanceof o?p=t.storage():l(t)||"matrix"!==r.matrix||(p="default"),1==m.length)m[1]=m[0];else if(m.length>2)throw new e.error.ArgumentsError("eye",m.length,0,2);var h=!1;m=m.map(function(e){if(e instanceof i&&(h=!0,e=e.toNumber()),!u(e)||!c(e)||0>e)throw new Error("Parameters in function eye must be positive integers");return e});var g=h?new i(1):1,d=h?new i(0):0;if(p){if(0===m.length)return e.matrix(p);var v=o.storage(p);return v.diagonal(m,g,0,d)}var y=[];if(m.length>0){y=s.resize(y,m,d);for(var x=e.min(m),w=0;x>w;w++)y[w][w]=g}return y}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(176),i=e.type.Matrix,o=n.object,a=n.array,s=Array.isArray;e.flatten=function(r){if(1!==arguments.length)throw new e.error.ArgumentsError("flatten",arguments.length,1);if(r instanceof i){var t=o.clone(r.toArray()),n=a.flatten(t);return e.matrix(n)}if(s(r))return a.flatten(o.clone(r));throw new e.error.UnsupportedTypeError("flatten",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){function r(r,t,n){var i,o,a,s,u;if(1==t){if(s=r[0][0],0==s)throw Error("Cannot calculate inverse, determinant is zero");return[[e._divide(1,s)]]}if(2==t){var c=e.det(r);if(0==c)throw Error("Cannot calculate inverse, determinant is zero");return[[e._divide(r[1][1],c),e._divide(e.unaryMinus(r[0][1]),c)],[e._divide(e.unaryMinus(r[1][0]),c),e._divide(r[0][0],c)]]}var f=r.concat();for(i=0;t>i;i++)f[i]=f[i].concat();for(var l=e.eye(t).valueOf(),p=0;n>p;p++){for(i=p;t>i&&0==f[i][p];)i++;if(i==t||0==f[i][p])throw Error("Cannot calculate inverse, determinant is zero");i!=p&&(u=f[p],f[p]=f[i],f[i]=u,u=l[p],l[p]=l[i],l[i]=u);var m=f[p],h=l[p];for(i=0;t>i;i++){var g=f[i],d=l[i];if(i!=p){if(0!=g[p]){for(a=e._divide(e.unaryMinus(g[p]),m[p]),o=p;n>o;o++)g[o]=e.add(g[o],e.multiply(a,m[o]));for(o=0;n>o;o++)d[o]=e.add(d[o],e.multiply(a,h[o]))}}else{for(a=m[p],o=p;n>o;o++)g[o]=e._divide(g[o],a);for(o=0;n>o;o++)d[o]=e._divide(d[o],a)}}}return l}var n=t(176),i=e.type.Matrix;e.inv=function(t){if(1!=arguments.length)throw new e.error.ArgumentsError("inv",arguments.length,1);var o=e.size(t).valueOf();switch(o.length){case 0:return e._divide(1,t);case 1:if(1==o[0])return t instanceof i?e.matrix([e._divide(1,t.valueOf()[0])]):[e._divide(1,t[0])];throw new RangeError("Matrix must be square (size: "+n.string.format(o)+")");case 2:var a=o[0],s=o[1];if(a==s)return t instanceof i?e.matrix(r(t.valueOf(),a,s),t.storage()):r(t,a,s);throw new RangeError("Matrix must be square (size: "+n.string.format(o)+")");default:throw new RangeError("Matrix must be two dimensional (size: "+n.string.format(o)+")")}}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(176),i=e.type.BigNumber,o=e.type.Matrix,a=e.collection,s=n.array,u=n.number.isNumber,c=n.number.isInteger,f=n.string.isString,l=Array.isArray;e.ones=function(t,n){var p,m=a.argsToArray(arguments);m.length>0&&f(m[m.length-1])?(p=m[m.length-1],m=a.argsToArray(m.slice(0,m.length-1))):t instanceof o?p=t.storage():l(t)||"matrix"!==r.matrix||(p="default");var h=!1;m=m.map(function(e){if(e instanceof i&&(h=!0,e=e.toNumber()),!u(e)||!c(e)||0>e)throw new Error("Parameters in function eye must be positive integers");return e});var g=h?new i(1):1;if(p){var d=e.matrix(p);return m.length>0?d.resize(m,g):d}var v=[];return m.length>0?s.resize(v,m,g):v}}},function(e,r,t){"use strict";e.exports=function(e,r){function n(e,r,t){var n=[],i=e;if(t>0)for(;r>i;)n.push(i),i+=t;else if(0>t)for(;i>r;)n.push(i),i+=t;return n}function i(e,r,t){var n=[],i=e;if(t>0)for(;r>=i;)n.push(i),i+=t;else if(0>t)for(;i>=r;)n.push(i),i+=t;return n}function o(e,r,t){var n=[],i=e.clone(),o=new c(0);if(t.gt(o))for(;i.lt(r);)n.push(i),i=i.plus(t);else if(t.lt(o))for(;i.gt(r);)n.push(i),i=i.plus(t);return n}function a(e,r,t){var n=[],i=e.clone(),o=new c(0);if(t.gt(o))for(;i.lte(r);)n.push(i),i=i.plus(t);else if(t.lt(o))for(;i.gte(r);)n.push(i),i=i.plus(t);return n}function s(e){var t=e.split(":"),n=null;if("bignumber"===r.number)try{n=t.map(function(e){return new c(e)})}catch(i){return null}else{n=t.map(function(e){return Number(e)});var o=n.some(function(e){return isNaN(e)});if(o)return null}switch(n.length){case 2:return{start:n[0],end:n[1],step:1};case 3:return{start:n[0],end:n[2],step:n[1]};default:return null}}var u=t(176),c=e.type.BigNumber,f=(e.type.Matrix,e.collection,u["boolean"].isBoolean),l=u.string.isString,p=u.number.isNumber;e.range=function(t){var u,m,h,g=Array.prototype.slice.call(arguments),d=!1;switch(f(g[g.length-1])&&(d=g.pop()?!0:!1),g.length){case 1:if(!l(g[0]))throw new TypeError("Two or three numbers or a single string expected in function range");var v=s(g[0]);if(!v)throw new SyntaxError('String "'+g[0]+'" is no valid range');u=v.start,m=v.end,h=v.step;break;case 2:u=g[0],m=g[1],h=1;break;case 3:u=g[0],m=g[1],h=g[2];break;case 4:throw new TypeError("Parameter includeEnd must be a boolean");default:throw new e.error.ArgumentsError("range",arguments.length,2,4)}if(!(p(u)||u instanceof c))throw new TypeError("Parameter start must be a number");if(!(p(m)||m instanceof c))throw new TypeError("Parameter end must be a number");if(!(p(h)||h instanceof c))throw new TypeError("Parameter step must be a number");if(u instanceof c||m instanceof c||h instanceof c){var y=!0;u instanceof c||(u=c.convert(u)),m instanceof c||(m=c.convert(m)),h instanceof c||(h=c.convert(h)),u instanceof c&&m instanceof c&&h instanceof c||(y=!1,u instanceof c&&(u=u.toNumber()),m instanceof c&&(m=m.toNumber()),h instanceof c&&(h=h.toNumber()))}var x=y?d?a:o:d?i:n,w=x(u,m,h);return"array"===r.matrix?w:e.matrix(w)}}},function(e,r,t){"use strict";e.exports=function(e,r){function n(r,t,n){if(void 0!==n){if(!f(n)||1!==n.length)throw new TypeError("Single character expected as defaultValue")}else n=" ";if(1!==t.length)throw new e.error.DimensionError(t.length,1);var i=t[0];if(!l(i)||!p(i))throw new TypeError("Invalid size, must contain positive integers (size: "+c.format(t)+")");if(r.length>i)return r.substring(0,i);if(r.lengtha;a++)o+=n;return o}return r}var i=t(176),o=e.type.BigNumber,a=e.type.Matrix,s=i.array,u=i.object.clone,c=i.string,f=i.string.isString,l=i.number.isNumber,p=i.number.isInteger,m=s.isArray;e.resize=function(t,i,c){if(2!=arguments.length&&3!=arguments.length)throw new e.error.ArgumentsError("resize",arguments.length,2,3);if(i instanceof a&&(i=i.valueOf()),i.length&&i[0]instanceof o&&(i=i.map(function(e){return e instanceof o?e.toNumber():e})),t instanceof a)return t.resize(i,c,!0);if(f(t))return n(t,i,c);var l=m(t)?!1:"array"!==r.matrix;if(0==i.length){for(;m(t);)t=t[0];return u(t)}m(t)||(t=[t]),t=u(t);var p=s.resize(t,i,c);return l?e.matrix(p):p}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(176),i=e.type.BigNumber,o=t(7),a=t(11),s=e.type.Matrix,u=n.array,c=n.number.isNumber,f=n["boolean"].isBoolean,l=n.string.isString,p=o.isComplex,m=a.isUnit;e.size=function(t){if(1!=arguments.length)throw new e.error.ArgumentsError("size",arguments.length,1);var n="array"===r.matrix;if(c(t)||p(t)||m(t)||f(t)||null==t||t instanceof i)return n?[]:e.matrix([]);if(l(t))return n?[t.length]:e.matrix([t.length]);if(Array.isArray(t))return u.size(t);if(t instanceof s)return e.matrix(t.size());throw new e.error.UnsupportedTypeError("size",e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(176),n=e.type.Matrix,i=r.object,o=r.array,a=Array.isArray;e.squeeze=function(r){if(1!=arguments.length)throw new e.error.ArgumentsError("squeeze",arguments.length,1);if(a(r))return o.squeeze(i.clone(r));if(r instanceof n){var t=o.squeeze(r.toArray());return a(t)?e.matrix(t):t}return i.clone(r)}}},function(e,r,t){"use strict";e.exports=function(e,r){function n(r,t){var n,o;if(p(r))return n=e.matrix(r),o=n.subset(t),o&&o.valueOf();if(r instanceof u)return r.subset(t);if(l(r))return i(r,t);throw new e.error.UnsupportedTypeError("subset",e["typeof"](r))}function i(r,t){if(!(t instanceof c))throw new TypeError("Index expected");if(1!=t.size().length)throw new e.error.DimensionError(t.size().length,1);var n=r.length;f.validateIndex(t.min()[0],n),f.validateIndex(t.max()[0],n);var i=t.range(0),o="";return i.forEach(function(e){o+=r.charAt(e)}),o}function o(r,t,n,i){var o;if(p(r))return o=e.matrix(e.clone(r)),o.subset(t,n,i),o.valueOf();if(r instanceof u)return r.clone().subset(t,n,i);if(l(r))return a(r,t,n,i);throw new e.error.UnsupportedTypeError("subset",e["typeof"](r))}function a(r,t,n,i){if(!(t instanceof c))throw new TypeError("Index expected");if(1!=t.size().length)throw new e.error.DimensionError(t.size().length,1);if(void 0!==i){if(!l(i)||1!==i.length)throw new TypeError("Single character expected as defaultValue")}else i=" ";var o=t.range(0),a=o.size()[0];if(a!=n.length)throw new e.error.DimensionError(o.size()[0],n.length);var s=r.length;f.validateIndex(t.min()[0]),f.validateIndex(t.max()[0]);for(var u=[],p=0;s>p;p++)u[p]=r.charAt(p);if(o.forEach(function(e,r){u[e]=n.charAt(r)}),u.length>s)for(p=s-1,a=u.length;a>p;p++)u[p]||(u[p]=i);return u.join("")}var s=t(176),u=e.type.Matrix,c=t(9),f=s.array,l=s.string.isString,p=Array.isArray;e.subset=function(r,t,i,a){switch(arguments.length){case 2:return n(arguments[0],arguments[1]);case 3:case 4:return o(arguments[0],arguments[1],arguments[2],arguments[3]);default:throw new e.error.ArgumentsError("subset",arguments.length,2,4)}}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(176),n=e.type.Matrix,i=r.object,o=r.array,a=r.string;e.trace=function(r){if(1!=arguments.length)throw new e.error.ArgumentsError("trace",arguments.length,1);if(r instanceof n)return r.trace();var t;switch(t=r instanceof Array?o.size(r):[],t.length){case 0:return i.clone(r);case 1:if(1==t[0])return i.clone(r[0]);throw new RangeError("Array must be square (size: "+a.format(t)+")");case 2:var s=t[0],u=t[1];if(s==u){for(var c=0,f=0;fp;p++){a=f[p]=[];for(var m=0;u>m;m++)a[m]=l(c[m][p])}return f;default:throw new RangeError("Matrix must be two dimensional (size: "+o.format(t)+")")}}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(176),i=e.type.BigNumber,o=e.type.Matrix,a=e.collection,s=n.array,u=n.number.isNumber,c=n.number.isInteger,f=n.string.isString,l=Array.isArray;e.zeros=function(t){var n,p=a.argsToArray(arguments);p.length>0&&f(p[p.length-1])?(n=p[p.length-1],p=a.argsToArray(p.slice(0,p.length-1))):t instanceof o?n=t.storage():l(t)||"matrix"!==r.matrix||(n="default");var m=!1;p=p.map(function(e){if(e instanceof i&&(m=!0,e=e.toNumber()),!u(e)||!c(e)||0>e)throw new Error("Parameters in function zeros must be positive integers");return e});var h=m?new i(0):0;if(n){var g=e.matrix(n);return p.length>0?g.resize(p,h):g}var d=[];return p.length>0?s.resize(d,p,h):d}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(176),i=e.type.BigNumber,o=e.collection,a=n.number.isNumber,s=n["boolean"].isBoolean,u=(n.number.isInteger,o.isCollection);e.factorial=function p(t){var m,h,g;if(1!=arguments.length)throw new e.error.ArgumentsError("factorial",arguments.length,1);if(a(t))return t!==Number.POSITIVE_INFINITY?e.gamma(t+1):Math.sqrt(2*Math.PI);if(t instanceof i){if(!c(t))return t.isNegative()||t.isFinite()?e.gamma(t.plus(1)):n.bignumber.tau(r.precision).sqrt();if(t=t.toNumber(),tx;++x)g[x]=h=h.times(m),m=m.plus(y);return g[t]=h.times(m),new i(g[t].toPrecision(r.precision))}if(s(t)||null===t)return 1;if(u(t))return o.deepMap(t,p);throw new e.error.UnsupportedTypeError("factorial",e["typeof"](t))};var c=function(e){return e.isInteger()&&(!e.isNegative()||e.isZero())},f=[],l=[1,1,2,6,24,120,720,5040,40320,362880,3628800,39916800,479001600,6227020800,87178291200,1307674368e3,20922789888e3,355687428096e3,6402373705728e3,0x1b02b9306890000,243290200817664e4]}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(176),i=e.type.BigNumber,o=t(7),a=e.collection,s=n["boolean"].isBoolean,u=o.isComplex,c=n.number.isNumber,f=n.number.isInteger,l=a.isCollection;e.gamma=function m(r){var t,n,h=4.7421875;if(1!=arguments.length)throw new e.error.ArgumentsError("gamma",arguments.length,1);if(c(r)){if(f(r)){if(0>=r)return isFinite(r)?1/0:0/0;if(r>171)return 1/0;for(var g=r-2,d=r-1;g>1;)d*=g,g--;return 0==d&&(d=1),d}if(.5>r)return Math.PI/(Math.sin(Math.PI*r)*m(1-r));if(r>=171.35)return 1/0;if(r>85){var v=r*r,y=v*r,x=y*r,w=x*r;return Math.sqrt(2*Math.PI/r)*Math.pow(r/Math.E,r)*(1+1/(12*r)+1/(288*v)-139/(51840*y)-571/(2488320*x)+163879/(209018880*w)+5246819/(75246796800*w*r))}--r,n=p[0];for(var b=1;b2)throw new e.error.ArgumentsError("permutations",arguments.length,2);if(i(r)){if(!o(r)||0>r)throw new TypeError("Positive integer value expected in function permutations");if(1==c)return e.factorial(r);if(2==c&&i(t)){if(!o(t)||0>t)throw new TypeError("Positive integer value expected in function permutations");if(t>r)throw new TypeError("second argument k must be less than or equal to first argument n");for(s=1,u=r-t+1;r>=u;u++)s*=u;return s}}if(r instanceof n){if(void 0===t&&a(r))return e.factorial(r);if(t=n.convert(t),!(t instanceof n&&a(r)&&a(t)))throw new TypeError("Positive integer value expected in function permutations");if(t.gt(r))throw new TypeError("second argument k must be less than or equal to first argument n");for(s=new n(1),u=r.minus(t).plus(1);u.lte(r);u=u.plus(1))s=s.times(u);return s}throw new e.error.UnsupportedTypeError("permutations",e["typeof"](r))};var a=function(e){return e.isInteger()&&e.gte(0)}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(176),n=e.type.BigNumber,i=(e.collection,r.number.isNumber),o=r.number.isInteger;e.combinations=function(r,t){var s,u,c,f,l=arguments.length;if(2!=l)throw new e.error.ArgumentsError("combinations",arguments.length,2);if(i(r)){if(!o(r)||0>r)throw new TypeError("Positive integer value enpected in function combinations");if(t>r)throw new TypeError("k must be less than or equal to n");for(s=Math.max(t,r-t),u=1,c=1;r-s>=c;c++)u=u*(s+c)/c;return u}if(r instanceof n){if(t=n.convert(t),!(t instanceof n&&a(r)&&a(t)))throw new TypeError("Positive integer value expected in function combinations");if(t.gt(r))throw new TypeError("k must be less than n in function combinations");for(s=r.minus(t),t.lt(s)&&(s=t),u=new n(1),c=new n(1),f=r.minus(s);c.lte(f);c=c.plus(1))u=u.times(s.plus(c)).dividedBy(c);return u}throw new e.error.UnsupportedTypeError("combinations",e["typeof"](r))};var a=function(e){return e.isInteger()&&e.gte(0)}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(176),i=e.type.BigNumber,o=t(7),a=t(11),s=e.collection,u=n.number.isNumber,c=n.number.nearlyEqual,f=n["boolean"].isBoolean,l=n.string.isString,p=o.isComplex,m=a.isUnit,h=s.isCollection;e.compare=function g(t,n){if(2!=arguments.length)throw new e.error.ArgumentsError("compare",arguments.length,2);if(u(t)&&u(n))return c(t,n,r.epsilon)?0:t>n?1:-1;if(t instanceof i)return u(n)?n=i.convert(n):(f(n)||null===n)&&(n=new i(n?1:0)),n instanceof i?new i(t.cmp(n)):g(t.toNumber(),n);if(n instanceof i)return u(t)?t=i.convert(t):(f(t)||null===t)&&(t=new i(t?1:0)),t instanceof i?new i(t.cmp(n)):g(t,n.toNumber());if(m(t)&&m(n)){if(!t.equalBase(n))throw new Error("Cannot compare units with different base");return t.value>n.value?1:t.valuen?1:n>t?-1:0;if(f(t)||null===t)return g(+t,n);if(f(n)||null===n)return g(t,+n);if(p(t)||p(n))throw new TypeError("No ordering relation is defined for complex numbers");throw new e.error.UnsupportedTypeError("compare",e["typeof"](t),e["typeof"](n))}}},function(e,r,t){"use strict";e.exports=function(e){function r(t,n){if(i(t)){if(i(n)){var o=t.length;if(o!==n.length)return!1;for(var a=0;o>a;a++)if(!r(t[a],n[a]))return!1;return!0}return!1}return i(n)?!1:e.equal(t,n)}var t=e.collection,n=t.isCollection,i=Array.isArray;e.deepEqual=function(t,i){if(2!=arguments.length)throw new e.error.ArgumentsError("deepEqual",arguments.length,2);return n(t)||n(i)?r(t.valueOf(),i.valueOf()):e.equal(t,i)}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(176),i=e.type.BigNumber,o=t(7),a=t(11),s=e.collection,u=n.number.isNumber,c=n.number.nearlyEqual,f=n["boolean"].isBoolean,l=n.string.isString,p=o.isComplex,m=a.isUnit,h=s.isCollection;e.equal=function g(t,n){if(2!=arguments.length)throw new e.error.ArgumentsError("equal",arguments.length,2);if(u(t)){if(u(n))return c(t,n,r.epsilon);if(p(n))return c(t,n.re,r.epsilon)&&c(n.im,0,r.epsilon)}if(p(t)){if(u(n))return c(t.re,n,r.epsilon)&&c(t.im,0,r.epsilon);if(p(n))return c(t.re,n.re,r.epsilon)&&c(t.im,n.im,r.epsilon)}if(t instanceof i)return u(n)?n=i.convert(n):f(n)&&(n=new i(n?1:0)),n instanceof i?t.eq(n):g(t.toNumber(),n);if(n instanceof i)return u(t)?t=i.convert(t):f(t)&&(t=new i(t?1:0)),t instanceof i?t.eq(n):g(t,n.toNumber());if(m(t)&&m(n)){if(!t.equalBase(n))throw new Error("Cannot compare units with different base");return t.value==n.value}if(h(t)||h(n))return s.deepMap2(t,n,g);if(l(t)||l(n))return t==n;if(f(t))return g(+t,n);if(f(n))return g(t,+n);if(null===t)return null===n;if(null===n)return null===t;if(void 0===t)return void 0===n;if(void 0===n)return void 0===t;throw new e.error.UnsupportedTypeError("equal",e["typeof"](t),e["typeof"](n))}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(176),i=e.type.BigNumber,o=t(7),a=t(11),s=e.collection,u=n.number.isNumber,c=n.number.nearlyEqual,f=n["boolean"].isBoolean,l=n.string.isString,p=o.isComplex,m=a.isUnit,h=s.isCollection;e.larger=function g(t,n){if(2!=arguments.length)throw new e.error.ArgumentsError("larger",arguments.length,2);if(u(t)&&u(n))return!c(t,n,r.epsilon)&&t>n;if(t instanceof i)return u(n)?n=i.convert(n):(f(n)||null===n)&&(n=new i(n?1:0)),n instanceof i?t.gt(n):g(t.toNumber(),n);if(n instanceof i)return u(t)?t=i.convert(t):(f(t)||null===t)&&(t=new i(t?1:0)),t instanceof i?t.gt(n):g(t,n.toNumber());if(m(t)&&m(n)){if(!t.equalBase(n))throw new Error("Cannot compare units with different base");return t.value>n.value}if(h(t)||h(n))return s.deepMap2(t,n,g);if(l(t)||l(n))return t>n;if(f(t)||null===t)return g(+t,n);if(f(n)||null===n)return g(t,+n);if(p(t)||p(n))throw new TypeError("No ordering relation is defined for complex numbers");throw new e.error.UnsupportedTypeError("larger",e["typeof"](t),e["typeof"](n))}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(176),i=e.type.BigNumber,o=t(7),a=t(11),s=e.collection,u=n.number.isNumber,c=n.number.nearlyEqual,f=n["boolean"].isBoolean,l=n.string.isString,p=o.isComplex,m=a.isUnit,h=s.isCollection;e.largerEq=function g(t,n){if(2!=arguments.length)throw new e.error.ArgumentsError("largerEq",arguments.length,2);if(u(t)&&u(n))return c(t,n,r.epsilon)||t>n;if(t instanceof i)return u(n)?n=i.convert(n):(f(n)||null===n)&&(n=new i(n?1:0)),n instanceof i?t.gte(n):g(t.toNumber(),n);if(n instanceof i)return u(t)?t=i.convert(t):(f(t)||null===t)&&(t=new i(t?1:0)),t instanceof i?t.gte(n):g(t,n.toNumber());if(m(t)&&m(n)){if(!t.equalBase(n))throw new Error("Cannot compare units with different base");return t.value>=n.value}if(h(t)||h(n))return s.deepMap2(t,n,g);if(l(t)||l(n))return t>=n;if(f(t)||null===t)return g(+t,n);if(f(n)||null===n)return g(t,+n);if(p(t)||p(n))throw new TypeError("No ordering relation is defined for complex numbers");throw new e.error.UnsupportedTypeError("largerEq",e["typeof"](t),e["typeof"](n))},e.largereq=function(){throw new Error("Function largereq is renamed to largerEq")}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(176),i=e.type.BigNumber,o=t(7),a=t(11),s=e.collection,u=n.number.isNumber,c=n.number.nearlyEqual,f=n["boolean"].isBoolean,l=n.string.isString,p=o.isComplex,m=a.isUnit,h=s.isCollection;e.smaller=function g(t,n){if(2!=arguments.length)throw new e.error.ArgumentsError("smaller",arguments.length,2);if(u(t)&&u(n))return!c(t,n,r.epsilon)&&n>t;if(t instanceof i)return u(n)?n=i.convert(n):(f(n)||null===n)&&(n=new i(n?1:0)),n instanceof i?t.lt(n):g(t.toNumber(),n);if(n instanceof i)return u(t)?t=i.convert(t):(f(t)||null===t)&&(t=new i(t?1:0)),t instanceof i?t.lt(n):g(t,n.toNumber());if(m(t)&&m(n)){if(!t.equalBase(n))throw new Error("Cannot compare units with different base");return t.valuet;if(f(t)||null===t)return g(+t,n);if(f(n)||null===n)return g(t,+n);if(p(t)||p(n))throw new TypeError("No ordering relation is defined for complex numbers");throw new e.error.UnsupportedTypeError("smaller",e["typeof"](t),e["typeof"](n))}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(176),i=e.type.BigNumber,o=t(7),a=t(11),s=e.collection,u=n.number.isNumber,c=n.number.nearlyEqual,f=n["boolean"].isBoolean,l=n.string.isString,p=o.isComplex,m=a.isUnit,h=s.isCollection;e.smallerEq=function g(t,n){if(2!=arguments.length)throw new e.error.ArgumentsError("smallerEq",arguments.length,2);if(u(t)&&u(n))return c(t,n,r.epsilon)||n>t;if(t instanceof i)return u(n)?n=i.convert(n):(f(n)||null===n)&&(n=new i(n?1:0)),n instanceof i?t.lte(n):g(t.toNumber(),n);if(n instanceof i)return u(t)?t=i.convert(t):(f(t)||null===t)&&(t=new i(t?1:0)),t instanceof i?t.lte(n):g(t,n.toNumber());if(m(t)&&m(n)){if(!t.equalBase(n))throw new Error("Cannot compare units with different base");return t.value<=n.value}if(h(t)||h(n))return s.deepMap2(t,n,g);if(l(t)||l(n))return n>=t;if(f(t)||null===t)return g(+t,n);if(f(n)||null===n)return g(t,+n);if(p(t)||p(n))throw new TypeError("No ordering relation is defined for complex numbers");throw new e.error.UnsupportedTypeError("smallerEq",e["typeof"](t),e["typeof"](n))},e.smallereq=function(){throw new Error("Function smallereq is renamed to smallerEq")}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(176),i=e.type.BigNumber,o=t(7),a=t(11),s=e.collection,u=n.number.isNumber,c=n.number.nearlyEqual,f=n["boolean"].isBoolean,l=n.string.isString,p=o.isComplex,m=a.isUnit,h=s.isCollection;e.unequal=function g(t,n){if(2!=arguments.length)throw new e.error.ArgumentsError("unequal",arguments.length,2);if(u(t)){if(u(n))return!c(t,n,r.epsilon);if(p(n))return!c(t,n.re,r.epsilon)||!c(n.im,0,r.epsilon)}if(p(t)){if(u(n))return!c(t.re,n,r.epsilon)||!c(t.im,0,r.epsilon);if(p(n))return!c(t.re,n.re,r.epsilon)||!c(t.im,n.im,r.epsilon)}if(t instanceof i)return u(n)?n=i.convert(n):f(n)&&(n=new i(n?1:0)),n instanceof i?!t.eq(n):g(t.toNumber(),n);if(n instanceof i)return u(t)?t=i.convert(t):f(t)&&(t=new i(t?1:0)),t instanceof i?!t.eq(n):g(t,n.toNumber());if(m(t)&&m(n)){if(!t.equalBase(n))throw new Error("Cannot compare units with different base");return t.value!=n.value}if(h(t)||h(n))return s.deepMap2(t,n,g);if(l(t)||l(n))return t!=n;if(f(t))return g(+t,n);if(f(n))return g(t,+n);if(null===t)return null!==n;if(null===n)return null!==t;if(void 0===t)return void 0!==n;if(void 0===n)return void 0!==t;throw new e.error.UnsupportedTypeError("unequal",e["typeof"](t),e["typeof"](n))}}},function(e,r,t){"use strict";e.exports=function(e){function r(r,t){return e.smaller(r,t)?r:t}function t(r){var t=void 0;if(n.deepForEach(r,function(r){(void 0===t||e.smaller(r,t))&&(t=r)}),void 0===t)throw new Error("Cannot calculate min of an empty array");return t}var n=(e.type.Matrix,e.collection),i=n.isCollection;e.min=function(e){if(0==arguments.length)throw new SyntaxError("Function min requires one or more parameters (0 provided)");if(i(e)){if(1==arguments.length)return t(e);if(2==arguments.length)return n.reduce(arguments[0],arguments[1],r);throw new SyntaxError("Wrong number of parameters")}return t(arguments)}}},function(e,r,t){"use strict";e.exports=function(e){function r(r,t){return e.larger(r,t)?r:t}function t(r){var t=void 0;if(n.deepForEach(r,function(r){(void 0===t||e.larger(r,t))&&(t=r)}),void 0===t)throw new Error("Cannot calculate max of an empty array");return t}var n=(e.type.Matrix,e.collection),i=n.isCollection;e.max=function(e){if(0==arguments.length)throw new SyntaxError("Function max requires one or more parameters (0 provided)");if(i(e)){if(1==arguments.length)return t(e);if(2==arguments.length)return n.reduce(arguments[0],arguments[1],r);throw new SyntaxError("Wrong number of parameters")}return t(arguments)}}},function(e,r,t){"use strict";e.exports=function(e){function r(r,t){var n=i.reduce(r,t,e.add),o=s(r)?a(r):r.size();return e.divide(n,o[t])}function n(r){var t=0,n=0;if(i.deepForEach(r,function(r){t=e.add(t,r),n++}),0===n)throw new Error("Cannot calculate mean of an empty array");return e.divide(t,n)}var i=(e.type.Matrix,e.collection),o=i.isCollection,a=t(169).size,s=Array.isArray;e.mean=function(e){if(0==arguments.length)throw new SyntaxError("Function mean requires one or more parameters (0 provided)");if(o(e)){if(1==arguments.length)return n(e);if(2==arguments.length)return r(arguments[0],arguments[1]);throw new SyntaxError("Wrong number of parameters")}return n(arguments)}}},function(e,r,t){"use strict";e.exports=function(e){function r(r){var t=u(r);t.sort(e.compare);var o=t.length;if(0==o)throw new Error("Cannot calculate median of an empty array");if(o%2==0){var s=t[o/2-1],c=t[o/2];if(!(a(s)||s instanceof i||s instanceof n))throw new e.error.UnsupportedTypeError("median",e["typeof"](s)); -if(s(e)){if(1==arguments.length)return r(e.valueOf());throw 2==arguments.length?new Error("median(A, dim) is not yet supported"):new SyntaxError("Wrong number of parameters")}return r(Array.prototype.slice.call(arguments))}}},function(e,r,t){"use strict";e.exports=function(e){function r(r){var n=void 0;if(t.deepForEach(r,function(r){n=void 0===n?r:e.multiply(n,r)}),void 0===n)throw new Error("Cannot calculate prod of an empty array");return n}var t=(e.type.Matrix,e.collection),n=t.isCollection;e.prod=function(e){if(0==arguments.length)throw new SyntaxError("Function prod requires one or more parameters (0 provided)");if(n(e)){if(1==arguments.length)return r(e);throw 2==arguments.length?new Error("prod(A, dim) is not yet supported"):new SyntaxError("Wrong number of parameters")}return r(arguments)}}},function(e,r,t){"use strict";e.exports=function(e){e.std=function(r,t){if(0==arguments.length)throw new SyntaxError("Function std requires one or more parameters (0 provided)");var n=e["var"].apply(null,arguments);return e.sqrt(n)}}},function(e,r,t){"use strict";e.exports=function(e){function r(r){var n=void 0;if(t.deepForEach(r,function(r){n=void 0===n?r:e.add(n,r)}),void 0===n)throw new Error("Cannot calculate sum of an empty array");return n}var t=(e.type.Matrix,e.collection),n=t.isCollection;e.sum=function(e){if(0==arguments.length)throw new SyntaxError("Function sum requires one or more parameters (0 provided)");if(n(e)){if(1==arguments.length)return r(e);throw 2==arguments.length?new Error("sum(A, dim) is not yet supported"):new SyntaxError("Wrong number of parameters")}return r(arguments)}}},function(e,r,t){"use strict";e.exports=function(e){function r(r,t){var o=0,a=0;if(i.deepForEach(r,function(r){o=e.add(o,r),a++}),0===a)throw new Error("Cannot calculate var of an empty array");var s=e.divide(o,a);switch(o=0,i.deepForEach(r,function(r){var t=e.subtract(r,s);o=e.add(o,e.multiply(t,t))}),t){case"uncorrected":return e.divide(o,a);case"biased":return e.divide(o,a+1);case"unbiased":var u=o instanceof n?new n(0):0;return 1==a?u:e.divide(o,a-1);default:throw new Error('Unknown normalization "'+t+'". Choose "unbiased" (default), "uncorrected", or "biased".')}}var n=(e.type.Matrix,e.type.BigNumber),i=e.collection,o=i.isCollection,a=t(176).isString,s="unbiased";e["var"]=function(e,t){if(0==arguments.length)throw new SyntaxError("Function var requires one or more parameters (0 provided)");if(o(e)){if(1==arguments.length)return r(e,s);if(2==arguments.length){if(!a(t))throw new Error("String expected for parameter normalization");return r(e,t)}throw new SyntaxError("Wrong number of parameters")}return r(arguments,s)}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(175),n=e.type.BigNumber,i=t(7),o=e.collection,a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,c=o.isCollection,f=r.bignumber.arccos_arcsec;e.acos=function l(r){if(1!=arguments.length)throw new e.error.ArgumentsError("acos",arguments.length,1);if(a(r))return r>=-1&&1>=r?Math.acos(r):l(new i(r,0));if(u(r)){var t=new i(r.im*r.im-r.re*r.re+1,-2*r.re*r.im),p=e.sqrt(t),m=new i(p.re-r.im,p.im+r.re),h=e.log(m);return new i(1.5707963267948966-h.im,h.re)}if(c(r))return o.deepMap(r,l);if(s(r)||null===r)return Math.acos(r);if(r instanceof n)return f(r,n,!1);throw new e.error.UnsupportedTypeError("acos",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(175),n=e.type.BigNumber,i=t(7),o=t(11),a=e.collection,s=r.number.isNumber,u=r["boolean"].isBoolean,c=i.isComplex,f=(o.isUnit,a.isCollection),l=r.bignumber.acosh_asinh_asech_acsch;e.acosh=function p(r){if(1!=arguments.length)throw new e.error.ArgumentsError("acosh",arguments.length,1);if(s(r))return r>=1?Math.log(Math.sqrt(r*r-1)+r):-1>=r?new i(Math.log(Math.sqrt(r*r-1)-r),Math.PI):p(new i(r,0));if(c(r)){var t,o=e.acos(r);return o.im<=0?(t=o.re,o.re=-o.im,o.im=t):(t=o.im,o.im=-o.re,o.re=t),o}if(f(r))return a.deepMap(r,p);if(u(r)||null===r)return r?0:new i(0,1.5707963267948966);if(r instanceof n)return l(r,n,!1,!1);throw new e.error.UnsupportedTypeError("acosh",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(175),n=e.type.BigNumber,i=t(7),o=e.collection,a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,c=o.isCollection,f=r.bignumber.arctan_arccot;e.acot=function p(r){if(1!=arguments.length)throw new e.error.ArgumentsError("acot",arguments.length,1);if(a(r))return r?Math.atan(1/r):l;if(u(r)){if(0==r.im)return new i(r.re?Math.atan(1/r.re):l,0);var t=r.re*r.re+r.im*r.im;return r=0!=t?new i(r.re=r.re/t,r.im=-r.im/t):new i(0!=r.re?r.re/0:0,0!=r.im?-(r.im/0):0),e.atan(r)}if(c(r))return o.deepMap(r,p);if(s(r)||null===r)return r?.7853981633974483:l;if(r instanceof n)return f(r,n,!0);throw new e.error.UnsupportedTypeError("acot",e["typeof"](r))};var l=1.5707963267948966}},function(e,r,t){"use strict";e.exports=function(e){var r=t(175),n=e.type.BigNumber,i=t(7),o=t(11),a=e.collection,s=r.number.isNumber,u=r["boolean"].isBoolean,c=i.isComplex,f=(o.isUnit,a.isCollection),l=r.bignumber.atanh_acoth;e.acoth=function m(r){if(1!=arguments.length)throw new e.error.ArgumentsError("acoth",arguments.length,1);if(s(r))return r>=1||-1>=r?isFinite(r)?(Math.log((r+1)/r)+Math.log(r/(r-1)))/2:0:r?m(new i(r,0)):new i(0,p);if(c(r)){if(0==r.re&&0==r.im)return new i(0,p);var t=r.re*r.re+r.im*r.im;return r=0!=t?new i(r.re/t,-r.im/t):new i(0!=r.re?r.re/0:0,0!=r.im?-(r.im/0):0),e.atanh(r)}if(f(r))return a.deepMap(r,m);if(u(r)||null===r)return r?1/0:new i(0,p);if(r instanceof n)return l(r,n,!0);throw new e.error.UnsupportedTypeError("acoth",e["typeof"](r))};var p=1.5707963267948966}},function(e,r,t){"use strict";e.exports=function(e){var r=t(175),n=e.type.BigNumber,i=t(7),o=e.collection,a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,c=o.isCollection,f=r.bignumber.arcsin_arccsc;e.acsc=function p(r){if(1!=arguments.length)throw new e.error.ArgumentsError("acsc",arguments.length,1);if(a(r))return-1>=r||r>=1?Math.asin(1/r):p(new i(r,0));if(u(r)){if(0==r.re&&0==r.im)return new i(l,1/0);var t=r.re*r.re+r.im*r.im;return r=0!=t?new i(r.re=r.re/t,r.im=-r.im/t):new i(0!=r.re?r.re/0:0,0!=r.im?-(r.im/0):0),e.asin(r)}if(c(r))return o.deepMap(r,p);if(s(r)||null===r)return r?l:new i(l,1/0);if(r instanceof n)return f(r,n,!0);throw new e.error.UnsupportedTypeError("acsc",e["typeof"](r))};var l=1.5707963267948966}},function(e,r,t){"use strict";e.exports=function(e){var r=t(175),n=e.type.BigNumber,i=t(7),o=t(11),a=e.collection,s=r.number.isNumber,u=r["boolean"].isBoolean,c=i.isComplex,f=(o.isUnit,a.isCollection),l=r.bignumber.acosh_asinh_asech_acsch;e.acsch=function p(r){if(1!=arguments.length)throw new e.error.ArgumentsError("acsch",arguments.length,1);if(s(r))return r=1/r,Math.log(r+Math.sqrt(r*r+1));if(c(r)){if(0==r.im)return r=0!=r.re?Math.log(r.re+Math.sqrt(r.re*r.re+1)):1/0,new i(r,0);var t=r.re*r.re+r.im*r.im;return r=0!=t?new i(r.re/t,-r.im/t):new i(0!=r.re?r.re/0:0,0!=r.im?-(r.im/0):0),e.asinh(r)}if(f(r))return a.deepMap(r,p);if(u(r)||null===r)return r?.881373587019543:1/0;if(r instanceof n)return l(r,n,!0,!0);throw new e.error.UnsupportedTypeError("acsch",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(175),n=e.type.BigNumber,i=t(7),o=e.collection,a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,c=o.isCollection,f=r.bignumber.arccos_arcsec;e.asec=function l(r){if(1!=arguments.length)throw new e.error.ArgumentsError("asec",arguments.length,1);if(a(r))return-1>=r||r>=1?Math.acos(1/r):l(new i(r,0));if(u(r)){if(0==r.re&&0==r.im)return new i(0,1/0);var t=r.re*r.re+r.im*r.im;return r=0!=t?new i(r.re=r.re/t,r.im=-r.im/t):new i(0!=r.re?r.re/0:0,0!=r.im?-(r.im/0):0),e.acos(r)}if(c(r))return o.deepMap(r,l);if(s(r)||null===r)return r?0:new i(0,1/0);if(r instanceof n)return f(r,n,!0);throw new e.error.UnsupportedTypeError("asec",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(175),n=e.type.BigNumber,i=t(7),o=t(11),a=e.collection,s=r.number.isNumber,u=r["boolean"].isBoolean,c=i.isComplex,f=(o.isUnit,a.isCollection),l=r.bignumber.acosh_asinh_asech_acsch;e.asech=function p(r){if(1!=arguments.length)throw new e.error.ArgumentsError("asech",arguments.length,1);if(s(r)){if(1>=r&&r>=-1){r=1/r;var t=Math.sqrt(r*r-1);return r>0?Math.log(t+r):new i(Math.log(t-r),Math.PI)}return p(new i(r,0))}if(c(r)){if(0==r.re&&0==r.im)return new i(1/0,0);var o=r.re*r.re+r.im*r.im;return r=0!=o?new i(r.re/o,-r.im/o):new i(0!=r.re?r.re/0:0,0!=r.im?-(r.im/0):0),e.acosh(r)}if(f(r))return a.deepMap(r,p);if(u(r)||null===r)return r?0:1/0;if(r instanceof n)return l(r,n,!1,!0);throw new e.error.UnsupportedTypeError("asech",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(175),n=e.type.BigNumber,i=t(7),o=e.collection,a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,c=o.isCollection,f=r.bignumber.arcsin_arccsc;e.asin=function l(r){if(1!=arguments.length)throw new e.error.ArgumentsError("asin",arguments.length,1);if(a(r))return r>=-1&&1>=r?Math.asin(r):l(new i(r,0));if(u(r)){var t=r.re,p=r.im,m=new i(p*p-t*t+1,-2*t*p),h=e.sqrt(m),g=new i(h.re-p,h.im+t),d=e.log(g);return new i(d.im,-d.re)}if(c(r))return o.deepMap(r,l,!0);if(s(r)||null===r)return Math.asin(r);if(r instanceof n)return f(r,n,!1);throw new e.error.UnsupportedTypeError("asin",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(175),n=e.type.BigNumber,i=t(7),o=t(11),a=e.collection,s=r.number.isNumber,u=r["boolean"].isBoolean,c=i.isComplex,f=(o.isUnit,a.isCollection),l=r.bignumber.acosh_asinh_asech_acsch;e.asinh=function p(r){if(1!=arguments.length)throw new e.error.ArgumentsError("asinh",arguments.length,1);if(s(r))return Math.log(Math.sqrt(r*r+1)+r);if(c(r)){var t=r.im;r.im=-r.re,r.re=t;var i=e.asin(r);return r.re=-r.im,r.im=t,t=i.re,i.re=-i.im,i.im=t,i}if(f(r))return a.deepMap(r,p,!0);if(u(r)||null===r)return r?.881373587019543:0;if(r instanceof n)return l(r,n,!0,!1);throw new e.error.UnsupportedTypeError("asinh",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(175),n=e.type.BigNumber,i=t(7),o=e.collection,a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,c=o.isCollection,f=r.bignumber.arctan_arccot;e.atan=function l(r){if(1!=arguments.length)throw new e.error.ArgumentsError("atan",arguments.length,1);if(a(r))return Math.atan(r);if(u(r)){if(0==r.re){if(1==r.im)return new i(0,1/0);if(-1==r.im)return new i(0,-(1/0))}var t=r.re,p=r.im,m=t*t+(1-p)*(1-p),h=new i((1-p*p-t*t)/m,-2*t/m),g=e.log(h);return new i(-.5*g.im,.5*g.re)}if(c(r))return o.deepMap(r,l,!0);if(s(r)||null===r)return Math.atan(r);if(r instanceof n)return f(r,n,!1);throw new e.error.UnsupportedTypeError("atan",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(175),n=e.type.BigNumber,i=t(7),o=e.collection,a=r.number.isNumber,s=r["boolean"].isBoolean,u=(i.isComplex,o.isCollection),c=r.bignumber.arctan2;e.atan2=function f(r,t){if(2!=arguments.length)throw new e.error.ArgumentsError("atan2",arguments.length,2);if(a(r)){if(a(t))return Math.atan2(r,t);if(t instanceof n)return c(new n(r),t,n)}if(u(r)||u(t))return o.deepMap2(r,t,f);if(s(r)||null===r)return f(r?1:0,t);if(s(t)||null===t)return f(r,t?1:0);if(r instanceof n)return a(t)?c(r,new n(t),n):t instanceof n?c(r,t,n):f(r.toNumber(),t);if(t instanceof n)return r instanceof n?c(r,t,n):f(r,t.toNumber());throw new e.error.UnsupportedTypeError("atan2",e["typeof"](r),e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(175),n=e.type.BigNumber,i=t(7),o=t(11),a=e.collection,s=r.number.isNumber,u=r["boolean"].isBoolean,c=i.isComplex,f=(o.isUnit,a.isCollection),l=r.bignumber.atanh_acoth;e.atanh=function p(r){if(1!=arguments.length)throw new e.error.ArgumentsError("atanh",arguments.length,1);if(s(r))return 1>=r&&r>=-1?Math.log((1+r)/(1-r))/2:p(new i(r,0));if(c(r)){var t=r.re>1&&0==r.im,o=1-r.re,m=1+r.re,h=o*o+r.im*r.im;r=0!=h?new i((m*o-r.im*r.im)/h,(r.im*o+m*r.im)/h):new i(-1!=r.re?r.re/0:0,0!=r.im?r.im/0:0);var g=r.re;return r.re=Math.log(Math.sqrt(r.re*r.re+r.im*r.im))/2,r.im=Math.atan2(r.im,g)/2,t&&(r.im=-r.im),r}if(f(r))return a.deepMap(r,p,!0);if(u(r)||null===r)return r?1/0:0;if(r instanceof n)return l(r,n,!1);throw new e.error.UnsupportedTypeError("atanh",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(175),i=e.type.BigNumber,o=t(7),a=t(11),s=e.collection,u=n.number.isNumber,c=n["boolean"].isBoolean,f=o.isComplex,l=a.isUnit,p=s.isCollection,m=n.bignumber.cos_sin_sec_csc;e.cos=function h(r){if(1!=arguments.length)throw new e.error.ArgumentsError("cos",arguments.length,1);if(u(r))return Math.cos(r);if(f(r))return new o(Math.cos(r.re)*e.cosh(-r.im),Math.sin(r.re)*e.sinh(-r.im));if(l(r)){if(!r.hasBase(a.BASE_UNITS.ANGLE))throw new TypeError("Unit in function cos is no angle");return Math.cos(r.value)}if(p(r))return s.deepMap(r,h);if(c(r)||null===r)return Math.cos(r);if(r instanceof i)return m(r,i,0,!1);throw new e.error.UnsupportedTypeError("cos",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(175),n=e.type.BigNumber,i=t(7),o=t(11),a=e.collection,s=r.number.isNumber,u=r["boolean"].isBoolean,c=i.isComplex,f=o.isUnit,l=a.isCollection,p=r.bignumber.cosh_sinh_csch_sech;e.cosh=function m(r){if(1!=arguments.length)throw new e.error.ArgumentsError("cosh",arguments.length,1);if(s(r))return(Math.exp(r)+Math.exp(-r))/2;if(c(r)){var t=Math.exp(r.re),h=Math.exp(-r.re);return new i(Math.cos(r.im)*(t+h)/2,Math.sin(r.im)*(t-h)/2)}if(f(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function cosh is no angle");return m(r.value)}if(l(r))return a.deepMap(r,m);if(u(r)||null===r)return m(r?1:0);if(r instanceof n)return p(r,n,!1,!1);throw new e.error.UnsupportedTypeError("cosh",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(175),i=e.type.BigNumber,o=t(7),a=t(11),s=e.collection,u=n.number.isNumber,c=n["boolean"].isBoolean,f=o.isComplex,l=a.isUnit,p=s.isCollection,m=n.bignumber.tan_cot;e.cot=function h(r){if(1!=arguments.length)throw new e.error.ArgumentsError("cot",arguments.length,1);if(u(r))return 1/Math.tan(r);if(f(r)){var t=Math.exp(-4*r.im)-2*Math.exp(-2*r.im)*Math.cos(2*r.re)+1;return new o(2*Math.exp(-2*r.im)*Math.sin(2*r.re)/t,(Math.exp(-4*r.im)-1)/t)}if(l(r)){if(!r.hasBase(a.BASE_UNITS.ANGLE))throw new TypeError("Unit in function cot is no angle");return 1/Math.tan(r.value)}if(p(r))return s.deepMap(r,h);if(c(r)||null===r)return h(+r);if(r instanceof i)return m(r,i,!0);throw new e.error.UnsupportedTypeError("cot",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(175),n=e.type.BigNumber,i=t(7),o=t(11),a=e.collection,s=r.number.isNumber,u=r["boolean"].isBoolean,c=i.isComplex,f=o.isUnit,l=a.isCollection,p=r.bignumber.tanh_coth;e.coth=function m(r){if(1!=arguments.length)throw new e.error.ArgumentsError("coth",arguments.length,1);if(s(r)){var t=Math.exp(2*r);return(t+1)/(t-1)}if(c(r)){var h=Math.exp(2*r.re),g=h*Math.cos(2*r.im),d=h*Math.sin(2*r.im),v=(g-1)*(g-1)+d*d;return new i(((g+1)*(g-1)+d*d)/v,-2*d/v)}if(f(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function coth is no angle");return m(r.value)}if(l(r))return a.deepMap(r,m);if(u(r)||null===r)return m(r?1:0);if(r instanceof n)return p(r,n,!0);throw new e.error.UnsupportedTypeError("coth",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(175),i=e.type.BigNumber,o=t(7),a=t(11),s=e.collection,u=n.number.isNumber,c=n["boolean"].isBoolean,f=o.isComplex,l=a.isUnit,p=s.isCollection,m=n.bignumber.cos_sin_sec_csc;e.csc=function h(r){if(1!=arguments.length)throw new e.error.ArgumentsError("csc",arguments.length,1);if(u(r))return 1/Math.sin(r);if(f(r)){var t=.25*(Math.exp(-2*r.im)+Math.exp(2*r.im))-.5*Math.cos(2*r.re);return new o(.5*Math.sin(r.re)*(Math.exp(-r.im)+Math.exp(r.im))/t,.5*Math.cos(r.re)*(Math.exp(-r.im)-Math.exp(r.im))/t)}if(l(r)){if(!r.hasBase(a.BASE_UNITS.ANGLE))throw new TypeError("Unit in function csc is no angle");return 1/Math.sin(r.value)}if(p(r))return s.deepMap(r,h);if(c(r)||null===r)return h(+r);if(r instanceof i)return m(r,i,1,!0);throw new e.error.UnsupportedTypeError("csc",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(175),n=e.type.BigNumber,i=t(7),o=t(11),a=e.collection,s=r.number,u=r.number.isNumber,c=r["boolean"].isBoolean,f=i.isComplex,l=o.isUnit,p=a.isCollection,m=r.bignumber.cosh_sinh_csch_sech;e.csch=function h(r){if(1!=arguments.length)throw new e.error.ArgumentsError("csch",arguments.length,1);if(u(r))return 0==r?Number.POSITIVE_INFINITY:Math.abs(2/(Math.exp(r)-Math.exp(-r)))*s.sign(r);if(f(r)){var t=Math.exp(r.re),g=Math.exp(-r.re),d=Math.cos(r.im)*(t-g),v=Math.sin(r.im)*(t+g),y=d*d+v*v;return new i(2*d/y,-2*v/y)}if(l(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function csch is no angle");return h(r.value)}if(p(r))return a.deepMap(r,h);if(c(r)||null===r)return h(r?1:0);if(r instanceof n)return m(r,n,!0,!0);throw new e.error.UnsupportedTypeError("csch",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(175),i=e.type.BigNumber,o=t(7),a=t(11),s=e.collection,u=n.number.isNumber,c=n["boolean"].isBoolean,f=o.isComplex,l=a.isUnit,p=s.isCollection,m=n.bignumber.cos_sin_sec_csc;e.sec=function h(r){if(1!=arguments.length)throw new e.error.ArgumentsError("sec",arguments.length,1);if(u(r))return 1/Math.cos(r);if(f(r)){var t=.25*(Math.exp(-2*r.im)+Math.exp(2*r.im))+.5*Math.cos(2*r.re);return new o(.5*Math.cos(r.re)*(Math.exp(-r.im)+Math.exp(r.im))/t,.5*Math.sin(r.re)*(Math.exp(r.im)-Math.exp(-r.im))/t)}if(l(r)){if(!r.hasBase(a.BASE_UNITS.ANGLE))throw new TypeError("Unit in function sec is no angle");return 1/Math.cos(r.value)}if(p(r))return s.deepMap(r,h);if(c(r)||null===r)return h(+r);if(r instanceof i)return m(r,i,0,!0);throw new e.error.UnsupportedTypeError("sec",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(175),n=e.type.BigNumber,i=t(7),o=t(11),a=e.collection,s=r.number.isNumber,u=r["boolean"].isBoolean,c=i.isComplex,f=o.isUnit,l=a.isCollection,p=r.bignumber.cosh_sinh_csch_sech;e.sech=function m(r){if(1!=arguments.length)throw new e.error.ArgumentsError("sech",arguments.length,1);if(s(r))return 2/(Math.exp(r)+Math.exp(-r));if(c(r)){var t=Math.exp(r.re),h=Math.exp(-r.re),g=Math.cos(r.im)*(t+h),d=Math.sin(r.im)*(t-h),v=g*g+d*d;return new i(2*g/v,-2*d/v)}if(f(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function sech is no angle");return m(r.value)}if(l(r))return a.deepMap(r,m);if(u(r)||null===r)return m(r?1:0);if(r instanceof n)return p(r,n,!1,!0);throw new e.error.UnsupportedTypeError("sech",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(175),i=e.type.BigNumber,o=t(7),a=t(11),s=e.collection,u=n.number.isNumber,c=n["boolean"].isBoolean,f=o.isComplex,l=a.isUnit,p=s.isCollection,m=n.bignumber.cos_sin_sec_csc;e.sin=function h(r){if(1!=arguments.length)throw new e.error.ArgumentsError("sin",arguments.length,1);if(u(r))return Math.sin(r);if(f(r))return new o(Math.sin(r.re)*e.cosh(-r.im),Math.cos(r.re)*e.sinh(r.im));if(l(r)){if(!r.hasBase(a.BASE_UNITS.ANGLE))throw new TypeError("Unit in function sin is no angle");return Math.sin(r.value)}if(p(r))return s.deepMap(r,h,!0);if(c(r)||null===r)return Math.sin(r);if(r instanceof i)return m(r,i,1,!1);throw new e.error.UnsupportedTypeError("sin",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(175),n=e.type.BigNumber,i=t(7),o=t(11),a=e.collection,s=r.number.isNumber,u=r["boolean"].isBoolean,c=i.isComplex,f=o.isUnit,l=a.isCollection,p=r.bignumber.cosh_sinh_csch_sech;e.sinh=function m(r){if(1!=arguments.length)throw new e.error.ArgumentsError("sinh",arguments.length,1);if(s(r))return Math.abs(r)<1?r+r*r*r/6+r*r*r*r*r/120:(Math.exp(r)-Math.exp(-r))/2;if(c(r)){var t=Math.cos(r.im),h=Math.sin(r.im),g=Math.exp(r.re),d=Math.exp(-r.re);return new i(t*(g-d)/2,h*(g+d)/2)}if(f(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function sinh is no angle");return m(r.value)}if(l(r))return a.deepMap(r,m,!0);if(u(r)||null===r)return m(r?1:0);if(r instanceof n)return p(r,n,!0,!1);throw new e.error.UnsupportedTypeError("sinh",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(175),i=e.type.BigNumber,o=t(7),a=t(11),s=e.collection,u=n.number.isNumber,c=n["boolean"].isBoolean,f=o.isComplex,l=a.isUnit,p=s.isCollection,m=n.bignumber.tan_cot;e.tan=function h(r){if(1!=arguments.length)throw new e.error.ArgumentsError("tan",arguments.length,1);if(u(r))return Math.tan(r);if(f(r)){var t=Math.exp(-4*r.im)+2*Math.exp(-2*r.im)*Math.cos(2*r.re)+1;return new o(2*Math.exp(-2*r.im)*Math.sin(2*r.re)/t,(1-Math.exp(-4*r.im))/t)}if(l(r)){if(!r.hasBase(a.BASE_UNITS.ANGLE))throw new TypeError("Unit in function tan is no angle");return Math.tan(r.value)}if(p(r))return s.deepMap(r,h,!0);if(c(r)||null===r)return Math.tan(r);if(r instanceof i)return m(r,i,!1);throw new e.error.UnsupportedTypeError("tan",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(175),n=e.type.BigNumber,i=t(7),o=t(11),a=e.collection,s=r.number.isNumber,u=r["boolean"].isBoolean,c=i.isComplex,f=o.isUnit,l=a.isCollection,p=r.bignumber.tanh_coth;e.tanh=function m(r){if(1!=arguments.length)throw new e.error.ArgumentsError("tanh",arguments.length,1);if(s(r)){var t=Math.exp(2*r);return(t-1)/(t+1)}if(c(r)){var h=Math.exp(2*r.re),g=h*Math.cos(2*r.im),d=h*Math.sin(2*r.im),v=(g+1)*(g+1)+d*d;return new i(((g-1)*(g+1)+d*d)/v,2*d/v)}if(f(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function tanh is no angle");return m(r.value)}if(l(r))return a.deepMap(r,m,!0);if(u(r)||null===r)return m(r?1:0);if(r instanceof n)return p(r,n,!1);throw new e.error.UnsupportedTypeError("tanh",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(175),n=t(11),i=e.collection,o=r.string.isString,a=n.isUnit,s=i.isCollection;e.to=function u(r,t){if(2!=arguments.length)throw new e.error.ArgumentsError("to",arguments.length,2);if(a(r)&&(a(t)||o(t)))return r.to(t);if(s(r)||s(t))return i.deepMap2(r,t,u);throw new e.error.UnsupportedTypeError("to",e["typeof"](r),e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(175),n=r.object;e.clone=function(r){if(1!=arguments.length)throw new e.error.ArgumentsError("clone",arguments.length,1);return n.clone(r)}}},function(e,r,t){"use strict";e.exports=function(e){function r(e,r){if("function"==typeof r)return e.filter(function(e){return r(e)});if(r instanceof RegExp)return e.filter(function(e){return r.test(e)});throw new TypeError("Function or RegExp expected")}var t=e.type.Matrix;e.filter=function(n,i){if(2!==arguments.length)throw new e.error.ArgumentsError("filter",arguments.length,2);if(n instanceof t){var o=n.size();if(o.length>1)throw new Error("Only one dimensional matrices supported");return e.matrix(r(n.toArray(),i))}if(Array.isArray(n))return r(n,i);throw new e.error.UnsupportedTypeError("filter",e["typeof"](n),e["typeof"](compare))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(175),n=r.string;e.format=function(r,t){var i=arguments.length;if(1!==i&&2!==i)throw new e.error.ArgumentsError("format",i,1,2);return n.format(r,t)}}},function(e,r,t){"use strict";e.exports=function(e){function r(r,t,n){(n.override||void 0===e[r])&&(n.wrap&&"function"==typeof t?(e[r]=function(){for(var r=[],n=0,i=arguments.length;i>n;n++){var o=arguments[n];r[n]=o&&o.valueOf()}return t.apply(e,r)},t&&t.transform&&(e[r].transform=t.transform)):e[r]=t,t&&t.transform&&(e.expression.transform[r]=t.transform),e.chaining.Chain.createProxy(r,t))}function n(e){return"function"==typeof e||s(e)||u(e)||c(e)||f(e)}var i=t(175),o=t(7),a=t(11),s=i.number.isNumber,u=i.string.isString,c=o.isComplex,f=a.isUnit;e["import"]=function l(i,o){var a=arguments.length;if(1!=a&&2!=a)throw new e.error.ArgumentsError("import",a,1,2);var s,c={override:o&&o.override||!1,wrap:o&&o.wrap||!1};if(u(i)){var f=t(207)(i);l(f,o)}else{if("object"!=typeof i)throw new TypeError("Object or module name expected");for(s in i)if(i.hasOwnProperty(s)){var p=i[s];n(p)?r(s,p,c):l(p,o)}}}}},function(e,r,t){"use strict";e.exports=function(e){function r(e,r){var t=function(n,i){return Array.isArray(n)?n.map(function(e,r){return t(e,i.concat(r))}):r(n,i,e)};return t(e,[])}var t=e.type.Matrix;e.map=function(n,i){if(2!=arguments.length)throw new e.error.ArgumentsError("map",arguments.length,2);if(Array.isArray(n))return r(n,i);if(n instanceof t)return n.map(i);throw new e.error.UnsupportedTypeError("map",e["typeof"](n))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(175),n=r.string.isString;e.print=function(r,t,i){var o=arguments.length;if(2!=o&&3!=o)throw new e.error.ArgumentsError("print",o,2,3);if(!n(r))throw new TypeError("String expected as first parameter in function format");if(!(t instanceof Object))throw new TypeError("Object expected as second parameter in function format");return r.replace(/\$([\w\.]+)/g,function(r,o){for(var a=o.split("."),s=t[a.shift()];a.length&&void 0!==s;){var u=a.shift();s=u?s[u]:s+"."}return void 0!==s?n(s)?s:e.format(s,i):r})}}},function(e,r,t){"use strict";e.exports=function(e){var r=e.type.Matrix;e.sort=function(t,n){var i=null;if(1===arguments.length)i=e.compare;else{if(2!==arguments.length)throw new e.error.ArgumentsError("sort",arguments.length,1,2);if("function"==typeof n)i=n;else if("asc"===n)i=e.compare;else{if("desc"!==n)throw new e.error.UnsupportedTypeError("sort",e["typeof"](t),e["typeof"](n));i=function(r,t){return-e.compare(r,t)}}}if(t instanceof r){var o=t.size();if(o.length>1)throw new Error("Only one dimensional matrices supported");return e.matrix(t.toArray().sort(i))}if(Array.isArray(t))return t.sort(i);throw new e.error.UnsupportedTypeError("sort",e["typeof"](t),e["typeof"](n))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(338),n=t(7),i=e.type.Matrix,o=t(11),a=t(9),s=t(8),u=t(12);e["typeof"]=function(t){if(1!=arguments.length)throw new e.error.ArgumentsError("typeof",arguments.length,1);var c=r.type(t);if("object"===c){if(t instanceof n)return"complex";if(t instanceof i)return"matrix";if(t instanceof o)return"unit";if(t instanceof a)return"index";if(t instanceof s)return"range";if(t instanceof u)return"help";if(t instanceof e.type.BigNumber)return"bignumber";if(t instanceof e.chaining.Chain)return"chain"}return c}}},function(e,r,t){"use strict";e.exports=function(e){function r(e,r){var t=function(n,i){Array.isArray(n)?n.forEach(function(e,r){t(e,i.concat(r))}):r(n,i,e)};t(e,[])}var t=e.type.Matrix;e.forEach=function(n,i){if(2!=arguments.length)throw new e.error.ArgumentsError("forEach",arguments.length,2);if(Array.isArray(n))return r(n,i);if(n instanceof t)return n.forEach(i);throw new e.error.UnsupportedTypeError("forEach",e["typeof"](n))}}},function(e,r,t){"use strict";function n(e){var r=String(e).toLowerCase().match(/^0*?(-?)(\d+\.?\d*)(e([+-]?\d+))?$/);if(!r)throw new SyntaxError("Invalid number");var t=r[1],n=r[2],i=parseFloat(r[4]||"0"),o=n.indexOf(".");i+=-1!==o?o-1:n.length-1,this.sign=t,this.coefficients=n.replace(".","").replace(/^0*/,function(e){return i-=e.length,""}).replace(/0*$/,"").split("").map(function(e){return parseInt(e)}),0===this.coefficients.length&&(this.coefficients.push(0),i++),this.exponent=i}function i(e){for(var r=[],t=0;e>t;t++)r.push(0);return r}n.prototype.toFixed=function(e){var r=this.roundDigits(this.exponent+1+(e||0)),t=r.coefficients,n=r.exponent+1,o=n+(e||0);return t.lengthn&&(t=i(-n+1).concat(t),n=1),e&&t.splice(n,0,0===n?"0.":"."),this.sign+t.join("")},n.prototype.toExponential=function(e){var r=e?this.roundDigits(e):this.clone(),t=r.coefficients,n=r.exponent;t.length0?"."+t.join(""):"")+"e"+(n>=0?"+":"")+n},n.prototype.toPrecision=function(e,r){var t=r&&void 0!==r.lower?r.lower:.001,n=r&&void 0!==r.upper?r.upper:1e5,o=Math.abs(Math.pow(10,this.exponent));if(t>o||o>=n)return this.toExponential(e);var a=e?this.roundDigits(e):this.clone(),s=a.coefficients,u=a.exponent;s.length0?u:0;return c=e;)t.unshift(0),r.exponent++,e++;if(t.length>e){var n=t.splice(e);if(n[0]>=5){var i=e-1;for(t[i]++;10===t[i];)t.pop(),0===i&&(t.unshift(0),r.exponent++,i++),i--,t[i]++}}return r},e.exports=n},function(e,r,t){"use strict";function n(e,t,n){var o,a,s=e.constructor,u=+(e.s<0),c=+(t.s<0);if(u){o=i(r.not(e));for(var f=0;f0;)n(l[--h],p[--g])==d&&(v=v.plus(y)),y=y.times(x);for(;g>0;)n(m,p[--g])==d&&(v=v.plus(y)),y=y.times(x);return s.config({precision:w}),0==d&&(v.s=-v.s),v}function i(e){for(var r=e.c,t=r[0]+"",n=1;n0)if(++s>c)for(s-=c;s--;u+="0");else c>s&&(u=u.slice(0,s)+"."+u.slice(s));for(var f=[0],n=0;n1&&(null==f[a+1]&&(f[a+1]=0),f[a+1]+=f[a]>>1,f[a]&=1)}return f.reverse()}function o(e,t){var n=t.precision,i=-(n+4),o=n+8-e.e,a=25-e.e,s=Math.max(1.442695*Math.log(n+2)|5,5);t.config({precision:a});var u=0,c=new t(Math.asin(e.toNumber())+"");do{var l=r.cos_sin_sec_csc(c,t,1,!1),p=f(l);l.isZero()||(l.s=c.s);var m=l.minus(e).div(p);c=c.minus(m),a=Math.min(2*a,o),t.config({precision:a})}while(2*m.e>=i&&!m.isZero()&&++u<=s);if(u==s)throw new Error("asin() failed to converge to the requested accuracy.Try with a higher precision.");return t.config({precision:n}),c.toDP(n-1)}function a(e,r){var t=e.constructor;t.config({precision:r+Math.log(r)|4});for(var n=new t(1),i=e,o=0/0,a=e.times(e),s=e,u=new t(n),c=new t(n),f=new t(n),l=3;!i.equals(o);l+=2)s=s.times(a),u=u.times(f),c=c.times(f.plus(n)),o=i,f=new t(l),i=i.plus(s.times(u).div(f.times(c)));return t.config({precision:r}),i.toDP(r-1)}function s(e){for(var r=e,t=0/0,n=e.times(e),i=e,o=!0,a=3;!r.equals(t);a+=2)i=i.times(n),t=r,o=!o,r=o?r.plus(i.div(a)):r.minus(i.div(a));return r}function u(e,r){for(var t=e.constructor.ONE,n=e,i=0/0,o=e.times(e),a=r?n:n=t,s=t,u=!0,c=r;!n.equals(i);c+=2)a=a.times(o),s=s.times(c+1).times(c+2),i=n,u=!u,n=u?n.plus(a.div(s)):n.minus(a.div(s));return n}function c(e,t,n){var i=r.pi(t+2),o=r.tau(t);if(e.abs().lte(i.toDP(e.dp())))return[e,!1];var a=e.constructor;if(e.div(i.toDP(e.dp())).toNumber()%2==0)return[new a(1^n),!0];var s=e.mod(o);return s.toDP(e.dp(),1).isZero()?[new a(1^n),!0]:(s.gt(i)&&(n?(s=s.minus(i),s.s=-s.s):s=o.minus(s)),s.constructor=a,[s,!1])}function f(e){var r=e.constructor,t=r.precision;r.config({precision:t+2});var n=r.ONE.minus(e.times(e)).sqrt();return r.config({precision:t}),n.toDP(t-1)}var l=t(5),p=t(3).isNumber,m=(t(3).digits,t(339).memoize);r.isBigNumber=function(e){return e instanceof l},r.e=m(function(e){var r=l.constructor({precision:e});return new r(1).exp()}),r.phi=m(function(e){var r=l.constructor({precision:e});return new r(1).plus(new r(5).sqrt()).div(2)}),r.pi=m(function(e){var r=l.constructor({precision:e+4}),t=new r(4).times(s(new r(1).div(5))).minus(s(new r(1).div(239)));return r.config({precision:e}),new r(4).times(t)}),r.tau=m(function(e){var t=r.pi(e+2),n=l.constructor({precision:e});return new n(2).times(t); +if(!(a(c)||c instanceof i||c instanceof n))throw new e.error.UnsupportedTypeError("median",e["typeof"](c));return e.divide(e.add(s,c),2)}var f=t[(o-1)/2];if(!(a(f)||f instanceof i||f instanceof n))throw new e.error.UnsupportedTypeError("median",e["typeof"](f));return f}var n=(e.type.Matrix,t(11)),i=e.type.BigNumber,o=e.collection,a=t(3).isNumber,s=o.isCollection,u=t(169).flatten;e.median=function(e){if(0==arguments.length)throw new SyntaxError("Function median requires one or more parameters (0 provided)");if(s(e)){if(1==arguments.length)return r(e.valueOf());throw 2==arguments.length?new Error("median(A, dim) is not yet supported"):new SyntaxError("Wrong number of parameters")}return r(Array.prototype.slice.call(arguments))}}},function(e,r,t){"use strict";e.exports=function(e){function r(r){var n=void 0;if(t.deepForEach(r,function(r){n=void 0===n?r:e.multiply(n,r)}),void 0===n)throw new Error("Cannot calculate prod of an empty array");return n}var t=(e.type.Matrix,e.collection),n=t.isCollection;e.prod=function(e){if(0==arguments.length)throw new SyntaxError("Function prod requires one or more parameters (0 provided)");if(n(e)){if(1==arguments.length)return r(e);throw 2==arguments.length?new Error("prod(A, dim) is not yet supported"):new SyntaxError("Wrong number of parameters")}return r(arguments)}}},function(e,r,t){"use strict";e.exports=function(e){e.std=function(r,t){if(0==arguments.length)throw new SyntaxError("Function std requires one or more parameters (0 provided)");var n=e["var"].apply(null,arguments);return e.sqrt(n)}}},function(e,r,t){"use strict";e.exports=function(e){function r(r){var n=void 0;if(t.deepForEach(r,function(r){n=void 0===n?r:e.add(n,r)}),void 0===n)throw new Error("Cannot calculate sum of an empty array");return n}var t=(e.type.Matrix,e.collection),n=t.isCollection;e.sum=function(e){if(0==arguments.length)throw new SyntaxError("Function sum requires one or more parameters (0 provided)");if(n(e)){if(1==arguments.length)return r(e);throw 2==arguments.length?new Error("sum(A, dim) is not yet supported"):new SyntaxError("Wrong number of parameters")}return r(arguments)}}},function(e,r,t){"use strict";e.exports=function(e){function r(r,t){var o=0,a=0;if(i.deepForEach(r,function(r){o=e.add(o,r),a++}),0===a)throw new Error("Cannot calculate var of an empty array");var s=e.divide(o,a);switch(o=0,i.deepForEach(r,function(r){var t=e.subtract(r,s);o=e.add(o,e.multiply(t,t))}),t){case"uncorrected":return e.divide(o,a);case"biased":return e.divide(o,a+1);case"unbiased":var u=o instanceof n?new n(0):0;return 1==a?u:e.divide(o,a-1);default:throw new Error('Unknown normalization "'+t+'". Choose "unbiased" (default), "uncorrected", or "biased".')}}var n=(e.type.Matrix,e.type.BigNumber),i=e.collection,o=i.isCollection,a=t(177).isString,s="unbiased";e["var"]=function(e,t){if(0==arguments.length)throw new SyntaxError("Function var requires one or more parameters (0 provided)");if(o(e)){if(1==arguments.length)return r(e,s);if(2==arguments.length){if(!a(t))throw new Error("String expected for parameter normalization");return r(e,t)}throw new SyntaxError("Wrong number of parameters")}return r(arguments,s)}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(176),n=e.type.BigNumber,i=t(7),o=e.collection,a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,c=o.isCollection,f=r.bignumber.arccos_arcsec;e.acos=function l(r){if(1!=arguments.length)throw new e.error.ArgumentsError("acos",arguments.length,1);if(a(r))return r>=-1&&1>=r?Math.acos(r):l(new i(r,0));if(u(r)){var t=new i(r.im*r.im-r.re*r.re+1,-2*r.re*r.im),p=e.sqrt(t),m=new i(p.re-r.im,p.im+r.re),h=e.log(m);return new i(1.5707963267948966-h.im,h.re)}if(c(r))return o.deepMap(r,l);if(s(r)||null===r)return Math.acos(r);if(r instanceof n)return f(r,n,!1);throw new e.error.UnsupportedTypeError("acos",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(176),n=e.type.BigNumber,i=t(7),o=t(11),a=e.collection,s=r.number.isNumber,u=r["boolean"].isBoolean,c=i.isComplex,f=(o.isUnit,a.isCollection),l=r.bignumber.acosh_asinh_asech_acsch;e.acosh=function p(r){if(1!=arguments.length)throw new e.error.ArgumentsError("acosh",arguments.length,1);if(s(r))return r>=1?Math.log(Math.sqrt(r*r-1)+r):-1>=r?new i(Math.log(Math.sqrt(r*r-1)-r),Math.PI):p(new i(r,0));if(c(r)){var t,o=e.acos(r);return o.im<=0?(t=o.re,o.re=-o.im,o.im=t):(t=o.im,o.im=-o.re,o.re=t),o}if(f(r))return a.deepMap(r,p);if(u(r)||null===r)return r?0:new i(0,1.5707963267948966);if(r instanceof n)return l(r,n,!1,!1);throw new e.error.UnsupportedTypeError("acosh",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(176),n=e.type.BigNumber,i=t(7),o=e.collection,a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,c=o.isCollection,f=r.bignumber.arctan_arccot;e.acot=function p(r){if(1!=arguments.length)throw new e.error.ArgumentsError("acot",arguments.length,1);if(a(r))return r?Math.atan(1/r):l;if(u(r)){if(0==r.im)return new i(r.re?Math.atan(1/r.re):l,0);var t=r.re*r.re+r.im*r.im;return r=0!=t?new i(r.re=r.re/t,r.im=-r.im/t):new i(0!=r.re?r.re/0:0,0!=r.im?-(r.im/0):0),e.atan(r)}if(c(r))return o.deepMap(r,p);if(s(r)||null===r)return r?.7853981633974483:l;if(r instanceof n)return f(r,n,!0);throw new e.error.UnsupportedTypeError("acot",e["typeof"](r))};var l=1.5707963267948966}},function(e,r,t){"use strict";e.exports=function(e){var r=t(176),n=e.type.BigNumber,i=t(7),o=t(11),a=e.collection,s=r.number.isNumber,u=r["boolean"].isBoolean,c=i.isComplex,f=(o.isUnit,a.isCollection),l=r.bignumber.atanh_acoth;e.acoth=function m(r){if(1!=arguments.length)throw new e.error.ArgumentsError("acoth",arguments.length,1);if(s(r))return r>=1||-1>=r?isFinite(r)?(Math.log((r+1)/r)+Math.log(r/(r-1)))/2:0:r?m(new i(r,0)):new i(0,p);if(c(r)){if(0==r.re&&0==r.im)return new i(0,p);var t=r.re*r.re+r.im*r.im;return r=0!=t?new i(r.re/t,-r.im/t):new i(0!=r.re?r.re/0:0,0!=r.im?-(r.im/0):0),e.atanh(r)}if(f(r))return a.deepMap(r,m);if(u(r)||null===r)return r?1/0:new i(0,p);if(r instanceof n)return l(r,n,!0);throw new e.error.UnsupportedTypeError("acoth",e["typeof"](r))};var p=1.5707963267948966}},function(e,r,t){"use strict";e.exports=function(e){var r=t(176),n=e.type.BigNumber,i=t(7),o=e.collection,a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,c=o.isCollection,f=r.bignumber.arcsin_arccsc;e.acsc=function p(r){if(1!=arguments.length)throw new e.error.ArgumentsError("acsc",arguments.length,1);if(a(r))return-1>=r||r>=1?Math.asin(1/r):p(new i(r,0));if(u(r)){if(0==r.re&&0==r.im)return new i(l,1/0);var t=r.re*r.re+r.im*r.im;return r=0!=t?new i(r.re=r.re/t,r.im=-r.im/t):new i(0!=r.re?r.re/0:0,0!=r.im?-(r.im/0):0),e.asin(r)}if(c(r))return o.deepMap(r,p);if(s(r)||null===r)return r?l:new i(l,1/0);if(r instanceof n)return f(r,n,!0);throw new e.error.UnsupportedTypeError("acsc",e["typeof"](r))};var l=1.5707963267948966}},function(e,r,t){"use strict";e.exports=function(e){var r=t(176),n=e.type.BigNumber,i=t(7),o=t(11),a=e.collection,s=r.number.isNumber,u=r["boolean"].isBoolean,c=i.isComplex,f=(o.isUnit,a.isCollection),l=r.bignumber.acosh_asinh_asech_acsch;e.acsch=function p(r){if(1!=arguments.length)throw new e.error.ArgumentsError("acsch",arguments.length,1);if(s(r))return r=1/r,Math.log(r+Math.sqrt(r*r+1));if(c(r)){if(0==r.im)return r=0!=r.re?Math.log(r.re+Math.sqrt(r.re*r.re+1)):1/0,new i(r,0);var t=r.re*r.re+r.im*r.im;return r=0!=t?new i(r.re/t,-r.im/t):new i(0!=r.re?r.re/0:0,0!=r.im?-(r.im/0):0),e.asinh(r)}if(f(r))return a.deepMap(r,p);if(u(r)||null===r)return r?.881373587019543:1/0;if(r instanceof n)return l(r,n,!0,!0);throw new e.error.UnsupportedTypeError("acsch",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(176),n=e.type.BigNumber,i=t(7),o=e.collection,a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,c=o.isCollection,f=r.bignumber.arccos_arcsec;e.asec=function l(r){if(1!=arguments.length)throw new e.error.ArgumentsError("asec",arguments.length,1);if(a(r))return-1>=r||r>=1?Math.acos(1/r):l(new i(r,0));if(u(r)){if(0==r.re&&0==r.im)return new i(0,1/0);var t=r.re*r.re+r.im*r.im;return r=0!=t?new i(r.re=r.re/t,r.im=-r.im/t):new i(0!=r.re?r.re/0:0,0!=r.im?-(r.im/0):0),e.acos(r)}if(c(r))return o.deepMap(r,l);if(s(r)||null===r)return r?0:new i(0,1/0);if(r instanceof n)return f(r,n,!0);throw new e.error.UnsupportedTypeError("asec",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(176),n=e.type.BigNumber,i=t(7),o=t(11),a=e.collection,s=r.number.isNumber,u=r["boolean"].isBoolean,c=i.isComplex,f=(o.isUnit,a.isCollection),l=r.bignumber.acosh_asinh_asech_acsch;e.asech=function p(r){if(1!=arguments.length)throw new e.error.ArgumentsError("asech",arguments.length,1);if(s(r)){if(1>=r&&r>=-1){r=1/r;var t=Math.sqrt(r*r-1);return r>0?Math.log(t+r):new i(Math.log(t-r),Math.PI)}return p(new i(r,0))}if(c(r)){if(0==r.re&&0==r.im)return new i(1/0,0);var o=r.re*r.re+r.im*r.im;return r=0!=o?new i(r.re/o,-r.im/o):new i(0!=r.re?r.re/0:0,0!=r.im?-(r.im/0):0),e.acosh(r)}if(f(r))return a.deepMap(r,p);if(u(r)||null===r)return r?0:1/0;if(r instanceof n)return l(r,n,!1,!0);throw new e.error.UnsupportedTypeError("asech",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(176),n=e.type.BigNumber,i=t(7),o=e.collection,a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,c=o.isCollection,f=r.bignumber.arcsin_arccsc;e.asin=function l(r){if(1!=arguments.length)throw new e.error.ArgumentsError("asin",arguments.length,1);if(a(r))return r>=-1&&1>=r?Math.asin(r):l(new i(r,0));if(u(r)){var t=r.re,p=r.im,m=new i(p*p-t*t+1,-2*t*p),h=e.sqrt(m),g=new i(h.re-p,h.im+t),d=e.log(g);return new i(d.im,-d.re)}if(c(r))return o.deepMap(r,l,!0);if(s(r)||null===r)return Math.asin(r);if(r instanceof n)return f(r,n,!1);throw new e.error.UnsupportedTypeError("asin",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(176),n=e.type.BigNumber,i=t(7),o=t(11),a=e.collection,s=r.number.isNumber,u=r["boolean"].isBoolean,c=i.isComplex,f=(o.isUnit,a.isCollection),l=r.bignumber.acosh_asinh_asech_acsch;e.asinh=function p(r){if(1!=arguments.length)throw new e.error.ArgumentsError("asinh",arguments.length,1);if(s(r))return Math.log(Math.sqrt(r*r+1)+r);if(c(r)){var t=r.im;r.im=-r.re,r.re=t;var i=e.asin(r);return r.re=-r.im,r.im=t,t=i.re,i.re=-i.im,i.im=t,i}if(f(r))return a.deepMap(r,p,!0);if(u(r)||null===r)return r?.881373587019543:0;if(r instanceof n)return l(r,n,!0,!1);throw new e.error.UnsupportedTypeError("asinh",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(176),n=e.type.BigNumber,i=t(7),o=e.collection,a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,c=o.isCollection,f=r.bignumber.arctan_arccot;e.atan=function l(r){if(1!=arguments.length)throw new e.error.ArgumentsError("atan",arguments.length,1);if(a(r))return Math.atan(r);if(u(r)){if(0==r.re){if(1==r.im)return new i(0,1/0);if(-1==r.im)return new i(0,-(1/0))}var t=r.re,p=r.im,m=t*t+(1-p)*(1-p),h=new i((1-p*p-t*t)/m,-2*t/m),g=e.log(h);return new i(-.5*g.im,.5*g.re)}if(c(r))return o.deepMap(r,l,!0);if(s(r)||null===r)return Math.atan(r);if(r instanceof n)return f(r,n,!1);throw new e.error.UnsupportedTypeError("atan",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(176),n=e.type.BigNumber,i=t(7),o=e.collection,a=r.number.isNumber,s=r["boolean"].isBoolean,u=(i.isComplex,o.isCollection),c=r.bignumber.arctan2;e.atan2=function f(r,t){if(2!=arguments.length)throw new e.error.ArgumentsError("atan2",arguments.length,2);if(a(r)){if(a(t))return Math.atan2(r,t);if(t instanceof n)return c(new n(r),t,n)}if(u(r)||u(t))return o.deepMap2(r,t,f);if(s(r)||null===r)return f(r?1:0,t);if(s(t)||null===t)return f(r,t?1:0);if(r instanceof n)return a(t)?c(r,new n(t),n):t instanceof n?c(r,t,n):f(r.toNumber(),t);if(t instanceof n)return r instanceof n?c(r,t,n):f(r,t.toNumber());throw new e.error.UnsupportedTypeError("atan2",e["typeof"](r),e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(176),n=e.type.BigNumber,i=t(7),o=t(11),a=e.collection,s=r.number.isNumber,u=r["boolean"].isBoolean,c=i.isComplex,f=(o.isUnit,a.isCollection),l=r.bignumber.atanh_acoth;e.atanh=function p(r){if(1!=arguments.length)throw new e.error.ArgumentsError("atanh",arguments.length,1);if(s(r))return 1>=r&&r>=-1?Math.log((1+r)/(1-r))/2:p(new i(r,0));if(c(r)){var t=r.re>1&&0==r.im,o=1-r.re,m=1+r.re,h=o*o+r.im*r.im;r=0!=h?new i((m*o-r.im*r.im)/h,(r.im*o+m*r.im)/h):new i(-1!=r.re?r.re/0:0,0!=r.im?r.im/0:0);var g=r.re;return r.re=Math.log(Math.sqrt(r.re*r.re+r.im*r.im))/2,r.im=Math.atan2(r.im,g)/2,t&&(r.im=-r.im),r}if(f(r))return a.deepMap(r,p,!0);if(u(r)||null===r)return r?1/0:0;if(r instanceof n)return l(r,n,!1);throw new e.error.UnsupportedTypeError("atanh",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(176),i=e.type.BigNumber,o=t(7),a=t(11),s=e.collection,u=n.number.isNumber,c=n["boolean"].isBoolean,f=o.isComplex,l=a.isUnit,p=s.isCollection,m=n.bignumber.cos_sin_sec_csc;e.cos=function h(r){if(1!=arguments.length)throw new e.error.ArgumentsError("cos",arguments.length,1);if(u(r))return Math.cos(r);if(f(r))return new o(Math.cos(r.re)*e.cosh(-r.im),Math.sin(r.re)*e.sinh(-r.im));if(l(r)){if(!r.hasBase(a.BASE_UNITS.ANGLE))throw new TypeError("Unit in function cos is no angle");return Math.cos(r.value)}if(p(r))return s.deepMap(r,h);if(c(r)||null===r)return Math.cos(r);if(r instanceof i)return m(r,i,0,!1);throw new e.error.UnsupportedTypeError("cos",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(176),n=e.type.BigNumber,i=t(7),o=t(11),a=e.collection,s=r.number.isNumber,u=r["boolean"].isBoolean,c=i.isComplex,f=o.isUnit,l=a.isCollection,p=r.bignumber.cosh_sinh_csch_sech;e.cosh=function m(r){if(1!=arguments.length)throw new e.error.ArgumentsError("cosh",arguments.length,1);if(s(r))return(Math.exp(r)+Math.exp(-r))/2;if(c(r)){var t=Math.exp(r.re),h=Math.exp(-r.re);return new i(Math.cos(r.im)*(t+h)/2,Math.sin(r.im)*(t-h)/2)}if(f(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function cosh is no angle");return m(r.value)}if(l(r))return a.deepMap(r,m);if(u(r)||null===r)return m(r?1:0);if(r instanceof n)return p(r,n,!1,!1);throw new e.error.UnsupportedTypeError("cosh",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(176),i=e.type.BigNumber,o=t(7),a=t(11),s=e.collection,u=n.number.isNumber,c=n["boolean"].isBoolean,f=o.isComplex,l=a.isUnit,p=s.isCollection,m=n.bignumber.tan_cot;e.cot=function h(r){if(1!=arguments.length)throw new e.error.ArgumentsError("cot",arguments.length,1);if(u(r))return 1/Math.tan(r);if(f(r)){var t=Math.exp(-4*r.im)-2*Math.exp(-2*r.im)*Math.cos(2*r.re)+1;return new o(2*Math.exp(-2*r.im)*Math.sin(2*r.re)/t,(Math.exp(-4*r.im)-1)/t)}if(l(r)){if(!r.hasBase(a.BASE_UNITS.ANGLE))throw new TypeError("Unit in function cot is no angle");return 1/Math.tan(r.value)}if(p(r))return s.deepMap(r,h);if(c(r)||null===r)return h(+r);if(r instanceof i)return m(r,i,!0);throw new e.error.UnsupportedTypeError("cot",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(176),n=e.type.BigNumber,i=t(7),o=t(11),a=e.collection,s=r.number.isNumber,u=r["boolean"].isBoolean,c=i.isComplex,f=o.isUnit,l=a.isCollection,p=r.bignumber.tanh_coth;e.coth=function m(r){if(1!=arguments.length)throw new e.error.ArgumentsError("coth",arguments.length,1);if(s(r)){var t=Math.exp(2*r);return(t+1)/(t-1)}if(c(r)){var h=Math.exp(2*r.re),g=h*Math.cos(2*r.im),d=h*Math.sin(2*r.im),v=(g-1)*(g-1)+d*d;return new i(((g+1)*(g-1)+d*d)/v,-2*d/v)}if(f(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function coth is no angle");return m(r.value)}if(l(r))return a.deepMap(r,m);if(u(r)||null===r)return m(r?1:0);if(r instanceof n)return p(r,n,!0);throw new e.error.UnsupportedTypeError("coth",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(176),i=e.type.BigNumber,o=t(7),a=t(11),s=e.collection,u=n.number.isNumber,c=n["boolean"].isBoolean,f=o.isComplex,l=a.isUnit,p=s.isCollection,m=n.bignumber.cos_sin_sec_csc;e.csc=function h(r){if(1!=arguments.length)throw new e.error.ArgumentsError("csc",arguments.length,1);if(u(r))return 1/Math.sin(r);if(f(r)){var t=.25*(Math.exp(-2*r.im)+Math.exp(2*r.im))-.5*Math.cos(2*r.re);return new o(.5*Math.sin(r.re)*(Math.exp(-r.im)+Math.exp(r.im))/t,.5*Math.cos(r.re)*(Math.exp(-r.im)-Math.exp(r.im))/t)}if(l(r)){if(!r.hasBase(a.BASE_UNITS.ANGLE))throw new TypeError("Unit in function csc is no angle");return 1/Math.sin(r.value)}if(p(r))return s.deepMap(r,h);if(c(r)||null===r)return h(+r);if(r instanceof i)return m(r,i,1,!0);throw new e.error.UnsupportedTypeError("csc",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(176),n=e.type.BigNumber,i=t(7),o=t(11),a=e.collection,s=r.number,u=r.number.isNumber,c=r["boolean"].isBoolean,f=i.isComplex,l=o.isUnit,p=a.isCollection,m=r.bignumber.cosh_sinh_csch_sech;e.csch=function h(r){if(1!=arguments.length)throw new e.error.ArgumentsError("csch",arguments.length,1);if(u(r))return 0==r?Number.POSITIVE_INFINITY:Math.abs(2/(Math.exp(r)-Math.exp(-r)))*s.sign(r);if(f(r)){var t=Math.exp(r.re),g=Math.exp(-r.re),d=Math.cos(r.im)*(t-g),v=Math.sin(r.im)*(t+g),y=d*d+v*v;return new i(2*d/y,-2*v/y)}if(l(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function csch is no angle");return h(r.value)}if(p(r))return a.deepMap(r,h);if(c(r)||null===r)return h(r?1:0);if(r instanceof n)return m(r,n,!0,!0);throw new e.error.UnsupportedTypeError("csch",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(176),i=e.type.BigNumber,o=t(7),a=t(11),s=e.collection,u=n.number.isNumber,c=n["boolean"].isBoolean,f=o.isComplex,l=a.isUnit,p=s.isCollection,m=n.bignumber.cos_sin_sec_csc;e.sec=function h(r){if(1!=arguments.length)throw new e.error.ArgumentsError("sec",arguments.length,1);if(u(r))return 1/Math.cos(r);if(f(r)){var t=.25*(Math.exp(-2*r.im)+Math.exp(2*r.im))+.5*Math.cos(2*r.re);return new o(.5*Math.cos(r.re)*(Math.exp(-r.im)+Math.exp(r.im))/t,.5*Math.sin(r.re)*(Math.exp(r.im)-Math.exp(-r.im))/t)}if(l(r)){if(!r.hasBase(a.BASE_UNITS.ANGLE))throw new TypeError("Unit in function sec is no angle");return 1/Math.cos(r.value)}if(p(r))return s.deepMap(r,h);if(c(r)||null===r)return h(+r);if(r instanceof i)return m(r,i,0,!0);throw new e.error.UnsupportedTypeError("sec",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(176),n=e.type.BigNumber,i=t(7),o=t(11),a=e.collection,s=r.number.isNumber,u=r["boolean"].isBoolean,c=i.isComplex,f=o.isUnit,l=a.isCollection,p=r.bignumber.cosh_sinh_csch_sech;e.sech=function m(r){if(1!=arguments.length)throw new e.error.ArgumentsError("sech",arguments.length,1);if(s(r))return 2/(Math.exp(r)+Math.exp(-r));if(c(r)){var t=Math.exp(r.re),h=Math.exp(-r.re),g=Math.cos(r.im)*(t+h),d=Math.sin(r.im)*(t-h),v=g*g+d*d;return new i(2*g/v,-2*d/v)}if(f(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function sech is no angle");return m(r.value)}if(l(r))return a.deepMap(r,m);if(u(r)||null===r)return m(r?1:0);if(r instanceof n)return p(r,n,!1,!0);throw new e.error.UnsupportedTypeError("sech",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(176),i=e.type.BigNumber,o=t(7),a=t(11),s=e.collection,u=n.number.isNumber,c=n["boolean"].isBoolean,f=o.isComplex,l=a.isUnit,p=s.isCollection,m=n.bignumber.cos_sin_sec_csc;e.sin=function h(r){if(1!=arguments.length)throw new e.error.ArgumentsError("sin",arguments.length,1);if(u(r))return Math.sin(r);if(f(r))return new o(Math.sin(r.re)*e.cosh(-r.im),Math.cos(r.re)*e.sinh(r.im));if(l(r)){if(!r.hasBase(a.BASE_UNITS.ANGLE))throw new TypeError("Unit in function sin is no angle");return Math.sin(r.value)}if(p(r))return s.deepMap(r,h,!0);if(c(r)||null===r)return Math.sin(r);if(r instanceof i)return m(r,i,1,!1);throw new e.error.UnsupportedTypeError("sin",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(176),n=e.type.BigNumber,i=t(7),o=t(11),a=e.collection,s=r.number.isNumber,u=r["boolean"].isBoolean,c=i.isComplex,f=o.isUnit,l=a.isCollection,p=r.bignumber.cosh_sinh_csch_sech;e.sinh=function m(r){if(1!=arguments.length)throw new e.error.ArgumentsError("sinh",arguments.length,1);if(s(r))return Math.abs(r)<1?r+r*r*r/6+r*r*r*r*r/120:(Math.exp(r)-Math.exp(-r))/2;if(c(r)){var t=Math.cos(r.im),h=Math.sin(r.im),g=Math.exp(r.re),d=Math.exp(-r.re);return new i(t*(g-d)/2,h*(g+d)/2)}if(f(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function sinh is no angle");return m(r.value)}if(l(r))return a.deepMap(r,m,!0);if(u(r)||null===r)return m(r?1:0);if(r instanceof n)return p(r,n,!0,!1);throw new e.error.UnsupportedTypeError("sinh",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(176),i=e.type.BigNumber,o=t(7),a=t(11),s=e.collection,u=n.number.isNumber,c=n["boolean"].isBoolean,f=o.isComplex,l=a.isUnit,p=s.isCollection,m=n.bignumber.tan_cot;e.tan=function h(r){if(1!=arguments.length)throw new e.error.ArgumentsError("tan",arguments.length,1);if(u(r))return Math.tan(r);if(f(r)){var t=Math.exp(-4*r.im)+2*Math.exp(-2*r.im)*Math.cos(2*r.re)+1;return new o(2*Math.exp(-2*r.im)*Math.sin(2*r.re)/t,(1-Math.exp(-4*r.im))/t)}if(l(r)){if(!r.hasBase(a.BASE_UNITS.ANGLE))throw new TypeError("Unit in function tan is no angle");return Math.tan(r.value)}if(p(r))return s.deepMap(r,h,!0);if(c(r)||null===r)return Math.tan(r);if(r instanceof i)return m(r,i,!1);throw new e.error.UnsupportedTypeError("tan",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(176),n=e.type.BigNumber,i=t(7),o=t(11),a=e.collection,s=r.number.isNumber,u=r["boolean"].isBoolean,c=i.isComplex,f=o.isUnit,l=a.isCollection,p=r.bignumber.tanh_coth;e.tanh=function m(r){if(1!=arguments.length)throw new e.error.ArgumentsError("tanh",arguments.length,1);if(s(r)){var t=Math.exp(2*r);return(t-1)/(t+1)}if(c(r)){var h=Math.exp(2*r.re),g=h*Math.cos(2*r.im),d=h*Math.sin(2*r.im),v=(g+1)*(g+1)+d*d;return new i(((g-1)*(g+1)+d*d)/v,2*d/v)}if(f(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function tanh is no angle");return m(r.value)}if(l(r))return a.deepMap(r,m,!0);if(u(r)||null===r)return m(r?1:0);if(r instanceof n)return p(r,n,!1);throw new e.error.UnsupportedTypeError("tanh",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(176),n=t(11),i=e.collection,o=r.string.isString,a=n.isUnit,s=i.isCollection;e.to=function u(r,t){if(2!=arguments.length)throw new e.error.ArgumentsError("to",arguments.length,2);if(a(r)&&(a(t)||o(t)))return r.to(t);if(s(r)||s(t))return i.deepMap2(r,t,u);throw new e.error.UnsupportedTypeError("to",e["typeof"](r),e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(176),n=r.object;e.clone=function(r){if(1!=arguments.length)throw new e.error.ArgumentsError("clone",arguments.length,1);return n.clone(r)}}},function(e,r,t){"use strict";e.exports=function(e){function r(e,r){if("function"==typeof r)return e.filter(function(e){return r(e)});if(r instanceof RegExp)return e.filter(function(e){return r.test(e)});throw new TypeError("Function or RegExp expected")}var t=e.type.Matrix;e.filter=function(n,i){if(2!==arguments.length)throw new e.error.ArgumentsError("filter",arguments.length,2);if(n instanceof t){var o=n.size();if(o.length>1)throw new Error("Only one dimensional matrices supported");return e.matrix(r(n.toArray(),i))}if(Array.isArray(n))return r(n,i);throw new e.error.UnsupportedTypeError("filter",e["typeof"](n),e["typeof"](compare))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(176),n=r.string;e.format=function(r,t){var i=arguments.length;if(1!==i&&2!==i)throw new e.error.ArgumentsError("format",i,1,2);return n.format(r,t)}}},function(e,r,t){"use strict";e.exports=function(e){function r(r,t,n){(n.override||void 0===e[r])&&(n.wrap&&"function"==typeof t?(e[r]=function(){for(var r=[],n=0,i=arguments.length;i>n;n++){var o=arguments[n];r[n]=o&&o.valueOf()}return t.apply(e,r)},t&&t.transform&&(e[r].transform=t.transform)):e[r]=t,t&&t.transform&&(e.expression.transform[r]=t.transform),e.chaining.Chain.createProxy(r,t))}function n(e){return"function"==typeof e||s(e)||u(e)||c(e)||f(e)}var i=t(176),o=t(7),a=t(11),s=i.number.isNumber,u=i.string.isString,c=o.isComplex,f=a.isUnit;e["import"]=function l(i,o){var a=arguments.length;if(1!=a&&2!=a)throw new e.error.ArgumentsError("import",a,1,2);var s,c={override:o&&o.override||!1,wrap:o&&o.wrap||!1};if(u(i)){var f=t(208)(i);l(f,o)}else{if("object"!=typeof i)throw new TypeError("Object or module name expected");for(s in i)if(i.hasOwnProperty(s)){var p=i[s];n(p)?r(s,p,c):l(p,o)}}}}},function(e,r,t){"use strict";e.exports=function(e){function r(e,r){var t=function(n,i){return Array.isArray(n)?n.map(function(e,r){return t(e,i.concat(r))}):r(n,i,e)};return t(e,[])}var t=e.type.Matrix;e.map=function(n,i){if(2!=arguments.length)throw new e.error.ArgumentsError("map",arguments.length,2);if(Array.isArray(n))return r(n,i);if(n instanceof t)return n.map(i);throw new e.error.UnsupportedTypeError("map",e["typeof"](n))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(176),n=r.string.isString;e.print=function(r,t,i){var o=arguments.length;if(2!=o&&3!=o)throw new e.error.ArgumentsError("print",o,2,3);if(!n(r))throw new TypeError("String expected as first parameter in function format");if(!(t instanceof Object))throw new TypeError("Object expected as second parameter in function format");return r.replace(/\$([\w\.]+)/g,function(r,o){for(var a=o.split("."),s=t[a.shift()];a.length&&void 0!==s;){var u=a.shift();s=u?s[u]:s+"."}return void 0!==s?n(s)?s:e.format(s,i):r})}}},function(e,r,t){"use strict";e.exports=function(e){var r=e.type.Matrix;e.sort=function(t,n){var i=null;if(1===arguments.length)i=e.compare;else{if(2!==arguments.length)throw new e.error.ArgumentsError("sort",arguments.length,1,2);if("function"==typeof n)i=n;else if("asc"===n)i=e.compare;else{if("desc"!==n)throw new e.error.UnsupportedTypeError("sort",e["typeof"](t),e["typeof"](n));i=function(r,t){return-e.compare(r,t)}}}if(t instanceof r){var o=t.size();if(o.length>1)throw new Error("Only one dimensional matrices supported");return e.matrix(t.toArray().sort(i))}if(Array.isArray(t))return t.sort(i);throw new e.error.UnsupportedTypeError("sort",e["typeof"](t),e["typeof"](n))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(339),n=t(7),i=e.type.Matrix,o=t(11),a=t(9),s=t(8),u=t(12);e["typeof"]=function(t){if(1!=arguments.length)throw new e.error.ArgumentsError("typeof",arguments.length,1);var c=r.type(t);if("object"===c){if(t instanceof n)return"complex";if(t instanceof i)return"matrix";if(t instanceof o)return"unit";if(t instanceof a)return"index";if(t instanceof s)return"range";if(t instanceof u)return"help";if(t instanceof e.type.BigNumber)return"bignumber";if(t instanceof e.chaining.Chain)return"chain"}return c}}},function(e,r,t){"use strict";e.exports=function(e){function r(e,r){var t=function(n,i){Array.isArray(n)?n.forEach(function(e,r){t(e,i.concat(r))}):r(n,i,e)};t(e,[])}var t=e.type.Matrix;e.forEach=function(n,i){if(2!=arguments.length)throw new e.error.ArgumentsError("forEach",arguments.length,2);if(Array.isArray(n))return r(n,i);if(n instanceof t)return n.forEach(i);throw new e.error.UnsupportedTypeError("forEach",e["typeof"](n))}}},function(e,r,t){"use strict";function n(e,t,n){var o,a,s=e.constructor,u=+(e.s<0),c=+(t.s<0);if(u){o=i(r.not(e));for(var f=0;f0;)n(l[--h],p[--g])==d&&(v=v.plus(y)),y=y.times(x);for(;g>0;)n(m,p[--g])==d&&(v=v.plus(y)),y=y.times(x);return s.config({precision:w}),0==d&&(v.s=-v.s),v}function i(e){for(var r=e.c,t=r[0]+"",n=1;n0)if(++s>c)for(s-=c;s--;u+="0");else c>s&&(u=u.slice(0,s)+"."+u.slice(s));for(var f=[0],n=0;n1&&(null==f[a+1]&&(f[a+1]=0),f[a+1]+=f[a]>>1,f[a]&=1)}return f.reverse()}function o(e,t){var n=t.precision,i=-(n+4),o=n+8-e.e,a=25-e.e,s=Math.max(1.442695*Math.log(n+2)|5,5);t.config({precision:a});var u=0,c=new t(Math.asin(e.toNumber())+"");do{var l=r.cos_sin_sec_csc(c,t,1,!1),p=f(l);l.isZero()||(l.s=c.s);var m=l.minus(e).div(p);c=c.minus(m),a=Math.min(2*a,o),t.config({precision:a})}while(2*m.e>=i&&!m.isZero()&&++u<=s);if(u==s)throw new Error("asin() failed to converge to the requested accuracy.Try with a higher precision.");return t.config({precision:n}),c.toDP(n-1)}function a(e,r){var t=e.constructor;t.config({precision:r+Math.log(r)|4});for(var n=new t(1),i=e,o=0/0,a=e.times(e),s=e,u=new t(n),c=new t(n),f=new t(n),l=3;!i.equals(o);l+=2)s=s.times(a),u=u.times(f),c=c.times(f.plus(n)),o=i,f=new t(l),i=i.plus(s.times(u).div(f.times(c)));return t.config({precision:r}),i.toDP(r-1)}function s(e){for(var r=e,t=0/0,n=e.times(e),i=e,o=!0,a=3;!r.equals(t);a+=2)i=i.times(n),t=r,o=!o,r=o?r.plus(i.div(a)):r.minus(i.div(a));return r}function u(e,r){for(var t=e.constructor.ONE,n=e,i=0/0,o=e.times(e),a=r?n:n=t,s=t,u=!0,c=r;!n.equals(i);c+=2)a=a.times(o),s=s.times(c+1).times(c+2),i=n,u=!u,n=u?n.plus(a.div(s)):n.minus(a.div(s));return n}function c(e,t,n){var i=r.pi(t+2),o=r.tau(t);if(e.abs().lte(i.toDP(e.dp())))return[e,!1];var a=e.constructor;if(e.div(i.toDP(e.dp())).toNumber()%2==0)return[new a(1^n),!0];var s=e.mod(o);return s.toDP(e.dp(),1).isZero()?[new a(1^n),!0]:(s.gt(i)&&(n?(s=s.minus(i),s.s=-s.s):s=o.minus(s)),s.constructor=a,[s,!1])}function f(e){var r=e.constructor,t=r.precision;r.config({precision:t+2});var n=r.ONE.minus(e.times(e)).sqrt();return r.config({precision:t}),n.toDP(t-1)}var l=t(5),p=t(3).isNumber,m=(t(3).digits,t(340).memoize);r.isBigNumber=function(e){return e instanceof l},r.e=m(function(e){var r=l.constructor({precision:e});return new r(1).exp()}),r.phi=m(function(e){var r=l.constructor({precision:e});return new r(1).plus(new r(5).sqrt()).div(2)}),r.pi=m(function(e){var r=l.constructor({precision:e+4}),t=new r(4).times(s(new r(1).div(5))).minus(s(new r(1).div(239)));return r.config({precision:e}),new r(4).times(t)}),r.tau=m(function(e){var t=r.pi(e+2),n=l.constructor({precision:e});return new n(2).times(t)}),r.and=function(e,r){if(e.isFinite()&&!e.isInteger()||r.isFinite()&&!r.isInteger())throw new Error("Parameters in function bitAnd must be integer numbers");var t=e.constructor;if(e.isNaN()||r.isNaN())return new t(0/0);if(e.isZero()||r.eq(-1)||e.eq(r))return e;if(r.isZero()||e.eq(-1))return r;if(!e.isFinite()||!r.isFinite()){if(!e.isFinite()&&!r.isFinite())return e.isNegative()==r.isNegtive()?e:new t(0);if(!e.isFinite())return r.isNegative()?e:e.isNegative()?new t(0):r;if(!r.isFinite())return e.isNegative()?r:r.isNegative()?new t(0):e}return n(e,r,function(e,r){return e&r})},r.leftShift=function(e,r){if(e.isFinite()&&!e.isInteger()||r.isFinite()&&!r.isInteger())throw new Error("Parameters in function leftShift must be integer numbers");var t=e.constructor;return e.isNaN()||r.isNaN()||r.isNegative()&&!r.isZero()?new t(0/0):e.isZero()||r.isZero()?e:e.isFinite()||r.isFinite()?e.times(r.lt(55)?Math.pow(2,r.toNumber())+"":new t(2).pow(r)):new t(0/0)},r.not=function(e){if(e.isFinite()&&!e.isInteger())throw new Error("Parameter in function bitNot must be integer numbers");var r=e.constructor,t=r.precision;r.config({precision:1e9});var e=e.plus(r.ONE);return e.s=-e.s||null,r.config({precision:t}),e},r.or=function(e,r){if(e.isFinite()&&!e.isInteger()||r.isFinite()&&!r.isInteger())throw new Error("Parameters in function bitOr must be integer numbers");var t=e.constructor; -}),r.and=function(e,r){if(e.isFinite()&&!e.isInteger()||r.isFinite()&&!r.isInteger())throw new Error("Parameters in function bitAnd must be integer numbers");var t=e.constructor;if(e.isNaN()||r.isNaN())return new t(0/0);if(e.isZero()||r.eq(-1)||e.eq(r))return e;if(r.isZero()||e.eq(-1))return r;if(!e.isFinite()||!r.isFinite()){if(!e.isFinite()&&!r.isFinite())return e.isNegative()==r.isNegtive()?e:new t(0);if(!e.isFinite())return r.isNegative()?e:e.isNegative()?new t(0):r;if(!r.isFinite())return e.isNegative()?r:r.isNegative()?new t(0):e}return n(e,r,function(e,r){return e&r})},r.leftShift=function(e,r){if(e.isFinite()&&!e.isInteger()||r.isFinite()&&!r.isInteger())throw new Error("Parameters in function leftShift must be integer numbers");var t=e.constructor;return e.isNaN()||r.isNaN()||r.isNegative()&&!r.isZero()?new t(0/0):e.isZero()||r.isZero()?e:e.isFinite()||r.isFinite()?e.times(r.lt(55)?Math.pow(2,r.toNumber())+"":new t(2).pow(r)):new t(0/0)},r.not=function(e){if(e.isFinite()&&!e.isInteger())throw new Error("Parameter in function bitNot must be integer numbers");var r=e.constructor,t=r.precision;r.config({precision:1e9});var e=e.plus(r.ONE);return e.s=-e.s||null,r.config({precision:t}),e},r.or=function(e,r){if(e.isFinite()&&!e.isInteger()||r.isFinite()&&!r.isInteger())throw new Error("Parameters in function bitOr must be integer numbers");var t=e.constructor;if(e.isNaN()||r.isNaN())return new t(0/0);var i=new t(-1);return e.isZero()||r.eq(i)||e.eq(r)?r:r.isZero()||e.eq(i)?e:e.isFinite()&&r.isFinite()?n(e,r,function(e,r){return e|r}):!e.isFinite()&&!e.isNegative()&&r.isNegative()||e.isNegative()&&!r.isNegative()&&!r.isFinite()?i:e.isNegative()&&r.isNegative()?e.isFinite()?e:r:e.isFinite()?r:e},r.rightShift=function(e,r){if(e.isFinite()&&!e.isInteger()||r.isFinite()&&!r.isInteger())throw new Error("Parameters in function rightArithShift must be integer numbers");var t=e.constructor;return e.isNaN()||r.isNaN()||r.isNegative()&&!r.isZero()?new t(0/0):e.isZero()||r.isZero()?e:r.isFinite()?r.lt(55)?e.div(Math.pow(2,r.toNumber())+"").floor():e.div(new t(2).pow(r)).floor():new t(e.isNegative()?-1:e.isFinite()?0:0/0)},r.xor=function(e,t){if(e.isFinite()&&!e.isInteger()||t.isFinite()&&!t.isInteger())throw new Error("Parameters in function bitXor must be integer numbers");var i=e.constructor;if(e.isNaN()||t.isNaN())return new i(0/0);if(e.isZero())return t;if(t.isZero())return e;if(e.eq(t))return new i(0);var o=new i(-1);return e.eq(o)?r.not(t):t.eq(o)?r.not(e):e.isFinite()&&t.isFinite()?n(e,t,function(e,r){return e^r}):e.isFinite()||t.isFinite()?new i(e.isNegative()==t.isNegative()?1/0:-(1/0)):o},r.arccos_arcsec=function(e,t,n){var i=t.precision;if(n){if(e.abs().lt(t.ONE))throw new Error("asec() only has non-complex values for |x| >= 1.")}else if(e.abs().gt(t.ONE))throw new Error("acos() only has non-complex values for |x| <= 1.");if(e.eq(-1))return r.pi(i);t.config({precision:i+4}),n&&(e=t.ONE.div(e));var o=r.arctan_arccot(t.ONE.minus(e.times(e)).sqrt().div(e.plus(t.ONE)),t).times(2);return t.config({precision:i}),o.toDP(i-1)},r.arcsin_arccsc=function(e,t,n){if(e.isNaN())return new t(0/0);var i=t.precision,s=e.abs();if(n){if(s.lt(t.ONE))throw new Error("acsc() only has non-complex values for |x| >= 1.");t.config({precision:i+2}),e=t.ONE.div(e),t.config({precision:i}),s=e.abs()}else if(s.gt(t.ONE))throw new Error("asin() only has non-complex values for |x| <= 1.");if(s.gt(.8)){t.config({precision:i+4});var u=e.s,c=r.pi(i+4).div(2);return e=c.minus(r.arcsin_arccsc(t.ONE.minus(e.times(e)).sqrt(),t)),e.s=u,e.constructor=t,t.config({precision:i}),e.toDP(i-1)}var f=s.gt(.58);f&&(t.config({precision:i+8}),e=e.div(new t(2).sqrt().times(t.ONE.minus(e.times(e)).sqrt().plus(t.ONE).sqrt())),t.config({precision:i}));var l=60>=i||e.dp()<=Math.log(i)&&e.lt(.05)?a(e,i):o(e,t);return f?l.times(2):l},r.arctan_arccot=function(e,t,n){if(e.isNaN())return new t(0/0);if(!n&&e.isZero()||n&&!e.isFinite())return new t(0);var i=t.precision;if(!n&&!e.isFinite()||n&&e.isZero()){var o=r.pi(i+2).div(2).toDP(i-1);return o.constructor=t,o.s=e.s,o}t.config({precision:i+4}),n&&(e=t.ONE.div(e));var a=e.abs();if(a.lte(.875)){var u=s(e);return u.constructor=t,t.config({precision:i}),u.toDP(t.precision-1)}if(a.gte(1.143)){var o=r.pi(i+4).div(2),u=o.minus(s(t.ONE.div(a)));return u.s=e.s,u.constructor=t,t.config({precision:i}),u.toDP(t.precision-1)}return e=e.div(e.times(e).plus(1).sqrt()),t.config({precision:i}),r.arcsin_arccsc(e,t)},r.arctan2=function(e,t,n){var i=n.precision;if(t.isZero()){if(e.isZero())return new n(0/0);var o=r.pi(i+2).div(2).toDP(i-1);return o.constructor=n,o.s=e.s,o}n.config({precision:i+2});var a=r.arctan_arccot(e.div(t),n,!1);if(t.isNegative()){var s=r.pi(i+2);a=e.isNegative()?a.minus(s):a.plus(s)}return a.constructor=n,n.config({precision:i}),a.toDP(i-1)},r.acosh_asinh_asech_acsch=function(e,r,t,n){if(e.isNaN())return new r(0/0);if(n&&e.isZero())return new r(1/0);if(!t)if(n){if(e.isNegative()||e.gt(r.ONE))throw new Error("asech() only has non-complex values for 0 <= x <= 1.")}else if(e.lt(r.ONE))throw new Error("acosh() only has non-complex values for x >= 1.");var i=r.precision;r.config({precision:i+4});var o=new r(e);o.constructor=r,n&&(o=r.ONE.div(o));var a=t?o.times(o).plus(r.ONE):o.times(o).minus(r.ONE),s=o.plus(a.sqrt()).ln();return r.config({precision:i}),new r(s.toPrecision(i))},r.atanh_acoth=function(e,r,t){if(e.isNaN())return new r(0/0);var n=e.abs();if(n.eq(r.ONE))return new r(e.isNegative()?-(1/0):1/0);if(n.gt(r.ONE)){if(!t)throw new Error("atanh() only has non-complex values for |x| <= 1.")}else if(t)throw new Error("acoth() has complex values for |x| < 1.");if(e.isZero())return new r(0);var i=r.precision;r.config({precision:i+4});var o=new r(e);o.constructor=r,t&&(o=r.ONE.div(o));var a=r.ONE.plus(o).div(r.ONE.minus(o)).ln().div(2);return r.config({precision:i}),new r(a.toPrecision(i))},r.cos_sin_sec_csc=function(e,r,t,n){if(e.isNaN()||!e.isFinite())return new r(0/0);var i=r.precision,o=new r(e),a=o.isNegative();a&&(o.s=-o.s);var s=i+(0|Math.log(i))+3;if(r.config({precision:s}),o=c(o,s,t),o[0].constructor=r,o[1])return o=o[0],n&&o.isZero()&&(o=new r(1/0)),r.config({precision:i}),o;var f;if(o=o[0],t){f=u(o.div(3125),t),r.config({precision:Math.min(s,i+15)});for(var l=new r(5),p=new r(16),m=new r(20),h=0;5>h;++h){var g=f.times(f),d=g.times(f),v=d.times(g);f=p.times(v).minus(m.times(d)).plus(l.times(f))}a&&(f.s=-f.s)}else{var y,x;o.abs().lt(r.ONE)?(y=64,x=3):(y=256,x=4),f=u(o.div(y),t),r.config({precision:Math.min(s,i+8)});for(var w=new r(8);x>0;--x){var g=f.times(f),b=g.times(g);f=w.times(b.minus(g)).plus(r.ONE)}}return n&&(f=f.e<=-i?new r(1/0):r.ONE.div(f)),r.config({precision:i}),f.toDP(i-1)},r.tan_cot=function(e,t,n){if(e.isNaN())return new t(0/0);var i=t.precision,o=r.pi(i+2),a=o.div(2).toDP(i-1);o=o.toDP(i-1);var s=c(e,i,1)[0];if(s.abs().eq(o))return new t(1/0);t.config({precision:i+4});var u=r.cos_sin_sec_csc(s,t,1,!1),l=f(u);u=u.toDP(i),l=l.toDP(i),s.eq(e)?s.gt(a)&&(l.s=-l.s):o.minus(s.abs()).gt(a)&&(l.s=-l.s);var p=n?l.div(u):u.div(l);return t.config({precision:i}),new t(p.toPrecision(i))},r.cosh_sinh_csch_sech=function(e,r,t,n){if(e.isNaN())return new r(0/0);if(!e.isFinite())return new r(n?0:t?e:1/0);var i=r.precision;r.config({precision:i+4});var o=new r(e);return o.constructor=r,o=o.exp(),o=t?o.minus(r.ONE.div(o)):o.plus(r.ONE.div(o)),o=n?new r(2).div(o):o.div(2),r.config({precision:i}),new r(o.toPrecision(i))},r.tanh_coth=function(e,r,t){if(e.isNaN())return new r(0/0);if(!e.isFinite())return new r(e.s);var n=r.precision;r.config({precision:n+4});var i=new r(e);i.constructor=r;var o=i.exp(),a=r.ONE.div(o),s=o.minus(a);return s=t?o.plus(a).div(s):s.div(o.plus(a)),r.config({precision:n}),s.toDP(n-1)},r.format=function(e,t){if("function"==typeof t)return t(e);if(!e.isFinite())return e.isNaN()?"NaN":e.gt(0)?"Infinity":"-Infinity";var n="auto",i=void 0;switch(void 0!==t&&(t.notation&&(n=t.notation),p(t)?i=t:t.precision&&(i=t.precision)),n){case"fixed":return r.toFixed(e,i);case"exponential":return r.toExponential(e,i);case"auto":var o=.001,a=1e5;t&&t.exponential&&(void 0!==t.exponential.lower&&(o=t.exponential.lower),void 0!==t.exponential.upper&&(a=t.exponential.upper));{({toExpNeg:e.constructor.toExpNeg,toExpPos:e.constructor.toExpPos})}if(e.constructor.config({toExpNeg:Math.round(Math.log(o)/Math.LN10),toExpPos:Math.round(Math.log(a)/Math.LN10)}),e.isZero())return"0";var s,u=e.abs();return s=u.gte(o)&&u.lt(a)?e.toSignificantDigits(i).toFixed():r.toExponential(e,i),s.replace(/((\.\d*?)(0+))($|e)/,function(){var e=arguments[2],r=arguments[4];return"."!==e?e+r:r});default:throw new Error('Unknown notation "'+n+'". Choose "auto", "exponential", or "fixed".')}},r.toExponential=function(e,r){return void 0!==r?e.toExponential(r-1):e.toExponential()},r.toFixed=function(e,r){return e.toFixed(r||0)}},function(e,r,t){"use strict";function n(e){for(var r=[];m(e);)r.push(e.length),e=e[0];return r}function i(e,r,t){var n,o=e.length;if(o!=r[t])throw new l(o,r[t]);if(tn;n++){var s=e[n];if(!m(s))throw new l(r.length-1,r.length,"<");i(e[n],r,a)}}else for(n=0;o>n;n++)if(m(e[n]))throw new l(r.length+1,r.length,">")}function o(e,t,n,i){var a,s,u=e.length,c=t[n],l=Math.min(u,c);if(e.length=c,na;a++)s=e[a],m(s)||(s=[s],e[a]=s),o(s,t,p,i);for(a=l;c>a;a++)s=[],e[a]=s,o(s,t,p,i)}else{for(a=0;l>a;a++)for(;m(e[a]);)e[a]=e[a][0];if(i!==r.UNINITIALIZED)for(a=l;c>a;a++)e[a]=f.clone(i)}}function a(e,r,t){var n,i;if(r>t){var o=t+1;for(n=0,i=e.length;i>n;n++)e[n]=a(e[n],r,o)}else for(;m(e);)e=e[0];return e}function s(e,r,t){var n,i;if(m(e)){var o=t+1;for(n=0,i=e.length;i>n;n++)e[n]=s(e[n],r,o)}else for(var a=t;r>a;a++)e=[e];return e}var u=t(3),c=t(176),f=t(2),l=(t(338),t(172)),p=t(173),m=Array.isArray;r.size=function(e){var t=n(e);return r.validate(e,t),t},r.validate=function(e,r){var t=0==r.length;if(t){if(m(e))throw new l(e.length,0)}else i(e,r,0)},r.validateIndex=function(e,r){if(!u.isNumber(e)||!u.isInteger(e))throw new TypeError("Index must be an integer (value: "+e+")");if(0>e)throw new p(e);if(void 0!==r&&e>=r)throw new p(e,r)},r.UNINITIALIZED={},r.resize=function(e,r,t){if(!m(e)||!m(r))throw new TypeError("Array expected");if(0===r.length)throw new Error("Resizing to scalar is not supported");r.forEach(function(e){if(!u.isNumber(e)||!u.isInteger(e)||0>e)throw new TypeError("Invalid size, must contain positive integers (size: "+c.format(r)+")")});var n=void 0!==t?t:0;return o(e,r,0,n),e},r.squeeze=function(e,t){for(var n=t||r.size(e);m(e)&&1===e.length;)e=e[0],n.shift();for(var i=n.length;1===n[i-1];)i--;return ia;a++)e=[e],o.unshift(1);for(e=s(e,t,0);o.lengthi;i++)n=n.concat.apply(n,r[i]);r=n}return r},r.argsToArray=function(e){for(var r=[],t=0,n=e.length;n>t;t++)r[t]=e[t];return r},r.isArray=m},function(e,r,t){e.exports="1.6.1-SNAPSHOT"},function(e,r,t){"use strict";function n(e,r,t,i){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");this.fn=e,this.count=r,this.min=t,this.max=i,this.message="Wrong number of arguments in function "+e+" ("+r+" provided, "+t+(void 0!=i?"-"+i:"")+" expected)",this.stack=(new Error).stack}n.prototype=new Error,n.prototype.constructor=Error,n.prototype.name="ArgumentsError",e.exports=n},function(e,r,t){"use strict";function n(e,r,t){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");this.actual=e,this.expected=r,this.relation=t,this.message="Dimension mismatch ("+(Array.isArray(e)?"["+e.join(", ")+"]":e)+" "+(this.relation||"!=")+" "+(Array.isArray(r)?"["+r.join(", ")+"]":r)+")",this.stack=(new Error).stack}n.prototype=new RangeError,n.prototype.constructor=RangeError,n.prototype.name="DimensionError",e.exports=n},function(e,r,t){"use strict";function n(e,r,t){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");this.index=e,arguments.length<3?(this.min=0,this.max=r):(this.min=r,this.max=t),void 0!==this.min&&this.index=this.max?this.message="Index out of range ("+this.index+" > "+(this.max-1)+")":this.message="Index out of range ("+this.index+")",this.stack=(new Error).stack}n.prototype=new RangeError,n.prototype.constructor=RangeError,n.prototype.name="IndexError",e.exports=n},function(e,r,t){"use strict";function n(e,r){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");this.fn=e,this.types=Array.prototype.splice.call(arguments,1),e?0==this.types.length?this.message="Unsupported type of argument in function "+e:this.message="Function "+e+"("+this.types.join(", ")+") not supported":this.message="Unsupported type of argument",this.stack=(new Error).stack}n.prototype=new TypeError,n.prototype.constructor=TypeError,n.prototype.name="UnsupportedTypeError",e.exports=n},function(e,r,t){"use strict";r.array=t(169),r["boolean"]=t(209),r.number=t(3),r.bignumber=t(168),r.object=t(2),r.string=t(176),r.types=t(338)},function(e,r,t){"use strict";function n(e,t){if(Array.isArray(e)){for(var i="[",o=e.length,a=0;o>a;a++)0!=a&&(i+=", "),i+=n(e[a],t);return i+="]"}return r.format(e,t)}var i=t(3),o=t(168),a=t(5);r.isString=function(e){return e instanceof String||"string"==typeof e},r.endsWith=function(e,r){var t=e.length-r.length,n=e.length;return e.substring(t,n)===r},r.format=function(e,t){return i.isNumber(e)?i.format(e,t):e instanceof a?o.format(e,t):Array.isArray(e)?n(e,t):r.isString(e)?'"'+e+'"':"function"==typeof e?e.syntax?e.syntax+"":"function":e instanceof Object?"function"==typeof e.format?e.format(t):e.toString():String(e)}},function(e,r,t){"use strict";function n(e){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");if(this.nodes=e||[],!a(this.nodes)||!this.nodes.every(s))throw new TypeError("Array containing Nodes expected")}var i=t(185),o=t(176),a=Array.isArray,s=i.isNode;n.prototype=new i,n.prototype.type="ArrayNode",n.prototype._compile=function(e){var r="array"!==e.math.config().matrix,t=this.nodes.map(function(r){return r._compile(e)});return(r?"math.matrix([":"[")+t.join(",")+(r?"])":"]")},n.prototype.forEach=function(e){for(var r=0;r=r&&(t="("+t+")"),this.name+" = "+t},n.prototype._toTex=function(e){var r=a.getPrecedence(this),t=a.getPrecedence(this.expr),n=this.expr.toTex(e);return null!==t&&r>=t&&(n="\\left("+n+"\\right)"),s.toSymbol(this.name)+":="+n},e.exports=n},function(e,r,t){"use strict";function n(e){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");if(!Array.isArray(e))throw new Error("Array expected");this.blocks=e.map(function(e){var r=e&&e.node,t=e&&void 0!==e.visible?e.visible:!0;if(!(r instanceof i))throw new TypeError('Property "node" must be a Node');if(!a(t))throw new TypeError('Property "visible" must be a boolean');return{node:r,visible:t}})}var i=t(185),o=t(13),a=t(209).isBoolean;n.prototype=new i,n.prototype.type="BlockNode",n.prototype._compile=function(e){e.ResultSet=o;var r=this.blocks.map(function(r){var t=r.node._compile(e);return r.visible?"results.push("+t+");":t+";"});return"(function () {var results = [];"+r.join("")+"return new ResultSet(results);})()"},n.prototype.forEach=function(e){for(var r=0;r=t)&&(r="("+r+")");var n=this.trueExpr.toString(),i=c.getPrecedence(this.trueExpr);("OperatorNode"===this.trueExpr.type||null!==i&&e>=i)&&(n="("+n+")");var o=this.falseExpr.toString(),a=c.getPrecedence(this.falseExpr);return("OperatorNode"===this.falseExpr.type||null!==a&&e>=a)&&(o="("+o+")"),r+" ? "+n+" : "+o},n.prototype._toTex=function(e){return"\\left\\{\\begin{array}{l l}{"+this.trueExpr.toTex(e)+"}, &\\quad{\\text{if}\\;"+this.condition.toTex(e)+"}\\\\{"+this.falseExpr.toTex(e)+"}, &\\quad{\\text{otherwise}}\\end{array}\\right."},e.exports=n},function(e,r,t){"use strict";function n(e,r){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");if(r){if(!a(r))throw new TypeError('String expected for parameter "valueType"');if(!a(e))throw new TypeError('String expected for parameter "value"');this.value=e,this.valueType=r}else this.value=e+"",this.valueType=o(e);if(!s[this.valueType])throw new TypeError('Unsupported type of value "'+this.valueType+'"')}var i=t(185),o=(t(5),t(338).type),a=t(176).isString,s={number:!0,string:!0,"boolean":!0,undefined:!0,"null":!0};n.prototype=new i,n.prototype.type="ConstantNode",n.prototype._compile=function(e){switch(this.valueType){case"number":return"bignumber"===e.math.config().number?'math.bignumber("'+this.value+'")':this.value.replace(/^(0*)[0-9]/,function(e,r){return e.substring(r.length)});case"string":return'"'+this.value+'"';case"boolean":return this.value;case"undefined":return this.value;case"null":return this.value;default:throw new TypeError('Unsupported type of constant "'+this.valueType+'"')}},n.prototype.forEach=function(e){},n.prototype.map=function(e){return this.clone()},n.prototype.clone=function(){return new n(this.value,this.valueType)},n.prototype.toString=function(){switch(this.valueType){case"string":return'"'+this.value+'"';default:return this.value}},n.prototype._toTex=function(e){var r,t=this.value;switch(this.valueType){case"string":return"\\text{"+t+"}";case"number":return r=t.toLowerCase().indexOf("e"),-1!==r?t.substring(0,r)+"\\cdot10^{"+t.substring(r+1)+"}":t;default:return t}},e.exports=n},function(e,r,t){"use strict";function n(e,r){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");if(!(e instanceof i))throw new TypeError('Node expected for parameter "object"');if(!f(r)||!r.every(c))throw new TypeError('Array containing Nodes expected for parameter "ranges"');this.object=e,this.ranges=r}var i=t(185),o=t(187),a=t(188),s=t(5),u=t(8),c=i.isNode,f=Array.isArray;n.prototype=new i,n.prototype.type="IndexNode",n.prototype._compile=function(e){return this.compileSubset(e)},n.prototype.compileSubset=function(e,r){function t(e){return e instanceof a&&"end"==e.name}var n=!1,i=this.ranges.map(function(e){var r=e.filter(t).length>0;return n=r?r:n,r});e.range=function(e,r,t){return new u(e instanceof s?e.toNumber():e,r instanceof s?r.toNumber():r,t instanceof s?t.toNumber():t)};var c=this.ranges.map(function(r,t){var n=i[t];return r instanceof o?n?(e.args.end=!0,"(function () { var end = size["+t+"]; return range( "+r.start._compile(e)+", "+r.end._compile(e)+", "+(r.step?r.step._compile(e):"1")+" );})()"):"range("+r.start._compile(e)+", "+r.end._compile(e)+", "+(r.step?r.step._compile(e):"1")+")":n?(e.args.end=!0,"(function () { var end = size["+t+"]; return "+r._compile(e)+";})()"):r._compile(e)});return n?"(function () { var obj = "+this.object._compile(e)+"; var size = math.size(obj).valueOf(); return math.subset( obj, math.index("+c.join(", ")+") "+(r?", "+r:"")+" );})()":"math.subset("+this.object._compile(e)+",math.index("+c.join(", ")+")"+(r?", "+r:"")+")"},n.prototype.forEach=function(e){e(this.object,"object",this);for(var r=0;r=r&&(t="("+t+")"),"function "+this.name+"("+this.params.join(", ")+") = "+t},n.prototype._toTex=function(e){var r=s.getPrecedence(this),t=s.getPrecedence(this.expr),n=this.expr.toTex(e);return null!==t&&r>=t&&(n="\\left("+n+"\\right)"),a.toSymbol(this.name)+"\\left("+this.params.map(a.toSymbol).join(",")+"\\right):="+n},e.exports=n},function(e,r,t){"use strict";function n(e,r){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");if("string"!=typeof e)throw new TypeError('string expected for parameter "name"');if(!u(r)||!r.every(s))throw new TypeError('Array containing Nodes expected for parameter "args"');this.name=e,this.args=r||[]}var i=t(185),o=t(188),a=t(343),s=i.isNode,u=Array.isArray;n.prototype=new i,n.prototype.type="FunctionNode",n.prototype._compile=function(e){var r=e.math[this.name],t="function"==typeof r&&1==r.rawArgs,n=this.args.map(function(r){return r._compile(e)});if(t){var i;do i="p"+Math.round(1e4*Math.random());while(i in e);return e[i]=this.args,'("'+this.name+'" in scope ? scope["'+this.name+'"]('+n.join(", ")+') : math["'+this.name+'"]('+i+", math, scope))"}var a=new o(this.name);return a._compile(e)+"("+n.join(", ")+")"},n.prototype.forEach=function(e){for(var r=0;r=o?[!0]:[!1];case 2:var c,f=s.getPrecedence(r[0]),l=s.isAssociativeWith(e,r[0]);c=null===f?!1:f!==n||"right"!==i||l?n>f?!0:!1:!0;var p,m=s.getPrecedence(r[1]),h=s.isAssociativeWith(e,r[1]);if(p=null===m?!1:m!==n||"left"!==i||h?n>m?!0:!1:!0,t){var u=e.getIdentifier(),g=e.args[0].getIdentifier(),d=e.args[1].getIdentifier();null!==f&&(s.properties[n][u].latexLeftParens===!1&&(c=!1),s.properties[f][g].latexParens===!1&&(c=!1)),null!==m&&(s.properties[n][u].latexRightParens===!1&&(p=!1),s.properties[m][d].latexParens===!1&&(p=!1))}return[c,p];default:var v=[];return r.forEach(function(){v.push(!0)}),v}}var o=t(185),a=(t(181),t(188),t(184),t(343)),s=t(342),u=Array.isArray,c=o.isNode;n.prototype=new o,n.prototype.type="OperatorNode",n.prototype._compile=function(e){if(!(this.fn in e.math))throw new Error("Function "+this.fn+' missing in provided namespace "math"');var r=this.args.map(function(r){return r._compile(e)});return"math."+this.fn+"("+r.join(", ")+")"},n.prototype.forEach=function(e){for(var r=0;r3)throw new Error("Too many arguments");this.start=e,this.end=r,this.step=t||null}var i=t(185),o=t(342),a=i.isNode;n.prototype=new i,n.prototype.type="RangeNode",n.prototype._compile=function(e){return"math.range("+this.start._compile(e)+", "+this.end._compile(e)+(this.step?", "+this.step._compile(e):"")+")"},n.prototype.forEach=function(e){e(this.start,"start",this),e(this.end,"end",this),this.step&&e(this.step,"step",this)},n.prototype.map=function(e){return new n(this._ifNode(e(this.start,"start",this)),this._ifNode(e(this.end,"end",this)),this.step&&this._ifNode(e(this.step,"step",this)))},n.prototype.clone=function(){return new n(this.start,this.end,this.step&&this.step)},n.prototype.toString=function(){var e,r=o.getPrecedence(this),t=this.start.toString(),n=o.getPrecedence(this.start);if(null!==n&&r>=n&&(t="("+t+")"),e=t,this.step){var i=this.step.toString(),a=o.getPrecedence(this.step);null!==a&&r>=a&&(i="("+i+")"),e+=":"+i}var s=this.end.toString(),u=o.getPrecedence(this.end);return null!==u&&r>=u&&(s="("+s+")"),e+=":"+s},n.prototype._toTex=function(e){var r=this.start.toTex(e);return this.step&&(r+=":"+this.step.toTex(e)),r+=":"+this.end.toTex(e)},e.exports=n},function(e,r,t){"use strict";function n(e){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");if(!u(e))throw new TypeError('String expected for parameter "name"');this.name=e}function i(e){throw new Error("Undefined symbol "+e)}var o=t(185),a=t(11),s=t(343),u=t(176).isString;n.prototype=new o,n.prototype.type="SymbolNode",n.prototype._compile=function(e){return e.undef=i,e.Unit=a,this.name in e.args?this.name:this.name in e.math?'("'+this.name+'" in scope ? scope["'+this.name+'"] : math["'+this.name+'"])':'("'+this.name+'" in scope ? scope["'+this.name+'"] : '+(a.isValuelessUnit(this.name)?'new Unit(null, "'+this.name+'")':'undef("'+this.name+'")')+")"},n.prototype.forEach=function(e){},n.prototype.map=function(e){return this.clone()},n.prototype.clone=function(){return new n(this.name)},n.prototype.toString=function(){return this.name},n.prototype._toTex=function(e){var r=s.toSymbol(this.name);return"\\"===r[0]?r:" "+r},e.exports=n},function(e,r,t){"use strict";function n(e,r){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");if(!(e instanceof o))throw new TypeError('Expected IndexNode for parameter "index"');if(!(r instanceof i))throw new TypeError('Expected Node for parameter "expr"');this.index=e,this.expr=r}var i=t(185),o=t(182);n.prototype=new i,n.prototype.type="UpdateNode",n.prototype._compile=function(e){var r=this.index.objectName()in e.args?this.name+" = ":'scope["'+this.index.objectName()+'"]',t=this.index.compileSubset(e,this.expr._compile(e));return r+" = "+t},n.prototype.forEach=function(e){e(this.index,"index",this),e(this.expr,"expr",this)},n.prototype.map=function(e){return new n(this._ifNode(e(this.index,"index",this)),this._ifNode(e(this.expr,"expr",this)))},n.prototype.clone=function(){return new n(this.index,this.expr)},n.prototype.toString=function(){return this.index.toString()+" = "+this.expr.toString()},n.prototype._toTex=function(e){return this.index.toTex(e)+":="+this.expr.toTex(e)},e.exports=n},function(e,r,t){e.exports={name:"e",category:"Constants",syntax:["e"],description:"Euler's number, the base of the natural logarithm. Approximately equal to 2.71828",examples:["e","e ^ 2","exp(2)","log(e)"],seealso:["exp"]}},function(e,r,t){e.exports={name:"false",category:"Constants",syntax:["false"],description:"Boolean value false",examples:["false"],seealso:["true"]}},function(e,r,t){e.exports={name:"i",category:"Constants",syntax:["i"],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.",examples:["i","i * i","sqrt(-1)"],seealso:[]}},function(e,r,t){e.exports={name:"Infinity",category:"Constants",syntax:["Infinity"],description:"Infinity, a number which is larger than the maximum number that can be handled by a floating point number.",examples:["Infinity","1 / 0"],seealso:[]}},function(e,r,t){e.exports={name:"LN2",category:"Constants",syntax:["LN2"],description:"Returns the natural logarithm of 2, approximately equal to 0.693",examples:["LN2","log(2)"],seealso:[]}},function(e,r,t){e.exports={name:"LN10",category:"Constants",syntax:["LN10"],description:"Returns the natural logarithm of 10, approximately equal to 2.302",examples:["LN10","log(10)"],seealso:[]}},function(e,r,t){e.exports={name:"LOG2E",category:"Constants",syntax:["LOG2E"],description:"Returns the base-2 logarithm of E, approximately equal to 1.442",examples:["LOG2E","log(e, 2)"],seealso:[]}},function(e,r,t){e.exports={name:"LOG10E",category:"Constants",syntax:["LOG10E"],description:"Returns the base-10 logarithm of E, approximately equal to 0.434",examples:["LOG10E","log(e, 10)"],seealso:[]}},function(e,r,t){e.exports={name:"NaN",category:"Constants",syntax:["NaN"],description:"Not a number",examples:["NaN","0 / 0"],seealso:[]}},function(e,r,t){e.exports={name:"null",category:"Constants",syntax:["null"],description:"Value null",examples:["null"],seealso:["true","false"]}},function(e,r,t){e.exports={name:"pi",category:"Constants",syntax:["pi"],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",examples:["pi","sin(pi/2)"],seealso:["tau"]}},function(e,r,t){e.exports={name:"phi",category:"Constants",syntax:["phi"],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...",examples:["tau"],seealso:[]}},function(e,r,t){e.exports={name:"SQRT1_2",category:"Constants",syntax:["SQRT1_2"],description:"Returns the square root of 1/2, approximately equal to 0.707",examples:["SQRT1_2","sqrt(1/2)"],seealso:[]}},function(e,r,t){e.exports={name:"SQRT2",category:"Constants",syntax:["SQRT2"],description:"Returns the square root of 2, approximately equal to 1.414",examples:["SQRT2","sqrt(2)"],seealso:[]}},function(e,r,t){e.exports={name:"tau",category:"Constants",syntax:["tau"],description:"Tau is the ratio constant of a circle's circumference to radius, equal to 2 * pi, approximately 6.2832.",examples:["tau","2 * pi"],seealso:["pi"]}},function(e,r,t){e.exports={name:"true",category:"Constants",syntax:["true"],description:"Boolean value true",examples:["true"],seealso:["false"]}},function(e,r,t){e.exports={name:"version",category:"Constants",syntax:["version"],description:"A string with the version number of math.js",examples:["version"],seealso:[]}},function(e,r,t){function n(e){return t(i(e))}function i(e){return o[e]||function(){throw new Error("Cannot find module '"+e+"'.")}()}var o={"./clone":158,"./clone.js":158,"./filter":159,"./filter.js":159,"./forEach":166,"./forEach.js":166,"./format":160,"./format.js":160,"./import":161,"./import.js":161,"./map":162,"./map.js":162,"./print":163,"./print.js":163,"./sort":164,"./sort.js":164,"./typeof":165,"./typeof.js":165};n.keys=function(){return Object.keys(o)},n.resolve=i,e.exports=n,n.id=207},function(e,r,t){var n=(t(172),t(173));r.transform=function(e){return e instanceof n?new n(e.index+1,e.min+1,e.max+1):e}},function(e,r,t){"use strict";r.isBoolean=function(e){return e instanceof Boolean||"boolean"==typeof e}},function(e,r,t){e.exports={name:"abs",category:"Arithmetic",syntax:["abs(x)"],description:"Compute the absolute value.",examples:["abs(3.5)","abs(-4.2)"],seealso:["sign"]}},function(e,r,t){e.exports={name:"add",category:"Operators",syntax:["x + y","add(x, y)"],description:"Add two values.",examples:["a = 2.1 + 3.6","a - 3.6","3 + 2i",'"hello" + " world"',"3 cm + 2 inch"],seealso:["subtract"]}},function(e,r,t){e.exports={name:"ceil",category:"Arithmetic",syntax:["ceil(x)"],description:"Round a value towards plus infinity. If x is complex, both real and imaginary part are rounded towards plus infinity.",examples:["ceil(3.2)","ceil(3.8)","ceil(-4.2)"],seealso:["floor","fix","round"]}},function(e,r,t){e.exports={name:"cube",category:"Arithmetic",syntax:["cube(x)"],description:"Compute the cube of a value. The cube of x is x * x * x.",examples:["cube(2)","2^3","2 * 2 * 2"],seealso:["multiply","square","pow"]}},function(e,r,t){e.exports={name:"divide",category:"Operators",syntax:["x / y","divide(x, y)"],description:"Divide two values.",examples:["a = 2 / 3","a * 3","4.5 / 2","3 + 4 / 2","(3 + 4) / 2","18 km / 4.5"],seealso:["multiply"]}},function(e,r,t){e.exports={name:"dotDivide",category:"Operators",syntax:["x ./ y","dotDivide(x, y)"],description:"Divide two values element wise.",examples:["a = [1, 2, 3; 4, 5, 6]","b = [2, 1, 1; 3, 2, 5]","a ./ b"],seealso:["multiply","dotMultiply","divide"]}},function(e,r,t){e.exports={name:"dotMultiply",category:"Operators",syntax:["x .* y","dotMultiply(x, y)"],description:"Multiply two values element wise.",examples:["a = [1, 2, 3; 4, 5, 6]","b = [2, 1, 1; 3, 2, 5]","a .* b"],seealso:["multiply","divide","dotDivide"]}},function(e,r,t){e.exports={name:"dotpow",category:"Operators",syntax:["x .^ y","dotpow(x, y)"],description:"Calculates the power of x to y element wise.",examples:["a = [1, 2, 3; 4, 5, 6]","a .^ 2"],seealso:["pow"]}},function(e,r,t){e.exports={name:"exp",category:"Arithmetic",syntax:["exp(x)"],description:"Calculate the exponent of a value.",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"],seealso:["pow","log"]}},function(e,r,t){e.exports={name:"fix",category:"Arithmetic",syntax:["fix(x)"],description:"Round a value towards zero. If x is complex, both real and imaginary part are rounded towards zero.",examples:["fix(3.2)","fix(3.8)","fix(-4.2)","fix(-4.8)"],seealso:["ceil","floor","round"]}},function(e,r,t){e.exports={name:"floor",category:"Arithmetic",syntax:["floor(x)"],description:"Round a value towards minus infinity.If x is complex, both real and imaginary part are rounded towards minus infinity.",examples:["floor(3.2)","floor(3.8)","floor(-4.2)"],seealso:["ceil","fix","round"]}},function(e,r,t){e.exports={name:"gcd",category:"Arithmetic",syntax:["gcd(a, b)","gcd(a, b, c, ...)"],description:"Compute the greatest common divisor.",examples:["gcd(8, 12)","gcd(-4, 6)","gcd(25, 15, -10)"],seealso:["lcm","xgcd"]}},function(e,r,t){e.exports={name:"lcm",category:"Arithmetic",syntax:["lcm(x, y)"],description:"Compute the least common multiple.",examples:["lcm(4, 6)","lcm(6, 21)","lcm(6, 21, 5)"],seealso:["gcd"]}},function(e,r,t){e.exports={name:"log",category:"Arithmetic",syntax:["log(x)","log(x, base)"],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).",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"],seealso:["exp","log10"]}},function(e,r,t){e.exports={name:"log10",category:"Arithmetic",syntax:["log10(x)"],description:"Compute the 10-base logarithm of a value.",examples:["log10(0.00001)","log10(10000)","10 ^ 4","log(10000) / log(10)","log(10000, 10)"],seealso:["exp","log"]}},function(e,r,t){e.exports={name:"mod",category:"Operators",syntax:["x % y","x mod y","mod(x, y)"],description:"Calculates the modulus, the remainder of an integer division.",examples:["7 % 3","11 % 2","10 mod 4","function isOdd(x) = x % 2","isOdd(2)","isOdd(3)"],seealso:["divide"]}},function(e,r,t){e.exports={name:"multiply",category:"Operators",syntax:["x * y","multiply(x, y)"],description:"multiply two values.",examples:["a = 2.1 * 3.4","a / 3.4","2 * 3 + 4","2 * (3 + 4)","3 * 2.1 km"],seealso:["divide"]}},function(e,r,t){e.exports={name:"norm",category:"Arithmetic",syntax:["norm(x)","norm(x, p)"],description:"Calculate the norm of a number, vector or matrix.",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')"]}},function(e,r,t){e.exports={name:"nthRoot",category:"Arithmetic",syntax:["nthRoot(a)","nthRoot(a, root)"],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".',examples:["4 ^ 3","nthRoot(64, 3)","nthRoot(9, 2)","sqrt(9)"],seealso:["sqrt","pow"]}},function(e,r,t){e.exports={name:"pow",category:"Operators",syntax:["x ^ y","pow(x, y)"],description:"Calculates the power of x to y, x^y.",examples:["2^3 = 8","2*2*2","1 + e ^ (pi * i)"],seealso:["multiply"]}},function(e,r,t){e.exports={name:"round",category:"Arithmetic",syntax:["round(x)","round(x, 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.",examples:["round(3.2)","round(3.8)","round(-4.2)","round(-4.8)","round(pi, 3)","round(123.45678, 2)"],seealso:["ceil","floor","fix"]}},function(e,r,t){e.exports={name:"sign",category:"Arithmetic",syntax:["sign(x)"],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.",examples:["sign(3.5)","sign(-4.2)","sign(0)"],seealso:["abs"]}},function(e,r,t){e.exports={name:"sqrt",category:"Arithmetic",syntax:["sqrt(x)"],description:"Compute the square root value. If x = y * y, then y is the square root of x.",examples:["sqrt(25)","5 * 5","sqrt(-1)"],seealso:["square","multiply"]}},function(e,r,t){e.exports={name:"square",category:"Arithmetic",syntax:["square(x)"],description:"Compute the square of a value. The square of x is x * x.",examples:["square(3)","sqrt(9)","3^2","3 * 3"],seealso:["multiply","pow","sqrt","cube"]}},function(e,r,t){e.exports={name:"subtract",category:"Operators",syntax:["x - y","subtract(x, y)"],description:"subtract two values.",examples:["a = 5.3 - 2","a + 2","2/3 - 1/6","2 * 3 - 3","2.1 km - 500m"],seealso:["add"]}},function(e,r,t){e.exports={name:"unaryMinus",category:"Operators",syntax:["-x","unaryMinus(x)"],description:"Inverse the sign of a value. Converts booleans and strings to numbers.",examples:["-4.5","-(-5.6)",'-"22"'],seealso:["add","subtract","unaryPlus"]}},function(e,r,t){e.exports={name:"unaryPlus",category:"Operators",syntax:["+x","unaryPlus(x)"],description:"Converts booleans and strings to numbers.",examples:["+true",'+"2"'],seealso:["add","subtract","unaryMinus"]}},function(e,r,t){e.exports={name:"xgcd",category:"Arithmetic",syntax:["xgcd(a, b)"],description:"Calculate the extended greatest common divisor for two values",examples:["xgcd(8, 12)","gcd(8, 12)","xgcd(36163, 21199)"],seealso:["gcd","lcm"]}},function(e,r,t){e.exports={name:"bitAnd",category:"Bitwise",syntax:["x & y","bitAnd(x, y)"],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",examples:["5 & 3","bitAnd(53, 131)","[1, 12, 31] & 42"],seealso:["bitNot","bitOr","bitXor","leftShift","rightArithShift","rightLogShift"]}},function(e,r,t){e.exports={name:"bitNot",category:"Bitwise",syntax:["~x","bitNot(x)"],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.",examples:["~1","~2","bitNot([2, -3, 4])"],seealso:["bitAnd","bitOr","bitXor","leftShift","rightArithShift","rightLogShift"]}},function(e,r,t){e.exports={name:"bitOr",category:"Bitwise",syntax:["x | y","bitOr(x, y)"],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.",examples:["5 | 3","bitOr([1, 2, 3], 4)"],seealso:["bitAnd","bitNot","bitXor","leftShift","rightArithShift","rightLogShift"]}},function(e,r,t){e.exports={name:"bitXor",category:"Bitwise",syntax:["bitXor(x, y)"],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.",examples:["bitOr(1, 2)","bitXor([2, 3, 4], 4)"],seealso:["bitAnd","bitNot","bitOr","leftShift","rightArithShift","rightLogShift"]}},function(e,r,t){e.exports={name:"leftShift",category:"Bitwise",syntax:["x << y","leftShift(x, y)"],description:"Bitwise left logical shift of a value x by y number of bits.",examples:["4 << 1","8 >> 1"],seealso:["bitAnd","bitNot","bitOr","bitXor","rightArithShift","rightLogShift"]}},function(e,r,t){e.exports={name:"rightArithShift",category:"Bitwise",syntax:["x >> y","leftShift(x, y)"],description:"Bitwise right arithmetic shift of a value x by y number of bits.",examples:["8 >> 1","4 << 1","-12 >> 2"],seealso:["bitAnd","bitNot","bitOr","bitXor","leftShift","rightLogShift"]}},function(e,r,t){e.exports={name:"rightLogShift",category:"Bitwise",syntax:["x >> y","leftShift(x, y)"],description:"Bitwise right logical shift of a value x by y number of bits.",examples:["8 >>> 1","4 << 1","-12 >>> 2"],seealso:["bitAnd","bitNot","bitOr","bitXor","leftShift","rightArithShift"]}},function(e,r,t){e.exports={name:"arg",category:"Complex",syntax:["arg(x)"],description:"Compute the argument of a complex value. If x = a+bi, the argument is computed as atan2(b, a).",examples:["arg(2 + 2i)","atan2(3, 2)","arg(2 + 3i)"],seealso:["re","im","conj","abs"]}},function(e,r,t){e.exports={name:"conj",category:"Complex",syntax:["conj(x)"],description:"Compute the complex conjugate of a complex value. If x = a+bi, the complex conjugate is a-bi.",examples:["conj(2 + 3i)","conj(2 - 3i)","conj(-5.2i)"],seealso:["re","im","abs","arg"]}},function(e,r,t){e.exports={name:"re",category:"Complex",syntax:["re(x)"],description:"Get the real part of a complex number.",examples:["re(2 + 3i)","im(2 + 3i)","re(-5.2i)","re(2.4)"],seealso:["im","conj","abs","arg"]}},function(e,r,t){e.exports={name:"im",category:"Complex",syntax:["im(x)"],description:"Get the imaginary part of a complex number.",examples:["im(2 + 3i)","re(2 + 3i)","im(-5.2i)","im(2.4)"],seealso:["re","conj","abs","arg"]}},function(e,r,t){e.exports={name:"bignumber",category:"Type",syntax:["bignumber(x)"],description:"Create a big number from a number or string.",examples:["0.1 + 0.2","bignumber(0.1) + bignumber(0.2)",'bignumber("7.2")','bignumber("7.2e500")',"bignumber([0.1, 0.2, 0.3])"],seealso:["boolean","complex","index","matrix","string","unit"]}},function(e,r,t){e.exports={name:"boolean",category:"Type",syntax:["x","boolean(x)"],description:"Convert a string or number into a boolean.",examples:["boolean(0)","boolean(1)","boolean(3)",'boolean("true")','boolean("false")',"boolean([1, 0, 1, 1])"],seealso:["bignumber","complex","index","matrix","number","string","unit"]}},function(e,r,t){e.exports={name:"complex",category:"Type",syntax:["complex()","complex(re, im)","complex(string)"],description:"Create a complex number.",examples:["complex()","complex(2, 3)",'complex("7 - 2i")'],seealso:["bignumber","boolean","index","matrix","number","string","unit"]}},function(e,r,t){e.exports={name:"index",category:"Type",syntax:["[start]","[start:end]","[start:step:end]","[start1, start 2, ...]","[start1:end1, start2:end2, ...]","[start1:step1:end1, start2:step2:end2, ...]"],description:"Create an index to get or replace a subset of a matrix",examples:["[]","[1, 2, 3]","A = [1, 2, 3; 4, 5, 6]","A[1, :]","A[1, 2] = 50","A[0:2, 0:2] = ones(2, 2)"],seealso:["bignumber","boolean","complex","matrix,","number","range","string","unit"]}},function(e,r,t){e.exports={name:"matrix",category:"Type",syntax:["[]","[a1, b1, ...; a2, b2, ...]","matrix()","matrix([...])"],description:"Create a matrix.",examples:["[]","[1, 2, 3]","[1, 2, 3; 4, 5, 6]","matrix()","matrix([3, 4])"],seealso:["bignumber","boolean","complex","index","number","string","unit"]}},function(e,r,t){e.exports={name:"number",category:"Type",syntax:["x","number(x)"],description:"Create a number or convert a string or boolean into a number.",examples:["2","2e3","4.05","number(2)",'number("7.2")',"number(true)","number([true, false, true, true])",'number("52cm", "m")'],seealso:["bignumber","boolean","complex","index","matrix","string","unit"]}},function(e,r,t){e.exports={name:"string",category:"Type",syntax:['"text"',"string(x)"],description:"Create a string or convert a value to a string",examples:['"Hello World!"',"string(4.2)","string(3 + 2i)"],seealso:["bignumber","boolean","complex","index","matrix","number","unit"]}},function(e,r,t){e.exports={name:"unit",category:"Type",syntax:["value unit","unit(value, unit)","unit(string)"],description:"Create a unit.",examples:["5.5 mm","3 inch",'unit(7.1, "kilogram")','unit("23 deg")'],seealso:["bignumber","boolean","complex","index","matrix","number","string"]}},function(e,r,t){e.exports={name:"eval",category:"Expression",syntax:["eval(expression)","eval([expr1, expr2, expr3, ...])"],description:"Evaluate an expression or an array with expressions.",examples:['eval("2 + 3")','eval("sqrt(" + 4 + ")")'],seealso:[]}},function(e,r,t){e.exports={name:"help",category:"Expression",syntax:["help(object)","help(string)"],description:"Display documentation on a function or data type.",examples:["help(sqrt)",'help("complex")'],seealso:[]}},function(e,r,t){e.exports={name:"and",category:"Logical",syntax:["x and y","and(x, y)"],description:"Logical and. Test whether two values are both defined with a nonzero/nonempty value.",examples:["true and false","true and true","2 and 4"],seealso:["not","or","xor"]}},function(e,r,t){e.exports={name:"not",category:"Logical",syntax:["!x","not x","not(x)"],description:"Logical not. Flips the boolean value of given argument.",examples:["!true","not false","!2","!0"],seealso:["and","or","xor"]}},function(e,r,t){e.exports={name:"or",category:"Logical",syntax:["x or y","or(x, y)"],description:"Logical or. Test if at least one value is defined with a nonzero/nonempty value.",examples:["true or false","false or false","0 or 4"],seealso:["not","and","xor"]}},function(e,r,t){e.exports={name:"xor",category:"Logical",syntax:["x or y","or(x, y)"],description:"Logical exclusive or, xor. Test whether one and only one value is defined with a nonzero/nonempty value.",examples:["true xor false","false xor false","true xor true","0 or 4"],seealso:["not","and","or"]}},function(e,r,t){e.exports={name:"concat",category:"Matrix",syntax:["concat(A, B, C, ...)","concat(A, B, C, ..., dim)"],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.",examples:["A = [1, 2; 5, 6]","B = [3, 4; 7, 8]","concat(A, B)","concat(A, B, 1)","concat(A, B, 2)"],seealso:["det","diag","eye","inv","ones","range","size","squeeze","subset","trace","transpose","zeros"]}},function(e,r,t){e.exports={name:"cross",category:"Matrix",syntax:["cross(A, B)"],description:"Calculate the cross product for two vectors in three dimensional space.",examples:["cross([1, 1, 0], [0, 1, 1])","cross([3, -3, 1], [4, 9, 2])","cross([2, 3, 4], [5, 6, 7])"],seealso:["multiply","dot"]}},function(e,r,t){e.exports={name:"det",category:"Matrix",syntax:["det(x)"],description:"Calculate the determinant of a matrix",examples:["det([1, 2; 3, 4])","det([-2, 2, 3; -1, 1, 3; 2, 0, -1])"],seealso:["concat","diag","eye","inv","ones","range","size","squeeze","subset","trace","transpose","zeros"]}},function(e,r,t){e.exports={name:"diag",category:"Matrix",syntax:["diag(x)","diag(x, k)"],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.",examples:["diag(1:3)","diag(1:3, 1)","a = [1, 2, 3; 4, 5, 6; 7, 8, 9]","diag(a)"],seealso:["concat","det","eye","inv","ones","range","size","squeeze","subset","trace","transpose","zeros"]}},function(e,r,t){e.exports={name:"dot",category:"Matrix",syntax:["dot(A, B)"],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",examples:["dot([2, 4, 1], [2, 2, 3])","[2, 4, 1] * [2, 2, 3]"],seealso:["multiply","cross"]}},function(e,r,t){e.exports={name:"eye",category:"Matrix",syntax:["eye(n)","eye(m, n)","eye([m, n])","eye"],description:"Returns the identity matrix with size m-by-n. The matrix has ones on the diagonal and zeros elsewhere.",examples:["eye(3)","eye(3, 5)","a = [1, 2, 3; 4, 5, 6]","eye(size(a))"],seealso:["concat","det","diag","inv","ones","range","size","squeeze","subset","trace","transpose","zeros"]}},function(e,r,t){e.exports={name:"flatten",category:"Matrix",syntax:["flatten(x)"],description:"Flatten a multi dimensional matrix into a single dimensional matrix.",examples:["a = [1, 2, 3; 4, 5, 6]","size(a)","b = flatten(a)","size(b)"],seealso:["concat","resize","size","squeeze"]}},function(e,r,t){e.exports={name:"inv",category:"Matrix",syntax:["inv(x)"],description:"Calculate the inverse of a matrix",examples:["inv([1, 2; 3, 4])","inv(4)","1 / 4"],seealso:["concat","det","diag","eye","ones","range","size","squeeze","subset","trace","transpose","zeros"]}},function(e,r,t){e.exports={name:"ones",category:"Matrix",syntax:["ones(m)","ones(m, n)","ones(m, n, p, ...)","ones([m])","ones([m, n])","ones([m, n, p, ...])","ones"],description:"Create a matrix containing ones.",examples:["ones(3)","ones(3, 5)","ones([2,3]) * 4.5","a = [1, 2, 3; 4, 5, 6]","ones(size(a))"],seealso:["concat","det","diag","eye","inv","range","size","squeeze","subset","trace","transpose","zeros"]}},function(e,r,t){e.exports={name:"range",category:"Type",syntax:["start:end","start:step:end","range(start, end)","range(start, end, step)","range(string)"],description:"Create a range. Lower bound of the range is included, upper bound is excluded.",examples:["1:5","3:-1:-3","range(3, 7)","range(0, 12, 2)",'range("4:10")',"a = [1, 2, 3, 4; 5, 6, 7, 8]","a[1:2, 1:2]"],seealso:["concat","det","diag","eye","inv","ones","size","squeeze","subset","trace","transpose","zeros"]}},function(e,r,t){e.exports={name:"resize",category:"Matrix",syntax:["resize(x, size)","resize(x, size, defaultValue)"],description:"Resize a matrix.",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], "!")'],seealso:["size","subset","squeeze"]}},function(e,r,t){e.exports={name:"size",category:"Matrix",syntax:["size(x)"],description:"Calculate the size of a matrix.",examples:["size(2.3)",'size("hello world")',"a = [1, 2; 3, 4; 5, 6]","size(a)","size(1:6)"],seealso:["concat","det","diag","eye","inv","ones","range","squeeze","subset","trace","transpose","zeros"]}},function(e,r,t){e.exports={name:"squeeze",category:"Matrix",syntax:["squeeze(x)"],description:"Remove inner and outer singleton dimensions from a matrix.",examples:["a = zeros(3,2,1)","size(squeeze(a))","b = zeros(1,1,3)","size(squeeze(b))"],seealso:["concat","det","diag","eye","inv","ones","range","size","subset","trace","transpose","zeros"]}},function(e,r,t){e.exports={name:"subset",category:"Matrix",syntax:["value(index)","value(index) = replacement","subset(value, [index])","subset(value, [index], replacement)"],description:"Get or set a subset of a matrix or string. Indexes are one-based. Both the ranges lower-bound and upper-bound are included.",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]"],seealso:["concat","det","diag","eye","inv","ones","range","size","squeeze","trace","transpose","zeros"]}},function(e,r,t){e.exports={name:"trace",category:"Matrix",syntax:["trace(A)"],description:"Calculate the trace of a matrix: the sum of the elements on the main diagonal of a square matrix.",examples:["A = [1, 2, 3; -1, 2, 3; 2, 0, 3]","trace(A)"],seealso:["concat","det","diag","eye","inv","ones","range","size","squeeze","subset","transpose","zeros"]}},function(e,r,t){e.exports={name:"transpose",category:"Matrix",syntax:["x'","transpose(x)"],description:"Transpose a matrix",examples:["a = [1, 2, 3; 4, 5, 6]","a'","transpose(a)"],seealso:["concat","det","diag","eye","inv","ones","range","size","squeeze","subset","trace","zeros"]}},function(e,r,t){e.exports={name:"zeros",category:"Matrix",syntax:["zeros(m)","zeros(m, n)","zeros(m, n, p, ...)","zeros([m])","zeros([m, n])","zeros([m, n, p, ...])","zeros"],description:"Create a matrix containing zeros.",examples:["zeros(3)","zeros(3, 5)","a = [1, 2, 3; 4, 5, 6]","zeros(size(a))"],seealso:["concat","det","diag","eye","inv","ones","range","size","squeeze","subset","trace","transpose"]}},function(e,r,t){e.exports={name:"combinations",category:"Probability",syntax:["combinations(n, k)"],description:"Compute the number of combinations of n items taken k at a time",examples:["combinations(7, 5)"],seealso:["permutations","factorial"]}},function(e,r,t){e.exports={name:"factorial",category:"Probability",syntax:["n!","factorial(n)"],description:"Compute the factorial of a value",examples:["5!","5 * 4 * 3 * 2 * 1","3!"],seealso:["combinations","permutations","gamma"]}},function(e,r,t){e.exports={name:"gamma",category:"Probability",syntax:["gamma(n)"],description:"Compute the gamma function. For small values, the Lanczos approximation is used, and for large values the extended Stirling approximation.",examples:["gamma(4)","3!","gamma(1/2)","sqrt(pi)"],seealso:["factorial"]}},function(e,r,t){e.exports={name:"permutations", -category:"Probability",syntax:["permutations(n)","permutations(n, k)"],description:"Compute the number of permutations of n items taken k at a time",examples:["permutations(5)","permutations(5, 3)"],seealso:["combinations","factorial"]}},function(e,r,t){e.exports={name:"pickRandom",category:"Probability",syntax:["pickRandom(array)"],description:"Pick a random entry from a given array.",examples:["pickRandom(0:10)","pickRandom([1, 3, 1, 6])"],seealso:["random","randomInt"]}},function(e,r,t){e.exports={name:"random",category:"Probability",syntax:["random()","random(max)","random(min, max)","random(size)","random(size, max)","random(size, min, max)"],description:"Return a random number.",examples:["random()","random(10, 20)","random([2, 3])"],seealso:["pickRandom","randomInt"]}},function(e,r,t){e.exports={name:"randInt",category:"Probability",syntax:["randInt()","randInt(max)","randInt(min, max)","randInt(size)","randInt(size, max)","randInt(size, min, max)"],description:"Return a random integer number",examples:["randInt()","randInt(10, 20)","randInt([2, 3], 10)"],seealso:["pickRandom","random"]}},function(e,r,t){e.exports={name:"compare",category:"Relational",syntax:["compare(x, y)"],description:"Compare two values. Returns 1 if x is larger than y, -1 if x is smaller than y, and 0 if x and y are equal.",examples:["compare(2, 3)","compare(3, 2)","compare(2, 2)","compare(5cm, 40mm)","compare(2, [1, 2, 3])"],seealso:["equal","unequal","smaller","smallerEq","largerEq"]}},function(e,r,t){e.exports={name:"deepEqual",category:"Relational",syntax:["deepEqual(x, y)"],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.",examples:["[1,3,4] == [1,3,4]","[1,3,4] == [1,3]"],seealso:["equal","unequal","smaller","larger","smallerEq","largerEq","compare"]}},function(e,r,t){e.exports={name:"equal",category:"Relational",syntax:["x == y","equal(x, y)"],description:"Check equality of two values. Returns true if the values are equal, and false if not.",examples:["2+2 == 3","2+2 == 4","a = 3.2","b = 6-2.8","a == b","50cm == 0.5m"],seealso:["unequal","smaller","larger","smallerEq","largerEq","compare","deepEqual"]}},function(e,r,t){e.exports={name:"larger",category:"Relational",syntax:["x > y","larger(x, y)"],description:"Check if value x is larger than y. Returns true if x is larger than y, and false if not.",examples:["2 > 3","5 > 2*2","a = 3.3","b = 6-2.8","(a > b)","(b < a)","5 cm > 2 inch"],seealso:["equal","unequal","smaller","smallerEq","largerEq","compare"]}},function(e,r,t){e.exports={name:"largerEq",category:"Relational",syntax:["x >= y","largerEq(x, y)"],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.",examples:["2 > 1+1","2 >= 1+1","a = 3.2","b = 6-2.8","(a > b)"],seealso:["equal","unequal","smallerEq","smaller","largerEq","compare"]}},function(e,r,t){e.exports={name:"smaller",category:"Relational",syntax:["x < y","smaller(x, y)"],description:"Check if value x is smaller than value y. Returns true if x is smaller than y, and false if not.",examples:["2 < 3","5 < 2*2","a = 3.3","b = 6-2.8","(a < b)","5 cm < 2 inch"],seealso:["equal","unequal","larger","smallerEq","largerEq","compare"]}},function(e,r,t){e.exports={name:"smallerEq",category:"Relational",syntax:["x <= y","smallerEq(x, y)"],description:"Check if value x is smaller or equal to value y. Returns true if x is smaller than y, and false if not.",examples:["2 < 1+1","2 <= 1+1","a = 3.2","b = 6-2.8","(a < b)"],seealso:["equal","unequal","larger","smaller","largerEq","compare"]}},function(e,r,t){e.exports={name:"unequal",category:"Relational",syntax:["x != y","unequal(x, y)"],description:"Check unequality of two values. Returns true if the values are unequal, and false if they are equal.",examples:["2+2 != 3","2+2 != 4","a = 3.2","b = 6-2.8","a != b","50cm != 0.5m","5 cm != 2 inch"],seealso:["equal","smaller","larger","smallerEq","largerEq","compare","deepEqual"]}},function(e,r,t){e.exports={name:"max",category:"Statistics",syntax:["max(a, b, c, ...)","max(A)","max(A, dim)"],description:"Compute the maximum value of a list of values.",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)"],seealso:["mean","median","min","prod","std","sum","var"]}},function(e,r,t){e.exports={name:"mean",category:"Statistics",syntax:["mean(a, b, c, ...)","mean(A)","mean(A, dim)"],description:"Compute the arithmetic mean of a list of values.",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])"],seealso:["max","median","min","prod","std","sum","var"]}},function(e,r,t){e.exports={name:"median",category:"Statistics",syntax:["median(a, b, c, ...)","median(A)"],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.",examples:["median(5, 2, 7)","median([3, -1, 5, 7])"],seealso:["max","mean","min","prod","std","sum","var"]}},function(e,r,t){e.exports={name:"min",category:"Statistics",syntax:["min(a, b, c, ...)","min(A)","min(A, dim)"],description:"Compute the minimum value of a list of values.",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)"],seealso:["max","mean","median","prod","std","sum","var"]}},function(e,r,t){e.exports={name:"prod",category:"Statistics",syntax:["prod(a, b, c, ...)","prod(A)"],description:"Compute the product of all values.",examples:["prod(2, 3, 4)","prod([2, 3, 4])","prod([2, 5; 4, 3])"],seealso:["max","mean","min","median","min","std","sum","var"]}},function(e,r,t){e.exports={name:"std",category:"Statistics",syntax:["std(a, b, c, ...)","std(A)","std(A, normalization)"],description:'Compute the standard deviation of all values, defined as std(A) = sqrt(var(A)). Optional parameter normalization can be "unbiased" (default), "uncorrected", or "biased".',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])"],seealso:["max","mean","min","median","min","prod","sum","var"]}},function(e,r,t){e.exports={name:"sum",category:"Statistics",syntax:["sum(a, b, c, ...)","sum(A)"],description:"Compute the sum of all values.",examples:["sum(2, 3, 4, 1)","sum([2, 3, 4, 1])","sum([2, 5; 4, 3])"],seealso:["max","mean","median","min","prod","std","sum","var"]}},function(e,r,t){e.exports={name:"var",category:"Statistics",syntax:["var(a, b, c, ...)","var(A)","var(A, normalization)"],description:'Compute the variance of all values. Optional parameter normalization can be "unbiased" (default), "uncorrected", or "biased".',examples:["var(2, 4, 6)","var([2, 4, 6, 8])",'var([2, 4, 6, 8], "uncorrected")','var([2, 4, 6, 8], "biased")',"var([1, 2, 3; 4, 5, 6])"],seealso:["max","mean","min","median","min","prod","std","sum"]}},function(e,r,t){e.exports={name:"acos",category:"Trigonometry",syntax:["acos(x)"],description:"Compute the inverse cosine of a value in radians.",examples:["acos(0.5)","acos(cos(2.3))"],seealso:["cos","atan","asin"]}},function(e,r,t){e.exports={name:"acosh",category:"Trigonometry",syntax:["acosh(x)"],description:"Calculate the hyperbolic arccos of a value, defined as `acosh(x) = ln(sqrt(x^2 - 1) + x)`.",examples:["acosh(1.5)"],seealso:["cosh","asinh","atanh"]}},function(e,r,t){e.exports={name:"acot",category:"Trigonometry",syntax:["acot(x)"],description:"Calculate the inverse cotangent of a value.",examples:["acot(0.5)","acot(cot(0.5))","acot(2)"],seealso:["cot","atan"]}},function(e,r,t){e.exports={name:"acoth",category:"Trigonometry",syntax:["acoth(x)"],description:"Calculate the hyperbolic arccotangent of a value, defined as `acoth(x) = (ln((x+1)/x) + ln(x/(x-1))) / 2`.",examples:["acoth(0.5)"],seealso:["acsch","asech"]}},function(e,r,t){e.exports={name:"acsc",category:"Trigonometry",syntax:["acsc(x)"],description:"Calculate the inverse cotangent of a value.",examples:["acsc(0.5)","acsc(csc(0.5))","acsc(2)"],seealso:["csc","asin","asec"]}},function(e,r,t){e.exports={name:"acsch",category:"Trigonometry",syntax:["acsch(x)"],description:"Calculate the hyperbolic arccosecant of a value, defined as `acsch(x) = ln(1/x + sqrt(1/x^2 + 1))`.",examples:["acsch(0.5)"],seealso:["asech","acoth"]}},function(e,r,t){e.exports={name:"asec",category:"Trigonometry",syntax:["asec(x)"],description:"Calculate the inverse secant of a value.",examples:["asec(0.5)","asec(sec(0.5))","asec(2)"],seealso:["acos","acot","acsc"]}},function(e,r,t){e.exports={name:"asech",category:"Trigonometry",syntax:["asech(x)"],description:"Calculate the inverse secant of a value.",examples:["asech(0.5)"],seealso:["acsch","acoth"]}},function(e,r,t){e.exports={name:"asin",category:"Trigonometry",syntax:["asin(x)"],description:"Compute the inverse sine of a value in radians.",examples:["asin(0.5)","asin(sin(2.3))"],seealso:["sin","acos","atan"]}},function(e,r,t){e.exports={name:"asinh",category:"Trigonometry",syntax:["asinh(x)"],description:"Calculate the hyperbolic arcsine of a value, defined as `asinh(x) = ln(x + sqrt(x^2 + 1))`.",examples:["asinh(0.5)"],seealso:["acosh","atanh"]}},function(e,r,t){e.exports={name:"atan",category:"Trigonometry",syntax:["atan(x)"],description:"Compute the inverse tangent of a value in radians.",examples:["atan(0.5)","atan(tan(2.3))"],seealso:["tan","acos","asin"]}},function(e,r,t){e.exports={name:"atanh",category:"Trigonometry",syntax:["atanh(x)"],description:"Calculate the hyperbolic arctangent of a value, defined as `atanh(x) = ln((1 + x)/(1 - x)) / 2`.",examples:["atanh(0.5)"],seealso:["acosh","asinh"]}},function(e,r,t){e.exports={name:"atan2",category:"Trigonometry",syntax:["atan2(y, x)"],description:"Computes the principal value of the arc tangent of y/x in radians.",examples:["atan2(2, 2) / pi","angle = 60 deg in rad","x = cos(angle)","y = sin(angle)","atan2(y, x)"],seealso:["sin","cos","tan"]}},function(e,r,t){e.exports={name:"cos",category:"Trigonometry",syntax:["cos(x)"],description:"Compute the cosine of x in radians.",examples:["cos(2)","cos(pi / 4) ^ 2","cos(180 deg)","cos(60 deg)","sin(0.2)^2 + cos(0.2)^2"],seealso:["acos","sin","tan"]}},function(e,r,t){e.exports={name:"cosh",category:"Trigonometry",syntax:["cosh(x)"],description:"Compute the hyperbolic cosine of x in radians.",examples:["cosh(0.5)"],seealso:["sinh","tanh","coth"]}},function(e,r,t){e.exports={name:"cot",category:"Trigonometry",syntax:["cot(x)"],description:"Compute the cotangent of x in radians. Defined as 1/tan(x)",examples:["cot(2)","1 / tan(2)"],seealso:["sec","csc","tan"]}},function(e,r,t){e.exports={name:"coth",category:"Trigonometry",syntax:["coth(x)"],description:"Compute the hyperbolic cotangent of x in radians.",examples:["coth(2)","1 / tanh(2)"],seealso:["sech","csch","tanh"]}},function(e,r,t){e.exports={name:"csc",category:"Trigonometry",syntax:["csc(x)"],description:"Compute the cosecant of x in radians. Defined as 1/sin(x)",examples:["csc(2)","1 / sin(2)"],seealso:["sec","cot","sin"]}},function(e,r,t){e.exports={name:"csch",category:"Trigonometry",syntax:["csch(x)"],description:"Compute the hyperbolic cosecant of x in radians. Defined as 1/sinh(x)",examples:["csch(2)","1 / sinh(2)"],seealso:["sech","coth","sinh"]}},function(e,r,t){e.exports={name:"sec",category:"Trigonometry",syntax:["sec(x)"],description:"Compute the secant of x in radians. Defined as 1/cos(x)",examples:["sec(2)","1 / cos(2)"],seealso:["cot","csc","cos"]}},function(e,r,t){e.exports={name:"sech",category:"Trigonometry",syntax:["sech(x)"],description:"Compute the hyperbolic secant of x in radians. Defined as 1/cosh(x)",examples:["sech(2)","1 / cosh(2)"],seealso:["coth","csch","cosh"]}},function(e,r,t){e.exports={name:"sin",category:"Trigonometry",syntax:["sin(x)"],description:"Compute the sine of x in radians.",examples:["sin(2)","sin(pi / 4) ^ 2","sin(90 deg)","sin(30 deg)","sin(0.2)^2 + cos(0.2)^2"],seealso:["asin","cos","tan"]}},function(e,r,t){e.exports={name:"sinh",category:"Trigonometry",syntax:["sinh(x)"],description:"Compute the hyperbolic sine of x in radians.",examples:["sinh(0.5)"],seealso:["cosh","tanh"]}},function(e,r,t){e.exports={name:"tan",category:"Trigonometry",syntax:["tan(x)"],description:"Compute the tangent of x in radians.",examples:["tan(0.5)","sin(0.5) / cos(0.5)","tan(pi / 4)","tan(45 deg)"],seealso:["atan","sin","cos"]}},function(e,r,t){e.exports={name:"tanh",category:"Trigonometry",syntax:["tanh(x)"],description:"Compute the hyperbolic tangent of x in radians.",examples:["tanh(0.5)","sinh(0.5) / cosh(0.5)"],seealso:["sinh","cosh"]}},function(e,r,t){e.exports={name:"to",category:"Units",syntax:["x to unit","to(x, unit)"],description:"Change the unit of a value.",examples:["5 inch to cm","3.2kg to g","16 bytes in bits"],seealso:[]}},function(e,r,t){e.exports={name:"clone",category:"Utils",syntax:["clone(x)"],description:"Clone a variable. Creates a copy of primitive variables,and a deep copy of matrices",examples:["clone(3.5)","clone(2 - 4i)","clone(45 deg)","clone([1, 2; 3, 4])",'clone("hello world")'],seealso:[]}},function(e,r,t){e.exports={name:"map",category:"Utils",syntax:["map(x, callback)"],description:"Create a new matrix or array with the results of the callback function executed on each entry of the matrix/array.",examples:["map([1, 2, 3], function(val) { return value * value })"],seealso:["filter","forEach"]}},function(e,r,t){e.exports={name:"filter",category:"Utils",syntax:["filter(x, test)"],description:"Filter items in a matrix.",examples:["isPositive(x) = x > 0","filter([6, -2, -1, 4, 3], isPositive)","filter([6, -2, 0, 1, 0], x != 0)"],seealso:["sort","map","forEach"]}},function(e,r,t){e.exports={name:"forEach",category:"Utils",syntax:["forEach(x, callback)"],description:"Iterates over all elements of a matrix/array, and executes the given callback function.",examples:["forEach([1, 2, 3], function(val) { console.log(val) })"],seealso:["map","sort","filter"]}},function(e,r,t){e.exports={name:"format",category:"Utils",syntax:["format(value)","format(value, precision)"],description:"Format a value of any type as string.",examples:["format(2.3)","format(3 - 4i)","format([])","format(pi, 3)"],seealso:["print"]}},function(e,r,t){e.exports={name:"import",category:"Utils",syntax:["import(string)"],description:"Import functions from a file.",examples:['import("numbers")','import("./mylib.js")'],seealso:[]}},function(e,r,t){e.exports={name:"sort",category:"Utils",syntax:["sort(x)","sort(x, compare)"],description:'Sort the items in a matrix. Compare can be a string "asc" or "desc", or a custom sort function.',examples:["sort([5, 10, 1])",'sort(["C", "B", "A", "D"])',"sortByLength(a, b) = size(a)[1] - size(b)[1]",'sort(["Langdon", "Tom", "Sara"], sortByLength)'],seealso:["map","filter","forEach"]}},function(e,r,t){e.exports={name:"typeof",category:"Utils",syntax:["typeof(x)"],description:"Get the type of a variable.",examples:["typeof(3.5)","typeof(2 - 4i)","typeof(45 deg)",'typeof("hello world")'],seealso:[]}},function(e,r,t){"use strict";e.exports=function(e){function r(r){if(!s.hasOwnProperty(r))throw new Error("Unknown distribution "+r);var t=Array.prototype.slice.call(arguments,1),o=s[r].apply(this,t);return function(r){var t={random:function(r,t,i){var s,c,f;if(arguments.length>3)throw new e.error.ArgumentsError("random",arguments.length,0,3);if(1===arguments.length?a(r)?s=r:f=r:2===arguments.length?a(r)?(s=r,f=t):(c=r,f=t):(s=r,c=t,f=i),void 0===f&&(f=1),void 0===c&&(c=0),void 0!==s){var l=u(s.valueOf(),c,f,o);return s instanceof n?e.matrix(l):l}return o(c,f)},randomInt:function(r,t,i){var o,c,f;if(arguments.length>3||arguments.length<1)throw new e.error.ArgumentsError("randomInt",arguments.length,1,3);if(1===arguments.length?a(r)?o=r:f=r:2===arguments.length?a(r)?(o=r,f=t):(c=r,f=t):(o=r,c=t,f=i),void 0===c&&(c=0),void 0!==o){var l=u(o.valueOf(),c,f,s);return o instanceof n?e.matrix(l):l}return s(c,f)},pickRandom:function(r){if(1!==arguments.length)throw new e.error.ArgumentsError("pickRandom",arguments.length,1);if(r instanceof n)r=r.valueOf();else if(!Array.isArray(r))throw new e.error.UnsupportedTypeError("pickRandom",e["typeof"](r));if(i.size(r).length>1)throw new Error("Only one dimensional vectors supported");return r[Math.floor(Math.random()*r.length)]}},o=function(e,t){return e+r()*(t-e)},s=function(e,t){return Math.floor(e+r()*(t-e))},u=function(e,r,t,n){var i,o,a=[];if(e=e.slice(0),e.length>1)for(o=0,i=e.shift();i>o;o++)a.push(u(e,r,t,n));else for(o=0,i=e.shift();i>o;o++)a.push(n(r,t));return a};return t}(o)}var n=e.type.Matrix,i=t(169),o=e.collection,a=o.isCollection,s={uniform:function(){return Math.random},normal:function(){return function(){for(var e,r,t=-1;0>t||t>1;)e=Math.random(),r=Math.random(),t=1/6*Math.pow(-2*Math.log(e),.5)*Math.cos(2*Math.PI*r)+.5;return t}}};return r}},function(e,r,t){"use strict";r.type=function(e){var r=typeof e;if("object"===r){if(null===e)return"null";if(e instanceof Boolean)return"boolean";if(e instanceof Number)return"number";if(e instanceof String)return"string";if(Array.isArray(e))return"array";if(e instanceof Date)return"date";if(e instanceof Function)return"function";if(e instanceof RegExp)return"regexp"}return r}},function(e,r,t){r.memoize=function(e){return function r(){"object"!=typeof r.cache&&(r.cache={});var t=JSON.stringify(arguments);return t in r.cache?r.cache[t]:r.cache[t]=e.apply(e,arguments)}}},function(e,r,t){var n;!function(i){"use strict";function o(e){for(var r,t,n=1,i=e.length,o=e[0]+"";i>n;n++){for(r=e[n]+"",t=A-r.length;t--;)r="0"+r;o+=r}for(i=o.length;48===o.charCodeAt(--i););return o.slice(0,i+1||1)}function a(e,r,t,n){var i,o,a,s,u;for(o=1,a=e[0];a>=10;a/=10,o++);return a=r-o,0>a?(a+=A,i=0):(i=Math.ceil((a+1)/A),a%=A),o=N(10,A-a),u=e[i]%o|0,null==n?3>a?(0==a?u=u/100|0:1==a&&(u=u/10|0),s=4>t&&99999==u||t>3&&49999==u||5e4==u||0==u):s=(4>t&&u+1==o||t>3&&u+1==o/2)&&(e[i+1]/o/100|0)==N(10,a-2)-1||(u==o/2||0==u)&&0==(e[i+1]/o/100|0):4>a?(0==a?u=u/1e3|0:1==a?u=u/100|0:2==a&&(u=u/10|0),s=(n||4>t)&&9999==u||!n&&t>3&&4999==u):s=((n||4>t)&&u+1==o||!n&&t>3&&u+1==o/2)&&(e[i+1]/o/1e3|0)==N(10,a-3)-1,s}function s(e,r,t){var n=e.constructor;return null==r||((y=0>r||r>8)||0!==r&&(n.errors?parseInt:parseFloat)(r)!=r)&&!p(n,"rounding mode",r,t,0)?n.rounding:0|r}function u(e,r,t,n){var i=e.constructor;return!(y=(n||0)>r||r>=z+1)&&(0===r||(i.errors?parseInt:parseFloat)(r)==r)||p(i,"argument",r,t,0)}function c(e,r){var t,n,i,s,u,c,f,l=0,p=0,m=0,h=e.constructor,d=h.ONE,v=h.rounding,y=h.precision;if(!e.c||!e.c[0]||e.e>17)return new h(e.c?e.c[0]?e.s<0?0:1/0:d:e.s?e.s<0?0:e:0/0);for(null==r?(w=!1,u=y):u=r,f=new h(.03125);e.e>-2;)e=e.times(f),m+=5;for(n=Math.log(N(2,m))/Math.LN10*2+5|0,u+=n,t=s=c=new h(d),h.precision=u;;){if(s=g(s.times(e),u,1),t=t.times(++p),f=c.plus(U(s,t,u,1)),o(f.c).slice(0,u)===o(c.c).slice(0,u)){for(i=m;i--;)c=g(c.times(c),u,1);if(null!=r)return h.precision=y,c;if(!(3>l&&a(c.c,u-n,v,l)))return g(c,h.precision=y,v,w=!0);h.precision=u+=10,t=s=f=new h(d),p=0,l++}c=f}}function f(e,r,t,n){var i,a,s=e.constructor,u=(e=new s(e)).e;if(null==r?t=0:(g(e,++r,t),t=n?r:r+e.e-u),u=e.e,i=o(e.c),1==n||2==n&&(u>=r||u<=s.toExpNeg)){for(;i.length1&&(i=i.charAt(0)+"."+i.slice(1)),i+=(0>u?"e":"e+")+u}else{if(n=i.length,0>u){for(a=t-n;++u;i="0"+i);i="0."+i}else if(++u>n){for(a=t-u,u-=n;u--;i+="0");a>0&&(i+=".")}else a=t-n,n>u?i=i.slice(0,u)+"."+i.slice(u):a>0&&(i+=".");if(a>0)for(;a--;i+="0");}return e.s<0&&e.c[0]?"-"+i:i}function l(e){var r=e.length-1,t=r*A+1;if(r=e[r]){for(;r%10==0;r/=10,t--);for(r=e[0];r>=10;r/=10,t++);}return t}function p(e,r,t,n,i){if(e.errors){var o=new Error((n||["new Decimal","cmp","div","eq","gt","gte","lt","lte","minus","mod","plus","times","toFraction","pow","random","log","sqrt","toNearest","divToInt"][b?0>b?-b:b:0>1/b?1:0])+"() "+(["number type has more than 15 significant digits","LN10 out of digits"][r]||r+([y?" out of range":" not an integer"," not a boolean or binary digit"][i]||""))+": "+t);throw o.name="Decimal Error",y=b=0,o}}function m(e,r,t){var n=new e(e.ONE);for(w=!1;1&t&&(n=n.times(r)),t>>=1,t;)r=r.times(r);return w=!0,n}function h(e,r){var t,n,i,s,u,c,f,l,m,d,v,y=1,x=10,b=e,E=b.c,N=b.constructor,M=N.ONE,_=N.rounding,A=N.precision;if(b.s<0||!E||!E[0]||!b.e&&1==E[0]&&1==E.length)return new N(E&&!E[0]?-1/0:1!=b.s?0/0:E?0:b);if(null==r?(w=!1,f=A):f=r,N.precision=f+=x,t=o(E),n=t.charAt(0),!(Math.abs(s=b.e)<15e14))return b=new N(n+"."+t.slice(1)),f+2>q.length&&p(N,1,f+2,"ln"),b=h(b,f-x).plus(new N(q.slice(0,f+2)).times(s+"")),N.precision=A,null==r?g(b,A,_,w=!0):b;for(;7>n&&1!=n||1==n&&t.charAt(1)>3;)b=b.times(e),t=o(b.c),n=t.charAt(0),y++;for(s=b.e,n>1?(b=new N("0."+t),s++):b=new N(n+"."+t.slice(1)),d=b,l=u=b=U(b.minus(M),b.plus(M),f,1),v=g(b.times(b),f,1),i=3;;){if(u=g(u.times(v),f,1),m=l.plus(U(u,new N(i),f,1)),o(m.c).slice(0,f)===o(l.c).slice(0,f)){if(l=l.times(2),0!==s&&(f+2>q.length&&p(N,1,f+2,"ln"),l=l.plus(new N(q.slice(0,f+2)).times(s+""))),l=U(l,new N(y),f,1),null!=r)return N.precision=A,l;if(!a(l.c,f-x,_,c))return g(l,N.precision=A,_,w=!0);N.precision=f+=x,m=u=b=U(d.minus(M),d.plus(M),f,1),v=g(b.times(b),f,1),i=c=1}l=m,i+=2}}function g(e,r,t,n){var i,o,a,s,u,c,f,l,p=e.constructor;e:if(null!=r){if(!(f=e.c))return e;for(i=1,s=f[0];s>=10;s/=10,i++);if(o=r-i,0>o)o+=A,a=r,u=f[l=0],c=u/N(10,i-a-1)%10|0;else if(l=Math.ceil((o+1)/A),l>=f.length){if(!n)break e;for(;f.length<=l;f.push(0));u=c=0,i=1,o%=A,a=o-A+1}else{for(u=s=f[l],i=1;s>=10;s/=10,i++);o%=A,a=o-A+i,c=0>a?0:E(u/N(10,i-a-1)%10)}if(n=n||0>r||null!=f[l+1]||(0>a?u:u%N(10,i-a-1)),n=4>t?(c||n)&&(0==t||t==(e.s<0?3:2)):c>5||5==c&&(4==t||n||6==t&&(o>0?a>0?u/N(10,i-a):0:f[l-1])%10&1||t==(e.s<0?8:7)),1>r||!f[0])return f.length=0,n?(r-=e.e+1,f[0]=N(10,r%A),e.e=-r||0):f[0]=e.e=0,e;if(0==o?(f.length=l,s=1,l--):(f.length=l+1,s=N(10,A-o),f[l]=a>0?(u/N(10,i-a)%N(10,a)|0)*s:0),n)for(;;){if(0==l){for(o=1,a=f[0];a>=10;a/=10,o++);for(a=f[0]+=s,s=1;a>=10;a/=10,s++);o!=s&&(e.e++,f[0]==_&&(f[0]=1));break}if(f[l]+=s,f[l]!=_)break;f[l--]=0,s=1}for(o=f.length;0===f[--o];f.pop());}return w&&(e.e>p.maxE?e.c=e.e=null:e.ea,!i||!o)return u==c?0:!i^t?1:-1;if(u!=c)return u>c^t?1:-1;for(a=-1,s=(u=i.length)<(c=o.length)?u:c;++ao[a]^t?1:-1;return u==c?0:u>c^t?1:-1},S.decimalPlaces=S.dp=function(){var e,r,t=null;if(e=this.c){if(t=((r=e.length-1)-E(this.e/A))*A,r=e[r])for(;r%10==0;r/=10,t--);0>t&&(t=0)}return t},S.dividedBy=S.div=function(e,r){return b=2,U(this,new this.constructor(e,r))},S.dividedToIntegerBy=S.divToInt=function(e,r){var t=this,n=t.constructor;return b=18,g(U(t,new n(e,r),0,1,1),n.precision,n.rounding)},S.equals=S.eq=function(e,r){return b=3,0===this.cmp(e,r)},S.exponential=S.exp=function(){return c(this)},S.floor=function(){return g(new this.constructor(this),this.e+1,3)},S.greaterThan=S.gt=function(e,r){return b=4,this.cmp(e,r)>0},S.greaterThanOrEqualTo=S.gte=function(e,r){return b=5,r=this.cmp(e,r),1==r||0===r},S.isFinite=function(){return!!this.c},S.isInteger=S.isInt=function(){return!!this.c&&E(this.e/A)>this.c.length-2},S.isNaN=function(){return!this.s},S.isNegative=S.isNeg=function(){return this.s<0},S.isZero=function(){return!!this.c&&0==this.c[0]},S.lessThan=S.lt=function(e,r){return b=6,this.cmp(e,r)<0},S.lessThanOrEqualTo=S.lte=function(e,r){return b=7,r=this.cmp(e,r),-1==r||0===r},S.logarithm=S.log=function(e,r){var t,n,i,s,u,c,f,l,m,d=this,v=d.constructor,y=v.precision,x=v.rounding,E=5;if(null==e)e=new v(10),t=!0;else{if(b=15,e=new v(e,r),n=e.c,e.s<0||!n||!n[0]||!e.e&&1==n[0]&&1==n.length)return new v(0/0);t=e.eq(10)}if(n=d.c,d.s<0||!n||!n[0]||!d.e&&1==n[0]&&1==n.length)return new v(n&&!n[0]?-1/0:1!=d.s?0/0:n?0:1/0);if(u=t&&(s=n[0],n.length>1||1!=s&&10!=s&&100!=s&&1e3!=s&&1e4!=s&&1e5!=s&&1e6!=s),w=!1,f=y+E,l=f+10,c=h(d,f),t?(l>q.length&&p(v,1,l,"log"),i=new v(q.slice(0,l))):i=h(e,f),m=U(c,i,f,1),a(m.c,s=y,x))do if(f+=10,c=h(d,f),t?(l=f+10,l>q.length&&p(v,1,l,"log"),i=new v(q.slice(0,l))):i=h(e,f),m=U(c,i,f,1),!u){+o(m.c).slice(s+1,s+15)+1==1e14&&(m=g(m,y+1,0));break}while(a(m.c,s+=10,x));return w=!0,g(m,y,x)},S.minus=function(e,r){var t,n,i,o,a=this,s=a.constructor,u=a.s;if(b=8,e=new s(e,r),r=e.s,!u||!r)return new s(0/0);if(u!=r)return e.s=-r,a.plus(e);var c=a.c,f=e.c,l=E(e.e/A),p=E(a.e/A),m=s.precision,h=s.rounding;if(!p||!l){if(!c||!f)return c?(e.s=-r,e):new s(f?a:0/0);if(!c[0]||!f[0])return a=f[0]?(e.s=-r,e):new s(c[0]?a:3==h?-0:0),w?g(a,m,h):a}if(c=c.slice(),n=c.length,u=p-l){for((o=0>u)?(u=-u,t=c,n=f.length):(l=p,t=f),(p=Math.ceil(m/A))>n&&(n=p),u>(n+=2)&&(u=n,t.length=1),t.reverse(),r=u;r--;t.push(0));t.reverse()}else for((o=n<(i=f.length))&&(i=n),u=r=0;i>r;r++)if(c[r]!=f[r]){o=c[r]0)for(;r--;c[i++]=0);for(p=_-1,r=f.length;r>u;){if(c[--r]=10;r/=10,u++);return e.e=u+l*A-1,w?g(e,m,h):e},S.modulo=S.mod=function(e,r){var t,n,i=this,o=i.constructor,a=o.modulo;return b=9,e=new o(e,r),r=e.s,t=!i.c||!r||e.c&&!e.c[0],t||!e.c||i.c&&!i.c[0]?t?new o(0/0):g(new o(i),o.precision,o.rounding):(w=!1,9==a?(e.s=1,n=U(i,e,0,3,1),e.s=r,n.s*=r):n=U(i,e,0,a,1),n=n.times(e),w=!0,i.minus(n))},S.naturalLogarithm=S.ln=function(){return h(this)},S.negated=S.neg=function(){var e=new this.constructor(this);return e.s=-e.s||null,g(e)},S.plus=function(e,r){var t,n=this,i=n.constructor,o=n.s;if(b=10,e=new i(e,r),r=e.s,!o||!r)return new i(0/0);if(o!=r)return e.s=-r,n.minus(e);var a=n.c,s=e.c,u=E(e.e/A),c=E(n.e/A),f=i.precision,l=i.rounding;if(!c||!u){if(!a||!s)return new i(o/0);if(!a[0]||!s[0])return n=s[0]?e:new i(a[0]?n:0*o),w?g(n,f,l):n}if(a=a.slice(),o=c-u){for(0>o?(o=-o,t=a,r=s.length):(u=c,t=s,r=a.length),(c=Math.ceil(f/A))>r&&(r=c),o>++r&&(o=r,t.length=1),t.reverse();o--;t.push(0));t.reverse()}for(a.length-s.length<0&&(t=s,s=a,a=t),o=s.length,r=0,c=_;o;a[o]%=c)r=(a[--o]=a[o]+s[o]+r)/c|0;for(r&&(a.unshift(r),++u),o=a.length;0==a[--o];a.pop());for(e.c=a,o=1,r=a[0];r>=10;r/=10,o++);return e.e=o+u*A-1,w?g(e,f,l):e},S.precision=S.sd=function(e){var r=null,t=this;return e!=r&&e!==!!e&&1!==e&&0!==e&&p(t.constructor,"argument",e,"precision",1),t.c&&(r=l(t.c),e&&t.e+1>r&&(r=t.e+1)),r},S.round=function(){var e=this,r=e.constructor;return g(new r(e),e.e+1,r.rounding)},S.squareRoot=S.sqrt=function(){var e,r,t,n,i,a,s=this,u=s.c,c=s.s,f=s.e,l=s.constructor,p=new l(.5);if(1!==c||!u||!u[0])return new l(!c||0>c&&(!u||u[0])?0/0:u?s:1/0);for(w=!1,c=Math.sqrt(+s),0==c||c==1/0?(r=o(u),(r.length+f)%2==0&&(r+="0"),c=Math.sqrt(r),f=E((f+1)/2)-(0>f||f%2),c==1/0?r="1e"+f:(r=c.toExponential(),r=r.slice(0,r.indexOf("e")+1)+f),n=new l(r)):n=new l(c.toString()),t=(f=l.precision)+3;;)if(a=n,n=p.times(a.plus(U(s,a,t+2,1))),o(a.c).slice(0,t)===(r=o(n.c)).slice(0,t)){if(r=r.slice(t-3,t+1),"9999"!=r&&(i||"4999"!=r)){(!+r||!+r.slice(1)&&"5"==r.charAt(0))&&(g(n,f+1,1),e=!n.times(n).eq(s));break}if(!i&&(g(a,f+1,0),a.times(a).eq(s))){n=a;break}t+=4,i=1}return w=!0,g(n,f,l.rounding,e)},S.times=function(e,r){var t,n,i=this,o=i.constructor,a=i.c,s=(b=11,e=new o(e,r),e.c),u=E(i.e/A),c=E(e.e/A),f=i.s;if(r=e.s,e.s=f==r?1:-1,!((u||a&&a[0])&&(c||s&&s[0])))return new o(!f||!r||a&&!a[0]&&!s||s&&!s[0]&&!a?0/0:a&&s?0*e.s:e.s/0);for(n=u+c,f=a.length,r=s.length,r>f&&(t=a,a=s,s=t,c=f,f=r,r=c),c=f+r,t=[];c--;t.push(0));for(u=r-1;u>-1;u--){for(r=0,c=f+u;c>u;)r=t[c]+s[u]*a[c-u-1]+r,t[c--]=r%_|0,r=r/_|0;t[c]=(t[c]+r)%_|0}for(r?++n:t[0]||t.shift(),c=t.length;!t[--c];t.pop());for(e.c=t,f=1,r=t[0];r>=10;r/=10,f++);return e.e=f+n*A-1,w?g(e,o.precision,o.rounding):e},S.toDecimalPlaces=S.toDP=function(e,r){var t=this;return t=new t.constructor(t),null!=e&&u(t,e,"toDP")?g(t,(0|e)+t.e+1,s(t,r,"toDP")):t},S.toExponential=function(e,r){var t=this;return t.c?f(t,null!=e&&u(t,e,"toExponential")?0|e:null,null!=e&&s(t,r,"toExponential"),1):t.toString()},S.toFixed=function(e,r){var t,n=this,i=n.constructor,o=i.toExpNeg,a=i.toExpPos;return null!=e&&(e=u(n,e,t="toFixed")?n.e+(0|e):null,r=s(n,r,t)),i.toExpNeg=-(i.toExpPos=1/0),null!=e&&n.c?(t=f(n,e,r),n.s<0&&n.c&&(n.c[0]?t.indexOf("-")<0&&(t="-"+t):t=t.replace("-",""))):t=n.toString(),i.toExpNeg=o,i.toExpPos=a,t},S.toFormat=function(e,r){var t=this;if(!t.c)return t.toString();var n,i=t.s<0,o=t.constructor.format,a=o.groupSeparator,s=+o.groupSize,u=+o.secondaryGroupSize,c=t.toFixed(e,r).split("."),f=c[0],l=c[1],p=i?f.slice(1):f,m=p.length;if(u&&(n=s,s=u,m-=u=n),s>0&&m>0){for(n=m%s||s,f=p.substr(0,n);m>n;n+=s)f+=a+p.substr(n,s);u>0&&(f+=a+p.slice(n)),i&&(f="-"+f)}return l?f+o.decimalSeparator+((u=+o.fractionGroupSize)?l.replace(new RegExp("\\d{"+u+"}\\B","g"),"$&"+o.fractionGroupSeparator):l):f},S.toFraction=function(e){var r,t,n,i,a,s,u,c,f=this,m=f.constructor,h=r=new m(m.ONE),g=s=new m(0),d=f.c,v=new m(g);if(!d)return f.toString();for(n=v.e=l(d)-f.e-1,v.c[0]=N(10,(u=n%A)<0?A+u:u),(null==e||(!(b=12,a=new m(e)).s||(y=a.cmp(h)<0||!a.c)||m.errors&&E(a.e/A)0)&&(e=n>0?v:h),w=!1,a=new m(o(d)),u=m.precision,m.precision=n=d.length*A*2;c=U(a,v,0,1,1),t=r.plus(c.times(g)),1!=t.cmp(e);)r=g,g=t,h=s.plus(c.times(t=h)),s=t,v=a.minus(c.times(t=v)),a=t;return t=U(e.minus(r),g,0,1,1),s=s.plus(t.times(h)),r=r.plus(t.times(g)),s.s=h.s=f.s,i=U(h,g,n,1).minus(f).abs().cmp(U(s,r,n,1).minus(f).abs())<1?[h+"",g+""]:[s+"",r+""],w=!0,m.precision=u,i},S.toNearest=function(e,r){var t=this,n=t.constructor;return t=new n(t),null==e?(e=new n(n.ONE),r=n.rounding):(b=17,e=new n(e),r=s(t,r,"toNearest")),e.c?t.c&&(e.c[0]?(w=!1,t=U(t,e,0,4>r?[4,5,7,8][r]:r,1).times(e),w=!0,g(t)):t.c=[t.e=0]):t.s&&(e.s&&(e.s=t.s),t=e),t},S.toNumber=function(){var e=this;return+e||(e.s?0*e.s:0/0)},S.toPower=S.pow=function(e,r){var t,n,i,s,u=this,f=u.constructor,l=u.s,p=(b=13,+(e=new f(e,r))),d=0>p?-p:p,v=f.precision,y=f.rounding;if(!u.c||!e.c||(i=!u.c[0])||!e.c[0])return new f(N(i?0*l:+u,p));if(u=new f(u),t=u.c.length,!u.e&&u.c[0]==u.s&&1==t)return u;if(r=e.c.length-1,e.e||e.c[0]!=e.s||r)if(n=E(e.e/A), -i=n>=r,!i&&0>l)s=new f(0/0);else{if(i&&C>t*A*d){if(s=m(f,u,d),e.s<0)return f.ONE.div(s)}else{if(l=0>l&&1&e.c[Math.max(n,r)]?-1:1,r=N(+u,p),n=0!=r&&isFinite(r)?new f(r+"").e:E(p*(Math.log("0."+o(u.c))/Math.LN10+u.e+1)),n>f.maxE+1||n0?l/0:0);w=!1,f.rounding=u.s=1,d=Math.min(12,(n+"").length),s=c(e.times(h(u,v+d)),v),s=g(s,v+5,1),a(s.c,v,y)&&(n=v+10,s=g(c(e.times(h(u,n+d)),n),n+5,1),+o(s.c).slice(v+1,v+15)+1==1e14&&(s=g(s,v+1,0))),s.s=l,w=!0,f.rounding=y}s=g(s,v,y)}else s=g(u,v,y);return s},S.toPrecision=function(e,r){var t=this;return null!=e&&u(t,e,"toPrecision",1)&&t.c?f(t,0|--e,s(t,r,"toPrecision"),2):t.toString()},S.toSignificantDigits=S.toSD=function(e,r){var t=this,n=t.constructor;return t=new n(t),null!=e&&u(t,e,"toSD",1)?g(t,0|e,s(t,r,"toSD")):g(t,n.precision,n.rounding)},S.toString=function(e){var r,t,n,i=this,a=i.constructor,s=i.e;if(null===s)t=i.s?"Infinity":"NaN";else{if(e===r&&(s<=a.toExpNeg||s>=a.toExpPos))return f(i,null,a.rounding,1);if(t=o(i.c),0>s){for(;++s;t="0"+t);t="0."+t}else if(n=t.length,s>0)if(++s>n)for(s-=n;s--;t+="0");else n>s&&(t=t.slice(0,s)+"."+t.slice(s));else if(r=t.charAt(0),n>1)t=r+"."+t.slice(1);else if("0"==r)return r;if(null!=e)if((y=!(e>=2&&65>e))||e!=(0|e)&&a.errors)p(a,"base",e,"toString",0);else if(t=d(a,t,0|e,10,i.s),"0"==t)return t}return i.s<0?"-"+t:t},S.truncated=S.trunc=function(){return g(new this.constructor(this),this.e+1,1)},S.valueOf=S.toJSON=function(){return this.toString()},d=function(){function e(e,r,t){for(var n,i,o=[0],a=0,s=e.length;s>a;){for(i=o.length;i--;o[i]*=r);for(o[n=0]+=T.indexOf(e.charAt(a++));nt-1&&(null==o[n+1]&&(o[n+1]=0),o[n+1]+=o[n]/t|0,o[n]%=t)}return o.reverse()}return function(r,t,n,i,o){var a,s,u,c,f,l,p=t.indexOf("."),h=r.precision,g=r.rounding;for(37>i&&(t=t.toLowerCase()),p>=0&&(t=t.replace(".",""),l=new r(i),c=m(r,l,t.length-p),l.c=e(c.toFixed(),10,n),l.e=l.c.length),f=e(t,i,n),a=s=f.length;0==f[--s];f.pop());if(!f[0])return"0";if(0>p?a--:(c.c=f,c.e=a,c.s=o,c=U(c,l,h,g,0,n),f=c.c,u=c.r,a=c.e),p=f[h],s=n/2,u=u||null!=f[h+1],4>g?(null!=p||u)&&(0==g||g==(c.s<0?3:2)):p>s||p==s&&(4==g||u||6==g&&1&f[h-1]||g==(c.s<0?8:7)))for(f.length=h,--n;++f[--h]>n;)f[h]=0,h||(++a,f.unshift(1));else f.length=h;for(s=f.length;!f[--s];);for(p=0,t="";s>=p;t+=T.charAt(f[p++]));if(0>a){for(;++a;t="0"+t);t="0."+t}else if(p=t.length,++a>p)for(a-=p;a--;t+="0");else p>a&&(t=t.slice(0,a)+"."+t.slice(a));return t}}();var U=function(){function e(e,r,t){var n,i=0,o=e.length;for(e=e.slice();o--;)n=e[o]*r+i,e[o]=n%t|0,i=n/t|0;return i&&e.unshift(i),e}function r(e,r,t,n){var i,o;if(t!=n)o=t>n?1:-1;else for(i=o=0;t>i;i++)if(e[i]!=r[i]){o=e[i]>r[i]?1:-1;break}return o}function t(e,r,t,n){for(var i=0;t--;)e[t]-=i,i=e[t]1;e.shift());}return function(n,i,o,a,s,u){var c,f,l,p,m,h,d,v,y,x,w,b,N,M,T,S,O,z,C,q=n.constructor,U=n.s==i.s?1:-1,B=n.c,I=i.c;if(!(B&&B[0]&&I&&I[0]))return new q(n.s&&i.s&&(B?!I||B[0]!=I[0]:I)?B&&0==B[0]||!I?0*U:U/0:0/0);for(u?(p=1,f=n.e-i.e):(u=_,p=A,f=E(n.e/p)-E(i.e/p)),z=I.length,S=B.length,y=new q(U),x=y.c=[],l=0;I[l]==(B[l]||0);l++);if(I[l]>(B[l]||0)&&f--,null==o?(U=o=q.precision,a=q.rounding):U=s?o+(n.e-i.e)+1:o,0>U)x.push(1),m=!0;else{if(U=U/p+2|0,l=0,1==z){for(h=0,I=I[0],U++;(S>l||h)&&U--;l++)M=h*u+(B[l]||0),x[l]=M/I|0,h=M%I|0;m=h||S>l}else{for(h=u/(I[0]+1)|0,h>1&&(I=e(I,h,u),B=e(B,h,u),z=I.length,S=B.length),T=z,w=B.slice(0,z),b=w.length;z>b;w[b++]=0);C=I.slice(),C.unshift(0),O=I[0],I[1]>=u/2&&O++;do h=0,c=r(I,w,z,b),0>c?(N=w[0],z!=b&&(N=N*u+(w[1]||0)),h=N/O|0,h>1?(h>=u&&(h=u-1),d=e(I,h,u),v=d.length,b=w.length,c=r(d,w,v,b),1==c&&(h--,t(d,v>z?C:I,v,u))):(0==h&&(c=h=1),d=I.slice()),v=d.length,b>v&&d.unshift(0),t(w,d,b,u),-1==c&&(b=w.length,c=r(I,w,z,b),1>c&&(h++,t(w,b>z?C:I,b,u))),b=w.length):0===c&&(h++,w=[0]),x[l++]=h,c&&w[0]?w[b++]=B[T]||0:(w=[B[T]],b=1);while((T++=10;U/=10,l++);y.e=l+f*p-1,g(y,s?o+y.e+1:o,a,m)}return y}}();v=function(){function e(e){var r,t,n,i=this,o="config",a=i.errors?parseInt:parseFloat;return e==t||"object"!=typeof e&&!p(i,"object expected",e,o)?i:((n=e[r="precision"])!=t&&((y=1>n||n>z)||a(n)!=n?p(i,r,n,o,0):i[r]=0|n),(n=e[r="rounding"])!=t&&((y=0>n||n>8)||a(n)!=n?p(i,r,n,o,0):i[r]=0|n),(n=e[r="toExpNeg"])!=t&&((y=-O>n||n>0)||a(n)!=n?p(i,r,n,o,0):i[r]=E(n)),(n=e[r="toExpPos"])!=t&&((y=0>n||n>O)||a(n)!=n?p(i,r,n,o,0):i[r]=E(n)),(n=e[r="minE"])!=t&&((y=-O>n||n>0)||a(n)!=n?p(i,r,n,o,0):i[r]=E(n)),(n=e[r="maxE"])!=t&&((y=0>n||n>O)||a(n)!=n?p(i,r,n,o,0):i[r]=E(n)),(n=e[r="errors"])!=t&&(n===!!n||1===n||0===n?(y=b=0,i[r]=!!n):p(i,r,n,o,1)),(n=e[r="crypto"])!=t&&(n===!!n||1===n||0===n?i[r]=!(!n||!x||"object"!=typeof x):p(i,r,n,o,1)),(n=e[r="modulo"])!=t&&((y=0>n||n>9)||a(n)!=n?p(i,r,n,o,0):i[r]=0|n),(e=e[r="format"])!=t&&("object"==typeof e?i[r]=e:p(i,"format object expected",e,o)),i)}function r(e){return new this(e).exp()}function t(e){return new this(e).ln()}function n(e,r){return new this(e).log(r)}function i(e,r,t){var n,i,o=0;for("[object Array]"==M.call(r[0])&&(r=r[0]),n=new e(r[0]);++oi;)n=r[i],n>=429e7?r[i]=x.getRandomValues(new Uint32Array(1))[0]:o[i++]=n%1e7;else if(x&&x.randomBytes){for(r=x.randomBytes(t*=4);t>i;)n=r[i]+(r[i+1]<<8)+(r[i+2]<<16)+((127&r[i+3])<<24),n>=214e7?x.randomBytes(4).copy(r,i):(o.push(n%1e7),i+=4);i=t/4}else p(a,"crypto unavailable",x,"random");if(!i)for(;t>i;)o[i++]=1e7*Math.random()|0;for(t=o[--i],e%=A,t&&e&&(n=N(10,A-e),o[i]=(t/n|0)*n);0===o[i];i--)o.pop();if(0>i)o=[t=0];else{for(t=-1;0===o[0];)o.shift(),t-=A;for(i=1,n=o[0];n>=10;)n/=10,i++;A>i&&(t-=A-i)}return s.e=t,s.c=o,s}function f(e){return new this(e).sqrt()}function l(i){function u(e,r){var t=this;if(!(t instanceof u))return p(u,"Decimal called without new",e),new u(e,r);if(t.constructor=u,e instanceof u){if(null==r)return b=0,t.s=e.s,t.e=e.e,t.c=(e=e.c)?e.slice():e,t;if(10==r)return g(new u(e),u.precision,u.rounding);e+=""}return m(u,t,e,r)}return u.precision=20,u.rounding=4,u.modulo=1,u.toExpNeg=-7,u.toExpPos=21,u.minE=-O,u.maxE=O,u.errors=!0,u.crypto=!1,u.format={decimalSeparator:".",groupSeparator:",",groupSize:3,secondaryGroupSize:0,fractionGroupSeparator:" ",fractionGroupSize:0},u.prototype=S,u.ONE=new u(1),u.ROUND_UP=0,u.ROUND_DOWN=1,u.ROUND_CEIL=2,u.ROUND_FLOOR=3,u.ROUND_HALF_UP=4,u.ROUND_HALF_DOWN=5,u.ROUND_HALF_EVEN=6,u.ROUND_HALF_CEIL=7,u.ROUND_HALF_FLOOR=8,u.EUCLID=9,u.config=e,u.constructor=l,u.exp=r,u.ln=t,u.log=n,u.max=o,u.min=a,u.pow=s,u.sqrt=f,u.random=c,null!=i&&u.config(i),u}var m=function(){var e=/^-?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,r=String.prototype.trim||function(){return this.replace(/^\s+|\s+$/g,"")};return function(t,n,i,o){var a,s,u,c,f,l;if("string"!=typeof i&&(i=(c="number"==typeof i||"[object Number]"==M.call(i))&&0===i&&0>1/i?"-0":i+""),f=i,null==o&&e.test(i))n.s=45===i.charCodeAt(0)?(i=i.slice(1),-1):1;else{if(10==o)return g(new t(i),t.precision,t.rounding);if(i=r.call(i).replace(/^\+(?!-)/,""),n.s=45===i.charCodeAt(0)?(i=i.replace(/^-(?!-)/,""),-1):1,null!=o?o!=(0|o)&&t.errors||(y=!(o>=2&&65>o))?(p(t,"base",o,0,0),l=e.test(i)):(a="["+T.slice(0,o=0|o)+"]+",i=i.replace(/\.$/,"").replace(/^\./,"0."),(l=new RegExp("^"+a+"(?:\\."+a+")?$",37>o?"i":"").test(i))?(c&&(i.replace(/^0\.0*|\./,"").length>15&&p(t,0,f),c=!c),i=d(t,i,10,o,n.s)):"Infinity"!=i&&"NaN"!=i&&(p(t,"not a base "+o+" number",f),i="NaN")):l=e.test(i),!l)return n.c=n.e=null,"Infinity"!=i&&("NaN"!=i&&p(t,"not a number",f),n.s=null),b=0,n}for((s=i.indexOf("."))>-1&&(i=i.replace(".","")),(u=i.search(/e/i))>0?(0>s&&(s=u),s+=+i.slice(u+1),i=i.substring(0,u)):0>s&&(s=i.length),u=0;48===i.charCodeAt(u);u++);for(o=i.length;48===i.charCodeAt(--o););if(i=i.slice(u,o+1)){if(o=i.length,c&&o>15&&p(t,0,f),n.e=s=s-u-1,n.c=[],u=(s+1)%A,0>s&&(u+=A),o>u){for(u&&n.c.push(+i.slice(0,u)),o-=A;o>u;)n.c.push(+i.slice(u,u+=A));i=i.slice(u),u=A-i.length}else u-=o;for(;u--;i+="0");n.c.push(+i),w&&(n.e>t.maxE?n.c=n.e=null:n.e>",rightLogShift:">>>",equal:"=",unequal:"\\neq",smaller:"<",larger:">",smallerEq:"\\leq",largerEq:"\\geq",bitAnd:"\\&",bitXor:"\\underline{|}",bitOr:"|",and:"\\wedge",xor:"\\veebar",or:"\\vee"};var i="\\mathrm{%name%}\\left(%*%\\right)",o={abs:"\\left|%0%\\right|",add:"\\left(%0%+%1%\\right)",ceil:"\\left\\lceil%0%\\right\\rceil",cube:"\\left(%0%\\right)^3",divide:"\\frac{%0%}{%1%}",dotDivide:"\\left(%0%"+r.operators.dotDivide+"%1%\\right)",dotMultiply:"\\left(%0%"+r.operators.dotMultiply+"%1%\\right)",dotPow:"\\left(%0%"+r.operators.dotPow+"%1%\\right)",exp:"\\exp\\left(%0%\\right)",fix:i,floor:"\\left\\lfloor%0%\\right\\rfloor",gcd:"\\gcd\\left(%*%\\right)",lcm:i,log10:"\\log_{10}\\left(%0%\\right)",log:{1:"\\ln\\left(%0%\\right)",2:"\\log_{%1%}\\left(%0%\\right)"},mod:"\\left(%0%"+r.operators.mod+"%1%\\right)",multiply:"\\left(%0%"+r.operators.multiply+"%1%\\right)",norm:{1:"\\left\\|%0%\\right\\|",2:i},nthRoot:"\\sqrt[%1%]{%0%}",pow:"\\left(%0%\\right)"+r.operators.pow+"{%1%}",round:{1:"\\left\\lfloor%0%\\right\\rceil",2:i},sign:i,sqrt:"\\sqrt{%0%}",square:"\\left(%0%\\right)^2",subtract:"\\left(%0%"+r.operators.subtract+"%1%\\right)",unaryMinus:r.operators.unaryMinus+"\\left(%0%\\right)",unaryPlus:r.operators.unaryPlus+"\\left(%0%\\right)",xgcd:i,bitAnd:"\\left(%0%"+r.operators.bitAnd+"%1%\\right)",bitOr:"\\left(%0%"+r.operators.bitOr+"%1%\\right)",bitXor:"\\left(%0%"+r.operators.bitXor+"%1%\\right)",bitNot:r.operators.bitNot+"\\left(%0%\\right)",leftShift:"\\left(%0%"+r.operators.leftShift+"%1%\\right)",rightArithShift:"\\left(%0%"+r.operators.rightArithShift+"%1%\\right)",rightLogShift:"\\left(%0%"+r.operators.rightLogShift+"%1%\\right)",arg:"\\arg\\left(%0%\\right)",conj:"\\left(%0%\\right)^*",im:"\\Im\\left\\lbrace%0%\\right\\rbrace",re:"\\Re\\left\\lbrace%0%\\right\\rbrace",bignumber:{0:"0",1:"\\left(%0%\\right)"},"boolean":i,chain:i,complex:{0:"0",1:"\\left(%0%\\right)",2:"\\left(\\left(%0%\\right)+"+r.symbols.i+"\\cdot\\left(%1%\\right)\\right)"},index:i,matrix:{0:"\\begin{bmatrix}\\end{bmatrix}",1:"\\left(%0%\\right)",2:"\\left(%0%\\right)"},number:{0:"0",1:"\\left(%0%\\right)",2:"\\left(\\left(%0%\\right)%1%\\right)"},parser:i,string:{0:'""',1:function(e){return'"'+e.args[0].toString()+'"'}},unit:{1:"\\left(%0%\\right)",2:"\\left(\\left(%0%\\right)%1%\\right)"},compile:i,eval:i,help:i,parse:i,and:"\\left(%0%"+r.operators.and+"%1%\\right)",not:r.operators.not+"\\left(%0%\\right)",or:"\\left(%0%"+r.operators.or+"%1%\\right)",xor:"\\left(%0%"+r.operators.xor+"%1%\\right)",concat:i,cross:"\\left(%0%\\right)\\times\\left(%1%\\right)",det:"\\det\\left(%0%\\right)",diag:i,dot:"\\left(%0%\\cdot%1%\\right)",eye:i,flatten:i,inv:"\\left(%0%\\right)^{-1}",ones:i,range:i,resize:i,size:i,squeeze:i,subset:i,trace:"\\mathrm{tr}\\left(%0%\\right)",transpose:"\\left(%0%\\right)"+r.operators.transpose,zeros:i,combinations:"\\binom{%0%}{%1%}",distribution:i,factorial:"\\left(%0%\\right)"+r.operators.factorial,gamma:"\\Gamma\\left(%0%\\right)",permutations:i,pickRandom:i,randomInt:i,random:i,compare:i,deepEqual:i,equal:"\\left(%0%"+r.operators.equal+"%1%\\right)",largerEq:"\\left(%0%"+r.operators.largerEq+"%1%\\right)",larger:"\\left(%0%"+r.operators.larger+"%1%\\right)",smallerEq:"\\left(%0%"+r.operators.smallerEq+"%1%\\right)",smaller:"\\left(%0%"+r.operators.smaller+"%1%\\right)",unequal:"\\left(%0%"+r.operators.unequal+"%1%\\right)",max:"\\max\\left(%*%\\right)",mean:i,median:i,min:"\\min\\left(%*%\\right)",prod:i,std:i,sum:i,"var":"\\mathrm{Var}\\left(%*%\\right)",acosh:"\\cosh^{-1}\\left(%0%\\right)",acos:"\\cos^{-1}\\left(%0%\\right)",acoth:"\\coth^{-1}\\left(%0%\\right)",acot:"\\cot^{-1}\\left(%0%\\right)",acsch:"\\mathrm{csch}^{-1}\\left(%0%\\right)",acsc:"\\csc^{-1}\\left(%0%\\right)",asech:"\\mathrm{sech}^{-1}\\left(%0%\\right)",asec:"\\sec^{-1}\\left(%0%\\right)",asinh:"\\sinh^{-1}\\left(%0%\\right)",asin:"\\sin^{-1}\\left(%0%\\right)",atan2:"\\mathrm{atan2}\\left(%*%\\right)",atanh:"\\tanh^{-1}\\left(%0%\\right)",atan:"\\tan^{-1}\\left(%0%\\right)",cosh:"\\cosh\\left(%0%\\right)",cos:"\\cos\\left(%0%\\right)",coth:"\\coth\\left(%0%\\right)",cot:"\\cot\\left(%0%\\right)",csch:"\\mathrm{csch}\\left(%0%\\right)",csc:"\\csc\\left(%0%\\right)",sech:"\\mathrm{sech}\\left(%0%\\right)",sec:"\\sec\\left(%0%\\right)",sinh:"\\sinh\\left(%0%\\right)",sin:"\\sin\\left(%0%\\right)",tanh:"\\tanh\\left(%0%\\right)",tan:"\\tan\\left(%0%\\right)",to:"\\left(%0%"+r.operators.to+"%1%\\right)",clone:i,filter:i,forEach:i,format:i,"import":i,map:i,print:i,sort:i,"typeof":i},a={deg:"^\\circ"};r.toSymbol=function(e){if(a.hasOwnProperty(e))return a[e];if(r.symbols.hasOwnProperty(e))return r.symbols[e];if(-1!==e.indexOf("_")){var t=e.indexOf("_");return r.toSymbol(e.substring(0,t))+"_{"+r.toSymbol(e.substring(t+1))+"}"}return"\\mathrm{"+e+"}"},r.toFunction=function(e,r,t){var a=o[t],s=e.args.map(function(e){return e.toTex(r)});switch(typeof a){case"function":return a(e,r);case"string":return n(a,t,s);case"object":switch(typeof a[s.length]){case"function":return a[s.length](e,r);case"string":return n(a[s.length],t,s)}default:return n(i,t,s)}}}])}); +if(e.isNaN()||r.isNaN())return new t(0/0);var i=new t(-1);return e.isZero()||r.eq(i)||e.eq(r)?r:r.isZero()||e.eq(i)?e:e.isFinite()&&r.isFinite()?n(e,r,function(e,r){return e|r}):!e.isFinite()&&!e.isNegative()&&r.isNegative()||e.isNegative()&&!r.isNegative()&&!r.isFinite()?i:e.isNegative()&&r.isNegative()?e.isFinite()?e:r:e.isFinite()?r:e},r.rightShift=function(e,r){if(e.isFinite()&&!e.isInteger()||r.isFinite()&&!r.isInteger())throw new Error("Parameters in function rightArithShift must be integer numbers");var t=e.constructor;return e.isNaN()||r.isNaN()||r.isNegative()&&!r.isZero()?new t(0/0):e.isZero()||r.isZero()?e:r.isFinite()?r.lt(55)?e.div(Math.pow(2,r.toNumber())+"").floor():e.div(new t(2).pow(r)).floor():new t(e.isNegative()?-1:e.isFinite()?0:0/0)},r.xor=function(e,t){if(e.isFinite()&&!e.isInteger()||t.isFinite()&&!t.isInteger())throw new Error("Parameters in function bitXor must be integer numbers");var i=e.constructor;if(e.isNaN()||t.isNaN())return new i(0/0);if(e.isZero())return t;if(t.isZero())return e;if(e.eq(t))return new i(0);var o=new i(-1);return e.eq(o)?r.not(t):t.eq(o)?r.not(e):e.isFinite()&&t.isFinite()?n(e,t,function(e,r){return e^r}):e.isFinite()||t.isFinite()?new i(e.isNegative()==t.isNegative()?1/0:-(1/0)):o},r.arccos_arcsec=function(e,t,n){var i=t.precision;if(n){if(e.abs().lt(t.ONE))throw new Error("asec() only has non-complex values for |x| >= 1.")}else if(e.abs().gt(t.ONE))throw new Error("acos() only has non-complex values for |x| <= 1.");if(e.eq(-1))return r.pi(i);t.config({precision:i+4}),n&&(e=t.ONE.div(e));var o=r.arctan_arccot(t.ONE.minus(e.times(e)).sqrt().div(e.plus(t.ONE)),t).times(2);return t.config({precision:i}),o.toDP(i-1)},r.arcsin_arccsc=function(e,t,n){if(e.isNaN())return new t(0/0);var i=t.precision,s=e.abs();if(n){if(s.lt(t.ONE))throw new Error("acsc() only has non-complex values for |x| >= 1.");t.config({precision:i+2}),e=t.ONE.div(e),t.config({precision:i}),s=e.abs()}else if(s.gt(t.ONE))throw new Error("asin() only has non-complex values for |x| <= 1.");if(s.gt(.8)){t.config({precision:i+4});var u=e.s,c=r.pi(i+4).div(2);return e=c.minus(r.arcsin_arccsc(t.ONE.minus(e.times(e)).sqrt(),t)),e.s=u,e.constructor=t,t.config({precision:i}),e.toDP(i-1)}var f=s.gt(.58);f&&(t.config({precision:i+8}),e=e.div(new t(2).sqrt().times(t.ONE.minus(e.times(e)).sqrt().plus(t.ONE).sqrt())),t.config({precision:i}));var l=60>=i||e.dp()<=Math.log(i)&&e.lt(.05)?a(e,i):o(e,t);return f?l.times(2):l},r.arctan_arccot=function(e,t,n){if(e.isNaN())return new t(0/0);if(!n&&e.isZero()||n&&!e.isFinite())return new t(0);var i=t.precision;if(!n&&!e.isFinite()||n&&e.isZero()){var o=r.pi(i+2).div(2).toDP(i-1);return o.constructor=t,o.s=e.s,o}t.config({precision:i+4}),n&&(e=t.ONE.div(e));var a=e.abs();if(a.lte(.875)){var u=s(e);return u.constructor=t,t.config({precision:i}),u.toDP(t.precision-1)}if(a.gte(1.143)){var o=r.pi(i+4).div(2),u=o.minus(s(t.ONE.div(a)));return u.s=e.s,u.constructor=t,t.config({precision:i}),u.toDP(t.precision-1)}return e=e.div(e.times(e).plus(1).sqrt()),t.config({precision:i}),r.arcsin_arccsc(e,t)},r.arctan2=function(e,t,n){var i=n.precision;if(t.isZero()){if(e.isZero())return new n(0/0);var o=r.pi(i+2).div(2).toDP(i-1);return o.constructor=n,o.s=e.s,o}n.config({precision:i+2});var a=r.arctan_arccot(e.div(t),n,!1);if(t.isNegative()){var s=r.pi(i+2);a=e.isNegative()?a.minus(s):a.plus(s)}return a.constructor=n,n.config({precision:i}),a.toDP(i-1)},r.acosh_asinh_asech_acsch=function(e,r,t,n){if(e.isNaN())return new r(0/0);if(n&&e.isZero())return new r(1/0);if(!t)if(n){if(e.isNegative()||e.gt(r.ONE))throw new Error("asech() only has non-complex values for 0 <= x <= 1.")}else if(e.lt(r.ONE))throw new Error("acosh() only has non-complex values for x >= 1.");var i=r.precision;r.config({precision:i+4});var o=new r(e);o.constructor=r,n&&(o=r.ONE.div(o));var a=t?o.times(o).plus(r.ONE):o.times(o).minus(r.ONE),s=o.plus(a.sqrt()).ln();return r.config({precision:i}),new r(s.toPrecision(i))},r.atanh_acoth=function(e,r,t){if(e.isNaN())return new r(0/0);var n=e.abs();if(n.eq(r.ONE))return new r(e.isNegative()?-(1/0):1/0);if(n.gt(r.ONE)){if(!t)throw new Error("atanh() only has non-complex values for |x| <= 1.")}else if(t)throw new Error("acoth() has complex values for |x| < 1.");if(e.isZero())return new r(0);var i=r.precision;r.config({precision:i+4});var o=new r(e);o.constructor=r,t&&(o=r.ONE.div(o));var a=r.ONE.plus(o).div(r.ONE.minus(o)).ln().div(2);return r.config({precision:i}),new r(a.toPrecision(i))},r.cos_sin_sec_csc=function(e,r,t,n){if(e.isNaN()||!e.isFinite())return new r(0/0);var i=r.precision,o=new r(e),a=o.isNegative();a&&(o.s=-o.s);var s=i+(0|Math.log(i))+3;if(r.config({precision:s}),o=c(o,s,t),o[0].constructor=r,o[1])return o=o[0],n&&o.isZero()&&(o=new r(1/0)),r.config({precision:i}),o;var f;if(o=o[0],t){f=u(o.div(3125),t),r.config({precision:Math.min(s,i+15)});for(var l=new r(5),p=new r(16),m=new r(20),h=0;5>h;++h){var g=f.times(f),d=g.times(f),v=d.times(g);f=p.times(v).minus(m.times(d)).plus(l.times(f))}a&&(f.s=-f.s)}else{var y,x;o.abs().lt(r.ONE)?(y=64,x=3):(y=256,x=4),f=u(o.div(y),t),r.config({precision:Math.min(s,i+8)});for(var w=new r(8);x>0;--x){var g=f.times(f),b=g.times(g);f=w.times(b.minus(g)).plus(r.ONE)}}return n&&(f=f.e<=-i?new r(1/0):r.ONE.div(f)),r.config({precision:i}),f.toDP(i-1)},r.tan_cot=function(e,t,n){if(e.isNaN())return new t(0/0);var i=t.precision,o=r.pi(i+2),a=o.div(2).toDP(i-1);o=o.toDP(i-1);var s=c(e,i,1)[0];if(s.abs().eq(o))return new t(1/0);t.config({precision:i+4});var u=r.cos_sin_sec_csc(s,t,1,!1),l=f(u);u=u.toDP(i),l=l.toDP(i),s.eq(e)?s.gt(a)&&(l.s=-l.s):o.minus(s.abs()).gt(a)&&(l.s=-l.s);var p=n?l.div(u):u.div(l);return t.config({precision:i}),new t(p.toPrecision(i))},r.cosh_sinh_csch_sech=function(e,r,t,n){if(e.isNaN())return new r(0/0);if(!e.isFinite())return new r(n?0:t?e:1/0);var i=r.precision;r.config({precision:i+4});var o=new r(e);return o.constructor=r,o=o.exp(),o=t?o.minus(r.ONE.div(o)):o.plus(r.ONE.div(o)),o=n?new r(2).div(o):o.div(2),r.config({precision:i}),new r(o.toPrecision(i))},r.tanh_coth=function(e,r,t){if(e.isNaN())return new r(0/0);if(!e.isFinite())return new r(e.s);var n=r.precision;r.config({precision:n+4});var i=new r(e);i.constructor=r;var o=i.exp(),a=r.ONE.div(o),s=o.minus(a);return s=t?o.plus(a).div(s):s.div(o.plus(a)),r.config({precision:n}),s.toDP(n-1)},r.format=function(e,t){if("function"==typeof t)return t(e);if(!e.isFinite())return e.isNaN()?"NaN":e.gt(0)?"Infinity":"-Infinity";var n="auto",i=void 0;switch(void 0!==t&&(t.notation&&(n=t.notation),p(t)?i=t:t.precision&&(i=t.precision)),n){case"fixed":return r.toFixed(e,i);case"exponential":return r.toExponential(e,i);case"auto":var o=.001,a=1e5;t&&t.exponential&&(void 0!==t.exponential.lower&&(o=t.exponential.lower),void 0!==t.exponential.upper&&(a=t.exponential.upper));{({toExpNeg:e.constructor.toExpNeg,toExpPos:e.constructor.toExpPos})}if(e.constructor.config({toExpNeg:Math.round(Math.log(o)/Math.LN10),toExpPos:Math.round(Math.log(a)/Math.LN10)}),e.isZero())return"0";var s,u=e.abs();return s=u.gte(o)&&u.lt(a)?e.toSignificantDigits(i).toFixed():r.toExponential(e,i),s.replace(/((\.\d*?)(0+))($|e)/,function(){var e=arguments[2],r=arguments[4];return"."!==e?e+r:r});default:throw new Error('Unknown notation "'+n+'". Choose "auto", "exponential", or "fixed".')}},r.toExponential=function(e,r){return void 0!==r?e.toExponential(r-1):e.toExponential()},r.toFixed=function(e,r){return e.toFixed(r||0)}},function(e,r,t){"use strict";function n(e){for(var r=[];m(e);)r.push(e.length),e=e[0];return r}function i(e,r,t){var n,o=e.length;if(o!=r[t])throw new l(o,r[t]);if(tn;n++){var s=e[n];if(!m(s))throw new l(r.length-1,r.length,"<");i(e[n],r,a)}}else for(n=0;o>n;n++)if(m(e[n]))throw new l(r.length+1,r.length,">")}function o(e,t,n,i){var a,s,u=e.length,c=t[n],l=Math.min(u,c);if(e.length=c,na;a++)s=e[a],m(s)||(s=[s],e[a]=s),o(s,t,p,i);for(a=l;c>a;a++)s=[],e[a]=s,o(s,t,p,i)}else{for(a=0;l>a;a++)for(;m(e[a]);)e[a]=e[a][0];if(i!==r.UNINITIALIZED)for(a=l;c>a;a++)e[a]=f.clone(i)}}function a(e,r,t){var n,i;if(r>t){var o=t+1;for(n=0,i=e.length;i>n;n++)e[n]=a(e[n],r,o)}else for(;m(e);)e=e[0];return e}function s(e,r,t){var n,i;if(m(e)){var o=t+1;for(n=0,i=e.length;i>n;n++)e[n]=s(e[n],r,o)}else for(var a=t;r>a;a++)e=[e];return e}var u=t(3),c=t(177),f=t(2),l=(t(339),t(172)),p=t(173),m=Array.isArray;r.size=function(e){var t=n(e);return r.validate(e,t),t},r.validate=function(e,r){var t=0==r.length;if(t){if(m(e))throw new l(e.length,0)}else i(e,r,0)},r.validateIndex=function(e,r){if(!u.isNumber(e)||!u.isInteger(e))throw new TypeError("Index must be an integer (value: "+e+")");if(0>e)throw new p(e);if(void 0!==r&&e>=r)throw new p(e,r)},r.UNINITIALIZED={},r.resize=function(e,r,t){if(!m(e)||!m(r))throw new TypeError("Array expected");if(0===r.length)throw new Error("Resizing to scalar is not supported");r.forEach(function(e){if(!u.isNumber(e)||!u.isInteger(e)||0>e)throw new TypeError("Invalid size, must contain positive integers (size: "+c.format(r)+")")});var n=void 0!==t?t:0;return o(e,r,0,n),e},r.squeeze=function(e,t){for(var n=t||r.size(e);m(e)&&1===e.length;)e=e[0],n.shift();for(var i=n.length;1===n[i-1];)i--;return ia;a++)e=[e],o.unshift(1);for(e=s(e,t,0);o.lengtht;t++)r[t]=e[t];return r},r.isArray=m},function(e,r,t){e.exports="1.6.1-SNAPSHOT"},function(e,r,t){"use strict";function n(e,r,t,i){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");this.fn=e,this.count=r,this.min=t,this.max=i,this.message="Wrong number of arguments in function "+e+" ("+r+" provided, "+t+(void 0!=i?"-"+i:"")+" expected)",this.stack=(new Error).stack}n.prototype=new Error,n.prototype.constructor=Error,n.prototype.name="ArgumentsError",e.exports=n},function(e,r,t){"use strict";function n(e,r,t){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");this.actual=e,this.expected=r,this.relation=t,this.message="Dimension mismatch ("+(Array.isArray(e)?"["+e.join(", ")+"]":e)+" "+(this.relation||"!=")+" "+(Array.isArray(r)?"["+r.join(", ")+"]":r)+")",this.stack=(new Error).stack}n.prototype=new RangeError,n.prototype.constructor=RangeError,n.prototype.name="DimensionError",e.exports=n},function(e,r,t){"use strict";function n(e,r,t){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");this.index=e,arguments.length<3?(this.min=0,this.max=r):(this.min=r,this.max=t),void 0!==this.min&&this.index=this.max?this.message="Index out of range ("+this.index+" > "+(this.max-1)+")":this.message="Index out of range ("+this.index+")",this.stack=(new Error).stack}n.prototype=new RangeError,n.prototype.constructor=RangeError,n.prototype.name="IndexError",e.exports=n},function(e,r,t){"use strict";function n(e,r){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");this.fn=e,this.types=Array.prototype.splice.call(arguments,1),e?0==this.types.length?this.message="Unsupported type of argument in function "+e:this.message="Function "+e+"("+this.types.join(", ")+") not supported":this.message="Unsupported type of argument",this.stack=(new Error).stack}n.prototype=new TypeError,n.prototype.constructor=TypeError,n.prototype.name="UnsupportedTypeError",e.exports=n},function(e,r,t){"use strict";function n(e){var r=String(e).toLowerCase().match(/^0*?(-?)(\d+\.?\d*)(e([+-]?\d+))?$/);if(!r)throw new SyntaxError("Invalid number");var t=r[1],n=r[2],i=parseFloat(r[4]||"0"),o=n.indexOf(".");i+=-1!==o?o-1:n.length-1,this.sign=t,this.coefficients=n.replace(".","").replace(/^0*/,function(e){return i-=e.length,""}).replace(/0*$/,"").split("").map(function(e){return parseInt(e)}),0===this.coefficients.length&&(this.coefficients.push(0),i++),this.exponent=i}function i(e){for(var r=[],t=0;e>t;t++)r.push(0);return r}n.prototype.toFixed=function(e){var r=this.roundDigits(this.exponent+1+(e||0)),t=r.coefficients,n=r.exponent+1,o=n+(e||0);return t.lengthn&&(t=i(-n+1).concat(t),n=1),e&&t.splice(n,0,0===n?"0.":"."),this.sign+t.join("")},n.prototype.toExponential=function(e){var r=e?this.roundDigits(e):this.clone(),t=r.coefficients,n=r.exponent;t.length0?"."+t.join(""):"")+"e"+(n>=0?"+":"")+n},n.prototype.toPrecision=function(e,r){var t=r&&void 0!==r.lower?r.lower:.001,n=r&&void 0!==r.upper?r.upper:1e5,o=Math.abs(Math.pow(10,this.exponent));if(t>o||o>=n)return this.toExponential(e);var a=e?this.roundDigits(e):this.clone(),s=a.coefficients,u=a.exponent;s.length0?u:0;return c=e;)t.unshift(0),r.exponent++,e++;if(t.length>e){var n=t.splice(e);if(n[0]>=5){var i=e-1;for(t[i]++;10===t[i];)t.pop(),0===i&&(t.unshift(0),r.exponent++,i++),i--,t[i]++}}return r},e.exports=n},function(e,r,t){"use strict";r.array=t(169),r["boolean"]=t(210),r.number=t(3),r.bignumber=t(168),r.object=t(2),r.string=t(177),r.types=t(339)},function(e,r,t){"use strict";function n(e,t){if(Array.isArray(e)){for(var i="[",o=e.length,a=0;o>a;a++)0!=a&&(i+=", "),i+=n(e[a],t);return i+="]"}return r.format(e,t)}var i=t(3),o=t(168),a=t(5);r.isString=function(e){return e instanceof String||"string"==typeof e},r.endsWith=function(e,r){var t=e.length-r.length,n=e.length;return e.substring(t,n)===r},r.format=function(e,t){return i.isNumber(e)?i.format(e,t):e instanceof a?o.format(e,t):Array.isArray(e)?n(e,t):r.isString(e)?'"'+e+'"':"function"==typeof e?e.syntax?e.syntax+"":"function":e instanceof Object?"function"==typeof e.format?e.format(t):e.toString():String(e)}},function(e,r,t){"use strict";function n(e){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");if(this.nodes=e||[],!a(this.nodes)||!this.nodes.every(s))throw new TypeError("Array containing Nodes expected")}var i=t(186),o=t(177),a=Array.isArray,s=i.isNode;n.prototype=new i,n.prototype.type="ArrayNode",n.prototype._compile=function(e){var r="array"!==e.math.config().matrix,t=this.nodes.map(function(r){return r._compile(e)});return(r?"math.matrix([":"[")+t.join(",")+(r?"])":"]")},n.prototype.forEach=function(e){for(var r=0;r=r&&(t="("+t+")"),this.name+" = "+t},n.prototype._toTex=function(e){var r=a.getPrecedence(this),t=a.getPrecedence(this.expr),n=this.expr.toTex(e);return null!==t&&r>=t&&(n="\\left("+n+"\\right)"),s.toSymbol(this.name)+":="+n},e.exports=n},function(e,r,t){"use strict";function n(e){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");if(!Array.isArray(e))throw new Error("Array expected");this.blocks=e.map(function(e){var r=e&&e.node,t=e&&void 0!==e.visible?e.visible:!0;if(!(r instanceof i))throw new TypeError('Property "node" must be a Node');if(!a(t))throw new TypeError('Property "visible" must be a boolean');return{node:r,visible:t}})}var i=t(186),o=t(13),a=t(210).isBoolean;n.prototype=new i,n.prototype.type="BlockNode",n.prototype._compile=function(e){e.ResultSet=o;var r=this.blocks.map(function(r){var t=r.node._compile(e);return r.visible?"results.push("+t+");":t+";"});return"(function () {var results = [];"+r.join("")+"return new ResultSet(results);})()"},n.prototype.forEach=function(e){for(var r=0;r=t)&&(r="("+r+")");var n=this.trueExpr.toString(),i=c.getPrecedence(this.trueExpr);("OperatorNode"===this.trueExpr.type||null!==i&&e>=i)&&(n="("+n+")");var o=this.falseExpr.toString(),a=c.getPrecedence(this.falseExpr);return("OperatorNode"===this.falseExpr.type||null!==a&&e>=a)&&(o="("+o+")"),r+" ? "+n+" : "+o},n.prototype._toTex=function(e){return"\\left\\{\\begin{array}{l l}{"+this.trueExpr.toTex(e)+"}, &\\quad{\\text{if}\\;"+this.condition.toTex(e)+"}\\\\{"+this.falseExpr.toTex(e)+"}, &\\quad{\\text{otherwise}}\\end{array}\\right."},e.exports=n},function(e,r,t){"use strict";function n(e,r){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");if(r){if(!a(r))throw new TypeError('String expected for parameter "valueType"');if(!a(e))throw new TypeError('String expected for parameter "value"');this.value=e,this.valueType=r}else this.value=e+"",this.valueType=o(e);if(!s[this.valueType])throw new TypeError('Unsupported type of value "'+this.valueType+'"')}var i=t(186),o=(t(5),t(339).type),a=t(177).isString,s={number:!0,string:!0,"boolean":!0,undefined:!0,"null":!0};n.prototype=new i,n.prototype.type="ConstantNode",n.prototype._compile=function(e){switch(this.valueType){case"number":return"bignumber"===e.math.config().number?'math.bignumber("'+this.value+'")':this.value.replace(/^(0*)[0-9]/,function(e,r){return e.substring(r.length)});case"string":return'"'+this.value+'"';case"boolean":return this.value;case"undefined":return this.value;case"null":return this.value;default:throw new TypeError('Unsupported type of constant "'+this.valueType+'"')}},n.prototype.forEach=function(e){},n.prototype.map=function(e){return this.clone()},n.prototype.clone=function(){return new n(this.value,this.valueType)},n.prototype.toString=function(){switch(this.valueType){case"string":return'"'+this.value+'"';default:return this.value}},n.prototype._toTex=function(e){var r,t=this.value;switch(this.valueType){case"string":return"\\text{"+t+"}";case"number":return r=t.toLowerCase().indexOf("e"),-1!==r?t.substring(0,r)+"\\cdot10^{"+t.substring(r+1)+"}":t;default:return t}},e.exports=n},function(e,r,t){"use strict";function n(e,r){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");if(!(e instanceof i))throw new TypeError('Node expected for parameter "object"');if(!f(r)||!r.every(c))throw new TypeError('Array containing Nodes expected for parameter "ranges"');this.object=e,this.ranges=r}var i=t(186),o=t(188),a=t(189),s=t(5),u=t(8),c=i.isNode,f=Array.isArray;n.prototype=new i,n.prototype.type="IndexNode",n.prototype._compile=function(e){return this.compileSubset(e)},n.prototype.compileSubset=function(e,r){function t(e){return e instanceof a&&"end"==e.name}var n=!1,i=this.ranges.map(function(e){var r=e.filter(t).length>0;return n=r?r:n,r});e.range=function(e,r,t){return new u(e instanceof s?e.toNumber():e,r instanceof s?r.toNumber():r,t instanceof s?t.toNumber():t)};var c=this.ranges.map(function(r,t){var n=i[t];return r instanceof o?n?(e.args.end=!0,"(function () { var end = size["+t+"]; return range( "+r.start._compile(e)+", "+r.end._compile(e)+", "+(r.step?r.step._compile(e):"1")+" );})()"):"range("+r.start._compile(e)+", "+r.end._compile(e)+", "+(r.step?r.step._compile(e):"1")+")":n?(e.args.end=!0,"(function () { var end = size["+t+"]; return "+r._compile(e)+";})()"):r._compile(e)});return n?"(function () { var obj = "+this.object._compile(e)+"; var size = math.size(obj).valueOf(); return math.subset( obj, math.index("+c.join(", ")+") "+(r?", "+r:"")+" );})()":"math.subset("+this.object._compile(e)+",math.index("+c.join(", ")+")"+(r?", "+r:"")+")"},n.prototype.forEach=function(e){e(this.object,"object",this);for(var r=0;r=r&&(t="("+t+")"),"function "+this.name+"("+this.params.join(", ")+") = "+t},n.prototype._toTex=function(e){var r=s.getPrecedence(this),t=s.getPrecedence(this.expr),n=this.expr.toTex(e);return null!==t&&r>=t&&(n="\\left("+n+"\\right)"),a.toSymbol(this.name)+"\\left("+this.params.map(a.toSymbol).join(",")+"\\right):="+n},e.exports=n},function(e,r,t){"use strict";function n(e,r){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");if("string"!=typeof e)throw new TypeError('string expected for parameter "name"');if(!u(r)||!r.every(s))throw new TypeError('Array containing Nodes expected for parameter "args"');this.name=e,this.args=r||[]}var i=t(186),o=t(189),a=t(344),s=i.isNode,u=Array.isArray;n.prototype=new i,n.prototype.type="FunctionNode",n.prototype._compile=function(e){var r=e.math[this.name],t="function"==typeof r&&1==r.rawArgs,n=this.args.map(function(r){return r._compile(e)});if(t){var i;do i="p"+Math.round(1e4*Math.random());while(i in e);return e[i]=this.args,'("'+this.name+'" in scope ? scope["'+this.name+'"]('+n.join(", ")+') : math["'+this.name+'"]('+i+", math, scope))"}var a=new o(this.name);return a._compile(e)+"("+n.join(", ")+")"},n.prototype.forEach=function(e){for(var r=0;r=o?[!0]:[!1];case 2:var c,f=s.getPrecedence(r[0]),l=s.isAssociativeWith(e,r[0]);c=null===f?!1:f!==n||"right"!==i||l?n>f?!0:!1:!0;var p,m=s.getPrecedence(r[1]),h=s.isAssociativeWith(e,r[1]);if(p=null===m?!1:m!==n||"left"!==i||h?n>m?!0:!1:!0,t){var u=e.getIdentifier(),g=e.args[0].getIdentifier(),d=e.args[1].getIdentifier();null!==f&&(s.properties[n][u].latexLeftParens===!1&&(c=!1),s.properties[f][g].latexParens===!1&&(c=!1)),null!==m&&(s.properties[n][u].latexRightParens===!1&&(p=!1),s.properties[m][d].latexParens===!1&&(p=!1))}return[c,p];default:var v=[];return r.forEach(function(){v.push(!0)}),v}}var o=t(186),a=(t(182),t(189),t(185), +t(344)),s=t(343),u=Array.isArray,c=o.isNode;n.prototype=new o,n.prototype.type="OperatorNode",n.prototype._compile=function(e){if(!(this.fn in e.math))throw new Error("Function "+this.fn+' missing in provided namespace "math"');var r=this.args.map(function(r){return r._compile(e)});return"math."+this.fn+"("+r.join(", ")+")"},n.prototype.forEach=function(e){for(var r=0;r3)throw new Error("Too many arguments");this.start=e,this.end=r,this.step=t||null}var i=t(186),o=t(343),a=i.isNode;n.prototype=new i,n.prototype.type="RangeNode",n.prototype._compile=function(e){return"math.range("+this.start._compile(e)+", "+this.end._compile(e)+(this.step?", "+this.step._compile(e):"")+")"},n.prototype.forEach=function(e){e(this.start,"start",this),e(this.end,"end",this),this.step&&e(this.step,"step",this)},n.prototype.map=function(e){return new n(this._ifNode(e(this.start,"start",this)),this._ifNode(e(this.end,"end",this)),this.step&&this._ifNode(e(this.step,"step",this)))},n.prototype.clone=function(){return new n(this.start,this.end,this.step&&this.step)},n.prototype.toString=function(){var e,r=o.getPrecedence(this),t=this.start.toString(),n=o.getPrecedence(this.start);if(null!==n&&r>=n&&(t="("+t+")"),e=t,this.step){var i=this.step.toString(),a=o.getPrecedence(this.step);null!==a&&r>=a&&(i="("+i+")"),e+=":"+i}var s=this.end.toString(),u=o.getPrecedence(this.end);return null!==u&&r>=u&&(s="("+s+")"),e+=":"+s},n.prototype._toTex=function(e){var r=this.start.toTex(e);return this.step&&(r+=":"+this.step.toTex(e)),r+=":"+this.end.toTex(e)},e.exports=n},function(e,r,t){"use strict";function n(e){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");if(!u(e))throw new TypeError('String expected for parameter "name"');this.name=e}function i(e){throw new Error("Undefined symbol "+e)}var o=t(186),a=t(11),s=t(344),u=t(177).isString;n.prototype=new o,n.prototype.type="SymbolNode",n.prototype._compile=function(e){return e.undef=i,e.Unit=a,this.name in e.args?this.name:this.name in e.math?'("'+this.name+'" in scope ? scope["'+this.name+'"] : math["'+this.name+'"])':'("'+this.name+'" in scope ? scope["'+this.name+'"] : '+(a.isValuelessUnit(this.name)?'new Unit(null, "'+this.name+'")':'undef("'+this.name+'")')+")"},n.prototype.forEach=function(e){},n.prototype.map=function(e){return this.clone()},n.prototype.clone=function(){return new n(this.name)},n.prototype.toString=function(){return this.name},n.prototype._toTex=function(e){var r=s.toSymbol(this.name);return"\\"===r[0]?r:" "+r},e.exports=n},function(e,r,t){"use strict";function n(e,r){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");if(!(e instanceof o))throw new TypeError('Expected IndexNode for parameter "index"');if(!(r instanceof i))throw new TypeError('Expected Node for parameter "expr"');this.index=e,this.expr=r}var i=t(186),o=t(183);n.prototype=new i,n.prototype.type="UpdateNode",n.prototype._compile=function(e){var r=this.index.objectName()in e.args?this.name+" = ":'scope["'+this.index.objectName()+'"]',t=this.index.compileSubset(e,this.expr._compile(e));return r+" = "+t},n.prototype.forEach=function(e){e(this.index,"index",this),e(this.expr,"expr",this)},n.prototype.map=function(e){return new n(this._ifNode(e(this.index,"index",this)),this._ifNode(e(this.expr,"expr",this)))},n.prototype.clone=function(){return new n(this.index,this.expr)},n.prototype.toString=function(){return this.index.toString()+" = "+this.expr.toString()},n.prototype._toTex=function(e){return this.index.toTex(e)+":="+this.expr.toTex(e)},e.exports=n},function(e,r,t){e.exports={name:"e",category:"Constants",syntax:["e"],description:"Euler's number, the base of the natural logarithm. Approximately equal to 2.71828",examples:["e","e ^ 2","exp(2)","log(e)"],seealso:["exp"]}},function(e,r,t){e.exports={name:"false",category:"Constants",syntax:["false"],description:"Boolean value false",examples:["false"],seealso:["true"]}},function(e,r,t){e.exports={name:"i",category:"Constants",syntax:["i"],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.",examples:["i","i * i","sqrt(-1)"],seealso:[]}},function(e,r,t){e.exports={name:"Infinity",category:"Constants",syntax:["Infinity"],description:"Infinity, a number which is larger than the maximum number that can be handled by a floating point number.",examples:["Infinity","1 / 0"],seealso:[]}},function(e,r,t){e.exports={name:"LN2",category:"Constants",syntax:["LN2"],description:"Returns the natural logarithm of 2, approximately equal to 0.693",examples:["LN2","log(2)"],seealso:[]}},function(e,r,t){e.exports={name:"LN10",category:"Constants",syntax:["LN10"],description:"Returns the natural logarithm of 10, approximately equal to 2.302",examples:["LN10","log(10)"],seealso:[]}},function(e,r,t){e.exports={name:"LOG2E",category:"Constants",syntax:["LOG2E"],description:"Returns the base-2 logarithm of E, approximately equal to 1.442",examples:["LOG2E","log(e, 2)"],seealso:[]}},function(e,r,t){e.exports={name:"LOG10E",category:"Constants",syntax:["LOG10E"],description:"Returns the base-10 logarithm of E, approximately equal to 0.434",examples:["LOG10E","log(e, 10)"],seealso:[]}},function(e,r,t){e.exports={name:"NaN",category:"Constants",syntax:["NaN"],description:"Not a number",examples:["NaN","0 / 0"],seealso:[]}},function(e,r,t){e.exports={name:"null",category:"Constants",syntax:["null"],description:"Value null",examples:["null"],seealso:["true","false"]}},function(e,r,t){e.exports={name:"pi",category:"Constants",syntax:["pi"],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",examples:["pi","sin(pi/2)"],seealso:["tau"]}},function(e,r,t){e.exports={name:"phi",category:"Constants",syntax:["phi"],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...",examples:["tau"],seealso:[]}},function(e,r,t){e.exports={name:"SQRT1_2",category:"Constants",syntax:["SQRT1_2"],description:"Returns the square root of 1/2, approximately equal to 0.707",examples:["SQRT1_2","sqrt(1/2)"],seealso:[]}},function(e,r,t){e.exports={name:"SQRT2",category:"Constants",syntax:["SQRT2"],description:"Returns the square root of 2, approximately equal to 1.414",examples:["SQRT2","sqrt(2)"],seealso:[]}},function(e,r,t){e.exports={name:"tau",category:"Constants",syntax:["tau"],description:"Tau is the ratio constant of a circle's circumference to radius, equal to 2 * pi, approximately 6.2832.",examples:["tau","2 * pi"],seealso:["pi"]}},function(e,r,t){e.exports={name:"true",category:"Constants",syntax:["true"],description:"Boolean value true",examples:["true"],seealso:["false"]}},function(e,r,t){e.exports={name:"version",category:"Constants",syntax:["version"],description:"A string with the version number of math.js",examples:["version"],seealso:[]}},function(e,r,t){function n(e){return t(i(e))}function i(e){return o[e]||function(){throw new Error("Cannot find module '"+e+"'.")}()}var o={"./clone":159,"./clone.js":159,"./filter":160,"./filter.js":160,"./forEach":167,"./forEach.js":167,"./format":161,"./format.js":161,"./import":162,"./import.js":162,"./map":163,"./map.js":163,"./print":164,"./print.js":164,"./sort":165,"./sort.js":165,"./typeof":166,"./typeof.js":166};n.keys=function(){return Object.keys(o)},n.resolve=i,e.exports=n,n.id=208},function(e,r,t){var n=(t(172),t(173));r.transform=function(e){return e instanceof n?new n(e.index+1,e.min+1,e.max+1):e}},function(e,r,t){"use strict";r.isBoolean=function(e){return e instanceof Boolean||"boolean"==typeof e}},function(e,r,t){e.exports={name:"abs",category:"Arithmetic",syntax:["abs(x)"],description:"Compute the absolute value.",examples:["abs(3.5)","abs(-4.2)"],seealso:["sign"]}},function(e,r,t){e.exports={name:"add",category:"Operators",syntax:["x + y","add(x, y)"],description:"Add two values.",examples:["a = 2.1 + 3.6","a - 3.6","3 + 2i",'"hello" + " world"',"3 cm + 2 inch"],seealso:["subtract"]}},function(e,r,t){e.exports={name:"ceil",category:"Arithmetic",syntax:["ceil(x)"],description:"Round a value towards plus infinity. If x is complex, both real and imaginary part are rounded towards plus infinity.",examples:["ceil(3.2)","ceil(3.8)","ceil(-4.2)"],seealso:["floor","fix","round"]}},function(e,r,t){e.exports={name:"cube",category:"Arithmetic",syntax:["cube(x)"],description:"Compute the cube of a value. The cube of x is x * x * x.",examples:["cube(2)","2^3","2 * 2 * 2"],seealso:["multiply","square","pow"]}},function(e,r,t){e.exports={name:"divide",category:"Operators",syntax:["x / y","divide(x, y)"],description:"Divide two values.",examples:["a = 2 / 3","a * 3","4.5 / 2","3 + 4 / 2","(3 + 4) / 2","18 km / 4.5"],seealso:["multiply"]}},function(e,r,t){e.exports={name:"dotDivide",category:"Operators",syntax:["x ./ y","dotDivide(x, y)"],description:"Divide two values element wise.",examples:["a = [1, 2, 3; 4, 5, 6]","b = [2, 1, 1; 3, 2, 5]","a ./ b"],seealso:["multiply","dotMultiply","divide"]}},function(e,r,t){e.exports={name:"dotMultiply",category:"Operators",syntax:["x .* y","dotMultiply(x, y)"],description:"Multiply two values element wise.",examples:["a = [1, 2, 3; 4, 5, 6]","b = [2, 1, 1; 3, 2, 5]","a .* b"],seealso:["multiply","divide","dotDivide"]}},function(e,r,t){e.exports={name:"dotpow",category:"Operators",syntax:["x .^ y","dotpow(x, y)"],description:"Calculates the power of x to y element wise.",examples:["a = [1, 2, 3; 4, 5, 6]","a .^ 2"],seealso:["pow"]}},function(e,r,t){e.exports={name:"exp",category:"Arithmetic",syntax:["exp(x)"],description:"Calculate the exponent of a value.",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"],seealso:["pow","log"]}},function(e,r,t){e.exports={name:"fix",category:"Arithmetic",syntax:["fix(x)"],description:"Round a value towards zero. If x is complex, both real and imaginary part are rounded towards zero.",examples:["fix(3.2)","fix(3.8)","fix(-4.2)","fix(-4.8)"],seealso:["ceil","floor","round"]}},function(e,r,t){e.exports={name:"floor",category:"Arithmetic",syntax:["floor(x)"],description:"Round a value towards minus infinity.If x is complex, both real and imaginary part are rounded towards minus infinity.",examples:["floor(3.2)","floor(3.8)","floor(-4.2)"],seealso:["ceil","fix","round"]}},function(e,r,t){e.exports={name:"gcd",category:"Arithmetic",syntax:["gcd(a, b)","gcd(a, b, c, ...)"],description:"Compute the greatest common divisor.",examples:["gcd(8, 12)","gcd(-4, 6)","gcd(25, 15, -10)"],seealso:["lcm","xgcd"]}},function(e,r,t){e.exports={name:"lcm",category:"Arithmetic",syntax:["lcm(x, y)"],description:"Compute the least common multiple.",examples:["lcm(4, 6)","lcm(6, 21)","lcm(6, 21, 5)"],seealso:["gcd"]}},function(e,r,t){e.exports={name:"log",category:"Arithmetic",syntax:["log(x)","log(x, base)"],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).",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"],seealso:["exp","log10"]}},function(e,r,t){e.exports={name:"log10",category:"Arithmetic",syntax:["log10(x)"],description:"Compute the 10-base logarithm of a value.",examples:["log10(0.00001)","log10(10000)","10 ^ 4","log(10000) / log(10)","log(10000, 10)"],seealso:["exp","log"]}},function(e,r,t){e.exports={name:"mod",category:"Operators",syntax:["x % y","x mod y","mod(x, y)"],description:"Calculates the modulus, the remainder of an integer division.",examples:["7 % 3","11 % 2","10 mod 4","function isOdd(x) = x % 2","isOdd(2)","isOdd(3)"],seealso:["divide"]}},function(e,r,t){e.exports={name:"multiply",category:"Operators",syntax:["x * y","multiply(x, y)"],description:"multiply two values.",examples:["a = 2.1 * 3.4","a / 3.4","2 * 3 + 4","2 * (3 + 4)","3 * 2.1 km"],seealso:["divide"]}},function(e,r,t){e.exports={name:"norm",category:"Arithmetic",syntax:["norm(x)","norm(x, p)"],description:"Calculate the norm of a number, vector or matrix.",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')"]}},function(e,r,t){e.exports={name:"nthRoot",category:"Arithmetic",syntax:["nthRoot(a)","nthRoot(a, root)"],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".',examples:["4 ^ 3","nthRoot(64, 3)","nthRoot(9, 2)","sqrt(9)"],seealso:["sqrt","pow"]}},function(e,r,t){e.exports={name:"pow",category:"Operators",syntax:["x ^ y","pow(x, y)"],description:"Calculates the power of x to y, x^y.",examples:["2^3 = 8","2*2*2","1 + e ^ (pi * i)"],seealso:["multiply"]}},function(e,r,t){e.exports={name:"round",category:"Arithmetic",syntax:["round(x)","round(x, 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.",examples:["round(3.2)","round(3.8)","round(-4.2)","round(-4.8)","round(pi, 3)","round(123.45678, 2)"],seealso:["ceil","floor","fix"]}},function(e,r,t){e.exports={name:"sign",category:"Arithmetic",syntax:["sign(x)"],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.",examples:["sign(3.5)","sign(-4.2)","sign(0)"],seealso:["abs"]}},function(e,r,t){e.exports={name:"sqrt",category:"Arithmetic",syntax:["sqrt(x)"],description:"Compute the square root value. If x = y * y, then y is the square root of x.",examples:["sqrt(25)","5 * 5","sqrt(-1)"],seealso:["square","multiply"]}},function(e,r,t){e.exports={name:"square",category:"Arithmetic",syntax:["square(x)"],description:"Compute the square of a value. The square of x is x * x.",examples:["square(3)","sqrt(9)","3^2","3 * 3"],seealso:["multiply","pow","sqrt","cube"]}},function(e,r,t){e.exports={name:"subtract",category:"Operators",syntax:["x - y","subtract(x, y)"],description:"subtract two values.",examples:["a = 5.3 - 2","a + 2","2/3 - 1/6","2 * 3 - 3","2.1 km - 500m"],seealso:["add"]}},function(e,r,t){e.exports={name:"unaryMinus",category:"Operators",syntax:["-x","unaryMinus(x)"],description:"Inverse the sign of a value. Converts booleans and strings to numbers.",examples:["-4.5","-(-5.6)",'-"22"'],seealso:["add","subtract","unaryPlus"]}},function(e,r,t){e.exports={name:"unaryPlus",category:"Operators",syntax:["+x","unaryPlus(x)"],description:"Converts booleans and strings to numbers.",examples:["+true",'+"2"'],seealso:["add","subtract","unaryMinus"]}},function(e,r,t){e.exports={name:"xgcd",category:"Arithmetic",syntax:["xgcd(a, b)"],description:"Calculate the extended greatest common divisor for two values",examples:["xgcd(8, 12)","gcd(8, 12)","xgcd(36163, 21199)"],seealso:["gcd","lcm"]}},function(e,r,t){e.exports={name:"bitAnd",category:"Bitwise",syntax:["x & y","bitAnd(x, y)"],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",examples:["5 & 3","bitAnd(53, 131)","[1, 12, 31] & 42"],seealso:["bitNot","bitOr","bitXor","leftShift","rightArithShift","rightLogShift"]}},function(e,r,t){e.exports={name:"bitNot",category:"Bitwise",syntax:["~x","bitNot(x)"],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.",examples:["~1","~2","bitNot([2, -3, 4])"],seealso:["bitAnd","bitOr","bitXor","leftShift","rightArithShift","rightLogShift"]}},function(e,r,t){e.exports={name:"bitOr",category:"Bitwise",syntax:["x | y","bitOr(x, y)"],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.",examples:["5 | 3","bitOr([1, 2, 3], 4)"],seealso:["bitAnd","bitNot","bitXor","leftShift","rightArithShift","rightLogShift"]}},function(e,r,t){e.exports={name:"bitXor",category:"Bitwise",syntax:["bitXor(x, y)"],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.",examples:["bitOr(1, 2)","bitXor([2, 3, 4], 4)"],seealso:["bitAnd","bitNot","bitOr","leftShift","rightArithShift","rightLogShift"]}},function(e,r,t){e.exports={name:"leftShift",category:"Bitwise",syntax:["x << y","leftShift(x, y)"],description:"Bitwise left logical shift of a value x by y number of bits.",examples:["4 << 1","8 >> 1"],seealso:["bitAnd","bitNot","bitOr","bitXor","rightArithShift","rightLogShift"]}},function(e,r,t){e.exports={name:"rightArithShift",category:"Bitwise",syntax:["x >> y","leftShift(x, y)"],description:"Bitwise right arithmetic shift of a value x by y number of bits.",examples:["8 >> 1","4 << 1","-12 >> 2"],seealso:["bitAnd","bitNot","bitOr","bitXor","leftShift","rightLogShift"]}},function(e,r,t){e.exports={name:"rightLogShift",category:"Bitwise",syntax:["x >> y","leftShift(x, y)"],description:"Bitwise right logical shift of a value x by y number of bits.",examples:["8 >>> 1","4 << 1","-12 >>> 2"],seealso:["bitAnd","bitNot","bitOr","bitXor","leftShift","rightArithShift"]}},function(e,r,t){e.exports={name:"arg",category:"Complex",syntax:["arg(x)"],description:"Compute the argument of a complex value. If x = a+bi, the argument is computed as atan2(b, a).",examples:["arg(2 + 2i)","atan2(3, 2)","arg(2 + 3i)"],seealso:["re","im","conj","abs"]}},function(e,r,t){e.exports={name:"conj",category:"Complex",syntax:["conj(x)"],description:"Compute the complex conjugate of a complex value. If x = a+bi, the complex conjugate is a-bi.",examples:["conj(2 + 3i)","conj(2 - 3i)","conj(-5.2i)"],seealso:["re","im","abs","arg"]}},function(e,r,t){e.exports={name:"re",category:"Complex",syntax:["re(x)"],description:"Get the real part of a complex number.",examples:["re(2 + 3i)","im(2 + 3i)","re(-5.2i)","re(2.4)"],seealso:["im","conj","abs","arg"]}},function(e,r,t){e.exports={name:"im",category:"Complex",syntax:["im(x)"],description:"Get the imaginary part of a complex number.",examples:["im(2 + 3i)","re(2 + 3i)","im(-5.2i)","im(2.4)"],seealso:["re","conj","abs","arg"]}},function(e,r,t){e.exports={name:"bignumber",category:"Type",syntax:["bignumber(x)"],description:"Create a big number from a number or string.",examples:["0.1 + 0.2","bignumber(0.1) + bignumber(0.2)",'bignumber("7.2")','bignumber("7.2e500")',"bignumber([0.1, 0.2, 0.3])"],seealso:["boolean","complex","index","matrix","string","unit"]}},function(e,r,t){e.exports={name:"boolean",category:"Type",syntax:["x","boolean(x)"],description:"Convert a string or number into a boolean.",examples:["boolean(0)","boolean(1)","boolean(3)",'boolean("true")','boolean("false")',"boolean([1, 0, 1, 1])"],seealso:["bignumber","complex","index","matrix","number","string","unit"]}},function(e,r,t){e.exports={name:"complex",category:"Type",syntax:["complex()","complex(re, im)","complex(string)"],description:"Create a complex number.",examples:["complex()","complex(2, 3)",'complex("7 - 2i")'],seealso:["bignumber","boolean","index","matrix","number","string","unit"]}},function(e,r,t){e.exports={name:"index",category:"Type",syntax:["[start]","[start:end]","[start:step:end]","[start1, start 2, ...]","[start1:end1, start2:end2, ...]","[start1:step1:end1, start2:step2:end2, ...]"],description:"Create an index to get or replace a subset of a matrix",examples:["[]","[1, 2, 3]","A = [1, 2, 3; 4, 5, 6]","A[1, :]","A[1, 2] = 50","A[0:2, 0:2] = ones(2, 2)"],seealso:["bignumber","boolean","complex","matrix,","number","range","string","unit"]}},function(e,r,t){e.exports={name:"matrix",category:"Type",syntax:["[]","[a1, b1, ...; a2, b2, ...]","matrix()","matrix([...])"],description:"Create a matrix.",examples:["[]","[1, 2, 3]","[1, 2, 3; 4, 5, 6]","matrix()","matrix([3, 4])"],seealso:["bignumber","boolean","complex","index","number","string","unit"]}},function(e,r,t){e.exports={name:"number",category:"Type",syntax:["x","number(x)"],description:"Create a number or convert a string or boolean into a number.",examples:["2","2e3","4.05","number(2)",'number("7.2")',"number(true)","number([true, false, true, true])",'number("52cm", "m")'],seealso:["bignumber","boolean","complex","index","matrix","string","unit"]}},function(e,r,t){e.exports={name:"string",category:"Type",syntax:['"text"',"string(x)"],description:"Create a string or convert a value to a string",examples:['"Hello World!"',"string(4.2)","string(3 + 2i)"],seealso:["bignumber","boolean","complex","index","matrix","number","unit"]}},function(e,r,t){e.exports={name:"unit",category:"Type",syntax:["value unit","unit(value, unit)","unit(string)"],description:"Create a unit.",examples:["5.5 mm","3 inch",'unit(7.1, "kilogram")','unit("23 deg")'],seealso:["bignumber","boolean","complex","index","matrix","number","string"]}},function(e,r,t){e.exports={name:"eval",category:"Expression",syntax:["eval(expression)","eval([expr1, expr2, expr3, ...])"],description:"Evaluate an expression or an array with expressions.",examples:['eval("2 + 3")','eval("sqrt(" + 4 + ")")'],seealso:[]}},function(e,r,t){e.exports={name:"help",category:"Expression",syntax:["help(object)","help(string)"],description:"Display documentation on a function or data type.",examples:["help(sqrt)",'help("complex")'],seealso:[]}},function(e,r,t){e.exports={name:"and",category:"Logical",syntax:["x and y","and(x, y)"],description:"Logical and. Test whether two values are both defined with a nonzero/nonempty value.",examples:["true and false","true and true","2 and 4"],seealso:["not","or","xor"]}},function(e,r,t){e.exports={name:"not",category:"Logical",syntax:["!x","not x","not(x)"],description:"Logical not. Flips the boolean value of given argument.",examples:["!true","not false","!2","!0"],seealso:["and","or","xor"]}},function(e,r,t){e.exports={name:"or",category:"Logical",syntax:["x or y","or(x, y)"],description:"Logical or. Test if at least one value is defined with a nonzero/nonempty value.",examples:["true or false","false or false","0 or 4"],seealso:["not","and","xor"]}},function(e,r,t){e.exports={name:"xor",category:"Logical",syntax:["x or y","or(x, y)"],description:"Logical exclusive or, xor. Test whether one and only one value is defined with a nonzero/nonempty value.",examples:["true xor false","false xor false","true xor true","0 or 4"],seealso:["not","and","or"]}},function(e,r,t){e.exports={name:"concat",category:"Matrix",syntax:["concat(A, B, C, ...)","concat(A, B, C, ..., dim)"],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.",examples:["A = [1, 2; 5, 6]","B = [3, 4; 7, 8]","concat(A, B)","concat(A, B, 1)","concat(A, B, 2)"],seealso:["det","diag","eye","inv","ones","range","size","squeeze","subset","trace","transpose","zeros"]}},function(e,r,t){e.exports={name:"cross",category:"Matrix",syntax:["cross(A, B)"],description:"Calculate the cross product for two vectors in three dimensional space.",examples:["cross([1, 1, 0], [0, 1, 1])","cross([3, -3, 1], [4, 9, 2])","cross([2, 3, 4], [5, 6, 7])"],seealso:["multiply","dot"]}},function(e,r,t){e.exports={name:"det",category:"Matrix",syntax:["det(x)"],description:"Calculate the determinant of a matrix",examples:["det([1, 2; 3, 4])","det([-2, 2, 3; -1, 1, 3; 2, 0, -1])"],seealso:["concat","diag","eye","inv","ones","range","size","squeeze","subset","trace","transpose","zeros"]}},function(e,r,t){e.exports={name:"diag",category:"Matrix",syntax:["diag(x)","diag(x, k)"],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.",examples:["diag(1:3)","diag(1:3, 1)","a = [1, 2, 3; 4, 5, 6; 7, 8, 9]","diag(a)"],seealso:["concat","det","eye","inv","ones","range","size","squeeze","subset","trace","transpose","zeros"]}},function(e,r,t){e.exports={name:"dot",category:"Matrix",syntax:["dot(A, B)"],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",examples:["dot([2, 4, 1], [2, 2, 3])","[2, 4, 1] * [2, 2, 3]"],seealso:["multiply","cross"]}},function(e,r,t){e.exports={name:"eye",category:"Matrix",syntax:["eye(n)","eye(m, n)","eye([m, n])","eye"],description:"Returns the identity matrix with size m-by-n. The matrix has ones on the diagonal and zeros elsewhere.",examples:["eye(3)","eye(3, 5)","a = [1, 2, 3; 4, 5, 6]","eye(size(a))"],seealso:["concat","det","diag","inv","ones","range","size","squeeze","subset","trace","transpose","zeros"]}},function(e,r,t){e.exports={name:"flatten",category:"Matrix",syntax:["flatten(x)"],description:"Flatten a multi dimensional matrix into a single dimensional matrix.",examples:["a = [1, 2, 3; 4, 5, 6]","size(a)","b = flatten(a)","size(b)"],seealso:["concat","resize","size","squeeze"]}},function(e,r,t){e.exports={name:"inv",category:"Matrix",syntax:["inv(x)"],description:"Calculate the inverse of a matrix",examples:["inv([1, 2; 3, 4])","inv(4)","1 / 4"],seealso:["concat","det","diag","eye","ones","range","size","squeeze","subset","trace","transpose","zeros"]}},function(e,r,t){e.exports={name:"ones",category:"Matrix",syntax:["ones(m)","ones(m, n)","ones(m, n, p, ...)","ones([m])","ones([m, n])","ones([m, n, p, ...])","ones"],description:"Create a matrix containing ones.",examples:["ones(3)","ones(3, 5)","ones([2,3]) * 4.5","a = [1, 2, 3; 4, 5, 6]","ones(size(a))"],seealso:["concat","det","diag","eye","inv","range","size","squeeze","subset","trace","transpose","zeros"]}},function(e,r,t){e.exports={name:"range",category:"Type",syntax:["start:end","start:step:end","range(start, end)","range(start, end, step)","range(string)"],description:"Create a range. Lower bound of the range is included, upper bound is excluded.",examples:["1:5","3:-1:-3","range(3, 7)","range(0, 12, 2)",'range("4:10")',"a = [1, 2, 3, 4; 5, 6, 7, 8]","a[1:2, 1:2]"],seealso:["concat","det","diag","eye","inv","ones","size","squeeze","subset","trace","transpose","zeros"]}},function(e,r,t){e.exports={name:"resize",category:"Matrix",syntax:["resize(x, size)","resize(x, size, defaultValue)"],description:"Resize a matrix.",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], "!")'],seealso:["size","subset","squeeze"]}},function(e,r,t){e.exports={name:"size",category:"Matrix",syntax:["size(x)"],description:"Calculate the size of a matrix.",examples:["size(2.3)",'size("hello world")',"a = [1, 2; 3, 4; 5, 6]","size(a)","size(1:6)"],seealso:["concat","det","diag","eye","inv","ones","range","squeeze","subset","trace","transpose","zeros"]}},function(e,r,t){e.exports={name:"squeeze",category:"Matrix",syntax:["squeeze(x)"],description:"Remove inner and outer singleton dimensions from a matrix.",examples:["a = zeros(3,2,1)","size(squeeze(a))","b = zeros(1,1,3)","size(squeeze(b))"],seealso:["concat","det","diag","eye","inv","ones","range","size","subset","trace","transpose","zeros"]}},function(e,r,t){e.exports={name:"subset",category:"Matrix",syntax:["value(index)","value(index) = replacement","subset(value, [index])","subset(value, [index], replacement)"],description:"Get or set a subset of a matrix or string. Indexes are one-based. Both the ranges lower-bound and upper-bound are included.",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]"],seealso:["concat","det","diag","eye","inv","ones","range","size","squeeze","trace","transpose","zeros"]}},function(e,r,t){e.exports={name:"trace",category:"Matrix",syntax:["trace(A)"],description:"Calculate the trace of a matrix: the sum of the elements on the main diagonal of a square matrix.",examples:["A = [1, 2, 3; -1, 2, 3; 2, 0, 3]","trace(A)"],seealso:["concat","det","diag","eye","inv","ones","range","size","squeeze","subset","transpose","zeros"]}},function(e,r,t){e.exports={name:"transpose",category:"Matrix",syntax:["x'","transpose(x)"],description:"Transpose a matrix",examples:["a = [1, 2, 3; 4, 5, 6]","a'","transpose(a)"],seealso:["concat","det","diag","eye","inv","ones","range","size","squeeze","subset","trace","zeros"]}},function(e,r,t){e.exports={name:"zeros",category:"Matrix",syntax:["zeros(m)","zeros(m, n)","zeros(m, n, p, ...)","zeros([m])","zeros([m, n])","zeros([m, n, p, ...])","zeros"],description:"Create a matrix containing zeros.",examples:["zeros(3)","zeros(3, 5)","a = [1, 2, 3; 4, 5, 6]","zeros(size(a))"],seealso:["concat","det","diag","eye","inv","ones","range","size","squeeze","subset","trace","transpose"]}},function(e,r,t){e.exports={name:"combinations",category:"Probability",syntax:["combinations(n, k)"],description:"Compute the number of combinations of n items taken k at a time",examples:["combinations(7, 5)"],seealso:["permutations","factorial"]}},function(e,r,t){e.exports={name:"factorial", +category:"Probability",syntax:["n!","factorial(n)"],description:"Compute the factorial of a value",examples:["5!","5 * 4 * 3 * 2 * 1","3!"],seealso:["combinations","permutations","gamma"]}},function(e,r,t){e.exports={name:"gamma",category:"Probability",syntax:["gamma(n)"],description:"Compute the gamma function. For small values, the Lanczos approximation is used, and for large values the extended Stirling approximation.",examples:["gamma(4)","3!","gamma(1/2)","sqrt(pi)"],seealso:["factorial"]}},function(e,r,t){e.exports={name:"permutations",category:"Probability",syntax:["permutations(n)","permutations(n, k)"],description:"Compute the number of permutations of n items taken k at a time",examples:["permutations(5)","permutations(5, 3)"],seealso:["combinations","factorial"]}},function(e,r,t){e.exports={name:"pickRandom",category:"Probability",syntax:["pickRandom(array)"],description:"Pick a random entry from a given array.",examples:["pickRandom(0:10)","pickRandom([1, 3, 1, 6])"],seealso:["random","randomInt"]}},function(e,r,t){e.exports={name:"random",category:"Probability",syntax:["random()","random(max)","random(min, max)","random(size)","random(size, max)","random(size, min, max)"],description:"Return a random number.",examples:["random()","random(10, 20)","random([2, 3])"],seealso:["pickRandom","randomInt"]}},function(e,r,t){e.exports={name:"randInt",category:"Probability",syntax:["randInt()","randInt(max)","randInt(min, max)","randInt(size)","randInt(size, max)","randInt(size, min, max)"],description:"Return a random integer number",examples:["randInt()","randInt(10, 20)","randInt([2, 3], 10)"],seealso:["pickRandom","random"]}},function(e,r,t){e.exports={name:"compare",category:"Relational",syntax:["compare(x, y)"],description:"Compare two values. Returns 1 if x is larger than y, -1 if x is smaller than y, and 0 if x and y are equal.",examples:["compare(2, 3)","compare(3, 2)","compare(2, 2)","compare(5cm, 40mm)","compare(2, [1, 2, 3])"],seealso:["equal","unequal","smaller","smallerEq","largerEq"]}},function(e,r,t){e.exports={name:"deepEqual",category:"Relational",syntax:["deepEqual(x, y)"],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.",examples:["[1,3,4] == [1,3,4]","[1,3,4] == [1,3]"],seealso:["equal","unequal","smaller","larger","smallerEq","largerEq","compare"]}},function(e,r,t){e.exports={name:"equal",category:"Relational",syntax:["x == y","equal(x, y)"],description:"Check equality of two values. Returns true if the values are equal, and false if not.",examples:["2+2 == 3","2+2 == 4","a = 3.2","b = 6-2.8","a == b","50cm == 0.5m"],seealso:["unequal","smaller","larger","smallerEq","largerEq","compare","deepEqual"]}},function(e,r,t){e.exports={name:"larger",category:"Relational",syntax:["x > y","larger(x, y)"],description:"Check if value x is larger than y. Returns true if x is larger than y, and false if not.",examples:["2 > 3","5 > 2*2","a = 3.3","b = 6-2.8","(a > b)","(b < a)","5 cm > 2 inch"],seealso:["equal","unequal","smaller","smallerEq","largerEq","compare"]}},function(e,r,t){e.exports={name:"largerEq",category:"Relational",syntax:["x >= y","largerEq(x, y)"],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.",examples:["2 > 1+1","2 >= 1+1","a = 3.2","b = 6-2.8","(a > b)"],seealso:["equal","unequal","smallerEq","smaller","largerEq","compare"]}},function(e,r,t){e.exports={name:"smaller",category:"Relational",syntax:["x < y","smaller(x, y)"],description:"Check if value x is smaller than value y. Returns true if x is smaller than y, and false if not.",examples:["2 < 3","5 < 2*2","a = 3.3","b = 6-2.8","(a < b)","5 cm < 2 inch"],seealso:["equal","unequal","larger","smallerEq","largerEq","compare"]}},function(e,r,t){e.exports={name:"smallerEq",category:"Relational",syntax:["x <= y","smallerEq(x, y)"],description:"Check if value x is smaller or equal to value y. Returns true if x is smaller than y, and false if not.",examples:["2 < 1+1","2 <= 1+1","a = 3.2","b = 6-2.8","(a < b)"],seealso:["equal","unequal","larger","smaller","largerEq","compare"]}},function(e,r,t){e.exports={name:"unequal",category:"Relational",syntax:["x != y","unequal(x, y)"],description:"Check unequality of two values. Returns true if the values are unequal, and false if they are equal.",examples:["2+2 != 3","2+2 != 4","a = 3.2","b = 6-2.8","a != b","50cm != 0.5m","5 cm != 2 inch"],seealso:["equal","smaller","larger","smallerEq","largerEq","compare","deepEqual"]}},function(e,r,t){e.exports={name:"max",category:"Statistics",syntax:["max(a, b, c, ...)","max(A)","max(A, dim)"],description:"Compute the maximum value of a list of values.",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)"],seealso:["mean","median","min","prod","std","sum","var"]}},function(e,r,t){e.exports={name:"mean",category:"Statistics",syntax:["mean(a, b, c, ...)","mean(A)","mean(A, dim)"],description:"Compute the arithmetic mean of a list of values.",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])"],seealso:["max","median","min","prod","std","sum","var"]}},function(e,r,t){e.exports={name:"median",category:"Statistics",syntax:["median(a, b, c, ...)","median(A)"],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.",examples:["median(5, 2, 7)","median([3, -1, 5, 7])"],seealso:["max","mean","min","prod","std","sum","var"]}},function(e,r,t){e.exports={name:"min",category:"Statistics",syntax:["min(a, b, c, ...)","min(A)","min(A, dim)"],description:"Compute the minimum value of a list of values.",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)"],seealso:["max","mean","median","prod","std","sum","var"]}},function(e,r,t){e.exports={name:"prod",category:"Statistics",syntax:["prod(a, b, c, ...)","prod(A)"],description:"Compute the product of all values.",examples:["prod(2, 3, 4)","prod([2, 3, 4])","prod([2, 5; 4, 3])"],seealso:["max","mean","min","median","min","std","sum","var"]}},function(e,r,t){e.exports={name:"std",category:"Statistics",syntax:["std(a, b, c, ...)","std(A)","std(A, normalization)"],description:'Compute the standard deviation of all values, defined as std(A) = sqrt(var(A)). Optional parameter normalization can be "unbiased" (default), "uncorrected", or "biased".',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])"],seealso:["max","mean","min","median","min","prod","sum","var"]}},function(e,r,t){e.exports={name:"sum",category:"Statistics",syntax:["sum(a, b, c, ...)","sum(A)"],description:"Compute the sum of all values.",examples:["sum(2, 3, 4, 1)","sum([2, 3, 4, 1])","sum([2, 5; 4, 3])"],seealso:["max","mean","median","min","prod","std","sum","var"]}},function(e,r,t){e.exports={name:"var",category:"Statistics",syntax:["var(a, b, c, ...)","var(A)","var(A, normalization)"],description:'Compute the variance of all values. Optional parameter normalization can be "unbiased" (default), "uncorrected", or "biased".',examples:["var(2, 4, 6)","var([2, 4, 6, 8])",'var([2, 4, 6, 8], "uncorrected")','var([2, 4, 6, 8], "biased")',"var([1, 2, 3; 4, 5, 6])"],seealso:["max","mean","min","median","min","prod","std","sum"]}},function(e,r,t){e.exports={name:"acos",category:"Trigonometry",syntax:["acos(x)"],description:"Compute the inverse cosine of a value in radians.",examples:["acos(0.5)","acos(cos(2.3))"],seealso:["cos","atan","asin"]}},function(e,r,t){e.exports={name:"acosh",category:"Trigonometry",syntax:["acosh(x)"],description:"Calculate the hyperbolic arccos of a value, defined as `acosh(x) = ln(sqrt(x^2 - 1) + x)`.",examples:["acosh(1.5)"],seealso:["cosh","asinh","atanh"]}},function(e,r,t){e.exports={name:"acot",category:"Trigonometry",syntax:["acot(x)"],description:"Calculate the inverse cotangent of a value.",examples:["acot(0.5)","acot(cot(0.5))","acot(2)"],seealso:["cot","atan"]}},function(e,r,t){e.exports={name:"acoth",category:"Trigonometry",syntax:["acoth(x)"],description:"Calculate the hyperbolic arccotangent of a value, defined as `acoth(x) = (ln((x+1)/x) + ln(x/(x-1))) / 2`.",examples:["acoth(0.5)"],seealso:["acsch","asech"]}},function(e,r,t){e.exports={name:"acsc",category:"Trigonometry",syntax:["acsc(x)"],description:"Calculate the inverse cotangent of a value.",examples:["acsc(0.5)","acsc(csc(0.5))","acsc(2)"],seealso:["csc","asin","asec"]}},function(e,r,t){e.exports={name:"acsch",category:"Trigonometry",syntax:["acsch(x)"],description:"Calculate the hyperbolic arccosecant of a value, defined as `acsch(x) = ln(1/x + sqrt(1/x^2 + 1))`.",examples:["acsch(0.5)"],seealso:["asech","acoth"]}},function(e,r,t){e.exports={name:"asec",category:"Trigonometry",syntax:["asec(x)"],description:"Calculate the inverse secant of a value.",examples:["asec(0.5)","asec(sec(0.5))","asec(2)"],seealso:["acos","acot","acsc"]}},function(e,r,t){e.exports={name:"asech",category:"Trigonometry",syntax:["asech(x)"],description:"Calculate the inverse secant of a value.",examples:["asech(0.5)"],seealso:["acsch","acoth"]}},function(e,r,t){e.exports={name:"asin",category:"Trigonometry",syntax:["asin(x)"],description:"Compute the inverse sine of a value in radians.",examples:["asin(0.5)","asin(sin(2.3))"],seealso:["sin","acos","atan"]}},function(e,r,t){e.exports={name:"asinh",category:"Trigonometry",syntax:["asinh(x)"],description:"Calculate the hyperbolic arcsine of a value, defined as `asinh(x) = ln(x + sqrt(x^2 + 1))`.",examples:["asinh(0.5)"],seealso:["acosh","atanh"]}},function(e,r,t){e.exports={name:"atan",category:"Trigonometry",syntax:["atan(x)"],description:"Compute the inverse tangent of a value in radians.",examples:["atan(0.5)","atan(tan(2.3))"],seealso:["tan","acos","asin"]}},function(e,r,t){e.exports={name:"atanh",category:"Trigonometry",syntax:["atanh(x)"],description:"Calculate the hyperbolic arctangent of a value, defined as `atanh(x) = ln((1 + x)/(1 - x)) / 2`.",examples:["atanh(0.5)"],seealso:["acosh","asinh"]}},function(e,r,t){e.exports={name:"atan2",category:"Trigonometry",syntax:["atan2(y, x)"],description:"Computes the principal value of the arc tangent of y/x in radians.",examples:["atan2(2, 2) / pi","angle = 60 deg in rad","x = cos(angle)","y = sin(angle)","atan2(y, x)"],seealso:["sin","cos","tan"]}},function(e,r,t){e.exports={name:"cos",category:"Trigonometry",syntax:["cos(x)"],description:"Compute the cosine of x in radians.",examples:["cos(2)","cos(pi / 4) ^ 2","cos(180 deg)","cos(60 deg)","sin(0.2)^2 + cos(0.2)^2"],seealso:["acos","sin","tan"]}},function(e,r,t){e.exports={name:"cosh",category:"Trigonometry",syntax:["cosh(x)"],description:"Compute the hyperbolic cosine of x in radians.",examples:["cosh(0.5)"],seealso:["sinh","tanh","coth"]}},function(e,r,t){e.exports={name:"cot",category:"Trigonometry",syntax:["cot(x)"],description:"Compute the cotangent of x in radians. Defined as 1/tan(x)",examples:["cot(2)","1 / tan(2)"],seealso:["sec","csc","tan"]}},function(e,r,t){e.exports={name:"coth",category:"Trigonometry",syntax:["coth(x)"],description:"Compute the hyperbolic cotangent of x in radians.",examples:["coth(2)","1 / tanh(2)"],seealso:["sech","csch","tanh"]}},function(e,r,t){e.exports={name:"csc",category:"Trigonometry",syntax:["csc(x)"],description:"Compute the cosecant of x in radians. Defined as 1/sin(x)",examples:["csc(2)","1 / sin(2)"],seealso:["sec","cot","sin"]}},function(e,r,t){e.exports={name:"csch",category:"Trigonometry",syntax:["csch(x)"],description:"Compute the hyperbolic cosecant of x in radians. Defined as 1/sinh(x)",examples:["csch(2)","1 / sinh(2)"],seealso:["sech","coth","sinh"]}},function(e,r,t){e.exports={name:"sec",category:"Trigonometry",syntax:["sec(x)"],description:"Compute the secant of x in radians. Defined as 1/cos(x)",examples:["sec(2)","1 / cos(2)"],seealso:["cot","csc","cos"]}},function(e,r,t){e.exports={name:"sech",category:"Trigonometry",syntax:["sech(x)"],description:"Compute the hyperbolic secant of x in radians. Defined as 1/cosh(x)",examples:["sech(2)","1 / cosh(2)"],seealso:["coth","csch","cosh"]}},function(e,r,t){e.exports={name:"sin",category:"Trigonometry",syntax:["sin(x)"],description:"Compute the sine of x in radians.",examples:["sin(2)","sin(pi / 4) ^ 2","sin(90 deg)","sin(30 deg)","sin(0.2)^2 + cos(0.2)^2"],seealso:["asin","cos","tan"]}},function(e,r,t){e.exports={name:"sinh",category:"Trigonometry",syntax:["sinh(x)"],description:"Compute the hyperbolic sine of x in radians.",examples:["sinh(0.5)"],seealso:["cosh","tanh"]}},function(e,r,t){e.exports={name:"tan",category:"Trigonometry",syntax:["tan(x)"],description:"Compute the tangent of x in radians.",examples:["tan(0.5)","sin(0.5) / cos(0.5)","tan(pi / 4)","tan(45 deg)"],seealso:["atan","sin","cos"]}},function(e,r,t){e.exports={name:"tanh",category:"Trigonometry",syntax:["tanh(x)"],description:"Compute the hyperbolic tangent of x in radians.",examples:["tanh(0.5)","sinh(0.5) / cosh(0.5)"],seealso:["sinh","cosh"]}},function(e,r,t){e.exports={name:"to",category:"Units",syntax:["x to unit","to(x, unit)"],description:"Change the unit of a value.",examples:["5 inch to cm","3.2kg to g","16 bytes in bits"],seealso:[]}},function(e,r,t){e.exports={name:"clone",category:"Utils",syntax:["clone(x)"],description:"Clone a variable. Creates a copy of primitive variables,and a deep copy of matrices",examples:["clone(3.5)","clone(2 - 4i)","clone(45 deg)","clone([1, 2; 3, 4])",'clone("hello world")'],seealso:[]}},function(e,r,t){e.exports={name:"map",category:"Utils",syntax:["map(x, callback)"],description:"Create a new matrix or array with the results of the callback function executed on each entry of the matrix/array.",examples:["map([1, 2, 3], function(val) { return value * value })"],seealso:["filter","forEach"]}},function(e,r,t){e.exports={name:"filter",category:"Utils",syntax:["filter(x, test)"],description:"Filter items in a matrix.",examples:["isPositive(x) = x > 0","filter([6, -2, -1, 4, 3], isPositive)","filter([6, -2, 0, 1, 0], x != 0)"],seealso:["sort","map","forEach"]}},function(e,r,t){e.exports={name:"forEach",category:"Utils",syntax:["forEach(x, callback)"],description:"Iterates over all elements of a matrix/array, and executes the given callback function.",examples:["forEach([1, 2, 3], function(val) { console.log(val) })"],seealso:["map","sort","filter"]}},function(e,r,t){e.exports={name:"format",category:"Utils",syntax:["format(value)","format(value, precision)"],description:"Format a value of any type as string.",examples:["format(2.3)","format(3 - 4i)","format([])","format(pi, 3)"],seealso:["print"]}},function(e,r,t){e.exports={name:"import",category:"Utils",syntax:["import(string)"],description:"Import functions from a file.",examples:['import("numbers")','import("./mylib.js")'],seealso:[]}},function(e,r,t){e.exports={name:"sort",category:"Utils",syntax:["sort(x)","sort(x, compare)"],description:'Sort the items in a matrix. Compare can be a string "asc" or "desc", or a custom sort function.',examples:["sort([5, 10, 1])",'sort(["C", "B", "A", "D"])',"sortByLength(a, b) = size(a)[1] - size(b)[1]",'sort(["Langdon", "Tom", "Sara"], sortByLength)'],seealso:["map","filter","forEach"]}},function(e,r,t){e.exports={name:"typeof",category:"Utils",syntax:["typeof(x)"],description:"Get the type of a variable.",examples:["typeof(3.5)","typeof(2 - 4i)","typeof(45 deg)",'typeof("hello world")'],seealso:[]}},function(e,r,t){"use strict";e.exports=function(e){function r(r){if(!s.hasOwnProperty(r))throw new Error("Unknown distribution "+r);var t=Array.prototype.slice.call(arguments,1),o=s[r].apply(this,t);return function(r){var t={random:function(r,t,i){var s,c,f;if(arguments.length>3)throw new e.error.ArgumentsError("random",arguments.length,0,3);if(1===arguments.length?a(r)?s=r:f=r:2===arguments.length?a(r)?(s=r,f=t):(c=r,f=t):(s=r,c=t,f=i),void 0===f&&(f=1),void 0===c&&(c=0),void 0!==s){var l=u(s.valueOf(),c,f,o);return s instanceof n?e.matrix(l):l}return o(c,f)},randomInt:function(r,t,i){var o,c,f;if(arguments.length>3||arguments.length<1)throw new e.error.ArgumentsError("randomInt",arguments.length,1,3);if(1===arguments.length?a(r)?o=r:f=r:2===arguments.length?a(r)?(o=r,f=t):(c=r,f=t):(o=r,c=t,f=i),void 0===c&&(c=0),void 0!==o){var l=u(o.valueOf(),c,f,s);return o instanceof n?e.matrix(l):l}return s(c,f)},pickRandom:function(r){if(1!==arguments.length)throw new e.error.ArgumentsError("pickRandom",arguments.length,1);if(r instanceof n)r=r.valueOf();else if(!Array.isArray(r))throw new e.error.UnsupportedTypeError("pickRandom",e["typeof"](r));if(i.size(r).length>1)throw new Error("Only one dimensional vectors supported");return r[Math.floor(Math.random()*r.length)]}},o=function(e,t){return e+r()*(t-e)},s=function(e,t){return Math.floor(e+r()*(t-e))},u=function(e,r,t,n){var i,o,a=[];if(e=e.slice(0),e.length>1)for(o=0,i=e.shift();i>o;o++)a.push(u(e,r,t,n));else for(o=0,i=e.shift();i>o;o++)a.push(n(r,t));return a};return t}(o)}var n=e.type.Matrix,i=t(169),o=e.collection,a=o.isCollection,s={uniform:function(){return Math.random},normal:function(){return function(){for(var e,r,t=-1;0>t||t>1;)e=Math.random(),r=Math.random(),t=1/6*Math.pow(-2*Math.log(e),.5)*Math.cos(2*Math.PI*r)+.5;return t}}};return r}},function(e,r,t){"use strict";r.type=function(e){var r=typeof e;if("object"===r){if(null===e)return"null";if(e instanceof Boolean)return"boolean";if(e instanceof Number)return"number";if(e instanceof String)return"string";if(Array.isArray(e))return"array";if(e instanceof Date)return"date";if(e instanceof Function)return"function";if(e instanceof RegExp)return"regexp"}return r}},function(e,r,t){r.memoize=function(e){return function r(){"object"!=typeof r.cache&&(r.cache={});var t=JSON.stringify(arguments);return t in r.cache?r.cache[t]:r.cache[t]=e.apply(e,arguments)}}},function(e,r,t){var n;!function(i){"use strict";function o(e){for(var r,t,n=1,i=e.length,o=e[0]+"";i>n;n++){for(r=e[n]+"",t=A-r.length;t--;)r="0"+r;o+=r}for(i=o.length;48===o.charCodeAt(--i););return o.slice(0,i+1||1)}function a(e,r,t,n){var i,o,a,s,u;for(o=1,a=e[0];a>=10;a/=10,o++);return a=r-o,0>a?(a+=A,i=0):(i=Math.ceil((a+1)/A),a%=A),o=N(10,A-a),u=e[i]%o|0,null==n?3>a?(0==a?u=u/100|0:1==a&&(u=u/10|0),s=4>t&&99999==u||t>3&&49999==u||5e4==u||0==u):s=(4>t&&u+1==o||t>3&&u+1==o/2)&&(e[i+1]/o/100|0)==N(10,a-2)-1||(u==o/2||0==u)&&0==(e[i+1]/o/100|0):4>a?(0==a?u=u/1e3|0:1==a?u=u/100|0:2==a&&(u=u/10|0),s=(n||4>t)&&9999==u||!n&&t>3&&4999==u):s=((n||4>t)&&u+1==o||!n&&t>3&&u+1==o/2)&&(e[i+1]/o/1e3|0)==N(10,a-3)-1,s}function s(e,r,t){var n=e.constructor;return null==r||((y=0>r||r>8)||0!==r&&(n.errors?parseInt:parseFloat)(r)!=r)&&!p(n,"rounding mode",r,t,0)?n.rounding:0|r}function u(e,r,t,n){var i=e.constructor;return!(y=(n||0)>r||r>=z+1)&&(0===r||(i.errors?parseInt:parseFloat)(r)==r)||p(i,"argument",r,t,0)}function c(e,r){var t,n,i,s,u,c,f,l=0,p=0,m=0,h=e.constructor,d=h.ONE,v=h.rounding,y=h.precision;if(!e.c||!e.c[0]||e.e>17)return new h(e.c?e.c[0]?e.s<0?0:1/0:d:e.s?e.s<0?0:e:0/0);for(null==r?(w=!1,u=y):u=r,f=new h(.03125);e.e>-2;)e=e.times(f),m+=5;for(n=Math.log(N(2,m))/Math.LN10*2+5|0,u+=n,t=s=c=new h(d),h.precision=u;;){if(s=g(s.times(e),u,1),t=t.times(++p),f=c.plus(U(s,t,u,1)),o(f.c).slice(0,u)===o(c.c).slice(0,u)){for(i=m;i--;)c=g(c.times(c),u,1);if(null!=r)return h.precision=y,c;if(!(3>l&&a(c.c,u-n,v,l)))return g(c,h.precision=y,v,w=!0);h.precision=u+=10,t=s=f=new h(d),p=0,l++}c=f}}function f(e,r,t,n){var i,a,s=e.constructor,u=(e=new s(e)).e;if(null==r?t=0:(g(e,++r,t),t=n?r:r+e.e-u),u=e.e,i=o(e.c),1==n||2==n&&(u>=r||u<=s.toExpNeg)){for(;i.length1&&(i=i.charAt(0)+"."+i.slice(1)),i+=(0>u?"e":"e+")+u}else{if(n=i.length,0>u){for(a=t-n;++u;i="0"+i);i="0."+i}else if(++u>n){for(a=t-u,u-=n;u--;i+="0");a>0&&(i+=".")}else a=t-n,n>u?i=i.slice(0,u)+"."+i.slice(u):a>0&&(i+=".");if(a>0)for(;a--;i+="0");}return e.s<0&&e.c[0]?"-"+i:i}function l(e){var r=e.length-1,t=r*A+1;if(r=e[r]){for(;r%10==0;r/=10,t--);for(r=e[0];r>=10;r/=10,t++);}return t}function p(e,r,t,n,i){if(e.errors){var o=new Error((n||["new Decimal","cmp","div","eq","gt","gte","lt","lte","minus","mod","plus","times","toFraction","pow","random","log","sqrt","toNearest","divToInt"][b?0>b?-b:b:0>1/b?1:0])+"() "+(["number type has more than 15 significant digits","LN10 out of digits"][r]||r+([y?" out of range":" not an integer"," not a boolean or binary digit"][i]||""))+": "+t);throw o.name="Decimal Error",y=b=0,o}}function m(e,r,t){var n=new e(e.ONE);for(w=!1;1&t&&(n=n.times(r)),t>>=1,t;)r=r.times(r);return w=!0,n}function h(e,r){var t,n,i,s,u,c,f,l,m,d,v,y=1,x=10,b=e,E=b.c,N=b.constructor,M=N.ONE,_=N.rounding,A=N.precision;if(b.s<0||!E||!E[0]||!b.e&&1==E[0]&&1==E.length)return new N(E&&!E[0]?-1/0:1!=b.s?0/0:E?0:b);if(null==r?(w=!1,f=A):f=r,N.precision=f+=x,t=o(E),n=t.charAt(0),!(Math.abs(s=b.e)<15e14))return b=new N(n+"."+t.slice(1)),f+2>q.length&&p(N,1,f+2,"ln"),b=h(b,f-x).plus(new N(q.slice(0,f+2)).times(s+"")),N.precision=A,null==r?g(b,A,_,w=!0):b;for(;7>n&&1!=n||1==n&&t.charAt(1)>3;)b=b.times(e),t=o(b.c),n=t.charAt(0),y++;for(s=b.e,n>1?(b=new N("0."+t),s++):b=new N(n+"."+t.slice(1)),d=b,l=u=b=U(b.minus(M),b.plus(M),f,1),v=g(b.times(b),f,1),i=3;;){if(u=g(u.times(v),f,1),m=l.plus(U(u,new N(i),f,1)),o(m.c).slice(0,f)===o(l.c).slice(0,f)){if(l=l.times(2),0!==s&&(f+2>q.length&&p(N,1,f+2,"ln"),l=l.plus(new N(q.slice(0,f+2)).times(s+""))),l=U(l,new N(y),f,1),null!=r)return N.precision=A,l;if(!a(l.c,f-x,_,c))return g(l,N.precision=A,_,w=!0);N.precision=f+=x,m=u=b=U(d.minus(M),d.plus(M),f,1),v=g(b.times(b),f,1),i=c=1}l=m,i+=2}}function g(e,r,t,n){var i,o,a,s,u,c,f,l,p=e.constructor;e:if(null!=r){if(!(f=e.c))return e;for(i=1,s=f[0];s>=10;s/=10,i++);if(o=r-i,0>o)o+=A,a=r,u=f[l=0],c=u/N(10,i-a-1)%10|0;else if(l=Math.ceil((o+1)/A),l>=f.length){if(!n)break e;for(;f.length<=l;f.push(0));u=c=0,i=1,o%=A,a=o-A+1}else{for(u=s=f[l],i=1;s>=10;s/=10,i++);o%=A,a=o-A+i,c=0>a?0:E(u/N(10,i-a-1)%10)}if(n=n||0>r||null!=f[l+1]||(0>a?u:u%N(10,i-a-1)),n=4>t?(c||n)&&(0==t||t==(e.s<0?3:2)):c>5||5==c&&(4==t||n||6==t&&(o>0?a>0?u/N(10,i-a):0:f[l-1])%10&1||t==(e.s<0?8:7)),1>r||!f[0])return f.length=0,n?(r-=e.e+1,f[0]=N(10,r%A),e.e=-r||0):f[0]=e.e=0,e;if(0==o?(f.length=l,s=1,l--):(f.length=l+1,s=N(10,A-o),f[l]=a>0?(u/N(10,i-a)%N(10,a)|0)*s:0),n)for(;;){if(0==l){for(o=1,a=f[0];a>=10;a/=10,o++);for(a=f[0]+=s,s=1;a>=10;a/=10,s++);o!=s&&(e.e++,f[0]==_&&(f[0]=1));break}if(f[l]+=s,f[l]!=_)break;f[l--]=0,s=1}for(o=f.length;0===f[--o];f.pop());}return w&&(e.e>p.maxE?e.c=e.e=null:e.ea,!i||!o)return u==c?0:!i^t?1:-1;if(u!=c)return u>c^t?1:-1;for(a=-1,s=(u=i.length)<(c=o.length)?u:c;++ao[a]^t?1:-1;return u==c?0:u>c^t?1:-1},S.decimalPlaces=S.dp=function(){var e,r,t=null;if(e=this.c){if(t=((r=e.length-1)-E(this.e/A))*A,r=e[r])for(;r%10==0;r/=10,t--);0>t&&(t=0)}return t},S.dividedBy=S.div=function(e,r){return b=2,U(this,new this.constructor(e,r))},S.dividedToIntegerBy=S.divToInt=function(e,r){var t=this,n=t.constructor;return b=18,g(U(t,new n(e,r),0,1,1),n.precision,n.rounding)},S.equals=S.eq=function(e,r){return b=3,0===this.cmp(e,r)},S.exponential=S.exp=function(){return c(this)},S.floor=function(){return g(new this.constructor(this),this.e+1,3)},S.greaterThan=S.gt=function(e,r){return b=4,this.cmp(e,r)>0},S.greaterThanOrEqualTo=S.gte=function(e,r){return b=5,r=this.cmp(e,r),1==r||0===r},S.isFinite=function(){return!!this.c},S.isInteger=S.isInt=function(){return!!this.c&&E(this.e/A)>this.c.length-2},S.isNaN=function(){return!this.s},S.isNegative=S.isNeg=function(){return this.s<0},S.isZero=function(){return!!this.c&&0==this.c[0]},S.lessThan=S.lt=function(e,r){return b=6,this.cmp(e,r)<0},S.lessThanOrEqualTo=S.lte=function(e,r){return b=7,r=this.cmp(e,r),-1==r||0===r},S.logarithm=S.log=function(e,r){var t,n,i,s,u,c,f,l,m,d=this,v=d.constructor,y=v.precision,x=v.rounding,E=5;if(null==e)e=new v(10),t=!0;else{if(b=15,e=new v(e,r),n=e.c,e.s<0||!n||!n[0]||!e.e&&1==n[0]&&1==n.length)return new v(0/0);t=e.eq(10)}if(n=d.c,d.s<0||!n||!n[0]||!d.e&&1==n[0]&&1==n.length)return new v(n&&!n[0]?-1/0:1!=d.s?0/0:n?0:1/0);if(u=t&&(s=n[0],n.length>1||1!=s&&10!=s&&100!=s&&1e3!=s&&1e4!=s&&1e5!=s&&1e6!=s),w=!1,f=y+E,l=f+10,c=h(d,f),t?(l>q.length&&p(v,1,l,"log"),i=new v(q.slice(0,l))):i=h(e,f),m=U(c,i,f,1),a(m.c,s=y,x))do if(f+=10,c=h(d,f),t?(l=f+10,l>q.length&&p(v,1,l,"log"),i=new v(q.slice(0,l))):i=h(e,f),m=U(c,i,f,1),!u){+o(m.c).slice(s+1,s+15)+1==1e14&&(m=g(m,y+1,0));break}while(a(m.c,s+=10,x));return w=!0,g(m,y,x)},S.minus=function(e,r){var t,n,i,o,a=this,s=a.constructor,u=a.s;if(b=8,e=new s(e,r),r=e.s,!u||!r)return new s(0/0);if(u!=r)return e.s=-r,a.plus(e);var c=a.c,f=e.c,l=E(e.e/A),p=E(a.e/A),m=s.precision,h=s.rounding;if(!p||!l){if(!c||!f)return c?(e.s=-r,e):new s(f?a:0/0);if(!c[0]||!f[0])return a=f[0]?(e.s=-r,e):new s(c[0]?a:3==h?-0:0),w?g(a,m,h):a}if(c=c.slice(),n=c.length,u=p-l){for((o=0>u)?(u=-u,t=c,n=f.length):(l=p,t=f),(p=Math.ceil(m/A))>n&&(n=p),u>(n+=2)&&(u=n,t.length=1),t.reverse(),r=u;r--;t.push(0));t.reverse()}else for((o=n<(i=f.length))&&(i=n),u=r=0;i>r;r++)if(c[r]!=f[r]){o=c[r]0)for(;r--;c[i++]=0);for(p=_-1,r=f.length;r>u;){if(c[--r]=10;r/=10,u++);return e.e=u+l*A-1,w?g(e,m,h):e},S.modulo=S.mod=function(e,r){var t,n,i=this,o=i.constructor,a=o.modulo;return b=9,e=new o(e,r),r=e.s,t=!i.c||!r||e.c&&!e.c[0],t||!e.c||i.c&&!i.c[0]?t?new o(0/0):g(new o(i),o.precision,o.rounding):(w=!1,9==a?(e.s=1,n=U(i,e,0,3,1),e.s=r,n.s*=r):n=U(i,e,0,a,1),n=n.times(e),w=!0,i.minus(n))},S.naturalLogarithm=S.ln=function(){return h(this)},S.negated=S.neg=function(){var e=new this.constructor(this);return e.s=-e.s||null,g(e)},S.plus=function(e,r){var t,n=this,i=n.constructor,o=n.s;if(b=10,e=new i(e,r),r=e.s,!o||!r)return new i(0/0);if(o!=r)return e.s=-r,n.minus(e);var a=n.c,s=e.c,u=E(e.e/A),c=E(n.e/A),f=i.precision,l=i.rounding;if(!c||!u){if(!a||!s)return new i(o/0);if(!a[0]||!s[0])return n=s[0]?e:new i(a[0]?n:0*o),w?g(n,f,l):n}if(a=a.slice(),o=c-u){for(0>o?(o=-o,t=a,r=s.length):(u=c,t=s,r=a.length),(c=Math.ceil(f/A))>r&&(r=c),o>++r&&(o=r,t.length=1),t.reverse();o--;t.push(0));t.reverse()}for(a.length-s.length<0&&(t=s,s=a,a=t),o=s.length,r=0,c=_;o;a[o]%=c)r=(a[--o]=a[o]+s[o]+r)/c|0;for(r&&(a.unshift(r),++u),o=a.length;0==a[--o];a.pop());for(e.c=a,o=1,r=a[0];r>=10;r/=10,o++);return e.e=o+u*A-1,w?g(e,f,l):e},S.precision=S.sd=function(e){var r=null,t=this;return e!=r&&e!==!!e&&1!==e&&0!==e&&p(t.constructor,"argument",e,"precision",1),t.c&&(r=l(t.c),e&&t.e+1>r&&(r=t.e+1)),r},S.round=function(){var e=this,r=e.constructor;return g(new r(e),e.e+1,r.rounding)},S.squareRoot=S.sqrt=function(){var e,r,t,n,i,a,s=this,u=s.c,c=s.s,f=s.e,l=s.constructor,p=new l(.5);if(1!==c||!u||!u[0])return new l(!c||0>c&&(!u||u[0])?0/0:u?s:1/0);for(w=!1,c=Math.sqrt(+s),0==c||c==1/0?(r=o(u),(r.length+f)%2==0&&(r+="0"),c=Math.sqrt(r),f=E((f+1)/2)-(0>f||f%2),c==1/0?r="1e"+f:(r=c.toExponential(),r=r.slice(0,r.indexOf("e")+1)+f),n=new l(r)):n=new l(c.toString()),t=(f=l.precision)+3;;)if(a=n,n=p.times(a.plus(U(s,a,t+2,1))),o(a.c).slice(0,t)===(r=o(n.c)).slice(0,t)){if(r=r.slice(t-3,t+1),"9999"!=r&&(i||"4999"!=r)){(!+r||!+r.slice(1)&&"5"==r.charAt(0))&&(g(n,f+1,1),e=!n.times(n).eq(s));break}if(!i&&(g(a,f+1,0),a.times(a).eq(s))){n=a;break}t+=4,i=1}return w=!0,g(n,f,l.rounding,e)},S.times=function(e,r){var t,n,i=this,o=i.constructor,a=i.c,s=(b=11,e=new o(e,r),e.c),u=E(i.e/A),c=E(e.e/A),f=i.s;if(r=e.s,e.s=f==r?1:-1,!((u||a&&a[0])&&(c||s&&s[0])))return new o(!f||!r||a&&!a[0]&&!s||s&&!s[0]&&!a?0/0:a&&s?0*e.s:e.s/0);for(n=u+c,f=a.length,r=s.length,r>f&&(t=a,a=s,s=t,c=f,f=r,r=c),c=f+r,t=[];c--;t.push(0));for(u=r-1;u>-1;u--){for(r=0,c=f+u;c>u;)r=t[c]+s[u]*a[c-u-1]+r,t[c--]=r%_|0,r=r/_|0;t[c]=(t[c]+r)%_|0}for(r?++n:t[0]||t.shift(),c=t.length;!t[--c];t.pop());for(e.c=t,f=1,r=t[0];r>=10;r/=10,f++);return e.e=f+n*A-1,w?g(e,o.precision,o.rounding):e},S.toDecimalPlaces=S.toDP=function(e,r){var t=this;return t=new t.constructor(t),null!=e&&u(t,e,"toDP")?g(t,(0|e)+t.e+1,s(t,r,"toDP")):t},S.toExponential=function(e,r){var t=this;return t.c?f(t,null!=e&&u(t,e,"toExponential")?0|e:null,null!=e&&s(t,r,"toExponential"),1):t.toString()},S.toFixed=function(e,r){var t,n=this,i=n.constructor,o=i.toExpNeg,a=i.toExpPos;return null!=e&&(e=u(n,e,t="toFixed")?n.e+(0|e):null,r=s(n,r,t)),i.toExpNeg=-(i.toExpPos=1/0),null!=e&&n.c?(t=f(n,e,r),n.s<0&&n.c&&(n.c[0]?t.indexOf("-")<0&&(t="-"+t):t=t.replace("-",""))):t=n.toString(),i.toExpNeg=o,i.toExpPos=a,t},S.toFormat=function(e,r){var t=this;if(!t.c)return t.toString();var n,i=t.s<0,o=t.constructor.format,a=o.groupSeparator,s=+o.groupSize,u=+o.secondaryGroupSize,c=t.toFixed(e,r).split("."),f=c[0],l=c[1],p=i?f.slice(1):f,m=p.length;if(u&&(n=s,s=u,m-=u=n),s>0&&m>0){for(n=m%s||s,f=p.substr(0,n);m>n;n+=s)f+=a+p.substr(n,s);u>0&&(f+=a+p.slice(n)),i&&(f="-"+f)}return l?f+o.decimalSeparator+((u=+o.fractionGroupSize)?l.replace(new RegExp("\\d{"+u+"}\\B","g"),"$&"+o.fractionGroupSeparator):l):f},S.toFraction=function(e){var r,t,n,i,a,s,u,c,f=this,m=f.constructor,h=r=new m(m.ONE),g=s=new m(0),d=f.c,v=new m(g);if(!d)return f.toString();for(n=v.e=l(d)-f.e-1,v.c[0]=N(10,(u=n%A)<0?A+u:u),(null==e||(!(b=12,a=new m(e)).s||(y=a.cmp(h)<0||!a.c)||m.errors&&E(a.e/A)0)&&(e=n>0?v:h),w=!1,a=new m(o(d)),u=m.precision,m.precision=n=d.length*A*2;c=U(a,v,0,1,1),t=r.plus(c.times(g)),1!=t.cmp(e);)r=g,g=t,h=s.plus(c.times(t=h)),s=t,v=a.minus(c.times(t=v)),a=t;return t=U(e.minus(r),g,0,1,1),s=s.plus(t.times(h)),r=r.plus(t.times(g)),s.s=h.s=f.s,i=U(h,g,n,1).minus(f).abs().cmp(U(s,r,n,1).minus(f).abs())<1?[h+"",g+""]:[s+"",r+""],w=!0,m.precision=u,i},S.toNearest=function(e,r){var t=this,n=t.constructor;return t=new n(t), +null==e?(e=new n(n.ONE),r=n.rounding):(b=17,e=new n(e),r=s(t,r,"toNearest")),e.c?t.c&&(e.c[0]?(w=!1,t=U(t,e,0,4>r?[4,5,7,8][r]:r,1).times(e),w=!0,g(t)):t.c=[t.e=0]):t.s&&(e.s&&(e.s=t.s),t=e),t},S.toNumber=function(){var e=this;return+e||(e.s?0*e.s:0/0)},S.toPower=S.pow=function(e,r){var t,n,i,s,u=this,f=u.constructor,l=u.s,p=(b=13,+(e=new f(e,r))),d=0>p?-p:p,v=f.precision,y=f.rounding;if(!u.c||!e.c||(i=!u.c[0])||!e.c[0])return new f(N(i?0*l:+u,p));if(u=new f(u),t=u.c.length,!u.e&&u.c[0]==u.s&&1==t)return u;if(r=e.c.length-1,e.e||e.c[0]!=e.s||r)if(n=E(e.e/A),i=n>=r,!i&&0>l)s=new f(0/0);else{if(i&&C>t*A*d){if(s=m(f,u,d),e.s<0)return f.ONE.div(s)}else{if(l=0>l&&1&e.c[Math.max(n,r)]?-1:1,r=N(+u,p),n=0!=r&&isFinite(r)?new f(r+"").e:E(p*(Math.log("0."+o(u.c))/Math.LN10+u.e+1)),n>f.maxE+1||n0?l/0:0);w=!1,f.rounding=u.s=1,d=Math.min(12,(n+"").length),s=c(e.times(h(u,v+d)),v),s=g(s,v+5,1),a(s.c,v,y)&&(n=v+10,s=g(c(e.times(h(u,n+d)),n),n+5,1),+o(s.c).slice(v+1,v+15)+1==1e14&&(s=g(s,v+1,0))),s.s=l,w=!0,f.rounding=y}s=g(s,v,y)}else s=g(u,v,y);return s},S.toPrecision=function(e,r){var t=this;return null!=e&&u(t,e,"toPrecision",1)&&t.c?f(t,0|--e,s(t,r,"toPrecision"),2):t.toString()},S.toSignificantDigits=S.toSD=function(e,r){var t=this,n=t.constructor;return t=new n(t),null!=e&&u(t,e,"toSD",1)?g(t,0|e,s(t,r,"toSD")):g(t,n.precision,n.rounding)},S.toString=function(e){var r,t,n,i=this,a=i.constructor,s=i.e;if(null===s)t=i.s?"Infinity":"NaN";else{if(e===r&&(s<=a.toExpNeg||s>=a.toExpPos))return f(i,null,a.rounding,1);if(t=o(i.c),0>s){for(;++s;t="0"+t);t="0."+t}else if(n=t.length,s>0)if(++s>n)for(s-=n;s--;t+="0");else n>s&&(t=t.slice(0,s)+"."+t.slice(s));else if(r=t.charAt(0),n>1)t=r+"."+t.slice(1);else if("0"==r)return r;if(null!=e)if((y=!(e>=2&&65>e))||e!=(0|e)&&a.errors)p(a,"base",e,"toString",0);else if(t=d(a,t,0|e,10,i.s),"0"==t)return t}return i.s<0?"-"+t:t},S.truncated=S.trunc=function(){return g(new this.constructor(this),this.e+1,1)},S.valueOf=S.toJSON=function(){return this.toString()},d=function(){function e(e,r,t){for(var n,i,o=[0],a=0,s=e.length;s>a;){for(i=o.length;i--;o[i]*=r);for(o[n=0]+=T.indexOf(e.charAt(a++));nt-1&&(null==o[n+1]&&(o[n+1]=0),o[n+1]+=o[n]/t|0,o[n]%=t)}return o.reverse()}return function(r,t,n,i,o){var a,s,u,c,f,l,p=t.indexOf("."),h=r.precision,g=r.rounding;for(37>i&&(t=t.toLowerCase()),p>=0&&(t=t.replace(".",""),l=new r(i),c=m(r,l,t.length-p),l.c=e(c.toFixed(),10,n),l.e=l.c.length),f=e(t,i,n),a=s=f.length;0==f[--s];f.pop());if(!f[0])return"0";if(0>p?a--:(c.c=f,c.e=a,c.s=o,c=U(c,l,h,g,0,n),f=c.c,u=c.r,a=c.e),p=f[h],s=n/2,u=u||null!=f[h+1],4>g?(null!=p||u)&&(0==g||g==(c.s<0?3:2)):p>s||p==s&&(4==g||u||6==g&&1&f[h-1]||g==(c.s<0?8:7)))for(f.length=h,--n;++f[--h]>n;)f[h]=0,h||(++a,f.unshift(1));else f.length=h;for(s=f.length;!f[--s];);for(p=0,t="";s>=p;t+=T.charAt(f[p++]));if(0>a){for(;++a;t="0"+t);t="0."+t}else if(p=t.length,++a>p)for(a-=p;a--;t+="0");else p>a&&(t=t.slice(0,a)+"."+t.slice(a));return t}}();var U=function(){function e(e,r,t){var n,i=0,o=e.length;for(e=e.slice();o--;)n=e[o]*r+i,e[o]=n%t|0,i=n/t|0;return i&&e.unshift(i),e}function r(e,r,t,n){var i,o;if(t!=n)o=t>n?1:-1;else for(i=o=0;t>i;i++)if(e[i]!=r[i]){o=e[i]>r[i]?1:-1;break}return o}function t(e,r,t,n){for(var i=0;t--;)e[t]-=i,i=e[t]1;e.shift());}return function(n,i,o,a,s,u){var c,f,l,p,m,h,d,v,y,x,w,b,N,M,T,S,O,z,C,q=n.constructor,U=n.s==i.s?1:-1,I=n.c,B=i.c;if(!(I&&I[0]&&B&&B[0]))return new q(n.s&&i.s&&(I?!B||I[0]!=B[0]:B)?I&&0==I[0]||!B?0*U:U/0:0/0);for(u?(p=1,f=n.e-i.e):(u=_,p=A,f=E(n.e/p)-E(i.e/p)),z=B.length,S=I.length,y=new q(U),x=y.c=[],l=0;B[l]==(I[l]||0);l++);if(B[l]>(I[l]||0)&&f--,null==o?(U=o=q.precision,a=q.rounding):U=s?o+(n.e-i.e)+1:o,0>U)x.push(1),m=!0;else{if(U=U/p+2|0,l=0,1==z){for(h=0,B=B[0],U++;(S>l||h)&&U--;l++)M=h*u+(I[l]||0),x[l]=M/B|0,h=M%B|0;m=h||S>l}else{for(h=u/(B[0]+1)|0,h>1&&(B=e(B,h,u),I=e(I,h,u),z=B.length,S=I.length),T=z,w=I.slice(0,z),b=w.length;z>b;w[b++]=0);C=B.slice(),C.unshift(0),O=B[0],B[1]>=u/2&&O++;do h=0,c=r(B,w,z,b),0>c?(N=w[0],z!=b&&(N=N*u+(w[1]||0)),h=N/O|0,h>1?(h>=u&&(h=u-1),d=e(B,h,u),v=d.length,b=w.length,c=r(d,w,v,b),1==c&&(h--,t(d,v>z?C:B,v,u))):(0==h&&(c=h=1),d=B.slice()),v=d.length,b>v&&d.unshift(0),t(w,d,b,u),-1==c&&(b=w.length,c=r(B,w,z,b),1>c&&(h++,t(w,b>z?C:B,b,u))),b=w.length):0===c&&(h++,w=[0]),x[l++]=h,c&&w[0]?w[b++]=I[T]||0:(w=[I[T]],b=1);while((T++=10;U/=10,l++);y.e=l+f*p-1,g(y,s?o+y.e+1:o,a,m)}return y}}();v=function(){function e(e){var r,t,n,i=this,o="config",a=i.errors?parseInt:parseFloat;return e==t||"object"!=typeof e&&!p(i,"object expected",e,o)?i:((n=e[r="precision"])!=t&&((y=1>n||n>z)||a(n)!=n?p(i,r,n,o,0):i[r]=0|n),(n=e[r="rounding"])!=t&&((y=0>n||n>8)||a(n)!=n?p(i,r,n,o,0):i[r]=0|n),(n=e[r="toExpNeg"])!=t&&((y=-O>n||n>0)||a(n)!=n?p(i,r,n,o,0):i[r]=E(n)),(n=e[r="toExpPos"])!=t&&((y=0>n||n>O)||a(n)!=n?p(i,r,n,o,0):i[r]=E(n)),(n=e[r="minE"])!=t&&((y=-O>n||n>0)||a(n)!=n?p(i,r,n,o,0):i[r]=E(n)),(n=e[r="maxE"])!=t&&((y=0>n||n>O)||a(n)!=n?p(i,r,n,o,0):i[r]=E(n)),(n=e[r="errors"])!=t&&(n===!!n||1===n||0===n?(y=b=0,i[r]=!!n):p(i,r,n,o,1)),(n=e[r="crypto"])!=t&&(n===!!n||1===n||0===n?i[r]=!(!n||!x||"object"!=typeof x):p(i,r,n,o,1)),(n=e[r="modulo"])!=t&&((y=0>n||n>9)||a(n)!=n?p(i,r,n,o,0):i[r]=0|n),(e=e[r="format"])!=t&&("object"==typeof e?i[r]=e:p(i,"format object expected",e,o)),i)}function r(e){return new this(e).exp()}function t(e){return new this(e).ln()}function n(e,r){return new this(e).log(r)}function i(e,r,t){var n,i,o=0;for("[object Array]"==M.call(r[0])&&(r=r[0]),n=new e(r[0]);++oi;)n=r[i],n>=429e7?r[i]=x.getRandomValues(new Uint32Array(1))[0]:o[i++]=n%1e7;else if(x&&x.randomBytes){for(r=x.randomBytes(t*=4);t>i;)n=r[i]+(r[i+1]<<8)+(r[i+2]<<16)+((127&r[i+3])<<24),n>=214e7?x.randomBytes(4).copy(r,i):(o.push(n%1e7),i+=4);i=t/4}else p(a,"crypto unavailable",x,"random");if(!i)for(;t>i;)o[i++]=1e7*Math.random()|0;for(t=o[--i],e%=A,t&&e&&(n=N(10,A-e),o[i]=(t/n|0)*n);0===o[i];i--)o.pop();if(0>i)o=[t=0];else{for(t=-1;0===o[0];)o.shift(),t-=A;for(i=1,n=o[0];n>=10;)n/=10,i++;A>i&&(t-=A-i)}return s.e=t,s.c=o,s}function f(e){return new this(e).sqrt()}function l(i){function u(e,r){var t=this;if(!(t instanceof u))return p(u,"Decimal called without new",e),new u(e,r);if(t.constructor=u,e instanceof u){if(null==r)return b=0,t.s=e.s,t.e=e.e,t.c=(e=e.c)?e.slice():e,t;if(10==r)return g(new u(e),u.precision,u.rounding);e+=""}return m(u,t,e,r)}return u.precision=20,u.rounding=4,u.modulo=1,u.toExpNeg=-7,u.toExpPos=21,u.minE=-O,u.maxE=O,u.errors=!0,u.crypto=!1,u.format={decimalSeparator:".",groupSeparator:",",groupSize:3,secondaryGroupSize:0,fractionGroupSeparator:" ",fractionGroupSize:0},u.prototype=S,u.ONE=new u(1),u.ROUND_UP=0,u.ROUND_DOWN=1,u.ROUND_CEIL=2,u.ROUND_FLOOR=3,u.ROUND_HALF_UP=4,u.ROUND_HALF_DOWN=5,u.ROUND_HALF_EVEN=6,u.ROUND_HALF_CEIL=7,u.ROUND_HALF_FLOOR=8,u.EUCLID=9,u.config=e,u.constructor=l,u.exp=r,u.ln=t,u.log=n,u.max=o,u.min=a,u.pow=s,u.sqrt=f,u.random=c,null!=i&&u.config(i),u}var m=function(){var e=/^-?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,r=String.prototype.trim||function(){return this.replace(/^\s+|\s+$/g,"")};return function(t,n,i,o){var a,s,u,c,f,l;if("string"!=typeof i&&(i=(c="number"==typeof i||"[object Number]"==M.call(i))&&0===i&&0>1/i?"-0":i+""),f=i,null==o&&e.test(i))n.s=45===i.charCodeAt(0)?(i=i.slice(1),-1):1;else{if(10==o)return g(new t(i),t.precision,t.rounding);if(i=r.call(i).replace(/^\+(?!-)/,""),n.s=45===i.charCodeAt(0)?(i=i.replace(/^-(?!-)/,""),-1):1,null!=o?o!=(0|o)&&t.errors||(y=!(o>=2&&65>o))?(p(t,"base",o,0,0),l=e.test(i)):(a="["+T.slice(0,o=0|o)+"]+",i=i.replace(/\.$/,"").replace(/^\./,"0."),(l=new RegExp("^"+a+"(?:\\."+a+")?$",37>o?"i":"").test(i))?(c&&(i.replace(/^0\.0*|\./,"").length>15&&p(t,0,f),c=!c),i=d(t,i,10,o,n.s)):"Infinity"!=i&&"NaN"!=i&&(p(t,"not a base "+o+" number",f),i="NaN")):l=e.test(i),!l)return n.c=n.e=null,"Infinity"!=i&&("NaN"!=i&&p(t,"not a number",f),n.s=null),b=0,n}for((s=i.indexOf("."))>-1&&(i=i.replace(".","")),(u=i.search(/e/i))>0?(0>s&&(s=u),s+=+i.slice(u+1),i=i.substring(0,u)):0>s&&(s=i.length),u=0;48===i.charCodeAt(u);u++);for(o=i.length;48===i.charCodeAt(--o););if(i=i.slice(u,o+1)){if(o=i.length,c&&o>15&&p(t,0,f),n.e=s=s-u-1,n.c=[],u=(s+1)%A,0>s&&(u+=A),o>u){for(u&&n.c.push(+i.slice(0,u)),o-=A;o>u;)n.c.push(+i.slice(u,u+=A));i=i.slice(u),u=A-i.length}else u-=o;for(;u--;i+="0");n.c.push(+i),w&&(n.e>t.maxE?n.c=n.e=null:n.e>",rightLogShift:">>>",equal:"=",unequal:"\\neq",smaller:"<",larger:">",smallerEq:"\\leq",largerEq:"\\geq",bitAnd:"\\&",bitXor:"\\underline{|}",bitOr:"|",and:"\\wedge",xor:"\\veebar",or:"\\vee"};var i="\\mathrm{%name%}\\left(%*%\\right)",o={abs:"\\left|%0%\\right|",add:"\\left(%0%+%1%\\right)",ceil:"\\left\\lceil%0%\\right\\rceil",cube:"\\left(%0%\\right)^3",divide:"\\frac{%0%}{%1%}",dotDivide:"\\left(%0%"+r.operators.dotDivide+"%1%\\right)",dotMultiply:"\\left(%0%"+r.operators.dotMultiply+"%1%\\right)",dotPow:"\\left(%0%"+r.operators.dotPow+"%1%\\right)",exp:"\\exp\\left(%0%\\right)",fix:i,floor:"\\left\\lfloor%0%\\right\\rfloor",gcd:"\\gcd\\left(%*%\\right)",lcm:i,log10:"\\log_{10}\\left(%0%\\right)",log:{1:"\\ln\\left(%0%\\right)",2:"\\log_{%1%}\\left(%0%\\right)"},mod:"\\left(%0%"+r.operators.mod+"%1%\\right)",multiply:"\\left(%0%"+r.operators.multiply+"%1%\\right)",norm:{1:"\\left\\|%0%\\right\\|",2:i},nthRoot:"\\sqrt[%1%]{%0%}",pow:"\\left(%0%\\right)"+r.operators.pow+"{%1%}",round:{1:"\\left\\lfloor%0%\\right\\rceil",2:i},sign:i,sqrt:"\\sqrt{%0%}",square:"\\left(%0%\\right)^2",subtract:"\\left(%0%"+r.operators.subtract+"%1%\\right)",unaryMinus:r.operators.unaryMinus+"\\left(%0%\\right)",unaryPlus:r.operators.unaryPlus+"\\left(%0%\\right)",xgcd:i,bitAnd:"\\left(%0%"+r.operators.bitAnd+"%1%\\right)",bitOr:"\\left(%0%"+r.operators.bitOr+"%1%\\right)",bitXor:"\\left(%0%"+r.operators.bitXor+"%1%\\right)",bitNot:r.operators.bitNot+"\\left(%0%\\right)",leftShift:"\\left(%0%"+r.operators.leftShift+"%1%\\right)",rightArithShift:"\\left(%0%"+r.operators.rightArithShift+"%1%\\right)",rightLogShift:"\\left(%0%"+r.operators.rightLogShift+"%1%\\right)",arg:"\\arg\\left(%0%\\right)",conj:"\\left(%0%\\right)^*",im:"\\Im\\left\\lbrace%0%\\right\\rbrace",re:"\\Re\\left\\lbrace%0%\\right\\rbrace",stirlingS2:"\\mathrm{S}\\left(%0%,%1%\\right)",bignumber:{0:"0",1:"\\left(%0%\\right)"},"boolean":i,chain:i,complex:{0:"0",1:"\\left(%0%\\right)",2:"\\left(\\left(%0%\\right)+"+r.symbols.i+"\\cdot\\left(%1%\\right)\\right)"},index:i,matrix:{0:"\\begin{bmatrix}\\end{bmatrix}",1:"\\left(%0%\\right)",2:"\\left(%0%\\right)"},number:{0:"0",1:"\\left(%0%\\right)",2:"\\left(\\left(%0%\\right)%1%\\right)"},parser:i,string:{0:'""',1:function(e){return'"'+e.args[0].toString()+'"'}},unit:{1:"\\left(%0%\\right)",2:"\\left(\\left(%0%\\right)%1%\\right)"},compile:i,eval:i,help:i,parse:i,and:"\\left(%0%"+r.operators.and+"%1%\\right)",not:r.operators.not+"\\left(%0%\\right)",or:"\\left(%0%"+r.operators.or+"%1%\\right)",xor:"\\left(%0%"+r.operators.xor+"%1%\\right)",concat:i,cross:"\\left(%0%\\right)\\times\\left(%1%\\right)",det:"\\det\\left(%0%\\right)",diag:i,dot:"\\left(%0%\\cdot%1%\\right)",eye:i,flatten:i,inv:"\\left(%0%\\right)^{-1}",ones:i,range:i,resize:i,size:i,squeeze:i,subset:i,trace:"\\mathrm{tr}\\left(%0%\\right)",transpose:"\\left(%0%\\right)"+r.operators.transpose,zeros:i,combinations:"\\binom{%0%}{%1%}",distribution:i,factorial:"\\left(%0%\\right)"+r.operators.factorial,gamma:"\\Gamma\\left(%0%\\right)",permutations:i,pickRandom:i,randomInt:i,random:i,compare:i,deepEqual:i,equal:"\\left(%0%"+r.operators.equal+"%1%\\right)",largerEq:"\\left(%0%"+r.operators.largerEq+"%1%\\right)",larger:"\\left(%0%"+r.operators.larger+"%1%\\right)",smallerEq:"\\left(%0%"+r.operators.smallerEq+"%1%\\right)",smaller:"\\left(%0%"+r.operators.smaller+"%1%\\right)",unequal:"\\left(%0%"+r.operators.unequal+"%1%\\right)",max:"\\max\\left(%*%\\right)",mean:i,median:i,min:"\\min\\left(%*%\\right)",prod:i,std:i,sum:i,"var":"\\mathrm{Var}\\left(%*%\\right)",acosh:"\\cosh^{-1}\\left(%0%\\right)",acos:"\\cos^{-1}\\left(%0%\\right)",acoth:"\\coth^{-1}\\left(%0%\\right)",acot:"\\cot^{-1}\\left(%0%\\right)",acsch:"\\mathrm{csch}^{-1}\\left(%0%\\right)",acsc:"\\csc^{-1}\\left(%0%\\right)",asech:"\\mathrm{sech}^{-1}\\left(%0%\\right)",asec:"\\sec^{-1}\\left(%0%\\right)",asinh:"\\sinh^{-1}\\left(%0%\\right)",asin:"\\sin^{-1}\\left(%0%\\right)",atan2:"\\mathrm{atan2}\\left(%*%\\right)",atanh:"\\tanh^{-1}\\left(%0%\\right)",atan:"\\tan^{-1}\\left(%0%\\right)",cosh:"\\cosh\\left(%0%\\right)",cos:"\\cos\\left(%0%\\right)",coth:"\\coth\\left(%0%\\right)",cot:"\\cot\\left(%0%\\right)",csch:"\\mathrm{csch}\\left(%0%\\right)",csc:"\\csc\\left(%0%\\right)",sech:"\\mathrm{sech}\\left(%0%\\right)",sec:"\\sec\\left(%0%\\right)",sinh:"\\sinh\\left(%0%\\right)",sin:"\\sin\\left(%0%\\right)",tanh:"\\tanh\\left(%0%\\right)",tan:"\\tan\\left(%0%\\right)",to:"\\left(%0%"+r.operators.to+"%1%\\right)",clone:i,filter:i,forEach:i,format:i,"import":i,map:i,print:i,sort:i,"typeof":i},a={deg:"^\\circ"};r.toSymbol=function(e){if(a.hasOwnProperty(e))return a[e];if(r.symbols.hasOwnProperty(e))return r.symbols[e];if(-1!==e.indexOf("_")){var t=e.indexOf("_");return r.toSymbol(e.substring(0,t))+"_{"+r.toSymbol(e.substring(t+1))+"}"}return"\\mathrm{"+e+"}"},r.toFunction=function(e,r,t){var a=o[t],s=e.args.map(function(e){return e.toTex(r)});switch(typeof a){case"function":return a(e,r);case"string":return n(a,t,s);case"object":switch(typeof a[s.length]){case"function":return a[s.length](e,r);case"string":return n(a[s.length],t,s)}default:return n(i,t,s)}}}])}); //# sourceMappingURL=math.map \ No newline at end of file diff --git a/lib/expression/node/Node.js b/lib/expression/node/Node.js index 92827efbf..c7d46c8dd 100644 --- a/lib/expression/node/Node.js +++ b/lib/expression/node/Node.js @@ -152,20 +152,16 @@ Node.prototype.traverse = function (callback) { * @return {Node} Returns the original node or its replacement */ Node.prototype.transform = function (callback) { - // check itself - var replacement = callback(this, null, null); - if (replacement !== this) { - return replacement; - } - // traverse over all childs function _transform (node, callback) { return node.map(function(child, path, parent) { var replacement = callback(child, path, parent); - return (replacement !== child) ? replacement : _transform(child, callback); + return _transform(replacement, callback); }); } - return _transform(this, callback); + + var replacement = callback(this, null, null); + return _transform(replacement, callback); }; /** diff --git a/test/expression/node/ArrayNode.test.js b/test/expression/node/ArrayNode.test.js index fcfd7e978..1174f24ca 100644 --- a/test/expression/node/ArrayNode.test.js +++ b/test/expression/node/ArrayNode.test.js @@ -164,7 +164,9 @@ describe('ArrayNode', function() { var e = c.transform(function (node) { return (node instanceof ArrayNode) ? d : node; }); - assert.strictEqual(e, d); + + assert.notStrictEqual(e, c); + assert.deepEqual(e, d); }); it ('should traverse an ArrayNode', function () { diff --git a/test/expression/node/AssignmentNode.test.js b/test/expression/node/AssignmentNode.test.js index a4e96728e..cbeebf681 100644 --- a/test/expression/node/AssignmentNode.test.js +++ b/test/expression/node/AssignmentNode.test.js @@ -149,7 +149,8 @@ describe('AssignmentNode', function() { return node instanceof AssignmentNode ? e : node; }); - assert.strictEqual(f, e); + assert.notStrictEqual(f, d); + assert.deepEqual(f, e); }); it ('should traverse an AssignmentNode', function () { diff --git a/test/expression/node/BlockNode.test.js b/test/expression/node/BlockNode.test.js index 80335fa7f..096e6a222 100644 --- a/test/expression/node/BlockNode.test.js +++ b/test/expression/node/BlockNode.test.js @@ -177,7 +177,9 @@ describe('BlockNode', function() { var e = a.transform(function (node) { return node instanceof BlockNode ? d : node; }); - assert.strictEqual(e, d); + + assert.notStrictEqual(e, a); + assert.deepEqual(e, d); }); it ('should traverse a BlockNode', function () { diff --git a/test/expression/node/ConditionalNode.test.js b/test/expression/node/ConditionalNode.test.js index 5175b763e..1c5141f02 100644 --- a/test/expression/node/ConditionalNode.test.js +++ b/test/expression/node/ConditionalNode.test.js @@ -179,9 +179,9 @@ describe('ConditionalNode', function() { }); assert.notStrictEqual(f, n); - assert.strictEqual(f.condition, e); - assert.deepEqual(f.trueExpr, a); - assert.deepEqual(f.falseExpr, b); + assert.deepEqual(f.condition, e); + assert.deepEqual(f.trueExpr, a); + assert.deepEqual(f.falseExpr, b); }); it ('should transform a ConditionalNodes trueExpr', function () { @@ -196,9 +196,9 @@ describe('ConditionalNode', function() { }); assert.notStrictEqual(f, n); - assert.deepEqual(f.condition, condition); - assert.strictEqual(f.trueExpr, e); - assert.deepEqual(f.falseExpr, b); + assert.deepEqual(f.condition, condition); + assert.deepEqual(f.trueExpr, e); + assert.deepEqual(f.falseExpr, b); }); it ('should transform a ConditionalNodes falseExpr', function () { @@ -215,7 +215,7 @@ describe('ConditionalNode', function() { assert.notStrictEqual(f, n); assert.deepEqual(f.condition, condition); assert.deepEqual(f.trueExpr, a); - assert.strictEqual(f.falseExpr, e); + assert.deepEqual(f.falseExpr, e); }); it ('should transform a ConditionalNode itself', function () { @@ -229,7 +229,8 @@ describe('ConditionalNode', function() { return node instanceof ConditionalNode ? e : node; }); - assert.strictEqual(f, e); + assert.notStrictEqual(f, n); + assert.deepEqual(f, e); }); it ('should clone a ConditionalNode itself', function () { diff --git a/test/expression/node/ConstantNode.test.js b/test/expression/node/ConstantNode.test.js index 18847e3c6..0fde57596 100644 --- a/test/expression/node/ConstantNode.test.js +++ b/test/expression/node/ConstantNode.test.js @@ -98,13 +98,13 @@ describe('ConstantNode', function() { var c = a.transform(function (node) { return node instanceof ConstantNode && node.value == '2' ? b : node; }); - assert.strictEqual(c, b); + assert.deepEqual(c, b); // no match should leave the node as is var d = a.transform(function (node) { return node instanceof ConstantNode && node.value == '99' ? b : node; }); - assert.notStrictEqual(d, a); + assert.notStrictEqual(d, a); assert.deepEqual(d, a); }); diff --git a/test/expression/node/FunctionAssignmentNode.test.js b/test/expression/node/FunctionAssignmentNode.test.js index 01e988092..d0105cf27 100644 --- a/test/expression/node/FunctionAssignmentNode.test.js +++ b/test/expression/node/FunctionAssignmentNode.test.js @@ -223,7 +223,8 @@ describe('FunctionAssignmentNode', function() { return node instanceof FunctionAssignmentNode ? e : node; }); - assert.strictEqual(f, e); + assert.notStrictEqual(f, n); + assert.deepEqual(f, e); }); it ('should clone a FunctionAssignmentNode', function () { diff --git a/test/expression/node/FunctionNode.test.js b/test/expression/node/FunctionNode.test.js index 97549b2d5..ba039e45c 100644 --- a/test/expression/node/FunctionNode.test.js +++ b/test/expression/node/FunctionNode.test.js @@ -205,7 +205,7 @@ describe('FunctionNode', function() { return node instanceof FunctionNode ? e : node; }); - assert.strictEqual(f, e); + assert.deepEqual(f, e); }); it ('should traverse a FunctionNode', function () { diff --git a/test/expression/node/IndexNode.test.js b/test/expression/node/IndexNode.test.js index 2235c2e89..db551917a 100644 --- a/test/expression/node/IndexNode.test.js +++ b/test/expression/node/IndexNode.test.js @@ -238,7 +238,8 @@ describe('IndexNode', function() { return node instanceof IndexNode ? e : node; }); - assert.strictEqual(f, e); + assert.notStrictEqual(f, n); + assert.deepEqual(f, e); }); it ('should clone an IndexNode', function () { diff --git a/test/expression/node/Node.test.js b/test/expression/node/Node.test.js index 10dc77ee2..d8d758642 100644 --- a/test/expression/node/Node.test.js +++ b/test/expression/node/Node.test.js @@ -5,11 +5,13 @@ var math = require('../../../index'); var Node = require('../../../lib/expression/node/Node'); describe('Node', function() { - function MyNode () {} + function MyNode (value) { + this.value = value; + } MyNode.prototype = new Node(); MyNode.prototype.forEach = function () {}; MyNode.prototype.map = function () { - return new MyNode(); + return new MyNode(this.value); }; it ('should create a Node', function () { @@ -22,7 +24,7 @@ describe('Node', function() { }); it ('should filter a Node', function () { - var n = new MyNode(); + var n = new MyNode(2); assert.deepEqual(n.filter(function () {return true}), [n]); assert.deepEqual(n.filter(function (node) {return node instanceof Node}), [n]); @@ -30,30 +32,30 @@ describe('Node', function() { }); it ('should transform a Node', function () { - var a = new MyNode(); - var b = new MyNode(); + var a = new MyNode(2); + var b = new MyNode(3); var c = a.transform(function (node) { return b; }); - assert.strictEqual(c, b); + assert.deepEqual(c, b); // no match - a = new MyNode(); - b = new MyNode(); + a = new MyNode(2); + b = new MyNode(3); c = a.transform(function (node) { return node; }); - assert.notStrictEqual(c, a); + assert.deepEqual(c, a); }); it ('should transform a Node using a replacement function', function () { - var a = new MyNode(); - var b = new MyNode(); + var a = new MyNode(2); + var b = new MyNode(3); var c = a.transform(function (node) { assert.deepEqual(node, a); return b; }); - assert.strictEqual(c, b); + assert.deepEqual(c, b); }); it ('should throw an error when cloning a Node interface', function () { diff --git a/test/expression/node/OperatorNode.test.js b/test/expression/node/OperatorNode.test.js index 4410d05a1..98064cf5a 100644 --- a/test/expression/node/OperatorNode.test.js +++ b/test/expression/node/OperatorNode.test.js @@ -140,10 +140,6 @@ describe('OperatorNode', function() { return node instanceof SymbolNode && node.name == 'x' ? f : node; }); - assert.notStrictEqual(g, e); - assert.notStrictEqual(g.args[0], e.args[0]); - assert.strictEqual(g.args[0].args[0], f); - assert.deepEqual(g.args[0].args[1], b); assert.deepEqual(g.args[1], f); }); diff --git a/test/expression/node/RangeNode.test.js b/test/expression/node/RangeNode.test.js index ae9ab51b4..6044c0a62 100644 --- a/test/expression/node/RangeNode.test.js +++ b/test/expression/node/RangeNode.test.js @@ -197,7 +197,7 @@ describe('RangeNode', function() { return node instanceof RangeNode ? e : node; }); - assert.strictEqual(f, e); + assert.deepEqual(f, e); }); it ('should clone a RangeNode', function () { diff --git a/test/expression/node/UpdateNode.test.js b/test/expression/node/UpdateNode.test.js index 83a0c3ec4..2e3d52cb8 100644 --- a/test/expression/node/UpdateNode.test.js +++ b/test/expression/node/UpdateNode.test.js @@ -277,7 +277,7 @@ describe('UpdateNode', function() { return node instanceof UpdateNode ? e : node; }); - assert.strictEqual(f, e); + assert.deepEqual(f, e); }); it ('should clone an UpdateNode', function () {